specky-sdd 3.10.2 → 3.11.1

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.
Files changed (322) hide show
  1. package/.apm/agents/specky-design-architect.agent.md +8 -28
  2. package/.apm/agents/specky-implementer.agent.md +15 -27
  3. package/.apm/agents/specky-onboarding.agent.md +8 -49
  4. package/.apm/agents/specky-orchestrator.agent.md +12 -37
  5. package/.apm/agents/specky-quality-reviewer.agent.md +9 -30
  6. package/.apm/agents/specky-release-engineer.agent.md +8 -30
  7. package/.apm/agents/specky-requirements-engineer.agent.md +1 -1
  8. package/.apm/agents/specky-research-analyst.agent.md +1 -1
  9. package/.apm/agents/specky-sdd-clarify.agent.md +1 -1
  10. package/.apm/agents/specky-sdd-init.agent.md +8 -19
  11. package/.apm/agents/specky-spec-engineer.agent.md +8 -30
  12. package/.apm/agents/specky-task-planner.agent.md +7 -26
  13. package/.apm/agents/specky-test-verifier.agent.md +7 -17
  14. package/.apm/hooks/scripts/specky-artifact-validator.sh +14 -10
  15. package/.apm/hooks/scripts/specky-auto-checkpoint.sh +9 -4
  16. package/.apm/hooks/scripts/specky-branch-validator.sh +29 -116
  17. package/.apm/hooks/scripts/specky-cognitive-debt-alert.sh +6 -3
  18. package/.apm/hooks/scripts/specky-contract-context.bash +24 -0
  19. package/.apm/hooks/scripts/specky-contract-context.mjs +219 -0
  20. package/.apm/hooks/scripts/specky-drift-monitor.sh +6 -3
  21. package/.apm/hooks/scripts/specky-ears-validator.sh +5 -2
  22. package/.apm/hooks/scripts/specky-lgtm-gate.sh +12 -10
  23. package/.apm/hooks/scripts/specky-metrics-dashboard.sh +5 -2
  24. package/.apm/hooks/scripts/specky-phase-gate.sh +18 -9
  25. package/.apm/hooks/scripts/specky-pipeline-guard.sh +19 -26
  26. package/.apm/hooks/scripts/specky-release-gate.sh +38 -46
  27. package/.apm/hooks/scripts/specky-security-scan.sh +53 -36
  28. package/.apm/hooks/scripts/specky-session-banner.sh +22 -74
  29. package/.apm/hooks/scripts/specky-spec-quality.sh +7 -4
  30. package/.apm/hooks/scripts/specky-spec-sync.sh +12 -11
  31. package/.apm/hooks/scripts/specky-task-tracer.sh +5 -2
  32. package/.apm/hooks/specky-run.sh +3 -0
  33. package/.apm/instructions/claude-instructions.instructions.md +3 -3
  34. package/.apm/instructions/copilot-instructions.instructions.md +3 -3
  35. package/.apm/instructions/cursor-instructions.instructions.md +3 -3
  36. package/.apm/instructions/opencode-instructions.instructions.md +2 -2
  37. package/.apm/prompts/specky-brownfield.prompt.md +8 -5
  38. package/.apm/prompts/specky-greenfield.prompt.md +7 -5
  39. package/.apm/prompts/specky-implement.prompt.md +1 -1
  40. package/.apm/prompts/specky-orchestrate.prompt.md +1 -1
  41. package/.apm/skills/specky-design-architect/SKILL.md +39 -16
  42. package/.apm/skills/specky-implementer/SKILL.md +46 -158
  43. package/.apm/skills/specky-onboarding/SKILL.md +50 -156
  44. package/.apm/skills/specky-orchestrator/SKILL.md +28 -26
  45. package/.apm/skills/specky-quality-reviewer/SKILL.md +38 -23
  46. package/.apm/skills/specky-release-engineer/SKILL.md +38 -270
  47. package/.apm/skills/specky-research-analyst/SKILL.md +1 -1
  48. package/.apm/skills/specky-sdd-init/SKILL.md +61 -23
  49. package/.apm/skills/specky-sdd-pipeline/SKILL.md +36 -216
  50. package/.apm/skills/specky-spec-engineer/SKILL.md +40 -17
  51. package/.apm/skills/specky-task-planner/SKILL.md +31 -12
  52. package/.apm/skills/specky-test-verifier/SKILL.md +23 -202
  53. package/CHANGELOG.md +39 -0
  54. package/README.md +49 -47
  55. package/SECURITY.md +5 -1
  56. package/apm-policy.yml +2 -0
  57. package/apm.lock.yaml +55 -53
  58. package/apm.yml +3 -3
  59. package/config.yml +32 -53
  60. package/dist/cli/commands/doctor.d.ts.map +1 -1
  61. package/dist/cli/commands/doctor.js +106 -20
  62. package/dist/cli/commands/doctor.js.map +1 -1
  63. package/dist/cli/commands/init.d.ts +2 -0
  64. package/dist/cli/commands/init.d.ts.map +1 -1
  65. package/dist/cli/commands/init.js +105 -7
  66. package/dist/cli/commands/init.js.map +1 -1
  67. package/dist/cli/commands/migrate-contracts.d.ts +15 -0
  68. package/dist/cli/commands/migrate-contracts.d.ts.map +1 -0
  69. package/dist/cli/commands/migrate-contracts.js +311 -0
  70. package/dist/cli/commands/migrate-contracts.js.map +1 -0
  71. package/dist/cli/commands/status.d.ts.map +1 -1
  72. package/dist/cli/commands/status.js +63 -48
  73. package/dist/cli/commands/status.js.map +1 -1
  74. package/dist/cli/index.js +82 -27
  75. package/dist/cli/index.js.map +1 -1
  76. package/dist/cli/lib/apm/policy.d.ts +1 -0
  77. package/dist/cli/lib/apm/policy.d.ts.map +1 -1
  78. package/dist/cli/lib/apm/policy.js +15 -0
  79. package/dist/cli/lib/apm/policy.js.map +1 -1
  80. package/dist/cli/lib/asset-copier.d.ts +1 -0
  81. package/dist/cli/lib/asset-copier.d.ts.map +1 -1
  82. package/dist/cli/lib/asset-copier.js +4 -4
  83. package/dist/cli/lib/asset-copier.js.map +1 -1
  84. package/dist/cli/lib/cursor-plugin-writer.d.ts.map +1 -1
  85. package/dist/cli/lib/cursor-plugin-writer.js +34 -9
  86. package/dist/cli/lib/cursor-plugin-writer.js.map +1 -1
  87. package/dist/cli/lib/harness/compilers/claude.js +3 -3
  88. package/dist/cli/lib/harness/compilers/claude.js.map +1 -1
  89. package/dist/cli/lib/harness/compilers/common.d.ts +10 -1
  90. package/dist/cli/lib/harness/compilers/common.d.ts.map +1 -1
  91. package/dist/cli/lib/harness/compilers/common.js +71 -8
  92. package/dist/cli/lib/harness/compilers/common.js.map +1 -1
  93. package/dist/cli/lib/harness/compilers/copilot.js +3 -3
  94. package/dist/cli/lib/harness/compilers/copilot.js.map +1 -1
  95. package/dist/cli/lib/harness/compilers/cursor.js +3 -3
  96. package/dist/cli/lib/harness/compilers/cursor.js.map +1 -1
  97. package/dist/cli/lib/harness/compilers/opencode.js +3 -3
  98. package/dist/cli/lib/harness/compilers/opencode.js.map +1 -1
  99. package/dist/cli/lib/harness/tool-map.d.ts +8 -1
  100. package/dist/cli/lib/harness/tool-map.d.ts.map +1 -1
  101. package/dist/cli/lib/harness/tool-map.js +74 -0
  102. package/dist/cli/lib/harness/tool-map.js.map +1 -1
  103. package/dist/cli/lib/harness/types.d.ts +11 -1
  104. package/dist/cli/lib/harness/types.d.ts.map +1 -1
  105. package/dist/cli/lib/mcp-writer.d.ts +2 -1
  106. package/dist/cli/lib/mcp-writer.d.ts.map +1 -1
  107. package/dist/cli/lib/mcp-writer.js +13 -5
  108. package/dist/cli/lib/mcp-writer.js.map +1 -1
  109. package/dist/cli/lib/settings-merger.d.ts +15 -0
  110. package/dist/cli/lib/settings-merger.d.ts.map +1 -1
  111. package/dist/cli/lib/settings-merger.js +66 -1
  112. package/dist/cli/lib/settings-merger.js.map +1 -1
  113. package/dist/config.d.ts +110 -42
  114. package/dist/config.d.ts.map +1 -1
  115. package/dist/config.js +129 -140
  116. package/dist/config.js.map +1 -1
  117. package/dist/constants.d.ts +1 -1
  118. package/dist/constants.d.ts.map +1 -1
  119. package/dist/contracts/pipeline-profiles.d.ts +61 -0
  120. package/dist/contracts/pipeline-profiles.d.ts.map +1 -0
  121. package/dist/contracts/pipeline-profiles.js +303 -0
  122. package/dist/contracts/pipeline-profiles.js.map +1 -0
  123. package/dist/contracts/tool-contracts.d.ts +449 -0
  124. package/dist/contracts/tool-contracts.d.ts.map +1 -0
  125. package/dist/contracts/tool-contracts.js +83 -0
  126. package/dist/contracts/tool-contracts.js.map +1 -0
  127. package/dist/contracts/use-case.d.ts +736 -0
  128. package/dist/contracts/use-case.d.ts.map +1 -0
  129. package/dist/contracts/use-case.js +352 -0
  130. package/dist/contracts/use-case.js.map +1 -0
  131. package/dist/index.js +7 -4
  132. package/dist/index.js.map +1 -1
  133. package/dist/schemas/common.d.ts +3 -3
  134. package/dist/schemas/common.d.ts.map +1 -1
  135. package/dist/schemas/common.js +1 -4
  136. package/dist/schemas/common.js.map +1 -1
  137. package/dist/schemas/context.d.ts +2 -2
  138. package/dist/schemas/environment.d.ts +6 -17
  139. package/dist/schemas/environment.d.ts.map +1 -1
  140. package/dist/schemas/environment.js +1 -28
  141. package/dist/schemas/environment.js.map +1 -1
  142. package/dist/schemas/feature-content.d.ts +116 -0
  143. package/dist/schemas/feature-content.d.ts.map +1 -0
  144. package/dist/schemas/feature-content.js +65 -0
  145. package/dist/schemas/feature-content.js.map +1 -0
  146. package/dist/schemas/infrastructure.d.ts +6 -28
  147. package/dist/schemas/infrastructure.d.ts.map +1 -1
  148. package/dist/schemas/infrastructure.js +1 -30
  149. package/dist/schemas/infrastructure.js.map +1 -1
  150. package/dist/schemas/input.d.ts +412 -8
  151. package/dist/schemas/input.d.ts.map +1 -1
  152. package/dist/schemas/input.js +6 -7
  153. package/dist/schemas/input.js.map +1 -1
  154. package/dist/schemas/integration.d.ts +22 -28
  155. package/dist/schemas/integration.d.ts.map +1 -1
  156. package/dist/schemas/integration.js +11 -47
  157. package/dist/schemas/integration.js.map +1 -1
  158. package/dist/schemas/metrics.d.ts +3 -2
  159. package/dist/schemas/metrics.d.ts.map +1 -1
  160. package/dist/schemas/metrics.js +2 -1
  161. package/dist/schemas/metrics.js.map +1 -1
  162. package/dist/schemas/pbt.d.ts +2 -7
  163. package/dist/schemas/pbt.d.ts.map +1 -1
  164. package/dist/schemas/pbt.js +1 -9
  165. package/dist/schemas/pbt.js.map +1 -1
  166. package/dist/schemas/pipeline.d.ts +282 -35
  167. package/dist/schemas/pipeline.d.ts.map +1 -1
  168. package/dist/schemas/pipeline.js +29 -15
  169. package/dist/schemas/pipeline.js.map +1 -1
  170. package/dist/schemas/quality.d.ts +15 -19
  171. package/dist/schemas/quality.d.ts.map +1 -1
  172. package/dist/schemas/quality.js +6 -3
  173. package/dist/schemas/quality.js.map +1 -1
  174. package/dist/schemas/routing.d.ts +2 -2
  175. package/dist/schemas/routing.d.ts.map +1 -1
  176. package/dist/schemas/routing.js +2 -4
  177. package/dist/schemas/routing.js.map +1 -1
  178. package/dist/schemas/testing.d.ts +4 -13
  179. package/dist/schemas/testing.d.ts.map +1 -1
  180. package/dist/schemas/testing.js +2 -10
  181. package/dist/schemas/testing.js.map +1 -1
  182. package/dist/schemas/transcript.d.ts +648 -10
  183. package/dist/schemas/transcript.d.ts.map +1 -1
  184. package/dist/schemas/transcript.js +25 -12
  185. package/dist/schemas/transcript.js.map +1 -1
  186. package/dist/schemas/utility.d.ts +28 -15
  187. package/dist/schemas/utility.d.ts.map +1 -1
  188. package/dist/schemas/utility.js +23 -14
  189. package/dist/schemas/utility.js.map +1 -1
  190. package/dist/schemas/visualization.d.ts +66 -15
  191. package/dist/schemas/visualization.d.ts.map +1 -1
  192. package/dist/schemas/visualization.js +36 -12
  193. package/dist/schemas/visualization.js.map +1 -1
  194. package/dist/services/codebase-scanner.d.ts +1 -1
  195. package/dist/services/codebase-scanner.d.ts.map +1 -1
  196. package/dist/services/codebase-scanner.js +2 -2
  197. package/dist/services/codebase-scanner.js.map +1 -1
  198. package/dist/services/compliance-engine.d.ts +3 -2
  199. package/dist/services/compliance-engine.d.ts.map +1 -1
  200. package/dist/services/compliance-engine.js +34 -21
  201. package/dist/services/compliance-engine.js.map +1 -1
  202. package/dist/services/diagram-generator.d.ts +4 -96
  203. package/dist/services/diagram-generator.d.ts.map +1 -1
  204. package/dist/services/diagram-generator.js +18 -1051
  205. package/dist/services/diagram-generator.js.map +1 -1
  206. package/dist/services/doc-generator.d.ts +19 -52
  207. package/dist/services/doc-generator.d.ts.map +1 -1
  208. package/dist/services/doc-generator.js +389 -524
  209. package/dist/services/doc-generator.js.map +1 -1
  210. package/dist/services/execution-context.d.ts +32 -0
  211. package/dist/services/execution-context.d.ts.map +1 -0
  212. package/dist/services/execution-context.js +120 -0
  213. package/dist/services/execution-context.js.map +1 -0
  214. package/dist/services/file-manager.d.ts +16 -4
  215. package/dist/services/file-manager.d.ts.map +1 -1
  216. package/dist/services/file-manager.js +81 -5
  217. package/dist/services/file-manager.js.map +1 -1
  218. package/dist/services/iac-generator.d.ts +9 -10
  219. package/dist/services/iac-generator.d.ts.map +1 -1
  220. package/dist/services/iac-generator.js +36 -99
  221. package/dist/services/iac-generator.js.map +1 -1
  222. package/dist/services/methodology.js +1 -1
  223. package/dist/services/methodology.js.map +1 -1
  224. package/dist/services/metrics-generator.d.ts +1 -1
  225. package/dist/services/metrics-generator.d.ts.map +1 -1
  226. package/dist/services/metrics-generator.js +2 -2
  227. package/dist/services/metrics-generator.js.map +1 -1
  228. package/dist/services/pbt-generator.d.ts +10 -31
  229. package/dist/services/pbt-generator.d.ts.map +1 -1
  230. package/dist/services/pbt-generator.js +43 -515
  231. package/dist/services/pbt-generator.js.map +1 -1
  232. package/dist/services/state-machine.d.ts +22 -16
  233. package/dist/services/state-machine.d.ts.map +1 -1
  234. package/dist/services/state-machine.js +176 -179
  235. package/dist/services/state-machine.js.map +1 -1
  236. package/dist/services/template-engine.d.ts +11 -5
  237. package/dist/services/template-engine.d.ts.map +1 -1
  238. package/dist/services/template-engine.js +48 -21
  239. package/dist/services/template-engine.js.map +1 -1
  240. package/dist/services/test-generator.d.ts +11 -7
  241. package/dist/services/test-generator.d.ts.map +1 -1
  242. package/dist/services/test-generator.js +45 -54
  243. package/dist/services/test-generator.js.map +1 -1
  244. package/dist/templates/design.md +6 -0
  245. package/dist/tools/analysis.d.ts.map +1 -1
  246. package/dist/tools/analysis.js +8 -9
  247. package/dist/tools/analysis.js.map +1 -1
  248. package/dist/tools/checkpoint.d.ts.map +1 -1
  249. package/dist/tools/checkpoint.js +43 -46
  250. package/dist/tools/checkpoint.js.map +1 -1
  251. package/dist/tools/context.d.ts.map +1 -1
  252. package/dist/tools/context.js +5 -7
  253. package/dist/tools/context.js.map +1 -1
  254. package/dist/tools/documentation.d.ts +1 -4
  255. package/dist/tools/documentation.d.ts.map +1 -1
  256. package/dist/tools/documentation.js +112 -193
  257. package/dist/tools/documentation.js.map +1 -1
  258. package/dist/tools/environment.d.ts +1 -1
  259. package/dist/tools/environment.d.ts.map +1 -1
  260. package/dist/tools/environment.js +58 -99
  261. package/dist/tools/environment.js.map +1 -1
  262. package/dist/tools/infrastructure.d.ts.map +1 -1
  263. package/dist/tools/infrastructure.js +36 -38
  264. package/dist/tools/infrastructure.js.map +1 -1
  265. package/dist/tools/input.d.ts.map +1 -1
  266. package/dist/tools/input.js +18 -11
  267. package/dist/tools/input.js.map +1 -1
  268. package/dist/tools/integration.d.ts.map +1 -1
  269. package/dist/tools/integration.js +64 -65
  270. package/dist/tools/integration.js.map +1 -1
  271. package/dist/tools/metrics.d.ts.map +1 -1
  272. package/dist/tools/metrics.js +18 -30
  273. package/dist/tools/metrics.js.map +1 -1
  274. package/dist/tools/pbt.d.ts.map +1 -1
  275. package/dist/tools/pbt.js +10 -12
  276. package/dist/tools/pbt.js.map +1 -1
  277. package/dist/tools/pipeline.d.ts.map +1 -1
  278. package/dist/tools/pipeline.js +156 -274
  279. package/dist/tools/pipeline.js.map +1 -1
  280. package/dist/tools/quality.d.ts.map +1 -1
  281. package/dist/tools/quality.js +58 -45
  282. package/dist/tools/quality.js.map +1 -1
  283. package/dist/tools/response-builder.d.ts.map +1 -1
  284. package/dist/tools/response-builder.js +12 -10
  285. package/dist/tools/response-builder.js.map +1 -1
  286. package/dist/tools/testing.d.ts.map +1 -1
  287. package/dist/tools/testing.js +28 -29
  288. package/dist/tools/testing.js.map +1 -1
  289. package/dist/tools/tool-enforcement.d.ts +2 -0
  290. package/dist/tools/tool-enforcement.d.ts.map +1 -1
  291. package/dist/tools/tool-enforcement.js +84 -59
  292. package/dist/tools/tool-enforcement.js.map +1 -1
  293. package/dist/tools/transcript.d.ts.map +1 -1
  294. package/dist/tools/transcript.js +304 -374
  295. package/dist/tools/transcript.js.map +1 -1
  296. package/dist/tools/turnkey.d.ts +1 -31
  297. package/dist/tools/turnkey.d.ts.map +1 -1
  298. package/dist/tools/turnkey.js +104 -488
  299. package/dist/tools/turnkey.js.map +1 -1
  300. package/dist/tools/utility.d.ts.map +1 -1
  301. package/dist/tools/utility.js +115 -134
  302. package/dist/tools/utility.js.map +1 -1
  303. package/dist/tools/visualization.d.ts +1 -25
  304. package/dist/tools/visualization.d.ts.map +1 -1
  305. package/dist/tools/visualization.js +187 -562
  306. package/dist/tools/visualization.js.map +1 -1
  307. package/dist/types.d.ts +21 -11
  308. package/dist/types.d.ts.map +1 -1
  309. package/dist/utils/artifact-metadata.d.ts +8 -0
  310. package/dist/utils/artifact-metadata.d.ts.map +1 -0
  311. package/dist/utils/artifact-metadata.js +10 -0
  312. package/dist/utils/artifact-metadata.js.map +1 -0
  313. package/dist/utils/requirement-partition.d.ts +8 -0
  314. package/dist/utils/requirement-partition.d.ts.map +1 -0
  315. package/dist/utils/requirement-partition.js +15 -0
  316. package/dist/utils/requirement-partition.js.map +1 -0
  317. package/package.json +11 -2
  318. package/templates/design.md +6 -0
  319. package/dist/utils/design-stubs.d.ts +0 -32
  320. package/dist/utils/design-stubs.d.ts.map +0 -1
  321. package/dist/utils/design-stubs.js +0 -103
  322. package/dist/utils/design-stubs.js.map +0 -1
