@arimakouyou/spec-workflow-mcp 2.2.7
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-plugin/.mcp.json +8 -0
- package/.claude-plugin/agents/code-simplifier.md +80 -0
- package/.claude-plugin/agents/integ-test-auditor.md +91 -0
- package/.claude-plugin/agents/integ-test-worker.md +73 -0
- package/.claude-plugin/agents/parallel-worker.md +136 -0
- package/.claude-plugin/agents/review-worker.md +279 -0
- package/.claude-plugin/agents/unit-test-engineer.md +148 -0
- package/.claude-plugin/agents/wave-harness-worker.md +158 -0
- package/.claude-plugin/hooks/hooks.json +16 -0
- package/.claude-plugin/hooks/tasks-read-guard.sh +17 -0
- package/.claude-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +11 -0
- package/.claude-plugin/rules/axum.md +154 -0
- package/.claude-plugin/rules/cargo-toml.md +63 -0
- package/.claude-plugin/rules/context7.md +17 -0
- package/.claude-plugin/rules/design-conformance.md +82 -0
- package/.claude-plugin/rules/design-principles.md +53 -0
- package/.claude-plugin/rules/diesel.md +176 -0
- package/.claude-plugin/rules/feedback-loop.md +33 -0
- package/.claude-plugin/rules/leptos.md +319 -0
- package/.claude-plugin/rules/project-architecture.md +134 -0
- package/.claude-plugin/rules/quality-checks.md +265 -0
- package/.claude-plugin/rules/rust-style.md +242 -0
- package/.claude-plugin/rules/security.md +67 -0
- package/.claude-plugin/rules/spec-workflow-enforcement.md +47 -0
- package/.claude-plugin/rules/valkey.md +167 -0
- package/.claude-plugin/skills/integration-test/SKILL.md +230 -0
- package/.claude-plugin/skills/integration-test/references/auditor-prompt.md +78 -0
- package/.claude-plugin/skills/integration-test/references/external-api-mock.md +98 -0
- package/.claude-plugin/skills/integration-test/references/fixture-catalog.md +155 -0
- package/.claude-plugin/skills/integration-test/references/parallel-execution.md +124 -0
- package/.claude-plugin/skills/integration-test/references/quality-gate.md +80 -0
- package/.claude-plugin/skills/integration-test/references/test-case-design.md +88 -0
- package/.claude-plugin/skills/integration-test/references/test-patterns.md +215 -0
- package/.claude-plugin/skills/integration-test/references/whiteboard-template.md +81 -0
- package/.claude-plugin/skills/integration-test/references/worker-prompt.md +70 -0
- package/.claude-plugin/skills/knowhow-capture/SKILL.md +143 -0
- package/.claude-plugin/skills/phase-review-team/SKILL.md +380 -0
- package/.claude-plugin/skills/spec-design/SKILL.md +282 -0
- package/.claude-plugin/skills/spec-e2e-implement/SKILL.md +259 -0
- package/.claude-plugin/skills/spec-impl-code/SKILL.md +101 -0
- package/.claude-plugin/skills/spec-impl-review/SKILL.md +115 -0
- package/.claude-plugin/skills/spec-impl-test-run/SKILL.md +98 -0
- package/.claude-plugin/skills/spec-impl-test-write/SKILL.md +121 -0
- package/.claude-plugin/skills/spec-implement/SKILL.md +822 -0
- package/.claude-plugin/skills/spec-requirements/SKILL.md +130 -0
- package/.claude-plugin/skills/spec-review/SKILL.md +274 -0
- package/.claude-plugin/skills/spec-tasks/SKILL.md +372 -0
- package/.claude-plugin/skills/spec-test-design/SKILL.md +233 -0
- package/.claude-plugin/skills/tdd-skills/SKILL.md +95 -0
- package/.claude-plugin/skills/tdd-skills/references/advanced-techniques.md +49 -0
- package/.claude-plugin/skills/tdd-skills/references/green-strategies.md +70 -0
- package/.claude-plugin/skills/tdd-skills/references/tdd-and-design.md +48 -0
- package/.claude-plugin/skills/tdd-skills/references/test-design.md +43 -0
- package/.claude-plugin/skills/tdd-skills/references/test-doubles.md +53 -0
- package/.claude-plugin/skills/tdd-skills/references/test-patterns.md +40 -0
- package/.claude-plugin/skills/tdd-skills-rust/SKILL.md +128 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/advanced-techniques.md +205 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/green-strategies.md +166 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/tdd-and-design.md +215 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/test-design.md +128 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/test-doubles.md +208 -0
- package/.claude-plugin/skills/tdd-skills-rust/references/test-patterns.md +223 -0
- package/.claude-plugin/with-dashboard/.mcp.json +8 -0
- package/.claude-plugin/with-dashboard/plugin.json +10 -0
- package/CHANGELOG.md +1007 -0
- package/LICENSE +674 -0
- package/README.ja.md +380 -0
- package/README.md +437 -0
- package/dist/__tests__/config.test.d.ts +2 -0
- package/dist/__tests__/config.test.d.ts.map +1 -0
- package/dist/__tests__/config.test.js +264 -0
- package/dist/__tests__/config.test.js.map +1 -0
- package/dist/__tests__/index-args.test.d.ts +2 -0
- package/dist/__tests__/index-args.test.d.ts.map +1 -0
- package/dist/__tests__/index-args.test.js +43 -0
- package/dist/__tests__/index-args.test.js.map +1 -0
- package/dist/__tests__/index-entrypoint.test.d.ts +2 -0
- package/dist/__tests__/index-entrypoint.test.d.ts.map +1 -0
- package/dist/__tests__/index-entrypoint.test.js +23 -0
- package/dist/__tests__/index-entrypoint.test.js.map +1 -0
- package/dist/config.d.ts +26 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +188 -0
- package/dist/config.js.map +1 -0
- package/dist/core/__tests__/git-utils.test.d.ts +2 -0
- package/dist/core/__tests__/git-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/git-utils.test.js +179 -0
- package/dist/core/__tests__/git-utils.test.js.map +1 -0
- package/dist/core/__tests__/mdx-validator.test.d.ts +2 -0
- package/dist/core/__tests__/mdx-validator.test.d.ts.map +1 -0
- package/dist/core/__tests__/mdx-validator.test.js +42 -0
- package/dist/core/__tests__/mdx-validator.test.js.map +1 -0
- package/dist/core/__tests__/path-utils.test.d.ts +2 -0
- package/dist/core/__tests__/path-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/path-utils.test.js +342 -0
- package/dist/core/__tests__/path-utils.test.js.map +1 -0
- package/dist/core/__tests__/project-registry.test.d.ts +2 -0
- package/dist/core/__tests__/project-registry.test.d.ts.map +1 -0
- package/dist/core/__tests__/project-registry.test.js +62 -0
- package/dist/core/__tests__/project-registry.test.js.map +1 -0
- package/dist/core/__tests__/security-utils.test.d.ts +2 -0
- package/dist/core/__tests__/security-utils.test.d.ts.map +1 -0
- package/dist/core/__tests__/security-utils.test.js +657 -0
- package/dist/core/__tests__/security-utils.test.js.map +1 -0
- package/dist/core/__tests__/task-parser.test.d.ts +2 -0
- package/dist/core/__tests__/task-parser.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-parser.test.js +222 -0
- package/dist/core/__tests__/task-parser.test.js.map +1 -0
- package/dist/core/__tests__/task-validator.test.d.ts +2 -0
- package/dist/core/__tests__/task-validator.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-validator.test.js +308 -0
- package/dist/core/__tests__/task-validator.test.js.map +1 -0
- package/dist/core/archive-service.d.ts +10 -0
- package/dist/core/archive-service.d.ts.map +1 -0
- package/dist/core/archive-service.js +99 -0
- package/dist/core/archive-service.js.map +1 -0
- package/dist/core/dashboard-session.d.ts +49 -0
- package/dist/core/dashboard-session.d.ts.map +1 -0
- package/dist/core/dashboard-session.js +132 -0
- package/dist/core/dashboard-session.js.map +1 -0
- package/dist/core/git-utils.d.ts +25 -0
- package/dist/core/git-utils.d.ts.map +1 -0
- package/dist/core/git-utils.js +87 -0
- package/dist/core/git-utils.js.map +1 -0
- package/dist/core/global-dir.d.ts +44 -0
- package/dist/core/global-dir.d.ts.map +1 -0
- package/dist/core/global-dir.js +74 -0
- package/dist/core/global-dir.js.map +1 -0
- package/dist/core/implementation-log-migrator.d.ts +41 -0
- package/dist/core/implementation-log-migrator.d.ts.map +1 -0
- package/dist/core/implementation-log-migrator.js +258 -0
- package/dist/core/implementation-log-migrator.js.map +1 -0
- package/dist/core/mdx-validator.d.ts +14 -0
- package/dist/core/mdx-validator.d.ts.map +1 -0
- package/dist/core/mdx-validator.js +34 -0
- package/dist/core/mdx-validator.js.map +1 -0
- package/dist/core/parser.d.ts +11 -0
- package/dist/core/parser.d.ts.map +1 -0
- package/dist/core/parser.js +128 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-utils.d.ts +68 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +302 -0
- package/dist/core/path-utils.js.map +1 -0
- package/dist/core/project-registry.d.ts +94 -0
- package/dist/core/project-registry.d.ts.map +1 -0
- package/dist/core/project-registry.js +297 -0
- package/dist/core/project-registry.js.map +1 -0
- package/dist/core/security-utils.d.ts +99 -0
- package/dist/core/security-utils.d.ts.map +1 -0
- package/dist/core/security-utils.js +275 -0
- package/dist/core/security-utils.js.map +1 -0
- package/dist/core/task-parser.d.ts +90 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +477 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/task-validator.d.ts +37 -0
- package/dist/core/task-validator.d.ts.map +1 -0
- package/dist/core/task-validator.js +499 -0
- package/dist/core/task-validator.js.map +1 -0
- package/dist/core/workspace-initializer.d.ts +16 -0
- package/dist/core/workspace-initializer.d.ts.map +1 -0
- package/dist/core/workspace-initializer.js +168 -0
- package/dist/core/workspace-initializer.js.map +1 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts +2 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js +78 -0
- package/dist/dashboard/__tests__/approval-storage-path-resolution.test.js.map +1 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts +2 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.js +115 -0
- package/dist/dashboard/__tests__/multi-server-approvals-content.test.js.map +1 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts +2 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.js +118 -0
- package/dist/dashboard/__tests__/watcher-error-handling.test.js.map +1 -0
- package/dist/dashboard/approval-storage.d.ts +139 -0
- package/dist/dashboard/approval-storage.d.ts.map +1 -0
- package/dist/dashboard/approval-storage.js +608 -0
- package/dist/dashboard/approval-storage.js.map +1 -0
- package/dist/dashboard/execution-history-manager.d.ts +52 -0
- package/dist/dashboard/execution-history-manager.d.ts.map +1 -0
- package/dist/dashboard/execution-history-manager.js +161 -0
- package/dist/dashboard/execution-history-manager.js.map +1 -0
- package/dist/dashboard/implementation-log-manager.d.ts +97 -0
- package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
- package/dist/dashboard/implementation-log-manager.js +617 -0
- package/dist/dashboard/implementation-log-manager.js.map +1 -0
- package/dist/dashboard/job-scheduler.d.ts +91 -0
- package/dist/dashboard/job-scheduler.d.ts.map +1 -0
- package/dist/dashboard/job-scheduler.js +321 -0
- package/dist/dashboard/job-scheduler.js.map +1 -0
- package/dist/dashboard/multi-server.d.ts +42 -0
- package/dist/dashboard/multi-server.d.ts.map +1 -0
- package/dist/dashboard/multi-server.js +1460 -0
- package/dist/dashboard/multi-server.js.map +1 -0
- package/dist/dashboard/parser.d.ts +18 -0
- package/dist/dashboard/parser.d.ts.map +1 -0
- package/dist/dashboard/parser.js +269 -0
- package/dist/dashboard/parser.js.map +1 -0
- package/dist/dashboard/project-manager.d.ts +82 -0
- package/dist/dashboard/project-manager.d.ts.map +1 -0
- package/dist/dashboard/project-manager.js +257 -0
- package/dist/dashboard/project-manager.js.map +1 -0
- package/dist/dashboard/public/assets/Inter-Bold-CD3Pr7BX.woff2 +0 -0
- package/dist/dashboard/public/assets/Inter-Medium-B_8v_WHh.woff2 +0 -0
- package/dist/dashboard/public/assets/Inter-Regular-DRVdRqcI.woff2 +0 -0
- package/dist/dashboard/public/assets/Inter-SemiBold-CtskMddL.woff2 +0 -0
- package/dist/dashboard/public/assets/JetBrainsMono-Bold-D4WEaHbo.woff2 +0 -0
- package/dist/dashboard/public/assets/JetBrainsMono-Medium-3S3k2nMz.woff2 +0 -0
- package/dist/dashboard/public/assets/JetBrainsMono-Regular-BQaDgvhP.woff2 +0 -0
- package/dist/dashboard/public/assets/Tableau10-B-NsZVaP.js +1 -0
- package/dist/dashboard/public/assets/apl-B4CMkyY2.js +1 -0
- package/dist/dashboard/public/assets/arc-a5wW942W.js +1 -0
- package/dist/dashboard/public/assets/array-BKyUJesY.js +1 -0
- package/dist/dashboard/public/assets/asciiarmor-Df11BRmG.js +1 -0
- package/dist/dashboard/public/assets/asn1-EdZsLKOL.js +1 -0
- package/dist/dashboard/public/assets/asterisk-B-8jnY81.js +1 -0
- package/dist/dashboard/public/assets/blockDiagram-c4efeb88-CvjTuK-w.js +118 -0
- package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/dashboard/public/assets/c4Diagram-c83219d4-NwVQo5kf.js +10 -0
- package/dist/dashboard/public/assets/channel-Bi16YZhk.js +1 -0
- package/dist/dashboard/public/assets/classDiagram-beda092f-BmSeXDdU.js +2 -0
- package/dist/dashboard/public/assets/classDiagram-v2-2358418a-D7GvvuPr.js +2 -0
- package/dist/dashboard/public/assets/clike-B9uivgTg.js +1 -0
- package/dist/dashboard/public/assets/clojure-BMjYHr_A.js +1 -0
- package/dist/dashboard/public/assets/clone-BpKTiq7P.js +1 -0
- package/dist/dashboard/public/assets/cmake-BQqOBYOt.js +1 -0
- package/dist/dashboard/public/assets/cobol-CWcv1MsR.js +1 -0
- package/dist/dashboard/public/assets/coffeescript-S37ZYGWr.js +1 -0
- package/dist/dashboard/public/assets/commonlisp-DBKNyK5s.js +1 -0
- package/dist/dashboard/public/assets/createText-1719965b-qASbqHUP.js +7 -0
- package/dist/dashboard/public/assets/crystal-SjHAIU92.js +1 -0
- package/dist/dashboard/public/assets/css-BnMrqG3P.js +1 -0
- package/dist/dashboard/public/assets/cypher-C_CwsFkJ.js +1 -0
- package/dist/dashboard/public/assets/d-pRatUO7H.js +1 -0
- package/dist/dashboard/public/assets/diff-DbItnlRl.js +1 -0
- package/dist/dashboard/public/assets/dockerfile-BKs6k2Af.js +1 -0
- package/dist/dashboard/public/assets/dtd-DF_7sFjM.js +1 -0
- package/dist/dashboard/public/assets/dylan-DwRh75JA.js +1 -0
- package/dist/dashboard/public/assets/ebnf-CDyGwa7X.js +1 -0
- package/dist/dashboard/public/assets/ecl-Cabwm37j.js +1 -0
- package/dist/dashboard/public/assets/edges-96097737-BItTSnH7.js +4 -0
- package/dist/dashboard/public/assets/eiffel-CnydiIhH.js +1 -0
- package/dist/dashboard/public/assets/elm-vLlmbW-K.js +1 -0
- package/dist/dashboard/public/assets/erDiagram-0228fc6a-DT224olg.js +51 -0
- package/dist/dashboard/public/assets/erlang-BNw1qcRV.js +1 -0
- package/dist/dashboard/public/assets/factor-kuTfRLto.js +1 -0
- package/dist/dashboard/public/assets/fcl-Kvtd6kyn.js +1 -0
- package/dist/dashboard/public/assets/flowDb-c6c81e3f-D9_ukKtv.js +10 -0
- package/dist/dashboard/public/assets/flowDiagram-50d868cf-CylE8siG.js +4 -0
- package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-B2O3JN7Y.js +1 -0
- package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-BCaqFKf3.js +139 -0
- package/dist/dashboard/public/assets/forth-Ffai-XNe.js +1 -0
- package/dist/dashboard/public/assets/fortran-DYz_wnZ1.js +1 -0
- package/dist/dashboard/public/assets/ganttDiagram-a2739b55-WQUL1QW_.js +257 -0
- package/dist/dashboard/public/assets/gas-Bneqetm1.js +1 -0
- package/dist/dashboard/public/assets/gherkin-heZmZLOM.js +1 -0
- package/dist/dashboard/public/assets/gitGraphDiagram-82fe8481-CttZrdmr.js +70 -0
- package/dist/dashboard/public/assets/graph-Ch-rVueN.js +1 -0
- package/dist/dashboard/public/assets/groovy-D9Dt4D0W.js +1 -0
- package/dist/dashboard/public/assets/haskell-Cw1EW3IL.js +1 -0
- package/dist/dashboard/public/assets/haxe-H-WmDvRZ.js +1 -0
- package/dist/dashboard/public/assets/http-DBlCnlav.js +1 -0
- package/dist/dashboard/public/assets/idl-BEugSyMb.js +1 -0
- package/dist/dashboard/public/assets/index--kbPpDKv.js +1 -0
- package/dist/dashboard/public/assets/index-3scDwWm6.js +1 -0
- package/dist/dashboard/public/assets/index-5325376f-BL2zVOJU.js +1 -0
- package/dist/dashboard/public/assets/index-BZdjbO25.js +1 -0
- package/dist/dashboard/public/assets/index-BmA_batZ.js +1 -0
- package/dist/dashboard/public/assets/index-Bu0u99kF.js +2 -0
- package/dist/dashboard/public/assets/index-Ch-lr7F4.js +1 -0
- package/dist/dashboard/public/assets/index-ClgWbdoq.js +1 -0
- package/dist/dashboard/public/assets/index-CzLwOMQ_.js +3 -0
- package/dist/dashboard/public/assets/index-DAOEjGO7.js +1 -0
- package/dist/dashboard/public/assets/index-DXqf0B9c.js +1 -0
- package/dist/dashboard/public/assets/index-DegWdR16.js +1 -0
- package/dist/dashboard/public/assets/index-DiHyYGim.js +1 -0
- package/dist/dashboard/public/assets/index-DlZtG7I5.js +1 -0
- package/dist/dashboard/public/assets/index-DmhGE2M8.js +1 -0
- package/dist/dashboard/public/assets/index-QEGvld4x.js +1 -0
- package/dist/dashboard/public/assets/index-RfZPGAJu.js +1 -0
- package/dist/dashboard/public/assets/index-UybBj_7u.js +319 -0
- package/dist/dashboard/public/assets/index-bVekzPnl.js +7 -0
- package/dist/dashboard/public/assets/index-f5bysQzW.css +1 -0
- package/dist/dashboard/public/assets/infoDiagram-8eee0895-DjzkkE3o.js +7 -0
- package/dist/dashboard/public/assets/init-Gi6I4Gst.js +1 -0
- package/dist/dashboard/public/assets/javascript-iXu5QeM3.js +1 -0
- package/dist/dashboard/public/assets/journeyDiagram-c64418c1-CxPZkNdB.js +139 -0
- package/dist/dashboard/public/assets/julia-DuME0IfC.js +1 -0
- package/dist/dashboard/public/assets/katex-XbL3y5x-.js +261 -0
- package/dist/dashboard/public/assets/layout-DX7DNTRm.js +1 -0
- package/dist/dashboard/public/assets/line-DfvpmKOn.js +1 -0
- package/dist/dashboard/public/assets/linear-gQbBPHO5.js +1 -0
- package/dist/dashboard/public/assets/livescript-BwQOo05w.js +1 -0
- package/dist/dashboard/public/assets/lua-BgMRiT3U.js +1 -0
- package/dist/dashboard/public/assets/mathematica-DTrFuWx2.js +1 -0
- package/dist/dashboard/public/assets/mbox-CNhZ1qSd.js +1 -0
- package/dist/dashboard/public/assets/mindmap-definition-8da855dc-CNxmpyG6.js +415 -0
- package/dist/dashboard/public/assets/mirc-CjQqDB4T.js +1 -0
- package/dist/dashboard/public/assets/mllike-CXdrOF99.js +1 -0
- package/dist/dashboard/public/assets/modelica-Dc1JOy9r.js +1 -0
- package/dist/dashboard/public/assets/mscgen-BA5vi2Kp.js +1 -0
- package/dist/dashboard/public/assets/mumps-BT43cFF4.js +1 -0
- package/dist/dashboard/public/assets/nginx-DdIZxoE0.js +1 -0
- package/dist/dashboard/public/assets/nsis-LdVXkNf5.js +1 -0
- package/dist/dashboard/public/assets/ntriples-BfvgReVJ.js +1 -0
- package/dist/dashboard/public/assets/octave-Ck1zUtKM.js +1 -0
- package/dist/dashboard/public/assets/ordinal-Cboi1Yqb.js +1 -0
- package/dist/dashboard/public/assets/oz-BzwKVEFT.js +1 -0
- package/dist/dashboard/public/assets/pascal--L3eBynH.js +1 -0
- package/dist/dashboard/public/assets/path-CbwjOpE9.js +1 -0
- package/dist/dashboard/public/assets/perl-CdXCOZ3F.js +1 -0
- package/dist/dashboard/public/assets/pieDiagram-a8764435-D-xy_NSA.js +35 -0
- package/dist/dashboard/public/assets/pig-CevX1Tat.js +1 -0
- package/dist/dashboard/public/assets/powershell-CFHJl5sT.js +1 -0
- package/dist/dashboard/public/assets/properties-C78fOPTZ.js +1 -0
- package/dist/dashboard/public/assets/protobuf-ChK-085T.js +1 -0
- package/dist/dashboard/public/assets/pug-DeIclll2.js +1 -0
- package/dist/dashboard/public/assets/puppet-DMA9R1ak.js +1 -0
- package/dist/dashboard/public/assets/python-BuPzkPfP.js +1 -0
- package/dist/dashboard/public/assets/q-pXgVlZs6.js +1 -0
- package/dist/dashboard/public/assets/quadrantDiagram-1e28029f-BoL2wzz0.js +7 -0
- package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
- package/dist/dashboard/public/assets/requirementDiagram-08caed73-BujFz0q1.js +52 -0
- package/dist/dashboard/public/assets/rpm-CTu-6PCP.js +1 -0
- package/dist/dashboard/public/assets/ruby-B2Rjki9n.js +1 -0
- package/dist/dashboard/public/assets/sankeyDiagram-a04cb91d-D03_NARm.js +8 -0
- package/dist/dashboard/public/assets/sas-B4kiWyti.js +1 -0
- package/dist/dashboard/public/assets/scheme-C41bIUwD.js +1 -0
- package/dist/dashboard/public/assets/sequenceDiagram-c5b8d532-B65eFcaT.js +122 -0
- package/dist/dashboard/public/assets/shell-CjFT_Tl9.js +1 -0
- package/dist/dashboard/public/assets/sieve-C3Gn_uJK.js +1 -0
- package/dist/dashboard/public/assets/simple-mode-GW_nhZxv.js +1 -0
- package/dist/dashboard/public/assets/smalltalk-CnHTOXQT.js +1 -0
- package/dist/dashboard/public/assets/solr-DehyRSwq.js +1 -0
- package/dist/dashboard/public/assets/sparql-DkYu6x3z.js +1 -0
- package/dist/dashboard/public/assets/spreadsheet-BCZA_wO0.js +1 -0
- package/dist/dashboard/public/assets/sql-D0XecflT.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-1ecb1508-BDbqu0Vl.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-CBHvk4b8.js +1 -0
- package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/dashboard/public/assets/styles-b4e223ce-CELsPqaO.js +160 -0
- package/dist/dashboard/public/assets/styles-ca3715f6-BRqMqT6F.js +207 -0
- package/dist/dashboard/public/assets/styles-d45a18b0-e8N-oLPy.js +116 -0
- package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
- package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-vNDtmQc-.js +1 -0
- package/dist/dashboard/public/assets/swift-BzpIVaGY.js +1 -0
- package/dist/dashboard/public/assets/tcl-DVfN8rqt.js +1 -0
- package/dist/dashboard/public/assets/textile-CnDTJFAw.js +1 -0
- package/dist/dashboard/public/assets/tiddlywiki-DO-Gjzrf.js +1 -0
- package/dist/dashboard/public/assets/tiki-DGYXhP31.js +1 -0
- package/dist/dashboard/public/assets/timeline-definition-faaaa080-Dh2_A5VU.js +61 -0
- package/dist/dashboard/public/assets/toml-Bm5Em-hy.js +1 -0
- package/dist/dashboard/public/assets/troff-wAsdV37c.js +1 -0
- package/dist/dashboard/public/assets/ttcn-CfJYG6tj.js +1 -0
- package/dist/dashboard/public/assets/ttcn-cfg-B9xdYoR4.js +1 -0
- package/dist/dashboard/public/assets/turtle-B1tBg_DP.js +1 -0
- package/dist/dashboard/public/assets/vb-CmGdzxic.js +1 -0
- package/dist/dashboard/public/assets/vbscript-BuJXcnF6.js +1 -0
- package/dist/dashboard/public/assets/velocity-D8B20fx6.js +1 -0
- package/dist/dashboard/public/assets/verilog-C6RDOZhf.js +1 -0
- package/dist/dashboard/public/assets/vhdl-lSbBsy5d.js +1 -0
- package/dist/dashboard/public/assets/webidl-ZXfAyPTL.js +1 -0
- package/dist/dashboard/public/assets/xquery-DzFWVndE.js +1 -0
- package/dist/dashboard/public/assets/xychartDiagram-f5964ef8-B76v1AVF.js +7 -0
- package/dist/dashboard/public/assets/yacas-BJ4BC0dw.js +1 -0
- package/dist/dashboard/public/assets/z80-Hz9HOZM7.js +1 -0
- package/dist/dashboard/public/claude-icon-dark.svg +1 -0
- package/dist/dashboard/public/claude-icon.svg +1 -0
- package/dist/dashboard/public/index.html +16 -0
- package/dist/dashboard/settings-manager.d.ts +47 -0
- package/dist/dashboard/settings-manager.d.ts.map +1 -0
- package/dist/dashboard/settings-manager.js +180 -0
- package/dist/dashboard/settings-manager.js.map +1 -0
- package/dist/dashboard/utils.d.ts +31 -0
- package/dist/dashboard/utils.d.ts.map +1 -0
- package/dist/dashboard/utils.js +102 -0
- package/dist/dashboard/utils.js.map +1 -0
- package/dist/dashboard/watcher.d.ts +32 -0
- package/dist/dashboard/watcher.d.ts.map +1 -0
- package/dist/dashboard/watcher.js +173 -0
- package/dist/dashboard/watcher.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +380 -0
- package/dist/index.js.map +1 -0
- package/dist/markdown/templates/design-template.md +126 -0
- package/dist/markdown/templates/product-template.md +51 -0
- package/dist/markdown/templates/requirements-template.md +50 -0
- package/dist/markdown/templates/structure-template.md +145 -0
- package/dist/markdown/templates/tasks-template.md +100 -0
- package/dist/markdown/templates/tech-template.md +99 -0
- package/dist/markdown/templates/test-design-template.md +221 -0
- package/dist/prompts/create-spec.d.ts +3 -0
- package/dist/prompts/create-spec.d.ts.map +1 -0
- package/dist/prompts/create-spec.js +97 -0
- package/dist/prompts/create-spec.js.map +1 -0
- package/dist/prompts/create-steering-doc.d.ts +3 -0
- package/dist/prompts/create-steering-doc.d.ts.map +1 -0
- package/dist/prompts/create-steering-doc.js +75 -0
- package/dist/prompts/create-steering-doc.js.map +1 -0
- package/dist/prompts/implement-task.d.ts +3 -0
- package/dist/prompts/implement-task.d.ts.map +1 -0
- package/dist/prompts/implement-task.js +174 -0
- package/dist/prompts/implement-task.js.map +1 -0
- package/dist/prompts/index.d.ts +20 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +103 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/inject-spec-workflow-guide.d.ts +3 -0
- package/dist/prompts/inject-spec-workflow-guide.d.ts.map +1 -0
- package/dist/prompts/inject-spec-workflow-guide.js +60 -0
- package/dist/prompts/inject-spec-workflow-guide.js.map +1 -0
- package/dist/prompts/inject-steering-guide.d.ts +3 -0
- package/dist/prompts/inject-steering-guide.d.ts.map +1 -0
- package/dist/prompts/inject-steering-guide.js +64 -0
- package/dist/prompts/inject-steering-guide.js.map +1 -0
- package/dist/prompts/refresh-tasks.d.ts +3 -0
- package/dist/prompts/refresh-tasks.d.ts.map +1 -0
- package/dist/prompts/refresh-tasks.js +237 -0
- package/dist/prompts/refresh-tasks.js.map +1 -0
- package/dist/prompts/spec-status.d.ts +3 -0
- package/dist/prompts/spec-status.d.ts.map +1 -0
- package/dist/prompts/spec-status.js +77 -0
- package/dist/prompts/spec-status.js.map +1 -0
- package/dist/prompts/types.d.ts +13 -0
- package/dist/prompts/types.d.ts.map +1 -0
- package/dist/prompts/types.js +2 -0
- package/dist/prompts/types.js.map +1 -0
- package/dist/server.d.ts +17 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +175 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.d.ts +2 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.d.ts.map +1 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.js +190 -0
- package/dist/tools/__tests__/log-implementation-review-process.test.js.map +1 -0
- package/dist/tools/__tests__/projectPath.test.d.ts +2 -0
- package/dist/tools/__tests__/projectPath.test.d.ts.map +1 -0
- package/dist/tools/__tests__/projectPath.test.js +187 -0
- package/dist/tools/__tests__/projectPath.test.js.map +1 -0
- package/dist/tools/approvals.d.ts +14 -0
- package/dist/tools/approvals.d.ts.map +1 -0
- package/dist/tools/approvals.js +505 -0
- package/dist/tools/approvals.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/log-implementation.d.ts +5 -0
- package/dist/tools/log-implementation.d.ts.map +1 -0
- package/dist/tools/log-implementation.js +498 -0
- package/dist/tools/log-implementation.js.map +1 -0
- package/dist/tools/spec-status.d.ts +5 -0
- package/dist/tools/spec-status.d.ts.map +1 -0
- package/dist/tools/spec-status.js +192 -0
- package/dist/tools/spec-status.js.map +1 -0
- package/dist/tools/spec-workflow-guide.d.ts +5 -0
- package/dist/tools/spec-workflow-guide.d.ts.map +1 -0
- package/dist/tools/spec-workflow-guide.js +116 -0
- package/dist/tools/spec-workflow-guide.js.map +1 -0
- package/dist/tools/steering-guide.d.ts +5 -0
- package/dist/tools/steering-guide.d.ts.map +1 -0
- package/dist/tools/steering-guide.js +192 -0
- package/dist/tools/steering-guide.js.map +1 -0
- package/dist/types.d.ts +183 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +13 -0
- package/dist/types.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
import { PathUtils } from '../core/path-utils.js';
|
|
2
|
+
import { readFile } from 'fs/promises';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
const prompt = {
|
|
5
|
+
name: 'refresh-tasks',
|
|
6
|
+
title: 'Refresh Tasks After Spec Changes',
|
|
7
|
+
description: 'Comprehensive guide for updating tasks.md when requirements or design change during implementation. Preserves completed work while aligning pending tasks with current spec.',
|
|
8
|
+
arguments: [
|
|
9
|
+
{
|
|
10
|
+
name: 'specName',
|
|
11
|
+
description: 'Name of the specification to refresh tasks for',
|
|
12
|
+
required: true
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
name: 'changes',
|
|
16
|
+
description: 'Description of what changed in requirements or design',
|
|
17
|
+
required: false
|
|
18
|
+
}
|
|
19
|
+
]
|
|
20
|
+
};
|
|
21
|
+
async function handler(args, context) {
|
|
22
|
+
const { specName, changes = 'Requirements or design have been updated' } = args;
|
|
23
|
+
const projectPath = context.projectPath;
|
|
24
|
+
// Try to load existing documents for context
|
|
25
|
+
let contextInfo = '';
|
|
26
|
+
try {
|
|
27
|
+
const specDir = PathUtils.getSpecPath(projectPath, specName);
|
|
28
|
+
// Check what documents exist
|
|
29
|
+
let hasRequirements = false;
|
|
30
|
+
let hasDesign = false;
|
|
31
|
+
let hasTasks = false;
|
|
32
|
+
try {
|
|
33
|
+
await readFile(join(specDir, 'requirements.md'), 'utf-8');
|
|
34
|
+
hasRequirements = true;
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
// File doesn't exist
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
await readFile(join(specDir, 'design.md'), 'utf-8');
|
|
41
|
+
hasDesign = true;
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
// File doesn't exist
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
await readFile(join(specDir, 'tasks.md'), 'utf-8');
|
|
48
|
+
hasTasks = true;
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
// File doesn't exist
|
|
52
|
+
}
|
|
53
|
+
contextInfo = `
|
|
54
|
+
## Current Spec Status for "${specName}"
|
|
55
|
+
- Requirements.md exists: ${hasRequirements ? 'Yes' : 'No'}
|
|
56
|
+
- Design.md exists: ${hasDesign ? 'Yes' : 'No'}
|
|
57
|
+
- Tasks.md exists: ${hasTasks ? 'Yes' : 'No'}
|
|
58
|
+
|
|
59
|
+
## Reported Changes
|
|
60
|
+
${changes}
|
|
61
|
+
`;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
contextInfo = `
|
|
65
|
+
## Spec: "${specName}"
|
|
66
|
+
Unable to check existing documents. Ensure the spec exists at the correct path.
|
|
67
|
+
|
|
68
|
+
## Reported Changes
|
|
69
|
+
${changes}
|
|
70
|
+
`;
|
|
71
|
+
}
|
|
72
|
+
const content = `# Task Refresh Instructions
|
|
73
|
+
|
|
74
|
+
${contextInfo}
|
|
75
|
+
|
|
76
|
+
## Context
|
|
77
|
+
You are refreshing the task list for specification "${specName}" because requirements or design have changed during implementation. Your goal is to ensure the task list accurately reflects what needs to be done to bridge the gap between current implementation and the updated requirements/design.
|
|
78
|
+
|
|
79
|
+
## CRITICAL: Source of Truth
|
|
80
|
+
- Requirements come ONLY from requirements.md - not from existing tasks
|
|
81
|
+
- Design decisions come ONLY from design.md - not from existing tasks
|
|
82
|
+
- Tasks are implementation steps - they implement requirements, they don't define them
|
|
83
|
+
- If a feature exists in tasks but NOT in requirements.md/design.md, it has been REMOVED from the spec
|
|
84
|
+
|
|
85
|
+
## Three-Pass Validation Process
|
|
86
|
+
|
|
87
|
+
### PASS 1: Validate Existing Tasks Against Current Spec
|
|
88
|
+
For each existing task, verify if the feature it implements still exists in requirements.md or design.md.
|
|
89
|
+
|
|
90
|
+
Actions for PENDING tasks:
|
|
91
|
+
- KEEP if the feature is still in requirements/design
|
|
92
|
+
- REMOVE if the feature is NOT in requirements/design (feature was cut from spec)
|
|
93
|
+
|
|
94
|
+
Actions for COMPLETED/IN-PROGRESS tasks:
|
|
95
|
+
- ALWAYS PRESERVE completed [x] and in-progress [-] tasks exactly as written
|
|
96
|
+
- If the feature was removed, add a note: "_Note: Feature removed from spec but task preserved_"
|
|
97
|
+
- If architecture changed, add migration tasks immediately after the completed work
|
|
98
|
+
|
|
99
|
+
### PASS 2: Gap Analysis
|
|
100
|
+
For each requirement in requirements.md, verify corresponding task coverage exists.
|
|
101
|
+
For each design decision in design.md, verify tasks align with the architecture.
|
|
102
|
+
|
|
103
|
+
Actions:
|
|
104
|
+
- ADD new tasks for requirements/design elements without task coverage
|
|
105
|
+
- ADD migration tasks when architecture changes affect completed work
|
|
106
|
+
- UPDATE pending tasks that need alignment with updated requirements
|
|
107
|
+
|
|
108
|
+
### PASS 3: Create Updated Task List
|
|
109
|
+
After Pass 1 and Pass 2, determine if changes are needed:
|
|
110
|
+
- Are there pending tasks to remove?
|
|
111
|
+
- Are there new tasks to add?
|
|
112
|
+
- Are there migration tasks needed?
|
|
113
|
+
- Are there existing tasks to modify?
|
|
114
|
+
|
|
115
|
+
If NO changes needed: Report "Task list is already aligned with current requirements - no refresh needed" and STOP.
|
|
116
|
+
|
|
117
|
+
If changes ARE needed, build the new tasks.md with:
|
|
118
|
+
1. All completed [x] tasks preserved exactly as written
|
|
119
|
+
2. All in-progress [-] tasks preserved exactly as written
|
|
120
|
+
3. Migration tasks added where architecture changes affect completed work
|
|
121
|
+
4. Only pending [ ] tasks that have backing in current requirements/design
|
|
122
|
+
5. New tasks for any missing requirements/design elements
|
|
123
|
+
6. Proper sequencing and requirement references
|
|
124
|
+
|
|
125
|
+
## Handling Architecture Changes
|
|
126
|
+
|
|
127
|
+
When architecture changes affect already-implemented code, add migration tasks:
|
|
128
|
+
|
|
129
|
+
Example: MongoDB to PostgreSQL switch with completed MongoDB work:
|
|
130
|
+
- [x] 2.1 Create MongoDB connection logic
|
|
131
|
+
- [x] 2.2 Define MongoDB schemas
|
|
132
|
+
- [x] 2.3 Implement MongoDB queries
|
|
133
|
+
- [ ] 2.4 Migrate MongoDB schemas to PostgreSQL tables (NEW)
|
|
134
|
+
- [ ] 2.5 Replace MongoDB connection with PostgreSQL client (NEW)
|
|
135
|
+
- [ ] 2.6 Convert MongoDB queries to PostgreSQL syntax (NEW)
|
|
136
|
+
- [ ] 2.7 Migrate existing data from MongoDB to PostgreSQL (NEW)
|
|
137
|
+
- [ ] 2.8 Verify data integrity after migration (NEW)
|
|
138
|
+
- [ ] 2.9 Remove MongoDB dependencies after verification (NEW)
|
|
139
|
+
- [ ] 2.10 Implement remaining PostgreSQL features
|
|
140
|
+
|
|
141
|
+
Example: REST to GraphQL migration with completed REST endpoints:
|
|
142
|
+
- [x] 3.1 Implement user REST endpoints
|
|
143
|
+
- [x] 3.2 Implement product REST endpoints
|
|
144
|
+
- [ ] 3.3 Define GraphQL schema for users and products (NEW)
|
|
145
|
+
- [ ] 3.4 Create GraphQL resolvers wrapping REST logic (NEW)
|
|
146
|
+
- [ ] 3.5 Update client to use GraphQL queries (NEW)
|
|
147
|
+
- [ ] 3.6 Test GraphQL implementation thoroughly (NEW)
|
|
148
|
+
- [ ] 3.7 Remove REST endpoints after GraphQL verified (NEW)
|
|
149
|
+
|
|
150
|
+
## Task Format Requirements
|
|
151
|
+
Each task must follow this format (with phase headings and _TestFocus):
|
|
152
|
+
|
|
153
|
+
## Phase 1: Core Domain Layer
|
|
154
|
+
|
|
155
|
+
- [ ] 1.1 Create user authentication interface
|
|
156
|
+
- File: src/auth/UserAuth.ts
|
|
157
|
+
- Implement login and registration forms
|
|
158
|
+
- Add form validation and error handling
|
|
159
|
+
- Purpose: Enable user account management
|
|
160
|
+
- _Leverage: src/components/BaseForm.tsx, src/utils/validation.ts_
|
|
161
|
+
- _Requirements: 1.1, 1.2_
|
|
162
|
+
- _TestFocus: Form validation, auth flow, error handling_
|
|
163
|
+
|
|
164
|
+
- [ ] 1.2 Review and commit Phase 1
|
|
165
|
+
- _PhaseReview: true_
|
|
166
|
+
- _Prompt: Role: Code reviewer | Task: Review Phase 1 changes, run tests, commit | Success: All tests pass, committed_
|
|
167
|
+
|
|
168
|
+
Migration tasks should follow this format:
|
|
169
|
+
- [ ] 2.4 Migrate MongoDB schemas to PostgreSQL tables
|
|
170
|
+
- File: src/database/migrations/mongo-to-postgres.ts
|
|
171
|
+
- Convert document schemas to relational tables
|
|
172
|
+
- Map embedded documents to foreign key relationships
|
|
173
|
+
- Preserve all existing data relationships
|
|
174
|
+
- Purpose: Transition database layer to new architecture
|
|
175
|
+
- _Leverage: Completed MongoDB schemas in tasks 2.1-2.3_
|
|
176
|
+
- _Requirements: Design section 3.2_
|
|
177
|
+
- _TestFocus: Schema mapping correctness, data integrity, relationship preservation_
|
|
178
|
+
|
|
179
|
+
## Critical Rules
|
|
180
|
+
- ALWAYS preserve completed [x] tasks exactly as written
|
|
181
|
+
- ALWAYS preserve in-progress [-] tasks exactly as written
|
|
182
|
+
- ALWAYS add migration tasks when architecture changes affect completed work
|
|
183
|
+
- ALWAYS reference specific requirements (e.g., _Requirements: 1.1, 2.3_)
|
|
184
|
+
- ENSURE tasks build incrementally with proper dependencies
|
|
185
|
+
- MAKE tasks atomic, specific, and actionable
|
|
186
|
+
- PRESERVE the original tasks.md structure and format
|
|
187
|
+
- KEEP tasks.md clean - only include the task list itself
|
|
188
|
+
- DO NOT create standalone test tasks — TDD handles testing automatically in each task
|
|
189
|
+
- PRESERVE phase structure (## Phase headings). Add new tasks to the appropriate phase, or create a new phase
|
|
190
|
+
- PRESERVE _TestFocus fields on existing tasks and add them to new tasks
|
|
191
|
+
- PRESERVE _PhaseReview tasks at the end of each phase
|
|
192
|
+
|
|
193
|
+
## Progressive Migration Strategy
|
|
194
|
+
|
|
195
|
+
For major architecture changes, create tasks that support progressive migration:
|
|
196
|
+
1. Implement new architecture alongside existing
|
|
197
|
+
2. Add compatibility layer tasks
|
|
198
|
+
3. Migrate functionality incrementally
|
|
199
|
+
4. Verify each migration step
|
|
200
|
+
5. Remove old implementation only after full verification
|
|
201
|
+
|
|
202
|
+
This ensures the application remains functional throughout the transition.
|
|
203
|
+
|
|
204
|
+
## Implementation Steps
|
|
205
|
+
1. Read requirements.md and design.md carefully - these define what should exist
|
|
206
|
+
2. Read current tasks.md and identify completed, in-progress, and pending tasks
|
|
207
|
+
3. Perform Pass 1: Validate existing tasks against current spec
|
|
208
|
+
4. Perform Pass 2: Identify gaps in task coverage
|
|
209
|
+
5. Determine if changes are needed
|
|
210
|
+
6. If changes needed, build updated task list with proper validation
|
|
211
|
+
7. Use create-spec-doc tool to save the updated tasks.md
|
|
212
|
+
8. Report what changes were made and why
|
|
213
|
+
|
|
214
|
+
## Example Analysis Output
|
|
215
|
+
|
|
216
|
+
When refreshing tasks, provide clear feedback:
|
|
217
|
+
|
|
218
|
+
"Task Refresh Analysis:
|
|
219
|
+
- Preserved: 5 completed tasks, 2 in-progress tasks
|
|
220
|
+
- Removed: 3 pending tasks for deleted reporting feature
|
|
221
|
+
- Added: 4 migration tasks for MongoDB to PostgreSQL transition
|
|
222
|
+
- Added: 6 new tasks for social login feature
|
|
223
|
+
- Updated: 2 pending tasks to align with new API design
|
|
224
|
+
|
|
225
|
+
The tasks.md has been updated to reflect current requirements while preserving all completed work."`;
|
|
226
|
+
return [
|
|
227
|
+
{
|
|
228
|
+
role: 'user',
|
|
229
|
+
content: { type: 'text', text: content }
|
|
230
|
+
}
|
|
231
|
+
];
|
|
232
|
+
}
|
|
233
|
+
export const refreshTasksPrompt = {
|
|
234
|
+
prompt,
|
|
235
|
+
handler
|
|
236
|
+
};
|
|
237
|
+
//# sourceMappingURL=refresh-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"refresh-tasks.js","sourceRoot":"","sources":["../../src/prompts/refresh-tasks.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,kCAAkC;IACzC,WAAW,EAAE,8KAA8K;IAC3L,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,gDAAgD;YAC7D,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,0CAA0C,EAAE,GAAG,IAAI,CAAC;IAChF,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAExC,6CAA6C;IAC7C,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE7D,6BAA6B;QAC7B,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1D,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;QACvB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YACpD,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;QACvB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;YACnD,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,qBAAqB;QACvB,CAAC;QAED,WAAW,GAAG;8BACY,QAAQ;4BACV,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;sBACpC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;qBACzB,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI;;;EAG1C,OAAO;CACR,CAAC;IACA,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,GAAG;YACN,QAAQ;;;;EAIlB,OAAO;CACR,CAAC;IACA,CAAC;IAED,MAAM,OAAO,GAAG;;EAEhB,WAAW;;;sDAGyC,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oGAoJsC,CAAC;IAEnG,OAAO;QACL;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE;SACzC;KACF,CAAC;AAAA,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,MAAM;IACN,OAAO;CACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-status.d.ts","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgF9C,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
const prompt = {
|
|
2
|
+
name: 'spec-status',
|
|
3
|
+
title: 'Specification Status Overview',
|
|
4
|
+
description: 'Get comprehensive status overview of specification documents, tasks, and approval workflows. Useful for project tracking and progress reporting.',
|
|
5
|
+
arguments: [
|
|
6
|
+
{
|
|
7
|
+
name: 'specName',
|
|
8
|
+
description: 'Feature name in kebab-case to get status for (optional - if not provided, shows all specs)',
|
|
9
|
+
required: false
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
name: 'detailed',
|
|
13
|
+
description: 'Show detailed status including task breakdown and approval history',
|
|
14
|
+
required: false
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
};
|
|
18
|
+
async function handler(args, context) {
|
|
19
|
+
const { specName, detailed } = args;
|
|
20
|
+
const scope = specName ? `the "${specName}" feature` : 'all specifications in the project';
|
|
21
|
+
const detailLevel = detailed ? 'detailed' : 'summary';
|
|
22
|
+
const messages = [
|
|
23
|
+
{
|
|
24
|
+
role: 'user',
|
|
25
|
+
content: {
|
|
26
|
+
type: 'text',
|
|
27
|
+
text: `Get ${detailLevel} status overview for ${scope}.
|
|
28
|
+
|
|
29
|
+
**Context:**
|
|
30
|
+
- Project: ${context.projectPath}
|
|
31
|
+
${specName ? `- Feature: ${specName}` : '- Scope: All specifications'}
|
|
32
|
+
- Detail level: ${detailLevel}
|
|
33
|
+
${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
34
|
+
|
|
35
|
+
**Instructions:**
|
|
36
|
+
${specName ?
|
|
37
|
+
`1. Use the spec-status tool with specName "${specName}" to get status information
|
|
38
|
+
2. If you need detailed task information, read the tasks.md file directly at .spec-workflow/specs/${specName}/tasks.md
|
|
39
|
+
3. Check for any pending approvals using approvals tool with action:'status'` :
|
|
40
|
+
`1. List directory .spec-workflow/specs/ to see all specifications
|
|
41
|
+
2. Use the spec-status tool to get status for each specification
|
|
42
|
+
3. Provide a consolidated overview of project progress`}
|
|
43
|
+
|
|
44
|
+
**Status Information Includes:**
|
|
45
|
+
- **Document Status**: Which documents exist (requirements, design, tasks)
|
|
46
|
+
- **Task Progress**: Completion status and remaining work
|
|
47
|
+
- **Approval Status**: Pending, approved, or rejected approvals
|
|
48
|
+
- **File Information**: Last modified dates and file sizes
|
|
49
|
+
- **Workflow Stage**: Current phase in the spec-driven development process
|
|
50
|
+
|
|
51
|
+
**Workflow Stages:**
|
|
52
|
+
1. **Planning**: Requirements document created and approved
|
|
53
|
+
2. **Design**: Design document created and approved
|
|
54
|
+
3. **Test Design**: Test design document (UT/IT/E2E specifications) created and approved
|
|
55
|
+
4. **Task Breakdown**: Tasks defined based on design and test design
|
|
56
|
+
5. **Implementation**: Tasks implementation in progress
|
|
57
|
+
6. **Review**: Implementation complete, awaiting final approval
|
|
58
|
+
7. **Complete**: All tasks complete and approved
|
|
59
|
+
|
|
60
|
+
${detailed ? `**Detailed Information Includes:**
|
|
61
|
+
- Individual task breakdown with completion status
|
|
62
|
+
- Approval request history and reviewer comments
|
|
63
|
+
- File modification timestamps
|
|
64
|
+
- Steering document references
|
|
65
|
+
- Dependency tracking between specs` : ''}
|
|
66
|
+
|
|
67
|
+
Please provide a comprehensive status report that helps understand the current state and next steps.`
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
];
|
|
71
|
+
return messages;
|
|
72
|
+
}
|
|
73
|
+
export const specStatusPrompt = {
|
|
74
|
+
prompt,
|
|
75
|
+
handler
|
|
76
|
+
};
|
|
77
|
+
//# sourceMappingURL=spec-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-status.js","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,kJAAkJ;IAC/J,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,4FAA4F;YACzG,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,WAAW,CAAC,CAAC,CAAC,mCAAmC,CAAC;IAC3F,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtD,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,WAAW,wBAAwB,KAAK;;;aAGhD,OAAO,CAAC,WAAW;EAC9B,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC,6BAA6B;kBACnD,WAAW;EAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAGlE,QAAQ,CAAC,CAAC;oBACV,8CAA8C,QAAQ;oGAC4C,QAAQ;6EAC/B,CAAC,CAAC;oBAC7E;;uDAEqD;;;;;;;;;;;;;;;;;;EAkBrD,QAAQ,CAAC,CAAC,CAAC;;;;;oCAKuB,CAAC,CAAC,CAAC,EAAE;;qGAE4D;aAC9F;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,MAAM;IACN,OAAO;CACR,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Prompt, PromptMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { ToolContext } from '../types.js';
|
|
3
|
+
export interface PromptHandler {
|
|
4
|
+
(args: Record<string, any>, context: ToolContext): Promise<PromptMessage[]>;
|
|
5
|
+
}
|
|
6
|
+
export interface PromptDefinition {
|
|
7
|
+
prompt: Prompt;
|
|
8
|
+
handler: PromptHandler;
|
|
9
|
+
}
|
|
10
|
+
export interface PromptResponse {
|
|
11
|
+
messages: PromptMessage[];
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,aAAa,EAAkB,MAAM,oCAAoC,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,WAAW,aAAa;IAC5B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC7E;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/prompts/types.ts"],"names":[],"mappings":""}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare class SpecWorkflowMCPServer {
|
|
2
|
+
private server;
|
|
3
|
+
private projectPath;
|
|
4
|
+
private workspacePath;
|
|
5
|
+
private projectRegistry;
|
|
6
|
+
private lang?;
|
|
7
|
+
constructor();
|
|
8
|
+
initialize(projectPath: string, workspacePath: string, lang?: string): Promise<void>;
|
|
9
|
+
private setupHandlers;
|
|
10
|
+
/**
|
|
11
|
+
* Check if running in Docker mode (path translation enabled)
|
|
12
|
+
* When in Docker, we can't verify host PIDs and want projects to persist
|
|
13
|
+
*/
|
|
14
|
+
private isDockerMode;
|
|
15
|
+
stop(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAoBA,qBAAa,qBAAqB;IAChC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,aAAa,CAAU;IAC/B,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,IAAI,CAAC,CAAS;;IAiChB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IA4E1E,OAAO,CAAC,aAAa;IAoCrB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAMd,IAAI;CAuBX"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, ListPromptsRequestSchema, GetPromptRequestSchema, McpError, ErrorCode } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { registerTools, handleToolCall } from './tools/index.js';
|
|
5
|
+
import { registerPrompts, handlePromptList, handlePromptGet } from './prompts/index.js';
|
|
6
|
+
import { validateProjectPath } from './core/path-utils.js';
|
|
7
|
+
import { WorkspaceInitializer } from './core/workspace-initializer.js';
|
|
8
|
+
import { ProjectRegistry } from './core/project-registry.js';
|
|
9
|
+
import { DashboardSessionManager } from './core/dashboard-session.js';
|
|
10
|
+
import { readFileSync } from 'fs';
|
|
11
|
+
import { join, dirname } from 'path';
|
|
12
|
+
import { fileURLToPath } from 'url';
|
|
13
|
+
export class SpecWorkflowMCPServer {
|
|
14
|
+
server;
|
|
15
|
+
projectPath; // workflowRootPath for .spec-workflow operations
|
|
16
|
+
workspacePath; // workspace/worktree path for identity in registry
|
|
17
|
+
projectRegistry;
|
|
18
|
+
lang;
|
|
19
|
+
constructor() {
|
|
20
|
+
// Get version from package.json
|
|
21
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
22
|
+
const packageJsonPath = join(__dirname, '..', 'package.json');
|
|
23
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
24
|
+
// Get all registered tools and prompts
|
|
25
|
+
const tools = registerTools();
|
|
26
|
+
const prompts = registerPrompts();
|
|
27
|
+
// Create tools capability object with each tool name
|
|
28
|
+
const toolsCapability = tools.reduce((acc, tool) => {
|
|
29
|
+
acc[tool.name] = {};
|
|
30
|
+
return acc;
|
|
31
|
+
}, {});
|
|
32
|
+
this.server = new Server({
|
|
33
|
+
name: 'spec-workflow-mcp',
|
|
34
|
+
version: packageJson.version
|
|
35
|
+
}, {
|
|
36
|
+
capabilities: {
|
|
37
|
+
tools: toolsCapability,
|
|
38
|
+
prompts: {
|
|
39
|
+
listChanged: true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
});
|
|
43
|
+
this.projectRegistry = new ProjectRegistry();
|
|
44
|
+
}
|
|
45
|
+
async initialize(projectPath, workspacePath, lang) {
|
|
46
|
+
this.projectPath = projectPath;
|
|
47
|
+
this.workspacePath = workspacePath;
|
|
48
|
+
this.lang = lang;
|
|
49
|
+
try {
|
|
50
|
+
// Validate project path
|
|
51
|
+
await validateProjectPath(this.projectPath);
|
|
52
|
+
await validateProjectPath(this.workspacePath);
|
|
53
|
+
// Initialize workspace
|
|
54
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
55
|
+
const packageJsonPath = join(__dirname, '..', 'package.json');
|
|
56
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
57
|
+
const workspaceInitializer = new WorkspaceInitializer(this.projectPath, packageJson.version);
|
|
58
|
+
await workspaceInitializer.initializeWorkspace();
|
|
59
|
+
// Register this project in the global registry
|
|
60
|
+
const projectId = await this.projectRegistry.registerProject(this.workspacePath, process.pid, {
|
|
61
|
+
workflowRootPath: this.projectPath
|
|
62
|
+
});
|
|
63
|
+
console.error(`Project registered: ${projectId}`);
|
|
64
|
+
// Try to get the dashboard URL from session manager
|
|
65
|
+
let dashboardUrl = undefined;
|
|
66
|
+
try {
|
|
67
|
+
const sessionManager = new DashboardSessionManager();
|
|
68
|
+
const dashboardSession = await sessionManager.getDashboardSession();
|
|
69
|
+
if (dashboardSession) {
|
|
70
|
+
dashboardUrl = dashboardSession.url;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
// Dashboard not running, continue without it
|
|
75
|
+
}
|
|
76
|
+
// Create context for tools
|
|
77
|
+
const context = {
|
|
78
|
+
projectPath: this.projectPath,
|
|
79
|
+
dashboardUrl: dashboardUrl,
|
|
80
|
+
lang: this.lang
|
|
81
|
+
};
|
|
82
|
+
// Register handlers
|
|
83
|
+
this.setupHandlers(context);
|
|
84
|
+
// Connect to stdio transport
|
|
85
|
+
const transport = new StdioServerTransport();
|
|
86
|
+
// Handle client disconnection - exit gracefully when transport closes
|
|
87
|
+
transport.onclose = async () => {
|
|
88
|
+
await this.stop();
|
|
89
|
+
process.exit(0);
|
|
90
|
+
};
|
|
91
|
+
await this.server.connect(transport);
|
|
92
|
+
// Monitor stdin for client disconnection (additional safety net)
|
|
93
|
+
process.stdin.on('end', async () => {
|
|
94
|
+
await this.stop();
|
|
95
|
+
process.exit(0);
|
|
96
|
+
});
|
|
97
|
+
// Handle stdin errors
|
|
98
|
+
process.stdin.on('error', async (error) => {
|
|
99
|
+
console.error('stdin error:', error);
|
|
100
|
+
await this.stop();
|
|
101
|
+
process.exit(1);
|
|
102
|
+
});
|
|
103
|
+
// MCP server initialized successfully
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setupHandlers(context) {
|
|
110
|
+
// Tool handlers
|
|
111
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
112
|
+
tools: registerTools()
|
|
113
|
+
}));
|
|
114
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
115
|
+
try {
|
|
116
|
+
return await handleToolCall(request.params.name, request.params.arguments || {}, context);
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
throw new McpError(ErrorCode.InternalError, error.message);
|
|
120
|
+
}
|
|
121
|
+
});
|
|
122
|
+
// Prompt handlers
|
|
123
|
+
this.server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
124
|
+
try {
|
|
125
|
+
return await handlePromptList();
|
|
126
|
+
}
|
|
127
|
+
catch (error) {
|
|
128
|
+
throw new McpError(ErrorCode.InternalError, error.message);
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
this.server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
132
|
+
try {
|
|
133
|
+
return await handlePromptGet(request.params.name, request.params.arguments || {}, context);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
throw new McpError(ErrorCode.InternalError, error.message);
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if running in Docker mode (path translation enabled)
|
|
142
|
+
* When in Docker, we can't verify host PIDs and want projects to persist
|
|
143
|
+
*/
|
|
144
|
+
isDockerMode() {
|
|
145
|
+
const hostPrefix = process.env.SPEC_WORKFLOW_HOST_PATH_PREFIX;
|
|
146
|
+
const containerPrefix = process.env.SPEC_WORKFLOW_CONTAINER_PATH_PREFIX;
|
|
147
|
+
return !!(hostPrefix && containerPrefix);
|
|
148
|
+
}
|
|
149
|
+
async stop() {
|
|
150
|
+
try {
|
|
151
|
+
// Only unregister when NOT in Docker mode
|
|
152
|
+
// In Docker, projects should persist across sessions since we can't verify host PIDs
|
|
153
|
+
if (!this.isDockerMode()) {
|
|
154
|
+
try {
|
|
155
|
+
// Pass current PID to only remove this specific instance
|
|
156
|
+
await this.projectRegistry.unregisterProject(this.workspacePath, process.pid);
|
|
157
|
+
console.error('Project instance unregistered from global registry');
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
// Ignore errors during cleanup
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
console.error('Docker mode: skipping project unregistration (projects persist across sessions)');
|
|
165
|
+
}
|
|
166
|
+
// Stop MCP server
|
|
167
|
+
await this.server.close();
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
console.error('Error during shutdown:', error);
|
|
171
|
+
// Continue with shutdown even if there are errors
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-implementation-review-process.test.d.ts","sourceRoot":"","sources":["../../../src/tools/__tests__/log-implementation-review-process.test.ts"],"names":[],"mappings":""}
|