@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,62 @@
1
+ // tools/register-confluence-tools.ts — Registers Confluence Sync tools on the MCP server (SPEC-294)
2
+ import { z } from 'zod';
3
+ import { safeTracked } from './safe-handler.js';
4
+ import { handleConfigureConfluence, handleSyncToConfluence, handleConfluenceStatus, handleRemoveConfluence, } from './confluence-handler.js';
5
+ export function registerConfluenceTools(server) {
6
+ server.registerTool('configure_confluence', {
7
+ description: '[Pro] Configure Confluence integration for a project. Stores the connection settings (base URL, space key, parent page, and API credentials) so that specs can be synced to Confluence pages.',
8
+ inputSchema: {
9
+ projectPath: z
10
+ .string()
11
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
12
+ baseUrl: z
13
+ .string()
14
+ .describe('Base URL of the Confluence instance, e.g. https://mycompany.atlassian.net/wiki'),
15
+ spaceKey: z
16
+ .string()
17
+ .describe('Confluence space key where pages will be created, e.g. "ENG".'),
18
+ parentPageId: z
19
+ .string()
20
+ .describe('ID of the parent Confluence page under which spec pages will be nested.'),
21
+ apiToken: z
22
+ .string()
23
+ .describe('Atlassian API token for authentication (generate at id.atlassian.com).'),
24
+ email: z
25
+ .string()
26
+ .describe('Email address associated with the Atlassian account / API token.'),
27
+ },
28
+ annotations: { title: 'Configure Confluence', destructiveHint: false },
29
+ }, safeTracked('configure_confluence', async (args) => handleConfigureConfluence(args)));
30
+ server.registerTool('sync_to_confluence', {
31
+ description: '[Pro] Sync approved and done specs to Confluence pages. Creates new pages or updates existing ones. Optionally restrict to a single spec with specId.',
32
+ inputSchema: {
33
+ projectPath: z
34
+ .string()
35
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
36
+ specId: z
37
+ .string()
38
+ .optional()
39
+ .describe('Optional SPEC-XXX ID to sync a single spec (e.g. SPEC-042). Omit to sync all approved/done specs.'),
40
+ },
41
+ annotations: { title: 'Sync to Confluence', destructiveHint: false },
42
+ }, safeTracked('sync_to_confluence', async (args) => handleSyncToConfluence(args)));
43
+ server.registerTool('confluence_status', {
44
+ description: 'Show the current Confluence integration status: connection config, number of synced pages, and recent sync history.',
45
+ inputSchema: {
46
+ projectPath: z
47
+ .string()
48
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
49
+ },
50
+ annotations: { title: 'Confluence Status', readOnlyHint: true },
51
+ }, safeTracked('confluence_status', async (args) => handleConfluenceStatus(args)));
52
+ server.registerTool('remove_confluence', {
53
+ description: '[Pro] Remove the Confluence configuration for a project. Synced page records and logs are preserved but no further syncs will be possible until reconfigured.',
54
+ inputSchema: {
55
+ projectPath: z
56
+ .string()
57
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
58
+ },
59
+ annotations: { title: 'Remove Confluence Config', destructiveHint: true },
60
+ }, safeTracked('remove_confluence', async (args) => handleRemoveConfluence(args)));
61
+ }
62
+ //# sourceMappingURL=register-confluence-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-confluence-tools.js","sourceRoot":"","sources":["../../src/tools/register-confluence-tools.ts"],"names":[],"mappings":"AAAA,oGAAoG;AAGpG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAQjC,MAAM,UAAU,uBAAuB,CAAC,MAAiB;IACvD,MAAM,CAAC,YAAY,CACjB,sBAAsB,EACtB;QACE,WAAW,EACT,+LAA+L;QACjM,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,CACP,gFAAgF,CACjF;YACH,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,CAAC,yEAAyE,CAAC;YACtF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,CAAC,wEAAwE,CAAC;YACrF,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,CAAC,kEAAkE,CAAC;SAChF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,sBAAsB,EAAE,eAAe,EAAE,KAAK,EAAE;KACvE,EACD,WAAW,CAAC,sBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACjD,yBAAyB,CAAC,IAAgC,CAAC,CAC5D,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,oBAAoB,EACpB;QACE,WAAW,EACT,uJAAuJ;QACzJ,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;YAC9E,MAAM,EAAE,CAAC;iBACN,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,mGAAmG,CACpG;SACJ;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,KAAK,EAAE;KACrE,EACD,WAAW,CAAC,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC/C,sBAAsB,CAAC,IAA6B,CAAC,CACtD,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,qHAAqH;QACvH,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,IAAI,EAAE;KAChE,EACD,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9C,sBAAsB,CAAC,IAA6B,CAAC,CACtD,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,+JAA+J;QACjK,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,iEAAiE,CAAC;SAC/E;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,IAAI,EAAE;KAC1E,EACD,WAAW,CAAC,mBAAmB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC9C,sBAAsB,CAAC,IAA6B,CAAC,CACtD,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Registers four cross-repo search tools on the MCP server (SPEC-296).
4
+ * - register_project_path (free)
5
+ * - unregister_project_path (free)
6
+ * - list_registered_projects (free)
7
+ * - search_all_projects (pro)
8
+ */
9
+ export declare function registerCrossRepoSearchTools(server: McpServer): void;
10
+ //# sourceMappingURL=register-cross-repo-search-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cross-repo-search-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-cross-repo-search-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgGpE"}
@@ -0,0 +1,82 @@
1
+ // tools/register-cross-repo-search-tools.ts — SPEC-296: Register cross-repo search MCP tools.
2
+ import { z } from 'zod';
3
+ import { safe, safeLicensed } from './safe-handler.js';
4
+ import { handleRegisterProjectPath, handleUnregisterProjectPath, handleListRegisteredProjects, handleSearchAllProjects, } from './cross-repo-search-handler.js';
5
+ /**
6
+ * Registers four cross-repo search tools on the MCP server (SPEC-296).
7
+ * - register_project_path (free)
8
+ * - unregister_project_path (free)
9
+ * - list_registered_projects (free)
10
+ * - search_all_projects (pro)
11
+ */
12
+ export function registerCrossRepoSearchTools(server) {
13
+ // register_project_path — free
14
+ server.registerTool('register_project_path', {
15
+ description: 'Register an additional project path so its specs are included in cross-repo ' +
16
+ 'searches (search_all_projects). The path must be an absolute filesystem path ' +
17
+ 'pointing to a Planu-initialized project root.',
18
+ inputSchema: {
19
+ projectPath: z
20
+ .string()
21
+ .min(1)
22
+ .max(4096)
23
+ .describe('Absolute path to the project root to register'),
24
+ },
25
+ annotations: { title: 'Register Project Path' },
26
+ }, safe(async (args) => handleRegisterProjectPath(args)));
27
+ // unregister_project_path — free
28
+ server.registerTool('unregister_project_path', {
29
+ description: 'Remove a previously registered project path from the cross-repo registry. ' +
30
+ 'Its specs will no longer appear in search_all_projects results.',
31
+ inputSchema: {
32
+ projectPath: z
33
+ .string()
34
+ .min(1)
35
+ .max(4096)
36
+ .describe('Absolute path to the project root to unregister'),
37
+ },
38
+ annotations: { title: 'Unregister Project Path', destructiveHint: true },
39
+ }, safe(async (args) => handleUnregisterProjectPath(args)));
40
+ // list_registered_projects — free
41
+ server.registerTool('list_registered_projects', {
42
+ description: 'List all project paths registered for cross-repo search, along with spec ' +
43
+ 'counts and last-scan timestamps.',
44
+ inputSchema: {},
45
+ annotations: { title: 'List Registered Projects', readOnlyHint: true },
46
+ }, safe(async (args) => handleListRegisteredProjects(args)));
47
+ // search_all_projects — pro
48
+ server.registerTool('search_all_projects', {
49
+ description: 'Search specs across ALL registered project paths simultaneously. ' +
50
+ 'Returns merged, relevance-scored results from every registered project. ' +
51
+ 'Use register_project_path to add projects first.',
52
+ inputSchema: {
53
+ query: z
54
+ .string()
55
+ .max(10_000)
56
+ .optional()
57
+ .describe('Free-text search query matched against spec title and tags'),
58
+ status: z
59
+ .array(z.string())
60
+ .optional()
61
+ .describe('Filter by spec status values. Valid values: draft | review | approved | ' +
62
+ 'implementing | done | cancelled'),
63
+ tags: z
64
+ .array(z.string())
65
+ .optional()
66
+ .describe('Filter by tags — specs must have at least one matching tag'),
67
+ type: z
68
+ .array(z.string())
69
+ .optional()
70
+ .describe('Filter by spec type. Valid values: feature | bugfix | refactor | chore | ' +
71
+ 'spike | epic | task'),
72
+ limit: z
73
+ .number()
74
+ .min(1)
75
+ .max(500)
76
+ .default(50)
77
+ .describe('Maximum results to return across all projects (default 50)'),
78
+ },
79
+ annotations: { title: 'Search All Projects', readOnlyHint: true },
80
+ }, safeLicensed('search_all_projects', async (args) => handleSearchAllProjects(args)));
81
+ }
82
+ //# sourceMappingURL=register-cross-repo-search-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cross-repo-search-tools.js","sourceRoot":"","sources":["../../src/tools/register-cross-repo-search-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDesktopNotificationTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-desktop-notification-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-desktop-notification-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-desktop-notification-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAczE,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwExE"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ import { safe } from './safe-handler.js';
3
+ import { handleConfigureDesktopNotifications, handleDesktopNotificationStatus, handleTestNotification, } from './desktop-notification-handler.js';
4
+ export function registerDesktopNotificationTools(server) {
5
+ // configure_desktop_notifications
6
+ server.registerTool('configure_desktop_notifications', {
7
+ description: 'Configure OS-level desktop notifications for spec status changes in this project. ' +
8
+ 'When enabled, Planu fires a native notification (macOS, Linux, Windows) whenever a ' +
9
+ 'watched spec transitions to a monitored status. ' +
10
+ 'Filter by event type, specific spec IDs, or spec tags.',
11
+ inputSchema: {
12
+ projectPath: z.string().min(1).describe('Absolute path to the project root.'),
13
+ enabled: z.boolean().describe('Enable or disable desktop notifications.'),
14
+ events: z
15
+ .array(z
16
+ .enum(['status_change', 'done', 'blocked', 'approved'])
17
+ .describe('Event type. Valid values: status_change | done | blocked | approved'))
18
+ .optional()
19
+ .describe('Events to notify on. Valid values: status_change | done | blocked | approved. ' +
20
+ 'Defaults to all events when omitted.'),
21
+ watchTags: z
22
+ .array(z.string().min(1))
23
+ .optional()
24
+ .describe('Only notify for specs with these tags. Empty = notify for all specs.'),
25
+ watchSpecIds: z
26
+ .array(z.string().min(1))
27
+ .optional()
28
+ .describe('Only notify for these specific spec IDs. Empty = notify for all specs.'),
29
+ },
30
+ annotations: { title: 'Configure Desktop Notifications', readOnlyHint: false },
31
+ }, safe((args) => handleConfigureDesktopNotifications(args)));
32
+ // desktop_notification_status
33
+ server.registerTool('desktop_notification_status', {
34
+ description: 'Show the current desktop notification configuration and the last 10 fired notifications ' +
35
+ 'for this project.',
36
+ inputSchema: {
37
+ projectPath: z.string().min(1).describe('Absolute path to the project root.'),
38
+ },
39
+ annotations: { title: 'Desktop Notification Status', readOnlyHint: true },
40
+ }, safe((args) => handleDesktopNotificationStatus(args)));
41
+ // test_notification
42
+ server.registerTool('test_notification', {
43
+ description: 'Fire a test desktop notification to verify the OS notification system is working. ' +
44
+ 'Logs the test to the notification history.',
45
+ inputSchema: {
46
+ projectPath: z.string().min(1).describe('Absolute path to the project root.'),
47
+ message: z
48
+ .string()
49
+ .max(500)
50
+ .optional()
51
+ .describe('Custom message for the test notification (optional).'),
52
+ },
53
+ annotations: { title: 'Test Notification', readOnlyHint: false },
54
+ }, safe((args) => handleTestNotification(args)));
55
+ }
56
+ //# sourceMappingURL=register-desktop-notification-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-desktop-notification-tools.js","sourceRoot":"","sources":["../../src/tools/register-desktop-notification-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,mCAAmC,CAAC;AAO3C,MAAM,UAAU,gCAAgC,CAAC,MAAiB;IAChE,kCAAkC;IAClC,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,WAAW,EACT,oFAAoF;YACpF,qFAAqF;YACrF,kDAAkD;YAClD,wDAAwD;QAC1D,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC7E,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;YACzE,MAAM,EAAE,CAAC;iBACN,KAAK,CACJ,CAAC;iBACE,IAAI,CAAC,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;iBACtD,QAAQ,CAAC,qEAAqE,CAAC,CACnF;iBACA,QAAQ,EAAE;iBACV,QAAQ,CACP,gFAAgF;gBAC9E,sCAAsC,CACzC;YACH,SAAS,EAAE,CAAC;iBACT,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE;iBACV,QAAQ,CAAC,sEAAsE,CAAC;YACnF,YAAY,EAAE,CAAC;iBACZ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;SACtF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,YAAY,EAAE,KAAK,EAAE;KAC/E,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mCAAmC,CAAC,IAA0C,CAAC,CAAC,CAChG,CAAC;IAEF,8BAA8B;IAC9B,MAAM,CAAC,YAAY,CACjB,6BAA6B,EAC7B;QACE,WAAW,EACT,0FAA0F;YAC1F,mBAAmB;QACrB,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;IAEF,oBAAoB;IACpB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,oFAAoF;YACpF,4CAA4C;QAC9C,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC7E,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,sDAAsD,CAAC;SACpE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,YAAY,EAAE,KAAK,EAAE;KACjE,EACD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAA6B,CAAC,CAAC,CACtE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDomainCriteriaTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-domain-criteria-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-domain-criteria-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-domain-criteria-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuDnE"}
@@ -0,0 +1,46 @@
1
+ // tools/register-domain-criteria-tools.ts — Registers suggest_criteria and inject_criteria (SPEC-290)
2
+ import { z } from 'zod';
3
+ import { safeLicensed } from './safe-handler.js';
4
+ import { handleSuggestCriteria, handleInjectCriteria } from './domain-criteria-handler.js';
5
+ export function registerDomainCriteriaTools(server) {
6
+ // suggest_criteria — read-only, free tier
7
+ server.registerTool('suggest_criteria', {
8
+ description: 'Analyze a spec and suggest missing best-practice acceptance criteria based on the detected domain ' +
9
+ '(payments, authentication, file-upload, gdpr, etc.). ' +
10
+ 'Returns suggested criteria grouped by domain and flags critical gaps that penalize readiness score.',
11
+ annotations: { readOnlyHint: true },
12
+ inputSchema: {
13
+ projectId: z.string().max(500).describe('Project ID that owns the spec'),
14
+ specId: z.string().max(500).describe('Spec ID to analyze (e.g. SPEC-042)'),
15
+ projectHash: z
16
+ .string()
17
+ .max(500)
18
+ .optional()
19
+ .describe('Optional project hash for loading project-level best-practices overrides from ' +
20
+ 'data/projects/{hash}/config/domain-best-practices-overrides.json'),
21
+ },
22
+ }, safeLicensed('suggest_criteria', async (args) => handleSuggestCriteria(args)));
23
+ // inject_criteria — destructive (modifies spec file), pro tier
24
+ server.registerTool('inject_criteria', {
25
+ description: 'Inject missing domain best-practice criteria directly into a spec\'s "## Acceptance Criteria" section. ' +
26
+ 'Criteria are automatically detected from the spec domain. ' +
27
+ 'Use criteriaIds to inject only specific criteria; omit to inject all missing critical criteria.',
28
+ annotations: { destructiveHint: true },
29
+ inputSchema: {
30
+ projectId: z.string().max(500).describe('Project ID that owns the spec'),
31
+ specId: z.string().max(500).describe('Spec ID to inject criteria into (e.g. SPEC-042)'),
32
+ criteriaIds: z
33
+ .array(z.string().max(200))
34
+ .optional()
35
+ .describe('Optional list of specific criteria IDs to inject ' +
36
+ '(e.g. ["payments-idempotency-key", "payments-transaction-log"]). ' +
37
+ 'If omitted, all missing criteria for detected domains are injected.'),
38
+ projectHash: z
39
+ .string()
40
+ .max(500)
41
+ .optional()
42
+ .describe('Optional project hash for loading project-level best-practices overrides'),
43
+ },
44
+ }, safeLicensed('inject_criteria', async (args) => handleInjectCriteria(args)));
45
+ }
46
+ //# sourceMappingURL=register-domain-criteria-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-domain-criteria-tools.js","sourceRoot":"","sources":["../../src/tools/register-domain-criteria-tools.ts"],"names":[],"mappings":"AAAA,sGAAsG;AAGtG,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAE3F,MAAM,UAAU,2BAA2B,CAAC,MAAiB;IAC3D,0CAA0C;IAC1C,MAAM,CAAC,YAAY,CACjB,kBAAkB,EAClB;QACE,WAAW,EACT,oGAAoG;YACpG,uDAAuD;YACvD,qGAAqG;QACvG,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;QACnC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YAC1E,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,gFAAgF;gBAC9E,kEAAkE,CACrE;SACJ;KACF,EACD,YAAY,CAAC,kBAAkB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAC9E,CAAC;IAEF,+DAA+D;IAC/D,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,WAAW,EACT,yGAAyG;YACzG,4DAA4D;YAC5D,iGAAiG;QACnG,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE;QACtC,WAAW,EAAE;YACX,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC;YACxE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,iDAAiD,CAAC;YACvF,WAAW,EAAE,CAAC;iBACX,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC1B,QAAQ,EAAE;iBACV,QAAQ,CACP,mDAAmD;gBACjD,mEAAmE;gBACnE,qEAAqE,CACxE;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,GAAG,CAAC;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,0EAA0E,CAAC;SACxF;KACF,EACD,YAAY,CAAC,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAC5E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerEmailDigestTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-email-digest-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-email-digest-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-email-digest-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgBzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA8IhE"}
@@ -0,0 +1,109 @@
1
+ // tools/register-email-digest-tools.ts — Registers Email Digest tools on the MCP server (SPEC-293)
2
+ import { z } from 'zod';
3
+ import { safeTracked } from './safe-handler.js';
4
+ import { handleConfigureEmailDigest, handleGenerateDigest, handleSendDigest, handleEmailDigestStatus, } from './email-digest-handler.js';
5
+ export function registerEmailDigestTools(server) {
6
+ // -------------------------------------------------------------------------
7
+ // configure_email_digest (pro)
8
+ // -------------------------------------------------------------------------
9
+ server.registerTool('configure_email_digest', {
10
+ description: 'Configure email digest delivery for a project. ' +
11
+ 'Supports three providers: sendgrid (transactional email via API key), ' +
12
+ 'smtp (not yet implemented — use file or sendgrid), ' +
13
+ 'and file (saves HTML to data/projects/{hash}/digests/). ' +
14
+ 'Set frequency to daily or weekly to indicate intended schedule.',
15
+ inputSchema: {
16
+ projectPath: z
17
+ .string()
18
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
19
+ provider: z
20
+ .enum(['sendgrid', 'smtp', 'file'])
21
+ .describe("Delivery provider. Valid values: 'sendgrid' (requires apiKey), " +
22
+ "'smtp' (not implemented — use file or sendgrid), " +
23
+ "'file' (saves HTML to disk, no email sent)."),
24
+ frequency: z
25
+ .enum(['daily', 'weekly'])
26
+ .describe("How often digests should be sent. Valid values: 'daily' | 'weekly'. " +
27
+ 'This is stored as metadata — actual scheduling is handled externally.'),
28
+ recipients: z
29
+ .array(z.string())
30
+ .describe('List of recipient email addresses. Required for sendgrid/smtp providers.'),
31
+ credentials: z
32
+ .object({
33
+ apiKey: z.string().optional().describe('SendGrid API key (provider=sendgrid).'),
34
+ smtpHost: z.string().optional().describe('SMTP host (provider=smtp).'),
35
+ smtpPort: z.number().int().optional().describe('SMTP port (provider=smtp).'),
36
+ smtpUser: z.string().optional().describe('SMTP username (provider=smtp).'),
37
+ smtpPass: z.string().optional().describe('SMTP password (provider=smtp).'),
38
+ fromEmail: z
39
+ .string()
40
+ .optional()
41
+ .describe('Sender email address. Defaults to digest@planu.dev.'),
42
+ fromName: z
43
+ .string()
44
+ .optional()
45
+ .describe('Sender display name. Defaults to "Planu Digest".'),
46
+ })
47
+ .optional()
48
+ .describe('Provider credentials. Only the fields relevant to the chosen provider are used.'),
49
+ },
50
+ annotations: { title: 'Configure Email Digest', destructiveHint: false },
51
+ }, safeTracked('configure_email_digest', async (args) => handleConfigureEmailDigest(args)));
52
+ // -------------------------------------------------------------------------
53
+ // generate_digest (free)
54
+ // -------------------------------------------------------------------------
55
+ server.registerTool('generate_digest', {
56
+ description: 'Generate a digest of spec activity for a given period without sending it. ' +
57
+ 'Returns the full digest content (stats, spec lists, HTML, plain text) so you can ' +
58
+ 'preview the output before sending, or use the content in custom workflows.',
59
+ inputSchema: {
60
+ projectPath: z
61
+ .string()
62
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
63
+ days: z
64
+ .number()
65
+ .int()
66
+ .min(1)
67
+ .max(365)
68
+ .optional()
69
+ .describe('Number of days to look back when classifying specs as "completed in period". ' +
70
+ 'Defaults to 7 (one week).'),
71
+ },
72
+ annotations: { title: 'Generate Digest', readOnlyHint: true },
73
+ }, safeTracked('generate_digest', async (args) => handleGenerateDigest(args)));
74
+ // -------------------------------------------------------------------------
75
+ // send_digest (pro)
76
+ // -------------------------------------------------------------------------
77
+ server.registerTool('send_digest', {
78
+ description: 'Generate a digest and dispatch it using the configured provider. ' +
79
+ 'Requires configure_email_digest to have been called first. ' +
80
+ 'Records the delivery attempt in the delivery log.',
81
+ inputSchema: {
82
+ projectPath: z
83
+ .string()
84
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
85
+ days: z
86
+ .number()
87
+ .int()
88
+ .min(1)
89
+ .max(365)
90
+ .optional()
91
+ .describe('Number of days to look back when classifying specs as "completed in period". ' +
92
+ 'Defaults to 7 (one week).'),
93
+ },
94
+ annotations: { title: 'Send Digest', destructiveHint: false },
95
+ }, safeTracked('send_digest', async (args) => handleSendDigest(args)));
96
+ // -------------------------------------------------------------------------
97
+ // email_digest_status (free)
98
+ // -------------------------------------------------------------------------
99
+ server.registerTool('email_digest_status', {
100
+ description: 'Show the current email digest configuration and the last 10 delivery records for a project.',
101
+ inputSchema: {
102
+ projectPath: z
103
+ .string()
104
+ .describe('Absolute path to the project root (e.g. /home/user/my-project).'),
105
+ },
106
+ annotations: { title: 'Email Digest Status', readOnlyHint: true },
107
+ }, safeTracked('email_digest_status', async (args) => handleEmailDigestStatus(args)));
108
+ }
109
+ //# sourceMappingURL=register-email-digest-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-email-digest-tools.js","sourceRoot":"","sources":["../../src/tools/register-email-digest-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerEstimationAccuracyTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-estimation-accuracy-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-estimation-accuracy-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-estimation-accuracy-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,+BAA+B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+FvE"}
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import { safeLicensed } from './safe-handler.js';
3
+ import { handleRecordActual, handleEstimationAccuracyReport, handleCalibrateEstimates, } from './estimation-accuracy-handler.js';
4
+ export function registerEstimationAccuracyTools(server) {
5
+ server.registerTool('record_actual', {
6
+ description: 'Record the actual hours spent on a completed spec to track estimation accuracy. ' +
7
+ 'Use after marking a spec as done to close the feedback loop. ' +
8
+ 'Data is stored per-project and used by estimation_accuracy_report and calibrate_estimates.',
9
+ inputSchema: {
10
+ projectId: z.string().min(1).optional().describe('Project ID (hash of project path).'),
11
+ projectPath: z
12
+ .string()
13
+ .min(1)
14
+ .optional()
15
+ .describe('Absolute path to the project root (alternative to projectId).'),
16
+ specId: z.string().min(1).describe('Spec ID to record actuals for (e.g. "SPEC-287").'),
17
+ actualHours: z
18
+ .number()
19
+ .min(0)
20
+ .describe('Total hours actually spent implementing this spec (dev + review combined).'),
21
+ notes: z
22
+ .string()
23
+ .max(1000)
24
+ .optional()
25
+ .describe('Optional notes explaining the deviation (e.g. "scope crept", "faster than expected").'),
26
+ },
27
+ annotations: { readOnlyHint: false },
28
+ }, safeLicensed('record_actual', async (args) => handleRecordActual(args)));
29
+ server.registerTool('estimation_accuracy_report', {
30
+ description: 'Generate a historical estimation accuracy report for the project. ' +
31
+ 'Shows per-spec deviation (estimated vs actual), aggregate stats, outliers, and trend over time. ' +
32
+ 'Breakdown by scope (trivial/feature/cross-module/architectural) and spec type.',
33
+ inputSchema: {
34
+ projectId: z.string().min(1).optional().describe('Project ID.'),
35
+ projectPath: z.string().min(1).optional().describe('Absolute path to the project root.'),
36
+ scope: z
37
+ .enum(['trivial', 'feature', 'cross-module', 'architectural'])
38
+ .optional()
39
+ .describe('Filter report to a specific scope. Valid values: trivial | feature | cross-module | architectural'),
40
+ type: z
41
+ .enum(['feature', 'refactor', 'bugfix', 'infra', 'docs', 'project', 'agent', 'tech-debt'])
42
+ .optional()
43
+ .describe('Filter report to a specific spec type. Valid values: feature | refactor | bugfix | infra | docs | project | agent | tech-debt'),
44
+ limit: z
45
+ .number()
46
+ .int()
47
+ .min(1)
48
+ .optional()
49
+ .describe('Maximum number of spec records to include (default: all records).'),
50
+ },
51
+ annotations: { readOnlyHint: true },
52
+ }, safeLicensed('estimation_accuracy_report', async (args) => handleEstimationAccuracyReport(args)));
53
+ server.registerTool('calibrate_estimates', {
54
+ description: 'Recalculate estimation calibration factors based on accumulated historical actuals. ' +
55
+ 'When historical data shows systematic over/underestimation (>20% avg deviation), ' +
56
+ 'saves multipliers that the estimate tool uses to adjust future estimates automatically. ' +
57
+ 'Overwrites previous calibration. Requires at least minSamples records per dimension.',
58
+ inputSchema: {
59
+ projectId: z.string().min(1).optional().describe('Project ID.'),
60
+ projectPath: z.string().min(1).optional().describe('Absolute path to the project root.'),
61
+ minSamples: z
62
+ .number()
63
+ .int()
64
+ .min(1)
65
+ .optional()
66
+ .describe('Minimum number of actuals per scope/type before a calibration factor is applied (default: 3).'),
67
+ },
68
+ annotations: { readOnlyHint: false, destructiveHint: true },
69
+ }, safeLicensed('calibrate_estimates', async (args) => handleCalibrateEstimates(args)));
70
+ }
71
+ //# sourceMappingURL=register-estimation-accuracy-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-estimation-accuracy-tools.js","sourceRoot":"","sources":["../../src/tools/register-estimation-accuracy-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerImportTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-import-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-import-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-import-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAwE3D"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { safeTracked } from './safe-handler.js';
3
+ import { handleImportSpec, handleBulkImport } from './import-spec-handler.js';
4
+ const ImportSourceEnum = z
5
+ .enum(['markdown', 'jira', 'linear', 'csv'])
6
+ .describe('Source format: markdown | jira | linear | csv');
7
+ export function registerImportTools(server) {
8
+ // import_spec
9
+ server.registerTool('import_spec', {
10
+ description: 'Import a spec from an external source (Jira, Linear, Markdown, or CSV) into Planu. ' +
11
+ 'Creates a new spec with the imported content. ' +
12
+ 'Use bulk_import to import multiple specs at once.',
13
+ inputSchema: {
14
+ source: ImportSourceEnum,
15
+ filePath: z
16
+ .string()
17
+ .max(4096)
18
+ .optional()
19
+ .describe('Absolute path to the source file. Required if content is not provided.'),
20
+ content: z
21
+ .string()
22
+ .max(100_000)
23
+ .optional()
24
+ .describe('Inline content string. For jira/linear: JSON string of the issue. For markdown: markdown text. For csv: CSV text.'),
25
+ projectPath: z
26
+ .string()
27
+ .max(4096)
28
+ .describe('Absolute path to the target project root'),
29
+ overwrite: z
30
+ .boolean()
31
+ .optional()
32
+ .describe('Overwrite an existing spec with the same title (default: false). When false, a warning is returned instead of creating a duplicate.'),
33
+ },
34
+ }, safeTracked('import_spec', async (args) => handleImportSpec(args)));
35
+ // bulk_import
36
+ server.registerTool('bulk_import', {
37
+ description: 'Bulk import multiple specs from a CSV file or a JSON array of Jira/Linear issues. ' +
38
+ 'Each row in CSV or each item in the JSON array becomes one spec. ' +
39
+ 'Returns a summary with total, succeeded, failed counts and per-spec results.',
40
+ inputSchema: {
41
+ source: ImportSourceEnum,
42
+ filePath: z
43
+ .string()
44
+ .max(4096)
45
+ .optional()
46
+ .describe('Absolute path to the source file (CSV or JSON array file).'),
47
+ content: z
48
+ .string()
49
+ .max(500_000)
50
+ .optional()
51
+ .describe('Inline content string. For csv: CSV with header row. For jira/linear: JSON array of issues.'),
52
+ projectPath: z
53
+ .string()
54
+ .max(4096)
55
+ .describe('Absolute path to the target project root'),
56
+ overwrite: z
57
+ .boolean()
58
+ .optional()
59
+ .describe('Overwrite existing specs with same title (default: false).'),
60
+ },
61
+ }, safeTracked('bulk_import', async (args) => handleBulkImport(args)));
62
+ }
63
+ //# sourceMappingURL=register-import-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-import-tools.js","sourceRoot":"","sources":["../../src/tools/register-import-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE9E,MAAM,gBAAgB,GAAG,CAAC;KACvB,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KAC3C,QAAQ,CAAC,+CAA+C,CAAC,CAAC;AAE7D,MAAM,UAAU,mBAAmB,CAAC,MAAiB;IACnD,cAAc;IACd,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,qFAAqF;YACrF,gDAAgD;YAChD,mDAAmD;QACrD,WAAW,EAAE;YACX,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,wEAAwE,CAAC;YACrF,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,OAAO,CAAC;iBACZ,QAAQ,EAAE;iBACV,QAAQ,CACP,mHAAmH,CACpH;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,0CAA0C,CAAC;YACvD,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CACP,qIAAqI,CACtI;SACJ;KACF,EACD,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACnE,CAAC;IAEF,cAAc;IACd,MAAM,CAAC,YAAY,CACjB,aAAa,EACb;QACE,WAAW,EACT,oFAAoF;YACpF,mEAAmE;YACnE,8EAA8E;QAChF,WAAW,EAAE;YACX,MAAM,EAAE,gBAAgB;YACxB,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACzE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,GAAG,CAAC,OAAO,CAAC;iBACZ,QAAQ,EAAE;iBACV,QAAQ,CACP,6FAA6F,CAC9F;YACH,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,GAAG,CAAC,IAAI,CAAC;iBACT,QAAQ,CAAC,0CAA0C,CAAC;YACvD,SAAS,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;SAC1E;KACF,EACD,WAAW,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerOutboundWebhookTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-outbound-webhook-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-outbound-webhook-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-outbound-webhook-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsFpE"}