macro-agent 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.sudocode/issues.jsonl +28 -0
- package/.sudocode/specs.jsonl +4 -0
- package/CLAUDE.md +9 -3
- package/dist/agent/agent-manager.d.ts.map +1 -1
- package/dist/agent/agent-manager.js +111 -48
- package/dist/agent/agent-manager.js.map +1 -1
- package/dist/agent/types.d.ts +7 -0
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/server.d.ts +5 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +100 -3
- package/dist/api/server.js.map +1 -1
- package/dist/api/types.d.ts +1 -1
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cli/acp.d.ts.map +1 -1
- package/dist/cli/acp.js +71 -1
- package/dist/cli/acp.js.map +1 -1
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.js +27 -8
- package/dist/cli/mcp.js.map +1 -1
- package/dist/config/project-config.d.ts +13 -2
- package/dist/config/project-config.d.ts.map +1 -1
- package/dist/config/project-config.js +12 -2
- package/dist/config/project-config.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lifecycle/handlers/index.d.ts +7 -3
- package/dist/lifecycle/handlers/index.d.ts.map +1 -1
- package/dist/lifecycle/handlers/index.js +25 -8
- package/dist/lifecycle/handlers/index.js.map +1 -1
- package/dist/lifecycle/types.d.ts +2 -0
- package/dist/lifecycle/types.d.ts.map +1 -1
- package/dist/lifecycle/types.js.map +1 -1
- package/dist/map/adapter/extensions/index.d.ts +4 -1
- package/dist/map/adapter/extensions/index.d.ts.map +1 -1
- package/dist/map/adapter/extensions/index.js +27 -0
- package/dist/map/adapter/extensions/index.js.map +1 -1
- package/dist/map/adapter/extensions/streams.d.ts +95 -0
- package/dist/map/adapter/extensions/streams.d.ts.map +1 -0
- package/dist/map/adapter/extensions/streams.js +515 -0
- package/dist/map/adapter/extensions/streams.js.map +1 -0
- package/dist/map/adapter/index.d.ts +1 -1
- package/dist/map/adapter/index.d.ts.map +1 -1
- package/dist/map/adapter/index.js +3 -1
- package/dist/map/adapter/index.js.map +1 -1
- package/dist/map/adapter/types.d.ts +1 -1
- package/dist/map/adapter/types.d.ts.map +1 -1
- package/dist/mcp/mcp-server.d.ts +2 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -1
- package/dist/mcp/mcp-server.js +12 -3
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/mcp/tools/done.d.ts.map +1 -1
- package/dist/mcp/tools/done.js +18 -0
- package/dist/mcp/tools/done.js.map +1 -1
- package/dist/roles/builtin/coordinator.d.ts.map +1 -1
- package/dist/roles/builtin/coordinator.js +2 -1
- package/dist/roles/builtin/coordinator.js.map +1 -1
- package/dist/roles/builtin/integrator.d.ts.map +1 -1
- package/dist/roles/builtin/integrator.js +2 -1
- package/dist/roles/builtin/integrator.js.map +1 -1
- package/dist/roles/builtin/worker.d.ts.map +1 -1
- package/dist/roles/builtin/worker.js +3 -1
- package/dist/roles/builtin/worker.js.map +1 -1
- package/dist/roles/capabilities.d.ts +6 -0
- package/dist/roles/capabilities.d.ts.map +1 -1
- package/dist/roles/capabilities.js +10 -0
- package/dist/roles/capabilities.js.map +1 -1
- package/dist/roles/config-loader.d.ts +1 -1
- package/dist/roles/config-loader.d.ts.map +1 -1
- package/dist/roles/config-loader.js +3 -2
- package/dist/roles/config-loader.js.map +1 -1
- package/dist/roles/types.d.ts +3 -1
- package/dist/roles/types.d.ts.map +1 -1
- package/dist/server/combined-server.d.ts +8 -1
- package/dist/server/combined-server.d.ts.map +1 -1
- package/dist/server/combined-server.js +6 -2
- package/dist/server/combined-server.js.map +1 -1
- package/dist/store/event-store.d.ts.map +1 -1
- package/dist/store/event-store.js +12 -5
- package/dist/store/event-store.js.map +1 -1
- package/dist/store/instance.d.ts +1 -1
- package/dist/store/instance.d.ts.map +1 -1
- package/dist/store/instance.js +2 -2
- package/dist/store/instance.js.map +1 -1
- package/dist/store/types/agents.d.ts +5 -0
- package/dist/store/types/agents.d.ts.map +1 -1
- package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -1
- package/dist/task/backend/opentasks/daemon-manager.js +1 -1
- package/dist/task/backend/opentasks/daemon-manager.js.map +1 -1
- package/dist/teams/index.d.ts +3 -1
- package/dist/teams/index.d.ts.map +1 -1
- package/dist/teams/index.js +2 -0
- package/dist/teams/index.js.map +1 -1
- package/dist/teams/seed-defaults.d.ts +20 -0
- package/dist/teams/seed-defaults.d.ts.map +1 -0
- package/dist/teams/seed-defaults.js +71 -0
- package/dist/teams/seed-defaults.js.map +1 -0
- package/dist/teams/team-loader.d.ts +6 -2
- package/dist/teams/team-loader.d.ts.map +1 -1
- package/dist/teams/team-loader.js +154 -162
- package/dist/teams/team-loader.js.map +1 -1
- package/dist/teams/team-manager.d.ts +112 -0
- package/dist/teams/team-manager.d.ts.map +1 -0
- package/dist/teams/team-manager.js +305 -0
- package/dist/teams/team-manager.js.map +1 -0
- package/dist/teams/team-runtime.d.ts +125 -19
- package/dist/teams/team-runtime.d.ts.map +1 -1
- package/dist/teams/team-runtime.js +527 -119
- package/dist/teams/team-runtime.js.map +1 -1
- package/dist/teams/types.d.ts +41 -151
- package/dist/teams/types.d.ts.map +1 -1
- package/dist/teams/types.js +2 -3
- package/dist/teams/types.js.map +1 -1
- package/docs/teams.md +73 -0
- package/package.json +2 -1
- package/references/minimem/.claude/settings.json +7 -0
- package/references/minimem/.sudocode/issues.jsonl +18 -0
- package/references/minimem/.sudocode/specs.jsonl +1 -0
- package/references/minimem/CLAUDE.md +310 -0
- package/references/minimem/README.md +562 -0
- package/references/minimem/claude-plugin/.claude-plugin/plugin.json +10 -0
- package/references/minimem/claude-plugin/.mcp.json +7 -0
- package/references/minimem/claude-plugin/README.md +158 -0
- package/references/minimem/claude-plugin/commands/recall.md +47 -0
- package/references/minimem/claude-plugin/commands/remember.md +41 -0
- package/references/minimem/claude-plugin/hooks/__tests__/hooks.test.ts +272 -0
- package/references/minimem/claude-plugin/hooks/hooks.json +27 -0
- package/references/minimem/claude-plugin/hooks/session-end.sh +86 -0
- package/references/minimem/claude-plugin/hooks/session-start.sh +85 -0
- package/references/minimem/claude-plugin/skills/memory/SKILL.md +108 -0
- package/references/minimem/media/banner.png +0 -0
- package/references/minimem/package-lock.json +5373 -0
- package/references/minimem/package.json +72 -0
- package/references/minimem/scripts/postbuild.js +35 -0
- package/references/minimem/src/__tests__/edge-cases.test.ts +371 -0
- package/references/minimem/src/__tests__/errors.test.ts +265 -0
- package/references/minimem/src/__tests__/helpers.ts +199 -0
- package/references/minimem/src/__tests__/internal.test.ts +407 -0
- package/references/minimem/src/__tests__/knowledge.test.ts +287 -0
- package/references/minimem/src/__tests__/minimem.integration.test.ts +1127 -0
- package/references/minimem/src/__tests__/session.test.ts +190 -0
- package/references/minimem/src/cli/__tests__/commands.test.ts +759 -0
- package/references/minimem/src/cli/commands/__tests__/conflicts.test.ts +141 -0
- package/references/minimem/src/cli/commands/append.ts +76 -0
- package/references/minimem/src/cli/commands/config.ts +262 -0
- package/references/minimem/src/cli/commands/conflicts.ts +413 -0
- package/references/minimem/src/cli/commands/daemon.ts +169 -0
- package/references/minimem/src/cli/commands/index.ts +12 -0
- package/references/minimem/src/cli/commands/init.ts +88 -0
- package/references/minimem/src/cli/commands/mcp.ts +177 -0
- package/references/minimem/src/cli/commands/push-pull.ts +213 -0
- package/references/minimem/src/cli/commands/search.ts +158 -0
- package/references/minimem/src/cli/commands/status.ts +84 -0
- package/references/minimem/src/cli/commands/sync-init.ts +290 -0
- package/references/minimem/src/cli/commands/sync.ts +70 -0
- package/references/minimem/src/cli/commands/upsert.ts +197 -0
- package/references/minimem/src/cli/config.ts +584 -0
- package/references/minimem/src/cli/index.ts +264 -0
- package/references/minimem/src/cli/shared.ts +161 -0
- package/references/minimem/src/cli/sync/__tests__/central.test.ts +152 -0
- package/references/minimem/src/cli/sync/__tests__/conflicts.test.ts +209 -0
- package/references/minimem/src/cli/sync/__tests__/daemon.test.ts +118 -0
- package/references/minimem/src/cli/sync/__tests__/detection.test.ts +207 -0
- package/references/minimem/src/cli/sync/__tests__/integration.test.ts +476 -0
- package/references/minimem/src/cli/sync/__tests__/registry.test.ts +363 -0
- package/references/minimem/src/cli/sync/__tests__/state.test.ts +255 -0
- package/references/minimem/src/cli/sync/__tests__/validation.test.ts +193 -0
- package/references/minimem/src/cli/sync/__tests__/watcher.test.ts +178 -0
- package/references/minimem/src/cli/sync/central.ts +292 -0
- package/references/minimem/src/cli/sync/conflicts.ts +204 -0
- package/references/minimem/src/cli/sync/daemon.ts +407 -0
- package/references/minimem/src/cli/sync/detection.ts +138 -0
- package/references/minimem/src/cli/sync/index.ts +107 -0
- package/references/minimem/src/cli/sync/operations.ts +373 -0
- package/references/minimem/src/cli/sync/registry.ts +279 -0
- package/references/minimem/src/cli/sync/state.ts +355 -0
- package/references/minimem/src/cli/sync/validation.ts +206 -0
- package/references/minimem/src/cli/sync/watcher.ts +234 -0
- package/references/minimem/src/cli/version.ts +34 -0
- package/references/minimem/src/core/index.ts +9 -0
- package/references/minimem/src/core/indexer.ts +628 -0
- package/references/minimem/src/core/searcher.ts +221 -0
- package/references/minimem/src/db/schema.ts +183 -0
- package/references/minimem/src/db/sqlite-vec.ts +24 -0
- package/references/minimem/src/embeddings/__tests__/embeddings.test.ts +431 -0
- package/references/minimem/src/embeddings/batch-gemini.ts +392 -0
- package/references/minimem/src/embeddings/batch-openai.ts +409 -0
- package/references/minimem/src/embeddings/embeddings.ts +434 -0
- package/references/minimem/src/index.ts +109 -0
- package/references/minimem/src/internal.ts +299 -0
- package/references/minimem/src/minimem.ts +1276 -0
- package/references/minimem/src/search/__tests__/hybrid.test.ts +247 -0
- package/references/minimem/src/search/graph.ts +234 -0
- package/references/minimem/src/search/hybrid.ts +151 -0
- package/references/minimem/src/search/search.ts +256 -0
- package/references/minimem/src/server/__tests__/mcp.test.ts +341 -0
- package/references/minimem/src/server/__tests__/tools.test.ts +364 -0
- package/references/minimem/src/server/mcp.ts +326 -0
- package/references/minimem/src/server/tools.ts +720 -0
- package/references/minimem/src/session.ts +460 -0
- package/references/minimem/tsconfig.json +19 -0
- package/references/minimem/tsup.config.ts +26 -0
- package/references/minimem/vitest.config.ts +24 -0
- package/references/openteams/.claude/settings.json +6 -0
- package/references/openteams/README.md +1 -0
- package/references/openteams/SKILL.md +341 -0
- package/references/openteams/design.md +411 -0
- package/references/openteams/examples/bmad-method/prompts/analyst/ROLE.md +16 -0
- package/references/openteams/examples/bmad-method/prompts/analyst/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/architect/ROLE.md +24 -0
- package/references/openteams/examples/bmad-method/prompts/architect/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/developer/ROLE.md +25 -0
- package/references/openteams/examples/bmad-method/prompts/developer/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/master/ROLE.md +21 -0
- package/references/openteams/examples/bmad-method/prompts/master/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/pm/ROLE.md +20 -0
- package/references/openteams/examples/bmad-method/prompts/pm/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/qa/ROLE.md +17 -0
- package/references/openteams/examples/bmad-method/prompts/qa/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/ROLE.md +23 -0
- package/references/openteams/examples/bmad-method/prompts/quick-flow-dev/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/scrum-master/ROLE.md +27 -0
- package/references/openteams/examples/bmad-method/prompts/scrum-master/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/tech-writer/ROLE.md +21 -0
- package/references/openteams/examples/bmad-method/prompts/tech-writer/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/prompts/ux-designer/ROLE.md +16 -0
- package/references/openteams/examples/bmad-method/prompts/ux-designer/SOUL.md +5 -0
- package/references/openteams/examples/bmad-method/roles/analyst.yaml +9 -0
- package/references/openteams/examples/bmad-method/roles/architect.yaml +9 -0
- package/references/openteams/examples/bmad-method/roles/developer.yaml +8 -0
- package/references/openteams/examples/bmad-method/roles/master.yaml +8 -0
- package/references/openteams/examples/bmad-method/roles/pm.yaml +9 -0
- package/references/openteams/examples/bmad-method/roles/qa.yaml +8 -0
- package/references/openteams/examples/bmad-method/roles/quick-flow-dev.yaml +8 -0
- package/references/openteams/examples/bmad-method/roles/scrum-master.yaml +9 -0
- package/references/openteams/examples/bmad-method/roles/tech-writer.yaml +8 -0
- package/references/openteams/examples/bmad-method/roles/ux-designer.yaml +8 -0
- package/references/openteams/examples/bmad-method/team.yaml +161 -0
- package/references/openteams/examples/get-shit-done/prompts/codebase-mapper/ROLE.md +17 -0
- package/references/openteams/examples/get-shit-done/prompts/codebase-mapper/SOUL.md +5 -0
- package/references/openteams/examples/get-shit-done/prompts/debugger/ROLE.md +25 -0
- package/references/openteams/examples/get-shit-done/prompts/debugger/SOUL.md +5 -0
- package/references/openteams/examples/get-shit-done/prompts/executor/ROLE.md +34 -0
- package/references/openteams/examples/get-shit-done/prompts/executor/SOUL.md +5 -0
- package/references/openteams/examples/get-shit-done/prompts/integration-checker/ROLE.md +18 -0
- package/references/openteams/examples/get-shit-done/prompts/integration-checker/SOUL.md +3 -0
- package/references/openteams/examples/get-shit-done/prompts/orchestrator/ROLE.md +42 -0
- package/references/openteams/examples/get-shit-done/prompts/orchestrator/SOUL.md +5 -0
- package/references/openteams/examples/get-shit-done/prompts/phase-researcher/ROLE.md +15 -0
- package/references/openteams/examples/get-shit-done/prompts/phase-researcher/SOUL.md +3 -0
- package/references/openteams/examples/get-shit-done/prompts/plan-checker/ROLE.md +17 -0
- package/references/openteams/examples/get-shit-done/prompts/plan-checker/SOUL.md +3 -0
- package/references/openteams/examples/get-shit-done/prompts/planner/ROLE.md +28 -0
- package/references/openteams/examples/get-shit-done/prompts/planner/SOUL.md +5 -0
- package/references/openteams/examples/get-shit-done/prompts/project-researcher/ROLE.md +16 -0
- package/references/openteams/examples/get-shit-done/prompts/project-researcher/SOUL.md +3 -0
- package/references/openteams/examples/get-shit-done/prompts/research-synthesizer/ROLE.md +13 -0
- package/references/openteams/examples/get-shit-done/prompts/research-synthesizer/SOUL.md +3 -0
- package/references/openteams/examples/get-shit-done/prompts/roadmapper/ROLE.md +14 -0
- package/references/openteams/examples/get-shit-done/prompts/roadmapper/SOUL.md +3 -0
- package/references/openteams/examples/get-shit-done/prompts/verifier/ROLE.md +19 -0
- package/references/openteams/examples/get-shit-done/prompts/verifier/SOUL.md +5 -0
- package/references/openteams/examples/get-shit-done/roles/codebase-mapper.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/debugger.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/executor.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/integration-checker.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/orchestrator.yaml +9 -0
- package/references/openteams/examples/get-shit-done/roles/phase-researcher.yaml +7 -0
- package/references/openteams/examples/get-shit-done/roles/plan-checker.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/planner.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/project-researcher.yaml +8 -0
- package/references/openteams/examples/get-shit-done/roles/research-synthesizer.yaml +7 -0
- package/references/openteams/examples/get-shit-done/roles/roadmapper.yaml +7 -0
- package/references/openteams/examples/get-shit-done/roles/verifier.yaml +8 -0
- package/references/openteams/examples/get-shit-done/team.yaml +154 -0
- package/references/openteams/package-lock.json +2181 -0
- package/references/openteams/package.json +48 -0
- package/references/openteams/schema/role.schema.json +125 -0
- package/references/openteams/schema/team.schema.json +284 -0
- package/references/openteams/src/cli/agent.ts +104 -0
- package/references/openteams/src/cli/cli.test.ts +381 -0
- package/references/openteams/src/cli/generate.ts +220 -0
- package/references/openteams/src/cli/message.ts +241 -0
- package/references/openteams/src/cli/task.ts +154 -0
- package/references/openteams/src/cli/team.ts +104 -0
- package/references/openteams/src/cli/template.ts +207 -0
- package/references/openteams/src/cli.ts +45 -0
- package/references/openteams/src/db/database.test.ts +185 -0
- package/references/openteams/src/db/database.ts +240 -0
- package/references/openteams/src/generators/agent-prompt-generator.test.ts +332 -0
- package/references/openteams/src/generators/agent-prompt-generator.ts +521 -0
- package/references/openteams/src/generators/package-generator.test.ts +129 -0
- package/references/openteams/src/generators/package-generator.ts +102 -0
- package/references/openteams/src/generators/skill-generator.test.ts +246 -0
- package/references/openteams/src/generators/skill-generator.ts +374 -0
- package/references/openteams/src/index.ts +104 -0
- package/references/openteams/src/services/agent-service.test.ts +158 -0
- package/references/openteams/src/services/agent-service.ts +84 -0
- package/references/openteams/src/services/communication-service.test.ts +455 -0
- package/references/openteams/src/services/communication-service.ts +371 -0
- package/references/openteams/src/services/message-service.test.ts +342 -0
- package/references/openteams/src/services/message-service.ts +203 -0
- package/references/openteams/src/services/task-service.test.ts +434 -0
- package/references/openteams/src/services/task-service.ts +239 -0
- package/references/openteams/src/services/team-service.test.ts +181 -0
- package/references/openteams/src/services/team-service.ts +139 -0
- package/references/openteams/src/services/template-service.test.ts +306 -0
- package/references/openteams/src/services/template-service.ts +182 -0
- package/references/openteams/src/spawner/acp-factory.ts +96 -0
- package/references/openteams/src/spawner/interface.ts +31 -0
- package/references/openteams/src/spawner/mock.test.ts +93 -0
- package/references/openteams/src/spawner/mock.ts +59 -0
- package/references/openteams/src/template/loader.test.ts +1319 -0
- package/references/openteams/src/template/loader.ts +698 -0
- package/references/openteams/src/template/types.ts +200 -0
- package/references/openteams/src/types.ts +205 -0
- package/references/openteams/tsconfig.json +18 -0
- package/references/openteams/vitest.config.ts +9 -0
- package/references/skill-tree/.claude/settings.json +6 -0
- package/references/skill-tree/.sudocode/issues.jsonl +11 -0
- package/references/skill-tree/.sudocode/specs.jsonl +1 -0
- package/references/skill-tree/CLAUDE.md +150 -0
- package/references/skill-tree/README.md +324 -0
- package/references/skill-tree/docs/GAPS_v1.md +221 -0
- package/references/skill-tree/docs/INTEGRATION_PLAN.md +467 -0
- package/references/skill-tree/docs/TODOS.md +91 -0
- package/references/skill-tree/docs/anthropic_skill_guide.md +1364 -0
- package/references/skill-tree/docs/design/federated-skill-trees.md +524 -0
- package/references/skill-tree/docs/design/multi-agent-sync.md +759 -0
- package/references/skill-tree/docs/scraper/BRAINSTORM.md +583 -0
- package/references/skill-tree/docs/scraper/POC_PLAN.md +420 -0
- package/references/skill-tree/docs/scraper/README.md +170 -0
- package/references/skill-tree/examples/basic-usage.ts +190 -0
- package/references/skill-tree/package-lock.json +1509 -0
- package/references/skill-tree/package.json +66 -0
- package/references/skill-tree/scraper/README.md +123 -0
- package/references/skill-tree/scraper/docs/DESIGN.md +683 -0
- package/references/skill-tree/scraper/docs/PLAN.md +336 -0
- package/references/skill-tree/scraper/drizzle.config.ts +10 -0
- package/references/skill-tree/scraper/package-lock.json +6329 -0
- package/references/skill-tree/scraper/package.json +68 -0
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-description.md +7 -0
- package/references/skill-tree/scraper/test/fixtures/invalid-skill/missing-name.md +7 -0
- package/references/skill-tree/scraper/test/fixtures/minimal-skill/SKILL.md +27 -0
- package/references/skill-tree/scraper/test/fixtures/skill-json/SKILL.json +21 -0
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/SKILL.md +54 -0
- package/references/skill-tree/scraper/test/fixtures/skill-with-meta/_meta.json +24 -0
- package/references/skill-tree/scraper/test/fixtures/valid-skill/SKILL.md +93 -0
- package/references/skill-tree/scraper/test/fixtures/valid-skill/_meta.json +22 -0
- package/references/skill-tree/scraper/tsup.config.ts +14 -0
- package/references/skill-tree/scraper/vitest.config.ts +17 -0
- package/references/skill-tree/scripts/convert-to-vitest.ts +166 -0
- package/references/skill-tree/skills/skill-writer/SKILL.md +339 -0
- package/references/skill-tree/skills/skill-writer/references/examples.md +326 -0
- package/references/skill-tree/skills/skill-writer/references/patterns.md +210 -0
- package/references/skill-tree/skills/skill-writer/references/quality-checklist.md +123 -0
- package/references/skill-tree/test/run-all.ts +106 -0
- package/references/skill-tree/test/utils.ts +128 -0
- package/references/skill-tree/vitest.config.ts +16 -0
- package/src/agent/agent-manager.ts +143 -72
- package/src/agent/types.ts +9 -0
- package/src/api/__tests__/server.test.ts +203 -4
- package/src/api/server.ts +130 -5
- package/src/api/types.ts +3 -1
- package/src/cli/acp.ts +68 -1
- package/src/cli/index.ts +5 -1
- package/src/cli/mcp.ts +27 -13
- package/src/config/project-config.ts +27 -3
- package/src/index.ts +3 -0
- package/src/lifecycle/__tests__/handlers.test.ts +53 -0
- package/src/lifecycle/handlers/index.ts +25 -8
- package/src/lifecycle/types.ts +3 -0
- package/src/map/adapter/__tests__/stream-extensions.test.ts +494 -0
- package/src/map/adapter/extensions/index.ts +36 -0
- package/src/map/adapter/extensions/streams.ts +839 -0
- package/src/map/adapter/index.ts +5 -0
- package/src/map/adapter/types.ts +8 -1
- package/src/mcp/mcp-server.ts +14 -3
- package/src/mcp/tools/done.ts +19 -0
- package/src/roles/builtin/coordinator.ts +2 -0
- package/src/roles/builtin/integrator.ts +2 -0
- package/src/roles/builtin/worker.ts +3 -0
- package/src/roles/capabilities.ts +11 -0
- package/src/roles/config-loader.ts +3 -2
- package/src/roles/types.ts +7 -0
- package/src/server/combined-server.ts +15 -1
- package/src/store/__tests__/event-store-oob.test.ts +109 -0
- package/src/store/event-store.ts +13 -3
- package/src/store/instance.ts +2 -2
- package/src/store/types/agents.ts +5 -0
- package/src/task/backend/__tests__/memory-pull-mode.test.ts +153 -0
- package/src/task/backend/opentasks/daemon-manager.ts +4 -1
- package/src/teams/CLAUDE.md +180 -0
- package/src/teams/__tests__/e2e/workspace-isolation.e2e.test.ts +1263 -0
- package/src/teams/__tests__/team-manager.test.ts +814 -0
- package/src/teams/__tests__/team-system.test.ts +1291 -8
- package/src/teams/index.ts +21 -3
- package/src/teams/seed-defaults.ts +79 -0
- package/src/teams/team-loader.ts +200 -234
- package/src/teams/team-manager.ts +387 -0
- package/src/teams/team-runtime.ts +590 -121
- package/src/teams/types.ts +99 -200
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
# Teams & Workspace Isolation - AI Agent Instructions
|
|
2
|
+
|
|
3
|
+
This document provides instructions for AI coding agents working on the team system and workspace isolation.
|
|
4
|
+
|
|
5
|
+
## Module Overview
|
|
6
|
+
|
|
7
|
+
The teams module manages declarative multi-agent topologies defined in YAML. It wires team config into running services (roles, spawn interceptor, signal filtering, emission validation) and coordinates workspace isolation through git worktrees.
|
|
8
|
+
|
|
9
|
+
Workspace isolation ensures each worker agent operates in its own git worktree with a dedicated branch. Changes flow through a merge queue for serialized integration.
|
|
10
|
+
|
|
11
|
+
## Key Files and Their Purpose
|
|
12
|
+
|
|
13
|
+
| File | Purpose | When to Modify |
|
|
14
|
+
|------|---------|----------------|
|
|
15
|
+
| `team-runtime.ts` | Wires team config into services, polls MERGE_REQUEST signals | Changing bootstrap, signal filtering, or merge coordination |
|
|
16
|
+
| `team-loader.ts` | Parses team YAML, resolves role inheritance | Adding YAML fields or role resolution logic |
|
|
17
|
+
| `team-manager.ts` | Manages multiple team instances | Multi-team orchestration |
|
|
18
|
+
| `types.ts` | TeamManifest, topology, communication types | Adding team config fields |
|
|
19
|
+
| `../agent/agent-manager.ts` | Spawn flow with workspace creation | Changing agent lifecycle or workspace binding |
|
|
20
|
+
| `../workspace/workspace-manager.ts` | Worktree creation and task management | Changing workspace creation or branch handling |
|
|
21
|
+
| `../workspace/dataplane-adapter.ts` | Wraps git-cascade tracker | Changing git operations or task tracking |
|
|
22
|
+
| `../lifecycle/handlers/worker.ts` | Done handler — branch detection and MERGE_REQUEST | Changing worker completion or merge flow |
|
|
23
|
+
| `../store/event-store.ts` | Event log, materialized views, out-of-band fields | Adding new metadata fields |
|
|
24
|
+
|
|
25
|
+
## Spawn Flow and Workspace Binding
|
|
26
|
+
|
|
27
|
+
The spawn flow in `agent-manager.ts` is the most critical path for workspace isolation. The ordering is:
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
emit spawn event (cwd = repo root) ← line 673
|
|
31
|
+
persist + verify agent in EventStore ← line 698
|
|
32
|
+
AgentFactory.spawn() → process handle ← line 712
|
|
33
|
+
┌─ Workspace Creation ───────────────────── ← line 719
|
|
34
|
+
│ createWorkspaceForRole() → worktree ← line 726
|
|
35
|
+
│ createTask() → dataplane task ← line 751
|
|
36
|
+
│ claimTask() → creates worker branch ← line 753
|
|
37
|
+
│ registerChildWorkspace() (if applicable) ← line 760
|
|
38
|
+
└──────────────────────────────────────────
|
|
39
|
+
effectiveCwd = workspace.path ?? cwd ← line 779
|
|
40
|
+
updateAgentMetadata({ cwd: effectiveCwd }) ← line 783
|
|
41
|
+
persist (so MCP subprocess sees updated cwd) ← line 784
|
|
42
|
+
buildMacroAgentMcp({ cwd: effectiveCwd }) ← line 787
|
|
43
|
+
handle.createSession(effectiveCwd) ← line 824
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**Why this order matters**: Workspace creation happens AFTER `AgentFactory.spawn()` (so a failed spawn doesn't leave orphaned worktrees) but BEFORE `buildMacroAgentMcp()` and `createSession()` (so the agent process, MCP subprocess, and done handler all use the worktree path).
|
|
47
|
+
|
|
48
|
+
### Dataplane Task Creation
|
|
49
|
+
|
|
50
|
+
Worktrees are created in **detached HEAD** state. A real worker branch (e.g., `worker/<agentId>/<taskId>`) is only created when a dataplane task is started via `claimTask()`. The spawn flow handles this automatically:
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// 1. Create task in git-cascade dataplane (returns generated ID)
|
|
54
|
+
const dpTaskId = workspaceManager.createTask(workspace.streamId, { title });
|
|
55
|
+
// 2. Claim/start task (creates branch, checks it out in worktree)
|
|
56
|
+
workspaceManager.claimTask(dpTaskId, agentId, workspace.path);
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Without this, `getCurrentBranch()` in the done handler would return `"HEAD"` instead of the actual worker branch name, causing MERGE_REQUEST signals to have an invalid `sourceBranch`.
|
|
60
|
+
|
|
61
|
+
## EventStore Out-of-Band Fields
|
|
62
|
+
|
|
63
|
+
`updateAgentMetadata()` writes fields directly to TinyBase (not through events). These fields must be listed in `OUT_OF_BAND_FIELDS` inside `rebuildViews()` (`event-store.ts` ~line 1341) or they will be lost when auto-load (every 1 second) triggers a view rebuild:
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
const OUT_OF_BAND_FIELDS = ['plan', 'name', 'metadata', 'cwd', 'team_instance'] as const;
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
**If you add a new field to `AgentMetadataUpdate`**, you must also add it to `OUT_OF_BAND_FIELDS`. Otherwise the field reverts to its event-derived value on every auto-load cycle.
|
|
70
|
+
|
|
71
|
+
The preservation works by:
|
|
72
|
+
1. Saving current out-of-band values before clearing views
|
|
73
|
+
2. Replaying all events to rebuild views (resets fields to event-derived values)
|
|
74
|
+
3. Restoring saved out-of-band values on top
|
|
75
|
+
|
|
76
|
+
## Done Handler → Merge Queue Flow
|
|
77
|
+
|
|
78
|
+
When a worker calls `done()` (`lifecycle/handlers/worker.ts`):
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
done({ status: "completed" })
|
|
82
|
+
→ getCurrentBranch(context.workspacePath) ← reads actual git branch
|
|
83
|
+
→ emit MERGE_REQUEST signal (via EventStore) ← includes sourceBranch, taskId
|
|
84
|
+
→ mergeQueue.submit(streamId, { ... }) ← submit to local merge queue
|
|
85
|
+
→ schedule agent termination
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
The MCP subprocess emits MERGE_REQUEST to **shared SQLite** (EventStore). The main process polls for these signals.
|
|
89
|
+
|
|
90
|
+
## MERGE_REQUEST Polling
|
|
91
|
+
|
|
92
|
+
`team-runtime.ts` runs a 2-second polling loop (`startMergeRequestPolling()`, ~line 663):
|
|
93
|
+
|
|
94
|
+
1. `eventStore.reload()` — reads SQLite to see events from MCP subprocesses
|
|
95
|
+
2. Filter status events for `signal === "MERGE_REQUEST"`
|
|
96
|
+
3. Verify source agent is a team member (or child of one)
|
|
97
|
+
4. Extract `sourceBranch`, `taskId`, `workerId` from event payload
|
|
98
|
+
5. Submit to the real merge queue via `workspaceManager.getMergeQueue()`
|
|
99
|
+
|
|
100
|
+
**Why polling?** Workers run in separate MCP subprocesses with their own EventStore instances writing to shared SQLite. The main process must reload to see their events. Direct in-memory notification isn't possible across processes.
|
|
101
|
+
|
|
102
|
+
## Common Gotchas
|
|
103
|
+
|
|
104
|
+
### Spawn Interceptor Injects Workspace Fields
|
|
105
|
+
|
|
106
|
+
`team-runtime.ts` `_createSpawnInterceptor()` (~line 743) automatically injects:
|
|
107
|
+
- `streamId` — team's integration stream (for workers with `workspace.worktree` capability)
|
|
108
|
+
- `dataplaneTaskId` — `worker-${Date.now()}` identifier
|
|
109
|
+
- `capabilities` — from resolved role definition
|
|
110
|
+
|
|
111
|
+
These are injected into spawn options before `agent-manager.ts` processes them.
|
|
112
|
+
|
|
113
|
+
### Merge Queue Table Prefix
|
|
114
|
+
|
|
115
|
+
`DefaultWorkspaceManager` uses `tablePrefix: 'macro_'` for its dataplane adapter. Tests must use `wsManager.getMergeQueue()` (which shares this prefix) rather than creating a standalone `createMergeQueue()` instance. Mismatched prefixes cause the polling code to write to one table while assertions read from another.
|
|
116
|
+
|
|
117
|
+
### Agent CWD vs Session CWD
|
|
118
|
+
|
|
119
|
+
The `cwd` field exists in three places:
|
|
120
|
+
1. **EventStore agent row** (`agent.cwd`) — for resume/display. Updated via `updateAgentMetadata()`.
|
|
121
|
+
2. **Session creation** (`handle.createSession(effectiveCwd)`) — agent process working directory.
|
|
122
|
+
3. **MCP env** (`MACRO_AGENT_CWD`) — subprocess working directory, set in `buildMacroAgentMcp()`.
|
|
123
|
+
|
|
124
|
+
All three must agree. The spawn flow sets (2) and (3) from `effectiveCwd` and updates (1) via `updateAgentMetadata`. If (1) drifts (e.g., out-of-band field not preserved), resume would use the wrong directory.
|
|
125
|
+
|
|
126
|
+
### getCurrentBranch Returns "HEAD" for Detached Worktrees
|
|
127
|
+
|
|
128
|
+
If `claimTask()` fails or is skipped, the worktree remains in detached HEAD state. `getCurrentBranch()` returns `"HEAD"`, which becomes the `sourceBranch` in MERGE_REQUEST — an invalid branch name that breaks the integrator.
|
|
129
|
+
|
|
130
|
+
## Architecture Constraints
|
|
131
|
+
|
|
132
|
+
### DO
|
|
133
|
+
|
|
134
|
+
- Keep workspace creation before session creation in the spawn flow
|
|
135
|
+
- Create and claim a dataplane task for every worker workspace
|
|
136
|
+
- Add new `AgentMetadataUpdate` fields to `OUT_OF_BAND_FIELDS`
|
|
137
|
+
- Use `workspaceManager.getMergeQueue()` (not standalone) for consistent table prefixes
|
|
138
|
+
- Handle workspace creation failures gracefully (don't fail the spawn)
|
|
139
|
+
- Use `eventStore.reload()` before reading cross-process events
|
|
140
|
+
|
|
141
|
+
### DON'T
|
|
142
|
+
|
|
143
|
+
- Don't emit the spawn event with workspace-dependent data (workspace doesn't exist yet at emit time)
|
|
144
|
+
- Don't assume `getCurrentBranch()` returns a real branch — it can return `"HEAD"` if claim failed
|
|
145
|
+
- Don't create a standalone merge queue in tests — use `wsManager.getMergeQueue()`
|
|
146
|
+
- Don't skip `persist()` after `updateAgentMetadata()` — the MCP subprocess needs to see updated values in SQLite
|
|
147
|
+
- Don't remove fields from `OUT_OF_BAND_FIELDS` without migrating them to event-sourced storage
|
|
148
|
+
|
|
149
|
+
## Testing
|
|
150
|
+
|
|
151
|
+
### Test Layers
|
|
152
|
+
|
|
153
|
+
Tests in `__tests__/e2e/workspace-isolation.e2e.test.ts` are organized in three layers:
|
|
154
|
+
|
|
155
|
+
| Layer | Gate | What It Tests |
|
|
156
|
+
|-------|------|---------------|
|
|
157
|
+
| **1: Infrastructure** | `RUN_E2E_TESTS` | Worktree creation, stream management, merge queue operations |
|
|
158
|
+
| **2: Service** | `RUN_E2E_TESTS` | AgentManager + WorkspaceManager integration, spawn interceptor, done handler, full lifecycle |
|
|
159
|
+
| **3: Full Agent** | `RUN_FULL_AGENT_TESTS` | Real Claude Code agent calls done(), MERGE_REQUEST polling, merge queue submission |
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Layer 1+2 only (fast, no real agents)
|
|
163
|
+
RUN_E2E_TESTS=true npx vitest run --config vitest.e2e.config.ts src/teams/__tests__/e2e/workspace-isolation.e2e.test.ts
|
|
164
|
+
|
|
165
|
+
# All layers including full agent (slow, requires API)
|
|
166
|
+
RUN_E2E_TESTS=true RUN_FULL_AGENT_TESTS=true npx vitest run --config vitest.e2e.config.ts src/teams/__tests__/e2e/workspace-isolation.e2e.test.ts
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Key Assertions in Full Agent Tests
|
|
170
|
+
|
|
171
|
+
- **Bootstrap test**: `agentRecord.cwd === developer.workspace.path` (not repo root)
|
|
172
|
+
- **Done test**: `mr.workerBranch` matches `/^worker\//` (not `"HEAD"` or `"main"`)
|
|
173
|
+
- **Done test**: `mergeQueue.getQueueDepth(streamId) > 0` (MERGE_REQUEST reached queue)
|
|
174
|
+
|
|
175
|
+
## Related Documentation
|
|
176
|
+
|
|
177
|
+
- `../CLAUDE.md` — Root project instructions
|
|
178
|
+
- `../workspace/types.ts` — Workspace, WorkerWorkspace, StreamConfig types
|
|
179
|
+
- `../store/types/agents.ts` — Agent, AgentMetadataUpdate types
|
|
180
|
+
- `docs/teams.md` — Team template schema reference
|