diff --git a/Makefile b/Makefile index 12964d71..95da2315 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: dev daemon cli build test migrate-up migrate-down sqlc seed clean setup start stop check worktree-env setup-main start-main stop-main check-main setup-worktree start-worktree stop-worktree check-worktree db-up db-down +.PHONY: dev daemon cli multica build test migrate-up migrate-down sqlc seed clean setup start stop check worktree-env setup-main start-main stop-main check-main setup-worktree start-worktree stop-worktree check-worktree db-up db-down MAIN_ENV_FILE ?= .env WORKTREE_ENV_FILE ?= .env.worktree @@ -15,6 +15,7 @@ POSTGRES_PORT ?= 5432 PORT ?= 8080 FRONTEND_PORT ?= 3000 FRONTEND_ORIGIN ?= http://localhost:$(FRONTEND_PORT) +MULTICA_APP_URL ?= $(FRONTEND_ORIGIN) DATABASE_URL ?= postgres://$(POSTGRES_USER):$(POSTGRES_PASSWORD)@localhost:$(POSTGRES_PORT)/$(POSTGRES_DB)?sslmode=disable NEXT_PUBLIC_API_URL ?= http://localhost:$(PORT) NEXT_PUBLIC_WS_URL ?= ws://localhost:$(PORT)/ws @@ -23,6 +24,8 @@ MULTICA_SERVER_URL ?= ws://localhost:$(PORT)/ws export +MULTICA_ARGS ?= $(ARGS) + COMPOSE := docker compose define REQUIRE_ENV @@ -117,10 +120,13 @@ dev: cd server && go run ./cmd/server daemon: - cd server && go run ./cmd/multica daemon + @$(MAKE) multica MULTICA_ARGS="daemon" cli: - cd server && go run ./cmd/multica $(ARGS) + @$(MAKE) multica MULTICA_ARGS="$(MULTICA_ARGS)" + +multica: + cd server && go run ./cmd/multica $(MULTICA_ARGS) VERSION ?= $(shell git describe --tags --always --dirty 2>/dev/null || echo dev) COMMIT ?= $(shell git rev-parse --short HEAD 2>/dev/null || echo unknown) diff --git a/README.md b/README.md index f2e1399f..985ee50b 100644 --- a/README.md +++ b/README.md @@ -84,6 +84,7 @@ That keeps one Docker container and one volume, while still isolating schema and |---------|-------------| | `make dev` | Run Go server (uses `PORT`, default `8080`) | | `make daemon` | Run local agent daemon | +| `make multica ARGS="version"` | Run the local `multica` CLI without installing it | | `make test` | Run Go tests | | `make build` | Build server & daemon binaries | | `make sqlc` | Regenerate sqlc code from SQL | @@ -118,6 +119,15 @@ make build cp server/bin/multica /usr/local/bin/multica # or ~/.local/bin/multica ``` +For local development, you can also run the CLI directly from the repo: + +```bash +make multica ARGS="version" +make multica ARGS="auth status" +``` + +For browser-based auth from source, make sure the local frontend is running at `FRONTEND_ORIGIN` first, for example with `make start`, `make start-main`, or `make start-worktree`. + ### Authentication ```bash diff --git a/apps/web/app/(dashboard)/_components/app-sidebar.tsx b/apps/web/app/(dashboard)/_components/app-sidebar.tsx index 64f84698..642360ea 100644 --- a/apps/web/app/(dashboard)/_components/app-sidebar.tsx +++ b/apps/web/app/(dashboard)/_components/app-sidebar.tsx @@ -12,7 +12,7 @@ import { LogOut, Plus, Check, - Sparkles, + BookOpenText, SquarePen, } from "lucide-react"; import { WorkspaceAvatar } from "@/features/workspace"; @@ -51,7 +51,7 @@ const primaryNav = [ const workspaceNav = [ { href: "/agents", label: "Agents", icon: Bot }, { href: "/runtimes", label: "Runtimes", icon: Monitor }, - { href: "/skills", label: "Skills", icon: Sparkles }, + { href: "/skills", label: "Skills", icon: BookOpenText }, { href: "/settings", label: "Settings", icon: Settings }, ]; diff --git a/apps/web/app/(dashboard)/agents/page.tsx b/apps/web/app/(dashboard)/agents/page.tsx index c020587b..c7842059 100644 --- a/apps/web/app/(dashboard)/agents/page.tsx +++ b/apps/web/app/(dashboard)/agents/page.tsx @@ -10,6 +10,7 @@ import { ListTodo, Wrench, FileText, + BookOpenText, Timer, Trash2, Save, @@ -976,7 +977,7 @@ function TasksTab({ agent }: { agent: Agent }) { type DetailTab = "skills" | "tools" | "triggers" | "tasks"; const detailTabs: { id: DetailTab; label: string; icon: typeof FileText }[] = [ - { id: "skills", label: "Skills", icon: FileText }, + { id: "skills", label: "Skills", icon: BookOpenText }, { id: "tools", label: "Tools", icon: Wrench }, { id: "triggers", label: "Triggers", icon: Timer }, { id: "tasks", label: "Tasks", icon: ListTodo }, diff --git a/apps/web/features/skills/components/skills-page.tsx b/apps/web/features/skills/components/skills-page.tsx index 8e9fd4ee..af8eb54f 100644 --- a/apps/web/features/skills/components/skills-page.tsx +++ b/apps/web/features/skills/components/skills-page.tsx @@ -398,7 +398,7 @@ function SkillDetail({ }; return ( -