maestro-flow 0.3.10 → 0.3.12
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/agents/conceptual-planning-agent.md +1 -0
- package/.claude/agents/workflow-analyzer.md +114 -114
- package/.claude/agents/workflow-collab-planner.md +144 -144
- package/.claude/agents/workflow-debugger.md +102 -103
- package/.claude/agents/workflow-executor.md +127 -128
- package/.claude/agents/workflow-integration-checker.md +82 -82
- package/.claude/agents/workflow-nyquist-auditor.md +85 -84
- package/.claude/agents/workflow-phase-researcher.md +85 -85
- package/.claude/agents/workflow-plan-checker.md +90 -90
- package/.claude/agents/workflow-planner.md +178 -178
- package/.claude/agents/workflow-roadmapper.md +81 -83
- package/.claude/agents/workflow-verifier.md +119 -119
- package/.claude/commands/learn-decompose.md +176 -176
- package/.claude/commands/learn-follow.md +167 -167
- package/.claude/commands/learn-retro.md +3 -3
- package/.claude/commands/learn-second-opinion.md +2 -2
- package/.claude/commands/maestro-brainstorm.md +1 -0
- package/.claude/commands/maestro-coordinate.md +1 -3
- package/.claude/commands/maestro-fork.md +133 -111
- package/.claude/commands/maestro-merge.md +85 -77
- package/.claude/commands/maestro-plan.md +88 -2
- package/.claude/commands/maestro-roadmap.md +113 -2
- package/.claude/commands/maestro.md +1 -0
- package/.claude/commands/manage-harvest.md +131 -131
- package/.claude/commands/manage-issue.md +2 -2
- package/.claude/commands/quality-business-test.md +5 -5
- package/.claude/commands/quality-debug.md +3 -2
- package/.claude/commands/quality-retrospective.md +6 -4
- package/.claude/commands/quality-review.md +1 -1
- package/.claude/commands/quality-test-gen.md +5 -4
- package/.claude/commands/spec-add.md +67 -56
- package/.claude/commands/spec-load.md +66 -64
- package/.claude/commands/spec-setup.md +5 -9
- package/.codex/skills/learn-decompose/SKILL.md +119 -0
- package/.codex/skills/learn-follow/SKILL.md +83 -0
- package/.codex/skills/learn-investigate/SKILL.md +83 -0
- package/.codex/skills/learn-retro/SKILL.md +83 -0
- package/.codex/skills/learn-second-opinion/SKILL.md +86 -0
- package/.codex/skills/maestro/SKILL.md +151 -279
- package/.codex/skills/maestro-analyze/SKILL.md +59 -71
- package/.codex/skills/maestro-brainstorm/SKILL.md +452 -463
- package/.codex/skills/maestro-chain/SKILL.md +95 -110
- package/.codex/skills/maestro-coordinate/SKILL.md +68 -234
- package/.codex/skills/maestro-execute/SKILL.md +435 -446
- package/.codex/skills/maestro-fork/SKILL.md +98 -0
- package/.codex/skills/maestro-init/SKILL.md +172 -167
- package/.codex/skills/maestro-learn/SKILL.md +80 -0
- package/.codex/skills/maestro-link-coordinate/SKILL.md +224 -220
- package/.codex/skills/maestro-merge/SKILL.md +69 -0
- package/.codex/skills/maestro-milestone-audit/SKILL.md +108 -103
- package/.codex/skills/maestro-milestone-complete/SKILL.md +155 -149
- package/.codex/skills/maestro-milestone-release/SKILL.md +70 -0
- package/.codex/skills/maestro-overlay/SKILL.md +188 -185
- package/.codex/skills/maestro-plan/SKILL.md +58 -69
- package/.codex/skills/maestro-quick/SKILL.md +26 -23
- package/.codex/skills/maestro-roadmap/SKILL.md +65 -73
- package/.codex/skills/maestro-spec-generate/SKILL.md +66 -74
- package/.codex/skills/maestro-ui-design/SKILL.md +35 -32
- package/.codex/skills/maestro-verify/SKILL.md +556 -566
- package/.codex/skills/manage-codebase-rebuild/SKILL.md +397 -405
- package/.codex/skills/manage-codebase-refresh/SKILL.md +93 -82
- package/.codex/skills/manage-harvest/SKILL.md +82 -0
- package/.codex/skills/manage-issue/SKILL.md +80 -65
- package/.codex/skills/manage-issue-discover/SKILL.md +491 -503
- package/.codex/skills/manage-learn/SKILL.md +190 -186
- package/.codex/skills/manage-memory/SKILL.md +95 -72
- package/.codex/skills/manage-memory-capture/SKILL.md +99 -86
- package/.codex/skills/manage-status/SKILL.md +102 -89
- package/.codex/skills/quality-business-test/SKILL.md +228 -223
- package/.codex/skills/quality-debug/SKILL.md +54 -66
- package/.codex/skills/quality-integration-test/SKILL.md +532 -544
- package/.codex/skills/quality-refactor/SKILL.md +197 -191
- package/.codex/skills/quality-retrospective/SKILL.md +512 -505
- package/.codex/skills/quality-review/SKILL.md +95 -107
- package/.codex/skills/quality-sync/SKILL.md +101 -89
- package/.codex/skills/quality-test/SKILL.md +202 -198
- package/.codex/skills/quality-test-gen/SKILL.md +94 -105
- package/.codex/skills/spec-add/SKILL.md +58 -39
- package/.codex/skills/spec-load/SKILL.md +45 -40
- package/.codex/skills/spec-map/SKILL.md +180 -182
- package/.codex/skills/spec-setup/SKILL.md +94 -76
- package/.codex/skills/team-coordinate/SKILL.md +346 -357
- package/.codex/skills/team-executor/SKILL.md +70 -112
- package/.codex/skills/team-lifecycle-v4/SKILL.md +311 -299
- package/.codex/skills/team-quality-assurance/SKILL.md +234 -227
- package/.codex/skills/team-review/SKILL.md +232 -225
- package/.codex/skills/team-tech-debt/SKILL.md +78 -100
- package/.codex/skills/team-testing/SKILL.md +242 -235
- package/.codex/skills/wiki-connect/SKILL.md +75 -0
- package/.codex/skills/wiki-digest/SKILL.md +87 -0
- package/README.md +9 -4
- package/README.zh-CN.md +9 -4
- package/dashboard/dist/assets/{ArtifactsPage-DZNCi6tn.js → ArtifactsPage-CUrrDGgN.js} +1 -1
- package/dashboard/dist/assets/ChatInput-pUOLJIKE.js +49 -0
- package/dashboard/dist/assets/ChatPage-B8Xqkt0v.js +27 -0
- package/dashboard/dist/assets/{CollabPage-B4NAHXS2.js → CollabPage-DIUXeazv.js} +1 -1
- package/dashboard/dist/assets/{ExecutionPanel-CFt4LJyq.js → ExecutionPanel-VmYeADFj.js} +1 -1
- package/dashboard/dist/assets/KanbanPage-DLq8v7hg.js +21 -0
- package/dashboard/dist/assets/{MarkdownRenderer-X4af_WNb.js → MarkdownRenderer-D7AehrnR.js} +1 -1
- package/dashboard/dist/assets/{McpPage-BKfCVIyU.js → McpPage-BY0SjTgw.js} +2 -2
- package/dashboard/dist/assets/{OutputPanel-BlBQFJSW.js → OutputPanel-B-Rjwgmv.js} +1 -1
- package/dashboard/dist/assets/{ProblemsPanel-De3DLvoI.js → ProblemsPanel-GEpF-oi4.js} +1 -1
- package/dashboard/dist/assets/RequirementBoardPage-xs8uDM7I.js +6 -0
- package/dashboard/dist/assets/{RequirementPage-Bllxe2XI.js → RequirementPage-BKDSFwjA.js} +5 -10
- package/dashboard/dist/assets/SpecsPage-DLFb9ZH0.js +36 -0
- package/dashboard/dist/assets/SupervisorPage-SOki_kgz.js +6 -0
- package/dashboard/dist/assets/TeamsPage-BO2kP70F.js +11 -0
- package/dashboard/dist/assets/{TreeBrowser-Q12qobZs.js → TreeBrowser-B9DHdULE.js} +1 -1
- package/dashboard/dist/assets/{WorkflowPage-D_Fzdy3_.js → WorkflowPage-C8hWbYim.js} +1 -1
- package/dashboard/dist/assets/{check-u6fGOwQO.js → check-DJDk3A2a.js} +1 -1
- package/dashboard/dist/assets/{chevron-right-Csu22t58.js → chevron-right-C7bVDreZ.js} +1 -1
- package/dashboard/dist/assets/{circle-CMrkbRNg.js → circle-Qfgy4LB_.js} +1 -1
- package/dashboard/dist/assets/{circle-alert-c3tH1P4z.js → circle-alert-Na1vf6qQ.js} +1 -1
- package/dashboard/dist/assets/{circle-check-gYxxSYuH.js → circle-check-CEGgy3NV.js} +1 -1
- package/dashboard/dist/assets/{circle-check-big-TDSeWstm.js → circle-check-big-3JB8zRYj.js} +1 -1
- package/dashboard/dist/assets/{code-CFN2uX9V.js → code-Ble63Idz.js} +1 -1
- package/dashboard/dist/assets/{columns-3-38xIDlzy.js → columns-3-BUcKlxve.js} +1 -1
- package/dashboard/dist/assets/{download-DC7KkKyP.js → download-CMqkfn8x.js} +1 -1
- package/dashboard/dist/assets/{folder-CWq_lAnf.js → folder-B9ewx9LL.js} +1 -1
- package/dashboard/dist/assets/index-C2Mcb4TJ.js +231 -0
- package/dashboard/dist/assets/index-DyBbPc18.css +1 -0
- package/dashboard/dist/assets/{index-Do71weNR.js → index-JTmGteaT.js} +1 -1
- package/dashboard/dist/assets/{list-CgIP_2A-.js → list-DI8Wn2aT.js} +1 -1
- package/dashboard/dist/assets/loader-B5F6PzFT.js +11 -0
- package/dashboard/dist/assets/{minus-DYoN5UGk.js → minus-Lp_BfctG.js} +1 -1
- package/dashboard/dist/assets/{pen-line-Bh_WKYHm.js → pen-line-Ch7sphzZ.js} +1 -1
- package/dashboard/dist/assets/pencil-_yRMHmGT.js +6 -0
- package/dashboard/dist/assets/{proxy-BKxDAKTj.js → proxy-D72Y8a4Y.js} +1 -1
- package/dashboard/dist/assets/{search-SieXnOgr.js → search-BS6fI6Bg.js} +1 -1
- package/dashboard/dist/assets/{shallow-Bme1JY57.js → shallow-BXasQBvr.js} +1 -1
- package/dashboard/dist/assets/table-CeGlFjlP.js +6 -0
- package/dashboard/dist/assets/{terminal-BB3Xfuv5.js → terminal-BJic2yW-.js} +1 -1
- package/dashboard/dist/assets/{trash-2-C8f4vFFM.js → trash-2-Czz4X8Fb.js} +1 -1
- package/dashboard/dist/assets/{zap-4uwlzVm0.js → zap-C3H0jVFA.js} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js +16 -1
- package/dashboard/dist-server/dashboard/src/server/agents/agent-manager.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js +1 -2
- package/dashboard/dist-server/dashboard/src/server/agents/delegate-broker-monitor.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js +2 -1
- package/dashboard/dist-server/dashboard/src/server/commander/commander-prompts.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/index.js +3 -0
- package/dashboard/dist-server/dashboard/src/server/index.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js +124 -0
- package/dashboard/dist-server/dashboard/src/server/routes/collab.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.d.ts +1 -1
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js +75 -30
- package/dashboard/dist-server/dashboard/src/server/routes/specs.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.d.ts +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js +5 -0
- package/dashboard/dist-server/dashboard/src/server/state/event-bus.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.d.ts +10 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js +73 -0
- package/dashboard/dist-server/dashboard/src/server/ws/handlers/team-handler.js.map +1 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.d.ts +31 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js +28 -0
- package/dashboard/dist-server/dashboard/src/shared/collab-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/constants.js +10 -0
- package/dashboard/dist-server/dashboard/src/shared/constants.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/coordinate-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.d.ts +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js +12 -0
- package/dashboard/dist-server/dashboard/src/shared/issue-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/team-types.d.ts +22 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js +7 -0
- package/dashboard/dist-server/dashboard/src/shared/team-types.js.map +1 -1
- package/dashboard/dist-server/dashboard/src/shared/types.d.ts +3 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.d.ts +28 -2
- package/dashboard/dist-server/dashboard/src/shared/ws-protocol.js.map +1 -1
- package/dashboard/dist-server/shared/agent-types.d.ts +4 -0
- package/dashboard/dist-server/src/hooks/constants.d.ts +3 -1
- package/dashboard/dist-server/src/hooks/constants.js +4 -2
- package/dashboard/dist-server/src/hooks/constants.js.map +1 -1
- package/dist/shared/agent-types.d.ts +4 -0
- package/dist/shared/agent-types.d.ts.map +1 -1
- package/dist/src/commands/collab.js +4 -4
- package/dist/src/commands/collab.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +66 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/install-backend.d.ts.map +1 -1
- package/dist/src/commands/install-backend.js +29 -18
- package/dist/src/commands/install-backend.js.map +1 -1
- package/dist/src/commands/spec.d.ts.map +1 -1
- package/dist/src/commands/spec.js +7 -2
- package/dist/src/commands/spec.js.map +1 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js +23 -1
- package/dist/src/hooks/__tests__/statusline-visual-test.js.map +1 -1
- package/dist/src/hooks/constants.d.ts +3 -1
- package/dist/src/hooks/constants.d.ts.map +1 -1
- package/dist/src/hooks/constants.js +4 -2
- package/dist/src/hooks/constants.js.map +1 -1
- package/dist/src/hooks/guards/index.d.ts +1 -0
- package/dist/src/hooks/guards/index.d.ts.map +1 -1
- package/dist/src/hooks/guards/index.js +1 -0
- package/dist/src/hooks/guards/index.js.map +1 -1
- package/dist/src/hooks/guards/spec-validator.d.ts +25 -0
- package/dist/src/hooks/guards/spec-validator.d.ts.map +1 -0
- package/dist/src/hooks/guards/spec-validator.js +66 -0
- package/dist/src/hooks/guards/spec-validator.js.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts +21 -0
- package/dist/src/hooks/keyword-spec-injector.d.ts.map +1 -0
- package/dist/src/hooks/keyword-spec-injector.js +96 -0
- package/dist/src/hooks/keyword-spec-injector.js.map +1 -0
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts +2 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.d.ts.map +1 -1
- package/dist/src/hooks/plugins/spec-injection-plugin.js +21 -12
- package/dist/src/hooks/plugins/spec-injection-plugin.js.map +1 -1
- package/dist/src/hooks/skill-context.d.ts +3 -0
- package/dist/src/hooks/skill-context.d.ts.map +1 -1
- package/dist/src/hooks/skill-context.js +95 -9
- package/dist/src/hooks/skill-context.js.map +1 -1
- package/dist/src/hooks/spec-bridge.d.ts +40 -0
- package/dist/src/hooks/spec-bridge.d.ts.map +1 -0
- package/dist/src/hooks/spec-bridge.js +97 -0
- package/dist/src/hooks/spec-bridge.js.map +1 -0
- package/dist/src/hooks/spec-injector.d.ts.map +1 -1
- package/dist/src/hooks/spec-injector.js +18 -12
- package/dist/src/hooks/spec-injector.js.map +1 -1
- package/dist/src/hooks/statusline.d.ts.map +1 -1
- package/dist/src/hooks/statusline.js +6 -3
- package/dist/src/hooks/statusline.js.map +1 -1
- package/dist/src/team/phase-orchestrator.d.ts +52 -0
- package/dist/src/team/phase-orchestrator.d.ts.map +1 -0
- package/dist/src/team/phase-orchestrator.js +165 -0
- package/dist/src/team/phase-orchestrator.js.map +1 -0
- package/dist/src/team/phase-types.d.ts +51 -0
- package/dist/src/team/phase-types.d.ts.map +1 -0
- package/dist/src/team/phase-types.js +41 -0
- package/dist/src/team/phase-types.js.map +1 -0
- package/dist/src/tools/index.d.ts.map +1 -1
- package/dist/src/tools/index.js +6 -0
- package/dist/src/tools/index.js.map +1 -1
- package/dist/src/tools/merge-validator.d.ts.map +1 -1
- package/dist/src/tools/merge-validator.js +114 -16
- package/dist/src/tools/merge-validator.js.map +1 -1
- package/dist/src/tools/spec-entry-parser.d.ts +56 -0
- package/dist/src/tools/spec-entry-parser.d.ts.map +1 -0
- package/dist/src/tools/spec-entry-parser.js +196 -0
- package/dist/src/tools/spec-entry-parser.js.map +1 -0
- package/dist/src/tools/spec-init.d.ts.map +1 -1
- package/dist/src/tools/spec-init.js +66 -92
- package/dist/src/tools/spec-init.js.map +1 -1
- package/dist/src/tools/spec-keyword-index.d.ts +30 -0
- package/dist/src/tools/spec-keyword-index.d.ts.map +1 -0
- package/dist/src/tools/spec-keyword-index.js +101 -0
- package/dist/src/tools/spec-keyword-index.js.map +1 -0
- package/dist/src/tools/spec-loader.d.ts +3 -3
- package/dist/src/tools/spec-loader.d.ts.map +1 -1
- package/dist/src/tools/spec-loader.js +49 -23
- package/dist/src/tools/spec-loader.js.map +1 -1
- package/dist/src/tools/team-agents.d.ts +27 -0
- package/dist/src/tools/team-agents.d.ts.map +1 -0
- package/dist/src/tools/team-agents.js +362 -0
- package/dist/src/tools/team-agents.js.map +1 -0
- package/dist/src/tools/team-mailbox.d.ts +40 -0
- package/dist/src/tools/team-mailbox.d.ts.map +1 -0
- package/dist/src/tools/team-mailbox.js +384 -0
- package/dist/src/tools/team-mailbox.js.map +1 -0
- package/dist/src/tools/team-msg.d.ts +17 -8
- package/dist/src/tools/team-msg.d.ts.map +1 -1
- package/dist/src/tools/team-msg.js +110 -13
- package/dist/src/tools/team-msg.js.map +1 -1
- package/dist/src/tools/team-tasks-mcp.d.ts +27 -0
- package/dist/src/tools/team-tasks-mcp.d.ts.map +1 -0
- package/dist/src/tools/team-tasks-mcp.js +408 -0
- package/dist/src/tools/team-tasks-mcp.js.map +1 -0
- package/package.json +2 -1
- package/shared/agent-types.ts +4 -0
- package/templates/worktree-scope.json +9 -10
- package/templates/worktrees.json +26 -27
- package/workflows/analyze.md +816 -816
- package/workflows/brainstorm.md +480 -471
- package/workflows/codebase-rebuild.md +332 -332
- package/workflows/codebase-refresh.md +240 -240
- package/workflows/debug.md +16 -6
- package/workflows/execute.md +1 -1
- package/workflows/fork.md +100 -36
- package/workflows/harvest.md +420 -420
- package/workflows/integration-test.md +355 -343
- package/workflows/issue-discover.md +414 -414
- package/workflows/issue.md +14 -4
- package/workflows/learn.md +19 -5
- package/workflows/maestro.md +1 -0
- package/workflows/map.md +111 -111
- package/workflows/merge.md +113 -55
- package/workflows/milestone-complete.md +176 -176
- package/workflows/plan.md +1 -1
- package/workflows/quick.md +497 -497
- package/workflows/refactor.md +300 -300
- package/workflows/retrospective.md +61 -22
- package/workflows/review.md +17 -4
- package/workflows/roadmap.md +335 -335
- package/workflows/spec-generate.md +640 -640
- package/workflows/specs-add.md +46 -81
- package/workflows/specs-load.md +15 -17
- package/workflows/specs-setup.md +40 -161
- package/workflows/test.md +12 -2
- package/workflows/ui-style.md +9 -2
- package/dashboard/dist/assets/ChatInput-Bvr-FeEq.js +0 -49
- package/dashboard/dist/assets/ChatPage-D9zTkJZo.js +0 -22
- package/dashboard/dist/assets/KanbanPage-C8USth6H.js +0 -21
- package/dashboard/dist/assets/RequirementBoardPage-Bf1trzqs.js +0 -11
- package/dashboard/dist/assets/SpecsPage-9lwxKT27.js +0 -36
- package/dashboard/dist/assets/SupervisorPage-SusdfHFq.js +0 -6
- package/dashboard/dist/assets/TeamsPage-DsuM6OwC.js +0 -6
- package/dashboard/dist/assets/arrow-left-Bqtb2hle.js +0 -6
- package/dashboard/dist/assets/index-DWG-WrzT.js +0 -231
- package/dashboard/dist/assets/index-GUNJodSR.css +0 -1
- package/dashboard/dist/assets/table-llyEtj-7.js +0 -6
|
@@ -16,21 +16,21 @@ const SEED_DOCS = [
|
|
|
16
16
|
title: 'Coding Conventions',
|
|
17
17
|
readMode: 'required',
|
|
18
18
|
priority: 'high',
|
|
19
|
-
category: '
|
|
19
|
+
category: 'coding',
|
|
20
20
|
keywords: ['style', 'naming', 'import', 'pattern', 'convention', 'formatting'],
|
|
21
21
|
},
|
|
22
|
-
body: `# Coding Conventions
|
|
23
|
-
|
|
24
|
-
## Formatting
|
|
25
|
-
|
|
26
|
-
## Naming
|
|
27
|
-
|
|
28
|
-
## Imports
|
|
29
|
-
|
|
30
|
-
## Patterns
|
|
31
|
-
|
|
32
|
-
##
|
|
33
|
-
|
|
22
|
+
body: `# Coding Conventions
|
|
23
|
+
|
|
24
|
+
## Formatting
|
|
25
|
+
|
|
26
|
+
## Naming
|
|
27
|
+
|
|
28
|
+
## Imports
|
|
29
|
+
|
|
30
|
+
## Patterns
|
|
31
|
+
|
|
32
|
+
## Entries
|
|
33
|
+
|
|
34
34
|
`,
|
|
35
35
|
},
|
|
36
36
|
{
|
|
@@ -39,53 +39,53 @@ const SEED_DOCS = [
|
|
|
39
39
|
title: 'Architecture Constraints',
|
|
40
40
|
readMode: 'required',
|
|
41
41
|
priority: 'high',
|
|
42
|
-
category: '
|
|
42
|
+
category: 'arch',
|
|
43
43
|
keywords: ['architecture', 'module', 'layer', 'boundary', 'dependency', 'structure'],
|
|
44
44
|
},
|
|
45
|
-
body: `# Architecture Constraints
|
|
46
|
-
|
|
47
|
-
## Module Structure
|
|
48
|
-
|
|
49
|
-
## Layer Boundaries
|
|
50
|
-
|
|
51
|
-
## Dependency Rules
|
|
52
|
-
|
|
53
|
-
## Technology Constraints
|
|
54
|
-
|
|
55
|
-
##
|
|
56
|
-
|
|
45
|
+
body: `# Architecture Constraints
|
|
46
|
+
|
|
47
|
+
## Module Structure
|
|
48
|
+
|
|
49
|
+
## Layer Boundaries
|
|
50
|
+
|
|
51
|
+
## Dependency Rules
|
|
52
|
+
|
|
53
|
+
## Technology Constraints
|
|
54
|
+
|
|
55
|
+
## Entries
|
|
56
|
+
|
|
57
57
|
`,
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
|
-
filename: '
|
|
60
|
+
filename: 'learnings.md',
|
|
61
61
|
frontmatter: {
|
|
62
|
-
title: '
|
|
63
|
-
readMode: '
|
|
62
|
+
title: 'Learnings',
|
|
63
|
+
readMode: 'optional',
|
|
64
64
|
priority: 'medium',
|
|
65
|
-
category: '
|
|
66
|
-
keywords: ['
|
|
65
|
+
category: 'learning',
|
|
66
|
+
keywords: ['bug', 'lesson', 'gotcha', 'learning'],
|
|
67
67
|
},
|
|
68
|
-
body: `#
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
##
|
|
73
|
-
|
|
68
|
+
body: `# Learnings
|
|
69
|
+
|
|
70
|
+
Add entries with: \`/spec-add learning <description>\`
|
|
71
|
+
|
|
72
|
+
## Entries
|
|
73
|
+
|
|
74
74
|
`,
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
|
-
filename: '
|
|
77
|
+
filename: 'quality-rules.md',
|
|
78
78
|
frontmatter: {
|
|
79
|
-
title: '
|
|
80
|
-
readMode: '
|
|
79
|
+
title: 'Quality Rules',
|
|
80
|
+
readMode: 'required',
|
|
81
81
|
priority: 'medium',
|
|
82
|
-
category: '
|
|
83
|
-
keywords: ['
|
|
82
|
+
category: 'quality',
|
|
83
|
+
keywords: ['quality', 'lint', 'rule', 'enforcement'],
|
|
84
84
|
},
|
|
85
|
-
body: `#
|
|
86
|
-
|
|
87
|
-
## Entries
|
|
88
|
-
|
|
85
|
+
body: `# Quality Rules
|
|
86
|
+
|
|
87
|
+
## Entries
|
|
88
|
+
|
|
89
89
|
`,
|
|
90
90
|
},
|
|
91
91
|
{
|
|
@@ -97,13 +97,10 @@ const SEED_DOCS = [
|
|
|
97
97
|
category: 'debug',
|
|
98
98
|
keywords: ['debug', 'issue', 'workaround', 'root-cause', 'gotcha'],
|
|
99
99
|
},
|
|
100
|
-
body: `# Debug Notes
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
## Entries
|
|
106
|
-
|
|
100
|
+
body: `# Debug Notes
|
|
101
|
+
|
|
102
|
+
## Entries
|
|
103
|
+
|
|
107
104
|
`,
|
|
108
105
|
},
|
|
109
106
|
{
|
|
@@ -115,18 +112,18 @@ Add entries with: \`/spec-add debug <description>\`
|
|
|
115
112
|
category: 'test',
|
|
116
113
|
keywords: ['test', 'coverage', 'mock', 'fixture', 'assertion', 'framework'],
|
|
117
114
|
},
|
|
118
|
-
body: `# Test Conventions
|
|
119
|
-
|
|
120
|
-
## Framework
|
|
121
|
-
|
|
122
|
-
## Directory Structure
|
|
123
|
-
|
|
124
|
-
## Naming Conventions
|
|
125
|
-
|
|
126
|
-
## Patterns
|
|
127
|
-
|
|
128
|
-
##
|
|
129
|
-
|
|
115
|
+
body: `# Test Conventions
|
|
116
|
+
|
|
117
|
+
## Framework
|
|
118
|
+
|
|
119
|
+
## Directory Structure
|
|
120
|
+
|
|
121
|
+
## Naming Conventions
|
|
122
|
+
|
|
123
|
+
## Patterns
|
|
124
|
+
|
|
125
|
+
## Entries
|
|
126
|
+
|
|
130
127
|
`,
|
|
131
128
|
},
|
|
132
129
|
{
|
|
@@ -138,33 +135,10 @@ Add entries with: \`/spec-add debug <description>\`
|
|
|
138
135
|
category: 'review',
|
|
139
136
|
keywords: ['review', 'checklist', 'gate', 'approval', 'standard'],
|
|
140
137
|
},
|
|
141
|
-
body: `# Review Standards
|
|
142
|
-
|
|
143
|
-
##
|
|
144
|
-
|
|
145
|
-
## Quality Gates
|
|
146
|
-
|
|
147
|
-
## Manual Additions
|
|
148
|
-
|
|
149
|
-
`,
|
|
150
|
-
},
|
|
151
|
-
{
|
|
152
|
-
filename: 'validation-rules.md',
|
|
153
|
-
frontmatter: {
|
|
154
|
-
title: 'Validation Rules',
|
|
155
|
-
readMode: 'required',
|
|
156
|
-
priority: 'high',
|
|
157
|
-
category: 'validation',
|
|
158
|
-
keywords: ['validation', 'verification', 'acceptance', 'criteria', 'check'],
|
|
159
|
-
},
|
|
160
|
-
body: `# Validation Rules
|
|
161
|
-
|
|
162
|
-
## Verification Criteria
|
|
163
|
-
|
|
164
|
-
## Acceptance Standards
|
|
165
|
-
|
|
166
|
-
## Manual Additions
|
|
167
|
-
|
|
138
|
+
body: `# Review Standards
|
|
139
|
+
|
|
140
|
+
## Entries
|
|
141
|
+
|
|
168
142
|
`,
|
|
169
143
|
},
|
|
170
144
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-init.js","sourceRoot":"","sources":["../../../src/tools/spec-init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAwBjC,+EAA+E;AAC/E,iBAAiB;AACjB,+EAA+E;AAE/E,MAAM,SAAS,GAAc;IAC3B;QACE,QAAQ,EAAE,uBAAuB;QACjC,WAAW,EAAE;YACX,KAAK,EAAE,oBAAoB;YAC3B,QAAQ,EAAE,UAAU;YACpB,QAAQ,EAAE,MAAM;YAChB,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"spec-init.js","sourceRoot":"","sources":["../../../src/tools/spec-init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec Keyword Index
|
|
3
|
+
*
|
|
4
|
+
* Builds an inverted index from keyword → spec entries.
|
|
5
|
+
* Scans all `.workflow/specs/*.md` files, parses <spec-entry> tags,
|
|
6
|
+
* and indexes by keyword for fast lookup.
|
|
7
|
+
*/
|
|
8
|
+
export interface IndexedEntry {
|
|
9
|
+
file: string;
|
|
10
|
+
category: string;
|
|
11
|
+
keywords: string[];
|
|
12
|
+
content: string;
|
|
13
|
+
title: string;
|
|
14
|
+
id: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Build a keyword → entries inverted index from all spec files.
|
|
18
|
+
* Each keyword maps to an array of matching entries.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildKeywordIndex(projectPath: string): Map<string, IndexedEntry[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Look up entries matching a keyword.
|
|
23
|
+
*/
|
|
24
|
+
export declare function lookupKeyword(index: Map<string, IndexedEntry[]>, keyword: string): IndexedEntry[];
|
|
25
|
+
/**
|
|
26
|
+
* Look up entries matching any of the given keywords.
|
|
27
|
+
* Returns deduplicated entries (by id).
|
|
28
|
+
*/
|
|
29
|
+
export declare function lookupKeywords(index: Map<string, IndexedEntry[]>, keywords: string[]): IndexedEntry[];
|
|
30
|
+
//# sourceMappingURL=spec-keyword-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-keyword-index.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAMD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAgDlF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,YAAY,EAAE,CAEjG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,EAAE,CAerG"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spec Keyword Index
|
|
3
|
+
*
|
|
4
|
+
* Builds an inverted index from keyword → spec entries.
|
|
5
|
+
* Scans all `.workflow/specs/*.md` files, parses <spec-entry> tags,
|
|
6
|
+
* and indexes by keyword for fast lookup.
|
|
7
|
+
*/
|
|
8
|
+
import { readFileSync, existsSync, readdirSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { parseSpecEntries } from './spec-entry-parser.js';
|
|
11
|
+
import { CATEGORY_MAP } from './spec-loader.js';
|
|
12
|
+
// ============================================================================
|
|
13
|
+
// Public API
|
|
14
|
+
// ============================================================================
|
|
15
|
+
/**
|
|
16
|
+
* Build a keyword → entries inverted index from all spec files.
|
|
17
|
+
* Each keyword maps to an array of matching entries.
|
|
18
|
+
*/
|
|
19
|
+
export function buildKeywordIndex(projectPath) {
|
|
20
|
+
const index = new Map();
|
|
21
|
+
const specsDir = join(projectPath, '.workflow', 'specs');
|
|
22
|
+
if (!existsSync(specsDir))
|
|
23
|
+
return index;
|
|
24
|
+
let files;
|
|
25
|
+
try {
|
|
26
|
+
files = readdirSync(specsDir).filter(f => f.endsWith('.md'));
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return index;
|
|
30
|
+
}
|
|
31
|
+
for (const file of files) {
|
|
32
|
+
const filePath = join(specsDir, file);
|
|
33
|
+
let raw;
|
|
34
|
+
try {
|
|
35
|
+
raw = readFileSync(filePath, 'utf-8');
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
const body = stripFrontmatter(raw);
|
|
41
|
+
const { entries } = parseSpecEntries(body);
|
|
42
|
+
const fileCategory = CATEGORY_MAP[file] ?? 'learning';
|
|
43
|
+
for (const entry of entries) {
|
|
44
|
+
const indexed = {
|
|
45
|
+
file,
|
|
46
|
+
category: entry.category || fileCategory,
|
|
47
|
+
keywords: entry.keywords,
|
|
48
|
+
content: entry.content,
|
|
49
|
+
title: entry.title,
|
|
50
|
+
id: `${file}:${entry.lineStart}`,
|
|
51
|
+
};
|
|
52
|
+
for (const kw of entry.keywords) {
|
|
53
|
+
const list = index.get(kw);
|
|
54
|
+
if (list) {
|
|
55
|
+
list.push(indexed);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
index.set(kw, [indexed]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return index;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Look up entries matching a keyword.
|
|
67
|
+
*/
|
|
68
|
+
export function lookupKeyword(index, keyword) {
|
|
69
|
+
return index.get(keyword.toLowerCase()) ?? [];
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Look up entries matching any of the given keywords.
|
|
73
|
+
* Returns deduplicated entries (by id).
|
|
74
|
+
*/
|
|
75
|
+
export function lookupKeywords(index, keywords) {
|
|
76
|
+
const seen = new Set();
|
|
77
|
+
const results = [];
|
|
78
|
+
for (const kw of keywords) {
|
|
79
|
+
const entries = index.get(kw.toLowerCase()) ?? [];
|
|
80
|
+
for (const entry of entries) {
|
|
81
|
+
if (!seen.has(entry.id)) {
|
|
82
|
+
seen.add(entry.id);
|
|
83
|
+
results.push(entry);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
// ============================================================================
|
|
90
|
+
// Internal
|
|
91
|
+
// ============================================================================
|
|
92
|
+
function stripFrontmatter(raw) {
|
|
93
|
+
const trimmed = raw.trimStart();
|
|
94
|
+
if (!trimmed.startsWith('---'))
|
|
95
|
+
return raw;
|
|
96
|
+
const endIdx = trimmed.indexOf('\n---', 3);
|
|
97
|
+
if (endIdx === -1)
|
|
98
|
+
return raw;
|
|
99
|
+
return trimmed.substring(endIdx + 4).trim();
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=spec-keyword-index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-keyword-index.js","sourceRoot":"","sources":["../../../src/tools/spec-keyword-index.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
* Reads .workflow/specs/*.md, filters by category via static mapping,
|
|
6
6
|
* returns concatenated content.
|
|
7
7
|
*/
|
|
8
|
-
export type SpecCategory = '
|
|
8
|
+
export type SpecCategory = 'coding' | 'arch' | 'quality' | 'debug' | 'test' | 'review' | 'learning';
|
|
9
9
|
export interface SpecLoadResult {
|
|
10
10
|
content: string;
|
|
11
11
|
matchedSpecs: string[];
|
|
12
12
|
totalLoaded: number;
|
|
13
13
|
}
|
|
14
|
-
export declare const CATEGORY_MAP: Record<string, SpecCategory
|
|
14
|
+
export declare const CATEGORY_MAP: Record<string, SpecCategory>;
|
|
15
15
|
export declare const TEAM_SPECS_DIR = ".workflow/collab/specs";
|
|
16
16
|
/**
|
|
17
17
|
* Load spec files from one or more directories.
|
|
@@ -27,5 +27,5 @@ export declare const TEAM_SPECS_DIR = ".workflow/collab/specs";
|
|
|
27
27
|
* When `uid` is absent, only the baseline directory is scanned — identical
|
|
28
28
|
* to the original single-directory behavior.
|
|
29
29
|
*/
|
|
30
|
-
export declare function loadSpecs(projectPath: string, category?: SpecCategory, uid?: string): SpecLoadResult;
|
|
30
|
+
export declare function loadSpecs(projectPath: string, category?: SpecCategory, uid?: string, keyword?: string): SpecLoadResult;
|
|
31
31
|
//# sourceMappingURL=spec-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"spec-loader.d.ts","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAEpG,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAMD,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAQrD,CAAC;AAGF,eAAO,MAAM,cAAc,2BAA2B,CAAC;AAavD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,CA6BtH"}
|
|
@@ -7,21 +7,19 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import { readFileSync, existsSync, readdirSync } from 'node:fs';
|
|
9
9
|
import { join } from 'node:path';
|
|
10
|
+
import { parseSpecEntries, formatSpecEntries } from './spec-entry-parser.js';
|
|
10
11
|
// ============================================================================
|
|
11
12
|
// Filename → Category mapping (single source of truth)
|
|
12
13
|
// ============================================================================
|
|
13
14
|
export const CATEGORY_MAP = {
|
|
14
|
-
'coding-conventions.md':
|
|
15
|
-
'architecture-constraints.md':
|
|
16
|
-
'quality-rules.md':
|
|
17
|
-
'debug-notes.md':
|
|
18
|
-
'test-conventions.md':
|
|
19
|
-
'review-standards.md':
|
|
20
|
-
'
|
|
21
|
-
'learnings.md': ['general'],
|
|
15
|
+
'coding-conventions.md': 'coding',
|
|
16
|
+
'architecture-constraints.md': 'arch',
|
|
17
|
+
'quality-rules.md': 'quality',
|
|
18
|
+
'debug-notes.md': 'debug',
|
|
19
|
+
'test-conventions.md': 'test',
|
|
20
|
+
'review-standards.md': 'review',
|
|
21
|
+
'learnings.md': 'learning',
|
|
22
22
|
};
|
|
23
|
-
// learnings.md is always included regardless of category filter
|
|
24
|
-
const ALWAYS_INCLUDE = 'learnings.md';
|
|
25
23
|
const SPECS_DIR = '.workflow/specs';
|
|
26
24
|
export const TEAM_SPECS_DIR = '.workflow/collab/specs';
|
|
27
25
|
/** Layer labels used as section headers when multi-directory scanning is active. */
|
|
@@ -47,14 +45,14 @@ const LAYER_LABELS = {
|
|
|
47
45
|
* When `uid` is absent, only the baseline directory is scanned — identical
|
|
48
46
|
* to the original single-directory behavior.
|
|
49
47
|
*/
|
|
50
|
-
export function loadSpecs(projectPath, category, uid) {
|
|
48
|
+
export function loadSpecs(projectPath, category, uid, keyword) {
|
|
51
49
|
// Build ordered list of (directory, label) pairs to scan
|
|
52
50
|
const layers = buildLayers(projectPath, uid);
|
|
53
51
|
const allSections = [];
|
|
54
52
|
const allMatched = [];
|
|
55
53
|
let totalCount = 0;
|
|
56
54
|
for (const { dir, label } of layers) {
|
|
57
|
-
const { sections, matched } = loadFromDir(dir, category);
|
|
55
|
+
const { sections, matched } = loadFromDir(dir, category, keyword);
|
|
58
56
|
if (sections.length === 0)
|
|
59
57
|
continue;
|
|
60
58
|
// Only add layer headers when multi-layer mode is active (uid provided)
|
|
@@ -92,7 +90,7 @@ function buildLayers(projectPath, uid) {
|
|
|
92
90
|
* Load spec files from a single directory. Returns empty arrays if the
|
|
93
91
|
* directory does not exist or is unreadable.
|
|
94
92
|
*/
|
|
95
|
-
function loadFromDir(specsDir, category) {
|
|
93
|
+
function loadFromDir(specsDir, category, keyword) {
|
|
96
94
|
if (!existsSync(specsDir))
|
|
97
95
|
return { sections: [], matched: [] };
|
|
98
96
|
let files;
|
|
@@ -118,8 +116,18 @@ function loadFromDir(specsDir, category) {
|
|
|
118
116
|
const body = stripFrontmatter(raw).trim();
|
|
119
117
|
if (!body)
|
|
120
118
|
continue;
|
|
121
|
-
|
|
122
|
-
|
|
119
|
+
if (keyword) {
|
|
120
|
+
// Entry-level keyword filtering
|
|
121
|
+
const filtered = filterByKeyword(body, keyword);
|
|
122
|
+
if (filtered) {
|
|
123
|
+
sections.push(filtered);
|
|
124
|
+
matched.push(file);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
sections.push(body);
|
|
129
|
+
matched.push(file);
|
|
130
|
+
}
|
|
123
131
|
}
|
|
124
132
|
return { sections, matched };
|
|
125
133
|
}
|
|
@@ -130,14 +138,32 @@ function shouldInclude(filename, category) {
|
|
|
130
138
|
// No category filter → load all
|
|
131
139
|
if (!category)
|
|
132
140
|
return true;
|
|
133
|
-
|
|
134
|
-
if (
|
|
135
|
-
return
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
+
const cat = CATEGORY_MAP[filename];
|
|
142
|
+
if (cat)
|
|
143
|
+
return cat === category;
|
|
144
|
+
// Unknown files: include only when no category filter
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Filter file content by keyword. Returns matched entry content or null.
|
|
149
|
+
* Handles both <spec-entry> tags (keyword attribute match) and legacy entries (text grep).
|
|
150
|
+
*/
|
|
151
|
+
function filterByKeyword(body, keyword) {
|
|
152
|
+
const kw = keyword.toLowerCase();
|
|
153
|
+
const { entries, legacy } = parseSpecEntries(body);
|
|
154
|
+
const matchedSections = [];
|
|
155
|
+
// New-format: match by keywords attribute
|
|
156
|
+
const matchedEntries = entries.filter(e => e.keywords.includes(kw));
|
|
157
|
+
if (matchedEntries.length > 0) {
|
|
158
|
+
matchedSections.push(formatSpecEntries(matchedEntries));
|
|
159
|
+
}
|
|
160
|
+
// Legacy: grep text match
|
|
161
|
+
for (const leg of legacy) {
|
|
162
|
+
if (leg.content.toLowerCase().includes(kw)) {
|
|
163
|
+
matchedSections.push(leg.content);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return matchedSections.length > 0 ? matchedSections.join('\n\n---\n\n') : null;
|
|
141
167
|
}
|
|
142
168
|
function stripFrontmatter(raw) {
|
|
143
169
|
const trimmed = raw.trimStart();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-loader.js","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-loader.js","sourceRoot":"","sources":["../../../src/tools/spec-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Team Agents - MCP tools for agent lifecycle management via delegate broker
|
|
3
|
+
*
|
|
4
|
+
* Tools:
|
|
5
|
+
* - team_spawn_agent: Spawn a new agent (register session + create job)
|
|
6
|
+
* - team_shutdown_agent: Cancel a running agent's delegate job
|
|
7
|
+
* - team_remove_agent: Remove agent from team config
|
|
8
|
+
* - team_members: List team members with live status from broker
|
|
9
|
+
*
|
|
10
|
+
* Storage: .workflow/.team/{session-id}/members.json
|
|
11
|
+
*
|
|
12
|
+
* Integration:
|
|
13
|
+
* - Delegate broker for job lifecycle (registerSession, publishEvent, requestCancel)
|
|
14
|
+
* - Team config (members.json) for persistent member registry
|
|
15
|
+
*/
|
|
16
|
+
import type { ToolSchema, CcwToolResult } from '../types/tool-schema.js';
|
|
17
|
+
export interface TeamMember {
|
|
18
|
+
role: string;
|
|
19
|
+
tool: string;
|
|
20
|
+
prompt: string;
|
|
21
|
+
job_id: string;
|
|
22
|
+
exec_id: string;
|
|
23
|
+
spawned_at: string;
|
|
24
|
+
}
|
|
25
|
+
export declare const schema: ToolSchema;
|
|
26
|
+
export declare function handler(params: Record<string, unknown>): Promise<CcwToolResult>;
|
|
27
|
+
//# sourceMappingURL=team-agents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team-agents.d.ts","sourceRoot":"","sources":["../../../src/tools/team-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAezE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAiTD,eAAO,MAAM,MAAM,EAAE,UAoDpB,CAAC;AAMF,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,aAAa,CAAC,CAuCxB"}
|