@planu/cli 0.91.0 → 0.92.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 (717) hide show
  1. package/dist/config/domain-best-practices.json +413 -0
  2. package/dist/config/ide-registry.json +25 -0
  3. package/dist/config/license-plans.json +59 -2
  4. package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.d.ts +11 -0
  5. package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.d.ts.map +1 -0
  6. package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.js +52 -0
  7. package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.js.map +1 -0
  8. package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.d.ts +11 -0
  9. package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.d.ts.map +1 -0
  10. package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.js +89 -0
  11. package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.js.map +1 -0
  12. package/dist/engine/ai-integration/agent-frameworks/index.d.ts +4 -0
  13. package/dist/engine/ai-integration/agent-frameworks/index.d.ts.map +1 -0
  14. package/dist/engine/ai-integration/agent-frameworks/index.js +5 -0
  15. package/dist/engine/ai-integration/agent-frameworks/index.js.map +1 -0
  16. package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.d.ts +11 -0
  17. package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.d.ts.map +1 -0
  18. package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.js +71 -0
  19. package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.js.map +1 -0
  20. package/dist/engine/ai-integration/agents-md/generator.d.ts +11 -0
  21. package/dist/engine/ai-integration/agents-md/generator.d.ts.map +1 -0
  22. package/dist/engine/ai-integration/agents-md/generator.js +139 -0
  23. package/dist/engine/ai-integration/agents-md/generator.js.map +1 -0
  24. package/dist/engine/ai-integration/agents-md/index.d.ts +3 -0
  25. package/dist/engine/ai-integration/agents-md/index.d.ts.map +1 -0
  26. package/dist/engine/ai-integration/agents-md/index.js +4 -0
  27. package/dist/engine/ai-integration/agents-md/index.js.map +1 -0
  28. package/dist/engine/ai-integration/agents-md/updater.d.ts +10 -0
  29. package/dist/engine/ai-integration/agents-md/updater.d.ts.map +1 -0
  30. package/dist/engine/ai-integration/agents-md/updater.js +33 -0
  31. package/dist/engine/ai-integration/agents-md/updater.js.map +1 -0
  32. package/dist/engine/ai-integration/aider/aider-config-generator.d.ts +5 -0
  33. package/dist/engine/ai-integration/aider/aider-config-generator.d.ts.map +1 -0
  34. package/dist/engine/ai-integration/aider/aider-config-generator.js +34 -0
  35. package/dist/engine/ai-integration/aider/aider-config-generator.js.map +1 -0
  36. package/dist/engine/ai-integration/cline/clinerules-generator.d.ts +5 -0
  37. package/dist/engine/ai-integration/cline/clinerules-generator.d.ts.map +1 -0
  38. package/dist/engine/ai-integration/cline/clinerules-generator.js +86 -0
  39. package/dist/engine/ai-integration/cline/clinerules-generator.js.map +1 -0
  40. package/dist/engine/ai-integration/cline/index.d.ts +3 -0
  41. package/dist/engine/ai-integration/cline/index.d.ts.map +1 -0
  42. package/dist/engine/ai-integration/cline/index.js +3 -0
  43. package/dist/engine/ai-integration/cline/index.js.map +1 -0
  44. package/dist/engine/ai-integration/codex/agent-roles-generator.d.ts +12 -0
  45. package/dist/engine/ai-integration/codex/agent-roles-generator.d.ts.map +1 -0
  46. package/dist/engine/ai-integration/codex/agent-roles-generator.js +62 -0
  47. package/dist/engine/ai-integration/codex/agent-roles-generator.js.map +1 -0
  48. package/dist/engine/ai-integration/codex/agents-md-generator.d.ts +10 -0
  49. package/dist/engine/ai-integration/codex/agents-md-generator.d.ts.map +1 -0
  50. package/dist/engine/ai-integration/codex/agents-md-generator.js +114 -0
  51. package/dist/engine/ai-integration/codex/agents-md-generator.js.map +1 -0
  52. package/dist/engine/ai-integration/codex/config-generator.d.ts +9 -0
  53. package/dist/engine/ai-integration/codex/config-generator.d.ts.map +1 -0
  54. package/dist/engine/ai-integration/codex/config-generator.js +66 -0
  55. package/dist/engine/ai-integration/codex/config-generator.js.map +1 -0
  56. package/dist/engine/ai-integration/codex/hooks-generator.d.ts +6 -0
  57. package/dist/engine/ai-integration/codex/hooks-generator.d.ts.map +1 -0
  58. package/dist/engine/ai-integration/codex/hooks-generator.js +55 -0
  59. package/dist/engine/ai-integration/codex/hooks-generator.js.map +1 -0
  60. package/dist/engine/ai-integration/codex/index.d.ts +5 -0
  61. package/dist/engine/ai-integration/codex/index.d.ts.map +1 -0
  62. package/dist/engine/ai-integration/codex/index.js +6 -0
  63. package/dist/engine/ai-integration/codex/index.js.map +1 -0
  64. package/dist/engine/ai-integration/continue/ai-checks-generator.d.ts +12 -0
  65. package/dist/engine/ai-integration/continue/ai-checks-generator.d.ts.map +1 -0
  66. package/dist/engine/ai-integration/continue/ai-checks-generator.js +63 -0
  67. package/dist/engine/ai-integration/continue/ai-checks-generator.js.map +1 -0
  68. package/dist/engine/ai-integration/continue/config-generator.d.ts +5 -0
  69. package/dist/engine/ai-integration/continue/config-generator.d.ts.map +1 -0
  70. package/dist/engine/ai-integration/continue/config-generator.js +56 -0
  71. package/dist/engine/ai-integration/continue/config-generator.js.map +1 -0
  72. package/dist/engine/ai-integration/continue/index.d.ts +5 -0
  73. package/dist/engine/ai-integration/continue/index.d.ts.map +1 -0
  74. package/dist/engine/ai-integration/continue/index.js +4 -0
  75. package/dist/engine/ai-integration/continue/index.js.map +1 -0
  76. package/dist/engine/ai-integration/cursor/cursorrules-generator.d.ts +5 -0
  77. package/dist/engine/ai-integration/cursor/cursorrules-generator.d.ts.map +1 -0
  78. package/dist/engine/ai-integration/cursor/cursorrules-generator.js +75 -0
  79. package/dist/engine/ai-integration/cursor/cursorrules-generator.js.map +1 -0
  80. package/dist/engine/ai-integration/detector.d.ts +5 -0
  81. package/dist/engine/ai-integration/detector.d.ts.map +1 -0
  82. package/dist/engine/ai-integration/detector.js +127 -0
  83. package/dist/engine/ai-integration/detector.js.map +1 -0
  84. package/dist/engine/ai-integration/gemini/extensions-advisor.d.ts +4 -0
  85. package/dist/engine/ai-integration/gemini/extensions-advisor.d.ts.map +1 -0
  86. package/dist/engine/ai-integration/gemini/extensions-advisor.js +64 -0
  87. package/dist/engine/ai-integration/gemini/extensions-advisor.js.map +1 -0
  88. package/dist/engine/ai-integration/gemini/gemini-md-generator.d.ts +4 -0
  89. package/dist/engine/ai-integration/gemini/gemini-md-generator.d.ts.map +1 -0
  90. package/dist/engine/ai-integration/gemini/gemini-md-generator.js +94 -0
  91. package/dist/engine/ai-integration/gemini/gemini-md-generator.js.map +1 -0
  92. package/dist/engine/ai-integration/gemini/index.d.ts +5 -0
  93. package/dist/engine/ai-integration/gemini/index.d.ts.map +1 -0
  94. package/dist/engine/ai-integration/gemini/index.js +6 -0
  95. package/dist/engine/ai-integration/gemini/index.js.map +1 -0
  96. package/dist/engine/ai-integration/gemini/policy-generator.d.ts +6 -0
  97. package/dist/engine/ai-integration/gemini/policy-generator.d.ts.map +1 -0
  98. package/dist/engine/ai-integration/gemini/policy-generator.js +63 -0
  99. package/dist/engine/ai-integration/gemini/policy-generator.js.map +1 -0
  100. package/dist/engine/ai-integration/gemini/settings-generator.d.ts +4 -0
  101. package/dist/engine/ai-integration/gemini/settings-generator.d.ts.map +1 -0
  102. package/dist/engine/ai-integration/gemini/settings-generator.js +191 -0
  103. package/dist/engine/ai-integration/gemini/settings-generator.js.map +1 -0
  104. package/dist/engine/ai-integration/github-copilot/index.d.ts +4 -0
  105. package/dist/engine/ai-integration/github-copilot/index.d.ts.map +1 -0
  106. package/dist/engine/ai-integration/github-copilot/index.js +5 -0
  107. package/dist/engine/ai-integration/github-copilot/index.js.map +1 -0
  108. package/dist/engine/ai-integration/github-copilot/instructions-generator.d.ts +5 -0
  109. package/dist/engine/ai-integration/github-copilot/instructions-generator.d.ts.map +1 -0
  110. package/dist/engine/ai-integration/github-copilot/instructions-generator.js +102 -0
  111. package/dist/engine/ai-integration/github-copilot/instructions-generator.js.map +1 -0
  112. package/dist/engine/ai-integration/github-copilot/prompt-files-generator.d.ts +11 -0
  113. package/dist/engine/ai-integration/github-copilot/prompt-files-generator.d.ts.map +1 -0
  114. package/dist/engine/ai-integration/github-copilot/prompt-files-generator.js +86 -0
  115. package/dist/engine/ai-integration/github-copilot/prompt-files-generator.js.map +1 -0
  116. package/dist/engine/ai-integration/github-copilot/workspace-bridge.d.ts +3 -0
  117. package/dist/engine/ai-integration/github-copilot/workspace-bridge.d.ts.map +1 -0
  118. package/dist/engine/ai-integration/github-copilot/workspace-bridge.js +39 -0
  119. package/dist/engine/ai-integration/github-copilot/workspace-bridge.js.map +1 -0
  120. package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +6 -0
  121. package/dist/engine/ai-integration/kiro/hooks-generator.d.ts.map +1 -0
  122. package/dist/engine/ai-integration/kiro/hooks-generator.js +74 -0
  123. package/dist/engine/ai-integration/kiro/hooks-generator.js.map +1 -0
  124. package/dist/engine/ai-integration/kiro/index.d.ts +4 -0
  125. package/dist/engine/ai-integration/kiro/index.d.ts.map +1 -0
  126. package/dist/engine/ai-integration/kiro/index.js +5 -0
  127. package/dist/engine/ai-integration/kiro/index.js.map +1 -0
  128. package/dist/engine/ai-integration/kiro/spec-exporter.d.ts +6 -0
  129. package/dist/engine/ai-integration/kiro/spec-exporter.d.ts.map +1 -0
  130. package/dist/engine/ai-integration/kiro/spec-exporter.js +57 -0
  131. package/dist/engine/ai-integration/kiro/spec-exporter.js.map +1 -0
  132. package/dist/engine/ai-integration/kiro/steering-generator.d.ts +6 -0
  133. package/dist/engine/ai-integration/kiro/steering-generator.d.ts.map +1 -0
  134. package/dist/engine/ai-integration/kiro/steering-generator.js +112 -0
  135. package/dist/engine/ai-integration/kiro/steering-generator.js.map +1 -0
  136. package/dist/engine/ai-integration/mastra/agent-scaffold.d.ts +16 -0
  137. package/dist/engine/ai-integration/mastra/agent-scaffold.d.ts.map +1 -0
  138. package/dist/engine/ai-integration/mastra/agent-scaffold.js +111 -0
  139. package/dist/engine/ai-integration/mastra/agent-scaffold.js.map +1 -0
  140. package/dist/engine/ai-integration/mastra/config-generator.d.ts +12 -0
  141. package/dist/engine/ai-integration/mastra/config-generator.d.ts.map +1 -0
  142. package/dist/engine/ai-integration/mastra/config-generator.js +64 -0
  143. package/dist/engine/ai-integration/mastra/config-generator.js.map +1 -0
  144. package/dist/engine/ai-integration/mastra/index.d.ts +3 -0
  145. package/dist/engine/ai-integration/mastra/index.d.ts.map +1 -0
  146. package/dist/engine/ai-integration/mastra/index.js +4 -0
  147. package/dist/engine/ai-integration/mastra/index.js.map +1 -0
  148. package/dist/engine/ai-integration/universal-config-generator.d.ts +4 -0
  149. package/dist/engine/ai-integration/universal-config-generator.d.ts.map +1 -0
  150. package/dist/engine/ai-integration/universal-config-generator.js +87 -0
  151. package/dist/engine/ai-integration/universal-config-generator.js.map +1 -0
  152. package/dist/engine/ai-integration/windsurf/windsurfrules-generator.d.ts +5 -0
  153. package/dist/engine/ai-integration/windsurf/windsurfrules-generator.d.ts.map +1 -0
  154. package/dist/engine/ai-integration/windsurf/windsurfrules-generator.js +75 -0
  155. package/dist/engine/ai-integration/windsurf/windsurfrules-generator.js.map +1 -0
  156. package/dist/engine/api-spec-generator/ac-builder.d.ts +5 -0
  157. package/dist/engine/api-spec-generator/ac-builder.d.ts.map +1 -0
  158. package/dist/engine/api-spec-generator/ac-builder.js +114 -0
  159. package/dist/engine/api-spec-generator/ac-builder.js.map +1 -0
  160. package/dist/engine/api-spec-generator/graphql-parser.d.ts +3 -0
  161. package/dist/engine/api-spec-generator/graphql-parser.d.ts.map +1 -0
  162. package/dist/engine/api-spec-generator/graphql-parser.js +166 -0
  163. package/dist/engine/api-spec-generator/graphql-parser.js.map +1 -0
  164. package/dist/engine/api-spec-generator/openapi-parser.d.ts +3 -0
  165. package/dist/engine/api-spec-generator/openapi-parser.d.ts.map +1 -0
  166. package/dist/engine/api-spec-generator/openapi-parser.js +161 -0
  167. package/dist/engine/api-spec-generator/openapi-parser.js.map +1 -0
  168. package/dist/engine/approval-workflow.d.ts +21 -0
  169. package/dist/engine/approval-workflow.d.ts.map +1 -0
  170. package/dist/engine/approval-workflow.js +82 -0
  171. package/dist/engine/approval-workflow.js.map +1 -0
  172. package/dist/engine/best-practices-library.d.ts +31 -0
  173. package/dist/engine/best-practices-library.d.ts.map +1 -0
  174. package/dist/engine/best-practices-library.js +111 -0
  175. package/dist/engine/best-practices-library.js.map +1 -0
  176. package/dist/engine/confluence-exporter.d.ts +27 -0
  177. package/dist/engine/confluence-exporter.d.ts.map +1 -0
  178. package/dist/engine/confluence-exporter.js +238 -0
  179. package/dist/engine/confluence-exporter.js.map +1 -0
  180. package/dist/engine/cross-repo-searcher.d.ts +13 -0
  181. package/dist/engine/cross-repo-searcher.d.ts.map +1 -0
  182. package/dist/engine/cross-repo-searcher.js +51 -0
  183. package/dist/engine/cross-repo-searcher.js.map +1 -0
  184. package/dist/engine/desktop-notifier.d.ts +16 -0
  185. package/dist/engine/desktop-notifier.d.ts.map +1 -0
  186. package/dist/engine/desktop-notifier.js +64 -0
  187. package/dist/engine/desktop-notifier.js.map +1 -0
  188. package/dist/engine/domain-detector.d.ts +12 -0
  189. package/dist/engine/domain-detector.d.ts.map +1 -0
  190. package/dist/engine/domain-detector.js +286 -0
  191. package/dist/engine/domain-detector.js.map +1 -0
  192. package/dist/engine/email-digest-generator.d.ts +8 -0
  193. package/dist/engine/email-digest-generator.d.ts.map +1 -0
  194. package/dist/engine/email-digest-generator.js +192 -0
  195. package/dist/engine/email-digest-generator.js.map +1 -0
  196. package/dist/engine/email-sender.d.ts +22 -0
  197. package/dist/engine/email-sender.d.ts.map +1 -0
  198. package/dist/engine/email-sender.js +78 -0
  199. package/dist/engine/email-sender.js.map +1 -0
  200. package/dist/engine/estimation-calibrator.d.ts +19 -0
  201. package/dist/engine/estimation-calibrator.d.ts.map +1 -0
  202. package/dist/engine/estimation-calibrator.js +176 -0
  203. package/dist/engine/estimation-calibrator.js.map +1 -0
  204. package/dist/engine/hooks/custom-commands-generator.d.ts +11 -0
  205. package/dist/engine/hooks/custom-commands-generator.d.ts.map +1 -0
  206. package/dist/engine/hooks/custom-commands-generator.js +88 -0
  207. package/dist/engine/hooks/custom-commands-generator.js.map +1 -0
  208. package/dist/engine/hooks/effort-configurator.d.ts +13 -0
  209. package/dist/engine/hooks/effort-configurator.d.ts.map +1 -0
  210. package/dist/engine/hooks/effort-configurator.js +54 -0
  211. package/dist/engine/hooks/effort-configurator.js.map +1 -0
  212. package/dist/engine/hooks/full-spectrum-generator.d.ts +31 -0
  213. package/dist/engine/hooks/full-spectrum-generator.d.ts.map +1 -0
  214. package/dist/engine/hooks/full-spectrum-generator.js +115 -0
  215. package/dist/engine/hooks/full-spectrum-generator.js.map +1 -0
  216. package/dist/engine/hooks/profile-generator.d.ts +21 -0
  217. package/dist/engine/hooks/profile-generator.d.ts.map +1 -0
  218. package/dist/engine/hooks/profile-generator.js +90 -0
  219. package/dist/engine/hooks/profile-generator.js.map +1 -0
  220. package/dist/engine/ide-config/generators.d.ts.map +1 -1
  221. package/dist/engine/ide-config/generators.js +28 -1
  222. package/dist/engine/ide-config/generators.js.map +1 -1
  223. package/dist/engine/importers/csv-importer.d.ts +9 -0
  224. package/dist/engine/importers/csv-importer.d.ts.map +1 -0
  225. package/dist/engine/importers/csv-importer.js +116 -0
  226. package/dist/engine/importers/csv-importer.js.map +1 -0
  227. package/dist/engine/importers/jira-importer.d.ts +7 -0
  228. package/dist/engine/importers/jira-importer.d.ts.map +1 -0
  229. package/dist/engine/importers/jira-importer.js +57 -0
  230. package/dist/engine/importers/jira-importer.js.map +1 -0
  231. package/dist/engine/importers/linear-importer.d.ts +6 -0
  232. package/dist/engine/importers/linear-importer.d.ts.map +1 -0
  233. package/dist/engine/importers/linear-importer.js +59 -0
  234. package/dist/engine/importers/linear-importer.js.map +1 -0
  235. package/dist/engine/importers/markdown-importer.d.ts +7 -0
  236. package/dist/engine/importers/markdown-importer.d.ts.map +1 -0
  237. package/dist/engine/importers/markdown-importer.js +74 -0
  238. package/dist/engine/importers/markdown-importer.js.map +1 -0
  239. package/dist/engine/outbound-webhook-dispatcher.d.ts +4 -0
  240. package/dist/engine/outbound-webhook-dispatcher.d.ts.map +1 -0
  241. package/dist/engine/outbound-webhook-dispatcher.js +94 -0
  242. package/dist/engine/outbound-webhook-dispatcher.js.map +1 -0
  243. package/dist/engine/performance-analyzer.d.ts +18 -0
  244. package/dist/engine/performance-analyzer.d.ts.map +1 -0
  245. package/dist/engine/performance-analyzer.js +152 -0
  246. package/dist/engine/performance-analyzer.js.map +1 -0
  247. package/dist/engine/registry/composio-publisher.d.ts +17 -0
  248. package/dist/engine/registry/composio-publisher.d.ts.map +1 -0
  249. package/dist/engine/registry/composio-publisher.js +51 -0
  250. package/dist/engine/registry/composio-publisher.js.map +1 -0
  251. package/dist/engine/registry/glama-publisher.d.ts +17 -0
  252. package/dist/engine/registry/glama-publisher.d.ts.map +1 -0
  253. package/dist/engine/registry/glama-publisher.js +43 -0
  254. package/dist/engine/registry/glama-publisher.js.map +1 -0
  255. package/dist/engine/registry/index.d.ts +4 -0
  256. package/dist/engine/registry/index.d.ts.map +1 -1
  257. package/dist/engine/registry/index.js +5 -0
  258. package/dist/engine/registry/index.js.map +1 -1
  259. package/dist/engine/registry/mcp-official-publisher.d.ts +16 -0
  260. package/dist/engine/registry/mcp-official-publisher.d.ts.map +1 -0
  261. package/dist/engine/registry/mcp-official-publisher.js +44 -0
  262. package/dist/engine/registry/mcp-official-publisher.js.map +1 -0
  263. package/dist/engine/registry/smithery-generator.d.ts +16 -0
  264. package/dist/engine/registry/smithery-generator.d.ts.map +1 -0
  265. package/dist/engine/registry/smithery-generator.js +71 -0
  266. package/dist/engine/registry/smithery-generator.js.map +1 -0
  267. package/dist/engine/reverse-engineer/test-file-parser.d.ts +26 -0
  268. package/dist/engine/reverse-engineer/test-file-parser.d.ts.map +1 -0
  269. package/dist/engine/reverse-engineer/test-file-parser.js +165 -0
  270. package/dist/engine/reverse-engineer/test-file-parser.js.map +1 -0
  271. package/dist/engine/slack-dispatcher.d.ts +15 -0
  272. package/dist/engine/slack-dispatcher.d.ts.map +1 -0
  273. package/dist/engine/slack-dispatcher.js +73 -0
  274. package/dist/engine/slack-dispatcher.js.map +1 -0
  275. package/dist/engine/spec-differ.d.ts +15 -0
  276. package/dist/engine/spec-differ.d.ts.map +1 -0
  277. package/dist/engine/spec-differ.js +115 -0
  278. package/dist/engine/spec-differ.js.map +1 -0
  279. package/dist/engine/spec-exporter.d.ts +27 -0
  280. package/dist/engine/spec-exporter.d.ts.map +1 -0
  281. package/dist/engine/spec-exporter.js +122 -0
  282. package/dist/engine/spec-exporter.js.map +1 -0
  283. package/dist/engine/spec-searcher.d.ts +31 -0
  284. package/dist/engine/spec-searcher.d.ts.map +1 -0
  285. package/dist/engine/spec-searcher.js +240 -0
  286. package/dist/engine/spec-searcher.js.map +1 -0
  287. package/dist/engine/spec-splitter.d.ts +11 -1
  288. package/dist/engine/spec-splitter.d.ts.map +1 -1
  289. package/dist/engine/spec-splitter.js +178 -0
  290. package/dist/engine/spec-splitter.js.map +1 -1
  291. package/dist/engine/team-analytics-calculator.d.ts +14 -0
  292. package/dist/engine/team-analytics-calculator.d.ts.map +1 -0
  293. package/dist/engine/team-analytics-calculator.js +114 -0
  294. package/dist/engine/team-analytics-calculator.js.map +1 -0
  295. package/dist/engine/telemetry/error-reporter.d.ts +16 -0
  296. package/dist/engine/telemetry/error-reporter.d.ts.map +1 -0
  297. package/dist/engine/telemetry/error-reporter.js +46 -0
  298. package/dist/engine/telemetry/error-reporter.js.map +1 -0
  299. package/dist/engine/velocity-calculator.d.ts +44 -0
  300. package/dist/engine/velocity-calculator.d.ts.map +1 -0
  301. package/dist/engine/velocity-calculator.js +425 -0
  302. package/dist/engine/velocity-calculator.js.map +1 -0
  303. package/dist/index.js +44 -2
  304. package/dist/index.js.map +1 -1
  305. package/dist/storage/actuals-store.d.ts +8 -0
  306. package/dist/storage/actuals-store.d.ts.map +1 -0
  307. package/dist/storage/actuals-store.js +57 -0
  308. package/dist/storage/actuals-store.js.map +1 -0
  309. package/dist/storage/approval-store.d.ts +12 -0
  310. package/dist/storage/approval-store.d.ts.map +1 -0
  311. package/dist/storage/approval-store.js +46 -0
  312. package/dist/storage/approval-store.js.map +1 -0
  313. package/dist/storage/comments-store.d.ts +38 -0
  314. package/dist/storage/comments-store.d.ts.map +1 -0
  315. package/dist/storage/comments-store.js +167 -0
  316. package/dist/storage/comments-store.js.map +1 -0
  317. package/dist/storage/confluence-store.d.ts +35 -0
  318. package/dist/storage/confluence-store.d.ts.map +1 -0
  319. package/dist/storage/confluence-store.js +85 -0
  320. package/dist/storage/confluence-store.js.map +1 -0
  321. package/dist/storage/desktop-notification-store.d.ts +19 -0
  322. package/dist/storage/desktop-notification-store.d.ts.map +1 -0
  323. package/dist/storage/desktop-notification-store.js +44 -0
  324. package/dist/storage/desktop-notification-store.js.map +1 -0
  325. package/dist/storage/email-digest-store.d.ts +19 -0
  326. package/dist/storage/email-digest-store.d.ts.map +1 -0
  327. package/dist/storage/email-digest-store.js +51 -0
  328. package/dist/storage/email-digest-store.js.map +1 -0
  329. package/dist/storage/global-projects-store.d.ts +27 -0
  330. package/dist/storage/global-projects-store.d.ts.map +1 -0
  331. package/dist/storage/global-projects-store.js +78 -0
  332. package/dist/storage/global-projects-store.js.map +1 -0
  333. package/dist/storage/index.d.ts +2 -0
  334. package/dist/storage/index.d.ts.map +1 -1
  335. package/dist/storage/index.js +2 -0
  336. package/dist/storage/index.js.map +1 -1
  337. package/dist/storage/outbound-webhook-store.d.ts +9 -0
  338. package/dist/storage/outbound-webhook-store.d.ts.map +1 -0
  339. package/dist/storage/outbound-webhook-store.js +105 -0
  340. package/dist/storage/outbound-webhook-store.js.map +1 -0
  341. package/dist/storage/slack-store.d.ts +22 -0
  342. package/dist/storage/slack-store.d.ts.map +1 -0
  343. package/dist/storage/slack-store.js +55 -0
  344. package/dist/storage/slack-store.js.map +1 -0
  345. package/dist/storage/spec-lock-store.d.ts +22 -0
  346. package/dist/storage/spec-lock-store.d.ts.map +1 -0
  347. package/dist/storage/spec-lock-store.js +99 -0
  348. package/dist/storage/spec-lock-store.js.map +1 -0
  349. package/dist/tools/ai-ecosystem-status.d.ts +13 -0
  350. package/dist/tools/ai-ecosystem-status.d.ts.map +1 -0
  351. package/dist/tools/ai-ecosystem-status.js +219 -0
  352. package/dist/tools/ai-ecosystem-status.js.map +1 -0
  353. package/dist/tools/api-spec-generator-handler.d.ts +3 -0
  354. package/dist/tools/api-spec-generator-handler.d.ts.map +1 -0
  355. package/dist/tools/api-spec-generator-handler.js +193 -0
  356. package/dist/tools/api-spec-generator-handler.js.map +1 -0
  357. package/dist/tools/approval-handler.d.ts +6 -0
  358. package/dist/tools/approval-handler.d.ts.map +1 -0
  359. package/dist/tools/approval-handler.js +193 -0
  360. package/dist/tools/approval-handler.js.map +1 -0
  361. package/dist/tools/checkpoint-handler.d.ts.map +1 -1
  362. package/dist/tools/checkpoint-handler.js +20 -0
  363. package/dist/tools/checkpoint-handler.js.map +1 -1
  364. package/dist/tools/comments-handler.d.ts +6 -0
  365. package/dist/tools/comments-handler.d.ts.map +1 -0
  366. package/dist/tools/comments-handler.js +137 -0
  367. package/dist/tools/comments-handler.js.map +1 -0
  368. package/dist/tools/confluence-handler.d.ts +6 -0
  369. package/dist/tools/confluence-handler.d.ts.map +1 -0
  370. package/dist/tools/confluence-handler.js +220 -0
  371. package/dist/tools/confluence-handler.js.map +1 -0
  372. package/dist/tools/cross-repo-search-handler.d.ts +19 -0
  373. package/dist/tools/cross-repo-search-handler.d.ts.map +1 -0
  374. package/dist/tools/cross-repo-search-handler.js +151 -0
  375. package/dist/tools/cross-repo-search-handler.js.map +1 -0
  376. package/dist/tools/desktop-notification-handler.d.ts +17 -0
  377. package/dist/tools/desktop-notification-handler.d.ts.map +1 -0
  378. package/dist/tools/desktop-notification-handler.js +90 -0
  379. package/dist/tools/desktop-notification-handler.js.map +1 -0
  380. package/dist/tools/domain-criteria-handler.d.ts +16 -0
  381. package/dist/tools/domain-criteria-handler.d.ts.map +1 -0
  382. package/dist/tools/domain-criteria-handler.js +216 -0
  383. package/dist/tools/domain-criteria-handler.js.map +1 -0
  384. package/dist/tools/email-digest-handler.d.ts +6 -0
  385. package/dist/tools/email-digest-handler.d.ts.map +1 -0
  386. package/dist/tools/email-digest-handler.js +198 -0
  387. package/dist/tools/email-digest-handler.js.map +1 -0
  388. package/dist/tools/estimate.d.ts.map +1 -1
  389. package/dist/tools/estimate.js +22 -0
  390. package/dist/tools/estimate.js.map +1 -1
  391. package/dist/tools/estimation-accuracy-handler.d.ts +5 -0
  392. package/dist/tools/estimation-accuracy-handler.d.ts.map +1 -0
  393. package/dist/tools/estimation-accuracy-handler.js +171 -0
  394. package/dist/tools/estimation-accuracy-handler.js.map +1 -0
  395. package/dist/tools/generate-automation-guide.d.ts.map +1 -1
  396. package/dist/tools/generate-automation-guide.js +44 -0
  397. package/dist/tools/generate-automation-guide.js.map +1 -1
  398. package/dist/tools/import-spec-handler.d.ts +10 -0
  399. package/dist/tools/import-spec-handler.d.ts.map +1 -0
  400. package/dist/tools/import-spec-handler.js +242 -0
  401. package/dist/tools/import-spec-handler.js.map +1 -0
  402. package/dist/tools/init-project/claude-md-generator.d.ts +1 -0
  403. package/dist/tools/init-project/claude-md-generator.d.ts.map +1 -1
  404. package/dist/tools/init-project/claude-md-generator.js +35 -0
  405. package/dist/tools/init-project/claude-md-generator.js.map +1 -1
  406. package/dist/tools/init-project/planu-workflow-generator.d.ts.map +1 -1
  407. package/dist/tools/init-project/planu-workflow-generator.js +11 -0
  408. package/dist/tools/init-project/planu-workflow-generator.js.map +1 -1
  409. package/dist/tools/init-project/rules-generator.d.ts +11 -0
  410. package/dist/tools/init-project/rules-generator.d.ts.map +1 -1
  411. package/dist/tools/init-project/rules-generator.js +79 -0
  412. package/dist/tools/init-project/rules-generator.js.map +1 -1
  413. package/dist/tools/init-project/scaffold-writer.d.ts +1 -0
  414. package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -1
  415. package/dist/tools/init-project/scaffold-writer.js +10 -1
  416. package/dist/tools/init-project/scaffold-writer.js.map +1 -1
  417. package/dist/tools/list-specs.d.ts.map +1 -1
  418. package/dist/tools/list-specs.js +11 -1
  419. package/dist/tools/list-specs.js.map +1 -1
  420. package/dist/tools/outbound-webhook-handler.d.ts +13 -0
  421. package/dist/tools/outbound-webhook-handler.d.ts.map +1 -0
  422. package/dist/tools/outbound-webhook-handler.js +161 -0
  423. package/dist/tools/outbound-webhook-handler.js.map +1 -0
  424. package/dist/tools/performance-analysis-handler.d.ts +3 -0
  425. package/dist/tools/performance-analysis-handler.d.ts.map +1 -0
  426. package/dist/tools/performance-analysis-handler.js +95 -0
  427. package/dist/tools/performance-analysis-handler.js.map +1 -0
  428. package/dist/tools/register-api-spec-generator.d.ts +3 -0
  429. package/dist/tools/register-api-spec-generator.d.ts.map +1 -0
  430. package/dist/tools/register-api-spec-generator.js +49 -0
  431. package/dist/tools/register-api-spec-generator.js.map +1 -0
  432. package/dist/tools/register-approval-tools.d.ts +3 -0
  433. package/dist/tools/register-approval-tools.d.ts.map +1 -0
  434. package/dist/tools/register-approval-tools.js +87 -0
  435. package/dist/tools/register-approval-tools.js.map +1 -0
  436. package/dist/tools/register-comments-tools.d.ts +3 -0
  437. package/dist/tools/register-comments-tools.d.ts.map +1 -0
  438. package/dist/tools/register-comments-tools.js +79 -0
  439. package/dist/tools/register-comments-tools.js.map +1 -0
  440. package/dist/tools/register-confluence-tools.d.ts +3 -0
  441. package/dist/tools/register-confluence-tools.d.ts.map +1 -0
  442. package/dist/tools/register-confluence-tools.js +62 -0
  443. package/dist/tools/register-confluence-tools.js.map +1 -0
  444. package/dist/tools/register-cross-repo-search-tools.d.ts +10 -0
  445. package/dist/tools/register-cross-repo-search-tools.d.ts.map +1 -0
  446. package/dist/tools/register-cross-repo-search-tools.js +82 -0
  447. package/dist/tools/register-cross-repo-search-tools.js.map +1 -0
  448. package/dist/tools/register-desktop-notification-tools.d.ts +3 -0
  449. package/dist/tools/register-desktop-notification-tools.d.ts.map +1 -0
  450. package/dist/tools/register-desktop-notification-tools.js +56 -0
  451. package/dist/tools/register-desktop-notification-tools.js.map +1 -0
  452. package/dist/tools/register-domain-criteria-tools.d.ts +3 -0
  453. package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -0
  454. package/dist/tools/register-domain-criteria-tools.js +46 -0
  455. package/dist/tools/register-domain-criteria-tools.js.map +1 -0
  456. package/dist/tools/register-email-digest-tools.d.ts +3 -0
  457. package/dist/tools/register-email-digest-tools.d.ts.map +1 -0
  458. package/dist/tools/register-email-digest-tools.js +109 -0
  459. package/dist/tools/register-email-digest-tools.js.map +1 -0
  460. package/dist/tools/register-estimation-accuracy-tools.d.ts +3 -0
  461. package/dist/tools/register-estimation-accuracy-tools.d.ts.map +1 -0
  462. package/dist/tools/register-estimation-accuracy-tools.js +71 -0
  463. package/dist/tools/register-estimation-accuracy-tools.js.map +1 -0
  464. package/dist/tools/register-import-tools.d.ts +3 -0
  465. package/dist/tools/register-import-tools.d.ts.map +1 -0
  466. package/dist/tools/register-import-tools.js +63 -0
  467. package/dist/tools/register-import-tools.js.map +1 -0
  468. package/dist/tools/register-outbound-webhook-tools.d.ts +3 -0
  469. package/dist/tools/register-outbound-webhook-tools.d.ts.map +1 -0
  470. package/dist/tools/register-outbound-webhook-tools.js +79 -0
  471. package/dist/tools/register-outbound-webhook-tools.js.map +1 -0
  472. package/dist/tools/register-performance-analysis-tools.d.ts +3 -0
  473. package/dist/tools/register-performance-analysis-tools.d.ts.map +1 -0
  474. package/dist/tools/register-performance-analysis-tools.js +24 -0
  475. package/dist/tools/register-performance-analysis-tools.js.map +1 -0
  476. package/dist/tools/register-slack-tools.d.ts +3 -0
  477. package/dist/tools/register-slack-tools.d.ts.map +1 -0
  478. package/dist/tools/register-slack-tools.js +55 -0
  479. package/dist/tools/register-slack-tools.js.map +1 -0
  480. package/dist/tools/register-spec-export-tools.d.ts +3 -0
  481. package/dist/tools/register-spec-export-tools.d.ts.map +1 -0
  482. package/dist/tools/register-spec-export-tools.js +67 -0
  483. package/dist/tools/register-spec-export-tools.js.map +1 -0
  484. package/dist/tools/register-spec-lock-tools.d.ts +3 -0
  485. package/dist/tools/register-spec-lock-tools.d.ts.map +1 -0
  486. package/dist/tools/register-spec-lock-tools.js +72 -0
  487. package/dist/tools/register-spec-lock-tools.js.map +1 -0
  488. package/dist/tools/register-spec-search-tools.d.ts +3 -0
  489. package/dist/tools/register-spec-search-tools.d.ts.map +1 -0
  490. package/dist/tools/register-spec-search-tools.js +122 -0
  491. package/dist/tools/register-spec-search-tools.js.map +1 -0
  492. package/dist/tools/register-spec-split-tools.d.ts +3 -0
  493. package/dist/tools/register-spec-split-tools.d.ts.map +1 -0
  494. package/dist/tools/register-spec-split-tools.js +51 -0
  495. package/dist/tools/register-spec-split-tools.js.map +1 -0
  496. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
  497. package/dist/tools/register-spec-tools/core-spec-tools.js +20 -2
  498. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
  499. package/dist/tools/register-team-analytics-tools.d.ts +3 -0
  500. package/dist/tools/register-team-analytics-tools.d.ts.map +1 -0
  501. package/dist/tools/register-team-analytics-tools.js +37 -0
  502. package/dist/tools/register-team-analytics-tools.js.map +1 -0
  503. package/dist/tools/register-test-reverse-engineer-tools.d.ts +3 -0
  504. package/dist/tools/register-test-reverse-engineer-tools.d.ts.map +1 -0
  505. package/dist/tools/register-test-reverse-engineer-tools.js +10 -0
  506. package/dist/tools/register-test-reverse-engineer-tools.js.map +1 -0
  507. package/dist/tools/register-velocity-tools.d.ts +3 -0
  508. package/dist/tools/register-velocity-tools.d.ts.map +1 -0
  509. package/dist/tools/register-velocity-tools.js +72 -0
  510. package/dist/tools/register-velocity-tools.js.map +1 -0
  511. package/dist/tools/register-versioning-tools.d.ts.map +1 -1
  512. package/dist/tools/register-versioning-tools.js +55 -0
  513. package/dist/tools/register-versioning-tools.js.map +1 -1
  514. package/dist/tools/safe-handler.d.ts.map +1 -1
  515. package/dist/tools/safe-handler.js +5 -0
  516. package/dist/tools/safe-handler.js.map +1 -1
  517. package/dist/tools/schemas/ide-config.d.ts +2 -0
  518. package/dist/tools/schemas/ide-config.d.ts.map +1 -1
  519. package/dist/tools/schemas/ide-config.js +2 -1
  520. package/dist/tools/schemas/ide-config.js.map +1 -1
  521. package/dist/tools/schemas/output-schemas.d.ts +24 -0
  522. package/dist/tools/schemas/output-schemas.d.ts.map +1 -1
  523. package/dist/tools/schemas/output-schemas.js +30 -0
  524. package/dist/tools/schemas/output-schemas.js.map +1 -1
  525. package/dist/tools/search-handler.d.ts +4 -0
  526. package/dist/tools/search-handler.d.ts.map +1 -0
  527. package/dist/tools/search-handler.js +62 -0
  528. package/dist/tools/search-handler.js.map +1 -0
  529. package/dist/tools/slack-handler.d.ts +6 -0
  530. package/dist/tools/slack-handler.d.ts.map +1 -0
  531. package/dist/tools/slack-handler.js +162 -0
  532. package/dist/tools/slack-handler.js.map +1 -0
  533. package/dist/tools/spec-diff-handler.d.ts +6 -0
  534. package/dist/tools/spec-diff-handler.d.ts.map +1 -0
  535. package/dist/tools/spec-diff-handler.js +94 -0
  536. package/dist/tools/spec-diff-handler.js.map +1 -0
  537. package/dist/tools/spec-export-handler.d.ts +5 -0
  538. package/dist/tools/spec-export-handler.d.ts.map +1 -0
  539. package/dist/tools/spec-export-handler.js +64 -0
  540. package/dist/tools/spec-export-handler.js.map +1 -0
  541. package/dist/tools/spec-lock-handler.d.ts +10 -0
  542. package/dist/tools/spec-lock-handler.d.ts.map +1 -0
  543. package/dist/tools/spec-lock-handler.js +163 -0
  544. package/dist/tools/spec-lock-handler.js.map +1 -0
  545. package/dist/tools/spec-split-handler.d.ts +4 -0
  546. package/dist/tools/spec-split-handler.d.ts.map +1 -0
  547. package/dist/tools/spec-split-handler.js +250 -0
  548. package/dist/tools/spec-split-handler.js.map +1 -0
  549. package/dist/tools/status-handler.d.ts.map +1 -1
  550. package/dist/tools/status-handler.js +40 -3
  551. package/dist/tools/status-handler.js.map +1 -1
  552. package/dist/tools/sync-ai-configs.d.ts +15 -0
  553. package/dist/tools/sync-ai-configs.d.ts.map +1 -0
  554. package/dist/tools/sync-ai-configs.js +86 -0
  555. package/dist/tools/sync-ai-configs.js.map +1 -0
  556. package/dist/tools/team-analytics-handler.d.ts +5 -0
  557. package/dist/tools/team-analytics-handler.d.ts.map +1 -0
  558. package/dist/tools/team-analytics-handler.js +67 -0
  559. package/dist/tools/team-analytics-handler.js.map +1 -0
  560. package/dist/tools/test-reverse-engineer-handler.d.ts +15 -0
  561. package/dist/tools/test-reverse-engineer-handler.d.ts.map +1 -0
  562. package/dist/tools/test-reverse-engineer-handler.js +94 -0
  563. package/dist/tools/test-reverse-engineer-handler.js.map +1 -0
  564. package/dist/tools/update-status/index.d.ts.map +1 -1
  565. package/dist/tools/update-status/index.js +135 -20
  566. package/dist/tools/update-status/index.js.map +1 -1
  567. package/dist/tools/update-status/response-builder.d.ts +1 -1
  568. package/dist/tools/update-status/response-builder.d.ts.map +1 -1
  569. package/dist/tools/update-status/response-builder.js +4 -1
  570. package/dist/tools/update-status/response-builder.js.map +1 -1
  571. package/dist/tools/update-status/side-effects.d.ts.map +1 -1
  572. package/dist/tools/update-status/side-effects.js +71 -0
  573. package/dist/tools/update-status/side-effects.js.map +1 -1
  574. package/dist/tools/update-status/transition-guard.d.ts +8 -0
  575. package/dist/tools/update-status/transition-guard.d.ts.map +1 -1
  576. package/dist/tools/update-status/transition-guard.js +23 -0
  577. package/dist/tools/update-status/transition-guard.js.map +1 -1
  578. package/dist/tools/update-status-actions.d.ts +1 -0
  579. package/dist/tools/update-status-actions.d.ts.map +1 -1
  580. package/dist/tools/update-status-actions.js +15 -1
  581. package/dist/tools/update-status-actions.js.map +1 -1
  582. package/dist/tools/velocity-handler.d.ts +4 -0
  583. package/dist/tools/velocity-handler.d.ts.map +1 -0
  584. package/dist/tools/velocity-handler.js +103 -0
  585. package/dist/tools/velocity-handler.js.map +1 -0
  586. package/dist/types/actuals.d.ts +100 -0
  587. package/dist/types/actuals.d.ts.map +1 -0
  588. package/dist/types/actuals.js +2 -0
  589. package/dist/types/actuals.js.map +1 -0
  590. package/dist/types/agent-frameworks.d.ts +62 -0
  591. package/dist/types/agent-frameworks.d.ts.map +1 -0
  592. package/dist/types/agent-frameworks.js +3 -0
  593. package/dist/types/agent-frameworks.js.map +1 -0
  594. package/dist/types/agents-md.d.ts +20 -0
  595. package/dist/types/agents-md.d.ts.map +1 -0
  596. package/dist/types/agents-md.js +3 -0
  597. package/dist/types/agents-md.js.map +1 -0
  598. package/dist/types/ai-integration.d.ts +65 -0
  599. package/dist/types/ai-integration.d.ts.map +1 -0
  600. package/dist/types/ai-integration.js +3 -0
  601. package/dist/types/ai-integration.js.map +1 -0
  602. package/dist/types/api-contract.d.ts +154 -0
  603. package/dist/types/api-contract.d.ts.map +1 -0
  604. package/dist/types/api-contract.js +3 -0
  605. package/dist/types/api-contract.js.map +1 -0
  606. package/dist/types/approval.d.ts +82 -0
  607. package/dist/types/approval.d.ts.map +1 -0
  608. package/dist/types/approval.js +3 -0
  609. package/dist/types/approval.js.map +1 -0
  610. package/dist/types/cline-integration.d.ts +30 -0
  611. package/dist/types/cline-integration.d.ts.map +1 -0
  612. package/dist/types/cline-integration.js +3 -0
  613. package/dist/types/cline-integration.js.map +1 -0
  614. package/dist/types/codex-integration.d.ts +55 -0
  615. package/dist/types/codex-integration.d.ts.map +1 -0
  616. package/dist/types/codex-integration.js +3 -0
  617. package/dist/types/codex-integration.js.map +1 -0
  618. package/dist/types/comments.d.ts +68 -0
  619. package/dist/types/comments.d.ts.map +1 -0
  620. package/dist/types/comments.js +3 -0
  621. package/dist/types/comments.js.map +1 -0
  622. package/dist/types/confluence.d.ts +102 -0
  623. package/dist/types/confluence.d.ts.map +1 -0
  624. package/dist/types/confluence.js +3 -0
  625. package/dist/types/confluence.js.map +1 -0
  626. package/dist/types/cross-repo-search.d.ts +104 -0
  627. package/dist/types/cross-repo-search.d.ts.map +1 -0
  628. package/dist/types/cross-repo-search.js +2 -0
  629. package/dist/types/cross-repo-search.js.map +1 -0
  630. package/dist/types/desktop-notification.d.ts +38 -0
  631. package/dist/types/desktop-notification.d.ts.map +1 -0
  632. package/dist/types/desktop-notification.js +3 -0
  633. package/dist/types/desktop-notification.js.map +1 -0
  634. package/dist/types/domain-criteria.d.ts +62 -0
  635. package/dist/types/domain-criteria.d.ts.map +1 -0
  636. package/dist/types/domain-criteria.js +3 -0
  637. package/dist/types/domain-criteria.js.map +1 -0
  638. package/dist/types/email-digest.d.ts +119 -0
  639. package/dist/types/email-digest.d.ts.map +1 -0
  640. package/dist/types/email-digest.js +3 -0
  641. package/dist/types/email-digest.js.map +1 -0
  642. package/dist/types/gemini-integration.d.ts +40 -0
  643. package/dist/types/gemini-integration.d.ts.map +1 -0
  644. package/dist/types/gemini-integration.js +3 -0
  645. package/dist/types/gemini-integration.js.map +1 -0
  646. package/dist/types/github-copilot-integration.d.ts +30 -0
  647. package/dist/types/github-copilot-integration.d.ts.map +1 -0
  648. package/dist/types/github-copilot-integration.js +3 -0
  649. package/dist/types/github-copilot-integration.js.map +1 -0
  650. package/dist/types/hooks-advanced.d.ts +34 -0
  651. package/dist/types/hooks-advanced.d.ts.map +1 -0
  652. package/dist/types/hooks-advanced.js +3 -0
  653. package/dist/types/hooks-advanced.js.map +1 -0
  654. package/dist/types/ide.d.ts +1 -1
  655. package/dist/types/ide.d.ts.map +1 -1
  656. package/dist/types/import-spec.d.ts +123 -0
  657. package/dist/types/import-spec.d.ts.map +1 -0
  658. package/dist/types/import-spec.js +3 -0
  659. package/dist/types/import-spec.js.map +1 -0
  660. package/dist/types/index.d.ts +29 -0
  661. package/dist/types/index.d.ts.map +1 -1
  662. package/dist/types/index.js +29 -0
  663. package/dist/types/index.js.map +1 -1
  664. package/dist/types/kiro-integration.d.ts +44 -0
  665. package/dist/types/kiro-integration.d.ts.map +1 -0
  666. package/dist/types/kiro-integration.js +3 -0
  667. package/dist/types/kiro-integration.js.map +1 -0
  668. package/dist/types/outbound-webhook.d.ts +51 -0
  669. package/dist/types/outbound-webhook.d.ts.map +1 -0
  670. package/dist/types/outbound-webhook.js +3 -0
  671. package/dist/types/outbound-webhook.js.map +1 -0
  672. package/dist/types/performance-analysis.d.ts +33 -0
  673. package/dist/types/performance-analysis.d.ts.map +1 -0
  674. package/dist/types/performance-analysis.js +3 -0
  675. package/dist/types/performance-analysis.js.map +1 -0
  676. package/dist/types/registry-publishers.d.ts +63 -0
  677. package/dist/types/registry-publishers.d.ts.map +1 -0
  678. package/dist/types/registry-publishers.js +4 -0
  679. package/dist/types/registry-publishers.js.map +1 -0
  680. package/dist/types/search.d.ts +49 -0
  681. package/dist/types/search.d.ts.map +1 -0
  682. package/dist/types/search.js +3 -0
  683. package/dist/types/search.js.map +1 -0
  684. package/dist/types/slack.d.ts +41 -0
  685. package/dist/types/slack.d.ts.map +1 -0
  686. package/dist/types/slack.js +3 -0
  687. package/dist/types/slack.js.map +1 -0
  688. package/dist/types/spec/inputs.d.ts +46 -2
  689. package/dist/types/spec/inputs.d.ts.map +1 -1
  690. package/dist/types/spec-export.d.ts +18 -0
  691. package/dist/types/spec-export.d.ts.map +1 -0
  692. package/dist/types/spec-export.js +3 -0
  693. package/dist/types/spec-export.js.map +1 -0
  694. package/dist/types/spec-lock.d.ts +42 -0
  695. package/dist/types/spec-lock.d.ts.map +1 -0
  696. package/dist/types/spec-lock.js +3 -0
  697. package/dist/types/spec-lock.js.map +1 -0
  698. package/dist/types/spec-versioning.d.ts +35 -0
  699. package/dist/types/spec-versioning.d.ts.map +1 -1
  700. package/dist/types/team-analytics.d.ts +52 -0
  701. package/dist/types/team-analytics.d.ts.map +1 -0
  702. package/dist/types/team-analytics.js +3 -0
  703. package/dist/types/team-analytics.js.map +1 -0
  704. package/dist/types/telemetry.d.ts +1 -1
  705. package/dist/types/telemetry.d.ts.map +1 -1
  706. package/dist/types/test-reverse-engineer.d.ts +32 -0
  707. package/dist/types/test-reverse-engineer.d.ts.map +1 -0
  708. package/dist/types/test-reverse-engineer.js +3 -0
  709. package/dist/types/test-reverse-engineer.js.map +1 -0
  710. package/dist/types/velocity.d.ts +147 -0
  711. package/dist/types/velocity.d.ts.map +1 -0
  712. package/dist/types/velocity.js +4 -0
  713. package/dist/types/velocity.js.map +1 -0
  714. package/package.json +1 -1
  715. package/src/config/domain-best-practices.json +413 -0
  716. package/src/config/ide-registry.json +25 -0
  717. package/src/config/license-plans.json +59 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-handler.js","sourceRoot":"","sources":["../../src/tools/search-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ToolResult, ConfigureSlackInput, SlackNotifyInput, SlackStatusInput, SlackRemoveInput } from '../types/index.js';
