maestro-flow 0.3.14 → 0.3.16
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/commands/maestro-amend.md +300 -0
- package/.claude/commands/maestro-analyze.md +1 -49
- package/.claude/commands/maestro-composer.md +354 -0
- package/.claude/commands/maestro-execute.md +2 -56
- package/.claude/commands/maestro-fork.md +3 -50
- package/.claude/commands/maestro-merge.md +2 -26
- package/.claude/commands/maestro-milestone-audit.md +1 -5
- package/.claude/commands/maestro-milestone-complete.md +1 -7
- package/.claude/commands/maestro-plan.md +6 -127
- package/.claude/commands/maestro-player.md +404 -0
- package/.claude/commands/maestro-roadmap.md +3 -101
- package/.claude/commands/maestro-spec-generate.md +1 -25
- package/.claude/commands/maestro-ui-design.md +14 -73
- package/.claude/commands/maestro-verify.md +1 -32
- package/.claude/commands/maestro.md +13 -30
- package/.claude/commands/manage-harvest.md +7 -44
- package/.claude/commands/manage-knowhow-capture.md +193 -0
- package/.claude/commands/{manage-memory.md → manage-knowhow.md} +77 -88
- package/.claude/commands/manage-learn.md +3 -28
- package/.claude/commands/manage-status.md +1 -20
- package/.claude/commands/manage-wiki.md +1 -1
- package/.claude/commands/quality-business-test.md +1 -1
- package/.claude/commands/quality-debug.md +3 -18
- package/.claude/commands/quality-integration-test.md +3 -23
- package/.claude/commands/quality-retrospective.md +1 -28
- package/.claude/commands/quality-review.md +3 -52
- package/.claude/commands/quality-test-gen.md +1 -10
- package/.claude/commands/quality-test.md +3 -25
- package/.claude/commands/spec-add.md +1 -21
- package/.claude/commands/spec-load.md +1 -16
- package/.claude/commands/wiki-connect.md +2 -112
- package/.claude/commands/wiki-digest.md +2 -141
- package/.claude/skills/skill-iter-tune/SKILL.md +382 -0
- package/.claude/skills/skill-iter-tune/phases/01-setup.md +144 -0
- package/.claude/skills/skill-iter-tune/phases/02-execute.md +292 -0
- package/.claude/skills/skill-iter-tune/phases/03-evaluate.md +312 -0
- package/.claude/skills/skill-iter-tune/phases/04-improve.md +186 -0
- package/.claude/skills/skill-iter-tune/phases/05-report.md +166 -0
- package/.claude/skills/skill-iter-tune/specs/evaluation-criteria.md +63 -0
- package/.claude/skills/skill-iter-tune/templates/eval-prompt.md +134 -0
- package/.claude/skills/skill-iter-tune/templates/execute-prompt.md +97 -0
- package/.claude/skills/workflow-skill-designer/SKILL.md +496 -0
- package/.claude/skills/workflow-skill-designer/phases/01-requirements-analysis.md +356 -0
- package/.claude/skills/workflow-skill-designer/phases/02-orchestrator-design.md +444 -0
- package/.claude/skills/workflow-skill-designer/phases/03-phase-design.md +458 -0
- package/.claude/skills/workflow-skill-designer/phases/04-validation.md +471 -0
- package/.codex/skills/learn-decompose/SKILL.md +2 -8
- package/.codex/skills/maestro/SKILL.md +60 -146
- package/.codex/skills/maestro-analyze/SKILL.md +52 -150
- package/.codex/skills/maestro-brainstorm/SKILL.md +36 -91
- package/.codex/skills/maestro-composer/SKILL.md +213 -0
- package/.codex/skills/maestro-execute/SKILL.md +46 -177
- package/.codex/skills/maestro-init/SKILL.md +7 -51
- package/.codex/skills/maestro-link-coordinate/SKILL.md +56 -229
- package/.codex/skills/maestro-milestone-audit/SKILL.md +7 -36
- package/.codex/skills/maestro-milestone-complete/SKILL.md +11 -93
- package/.codex/skills/maestro-overlay/SKILL.md +23 -92
- package/.codex/skills/maestro-plan/SKILL.md +42 -166
- package/.codex/skills/maestro-player/SKILL.md +323 -0
- package/.codex/skills/maestro-quick/SKILL.md +5 -48
- package/.codex/skills/maestro-roadmap/SKILL.md +21 -66
- package/.codex/skills/maestro-spec-generate/SKILL.md +20 -56
- package/.codex/skills/maestro-ui-design/SKILL.md +6 -53
- package/.codex/skills/maestro-verify/SKILL.md +39 -136
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +25 -75
- package/.codex/skills/manage-codebase-refresh/SKILL.md +5 -32
- package/.codex/skills/manage-issue/SKILL.md +1 -6
- package/.codex/skills/manage-issue-discover/SKILL.md +33 -93
- package/.codex/skills/{manage-memory → manage-knowhow}/SKILL.md +95 -95
- package/.codex/skills/manage-knowhow-capture/SKILL.md +110 -0
- package/.codex/skills/manage-learn/SKILL.md +17 -71
- package/.codex/skills/manage-status/SKILL.md +4 -35
- package/.codex/skills/manage-wiki/SKILL.md +1 -1
- package/.codex/skills/quality-business-test/SKILL.md +2 -14
- package/.codex/skills/quality-debug/SKILL.md +41 -133
- package/.codex/skills/quality-integration-test/SKILL.md +36 -145
- package/.codex/skills/quality-refactor/SKILL.md +6 -59
- package/.codex/skills/quality-retrospective/SKILL.md +292 -531
- package/.codex/skills/quality-review/SKILL.md +30 -65
- package/.codex/skills/quality-sync/SKILL.md +2 -11
- package/.codex/skills/quality-test/SKILL.md +4 -45
- package/.codex/skills/quality-test-gen/SKILL.md +33 -121
- package/.codex/skills/spec-add/SKILL.md +2 -9
- package/.codex/skills/spec-load/SKILL.md +4 -14
- package/.codex/skills/spec-map/SKILL.md +4 -37
- package/.codex/skills/spec-remove/SKILL.md +3 -35
- package/.codex/skills/spec-setup/SKILL.md +2 -19
- package/.codex/skills/team-coordinate/SKILL.md +20 -132
- package/.codex/skills/team-coordinate/roles/coordinator/commands/monitor.md +61 -215
- package/.codex/skills/team-executor/SKILL.md +7 -66
- package/.codex/skills/team-executor/roles/executor/commands/monitor.md +60 -182
- package/.codex/skills/team-executor/specs/session-schema.md +22 -56
- package/.codex/skills/team-lifecycle-v4/SKILL.md +22 -143
- package/.codex/skills/team-lifecycle-v4/roles/coordinator/commands/monitor.md +31 -223
- package/.codex/skills/team-quality-assurance/SKILL.md +14 -88
- package/.codex/skills/team-quality-assurance/roles/coordinator/commands/monitor.md +46 -186
- package/.codex/skills/team-review/SKILL.md +12 -86
- package/.codex/skills/team-review/roles/coordinator/commands/monitor.md +49 -187
- package/.codex/skills/team-tech-debt/SKILL.md +11 -50
- package/.codex/skills/team-tech-debt/roles/coordinator/commands/monitor.md +50 -239
- package/.codex/skills/team-testing/SKILL.md +14 -99
- package/.codex/skills/team-testing/roles/coordinator/commands/monitor.md +52 -228
- package/.codex/skills/wiki-connect/SKILL.md +2 -5
- package/README.md +6 -0
- package/README.zh-CN.md +6 -0
- package/chains/_intent-map.json +7 -7
- package/chains/singles/{memory-capture.json → knowhow-capture.json} +5 -5
- package/chains/singles/{memory.json → knowhow.json} +6 -6
- package/dashboard/dist/assets/{ArtifactsPage-CUrrDGgN.js → ArtifactsPage-iJZtYsmR.js} +6 -6
- package/dashboard/dist/assets/ChatInput-DNnDLdQF.js +6 -0
- package/dashboard/dist/assets/ChatPage-BjBibfE4.js +22 -0
- package/dashboard/dist/assets/{CollabPage-DIUXeazv.js → CollabPage-8lUMUol_.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-VmYeADFj.js → ExecutionPanel-BKV3GZ7Q.js} +1 -1
- package/dashboard/dist/assets/{KanbanPage-DLq8v7hg.js → KanbanPage-diY3QmGd.js} +2 -2
- package/dashboard/dist/assets/{MarkdownRenderer-D7AehrnR.js → MarkdownRenderer-cYFfe1uX.js} +1 -1
- package/dashboard/dist/assets/McpPage-COjuIf7U.js +21 -0
- package/dashboard/dist/assets/MeetingRoomPage-wnvT7wlB.js +85 -0
- package/dashboard/dist/assets/{OutputPanel-B-Rjwgmv.js → OutputPanel-DDL90Idy.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-GEpF-oi4.js → ProblemsPanel-zFN9IIs0.js} +1 -1
- package/dashboard/dist/assets/{RequirementBoardPage-xs8uDM7I.js → RequirementBoardPage-DOPJoT0I.js} +2 -2
- package/dashboard/dist/assets/{RequirementPage-BKDSFwjA.js → RequirementPage-CEVquRgM.js} +1 -1
- package/dashboard/dist/assets/RoomsPage-D5USEWDh.js +1 -0
- package/dashboard/dist/assets/{SpecsPage-DLFb9ZH0.js → SpecsPage-BOwBin_o.js} +1 -1
- package/dashboard/dist/assets/{SupervisorPage-SOki_kgz.js → SupervisorPage-5iRyMU5T.js} +1 -1
- package/dashboard/dist/assets/TeamsPage-DlcEmr_Q.js +1 -0
- package/dashboard/dist/assets/{TreeBrowser-B9DHdULE.js → TreeBrowser-Y48Wz-QY.js} +1 -1
- package/dashboard/dist/assets/WorkflowPage-CmQaRVgL.js +6 -0
- package/dashboard/dist/assets/arrow-left-NCUOENvg.js +6 -0
- package/dashboard/dist/assets/{check-DJDk3A2a.js → check-o7nfGNHf.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-C7bVDreZ.js → chevron-right-BXySK2fn.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-Na1vf6qQ.js → circle-alert-DcSBokh4.js} +1 -1
- package/dashboard/dist/assets/{circle-check-CEGgy3NV.js → circle-check-Cd-jce4j.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-3JB8zRYj.js → circle-check-big-BN7Mdp4i.js} +1 -1
- package/dashboard/dist/assets/{circle-Qfgy4LB_.js → circle-cooAwnAR.js} +1 -1
- package/dashboard/dist/assets/{code-Ble63Idz.js → code-BQa9oL1n.js} +1 -1
- package/dashboard/dist/assets/{columns-3-BUcKlxve.js → columns-3-BzgxelGx.js} +1 -1
- package/dashboard/dist/assets/{download-CMqkfn8x.js → download-swRJnate.js} +1 -1
- package/dashboard/dist/assets/en-C_BD3UCD.js +1 -0
- package/dashboard/dist/assets/{folder-B9ewx9LL.js → folder-DbGbLNFN.js} +1 -1
- package/dashboard/dist/assets/index-BEUaOz_b.css +1 -0
- package/dashboard/dist/assets/{index-JTmGteaT.js → index-DIoMBMbv.js} +1 -1
- package/dashboard/dist/assets/index-DLBN_7fb.js +44 -0
- package/dashboard/dist/assets/index-uIqUCT8y.js +236 -0
- package/dashboard/dist/assets/{list-DI8Wn2aT.js → list-BTRAIvDq.js} +1 -1
- package/dashboard/dist/assets/loader-NHtB6Mdn.js +6 -0
- package/dashboard/dist/assets/{minus-Lp_BfctG.js → minus-BjMxRTET.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Ch7sphzZ.js → pen-line-C4_O16H0.js} +1 -1
- package/dashboard/dist/assets/{pencil-_yRMHmGT.js → pencil-DTmKhyDY.js} +1 -1
- package/dashboard/dist/assets/{proxy-D72Y8a4Y.js → proxy-Dtx5p6IO.js} +1 -1
- package/dashboard/dist/assets/rows-2-GR1dZtRu.js +6 -0
- package/dashboard/dist/assets/{search-BS6fI6Bg.js → search-DVtgy2W7.js} +1 -1
- package/dashboard/dist/assets/{shallow-BXasQBvr.js → shallow-BOmvDNsv.js} +1 -1
- package/dashboard/dist/assets/{table-CeGlFjlP.js → table-DCzuJAFh.js} +1 -1
- package/dashboard/dist/assets/team-types-BPeOvVdA.js +6 -0
- package/dashboard/dist/assets/{terminal-BJic2yW-.js → terminal-CzogW4cl.js} +1 -1
- package/dashboard/dist/assets/{trash-2-Czz4X8Fb.js → trash-2-52LATVfW.js} +1 -1
- package/dashboard/dist/assets/users-DLFE2voE.js +6 -0
- package/dashboard/dist/assets/{zap-C3H0jVFA.js → zap-DhiYlgyZ.js} +1 -1
- package/dashboard/dist/assets/zh-CN-DvQKfow3.js +1 -0
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +19 -11
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/agents/agent-sdk-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js +21 -4
- package/dashboard/dist-server/dashboard/src/server/agents/claude-code-adapter.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js +8 -0
- package/dashboard/dist-server/dashboard/src/server/agents/env-cleanup.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/coordinator/chain-map.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +14 -3
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.d.ts +24 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js +220 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/mcp-config-builder.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.d.ts +44 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js +260 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js +194 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/meeting-room-mcp-server.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.d.ts +2 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js +279 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/stdio-bridge.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.d.ts +14 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js +131 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js +134 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/mcp-server/tcp-helpers.test.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.d.ts +51 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js +185 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/meeting-room-session.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.d.ts +29 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js +125 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-agent-registry.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.d.ts +18 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js +63 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-mailbox.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.d.ts +19 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js +45 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-session-manager.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.d.ts +25 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js +115 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-task-board.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.d.ts +53 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/rooms/room-types.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js +6 -0
- package/dashboard/dist-server/dashboard/src/server/routes/agents.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js +20 -1
- package/dashboard/dist-server/dashboard/src/server/routes/cli-history.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.d.ts +2 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js +8 -1
- package/dashboard/dist-server/dashboard/src/server/routes/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/install.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js +2 -2
- package/dashboard/dist-server/dashboard/src/server/routes/mcp.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js +246 -0
- package/dashboard/dist-server/dashboard/src/server/routes/room-mcp.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.d.ts +3 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js +38 -0
- package/dashboard/dist-server/dashboard/src/server/routes/rooms.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js +7 -7
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.integration.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/wiki.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +39 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +12 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js +25 -14
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js +6 -6
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-indexer.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/wiki-types.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js +17 -16
- package/dashboard/dist-server/dashboard/src/server/wiki/writer-stress.test.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js +18 -7
- package/dashboard/dist-server/dashboard/src/server/wiki/writer.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.d.ts +3 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js +75 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/agent-handler.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.d.ts +17 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js +192 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/room-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.d.ts +13 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js +37 -0
- package/dashboard/dist-server/dashboard/src/server/ws/session-scoped-event-filter.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.d.ts +7 -1
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js +39 -2
- package/dashboard/dist-server/dashboard/src/server/ws/ws-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.d.ts +1 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js +38 -0
- package/dashboard/dist-server/dashboard/src/shared/room-leader-prompt.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +66 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +24 -3
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +76 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +2 -0
- package/dashboard/dist-server/src/commands/delegate.js +11 -8
- package/dashboard/dist-server/src/commands/delegate.js.map +1 -1
- package/dist/shared/agent-types.d.ts +2 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/cli.js +2 -2
- package/dist/src/cli.js.map +1 -1
- package/dist/src/commands/delegate.d.ts.map +1 -1
- package/dist/src/commands/delegate.js +11 -8
- package/dist/src/commands/delegate.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +1 -1
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/knowhow.d.ts +10 -0
- package/dist/src/commands/knowhow.d.ts.map +1 -0
- package/dist/src/commands/knowhow.js +217 -0
- package/dist/src/commands/knowhow.js.map +1 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts +2 -0
- package/dist/src/commands/overlay-ui/OverlayList.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/OverlayList.js +6 -3
- package/dist/src/commands/overlay-ui/OverlayList.js.map +1 -1
- package/dist/src/commands/overlay-ui/index.d.ts.map +1 -1
- package/dist/src/commands/overlay-ui/index.js +70 -44
- package/dist/src/commands/overlay-ui/index.js.map +1 -1
- package/dist/src/commands/overlay.d.ts.map +1 -1
- package/dist/src/commands/overlay.js +4 -3
- package/dist/src/commands/overlay.js.map +1 -1
- package/dist/src/core/overlay/applier.d.ts +1 -1
- package/dist/src/core/overlay/applier.d.ts.map +1 -1
- package/dist/src/core/overlay/applier.js +40 -13
- package/dist/src/core/overlay/applier.js.map +1 -1
- package/dist/src/core/overlay/loader.d.ts.map +1 -1
- package/dist/src/core/overlay/loader.js +6 -0
- package/dist/src/core/overlay/loader.js.map +1 -1
- package/dist/src/core/overlay/types.d.ts +5 -1
- package/dist/src/core/overlay/types.d.ts.map +1 -1
- package/dist/src/core/overlay/types.js +1 -1
- package/dist/src/core/overlay/types.js.map +1 -1
- package/dist/src/hooks/context-monitor.js +1 -1
- package/dist/src/hooks/context-monitor.js.map +1 -1
- package/dist/src/hooks/skill-context.js +1 -1
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.d.ts +4 -0
- package/dist/src/mcp/delegate-channel-relay.d.ts.map +1 -1
- package/dist/src/mcp/delegate-channel-relay.js +73 -4
- package/dist/src/mcp/delegate-channel-relay.js.map +1 -1
- package/dist/src/tools/index.js +2 -2
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/store-knowhow.d.ts +21 -0
- package/dist/src/tools/store-knowhow.d.ts.map +1 -0
- package/dist/src/tools/store-knowhow.js +295 -0
- package/dist/src/tools/store-knowhow.js.map +1 -0
- package/package.json +1 -1
- package/shared/agent-types.ts +2 -0
- package/templates/workflows/specs/node-catalog.md +170 -0
- package/templates/workflows/specs/template-schema.md +157 -0
- package/workflows/analyze.md +61 -185
- package/workflows/brainstorm.md +3 -23
- package/workflows/codebase-rebuild.md +79 -191
- package/workflows/codebase-refresh.md +26 -124
- package/workflows/debug.md +21 -141
- package/workflows/execute.md +183 -350
- package/workflows/fork.md +72 -230
- package/workflows/harvest.md +12 -79
- package/workflows/init.md +3 -17
- package/workflows/integration-test.md +21 -190
- package/workflows/issue-analyze.md +35 -153
- package/workflows/issue-discover.md +88 -263
- package/workflows/issue-execute.md +29 -208
- package/workflows/issue-plan.md +33 -154
- package/workflows/issue.md +44 -202
- package/workflows/knowhow.md +374 -0
- package/workflows/learn.md +30 -177
- package/workflows/maestro-coordinate.codex.md +77 -362
- package/workflows/maestro-link-coordinate.md +12 -61
- package/workflows/maestro.codex.md +124 -457
- package/workflows/maestro.md +562 -976
- package/workflows/map.md +16 -53
- package/workflows/merge.md +42 -197
- package/workflows/milestone-audit.md +5 -43
- package/workflows/milestone-complete.md +11 -60
- package/workflows/plan.md +176 -387
- package/workflows/quick.md +25 -174
- package/workflows/refactor.md +28 -221
- package/workflows/retrospective.md +104 -443
- package/workflows/review.md +87 -299
- package/workflows/roadmap.md +117 -97
- package/workflows/spec-generate.md +22 -118
- package/workflows/specs-add.md +5 -25
- package/workflows/specs-load.md +1 -5
- package/workflows/specs-remove.md +0 -11
- package/workflows/specs-setup.md +11 -47
- package/workflows/status.md +58 -200
- package/workflows/sync.md +28 -141
- package/workflows/test-gen.md +23 -100
- package/workflows/test.md +15 -125
- package/workflows/ui-design.md +139 -465
- package/workflows/ui-style.md +36 -228
- package/workflows/verify.md +52 -273
- package/workflows/wiki-connect.md +9 -46
- package/workflows/wiki-digest.md +7 -50
- package/workflows/wiki-manage.md +11 -108
- package/.claude/commands/maestro-coordinate.md +0 -63
- package/.claude/commands/manage-memory-capture.md +0 -59
- package/.codex/skills/maestro-coordinate/SKILL.md +0 -213
- package/.codex/skills/manage-memory-capture/SKILL.md +0 -93
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +0 -49
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +0 -27
- package/dashboard/dist/assets/McpPage-BY0SjTgw.js +0 -21
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +0 -11
- package/dashboard/dist/assets/WorkflowPage-C8hWbYim.js +0 -6
- package/dashboard/dist/assets/en-ZbRpfzuP.js +0 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +0 -231
- package/dashboard/dist/assets/index-DyBbPc18.css +0 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +0 -11
- package/dashboard/dist/assets/zh-CN-CoXBFuny.js +0 -1
- package/workflows/maestro-coordinate.md +0 -582
- package/workflows/memory.md +0 -451
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import { WebSocket } from 'ws';
|
|
2
|
+
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
3
|
+
import { join, resolve } from 'node:path';
|
|
4
|
+
import { tmpdir } from 'node:os';
|
|
2
5
|
import { loadDashboardAgentSettings } from '../../config.js';
|
|
3
6
|
import { EntryNormalizer } from '../../agents/entry-normalizer.js';
|
|
4
7
|
import { handleDelegateMessage } from '../../../../../src/async/delegate-control.js';
|
|
@@ -10,6 +13,7 @@ export class AgentWsHandler {
|
|
|
10
13
|
eventBus;
|
|
11
14
|
workflowRoot;
|
|
12
15
|
delegateMessage;
|
|
16
|
+
roomSessionManager;
|
|
13
17
|
actions = [
|
|
14
18
|
'spawn',
|
|
15
19
|
'stop',
|
|
@@ -20,11 +24,12 @@ export class AgentWsHandler {
|
|
|
20
24
|
'cli:entry',
|
|
21
25
|
'cli:stopped',
|
|
22
26
|
];
|
|
23
|
-
constructor(agentManager, eventBus, workflowRoot, delegateMessage = handleDelegateMessage) {
|
|
27
|
+
constructor(agentManager, eventBus, workflowRoot, delegateMessage = handleDelegateMessage, roomSessionManager) {
|
|
24
28
|
this.agentManager = agentManager;
|
|
25
29
|
this.eventBus = eventBus;
|
|
26
30
|
this.workflowRoot = workflowRoot;
|
|
27
31
|
this.delegateMessage = delegateMessage;
|
|
32
|
+
this.roomSessionManager = roomSessionManager;
|
|
28
33
|
}
|
|
29
34
|
async handle(action, data, ws, broadcast) {
|
|
30
35
|
const msg = data;
|
|
@@ -108,7 +113,76 @@ export class AgentWsHandler {
|
|
|
108
113
|
settingsFile: (config.settingsFile ?? saved?.settingsFile) || undefined,
|
|
109
114
|
envFile: (config.envFile ?? saved?.envFile) || undefined,
|
|
110
115
|
};
|
|
116
|
+
// Inject MCP config if agent is being added to a meeting room
|
|
117
|
+
const roomSessionId = mergedConfig.metadata?.roomSessionId;
|
|
118
|
+
const roomRole = mergedConfig.metadata?.roomRole;
|
|
119
|
+
if (roomSessionId && roomRole && this.roomSessionManager) {
|
|
120
|
+
const session = this.roomSessionManager.getSession(roomSessionId);
|
|
121
|
+
if (session) {
|
|
122
|
+
// Ensure MCP TCP server is running (idempotent)
|
|
123
|
+
await session.startMcp();
|
|
124
|
+
const projectRoot = resolve(this.workflowRoot, '..');
|
|
125
|
+
// Inject MCP config based on agent type
|
|
126
|
+
const MCP_AGENT_TYPES = {
|
|
127
|
+
'claude-code': 'claude-code',
|
|
128
|
+
'agent-sdk': 'agent-sdk',
|
|
129
|
+
'codex': 'codex',
|
|
130
|
+
};
|
|
131
|
+
const mcpAgentType = MCP_AGENT_TYPES[mergedConfig.type];
|
|
132
|
+
if (mcpAgentType) {
|
|
133
|
+
if (mcpAgentType === 'claude-code') {
|
|
134
|
+
// Use HTTP transport — Claude Code --print mode doesn't connect
|
|
135
|
+
// stdio MCP servers (stays "pending" forever). HTTP servers connect
|
|
136
|
+
// immediately since the dashboard HTTP server is already running.
|
|
137
|
+
const mcpInfo = session.getMcpInfo();
|
|
138
|
+
const httpUrl = `http://127.0.0.1:3001/api/rooms/${roomSessionId}/mcp?token=${mcpInfo?.token ?? ''}&agentId=${roomRole}`;
|
|
139
|
+
const mcpJsonPath = join(projectRoot, '.mcp.json');
|
|
140
|
+
try {
|
|
141
|
+
const existing = existsSync(mcpJsonPath)
|
|
142
|
+
? JSON.parse(readFileSync(mcpJsonPath, 'utf-8'))
|
|
143
|
+
: { mcpServers: {} };
|
|
144
|
+
existing.mcpServers['meeting-room'] = {
|
|
145
|
+
type: 'http',
|
|
146
|
+
url: httpUrl,
|
|
147
|
+
};
|
|
148
|
+
writeFileSync(mcpJsonPath, JSON.stringify(existing, null, 2));
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
// Fallback to --mcp-config tmp file
|
|
152
|
+
const tmpPath = join(tmpdir(), `mr-mcp-${roomSessionId}-${roomRole}.json`);
|
|
153
|
+
writeFileSync(tmpPath, JSON.stringify({
|
|
154
|
+
mcpServers: { 'meeting-room': { type: 'http', url: httpUrl } },
|
|
155
|
+
}));
|
|
156
|
+
mergedConfig.mcpConfigPath = tmpPath;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (mcpAgentType === 'agent-sdk') {
|
|
160
|
+
const mcpServer = session.getMcpConfig('agent-sdk', roomRole);
|
|
161
|
+
mergedConfig.metadata = { ...mergedConfig.metadata, roomMcpServer: mcpServer };
|
|
162
|
+
}
|
|
163
|
+
// codex uses stdio config via env vars (handled by adapter)
|
|
164
|
+
}
|
|
165
|
+
// Claude Code in room → force interactive mode for follow-up wake messages
|
|
166
|
+
// Also set workDir to project root so it finds .mcp.json
|
|
167
|
+
if (mergedConfig.type === 'claude-code') {
|
|
168
|
+
mergedConfig.interactive = true;
|
|
169
|
+
mergedConfig.workDir = projectRoot;
|
|
170
|
+
}
|
|
171
|
+
// Leader → auto bypass permissions (needs free MCP tool access)
|
|
172
|
+
if (roomRole === 'leader') {
|
|
173
|
+
mergedConfig.approvalMode = mergedConfig.approvalMode ?? 'auto';
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
111
177
|
const proc = await this.agentManager.spawn(mergedConfig.type, mergedConfig);
|
|
178
|
+
// Auto-link to meeting room if metadata contains room context
|
|
179
|
+
if (roomSessionId && roomRole && this.roomSessionManager) {
|
|
180
|
+
const session = this.roomSessionManager.getSession(roomSessionId);
|
|
181
|
+
if (session) {
|
|
182
|
+
const agent = session.addAgent(roomRole, proc.id);
|
|
183
|
+
this.eventBus.emit('room:agent_joined', { sessionId: roomSessionId, agent });
|
|
184
|
+
}
|
|
185
|
+
}
|
|
112
186
|
const response = {
|
|
113
187
|
type: 'agent:spawned',
|
|
114
188
|
data: proc,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-handler.js","sourceRoot":"","sources":["../../../../../../src/server/ws/handlers/agent-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-handler.js","sourceRoot":"","sources":["../../../../../../src/server/ws/handlers/agent-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { WebSocket } from 'ws';
|
|
2
|
+
import type { WsHandler } from '../ws-handler.js';
|
|
3
|
+
import type { WsEventType } from '../../../shared/ws-protocol.js';
|
|
4
|
+
import type { DashboardEventBus } from '../../state/event-bus.js';
|
|
5
|
+
import type { RoomSessionManager } from '../../rooms/room-session-manager.js';
|
|
6
|
+
import type { SessionScopedEventFilter } from '../session-scoped-event-filter.js';
|
|
7
|
+
export declare class RoomWsHandler implements WsHandler {
|
|
8
|
+
private readonly sessionManager;
|
|
9
|
+
private readonly eventBus;
|
|
10
|
+
private readonly filter;
|
|
11
|
+
private readonly workflowRoot?;
|
|
12
|
+
readonly actions: readonly ["room:create", "room:close", "room:subscribe", "room:unsubscribe", "room:add_agent", "room:remove_agent", "room:set_agent_status", "room:send_message", "room:broadcast", "room:create_task", "room:update_task", "room:snapshot"];
|
|
13
|
+
constructor(sessionManager: RoomSessionManager, eventBus: DashboardEventBus, filter: SessionScopedEventFilter, workflowRoot?: string | undefined);
|
|
14
|
+
handle(action: string, data: unknown, ws: WebSocket, _broadcast: (type: WsEventType, data: unknown) => void): Promise<void>;
|
|
15
|
+
/** Remove the meeting-room entry from .mcp.json after room destruction. */
|
|
16
|
+
private cleanupMcpJson;
|
|
17
|
+
}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { readFileSync, writeFileSync, existsSync } from 'node:fs';
|
|
2
|
+
import { join, resolve } from 'node:path';
|
|
3
|
+
// ---------------------------------------------------------------------------
|
|
4
|
+
// RoomWsHandler — client-to-server room actions
|
|
5
|
+
// room:create -> create a new room session
|
|
6
|
+
// room:close -> destroy a room session
|
|
7
|
+
// room:subscribe -> subscribe to session events + get snapshot
|
|
8
|
+
// room:unsubscribe -> unsubscribe from session events
|
|
9
|
+
// room:add_agent -> add agent to session
|
|
10
|
+
// room:remove_agent -> remove agent from session
|
|
11
|
+
// room:set_agent_status -> update agent status
|
|
12
|
+
// room:send_message -> send message to specific agent
|
|
13
|
+
// room:broadcast -> broadcast message to all agents
|
|
14
|
+
// room:create_task -> create a task
|
|
15
|
+
// room:update_task -> update a task
|
|
16
|
+
// room:snapshot -> request current snapshot
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
export class RoomWsHandler {
|
|
19
|
+
sessionManager;
|
|
20
|
+
eventBus;
|
|
21
|
+
filter;
|
|
22
|
+
workflowRoot;
|
|
23
|
+
actions = [
|
|
24
|
+
'room:create',
|
|
25
|
+
'room:close',
|
|
26
|
+
'room:subscribe',
|
|
27
|
+
'room:unsubscribe',
|
|
28
|
+
'room:add_agent',
|
|
29
|
+
'room:remove_agent',
|
|
30
|
+
'room:set_agent_status',
|
|
31
|
+
'room:send_message',
|
|
32
|
+
'room:broadcast',
|
|
33
|
+
'room:create_task',
|
|
34
|
+
'room:update_task',
|
|
35
|
+
'room:snapshot',
|
|
36
|
+
];
|
|
37
|
+
constructor(sessionManager, eventBus, filter, workflowRoot) {
|
|
38
|
+
this.sessionManager = sessionManager;
|
|
39
|
+
this.eventBus = eventBus;
|
|
40
|
+
this.filter = filter;
|
|
41
|
+
this.workflowRoot = workflowRoot;
|
|
42
|
+
}
|
|
43
|
+
async handle(action, data, ws, _broadcast) {
|
|
44
|
+
const msg = data;
|
|
45
|
+
const sessionId = (msg.sessionId ?? msg.roomId);
|
|
46
|
+
switch (action) {
|
|
47
|
+
case 'room:create': {
|
|
48
|
+
const session = this.sessionManager.createSession(sessionId);
|
|
49
|
+
// Start MCP TCP server for this room (agents will connect to it)
|
|
50
|
+
await session.startMcp();
|
|
51
|
+
// Auto-subscribe the creator so they receive room:created and all subsequent events
|
|
52
|
+
this.filter.subscribe(ws, sessionId);
|
|
53
|
+
const snapshot = session.getSnapshot();
|
|
54
|
+
this.eventBus.emit('room:created', {
|
|
55
|
+
sessionId: snapshot.sessionId,
|
|
56
|
+
status: snapshot.status,
|
|
57
|
+
agentCount: snapshot.agents.length,
|
|
58
|
+
taskCount: snapshot.tasks.length,
|
|
59
|
+
messageCount: snapshot.messages.length,
|
|
60
|
+
createdAt: snapshot.createdAt,
|
|
61
|
+
});
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
case 'room:close': {
|
|
65
|
+
const destroyed = await this.sessionManager.destroySession(sessionId);
|
|
66
|
+
if (destroyed) {
|
|
67
|
+
this.eventBus.emit('room:closed', { sessionId });
|
|
68
|
+
// Clean up meeting-room entry from .mcp.json
|
|
69
|
+
this.cleanupMcpJson();
|
|
70
|
+
}
|
|
71
|
+
break;
|
|
72
|
+
}
|
|
73
|
+
case 'room:subscribe': {
|
|
74
|
+
this.filter.subscribe(ws, sessionId);
|
|
75
|
+
// Send current snapshot to the subscribing client
|
|
76
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
77
|
+
if (session) {
|
|
78
|
+
const snapshot = session.getSnapshot();
|
|
79
|
+
this.eventBus.emit('room:snapshot', snapshot);
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
case 'room:unsubscribe': {
|
|
84
|
+
this.filter.unsubscribe(ws, sessionId);
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
case 'room:add_agent': {
|
|
88
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
89
|
+
if (!session)
|
|
90
|
+
break;
|
|
91
|
+
const agent = session.addAgent(msg.role, msg.processId);
|
|
92
|
+
this.eventBus.emit('room:agent_joined', { sessionId, agent });
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
case 'room:remove_agent': {
|
|
96
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
97
|
+
if (!session)
|
|
98
|
+
break;
|
|
99
|
+
const removed = session.removeAgent(msg.role);
|
|
100
|
+
if (removed) {
|
|
101
|
+
this.eventBus.emit('room:agent_left', {
|
|
102
|
+
sessionId,
|
|
103
|
+
role: msg.role,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
case 'room:set_agent_status': {
|
|
109
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
110
|
+
if (!session)
|
|
111
|
+
break;
|
|
112
|
+
session.setAgentStatus(msg.role, msg.status);
|
|
113
|
+
this.eventBus.emit('room:agent_status', {
|
|
114
|
+
sessionId,
|
|
115
|
+
role: msg.role,
|
|
116
|
+
status: msg.status,
|
|
117
|
+
});
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
case 'room:send_message': {
|
|
121
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
122
|
+
if (!session)
|
|
123
|
+
break;
|
|
124
|
+
const from = msg.from || 'user';
|
|
125
|
+
const mailMsg = await session.sendMessage(from, msg.to, msg.content, msg.priority || 'normal');
|
|
126
|
+
this.eventBus.emit('room:message', { sessionId, message: mailMsg });
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case 'room:broadcast': {
|
|
130
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
131
|
+
if (!session)
|
|
132
|
+
break;
|
|
133
|
+
const bcastFrom = msg.from || 'user';
|
|
134
|
+
const bcastMsg = await session.broadcastMessage(bcastFrom, msg.content, msg.priority || 'normal');
|
|
135
|
+
this.eventBus.emit('room:broadcast', { sessionId, message: bcastMsg });
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
case 'room:create_task': {
|
|
139
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
140
|
+
if (!session)
|
|
141
|
+
break;
|
|
142
|
+
// Accept both nested msg.task and flat fields
|
|
143
|
+
const taskInput = msg.task ?? {
|
|
144
|
+
title: msg.title,
|
|
145
|
+
description: msg.description ?? '',
|
|
146
|
+
owner: msg.assignedTo ?? msg.owner,
|
|
147
|
+
blockedBy: msg.blockedBy,
|
|
148
|
+
};
|
|
149
|
+
const task = session.createTask(taskInput);
|
|
150
|
+
this.eventBus.emit('room:task_created', { sessionId, task });
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
case 'room:update_task': {
|
|
154
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
155
|
+
if (!session)
|
|
156
|
+
break;
|
|
157
|
+
const updated = session.updateTask(msg.taskId, msg.patch);
|
|
158
|
+
if (updated) {
|
|
159
|
+
this.eventBus.emit('room:task_updated', { sessionId, task: updated });
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case 'room:snapshot': {
|
|
164
|
+
const session = this.sessionManager.getSession(sessionId);
|
|
165
|
+
if (session) {
|
|
166
|
+
this.eventBus.emit('room:snapshot', session.getSnapshot());
|
|
167
|
+
}
|
|
168
|
+
break;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/** Remove the meeting-room entry from .mcp.json after room destruction. */
|
|
173
|
+
cleanupMcpJson() {
|
|
174
|
+
if (!this.workflowRoot)
|
|
175
|
+
return;
|
|
176
|
+
const projectRoot = resolve(this.workflowRoot, '..');
|
|
177
|
+
const mcpJsonPath = join(projectRoot, '.mcp.json');
|
|
178
|
+
try {
|
|
179
|
+
if (!existsSync(mcpJsonPath))
|
|
180
|
+
return;
|
|
181
|
+
const config = JSON.parse(readFileSync(mcpJsonPath, 'utf-8'));
|
|
182
|
+
if (config.mcpServers?.['meeting-room']) {
|
|
183
|
+
delete config.mcpServers['meeting-room'];
|
|
184
|
+
writeFileSync(mcpJsonPath, JSON.stringify(config, null, 2));
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch {
|
|
188
|
+
// Best-effort cleanup
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=room-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"room-handler.js","sourceRoot":"","sources":["../../../../../../src/server/ws/handlers/room-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { WebSocket } from 'ws';
|
|
2
|
+
export declare class SessionScopedEventFilter {
|
|
3
|
+
/** Map of WebSocket client -> set of subscribed session IDs */
|
|
4
|
+
private readonly subscriptions;
|
|
5
|
+
/** Subscribe a client to a specific room session */
|
|
6
|
+
subscribe(ws: WebSocket, sessionId: string): void;
|
|
7
|
+
/** Unsubscribe a client from a specific room session */
|
|
8
|
+
unsubscribe(ws: WebSocket, sessionId: string): void;
|
|
9
|
+
/** Check if a client is subscribed to a specific room session */
|
|
10
|
+
isSubscribed(ws: WebSocket, sessionId: string): boolean;
|
|
11
|
+
/** Remove all subscriptions for a client (called on disconnect) */
|
|
12
|
+
unsubscribeAll(ws: WebSocket): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// ---------------------------------------------------------------------------
|
|
2
|
+
// SessionScopedEventFilter — tracks which room sessions each WS client
|
|
3
|
+
// subscribes to, so room:* events are only sent to interested clients.
|
|
4
|
+
// ---------------------------------------------------------------------------
|
|
5
|
+
export class SessionScopedEventFilter {
|
|
6
|
+
/** Map of WebSocket client -> set of subscribed session IDs */
|
|
7
|
+
subscriptions = new Map();
|
|
8
|
+
/** Subscribe a client to a specific room session */
|
|
9
|
+
subscribe(ws, sessionId) {
|
|
10
|
+
let sessions = this.subscriptions.get(ws);
|
|
11
|
+
if (!sessions) {
|
|
12
|
+
sessions = new Set();
|
|
13
|
+
this.subscriptions.set(ws, sessions);
|
|
14
|
+
}
|
|
15
|
+
sessions.add(sessionId);
|
|
16
|
+
}
|
|
17
|
+
/** Unsubscribe a client from a specific room session */
|
|
18
|
+
unsubscribe(ws, sessionId) {
|
|
19
|
+
const sessions = this.subscriptions.get(ws);
|
|
20
|
+
if (!sessions)
|
|
21
|
+
return;
|
|
22
|
+
sessions.delete(sessionId);
|
|
23
|
+
if (sessions.size === 0) {
|
|
24
|
+
this.subscriptions.delete(ws);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/** Check if a client is subscribed to a specific room session */
|
|
28
|
+
isSubscribed(ws, sessionId) {
|
|
29
|
+
const sessions = this.subscriptions.get(ws);
|
|
30
|
+
return sessions !== undefined && sessions.has(sessionId);
|
|
31
|
+
}
|
|
32
|
+
/** Remove all subscriptions for a client (called on disconnect) */
|
|
33
|
+
unsubscribeAll(ws) {
|
|
34
|
+
this.subscriptions.delete(ws);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=session-scoped-event-filter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-scoped-event-filter.js","sourceRoot":"","sources":["../../../../../src/server/ws/session-scoped-event-filter.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,uEAAuE;AACvE,uEAAuE;AACvE,8EAA8E;AAE9E,MAAM,OAAO,wBAAwB;IACnC,+DAA+D;IAC9C,aAAa,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEnE,oDAAoD;IACpD,SAAS,CAAC,EAAa,EAAE,SAAiB;QACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,GAAG,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;QACvC,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAED,wDAAwD;IACxD,WAAW,CAAC,EAAa,EAAE,SAAiB;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IAED,iEAAiE;IACjE,YAAY,CAAC,EAAa,EAAE,SAAiB;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,mEAAmE;IACnE,cAAc,CAAC,EAAa;QAC1B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChC,CAAC;CACF"}
|
|
@@ -3,13 +3,15 @@ import type { Duplex } from 'node:stream';
|
|
|
3
3
|
import type { WsEventType } from '../../shared/ws-protocol.js';
|
|
4
4
|
import type { DashboardEventBus } from '../state/event-bus.js';
|
|
5
5
|
import type { WsHandler } from './ws-handler.js';
|
|
6
|
+
import type { SessionScopedEventFilter } from './session-scoped-event-filter.js';
|
|
6
7
|
export declare class WebSocketManager {
|
|
7
8
|
private readonly eventBus;
|
|
9
|
+
private readonly sessionFilter?;
|
|
8
10
|
private readonly wss;
|
|
9
11
|
private readonly clients;
|
|
10
12
|
private readonly eventListener;
|
|
11
13
|
private readonly routingTable;
|
|
12
|
-
constructor(eventBus: DashboardEventBus, handlers: WsHandler[]);
|
|
14
|
+
constructor(eventBus: DashboardEventBus, handlers: WsHandler[], sessionFilter?: SessionScopedEventFilter | undefined);
|
|
13
15
|
/**
|
|
14
16
|
* Handle HTTP upgrade request — call from server 'upgrade' event.
|
|
15
17
|
*/
|
|
@@ -18,6 +20,10 @@ export declare class WebSocketManager {
|
|
|
18
20
|
* Broadcast a typed message to all connected WS clients.
|
|
19
21
|
*/
|
|
20
22
|
broadcast(type: WsEventType, data: unknown): void;
|
|
23
|
+
/**
|
|
24
|
+
* Broadcast a session-scoped message only to clients subscribed to that session.
|
|
25
|
+
*/
|
|
26
|
+
private broadcastToSubscribed;
|
|
21
27
|
/**
|
|
22
28
|
* Send an error response back to the originating client.
|
|
23
29
|
*/
|
|
@@ -4,12 +4,14 @@ import { WebSocketServer, WebSocket } from 'ws';
|
|
|
4
4
|
// ---------------------------------------------------------------------------
|
|
5
5
|
export class WebSocketManager {
|
|
6
6
|
eventBus;
|
|
7
|
+
sessionFilter;
|
|
7
8
|
wss;
|
|
8
9
|
clients = new Set();
|
|
9
10
|
eventListener;
|
|
10
11
|
routingTable = new Map();
|
|
11
|
-
constructor(eventBus, handlers) {
|
|
12
|
+
constructor(eventBus, handlers, sessionFilter) {
|
|
12
13
|
this.eventBus = eventBus;
|
|
14
|
+
this.sessionFilter = sessionFilter;
|
|
13
15
|
// Build routing table from handlers
|
|
14
16
|
for (const handler of handlers) {
|
|
15
17
|
for (const action of handler.actions) {
|
|
@@ -17,8 +19,22 @@ export class WebSocketManager {
|
|
|
17
19
|
}
|
|
18
20
|
}
|
|
19
21
|
this.wss = new WebSocketServer({ noServer: true });
|
|
20
|
-
// Subscribe to all EventBus events and broadcast as WsServerMessage
|
|
22
|
+
// Subscribe to all EventBus events and broadcast as WsServerMessage.
|
|
23
|
+
// Session-scoped room events are only sent to subscribed clients;
|
|
24
|
+
// lifecycle events (room:created, room:closed) and all non-room events
|
|
25
|
+
// continue broadcasting to every connected client.
|
|
21
26
|
this.eventListener = (event) => {
|
|
27
|
+
if (this.sessionFilter &&
|
|
28
|
+
event.type.startsWith('room:') &&
|
|
29
|
+
event.type !== 'room:created' &&
|
|
30
|
+
event.type !== 'room:closed') {
|
|
31
|
+
const payload = event.data;
|
|
32
|
+
const sessionId = payload?.sessionId;
|
|
33
|
+
if (sessionId) {
|
|
34
|
+
this.broadcastToSubscribed(event.type, event.data, sessionId);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
22
38
|
this.broadcast(event.type, event.data);
|
|
23
39
|
};
|
|
24
40
|
this.eventBus.onAny(this.eventListener);
|
|
@@ -46,9 +62,11 @@ export class WebSocketManager {
|
|
|
46
62
|
// Clean up on close
|
|
47
63
|
ws.on('close', () => {
|
|
48
64
|
this.clients.delete(ws);
|
|
65
|
+
this.sessionFilter?.unsubscribeAll(ws);
|
|
49
66
|
});
|
|
50
67
|
ws.on('error', () => {
|
|
51
68
|
this.clients.delete(ws);
|
|
69
|
+
this.sessionFilter?.unsubscribeAll(ws);
|
|
52
70
|
});
|
|
53
71
|
});
|
|
54
72
|
}
|
|
@@ -78,6 +96,25 @@ export class WebSocketManager {
|
|
|
78
96
|
}
|
|
79
97
|
}
|
|
80
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Broadcast a session-scoped message only to clients subscribed to that session.
|
|
101
|
+
*/
|
|
102
|
+
broadcastToSubscribed(type, data, sessionId) {
|
|
103
|
+
if (this.clients.size === 0 || !this.sessionFilter)
|
|
104
|
+
return;
|
|
105
|
+
const msg = {
|
|
106
|
+
type,
|
|
107
|
+
data,
|
|
108
|
+
timestamp: new Date().toISOString(),
|
|
109
|
+
};
|
|
110
|
+
const payload = JSON.stringify(msg);
|
|
111
|
+
for (const client of this.clients) {
|
|
112
|
+
if (client.readyState === WebSocket.OPEN &&
|
|
113
|
+
this.sessionFilter.isSubscribed(client, sessionId)) {
|
|
114
|
+
client.send(payload);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
81
118
|
/**
|
|
82
119
|
* Send an error response back to the originating client.
|
|
83
120
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws-manager.js","sourceRoot":"","sources":["../../../../../src/server/ws/ws-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"ws-manager.js","sourceRoot":"","sources":["../../../../../src/server/ws/ws-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -174,6 +174,18 @@ export const WS_EVENT_TYPES = {
|
|
|
174
174
|
TEAM_DISPATCH: 'team:dispatch',
|
|
175
175
|
TEAM_PHASE: 'team:phase',
|
|
176
176
|
TEAM_AGENT_STATUS: 'team:agent_status',
|
|
177
|
+
// Room events
|
|
178
|
+
ROOM_CREATED: 'room:created',
|
|
179
|
+
ROOM_CLOSED: 'room:closed',
|
|
180
|
+
ROOM_AGENT_JOINED: 'room:agent_joined',
|
|
181
|
+
ROOM_AGENT_LEFT: 'room:agent_left',
|
|
182
|
+
ROOM_AGENT_STATUS: 'room:agent_status',
|
|
183
|
+
ROOM_MESSAGE: 'room:message',
|
|
184
|
+
ROOM_BROADCAST: 'room:broadcast',
|
|
185
|
+
ROOM_TASK_CREATED: 'room:task_created',
|
|
186
|
+
ROOM_TASK_UPDATED: 'room:task_updated',
|
|
187
|
+
ROOM_PHASE_CHANGED: 'room:phase_changed',
|
|
188
|
+
ROOM_SNAPSHOT: 'room:snapshot',
|
|
177
189
|
};
|
|
178
190
|
// ---------------------------------------------------------------------------
|
|
179
191
|
// Agent API endpoint paths
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/shared/constants.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/shared/constants.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ROOM_LEADER_SYSTEM_PROMPT = "You are the LEADER of a multi-agent meeting room. Your job is to coordinate the team to accomplish the user's goal.\n\n## Your MCP Tools\n\nYou have 8 coordination tools available:\n\n### Communication\n- **team_send_message** \u2014 Send a message to a specific agent by role name\n- **team_read_messages** \u2014 Read your unread messages from other agents\n\n### Task Management\n- **team_create_task** \u2014 Create a task and assign it to an agent (supports dependency chains)\n- **team_update_task** \u2014 Update task status (pending \u2192 in_progress \u2192 completed)\n- **team_list_tasks** \u2014 List all tasks and their status\n\n### Team Management\n- **team_get_agents** \u2014 See all agents in the room and their status\n- **team_spawn_agent** \u2014 Add a new agent to the room (leader-only)\n- **team_shutdown_agent** \u2014 Remove an agent from the room (leader-only)\n\n## Coordination Strategy\n\n1. Break the user's goal into tasks using team_create_task\n2. Assign each task to the most suitable agent\n3. Use team_send_message to give instructions to agents\n4. Monitor progress with team_list_tasks and team_read_messages\n5. Synthesize results and report back to the user\n\n## Rules\n- Always check team_get_agents before assigning work\n- Use team_read_messages regularly to stay updated\n- Create tasks with clear descriptions and ownership\n- Report progress and final results in your messages\n";
|