@planu/cli 0.90.2 → 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 (913) 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 +61 -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/batch-script-generator/index.d.ts +6 -0
  173. package/dist/engine/batch-script-generator/index.d.ts.map +1 -0
  174. package/dist/engine/batch-script-generator/index.js +126 -0
  175. package/dist/engine/batch-script-generator/index.js.map +1 -0
  176. package/dist/engine/best-practices-library.d.ts +31 -0
  177. package/dist/engine/best-practices-library.d.ts.map +1 -0
  178. package/dist/engine/best-practices-library.js +111 -0
  179. package/dist/engine/best-practices-library.js.map +1 -0
  180. package/dist/engine/ci-generator/index.d.ts.map +1 -1
  181. package/dist/engine/ci-generator/index.js +32 -1
  182. package/dist/engine/ci-generator/index.js.map +1 -1
  183. package/dist/engine/ci-generator/output-formats.d.ts +15 -0
  184. package/dist/engine/ci-generator/output-formats.d.ts.map +1 -0
  185. package/dist/engine/ci-generator/output-formats.js +52 -0
  186. package/dist/engine/ci-generator/output-formats.js.map +1 -0
  187. package/dist/engine/claude-config-auditor/claudemd-auditor.d.ts.map +1 -1
  188. package/dist/engine/claude-config-auditor/claudemd-auditor.js +139 -31
  189. package/dist/engine/claude-config-auditor/claudemd-auditor.js.map +1 -1
  190. package/dist/engine/claude-config-auditor/rules-auditor.d.ts.map +1 -1
  191. package/dist/engine/claude-config-auditor/rules-auditor.js +87 -49
  192. package/dist/engine/claude-config-auditor/rules-auditor.js.map +1 -1
  193. package/dist/engine/claude-config-auditor/scoring.d.ts.map +1 -1
  194. package/dist/engine/claude-config-auditor/scoring.js +37 -1
  195. package/dist/engine/claude-config-auditor/scoring.js.map +1 -1
  196. package/dist/engine/claude-config-auditor/settings-auditor.d.ts.map +1 -1
  197. package/dist/engine/claude-config-auditor/settings-auditor.js +55 -40
  198. package/dist/engine/claude-config-auditor/settings-auditor.js.map +1 -1
  199. package/dist/engine/config-schemas.d.ts.map +1 -1
  200. package/dist/engine/config-schemas.js +1 -0
  201. package/dist/engine/config-schemas.js.map +1 -1
  202. package/dist/engine/confluence-exporter.d.ts +27 -0
  203. package/dist/engine/confluence-exporter.d.ts.map +1 -0
  204. package/dist/engine/confluence-exporter.js +238 -0
  205. package/dist/engine/confluence-exporter.js.map +1 -0
  206. package/dist/engine/context-advisor/btw-advisor.d.ts +11 -0
  207. package/dist/engine/context-advisor/btw-advisor.d.ts.map +1 -0
  208. package/dist/engine/context-advisor/btw-advisor.js +29 -0
  209. package/dist/engine/context-advisor/btw-advisor.js.map +1 -0
  210. package/dist/engine/cross-repo-searcher.d.ts +13 -0
  211. package/dist/engine/cross-repo-searcher.d.ts.map +1 -0
  212. package/dist/engine/cross-repo-searcher.js +51 -0
  213. package/dist/engine/cross-repo-searcher.js.map +1 -0
  214. package/dist/engine/desktop-notifier.d.ts +16 -0
  215. package/dist/engine/desktop-notifier.d.ts.map +1 -0
  216. package/dist/engine/desktop-notifier.js +64 -0
  217. package/dist/engine/desktop-notifier.js.map +1 -0
  218. package/dist/engine/domain-detector.d.ts +12 -0
  219. package/dist/engine/domain-detector.d.ts.map +1 -0
  220. package/dist/engine/domain-detector.js +286 -0
  221. package/dist/engine/domain-detector.js.map +1 -0
  222. package/dist/engine/email-digest-generator.d.ts +8 -0
  223. package/dist/engine/email-digest-generator.d.ts.map +1 -0
  224. package/dist/engine/email-digest-generator.js +192 -0
  225. package/dist/engine/email-digest-generator.js.map +1 -0
  226. package/dist/engine/email-sender.d.ts +22 -0
  227. package/dist/engine/email-sender.d.ts.map +1 -0
  228. package/dist/engine/email-sender.js +78 -0
  229. package/dist/engine/email-sender.js.map +1 -0
  230. package/dist/engine/estimation-calibrator.d.ts +19 -0
  231. package/dist/engine/estimation-calibrator.d.ts.map +1 -0
  232. package/dist/engine/estimation-calibrator.js +176 -0
  233. package/dist/engine/estimation-calibrator.js.map +1 -0
  234. package/dist/engine/facilitate/context-loader.d.ts +12 -0
  235. package/dist/engine/facilitate/context-loader.d.ts.map +1 -0
  236. package/dist/engine/facilitate/context-loader.js +156 -0
  237. package/dist/engine/facilitate/context-loader.js.map +1 -0
  238. package/dist/engine/facilitate/intent-classifier.d.ts +6 -0
  239. package/dist/engine/facilitate/intent-classifier.d.ts.map +1 -0
  240. package/dist/engine/facilitate/intent-classifier.js +153 -0
  241. package/dist/engine/facilitate/intent-classifier.js.map +1 -0
  242. package/dist/engine/facilitate/plan-parser.d.ts +7 -0
  243. package/dist/engine/facilitate/plan-parser.d.ts.map +1 -0
  244. package/dist/engine/facilitate/plan-parser.js +115 -0
  245. package/dist/engine/facilitate/plan-parser.js.map +1 -0
  246. package/dist/engine/facilitate/router.d.ts +6 -0
  247. package/dist/engine/facilitate/router.d.ts.map +1 -0
  248. package/dist/engine/facilitate/router.js +71 -0
  249. package/dist/engine/facilitate/router.js.map +1 -0
  250. package/dist/engine/hooks/context-injector.d.ts +11 -0
  251. package/dist/engine/hooks/context-injector.d.ts.map +1 -0
  252. package/dist/engine/hooks/context-injector.js +163 -0
  253. package/dist/engine/hooks/context-injector.js.map +1 -0
  254. package/dist/engine/hooks/custom-commands-generator.d.ts +11 -0
  255. package/dist/engine/hooks/custom-commands-generator.d.ts.map +1 -0
  256. package/dist/engine/hooks/custom-commands-generator.js +88 -0
  257. package/dist/engine/hooks/custom-commands-generator.js.map +1 -0
  258. package/dist/engine/hooks/effort-configurator.d.ts +13 -0
  259. package/dist/engine/hooks/effort-configurator.d.ts.map +1 -0
  260. package/dist/engine/hooks/effort-configurator.js +54 -0
  261. package/dist/engine/hooks/effort-configurator.js.map +1 -0
  262. package/dist/engine/hooks/full-spectrum-generator.d.ts +31 -0
  263. package/dist/engine/hooks/full-spectrum-generator.d.ts.map +1 -0
  264. package/dist/engine/hooks/full-spectrum-generator.js +115 -0
  265. package/dist/engine/hooks/full-spectrum-generator.js.map +1 -0
  266. package/dist/engine/hooks/hook-templates.d.ts +16 -0
  267. package/dist/engine/hooks/hook-templates.d.ts.map +1 -0
  268. package/dist/engine/hooks/hook-templates.js +148 -0
  269. package/dist/engine/hooks/hook-templates.js.map +1 -0
  270. package/dist/engine/hooks/plan-mode-detector.d.ts +27 -0
  271. package/dist/engine/hooks/plan-mode-detector.d.ts.map +1 -0
  272. package/dist/engine/hooks/plan-mode-detector.js +68 -0
  273. package/dist/engine/hooks/plan-mode-detector.js.map +1 -0
  274. package/dist/engine/hooks/plan-mode-scripts.d.ts +10 -0
  275. package/dist/engine/hooks/plan-mode-scripts.d.ts.map +1 -0
  276. package/dist/engine/hooks/plan-mode-scripts.js +45 -0
  277. package/dist/engine/hooks/plan-mode-scripts.js.map +1 -0
  278. package/dist/engine/hooks/profile-generator.d.ts +21 -0
  279. package/dist/engine/hooks/profile-generator.d.ts.map +1 -0
  280. package/dist/engine/hooks/profile-generator.js +90 -0
  281. package/dist/engine/hooks/profile-generator.js.map +1 -0
  282. package/dist/engine/ide-config/generators.d.ts.map +1 -1
  283. package/dist/engine/ide-config/generators.js +28 -1
  284. package/dist/engine/ide-config/generators.js.map +1 -1
  285. package/dist/engine/importers/csv-importer.d.ts +9 -0
  286. package/dist/engine/importers/csv-importer.d.ts.map +1 -0
  287. package/dist/engine/importers/csv-importer.js +116 -0
  288. package/dist/engine/importers/csv-importer.js.map +1 -0
  289. package/dist/engine/importers/jira-importer.d.ts +7 -0
  290. package/dist/engine/importers/jira-importer.d.ts.map +1 -0
  291. package/dist/engine/importers/jira-importer.js +57 -0
  292. package/dist/engine/importers/jira-importer.js.map +1 -0
  293. package/dist/engine/importers/linear-importer.d.ts +6 -0
  294. package/dist/engine/importers/linear-importer.d.ts.map +1 -0
  295. package/dist/engine/importers/linear-importer.js +59 -0
  296. package/dist/engine/importers/linear-importer.js.map +1 -0
  297. package/dist/engine/importers/markdown-importer.d.ts +7 -0
  298. package/dist/engine/importers/markdown-importer.d.ts.map +1 -0
  299. package/dist/engine/importers/markdown-importer.js +74 -0
  300. package/dist/engine/importers/markdown-importer.js.map +1 -0
  301. package/dist/engine/model-router/complexity-analyzer.d.ts +9 -1
  302. package/dist/engine/model-router/complexity-analyzer.d.ts.map +1 -1
  303. package/dist/engine/model-router/complexity-analyzer.js +44 -1
  304. package/dist/engine/model-router/complexity-analyzer.js.map +1 -1
  305. package/dist/engine/model-router/rules-engine.d.ts.map +1 -1
  306. package/dist/engine/model-router/rules-engine.js +14 -1
  307. package/dist/engine/model-router/rules-engine.js.map +1 -1
  308. package/dist/engine/nfr-profile-detector.d.ts.map +1 -1
  309. package/dist/engine/nfr-profile-detector.js +2 -1
  310. package/dist/engine/nfr-profile-detector.js.map +1 -1
  311. package/dist/engine/outbound-webhook-dispatcher.d.ts +4 -0
  312. package/dist/engine/outbound-webhook-dispatcher.d.ts.map +1 -0
  313. package/dist/engine/outbound-webhook-dispatcher.js +94 -0
  314. package/dist/engine/outbound-webhook-dispatcher.js.map +1 -0
  315. package/dist/engine/performance-analyzer.d.ts +18 -0
  316. package/dist/engine/performance-analyzer.d.ts.map +1 -0
  317. package/dist/engine/performance-analyzer.js +152 -0
  318. package/dist/engine/performance-analyzer.js.map +1 -0
  319. package/dist/engine/registry/composio-publisher.d.ts +17 -0
  320. package/dist/engine/registry/composio-publisher.d.ts.map +1 -0
  321. package/dist/engine/registry/composio-publisher.js +51 -0
  322. package/dist/engine/registry/composio-publisher.js.map +1 -0
  323. package/dist/engine/registry/glama-publisher.d.ts +17 -0
  324. package/dist/engine/registry/glama-publisher.d.ts.map +1 -0
  325. package/dist/engine/registry/glama-publisher.js +43 -0
  326. package/dist/engine/registry/glama-publisher.js.map +1 -0
  327. package/dist/engine/registry/index.d.ts +4 -0
  328. package/dist/engine/registry/index.d.ts.map +1 -1
  329. package/dist/engine/registry/index.js +5 -0
  330. package/dist/engine/registry/index.js.map +1 -1
  331. package/dist/engine/registry/mcp-official-publisher.d.ts +16 -0
  332. package/dist/engine/registry/mcp-official-publisher.d.ts.map +1 -0
  333. package/dist/engine/registry/mcp-official-publisher.js +44 -0
  334. package/dist/engine/registry/mcp-official-publisher.js.map +1 -0
  335. package/dist/engine/registry/smithery-generator.d.ts +16 -0
  336. package/dist/engine/registry/smithery-generator.d.ts.map +1 -0
  337. package/dist/engine/registry/smithery-generator.js +71 -0
  338. package/dist/engine/registry/smithery-generator.js.map +1 -0
  339. package/dist/engine/reverse-engineer/test-file-parser.d.ts +26 -0
  340. package/dist/engine/reverse-engineer/test-file-parser.d.ts.map +1 -0
  341. package/dist/engine/reverse-engineer/test-file-parser.js +165 -0
  342. package/dist/engine/reverse-engineer/test-file-parser.js.map +1 -0
  343. package/dist/engine/slack-dispatcher.d.ts +15 -0
  344. package/dist/engine/slack-dispatcher.d.ts.map +1 -0
  345. package/dist/engine/slack-dispatcher.js +73 -0
  346. package/dist/engine/slack-dispatcher.js.map +1 -0
  347. package/dist/engine/spec-coverage/core.js.map +1 -1
  348. package/dist/engine/spec-differ.d.ts +15 -0
  349. package/dist/engine/spec-differ.d.ts.map +1 -0
  350. package/dist/engine/spec-differ.js +115 -0
  351. package/dist/engine/spec-differ.js.map +1 -0
  352. package/dist/engine/spec-exporter.d.ts +27 -0
  353. package/dist/engine/spec-exporter.d.ts.map +1 -0
  354. package/dist/engine/spec-exporter.js +122 -0
  355. package/dist/engine/spec-exporter.js.map +1 -0
  356. package/dist/engine/spec-searcher.d.ts +31 -0
  357. package/dist/engine/spec-searcher.d.ts.map +1 -0
  358. package/dist/engine/spec-searcher.js +240 -0
  359. package/dist/engine/spec-searcher.js.map +1 -0
  360. package/dist/engine/spec-splitter.d.ts +11 -1
  361. package/dist/engine/spec-splitter.d.ts.map +1 -1
  362. package/dist/engine/spec-splitter.js +178 -0
  363. package/dist/engine/spec-splitter.js.map +1 -1
  364. package/dist/engine/team-analytics-calculator.d.ts +14 -0
  365. package/dist/engine/team-analytics-calculator.d.ts.map +1 -0
  366. package/dist/engine/team-analytics-calculator.js +114 -0
  367. package/dist/engine/team-analytics-calculator.js.map +1 -0
  368. package/dist/engine/team-planner/writer-reviewer.d.ts +12 -0
  369. package/dist/engine/team-planner/writer-reviewer.d.ts.map +1 -0
  370. package/dist/engine/team-planner/writer-reviewer.js +48 -0
  371. package/dist/engine/team-planner/writer-reviewer.js.map +1 -0
  372. package/dist/engine/telemetry/error-reporter.d.ts +16 -0
  373. package/dist/engine/telemetry/error-reporter.d.ts.map +1 -0
  374. package/dist/engine/telemetry/error-reporter.js +46 -0
  375. package/dist/engine/telemetry/error-reporter.js.map +1 -0
  376. package/dist/engine/tool-groups/group-manager.js.map +1 -1
  377. package/dist/engine/velocity-calculator.d.ts +44 -0
  378. package/dist/engine/velocity-calculator.d.ts.map +1 -0
  379. package/dist/engine/velocity-calculator.js +425 -0
  380. package/dist/engine/velocity-calculator.js.map +1 -0
  381. package/dist/index.js +55 -3
  382. package/dist/index.js.map +1 -1
  383. package/dist/storage/actuals-store.d.ts +8 -0
  384. package/dist/storage/actuals-store.d.ts.map +1 -0
  385. package/dist/storage/actuals-store.js +57 -0
  386. package/dist/storage/actuals-store.js.map +1 -0
  387. package/dist/storage/approval-store.d.ts +12 -0
  388. package/dist/storage/approval-store.d.ts.map +1 -0
  389. package/dist/storage/approval-store.js +46 -0
  390. package/dist/storage/approval-store.js.map +1 -0
  391. package/dist/storage/comments-store.d.ts +38 -0
  392. package/dist/storage/comments-store.d.ts.map +1 -0
  393. package/dist/storage/comments-store.js +167 -0
  394. package/dist/storage/comments-store.js.map +1 -0
  395. package/dist/storage/confluence-store.d.ts +35 -0
  396. package/dist/storage/confluence-store.d.ts.map +1 -0
  397. package/dist/storage/confluence-store.js +85 -0
  398. package/dist/storage/confluence-store.js.map +1 -0
  399. package/dist/storage/desktop-notification-store.d.ts +19 -0
  400. package/dist/storage/desktop-notification-store.d.ts.map +1 -0
  401. package/dist/storage/desktop-notification-store.js +44 -0
  402. package/dist/storage/desktop-notification-store.js.map +1 -0
  403. package/dist/storage/drift-cache-store.js.map +1 -1
  404. package/dist/storage/email-digest-store.d.ts +19 -0
  405. package/dist/storage/email-digest-store.d.ts.map +1 -0
  406. package/dist/storage/email-digest-store.js +51 -0
  407. package/dist/storage/email-digest-store.js.map +1 -0
  408. package/dist/storage/error-telemetry-store.js.map +1 -1
  409. package/dist/storage/federation-store.js.map +1 -1
  410. package/dist/storage/global-projects-store.d.ts +27 -0
  411. package/dist/storage/global-projects-store.d.ts.map +1 -0
  412. package/dist/storage/global-projects-store.js +78 -0
  413. package/dist/storage/global-projects-store.js.map +1 -0
  414. package/dist/storage/global-store.js.map +1 -1
  415. package/dist/storage/index.d.ts +2 -0
  416. package/dist/storage/index.d.ts.map +1 -1
  417. package/dist/storage/index.js +2 -0
  418. package/dist/storage/index.js.map +1 -1
  419. package/dist/storage/living-dashboard-store.js.map +1 -1
  420. package/dist/storage/metrics-store.js.map +1 -1
  421. package/dist/storage/outbound-webhook-store.d.ts +9 -0
  422. package/dist/storage/outbound-webhook-store.d.ts.map +1 -0
  423. package/dist/storage/outbound-webhook-store.js +105 -0
  424. package/dist/storage/outbound-webhook-store.js.map +1 -0
  425. package/dist/storage/rbac-store.js.map +1 -1
  426. package/dist/storage/slack-store.d.ts +22 -0
  427. package/dist/storage/slack-store.d.ts.map +1 -0
  428. package/dist/storage/slack-store.js +55 -0
  429. package/dist/storage/slack-store.js.map +1 -0
  430. package/dist/storage/spec-lock-store.d.ts +22 -0
  431. package/dist/storage/spec-lock-store.d.ts.map +1 -0
  432. package/dist/storage/spec-lock-store.js +99 -0
  433. package/dist/storage/spec-lock-store.js.map +1 -0
  434. package/dist/storage/spec-observability-store.js.map +1 -1
  435. package/dist/storage/worker-metrics-store.js.map +1 -1
  436. package/dist/storage/worker-store.js.map +1 -1
  437. package/dist/tools/ai-ecosystem-status.d.ts +13 -0
  438. package/dist/tools/ai-ecosystem-status.d.ts.map +1 -0
  439. package/dist/tools/ai-ecosystem-status.js +219 -0
  440. package/dist/tools/ai-ecosystem-status.js.map +1 -0
  441. package/dist/tools/api-spec-generator-handler.d.ts +3 -0
  442. package/dist/tools/api-spec-generator-handler.d.ts.map +1 -0
  443. package/dist/tools/api-spec-generator-handler.js +193 -0
  444. package/dist/tools/api-spec-generator-handler.js.map +1 -0
  445. package/dist/tools/approval-handler.d.ts +6 -0
  446. package/dist/tools/approval-handler.d.ts.map +1 -0
  447. package/dist/tools/approval-handler.js +193 -0
  448. package/dist/tools/approval-handler.js.map +1 -0
  449. package/dist/tools/checkpoint-handler.d.ts.map +1 -1
  450. package/dist/tools/checkpoint-handler.js +31 -0
  451. package/dist/tools/checkpoint-handler.js.map +1 -1
  452. package/dist/tools/clarify-requirements/interview-mode.d.ts +42 -0
  453. package/dist/tools/clarify-requirements/interview-mode.d.ts.map +1 -0
  454. package/dist/tools/clarify-requirements/interview-mode.js +342 -0
  455. package/dist/tools/clarify-requirements/interview-mode.js.map +1 -0
  456. package/dist/tools/comments-handler.d.ts +6 -0
  457. package/dist/tools/comments-handler.d.ts.map +1 -0
  458. package/dist/tools/comments-handler.js +137 -0
  459. package/dist/tools/comments-handler.js.map +1 -0
  460. package/dist/tools/configure-workers-handler.d.ts.map +1 -1
  461. package/dist/tools/configure-workers-handler.js +81 -0
  462. package/dist/tools/configure-workers-handler.js.map +1 -1
  463. package/dist/tools/confluence-handler.d.ts +6 -0
  464. package/dist/tools/confluence-handler.d.ts.map +1 -0
  465. package/dist/tools/confluence-handler.js +220 -0
  466. package/dist/tools/confluence-handler.js.map +1 -0
  467. package/dist/tools/cross-repo-search-handler.d.ts +19 -0
  468. package/dist/tools/cross-repo-search-handler.d.ts.map +1 -0
  469. package/dist/tools/cross-repo-search-handler.js +151 -0
  470. package/dist/tools/cross-repo-search-handler.js.map +1 -0
  471. package/dist/tools/desktop-notification-handler.d.ts +17 -0
  472. package/dist/tools/desktop-notification-handler.d.ts.map +1 -0
  473. package/dist/tools/desktop-notification-handler.js +90 -0
  474. package/dist/tools/desktop-notification-handler.js.map +1 -0
  475. package/dist/tools/domain-criteria-handler.d.ts +16 -0
  476. package/dist/tools/domain-criteria-handler.d.ts.map +1 -0
  477. package/dist/tools/domain-criteria-handler.js +216 -0
  478. package/dist/tools/domain-criteria-handler.js.map +1 -0
  479. package/dist/tools/email-digest-handler.d.ts +6 -0
  480. package/dist/tools/email-digest-handler.d.ts.map +1 -0
  481. package/dist/tools/email-digest-handler.js +198 -0
  482. package/dist/tools/email-digest-handler.js.map +1 -0
  483. package/dist/tools/estimate.d.ts.map +1 -1
  484. package/dist/tools/estimate.js +22 -0
  485. package/dist/tools/estimate.js.map +1 -1
  486. package/dist/tools/estimation-accuracy-handler.d.ts +5 -0
  487. package/dist/tools/estimation-accuracy-handler.d.ts.map +1 -0
  488. package/dist/tools/estimation-accuracy-handler.js +171 -0
  489. package/dist/tools/estimation-accuracy-handler.js.map +1 -0
  490. package/dist/tools/facilitate.d.ts +1 -5
  491. package/dist/tools/facilitate.d.ts.map +1 -1
  492. package/dist/tools/facilitate.js +100 -23
  493. package/dist/tools/facilitate.js.map +1 -1
  494. package/dist/tools/generate-automation-guide.d.ts +10 -0
  495. package/dist/tools/generate-automation-guide.d.ts.map +1 -0
  496. package/dist/tools/generate-automation-guide.js +266 -0
  497. package/dist/tools/generate-automation-guide.js.map +1 -0
  498. package/dist/tools/generate-batch-script.d.ts +27 -0
  499. package/dist/tools/generate-batch-script.d.ts.map +1 -0
  500. package/dist/tools/generate-batch-script.js +77 -0
  501. package/dist/tools/generate-batch-script.js.map +1 -0
  502. package/dist/tools/generate-sub-agent.d.ts.map +1 -1
  503. package/dist/tools/generate-sub-agent.js +16 -2
  504. package/dist/tools/generate-sub-agent.js.map +1 -1
  505. package/dist/tools/git/branch-ops.d.ts +18 -0
  506. package/dist/tools/git/branch-ops.d.ts.map +1 -1
  507. package/dist/tools/git/branch-ops.js +121 -0
  508. package/dist/tools/git/branch-ops.js.map +1 -1
  509. package/dist/tools/git/pr-ops.d.ts.map +1 -1
  510. package/dist/tools/git/pr-ops.js +7 -0
  511. package/dist/tools/git/pr-ops.js.map +1 -1
  512. package/dist/tools/import-spec-handler.d.ts +10 -0
  513. package/dist/tools/import-spec-handler.d.ts.map +1 -0
  514. package/dist/tools/import-spec-handler.js +242 -0
  515. package/dist/tools/import-spec-handler.js.map +1 -0
  516. package/dist/tools/init-project/claude-md-generator.d.ts +1 -0
  517. package/dist/tools/init-project/claude-md-generator.d.ts.map +1 -1
  518. package/dist/tools/init-project/claude-md-generator.js +35 -0
  519. package/dist/tools/init-project/claude-md-generator.js.map +1 -1
  520. package/dist/tools/init-project/handler.d.ts.map +1 -1
  521. package/dist/tools/init-project/handler.js +4 -1
  522. package/dist/tools/init-project/handler.js.map +1 -1
  523. package/dist/tools/init-project/hooks-configurator.d.ts +17 -0
  524. package/dist/tools/init-project/hooks-configurator.d.ts.map +1 -0
  525. package/dist/tools/init-project/hooks-configurator.js +102 -0
  526. package/dist/tools/init-project/hooks-configurator.js.map +1 -0
  527. package/dist/tools/init-project/planu-workflow-generator.d.ts +21 -0
  528. package/dist/tools/init-project/planu-workflow-generator.d.ts.map +1 -0
  529. package/dist/tools/init-project/planu-workflow-generator.js +84 -0
  530. package/dist/tools/init-project/planu-workflow-generator.js.map +1 -0
  531. package/dist/tools/init-project/rules-generator.d.ts +26 -0
  532. package/dist/tools/init-project/rules-generator.d.ts.map +1 -0
  533. package/dist/tools/init-project/rules-generator.js +189 -0
  534. package/dist/tools/init-project/rules-generator.js.map +1 -0
  535. package/dist/tools/init-project/scaffold-writer.d.ts +4 -0
  536. package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -1
  537. package/dist/tools/init-project/scaffold-writer.js +42 -0
  538. package/dist/tools/init-project/scaffold-writer.js.map +1 -1
  539. package/dist/tools/integrate-pm.js.map +1 -1
  540. package/dist/tools/list-sessions.d.ts.map +1 -1
  541. package/dist/tools/list-sessions.js +8 -0
  542. package/dist/tools/list-sessions.js.map +1 -1
  543. package/dist/tools/list-specs.d.ts.map +1 -1
  544. package/dist/tools/list-specs.js +11 -1
  545. package/dist/tools/list-specs.js.map +1 -1
  546. package/dist/tools/manage-git.d.ts.map +1 -1
  547. package/dist/tools/manage-git.js +15 -1
  548. package/dist/tools/manage-git.js.map +1 -1
  549. package/dist/tools/orchestrate/state.js.map +1 -1
  550. package/dist/tools/outbound-webhook-handler.d.ts +13 -0
  551. package/dist/tools/outbound-webhook-handler.d.ts.map +1 -0
  552. package/dist/tools/outbound-webhook-handler.js +161 -0
  553. package/dist/tools/outbound-webhook-handler.js.map +1 -0
  554. package/dist/tools/performance-analysis-handler.d.ts +3 -0
  555. package/dist/tools/performance-analysis-handler.d.ts.map +1 -0
  556. package/dist/tools/performance-analysis-handler.js +95 -0
  557. package/dist/tools/performance-analysis-handler.js.map +1 -0
  558. package/dist/tools/recommend-model-handler.d.ts.map +1 -1
  559. package/dist/tools/recommend-model-handler.js +7 -0
  560. package/dist/tools/recommend-model-handler.js.map +1 -1
  561. package/dist/tools/register-api-spec-generator.d.ts +3 -0
  562. package/dist/tools/register-api-spec-generator.d.ts.map +1 -0
  563. package/dist/tools/register-api-spec-generator.js +49 -0
  564. package/dist/tools/register-api-spec-generator.js.map +1 -0
  565. package/dist/tools/register-approval-tools.d.ts +3 -0
  566. package/dist/tools/register-approval-tools.d.ts.map +1 -0
  567. package/dist/tools/register-approval-tools.js +87 -0
  568. package/dist/tools/register-approval-tools.js.map +1 -0
  569. package/dist/tools/register-comments-tools.d.ts +3 -0
  570. package/dist/tools/register-comments-tools.d.ts.map +1 -0
  571. package/dist/tools/register-comments-tools.js +79 -0
  572. package/dist/tools/register-comments-tools.js.map +1 -0
  573. package/dist/tools/register-confluence-tools.d.ts +3 -0
  574. package/dist/tools/register-confluence-tools.d.ts.map +1 -0
  575. package/dist/tools/register-confluence-tools.js +62 -0
  576. package/dist/tools/register-confluence-tools.js.map +1 -0
  577. package/dist/tools/register-cross-repo-search-tools.d.ts +10 -0
  578. package/dist/tools/register-cross-repo-search-tools.d.ts.map +1 -0
  579. package/dist/tools/register-cross-repo-search-tools.js +82 -0
  580. package/dist/tools/register-cross-repo-search-tools.js.map +1 -0
  581. package/dist/tools/register-desktop-notification-tools.d.ts +3 -0
  582. package/dist/tools/register-desktop-notification-tools.d.ts.map +1 -0
  583. package/dist/tools/register-desktop-notification-tools.js +56 -0
  584. package/dist/tools/register-desktop-notification-tools.js.map +1 -0
  585. package/dist/tools/register-domain-criteria-tools.d.ts +3 -0
  586. package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -0
  587. package/dist/tools/register-domain-criteria-tools.js +46 -0
  588. package/dist/tools/register-domain-criteria-tools.js.map +1 -0
  589. package/dist/tools/register-email-digest-tools.d.ts +3 -0
  590. package/dist/tools/register-email-digest-tools.d.ts.map +1 -0
  591. package/dist/tools/register-email-digest-tools.js +109 -0
  592. package/dist/tools/register-email-digest-tools.js.map +1 -0
  593. package/dist/tools/register-estimation-accuracy-tools.d.ts +3 -0
  594. package/dist/tools/register-estimation-accuracy-tools.d.ts.map +1 -0
  595. package/dist/tools/register-estimation-accuracy-tools.js +71 -0
  596. package/dist/tools/register-estimation-accuracy-tools.js.map +1 -0
  597. package/dist/tools/register-facilitator-tools.d.ts.map +1 -1
  598. package/dist/tools/register-facilitator-tools.js +12 -7
  599. package/dist/tools/register-facilitator-tools.js.map +1 -1
  600. package/dist/tools/register-generate-automation-guide.d.ts +3 -0
  601. package/dist/tools/register-generate-automation-guide.d.ts.map +1 -0
  602. package/dist/tools/register-generate-automation-guide.js +10 -0
  603. package/dist/tools/register-generate-automation-guide.js.map +1 -0
  604. package/dist/tools/register-generate-batch-script.d.ts +3 -0
  605. package/dist/tools/register-generate-batch-script.d.ts.map +1 -0
  606. package/dist/tools/register-generate-batch-script.js +10 -0
  607. package/dist/tools/register-generate-batch-script.js.map +1 -0
  608. package/dist/tools/register-hooks-tools.d.ts.map +1 -1
  609. package/dist/tools/register-hooks-tools.js +27 -0
  610. package/dist/tools/register-hooks-tools.js.map +1 -1
  611. package/dist/tools/register-import-tools.d.ts +3 -0
  612. package/dist/tools/register-import-tools.d.ts.map +1 -0
  613. package/dist/tools/register-import-tools.js +63 -0
  614. package/dist/tools/register-import-tools.js.map +1 -0
  615. package/dist/tools/register-outbound-webhook-tools.d.ts +3 -0
  616. package/dist/tools/register-outbound-webhook-tools.d.ts.map +1 -0
  617. package/dist/tools/register-outbound-webhook-tools.js +79 -0
  618. package/dist/tools/register-outbound-webhook-tools.js.map +1 -0
  619. package/dist/tools/register-performance-analysis-tools.d.ts +3 -0
  620. package/dist/tools/register-performance-analysis-tools.d.ts.map +1 -0
  621. package/dist/tools/register-performance-analysis-tools.js +24 -0
  622. package/dist/tools/register-performance-analysis-tools.js.map +1 -0
  623. package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
  624. package/dist/tools/register-platform-tools/design-stack-tools.js +4 -0
  625. package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
  626. package/dist/tools/register-slack-tools.d.ts +3 -0
  627. package/dist/tools/register-slack-tools.d.ts.map +1 -0
  628. package/dist/tools/register-slack-tools.js +55 -0
  629. package/dist/tools/register-slack-tools.js.map +1 -0
  630. package/dist/tools/register-spec-export-tools.d.ts +3 -0
  631. package/dist/tools/register-spec-export-tools.d.ts.map +1 -0
  632. package/dist/tools/register-spec-export-tools.js +67 -0
  633. package/dist/tools/register-spec-export-tools.js.map +1 -0
  634. package/dist/tools/register-spec-lock-tools.d.ts +3 -0
  635. package/dist/tools/register-spec-lock-tools.d.ts.map +1 -0
  636. package/dist/tools/register-spec-lock-tools.js +72 -0
  637. package/dist/tools/register-spec-lock-tools.js.map +1 -0
  638. package/dist/tools/register-spec-search-tools.d.ts +3 -0
  639. package/dist/tools/register-spec-search-tools.d.ts.map +1 -0
  640. package/dist/tools/register-spec-search-tools.js +122 -0
  641. package/dist/tools/register-spec-search-tools.js.map +1 -0
  642. package/dist/tools/register-spec-split-tools.d.ts +3 -0
  643. package/dist/tools/register-spec-split-tools.d.ts.map +1 -0
  644. package/dist/tools/register-spec-split-tools.js +51 -0
  645. package/dist/tools/register-spec-split-tools.js.map +1 -0
  646. package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
  647. package/dist/tools/register-spec-tools/core-spec-tools.js +20 -2
  648. package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
  649. package/dist/tools/register-team-analytics-tools.d.ts +3 -0
  650. package/dist/tools/register-team-analytics-tools.d.ts.map +1 -0
  651. package/dist/tools/register-team-analytics-tools.js +37 -0
  652. package/dist/tools/register-team-analytics-tools.js.map +1 -0
  653. package/dist/tools/register-test-reverse-engineer-tools.d.ts +3 -0
  654. package/dist/tools/register-test-reverse-engineer-tools.d.ts.map +1 -0
  655. package/dist/tools/register-test-reverse-engineer-tools.js +10 -0
  656. package/dist/tools/register-test-reverse-engineer-tools.js.map +1 -0
  657. package/dist/tools/register-velocity-tools.d.ts +3 -0
  658. package/dist/tools/register-velocity-tools.d.ts.map +1 -0
  659. package/dist/tools/register-velocity-tools.js +72 -0
  660. package/dist/tools/register-velocity-tools.js.map +1 -0
  661. package/dist/tools/register-versioning-tools.d.ts.map +1 -1
  662. package/dist/tools/register-versioning-tools.js +55 -0
  663. package/dist/tools/register-versioning-tools.js.map +1 -1
  664. package/dist/tools/restore-session.d.ts.map +1 -1
  665. package/dist/tools/restore-session.js +10 -0
  666. package/dist/tools/restore-session.js.map +1 -1
  667. package/dist/tools/safe-handler.d.ts.map +1 -1
  668. package/dist/tools/safe-handler.js +5 -0
  669. package/dist/tools/safe-handler.js.map +1 -1
  670. package/dist/tools/schemas/ide-config.d.ts +4 -2
  671. package/dist/tools/schemas/ide-config.d.ts.map +1 -1
  672. package/dist/tools/schemas/ide-config.js +2 -1
  673. package/dist/tools/schemas/ide-config.js.map +1 -1
  674. package/dist/tools/schemas/output-schemas.d.ts +24 -0
  675. package/dist/tools/schemas/output-schemas.d.ts.map +1 -1
  676. package/dist/tools/schemas/output-schemas.js +30 -0
  677. package/dist/tools/schemas/output-schemas.js.map +1 -1
  678. package/dist/tools/schemas/workers-schema.d.ts +1 -0
  679. package/dist/tools/schemas/workers-schema.d.ts.map +1 -1
  680. package/dist/tools/schemas/workers-schema.js +10 -2
  681. package/dist/tools/schemas/workers-schema.js.map +1 -1
  682. package/dist/tools/search-handler.d.ts +4 -0
  683. package/dist/tools/search-handler.d.ts.map +1 -0
  684. package/dist/tools/search-handler.js +62 -0
  685. package/dist/tools/search-handler.js.map +1 -0
  686. package/dist/tools/slack-handler.d.ts +6 -0
  687. package/dist/tools/slack-handler.d.ts.map +1 -0
  688. package/dist/tools/slack-handler.js +162 -0
  689. package/dist/tools/slack-handler.js.map +1 -0
  690. package/dist/tools/spec-diff-handler.d.ts +6 -0
  691. package/dist/tools/spec-diff-handler.d.ts.map +1 -0
  692. package/dist/tools/spec-diff-handler.js +94 -0
  693. package/dist/tools/spec-diff-handler.js.map +1 -0
  694. package/dist/tools/spec-export-handler.d.ts +5 -0
  695. package/dist/tools/spec-export-handler.d.ts.map +1 -0
  696. package/dist/tools/spec-export-handler.js +64 -0
  697. package/dist/tools/spec-export-handler.js.map +1 -0
  698. package/dist/tools/spec-lock-handler.d.ts +10 -0
  699. package/dist/tools/spec-lock-handler.d.ts.map +1 -0
  700. package/dist/tools/spec-lock-handler.js +163 -0
  701. package/dist/tools/spec-lock-handler.js.map +1 -0
  702. package/dist/tools/spec-split-handler.d.ts +4 -0
  703. package/dist/tools/spec-split-handler.d.ts.map +1 -0
  704. package/dist/tools/spec-split-handler.js +250 -0
  705. package/dist/tools/spec-split-handler.js.map +1 -0
  706. package/dist/tools/start-hooks.d.ts.map +1 -1
  707. package/dist/tools/start-hooks.js +104 -1
  708. package/dist/tools/start-hooks.js.map +1 -1
  709. package/dist/tools/status-handler.d.ts.map +1 -1
  710. package/dist/tools/status-handler.js +49 -3
  711. package/dist/tools/status-handler.js.map +1 -1
  712. package/dist/tools/sync-ai-configs.d.ts +15 -0
  713. package/dist/tools/sync-ai-configs.d.ts.map +1 -0
  714. package/dist/tools/sync-ai-configs.js +86 -0
  715. package/dist/tools/sync-ai-configs.js.map +1 -0
  716. package/dist/tools/team-analytics-handler.d.ts +5 -0
  717. package/dist/tools/team-analytics-handler.d.ts.map +1 -0
  718. package/dist/tools/team-analytics-handler.js +67 -0
  719. package/dist/tools/team-analytics-handler.js.map +1 -0
  720. package/dist/tools/test-reverse-engineer-handler.d.ts +15 -0
  721. package/dist/tools/test-reverse-engineer-handler.d.ts.map +1 -0
  722. package/dist/tools/test-reverse-engineer-handler.js +94 -0
  723. package/dist/tools/test-reverse-engineer-handler.js.map +1 -0
  724. package/dist/tools/update-status/index.d.ts.map +1 -1
  725. package/dist/tools/update-status/index.js +135 -20
  726. package/dist/tools/update-status/index.js.map +1 -1
  727. package/dist/tools/update-status/response-builder.d.ts +1 -1
  728. package/dist/tools/update-status/response-builder.d.ts.map +1 -1
  729. package/dist/tools/update-status/response-builder.js +4 -1
  730. package/dist/tools/update-status/response-builder.js.map +1 -1
  731. package/dist/tools/update-status/side-effects.d.ts.map +1 -1
  732. package/dist/tools/update-status/side-effects.js +71 -0
  733. package/dist/tools/update-status/side-effects.js.map +1 -1
  734. package/dist/tools/update-status/transition-guard.d.ts +8 -0
  735. package/dist/tools/update-status/transition-guard.d.ts.map +1 -1
  736. package/dist/tools/update-status/transition-guard.js +23 -0
  737. package/dist/tools/update-status/transition-guard.js.map +1 -1
  738. package/dist/tools/update-status-actions.d.ts +1 -0
  739. package/dist/tools/update-status-actions.d.ts.map +1 -1
  740. package/dist/tools/update-status-actions.js +15 -1
  741. package/dist/tools/update-status-actions.js.map +1 -1
  742. package/dist/tools/velocity-handler.d.ts +4 -0
  743. package/dist/tools/velocity-handler.d.ts.map +1 -0
  744. package/dist/tools/velocity-handler.js +103 -0
  745. package/dist/tools/velocity-handler.js.map +1 -0
  746. package/dist/types/actuals.d.ts +100 -0
  747. package/dist/types/actuals.d.ts.map +1 -0
  748. package/dist/types/actuals.js +2 -0
  749. package/dist/types/actuals.js.map +1 -0
  750. package/dist/types/agent-frameworks.d.ts +62 -0
  751. package/dist/types/agent-frameworks.d.ts.map +1 -0
  752. package/dist/types/agent-frameworks.js +3 -0
  753. package/dist/types/agent-frameworks.js.map +1 -0
  754. package/dist/types/agents-md.d.ts +20 -0
  755. package/dist/types/agents-md.d.ts.map +1 -0
  756. package/dist/types/agents-md.js +3 -0
  757. package/dist/types/agents-md.js.map +1 -0
  758. package/dist/types/ai-integration.d.ts +65 -0
  759. package/dist/types/ai-integration.d.ts.map +1 -0
  760. package/dist/types/ai-integration.js +3 -0
  761. package/dist/types/ai-integration.js.map +1 -0
  762. package/dist/types/analysis.d.ts +8 -0
  763. package/dist/types/analysis.d.ts.map +1 -1
  764. package/dist/types/api-contract.d.ts +154 -0
  765. package/dist/types/api-contract.d.ts.map +1 -0
  766. package/dist/types/api-contract.js +3 -0
  767. package/dist/types/api-contract.js.map +1 -0
  768. package/dist/types/approval.d.ts +82 -0
  769. package/dist/types/approval.d.ts.map +1 -0
  770. package/dist/types/approval.js +3 -0
  771. package/dist/types/approval.js.map +1 -0
  772. package/dist/types/batch-script.d.ts +36 -0
  773. package/dist/types/batch-script.d.ts.map +1 -0
  774. package/dist/types/batch-script.js +3 -0
  775. package/dist/types/batch-script.js.map +1 -0
  776. package/dist/types/ci.d.ts +4 -0
  777. package/dist/types/ci.d.ts.map +1 -1
  778. package/dist/types/cline-integration.d.ts +30 -0
  779. package/dist/types/cline-integration.d.ts.map +1 -0
  780. package/dist/types/cline-integration.js +3 -0
  781. package/dist/types/cline-integration.js.map +1 -0
  782. package/dist/types/codex-integration.d.ts +55 -0
  783. package/dist/types/codex-integration.d.ts.map +1 -0
  784. package/dist/types/codex-integration.js +3 -0
  785. package/dist/types/codex-integration.js.map +1 -0
  786. package/dist/types/comments.d.ts +68 -0
  787. package/dist/types/comments.d.ts.map +1 -0
  788. package/dist/types/comments.js +3 -0
  789. package/dist/types/comments.js.map +1 -0
  790. package/dist/types/common/tech-enums.d.ts +1 -1
  791. package/dist/types/common/tech-enums.d.ts.map +1 -1
  792. package/dist/types/confluence.d.ts +102 -0
  793. package/dist/types/confluence.d.ts.map +1 -0
  794. package/dist/types/confluence.js +3 -0
  795. package/dist/types/confluence.js.map +1 -0
  796. package/dist/types/cross-repo-search.d.ts +104 -0
  797. package/dist/types/cross-repo-search.d.ts.map +1 -0
  798. package/dist/types/cross-repo-search.js +2 -0
  799. package/dist/types/cross-repo-search.js.map +1 -0
  800. package/dist/types/desktop-notification.d.ts +38 -0
  801. package/dist/types/desktop-notification.d.ts.map +1 -0
  802. package/dist/types/desktop-notification.js +3 -0
  803. package/dist/types/desktop-notification.js.map +1 -0
  804. package/dist/types/domain-criteria.d.ts +62 -0
  805. package/dist/types/domain-criteria.d.ts.map +1 -0
  806. package/dist/types/domain-criteria.js +3 -0
  807. package/dist/types/domain-criteria.js.map +1 -0
  808. package/dist/types/email-digest.d.ts +119 -0
  809. package/dist/types/email-digest.d.ts.map +1 -0
  810. package/dist/types/email-digest.js +3 -0
  811. package/dist/types/email-digest.js.map +1 -0
  812. package/dist/types/execution.d.ts +9 -0
  813. package/dist/types/execution.d.ts.map +1 -1
  814. package/dist/types/facilitator.d.ts +67 -0
  815. package/dist/types/facilitator.d.ts.map +1 -1
  816. package/dist/types/file-hooks.d.ts +7 -0
  817. package/dist/types/file-hooks.d.ts.map +1 -1
  818. package/dist/types/file-hooks.js +0 -1
  819. package/dist/types/file-hooks.js.map +1 -1
  820. package/dist/types/gemini-integration.d.ts +40 -0
  821. package/dist/types/gemini-integration.d.ts.map +1 -0
  822. package/dist/types/gemini-integration.js +3 -0
  823. package/dist/types/gemini-integration.js.map +1 -0
  824. package/dist/types/git.d.ts +12 -0
  825. package/dist/types/git.d.ts.map +1 -1
  826. package/dist/types/github-copilot-integration.d.ts +30 -0
  827. package/dist/types/github-copilot-integration.d.ts.map +1 -0
  828. package/dist/types/github-copilot-integration.js +3 -0
  829. package/dist/types/github-copilot-integration.js.map +1 -0
  830. package/dist/types/hooks-advanced.d.ts +34 -0
  831. package/dist/types/hooks-advanced.d.ts.map +1 -0
  832. package/dist/types/hooks-advanced.js +3 -0
  833. package/dist/types/hooks-advanced.js.map +1 -0
  834. package/dist/types/hooks.d.ts +77 -0
  835. package/dist/types/hooks.d.ts.map +1 -1
  836. package/dist/types/ide.d.ts +1 -1
  837. package/dist/types/ide.d.ts.map +1 -1
  838. package/dist/types/import-spec.d.ts +123 -0
  839. package/dist/types/import-spec.d.ts.map +1 -0
  840. package/dist/types/import-spec.js +3 -0
  841. package/dist/types/import-spec.js.map +1 -0
  842. package/dist/types/index.d.ts +30 -0
  843. package/dist/types/index.d.ts.map +1 -1
  844. package/dist/types/index.js +30 -0
  845. package/dist/types/index.js.map +1 -1
  846. package/dist/types/kiro-integration.d.ts +44 -0
  847. package/dist/types/kiro-integration.d.ts.map +1 -0
  848. package/dist/types/kiro-integration.js +3 -0
  849. package/dist/types/kiro-integration.js.map +1 -0
  850. package/dist/types/model-routing.d.ts +16 -0
  851. package/dist/types/model-routing.d.ts.map +1 -1
  852. package/dist/types/outbound-webhook.d.ts +51 -0
  853. package/dist/types/outbound-webhook.d.ts.map +1 -0
  854. package/dist/types/outbound-webhook.js +3 -0
  855. package/dist/types/outbound-webhook.js.map +1 -0
  856. package/dist/types/performance-analysis.d.ts +33 -0
  857. package/dist/types/performance-analysis.d.ts.map +1 -0
  858. package/dist/types/performance-analysis.js +3 -0
  859. package/dist/types/performance-analysis.js.map +1 -0
  860. package/dist/types/project/planu-config.d.ts +6 -0
  861. package/dist/types/project/planu-config.d.ts.map +1 -1
  862. package/dist/types/registry-publishers.d.ts +63 -0
  863. package/dist/types/registry-publishers.d.ts.map +1 -0
  864. package/dist/types/registry-publishers.js +4 -0
  865. package/dist/types/registry-publishers.js.map +1 -0
  866. package/dist/types/search.d.ts +49 -0
  867. package/dist/types/search.d.ts.map +1 -0
  868. package/dist/types/search.js +3 -0
  869. package/dist/types/search.js.map +1 -0
  870. package/dist/types/session.d.ts +2 -0
  871. package/dist/types/session.d.ts.map +1 -1
  872. package/dist/types/slack.d.ts +41 -0
  873. package/dist/types/slack.d.ts.map +1 -0
  874. package/dist/types/slack.js +3 -0
  875. package/dist/types/slack.js.map +1 -0
  876. package/dist/types/spec/inputs.d.ts +46 -2
  877. package/dist/types/spec/inputs.d.ts.map +1 -1
  878. package/dist/types/spec-export.d.ts +18 -0
  879. package/dist/types/spec-export.d.ts.map +1 -0
  880. package/dist/types/spec-export.js +3 -0
  881. package/dist/types/spec-export.js.map +1 -0
  882. package/dist/types/spec-lock.d.ts +42 -0
  883. package/dist/types/spec-lock.d.ts.map +1 -0
  884. package/dist/types/spec-lock.js +3 -0
  885. package/dist/types/spec-lock.js.map +1 -0
  886. package/dist/types/spec-versioning.d.ts +35 -0
  887. package/dist/types/spec-versioning.d.ts.map +1 -1
  888. package/dist/types/stack/recommend.d.ts +1 -0
  889. package/dist/types/stack/recommend.d.ts.map +1 -1
  890. package/dist/types/status.d.ts +7 -0
  891. package/dist/types/status.d.ts.map +1 -1
  892. package/dist/types/team-analytics.d.ts +52 -0
  893. package/dist/types/team-analytics.d.ts.map +1 -0
  894. package/dist/types/team-analytics.js +3 -0
  895. package/dist/types/team-analytics.js.map +1 -0
  896. package/dist/types/team-planner.d.ts +18 -0
  897. package/dist/types/team-planner.d.ts.map +1 -1
  898. package/dist/types/telemetry.d.ts +1 -1
  899. package/dist/types/telemetry.d.ts.map +1 -1
  900. package/dist/types/test-reverse-engineer.d.ts +32 -0
  901. package/dist/types/test-reverse-engineer.d.ts.map +1 -0
  902. package/dist/types/test-reverse-engineer.js +3 -0
  903. package/dist/types/test-reverse-engineer.js.map +1 -0
  904. package/dist/types/velocity.d.ts +147 -0
  905. package/dist/types/velocity.d.ts.map +1 -0
  906. package/dist/types/velocity.js +4 -0
  907. package/dist/types/velocity.js.map +1 -0
  908. package/dist/types/workers.d.ts +1 -1
  909. package/dist/types/workers.d.ts.map +1 -1
  910. package/package.json +10 -10
  911. package/src/config/domain-best-practices.json +413 -0
  912. package/src/config/ide-registry.json +25 -0
  913. package/src/config/license-plans.json +61 -2