2
+ export declare function handleConfigureSlack(input: ConfigureSlackInput): Promise<ToolResult>;
3
+ export declare function handleSlackNotify(input: SlackNotifyInput): Promise<ToolResult>;
4
+ export declare function handleSlackStatus(input: SlackStatusInput): Promise<ToolResult>;
5
+ export declare function handleRemoveSlack(input: SlackRemoveInput): Promise<ToolResult>;
6
+ //# sourceMappingURL=slack-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-handler.d.ts","sourceRoot":"","sources":["../../src/tools/slack-handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,UAAU,EACV,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAGjB,MAAM,mBAAmB,CAAC;AAc3B,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC,CA4B1F;AAMD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAoDpF;AAMD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CA0CpF;AAMD,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwBpF"}
@@ -0,0 +1,162 @@
1
+ import { getSlackConfig, saveSlackConfig, removeSlackConfig, getDeliveryLog, appendDelivery, } from '../storage/slack-store.js';
2
+ import { buildManualPayload, dispatchToSlack } from '../engine/slack-dispatcher.js';
3
+ // ---------------------------------------------------------------------------
4
+ // configure_slack handler
5
+ // ---------------------------------------------------------------------------
6
+ export async function handleConfigureSlack(input) {
7
+ const now = new Date().toISOString();
8
+ const existing = await getSlackConfig(input.projectPath);
9
+ const config = {
10
+ webhookUrl: input.webhookUrl,
11
+ channel: input.channel,
12
+ projectPath: input.projectPath,
13
+ enabled: true,
14
+ createdAt: existing?.createdAt ?? now,
15
+ updatedAt: now,
16
+ };
17
+ await saveSlackConfig(input.projectPath, config);
18
+ const lines = [
19
+ 'Slack configured successfully.',
20
+ '',
21
+ '| Field | Value |',
22
+ '|-------|-------|',
23
+ `| Webhook | ${maskUrl(input.webhookUrl)} |`,
24
+ `| Channel | ${input.channel ?? '(default)'} |`,
25
+ `| Enabled | Yes |`,
26
+ `| Updated | ${now} |`,
27
+ ];
28
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // slack_notify handler
32
+ // ---------------------------------------------------------------------------
33
+ export async function handleSlackNotify(input) {
34
+ const config = await getSlackConfig(input.projectPath);
35
+ if (config?.enabled !== true) {
36
+ return {
37
+ content: [
38
+ {
39
+ type: 'text',
40
+ text: 'Error: Slack is not configured for this project. Run configure_slack first.',
41
+ },
42
+ ],
43
+ isError: true,
44
+ };
45
+ }
46
+ const payload = buildManualPayload(input.message, input.specId);
47
+ const delivery = {
48
+ id: `dlv-${Date.now()}`,
49
+ sentAt: new Date().toISOString(),
50
+ status: 'sent',
51
+ specId: input.specId,
52
+ eventType: 'manual',
53
+ };
54
+ try {
55
+ await dispatchToSlack(config.webhookUrl, payload);
56
+ }
57
+ catch (err) {
58
+ delivery.status = 'failed';
59
+ delivery.error = err instanceof Error ? err.message : String(err);
60
+ await appendDelivery(input.projectPath, delivery);
61
+ return {
62
+ content: [
63
+ {
64
+ type: 'text',
65
+ text: `Error sending Slack notification: ${delivery.error}`,
66
+ },
67
+ ],
68
+ isError: true,
69
+ };
70
+ }
71
+ await appendDelivery(input.projectPath, delivery);
72
+ return {
73
+ content: [
74
+ {
75
+ type: 'text',
76
+ text: `Slack notification sent successfully.${input.specId !== undefined ? ` [${input.specId}]` : ''}\n\n> ${input.message}`,
77
+ },
78
+ ],
79
+ };
80
+ }
81
+ // ---------------------------------------------------------------------------
82
+ // slack_status handler
83
+ // ---------------------------------------------------------------------------
84
+ export async function handleSlackStatus(input) {
85
+ const config = await getSlackConfig(input.projectPath);
86
+ if (config === null) {
87
+ return {
88
+ content: [
89
+ {
90
+ type: 'text',
91
+ text: 'Slack is not configured for this project. Run configure_slack to set up notifications.',
92
+ },
93
+ ],
94
+ };
95
+ }
96
+ const deliveries = await getDeliveryLog(input.projectPath);
97
+ const lines = [
98
+ '**Slack Configuration**',
99
+ '',
100
+ '| Field | Value |',
101
+ '|-------|-------|',
102
+ `| Webhook | ${maskUrl(config.webhookUrl)} |`,
103
+ `| Channel | ${config.channel ?? '(default)'} |`,
104
+ `| Enabled | ${config.enabled ? 'Yes' : 'No'} |`,
105
+ `| Created | ${config.createdAt} |`,
106
+ `| Updated | ${config.updatedAt} |`,
107
+ '',
108
+ `**Delivery Log** (last ${deliveries.length})`,
109
+ '',
110
+ ];
111
+ if (deliveries.length === 0) {
112
+ lines.push('No deliveries yet.');
113
+ }
114
+ else {
115
+ for (const d of deliveries) {
116
+ const spec = d.specId !== undefined ? ` [${d.specId}]` : '';
117
+ const err = d.error !== undefined ? ` — ${d.error}` : '';
118
+ lines.push(`- ${d.sentAt.slice(0, 19)} | ${d.status}${spec}${err}`);
119
+ }
120
+ }
121
+ return { content: [{ type: 'text', text: lines.join('\n') }] };
122
+ }
123
+ // ---------------------------------------------------------------------------
124
+ // remove_slack handler
125
+ // ---------------------------------------------------------------------------
126
+ export async function handleRemoveSlack(input) {
127
+ const config = await getSlackConfig(input.projectPath);
128
+ if (config === null) {
129
+ return {
130
+ content: [
131
+ {
132
+ type: 'text',
133
+ text: 'Slack is not configured for this project — nothing to remove.',
134
+ },
135
+ ],
136
+ };
137
+ }
138
+ await removeSlackConfig(input.projectPath);
139
+ return {
140
+ content: [
141
+ {
142
+ type: 'text',
143
+ text: 'Slack configuration removed. Notifications are disabled.',
144
+ },
145
+ ],
146
+ };
147
+ }
148
+ // ---------------------------------------------------------------------------
149
+ // Internal helpers
150
+ // ---------------------------------------------------------------------------
151
+ function maskUrl(url) {
152
+ try {
153
+ const parsed = new URL(url);
154
+ const path = parsed.pathname;
155
+ const masked = path.length > 8 ? `${path.slice(0, 4)}...${path.slice(-4)}` : '***';
156
+ return `${parsed.protocol}//${parsed.host}${masked}`;
157
+ }
158
+ catch {
159
+ return '***';
160
+ }
161
+ }
162
+ //# sourceMappingURL=slack-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slack-handler.js","sourceRoot":"","sources":["../../src/tools/slack-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { DiffSpecVersionsInput, SpecVersionHistoryInput, ToolResult } from '../types/index.js';
2
+ /** Handler for the diff_spec_versions tool. */
3
+ export declare function handleDiffSpecVersions(args: DiffSpecVersionsInput): Promise<ToolResult>;
4
+ /** Handler for the spec_version_history tool. */
5
+ export declare function handleSpecVersionHistory(args: SpecVersionHistoryInput): Promise<ToolResult>;
6
+ //# sourceMappingURL=spec-diff-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-diff-handler.d.ts","sourceRoot":"","sources":["../../src/tools/spec-diff-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,qBAAqB,EACrB,uBAAuB,EACvB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAQ3B,+CAA+C;AAC/C,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwD7F;AAED,iDAAiD;AACjD,wBAAsB,wBAAwB,CAC5C,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,UAAU,CAAC,CAkDrB"}
@@ -0,0 +1,94 @@
1
+ // tools/spec-diff-handler.ts — Handlers for diff_spec_versions and spec_history (SPEC-284)
2
+ import { projectDataDir } from '../storage/index.js';
3
+ import { computeSpecVersionDiff, formatDiffAsText, listSpecVersionHistory, } from '../engine/spec-differ.js';
4
+ /** Handler for the diff_spec_versions tool. */
5
+ export async function handleDiffSpecVersions(args) {
6
+ const dataDir = projectDataDir(args.projectId);
7
+ const format = args.format ?? 'text';
8
+ try {
9
+ const diff = await computeSpecVersionDiff({
10
+ dataDir,
11
+ specId: args.specId,
12
+ fromVersion: args.fromVersion,
13
+ toVersion: args.toVersion,
14
+ });
15
+ const summary = `${diff.criteriaChanges.added.length} criteria added, ` +
16
+ `${diff.criteriaChanges.removed.length} removed, ` +
17
+ `${diff.criteriaChanges.modified.length} modified`;
18
+ if (format === 'json') {
19
+ return {
20
+ content: [
21
+ {
22
+ type: 'text',
23
+ text: JSON.stringify({
24
+ specId: diff.specId,
25
+ fromTag: diff.fromTag,
26
+ toTag: diff.toTag,
27
+ summary,
28
+ linesAdded: diff.added.length,
29
+ linesRemoved: diff.removed.length,
30
+ criteriaChanges: diff.criteriaChanges,
31
+ sectionChanges: diff.sectionChanges,
32
+ }, null, 2),
33
+ },
34
+ ],
35
+ };
36
+ }
37
+ // text format (default)
38
+ const text = formatDiffAsText(diff);
39
+ return {
40
+ content: [
41
+ {
42
+ type: 'text',
43
+ text: `${text}\n\nSummary: ${summary}`,
44
+ },
45
+ ],
46
+ };
47
+ }
48
+ catch (error) {
49
+ const msg = error instanceof Error ? error.message : String(error);
50
+ return { content: [{ type: 'text', text: `Error: ${msg}` }], isError: true };
51
+ }
52
+ }
53
+ /** Handler for the spec_version_history tool. */
54
+ export async function handleSpecVersionHistory(args) {
55
+ const { projectId, specId, limit } = args;
56
+ const dataDir = projectDataDir(projectId);
57
+ try {
58
+ const summaries = await listSpecVersionHistory(dataDir, specId, limit ?? 20);
59
+ if (summaries.length === 0) {
60
+ return {
61
+ content: [
62
+ {
63
+ type: 'text',
64
+ text: JSON.stringify({
65
+ specId,
66
+ versions: [],
67
+ totalVersions: 0,
68
+ message: `No version snapshots found for spec "${specId}". ` +
69
+ `Create snapshots with version_spec first.`,
70
+ }, null, 2),
71
+ },
72
+ ],
73
+ };
74
+ }
75
+ return {
76
+ content: [
77
+ {
78
+ type: 'text',
79
+ text: JSON.stringify({
80
+ specId,
81
+ versions: summaries,
82
+ totalVersions: summaries.length,
83
+ message: `${summaries.length} version snapshot(s) found for spec "${specId}".`,
84
+ }, null, 2),
85
+ },
86
+ ],
87
+ };
88
+ }
89
+ catch (error) {
90
+ const msg = error instanceof Error ? error.message : String(error);
91
+ return { content: [{ type: 'text', text: `Error: ${msg}` }], isError: true };
92
+ }
93
+ }
94
+ //# sourceMappingURL=spec-diff-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-diff-handler.js","sourceRoot":"","sources":["../../src/tools/spec-diff-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { ToolResult } from '../types/index.js';
2
+ import type { ExportInput } from '../types/spec-export.js';
3
+ export declare function handleExportSpecsCsv(args: ExportInput): Promise<ToolResult>;
4
+ export declare function handleExportSpecsMarkdown(args: ExportInput): Promise<ToolResult>;
5
+ //# sourceMappingURL=spec-export-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-export-handler.d.ts","sourceRoot":"","sources":["../../src/tools/spec-export-handler.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,WAAW,EAAgB,MAAM,yBAAyB,CAAC;AAgDzE,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBjF;AAMD,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAuBtF"}
@@ -0,0 +1,64 @@
1
+ // tools/spec-export-handler.ts — Handlers for export_specs_csv and export_specs_markdown — SPEC-298
2
+ import { writeFile } from 'node:fs/promises';
3
+ import { listSpecs } from '../storage/spec-store.js';
4
+ import { hashProjectPath } from '../storage/base-store.js';
5
+ import { filterSpecs, specsToCsv, specsToMarkdownTable, ALL_COLUMNS, } from '../engine/spec-exporter.js';
6
+ import { formatSuccess, formatError, toolResult } from './response-helpers.js';
7
+ // ---------------------------------------------------------------------------
8
+ // Shared logic
9
+ // ---------------------------------------------------------------------------
10
+ async function buildExport(input, format) {
11
+ const projectId = hashProjectPath(input.projectPath);
12
+ const allSpecs = await listSpecs(projectId);
13
+ const filtered = filterSpecs(allSpecs, input);
14
+ const columns = input.columns && input.columns.length > 0 ? input.columns : ALL_COLUMNS;
15
+ const content = format === 'csv' ? specsToCsv(filtered, columns) : specsToMarkdownTable(filtered, columns);
16
+ let filePath;
17
+ if (input.outputPath) {
18
+ await writeFile(input.outputPath, content, 'utf8');
19
+ filePath = input.outputPath;
20
+ }
21
+ const result = {
22
+ rowCount: filtered.length,
23
+ columns,
24
+ format,
25
+ content,
26
+ filePath,
27
+ };
28
+ return { text: content, result };
29
+ }
30
+ // ---------------------------------------------------------------------------
31
+ // CSV handler
32
+ // ---------------------------------------------------------------------------
33
+ export async function handleExportSpecsCsv(args) {
34
+ if (!args.projectPath || args.projectPath.trim().length === 0) {
35
+ return toolResult(formatError('projectPath is required', 'Provide the absolute path to your project root.'), undefined, true);
36
+ }
37
+ const { text, result } = await buildExport(args, 'csv');
38
+ const summary = [
39
+ `Exported ${String(result.rowCount)} specs to CSV`,
40
+ `Columns: ${result.columns.join(', ')}`,
41
+ result.filePath ? `Saved to: ${result.filePath}` : 'No file written (outputPath not provided)',
42
+ '',
43
+ text,
44
+ ].join('\n');
45
+ return toolResult(formatSuccess('Spec Export — CSV', summary), result);
46
+ }
47
+ // ---------------------------------------------------------------------------
48
+ // Markdown handler
49
+ // ---------------------------------------------------------------------------
50
+ export async function handleExportSpecsMarkdown(args) {
51
+ if (!args.projectPath || args.projectPath.trim().length === 0) {
52
+ return toolResult(formatError('projectPath is required', 'Provide the absolute path to your project root.'), undefined, true);
53
+ }
54
+ const { text, result } = await buildExport(args, 'markdown');
55
+ const summary = [
56
+ `Exported ${String(result.rowCount)} specs to Markdown table`,
57
+ `Columns: ${result.columns.join(', ')}`,
58
+ result.filePath ? `Saved to: ${result.filePath}` : 'No file written (outputPath not provided)',
59
+ '',
60
+ text,
61
+ ].join('\n');
62
+ return toolResult(formatSuccess('Spec Export — Markdown', summary), result);
63
+ }
64
+ //# sourceMappingURL=spec-export-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-export-handler.js","sourceRoot":"","sources":["../../src/tools/spec-export-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { ToolResult, LockInput, UnlockInput, ListLocksInput, CheckLockInput } from '../types/index.js';
2
+ /** Acquire a lock on a spec. Fails if already locked by a different holder. */
3
+ export declare function handleLockSpec(input: LockInput): Promise<ToolResult>;
4
+ /** Release a lock on a spec. */
5
+ export declare function handleUnlockSpec(input: UnlockInput): Promise<ToolResult>;
6
+ /** List all active (non-expired) locks for a project. */
7
+ export declare function handleListLocks(input: ListLocksInput): Promise<ToolResult>;
8
+ /** Check whether a specific spec is currently locked. */
9
+ export declare function handleCheckSpecLock(input: CheckLockInput): Promise<ToolResult>;
10
+ //# sourceMappingURL=spec-lock-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-lock-handler.d.ts","sourceRoot":"","sources":["../../src/tools/spec-lock-handler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EACT,WAAW,EACX,cAAc,EACd,cAAc,EAEf,MAAM,mBAAmB,CAAC;AAkC3B,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAkD1E;AAED,gCAAgC;AAChC,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAsC9E;AAED,yDAAyD;AACzD,wBAAsB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CA8BhF;AAED,yDAAyD;AACzD,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAmCpF"}
@@ -0,0 +1,163 @@
1
+ // tools/spec-lock-handler.ts — Business logic for spec locking tools (SPEC-301)
2
+ import { getLock, saveLock, deleteLock, listActiveLocks, isExpired, } from '../storage/spec-lock-store.js';
3
+ // ---------------------------------------------------------------------------
4
+ // Constants
5
+ // ---------------------------------------------------------------------------
6
+ const MIN_TTL_MINUTES = 1;
7
+ const MAX_TTL_MINUTES = 480;
8
+ const DEFAULT_TTL_MINUTES = 30;
9
+ // ---------------------------------------------------------------------------
10
+ // Helpers
11
+ // ---------------------------------------------------------------------------
12
+ function clampTtl(ttlMinutes) {
13
+ const ttl = ttlMinutes ?? DEFAULT_TTL_MINUTES;
14
+ return Math.min(Math.max(ttl, MIN_TTL_MINUTES), MAX_TTL_MINUTES);
15
+ }
16
+ function buildExpiresAt(ttlMinutes) {
17
+ return new Date(Date.now() + ttlMinutes * 60 * 1000).toISOString();
18
+ }
19
+ // ---------------------------------------------------------------------------
20
+ // Handlers
21
+ // ---------------------------------------------------------------------------
22
+ /** Acquire a lock on a spec. Fails if already locked by a different holder. */
23
+ export async function handleLockSpec(input) {
24
+ const { projectPath, specId, lockHolder, reason } = input;
25
+ const ttlMinutes = clampTtl(input.ttlMinutes);
26
+ try {
27
+ const existing = await getLock(projectPath, specId);
28
+ if (existing !== null && !isExpired(existing) && existing.lockHolder !== lockHolder) {
29
+ return {
30
+ content: [
31
+ {
32
+ type: 'text',
33
+ text: `Spec ${specId} is already locked by "${existing.lockHolder}" ` +
34
+ `(expires ${existing.expiresAt}). ` +
35
+ `Use unlock_spec with force=true to override.`,
36
+ },
37
+ ],
38
+ isError: true,
39
+ };
40
+ }
41
+ const now = new Date().toISOString();
42
+ const lock = {
43
+ specId,
44
+ lockHolder,
45
+ lockedAt: now,
46
+ expiresAt: buildExpiresAt(ttlMinutes),
47
+ ...(reason !== undefined ? { reason } : {}),
48
+ };
49
+ await saveLock(projectPath, specId, lock);
50
+ return {
51
+ content: [
52
+ {
53
+ type: 'text',
54
+ text: `Spec ${specId} locked by "${lockHolder}" for ${String(ttlMinutes)} minutes ` +
55
+ `(expires ${lock.expiresAt}).`,
56
+ },
57
+ ],
58
+ };
59
+ }
60
+ catch (error) {
61
+ const message = error instanceof Error ? error.message : String(error);
62
+ return {
63
+ content: [{ type: 'text', text: `Failed to lock spec: ${message}` }],
64
+ isError: true,
65
+ };
66
+ }
67
+ }
68
+ /** Release a lock on a spec. */
69
+ export async function handleUnlockSpec(input) {
70
+ const { projectPath, specId, lockHolder, force = false } = input;
71
+ try {
72
+ const existing = await getLock(projectPath, specId);
73
+ if (existing === null || isExpired(existing)) {
74
+ return {
75
+ content: [{ type: 'text', text: `Spec ${specId} is not locked.` }],
76
+ };
77
+ }
78
+ if (existing.lockHolder !== lockHolder && !force) {
79
+ return {
80
+ content: [
81
+ {
82
+ type: 'text',
83
+ text: `Cannot unlock: spec ${specId} is held by "${existing.lockHolder}", ` +
84
+ `not "${lockHolder}". Use force=true to override.`,
85
+ },
86
+ ],
87
+ isError: true,
88
+ };
89
+ }
90
+ await deleteLock(projectPath, specId);
91
+ return {
92
+ content: [{ type: 'text', text: `Spec ${specId} unlocked successfully.` }],
93
+ };
94
+ }
95
+ catch (error) {
96
+ const message = error instanceof Error ? error.message : String(error);
97
+ return {
98
+ content: [{ type: 'text', text: `Failed to unlock spec: ${message}` }],
99
+ isError: true,
100
+ };
101
+ }
102
+ }
103
+ /** List all active (non-expired) locks for a project. */
104
+ export async function handleListLocks(input) {
105
+ const { projectPath } = input;
106
+ try {
107
+ const locks = await listActiveLocks(projectPath);
108
+ if (locks.length === 0) {
109
+ return {
110
+ content: [{ type: 'text', text: 'No active locks found.' }],
111
+ };
112
+ }
113
+ const rows = locks
114
+ .map((l) => `- ${l.specId}: locked by "${l.lockHolder}" until ${l.expiresAt}` +
115
+ (l.reason !== undefined ? ` (${l.reason})` : ''))
116
+ .join('\n');
117
+ return {
118
+ content: [{ type: 'text', text: `Active locks (${String(locks.length)}):\n${rows}` }],
119
+ };
120
+ }
121
+ catch (error) {
122
+ const message = error instanceof Error ? error.message : String(error);
123
+ return {
124
+ content: [{ type: 'text', text: `Failed to list locks: ${message}` }],
125
+ isError: true,
126
+ };
127
+ }
128
+ }
129
+ /** Check whether a specific spec is currently locked. */
130
+ export async function handleCheckSpecLock(input) {
131
+ const { projectPath, specId } = input;
132
+ try {
133
+ const lock = await getLock(projectPath, specId);
134
+ let result;
135
+ if (lock === null || isExpired(lock)) {
136
+ result = { locked: false };
137
+ }
138
+ else {
139
+ result = {
140
+ locked: true,
141
+ lockHolder: lock.lockHolder,
142
+ expiresAt: lock.expiresAt,
143
+ ...(lock.reason !== undefined ? { reason: lock.reason } : {}),
144
+ };
145
+ }
146
+ const text = result.locked
147
+ ? `Spec ${specId} is locked by "${result.lockHolder}" until ${result.expiresAt ?? ''}.` +
148
+ (result.reason !== undefined ? ` Reason: ${result.reason}` : '')
149
+ : `Spec ${specId} is not locked.`;
150
+ return {
151
+ content: [{ type: 'text', text }],
152
+ structuredContent: result,
153
+ };
154
+ }
155
+ catch (error) {
156
+ const message = error instanceof Error ? error.message : String(error);
157
+ return {
158
+ content: [{ type: 'text', text: `Failed to check lock: ${message}` }],
159
+ isError: true,
160
+ };
161
+ }
162
+ }
163
+ //# sourceMappingURL=spec-lock-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-lock-handler.js","sourceRoot":"","sources":["../../src/tools/spec-lock-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ToolResult, AnalyzeSpecSizeInput, SplitSpecInput } from '../types/index.js';
2
+ export declare function handleAnalyzeSpecSize(input: AnalyzeSpecSizeInput): Promise<ToolResult>;
3
+ export declare function handleSplitSpec(input: SplitSpecInput): Promise<ToolResult>;
4
+ //# sourceMappingURL=spec-split-handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec-split-handler.d.ts","sourceRoot":"","sources":["../../src/tools/spec-split-handler.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,UAAU,EACV,oBAAoB,EACpB,cAAc,EAGf,MAAM,mBAAmB,CAAC;AAM3B,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC,CAgF5F;AAMD,wBAAsB,eAAe,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC,CAiGhF"}