@planu/cli 1.3.0 → 1.5.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.
Files changed (282) hide show
  1. package/dist/config/license-plans.json +18 -1
  2. package/dist/engine/audit-trail/formatter.d.ts +13 -0
  3. package/dist/engine/audit-trail/formatter.d.ts.map +1 -0
  4. package/dist/engine/audit-trail/formatter.js +43 -0
  5. package/dist/engine/audit-trail/formatter.js.map +1 -0
  6. package/dist/engine/audit-trail/hasher.d.ts +18 -0
  7. package/dist/engine/audit-trail/hasher.d.ts.map +1 -0
  8. package/dist/engine/audit-trail/hasher.js +46 -0
  9. package/dist/engine/audit-trail/hasher.js.map +1 -0
  10. package/dist/engine/audit-trail/index.d.ts +2 -0
  11. package/dist/engine/audit-trail/index.d.ts.map +1 -1
  12. package/dist/engine/audit-trail/index.js +4 -1
  13. package/dist/engine/audit-trail/index.js.map +1 -1
  14. package/dist/engine/auto-promoter.d.ts +14 -0
  15. package/dist/engine/auto-promoter.d.ts.map +1 -0
  16. package/dist/engine/auto-promoter.js +40 -0
  17. package/dist/engine/auto-promoter.js.map +1 -0
  18. package/dist/engine/compliance-test-generator/control-mapper.d.ts +4 -0
  19. package/dist/engine/compliance-test-generator/control-mapper.d.ts.map +1 -0
  20. package/dist/engine/compliance-test-generator/control-mapper.js +41 -0
  21. package/dist/engine/compliance-test-generator/control-mapper.js.map +1 -0
  22. package/dist/engine/compliance-test-generator/frameworks/iso42001.d.ts +3 -0
  23. package/dist/engine/compliance-test-generator/frameworks/iso42001.d.ts.map +1 -0
  24. package/dist/engine/compliance-test-generator/frameworks/iso42001.js +55 -0
  25. package/dist/engine/compliance-test-generator/frameworks/iso42001.js.map +1 -0
  26. package/dist/engine/compliance-test-generator/frameworks/pci-dss.d.ts +3 -0
  27. package/dist/engine/compliance-test-generator/frameworks/pci-dss.d.ts.map +1 -0
  28. package/dist/engine/compliance-test-generator/frameworks/pci-dss.js +55 -0
  29. package/dist/engine/compliance-test-generator/frameworks/pci-dss.js.map +1 -0
  30. package/dist/engine/compliance-test-generator/frameworks/soc2.d.ts +3 -0
  31. package/dist/engine/compliance-test-generator/frameworks/soc2.d.ts.map +1 -0
  32. package/dist/engine/compliance-test-generator/frameworks/soc2.js +47 -0
  33. package/dist/engine/compliance-test-generator/frameworks/soc2.js.map +1 -0
  34. package/dist/engine/compliance-test-generator/index.d.ts +3 -0
  35. package/dist/engine/compliance-test-generator/index.d.ts.map +1 -0
  36. package/dist/engine/compliance-test-generator/index.js +64 -0
  37. package/dist/engine/compliance-test-generator/index.js.map +1 -0
  38. package/dist/engine/compliance-test-generator/test-formatter.d.ts +6 -0
  39. package/dist/engine/compliance-test-generator/test-formatter.d.ts.map +1 -0
  40. package/dist/engine/compliance-test-generator/test-formatter.js +33 -0
  41. package/dist/engine/compliance-test-generator/test-formatter.js.map +1 -0
  42. package/dist/engine/cost-guardrails.d.ts +11 -0
  43. package/dist/engine/cost-guardrails.d.ts.map +1 -0
  44. package/dist/engine/cost-guardrails.js +39 -0
  45. package/dist/engine/cost-guardrails.js.map +1 -0
  46. package/dist/engine/doc-compliance-checker.d.ts +23 -0
  47. package/dist/engine/doc-compliance-checker.d.ts.map +1 -0
  48. package/dist/engine/doc-compliance-checker.js +168 -0
  49. package/dist/engine/doc-compliance-checker.js.map +1 -0
  50. package/dist/engine/dogfood-analyzer.d.ts +6 -0
  51. package/dist/engine/dogfood-analyzer.d.ts.map +1 -0
  52. package/dist/engine/dogfood-analyzer.js +59 -0
  53. package/dist/engine/dogfood-analyzer.js.map +1 -0
  54. package/dist/engine/drift-watcher/criteria-checker.d.ts +16 -0
  55. package/dist/engine/drift-watcher/criteria-checker.d.ts.map +1 -0
  56. package/dist/engine/drift-watcher/criteria-checker.js +81 -0
  57. package/dist/engine/drift-watcher/criteria-checker.js.map +1 -0
  58. package/dist/engine/drift-watcher/file-watcher.d.ts +8 -0
  59. package/dist/engine/drift-watcher/file-watcher.d.ts.map +1 -0
  60. package/dist/engine/drift-watcher/file-watcher.js +24 -0
  61. package/dist/engine/drift-watcher/file-watcher.js.map +1 -0
  62. package/dist/engine/drift-watcher/index.d.ts +19 -0
  63. package/dist/engine/drift-watcher/index.d.ts.map +1 -0
  64. package/dist/engine/drift-watcher/index.js +70 -0
  65. package/dist/engine/drift-watcher/index.js.map +1 -0
  66. package/dist/engine/mcp-gateway/gateway-registry.d.ts +19 -0
  67. package/dist/engine/mcp-gateway/gateway-registry.d.ts.map +1 -0
  68. package/dist/engine/mcp-gateway/gateway-registry.js +33 -0
  69. package/dist/engine/mcp-gateway/gateway-registry.js.map +1 -0
  70. package/dist/engine/mcp-gateway/gateway-scanner.d.ts +17 -0
  71. package/dist/engine/mcp-gateway/gateway-scanner.d.ts.map +1 -0
  72. package/dist/engine/mcp-gateway/gateway-scanner.js +62 -0
  73. package/dist/engine/mcp-gateway/gateway-scanner.js.map +1 -0
  74. package/dist/engine/mcp-gateway/index.d.ts +3 -0
  75. package/dist/engine/mcp-gateway/index.d.ts.map +1 -0
  76. package/dist/engine/mcp-gateway/index.js +4 -0
  77. package/dist/engine/mcp-gateway/index.js.map +1 -0
  78. package/dist/engine/multi-repo/companion-spec-builder.d.ts +9 -0
  79. package/dist/engine/multi-repo/companion-spec-builder.d.ts.map +1 -0
  80. package/dist/engine/multi-repo/companion-spec-builder.js +22 -0
  81. package/dist/engine/multi-repo/companion-spec-builder.js.map +1 -0
  82. package/dist/engine/multi-repo/consumer-scanner.d.ts +12 -0
  83. package/dist/engine/multi-repo/consumer-scanner.d.ts.map +1 -0
  84. package/dist/engine/multi-repo/consumer-scanner.js +48 -0
  85. package/dist/engine/multi-repo/consumer-scanner.js.map +1 -0
  86. package/dist/engine/multi-repo/index.d.ts +4 -0
  87. package/dist/engine/multi-repo/index.d.ts.map +1 -0
  88. package/dist/engine/multi-repo/index.js +5 -0
  89. package/dist/engine/multi-repo/index.js.map +1 -0
  90. package/dist/engine/multi-repo/refactor-tracker.d.ts +7 -0
  91. package/dist/engine/multi-repo/refactor-tracker.d.ts.map +1 -0
  92. package/dist/engine/multi-repo/refactor-tracker.js +22 -0
  93. package/dist/engine/multi-repo/refactor-tracker.js.map +1 -0
  94. package/dist/engine/skill-generator/sections-docs.d.ts +13 -0
  95. package/dist/engine/skill-generator/sections-docs.d.ts.map +1 -0
  96. package/dist/engine/skill-generator/sections-docs.js +59 -0
  97. package/dist/engine/skill-generator/sections-docs.js.map +1 -0
  98. package/dist/engine/skill-generator/skills-content.d.ts +1 -1
  99. package/dist/engine/skill-generator/skills-content.d.ts.map +1 -1
  100. package/dist/engine/skill-generator/skills-content.js +3 -2
  101. package/dist/engine/skill-generator/skills-content.js.map +1 -1
  102. package/dist/engine/skill-generator/skills.d.ts +1 -0
  103. package/dist/engine/skill-generator/skills.d.ts.map +1 -1
  104. package/dist/engine/skill-generator/skills.js +1 -0
  105. package/dist/engine/skill-generator/skills.js.map +1 -1
  106. package/dist/engine/skill-generator.d.ts.map +1 -1
  107. package/dist/engine/skill-generator.js +21 -2
  108. package/dist/engine/skill-generator.js.map +1 -1
  109. package/dist/engine/web-fetcher/docs-intelligence.d.ts +8 -0
  110. package/dist/engine/web-fetcher/docs-intelligence.d.ts.map +1 -0
  111. package/dist/engine/web-fetcher/docs-intelligence.js +154 -0
  112. package/dist/engine/web-fetcher/docs-intelligence.js.map +1 -0
  113. package/dist/engine/web-fetcher/registry-auto-discovery.d.ts +20 -0
  114. package/dist/engine/web-fetcher/registry-auto-discovery.d.ts.map +1 -0
  115. package/dist/engine/web-fetcher/registry-auto-discovery.js +184 -0
  116. package/dist/engine/web-fetcher/registry-auto-discovery.js.map +1 -0
  117. package/dist/engine/web-fetcher/stack-detector.d.ts +4 -0
  118. package/dist/engine/web-fetcher/stack-detector.d.ts.map +1 -0
  119. package/dist/engine/web-fetcher/stack-detector.js +155 -0
  120. package/dist/engine/web-fetcher/stack-detector.js.map +1 -0
  121. package/dist/index.js +19 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/storage/audit-trail-store.d.ts +20 -0
  124. package/dist/storage/audit-trail-store.d.ts.map +1 -0
  125. package/dist/storage/audit-trail-store.js +98 -0
  126. package/dist/storage/audit-trail-store.js.map +1 -0
  127. package/dist/storage/auto-promoter-config-store.d.ts +11 -0
  128. package/dist/storage/auto-promoter-config-store.d.ts.map +1 -0
  129. package/dist/storage/auto-promoter-config-store.js +23 -0
  130. package/dist/storage/auto-promoter-config-store.js.map +1 -0
  131. package/dist/storage/budget-store.d.ts +19 -0
  132. package/dist/storage/budget-store.d.ts.map +1 -0
  133. package/dist/storage/budget-store.js +64 -0
  134. package/dist/storage/budget-store.js.map +1 -0
  135. package/dist/storage/gateway-store.d.ts +23 -0
  136. package/dist/storage/gateway-store.d.ts.map +1 -0
  137. package/dist/storage/gateway-store.js +52 -0
  138. package/dist/storage/gateway-store.js.map +1 -0
  139. package/dist/storage/refactor-registry-store.d.ts +21 -0
  140. package/dist/storage/refactor-registry-store.d.ts.map +1 -0
  141. package/dist/storage/refactor-registry-store.js +77 -0
  142. package/dist/storage/refactor-registry-store.js.map +1 -0
  143. package/dist/tools/auto-promoter-handler.d.ts +13 -0
  144. package/dist/tools/auto-promoter-handler.d.ts.map +1 -0
  145. package/dist/tools/auto-promoter-handler.js +50 -0
  146. package/dist/tools/auto-promoter-handler.js.map +1 -0
  147. package/dist/tools/compliance-test-handler.d.ts +5 -0
  148. package/dist/tools/compliance-test-handler.d.ts.map +1 -0
  149. package/dist/tools/compliance-test-handler.js +66 -0
  150. package/dist/tools/compliance-test-handler.js.map +1 -0
  151. package/dist/tools/cost-guardrails-handler.d.ts +15 -0
  152. package/dist/tools/cost-guardrails-handler.d.ts.map +1 -0
  153. package/dist/tools/cost-guardrails-handler.js +72 -0
  154. package/dist/tools/cost-guardrails-handler.js.map +1 -0
  155. package/dist/tools/create-spec/spec-builder.d.ts.map +1 -1
  156. package/dist/tools/create-spec/spec-builder.js +20 -0
  157. package/dist/tools/create-spec/spec-builder.js.map +1 -1
  158. package/dist/tools/create-spec-hu/docs-criteria-adapter.d.ts +14 -0
  159. package/dist/tools/create-spec-hu/docs-criteria-adapter.d.ts.map +1 -0
  160. package/dist/tools/create-spec-hu/docs-criteria-adapter.js +50 -0
  161. package/dist/tools/create-spec-hu/docs-criteria-adapter.js.map +1 -0
  162. package/dist/tools/create-spec-hu.d.ts +1 -1
  163. package/dist/tools/create-spec-hu.d.ts.map +1 -1
  164. package/dist/tools/create-spec-hu.js +5 -1
  165. package/dist/tools/create-spec-hu.js.map +1 -1
  166. package/dist/tools/create-spec.d.ts.map +1 -1
  167. package/dist/tools/create-spec.js +2 -2
  168. package/dist/tools/create-spec.js.map +1 -1
  169. package/dist/tools/doc-compliance-handler.d.ts +3 -0
  170. package/dist/tools/doc-compliance-handler.d.ts.map +1 -0
  171. package/dist/tools/doc-compliance-handler.js +48 -0
  172. package/dist/tools/doc-compliance-handler.js.map +1 -0
  173. package/dist/tools/docs-registry-handler.d.ts +6 -0
  174. package/dist/tools/docs-registry-handler.d.ts.map +1 -0
  175. package/dist/tools/docs-registry-handler.js +73 -0
  176. package/dist/tools/docs-registry-handler.js.map +1 -0
  177. package/dist/tools/dogfood-status-handler.d.ts +3 -0
  178. package/dist/tools/dogfood-status-handler.d.ts.map +1 -0
  179. package/dist/tools/dogfood-status-handler.js +28 -0
  180. package/dist/tools/dogfood-status-handler.js.map +1 -0
  181. package/dist/tools/drift-watcher-handler.d.ts +7 -0
  182. package/dist/tools/drift-watcher-handler.d.ts.map +1 -0
  183. package/dist/tools/drift-watcher-handler.js +65 -0
  184. package/dist/tools/drift-watcher-handler.js.map +1 -0
  185. package/dist/tools/export-audit-trail-handler.d.ts +9 -0
  186. package/dist/tools/export-audit-trail-handler.d.ts.map +1 -0
  187. package/dist/tools/export-audit-trail-handler.js +103 -0
  188. package/dist/tools/export-audit-trail-handler.js.map +1 -0
  189. package/dist/tools/mcp-gateway-handler.d.ts +13 -0
  190. package/dist/tools/mcp-gateway-handler.d.ts.map +1 -0
  191. package/dist/tools/mcp-gateway-handler.js +60 -0
  192. package/dist/tools/mcp-gateway-handler.js.map +1 -0
  193. package/dist/tools/multi-repo-handler.d.ts +15 -0
  194. package/dist/tools/multi-repo-handler.d.ts.map +1 -0
  195. package/dist/tools/multi-repo-handler.js +86 -0
  196. package/dist/tools/multi-repo-handler.js.map +1 -0
  197. package/dist/tools/register-audit-trail-tools.d.ts.map +1 -1
  198. package/dist/tools/register-audit-trail-tools.js +38 -0
  199. package/dist/tools/register-audit-trail-tools.js.map +1 -1
  200. package/dist/tools/register-auto-promoter-tools.d.ts +3 -0
  201. package/dist/tools/register-auto-promoter-tools.d.ts.map +1 -0
  202. package/dist/tools/register-auto-promoter-tools.js +43 -0
  203. package/dist/tools/register-auto-promoter-tools.js.map +1 -0
  204. package/dist/tools/register-compliance-test-tools.d.ts +3 -0
  205. package/dist/tools/register-compliance-test-tools.d.ts.map +1 -0
  206. package/dist/tools/register-compliance-test-tools.js +55 -0
  207. package/dist/tools/register-compliance-test-tools.js.map +1 -0
  208. package/dist/tools/register-cost-guardrails-tools.d.ts +3 -0
  209. package/dist/tools/register-cost-guardrails-tools.d.ts.map +1 -0
  210. package/dist/tools/register-cost-guardrails-tools.js +61 -0
  211. package/dist/tools/register-cost-guardrails-tools.js.map +1 -0
  212. package/dist/tools/register-doc-compliance-tools.d.ts +3 -0
  213. package/dist/tools/register-doc-compliance-tools.d.ts.map +1 -0
  214. package/dist/tools/register-doc-compliance-tools.js +18 -0
  215. package/dist/tools/register-doc-compliance-tools.js.map +1 -0
  216. package/dist/tools/register-docs-registry-tools.d.ts +3 -0
  217. package/dist/tools/register-docs-registry-tools.d.ts.map +1 -0
  218. package/dist/tools/register-docs-registry-tools.js +35 -0
  219. package/dist/tools/register-docs-registry-tools.js.map +1 -0
  220. package/dist/tools/register-dogfood-tools.d.ts +3 -0
  221. package/dist/tools/register-dogfood-tools.d.ts.map +1 -0
  222. package/dist/tools/register-dogfood-tools.js +21 -0
  223. package/dist/tools/register-dogfood-tools.js.map +1 -0
  224. package/dist/tools/register-drift-watcher-tools.d.ts +3 -0
  225. package/dist/tools/register-drift-watcher-tools.d.ts.map +1 -0
  226. package/dist/tools/register-drift-watcher-tools.js +28 -0
  227. package/dist/tools/register-drift-watcher-tools.js.map +1 -0
  228. package/dist/tools/register-mcp-gateway-tools.d.ts +3 -0
  229. package/dist/tools/register-mcp-gateway-tools.d.ts.map +1 -0
  230. package/dist/tools/register-mcp-gateway-tools.js +35 -0
  231. package/dist/tools/register-mcp-gateway-tools.js.map +1 -0
  232. package/dist/tools/register-multi-repo-tools.d.ts +8 -0
  233. package/dist/tools/register-multi-repo-tools.d.ts.map +1 -0
  234. package/dist/tools/register-multi-repo-tools.js +52 -0
  235. package/dist/tools/register-multi-repo-tools.js.map +1 -0
  236. package/dist/tools/safe-handler.d.ts.map +1 -1
  237. package/dist/tools/safe-handler.js +50 -1
  238. package/dist/tools/safe-handler.js.map +1 -1
  239. package/dist/types/audit.d.ts +64 -0
  240. package/dist/types/audit.d.ts.map +1 -0
  241. package/dist/types/audit.js +3 -0
  242. package/dist/types/audit.js.map +1 -0
  243. package/dist/types/auto-promoter.d.ts +26 -0
  244. package/dist/types/auto-promoter.d.ts.map +1 -0
  245. package/dist/types/auto-promoter.js +3 -0
  246. package/dist/types/auto-promoter.js.map +1 -0
  247. package/dist/types/compliance-tests.d.ts +41 -0
  248. package/dist/types/compliance-tests.d.ts.map +1 -0
  249. package/dist/types/compliance-tests.js +3 -0
  250. package/dist/types/compliance-tests.js.map +1 -0
  251. package/dist/types/cost-guardrails.d.ts +41 -0
  252. package/dist/types/cost-guardrails.d.ts.map +1 -0
  253. package/dist/types/cost-guardrails.js +3 -0
  254. package/dist/types/cost-guardrails.js.map +1 -0
  255. package/dist/types/docs.d.ts +70 -0
  256. package/dist/types/docs.d.ts.map +1 -1
  257. package/dist/types/dogfood.d.ts +22 -0
  258. package/dist/types/dogfood.d.ts.map +1 -0
  259. package/dist/types/dogfood.js +3 -0
  260. package/dist/types/dogfood.js.map +1 -0
  261. package/dist/types/drift-watcher.d.ts +35 -0
  262. package/dist/types/drift-watcher.d.ts.map +1 -0
  263. package/dist/types/drift-watcher.js +3 -0
  264. package/dist/types/drift-watcher.js.map +1 -0
  265. package/dist/types/index.d.ts +8 -0
  266. package/dist/types/index.d.ts.map +1 -1
  267. package/dist/types/index.js +8 -0
  268. package/dist/types/index.js.map +1 -1
  269. package/dist/types/mcp-gateway.d.ts +34 -0
  270. package/dist/types/mcp-gateway.d.ts.map +1 -0
  271. package/dist/types/mcp-gateway.js +3 -0
  272. package/dist/types/mcp-gateway.js.map +1 -0
  273. package/dist/types/mcp.d.ts +17 -0
  274. package/dist/types/mcp.d.ts.map +1 -1
  275. package/dist/types/multi-repo.d.ts +39 -0
  276. package/dist/types/multi-repo.d.ts.map +1 -0
  277. package/dist/types/multi-repo.js +5 -0
  278. package/dist/types/multi-repo.js.map +1 -0
  279. package/dist/types/spec/core.d.ts +2 -0
  280. package/dist/types/spec/core.d.ts.map +1 -1
  281. package/package.json +1 -1
  282. package/src/config/license-plans.json +18 -1