@@ -0,0 +1,115 @@
1
+ // engine/hooks/full-spectrum-generator.ts — Full-spectrum Claude Code hook generator (SPEC-265)
2
+ // ---------------------------------------------------------------------------
3
+ // Individual script builders
4
+ // ---------------------------------------------------------------------------
5
+ /**
6
+ * Generates the Stop hook script — auto-commits planu/ on session end.
7
+ */
8
+ export function generateStopHookScript(projectPath) {
9
+ return `#!/bin/bash
10
+ # Auto-commit planu/ if there are changes (Planu Stop hook)
11
+ cd "${projectPath}"
12
+ if git diff --quiet planu/ 2>/dev/null; then exit 0; fi
13
+ git add planu/ && git commit -m "chore(planu): auto-commit session state [skip ci]" --no-verify
14
+ `;
15
+ }
16
+ /**
17
+ * Generates the PreCompact hook script — queues a session_checkpoint action.
18
+ */
19
+ export function generatePreCompactHookScript() {
20
+ return `#!/bin/bash
21
+ # Queue session_checkpoint before context compression (Planu PreCompact hook)
22
+ echo '{"tool":"session_checkpoint","note":"auto-checkpoint before context compression"}' >> /tmp/planu-pending-actions.json
23
+ `;
24
+ }
25
+ /**
26
+ * Generates the UserPromptSubmit hook script — injects active spec context.
27
+ */
28
+ export function generateUserPromptSubmitHookScript() {
29
+ return `#!/bin/bash
30
+ # Inject active spec context on each prompt (Planu UserPromptSubmit hook)
31
+ BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown")
32
+ SPEC_ID=$(echo "$BRANCH" | grep -oE 'SPEC-[0-9]+' | head -1)
33
+ if [ -n "$SPEC_ID" ]; then
34
+ echo "## Active spec: $SPEC_ID | Branch: $BRANCH"
35
+ fi
36
+ `;
37
+ }
38
+ /**
39
+ * Generates the Notification hook script — shown when Claude is idle.
40
+ */
41
+ export function generateNotificationHookScript() {
42
+ return `#!/bin/bash
43
+ # Show pending approved specs when Claude is idle (Planu Notification hook)
44
+ # Non-blocking: only outputs if there are pending specs
45
+ true
46
+ `;
47
+ }
48
+ /**
49
+ * Generates WorktreeCreate and WorktreeRemove hook scripts.
50
+ */
51
+ export function generateWorktreeHookScripts() {
52
+ const create = `#!/bin/bash
53
+ # Log worktree creation in shared-context (Planu WorktreeCreate hook)
54
+ echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Worktree created: $CLAUDE_WORKTREE_PATH" >> .claude/shared-context.md 2>/dev/null || true
55
+ `;
56
+ const remove = `#!/bin/bash
57
+ # Log worktree removal in shared-context (Planu WorktreeRemove hook)
58
+ echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] Worktree removed: $CLAUDE_WORKTREE_PATH" >> .claude/shared-context.md 2>/dev/null || true
59
+ `;
60
+ return { create, remove };
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Public aggregator
64
+ // ---------------------------------------------------------------------------
65
+ /**
66
+ * Generates all requested hook scripts based on the supplied config.
67
+ * Returns an array of HookScript objects, one per enabled hook type.
68
+ * The projectPath is used only for the Stop hook script.
69
+ */
70
+ export function generateFullSpectrumHooks(config, projectPath = '$CLAUDE_PROJECT_PATH') {
71
+ const scripts = [];
72
+ if (config.stopHook) {
73
+ scripts.push({
74
+ eventType: 'Stop',
75
+ scriptContent: generateStopHookScript(projectPath),
76
+ description: 'Auto-commits planu/ changes at session end.',
77
+ });
78
+ }
79
+ if (config.preCompactHook) {
80
+ scripts.push({
81
+ eventType: 'PreCompact',
82
+ scriptContent: generatePreCompactHookScript(),
83
+ description: 'Queues a session_checkpoint before context compression.',
84
+ });
85
+ }
86
+ if (config.userPromptSubmitHook) {
87
+ scripts.push({
88
+ eventType: 'UserPromptSubmit',
89
+ scriptContent: generateUserPromptSubmitHookScript(),
90
+ description: 'Injects active spec/branch context into each prompt.',
91
+ });
92
+ }
93
+ if (config.notificationHook) {
94
+ scripts.push({
95
+ eventType: 'Notification',
96
+ scriptContent: generateNotificationHookScript(),
97
+ description: 'Shows pending approved specs when Claude is idle.',
98
+ });
99
+ }
100
+ if (config.worktreeHooks) {
101
+ const { create, remove } = generateWorktreeHookScripts();
102
+ scripts.push({
103
+ eventType: 'WorktreeCreate',
104
+ scriptContent: create,
105
+ description: 'Logs worktree creation in .claude/shared-context.md.',
106
+ });
107
+ scripts.push({
108
+ eventType: 'WorktreeRemove',
109
+ scriptContent: remove,
110
+ description: 'Logs worktree removal in .claude/shared-context.md.',
111
+ });
112
+ }
113
+ return scripts;
114
+ }
115
+ //# sourceMappingURL=full-spectrum-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"full-spectrum-generator.js","sourceRoot":"","sources":["../../../src/engine/hooks/full-spectrum-generator.ts"],"names":[],"mappings":"AAAA,gGAAgG;AAIhG,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E;;GAEG;AACH,MAAM,UAAU,sBAAsB,CAAC,WAAmB;IACxD,OAAO;;MAEH,WAAW;;;CAGhB,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,4BAA4B;IAC1C,OAAO;;;CAGR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kCAAkC;IAChD,OAAO;;;;;;;CAOR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,8BAA8B;IAC5C,OAAO;;;;CAIR,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,2BAA2B;IACzC,MAAM,MAAM,GAAG;;;CAGhB,CAAC;IAEA,MAAM,MAAM,GAAG;;;CAGhB,CAAC;IAEA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA8B,EAC9B,WAAW,GAAG,sBAAsB;IAEpC,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,MAAM;YACjB,aAAa,EAAE,sBAAsB,CAAC,WAAW,CAAC;YAClD,WAAW,EAAE,6CAA6C;SAC3D,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,YAAY;YACvB,aAAa,EAAE,4BAA4B,EAAE;YAC7C,WAAW,EAAE,yDAAyD;SACvE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,kBAAkB;YAC7B,aAAa,EAAE,kCAAkC,EAAE;YACnD,WAAW,EAAE,sDAAsD;SACpE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,cAAc;YACzB,aAAa,EAAE,8BAA8B,EAAE;YAC/C,WAAW,EAAE,mDAAmD;SACjE,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,2BAA2B,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,gBAAgB;YAC3B,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,sDAAsD;SACpE,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC;YACX,SAAS,EAAE,gBAAgB;YAC3B,aAAa,EAAE,MAAM;YACrB,WAAW,EAAE,qDAAqD;SACnE,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { HookTemplateName, HookTemplateOptions, GeneratedHookConfig } from '../../types/index.js';
2
+ /**
3
+ * Generates a Claude Code hook configuration for the given template.
4
+ * `notification-desktop` auto-detects the current platform via process.platform.
5
+ */
6
+ export declare function generateHookTemplate(opts: HookTemplateOptions): GeneratedHookConfig;
7
+ /**
8
+ * Merges a new hook config into an existing settings object without overwriting.
9
+ * Existing hooks for the same event type are preserved (array merge).
10
+ */
11
+ export declare function mergeHookConfig(existing: Record<string, unknown>, newHook: GeneratedHookConfig): Record<string, unknown>;
12
+ /**
13
+ * Returns all valid HookTemplateName values (for use in Zod schemas and descriptions).
14
+ */
15
+ export declare function listHookTemplateNames(): HookTemplateName[];
16
+ //# sourceMappingURL=hook-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-templates.d.ts","sourceRoot":"","sources":["../../../src/engine/hooks/hook-templates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,gBAAgB,EAEhB,mBAAmB,EACnB,mBAAmB,EAEpB,MAAM,sBAAsB,CAAC;AAuH9B;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,mBAAmB,GAAG,mBAAmB,CAsBnF;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACjC,OAAO,EAAE,mBAAmB,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAUzB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,gBAAgB,EAAE,CAS1D"}
@@ -0,0 +1,148 @@
1
+ // engine/hooks/hook-templates.ts — Claude Code notification & permission hook templates (SPEC-258)
2
+ // ---------------------------------------------------------------------------
3
+ // Template builders
4
+ // ---------------------------------------------------------------------------
5
+ function buildNotificationEntry(command, matcher) {
6
+ return {
7
+ matcher: matcher ?? '',
8
+ hooks: [{ type: 'command', command }],
9
+ };
10
+ }
11
+ function buildMacosTemplate(matcher) {
12
+ return {
13
+ hooks: {
14
+ Notification: [
15
+ buildNotificationEntry('osascript -e \'display notification "Claude needs your attention" with title "Planu"\'', matcher),
16
+ ],
17
+ },
18
+ mergeInstructions: 'Add the "Notification" key to the "hooks" object in .claude/settings.json.',
19
+ description: 'macOS desktop notification via osascript when Claude requests attention.',
20
+ };
21
+ }
22
+ function buildLinuxTemplate(matcher) {
23
+ return {
24
+ hooks: {
25
+ Notification: [
26
+ buildNotificationEntry("notify-send 'Planu' 'Claude needs your attention'", matcher),
27
+ ],
28
+ },
29
+ mergeInstructions: 'Add the "Notification" key to the "hooks" object in .claude/settings.json.',
30
+ description: 'Linux desktop notification via notify-send when Claude requests attention. Requires libnotify-bin.',
31
+ };
32
+ }
33
+ function buildWindowsTemplate(matcher) {
34
+ const command = "powershell.exe -Command \"[System.Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'); " +
35
+ "[System.Windows.Forms.MessageBox]::Show('Claude needs your attention', 'Planu')\"";
36
+ return {
37
+ hooks: {
38
+ Notification: [buildNotificationEntry(command, matcher)],
39
+ },
40
+ mergeInstructions: 'Add the "Notification" key to the "hooks" object in .claude/settings.json.',
41
+ description: 'Windows desktop notification via PowerShell MessageBox when Claude needs input.',
42
+ };
43
+ }
44
+ function buildDesktopTemplate(matcher) {
45
+ const platform = process.platform;
46
+ if (platform === 'darwin') {
47
+ return buildMacosTemplate(matcher);
48
+ }
49
+ if (platform === 'win32') {
50
+ return buildWindowsTemplate(matcher);
51
+ }
52
+ // Default to Linux for all other platforms (linux, freebsd, etc.)
53
+ return buildLinuxTemplate(matcher);
54
+ }
55
+ function buildInstructionsLoadedDebugTemplate() {
56
+ return {
57
+ hooks: {
58
+ InstructionsLoaded: [
59
+ {
60
+ matcher: '',
61
+ hooks: [
62
+ {
63
+ type: 'command',
64
+ command: 'echo "[CLAUDE $(date +%H:%M:%S)] Instructions loaded: $CLAUDE_INSTRUCTIONS_FILE" >> ~/.claude/instructions-debug.log',
65
+ },
66
+ ],
67
+ },
68
+ ],
69
+ },
70
+ mergeInstructions: 'Add the "InstructionsLoaded" key to the "hooks" object in .claude/settings.json.',
71
+ description: 'Debug hook that appends a timestamped line to ~/.claude/instructions-debug.log every time Claude loads instructions.',
72
+ };
73
+ }
74
+ function buildPermissionAutoApproveReadonlyTemplate() {
75
+ return {
76
+ hooks: {
77
+ PermissionRequest: [
78
+ {
79
+ matcher: 'Read|Glob|Grep',
80
+ hooks: [
81
+ {
82
+ type: 'command',
83
+ command: 'echo \'{"decision": "allow", "reason": "Read-only operation auto-approved by Planu"}\'',
84
+ },
85
+ ],
86
+ },
87
+ ],
88
+ },
89
+ mergeInstructions: 'Add the "PermissionRequest" key to the "hooks" object in .claude/settings.json.',
90
+ description: 'Automatically approves read-only permission requests (Read, Glob, Grep) without user confirmation.',
91
+ };
92
+ }
93
+ // ---------------------------------------------------------------------------
94
+ // Public API
95
+ // ---------------------------------------------------------------------------
96
+ /**
97
+ * Generates a Claude Code hook configuration for the given template.
98
+ * `notification-desktop` auto-detects the current platform via process.platform.
99
+ */
100
+ export function generateHookTemplate(opts) {
101
+ const { template, notificationMatcher } = opts;
102
+ switch (template) {
103
+ case 'notification-macos':
104
+ return buildMacosTemplate(notificationMatcher);
105
+ case 'notification-linux':
106
+ return buildLinuxTemplate(notificationMatcher);
107
+ case 'notification-windows':
108
+ return buildWindowsTemplate(notificationMatcher);
109
+ case 'notification-desktop':
110
+ return buildDesktopTemplate(notificationMatcher);
111
+ case 'instructions-loaded-debug':
112
+ return buildInstructionsLoadedDebugTemplate();
113
+ case 'permission-auto-approve-readonly':
114
+ return buildPermissionAutoApproveReadonlyTemplate();
115
+ /* v8 ignore next 3 */
116
+ default: {
117
+ const _exhaustive = template;
118
+ throw new Error(`Unknown hook template: ${String(_exhaustive)}`);
119
+ }
120
+ }
121
+ }
122
+ /**
123
+ * Merges a new hook config into an existing settings object without overwriting.
124
+ * Existing hooks for the same event type are preserved (array merge).
125
+ */
126
+ export function mergeHookConfig(existing, newHook) {
127
+ const existingHooks = (existing.hooks ?? {});
128
+ const merged = { ...existingHooks };
129
+ for (const [eventType, entries] of Object.entries(newHook.hooks)) {
130
+ const current = merged[eventType] ?? [];
131
+ merged[eventType] = [...current, ...entries];
132
+ }
133
+ return { ...existing, hooks: merged };
134
+ }
135
+ /**
136
+ * Returns all valid HookTemplateName values (for use in Zod schemas and descriptions).
137
+ */
138
+ export function listHookTemplateNames() {
139
+ return [
140
+ 'notification-macos',
141
+ 'notification-linux',
142
+ 'notification-windows',
143
+ 'notification-desktop',
144
+ 'instructions-loaded-debug',
145
+ 'permission-auto-approve-readonly',
146
+ ];
147
+ }
148
+ //# sourceMappingURL=hook-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hook-templates.js","sourceRoot":"","sources":["../../../src/engine/hooks/hook-templates.ts"],"names":[],"mappings":"AAAA,mGAAmG;AAUnG,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,SAAS,sBAAsB,CAC7B,OAAe,EACf,OAAwC;IAExC,OAAO;QACL,OAAO,EAAE,OAAO,IAAI,EAAE;QACtB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAwC;IAClE,OAAO;QACL,KAAK,EAAE;YACL,YAAY,EAAE;gBACZ,sBAAsB,CACpB,wFAAwF,EACxF,OAAO,CACR;aACF;SACF;QACD,iBAAiB,EAAE,4EAA4E;QAC/F,WAAW,EAAE,0EAA0E;KACxF,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAwC;IAClE,OAAO;QACL,KAAK,EAAE;YACL,YAAY,EAAE;gBACZ,sBAAsB,CAAC,mDAAmD,EAAE,OAAO,CAAC;aACrF;SACF;QACD,iBAAiB,EAAE,4EAA4E;QAC/F,WAAW,EACT,oGAAoG;KACvG,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAwC;IACpE,MAAM,OAAO,GACX,uGAAuG;QACvG,mFAAmF,CAAC;IACtF,OAAO;QACL,KAAK,EAAE;YACL,YAAY,EAAE,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;SACzD;QACD,iBAAiB,EAAE,4EAA4E;QAC/F,WAAW,EAAE,iFAAiF;KAC/F,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAwC;IACpE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IACD,kEAAkE;IAClE,OAAO,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,oCAAoC;IAC3C,OAAO;QACL,KAAK,EAAE;YACL,kBAAkB,EAAE;gBAClB;oBACE,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EACL,sHAAsH;yBACzH;qBACF;iBACF;aACF;SACF;QACD,iBAAiB,EACf,kFAAkF;QACpF,WAAW,EACT,sHAAsH;KACzH,CAAC;AACJ,CAAC;AAED,SAAS,0CAA0C;IACjD,OAAO;QACL,KAAK,EAAE;YACL,iBAAiB,EAAE;gBACjB;oBACE,OAAO,EAAE,gBAAgB;oBACzB,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,SAAS;4BACf,OAAO,EACL,wFAAwF;yBAC3F;qBACF;iBACF;aACF;SACF;QACD,iBAAiB,EACf,iFAAiF;QACnF,WAAW,EACT,oGAAoG;KACvG,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAyB;IAC5D,MAAM,EAAE,QAAQ,EAAE,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAE/C,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,oBAAoB;YACvB,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QACjD,KAAK,oBAAoB;YACvB,OAAO,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QACjD,KAAK,sBAAsB;YACzB,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QACnD,KAAK,sBAAsB;YACzB,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;QACnD,KAAK,2BAA2B;YAC9B,OAAO,oCAAoC,EAAE,CAAC;QAChD,KAAK,kCAAkC;YACrC,OAAO,0CAA0C,EAAE,CAAC;QACtD,sBAAsB;QACtB,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,QAAQ,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,0BAA0B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAiC,EACjC,OAA4B;IAE5B,MAAM,aAAa,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAA0C,CAAC;IACtF,MAAM,MAAM,GAA0C,EAAE,GAAG,aAAa,EAAE,CAAC;IAE3E,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,oBAAoB;QACpB,oBAAoB;QACpB,sBAAsB;QACtB,sBAAsB;QACtB,2BAA2B;QAC3B,kCAAkC;KACnC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { PlanModeEvent } from '../../types/index.js';
2
+ /**
3
+ * Reads CLAUDE_TOOL_NAME and CLAUDE_TOOL_INPUT from the environment
4
+ * and returns a PlanModeEvent describing the current tool invocation.
5
+ *
6
+ * This is designed to be called from Claude Code hook scripts that set
7
+ * these env vars before invoking the hook handler.
8
+ */
9
+ export declare function detectPlanModeEvent(): PlanModeEvent;
10
+ /**
11
+ * Returns true when the given tool name corresponds to entering Plan Mode.
12
+ */
13
+ export declare function isEnterPlanMode(toolName: string): boolean;
14
+ /**
15
+ * Returns true when the given tool name corresponds to exiting Plan Mode.
16
+ */
17
+ export declare function isExitPlanMode(toolName: string): boolean;
18
+ /**
19
+ * Attempts to extract a human-readable task description from the JSON-encoded
20
+ * CLAUDE_TOOL_INPUT string. Returns null when the input is empty or cannot
21
+ * be parsed, or when no recognisable description field is present.
22
+ *
23
+ * Claude Code's Task tool input has the shape: { description: string, ... }
24
+ * We also fall back to a `prompt`, `task`, or `content` field.
25
+ */
26
+ export declare function extractTaskDescription(toolInput: string): string | null;
27
+ //# sourceMappingURL=plan-mode-detector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-detector.d.ts","sourceRoot":"","sources":["../../../src/engine/hooks/plan-mode-detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAa1D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,IAAI,aAAa,CAKnD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA4BvE"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Names of Claude Code tools that indicate entering Plan Mode.
3
+ * The main "Task" tool is how Claude enters plan mode; "plan" is an alias.
4
+ */
5
+ const ENTER_PLAN_MODE_TOOLS = ['Task'];
6
+ /**
7
+ * Names of Claude Code tools that indicate exiting Plan Mode.
8
+ */
9
+ const EXIT_PLAN_MODE_TOOLS = ['exit_plan_mode'];
10
+ /**
11
+ * Reads CLAUDE_TOOL_NAME and CLAUDE_TOOL_INPUT from the environment
12
+ * and returns a PlanModeEvent describing the current tool invocation.
13
+ *
14
+ * This is designed to be called from Claude Code hook scripts that set
15
+ * these env vars before invoking the hook handler.
16
+ */
17
+ export function detectPlanModeEvent() {
18
+ const toolName = process.env.CLAUDE_TOOL_NAME ?? '';
19
+ const toolInputRaw = process.env.CLAUDE_TOOL_INPUT ?? '';
20
+ const taskDescription = extractTaskDescription(toolInputRaw);
21
+ return { toolName, taskDescription };
22
+ }
23
+ /**
24
+ * Returns true when the given tool name corresponds to entering Plan Mode.
25
+ */
26
+ export function isEnterPlanMode(toolName) {
27
+ return ENTER_PLAN_MODE_TOOLS.includes(toolName);
28
+ }
29
+ /**
30
+ * Returns true when the given tool name corresponds to exiting Plan Mode.
31
+ */
32
+ export function isExitPlanMode(toolName) {
33
+ return EXIT_PLAN_MODE_TOOLS.includes(toolName);
34
+ }
35
+ /**
36
+ * Attempts to extract a human-readable task description from the JSON-encoded
37
+ * CLAUDE_TOOL_INPUT string. Returns null when the input is empty or cannot
38
+ * be parsed, or when no recognisable description field is present.
39
+ *
40
+ * Claude Code's Task tool input has the shape: { description: string, ... }
41
+ * We also fall back to a `prompt`, `task`, or `content` field.
42
+ */
43
+ export function extractTaskDescription(toolInput) {
44
+ if (!toolInput.trim()) {
45
+ return null;
46
+ }
47
+ let parsed;
48
+ try {
49
+ parsed = JSON.parse(toolInput);
50
+ }
51
+ catch {
52
+ // Not JSON — treat the raw string as the description if it is short enough
53
+ const trimmed = toolInput.trim();
54
+ return trimmed.length > 0 && trimmed.length <= 2000 ? trimmed : null;
55
+ }
56
+ if (typeof parsed !== 'object' || parsed === null) {
57
+ return null;
58
+ }
59
+ const obj = parsed;
60
+ for (const key of ['description', 'prompt', 'task', 'content']) {
61
+ const val = obj[key];
62
+ if (typeof val === 'string' && val.trim().length > 0) {
63
+ return val.trim();
64
+ }
65
+ }
66
+ return null;
67
+ }
68
+ //# sourceMappingURL=plan-mode-detector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-detector.js","sourceRoot":"","sources":["../../../src/engine/hooks/plan-mode-detector.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,qBAAqB,GAAsB,CAAC,MAAM,CAAC,CAAC;AAE1D;;GAEG;AACH,MAAM,oBAAoB,GAAsB,CAAC,gBAAgB,CAAC,CAAC;AAEnE;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;IACpD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC;IACzD,MAAM,eAAe,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC7D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC;AACvC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,qBAAqB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiB;IACtD,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QACP,2EAA2E;QAC3E,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,CAAC;IAED,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAClD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAiC,CAAC;IAE9C,KAAK,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC;QAC/D,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { PlanModeHookScripts } from '../../types/index.js';
2
+ /**
3
+ * Returns the content of the two bash scripts that integrate Planu with
4
+ * Claude Code's Plan Mode hooks:
5
+ *
6
+ * - preScript: called by PreToolUse when tool name is "Task" (entering Plan Mode)
7
+ * - postScript: called by PostToolUse when tool name is "exit_plan_mode"
8
+ */
9
+ export declare function buildPlanModeHookScripts(): PlanModeHookScripts;
10
+ //# sourceMappingURL=plan-mode-scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-scripts.d.ts","sourceRoot":"","sources":["../../../src/engine/hooks/plan-mode-scripts.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE;;;;;;GAMG;AACH,wBAAgB,wBAAwB,IAAI,mBAAmB,CAI9D"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Returns the content of the two bash scripts that integrate Planu with
3
+ * Claude Code's Plan Mode hooks:
4
+ *
5
+ * - preScript: called by PreToolUse when tool name is "Task" (entering Plan Mode)
6
+ * - postScript: called by PostToolUse when tool name is "exit_plan_mode"
7
+ */
8
+ export function buildPlanModeHookScripts() {
9
+ const preScript = buildPreScript();
10
+ const postScript = buildPostScript();
11
+ return { preScript, postScript };
12
+ }
13
+ function buildPreScript() {
14
+ return [
15
+ '#!/usr/bin/env bash',
16
+ '# planu-pre-plan.sh — Auto-generated by Planu (SPEC-262)',
17
+ '# Called by Claude Code PreToolUse hook when entering Plan Mode (Task tool).',
18
+ '# Injects project context into .planu/plan-context.md',
19
+ '',
20
+ 'PROJECT_PATH="${CLAUDE_PROJECT_DIR:-$(pwd)}"',
21
+ '',
22
+ 'node -e "',
23
+ "import('@planu/cli/dist/engine/hooks/context-injector.js')",
24
+ ' .then(({ injectPlanContext }) =>',
25
+ ' injectPlanContext(process.env.PROJECT_PATH || process.cwd(), process.env.CLAUDE_TOOL_INPUT || null)',
26
+ ' )',
27
+ ' .catch(() => {});',
28
+ '" PROJECT_PATH="$PROJECT_PATH" 2>/dev/null || true',
29
+ '',
30
+ ].join('\n');
31
+ }
32
+ function buildPostScript() {
33
+ return [
34
+ '#!/usr/bin/env bash',
35
+ '# planu-post-plan.sh — Auto-generated by Planu (SPEC-262)',
36
+ '# Called by Claude Code PostToolUse hook when exiting Plan Mode.',
37
+ '# Appends a suggestion to call `facilitate` with plan findings.',
38
+ '',
39
+ "echo '---'",
40
+ "echo 'Planu: Plan Mode exited.'",
41
+ "echo 'Tip: call `facilitate` with your findings to create a spec, or `create_spec` directly.'",
42
+ '',
43
+ ].join('\n');
44
+ }
45
+ //# sourceMappingURL=plan-mode-scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan-mode-scripts.js","sourceRoot":"","sources":["../../../src/engine/hooks/plan-mode-scripts.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;IACrC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;AACnC,CAAC;AAED,SAAS,cAAc;IACrB,OAAO;QACL,qBAAqB;QACrB,0DAA0D;QAC1D,8EAA8E;QAC9E,uDAAuD;QACvD,EAAE;QACF,8CAA8C;QAC9C,EAAE;QACF,WAAW;QACX,4DAA4D;QAC5D,oCAAoC;QACpC,yGAAyG;QACzG,KAAK;QACL,qBAAqB;QACrB,oDAAoD;QACpD,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,SAAS,eAAe;IACtB,OAAO;QACL,qBAAqB;QACrB,2DAA2D;QAC3D,kEAAkE;QAClE,iEAAiE;QACjE,EAAE;QACF,YAAY;QACZ,iCAAiC;QACjC,+FAA+F;QAC/F,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { ClaudeProfile } from '../../types/hooks-advanced.js';
2
+ /**
3
+ * Generates the "planu-safe" profile:
4
+ * - Approval on-request for mutations
5
+ * - Medium effort default
6
+ * - Allows common read/edit tools; denies destructive git ops without spec
7
+ */
8
+ export declare function generatePlanuSafeProfile(): ClaudeProfile;
9
+ /**
10
+ * Generates the "planu-fast" profile:
11
+ * - Auto-approve all Planu tools and read ops
12
+ * - Low effort for reads, medium for writes
13
+ * - Allows all Planu tools without interruption
14
+ */
15
+ export declare function generatePlanuFastProfile(): ClaudeProfile;
16
+ /**
17
+ * Reads .claude/settings.json at settingsPath, merges profiles into it,
18
+ * and writes it back. Idempotent: profiles with the same name are replaced.
19
+ */
20
+ export declare function mergeProfilesIntoSettings(settingsPath: string, profiles: ClaudeProfile[]): void;
21
+ //# sourceMappingURL=profile-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-generator.d.ts","sourceRoot":"","sources":["../../../src/engine/hooks/profile-generator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAMnE;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,aAAa,CAwBxD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,IAAI,aAAa,CAYxD;AAMD;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CA4B/F"}
@@ -0,0 +1,90 @@
1
+ // engine/hooks/profile-generator.ts — Claude Code profile generator (SPEC-265)
2
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
3
+ // ---------------------------------------------------------------------------
4
+ // Profile builders
5
+ // ---------------------------------------------------------------------------
6
+ /**
7
+ * Generates the "planu-safe" profile:
8
+ * - Approval on-request for mutations
9
+ * - Medium effort default
10
+ * - Allows common read/edit tools; denies destructive git ops without spec
11
+ */
12
+ export function generatePlanuSafeProfile() {
13
+ return {
14
+ name: 'planu-safe',
15
+ permissions: {
16
+ allow: [
17
+ 'mcp__planu__*',
18
+ 'Read',
19
+ 'Glob',
20
+ 'Grep',
21
+ 'Edit',
22
+ 'Write',
23
+ 'Bash(git status:*)',
24
+ 'Bash(git log:*)',
25
+ 'Bash(git diff:*)',
26
+ 'Bash(pnpm typecheck:*)',
27
+ 'Bash(pnpm lint:*)',
28
+ 'Bash(pnpm test:*)',
29
+ ],
30
+ deny: ['Bash(git push --force:*)', 'Bash(git reset --hard:*)', 'Bash(git clean -f:*)'],
31
+ },
32
+ env: {
33
+ PLANU_EFFORT_DEFAULT: 'medium',
34
+ },
35
+ };
36
+ }
37
+ /**
38
+ * Generates the "planu-fast" profile:
39
+ * - Auto-approve all Planu tools and read ops
40
+ * - Low effort for reads, medium for writes
41
+ * - Allows all Planu tools without interruption
42
+ */
43
+ export function generatePlanuFastProfile() {
44
+ return {
45
+ name: 'planu-fast',
46
+ permissions: {
47
+ allow: ['mcp__planu__*', 'Read', 'Glob', 'Grep', 'Edit', 'Write', 'Bash(*)'],
48
+ deny: [],
49
+ },
50
+ env: {
51
+ PLANU_EFFORT_DEFAULT: 'low',
52
+ PLANU_AUTO_APPROVE: '1',
53
+ },
54
+ };
55
+ }
56
+ // ---------------------------------------------------------------------------
57
+ // Settings merge
58
+ // ---------------------------------------------------------------------------
59
+ /**
60
+ * Reads .claude/settings.json at settingsPath, merges profiles into it,
61
+ * and writes it back. Idempotent: profiles with the same name are replaced.
62
+ */
63
+ export function mergeProfilesIntoSettings(settingsPath, profiles) {
64
+ let settings = {};
65
+ /* v8 ignore start */
66
+ if (existsSync(settingsPath)) {
67
+ try {
68
+ const raw = readFileSync(settingsPath, 'utf8');
69
+ settings = JSON.parse(raw);
70
+ }
71
+ catch {
72
+ settings = {};
73
+ }
74
+ }
75
+ /* v8 ignore stop */
76
+ const existing = (settings.profiles ?? []);
77
+ const merged = [...existing];
78
+ for (const profile of profiles) {
79
+ const idx = merged.findIndex((p) => p.name === profile.name);
80
+ if (idx >= 0) {
81
+ merged[idx] = profile;
82
+ }
83
+ else {
84
+ merged.push(profile);
85
+ }
86
+ }
87
+ settings.profiles = merged;
88
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2), 'utf8');
89
+ }
90
+ //# sourceMappingURL=profile-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile-generator.js","sourceRoot":"","sources":["../../../src/engine/hooks/profile-generator.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAIlE,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE;YACX,KAAK,EAAE;gBACL,eAAe;gBACf,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,oBAAoB;gBACpB,iBAAiB;gBACjB,kBAAkB;gBAClB,wBAAwB;gBACxB,mBAAmB;gBACnB,mBAAmB;aACpB;YACD,IAAI,EAAE,CAAC,0BAA0B,EAAE,0BAA0B,EAAE,sBAAsB,CAAC;SACvF;QACD,GAAG,EAAE;YACH,oBAAoB,EAAE,QAAQ;SAC/B;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB;IACtC,OAAO;QACL,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE;YACX,KAAK,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC;YAC5E,IAAI,EAAE,EAAE;SACT;QACD,GAAG,EAAE;YACH,oBAAoB,EAAE,KAAK;YAC3B,kBAAkB,EAAE,GAAG;SACxB;KACF,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,YAAoB,EAAE,QAAyB;IACvF,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAE3C,qBAAqB;IACrB,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;YAC/C,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,GAAG,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IACD,oBAAoB;IAEpB,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAoB,CAAC;IAC9D,MAAM,MAAM,GAAoB,CAAC,GAAG,QAAQ,CAAC,CAAC;IAE9C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC3B,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACzE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/engine/ide-config/generators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAkM9B;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,WAAW,EACrB,WAAW,EAAE,MAAM,GAClB,kBAAkB,CAGpB"}
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/engine/ide-config/generators.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEV,aAAa,EACb,cAAc,EACd,WAAW,EACX,kBAAkB,EACnB,MAAM,sBAAsB,CAAC;AAsO9B;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,WAAW,EACrB,WAAW,EAAE,MAAM,GAClB,kBAAkB,CAGpB"}
@@ -1,5 +1,5 @@
1
1
  // engine/ide-config/generators.ts — Per-IDE config generators (SPEC-080 AC-02..AC-08)
