@planu/cli 1.1.1 → 1.2.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 (459) hide show
  1. package/dist/config/license-plans.json +110 -9
  2. package/dist/config/spec-cookbook.json +341 -0
  3. package/dist/engine/asana-sync.d.ts +12 -0
  4. package/dist/engine/asana-sync.d.ts.map +1 -0
  5. package/dist/engine/asana-sync.js +72 -0
  6. package/dist/engine/asana-sync.js.map +1 -0
  7. package/dist/engine/code-impact-analyzer.d.ts +6 -0
  8. package/dist/engine/code-impact-analyzer.d.ts.map +1 -0
  9. package/dist/engine/code-impact-analyzer.js +152 -0
  10. package/dist/engine/code-impact-analyzer.js.map +1 -0
  11. package/dist/engine/compliance-reporter.d.ts +11 -0
  12. package/dist/engine/compliance-reporter.d.ts.map +1 -0
  13. package/dist/engine/compliance-reporter.js +245 -0
  14. package/dist/engine/compliance-reporter.js.map +1 -0
  15. package/dist/engine/context-manager.d.ts +7 -0
  16. package/dist/engine/context-manager.d.ts.map +1 -0
  17. package/dist/engine/context-manager.js +76 -0
  18. package/dist/engine/context-manager.js.map +1 -0
  19. package/dist/engine/cost-budget-manager.d.ts +10 -0
  20. package/dist/engine/cost-budget-manager.d.ts.map +1 -0
  21. package/dist/engine/cost-budget-manager.js +165 -0
  22. package/dist/engine/cost-budget-manager.js.map +1 -0
  23. package/dist/engine/dependency-impact-analyzer.d.ts +14 -0
  24. package/dist/engine/dependency-impact-analyzer.d.ts.map +1 -0
  25. package/dist/engine/dependency-impact-analyzer.js +133 -0
  26. package/dist/engine/dependency-impact-analyzer.js.map +1 -0
  27. package/dist/engine/diff-spec-generator.d.ts +6 -0
  28. package/dist/engine/diff-spec-generator.d.ts.map +1 -0
  29. package/dist/engine/diff-spec-generator.js +181 -0
  30. package/dist/engine/diff-spec-generator.js.map +1 -0
  31. package/dist/engine/drift-monitor.d.ts +5 -0
  32. package/dist/engine/drift-monitor.d.ts.map +1 -0
  33. package/dist/engine/drift-monitor.js +92 -0
  34. package/dist/engine/drift-monitor.js.map +1 -0
  35. package/dist/engine/global-rules-manager.d.ts +10 -0
  36. package/dist/engine/global-rules-manager.d.ts.map +1 -0
  37. package/dist/engine/global-rules-manager.js +214 -0
  38. package/dist/engine/global-rules-manager.js.map +1 -0
  39. package/dist/engine/knowledge-base.d.ts +12 -0
  40. package/dist/engine/knowledge-base.d.ts.map +1 -0
  41. package/dist/engine/knowledge-base.js +250 -0
  42. package/dist/engine/knowledge-base.js.map +1 -0
  43. package/dist/engine/monday-sync.d.ts +10 -0
  44. package/dist/engine/monday-sync.d.ts.map +1 -0
  45. package/dist/engine/monday-sync.js +56 -0
  46. package/dist/engine/monday-sync.js.map +1 -0
  47. package/dist/engine/notion-sync.d.ts +13 -0
  48. package/dist/engine/notion-sync.d.ts.map +1 -0
  49. package/dist/engine/notion-sync.js +87 -0
  50. package/dist/engine/notion-sync.js.map +1 -0
  51. package/dist/engine/onboarding-engine.d.ts +11 -0
  52. package/dist/engine/onboarding-engine.d.ts.map +1 -0
  53. package/dist/engine/onboarding-engine.js +575 -0
  54. package/dist/engine/onboarding-engine.js.map +1 -0
  55. package/dist/engine/parallel-safety-engine.d.ts +8 -0
  56. package/dist/engine/parallel-safety-engine.d.ts.map +1 -0
  57. package/dist/engine/parallel-safety-engine.js +106 -0
  58. package/dist/engine/parallel-safety-engine.js.map +1 -0
  59. package/dist/engine/schema-generator.d.ts +6 -0
  60. package/dist/engine/schema-generator.d.ts.map +1 -0
  61. package/dist/engine/schema-generator.js +321 -0
  62. package/dist/engine/schema-generator.js.map +1 -0
  63. package/dist/engine/spec-cookbook.d.ts +12 -0
  64. package/dist/engine/spec-cookbook.d.ts.map +1 -0
  65. package/dist/engine/spec-cookbook.js +176 -0
  66. package/dist/engine/spec-cookbook.js.map +1 -0
  67. package/dist/engine/spec-diff-engine.d.ts +8 -0
  68. package/dist/engine/spec-diff-engine.d.ts.map +1 -0
  69. package/dist/engine/spec-diff-engine.js +321 -0
  70. package/dist/engine/spec-diff-engine.js.map +1 -0
  71. package/dist/engine/spec-hooks-engine.d.ts +12 -0
  72. package/dist/engine/spec-hooks-engine.d.ts.map +1 -0
  73. package/dist/engine/spec-hooks-engine.js +79 -0
  74. package/dist/engine/spec-hooks-engine.js.map +1 -0
  75. package/dist/engine/spec-lint-engine.d.ts +6 -0
  76. package/dist/engine/spec-lint-engine.d.ts.map +1 -0
  77. package/dist/engine/spec-lint-engine.js +164 -0
  78. package/dist/engine/spec-lint-engine.js.map +1 -0
  79. package/dist/engine/spec-scheduler.d.ts +13 -0
  80. package/dist/engine/spec-scheduler.d.ts.map +1 -0
  81. package/dist/engine/spec-scheduler.js +154 -0
  82. package/dist/engine/spec-scheduler.js.map +1 -0
  83. package/dist/engine/spec-source-sync.d.ts +14 -0
  84. package/dist/engine/spec-source-sync.d.ts.map +1 -0
  85. package/dist/engine/spec-source-sync.js +148 -0
  86. package/dist/engine/spec-source-sync.js.map +1 -0
  87. package/dist/engine/tech-debt-manager.d.ts +12 -0
  88. package/dist/engine/tech-debt-manager.d.ts.map +1 -0
  89. package/dist/engine/tech-debt-manager.js +152 -0
  90. package/dist/engine/tech-debt-manager.js.map +1 -0
  91. package/dist/engine/validation-loop.d.ts +4 -0
  92. package/dist/engine/validation-loop.d.ts.map +1 -0
  93. package/dist/engine/validation-loop.js +133 -0
  94. package/dist/engine/validation-loop.js.map +1 -0
  95. package/dist/engine/webhook-server.d.ts +19 -0
  96. package/dist/engine/webhook-server.d.ts.map +1 -0
  97. package/dist/engine/webhook-server.js +169 -0
  98. package/dist/engine/webhook-server.js.map +1 -0
  99. package/dist/engine/workspace-manager.d.ts +8 -0
  100. package/dist/engine/workspace-manager.d.ts.map +1 -0
  101. package/dist/engine/workspace-manager.js +255 -0
  102. package/dist/engine/workspace-manager.js.map +1 -0
  103. package/dist/index.js +50 -0
  104. package/dist/index.js.map +1 -1
  105. package/dist/storage/api-surfaces-store.d.ts +8 -0
  106. package/dist/storage/api-surfaces-store.d.ts.map +1 -0
  107. package/dist/storage/api-surfaces-store.js +31 -0
  108. package/dist/storage/api-surfaces-store.js.map +1 -0
  109. package/dist/storage/asana-config-store.d.ts +9 -0
  110. package/dist/storage/asana-config-store.d.ts.map +1 -0
  111. package/dist/storage/asana-config-store.js +51 -0
  112. package/dist/storage/asana-config-store.js.map +1 -0
  113. package/dist/storage/context-config-store.d.ts +4 -0
  114. package/dist/storage/context-config-store.d.ts.map +1 -0
  115. package/dist/storage/context-config-store.js +20 -0
  116. package/dist/storage/context-config-store.js.map +1 -0
  117. package/dist/storage/cost-budget-store.d.ts +6 -0
  118. package/dist/storage/cost-budget-store.d.ts.map +1 -0
  119. package/dist/storage/cost-budget-store.js +42 -0
  120. package/dist/storage/cost-budget-store.js.map +1 -0
  121. package/dist/storage/drift-monitor-store.d.ts +9 -0
  122. package/dist/storage/drift-monitor-store.d.ts.map +1 -0
  123. package/dist/storage/drift-monitor-store.js +45 -0
  124. package/dist/storage/drift-monitor-store.js.map +1 -0
  125. package/dist/storage/monday-config-store.d.ts +9 -0
  126. package/dist/storage/monday-config-store.d.ts.map +1 -0
  127. package/dist/storage/monday-config-store.js +51 -0
  128. package/dist/storage/monday-config-store.js.map +1 -0
  129. package/dist/storage/notion-config-store.d.ts +9 -0
  130. package/dist/storage/notion-config-store.d.ts.map +1 -0
  131. package/dist/storage/notion-config-store.js +51 -0
  132. package/dist/storage/notion-config-store.js.map +1 -0
  133. package/dist/storage/onboarding-store.d.ts +4 -0
  134. package/dist/storage/onboarding-store.d.ts.map +1 -0
  135. package/dist/storage/onboarding-store.js +14 -0
  136. package/dist/storage/onboarding-store.js.map +1 -0
  137. package/dist/storage/retention-policy-store.d.ts +4 -0
  138. package/dist/storage/retention-policy-store.d.ts.map +1 -0
  139. package/dist/storage/retention-policy-store.js +20 -0
  140. package/dist/storage/retention-policy-store.js.map +1 -0
  141. package/dist/storage/spec-bindings-store.d.ts +8 -0
  142. package/dist/storage/spec-bindings-store.d.ts.map +1 -0
  143. package/dist/storage/spec-bindings-store.js +44 -0
  144. package/dist/storage/spec-bindings-store.js.map +1 -0
  145. package/dist/storage/spec-hooks-store.d.ts +8 -0
  146. package/dist/storage/spec-hooks-store.d.ts.map +1 -0
  147. package/dist/storage/spec-hooks-store.js +56 -0
  148. package/dist/storage/spec-hooks-store.js.map +1 -0
  149. package/dist/storage/spec-lint-rules-store.d.ts +5 -0
  150. package/dist/storage/spec-lint-rules-store.d.ts.map +1 -0
  151. package/dist/storage/spec-lint-rules-store.js +40 -0
  152. package/dist/storage/spec-lint-rules-store.js.map +1 -0
  153. package/dist/storage/tech-debt-store.d.ts +12 -0
  154. package/dist/storage/tech-debt-store.d.ts.map +1 -0
  155. package/dist/storage/tech-debt-store.js +51 -0
  156. package/dist/storage/tech-debt-store.js.map +1 -0
  157. package/dist/storage/webhook-server-store.d.ts +5 -0
  158. package/dist/storage/webhook-server-store.d.ts.map +1 -0
  159. package/dist/storage/webhook-server-store.js +14 -0
  160. package/dist/storage/webhook-server-store.js.map +1 -0
  161. package/dist/tools/asana-handler.d.ts +6 -0
  162. package/dist/tools/asana-handler.d.ts.map +1 -0
  163. package/dist/tools/asana-handler.js +199 -0
  164. package/dist/tools/asana-handler.js.map +1 -0
  165. package/dist/tools/code-impact-handler.d.ts +6 -0
  166. package/dist/tools/code-impact-handler.d.ts.map +1 -0
  167. package/dist/tools/code-impact-handler.js +158 -0
  168. package/dist/tools/code-impact-handler.js.map +1 -0
  169. package/dist/tools/compliance-audit-handler.d.ts +6 -0
  170. package/dist/tools/compliance-audit-handler.d.ts.map +1 -0
  171. package/dist/tools/compliance-audit-handler.js +87 -0
  172. package/dist/tools/compliance-audit-handler.js.map +1 -0
  173. package/dist/tools/context-manager-handler.d.ts +8 -0
  174. package/dist/tools/context-manager-handler.d.ts.map +1 -0
  175. package/dist/tools/context-manager-handler.js +180 -0
  176. package/dist/tools/context-manager-handler.js.map +1 -0
  177. package/dist/tools/cost-budget-handler.d.ts +7 -0
  178. package/dist/tools/cost-budget-handler.d.ts.map +1 -0
  179. package/dist/tools/cost-budget-handler.js +242 -0
  180. package/dist/tools/cost-budget-handler.js.map +1 -0
  181. package/dist/tools/dependency-impact-handler.d.ts +6 -0
  182. package/dist/tools/dependency-impact-handler.d.ts.map +1 -0
  183. package/dist/tools/dependency-impact-handler.js +100 -0
  184. package/dist/tools/dependency-impact-handler.js.map +1 -0
  185. package/dist/tools/diff-spec-generator-handler.d.ts +22 -0
  186. package/dist/tools/diff-spec-generator-handler.d.ts.map +1 -0
  187. package/dist/tools/diff-spec-generator-handler.js +87 -0
  188. package/dist/tools/diff-spec-generator-handler.js.map +1 -0
  189. package/dist/tools/drift-monitor-handler.d.ts +25 -0
  190. package/dist/tools/drift-monitor-handler.d.ts.map +1 -0
  191. package/dist/tools/drift-monitor-handler.js +95 -0
  192. package/dist/tools/drift-monitor-handler.js.map +1 -0
  193. package/dist/tools/global-rules-handler.d.ts +17 -0
  194. package/dist/tools/global-rules-handler.d.ts.map +1 -0
  195. package/dist/tools/global-rules-handler.js +178 -0
  196. package/dist/tools/global-rules-handler.js.map +1 -0
  197. package/dist/tools/incoming-webhook-handler.d.ts +6 -0
  198. package/dist/tools/incoming-webhook-handler.d.ts.map +1 -0
  199. package/dist/tools/incoming-webhook-handler.js +247 -0
  200. package/dist/tools/incoming-webhook-handler.js.map +1 -0
  201. package/dist/tools/knowledge-base-handler.d.ts +7 -0
  202. package/dist/tools/knowledge-base-handler.d.ts.map +1 -0
  203. package/dist/tools/knowledge-base-handler.js +137 -0
  204. package/dist/tools/knowledge-base-handler.js.map +1 -0
  205. package/dist/tools/monday-handler.d.ts +6 -0
  206. package/dist/tools/monday-handler.d.ts.map +1 -0
  207. package/dist/tools/monday-handler.js +190 -0
  208. package/dist/tools/monday-handler.js.map +1 -0
  209. package/dist/tools/notion-handler.d.ts +6 -0
  210. package/dist/tools/notion-handler.d.ts.map +1 -0
  211. package/dist/tools/notion-handler.js +197 -0
  212. package/dist/tools/notion-handler.js.map +1 -0
  213. package/dist/tools/onboarding-handler.d.ts +7 -0
  214. package/dist/tools/onboarding-handler.d.ts.map +1 -0
  215. package/dist/tools/onboarding-handler.js +59 -0
  216. package/dist/tools/onboarding-handler.js.map +1 -0
  217. package/dist/tools/parallel-safety-handler.d.ts +7 -0
  218. package/dist/tools/parallel-safety-handler.d.ts.map +1 -0
  219. package/dist/tools/parallel-safety-handler.js +29 -0
  220. package/dist/tools/parallel-safety-handler.js.map +1 -0
  221. package/dist/tools/register-asana-tools.d.ts +3 -0
  222. package/dist/tools/register-asana-tools.d.ts.map +1 -0
  223. package/dist/tools/register-asana-tools.js +74 -0
  224. package/dist/tools/register-asana-tools.js.map +1 -0
  225. package/dist/tools/register-code-impact-tools.d.ts +3 -0
  226. package/dist/tools/register-code-impact-tools.d.ts.map +1 -0
  227. package/dist/tools/register-code-impact-tools.js +58 -0
  228. package/dist/tools/register-code-impact-tools.js.map +1 -0
  229. package/dist/tools/register-compliance-audit-tools.d.ts +3 -0
  230. package/dist/tools/register-compliance-audit-tools.d.ts.map +1 -0
  231. package/dist/tools/register-compliance-audit-tools.js +106 -0
  232. package/dist/tools/register-compliance-audit-tools.js.map +1 -0
  233. package/dist/tools/register-context-manager-tools.d.ts +3 -0
  234. package/dist/tools/register-context-manager-tools.d.ts.map +1 -0
  235. package/dist/tools/register-context-manager-tools.js +138 -0
  236. package/dist/tools/register-context-manager-tools.js.map +1 -0
  237. package/dist/tools/register-cost-budget-tools.d.ts +3 -0
  238. package/dist/tools/register-cost-budget-tools.d.ts.map +1 -0
  239. package/dist/tools/register-cost-budget-tools.js +98 -0
  240. package/dist/tools/register-cost-budget-tools.js.map +1 -0
  241. package/dist/tools/register-dependency-impact-tools.d.ts +3 -0
  242. package/dist/tools/register-dependency-impact-tools.d.ts.map +1 -0
  243. package/dist/tools/register-dependency-impact-tools.js +63 -0
  244. package/dist/tools/register-dependency-impact-tools.js.map +1 -0
  245. package/dist/tools/register-diff-spec-tools.d.ts +3 -0
  246. package/dist/tools/register-diff-spec-tools.d.ts.map +1 -0
  247. package/dist/tools/register-diff-spec-tools.js +55 -0
  248. package/dist/tools/register-diff-spec-tools.js.map +1 -0
  249. package/dist/tools/register-drift-monitor-tools.d.ts +3 -0
  250. package/dist/tools/register-drift-monitor-tools.d.ts.map +1 -0
  251. package/dist/tools/register-drift-monitor-tools.js +64 -0
  252. package/dist/tools/register-drift-monitor-tools.js.map +1 -0
  253. package/dist/tools/register-global-rules-tools.d.ts +3 -0
  254. package/dist/tools/register-global-rules-tools.d.ts.map +1 -0
  255. package/dist/tools/register-global-rules-tools.js +44 -0
  256. package/dist/tools/register-global-rules-tools.js.map +1 -0
  257. package/dist/tools/register-incoming-webhook-tools.d.ts +3 -0
  258. package/dist/tools/register-incoming-webhook-tools.d.ts.map +1 -0
  259. package/dist/tools/register-incoming-webhook-tools.js +50 -0
  260. package/dist/tools/register-incoming-webhook-tools.js.map +1 -0
  261. package/dist/tools/register-knowledge-base-tools.d.ts +3 -0
  262. package/dist/tools/register-knowledge-base-tools.d.ts.map +1 -0
  263. package/dist/tools/register-knowledge-base-tools.js +66 -0
  264. package/dist/tools/register-knowledge-base-tools.js.map +1 -0
  265. package/dist/tools/register-monday-tools.d.ts +3 -0
  266. package/dist/tools/register-monday-tools.d.ts.map +1 -0
  267. package/dist/tools/register-monday-tools.js +69 -0
  268. package/dist/tools/register-monday-tools.js.map +1 -0
  269. package/dist/tools/register-notion-tools.d.ts +3 -0
  270. package/dist/tools/register-notion-tools.d.ts.map +1 -0
  271. package/dist/tools/register-notion-tools.js +76 -0
  272. package/dist/tools/register-notion-tools.js.map +1 -0
  273. package/dist/tools/register-onboarding-tools.d.ts +3 -0
  274. package/dist/tools/register-onboarding-tools.d.ts.map +1 -0
  275. package/dist/tools/register-onboarding-tools.js +70 -0
  276. package/dist/tools/register-onboarding-tools.js.map +1 -0
  277. package/dist/tools/register-parallel-safety-tools.d.ts +3 -0
  278. package/dist/tools/register-parallel-safety-tools.d.ts.map +1 -0
  279. package/dist/tools/register-parallel-safety-tools.js +18 -0
  280. package/dist/tools/register-parallel-safety-tools.js.map +1 -0
  281. package/dist/tools/register-schema-generator-tools.d.ts +3 -0
  282. package/dist/tools/register-schema-generator-tools.d.ts.map +1 -0
  283. package/dist/tools/register-schema-generator-tools.js +46 -0
  284. package/dist/tools/register-schema-generator-tools.js.map +1 -0
  285. package/dist/tools/register-spec-cookbook-tools.d.ts +3 -0
  286. package/dist/tools/register-spec-cookbook-tools.d.ts.map +1 -0
  287. package/dist/tools/register-spec-cookbook-tools.js +90 -0
  288. package/dist/tools/register-spec-cookbook-tools.js.map +1 -0
  289. package/dist/tools/register-spec-diff-tools.d.ts +3 -0
  290. package/dist/tools/register-spec-diff-tools.d.ts.map +1 -0
  291. package/dist/tools/register-spec-diff-tools.js +67 -0
  292. package/dist/tools/register-spec-diff-tools.js.map +1 -0
  293. package/dist/tools/register-spec-hooks-tools.d.ts +3 -0
  294. package/dist/tools/register-spec-hooks-tools.d.ts.map +1 -0
  295. package/dist/tools/register-spec-hooks-tools.js +124 -0
  296. package/dist/tools/register-spec-hooks-tools.js.map +1 -0
  297. package/dist/tools/register-spec-lint-tools.d.ts +3 -0
  298. package/dist/tools/register-spec-lint-tools.d.ts.map +1 -0
  299. package/dist/tools/register-spec-lint-tools.js +79 -0
  300. package/dist/tools/register-spec-lint-tools.js.map +1 -0
  301. package/dist/tools/register-spec-scheduler-tools.d.ts +3 -0
  302. package/dist/tools/register-spec-scheduler-tools.d.ts.map +1 -0
  303. package/dist/tools/register-spec-scheduler-tools.js +73 -0
  304. package/dist/tools/register-spec-scheduler-tools.js.map +1 -0
  305. package/dist/tools/register-spec-source-tools.d.ts +3 -0
  306. package/dist/tools/register-spec-source-tools.d.ts.map +1 -0
  307. package/dist/tools/register-spec-source-tools.js +48 -0
  308. package/dist/tools/register-spec-source-tools.js.map +1 -0
  309. package/dist/tools/register-tech-debt-tools.d.ts +3 -0
  310. package/dist/tools/register-tech-debt-tools.d.ts.map +1 -0
  311. package/dist/tools/register-tech-debt-tools.js +95 -0
  312. package/dist/tools/register-tech-debt-tools.js.map +1 -0
  313. package/dist/tools/register-validation-loop-tools.d.ts +3 -0
  314. package/dist/tools/register-validation-loop-tools.d.ts.map +1 -0
  315. package/dist/tools/register-validation-loop-tools.js +77 -0
  316. package/dist/tools/register-validation-loop-tools.js.map +1 -0
  317. package/dist/tools/register-workspace-dashboard-tools.d.ts +3 -0
  318. package/dist/tools/register-workspace-dashboard-tools.d.ts.map +1 -0
  319. package/dist/tools/register-workspace-dashboard-tools.js +98 -0
  320. package/dist/tools/register-workspace-dashboard-tools.js.map +1 -0
  321. package/dist/tools/schema-generator-handler.d.ts +4 -0
  322. package/dist/tools/schema-generator-handler.d.ts.map +1 -0
  323. package/dist/tools/schema-generator-handler.js +129 -0
  324. package/dist/tools/schema-generator-handler.js.map +1 -0
  325. package/dist/tools/spec-cookbook-handler.d.ts +7 -0
  326. package/dist/tools/spec-cookbook-handler.d.ts.map +1 -0
  327. package/dist/tools/spec-cookbook-handler.js +83 -0
  328. package/dist/tools/spec-cookbook-handler.js.map +1 -0
  329. package/dist/tools/spec-hooks-handler.d.ts +7 -0
  330. package/dist/tools/spec-hooks-handler.d.ts.map +1 -0
  331. package/dist/tools/spec-hooks-handler.js +112 -0
  332. package/dist/tools/spec-hooks-handler.js.map +1 -0
  333. package/dist/tools/spec-lint-handler.d.ts +6 -0
  334. package/dist/tools/spec-lint-handler.d.ts.map +1 -0
  335. package/dist/tools/spec-lint-handler.js +165 -0
  336. package/dist/tools/spec-lint-handler.js.map +1 -0
  337. package/dist/tools/spec-scheduler-handler.d.ts +6 -0
  338. package/dist/tools/spec-scheduler-handler.d.ts.map +1 -0
  339. package/dist/tools/spec-scheduler-handler.js +108 -0
  340. package/dist/tools/spec-scheduler-handler.js.map +1 -0
  341. package/dist/tools/spec-source-handler.d.ts +21 -0
  342. package/dist/tools/spec-source-handler.d.ts.map +1 -0
  343. package/dist/tools/spec-source-handler.js +75 -0
  344. package/dist/tools/spec-source-handler.js.map +1 -0
  345. package/dist/tools/spec-visual-diff-handler.d.ts +7 -0
  346. package/dist/tools/spec-visual-diff-handler.d.ts.map +1 -0
  347. package/dist/tools/spec-visual-diff-handler.js +130 -0
  348. package/dist/tools/spec-visual-diff-handler.js.map +1 -0
  349. package/dist/tools/tech-debt-handler.d.ts +8 -0
  350. package/dist/tools/tech-debt-handler.d.ts.map +1 -0
  351. package/dist/tools/tech-debt-handler.js +150 -0
  352. package/dist/tools/tech-debt-handler.js.map +1 -0
  353. package/dist/tools/validation-loop-handler.d.ts +5 -0
  354. package/dist/tools/validation-loop-handler.d.ts.map +1 -0
  355. package/dist/tools/validation-loop-handler.js +59 -0
  356. package/dist/tools/validation-loop-handler.js.map +1 -0
  357. package/dist/tools/workspace-dashboard-handler.d.ts +8 -0
  358. package/dist/tools/workspace-dashboard-handler.d.ts.map +1 -0
  359. package/dist/tools/workspace-dashboard-handler.js +108 -0
  360. package/dist/tools/workspace-dashboard-handler.js.map +1 -0
  361. package/dist/types/code-impact.d.ts +57 -0
  362. package/dist/types/code-impact.d.ts.map +1 -0
  363. package/dist/types/code-impact.js +3 -0
  364. package/dist/types/code-impact.js.map +1 -0
  365. package/dist/types/compliance-audit.d.ts +55 -0
  366. package/dist/types/compliance-audit.d.ts.map +1 -0
  367. package/dist/types/compliance-audit.js +3 -0
  368. package/dist/types/compliance-audit.js.map +1 -0
  369. package/dist/types/context-manager.d.ts +57 -0
  370. package/dist/types/context-manager.d.ts.map +1 -0
  371. package/dist/types/context-manager.js +3 -0
  372. package/dist/types/context-manager.js.map +1 -0
  373. package/dist/types/cost-budget.d.ts +84 -0
  374. package/dist/types/cost-budget.d.ts.map +1 -0
  375. package/dist/types/cost-budget.js +3 -0
  376. package/dist/types/cost-budget.js.map +1 -0
  377. package/dist/types/dependency-impact.d.ts +45 -0
  378. package/dist/types/dependency-impact.d.ts.map +1 -0
  379. package/dist/types/dependency-impact.js +3 -0
  380. package/dist/types/dependency-impact.js.map +1 -0
  381. package/dist/types/diff-spec-types.d.ts +39 -0
  382. package/dist/types/diff-spec-types.d.ts.map +1 -0
  383. package/dist/types/diff-spec-types.js +3 -0
  384. package/dist/types/diff-spec-types.js.map +1 -0
  385. package/dist/types/drift-monitor-types.d.ts +47 -0
  386. package/dist/types/drift-monitor-types.d.ts.map +1 -0
  387. package/dist/types/drift-monitor-types.js +3 -0
  388. package/dist/types/drift-monitor-types.js.map +1 -0
  389. package/dist/types/global-rules-types.d.ts +31 -0
  390. package/dist/types/global-rules-types.d.ts.map +1 -0
  391. package/dist/types/global-rules-types.js +3 -0
  392. package/dist/types/global-rules-types.js.map +1 -0
  393. package/dist/types/incoming-webhook.d.ts +40 -0
  394. package/dist/types/incoming-webhook.d.ts.map +1 -0
  395. package/dist/types/incoming-webhook.js +3 -0
  396. package/dist/types/incoming-webhook.js.map +1 -0
  397. package/dist/types/index.d.ts +23 -0
  398. package/dist/types/index.d.ts.map +1 -1
  399. package/dist/types/index.js +23 -0
  400. package/dist/types/index.js.map +1 -1
  401. package/dist/types/knowledge-base.d.ts +57 -0
  402. package/dist/types/knowledge-base.d.ts.map +1 -0
  403. package/dist/types/knowledge-base.js +3 -0
  404. package/dist/types/knowledge-base.js.map +1 -0
  405. package/dist/types/notion-asana-monday.d.ts +196 -0
  406. package/dist/types/notion-asana-monday.d.ts.map +1 -0
  407. package/dist/types/notion-asana-monday.js +3 -0
  408. package/dist/types/notion-asana-monday.js.map +1 -0
  409. package/dist/types/onboarding-types.d.ts +69 -0
  410. package/dist/types/onboarding-types.d.ts.map +1 -0
  411. package/dist/types/onboarding-types.js +3 -0
  412. package/dist/types/onboarding-types.js.map +1 -0
  413. package/dist/types/parallel-safety-types.d.ts +14 -0
  414. package/dist/types/parallel-safety-types.d.ts.map +1 -0
  415. package/dist/types/parallel-safety-types.js +3 -0
  416. package/dist/types/parallel-safety-types.js.map +1 -0
  417. package/dist/types/schema-generator.d.ts +61 -0
  418. package/dist/types/schema-generator.d.ts.map +1 -0
  419. package/dist/types/schema-generator.js +3 -0
  420. package/dist/types/schema-generator.js.map +1 -0
  421. package/dist/types/spec-cookbook-types.d.ts +45 -0
  422. package/dist/types/spec-cookbook-types.d.ts.map +1 -0
  423. package/dist/types/spec-cookbook-types.js +3 -0
  424. package/dist/types/spec-cookbook-types.js.map +1 -0
  425. package/dist/types/spec-diff-visual-types.d.ts +75 -0
  426. package/dist/types/spec-diff-visual-types.d.ts.map +1 -0
  427. package/dist/types/spec-diff-visual-types.js +3 -0
  428. package/dist/types/spec-diff-visual-types.js.map +1 -0
  429. package/dist/types/spec-hooks.d.ts +62 -0
  430. package/dist/types/spec-hooks.d.ts.map +1 -0
  431. package/dist/types/spec-hooks.js +3 -0
  432. package/dist/types/spec-hooks.js.map +1 -0
  433. package/dist/types/spec-lint.d.ts +79 -0
  434. package/dist/types/spec-lint.d.ts.map +1 -0
  435. package/dist/types/spec-lint.js +3 -0
  436. package/dist/types/spec-lint.js.map +1 -0
  437. package/dist/types/spec-scheduler.d.ts +58 -0
  438. package/dist/types/spec-scheduler.d.ts.map +1 -0
  439. package/dist/types/spec-scheduler.js +3 -0
  440. package/dist/types/spec-scheduler.js.map +1 -0
  441. package/dist/types/spec-source-types.d.ts +37 -0
  442. package/dist/types/spec-source-types.d.ts.map +1 -0
  443. package/dist/types/spec-source-types.js +3 -0
  444. package/dist/types/spec-source-types.js.map +1 -0
  445. package/dist/types/tech-debt.d.ts +66 -0
  446. package/dist/types/tech-debt.d.ts.map +1 -0
  447. package/dist/types/tech-debt.js +3 -0
  448. package/dist/types/tech-debt.js.map +1 -0
  449. package/dist/types/validation-loop.d.ts +39 -0
  450. package/dist/types/validation-loop.d.ts.map +1 -0
  451. package/dist/types/validation-loop.js +3 -0
  452. package/dist/types/validation-loop.js.map +1 -0
  453. package/dist/types/workspace-dashboard-types.d.ts +74 -0
  454. package/dist/types/workspace-dashboard-types.d.ts.map +1 -0
  455. package/dist/types/workspace-dashboard-types.js +3 -0
  456. package/dist/types/workspace-dashboard-types.js.map +1 -0
  457. package/package.json +2 -1
  458. package/src/config/license-plans.json +110 -9
  459. package/src/config/spec-cookbook.json +341 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-context-manager-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-context-manager-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAuBzE,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAoLnE"}