@@ -0,0 +1,43 @@
1
+ // tools/register-auto-promoter-tools.ts — Registers auto-promotion MCP tools (SPEC-391)
2
+ import { z } from 'zod';
3
+ import { handleConfigureAutoPromotion, handleCheckAutoPromotion } from './auto-promoter-handler.js';
4
+ import { safeLicensed } from './safe-handler.js';
5
+ export function registerAutoPromoterTools(server) {
6
+ // configure_auto_promotion — SPEC-391
7
+ server.registerTool('configure_auto_promotion', {
8
+ description: 'Configure auto-promotion settings for a project. ' +
9
+ 'When enabled, specs that reach the confidence threshold are eligible for automatic status promotion. ' +
10
+ 'High-risk specs are never auto-promoted regardless of settings.',
11
+ inputSchema: {
12
+ projectPath: z.string().describe('Absolute path to the project directory.'),
13
+ enabled: z
14
+ .boolean()
15
+ .optional()
16
+ .describe('Enable or disable auto-promotion for the project.'),
17
+ threshold: z
18
+ .number()
19
+ .min(0)
20
+ .max(100)
21
+ .optional()
22
+ .describe('Confidence score threshold (0-100). Specs below this are not auto-promoted. Default: 85.'),
23
+ maxRisk: z
24
+ .enum(['low', 'medium'])
25
+ .optional()
26
+ .describe('Maximum risk level allowed for auto-promotion. ' +
27
+ 'Valid values: "low" (only low-risk specs), "medium" (low and medium). ' +
28
+ 'High-risk specs are never auto-promoted.'),
29
+ },
30
+ annotations: { title: 'Configure Auto Promotion' },
31
+ }, safeLicensed('configure_auto_promotion', async (args) => handleConfigureAutoPromotion(args)));
32
+ // check_auto_promotion — SPEC-391
33
+ server.registerTool('check_auto_promotion', {
34
+ description: 'Check whether a spec is eligible for auto-promotion by computing its confidence score. ' +
35
+ 'Returns the score breakdown (readiness, risk penalty, dependency bonus) and eligibility verdict.',
36
+ inputSchema: {
37
+ projectPath: z.string().describe('Absolute path to the project directory.'),
38
+ specId: z.string().describe('Spec ID to evaluate (e.g., "SPEC-042").'),
39
+ },
40
+ annotations: { title: 'Check Auto Promotion', readOnlyHint: true },
41
+ }, safeLicensed('check_auto_promotion', async (args) => handleCheckAutoPromotion(args)));
42
+ }
43
+ //# sourceMappingURL=register-auto-promoter-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-auto-promoter-tools.js","sourceRoot":"","sources":["../../src/tools/register-auto-promoter-tools.ts"],"names":[],"mappings":"AAAA,wFAAwF;AAGxF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACpG,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,sCAAsC;IACtC,MAAM,CAAC,YAAY,CACjB,0BAA0B,EAC1B;QACE,WAAW,EACT,mDAAmD;YACnD,uGAAuG;YACvG,iEAAiE;QACnE,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC3E,OAAO,EAAE,CAAC;iBACP,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;YAChE,SAAS,EAAE,CAAC;iBACT,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,0FAA0F,CAC3F;YACH,OAAO,EAAE,CAAC;iBACP,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;iBACvB,QAAQ,EAAE;iBACV,QAAQ,CACP,iDAAiD;gBAC/C,wEAAwE;gBACxE,0CAA0C,CAC7C;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE;KACnD,EACD,YAAY,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAC7F,CAAC;IAEF,kCAAkC;IAClC,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,yFAAyF;YACzF,kGAAkG;QACpG,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;SACvE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE;KACnE,EACD,YAAY,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CACrF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerComplianceTestTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-compliance-test-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-compliance-test-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-compliance-test-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8DnE"}
@@ -0,0 +1,55 @@
1
+ // tools/register-compliance-test-tools.ts — SPEC-390: Register compliance test suite tools
2
+ import { z } from 'zod';
3
+ import { safeLicensed } from './safe-handler.js';
4
+ import { handleGenerateComplianceTests, handleComplianceCoverageReport, } from './compliance-test-handler.js';
5
+ const FRAMEWORK_DESCRIBE = 'Compliance framework. Valid values: soc2 | pci-dss | iso-42001 | hipaa | gdpr';
6
+ const FORMAT_DESCRIBE = 'Output format for tests. Valid values: jest | gherkin | markdown';
7
+ export function registerComplianceTestTools(server) {
8
+ server.registerTool('generate_compliance_tests', {
9
+ description: 'Generate compliance-specific test suites from spec acceptance criteria. ' +
10
+ 'Maps criteria to regulatory controls (SOC2, PCI-DSS, ISO-42001) and outputs ' +
11
+ 'Jest/Vitest test files, Gherkin scenarios, or markdown checklists.',
12
+ inputSchema: {
13
+ projectPath: z
14
+ .string()
15
+ .min(1)
16
+ .max(4096)
17
+ .describe('Absolute path to the project root directory'),
18
+ specId: z
19
+ .string()
20
+ .min(1)
21
+ .max(50)
22
+ .describe('Spec ID to generate compliance tests for (e.g. SPEC-001)'),
23
+ frameworks: z
24
+ .array(z.enum(['soc2', 'pci-dss', 'iso-42001', 'hipaa', 'gdpr']))
25
+ .min(1)
26
+ .describe(FRAMEWORK_DESCRIBE),
27
+ outputFormat: z.enum(['jest', 'gherkin', 'markdown']).optional().describe(FORMAT_DESCRIBE),
28
+ },
29
+ annotations: {
30
+ title: 'Generate Compliance Tests',
31
+ readOnlyHint: true,
32
+ },
33
+ }, safeLicensed('generate_compliance_tests', async (args) => handleGenerateComplianceTests(args)));
34
+ server.registerTool('compliance_coverage_report', {
35
+ description: 'List all compliance controls for the requested frameworks, showing their IDs, ' +
36
+ 'titles, descriptions, and matching keywords. ' +
37
+ 'Use before generate_compliance_tests to understand which controls are available.',
38
+ inputSchema: {
39
+ projectPath: z
40
+ .string()
41
+ .min(1)
42
+ .max(4096)
43
+ .describe('Absolute path to the project root directory'),
44
+ frameworks: z
45
+ .array(z.enum(['soc2', 'pci-dss', 'iso-42001', 'hipaa', 'gdpr']))
46
+ .min(1)
47
+ .describe(FRAMEWORK_DESCRIBE),
48
+ },
49
+ annotations: {
50
+ title: 'Compliance Coverage Report',
51
+ readOnlyHint: true,
52
+ },
53
+ }, safeLicensed('compliance_coverage_report', (args) => Promise.resolve(handleComplianceCoverageReport(args))));
54
+ }
55
+ //# sourceMappingURL=register-compliance-test-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-compliance-test-tools.js","sourceRoot":"","sources":["../../src/tools/register-compliance-test-tools.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAG3F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EACL,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,8BAA8B,CAAC;AAMtC,MAAM,kBAAkB,GACtB,+EAA+E,CAAC;AAClF,MAAM,eAAe,GAAG,kEAAkE,CAAC;AAE3F,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,MAAM,CAAC,YAAY,CACjB,2BAA2B,EAC3B;QACE,WAAW,EACT,0EAA0E;YAC1E,8EAA8E;YAC9E,oEAAoE;QACtE,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,EAAE,CAAC;iBACP,QAAQ,CAAC,0DAA0D,CAAC;YACvE,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;iBAChE,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,kBAAkB,CAAC;YAC/B,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC;SAC3F;QACD,WAAW,EAAE;YACX,KAAK,EAAE,2BAA2B;YAClC,YAAY,EAAE,IAAI;SACnB;KACF,EACD,YAAY,CAAC,2BAA2B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACvD,6BAA6B,CAAC,IAAoC,CAAC,CACpE,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,4BAA4B,EAC5B;QACE,WAAW,EACT,gFAAgF;YAChF,+CAA+C;YAC/C,kFAAkF;QACpF,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,UAAU,EAAE,CAAC;iBACV,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;iBAChE,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,kBAAkB,CAAC;SAChC;QACD,WAAW,EAAE;YACX,KAAK,EAAE,4BAA4B;YACnC,YAAY,EAAE,IAAI;SACnB;KACF,EACD,YAAY,CAAC,4BAA4B,EAAE,CAAC,IAAI,EAAE,EAAE,CAClD,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,IAA+B,CAAC,CAAC,CACjF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerCostGuardrailsTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-cost-guardrails-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cost-guardrails-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-cost-guardrails-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA0EnE"}
@@ -0,0 +1,61 @@
1
+ // tools/register-cost-guardrails-tools.ts — Registers cost guardrail MCP tools (SPEC-393)
2
+ import { z } from 'zod';
3
+ import { handleSetSpecBudget, handleBudgetStatus, handleRecordSpend, } from './cost-guardrails-handler.js';
4
+ import { safeLicensed } from './safe-handler.js';
5
+ export function registerCostGuardrailsTools(server) {
6
+ // set_spec_budget — SPEC-393
7
+ server.registerTool('set_spec_budget', {
8
+ description: 'Set a USD cost budget cap for a spec. ' +
9
+ 'When usage approaches the threshold the recommended model is downgraded to control costs. ' +
10
+ 'When the budget is exhausted the tool recommends haiku only.',
11
+ inputSchema: {
12
+ projectPath: z.string().describe('Absolute path to the project directory.'),
13
+ specId: z.string().describe('Spec ID to budget (e.g., "SPEC-042").'),
14
+ maxUsdCents: z
15
+ .number()
16
+ .int()
17
+ .min(1)
18
+ .describe('Maximum allowed spend in USD cents (e.g., 500 = $5.00).'),
19
+ warningThreshold: z
20
+ .number()
21
+ .min(1)
22
+ .max(100)
23
+ .optional()
24
+ .describe('Percentage at which a warning is triggered. Default: 80.'),
25
+ },
26
+ annotations: { title: 'Set Spec Budget' },
27
+ }, safeLicensed('set_spec_budget', async (args) => handleSetSpecBudget(args)));
28
+ // budget_status — SPEC-393
29
+ server.registerTool('budget_status', {
30
+ description: 'Return the budget status for one spec or all specs in a project. ' +
31
+ 'Shows spend, remaining, usage percentage, and the recommended model tier.',
32
+ inputSchema: {
33
+ projectPath: z.string().describe('Absolute path to the project directory.'),
34
+ specId: z
35
+ .string()
36
+ .optional()
37
+ .describe('Spec ID to query. If omitted, returns status for all specs in the project.'),
38
+ },
39
+ annotations: { title: 'Budget Status', readOnlyHint: true },
40
+ }, safeLicensed('budget_status', async (args) => handleBudgetStatus(args)));
41
+ // record_spend — SPEC-393
42
+ server.registerTool('record_spend', {
43
+ description: 'Record actual AI spend for a spec. ' +
44
+ 'Increments the running total and returns the updated budget status. ' +
45
+ 'A warning message is included when the budget warning threshold is crossed.',
46
+ inputSchema: {
47
+ projectPath: z.string().describe('Absolute path to the project directory.'),
48
+ specId: z.string().describe('Spec ID to charge (e.g., "SPEC-042").'),
49
+ usdCents: z
50
+ .number()
51
+ .min(0)
52
+ .describe('Amount spent in USD cents to add to the running total.'),
53
+ modelUsed: z
54
+ .enum(['opus', 'sonnet', 'haiku'])
55
+ .describe('Model tier used for this invocation. Valid values: "opus", "sonnet", "haiku".'),
56
+ toolName: z.string().describe('Name of the tool or action that incurred the cost.'),
57
+ },
58
+ annotations: { title: 'Record Spend' },
59
+ }, safeLicensed('record_spend', async (args) => handleRecordSpend(args)));
60
+ }
61
+ //# sourceMappingURL=register-cost-guardrails-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cost-guardrails-tools.js","sourceRoot":"","sources":["../../src/tools/register-cost-guardrails-tools.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAG1F,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,6BAA6B;IAC7B,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,wCAAwC;YACxC,4FAA4F;YAC5F,8DAA8D;QAChE,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACpE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,EAAE;iBACL,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,yDAAyD,CAAC;YACtE,gBAAgB,EAAE,CAAC;iBAChB,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0DAA0D,CAAC;SACxE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;KAC1C,EACD,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAC3E,CAAC;IAEF,2BAA2B;IAC3B,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,WAAW,EACT,mEAAmE;YACnE,2EAA2E;QAC7E,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC3E,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4EAA4E,CAAC;SAC1F;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,IAAI,EAAE;KAC5D,EACD,YAAY,CAAC,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CACxE,CAAC;IAEF,0BAA0B;IAC1B,MAAM,CAAC,YAAY,CACjB,cAAc,EACd;QACE,WAAW,EACT,qCAAqC;YACrC,sEAAsE;YACtE,6EAA6E;QAC/E,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;YAC3E,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,uCAAuC,CAAC;YACpE,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,wDAAwD,CAAC;YACrE,SAAS,EAAE,CAAC;iBACT,IAAI,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;iBACjC,QAAQ,CACP,+EAA+E,CAChF;YACH,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oDAAoD,CAAC;SACpF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;KACvC,EACD,YAAY,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDocComplianceTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-doc-compliance-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-doc-compliance-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-doc-compliance-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkBlE"}
@@ -0,0 +1,18 @@
1
+ // tools/register-doc-compliance-tools.ts — SPEC-385
2
+ // Registers the doc_compliance_report tool.
3
+ import { z } from 'zod';
4
+ import { safeLicensed } from './safe-handler.js';
5
+ import { handleDocComplianceReport } from './doc-compliance-handler.js';
6
+ export function registerDocComplianceTools(server) {
7
+ server.registerTool('doc_compliance_report', {
8
+ description: 'Check whether a spec aligns with official documentation best practices for detected technologies. ' +
9
+ 'Automatically detects techs from spec content, fetches official docs, and reports anti-patterns ' +
10
+ 'and missing best practices.',
11
+ inputSchema: {
12
+ projectPath: z.string().describe('Absolute path to the project root'),
13
+ specId: z.string().describe('Spec ID to check (e.g. SPEC-042)'),
14
+ },
15
+ annotations: { readOnlyHint: true },
16
+ }, safeLicensed('doc_compliance_report', async (args) => handleDocComplianceReport(args)));
17
+ }
18
+ //# sourceMappingURL=register-doc-compliance-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-doc-compliance-tools.js","sourceRoot":"","sources":["../../src/tools/register-doc-compliance-tools.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,4CAA4C;AAG5C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,MAAM,UAAU,0BAA0B,CAAC,MAAiB;IAC1D,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,oGAAoG;YACpG,kGAAkG;YAClG,6BAA6B;QAC/B,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC;YACrE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SAChE;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,YAAY,CAAC,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACnD,yBAAyB,CAAC,IAA0B,CAAC,CACtD,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDocsRegistryTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-docs-registry-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-docs-registry-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-docs-registry-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyCjE"}
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+ import { safeLicensed } from './safe-handler.js';
3
+ import { handleValidateDocsRegistry, handleDiscoverDocsUrl } from './docs-registry-handler.js';
4
+ export function registerDocsRegistryTools(server) {
5
+ server.registerTool('validate_docs_registry', {
6
+ description: 'Check all entries in the built-in docs-registry.json for broken or slow links. ' +
7
+ 'Performs HEAD requests against each registered documentation URL and categorizes them ' +
8
+ 'as healthy, slow (>2s), or broken. Useful for auditing docs-registry health.',
9
+ inputSchema: {
10
+ projectPath: z
11
+ .string()
12
+ .max(4096)
13
+ .describe('Absolute path to the project root (used for context only).'),
14
+ },
15
+ annotations: { readOnlyHint: true },
16
+ }, safeLicensed('validate_docs_registry', async (args) => {
17
+ return handleValidateDocsRegistry(args);
18
+ }));
19
+ server.registerTool('discover_docs_url', {
20
+ description: 'Discover the official documentation URL for a package/library by querying ' +
21
+ 'npm, PyPI, and crates.io registries. Returns the docs URL and whether it was ' +
22
+ 'verified as alive. Useful for finding docs for packages not yet in the registry.',
23
+ inputSchema: {
24
+ tech: z
25
+ .string()
26
+ .min(1)
27
+ .max(200)
28
+ .describe('Package or library name to look up (e.g. "axios", "requests", "tokio").'),
29
+ },
30
+ annotations: { readOnlyHint: true },
31
+ }, safeLicensed('discover_docs_url', async (args) => {
32
+ return handleDiscoverDocsUrl(args);
33
+ }));
34
+ }
35
+ //# sourceMappingURL=register-docs-registry-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-docs-registry-tools.js","sourceRoot":"","sources":["../../src/tools/register-docs-registry-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG/F,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,wBAAwB,EACxB;QACE,WAAW,EACT,iFAAiF;YACjF,wFAAwF;YACxF,8EAA8E;QAChF,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,YAAY,CAAC,wBAAwB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACpD,OAAO,0BAA0B,CAAC,IAAiC,CAAC,CAAC;IACvE,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,4EAA4E;YAC5E,+EAA+E;YAC/E,kFAAkF;QACpF,WAAW,EAAE;YACX,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,yEAAyE,CAAC;SACvF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,YAAY,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC/C,OAAO,qBAAqB,CAAC,IAA4B,CAAC,CAAC;IAC7D,CAAC,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDogfoodTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-dogfood-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-dogfood-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-dogfood-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuB5D"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ import { handleDogfoodStatus } from './dogfood-status-handler.js';
3
+ import { safeTracked } from './safe-handler.js';
4
+ export function registerDogfoodTools(server) {
5
+ server.registerTool('dogfood_status', {
6
+ description: "Report which Planu SDD tools have been used in Planu's own development by analyzing git commit history. Returns a dogfood score (0-100), list of tools used and missing, and a recommendation to improve SDD adoption. Use this to verify the team is practicing what they preach.",
7
+ inputSchema: {
8
+ projectPath: z
9
+ .string()
10
+ .min(1)
11
+ .max(4096)
12
+ .describe('Absolute path to the project root directory'),
13
+ since: z
14
+ .string()
15
+ .optional()
16
+ .describe('ISO 8601 date string (e.g. "2026-01-01") — analyze commits since this date. Defaults to last 30 days.'),
17
+ },
18
+ annotations: { readOnlyHint: true },
19
+ }, safeTracked('dogfood_status', (args) => Promise.resolve(handleDogfoodStatus(args))));
20
+ }
21
+ //# sourceMappingURL=register-dogfood-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-dogfood-tools.js","sourceRoot":"","sources":["../../src/tools/register-dogfood-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB,gBAAgB,EAChB;QACE,WAAW,EACT,oRAAoR;QACtR,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,6CAA6C,CAAC;YAC1D,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,uGAAuG,CACxG;SACJ;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,WAAW,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CACpF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDriftWatcherTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-drift-watcher-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-drift-watcher-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-drift-watcher-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8BjE"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { handleWatchSpecDrift } from './drift-watcher-handler.js';
3
+ import { safeLicensed } from './safe-handler.js';
4
+ export function registerDriftWatcherTools(server) {
5
+ server.registerTool('watch_spec_drift', {
6
+ description: 'Real-time file watcher that detects when code changes cause a spec to drift from ' +
7
+ 'its acceptance criteria. Uses Node.js fs.watch to monitor project files and alerts ' +
8
+ 'when changes may affect spec compliance. State is in-memory and does not persist ' +
9
+ 'across server restarts.',
10
+ inputSchema: {
11
+ projectPath: z
12
+ .string()
13
+ .min(1)
14
+ .max(2048)
15
+ .describe('Absolute path to the project root directory.'),
16
+ specId: z
17
+ .string()
18
+ .min(1)
19
+ .max(200)
20
+ .describe('Spec ID to watch for drift (e.g. "SPEC-042").'),
21
+ action: z
22
+ .enum(['start', 'stop', 'status'])
23
+ .describe('start: begin watching, stop: stop watcher, status: check if running'),
24
+ },
25
+ annotations: { readOnlyHint: false },
26
+ }, safeLicensed('watch_spec_drift', async (args) => handleWatchSpecDrift(args)));
27
+ }
28
+ //# sourceMappingURL=register-drift-watcher-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-drift-watcher-tools.js","sourceRoot":"","sources":["../../src/tools/register-drift-watcher-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEjD,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,mFAAmF;YACnF,qFAAqF;YACrF,mFAAmF;YACnF,yBAAyB;QAC3B,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,8CAA8C,CAAC;YAC3D,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,CAAC,+CAA+C,CAAC;YAC5D,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;iBACjC,QAAQ,CAAC,qEAAqE,CAAC;SACnF;QACD,WAAW,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE;KACrC,EACD,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9C,oBAAoB,CAAC,IAA2B,CAAC,CAClD,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerMcpGatewayTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-mcp-gateway-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-mcp-gateway-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-mcp-gateway-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6C/D"}
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+ import { safe } from './safe-handler.js';
3
+ import { handleDiscoverMcpGateways, handleFederationDiscoveryStatus, } from './mcp-gateway-handler.js';
4
+ export function registerMcpGatewayTools(server) {
5
+ // discover_mcp_gateways
6
+ server.registerTool('discover_mcp_gateways', {
7
+ description: 'Auto-discover Planu-compatible MCP servers by probing the /.well-known/mcp endpoint ' +
8
+ 'on localhost ports and any explicitly provided URLs. ' +
9
+ 'Found gateways are persisted to the global registry for federation.',
10
+ inputSchema: {
11
+ projectPath: z.string().min(1).describe('Absolute path to the project root.'),
12
+ urls: z
13
+ .array(z.url())
14
+ .optional()
15
+ .describe('Extra base URLs to probe (e.g. "http://remote-host:4000"). ' +
16
+ 'Each URL is probed at <url>/.well-known/mcp.'),
17
+ includeLocalhost: z
18
+ .boolean()
19
+ .optional()
20
+ .describe('Scan default localhost ports (3000, 3001, 8080, 8000, 9000). ' +
21
+ 'Defaults to true. Set to false to probe only the provided URLs.'),
22
+ },
23
+ annotations: { title: 'Discover MCP Gateways', readOnlyHint: false },
24
+ }, safe((args) => handleDiscoverMcpGateways(args)));
25
+ // federation_discovery_status
26
+ server.registerTool('federation_discovery_status', {
27
+ description: 'Show all known MCP gateways from the global registry, including their status ' +
28
+ '(active / unreachable / incompatible), discovered tools, and Planu compatibility.',
29
+ inputSchema: {
30
+ projectPath: z.string().min(1).describe('Absolute path to the project root.'),
31
+ },
32
+ annotations: { title: 'Federation Discovery Status', readOnlyHint: true },
33
+ }, safe((args) => handleFederationDiscoveryStatus(args)));
34
+ }
35
+ //# sourceMappingURL=register-mcp-gateway-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-mcp-gateway-tools.js","sourceRoot":"","sources":["../../src/tools/register-mcp-gateway-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,0BAA0B,CAAC;AAMlC,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,wBAAwB;IACxB,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,sFAAsF;YACtF,uDAAuD;YACvD,qEAAqE;QACvE,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC7E,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;iBACd,QAAQ,EAAE;iBACV,QAAQ,CACP,6DAA6D;gBAC3D,8CAA8C,CACjD;YACH,gBAAgB,EAAE,CAAC;iBAChB,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,+DAA+D;gBAC7D,iEAAiE,CACpE;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,KAAK,EAAE;KACrE,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAgC,CAAC,CAAC,CAC5E,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,WAAW,EACT,+EAA+E;YAC/E,mFAAmF;QACrF,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;SAC9E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,6BAA6B,EAAE,YAAY,EAAE,IAAI,EAAE;KAC1E,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,+BAA+B,CAAC,IAAsC,CAAC,CAAC,CACxF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Registers multi-repo refactoring coordination tools on the MCP server (SPEC-389).
4
+ * - coordinate_refactor (pro)
5
+ * - sync_refactor_status (pro)
6
+ */
7
+ export declare function registerMultiRepoTools(server: McpServer): void;
8
+ //# sourceMappingURL=register-multi-repo-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-multi-repo-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-multi-repo-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwD9D"}
@@ -0,0 +1,52 @@
1
+ // tools/register-multi-repo-tools.ts — SPEC-389: Register multi-repo refactoring tools
2
+ import { z } from 'zod';
3
+ import { safe } from './safe-handler.js';
4
+ import { handleCoordinateRefactor, handleSyncRefactorStatus } from './multi-repo-handler.js';
5
+ /**
6
+ * Registers multi-repo refactoring coordination tools on the MCP server (SPEC-389).
7
+ * - coordinate_refactor (pro)
8
+ * - sync_refactor_status (pro)
9
+ */
10
+ export function registerMultiRepoTools(server) {
11
+ // coordinate_refactor — initiate a cross-repo refactor session
12
+ server.registerTool('coordinate_refactor', {
13
+ description: 'Coordinate a refactoring operation that spans multiple registered projects. ' +
14
+ 'Scans all registered consumer projects for usages of the specified symbols ' +
15
+ 'and creates a refactor session tracking completion across all repos. ' +
16
+ 'Run register_project_path first to add consumer projects.',
17
+ inputSchema: {
18
+ projectPath: z
19
+ .string()
20
+ .min(1)
21
+ .max(4096)
22
+ .describe('Absolute path to the source project where the refactor originates'),
23
+ specId: z
24
+ .string()
25
+ .min(1)
26
+ .describe('ID of the spec in the source project describing the API change (e.g. SPEC-042)'),
27
+ affectedSymbols: z
28
+ .array(z.string().min(1))
29
+ .min(1)
30
+ .describe('List of function, class, or type names being changed. ' +
31
+ 'Consumer projects will be scanned for these identifiers.'),
32
+ },
33
+ annotations: { title: 'Coordinate Multi-Repo Refactor' },
34
+ }, safe(async (args) => handleCoordinateRefactor(args)));
35
+ // sync_refactor_status — query progress of an active session
36
+ server.registerTool('sync_refactor_status', {
37
+ description: 'Retrieve the current progress report for an active multi-repo refactor session. ' +
38
+ 'Returns per-consumer completion status and an overall progress percentage.',
39
+ inputSchema: {
40
+ projectPath: z
41
+ .string()
42
+ .min(1)
43
+ .max(4096)
44
+ .describe('Absolute path to the source project that owns the refactor session'),
45
+ refactorId: z
46
+ .string()
47
+ .describe('UUID of the refactor session returned by coordinate_refactor'),
48
+ },
49
+ annotations: { title: 'Sync Refactor Status', readOnlyHint: true },
50
+ }, safe(async (args) => handleSyncRefactorStatus(args)));
51
+ }
52
+ //# sourceMappingURL=register-multi-repo-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-multi-repo-tools.js","sourceRoot":"","sources":["../../src/tools/register-multi-repo-tools.ts"],"names":[],"mappings":"AAAA,uFAAuF;AAGvF,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AAE7F;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,+DAA+D;IAC/D,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,8EAA8E;YAC9E,6EAA6E;YAC7E,uEAAuE;YACvE,2DAA2D;QAC7D,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,mEAAmE,CAAC;YAChF,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,gFAAgF,CACjF;YACH,eAAe,EAAE,CAAC;iBACf,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CACP,wDAAwD;gBACtD,0DAA0D,CAC7D;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,gCAAgC,EAAE;KACzD,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;IAEF,6DAA6D;IAC7D,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,kFAAkF;YAClF,4EAA4E;QAC9E,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,oEAAoE,CAAC;YACjF,UAAU,EAAE,CAAC;iBACV,MAAM,EAAE;iBACR,QAAQ,CAAC,8DAA8D,CAAC;SAC5E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,IAAI,EAAE;KACnE,EACD,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CACrD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"safe-handler.d.ts","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0CpD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhE;AA4ID;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC;AA8GD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAWlC"}
1
+ {"version":3,"file":"safe-handler.d.ts","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AA0CpD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAEhE;AA4ID;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC;AAkKD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAElC;AAED;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACxC,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAWlC"}
@@ -242,6 +242,30 @@ function safeWithTelemetry(toolName, handler) {
242
242
  });
