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
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTasks Daemon Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages the lifecycle of the central opentasks daemon as part of the
|
|
5
|
+
* task backend lifecycle. The daemon is auto-started by createTaskBackend()
|
|
6
|
+
* and stopped via TaskBackendResult.shutdown().
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* - Central daemon lives at ~/.multiagent/opentasks/
|
|
10
|
+
* - If a daemon is already running, we connect to it (ownsDaemon=false)
|
|
11
|
+
* - If not, we start one and own its lifecycle (ownsDaemon=true)
|
|
12
|
+
* - On shutdown, we only stop the daemon if we started it
|
|
13
|
+
*
|
|
14
|
+
* @module task/backend/opentasks/daemon-manager
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
import * as fs from "node:fs";
|
|
18
|
+
import * as os from "node:os";
|
|
19
|
+
import * as path from "node:path";
|
|
20
|
+
import { checkExistingDaemon, createDaemonWithStore } from "opentasks";
|
|
21
|
+
import { IPCOpenTasksClient } from "./client.js";
|
|
22
|
+
import type { OpenTasksClient } from "./client.js";
|
|
23
|
+
|
|
24
|
+
// =============================================================================
|
|
25
|
+
// Types
|
|
26
|
+
// =============================================================================
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Configuration for the DaemonManager.
|
|
30
|
+
*/
|
|
31
|
+
export interface DaemonManagerConfig {
|
|
32
|
+
/** Central daemon location (default: ~/.multiagent/opentasks) */
|
|
33
|
+
centralPath?: string;
|
|
34
|
+
|
|
35
|
+
/** Whether to auto-connect project .opentasks/ on connectProject() */
|
|
36
|
+
connectOnSpawn?: boolean;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Result from ensureDaemon() — the running daemon's connection info.
|
|
41
|
+
*/
|
|
42
|
+
export interface DaemonManagerResult {
|
|
43
|
+
/** Connected OpenTasks client */
|
|
44
|
+
client: OpenTasksClient;
|
|
45
|
+
|
|
46
|
+
/** Daemon socket path */
|
|
47
|
+
socketPath: string;
|
|
48
|
+
|
|
49
|
+
/** Whether we started the daemon (vs connecting to existing) */
|
|
50
|
+
ownsDaemon: boolean;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// =============================================================================
|
|
54
|
+
// Constants
|
|
55
|
+
// =============================================================================
|
|
56
|
+
|
|
57
|
+
const DEFAULT_CENTRAL_PATH = path.join(
|
|
58
|
+
process.env.MACRO_AGENT_HOME || path.join(os.homedir(), ".multiagent"),
|
|
59
|
+
"opentasks",
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
/** Grace period (ms) between client disconnect and daemon.stop() to let children finish disconnecting */
|
|
63
|
+
const DAEMON_DRAIN_MS = 500;
|
|
64
|
+
|
|
65
|
+
// =============================================================================
|
|
66
|
+
// DaemonManager Implementation
|
|
67
|
+
// =============================================================================
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Manages the central opentasks daemon lifecycle.
|
|
71
|
+
*
|
|
72
|
+
* Internal to the opentasks backend module — not exposed as a standalone service.
|
|
73
|
+
*/
|
|
74
|
+
export class DaemonManager {
|
|
75
|
+
private readonly centralPath: string;
|
|
76
|
+
private readonly connectOnSpawn: boolean;
|
|
77
|
+
private daemon: any = null;
|
|
78
|
+
private client: OpenTasksClient | null = null;
|
|
79
|
+
private ownsDaemon = false;
|
|
80
|
+
private connectedProjects = new Set<string>();
|
|
81
|
+
|
|
82
|
+
constructor(config?: DaemonManagerConfig) {
|
|
83
|
+
this.centralPath = config?.centralPath ?? DEFAULT_CENTRAL_PATH;
|
|
84
|
+
this.connectOnSpawn = config?.connectOnSpawn ?? true;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Ensure the central daemon is running and return a connected client.
|
|
89
|
+
*
|
|
90
|
+
* 1. Check if a daemon is already running at the central path
|
|
91
|
+
* 2. If running, connect to it (ownsDaemon=false)
|
|
92
|
+
* 3. If not running, start one (ownsDaemon=true)
|
|
93
|
+
* 4. Return connected client + socket path
|
|
94
|
+
*/
|
|
95
|
+
async ensureDaemon(): Promise<DaemonManagerResult> {
|
|
96
|
+
// Ensure the central directory exists
|
|
97
|
+
fs.mkdirSync(this.centralPath, { recursive: true });
|
|
98
|
+
|
|
99
|
+
// Check if a daemon is already running at this location
|
|
100
|
+
const existing = await checkExistingDaemon(this.centralPath);
|
|
101
|
+
|
|
102
|
+
if (existing.running && existing.socketPath) {
|
|
103
|
+
// Connect to the existing daemon
|
|
104
|
+
console.error(`[opentasks] Connecting to existing daemon at ${existing.socketPath} (pid: ${existing.pid})`);
|
|
105
|
+
|
|
106
|
+
const client = new IPCOpenTasksClient({
|
|
107
|
+
socketPath: existing.socketPath,
|
|
108
|
+
});
|
|
109
|
+
await client.connect();
|
|
110
|
+
|
|
111
|
+
this.client = client;
|
|
112
|
+
this.ownsDaemon = false;
|
|
113
|
+
|
|
114
|
+
return {
|
|
115
|
+
client,
|
|
116
|
+
socketPath: existing.socketPath,
|
|
117
|
+
ownsDaemon: false,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// No daemon running — start one
|
|
122
|
+
console.error(`[opentasks] Starting daemon at ${this.centralPath}`);
|
|
123
|
+
|
|
124
|
+
const daemon = await createDaemonWithStore({
|
|
125
|
+
locationPath: this.centralPath,
|
|
126
|
+
version: "0.0.3",
|
|
127
|
+
});
|
|
128
|
+
await daemon.start();
|
|
129
|
+
|
|
130
|
+
this.daemon = daemon;
|
|
131
|
+
this.ownsDaemon = true;
|
|
132
|
+
|
|
133
|
+
const socketPath = daemon.socketPath as string;
|
|
134
|
+
console.error(`[opentasks] Daemon started (socket: ${socketPath})`);
|
|
135
|
+
|
|
136
|
+
// Connect client to the daemon
|
|
137
|
+
const client = new IPCOpenTasksClient({ socketPath });
|
|
138
|
+
await client.connect();
|
|
139
|
+
|
|
140
|
+
this.client = client;
|
|
141
|
+
|
|
142
|
+
return {
|
|
143
|
+
client,
|
|
144
|
+
socketPath,
|
|
145
|
+
ownsDaemon: true,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Connect a project's .opentasks/ directory to the central daemon.
|
|
151
|
+
*
|
|
152
|
+
* This is a fire-and-forget operation — connection failures are logged
|
|
153
|
+
* but do not affect the caller.
|
|
154
|
+
*
|
|
155
|
+
* @param projectPath - Path to the project root (will look for .opentasks/ subdirectory)
|
|
156
|
+
*/
|
|
157
|
+
async connectProject(projectPath: string): Promise<void> {
|
|
158
|
+
if (!this.connectOnSpawn) return;
|
|
159
|
+
if (!this.client) return;
|
|
160
|
+
|
|
161
|
+
const opentasksDir = path.join(projectPath, ".opentasks");
|
|
162
|
+
|
|
163
|
+
// Check if project has .opentasks/
|
|
164
|
+
if (!fs.existsSync(opentasksDir)) return;
|
|
165
|
+
|
|
166
|
+
// Check if already connected
|
|
167
|
+
if (this.connectedProjects.has(opentasksDir)) return;
|
|
168
|
+
|
|
169
|
+
try {
|
|
170
|
+
// Read the project's config.json to get its location hash
|
|
171
|
+
const configPath = path.join(opentasksDir, "config.json");
|
|
172
|
+
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
173
|
+
const config = JSON.parse(configContent);
|
|
174
|
+
const hash = config?.location?.hash;
|
|
175
|
+
|
|
176
|
+
if (!hash) {
|
|
177
|
+
console.error(`[opentasks] No location hash in ${configPath}, skipping`);
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
// Register the location with the daemon via IPC
|
|
182
|
+
const client = this.client as any;
|
|
183
|
+
if (typeof client.call === "function") {
|
|
184
|
+
await client.call("location.register", {
|
|
185
|
+
hash,
|
|
186
|
+
opentasksPath: opentasksDir,
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
this.connectedProjects.add(opentasksDir);
|
|
191
|
+
console.error(`[opentasks] Connected to project: ${opentasksDir}`);
|
|
192
|
+
} catch (error) {
|
|
193
|
+
// Non-fatal — log and continue
|
|
194
|
+
console.error(`[opentasks] Failed to connect project ${opentasksDir}: ${error}`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
* Check if a project is already connected to the central daemon.
|
|
200
|
+
*/
|
|
201
|
+
isProjectConnected(projectPath: string): boolean {
|
|
202
|
+
const opentasksDir = path.join(projectPath, ".opentasks");
|
|
203
|
+
return this.connectedProjects.has(opentasksDir);
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
/**
|
|
207
|
+
* Get list of connected project .opentasks/ paths.
|
|
208
|
+
*/
|
|
209
|
+
getConnectedProjects(): string[] {
|
|
210
|
+
return Array.from(this.connectedProjects);
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Shut down the daemon manager.
|
|
215
|
+
*
|
|
216
|
+
* - Disconnects the client
|
|
217
|
+
* - Stops the daemon if we started it (ownsDaemon=true)
|
|
218
|
+
* - Leaves the daemon running if someone else started it
|
|
219
|
+
*/
|
|
220
|
+
async shutdown(): Promise<void> {
|
|
221
|
+
// Disconnect client
|
|
222
|
+
if (this.client) {
|
|
223
|
+
try {
|
|
224
|
+
this.client.disconnect();
|
|
225
|
+
} catch {
|
|
226
|
+
// Ignore disconnect errors
|
|
227
|
+
}
|
|
228
|
+
this.client = null;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Stop daemon only if we own it
|
|
232
|
+
if (this.ownsDaemon && this.daemon) {
|
|
233
|
+
try {
|
|
234
|
+
// Grace period to let child agents finish disconnecting from the daemon
|
|
235
|
+
await new Promise<void>(resolve => setTimeout(resolve, DAEMON_DRAIN_MS));
|
|
236
|
+
console.error("[opentasks] Stopping daemon");
|
|
237
|
+
await this.daemon.stop();
|
|
238
|
+
} catch (error) {
|
|
239
|
+
console.error(`[opentasks] Error stopping daemon: ${error}`);
|
|
240
|
+
}
|
|
241
|
+
this.daemon = null;
|
|
242
|
+
this.ownsDaemon = false;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
this.connectedProjects.clear();
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Create a DaemonManager instance.
|
|
251
|
+
*/
|
|
252
|
+
export function createDaemonManager(
|
|
253
|
+
config?: DaemonManagerConfig
|
|
254
|
+
): DaemonManager {
|
|
255
|
+
return new DaemonManager(config);
|
|
256
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenTasks Task Backend Module
|
|
3
|
+
*
|
|
4
|
+
* Integrates macro-agent's task system with OpenTasks, a graph connector
|
|
5
|
+
* for linking heterogeneous task and issue systems.
|
|
6
|
+
*
|
|
7
|
+
* Tasks are stored as OpenTasks issues with bidirectional ID mapping.
|
|
8
|
+
* Blocking dependencies use OpenTasks 'blocks' edges.
|
|
9
|
+
* The pull model leverages OpenTasks' ready query and claimed_by field.
|
|
10
|
+
*
|
|
11
|
+
* @module task/backend/opentasks
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
// Backend
|
|
15
|
+
export {
|
|
16
|
+
OpenTasksTaskBackend,
|
|
17
|
+
OpenTasksBackendError,
|
|
18
|
+
createOpenTasksTaskBackend,
|
|
19
|
+
} from "./backend.js";
|
|
20
|
+
export type { OpenTasksBackendConfig } from "./backend.js";
|
|
21
|
+
|
|
22
|
+
// Client
|
|
23
|
+
export {
|
|
24
|
+
IPCOpenTasksClient,
|
|
25
|
+
OpenTasksClientError,
|
|
26
|
+
createOpenTasksClient,
|
|
27
|
+
} from "./client.js";
|
|
28
|
+
export type {
|
|
29
|
+
OpenTasksClient,
|
|
30
|
+
OpenTasksClientConfig,
|
|
31
|
+
OpenTasksIssue,
|
|
32
|
+
OpenTasksEdge,
|
|
33
|
+
OpenTasksNodeSummary,
|
|
34
|
+
CreateIssueInput,
|
|
35
|
+
UpdateIssueInput,
|
|
36
|
+
IssueChangeType,
|
|
37
|
+
IssueChangeEvent,
|
|
38
|
+
IssueChangeCallback,
|
|
39
|
+
ClientUnsubscribe,
|
|
40
|
+
// Task lifecycle types (tools.task)
|
|
41
|
+
TaskAction,
|
|
42
|
+
TaskParams,
|
|
43
|
+
TaskResult,
|
|
44
|
+
TaskTransitionData,
|
|
45
|
+
TaskReadyData,
|
|
46
|
+
TaskAssignData,
|
|
47
|
+
TaskValidActionsData,
|
|
48
|
+
TaskNodeSummary,
|
|
49
|
+
ProviderSummary,
|
|
50
|
+
} from "./client.js";
|
|
51
|
+
|
|
52
|
+
// Daemon Manager
|
|
53
|
+
export {
|
|
54
|
+
DaemonManager,
|
|
55
|
+
createDaemonManager,
|
|
56
|
+
} from "./daemon-manager.js";
|
|
57
|
+
export type {
|
|
58
|
+
DaemonManagerConfig,
|
|
59
|
+
DaemonManagerResult,
|
|
60
|
+
} from "./daemon-manager.js";
|
|
61
|
+
|
|
62
|
+
// Mapping
|
|
63
|
+
export {
|
|
64
|
+
mapOpenTasksStatus,
|
|
65
|
+
mapTaskStatus,
|
|
66
|
+
isIssueComplete,
|
|
67
|
+
isIssueBlocked,
|
|
68
|
+
} from "./mapping.js";
|
|
69
|
+
export type { OpenTasksIssueStatus } from "./mapping.js";
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status Mapping Utilities for OpenTasks Integration
|
|
3
|
+
*
|
|
4
|
+
* Maps between OpenTasks issue statuses and macro-agent task statuses.
|
|
5
|
+
*
|
|
6
|
+
* @module task/backend/opentasks/mapping
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import type { TaskStatus } from "../../../store/types/index.js";
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* OpenTasks issue status values.
|
|
13
|
+
* These are the canonical statuses used by OpenTasks issues.
|
|
14
|
+
*/
|
|
15
|
+
export type OpenTasksIssueStatus =
|
|
16
|
+
| "open"
|
|
17
|
+
| "in_progress"
|
|
18
|
+
| "blocked"
|
|
19
|
+
| "closed";
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Map OpenTasks issue status to macro-agent task status.
|
|
23
|
+
*
|
|
24
|
+
* OpenTasks statuses:
|
|
25
|
+
* - open: Not started
|
|
26
|
+
* - in_progress: Currently being worked on
|
|
27
|
+
* - blocked: Blocked by dependencies (handled via isBlocked flag)
|
|
28
|
+
* - closed: Completed
|
|
29
|
+
*
|
|
30
|
+
* Macro-agent statuses:
|
|
31
|
+
* - pending: Not started
|
|
32
|
+
* - assigned: Assigned to an agent but not started
|
|
33
|
+
* - in_progress: Currently executing
|
|
34
|
+
* - completed: Finished successfully
|
|
35
|
+
* - failed: Finished with error
|
|
36
|
+
*/
|
|
37
|
+
export function mapOpenTasksStatus(
|
|
38
|
+
openTasksStatus: string
|
|
39
|
+
): TaskStatus {
|
|
40
|
+
switch (openTasksStatus) {
|
|
41
|
+
case "open":
|
|
42
|
+
return "pending";
|
|
43
|
+
case "in_progress":
|
|
44
|
+
return "in_progress";
|
|
45
|
+
case "blocked":
|
|
46
|
+
// Blocked issues map to pending - the isBlocked flag handles blocking
|
|
47
|
+
return "pending";
|
|
48
|
+
case "closed":
|
|
49
|
+
return "completed";
|
|
50
|
+
default:
|
|
51
|
+
return "pending";
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Map macro-agent task status to OpenTasks issue status.
|
|
57
|
+
*
|
|
58
|
+
* Note: Some task statuses don't have direct OpenTasks equivalents:
|
|
59
|
+
* - assigned: No direct equivalent (maps to open, assignee set separately)
|
|
60
|
+
* - failed: No direct equivalent (maps to closed with error in metadata)
|
|
61
|
+
*/
|
|
62
|
+
export function mapTaskStatus(taskStatus: TaskStatus): OpenTasksIssueStatus {
|
|
63
|
+
switch (taskStatus) {
|
|
64
|
+
case "pending":
|
|
65
|
+
return "open";
|
|
66
|
+
case "assigned":
|
|
67
|
+
// Assigned tasks remain open in OpenTasks; assignee field handles assignment
|
|
68
|
+
return "open";
|
|
69
|
+
case "in_progress":
|
|
70
|
+
return "in_progress";
|
|
71
|
+
case "completed":
|
|
72
|
+
return "closed";
|
|
73
|
+
case "failed":
|
|
74
|
+
// Failed tasks are closed in OpenTasks (failure tracked in metadata)
|
|
75
|
+
return "closed";
|
|
76
|
+
default:
|
|
77
|
+
return "open";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Check if an OpenTasks issue status indicates completion.
|
|
83
|
+
*/
|
|
84
|
+
export function isIssueComplete(status: string): boolean {
|
|
85
|
+
return status === "closed";
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Check if an OpenTasks issue has an explicit blocked status.
|
|
90
|
+
* Note: This is the explicit 'blocked' status, not dependency-based blocking.
|
|
91
|
+
*/
|
|
92
|
+
export function isIssueBlocked(status: string): boolean {
|
|
93
|
+
return status === "blocked";
|
|
94
|
+
}
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
* internal task system to be backed by external task management systems.
|
|
6
6
|
*
|
|
7
7
|
* @module task/backend
|
|
8
|
-
* @see s-8472 Pluggable Task Backend Integration with Sudocode
|
|
9
8
|
*/
|
|
10
9
|
|
|
11
10
|
import type {
|
|
@@ -33,8 +32,11 @@ export interface ExtendedTask extends Task {
|
|
|
33
32
|
/** True if blocked by dependencies (computed, not stored) */
|
|
34
33
|
isBlocked?: boolean;
|
|
35
34
|
|
|
36
|
-
/** Binding to external system (e.g.,
|
|
35
|
+
/** Binding to external system (e.g., OpenTasks issue ID "i-xxxx") */
|
|
37
36
|
external_id?: string;
|
|
37
|
+
|
|
38
|
+
/** Source project location (e.g., opentasks path or URI) for federated tasks */
|
|
39
|
+
source_location?: string;
|
|
38
40
|
}
|
|
39
41
|
|
|
40
42
|
// =============================================================================
|
|
@@ -54,7 +56,7 @@ export interface CreateTaskOptions {
|
|
|
54
56
|
/** Optional parent task for subtask hierarchy */
|
|
55
57
|
parent_task?: TaskId;
|
|
56
58
|
|
|
57
|
-
/** Optional binding to external system (e.g.,
|
|
59
|
+
/** Optional binding to external system (e.g., OpenTasks issue ID) */
|
|
58
60
|
external_id?: string;
|
|
59
61
|
|
|
60
62
|
/** Optional tags for classification and filtering (pull model) */
|
|
@@ -243,11 +245,13 @@ export type Unsubscribe = () => void;
|
|
|
243
245
|
*
|
|
244
246
|
* Abstraction over task storage allowing different implementations:
|
|
245
247
|
* - InMemoryTaskBackend - Current behavior (default)
|
|
246
|
-
* -
|
|
247
|
-
* - Future: LinearTaskBackend, JiraTaskBackend, etc.
|
|
248
|
+
* - OpenTasksTaskBackend - Backed by OpenTasks graph
|
|
248
249
|
*/
|
|
249
250
|
export interface TaskBackend {
|
|
250
251
|
// ─── Lifecycle ───────────────────────────────────────────────
|
|
252
|
+
/** Gracefully close the backend. After close(), write operations may throw. */
|
|
253
|
+
close?(): Promise<void>;
|
|
254
|
+
|
|
251
255
|
/** Create a new task */
|
|
252
256
|
create(options: CreateTaskOptions): Promise<ExtendedTask>;
|
|
253
257
|
|
|
@@ -331,6 +335,16 @@ export interface TaskBackend {
|
|
|
331
335
|
/** Get agent assignment history for a task */
|
|
332
336
|
getAgentHistory(taskId: TaskId): Promise<AgentHistoryEntry[]>;
|
|
333
337
|
|
|
338
|
+
// ─── External Sync ──────────────────────────────────────────
|
|
339
|
+
/**
|
|
340
|
+
* Sync a task transition that happened externally (e.g., via opentasks daemon).
|
|
341
|
+
* Updates the internal store without re-syncing to the external system.
|
|
342
|
+
* @param externalId - The external system's task ID (e.g., opentasks issue ID)
|
|
343
|
+
* @param action - The transition action (e.g., "complete", "start", "close")
|
|
344
|
+
* @param agentId - The agent that performed the transition
|
|
345
|
+
*/
|
|
346
|
+
syncExternalTransition?(externalId: string, action: string, agentId?: string): Promise<void>;
|
|
347
|
+
|
|
334
348
|
// ─── Event Subscriptions ─────────────────────────────────────
|
|
335
349
|
/** Subscribe to all task changes */
|
|
336
350
|
onTaskChange(callback: TaskChangeCallback): Unsubscribe;
|
|
@@ -360,15 +374,6 @@ export interface MCPToolDefinition {
|
|
|
360
374
|
handler: (params: unknown) => Promise<unknown>;
|
|
361
375
|
}
|
|
362
376
|
|
|
363
|
-
/**
|
|
364
|
-
* Task tool mode
|
|
365
|
-
*/
|
|
366
|
-
export type TaskToolMode =
|
|
367
|
-
| "abstract" // Always use generic task tools (create_task, etc.)
|
|
368
|
-
| "native" // Use backend-native tools (upsert_issue for sudocode)
|
|
369
|
-
| "both" // Expose both tool sets
|
|
370
|
-
| "auto"; // Backend decides (default)
|
|
371
|
-
|
|
372
377
|
/**
|
|
373
378
|
* Task Tool Provider Interface
|
|
374
379
|
*
|
|
@@ -394,57 +399,34 @@ export interface InMemoryBackendConfig {
|
|
|
394
399
|
}
|
|
395
400
|
|
|
396
401
|
/**
|
|
397
|
-
*
|
|
398
|
-
*/
|
|
399
|
-
export type ExecutionTrackingConfig =
|
|
400
|
-
| { mode: "none" } // No execution records
|
|
401
|
-
| { mode: "bound-only" } // Only tasks with external binding (default)
|
|
402
|
-
| { mode: "all" } // All agent runs
|
|
403
|
-
| { mode: "filter"; filter: ExecutionFilter }; // Custom filter
|
|
404
|
-
|
|
405
|
-
/**
|
|
406
|
-
* Execution filter options
|
|
407
|
-
*/
|
|
408
|
-
export interface ExecutionFilter {
|
|
409
|
-
/** Only create executions for these agent roles */
|
|
410
|
-
roles?: string[];
|
|
411
|
-
|
|
412
|
-
/** Only when task has external binding */
|
|
413
|
-
requireExternalBinding?: boolean;
|
|
414
|
-
|
|
415
|
-
/** Exclude coordination-only agents (no code changes) */
|
|
416
|
-
excludeCoordinationOnly?: boolean;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
/**
|
|
420
|
-
* Sudocode backend configuration
|
|
402
|
+
* OpenTasks backend configuration
|
|
421
403
|
*/
|
|
422
|
-
export interface
|
|
423
|
-
type: "
|
|
404
|
+
export interface OpenTasksBackendConfig {
|
|
405
|
+
type: "opentasks";
|
|
424
406
|
|
|
425
|
-
/** Path to
|
|
426
|
-
|
|
407
|
+
/** Path to the OpenTasks daemon socket (auto-discovered if not set) */
|
|
408
|
+
socketPath?: string;
|
|
427
409
|
|
|
428
|
-
/**
|
|
429
|
-
|
|
410
|
+
/** Whether to sync status changes to OpenTasks (default: true) */
|
|
411
|
+
syncStatus?: boolean;
|
|
430
412
|
|
|
431
|
-
/**
|
|
432
|
-
|
|
413
|
+
/** Source label for issues created by this backend (default: "macro-agent") */
|
|
414
|
+
sourceLabel?: string;
|
|
433
415
|
|
|
434
|
-
/**
|
|
435
|
-
|
|
416
|
+
/** Auto-start the central opentasks daemon (default: true) */
|
|
417
|
+
autoStart?: boolean;
|
|
436
418
|
|
|
437
|
-
/**
|
|
438
|
-
|
|
419
|
+
/** Central daemon location (default: ~/.multiagent/opentasks) */
|
|
420
|
+
centralPath?: string;
|
|
439
421
|
|
|
440
|
-
/**
|
|
441
|
-
|
|
422
|
+
/** Auto-connect project .opentasks/ dirs on agent spawn (default: true) */
|
|
423
|
+
connectOnSpawn?: boolean;
|
|
442
424
|
}
|
|
443
425
|
|
|
444
426
|
/**
|
|
445
427
|
* Task backend configuration
|
|
446
428
|
*/
|
|
447
|
-
export type TaskBackendConfig = InMemoryBackendConfig |
|
|
429
|
+
export type TaskBackendConfig = InMemoryBackendConfig | OpenTasksBackendConfig;
|
|
448
430
|
|
|
449
431
|
/**
|
|
450
432
|
* Macro-agent task configuration
|
|
@@ -452,9 +434,6 @@ export type TaskBackendConfig = InMemoryBackendConfig | SudocodeBackendConfig;
|
|
|
452
434
|
export interface TaskConfig {
|
|
453
435
|
/** Task backend configuration */
|
|
454
436
|
backend: TaskBackendConfig;
|
|
455
|
-
|
|
456
|
-
/** Task tool mode (default: 'auto') */
|
|
457
|
-
toolMode?: TaskToolMode;
|
|
458
437
|
}
|
|
459
438
|
|
|
460
439
|
// =============================================================================
|
|
@@ -465,18 +444,15 @@ export interface TaskConfig {
|
|
|
465
444
|
* Default task configuration
|
|
466
445
|
*/
|
|
467
446
|
export const DEFAULT_TASK_CONFIG: TaskConfig = {
|
|
468
|
-
backend: { type: "
|
|
469
|
-
toolMode: "auto",
|
|
447
|
+
backend: { type: "opentasks" },
|
|
470
448
|
};
|
|
471
449
|
|
|
472
450
|
/**
|
|
473
|
-
* Default
|
|
451
|
+
* Default OpenTasks backend configuration
|
|
474
452
|
*/
|
|
475
|
-
export const
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
autoLinkSpecs: true,
|
|
481
|
-
toolMode: "mapped",
|
|
453
|
+
export const DEFAULT_OPENTASKS_CONFIG: Omit<OpenTasksBackendConfig, "type"> = {
|
|
454
|
+
syncStatus: true,
|
|
455
|
+
sourceLabel: "macro-agent",
|
|
456
|
+
autoStart: true,
|
|
457
|
+
connectOnSpawn: true,
|
|
482
458
|
};
|