@@ -101,4 +101,10 @@
101
101
 
102
102
  ---
103
103
 
104
+ ## 13. Workload-Specific Design Contract
105
+
106
+ {{workload_design}}
107
+
108
+ ---
109
+
104
110
  **Covers:** {{requirement_references}}
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAI5E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,cAAc,EAC/B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,IAAI,CAmHN"}
1
+ {"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AAK5E,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,eAAe,EAAE,cAAc,EAC/B,iBAAiB,CAAC,EAAE,iBAAiB,GACpC,IAAI,CAiHN"}
@@ -5,6 +5,7 @@
5
5
  import { formatError, truncate } from "./tool-result.js";
6
6
  import { checkSyncInputSchema } from "../schemas/utility.js";
7
7
  import { enrichResponse } from "./response-builder.js";
8
+ import { requireExecutionContext } from "../services/execution-context.js";
8
9
  export function registerAnalysisTools(server, fileManager, stateMachine, _templateEngine, intentDriftEngine) {
9
10
  // ─── sdd_check_sync ───
10
11
  server.registerTool("sdd_check_sync", {
@@ -17,13 +18,11 @@ export function registerAnalysisTools(server, fileManager, stateMachine, _templa
17
18
  idempotentHint: true,
18
19
  openWorldHint: false,
19
20
  },
20
- }, async ({ spec_dir, feature_number, code_paths }) => {
21
+ }, async ({ code_paths }) => {
21
22
  try {
22
- const features = await fileManager.listFeatures(spec_dir);
23
- const feature = features.find((f) => f.number === feature_number);
24
- if (!feature) {
25
- throw new Error(`Feature ${feature_number} not found in ${spec_dir}`);
26
- }
23
+ const context = requireExecutionContext("sdd_check_sync");
24
+ const feature = context.feature;
25
+ const stateDir = context.stateDir;
27
26
  // Read specification
28
27
  let specContent;
29
28
  try {
@@ -77,11 +76,11 @@ export function registerAnalysisTools(server, fileManager, stateMachine, _templa
77
76
  const principles = intentDriftEngine.extractPrinciples(constitutionContent);
78
77
  const driftReport = intentDriftEngine.computeCoverage(principles, specContent, tasksContent);
79
78
  // Store drift snapshot in state
80
- const state = await stateMachine.loadState(spec_dir);
79
+ const state = await stateMachine.loadState(stateDir);
81
80
  const MAX_DRIFT = 100;
82
81
  const snapshot = { timestamp: new Date().toISOString(), score: driftReport.intent_drift_score, orphaned_count: driftReport.orphaned_principles.length };
83
82
  state.drift_history = [...(state.drift_history ?? []), snapshot].slice(-MAX_DRIFT);
84
- await stateMachine.saveState(spec_dir, state);
83
+ await stateMachine.saveState(stateDir, state);
85
84
  const trend = intentDriftEngine.computeTrend(state.drift_history ?? []);
86
85
  intentDrift = { ...driftReport, drift_trend: trend };
87
86
  }
@@ -99,7 +98,7 @@ export function registerAnalysisTools(server, fileManager, stateMachine, _templa
99
98
  : `${reqIds.length - implementedReqs.size} requirements not found in code. Review implementation coverage.`,
100
99
  ...(intentDrift ? { intent_drift: intentDrift } : {}),
101
100
  };
102
- const enriched = await enrichResponse("sdd_check_sync", result, stateMachine, spec_dir);
101
+ const enriched = await enrichResponse("sdd_check_sync", result, stateMachine, stateDir);
103
102
  return { content: [{ type: "text", text: truncate(JSON.stringify(enriched, null, 2)) }] };
104
103
  }
105
104
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../src/tools/analysis.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAuCjE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,GACzB,IAAI,CAkTN"}
1
+ {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AA6BjE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,GACzB,IAAI,CA2TN"}
@@ -6,13 +6,11 @@ import { formatError } from "./tool-result.js";
6
6
  import { join } from "node:path";
7
7
  import { z } from "zod";
8
8
  import { enrichResponse } from "./response-builder.js";
9
+ import { featureNumberSchema, specDirSchema } from "../schemas/common.js";
10
+ import { requireExecutionContext } from "../services/execution-context.js";
9
11
  const checkpointInputSchema = z.object({
10
- feature_number: z
11
- .string()
12
- .regex(/^\d{3}$/, "Feature number must be 3 digits")
13
- .default("001")
14
- .describe("Feature number (e.g. '001')"),
15
- spec_dir: z.string().default(".specs").describe("Spec directory path"),
12
+ feature_number: featureNumberSchema,
13
+ spec_dir: specDirSchema,
16
14
  label: z
17
15
  .string()
18
16
  .max(100)
@@ -20,24 +18,16 @@ const checkpointInputSchema = z.object({
20
18
  .describe("Human-readable label for this checkpoint (e.g. 'before-redesign', 'v1-approved')"),
21
19
  }).strict().describe("Create a named snapshot of all spec artifacts for the feature. Allows rollback to this point later.");
22
20
  const restoreInputSchema = z.object({
23
- feature_number: z
24
- .string()
25
- .regex(/^\d{3}$/, "Feature number must be 3 digits")
26
- .default("001")
27
- .describe("Feature number (e.g. '001')"),
28
- spec_dir: z.string().default(".specs").describe("Spec directory path"),
21
+ feature_number: featureNumberSchema,
22
+ spec_dir: specDirSchema,
29
23
  checkpoint_id: z
30
24
  .string()
31
25
  .min(1)
32
26
  .describe("Checkpoint ID to restore (e.g. 'CP-001' or the label)"),
33
27
  }).strict().describe("Restore spec artifacts from a previous checkpoint. Overwrites current artifacts with the checkpoint snapshot.");
34
28
  const listCheckpointsInputSchema = z.object({
35
- feature_number: z
36
- .string()
37
- .regex(/^\d{3}$/, "Feature number must be 3 digits")
38
- .default("001")
39
- .describe("Feature number (e.g. '001')"),
40
- spec_dir: z.string().default(".specs").describe("Spec directory path"),
29
+ feature_number: featureNumberSchema,
30
+ spec_dir: specDirSchema,
41
31
  }).strict().describe("List all available checkpoints for a feature.");
42
32
  export function registerCheckpointTools(server, fileManager, stateMachine) {
43
33
  // ─── sdd_checkpoint ───
@@ -52,15 +42,13 @@ export function registerCheckpointTools(server, fileManager, stateMachine) {
52
42
  idempotentHint: false,
53
43
  openWorldHint: false,
54
44
  },
55
- }, async ({ feature_number, spec_dir, label }) => {
45
+ }, async ({ label }) => {
56
46
  try {
57
- const features = await fileManager.listFeatures(spec_dir);
58
- const feature = features.find((f) => f.number === feature_number);
59
- if (!feature) {
60
- throw new Error(`Feature ${feature_number} not found in ${spec_dir}. Run sdd_init first.`);
61
- }
47
+ const context = requireExecutionContext("sdd_checkpoint");
48
+ const feature = context.feature;
49
+ const stateDir = context.stateDir;
62
50
  // Load current state
63
- const state = await stateMachine.loadState(spec_dir);
51
+ const state = await stateMachine.loadState(stateDir);
64
52
  // Determine checkpoint number
65
53
  const checkpointsDir = join(feature.directory, ".checkpoints");
66
54
  let existingCheckpoints = [];
@@ -97,6 +85,9 @@ export function registerCheckpointTools(server, fileManager, stateMachine) {
97
85
  phase: state.current_phase,
98
86
  phases: state.phases,
99
87
  gate_decision: state.gate_decision,
88
+ feature: state.feature,
89
+ contract_id: state.contract.id,
90
+ contract_fingerprint: state.contract.fingerprint,
100
91
  artifacts: Object.keys(artifacts),
101
92
  artifact_contents: artifacts,
102
93
  };
@@ -114,7 +105,7 @@ export function registerCheckpointTools(server, fileManager, stateMachine) {
114
105
  "Create checkpoints before major changes (redesigns, scope changes) so you can rollback if the new direction doesn't work out. " +
115
106
  "Each checkpoint stores the full content of all artifacts plus the pipeline state.",
116
107
  };
117
- const enriched = await enrichResponse("sdd_checkpoint", result, stateMachine, spec_dir);
108
+ const enriched = await enrichResponse("sdd_checkpoint", result, stateMachine, stateDir);
118
109
  return { content: [{ type: "text", text: JSON.stringify(enriched, null, 2) }] };
119
110
  }
120
111
  catch (error) {
@@ -136,13 +127,11 @@ export function registerCheckpointTools(server, fileManager, stateMachine) {
136
127
  idempotentHint: false,
137
128
  openWorldHint: false,
138
129
  },
139
- }, async ({ feature_number, spec_dir, checkpoint_id }) => {
130
+ }, async ({ checkpoint_id }) => {
140
131
  try {
141
- const features = await fileManager.listFeatures(spec_dir);
142
- const feature = features.find((f) => f.number === feature_number);
143
- if (!feature) {
144
- throw new Error(`Feature ${feature_number} not found in ${spec_dir}.`);
145
- }
132
+ const context = requireExecutionContext("sdd_restore");
133
+ const feature = context.feature;
134
+ const stateDir = context.stateDir;
146
135
  const checkpointsDir = join(feature.directory, ".checkpoints");
147
136
  // Find checkpoint by ID or label
148
137
  let checkpointContent;
@@ -170,9 +159,15 @@ export function registerCheckpointTools(server, fileManager, stateMachine) {
170
159
  }
171
160
  }
172
161
  const checkpoint = JSON.parse(checkpointContent);
162
+ const state = await stateMachine.loadState(stateDir);
163
+ if (checkpoint["contract_fingerprint"] !== state.contract.fingerprint ||
164
+ !checkpoint["feature"] ||
165
+ checkpoint["feature"]["number"] !== state.feature.number) {
166
+ throw new Error(`Checkpoint ${checkpoint_id} does not belong to feature ${state.feature.number} under contract ${state.contract.id}.`);
167
+ }
173
168
  // Auto-backup current state before restoring
174
169
  const backupArtifacts = {};
175
- for (const name of Object.keys(checkpoint.artifact_contents)) {
170
+ for (const name of Object.keys(checkpoint["artifact_contents"])) {
176
171
  try {
177
172
  const current = await fileManager.readSpecFile(feature.directory, name);
178
173
  backupArtifacts[name] = current;
@@ -181,43 +176,45 @@ export function registerCheckpointTools(server, fileManager, stateMachine) {
181
176
  // Current file doesn't exist
182
177
  }
183
178
  }
184
- const state = await stateMachine.loadState(spec_dir);
185
179
  const autoBackup = {
186
180
  id: "CP-AUTO-BACKUP",
187
- label: `Auto-backup before restoring ${checkpoint.id}`,
181
+ label: `Auto-backup before restoring ${String(checkpoint["id"])}`,
188
182
  created_at: new Date().toISOString(),
189
183
  phase: state.current_phase,
190
184
  phases: state.phases,
191
185
  gate_decision: state.gate_decision,
186
+ feature: state.feature,
187
+ contract_id: state.contract.id,
188
+ contract_fingerprint: state.contract.fingerprint,
192
189
  artifacts: Object.keys(backupArtifacts),
193
190
  artifact_contents: backupArtifacts,
194
191
  };
195
192
  await fileManager.writeSpecFile(checkpointsDir, "CP-AUTO-BACKUP.json", JSON.stringify(autoBackup, null, 2), true);
196
193
  // Restore artifacts
197
194
  const restored = [];
198
- for (const [name, content] of Object.entries(checkpoint.artifact_contents)) {
195
+ for (const [name, content] of Object.entries(checkpoint["artifact_contents"])) {
199
196
  await fileManager.writeSpecFile(feature.directory, name, content, true);
200
197
  restored.push(name);
201
198
  }
202
199
  // Restore pipeline state
203
- if (checkpoint.phases) {
204
- state.current_phase = checkpoint.phase;
205
- state.phases = checkpoint.phases;
206
- state.gate_decision = checkpoint.gate_decision || null;
207
- await stateMachine.saveState(spec_dir, state);
200
+ if (checkpoint["phases"]) {
201
+ state.current_phase = checkpoint["phase"];
202
+ state.phases = checkpoint["phases"];
203
+ state.gate_decision = checkpoint["gate_decision"] ?? null;
204
+ await stateMachine.saveState(stateDir, state);
208
205
  }
209
206
  const result = {
210
207
  status: "checkpoint_restored",
211
- checkpoint_id: checkpoint.id,
212
- checkpoint_label: checkpoint.label,
213
- restored_phase: checkpoint.phase,
208
+ checkpoint_id: checkpoint["id"],
209
+ checkpoint_label: checkpoint["label"],
210
+ restored_phase: checkpoint["phase"],
214
211
  restored_artifacts: restored,
215
212
  auto_backup: "CP-AUTO-BACKUP",
216
- next_steps: `Restored to ${checkpoint.id} ("${checkpoint.label}"). Current state before restore was saved as CP-AUTO-BACKUP. Review the restored artifacts and continue from the ${checkpoint.phase} phase.`,
213
+ next_steps: `Restored to ${String(checkpoint["id"])} ("${String(checkpoint["label"])}"). Current state before restore was saved as CP-AUTO-BACKUP. Review the restored artifacts and continue from the ${String(checkpoint["phase"])} phase.`,
217
214
  learning_note: "The restore operation creates an automatic backup of your current state before overwriting. " +
218
215
  "This means you can always undo a restore by running sdd_restore(checkpoint_id: 'CP-AUTO-BACKUP').",
219
216
  };
220
- const enriched = await enrichResponse("sdd_restore", result, stateMachine, spec_dir);
217
+ const enriched = await enrichResponse("sdd_restore", result, stateMachine, stateDir);
221
218
  return { content: [{ type: "text", text: JSON.stringify(enriched, null, 2) }] };
222
219
  }
223
220
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../src/tools/checkpoint.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAIlF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,GACzC,IAAI,CAmFN"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAKlF,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,oBAAoB,EAAE,oBAAoB,GACzC,IAAI,CA8EN"}
@@ -4,6 +4,7 @@
4
4
  import { truncate } from "./tool-result.js";
5
5
  import { contextStatusInputSchema } from "../schemas/context.js";
6
6
  import { enrichResponse } from "./response-builder.js";
7
+ import { requireExecutionContext } from "../services/execution-context.js";
7
8
  export function registerContextTools(server, fileManager, stateMachine, contextTieringEngine) {
8
9
  server.registerTool("sdd_context_status", {
9
10
  title: "Context Tier Status",
@@ -16,13 +17,10 @@ export function registerContextTools(server, fileManager, stateMachine, contextT
16
17
  idempotentHint: true,
17
18
  openWorldHint: false,
18
19
  },
19
- }, async ({ feature_number, spec_dir }) => {
20
+ }, async ({ feature_number }) => {
20
21
  try {
21
- const features = await fileManager.listFeatures(spec_dir);
22
- const feature = features.find((f) => f.number === feature_number);
23
- if (!feature) {
24
- throw new Error(`Feature ${feature_number} not found in ${spec_dir}. Run sdd_init first.`);
25
- }
22
+ const context = requireExecutionContext("sdd_context_status");
23
+ const feature = context.feature;
26
24
  const tierTable = contextTieringEngine.getTierTable();
27
25
  // Estimate tokens per tier by attempting to read each file
28
26
  let hotTokens = 0;
@@ -65,7 +63,7 @@ export function registerContextTools(server, fileManager, stateMachine, contextT
65
63
  "Universal loading wastes context window and increases cost. " +
66
64
  "Evidence: arXiv:2602.20478 — selective context loading improves accuracy by 8.3%.",
67
65
  };
68
- const enriched = await enrichResponse("sdd_context_status", result, stateMachine, spec_dir);
66
+ const enriched = await enrichResponse("sdd_context_status", result, stateMachine, context.stateDir);
69
67
  return {
70
68
  content: [{ type: "text", text: truncate(JSON.stringify(enriched, null, 2)) }],
71
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/tools/context.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,6 @@
1
- /**
2
- * Documentation Tools — sdd_generate_docs, sdd_generate_api_docs, sdd_generate_runbook, sdd_generate_onboarding.
3
- */
4
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { DocGenerator } from "../services/doc-generator.js";
5
3
  import type { FileManager } from "../services/file-manager.js";
6
4
  import type { StateMachine } from "../services/state-machine.js";
7
- import type { DocGenerator } from "../services/doc-generator.js";
8
5
  export declare function registerDocumentationTools(server: McpServer, fileManager: FileManager, stateMachine: StateMachine, docGenerator: DocGenerator): void;
9
6
  //# sourceMappingURL=documentation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../src/tools/documentation.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAQjE,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,GACzB,IAAI,CA0RN"}
1
+ {"version":3,"file":"documentation.d.ts","sourceRoot":"","sources":["../../src/tools/documentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAoFjE,wBAAgB,0BAA0B,CACtC,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,YAAY,EAC1B,YAAY,EAAE,YAAY,GAC3B,IAAI,CAwHN"}