macro-agent 0.1.0 → 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/.claude/settings.local.json +3 -1
- package/.sudocode/issues.jsonl +28 -0
- package/.sudocode/specs.jsonl +8 -0
- package/CLAUDE.md +25 -17
- package/README.md +11 -29
- package/dist/acp/macro-agent.d.ts +15 -0
- package/dist/acp/macro-agent.d.ts.map +1 -1
- package/dist/acp/macro-agent.js +131 -35
- package/dist/acp/macro-agent.js.map +1 -1
- package/dist/acp/types.d.ts +32 -1
- package/dist/acp/types.d.ts.map +1 -1
- package/dist/acp/types.js.map +1 -1
- package/dist/agent/agent-manager.d.ts +65 -1
- package/dist/agent/agent-manager.d.ts.map +1 -1
- package/dist/agent/agent-manager.js +544 -200
- package/dist/agent/agent-manager.js.map +1 -1
- package/dist/agent/types.d.ts +8 -1
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent/types.js.map +1 -1
- package/dist/api/server.d.ts +8 -1
- package/dist/api/server.d.ts.map +1 -1
- package/dist/api/server.js +136 -8
- 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/auth/index.d.ts +2 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +2 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/token.d.ts +41 -0
- package/dist/auth/token.d.ts.map +1 -0
- package/dist/auth/token.js +73 -0
- package/dist/auth/token.js.map +1 -0
- package/dist/cli/acp.d.ts +2 -23
- package/dist/cli/acp.d.ts.map +1 -1
- package/dist/cli/acp.js +197 -61
- package/dist/cli/acp.js.map +1 -1
- package/dist/cli/index.js +152 -16
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/mcp.d.ts +6 -0
- package/dist/cli/mcp.d.ts.map +1 -1
- package/dist/cli/mcp.js +279 -173
- package/dist/cli/mcp.js.map +1 -1
- package/dist/cli/parse-args.d.ts +20 -0
- package/dist/cli/parse-args.d.ts.map +1 -0
- package/dist/cli/parse-args.js +43 -0
- package/dist/cli/parse-args.js.map +1 -0
- package/dist/cli/stable-instance-id.d.ts +8 -0
- package/dist/cli/stable-instance-id.d.ts.map +1 -0
- package/dist/cli/stable-instance-id.js +14 -0
- package/dist/cli/stable-instance-id.js.map +1 -0
- package/dist/config/project-config.d.ts +85 -7
- package/dist/config/project-config.d.ts.map +1 -1
- package/dist/config/project-config.js +133 -20
- 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/acp-over-map.d.ts +17 -0
- package/dist/map/adapter/acp-over-map.d.ts.map +1 -1
- package/dist/map/adapter/acp-over-map.js +384 -23
- package/dist/map/adapter/acp-over-map.js.map +1 -1
- package/dist/map/adapter/connection-manager.d.ts.map +1 -1
- package/dist/map/adapter/connection-manager.js +3 -0
- package/dist/map/adapter/connection-manager.js.map +1 -1
- package/dist/map/adapter/event-log.d.ts +87 -0
- package/dist/map/adapter/event-log.d.ts.map +1 -0
- package/dist/map/adapter/event-log.js +122 -0
- package/dist/map/adapter/event-log.js.map +1 -0
- package/dist/map/adapter/event-translator.js +6 -6
- package/dist/map/adapter/event-translator.js.map +1 -1
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts +82 -0
- package/dist/map/adapter/extensions/agent-lifecycle.d.ts.map +1 -0
- package/dist/map/adapter/extensions/agent-lifecycle.js +164 -0
- package/dist/map/adapter/extensions/agent-lifecycle.js.map +1 -0
- package/dist/map/adapter/extensions/index.d.ts +13 -1
- package/dist/map/adapter/extensions/index.d.ts.map +1 -1
- package/dist/map/adapter/extensions/index.js +61 -0
- package/dist/map/adapter/extensions/index.js.map +1 -1
- package/dist/map/adapter/extensions/mcp-bridge.d.ts +57 -0
- package/dist/map/adapter/extensions/mcp-bridge.d.ts.map +1 -0
- package/dist/map/adapter/extensions/mcp-bridge.js +745 -0
- package/dist/map/adapter/extensions/mcp-bridge.js.map +1 -0
- package/dist/map/adapter/extensions/rename.d.ts +29 -0
- package/dist/map/adapter/extensions/rename.d.ts.map +1 -0
- package/dist/map/adapter/extensions/rename.js +49 -0
- package/dist/map/adapter/extensions/rename.js.map +1 -0
- 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/extensions/task.d.ts.map +1 -1
- package/dist/map/adapter/extensions/task.js +10 -0
- package/dist/map/adapter/extensions/task.js.map +1 -1
- package/dist/map/adapter/extensions/update-metadata.d.ts +29 -0
- package/dist/map/adapter/extensions/update-metadata.d.ts.map +1 -0
- package/dist/map/adapter/extensions/update-metadata.js +67 -0
- package/dist/map/adapter/extensions/update-metadata.js.map +1 -0
- package/dist/map/adapter/index.d.ts +2 -1
- package/dist/map/adapter/index.d.ts.map +1 -1
- package/dist/map/adapter/index.js +10 -2
- package/dist/map/adapter/index.js.map +1 -1
- package/dist/map/adapter/interface.d.ts +2 -0
- package/dist/map/adapter/interface.d.ts.map +1 -1
- package/dist/map/adapter/map-adapter.d.ts +3 -0
- package/dist/map/adapter/map-adapter.d.ts.map +1 -1
- package/dist/map/adapter/map-adapter.js +258 -35
- package/dist/map/adapter/map-adapter.js.map +1 -1
- package/dist/map/adapter/subscription-manager.d.ts.map +1 -1
- package/dist/map/adapter/subscription-manager.js +5 -1
- package/dist/map/adapter/subscription-manager.js.map +1 -1
- package/dist/map/adapter/types.d.ts +3 -1
- package/dist/map/adapter/types.d.ts.map +1 -1
- package/dist/mcp/map-client.d.ts +39 -0
- package/dist/mcp/map-client.d.ts.map +1 -0
- package/dist/mcp/map-client.js +129 -0
- package/dist/mcp/map-client.js.map +1 -0
- package/dist/mcp/mcp-server.d.ts +16 -0
- package/dist/mcp/mcp-server.d.ts.map +1 -1
- package/dist/mcp/mcp-server.js +125 -88
- 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/mcp/types.d.ts +9 -1
- package/dist/mcp/types.d.ts.map +1 -1
- package/dist/mcp/types.js.map +1 -1
- package/dist/metrics/metrics.js +1 -1
- package/dist/metrics/metrics.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 +9 -1
- package/dist/roles/capabilities.d.ts.map +1 -1
- package/dist/roles/capabilities.js +27 -7
- package/dist/roles/capabilities.js.map +1 -1
- package/dist/roles/config-loader.d.ts +6 -6
- package/dist/roles/config-loader.d.ts.map +1 -1
- package/dist/roles/config-loader.js +8 -7
- package/dist/roles/config-loader.js.map +1 -1
- package/dist/roles/registry.d.ts +2 -2
- package/dist/roles/registry.js +2 -2
- package/dist/roles/types.d.ts +3 -1
- package/dist/roles/types.d.ts.map +1 -1
- package/dist/server/combined-server.d.ts +28 -1
- package/dist/server/combined-server.d.ts.map +1 -1
- package/dist/server/combined-server.js +111 -8
- package/dist/server/combined-server.js.map +1 -1
- package/dist/store/event-store.d.ts +2 -1
- package/dist/store/event-store.d.ts.map +1 -1
- package/dist/store/event-store.js +80 -24
- 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 +23 -0
- package/dist/store/types/agents.d.ts.map +1 -1
- package/dist/store/types/events.d.ts +1 -1
- package/dist/store/types/events.d.ts.map +1 -1
- package/dist/task/backend/index.d.ts +47 -29
- package/dist/task/backend/index.d.ts.map +1 -1
- package/dist/task/backend/index.js +109 -71
- package/dist/task/backend/index.js.map +1 -1
- package/dist/task/backend/memory.d.ts +1 -0
- package/dist/task/backend/memory.d.ts.map +1 -1
- package/dist/task/backend/memory.js +3 -0
- package/dist/task/backend/memory.js.map +1 -1
- package/dist/task/backend/opentasks/backend.d.ts +140 -0
- package/dist/task/backend/opentasks/backend.d.ts.map +1 -0
- package/dist/task/backend/opentasks/backend.js +1023 -0
- package/dist/task/backend/opentasks/backend.js.map +1 -0
- package/dist/task/backend/opentasks/client.d.ts +337 -0
- package/dist/task/backend/opentasks/client.d.ts.map +1 -0
- package/dist/task/backend/opentasks/client.js +225 -0
- package/dist/task/backend/opentasks/client.js.map +1 -0
- package/dist/task/backend/opentasks/daemon-manager.d.ts +89 -0
- package/dist/task/backend/opentasks/daemon-manager.d.ts.map +1 -0
- package/dist/task/backend/opentasks/daemon-manager.js +195 -0
- package/dist/task/backend/opentasks/daemon-manager.js.map +1 -0
- package/dist/task/backend/opentasks/index.d.ts +21 -0
- package/dist/task/backend/opentasks/index.d.ts.map +1 -0
- package/dist/task/backend/opentasks/index.js +21 -0
- package/dist/task/backend/opentasks/index.js.map +1 -0
- package/dist/task/backend/opentasks/mapping.d.ts +48 -0
- package/dist/task/backend/opentasks/mapping.d.ts.map +1 -0
- package/dist/task/backend/opentasks/mapping.js +77 -0
- package/dist/task/backend/opentasks/mapping.js.map +1 -0
- package/dist/task/backend/types.d.ts +33 -53
- package/dist/task/backend/types.d.ts.map +1 -1
- package/dist/task/backend/types.js +7 -11
- package/dist/task/backend/types.js.map +1 -1
- package/dist/task/backend/unified-tool-provider.d.ts +57 -0
- package/dist/task/backend/unified-tool-provider.d.ts.map +1 -0
- package/dist/task/backend/unified-tool-provider.js +623 -0
- package/dist/task/backend/unified-tool-provider.js.map +1 -0
- 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 +7 -3
- package/dist/teams/team-loader.d.ts.map +1 -1
- package/dist/teams/team-loader.js +156 -164
- 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 +529 -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/architecture.md +7 -6
- package/docs/configuration.md +26 -62
- package/docs/implementation-details.md +5 -5
- package/docs/implementation-summary.md +17 -17
- package/docs/plan-self-driving-support.md +4 -4
- package/docs/spec-self-driving-support.md +10 -10
- package/docs/team-templates.md +2 -2
- package/docs/teams.md +76 -3
- package/docs/troubleshooting.md +10 -11
- package/package.json +7 -4
- 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/__tests__/e2e/agent-spawn-visibility.e2e.test.ts +761 -0
- package/src/__tests__/e2e/full-agent-conflict-resolution.e2e.test.ts +2 -2
- package/src/__tests__/e2e/mcp-thin-client-bridge.e2e.test.ts +304 -0
- package/src/__tests__/e2e/mcp-tools-available.e2e.test.ts +324 -0
- package/src/__tests__/e2e/multi-agent.e2e.test.ts +5 -5
- package/src/__tests__/e2e/spawn-session-streaming.e2e.test.ts +563 -0
- package/src/acp/__tests__/integration.test.ts +56 -31
- package/src/acp/__tests__/macro-agent.test.ts +16 -7
- package/src/acp/macro-agent.ts +170 -36
- package/src/acp/types.ts +46 -1
- package/src/agent/__tests__/agent-manager.test.ts +228 -2
- package/src/agent/agent-manager.ts +809 -285
- package/src/agent/types.ts +12 -1
- package/src/api/__tests__/server.test.ts +203 -4
- package/src/api/server.ts +169 -10
- package/src/api/types.ts +3 -1
- package/src/auth/__tests__/token.test.ts +100 -0
- package/src/auth/index.ts +1 -0
- package/src/auth/token.ts +82 -0
- package/src/cli/__tests__/acp.test.ts +1 -1
- package/src/cli/__tests__/stable-instance-id.test.ts +1 -1
- package/src/cli/acp.ts +197 -72
- package/src/cli/index.ts +125 -15
- package/src/cli/mcp.ts +315 -197
- package/src/cli/parse-args.ts +54 -0
- package/src/cli/stable-instance-id.ts +14 -0
- package/src/config/project-config.ts +214 -27
- package/src/index.ts +3 -0
- package/src/lifecycle/__tests__/cascade-termination.test.ts +1 -1
- 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__/acp-over-map-cancel.test.ts +22 -4
- package/src/map/adapter/__tests__/acp-over-map-getmodels.test.ts +355 -0
- package/src/map/adapter/__tests__/acp-over-map-history.test.ts +263 -0
- package/src/map/adapter/__tests__/acp-over-map-persistence.e2e.test.ts +1 -1
- package/src/map/adapter/__tests__/event-broadcast.test.ts +420 -0
- package/src/map/adapter/__tests__/event-log.test.ts +527 -0
- package/src/map/adapter/__tests__/event-translator.test.ts +3 -3
- package/src/map/adapter/__tests__/extensions.test.ts +408 -0
- package/src/map/adapter/__tests__/map-adapter.test.ts +99 -0
- package/src/map/adapter/__tests__/mcp-bridge.test.ts +1187 -0
- package/src/map/adapter/__tests__/multi-client-broadcast.test.ts +711 -0
- package/src/map/adapter/__tests__/stream-extensions.test.ts +494 -0
- package/src/map/adapter/__tests__/websocket-integration.test.ts +218 -0
- package/src/map/adapter/acp-over-map.ts +678 -66
- package/src/map/adapter/connection-manager.ts +3 -0
- package/src/map/adapter/event-log.ts +208 -0
- package/src/map/adapter/event-translator.ts +6 -6
- package/src/map/adapter/extensions/agent-lifecycle.ts +267 -0
- package/src/map/adapter/extensions/index.ts +96 -0
- package/src/map/adapter/extensions/mcp-bridge.ts +995 -0
- package/src/map/adapter/extensions/streams.ts +839 -0
- package/src/map/adapter/extensions/task.ts +11 -0
- package/src/map/adapter/extensions/update-metadata.ts +126 -0
- package/src/map/adapter/index.ts +33 -0
- package/src/map/adapter/interface.ts +2 -0
- package/src/map/adapter/map-adapter.ts +312 -47
- package/src/map/adapter/subscription-manager.ts +5 -1
- package/src/map/adapter/types.ts +10 -1
- package/src/mcp/__tests__/map-client.test.ts +386 -0
- package/src/mcp/__tests__/mcp-server-thin-client.test.ts +368 -0
- package/src/mcp/__tests__/mcp-server.test.ts +100 -1
- package/src/mcp/map-client.ts +177 -0
- package/src/mcp/mcp-server.ts +205 -103
- package/src/mcp/tools/done.ts +19 -0
- package/src/mcp/types.ts +6 -1
- package/src/metrics/metrics.ts +1 -1
- package/src/monitor/__tests__/stale-agent-flow.integration.test.ts +1 -1
- package/src/roles/__tests__/config-loader.test.ts +7 -7
- 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 +28 -7
- package/src/roles/config-loader.ts +8 -7
- package/src/roles/registry.ts +2 -2
- package/src/roles/types.ts +7 -0
- package/src/server/__tests__/combined-server.test.ts +94 -21
- package/src/server/combined-server.ts +203 -33
- package/src/steering/__tests__/steering-integration.test.ts +1 -1
- package/src/store/__tests__/event-store-oob.test.ts +109 -0
- package/src/store/__tests__/event-store.test.ts +196 -1
- package/src/store/__tests__/instance.test.ts +3 -3
- package/src/store/event-store.ts +92 -23
- package/src/store/instance.ts +2 -2
- package/src/store/types/agents.ts +20 -0
- package/src/store/types/events.ts +1 -1
- package/src/task/backend/__tests__/create-task-backend.test.ts +225 -0
- package/src/task/backend/__tests__/e2e/unified-tool-provider-opentasks.e2e.test.ts +524 -0
- package/src/task/backend/__tests__/memory-pull-mode.test.ts +153 -0
- package/src/task/backend/__tests__/unified-tool-provider.test.ts +579 -0
- package/src/task/backend/index.ts +156 -106
- package/src/task/backend/memory.ts +4 -0
- package/src/task/backend/opentasks/__tests__/backend.test.ts +968 -0
- package/src/task/backend/opentasks/__tests__/daemon-manager.test.ts +406 -0
- package/src/task/backend/opentasks/__tests__/mapping.test.ts +84 -0
- package/src/task/backend/opentasks/__tests__/opentasks-backend.e2e.test.ts +1338 -0
- package/src/task/backend/opentasks/backend.ts +1323 -0
- package/src/task/backend/opentasks/client.ts +652 -0
- package/src/task/backend/opentasks/daemon-manager.ts +256 -0
- package/src/task/backend/opentasks/index.ts +69 -0
- package/src/task/backend/opentasks/mapping.ts +94 -0
- package/src/task/backend/types.ts +42 -66
- package/src/task/backend/unified-tool-provider.ts +779 -0
- package/src/teams/CLAUDE.md +180 -0
- package/src/teams/__tests__/cross-subsystem.integration.test.ts +1 -1
- 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 +202 -236
- package/src/teams/team-manager.ts +387 -0
- package/src/teams/team-runtime.ts +592 -121
- package/src/teams/types.ts +99 -200
- package/test_fixtures/README.md +2 -3
- package/test_fixtures/fixtures/index.ts +0 -3
- package/test_fixtures/fixtures/projects/project-with-specs.ts +7 -149
- package/test_fixtures/fixtures/repos/index.ts +1 -3
- package/test_fixtures/fixtures/repos/temp-repo-factory.ts +0 -116
- package/test_fixtures/fixtures/repos/types.ts +0 -11
- package/test_fixtures/harness/__tests__/fixtures.test.ts +10 -102
- package/test_fixtures/harness/__tests__/temp-repo-and-simulator.test.ts +0 -33
- package/test_fixtures/harness/simulator/agent-simulator.ts +4 -4
- package/vitest.config.ts +1 -1
- package/vitest.e2e.config.ts +1 -1
- package/vitest.setup.ts +1 -30
- package/.macro-agent/teams/self-driving/prompts/grinder.md +0 -27
- package/.macro-agent/teams/self-driving/prompts/judge.md +0 -27
- package/.macro-agent/teams/self-driving/prompts/planner.md +0 -33
- package/.macro-agent/teams/self-driving/roles/grinder.yaml +0 -17
- package/.macro-agent/teams/self-driving/roles/judge.yaml +0 -24
- package/.macro-agent/teams/self-driving/roles/planner.yaml +0 -18
- package/.macro-agent/teams/self-driving/team.yaml +0 -103
- package/.macro-agent/teams/structured/prompts/developer.md +0 -26
- package/.macro-agent/teams/structured/prompts/lead.md +0 -25
- package/.macro-agent/teams/structured/prompts/reviewer.md +0 -24
- package/.macro-agent/teams/structured/roles/developer.yaml +0 -12
- package/.macro-agent/teams/structured/roles/lead.yaml +0 -11
- package/.macro-agent/teams/structured/roles/reviewer.yaml +0 -19
- package/.macro-agent/teams/structured/team.yaml +0 -89
- package/docs/sudocode-integration.md +0 -383
- package/src/task/backend/__tests__/backend-parity.test.ts +0 -451
- package/src/task/backend/__tests__/tool-provider-edge-cases.test.ts +0 -430
- package/src/task/backend/__tests__/tool-provider.test.ts +0 -983
- package/src/task/backend/sudocode/__tests__/backend-edge-cases.test.ts +0 -575
- package/src/task/backend/sudocode/__tests__/backend.test.ts +0 -1194
- package/src/task/backend/sudocode/__tests__/client-integration.test.ts +0 -418
- package/src/task/backend/sudocode/__tests__/client.test.ts +0 -345
- package/src/task/backend/sudocode/__tests__/e2e/backend.e2e.test.ts +0 -753
- package/src/task/backend/sudocode/__tests__/e2e/server-client.e2e.test.ts +0 -680
- package/src/task/backend/sudocode/__tests__/e2e-workflow.test.ts +0 -666
- package/src/task/backend/sudocode/__tests__/integration/standalone-client.integration.test.ts +0 -396
- package/src/task/backend/sudocode/__tests__/integration/sudocode-cli.integration.test.ts +0 -328
- package/src/task/backend/sudocode/__tests__/integration/test-utils.ts +0 -175
- package/src/task/backend/sudocode/__tests__/mapping-edge-cases.test.ts +0 -265
- package/src/task/backend/sudocode/__tests__/server-client.test.ts +0 -675
- package/src/task/backend/sudocode/__tests__/sync-policy-edge-cases.test.ts +0 -521
- package/src/task/backend/sudocode/__tests__/sync-policy.test.ts +0 -519
- package/src/task/backend/sudocode/__tests__/tools.test.ts +0 -471
- package/src/task/backend/sudocode/backend.ts +0 -1237
- package/src/task/backend/sudocode/client.ts +0 -515
- package/src/task/backend/sudocode/index.ts +0 -120
- package/src/task/backend/sudocode/mapping.ts +0 -93
- package/src/task/backend/sudocode/server-client.ts +0 -522
- package/src/task/backend/sudocode/standalone-client.ts +0 -623
- package/src/task/backend/sudocode/sync-policy.ts +0 -387
- package/src/task/backend/sudocode/tools.ts +0 -896
- package/src/task/backend/tool-provider.ts +0 -506
- package/test_fixtures/fixtures/sudocode/index.ts +0 -29
- package/test_fixtures/fixtures/sudocode/issues.ts +0 -185
- package/test_fixtures/fixtures/sudocode/specs.ts +0 -159
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
name: self-driving
|
|
2
|
-
description: "Autonomous codebase development with continuous planning"
|
|
3
|
-
version: 1
|
|
4
|
-
|
|
5
|
-
roles:
|
|
6
|
-
- planner
|
|
7
|
-
- grinder
|
|
8
|
-
- judge
|
|
9
|
-
|
|
10
|
-
topology:
|
|
11
|
-
root:
|
|
12
|
-
role: planner
|
|
13
|
-
prompt: prompts/planner.md
|
|
14
|
-
config:
|
|
15
|
-
model: sonnet
|
|
16
|
-
|
|
17
|
-
companions:
|
|
18
|
-
- role: judge
|
|
19
|
-
prompt: prompts/judge.md
|
|
20
|
-
config:
|
|
21
|
-
model: haiku
|
|
22
|
-
|
|
23
|
-
spawn_rules:
|
|
24
|
-
planner: [grinder, planner]
|
|
25
|
-
judge: []
|
|
26
|
-
grinder: []
|
|
27
|
-
|
|
28
|
-
communication:
|
|
29
|
-
channels:
|
|
30
|
-
task_updates:
|
|
31
|
-
description: "Task lifecycle events"
|
|
32
|
-
signals: [TASK_CREATED, TASK_COMPLETED, TASK_FAILED]
|
|
33
|
-
work_coordination:
|
|
34
|
-
description: "Work assignment and completion"
|
|
35
|
-
signals: [WORK_ASSIGNED, WORKER_DONE, MERGE_REQUEST]
|
|
36
|
-
health:
|
|
37
|
-
description: "System health monitoring"
|
|
38
|
-
signals: [HEALTH_CHECK, METRIC_SNAPSHOT, GREEN_SNAPSHOT]
|
|
39
|
-
|
|
40
|
-
subscriptions:
|
|
41
|
-
planner:
|
|
42
|
-
- channel: task_updates
|
|
43
|
-
- channel: work_coordination
|
|
44
|
-
signals: [WORKER_DONE]
|
|
45
|
-
- channel: health
|
|
46
|
-
signals: [METRIC_SNAPSHOT]
|
|
47
|
-
judge:
|
|
48
|
-
- channel: task_updates
|
|
49
|
-
signals: [TASK_FAILED]
|
|
50
|
-
- channel: work_coordination
|
|
51
|
-
signals: [WORKER_DONE]
|
|
52
|
-
- channel: health
|
|
53
|
-
grinder:
|
|
54
|
-
- channel: work_coordination
|
|
55
|
-
signals: [WORK_ASSIGNED]
|
|
56
|
-
|
|
57
|
-
emissions:
|
|
58
|
-
planner: [TASK_CREATED, WORK_ASSIGNED]
|
|
59
|
-
judge: [HEALTH_CHECK, GREEN_SNAPSHOT, FIXUP_CREATED]
|
|
60
|
-
grinder: [WORKER_DONE]
|
|
61
|
-
|
|
62
|
-
routing:
|
|
63
|
-
status: upstream
|
|
64
|
-
peers:
|
|
65
|
-
- from: judge
|
|
66
|
-
to: planner
|
|
67
|
-
via: direct
|
|
68
|
-
signals: [FIXUP_CREATED, GREEN_SNAPSHOT]
|
|
69
|
-
- from: planner
|
|
70
|
-
to: judge
|
|
71
|
-
via: direct
|
|
72
|
-
signals: [CONVERGENCE_CHECK]
|
|
73
|
-
|
|
74
|
-
enforcement: permissive
|
|
75
|
-
|
|
76
|
-
macro_agent:
|
|
77
|
-
task_assignment:
|
|
78
|
-
mode: pull
|
|
79
|
-
pull:
|
|
80
|
-
idle_timeout_s: 300
|
|
81
|
-
claim_retry_delay_ms: 2000
|
|
82
|
-
max_concurrent_per_agent: 1
|
|
83
|
-
|
|
84
|
-
integration:
|
|
85
|
-
strategy: trunk
|
|
86
|
-
config:
|
|
87
|
-
max_retries: 3
|
|
88
|
-
conflict_action: abandon
|
|
89
|
-
|
|
90
|
-
lifecycle:
|
|
91
|
-
continuations:
|
|
92
|
-
enabled: true
|
|
93
|
-
max_history_messages: 50
|
|
94
|
-
checkpoint_interval: round_trip
|
|
95
|
-
scaling:
|
|
96
|
-
min_workers: 3
|
|
97
|
-
max_workers: 20
|
|
98
|
-
scale_on: task_queue_depth
|
|
99
|
-
idle_drain: true
|
|
100
|
-
|
|
101
|
-
observability:
|
|
102
|
-
metrics_window_s: 3600
|
|
103
|
-
snapshot_interval_s: 300
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
# Developer
|
|
2
|
-
|
|
3
|
-
You are a **Developer** on a structured development team. You execute a single assigned task in your isolated workspace.
|
|
4
|
-
|
|
5
|
-
## Responsibilities
|
|
6
|
-
|
|
7
|
-
1. **Implement** - Complete the assigned task according to its description
|
|
8
|
-
2. **Test** - Verify your changes work correctly
|
|
9
|
-
3. **Commit** - Create clean, descriptive commits
|
|
10
|
-
4. **Report** - Call `done()` with status and summary when finished
|
|
11
|
-
|
|
12
|
-
## Workflow
|
|
13
|
-
|
|
14
|
-
1. Read and understand the task description
|
|
15
|
-
2. Explore the relevant code to plan your changes
|
|
16
|
-
3. Implement the changes
|
|
17
|
-
4. Run tests to verify correctness
|
|
18
|
-
5. Commit your work with a clear message
|
|
19
|
-
6. Call `done()` with status `completed` and a brief summary
|
|
20
|
-
|
|
21
|
-
## Guidelines
|
|
22
|
-
|
|
23
|
-
- Stay focused on your assigned task only
|
|
24
|
-
- Do not modify files outside the scope of your task
|
|
25
|
-
- If you encounter a blocker, call `done()` with status `failed` and describe the issue
|
|
26
|
-
- Make atomic commits that are easy to review
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
# Lead
|
|
2
|
-
|
|
3
|
-
You are the **Lead** of a structured development team. You coordinate work by decomposing objectives into tasks and assigning them to developers.
|
|
4
|
-
|
|
5
|
-
## Responsibilities
|
|
6
|
-
|
|
7
|
-
1. **Task Decomposition** - Break down the user's request into well-scoped, independent tasks
|
|
8
|
-
2. **Assignment** - Spawn developers and assign each a specific task
|
|
9
|
-
3. **Progress Tracking** - Monitor task completion and handle failures
|
|
10
|
-
4. **Sequencing** - Ensure dependent tasks are ordered correctly using blockers
|
|
11
|
-
|
|
12
|
-
## Workflow
|
|
13
|
-
|
|
14
|
-
1. Analyze the objective and identify the minimal set of changes needed
|
|
15
|
-
2. Create tasks with clear descriptions and acceptance criteria
|
|
16
|
-
3. Spawn developers to handle each task
|
|
17
|
-
4. Monitor TASK_COMPLETED / TASK_FAILED signals
|
|
18
|
-
5. When all tasks complete, call `done()` with a summary
|
|
19
|
-
|
|
20
|
-
## Guidelines
|
|
21
|
-
|
|
22
|
-
- Keep tasks small and focused (one file or one logical change)
|
|
23
|
-
- Set blockers between tasks that have data dependencies
|
|
24
|
-
- Prefer parallel execution where tasks are independent
|
|
25
|
-
- If a task fails, assess whether to retry or adjust the plan
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# Reviewer
|
|
2
|
-
|
|
3
|
-
You are a **Reviewer** on a structured development team. You review merge requests to ensure quality before they land on the main branch.
|
|
4
|
-
|
|
5
|
-
## Responsibilities
|
|
6
|
-
|
|
7
|
-
1. **Review** - Examine code changes in merge requests for correctness and quality
|
|
8
|
-
2. **Validate** - Run build and test to verify the changes don't break anything
|
|
9
|
-
3. **Decide** - Approve or reject the merge request with clear reasoning
|
|
10
|
-
|
|
11
|
-
## Workflow
|
|
12
|
-
|
|
13
|
-
1. Wait for MERGE_REQUEST signals
|
|
14
|
-
2. Check out the branch and review the diff
|
|
15
|
-
3. Run `build` and `test` commands
|
|
16
|
-
4. If everything passes, emit REVIEW_APPROVED
|
|
17
|
-
5. If issues found, emit REVIEW_REJECTED with explanation
|
|
18
|
-
|
|
19
|
-
## Guidelines
|
|
20
|
-
|
|
21
|
-
- Focus on correctness, not style preferences
|
|
22
|
-
- Run the test suite before approving
|
|
23
|
-
- Provide specific, actionable feedback on rejections
|
|
24
|
-
- Do not modify code directly; report issues back to the lead
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
name: reviewer
|
|
2
|
-
extends: monitor
|
|
3
|
-
display_name: "Reviewer"
|
|
4
|
-
description: "Reviews merge requests and approves or rejects changes"
|
|
5
|
-
|
|
6
|
-
capabilities_add:
|
|
7
|
-
- exec.build
|
|
8
|
-
- exec.test
|
|
9
|
-
|
|
10
|
-
prompt: prompts/reviewer.md
|
|
11
|
-
|
|
12
|
-
macro_agent:
|
|
13
|
-
workspace:
|
|
14
|
-
type: own
|
|
15
|
-
branch_pattern: "review/{agent-id}"
|
|
16
|
-
cleanup_on_terminate: true
|
|
17
|
-
lifecycle:
|
|
18
|
-
type: event-driven
|
|
19
|
-
parent_bound: false
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
name: structured
|
|
2
|
-
description: "Hierarchical development with explicit task assignment and merge queue"
|
|
3
|
-
version: 1
|
|
4
|
-
|
|
5
|
-
roles:
|
|
6
|
-
- lead
|
|
7
|
-
- developer
|
|
8
|
-
- reviewer
|
|
9
|
-
|
|
10
|
-
topology:
|
|
11
|
-
root:
|
|
12
|
-
role: lead
|
|
13
|
-
prompt: prompts/lead.md
|
|
14
|
-
config:
|
|
15
|
-
model: sonnet
|
|
16
|
-
|
|
17
|
-
companions:
|
|
18
|
-
- role: reviewer
|
|
19
|
-
prompt: prompts/reviewer.md
|
|
20
|
-
config:
|
|
21
|
-
model: haiku
|
|
22
|
-
|
|
23
|
-
spawn_rules:
|
|
24
|
-
lead: [developer, lead]
|
|
25
|
-
reviewer: []
|
|
26
|
-
developer: []
|
|
27
|
-
|
|
28
|
-
communication:
|
|
29
|
-
channels:
|
|
30
|
-
task_updates:
|
|
31
|
-
description: "Task lifecycle events"
|
|
32
|
-
signals: [TASK_CREATED, TASK_ASSIGNED, TASK_COMPLETED, TASK_FAILED]
|
|
33
|
-
merge_flow:
|
|
34
|
-
description: "Merge queue and integration events"
|
|
35
|
-
signals: [MERGE_REQUEST, MERGE_COMPLETED, MERGE_CONFLICT]
|
|
36
|
-
review_flow:
|
|
37
|
-
description: "Code review signals"
|
|
38
|
-
signals: [REVIEW_REQUESTED, REVIEW_APPROVED, REVIEW_REJECTED]
|
|
39
|
-
|
|
40
|
-
subscriptions:
|
|
41
|
-
lead:
|
|
42
|
-
- channel: task_updates
|
|
43
|
-
- channel: merge_flow
|
|
44
|
-
- channel: review_flow
|
|
45
|
-
signals: [REVIEW_APPROVED, REVIEW_REJECTED]
|
|
46
|
-
reviewer:
|
|
47
|
-
- channel: merge_flow
|
|
48
|
-
signals: [MERGE_REQUEST]
|
|
49
|
-
- channel: review_flow
|
|
50
|
-
developer:
|
|
51
|
-
- channel: task_updates
|
|
52
|
-
signals: [TASK_ASSIGNED]
|
|
53
|
-
|
|
54
|
-
emissions:
|
|
55
|
-
lead: [TASK_CREATED, TASK_ASSIGNED]
|
|
56
|
-
reviewer: [REVIEW_APPROVED, REVIEW_REJECTED]
|
|
57
|
-
developer: [MERGE_REQUEST, TASK_COMPLETED, TASK_FAILED]
|
|
58
|
-
|
|
59
|
-
routing:
|
|
60
|
-
status: upstream
|
|
61
|
-
peers:
|
|
62
|
-
- from: reviewer
|
|
63
|
-
to: lead
|
|
64
|
-
via: direct
|
|
65
|
-
signals: [REVIEW_APPROVED, REVIEW_REJECTED]
|
|
66
|
-
|
|
67
|
-
enforcement: permissive
|
|
68
|
-
|
|
69
|
-
macro_agent:
|
|
70
|
-
task_assignment:
|
|
71
|
-
mode: push
|
|
72
|
-
|
|
73
|
-
integration:
|
|
74
|
-
strategy: queue
|
|
75
|
-
config:
|
|
76
|
-
require_review: true
|
|
77
|
-
|
|
78
|
-
lifecycle:
|
|
79
|
-
continuations:
|
|
80
|
-
enabled: false
|
|
81
|
-
scaling:
|
|
82
|
-
min_workers: 1
|
|
83
|
-
max_workers: 10
|
|
84
|
-
scale_on: manual
|
|
85
|
-
idle_drain: false
|
|
86
|
-
|
|
87
|
-
observability:
|
|
88
|
-
metrics_window_s: 1800
|
|
89
|
-
snapshot_interval_s: 600
|
|
@@ -1,383 +0,0 @@
|
|
|
1
|
-
# Sudocode Integration
|
|
2
|
-
|
|
3
|
-
macro-agent integrates with [sudocode](https://github.com/sudocode-ai/sudocode) to provide external issue tracking and dependency management for tasks. This enables agents to work on issues from a structured backlog with proper dependency ordering.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
When using the sudocode backend:
|
|
8
|
-
- Tasks are bound to sudocode issues via `external_id`
|
|
9
|
-
- Blocking relationships come from sudocode's issue links
|
|
10
|
-
- `listReady()` returns only tasks whose bound issues have no incomplete blockers
|
|
11
|
-
- Task status can optionally sync with issue status
|
|
12
|
-
|
|
13
|
-
## Quick Start
|
|
14
|
-
|
|
15
|
-
### 1. Set Environment Variables
|
|
16
|
-
|
|
17
|
-
```bash
|
|
18
|
-
# Enable sudocode backend
|
|
19
|
-
export MACRO_TASK_BACKEND=sudocode
|
|
20
|
-
|
|
21
|
-
# Set project path (defaults to cwd)
|
|
22
|
-
export SUDOCODE_PROJECT_PATH=/path/to/project
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### 2. Start macro-agent
|
|
26
|
-
|
|
27
|
-
```bash
|
|
28
|
-
npx multiagent
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
The agent will automatically connect to sudocode and use issues as the task source.
|
|
32
|
-
|
|
33
|
-
## Configuration Reference
|
|
34
|
-
|
|
35
|
-
### Environment Variables
|
|
36
|
-
|
|
37
|
-
| Variable | Description | Default |
|
|
38
|
-
|----------|-------------|---------|
|
|
39
|
-
| `MACRO_TASK_BACKEND` | Backend type: `memory` or `sudocode` | `memory` |
|
|
40
|
-
| `MACRO_TASK_TOOL_MODE` | Tool exposure mode: `abstract`, `native`, `both`, `auto` | `auto` |
|
|
41
|
-
| `SUDOCODE_PROJECT_PATH` | Path to sudocode project root | `process.cwd()` |
|
|
42
|
-
| `SUDOCODE_TOOL_MODE` | Sudocode tool mode: `native`, `mapped`, `both` | `mapped` |
|
|
43
|
-
|
|
44
|
-
### Programmatic Configuration
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
import { createTaskBackend, loadTaskConfigFromEnv } from 'macro-agent';
|
|
48
|
-
|
|
49
|
-
// Load from environment
|
|
50
|
-
const config = loadTaskConfigFromEnv();
|
|
51
|
-
|
|
52
|
-
// Or configure manually
|
|
53
|
-
const config = {
|
|
54
|
-
backend: {
|
|
55
|
-
type: 'sudocode',
|
|
56
|
-
projectPath: '/path/to/project',
|
|
57
|
-
idStrategy: 'dual', // Task ID strategy
|
|
58
|
-
syncMode: 'realtime', // Event sync mode
|
|
59
|
-
executionTracking: { mode: 'bound-only' },
|
|
60
|
-
autoLinkSpecs: true, // Link tasks to specs
|
|
61
|
-
toolMode: 'mapped', // Tool exposure mode
|
|
62
|
-
},
|
|
63
|
-
toolMode: 'auto',
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const { backend, toolProvider, toolMode } = await createTaskBackend(config, eventStore);
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Backend Configuration Options
|
|
70
|
-
|
|
71
|
-
```typescript
|
|
72
|
-
interface SudocodeBackendConfig {
|
|
73
|
-
type: 'sudocode';
|
|
74
|
-
|
|
75
|
-
/** Path to sudocode project root (contains .sudocode/) */
|
|
76
|
-
projectPath: string;
|
|
77
|
-
|
|
78
|
-
/** ID strategy (default: 'dual') */
|
|
79
|
-
idStrategy?: 'dual';
|
|
80
|
-
|
|
81
|
-
/** Sync mode for event subscriptions */
|
|
82
|
-
syncMode?: 'realtime' | 'batch';
|
|
83
|
-
|
|
84
|
-
/** Execution tracking configuration */
|
|
85
|
-
executionTracking?: ExecutionTrackingConfig;
|
|
86
|
-
|
|
87
|
-
/** Auto-link tasks to specs when created from spec context */
|
|
88
|
-
autoLinkSpecs?: boolean;
|
|
89
|
-
|
|
90
|
-
/** Tool mode for this backend */
|
|
91
|
-
toolMode?: 'native' | 'mapped' | 'both';
|
|
92
|
-
}
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Execution Tracking Options
|
|
96
|
-
|
|
97
|
-
Control when execution records are created:
|
|
98
|
-
|
|
99
|
-
```typescript
|
|
100
|
-
type ExecutionTrackingConfig =
|
|
101
|
-
| { mode: 'none' } // No execution records
|
|
102
|
-
| { mode: 'bound-only' } // Only tasks with external binding (default)
|
|
103
|
-
| { mode: 'all' } // All agent runs
|
|
104
|
-
| { mode: 'filter'; filter: ExecutionFilter };
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
## Usage Guide
|
|
108
|
-
|
|
109
|
-
### Creating Tasks Bound to Issues
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
// Create task bound to an existing sudocode issue
|
|
113
|
-
const task = await backend.create({
|
|
114
|
-
description: 'Implement feature X',
|
|
115
|
-
external_id: 'i-abc123', // sudocode issue ID
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
console.log(task.external_id); // 'i-abc123'
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
### Multiple Tasks Per Issue
|
|
122
|
-
|
|
123
|
-
Multiple tasks (parallel workers) can work on the same issue:
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
// Parallel workers on same issue
|
|
127
|
-
const task1 = await backend.create({
|
|
128
|
-
description: 'Worker 1 attempt',
|
|
129
|
-
external_id: 'i-abc123',
|
|
130
|
-
});
|
|
131
|
-
|
|
132
|
-
const task2 = await backend.create({
|
|
133
|
-
description: 'Worker 2 attempt',
|
|
134
|
-
external_id: 'i-abc123',
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
// Assign to different agents
|
|
138
|
-
await backend.assign(task1.id, 'worker-1');
|
|
139
|
-
await backend.assign(task2.id, 'worker-2');
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
### Working with Dependencies
|
|
143
|
-
|
|
144
|
-
Sudocode's blocking relationships determine task readiness:
|
|
145
|
-
|
|
146
|
-
```typescript
|
|
147
|
-
// Get tasks that are ready (no blocking dependencies)
|
|
148
|
-
const ready = await backend.listReady();
|
|
149
|
-
|
|
150
|
-
// Check if a specific task is blocked
|
|
151
|
-
const task = await backend.get(taskId);
|
|
152
|
-
if (task.isBlocked) {
|
|
153
|
-
// Task's bound issue has incomplete blockers
|
|
154
|
-
const blockers = await backend.getBlockers(taskId);
|
|
155
|
-
console.log('Blocked by:', blockers.map(b => b.external_id));
|
|
156
|
-
}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
### Task Lifecycle
|
|
160
|
-
|
|
161
|
-
```typescript
|
|
162
|
-
// 1. Create task bound to issue
|
|
163
|
-
const task = await backend.create({
|
|
164
|
-
description: 'Implement feature',
|
|
165
|
-
external_id: 'i-abc123',
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
// 2. Assign to agent
|
|
169
|
-
await backend.assign(task.id, 'agent-1');
|
|
170
|
-
|
|
171
|
-
// 3. Start execution
|
|
172
|
-
await backend.start(task.id);
|
|
173
|
-
// Issue status syncs to 'in_progress' if syncStatus enabled
|
|
174
|
-
|
|
175
|
-
// 4. Complete task
|
|
176
|
-
await backend.complete(task.id, {
|
|
177
|
-
summary: 'Feature implemented',
|
|
178
|
-
result: { files_changed: 3 },
|
|
179
|
-
});
|
|
180
|
-
|
|
181
|
-
// 5. (Optional) Issue is closed by coordinator, not automatically
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
### Event Subscriptions
|
|
185
|
-
|
|
186
|
-
```typescript
|
|
187
|
-
// Subscribe to all task changes
|
|
188
|
-
const unsubscribe = backend.onTaskChange((event) => {
|
|
189
|
-
console.log(`Task ${event.taskId}: ${event.type}`);
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
// Subscribe to specific task
|
|
193
|
-
const unsubscribe = backend.onTaskChange(taskId, (event) => {
|
|
194
|
-
console.log(`Task updated: ${event.type}`);
|
|
195
|
-
});
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
## Tool Modes
|
|
199
|
-
|
|
200
|
-
The sudocode backend supports different tool exposure modes:
|
|
201
|
-
|
|
202
|
-
| Mode | Description |
|
|
203
|
-
|------|-------------|
|
|
204
|
-
| `native` | Expose sudocode's native tools (`upsert_issue`, `link`, etc.) |
|
|
205
|
-
| `mapped` | Map to abstract task tools (`create_task`, `complete_task`, etc.) |
|
|
206
|
-
| `both` | Expose both tool sets |
|
|
207
|
-
|
|
208
|
-
### Auto Mode Behavior
|
|
209
|
-
|
|
210
|
-
When `toolMode: 'auto'`:
|
|
211
|
-
- Sudocode backend defaults to `mapped` (abstract tools)
|
|
212
|
-
- Memory backend defaults to `abstract`
|
|
213
|
-
|
|
214
|
-
## Architecture
|
|
215
|
-
|
|
216
|
-
```
|
|
217
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
218
|
-
│ SudocodeTaskBackend │
|
|
219
|
-
│ │
|
|
220
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
221
|
-
│ │ EventStore (Task Storage) │ │
|
|
222
|
-
│ │ - Tasks with external_id bindings │ │
|
|
223
|
-
│ │ - Task-level state (assignment, status, outputs) │ │
|
|
224
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
225
|
-
│ │ │
|
|
226
|
-
│ ┌─────────────────────────────────────────────────────┐ │
|
|
227
|
-
│ │ SudocodeClient (Interface) │ │
|
|
228
|
-
│ │ - Abstracts deployment mode │ │
|
|
229
|
-
│ │ - Issue/spec/relationship operations │ │
|
|
230
|
-
│ └─────────────────────────────────────────────────────┘ │
|
|
231
|
-
└──────────────────────────────┼───────────────────────────────┘
|
|
232
|
-
│
|
|
233
|
-
┌──────────────────┴──────────────────┐
|
|
234
|
-
▼ ▼
|
|
235
|
-
┌───────────────────────────┐ ┌───────────────────────────┐
|
|
236
|
-
│ ServerClient │ │ StandaloneClient │
|
|
237
|
-
│ (Managed Mode) │ │ (Standalone Mode) │
|
|
238
|
-
│ - REST API + WebSocket │ │ - CLI + File Watcher │
|
|
239
|
-
└───────────────────────────┘ └───────────────────────────┘
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
### Data Flow
|
|
243
|
-
|
|
244
|
-
1. **Task Creation**: Backend creates task in EventStore, binds to issue via `external_id`
|
|
245
|
-
2. **Blocker Lookup**: When `isBlocked` is queried, client fetches issue's blockers
|
|
246
|
-
3. **Status Sync**: Task status changes optionally sync to issue status
|
|
247
|
-
4. **Ready Queries**: `listReady()` filters tasks by sudocode's ready issues
|
|
248
|
-
|
|
249
|
-
## Migration Guide
|
|
250
|
-
|
|
251
|
-
### From InMemoryTaskBackend
|
|
252
|
-
|
|
253
|
-
#### Breaking Changes
|
|
254
|
-
|
|
255
|
-
1. **No `subtasks[]` array** - Use `getChildren(parentId)` instead
|
|
256
|
-
2. **No `agent_history[]` array** - Use `getAgentHistory(taskId)` instead
|
|
257
|
-
3. **`isBlocked` is computed** - Based on sudocode relationships, not task.blockers
|
|
258
|
-
|
|
259
|
-
#### Migration Steps
|
|
260
|
-
|
|
261
|
-
1. Update task creation to use `external_id` for issue binding:
|
|
262
|
-
```typescript
|
|
263
|
-
// Before
|
|
264
|
-
const task = await backend.create({ description: 'Work' });
|
|
265
|
-
|
|
266
|
-
// After (with issue binding)
|
|
267
|
-
const task = await backend.create({
|
|
268
|
-
description: 'Work',
|
|
269
|
-
external_id: 'i-abc123',
|
|
270
|
-
});
|
|
271
|
-
```
|
|
272
|
-
|
|
273
|
-
2. Replace direct property access with method calls:
|
|
274
|
-
```typescript
|
|
275
|
-
// Before
|
|
276
|
-
const children = task.subtasks;
|
|
277
|
-
const history = task.agent_history;
|
|
278
|
-
|
|
279
|
-
// After
|
|
280
|
-
const children = await backend.getChildren(task.id);
|
|
281
|
-
const history = await backend.getAgentHistory(task.id);
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
3. Use `listReady()` for dependency-aware queries:
|
|
285
|
-
```typescript
|
|
286
|
-
// Before (manual filtering)
|
|
287
|
-
const tasks = await backend.list({ status: 'pending' });
|
|
288
|
-
const ready = tasks.filter(t => !t.blockers?.length);
|
|
289
|
-
|
|
290
|
-
// After
|
|
291
|
-
const ready = await backend.listReady({ status: 'pending' });
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
### Coexistence
|
|
295
|
-
|
|
296
|
-
Both backends can coexist during migration:
|
|
297
|
-
- Tasks without `external_id` work like in-memory tasks
|
|
298
|
-
- Tasks with `external_id` are bound to sudocode issues
|
|
299
|
-
- Switch backends via environment variable without code changes
|
|
300
|
-
|
|
301
|
-
## Sync Policy
|
|
302
|
-
|
|
303
|
-
Configure how task and issue state synchronize:
|
|
304
|
-
|
|
305
|
-
```typescript
|
|
306
|
-
interface SyncPolicy {
|
|
307
|
-
/** Action when bound issue is closed externally */
|
|
308
|
-
onIssueClosed: 'complete_task' | 'fail_task' | 'notify_only';
|
|
309
|
-
|
|
310
|
-
/** Action when issue description changes */
|
|
311
|
-
onDescriptionChanged: 'propagate' | 'snapshot';
|
|
312
|
-
|
|
313
|
-
/** Action when blocker status changes */
|
|
314
|
-
onBlockerChanged: 'update_blocked' | 'notify_only';
|
|
315
|
-
|
|
316
|
-
/** Update issue status when task starts */
|
|
317
|
-
updateIssueOnStart: boolean;
|
|
318
|
-
|
|
319
|
-
/** Update issue when task completes */
|
|
320
|
-
updateIssueOnComplete: 'close' | 'comment' | 'never';
|
|
321
|
-
}
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
Default policy:
|
|
325
|
-
```typescript
|
|
326
|
-
const defaultSyncPolicy = {
|
|
327
|
-
onIssueClosed: 'notify_only', // Don't auto-complete/fail tasks
|
|
328
|
-
onDescriptionChanged: 'snapshot', // Keep original description
|
|
329
|
-
onBlockerChanged: 'update_blocked', // Update isBlocked state
|
|
330
|
-
updateIssueOnStart: true, // Sync status to in_progress
|
|
331
|
-
updateIssueOnComplete: 'never', // Let coordinator close issues
|
|
332
|
-
};
|
|
333
|
-
```
|
|
334
|
-
|
|
335
|
-
## API Reference
|
|
336
|
-
|
|
337
|
-
### TaskBackend Methods
|
|
338
|
-
|
|
339
|
-
| Method | Description |
|
|
340
|
-
|--------|-------------|
|
|
341
|
-
| `create(options)` | Create task, optionally bound to issue |
|
|
342
|
-
| `get(id)` | Get task with computed `isBlocked` |
|
|
343
|
-
| `update(id, updates)` | Update task metadata |
|
|
344
|
-
| `assign(id, agentId)` | Assign task to agent |
|
|
345
|
-
| `start(id)` | Start task, optionally sync to issue |
|
|
346
|
-
| `complete(id, outputs?)` | Complete task |
|
|
347
|
-
| `fail(id, error)` | Mark task as failed |
|
|
348
|
-
| `list(filter?)` | List tasks with optional filter |
|
|
349
|
-
| `listReady(filter?)` | List unblocked tasks |
|
|
350
|
-
| `getBlockers(id)` | Get blocking tasks |
|
|
351
|
-
| `getBlocking(id)` | Get tasks blocked by this one |
|
|
352
|
-
| `getChildren(id)` | Get subtasks |
|
|
353
|
-
| `getAgentHistory(id)` | Get assignment history |
|
|
354
|
-
| `onTaskChange(callback)` | Subscribe to task events |
|
|
355
|
-
|
|
356
|
-
### ExtendedTask Fields
|
|
357
|
-
|
|
358
|
-
| Field | Type | Description |
|
|
359
|
-
|-------|------|-------------|
|
|
360
|
-
| `id` | `string` | Internal task ID |
|
|
361
|
-
| `external_id` | `string?` | Bound sudocode issue ID |
|
|
362
|
-
| `status` | `TaskStatus` | Current status |
|
|
363
|
-
| `isBlocked` | `boolean` | Computed from issue blockers |
|
|
364
|
-
| `assigned_agent` | `string?` | Assigned agent ID |
|
|
365
|
-
| `parent_task` | `string?` | Parent task ID |
|
|
366
|
-
| `outputs` | `object?` | Task outputs on completion |
|
|
367
|
-
|
|
368
|
-
## Troubleshooting
|
|
369
|
-
|
|
370
|
-
### Task shows isBlocked=false when issue has blockers
|
|
371
|
-
|
|
372
|
-
Ensure the sudocode client has fetched the latest issue state. Call `backend.getBlockers(taskId)` to refresh blocker data.
|
|
373
|
-
|
|
374
|
-
### Status not syncing to issue
|
|
375
|
-
|
|
376
|
-
Check that `syncStatus: true` is set in backend config (default is true).
|
|
377
|
-
|
|
378
|
-
### Tasks not appearing in listReady()
|
|
379
|
-
|
|
380
|
-
Tasks must:
|
|
381
|
-
1. Have status `pending` or `assigned`
|
|
382
|
-
2. Be bound to an issue with no incomplete blockers
|
|
383
|
-
3. Not be excluded by filter criteria
|