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
package/src/metrics/metrics.ts
CHANGED
|
@@ -65,20 +65,20 @@ describe("Role Config Loader", () => {
|
|
|
65
65
|
it("CONFIG-PATH-01: getProjectConfigPath returns correct path", () => {
|
|
66
66
|
const projectPath = "/my/project";
|
|
67
67
|
const configPath = getProjectConfigPath(projectPath);
|
|
68
|
-
expect(configPath).toBe("/my/project/.
|
|
68
|
+
expect(configPath).toBe("/my/project/.multiagent/roles.json");
|
|
69
69
|
});
|
|
70
70
|
|
|
71
71
|
it("CONFIG-PATH-02: getProjectConfigPath uses cwd when no path provided", () => {
|
|
72
72
|
const configPath = getProjectConfigPath();
|
|
73
73
|
expect(configPath).toBe(
|
|
74
|
-
path.join(process.cwd(), ".
|
|
74
|
+
path.join(process.cwd(), ".multiagent", "roles.json")
|
|
75
75
|
);
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
it("CONFIG-PATH-03: getUserConfigPath returns path in home directory", () => {
|
|
79
79
|
const configPath = getUserConfigPath();
|
|
80
80
|
expect(configPath).toBe(
|
|
81
|
-
path.join(os.homedir(), ".
|
|
81
|
+
path.join(os.homedir(), ".multiagent", "roles.json")
|
|
82
82
|
);
|
|
83
83
|
});
|
|
84
84
|
});
|
|
@@ -260,7 +260,7 @@ describe("Role Config Loader", () => {
|
|
|
260
260
|
describe("Project/User Config Loading", () => {
|
|
261
261
|
it("CONFIG-PROJECT-01: loadProjectConfig uses correct path", () => {
|
|
262
262
|
const projectPath = tempDir;
|
|
263
|
-
const configDir = path.join(projectPath, ".
|
|
263
|
+
const configDir = path.join(projectPath, ".multiagent");
|
|
264
264
|
fs.mkdirSync(configDir, { recursive: true });
|
|
265
265
|
|
|
266
266
|
const configPath = path.join(configDir, "roles.json");
|
|
@@ -280,7 +280,7 @@ describe("Role Config Loader", () => {
|
|
|
280
280
|
|
|
281
281
|
it("CONFIG-ALL-01: loadAllConfigs combines user and project configs", () => {
|
|
282
282
|
// Create project config
|
|
283
|
-
const projectConfigDir = path.join(tempDir, "project", ".
|
|
283
|
+
const projectConfigDir = path.join(tempDir, "project", ".multiagent");
|
|
284
284
|
fs.mkdirSync(projectConfigDir, { recursive: true });
|
|
285
285
|
writeConfigFile(path.join(projectConfigDir, "roles.json"), {
|
|
286
286
|
roles: {
|
|
@@ -289,7 +289,7 @@ describe("Role Config Loader", () => {
|
|
|
289
289
|
});
|
|
290
290
|
|
|
291
291
|
// Create user config
|
|
292
|
-
const userConfigDir = path.join(tempDir, "user", ".
|
|
292
|
+
const userConfigDir = path.join(tempDir, "user", ".multiagent");
|
|
293
293
|
fs.mkdirSync(userConfigDir, { recursive: true });
|
|
294
294
|
writeConfigFile(path.join(userConfigDir, "roles.json"), {
|
|
295
295
|
roles: {
|
|
@@ -363,7 +363,7 @@ describe("Role Config Loader", () => {
|
|
|
363
363
|
|
|
364
364
|
it("CONFIG-REG-03: Registry with autoLoad loads configs on construction", () => {
|
|
365
365
|
// Create project config
|
|
366
|
-
const projectConfigDir = path.join(tempDir, ".
|
|
366
|
+
const projectConfigDir = path.join(tempDir, ".multiagent");
|
|
367
367
|
fs.mkdirSync(projectConfigDir, { recursive: true });
|
|
368
368
|
writeConfigFile(path.join(projectConfigDir, "roles.json"), {
|
|
369
369
|
roles: {
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
TASK_CAPABILITIES,
|
|
12
12
|
AGENT_CAPABILITIES,
|
|
13
13
|
MSG_CAPABILITIES,
|
|
14
|
+
WORKSPACE_CAPABILITIES,
|
|
14
15
|
} from "../capabilities.js";
|
|
15
16
|
|
|
16
17
|
/**
|
|
@@ -42,6 +43,7 @@ export const CoordinatorRole: RoleDefinition = {
|
|
|
42
43
|
MSG_CAPABILITIES.SEND,
|
|
43
44
|
MSG_CAPABILITIES.BROADCAST,
|
|
44
45
|
MSG_CAPABILITIES.SUBSCRIBE,
|
|
46
|
+
WORKSPACE_CAPABILITIES.STREAM,
|
|
45
47
|
// Note: lifecycle.done is optional, configured per-coordinator
|
|
46
48
|
],
|
|
47
49
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
AGENT_CAPABILITIES,
|
|
13
13
|
LIFECYCLE_CAPABILITIES,
|
|
14
14
|
MSG_CAPABILITIES,
|
|
15
|
+
WORKSPACE_CAPABILITIES,
|
|
15
16
|
} from "../capabilities.js";
|
|
16
17
|
|
|
17
18
|
/**
|
|
@@ -39,6 +40,7 @@ export const IntegratorRole: RoleDefinition = {
|
|
|
39
40
|
LIFECYCLE_CAPABILITIES.DONE,
|
|
40
41
|
MSG_CAPABILITIES.SEND,
|
|
41
42
|
MSG_CAPABILITIES.SUBSCRIBE,
|
|
43
|
+
WORKSPACE_CAPABILITIES.INTEGRATE,
|
|
42
44
|
],
|
|
43
45
|
|
|
44
46
|
workspace: {
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
LIFECYCLE_CAPABILITIES,
|
|
14
14
|
AGENT_CAPABILITIES,
|
|
15
15
|
MSG_CAPABILITIES,
|
|
16
|
+
WORKSPACE_CAPABILITIES,
|
|
16
17
|
} from "../capabilities.js";
|
|
17
18
|
|
|
18
19
|
/** 30 minutes in milliseconds (stale timeout) */
|
|
@@ -45,6 +46,7 @@ export const WorkerRole: RoleDefinition = {
|
|
|
45
46
|
LIFECYCLE_CAPABILITIES.DONE,
|
|
46
47
|
AGENT_CAPABILITIES.SPAWN_WORKER,
|
|
47
48
|
MSG_CAPABILITIES.SEND,
|
|
49
|
+
WORKSPACE_CAPABILITIES.WORKTREE,
|
|
48
50
|
],
|
|
49
51
|
|
|
50
52
|
workspace: {
|
|
@@ -100,6 +102,7 @@ export const ResolverWorkerRole: RoleDefinition = {
|
|
|
100
102
|
LIFECYCLE_CAPABILITIES.DONE,
|
|
101
103
|
AGENT_CAPABILITIES.SPAWN_WORKER,
|
|
102
104
|
MSG_CAPABILITIES.SEND,
|
|
105
|
+
WORKSPACE_CAPABILITIES.WORKTREE,
|
|
103
106
|
],
|
|
104
107
|
|
|
105
108
|
// Inherits workspace from worker
|
|
@@ -66,6 +66,13 @@ export const MSG_CAPABILITIES = {
|
|
|
66
66
|
SUBSCRIBE: "msg.subscribe" as const,
|
|
67
67
|
};
|
|
68
68
|
|
|
69
|
+
/** Workspace capabilities */
|
|
70
|
+
export const WORKSPACE_CAPABILITIES = {
|
|
71
|
+
WORKTREE: "workspace.worktree" as const, // Gets own git worktree; done() submits to merge queue
|
|
72
|
+
STREAM: "workspace.stream" as const, // Creates integration stream at spawn
|
|
73
|
+
INTEGRATE: "workspace.integrate" as const, // Joins stream; processes merge queue entries
|
|
74
|
+
};
|
|
75
|
+
|
|
69
76
|
/** Wildcard capability */
|
|
70
77
|
export const WILDCARD_CAPABILITY = "*" as const;
|
|
71
78
|
|
|
@@ -112,15 +119,29 @@ export const ALL_CAPABILITIES: Set<Capability> = new Set([
|
|
|
112
119
|
MSG_CAPABILITIES.SEND,
|
|
113
120
|
MSG_CAPABILITIES.BROADCAST,
|
|
114
121
|
MSG_CAPABILITIES.SUBSCRIBE,
|
|
122
|
+
// Workspace
|
|
123
|
+
WORKSPACE_CAPABILITIES.WORKTREE,
|
|
124
|
+
WORKSPACE_CAPABILITIES.STREAM,
|
|
125
|
+
WORKSPACE_CAPABILITIES.INTEGRATE,
|
|
115
126
|
// Wildcard
|
|
116
127
|
WILDCARD_CAPABILITY,
|
|
117
128
|
]);
|
|
118
129
|
|
|
119
130
|
/**
|
|
120
|
-
* Check if a capability string is known
|
|
131
|
+
* Check if a capability string is known.
|
|
132
|
+
* Accepts exact matches from ALL_CAPABILITIES, plus dynamic `agent.spawn.*`
|
|
133
|
+
* patterns generated by team-defined spawn rules (e.g., "agent.spawn.grinder").
|
|
121
134
|
*/
|
|
122
135
|
export function isKnownCapability(capability: string): capability is Capability {
|
|
123
|
-
|
|
136
|
+
if (ALL_CAPABILITIES.has(capability as Capability)) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
// Team-defined roles generate dynamic agent.spawn.<role> capabilities
|
|
140
|
+
// via TeamLoader spawn_rules translation (RD3). These are valid at runtime.
|
|
141
|
+
if (capability.startsWith("agent.spawn.")) {
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
return false;
|
|
124
145
|
}
|
|
125
146
|
|
|
126
147
|
// =============================================================================
|
|
@@ -156,11 +177,11 @@ export const CAPABILITY_TOOL_MAP: CapabilityToolMap = {
|
|
|
156
177
|
// Lifecycle operations
|
|
157
178
|
[LIFECYCLE_CAPABILITIES.DONE]: ["done"],
|
|
158
179
|
|
|
159
|
-
// Task operations (via
|
|
160
|
-
[TASK_CAPABILITIES.CREATE]: ["
|
|
161
|
-
[TASK_CAPABILITIES.ASSIGN]: ["
|
|
162
|
-
[TASK_CAPABILITIES.UPDATE]: ["
|
|
163
|
-
[TASK_CAPABILITIES.CLOSE]: ["
|
|
180
|
+
// Task operations (via TaskBackend + OpenTasks tools)
|
|
181
|
+
[TASK_CAPABILITIES.CREATE]: ["create_task"],
|
|
182
|
+
[TASK_CAPABILITIES.ASSIGN]: ["assign_task", "task"],
|
|
183
|
+
[TASK_CAPABILITIES.UPDATE]: ["update_task", "task", "link", "annotate"],
|
|
184
|
+
[TASK_CAPABILITIES.CLOSE]: ["close_task", "task"],
|
|
164
185
|
[TASK_CAPABILITIES.CLAIM]: ["claim_task", "unclaim_task", "list_claimable_tasks"],
|
|
165
186
|
|
|
166
187
|
// Execution operations
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Role Configuration File Loader
|
|
3
3
|
*
|
|
4
4
|
* Loads role configurations from:
|
|
5
|
-
* - Project-level: .
|
|
6
|
-
* - User-level: ~/.
|
|
5
|
+
* - Project-level: .multiagent/roles.json
|
|
6
|
+
* - User-level: ~/.multiagent/roles.json
|
|
7
7
|
*
|
|
8
8
|
* Supports layered override with project > user > built-in precedence.
|
|
9
9
|
*
|
|
@@ -103,10 +103,10 @@ export interface LoadResult {
|
|
|
103
103
|
export const CONFIG_FILE_NAME = "roles.json";
|
|
104
104
|
|
|
105
105
|
/** Project-level config directory */
|
|
106
|
-
export const PROJECT_CONFIG_DIR = ".
|
|
106
|
+
export const PROJECT_CONFIG_DIR = ".multiagent";
|
|
107
107
|
|
|
108
108
|
/** User-level config directory */
|
|
109
|
-
export const USER_CONFIG_DIR = ".
|
|
109
|
+
export const USER_CONFIG_DIR = ".multiagent";
|
|
110
110
|
|
|
111
111
|
// =============================================================================
|
|
112
112
|
// Path Resolution
|
|
@@ -116,7 +116,7 @@ export const USER_CONFIG_DIR = ".macro-agent";
|
|
|
116
116
|
* Get the project-level config file path
|
|
117
117
|
*
|
|
118
118
|
* @param projectPath - Project root directory (default: process.cwd())
|
|
119
|
-
* @returns Path to .
|
|
119
|
+
* @returns Path to .multiagent/roles.json
|
|
120
120
|
*/
|
|
121
121
|
export function getProjectConfigPath(projectPath?: string): string {
|
|
122
122
|
const root = projectPath ?? process.cwd();
|
|
@@ -126,10 +126,11 @@ export function getProjectConfigPath(projectPath?: string): string {
|
|
|
126
126
|
/**
|
|
127
127
|
* Get the user-level config file path
|
|
128
128
|
*
|
|
129
|
-
* @returns Path to ~/.
|
|
129
|
+
* @returns Path to ~/.multiagent/roles.json (or MACRO_AGENT_HOME/roles.json)
|
|
130
130
|
*/
|
|
131
131
|
export function getUserConfigPath(): string {
|
|
132
|
-
|
|
132
|
+
const globalDir = process.env.MACRO_AGENT_HOME || path.join(os.homedir(), USER_CONFIG_DIR);
|
|
133
|
+
return path.join(globalDir, CONFIG_FILE_NAME);
|
|
133
134
|
}
|
|
134
135
|
|
|
135
136
|
// =============================================================================
|
package/src/roles/registry.ts
CHANGED
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Role Registry Implementation
|
|
3
3
|
*
|
|
4
4
|
* Manages role definitions with layered resolution:
|
|
5
|
-
* - Project-level (.
|
|
6
|
-
* - User-level (~/.
|
|
5
|
+
* - Project-level (.multiagent/roles)
|
|
6
|
+
* - User-level (~/.multiagent/roles)
|
|
7
7
|
* - Built-in (framework)
|
|
8
8
|
*/
|
|
9
9
|
|
package/src/roles/types.ts
CHANGED
|
@@ -54,6 +54,12 @@ export type ExecCapability =
|
|
|
54
54
|
/** Communication capabilities */
|
|
55
55
|
export type MsgCapability = "msg.send" | "msg.broadcast" | "msg.subscribe";
|
|
56
56
|
|
|
57
|
+
/** Workspace capabilities */
|
|
58
|
+
export type WorkspaceCapability =
|
|
59
|
+
| "workspace.worktree"
|
|
60
|
+
| "workspace.stream"
|
|
61
|
+
| "workspace.integrate";
|
|
62
|
+
|
|
57
63
|
/** All capability types combined, plus wildcard */
|
|
58
64
|
export type Capability =
|
|
59
65
|
| FileCapability
|
|
@@ -63,6 +69,7 @@ export type Capability =
|
|
|
63
69
|
| TaskCapability
|
|
64
70
|
| ExecCapability
|
|
65
71
|
| MsgCapability
|
|
72
|
+
| WorkspaceCapability
|
|
66
73
|
| "*"; // Wildcard for all capabilities
|
|
67
74
|
|
|
68
75
|
// =============================================================================
|
|
@@ -19,6 +19,13 @@ function getRandomPort(): number {
|
|
|
19
19
|
return 10000 + Math.floor(Math.random() * 50000);
|
|
20
20
|
}
|
|
21
21
|
|
|
22
|
+
const TEST_TOKEN = "test-server-token-for-unit-tests";
|
|
23
|
+
|
|
24
|
+
/** Build a WebSocket URL with auth token query param */
|
|
25
|
+
function wsUrl(port: number, path: string): string {
|
|
26
|
+
return `ws://localhost:${port}${path}?token=${TEST_TOKEN}`;
|
|
27
|
+
}
|
|
28
|
+
|
|
22
29
|
describe("createCombinedServer with MAP", () => {
|
|
23
30
|
let server: CombinedServer;
|
|
24
31
|
let services: CombinedServerServices;
|
|
@@ -33,6 +40,7 @@ describe("createCombinedServer with MAP", () => {
|
|
|
33
40
|
get: vi.fn().mockReturnValue(null),
|
|
34
41
|
list: vi.fn().mockReturnValue([]),
|
|
35
42
|
getChildren: vi.fn().mockReturnValue([]),
|
|
43
|
+
onLifecycleEvent: vi.fn(),
|
|
36
44
|
} as unknown as AgentManager,
|
|
37
45
|
eventStore: {
|
|
38
46
|
append: vi.fn(),
|
|
@@ -64,7 +72,7 @@ describe("createCombinedServer with MAP", () => {
|
|
|
64
72
|
|
|
65
73
|
describe("MAP protocol integration", () => {
|
|
66
74
|
it("starts with MAP adapter enabled by default", async () => {
|
|
67
|
-
server = createCombinedServer(services, { port });
|
|
75
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
68
76
|
await server.start();
|
|
69
77
|
|
|
70
78
|
expect(server.mapAdapter).toBeDefined();
|
|
@@ -72,10 +80,10 @@ describe("createCombinedServer with MAP", () => {
|
|
|
72
80
|
});
|
|
73
81
|
|
|
74
82
|
it("accepts MAP connections on /map", async () => {
|
|
75
|
-
server = createCombinedServer(services, { port });
|
|
83
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
76
84
|
await server.start();
|
|
77
85
|
|
|
78
|
-
const ws = new WebSocket(
|
|
86
|
+
const ws = new WebSocket(wsUrl(port, "/map"));
|
|
79
87
|
|
|
80
88
|
await new Promise<void>((resolve, reject) => {
|
|
81
89
|
const timeout = setTimeout(() => reject(new Error("Connection timeout")), 2000);
|
|
@@ -98,10 +106,10 @@ describe("createCombinedServer with MAP", () => {
|
|
|
98
106
|
}, 5000);
|
|
99
107
|
|
|
100
108
|
it("uses custom MAP path", async () => {
|
|
101
|
-
server = createCombinedServer(services, { port, mapPath: "/custom-map" });
|
|
109
|
+
server = createCombinedServer(services, { port, mapPath: "/custom-map", serverToken: TEST_TOKEN });
|
|
102
110
|
await server.start();
|
|
103
111
|
|
|
104
|
-
const ws = new WebSocket(
|
|
112
|
+
const ws = new WebSocket(wsUrl(port, "/custom-map"));
|
|
105
113
|
|
|
106
114
|
await new Promise<void>((resolve, reject) => {
|
|
107
115
|
const timeout = setTimeout(() => reject(new Error("Connection timeout")), 2000);
|
|
@@ -124,14 +132,14 @@ describe("createCombinedServer with MAP", () => {
|
|
|
124
132
|
}, 5000);
|
|
125
133
|
|
|
126
134
|
it("can disable MAP protocol", async () => {
|
|
127
|
-
server = createCombinedServer(services, { port, disableMap: true });
|
|
135
|
+
server = createCombinedServer(services, { port, disableMap: true, serverToken: TEST_TOKEN });
|
|
128
136
|
await server.start();
|
|
129
137
|
|
|
130
138
|
expect(server.mapAdapter).toBeUndefined();
|
|
131
139
|
expect(server.getMAPConnectionCount()).toBe(0);
|
|
132
140
|
|
|
133
|
-
// Connection to /map should fail
|
|
134
|
-
const ws = new WebSocket(
|
|
141
|
+
// Connection to /map should fail (either 401 without token or 404)
|
|
142
|
+
const ws = new WebSocket(wsUrl(port, "/map"));
|
|
135
143
|
|
|
136
144
|
await new Promise<void>((resolve) => {
|
|
137
145
|
ws.on("error", () => resolve());
|
|
@@ -142,7 +150,7 @@ describe("createCombinedServer with MAP", () => {
|
|
|
142
150
|
}, 5000);
|
|
143
151
|
|
|
144
152
|
it("stops MAP adapter on shutdown", async () => {
|
|
145
|
-
server = createCombinedServer(services, { port });
|
|
153
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
146
154
|
await server.start();
|
|
147
155
|
|
|
148
156
|
expect(server.mapAdapter?.isRunning()).toBe(true);
|
|
@@ -155,7 +163,7 @@ describe("createCombinedServer with MAP", () => {
|
|
|
155
163
|
|
|
156
164
|
describe("health endpoint", () => {
|
|
157
165
|
it("includes map_connections in health response", async () => {
|
|
158
|
-
server = createCombinedServer(services, { port });
|
|
166
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
159
167
|
await server.start();
|
|
160
168
|
|
|
161
169
|
const response = await fetch(`http://localhost:${port}/health`);
|
|
@@ -169,7 +177,7 @@ describe("createCombinedServer with MAP", () => {
|
|
|
169
177
|
});
|
|
170
178
|
|
|
171
179
|
it("shows 0 map_connections when MAP is disabled", async () => {
|
|
172
|
-
server = createCombinedServer(services, { port, disableMap: true });
|
|
180
|
+
server = createCombinedServer(services, { port, disableMap: true, serverToken: TEST_TOKEN });
|
|
173
181
|
await server.start();
|
|
174
182
|
|
|
175
183
|
const response = await fetch(`http://localhost:${port}/health`);
|
|
@@ -179,16 +187,81 @@ describe("createCombinedServer with MAP", () => {
|
|
|
179
187
|
});
|
|
180
188
|
});
|
|
181
189
|
|
|
190
|
+
describe("authentication", () => {
|
|
191
|
+
it("rejects WebSocket connections without token", async () => {
|
|
192
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
193
|
+
await server.start();
|
|
194
|
+
|
|
195
|
+
const ws = new WebSocket(`ws://localhost:${port}/map`);
|
|
196
|
+
|
|
197
|
+
await new Promise<void>((resolve) => {
|
|
198
|
+
ws.on("error", () => resolve());
|
|
199
|
+
ws.on("close", () => resolve());
|
|
200
|
+
});
|
|
201
|
+
|
|
202
|
+
expect(server.getMAPConnectionCount()).toBe(0);
|
|
203
|
+
}, 5000);
|
|
204
|
+
|
|
205
|
+
it("rejects WebSocket connections with wrong token", async () => {
|
|
206
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
207
|
+
await server.start();
|
|
208
|
+
|
|
209
|
+
const ws = new WebSocket(`ws://localhost:${port}/map?token=wrong-token`);
|
|
210
|
+
|
|
211
|
+
await new Promise<void>((resolve) => {
|
|
212
|
+
ws.on("error", () => resolve());
|
|
213
|
+
ws.on("close", () => resolve());
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
expect(server.getMAPConnectionCount()).toBe(0);
|
|
217
|
+
}, 5000);
|
|
218
|
+
|
|
219
|
+
it("exposes serverToken on the server object", () => {
|
|
220
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
221
|
+
expect(server.serverToken).toBe(TEST_TOKEN);
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
it("has no serverToken when not provided (auth disabled by default)", () => {
|
|
225
|
+
server = createCombinedServer(services, { port });
|
|
226
|
+
expect(server.serverToken).toBeUndefined();
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
it("allows connections without token when noAuth is true", async () => {
|
|
230
|
+
server = createCombinedServer(services, { port, noAuth: true });
|
|
231
|
+
await server.start();
|
|
232
|
+
|
|
233
|
+
expect(server.serverToken).toBeUndefined();
|
|
234
|
+
|
|
235
|
+
// Should connect without any token
|
|
236
|
+
const ws = new WebSocket(`ws://localhost:${port}/map`);
|
|
237
|
+
|
|
238
|
+
await new Promise<void>((resolve, reject) => {
|
|
239
|
+
const timeout = setTimeout(() => reject(new Error("Connection timeout")), 2000);
|
|
240
|
+
ws.on("open", () => {
|
|
241
|
+
clearTimeout(timeout);
|
|
242
|
+
resolve();
|
|
243
|
+
});
|
|
244
|
+
ws.on("error", (err) => {
|
|
245
|
+
clearTimeout(timeout);
|
|
246
|
+
reject(err);
|
|
247
|
+
});
|
|
248
|
+
});
|
|
249
|
+
|
|
250
|
+
expect(server.getMAPConnectionCount()).toBe(1);
|
|
251
|
+
ws.close();
|
|
252
|
+
}, 5000);
|
|
253
|
+
});
|
|
254
|
+
|
|
182
255
|
describe("connection counts", () => {
|
|
183
256
|
it("tracks MAP connections separately", async () => {
|
|
184
|
-
server = createCombinedServer(services, { port });
|
|
257
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
185
258
|
await server.start();
|
|
186
259
|
|
|
187
260
|
expect(server.getACPConnectionCount()).toBe(0);
|
|
188
261
|
expect(server.getMAPConnectionCount()).toBe(0);
|
|
189
262
|
|
|
190
263
|
// Open MAP connection
|
|
191
|
-
const mapWs = new WebSocket(
|
|
264
|
+
const mapWs = new WebSocket(wsUrl(port, "/map"));
|
|
192
265
|
await new Promise<void>((resolve, reject) => {
|
|
193
266
|
const timeout = setTimeout(() => reject(new Error("Timeout")), 2000);
|
|
194
267
|
mapWs.on("open", () => {
|
|
@@ -212,10 +285,10 @@ describe("createCombinedServer with MAP", () => {
|
|
|
212
285
|
|
|
213
286
|
describe("existing functionality preserved", () => {
|
|
214
287
|
it("accepts ACP connections on /acp", async () => {
|
|
215
|
-
server = createCombinedServer(services, { port });
|
|
288
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
216
289
|
await server.start();
|
|
217
290
|
|
|
218
|
-
const ws = new WebSocket(
|
|
291
|
+
const ws = new WebSocket(wsUrl(port, "/acp"));
|
|
219
292
|
|
|
220
293
|
await new Promise<void>((resolve, reject) => {
|
|
221
294
|
const timeout = setTimeout(() => reject(new Error("Connection timeout")), 2000);
|
|
@@ -237,10 +310,10 @@ describe("createCombinedServer with MAP", () => {
|
|
|
237
310
|
}, 5000);
|
|
238
311
|
|
|
239
312
|
it("accepts API WebSocket connections on /api/ws", async () => {
|
|
240
|
-
server = createCombinedServer(services, { port });
|
|
313
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
241
314
|
await server.start();
|
|
242
315
|
|
|
243
|
-
const ws = new WebSocket(
|
|
316
|
+
const ws = new WebSocket(wsUrl(port, "/api/ws"));
|
|
244
317
|
|
|
245
318
|
await new Promise<void>((resolve, reject) => {
|
|
246
319
|
const timeout = setTimeout(() => reject(new Error("Connection timeout")), 2000);
|
|
@@ -258,10 +331,10 @@ describe("createCombinedServer with MAP", () => {
|
|
|
258
331
|
}, 5000);
|
|
259
332
|
|
|
260
333
|
it("rejects connections on unknown paths", async () => {
|
|
261
|
-
server = createCombinedServer(services, { port });
|
|
334
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
262
335
|
await server.start();
|
|
263
336
|
|
|
264
|
-
const ws = new WebSocket(
|
|
337
|
+
const ws = new WebSocket(wsUrl(port, "/unknown"));
|
|
265
338
|
|
|
266
339
|
await new Promise<void>((resolve) => {
|
|
267
340
|
ws.on("error", () => resolve());
|
|
@@ -275,12 +348,12 @@ describe("createCombinedServer with MAP", () => {
|
|
|
275
348
|
|
|
276
349
|
describe("server properties", () => {
|
|
277
350
|
it("exposes mapAdapter when enabled", () => {
|
|
278
|
-
server = createCombinedServer(services, { port });
|
|
351
|
+
server = createCombinedServer(services, { port, serverToken: TEST_TOKEN });
|
|
279
352
|
expect(server.mapAdapter).toBeDefined();
|
|
280
353
|
});
|
|
281
354
|
|
|
282
355
|
it("mapAdapter is undefined when disabled", () => {
|
|
283
|
-
server = createCombinedServer(services, { port, disableMap: true });
|
|
356
|
+
server = createCombinedServer(services, { port, disableMap: true, serverToken: TEST_TOKEN });
|
|
284
357
|
expect(server.mapAdapter).toBeUndefined();
|
|
285
358
|
});
|
|
286
359
|
});
|