@@ -0,0 +1,138 @@
1
+ // tools/register-context-manager-tools.ts — SPEC-370: Register Context Window Management tools
2
+ import { z } from 'zod';
3
+ import { safeLicensed } from './safe-handler.js';
4
+ import { handleContextWindowStatus, handleOptimizeContext, handleContextBudgetConfig, handleArchiveSpecContext, handleCompressSpecHistory, handleRestoreArchivedContext, } from './context-manager-handler.js';
5
+ const STRATEGY_DESCRIBE = 'Archiving strategy. Valid values: archive-oldest | archive-done | compress-history | manual';
6
+ export function registerContextManagerTools(server) {
7
+ server.registerTool('context_window_status', {
8
+ description: 'Estimate the number of tokens consumed by the project context. ' +
9
+ 'Uses heuristics: ~1,500 tokens per spec, ~200 per decision, ~150 per lesson. ' +
10
+ 'Shows breakdown by category and compares to configured budget.',
11
+ inputSchema: {
12
+ projectPath: z
13
+ .string()
14
+ .min(1)
15
+ .max(4096)
16
+ .describe('Absolute path to the project root directory'),
17
+ },
18
+ annotations: {
19
+ title: 'Context Window Status',
20
+ readOnlyHint: true,
21
+ },
22
+ }, safeLicensed('context_window_status', async (args) => handleContextWindowStatus(args)));
23
+ server.registerTool('optimize_context', {
24
+ description: 'Identify specs that are candidates for archiving to reduce context token usage. ' +
25
+ 'Candidates are done specs older than the configured archiveAfterDays threshold. ' +
26
+ 'Use action="apply" to actually archive them.',
27
+ inputSchema: {
28
+ projectPath: z
29
+ .string()
30
+ .min(1)
31
+ .max(4096)
32
+ .describe('Absolute path to the project root directory'),
33
+ action: z
34
+ .enum(['suggest', 'apply'])
35
+ .optional()
36
+ .describe('Action to take. Valid values: suggest (default, lists candidates) | apply (archives candidates)'),
37
+ },
38
+ annotations: {
39
+ title: 'Optimize Context',
40
+ readOnlyHint: false,
41
+ },
42
+ }, safeLicensed('optimize_context', async (args) => handleOptimizeContext(args)));
43
+ server.registerTool('context_budget_config', {
44
+ description: 'Configure the context window budget: maximum tokens, warning threshold, archiving strategy, ' +
45
+ 'and number of days after which done specs are eligible for archiving.',
46
+ inputSchema: {
47
+ projectPath: z
48
+ .string()
49
+ .min(1)
50
+ .max(4096)
51
+ .describe('Absolute path to the project root directory'),
52
+ maxTokens: z
53
+ .number()
54
+ .int()
55
+ .min(10_000)
56
+ .max(2_000_000)
57
+ .optional()
58
+ .describe('Maximum token budget (default: 200,000)'),
59
+ strategy: z
60
+ .enum(['archive-oldest', 'archive-done', 'compress-history', 'manual'])
61
+ .optional()
62
+ .describe(STRATEGY_DESCRIBE),
63
+ warnAt: z
64
+ .number()
65
+ .int()
66
+ .min(1_000)
67
+ .optional()
68
+ .describe('Token count at which to warn (default: 150,000)'),
69
+ archiveAfterDays: z
70
+ .number()
71
+ .int()
72
+ .min(1)
73
+ .optional()
74
+ .describe('Days after done before a spec is eligible for archiving (default: 30)'),
75
+ },
76
+ annotations: {
77
+ title: 'Configure Context Budget',
78
+ readOnlyHint: false,
79
+ },
80
+ }, safeLicensed('context_budget_config', async (args) => handleContextBudgetConfig(args)));
81
+ server.registerTool('archive_spec_context', {
82
+ description: 'Archive a specific spec to the archived-context/ directory to free up context tokens. ' +
83
+ 'The spec data is preserved and can be restored with restore_archived_context.',
84
+ inputSchema: {
85
+ projectPath: z
86
+ .string()
87
+ .min(1)
88
+ .max(4096)
89
+ .describe('Absolute path to the project root directory'),
90
+ specId: z.string().min(1).max(200).describe('Spec ID to archive (e.g. SPEC-001)'),
91
+ },
92
+ annotations: {
93
+ title: 'Archive Spec Context',
94
+ readOnlyHint: false,
95
+ destructiveHint: false,
96
+ },
97
+ }, safeLicensed('archive_spec_context', async (args) => handleArchiveSpecContext(args)));
98
+ server.registerTool('compress_spec_history', {
99
+ description: 'Describe what would happen when compressing spec version history, keeping only the most recent N versions. ' +
100
+ 'Reduces token usage from version diffs stored in spec-version-history.',
101
+ inputSchema: {
102
+ projectPath: z
103
+ .string()
104
+ .min(1)
105
+ .max(4096)
106
+ .describe('Absolute path to the project root directory'),
107
+ specId: z.string().min(1).max(200).describe('Spec ID whose version history to compress'),
108
+ keepVersions: z
109
+ .number()
110
+ .int()
111
+ .min(1)
112
+ .max(50)
113
+ .optional()
114
+ .describe('Number of recent versions to keep (default: 3)'),
115
+ },
116
+ annotations: {
117
+ title: 'Compress Spec History',
118
+ readOnlyHint: false,
119
+ destructiveHint: true,
120
+ },
121
+ }, safeLicensed('compress_spec_history', (args) => Promise.resolve(handleCompressSpecHistory(args))));
122
+ server.registerTool('restore_archived_context', {
123
+ description: 'Restore a previously archived spec from archived-context/ back to the active project context.',
124
+ inputSchema: {
125
+ projectPath: z
126
+ .string()
127
+ .min(1)
128
+ .max(4096)
129
+ .describe('Absolute path to the project root directory'),
130
+ specId: z.string().min(1).max(200).describe('Spec ID to restore from archive'),
131
+ },
132
+ annotations: {
133
+ title: 'Restore Archived Context',
134
+ readOnlyHint: false,
135
+ },
136
+ }, safeLicensed('restore_archived_context', async (args) => handleRestoreArchivedContext(args)));
137
+ }
138
+ //# sourceMappingURL=register-context-manager-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-context-manager-tools.js","sourceRoot":"","sources":["../../src/tools/register-context-manager-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerCostBudgetTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-cost-budget-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cost-budget-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-cost-budget-tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkBzE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6H/D"}
@@ -0,0 +1,98 @@
1
+ // tools/register-cost-budget-tools.ts — Registers Cost Budget & Alerts tools (SPEC-367)
2
+ import { z } from 'zod';
3
+ import { safeTracked } from './safe-handler.js';
4
+ import { handleConfigureCostBudget, handleCostAlertRules, handleCostForecast, handleCostBudgetStatus, handleBudgetHistory, } from './cost-budget-handler.js';
5
+ export function registerCostBudgetTools(server) {
6
+ server.registerTool('configure_cost_budget', {
7
+ description: 'Configure a cost budget for a project. ' +
8
+ 'Sets the maximum spending per period (daily/weekly/monthly/total) in USD or EUR. ' +
9
+ 'Alert thresholds define at what percentage of budget to trigger alerts.',
10
+ inputSchema: {
11
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
12
+ period: z
13
+ .enum(['daily', 'weekly', 'monthly', 'total'])
14
+ .describe('Budget period. Values: daily, weekly, monthly, total.'),
15
+ maxUSD: z.number().positive().describe('Maximum spend in USD for the period.'),
16
+ maxTokens: z
17
+ .number()
18
+ .int()
19
+ .positive()
20
+ .optional()
21
+ .describe('Optional maximum token count for the period.'),
22
+ alertThresholds: z
23
+ .array(z.number().min(0).max(100))
24
+ .optional()
25
+ .describe('Alert thresholds as percentages. Default: [50, 80, 100].'),
26
+ currency: z
27
+ .enum(['USD', 'EUR'])
28
+ .optional()
29
+ .describe('Currency for display. Values: USD, EUR. Default: USD.'),
30
+ },
31
+ annotations: { title: 'Configure Cost Budget' },
32
+ }, safeTracked('configure_cost_budget', (args) => handleConfigureCostBudget(args)));
33
+ server.registerTool('cost_alert_rules', {
34
+ description: 'Manage cost alert rules. ' +
35
+ 'List, add, or remove rules that describe when to alert based on spending. ' +
36
+ 'Rules can trigger on budget-percent (% of budget used) or absolute-usd (dollar amount). ' +
37
+ 'Channels describe where alerts would be sent (slack, email, desktop, all).',
38
+ inputSchema: {
39
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
40
+ action: z
41
+ .enum(['list', 'add', 'remove'])
42
+ .describe('Action to perform. Values: list, add, remove.'),
43
+ rule: z
44
+ .object({
45
+ trigger: z
46
+ .enum(['budget-percent', 'absolute-usd'])
47
+ .describe('Trigger type. Values: budget-percent, absolute-usd.'),
48
+ threshold: z.number().describe('Threshold value (percent or USD amount).'),
49
+ channels: z
50
+ .array(z.enum(['slack', 'email', 'desktop', 'all']))
51
+ .describe('Channels to alert. Values: slack, email, desktop, all.'),
52
+ cooldownMinutes: z
53
+ .number()
54
+ .int()
55
+ .optional()
56
+ .describe('Minimum minutes between repeated alerts. Default: 60.'),
57
+ })
58
+ .optional()
59
+ .describe('Rule definition. Required when action=add.'),
60
+ ruleId: z.string().optional().describe('Rule ID to remove. Required when action=remove.'),
61
+ },
62
+ annotations: { title: 'Cost Alert Rules' },
63
+ }, safeTracked('cost_alert_rules', (args) => handleCostAlertRules(args)));
64
+ server.registerTool('cost_forecast', {
65
+ description: 'Forecast total spending for the current budget period. ' +
66
+ 'Uses the last 7 days of token_usage data to project period-end spend. ' +
67
+ 'Returns "insufficient data" if fewer than 3 days of data are available.',
68
+ inputSchema: {
69
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
70
+ },
71
+ annotations: { title: 'Cost Forecast', readOnlyHint: true },
72
+ }, safeTracked('cost_forecast', (args) => handleCostForecast(args)));
73
+ server.registerTool('cost_budget_status', {
74
+ description: 'Get current budget status: current spend vs budget, percentage used, ' +
75
+ 'and any alert rules that would be triggered. ' +
76
+ 'Status can be ok, warning, critical, or no-budget.',
77
+ inputSchema: {
78
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
79
+ },
80
+ annotations: { title: 'Cost Budget Status', readOnlyHint: true },
81
+ }, safeTracked('cost_budget_status', (args) => handleCostBudgetStatus(args)));
82
+ server.registerTool('budget_history', {
83
+ description: 'View daily spending history for the project. ' +
84
+ 'Returns a per-day breakdown of USD spend and token count for the last N days (default: 30).',
85
+ inputSchema: {
86
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
87
+ days: z
88
+ .number()
89
+ .int()
90
+ .min(1)
91
+ .max(365)
92
+ .optional()
93
+ .describe('Number of days of history to return. Default: 30.'),
94
+ },
95
+ annotations: { title: 'Budget History', readOnlyHint: true },
96
+ }, safeTracked('budget_history', (args) => handleBudgetHistory(args)));
97
+ }
98
+ //# sourceMappingURL=register-cost-budget-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-cost-budget-tools.js","sourceRoot":"","sources":["../../src/tools/register-cost-budget-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDependencyImpactTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-dependency-impact-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-dependency-impact-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-dependency-impact-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAyBzE,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsErE"}
@@ -0,0 +1,63 @@
1
+ import { z } from 'zod';
2
+ import { safeTracked } from './safe-handler.js';
3
+ import { handleRegisterApiSurface, handleAnalyzeBreakingChanges, handleDependencyImpactReport, handleCheckApiCompatibility, } from './dependency-impact-handler.js';
4
+ const SURFACE_TYPE_ENUM = z
5
+ .enum(['rest-endpoint', 'graphql', 'typescript-interface', 'database-schema', 'event'])
6
+ .describe('Surface type. Values: rest-endpoint, graphql, typescript-interface, database-schema, event.');
7
+ const surfaceSchema = z.object({
8
+ type: SURFACE_TYPE_ENUM,
9
+ definition: z.string().min(1).max(500).describe('Description of the surface.'),
10
+ isBreakingIfRemoved: z
11
+ .boolean()
12
+ .optional()
13
+ .describe('Whether removing this surface would be a breaking change.'),
14
+ });
15
+ export function registerDependencyImpactTools(server) {
16
+ // register_api_surface
17
+ server.registerTool('register_api_surface', {
18
+ description: 'Register or update the API surfaces exposed by a spec (REST endpoints, GraphQL schemas, TypeScript interfaces, database schemas, or events).',
19
+ inputSchema: {
20
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
21
+ specId: z.string().min(1).describe('ID of the spec that exposes these surfaces.'),
22
+ surfaces: z.array(surfaceSchema).min(1).describe('List of API surface definitions.'),
23
+ },
24
+ }, safeTracked('register_api_surface', async (args) => handleRegisterApiSurface(args)));
25
+ // analyze_breaking_changes
26
+ server.registerTool('analyze_breaking_changes', {
27
+ description: "Analyze which other specs may be impacted by a change to a spec's API surface. Returns affected specs with impact level (high/medium/low).",
28
+ annotations: { readOnlyHint: true },
29
+ inputSchema: {
30
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
31
+ specId: z.string().min(1).describe('ID of the spec being changed.'),
32
+ changeDescription: z
33
+ .string()
34
+ .min(1)
35
+ .max(1000)
36
+ .describe('Description of the change being made.'),
37
+ },
38
+ }, safeTracked('analyze_breaking_changes', async (args) => handleAnalyzeBreakingChanges(args)));
39
+ // dependency_impact_report
40
+ server.registerTool('dependency_impact_report', {
41
+ description: 'Generate an HTML report of specs affected by a change, including impact classification.',
42
+ annotations: { readOnlyHint: true },
43
+ inputSchema: {
44
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
45
+ specId: z.string().min(1).describe('ID of the spec being changed.'),
46
+ changeDescription: z
47
+ .string()
48
+ .min(1)
49
+ .max(1000)
50
+ .describe('Description of the change being made.'),
51
+ },
52
+ }, safeTracked('dependency_impact_report', async (args) => handleDependencyImpactReport(args)));
53
+ // check_api_compatibility
54
+ server.registerTool('check_api_compatibility', {
55
+ description: "Check which other specs depend on a given spec's API surfaces, helping identify compatibility risks.",
56
+ annotations: { readOnlyHint: true },
57
+ inputSchema: {
58
+ projectPath: z.string().min(1).max(4096).describe('Absolute path to the project root.'),
59
+ specId: z.string().min(1).describe('ID of the spec to check compatibility for.'),
60
+ },
61
+ }, safeTracked('check_api_compatibility', async (args) => handleCheckApiCompatibility(args)));
62
+ }
63
+ //# sourceMappingURL=register-dependency-impact-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-dependency-impact-tools.js","sourceRoot":"","sources":["../../src/tools/register-dependency-impact-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDiffSpecTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-diff-spec-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-diff-spec-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-diff-spec-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2E7D"}
@@ -0,0 +1,55 @@
1
+ import { z } from 'zod';
2
+ import { safeTracked } from './safe-handler.js';
3
+ import { handleGenerateSpecFromDiff, handleGenerateSpecFromPr, handleGenerateSpecFromCommitRange, } from './diff-spec-generator-handler.js';
4
+ export function registerDiffSpecTools(server) {
5
+ server.registerTool('generate_spec_from_diff', {
6
+ description: 'Generate a spec draft from a git diff string. Analyzes modified files, added functions, and new endpoints to infer acceptance criteria.',
7
+ inputSchema: {
8
+ projectPath: z.string().describe('Absolute path to the project root.'),
9
+ diff: z
10
+ .string()
11
+ .min(1)
12
+ .describe('Raw git diff output (e.g. output of "git diff HEAD~1..HEAD").'),
13
+ outputMode: z
14
+ .enum(['draft', 'create'])
15
+ .optional()
16
+ .describe('Output mode. Values: draft (return content only), create (suggest create_spec call). Default: draft.'),
17
+ title: z
18
+ .string()
19
+ .optional()
20
+ .describe('Optional title override. If omitted, title is inferred from the diff.'),
21
+ },
22
+ annotations: { title: 'Generate Spec from Diff', readOnlyHint: true },
23
+ }, safeTracked('generate_spec_from_diff', async (args) => handleGenerateSpecFromDiff(args)));
24
+ server.registerTool('generate_spec_from_pr', {
25
+ description: 'Generate a spec draft from a GitHub Pull Request by fetching its diff via the GitHub CLI (gh). Requires gh to be installed and authenticated.',
26
+ inputSchema: {
27
+ projectPath: z.string().describe('Absolute path to the project root.'),
28
+ prNumber: z.number().int().positive().describe('Pull Request number (e.g. 42).'),
29
+ repoPath: z
30
+ .string()
31
+ .optional()
32
+ .describe('Optional path to the git repository. Defaults to projectPath.'),
33
+ outputMode: z
34
+ .enum(['draft', 'create'])
35
+ .optional()
36
+ .describe('Output mode. Values: draft, create. Default: draft.'),
37
+ },
38
+ annotations: { title: 'Generate Spec from PR', readOnlyHint: true },
39
+ }, safeTracked('generate_spec_from_pr', async (args) => handleGenerateSpecFromPr(args)));
40
+ server.registerTool('generate_spec_from_commit_range', {
41
+ description: 'Generate a spec draft from a git commit range (e.g. HEAD~5..HEAD or abc123..def456).',
42
+ inputSchema: {
43
+ projectPath: z.string().describe('Absolute path to the project root.'),
44
+ commitRange: z
45
+ .string()
46
+ .describe('Git commit range in the format from..to (e.g. HEAD~3..HEAD or sha1..sha2).'),
47
+ outputMode: z
48
+ .enum(['draft', 'create'])
49
+ .optional()
50
+ .describe('Output mode. Values: draft, create. Default: draft.'),
51
+ },
52
+ annotations: { title: 'Generate Spec from Commit Range', readOnlyHint: true },
53
+ }, safeTracked('generate_spec_from_commit_range', async (args) => handleGenerateSpecFromCommitRange(args)));
54
+ }
55
+ //# sourceMappingURL=register-diff-spec-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-diff-spec-tools.js","sourceRoot":"","sources":["../../src/tools/register-diff-spec-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,iCAAiC,GAIlC,MAAM,kCAAkC,CAAC;AAE1C,MAAM,UAAU,qBAAqB,CAAC,MAAiB;IACrD,MAAM,CAAC,YAAY,CACjB,yBAAyB,EACzB;QACE,WAAW,EACT,yIAAyI;QAC3I,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACtE,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,GAAG,CAAC,CAAC,CAAC;iBACN,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CACP,sGAAsG,CACvG;YACH,KAAK,EAAE,CAAC;iBACL,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,uEAAuE,CAAC;SACrF;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,yBAAyB,EAAE,YAAY,EAAE,IAAI,EAAE;KACtE,EACD,WAAW,CAAC,yBAAyB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CACpD,0BAA0B,CAAC,IAAwC,CAAC,CACrE,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,uBAAuB,EACvB;QACE,WAAW,EACT,+IAA+I;QACjJ,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACtE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gCAAgC,CAAC;YAChF,QAAQ,EAAE,CAAC;iBACR,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,+DAA+D,CAAC;YAC5E,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,YAAY,EAAE,IAAI,EAAE;KACpE,EACD,WAAW,CAAC,uBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAClD,wBAAwB,CAAC,IAAsC,CAAC,CACjE,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,iCAAiC,EACjC;QACE,WAAW,EACT,sFAAsF;QACxF,WAAW,EAAE;YACX,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oCAAoC,CAAC;YACtE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,CAAC,4EAA4E,CAAC;YACzF,UAAU,EAAE,CAAC;iBACV,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACzB,QAAQ,EAAE;iBACV,QAAQ,CAAC,qDAAqD,CAAC;SACnE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,YAAY,EAAE,IAAI,EAAE;KAC9E,EACD,WAAW,CAAC,iCAAiC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAC5D,iCAAiC,CAAC,IAA+C,CAAC,CACnF,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerDriftMonitorTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-drift-monitor-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-drift-monitor-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-drift-monitor-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYzE,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAsFjE"}
@@ -0,0 +1,64 @@
1
+ import { z } from 'zod';
2
+ import { safeTracked } from './safe-handler.js';
3
+ import { handleConfigureDriftMonitoring, handleDriftAlertRules, handleDriftSummaryReport, } from './drift-monitor-handler.js';
4
+ export function registerDriftMonitorTools(server) {
5
+ server.registerTool('configure_drift_monitoring', {
6
+ description: 'Configure continuous drift monitoring for a project. Drift monitoring detects when code diverges from its spec over time.',
7
+ inputSchema: {
8
+ projectPath: z.string().describe('Absolute path to the project root.'),
9
+ action: z
10
+ .enum(['enable', 'disable', 'set-threshold', 'set-schedule', 'status'])
11
+ .describe('Action to perform. Values: enable, disable, set-threshold, set-schedule, status.'),
12
+ threshold: z
13
+ .number()
14
+ .min(0)
15
+ .max(100)
16
+ .optional()
17
+ .describe('Drift score (0–100) above which alerts fire. Used with set-threshold.'),
18
+ scheduleHours: z
19
+ .number()
20
+ .min(1)
21
+ .optional()
22
+ .describe('How often to check for drift (in hours). Used with set-schedule.'),
23
+ },
24
+ annotations: { title: 'Configure Drift Monitoring', destructiveHint: false },
25
+ }, safeTracked('configure_drift_monitoring', async (args) => handleConfigureDriftMonitoring(args)));
26
+ server.registerTool('drift_alert_rules', {
27
+ description: 'Manage alert rules for drift monitoring. Rules allow fine-grained thresholds per spec pattern.',
28
+ inputSchema: {
29
+ projectPath: z.string().describe('Absolute path to the project root.'),
30
+ action: z
31
+ .enum(['set-rules', 'list'])
32
+ .describe('Action to perform. Values: set-rules (replace all rules), list.'),
33
+ rules: z
34
+ .array(z.object({
35
+ name: z.string().describe('Human-readable rule name.'),
36
+ specIdPattern: z
37
+ .string()
38
+ .describe('Spec ID pattern to match (e.g. SPEC-* or SPEC-001).'),
39
+ thresholdOverride: z
40
+ .number()
41
+ .min(0)
42
+ .max(100)
43
+ .optional()
44
+ .describe('Override threshold for matching specs.'),
45
+ enabled: z.boolean().describe('Whether this rule is active.'),
46
+ }))
47
+ .optional()
48
+ .describe('Array of rules to set. Required for set-rules action.'),
49
+ },
50
+ annotations: { title: 'Drift Alert Rules', destructiveHint: false },
51
+ }, safeTracked('drift_alert_rules', async (args) => handleDriftAlertRules(args)));
52
+ server.registerTool('drift_summary_report', {
53
+ description: 'Generate an on-demand drift summary report for a project. Shows drifted vs clean specs and active alerts.',
54
+ inputSchema: {
55
+ projectPath: z.string().describe('Absolute path to the project root.'),
56
+ specIds: z
57
+ .array(z.string())
58
+ .optional()
59
+ .describe('Optional list of spec IDs to include. If omitted, includes all known specs.'),
60
+ },
61
+ annotations: { title: 'Drift Summary Report', readOnlyHint: true },
62
+ }, safeTracked('drift_summary_report', async (args) => handleDriftSummaryReport(args)));
63
+ }
64
+ //# sourceMappingURL=register-drift-monitor-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-drift-monitor-tools.js","sourceRoot":"","sources":["../../src/tools/register-drift-monitor-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerGlobalRulesTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-global-rules-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-global-rules-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-global-rules-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyDhE"}
@@ -0,0 +1,44 @@
1
+ import { z } from 'zod';
2
+ import { safeTracked } from './safe-handler.js';
3
+ import { handleManageGlobalRules, handleGlobalRulesStatus, } from './global-rules-handler.js';
4
+ export function registerGlobalRulesTools(server) {
5
+ server.registerTool('manage_global_rules', {
6
+ description: 'Manage global steering rules stored in ~/.planu/global-rules/. Rules can be applied to any project CLAUDE.md to inject consistent conventions.',
7
+ inputSchema: {
8
+ action: z
9
+ .enum(['create', 'list', 'get', 'update', 'delete', 'apply', 'export'])
10
+ .describe('Action to perform. Values: create (new rule), list (all rules), get (one rule), update (modify), delete (remove), apply (inject to CLAUDE.md), export (raw content).'),
11
+ slug: z
12
+ .string()
13
+ .optional()
14
+ .describe('Rule slug — kebab-case identifier (e.g. "no-any-types"). Required for get, update, delete, apply, export.'),
15
+ name: z.string().optional().describe('Human-readable rule name. Required for create.'),
16
+ content: z.string().optional().describe('Rule body in Markdown. Required for create.'),
17
+ tags: z
18
+ .array(z.string())
19
+ .optional()
20
+ .describe('Optional tag list for filtering (e.g. ["typescript", "quality"]).'),
21
+ author: z.string().optional().describe('Optional author identifier.'),
22
+ version: z
23
+ .string()
24
+ .optional()
25
+ .describe('Semver version string (e.g. "1.0.0"). Defaults to "1.0.0".'),
26
+ projectPath: z
27
+ .string()
28
+ .optional()
29
+ .describe('Absolute project path. Required for apply action.'),
30
+ },
31
+ annotations: { title: 'Manage Global Rules', destructiveHint: false },
32
+ }, safeTracked('manage_global_rules', async (args) => handleManageGlobalRules(args)));
33
+ server.registerTool('global_rules_status', {
34
+ description: 'Show a summary of all global steering rules stored in ~/.planu/global-rules/.',
35
+ inputSchema: {
36
+ projectPath: z
37
+ .string()
38
+ .optional()
39
+ .describe('Optional project path (unused, for context only).'),
40
+ },
41
+ annotations: { title: 'Global Rules Status', readOnlyHint: true },
42
+ }, safeTracked('global_rules_status', async (args) => handleGlobalRulesStatus(args)));
43
+ }
44
+ //# sourceMappingURL=register-global-rules-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-global-rules-tools.js","sourceRoot":"","sources":["../../src/tools/register-global-rules-tools.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EACL,uBAAuB,EACvB,uBAAuB,GAGxB,MAAM,2BAA2B,CAAC;AAEnC,MAAM,UAAU,wBAAwB,CAAC,MAAiB;IACxD,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EACT,gJAAgJ;QAClJ,WAAW,EAAE;YACX,MAAM,EAAE,CAAC;iBACN,IAAI,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;iBACtE,QAAQ,CACP,sKAAsK,CACvK;YACH,IAAI,EAAE,CAAC;iBACJ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CACP,2GAA2G,CAC5G;YACH,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACtF,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6CAA6C,CAAC;YACtF,IAAI,EAAE,CAAC;iBACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBACjB,QAAQ,EAAE;iBACV,QAAQ,CAAC,mEAAmE,CAAC;YAChF,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,6BAA6B,CAAC;YACrE,OAAO,EAAE,CAAC;iBACP,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,4DAA4D,CAAC;YACzE,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,KAAK,EAAE;KACtE,EACD,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAChD,uBAAuB,CAAC,IAA8B,CAAC,CACxD,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,qBAAqB,EACrB;QACE,WAAW,EAAE,+EAA+E;QAC5F,WAAW,EAAE;YACX,WAAW,EAAE,CAAC;iBACX,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE;QACD,WAAW,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,IAAI,EAAE;KAClE,EACD,WAAW,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAChD,uBAAuB,CAAC,IAA8B,CAAC,CACxD,CACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ export declare function registerIncomingWebhookTools(server: McpServer): void;
3
+ //# sourceMappingURL=register-incoming-webhook-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"register-incoming-webhook-tools.d.ts","sourceRoot":"","sources":["../../src/tools/register-incoming-webhook-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAyEpE"}
@@ -0,0 +1,50 @@
1
+ import { z } from 'zod';
2
+ import { safeTracked } from './safe-handler.js';
3
+ import { handleConfigureIncomingWebhooks, handleIncomingWebhookStatus, handleStopIncomingWebhooks, handleGenerateWebhookDocs, } from './incoming-webhook-handler.js';
4
+ const projectPathSchema = z
5
+ .string()
6
+ .min(1)
7
+ .max(4096)
8
+ .describe('Absolute path to the project root where Planu stores its data.');
9
+ export function registerIncomingWebhookTools(server) {
10
+ server.registerTool('configure_incoming_webhooks', {
11
+ description: 'Start a local HTTP server that accepts REST API calls to create and manage Planu specs. ' +
12
+ 'Exposes: GET /api/specs, POST /api/specs, PATCH /api/specs/:id. ' +
13
+ 'All endpoints require Bearer token authentication. ' +
14
+ 'Useful for CI/CD pipelines, external tools, or automation scripts.',
15
+ inputSchema: {
16
+ projectPath: projectPathSchema,
17
+ port: z
18
+ .number()
19
+ .int()
20
+ .min(1024)
21
+ .max(65535)
22
+ .describe('TCP port for the webhook server (e.g. 3456). Must be available.'),
23
+ secret: z
24
+ .string()
25
+ .min(8)
26
+ .max(256)
27
+ .describe('Bearer token secret for authenticating requests. ' +
28
+ 'Pass this as Authorization: Bearer <secret> in all requests.'),
29
+ },
30
+ annotations: { title: 'Start Incoming Webhook Server' },
31
+ }, safeTracked('configure_incoming_webhooks', (args) => handleConfigureIncomingWebhooks(args)));
32
+ server.registerTool('incoming_webhook_status', {
33
+ description: 'Show the current status of the incoming webhook server: port, running state, and configuration.',
34
+ inputSchema: { projectPath: projectPathSchema },
35
+ annotations: { title: 'Incoming Webhook Server Status', readOnlyHint: true },
36
+ }, safeTracked('incoming_webhook_status', (args) => handleIncomingWebhookStatus(args)));
37
+ server.registerTool('stop_incoming_webhooks', {
38
+ description: 'Stop the running incoming webhook server and remove its configuration. ' +
39
+ 'Run configure_incoming_webhooks to restart.',
40
+ inputSchema: { projectPath: projectPathSchema },
41
+ annotations: { title: 'Stop Incoming Webhook Server', destructiveHint: true },
42
+ }, safeTracked('stop_incoming_webhooks', (args) => handleStopIncomingWebhooks(args)));
43
+ server.registerTool('generate_webhook_docs', {
44
+ description: 'Generate OpenAPI 3.0 YAML documentation for the incoming webhook server API. ' +
45
+ 'Returns the full spec with endpoint descriptions, request/response schemas, and auth info.',
46
+ inputSchema: { projectPath: projectPathSchema },
47
+ annotations: { title: 'Generate Webhook API Docs', readOnlyHint: true },
48
+ }, safeTracked('generate_webhook_docs', (args) => handleGenerateWebhookDocs(args)));
49
+ }
50
+ //# sourceMappingURL=register-incoming-webhook-tools.js.map