2
- import { resolveConfigPath, buildServerEntry } from './path-resolver.js';
2
+ import { resolveConfigPath, buildServerEntry, getNpxCommand } from './path-resolver.js';
3
3
  /**
4
4
  * Generate JSON-based config for IDEs that use a standard mcpServers/servers wrapper.
5
5
  */
@@ -125,6 +125,32 @@ function generateNeovimConfig(ide, scope, platform, projectPath) {
125
125
  `See comments in the generated file for integration instructions.`,
126
126
  };
127
127
  }
128
+ /**
129
+ * Generate OpenCode config (SPEC-277).
130
+ * opencode.json uses { "mcp": { "planu": { "type": "local", "command": [...] } } }
131
+ * Also notes that .claude/skills/ are natively compatible (opencode searches that path too).
132
+ */
133
+ function generateOpencodeConfig(ide, scope, platform, projectPath) {
134
+ const filePath = resolveConfigPath(ide, scope, platform, projectPath);
135
+ const npx = getNpxCommand(platform);
136
+ const config = {
137
+ $schema: 'https://opencode.ai/config.json',
138
+ mcp: {
139
+ planu: {
140
+ type: 'local',
141
+ command: [npx, '-y', '@planu/cli'],
142
+ enabled: true,
143
+ },
144
+ },
145
+ };
146
+ return {
147
+ filePath,
148
+ content: JSON.stringify(config, null, 2),
149
+ instructions: `OpenCode config generated at ${filePath}. ` +
150
+ `Run 'opencode' in your project directory to start. ` +
151
+ `Your existing .claude/skills/ are automatically compatible with OpenCode — no duplication needed.`,
152
+ };
153
+ }
128
154
  /** Map of IDE-specific generators */
129
155
  const IDE_GENERATORS = {
130
156
  vscode: generateVscodeConfig,
@@ -135,6 +161,7 @@ const IDE_GENERATORS = {
135
161
  'claude-code': generateClaudeCodeConfig,
136
162
  neovim: generateNeovimConfig,
137
163
  chatgpt: generateJsonConfig,
164
+ opencode: generateOpencodeConfig,
138
165
  };
139
166
  /**
140
167
  * Generate config for a specific IDE.