243
243
  }
244
244
  /* v8 ignore stop */
245
+ // SPEC-387: Audit trail — fire-and-forget, never throws
246
+ /* v8 ignore start */
247
+ if (toolName !== undefined) {
248
+ try {
249
+ const [{ appendEntry, getLastHash }, { buildAuditEntry }, { hashEntry }] = await Promise.all([
250
+ import('../storage/audit-trail-store.js'),
251
+ import('../engine/audit-trail/formatter.js'),
252
+ import('../engine/audit-trail/hasher.js'),
253
+ ]);
254
+ const prevHash = getLastHash();
255
+ const partial = buildAuditEntry({
256
+ toolName,
257
+ args,
258
+ outputType: finalResult.isError === true ? 'error' : 'success',
259
+ durationMs: Date.now() - startTime,
260
+ prevHash,
261
+ });
262
+ appendEntry({ ...partial, hash: hashEntry(partial) });
263
+ }
264
+ catch {
265
+ // Silent — audit must never affect tool execution
266
+ }
267
+ }
268
+ /* v8 ignore stop */
245
269
  return finalResult;
246
270
  }
247
271
  catch (error) {
@@ -265,7 +289,7 @@ function safeWithTelemetry(toolName, handler) {
265
289
  reportToolError(toolName, error);
266
290
  }
267
291
  const reportUrl = 'https://github.com/planu-dev/planu/issues/new?template=bug_report.md';
268
- return {
292
+ const errorResult = {
269
293
  content: [
270
294
  {
271
295
  type: 'text',
@@ -274,6 +298,31 @@ function safeWithTelemetry(toolName, handler) {
274
298
  ],
275
299
  isError: true,
276
300
  };
301
+ // SPEC-387: Audit trail for error path — fire-and-forget, never throws
302
+ /* v8 ignore start */
303
+ if (toolName !== undefined) {
304
+ try {
305
+ const [{ appendEntry, getLastHash }, { buildAuditEntry }, { hashEntry }] = await Promise.all([
306
+ import('../storage/audit-trail-store.js'),
307
+ import('../engine/audit-trail/formatter.js'),
308
+ import('../engine/audit-trail/hasher.js'),
309
+ ]);
310
+ const prevHash = getLastHash();
311
+ const partial = buildAuditEntry({
312
+ toolName,
313
+ args,
314
+ outputType: 'error',
315
+ durationMs: Date.now() - startTime,
316
+ prevHash,
317
+ });
318
+ appendEntry({ ...partial, hash: hashEntry(partial) });
319
+ }
320
+ catch {
321
+ // Silent — audit must never affect tool execution
322
+ }
323
+ }
324
+ /* v8 ignore stop */
325
+ return errorResult;
277
326
  }
278
327
  };
279
328
  }
@@ -1 +1 @@
1
- {"version":3,"file":"safe-handler.js","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safe-handler.js","sourceRoot":"","sources":["../../src/tools/safe-handler.ts"],"names":[],"mappings":"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"}