@madmatt112org/spec-workflow-mcp 3.0.0
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/CHANGELOG.md +1013 -0
- package/LICENSE +674 -0
- package/README.md +458 -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__/adversarial-settings.test.d.ts +2 -0
- package/dist/core/__tests__/adversarial-settings.test.d.ts.map +1 -0
- package/dist/core/__tests__/adversarial-settings.test.js +361 -0
- package/dist/core/__tests__/adversarial-settings.test.js.map +1 -0
- package/dist/core/__tests__/deferral-storage.test.d.ts +2 -0
- package/dist/core/__tests__/deferral-storage.test.d.ts.map +1 -0
- package/dist/core/__tests__/deferral-storage.test.js +181 -0
- package/dist/core/__tests__/deferral-storage.test.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__/hygiene-signals.test.d.ts +2 -0
- package/dist/core/__tests__/hygiene-signals.test.d.ts.map +1 -0
- package/dist/core/__tests__/hygiene-signals.test.js +200 -0
- package/dist/core/__tests__/hygiene-signals.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-denylist.test.d.ts +2 -0
- package/dist/core/__tests__/path-denylist.test.d.ts.map +1 -0
- package/dist/core/__tests__/path-denylist.test.js +242 -0
- package/dist/core/__tests__/path-denylist.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 +643 -0
- package/dist/core/__tests__/security-utils.test.js.map +1 -0
- package/dist/core/__tests__/task-diff.test.d.ts +2 -0
- package/dist/core/__tests__/task-diff.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-diff.test.js +287 -0
- package/dist/core/__tests__/task-diff.test.js.map +1 -0
- package/dist/core/__tests__/task-review-manager.test.d.ts +2 -0
- package/dist/core/__tests__/task-review-manager.test.d.ts.map +1 -0
- package/dist/core/__tests__/task-review-manager.test.js +235 -0
- package/dist/core/__tests__/task-review-manager.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 +237 -0
- package/dist/core/__tests__/task-validator.test.js.map +1 -0
- package/dist/core/__tests__/typecheck.test.d.ts +2 -0
- package/dist/core/__tests__/typecheck.test.d.ts.map +1 -0
- package/dist/core/__tests__/typecheck.test.js +558 -0
- package/dist/core/__tests__/typecheck.test.js.map +1 -0
- package/dist/core/adversarial-settings.d.ts +23 -0
- package/dist/core/adversarial-settings.d.ts.map +1 -0
- package/dist/core/adversarial-settings.js +148 -0
- package/dist/core/adversarial-settings.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/deferral-storage.d.ts +32 -0
- package/dist/core/deferral-storage.d.ts.map +1 -0
- package/dist/core/deferral-storage.js +232 -0
- package/dist/core/deferral-storage.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/hygiene-signals.d.ts +8 -0
- package/dist/core/hygiene-signals.d.ts.map +1 -0
- package/dist/core/hygiene-signals.js +41 -0
- package/dist/core/hygiene-signals.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 +126 -0
- package/dist/core/parser.js.map +1 -0
- package/dist/core/path-denylist.d.ts +8 -0
- package/dist/core/path-denylist.d.ts.map +1 -0
- package/dist/core/path-denylist.js +107 -0
- package/dist/core/path-denylist.js.map +1 -0
- package/dist/core/path-utils.d.ts +69 -0
- package/dist/core/path-utils.d.ts.map +1 -0
- package/dist/core/path-utils.js +306 -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 +97 -0
- package/dist/core/security-utils.d.ts.map +1 -0
- package/dist/core/security-utils.js +264 -0
- package/dist/core/security-utils.js.map +1 -0
- package/dist/core/task-diff.d.ts +15 -0
- package/dist/core/task-diff.d.ts.map +1 -0
- package/dist/core/task-diff.js +136 -0
- package/dist/core/task-diff.js.map +1 -0
- package/dist/core/task-parser.d.ts +63 -0
- package/dist/core/task-parser.d.ts.map +1 -0
- package/dist/core/task-parser.js +332 -0
- package/dist/core/task-parser.js.map +1 -0
- package/dist/core/task-review-manager.d.ts +56 -0
- package/dist/core/task-review-manager.d.ts.map +1 -0
- package/dist/core/task-review-manager.js +281 -0
- package/dist/core/task-review-manager.js.map +1 -0
- package/dist/core/task-validator.d.ts +35 -0
- package/dist/core/task-validator.d.ts.map +1 -0
- package/dist/core/task-validator.js +236 -0
- package/dist/core/task-validator.js.map +1 -0
- package/dist/core/typecheck.d.ts +33 -0
- package/dist/core/typecheck.d.ts.map +1 -0
- package/dist/core/typecheck.js +375 -0
- package/dist/core/typecheck.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 +167 -0
- package/dist/core/workspace-initializer.js.map +1 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts +2 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.js +59 -0
- package/dist/dashboard/__tests__/adversarial-display-state.test.js.map +1 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts +2 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.js +296 -0
- package/dist/dashboard/__tests__/adversarial-endpoints.test.js.map +1 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.d.ts +2 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.js +315 -0
- package/dist/dashboard/__tests__/adversarial-runner.test.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__/multi-server.test.d.ts +2 -0
- package/dist/dashboard/__tests__/multi-server.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/multi-server.test.js +388 -0
- package/dist/dashboard/__tests__/multi-server.test.js.map +1 -0
- package/dist/dashboard/__tests__/task-review-runner.test.d.ts +2 -0
- package/dist/dashboard/__tests__/task-review-runner.test.d.ts.map +1 -0
- package/dist/dashboard/__tests__/task-review-runner.test.js +255 -0
- package/dist/dashboard/__tests__/task-review-runner.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/adversarial-display-state.d.ts +38 -0
- package/dist/dashboard/adversarial-display-state.d.ts.map +1 -0
- package/dist/dashboard/adversarial-display-state.js +45 -0
- package/dist/dashboard/adversarial-display-state.js.map +1 -0
- package/dist/dashboard/adversarial-runner.d.ts +44 -0
- package/dist/dashboard/adversarial-runner.d.ts.map +1 -0
- package/dist/dashboard/adversarial-runner.js +168 -0
- package/dist/dashboard/adversarial-runner.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 +102 -0
- package/dist/dashboard/implementation-log-manager.d.ts.map +1 -0
- package/dist/dashboard/implementation-log-manager.js +594 -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 +45 -0
- package/dist/dashboard/multi-server.d.ts.map +1 -0
- package/dist/dashboard/multi-server.js +1927 -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 +243 -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-A04OOED4.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--RobHnfG.js +118 -0
- package/dist/dashboard/public/assets/brainfuck-C4LP7Hcl.js +1 -0
- package/dist/dashboard/public/assets/c4Diagram-c83219d4-tY8lPXxy.js +10 -0
- package/dist/dashboard/public/assets/channel-Cg2ZlORc.js +1 -0
- package/dist/dashboard/public/assets/classDiagram-beda092f-DBiupBFm.js +2 -0
- package/dist/dashboard/public/assets/classDiagram-v2-2358418a-FM2jRAtm.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-CCO9qihz.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-C_nyx2v1.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-BsffumDq.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-BK-uOJy1.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-BC8_H7l7.js +10 -0
- package/dist/dashboard/public/assets/flowDiagram-50d868cf-0XbjRISj.js +4 -0
- package/dist/dashboard/public/assets/flowDiagram-v2-4f6560a1-CXE3CwgW.js +1 -0
- package/dist/dashboard/public/assets/flowchart-elk-definition-6af322e1-CCvs3UPr.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-Yp2gfoGL.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-njx_NoNr.js +70 -0
- package/dist/dashboard/public/assets/graph-COR8Ljm7.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-0abMV41b.js +1 -0
- package/dist/dashboard/public/assets/index-5325376f-cWsAocic.js +1 -0
- package/dist/dashboard/public/assets/index-BH121EUE.js +1 -0
- package/dist/dashboard/public/assets/index-BMLdkmFP.js +1 -0
- package/dist/dashboard/public/assets/index-BYgbrt4G.js +1 -0
- package/dist/dashboard/public/assets/index-BwFDzEd4.js +3 -0
- package/dist/dashboard/public/assets/index-CS7gsYFH.js +1 -0
- package/dist/dashboard/public/assets/index-Cc6cUpKS.js +1 -0
- package/dist/dashboard/public/assets/index-CgeymaoH.js +1 -0
- package/dist/dashboard/public/assets/index-Cl5FjFWx.js +1 -0
- package/dist/dashboard/public/assets/index-CnN2VPRa.js +1 -0
- package/dist/dashboard/public/assets/index-DDWkdUEb.js +1 -0
- package/dist/dashboard/public/assets/index-DLUjIeO9.js +1 -0
- package/dist/dashboard/public/assets/index-Dm3-5ZYh.js +319 -0
- package/dist/dashboard/public/assets/index-Ds4s2dDD.js +2 -0
- package/dist/dashboard/public/assets/index-DvrmwdIJ.js +1 -0
- package/dist/dashboard/public/assets/index-MTVs_iIW.js +7 -0
- package/dist/dashboard/public/assets/index-UGm8eYTB.js +1 -0
- package/dist/dashboard/public/assets/index-Zi39sM21.css +1 -0
- package/dist/dashboard/public/assets/index-iL66igAo.js +1 -0
- package/dist/dashboard/public/assets/infoDiagram-8eee0895-TQXQOcbQ.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-C7AIhJZ8.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-BzInGx9g.js +1 -0
- package/dist/dashboard/public/assets/line-BvqpNAKs.js +1 -0
- package/dist/dashboard/public/assets/linear-CMco2PTv.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-CeJT8t3A.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-DYvb2wsa.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-DpKQgDsX.js +7 -0
- package/dist/dashboard/public/assets/r-B6wPVr8A.js +1 -0
- package/dist/dashboard/public/assets/requirementDiagram-08caed73-C_q-bfsF.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-0kwrmzfI.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-i5S3JNF0.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-COE2ffbQ.js +1 -0
- package/dist/dashboard/public/assets/stateDiagram-v2-c2b004d7-DMAS8qJy.js +1 -0
- package/dist/dashboard/public/assets/stex-C3f8Ysf7.js +1 -0
- package/dist/dashboard/public/assets/styles-b4e223ce-M0Oa_txo.js +160 -0
- package/dist/dashboard/public/assets/styles-ca3715f6-DddhRVVB.js +207 -0
- package/dist/dashboard/public/assets/styles-d45a18b0-ByKhWZca.js +116 -0
- package/dist/dashboard/public/assets/stylus-B533Al4x.js +1 -0
- package/dist/dashboard/public/assets/svgDrawCommon-b86b1483-DIF6Vn69.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-DC1Bdpu_.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-BIMyvG9y.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/task-review-runner.d.ts +42 -0
- package/dist/dashboard/task-review-runner.d.ts.map +1 -0
- package/dist/dashboard/task-review-runner.js +375 -0
- package/dist/dashboard/task-review-runner.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 +96 -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 +139 -0
- package/dist/markdown/templates/tech-template.md +99 -0
- package/dist/prompts/create-decomposition.d.ts +3 -0
- package/dist/prompts/create-decomposition.d.ts.map +1 -0
- package/dist/prompts/create-decomposition.js +122 -0
- package/dist/prompts/create-decomposition.js.map +1 -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 +93 -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 +73 -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 +173 -0
- package/dist/prompts/implement-task.js.map +1 -0
- package/dist/prompts/index.d.ts +15 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +51 -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 +47 -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 +51 -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 +224 -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 +75 -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__/adversarial-response.test.d.ts +2 -0
- package/dist/tools/__tests__/adversarial-response.test.d.ts.map +1 -0
- package/dist/tools/__tests__/adversarial-response.test.js +144 -0
- package/dist/tools/__tests__/adversarial-response.test.js.map +1 -0
- package/dist/tools/__tests__/adversarial-review.test.d.ts +2 -0
- package/dist/tools/__tests__/adversarial-review.test.d.ts.map +1 -0
- package/dist/tools/__tests__/adversarial-review.test.js +318 -0
- package/dist/tools/__tests__/adversarial-review.test.js.map +1 -0
- package/dist/tools/__tests__/decomposition-guide.test.d.ts +2 -0
- package/dist/tools/__tests__/decomposition-guide.test.d.ts.map +1 -0
- package/dist/tools/__tests__/decomposition-guide.test.js +25 -0
- package/dist/tools/__tests__/decomposition-guide.test.js.map +1 -0
- package/dist/tools/__tests__/deferrals.test.d.ts +2 -0
- package/dist/tools/__tests__/deferrals.test.d.ts.map +1 -0
- package/dist/tools/__tests__/deferrals.test.js +151 -0
- package/dist/tools/__tests__/deferrals.test.js.map +1 -0
- package/dist/tools/__tests__/get-task-review.test.d.ts +2 -0
- package/dist/tools/__tests__/get-task-review.test.d.ts.map +1 -0
- package/dist/tools/__tests__/get-task-review.test.js +81 -0
- package/dist/tools/__tests__/get-task-review.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/__tests__/review-task.test.d.ts +2 -0
- package/dist/tools/__tests__/review-task.test.d.ts.map +1 -0
- package/dist/tools/__tests__/review-task.test.js +1097 -0
- package/dist/tools/__tests__/review-task.test.js.map +1 -0
- package/dist/tools/adversarial-response.d.ts +6 -0
- package/dist/tools/adversarial-response.d.ts.map +1 -0
- package/dist/tools/adversarial-response.js +206 -0
- package/dist/tools/adversarial-response.js.map +1 -0
- package/dist/tools/adversarial-review.d.ts +21 -0
- package/dist/tools/adversarial-review.d.ts.map +1 -0
- package/dist/tools/adversarial-review.js +491 -0
- package/dist/tools/adversarial-review.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/decomposition-guide.d.ts +6 -0
- package/dist/tools/decomposition-guide.d.ts.map +1 -0
- package/dist/tools/decomposition-guide.js +163 -0
- package/dist/tools/decomposition-guide.js.map +1 -0
- package/dist/tools/deferrals.d.ts +5 -0
- package/dist/tools/deferrals.d.ts.map +1 -0
- package/dist/tools/deferrals.js +229 -0
- package/dist/tools/deferrals.js.map +1 -0
- package/dist/tools/get-task-review.d.ts +5 -0
- package/dist/tools/get-task-review.d.ts.map +1 -0
- package/dist/tools/get-task-review.js +136 -0
- package/dist/tools/get-task-review.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 +82 -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 +398 -0
- package/dist/tools/log-implementation.js.map +1 -0
- package/dist/tools/review-task.d.ts +58 -0
- package/dist/tools/review-task.d.ts.map +1 -0
- package/dist/tools/review-task.js +617 -0
- package/dist/tools/review-task.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 +235 -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 +396 -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 +213 -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 +113 -0
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
import { PathUtils } from '../core/path-utils.js';
|
|
2
|
+
import { promises as fs } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
export const adversarialReviewTool = {
|
|
5
|
+
name: 'adversarial-review',
|
|
6
|
+
description: `Prepare an adversarial review of a spec phase document, steering document, or spec decomposition.
|
|
7
|
+
|
|
8
|
+
# Instructions
|
|
9
|
+
Use this tool to set up an adversarial analysis of a requirements, design, tasks, steering,
|
|
10
|
+
or decomposition document. The tool writes a self-contained adversarial prompt to disk and returns
|
|
11
|
+
the output paths. Launch a fresh-context subagent with: "Read and execute the instructions in
|
|
12
|
+
<promptOutputPath>." Context separation ensures genuinely critical output — the subagent reads
|
|
13
|
+
the target document and chooses its attack dimensions in its first turn.
|
|
14
|
+
|
|
15
|
+
For decomposition reviews, use specName: "decomposition" and phase: "decomposition".`,
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: 'object',
|
|
18
|
+
properties: {
|
|
19
|
+
specName: {
|
|
20
|
+
type: 'string',
|
|
21
|
+
description: 'Name of the spec to review (kebab-case), "steering" for steering documents, or "decomposition" for spec decomposition'
|
|
22
|
+
},
|
|
23
|
+
phase: {
|
|
24
|
+
type: 'string',
|
|
25
|
+
description: 'Which document to target (e.g. requirements, design, tasks for specs; product, tech, structure for steering; decomposition for spec decomposition)'
|
|
26
|
+
},
|
|
27
|
+
filePath: {
|
|
28
|
+
type: 'string',
|
|
29
|
+
description: 'Relative path to the target file (optional — used for steering docs whose files live outside the steering directory)'
|
|
30
|
+
},
|
|
31
|
+
projectPath: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
description: 'Absolute path to the project root (optional - uses server context path if not provided)'
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
required: ['specName', 'phase'],
|
|
37
|
+
additionalProperties: false
|
|
38
|
+
},
|
|
39
|
+
annotations: {
|
|
40
|
+
title: 'Adversarial Review',
|
|
41
|
+
readOnlyHint: false,
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
export async function adversarialReviewHandler(args, context) {
|
|
45
|
+
const { specName, phase } = args;
|
|
46
|
+
const projectPath = args.projectPath || context.projectPath;
|
|
47
|
+
if (!specName || typeof specName !== 'string') {
|
|
48
|
+
return { success: false, message: 'specName is required and must be a string' };
|
|
49
|
+
}
|
|
50
|
+
if (!phase || typeof phase !== 'string') {
|
|
51
|
+
return { success: false, message: 'phase is required and must be a string' };
|
|
52
|
+
}
|
|
53
|
+
const workflowRoot = PathUtils.getWorkflowRoot(projectPath);
|
|
54
|
+
// Determine paths based on document type
|
|
55
|
+
const isSteering = specName === 'steering';
|
|
56
|
+
const isDecomposition = specName === 'decomposition' || specName === 'spec-decomposition'
|
|
57
|
+
|| phase === 'decomposition'
|
|
58
|
+
|| (args.filePath && args.filePath.includes('spec-decomposition/'));
|
|
59
|
+
let docDir;
|
|
60
|
+
let targetFile;
|
|
61
|
+
let reviewsDir;
|
|
62
|
+
if (isDecomposition) {
|
|
63
|
+
docDir = join(workflowRoot, 'spec-decomposition');
|
|
64
|
+
targetFile = join(docDir, 'decomposition.md');
|
|
65
|
+
reviewsDir = join(docDir, 'reviews');
|
|
66
|
+
}
|
|
67
|
+
else if (isSteering) {
|
|
68
|
+
docDir = join(workflowRoot, 'steering');
|
|
69
|
+
targetFile = args.filePath
|
|
70
|
+
? join(projectPath, args.filePath)
|
|
71
|
+
: join(docDir, `${phase}.md`);
|
|
72
|
+
reviewsDir = join(docDir, 'reviews');
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
docDir = join(workflowRoot, 'specs', specName);
|
|
76
|
+
targetFile = join(docDir, `${phase}.md`);
|
|
77
|
+
reviewsDir = join(docDir, 'reviews');
|
|
78
|
+
}
|
|
79
|
+
// Validate target file exists
|
|
80
|
+
try {
|
|
81
|
+
await fs.access(targetFile);
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
return {
|
|
85
|
+
success: false,
|
|
86
|
+
message: `Target file not found: ${targetFile}`
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
// Create reviews directory if needed
|
|
90
|
+
await fs.mkdir(reviewsDir, { recursive: true });
|
|
91
|
+
// Determine version by scanning existing files
|
|
92
|
+
const versionPhase = isDecomposition ? 'decomposition' : phase;
|
|
93
|
+
const version = await getNextVersion(reviewsDir, versionPhase);
|
|
94
|
+
const versionSuffix = version === 1 ? '' : `-r${version}`;
|
|
95
|
+
const promptOutputPath = join(reviewsDir, `adversarial-prompt-${versionPhase}${versionSuffix}.md`);
|
|
96
|
+
const analysisOutputPath = join(reviewsDir, `adversarial-analysis-${versionPhase}${versionSuffix}.md`);
|
|
97
|
+
// Find existing steering docs and prior phase docs as context
|
|
98
|
+
const steeringDir = join(workflowRoot, 'steering');
|
|
99
|
+
let steeringDocs;
|
|
100
|
+
let priorPhaseDocs;
|
|
101
|
+
if (isDecomposition) {
|
|
102
|
+
// Decomposition reviews use steering docs as prior context
|
|
103
|
+
steeringDocs = [];
|
|
104
|
+
priorPhaseDocs = await findExistingFiles(steeringDir, ['product.md', 'tech.md', 'structure.md']);
|
|
105
|
+
}
|
|
106
|
+
else if (isSteering) {
|
|
107
|
+
steeringDocs = [];
|
|
108
|
+
priorPhaseDocs = [];
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
steeringDocs = await findExistingFiles(steeringDir, ['product.md', 'tech.md', 'structure.md']);
|
|
112
|
+
priorPhaseDocs = await findPriorPhaseDocs(docDir, phase);
|
|
113
|
+
}
|
|
114
|
+
// Check for methodology override in settings
|
|
115
|
+
const methodology = await getMethodologyOverride(workflowRoot, 'reviewMethodology') || getAdversarialReviewMethodology();
|
|
116
|
+
// Memory context for v2+ reviews
|
|
117
|
+
const memoryFilePath = join(reviewsDir, `adversarial-memory-${versionPhase}.md`);
|
|
118
|
+
const latestAnalysisPath = version > 1
|
|
119
|
+
? await findLatestAnalysis(reviewsDir, versionPhase)
|
|
120
|
+
: null;
|
|
121
|
+
const scaffold = buildScaffoldedPrompt({
|
|
122
|
+
specName: isDecomposition ? 'decomposition' : specName,
|
|
123
|
+
phase: versionPhase,
|
|
124
|
+
version,
|
|
125
|
+
targetFile,
|
|
126
|
+
analysisOutputPath,
|
|
127
|
+
memoryFilePath,
|
|
128
|
+
latestAnalysisPath,
|
|
129
|
+
});
|
|
130
|
+
try {
|
|
131
|
+
await fs.writeFile(promptOutputPath, scaffold, 'utf-8');
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
message: `Failed to write scaffolded prompt: ${err instanceof Error ? err.message : String(err)}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
success: true,
|
|
141
|
+
message: isDecomposition
|
|
142
|
+
? `Adversarial review prepared for spec decomposition (version ${version})`
|
|
143
|
+
: `Adversarial review prepared for ${specName}/${phase}.md (version ${version})`,
|
|
144
|
+
data: {
|
|
145
|
+
targetFile,
|
|
146
|
+
promptOutputPath,
|
|
147
|
+
analysisOutputPath,
|
|
148
|
+
version,
|
|
149
|
+
phase,
|
|
150
|
+
steeringDocs,
|
|
151
|
+
priorPhaseDocs,
|
|
152
|
+
methodology,
|
|
153
|
+
memoryFilePath,
|
|
154
|
+
latestAnalysisPath,
|
|
155
|
+
},
|
|
156
|
+
nextSteps: [
|
|
157
|
+
`Launch a fresh-context subagent with only: "Read and execute the instructions in ${promptOutputPath}"`,
|
|
158
|
+
`The subagent will write its analysis to ${analysisOutputPath}`,
|
|
159
|
+
]
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
async function getNextVersion(reviewsDir, phase) {
|
|
163
|
+
try {
|
|
164
|
+
const files = await fs.readdir(reviewsDir);
|
|
165
|
+
const pattern = new RegExp(`^adversarial-analysis-${phase}(-r(\\d+))?\\.md$`);
|
|
166
|
+
let maxVersion = 0;
|
|
167
|
+
for (const file of files) {
|
|
168
|
+
const match = file.match(pattern);
|
|
169
|
+
if (match) {
|
|
170
|
+
const ver = match[2] ? parseInt(match[2], 10) : 1;
|
|
171
|
+
if (ver > maxVersion)
|
|
172
|
+
maxVersion = ver;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
return maxVersion === 0 ? 1 : maxVersion + 1;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return 1;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
async function findLatestAnalysis(reviewsDir, phase) {
|
|
182
|
+
try {
|
|
183
|
+
const files = await fs.readdir(reviewsDir);
|
|
184
|
+
const pattern = new RegExp(`^adversarial-analysis-${phase}(-r(\\d+))?\\.md$`);
|
|
185
|
+
let maxVersion = 0;
|
|
186
|
+
let latestFile = null;
|
|
187
|
+
for (const file of files) {
|
|
188
|
+
const match = file.match(pattern);
|
|
189
|
+
if (match) {
|
|
190
|
+
const ver = match[2] ? parseInt(match[2], 10) : 1;
|
|
191
|
+
if (ver > maxVersion) {
|
|
192
|
+
maxVersion = ver;
|
|
193
|
+
latestFile = join(reviewsDir, file);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
return latestFile;
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
return null;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
async function findExistingFiles(dir, filenames) {
|
|
204
|
+
const found = [];
|
|
205
|
+
for (const filename of filenames) {
|
|
206
|
+
const filePath = join(dir, filename);
|
|
207
|
+
try {
|
|
208
|
+
await fs.access(filePath);
|
|
209
|
+
found.push(filePath);
|
|
210
|
+
}
|
|
211
|
+
catch {
|
|
212
|
+
// File doesn't exist, skip
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
return found;
|
|
216
|
+
}
|
|
217
|
+
async function findPriorPhaseDocs(specDir, currentPhase) {
|
|
218
|
+
const phaseOrder = ['requirements', 'design', 'tasks'];
|
|
219
|
+
const currentIndex = phaseOrder.indexOf(currentPhase);
|
|
220
|
+
const priorPhases = phaseOrder.slice(0, currentIndex);
|
|
221
|
+
return findExistingFiles(specDir, priorPhases.map(p => `${p}.md`));
|
|
222
|
+
}
|
|
223
|
+
async function getMethodologyOverride(workflowRoot, key) {
|
|
224
|
+
try {
|
|
225
|
+
const raw = await fs.readFile(join(workflowRoot, 'adversarial-settings.json'), 'utf-8');
|
|
226
|
+
const settings = JSON.parse(raw);
|
|
227
|
+
const value = settings[key];
|
|
228
|
+
return typeof value === 'string' && value.trim() ? value : null;
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
return null;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
export const PHASE_ATTACK_ANGLES = {
|
|
235
|
+
requirements: {
|
|
236
|
+
persona: 'senior technical product manager',
|
|
237
|
+
attackSurface: 'Completeness, ambiguity, scope',
|
|
238
|
+
exampleAngles: 'Missing user stories, unstated assumptions, scope creep risk, contradictions between stories, acceptance criteria that can\'t be tested',
|
|
239
|
+
},
|
|
240
|
+
design: {
|
|
241
|
+
persona: 'staff engineer',
|
|
242
|
+
attackSurface: 'Feasibility, consistency, edge cases',
|
|
243
|
+
exampleAngles: 'Conflicts with steering docs, unaddressed failure modes, scaling bottlenecks, missing error paths, alternatives not considered',
|
|
244
|
+
},
|
|
245
|
+
tasks: {
|
|
246
|
+
persona: 'senior delivery lead',
|
|
247
|
+
attackSurface: 'Atomicity, ordering, coverage',
|
|
248
|
+
exampleAngles: 'Tasks too large or too small, missing dependency edges, gaps between tasks and design, unclear completion criteria, tasks that don\'t map to any requirement',
|
|
249
|
+
},
|
|
250
|
+
decomposition: {
|
|
251
|
+
persona: 'principal architect',
|
|
252
|
+
attackSurface: 'Completeness, granularity, ordering',
|
|
253
|
+
exampleAngles: 'Missing specs, over-scoped specs, wrong dependency order, horizontal instead of vertical slicing, INVEST violations (specs not independently valuable), cross-spec convention gaps, unresolved open questions that block implementation',
|
|
254
|
+
},
|
|
255
|
+
product: {
|
|
256
|
+
persona: 'head of product',
|
|
257
|
+
attackSurface: 'Vision clarity, user value, market fit',
|
|
258
|
+
exampleAngles: 'Vague target users, unvalidated value propositions, missing success metrics, undifferentiated positioning, overlooked competitor capabilities',
|
|
259
|
+
},
|
|
260
|
+
tech: {
|
|
261
|
+
persona: 'principal engineer',
|
|
262
|
+
attackSurface: 'Architectural soundness, constraints, tradeoffs',
|
|
263
|
+
exampleAngles: 'Unjustified technology choices, missing non-functional requirements, hidden integration costs, scalability ceilings, security or compliance gaps',
|
|
264
|
+
},
|
|
265
|
+
structure: {
|
|
266
|
+
persona: 'engineering lead with deep codebase ownership',
|
|
267
|
+
attackSurface: 'Organization, conventions, maintainability',
|
|
268
|
+
exampleAngles: 'Inconsistent module layout, ambiguous ownership boundaries, conventions that conflict with the stack, missing patterns for shared concerns, hard-to-navigate hierarchies',
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
const GENERIC_PHASE_GUIDANCE = {
|
|
272
|
+
persona: 'experienced senior reviewer',
|
|
273
|
+
attackSurface: 'Completeness, consistency, and unstated assumptions',
|
|
274
|
+
exampleAngles: 'Missing context, contradictions, ambiguous language, unaddressed failure modes, alternatives that were not considered',
|
|
275
|
+
};
|
|
276
|
+
export function buildScaffoldedPrompt(args) {
|
|
277
|
+
const { specName, phase, version, targetFile, analysisOutputPath, memoryFilePath, latestAnalysisPath } = args;
|
|
278
|
+
const guidance = PHASE_ATTACK_ANGLES[phase] ?? GENERIC_PHASE_GUIDANCE;
|
|
279
|
+
const priorReviewSection = version > 1
|
|
280
|
+
? `## Prior review context
|
|
281
|
+
|
|
282
|
+
This is review v${version}. Before attacking the target document:
|
|
283
|
+
|
|
284
|
+
1. Read the rolling memory file at ${memoryFilePath} (it may not exist yet — the file is created/updated by each v2+ review).
|
|
285
|
+
${latestAnalysisPath ? `2. Read the latest prior analysis at ${latestAnalysisPath} to understand what was found most recently.` : `2. No prior analysis is available on disk — proceed without it.`}
|
|
286
|
+
3. Classify each finding you produce as one of:
|
|
287
|
+
- **Novel**: not identified in any prior review.
|
|
288
|
+
- **Compounding**: builds on or deepens a prior finding.
|
|
289
|
+
- **Recurring**: same issue identified before but not yet resolved — escalate severity.
|
|
290
|
+
4. Focus on novel and compounding issues. Do not re-discover known findings unless they remain unresolved.
|
|
291
|
+
5. After completing your analysis, write an UPDATED memory file to ${memoryFilePath} using this format:
|
|
292
|
+
|
|
293
|
+
\`\`\`markdown
|
|
294
|
+
# Adversarial Review Memory — ${phase}
|
|
295
|
+
Last updated: <today's date> (after v${version} review)
|
|
296
|
+
|
|
297
|
+
## Cumulative Findings Summary
|
|
298
|
+
### Accepted
|
|
299
|
+
- <finding>: <brief description, which version identified it>
|
|
300
|
+
|
|
301
|
+
### Partially Accepted
|
|
302
|
+
- <finding>: <brief description, user's stance>
|
|
303
|
+
|
|
304
|
+
### Rejected
|
|
305
|
+
- <finding>: <brief description, reason for rejection>
|
|
306
|
+
|
|
307
|
+
### Unresolved
|
|
308
|
+
- <finding>: <not yet responded to>
|
|
309
|
+
|
|
310
|
+
## Patterns & Themes
|
|
311
|
+
- <high-level observations about recurring issues>
|
|
312
|
+
|
|
313
|
+
## Guidance for Next Review
|
|
314
|
+
- Focus areas based on what's been found
|
|
315
|
+
- Areas that have been well-covered and don't need re-examination
|
|
316
|
+
\`\`\`
|
|
317
|
+
|
|
318
|
+
`
|
|
319
|
+
: '';
|
|
320
|
+
return `# Adversarial Review — ${specName}/${phase} (v${version})
|
|
321
|
+
|
|
322
|
+
You are a ${guidance.persona}. Your job is to tear apart this document and find every weakness — gaps, ambiguities, contradictions, unstated assumptions, failure modes that have not been considered. Do not validate or support. Use directive framing throughout.
|
|
323
|
+
|
|
324
|
+
## Target document
|
|
325
|
+
${targetFile}
|
|
326
|
+
|
|
327
|
+
${priorReviewSection}## Analysis approach
|
|
328
|
+
|
|
329
|
+
Before writing your analysis, read the target document. Then identify **3–6 specific topics, decisions, or sections** to attack — name actual headings, claims, or structures from the document. For each, list **3–5 directive bullets** grounded in the document's concrete content. Frame bullets as directives ("Challenge the claim that…", "Stress-test the assumption that…"), not questions. Do not write generic advice.
|
|
330
|
+
|
|
331
|
+
**Primary attack surface for this phase:** ${guidance.attackSurface}
|
|
332
|
+
|
|
333
|
+
**Example attack angles to consider:** ${guidance.exampleAngles}
|
|
334
|
+
|
|
335
|
+
## Closing deliverables
|
|
336
|
+
- Top N risks/gaps (3 for short docs, 5 for long)
|
|
337
|
+
- Top 3 conclusions to challenge or reverse, with reasoning
|
|
338
|
+
- What's missing — work that should be done before acting on this document
|
|
339
|
+
|
|
340
|
+
Be specific and concrete. Cite failure scenarios, not abstract risks. If something
|
|
341
|
+
is actually fine, say so briefly and move on.
|
|
342
|
+
|
|
343
|
+
## Output
|
|
344
|
+
Write your analysis to: ${analysisOutputPath}
|
|
345
|
+
`;
|
|
346
|
+
}
|
|
347
|
+
function renderPhaseAttackAnglesTable() {
|
|
348
|
+
const phaseLabels = {
|
|
349
|
+
requirements: 'Requirements',
|
|
350
|
+
design: 'Design',
|
|
351
|
+
tasks: 'Tasks',
|
|
352
|
+
decomposition: 'Decomposition',
|
|
353
|
+
product: 'Product',
|
|
354
|
+
tech: 'Tech',
|
|
355
|
+
structure: 'Structure',
|
|
356
|
+
};
|
|
357
|
+
const rows = Object.entries(PHASE_ATTACK_ANGLES).map(([key, guidance]) => {
|
|
358
|
+
const label = phaseLabels[key] ?? key;
|
|
359
|
+
return `| **${label}** | ${guidance.attackSurface} | ${guidance.exampleAngles} |`;
|
|
360
|
+
});
|
|
361
|
+
return rows.join('\n');
|
|
362
|
+
}
|
|
363
|
+
export function getAdversarialReviewMethodology() {
|
|
364
|
+
return `# Adversarial Review Methodology
|
|
365
|
+
|
|
366
|
+
## Technique
|
|
367
|
+
|
|
368
|
+
This follows the adversarial prompting technique where an AI critiques work in a fresh session
|
|
369
|
+
with no collaborative history, producing genuinely critical output rather than defending prior
|
|
370
|
+
contributions. The technique relies on **context separation** (fresh session) and **oppositional
|
|
371
|
+
framing** (the prompt directs the agent to attack, not validate).
|
|
372
|
+
|
|
373
|
+
Reference: https://www.fightingwithai.com/prompt-engineering/adversarial-prompting/
|
|
374
|
+
|
|
375
|
+
## How to Generate the Adversarial Prompt
|
|
376
|
+
|
|
377
|
+
Write a markdown file containing a prompt for a fresh agent session. The prompt must follow
|
|
378
|
+
this structure:
|
|
379
|
+
|
|
380
|
+
### Opening
|
|
381
|
+
|
|
382
|
+
- Assign the reviewing agent a **senior expert persona** relevant to the document's domain.
|
|
383
|
+
- State clearly that the agent's job is to find weaknesses, not to validate or support.
|
|
384
|
+
- Use oppositional framing: "tear apart", "stress-test", "find every gap", etc.
|
|
385
|
+
|
|
386
|
+
### Analysis Dimensions
|
|
387
|
+
|
|
388
|
+
Create **3-6 numbered sections**, each targeting a specific aspect of the document. These must
|
|
389
|
+
be **tailored to the document's actual content**, not generic. For each section:
|
|
390
|
+
|
|
391
|
+
- Name the specific topic or decision being targeted.
|
|
392
|
+
- Provide 3-5 bullet points with concrete attack angles: assumptions to challenge, failure
|
|
393
|
+
modes to explore, missing considerations to surface, alternatives that were dismissed or ignored.
|
|
394
|
+
- Frame bullets as directives, not questions ("Challenge the claim that..." not "Do you think...").
|
|
395
|
+
|
|
396
|
+
**Phase-specific attack angles:**
|
|
397
|
+
|
|
398
|
+
| Phase | Primary attack surface | Example angles |
|
|
399
|
+
|---|---|---|
|
|
400
|
+
${renderPhaseAttackAnglesTable()}
|
|
401
|
+
|
|
402
|
+
If steering docs or prior phase docs exist, read them to ground the attack angles in the
|
|
403
|
+
project's actual constraints and decisions.
|
|
404
|
+
|
|
405
|
+
### Closing Deliverables
|
|
406
|
+
|
|
407
|
+
Ask the reviewing agent to conclude with:
|
|
408
|
+
|
|
409
|
+
- **Top N risks/gaps** (scaled to document size — 3 for a short doc, 5 for a long one)
|
|
410
|
+
- **Top 3 conclusions to challenge or reverse**, with specific reasoning
|
|
411
|
+
- **What's missing** — work that should be done before acting on the document
|
|
412
|
+
|
|
413
|
+
Include this directive: "Be specific and concrete. Cite failure scenarios, not abstract risks.
|
|
414
|
+
If something is actually fine, say so briefly and move on."
|
|
415
|
+
|
|
416
|
+
### Document Insertion Point
|
|
417
|
+
|
|
418
|
+
End the prompt by telling the reviewing agent where to write its analysis and providing
|
|
419
|
+
the target document path.
|
|
420
|
+
|
|
421
|
+
## What to Avoid
|
|
422
|
+
|
|
423
|
+
- **Don't make the prompt generic.** The analysis dimensions must reference specific topics,
|
|
424
|
+
claims, and structures from the target document.
|
|
425
|
+
- **Don't include collaborative language.** No "please review" or "what do you think".
|
|
426
|
+
Use directive framing throughout.
|
|
427
|
+
- **Don't leak context.** The prompt should not mention that it was generated by another AI
|
|
428
|
+
or that there's a prior session. It should read as if a human architect wrote it.
|
|
429
|
+
- **Don't pad with praise directives.** No "highlight what's good". The entire point is
|
|
430
|
+
oppositional analysis.
|
|
431
|
+
|
|
432
|
+
## Execution
|
|
433
|
+
|
|
434
|
+
After writing the prompt file, launch a fresh-context subagent. The subagent prompt must be
|
|
435
|
+
exactly: "Read and execute the instructions in <path-to-prompt-file>." Do not add any other
|
|
436
|
+
context, summary, or instructions.
|
|
437
|
+
|
|
438
|
+
## Working with Prior Review Context (v2+ Reviews)
|
|
439
|
+
|
|
440
|
+
When a memory file path and latest analysis path are provided (version 2+), the prompt
|
|
441
|
+
generation step has additional responsibilities:
|
|
442
|
+
|
|
443
|
+
### Reading Prior Context
|
|
444
|
+
- Read the memory file at the provided path (if it exists on disk — it won't exist for the
|
|
445
|
+
first v2 review, but will for v3+).
|
|
446
|
+
- Read the latest analysis file to understand what was found in the most recent review.
|
|
447
|
+
|
|
448
|
+
### Updating the Memory File
|
|
449
|
+
After reading both, write an updated memory file that:
|
|
450
|
+
- Incorporates findings from the latest analysis into a cumulative record.
|
|
451
|
+
- Categorizes findings as: Accepted, Partially Accepted, Rejected, or Unresolved.
|
|
452
|
+
- Notes patterns and themes across iterations.
|
|
453
|
+
- Provides guidance for the next review's focus areas.
|
|
454
|
+
|
|
455
|
+
Use this format:
|
|
456
|
+
\`\`\`markdown
|
|
457
|
+
# Adversarial Review Memory — {phase}
|
|
458
|
+
Last updated: {date} (after v{N} review)
|
|
459
|
+
|
|
460
|
+
## Cumulative Findings Summary
|
|
461
|
+
### Accepted
|
|
462
|
+
- [finding]: [brief description, which version identified it]
|
|
463
|
+
|
|
464
|
+
### Partially Accepted
|
|
465
|
+
- [finding]: [brief description, user's stance]
|
|
466
|
+
|
|
467
|
+
### Rejected
|
|
468
|
+
- [finding]: [brief description, reason for rejection]
|
|
469
|
+
|
|
470
|
+
### Unresolved
|
|
471
|
+
- [finding]: [not yet responded to]
|
|
472
|
+
|
|
473
|
+
## Patterns & Themes
|
|
474
|
+
- [high-level observations about recurring issues]
|
|
475
|
+
|
|
476
|
+
## Guidance for Next Review
|
|
477
|
+
- Focus areas based on what's been found
|
|
478
|
+
- Areas that have been well-covered and don't need re-examination
|
|
479
|
+
\`\`\`
|
|
480
|
+
|
|
481
|
+
### Embedding Context in the Generated Prompt
|
|
482
|
+
Add a "## Prior Review Context" section to the generated adversarial prompt containing:
|
|
483
|
+
- A summary of what prior reviews found.
|
|
484
|
+
- Which findings were addressed and which persist.
|
|
485
|
+
- A directive to focus on novel issues, not re-discover known ones.
|
|
486
|
+
- Instruction to classify each finding as one of:
|
|
487
|
+
- **Novel**: Not identified in any prior review.
|
|
488
|
+
- **Compounding**: Builds on or deepens a prior finding.
|
|
489
|
+
- **Recurring**: Same issue identified before but not yet resolved — severity should escalate.`;
|
|
490
|
+
}
|
|
491
|
+
//# sourceMappingURL=adversarial-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adversarial-review.js","sourceRoot":"","sources":["../../src/tools/adversarial-review.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { ToolContext, ToolResponse } from '../types.js';
|
|
3
|
+
export declare const approvalsTool: Tool;
|
|
4
|
+
export declare function approvalsHandler(args: {
|
|
5
|
+
action: 'request' | 'status' | 'delete';
|
|
6
|
+
projectPath?: string;
|
|
7
|
+
approvalId?: string;
|
|
8
|
+
title?: string;
|
|
9
|
+
filePath?: string;
|
|
10
|
+
type?: 'document' | 'action';
|
|
11
|
+
category?: 'spec' | 'steering' | 'decomposition';
|
|
12
|
+
categoryName?: string;
|
|
13
|
+
}, context: ToolContext): Promise<ToolResponse>;
|
|
14
|
+
//# sourceMappingURL=approvals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/tools/approvals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AA6BxD,eAAO,MAAM,aAAa,EAAE,IAwD3B,CAAC;AAwCF,wBAAsB,gBAAgB,CACpC,IAAI,EAAE;IACJ,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,eAAe,CAAC;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,EACD,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAqDvB"}
|