@cleocode/cleo 2026.3.56 → 2026.3.58

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 (705) hide show
  1. package/dist/cli/commander-shim.d.ts +112 -0
  2. package/dist/cli/commander-shim.d.ts.map +1 -0
  3. package/dist/cli/commander-shim.js +233 -0
  4. package/dist/cli/commander-shim.js.map +1 -0
  5. package/dist/cli/commands/add.d.ts +12 -0
  6. package/dist/cli/commands/add.d.ts.map +1 -0
  7. package/dist/cli/commands/add.js +91 -0
  8. package/dist/cli/commands/add.js.map +1 -0
  9. package/dist/cli/commands/adr.d.ts +27 -0
  10. package/dist/cli/commands/adr.d.ts.map +1 -0
  11. package/dist/cli/commands/adr.js +79 -0
  12. package/dist/cli/commands/adr.js.map +1 -0
  13. package/dist/cli/commands/analyze.d.ts +12 -0
  14. package/dist/cli/commands/analyze.d.ts.map +1 -0
  15. package/dist/cli/commands/analyze.js +20 -0
  16. package/dist/cli/commands/analyze.js.map +1 -0
  17. package/dist/cli/commands/archive-stats.d.ts +18 -0
  18. package/dist/cli/commands/archive-stats.d.ts.map +1 -0
  19. package/dist/cli/commands/archive-stats.js +49 -0
  20. package/dist/cli/commands/archive-stats.js.map +1 -0
  21. package/dist/cli/commands/archive.d.ts +12 -0
  22. package/dist/cli/commands/archive.d.ts.map +1 -0
  23. package/dist/cli/commands/archive.js +32 -0
  24. package/dist/cli/commands/archive.js.map +1 -0
  25. package/dist/cli/commands/backup.d.ts +8 -0
  26. package/dist/cli/commands/backup.d.ts.map +1 -0
  27. package/dist/cli/commands/backup.js +35 -0
  28. package/dist/cli/commands/backup.js.map +1 -0
  29. package/dist/cli/commands/blockers.d.ts +7 -0
  30. package/dist/cli/commands/blockers.d.ts.map +1 -0
  31. package/dist/cli/commands/blockers.js +16 -0
  32. package/dist/cli/commands/blockers.js.map +1 -0
  33. package/dist/cli/commands/briefing.d.ts +22 -0
  34. package/dist/cli/commands/briefing.d.ts.map +1 -0
  35. package/dist/cli/commands/briefing.js +45 -0
  36. package/dist/cli/commands/briefing.js.map +1 -0
  37. package/dist/cli/commands/bug.d.ts +12 -0
  38. package/dist/cli/commands/bug.d.ts.map +1 -0
  39. package/dist/cli/commands/bug.js +81 -0
  40. package/dist/cli/commands/bug.js.map +1 -0
  41. package/dist/cli/commands/checkpoint.d.ts +15 -0
  42. package/dist/cli/commands/checkpoint.d.ts.map +1 -0
  43. package/dist/cli/commands/checkpoint.js +91 -0
  44. package/dist/cli/commands/checkpoint.js.map +1 -0
  45. package/dist/cli/commands/commands.d.ts +13 -0
  46. package/dist/cli/commands/commands.d.ts.map +1 -0
  47. package/dist/cli/commands/commands.js +30 -0
  48. package/dist/cli/commands/commands.js.map +1 -0
  49. package/dist/cli/commands/complete.d.ts +12 -0
  50. package/dist/cli/commands/complete.d.ts.map +1 -0
  51. package/dist/cli/commands/complete.js +43 -0
  52. package/dist/cli/commands/complete.js.map +1 -0
  53. package/dist/cli/commands/compliance.d.ts +8 -0
  54. package/dist/cli/commands/compliance.d.ts.map +1 -0
  55. package/dist/cli/commands/compliance.js +85 -0
  56. package/dist/cli/commands/compliance.js.map +1 -0
  57. package/dist/cli/commands/config.d.ts +9 -0
  58. package/dist/cli/commands/config.d.ts.map +1 -0
  59. package/dist/cli/commands/config.js +43 -0
  60. package/dist/cli/commands/config.js.map +1 -0
  61. package/dist/cli/commands/consensus.d.ts +13 -0
  62. package/dist/cli/commands/consensus.d.ts.map +1 -0
  63. package/dist/cli/commands/consensus.js +45 -0
  64. package/dist/cli/commands/consensus.js.map +1 -0
  65. package/dist/cli/commands/context.d.ts +8 -0
  66. package/dist/cli/commands/context.d.ts.map +1 -0
  67. package/dist/cli/commands/context.js +40 -0
  68. package/dist/cli/commands/context.js.map +1 -0
  69. package/dist/cli/commands/contribution.d.ts +13 -0
  70. package/dist/cli/commands/contribution.d.ts.map +1 -0
  71. package/dist/cli/commands/contribution.js +41 -0
  72. package/dist/cli/commands/contribution.js.map +1 -0
  73. package/dist/cli/commands/current.d.ts +13 -0
  74. package/dist/cli/commands/current.d.ts.map +1 -0
  75. package/dist/cli/commands/current.js +20 -0
  76. package/dist/cli/commands/current.js.map +1 -0
  77. package/dist/cli/commands/dash.d.ts +12 -0
  78. package/dist/cli/commands/dash.d.ts.map +1 -0
  79. package/dist/cli/commands/dash.js +24 -0
  80. package/dist/cli/commands/dash.js.map +1 -0
  81. package/dist/cli/commands/decomposition.d.ts +13 -0
  82. package/dist/cli/commands/decomposition.d.ts.map +1 -0
  83. package/dist/cli/commands/decomposition.js +45 -0
  84. package/dist/cli/commands/decomposition.js.map +1 -0
  85. package/dist/cli/commands/delete.d.ts +12 -0
  86. package/dist/cli/commands/delete.d.ts.map +1 -0
  87. package/dist/cli/commands/delete.js +37 -0
  88. package/dist/cli/commands/delete.js.map +1 -0
  89. package/dist/cli/commands/deps.d.ts +9 -0
  90. package/dist/cli/commands/deps.d.ts.map +1 -0
  91. package/dist/cli/commands/deps.js +73 -0
  92. package/dist/cli/commands/deps.js.map +1 -0
  93. package/dist/cli/commands/detect-drift.d.ts +15 -0
  94. package/dist/cli/commands/detect-drift.d.ts.map +1 -0
  95. package/dist/cli/commands/detect-drift.js +386 -0
  96. package/dist/cli/commands/detect-drift.js.map +1 -0
  97. package/dist/cli/commands/detect.d.ts +10 -0
  98. package/dist/cli/commands/detect.d.ts.map +1 -0
  99. package/dist/cli/commands/detect.js +24 -0
  100. package/dist/cli/commands/detect.js.map +1 -0
  101. package/dist/cli/commands/docs.d.ts +13 -0
  102. package/dist/cli/commands/docs.d.ts.map +1 -0
  103. package/dist/cli/commands/docs.js +169 -0
  104. package/dist/cli/commands/docs.js.map +1 -0
  105. package/dist/cli/commands/doctor.d.ts +11 -0
  106. package/dist/cli/commands/doctor.d.ts.map +1 -0
  107. package/dist/cli/commands/doctor.js +54 -0
  108. package/dist/cli/commands/doctor.js.map +1 -0
  109. package/dist/cli/commands/dynamic.d.ts +24 -0
  110. package/dist/cli/commands/dynamic.d.ts.map +1 -0
  111. package/dist/cli/commands/dynamic.js +27 -0
  112. package/dist/cli/commands/dynamic.js.map +1 -0
  113. package/dist/cli/commands/env.d.ts +12 -0
  114. package/dist/cli/commands/env.d.ts.map +1 -0
  115. package/dist/cli/commands/env.js +44 -0
  116. package/dist/cli/commands/env.js.map +1 -0
  117. package/dist/cli/commands/exists.d.ts +7 -0
  118. package/dist/cli/commands/exists.d.ts.map +1 -0
  119. package/dist/cli/commands/exists.js +33 -0
  120. package/dist/cli/commands/exists.js.map +1 -0
  121. package/dist/cli/commands/export-tasks.d.ts +10 -0
  122. package/dist/cli/commands/export-tasks.d.ts.map +1 -0
  123. package/dist/cli/commands/export-tasks.js +47 -0
  124. package/dist/cli/commands/export-tasks.js.map +1 -0
  125. package/dist/cli/commands/export.d.ts +9 -0
  126. package/dist/cli/commands/export.d.ts.map +1 -0
  127. package/dist/cli/commands/export.js +46 -0
  128. package/dist/cli/commands/export.js.map +1 -0
  129. package/dist/cli/commands/find.d.ts +14 -0
  130. package/dist/cli/commands/find.d.ts.map +1 -0
  131. package/dist/cli/commands/find.js +70 -0
  132. package/dist/cli/commands/find.js.map +1 -0
  133. package/dist/cli/commands/generate-changelog.d.ts +14 -0
  134. package/dist/cli/commands/generate-changelog.d.ts.map +1 -0
  135. package/dist/cli/commands/generate-changelog.js +252 -0
  136. package/dist/cli/commands/generate-changelog.js.map +1 -0
  137. package/dist/cli/commands/grade.d.ts +13 -0
  138. package/dist/cli/commands/grade.d.ts.map +1 -0
  139. package/dist/cli/commands/grade.js +26 -0
  140. package/dist/cli/commands/grade.js.map +1 -0
  141. package/dist/cli/commands/history.d.ts +9 -0
  142. package/dist/cli/commands/history.d.ts.map +1 -0
  143. package/dist/cli/commands/history.js +30 -0
  144. package/dist/cli/commands/history.js.map +1 -0
  145. package/dist/cli/commands/implementation.d.ts +13 -0
  146. package/dist/cli/commands/implementation.d.ts.map +1 -0
  147. package/dist/cli/commands/implementation.js +41 -0
  148. package/dist/cli/commands/implementation.js.map +1 -0
  149. package/dist/cli/commands/import-tasks.d.ts +10 -0
  150. package/dist/cli/commands/import-tasks.d.ts.map +1 -0
  151. package/dist/cli/commands/import-tasks.js +38 -0
  152. package/dist/cli/commands/import-tasks.js.map +1 -0
  153. package/dist/cli/commands/import.d.ts +9 -0
  154. package/dist/cli/commands/import.d.ts.map +1 -0
  155. package/dist/cli/commands/import.js +28 -0
  156. package/dist/cli/commands/import.js.map +1 -0
  157. package/dist/cli/commands/init.d.ts +34 -0
  158. package/dist/cli/commands/init.d.ts.map +1 -0
  159. package/dist/cli/commands/init.js +89 -0
  160. package/dist/cli/commands/init.js.map +1 -0
  161. package/dist/cli/commands/inject.d.ts +8 -0
  162. package/dist/cli/commands/inject.d.ts.map +1 -0
  163. package/dist/cli/commands/inject.js +28 -0
  164. package/dist/cli/commands/inject.js.map +1 -0
  165. package/dist/cli/commands/install-global.d.ts +19 -0
  166. package/dist/cli/commands/install-global.d.ts.map +1 -0
  167. package/dist/cli/commands/install-global.js +50 -0
  168. package/dist/cli/commands/install-global.js.map +1 -0
  169. package/dist/cli/commands/issue.d.ts +14 -0
  170. package/dist/cli/commands/issue.d.ts.map +1 -0
  171. package/dist/cli/commands/issue.js +105 -0
  172. package/dist/cli/commands/issue.js.map +1 -0
  173. package/dist/cli/commands/labels.d.ts +13 -0
  174. package/dist/cli/commands/labels.d.ts.map +1 -0
  175. package/dist/cli/commands/labels.js +44 -0
  176. package/dist/cli/commands/labels.js.map +1 -0
  177. package/dist/cli/commands/lifecycle.d.ts +8 -0
  178. package/dist/cli/commands/lifecycle.d.ts.map +1 -0
  179. package/dist/cli/commands/lifecycle.js +72 -0
  180. package/dist/cli/commands/lifecycle.js.map +1 -0
  181. package/dist/cli/commands/list.d.ts +14 -0
  182. package/dist/cli/commands/list.d.ts.map +1 -0
  183. package/dist/cli/commands/list.js +71 -0
  184. package/dist/cli/commands/list.js.map +1 -0
  185. package/dist/cli/commands/log.d.ts +12 -0
  186. package/dist/cli/commands/log.d.ts.map +1 -0
  187. package/dist/cli/commands/log.js +30 -0
  188. package/dist/cli/commands/log.js.map +1 -0
  189. package/dist/cli/commands/map.d.ts +10 -0
  190. package/dist/cli/commands/map.d.ts.map +1 -0
  191. package/dist/cli/commands/map.js +23 -0
  192. package/dist/cli/commands/map.js.map +1 -0
  193. package/dist/cli/commands/mcp-install.d.ts +17 -0
  194. package/dist/cli/commands/mcp-install.d.ts.map +1 -0
  195. package/dist/cli/commands/mcp-install.js +128 -0
  196. package/dist/cli/commands/mcp-install.js.map +1 -0
  197. package/dist/cli/commands/memory-brain.d.ts +14 -0
  198. package/dist/cli/commands/memory-brain.d.ts.map +1 -0
  199. package/dist/cli/commands/memory-brain.js +151 -0
  200. package/dist/cli/commands/memory-brain.js.map +1 -0
  201. package/dist/cli/commands/migrate-claude-mem.d.ts +18 -0
  202. package/dist/cli/commands/migrate-claude-mem.d.ts.map +1 -0
  203. package/dist/cli/commands/migrate-claude-mem.js +60 -0
  204. package/dist/cli/commands/migrate-claude-mem.js.map +1 -0
  205. package/dist/cli/commands/next.d.ts +9 -0
  206. package/dist/cli/commands/next.d.ts.map +1 -0
  207. package/dist/cli/commands/next.js +20 -0
  208. package/dist/cli/commands/next.js.map +1 -0
  209. package/dist/cli/commands/nexus.d.ts +16 -0
  210. package/dist/cli/commands/nexus.d.ts.map +1 -0
  211. package/dist/cli/commands/nexus.js +155 -0
  212. package/dist/cli/commands/nexus.js.map +1 -0
  213. package/dist/cli/commands/observe.d.ts +9 -0
  214. package/dist/cli/commands/observe.d.ts.map +1 -0
  215. package/dist/cli/commands/observe.js +39 -0
  216. package/dist/cli/commands/observe.js.map +1 -0
  217. package/dist/cli/commands/ops.d.ts +10 -0
  218. package/dist/cli/commands/ops.d.ts.map +1 -0
  219. package/dist/cli/commands/ops.js +19 -0
  220. package/dist/cli/commands/ops.js.map +1 -0
  221. package/dist/cli/commands/orchestrate.d.ts +8 -0
  222. package/dist/cli/commands/orchestrate.d.ts.map +1 -0
  223. package/dist/cli/commands/orchestrate.js +58 -0
  224. package/dist/cli/commands/orchestrate.js.map +1 -0
  225. package/dist/cli/commands/otel.d.ts +12 -0
  226. package/dist/cli/commands/otel.d.ts.map +1 -0
  227. package/dist/cli/commands/otel.js +128 -0
  228. package/dist/cli/commands/otel.js.map +1 -0
  229. package/dist/cli/commands/phase.d.ts +12 -0
  230. package/dist/cli/commands/phase.d.ts.map +1 -0
  231. package/dist/cli/commands/phase.js +88 -0
  232. package/dist/cli/commands/phase.js.map +1 -0
  233. package/dist/cli/commands/phases.d.ts +12 -0
  234. package/dist/cli/commands/phases.d.ts.map +1 -0
  235. package/dist/cli/commands/phases.js +37 -0
  236. package/dist/cli/commands/phases.js.map +1 -0
  237. package/dist/cli/commands/plan.d.ts +8 -0
  238. package/dist/cli/commands/plan.d.ts.map +1 -0
  239. package/dist/cli/commands/plan.js +15 -0
  240. package/dist/cli/commands/plan.js.map +1 -0
  241. package/dist/cli/commands/promote.d.ts +7 -0
  242. package/dist/cli/commands/promote.d.ts.map +1 -0
  243. package/dist/cli/commands/promote.js +15 -0
  244. package/dist/cli/commands/promote.js.map +1 -0
  245. package/dist/cli/commands/refresh-memory.d.ts +9 -0
  246. package/dist/cli/commands/refresh-memory.d.ts.map +1 -0
  247. package/dist/cli/commands/refresh-memory.js +24 -0
  248. package/dist/cli/commands/refresh-memory.js.map +1 -0
  249. package/dist/cli/commands/relates.d.ts +12 -0
  250. package/dist/cli/commands/relates.d.ts.map +1 -0
  251. package/dist/cli/commands/relates.js +53 -0
  252. package/dist/cli/commands/relates.js.map +1 -0
  253. package/dist/cli/commands/release.d.ts +8 -0
  254. package/dist/cli/commands/release.d.ts.map +1 -0
  255. package/dist/cli/commands/release.js +72 -0
  256. package/dist/cli/commands/release.js.map +1 -0
  257. package/dist/cli/commands/remote.d.ts +12 -0
  258. package/dist/cli/commands/remote.d.ts.map +1 -0
  259. package/dist/cli/commands/remote.js +207 -0
  260. package/dist/cli/commands/remote.js.map +1 -0
  261. package/dist/cli/commands/reorder.d.ts +7 -0
  262. package/dist/cli/commands/reorder.d.ts.map +1 -0
  263. package/dist/cli/commands/reorder.js +20 -0
  264. package/dist/cli/commands/reorder.js.map +1 -0
  265. package/dist/cli/commands/reparent.d.ts +10 -0
  266. package/dist/cli/commands/reparent.d.ts.map +1 -0
  267. package/dist/cli/commands/reparent.js +19 -0
  268. package/dist/cli/commands/reparent.js.map +1 -0
  269. package/dist/cli/commands/research.d.ts +8 -0
  270. package/dist/cli/commands/research.d.ts.map +1 -0
  271. package/dist/cli/commands/research.js +129 -0
  272. package/dist/cli/commands/research.js.map +1 -0
  273. package/dist/cli/commands/restore.d.ts +11 -0
  274. package/dist/cli/commands/restore.d.ts.map +1 -0
  275. package/dist/cli/commands/restore.js +224 -0
  276. package/dist/cli/commands/restore.js.map +1 -0
  277. package/dist/cli/commands/roadmap.d.ts +8 -0
  278. package/dist/cli/commands/roadmap.d.ts.map +1 -0
  279. package/dist/cli/commands/roadmap.js +21 -0
  280. package/dist/cli/commands/roadmap.js.map +1 -0
  281. package/dist/cli/commands/safestop.d.ts +14 -0
  282. package/dist/cli/commands/safestop.d.ts.map +1 -0
  283. package/dist/cli/commands/safestop.js +32 -0
  284. package/dist/cli/commands/safestop.js.map +1 -0
  285. package/dist/cli/commands/self-update.d.ts +15 -0
  286. package/dist/cli/commands/self-update.d.ts.map +1 -0
  287. package/dist/cli/commands/self-update.js +329 -0
  288. package/dist/cli/commands/self-update.js.map +1 -0
  289. package/dist/cli/commands/sequence.d.ts +8 -0
  290. package/dist/cli/commands/sequence.d.ts.map +1 -0
  291. package/dist/cli/commands/sequence.js +30 -0
  292. package/dist/cli/commands/sequence.js.map +1 -0
  293. package/dist/cli/commands/session.d.ts +12 -0
  294. package/dist/cli/commands/session.d.ts.map +1 -0
  295. package/dist/cli/commands/session.js +160 -0
  296. package/dist/cli/commands/session.js.map +1 -0
  297. package/dist/cli/commands/show.d.ts +13 -0
  298. package/dist/cli/commands/show.d.ts.map +1 -0
  299. package/dist/cli/commands/show.js +20 -0
  300. package/dist/cli/commands/show.js.map +1 -0
  301. package/dist/cli/commands/skills.d.ts +13 -0
  302. package/dist/cli/commands/skills.d.ts.map +1 -0
  303. package/dist/cli/commands/skills.js +131 -0
  304. package/dist/cli/commands/skills.js.map +1 -0
  305. package/dist/cli/commands/snapshot.d.ts +9 -0
  306. package/dist/cli/commands/snapshot.d.ts.map +1 -0
  307. package/dist/cli/commands/snapshot.js +50 -0
  308. package/dist/cli/commands/snapshot.js.map +1 -0
  309. package/dist/cli/commands/specification.d.ts +13 -0
  310. package/dist/cli/commands/specification.d.ts.map +1 -0
  311. package/dist/cli/commands/specification.js +45 -0
  312. package/dist/cli/commands/specification.js.map +1 -0
  313. package/dist/cli/commands/start.d.ts +13 -0
  314. package/dist/cli/commands/start.d.ts.map +1 -0
  315. package/dist/cli/commands/start.js +20 -0
  316. package/dist/cli/commands/start.js.map +1 -0
  317. package/dist/cli/commands/stats.d.ts +12 -0
  318. package/dist/cli/commands/stats.d.ts.map +1 -0
  319. package/dist/cli/commands/stats.js +23 -0
  320. package/dist/cli/commands/stats.js.map +1 -0
  321. package/dist/cli/commands/sticky.d.ts +16 -0
  322. package/dist/cli/commands/sticky.d.ts.map +1 -0
  323. package/dist/cli/commands/sticky.js +211 -0
  324. package/dist/cli/commands/sticky.js.map +1 -0
  325. package/dist/cli/commands/stop.d.ts +13 -0
  326. package/dist/cli/commands/stop.d.ts.map +1 -0
  327. package/dist/cli/commands/stop.js +20 -0
  328. package/dist/cli/commands/stop.js.map +1 -0
  329. package/dist/cli/commands/testing.d.ts +13 -0
  330. package/dist/cli/commands/testing.d.ts.map +1 -0
  331. package/dist/cli/commands/testing.js +64 -0
  332. package/dist/cli/commands/testing.js.map +1 -0
  333. package/dist/cli/commands/token.d.ts +10 -0
  334. package/dist/cli/commands/token.d.ts.map +1 -0
  335. package/dist/cli/commands/token.js +135 -0
  336. package/dist/cli/commands/token.js.map +1 -0
  337. package/dist/cli/commands/update.d.ts +12 -0
  338. package/dist/cli/commands/update.d.ts.map +1 -0
  339. package/dist/cli/commands/update.js +77 -0
  340. package/dist/cli/commands/update.js.map +1 -0
  341. package/dist/cli/commands/upgrade.d.ts +16 -0
  342. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  343. package/dist/cli/commands/upgrade.js +83 -0
  344. package/dist/cli/commands/upgrade.js.map +1 -0
  345. package/dist/cli/commands/validate.d.ts +12 -0
  346. package/dist/cli/commands/validate.d.ts.map +1 -0
  347. package/dist/cli/commands/validate.js +23 -0
  348. package/dist/cli/commands/validate.js.map +1 -0
  349. package/dist/cli/commands/verify.d.ts +8 -0
  350. package/dist/cli/commands/verify.d.ts.map +1 -0
  351. package/dist/cli/commands/verify.js +28 -0
  352. package/dist/cli/commands/verify.js.map +1 -0
  353. package/dist/cli/commands/web.d.ts +13 -0
  354. package/dist/cli/commands/web.d.ts.map +1 -0
  355. package/dist/cli/commands/web.js +264 -0
  356. package/dist/cli/commands/web.js.map +1 -0
  357. package/dist/cli/field-context.d.ts +32 -0
  358. package/dist/cli/field-context.d.ts.map +1 -0
  359. package/dist/cli/field-context.js +47 -0
  360. package/dist/cli/field-context.js.map +1 -0
  361. package/dist/cli/format-context.d.ts +32 -0
  362. package/dist/cli/format-context.d.ts.map +1 -0
  363. package/dist/cli/format-context.js +50 -0
  364. package/dist/cli/format-context.js.map +1 -0
  365. package/dist/cli/index.d.ts +9 -0
  366. package/dist/cli/index.d.ts.map +1 -0
  367. package/dist/cli/index.js +16876 -14937
  368. package/dist/cli/index.js.map +4 -4
  369. package/dist/cli/logger-bootstrap.d.ts +6 -0
  370. package/dist/cli/logger-bootstrap.d.ts.map +1 -0
  371. package/dist/cli/logger-bootstrap.js +10 -0
  372. package/dist/cli/logger-bootstrap.js.map +1 -0
  373. package/dist/cli/middleware/output-format.d.ts +30 -0
  374. package/dist/cli/middleware/output-format.d.ts.map +1 -0
  375. package/dist/cli/middleware/output-format.js +35 -0
  376. package/dist/cli/middleware/output-format.js.map +1 -0
  377. package/dist/cli/progress.d.ts +84 -0
  378. package/dist/cli/progress.d.ts.map +1 -0
  379. package/dist/cli/progress.js +169 -0
  380. package/dist/cli/progress.js.map +1 -0
  381. package/dist/cli/renderers/colors.d.ts +32 -0
  382. package/dist/cli/renderers/colors.d.ts.map +1 -0
  383. package/dist/cli/renderers/colors.js +141 -0
  384. package/dist/cli/renderers/colors.js.map +1 -0
  385. package/dist/cli/renderers/error.d.ts +13 -0
  386. package/dist/cli/renderers/error.d.ts.map +1 -0
  387. package/dist/cli/renderers/error.js +42 -0
  388. package/dist/cli/renderers/error.js.map +1 -0
  389. package/dist/cli/renderers/index.d.ts +59 -0
  390. package/dist/cli/renderers/index.d.ts.map +1 -0
  391. package/dist/cli/renderers/index.js +184 -0
  392. package/dist/cli/renderers/index.js.map +1 -0
  393. package/dist/cli/renderers/normalizer.d.ts +21 -0
  394. package/dist/cli/renderers/normalizer.d.ts.map +1 -0
  395. package/dist/cli/renderers/normalizer.js +106 -0
  396. package/dist/cli/renderers/normalizer.js.map +1 -0
  397. package/dist/cli/renderers/system.d.ts +25 -0
  398. package/dist/cli/renderers/system.d.ts.map +1 -0
  399. package/dist/cli/renderers/system.js +416 -0
  400. package/dist/cli/renderers/system.js.map +1 -0
  401. package/dist/cli/renderers/tasks.d.ts +28 -0
  402. package/dist/cli/renderers/tasks.d.ts.map +1 -0
  403. package/dist/cli/renderers/tasks.js +306 -0
  404. package/dist/cli/renderers/tasks.js.map +1 -0
  405. package/dist/dispatch/adapters/cli.d.ts +67 -0
  406. package/dist/dispatch/adapters/cli.d.ts.map +1 -0
  407. package/dist/dispatch/adapters/cli.js +205 -0
  408. package/dist/dispatch/adapters/cli.js.map +1 -0
  409. package/dist/dispatch/adapters/mcp.d.ts +37 -0
  410. package/dist/dispatch/adapters/mcp.d.ts.map +1 -0
  411. package/dist/dispatch/adapters/mcp.js +122 -0
  412. package/dist/dispatch/adapters/mcp.js.map +1 -0
  413. package/dist/dispatch/context/session-context.d.ts +54 -0
  414. package/dist/dispatch/context/session-context.d.ts.map +1 -0
  415. package/dist/dispatch/context/session-context.js +61 -0
  416. package/dist/dispatch/context/session-context.js.map +1 -0
  417. package/dist/dispatch/dispatcher.d.ts +23 -0
  418. package/dist/dispatch/dispatcher.d.ts.map +1 -0
  419. package/dist/dispatch/dispatcher.js +84 -0
  420. package/dist/dispatch/dispatcher.js.map +1 -0
  421. package/dist/dispatch/domains/_base.d.ts +59 -0
  422. package/dist/dispatch/domains/_base.d.ts.map +1 -0
  423. package/dist/dispatch/domains/_base.js +77 -0
  424. package/dist/dispatch/domains/_base.js.map +1 -0
  425. package/dist/dispatch/domains/_meta.d.ts +23 -0
  426. package/dist/dispatch/domains/_meta.d.ts.map +1 -0
  427. package/dist/dispatch/domains/_meta.js +25 -0
  428. package/dist/dispatch/domains/_meta.js.map +1 -0
  429. package/dist/dispatch/domains/_routing.d.ts +8 -0
  430. package/dist/dispatch/domains/_routing.d.ts.map +1 -0
  431. package/dist/dispatch/domains/_routing.js +20 -0
  432. package/dist/dispatch/domains/_routing.js.map +1 -0
  433. package/dist/dispatch/domains/admin.d.ts +25 -0
  434. package/dist/dispatch/domains/admin.d.ts.map +1 -0
  435. package/dist/dispatch/domains/admin.js +670 -0
  436. package/dist/dispatch/domains/admin.js.map +1 -0
  437. package/dist/dispatch/domains/check.d.ts +22 -0
  438. package/dist/dispatch/domains/check.d.ts.map +1 -0
  439. package/dist/dispatch/domains/check.js +279 -0
  440. package/dist/dispatch/domains/check.js.map +1 -0
  441. package/dist/dispatch/domains/index.d.ts +26 -0
  442. package/dist/dispatch/domains/index.d.ts.map +1 -0
  443. package/dist/dispatch/domains/index.js +38 -0
  444. package/dist/dispatch/domains/index.js.map +1 -0
  445. package/dist/dispatch/domains/memory.d.ts +22 -0
  446. package/dist/dispatch/domains/memory.d.ts.map +1 -0
  447. package/dist/dispatch/domains/memory.js +303 -0
  448. package/dist/dispatch/domains/memory.js.map +1 -0
  449. package/dist/dispatch/domains/nexus.d.ts +22 -0
  450. package/dist/dispatch/domains/nexus.d.ts.map +1 -0
  451. package/dist/dispatch/domains/nexus.js +286 -0
  452. package/dist/dispatch/domains/nexus.js.map +1 -0
  453. package/dist/dispatch/domains/orchestrate.d.ts +19 -0
  454. package/dist/dispatch/domains/orchestrate.d.ts.map +1 -0
  455. package/dist/dispatch/domains/orchestrate.js +259 -0
  456. package/dist/dispatch/domains/orchestrate.js.map +1 -0
  457. package/dist/dispatch/domains/pipeline.d.ts +35 -0
  458. package/dist/dispatch/domains/pipeline.d.ts.map +1 -0
  459. package/dist/dispatch/domains/pipeline.js +553 -0
  460. package/dist/dispatch/domains/pipeline.js.map +1 -0
  461. package/dist/dispatch/domains/session.d.ts +22 -0
  462. package/dist/dispatch/domains/session.d.ts.map +1 -0
  463. package/dist/dispatch/domains/session.js +255 -0
  464. package/dist/dispatch/domains/session.js.map +1 -0
  465. package/dist/dispatch/domains/sticky.d.ts +20 -0
  466. package/dist/dispatch/domains/sticky.d.ts.map +1 -0
  467. package/dist/dispatch/domains/sticky.js +164 -0
  468. package/dist/dispatch/domains/sticky.js.map +1 -0
  469. package/dist/dispatch/domains/tasks.d.ts +25 -0
  470. package/dist/dispatch/domains/tasks.d.ts.map +1 -0
  471. package/dist/dispatch/domains/tasks.js +323 -0
  472. package/dist/dispatch/domains/tasks.js.map +1 -0
  473. package/dist/dispatch/domains/tools.d.ts +36 -0
  474. package/dist/dispatch/domains/tools.d.ts.map +1 -0
  475. package/dist/dispatch/domains/tools.js +451 -0
  476. package/dist/dispatch/domains/tools.js.map +1 -0
  477. package/dist/dispatch/engines/_error.d.ts +42 -0
  478. package/dist/dispatch/engines/_error.d.ts.map +1 -0
  479. package/dist/dispatch/engines/_error.js +201 -0
  480. package/dist/dispatch/engines/_error.js.map +1 -0
  481. package/dist/dispatch/engines/codebase-map-engine.d.ts +17 -0
  482. package/dist/dispatch/engines/codebase-map-engine.d.ts.map +1 -0
  483. package/dist/dispatch/engines/codebase-map-engine.js +29 -0
  484. package/dist/dispatch/engines/codebase-map-engine.js.map +1 -0
  485. package/dist/dispatch/engines/config-engine.d.ts +21 -0
  486. package/dist/dispatch/engines/config-engine.d.ts.map +1 -0
  487. package/dist/dispatch/engines/config-engine.js +45 -0
  488. package/dist/dispatch/engines/config-engine.js.map +1 -0
  489. package/dist/dispatch/engines/hooks-engine.d.ts +47 -0
  490. package/dist/dispatch/engines/hooks-engine.d.ts.map +1 -0
  491. package/dist/dispatch/engines/hooks-engine.js +57 -0
  492. package/dist/dispatch/engines/hooks-engine.js.map +1 -0
  493. package/dist/dispatch/engines/init-engine.d.ts +43 -0
  494. package/dist/dispatch/engines/init-engine.d.ts.map +1 -0
  495. package/dist/dispatch/engines/init-engine.js +73 -0
  496. package/dist/dispatch/engines/init-engine.js.map +1 -0
  497. package/dist/dispatch/engines/lifecycle-engine.d.ts +66 -0
  498. package/dist/dispatch/engines/lifecycle-engine.d.ts.map +1 -0
  499. package/dist/dispatch/engines/lifecycle-engine.js +213 -0
  500. package/dist/dispatch/engines/lifecycle-engine.js.map +1 -0
  501. package/dist/dispatch/engines/memory-engine.d.ts +10 -0
  502. package/dist/dispatch/engines/memory-engine.d.ts.map +1 -0
  503. package/dist/dispatch/engines/memory-engine.js +10 -0
  504. package/dist/dispatch/engines/memory-engine.js.map +1 -0
  505. package/dist/dispatch/engines/nexus-engine.d.ts +167 -0
  506. package/dist/dispatch/engines/nexus-engine.d.ts.map +1 -0
  507. package/dist/dispatch/engines/nexus-engine.js +356 -0
  508. package/dist/dispatch/engines/nexus-engine.js.map +1 -0
  509. package/dist/dispatch/engines/orchestrate-engine.d.ts +133 -0
  510. package/dist/dispatch/engines/orchestrate-engine.d.ts.map +1 -0
  511. package/dist/dispatch/engines/orchestrate-engine.js +769 -0
  512. package/dist/dispatch/engines/orchestrate-engine.js.map +1 -0
  513. package/dist/dispatch/engines/pipeline-engine.d.ts +51 -0
  514. package/dist/dispatch/engines/pipeline-engine.d.ts.map +1 -0
  515. package/dist/dispatch/engines/pipeline-engine.js +191 -0
  516. package/dist/dispatch/engines/pipeline-engine.js.map +1 -0
  517. package/dist/dispatch/engines/release-engine.d.ts +94 -0
  518. package/dist/dispatch/engines/release-engine.d.ts.map +1 -0
  519. package/dist/dispatch/engines/release-engine.js +669 -0
  520. package/dist/dispatch/engines/release-engine.js.map +1 -0
  521. package/dist/dispatch/engines/session-engine.d.ts +323 -0
  522. package/dist/dispatch/engines/session-engine.d.ts.map +1 -0
  523. package/dist/dispatch/engines/session-engine.js +865 -0
  524. package/dist/dispatch/engines/session-engine.js.map +1 -0
  525. package/dist/dispatch/engines/sticky-engine.d.ts +100 -0
  526. package/dist/dispatch/engines/sticky-engine.d.ts.map +1 -0
  527. package/dist/dispatch/engines/sticky-engine.js +181 -0
  528. package/dist/dispatch/engines/sticky-engine.js.map +1 -0
  529. package/dist/dispatch/engines/system-engine.d.ts +377 -0
  530. package/dist/dispatch/engines/system-engine.d.ts.map +1 -0
  531. package/dist/dispatch/engines/system-engine.js +979 -0
  532. package/dist/dispatch/engines/system-engine.js.map +1 -0
  533. package/dist/dispatch/engines/task-engine.d.ts +612 -0
  534. package/dist/dispatch/engines/task-engine.d.ts.map +1 -0
  535. package/dist/dispatch/engines/task-engine.js +950 -0
  536. package/dist/dispatch/engines/task-engine.js.map +1 -0
  537. package/dist/dispatch/engines/template-parser.d.ts +34 -0
  538. package/dist/dispatch/engines/template-parser.d.ts.map +1 -0
  539. package/dist/dispatch/engines/template-parser.js +57 -0
  540. package/dist/dispatch/engines/template-parser.js.map +1 -0
  541. package/dist/dispatch/engines/tools-engine.d.ts +270 -0
  542. package/dist/dispatch/engines/tools-engine.d.ts.map +1 -0
  543. package/dist/dispatch/engines/tools-engine.js +636 -0
  544. package/dist/dispatch/engines/tools-engine.js.map +1 -0
  545. package/dist/dispatch/engines/validate-engine.d.ts +154 -0
  546. package/dist/dispatch/engines/validate-engine.d.ts.map +1 -0
  547. package/dist/dispatch/engines/validate-engine.js +524 -0
  548. package/dist/dispatch/engines/validate-engine.js.map +1 -0
  549. package/dist/dispatch/index.d.ts +20 -0
  550. package/dist/dispatch/index.d.ts.map +1 -0
  551. package/dist/dispatch/index.js +19 -0
  552. package/dist/dispatch/index.js.map +1 -0
  553. package/dist/dispatch/lib/capability-matrix.d.ts +11 -0
  554. package/dist/dispatch/lib/capability-matrix.d.ts.map +1 -0
  555. package/dist/dispatch/lib/capability-matrix.js +10 -0
  556. package/dist/dispatch/lib/capability-matrix.js.map +1 -0
  557. package/dist/dispatch/lib/config.d.ts +16 -0
  558. package/dist/dispatch/lib/config.d.ts.map +1 -0
  559. package/dist/dispatch/lib/config.js +15 -0
  560. package/dist/dispatch/lib/config.js.map +1 -0
  561. package/dist/dispatch/lib/engine.d.ts +25 -0
  562. package/dist/dispatch/lib/engine.d.ts.map +1 -0
  563. package/dist/dispatch/lib/engine.js +44 -0
  564. package/dist/dispatch/lib/engine.js.map +1 -0
  565. package/dist/dispatch/lib/meta.d.ts +26 -0
  566. package/dist/dispatch/lib/meta.d.ts.map +1 -0
  567. package/dist/dispatch/lib/meta.js +37 -0
  568. package/dist/dispatch/lib/meta.js.map +1 -0
  569. package/dist/dispatch/lib/param-utils.d.ts +11 -0
  570. package/dist/dispatch/lib/param-utils.d.ts.map +1 -0
  571. package/dist/dispatch/lib/param-utils.js +10 -0
  572. package/dist/dispatch/lib/param-utils.js.map +1 -0
  573. package/dist/dispatch/lib/projections.d.ts +23 -0
  574. package/dist/dispatch/lib/projections.d.ts.map +1 -0
  575. package/dist/dispatch/lib/projections.js +48 -0
  576. package/dist/dispatch/lib/projections.js.map +1 -0
  577. package/dist/dispatch/lib/schema-utils.d.ts +42 -0
  578. package/dist/dispatch/lib/schema-utils.d.ts.map +1 -0
  579. package/dist/dispatch/lib/schema-utils.js +93 -0
  580. package/dist/dispatch/lib/schema-utils.js.map +1 -0
  581. package/dist/dispatch/lib/security.d.ts +11 -0
  582. package/dist/dispatch/lib/security.d.ts.map +1 -0
  583. package/dist/dispatch/lib/security.js +10 -0
  584. package/dist/dispatch/lib/security.js.map +1 -0
  585. package/dist/dispatch/middleware/audit.d.ts +23 -0
  586. package/dist/dispatch/middleware/audit.d.ts.map +1 -0
  587. package/dist/dispatch/middleware/audit.js +169 -0
  588. package/dist/dispatch/middleware/audit.js.map +1 -0
  589. package/dist/dispatch/middleware/field-filter.d.ts +24 -0
  590. package/dist/dispatch/middleware/field-filter.d.ts.map +1 -0
  591. package/dist/dispatch/middleware/field-filter.js +65 -0
  592. package/dist/dispatch/middleware/field-filter.js.map +1 -0
  593. package/dist/dispatch/middleware/pipeline.d.ts +20 -0
  594. package/dist/dispatch/middleware/pipeline.d.ts.map +1 -0
  595. package/dist/dispatch/middleware/pipeline.js +47 -0
  596. package/dist/dispatch/middleware/pipeline.js.map +1 -0
  597. package/dist/dispatch/middleware/projection.d.ts +35 -0
  598. package/dist/dispatch/middleware/projection.d.ts.map +1 -0
  599. package/dist/dispatch/middleware/projection.js +145 -0
  600. package/dist/dispatch/middleware/projection.js.map +1 -0
  601. package/dist/dispatch/middleware/protocol-enforcement.d.ts +12 -0
  602. package/dist/dispatch/middleware/protocol-enforcement.d.ts.map +1 -0
  603. package/dist/dispatch/middleware/protocol-enforcement.js +30 -0
  604. package/dist/dispatch/middleware/protocol-enforcement.js.map +1 -0
  605. package/dist/dispatch/middleware/rate-limiter.d.ts +30 -0
  606. package/dist/dispatch/middleware/rate-limiter.d.ts.map +1 -0
  607. package/dist/dispatch/middleware/rate-limiter.js +101 -0
  608. package/dist/dispatch/middleware/rate-limiter.js.map +1 -0
  609. package/dist/dispatch/middleware/sanitizer.d.ts +10 -0
  610. package/dist/dispatch/middleware/sanitizer.d.ts.map +1 -0
  611. package/dist/dispatch/middleware/sanitizer.js +42 -0
  612. package/dist/dispatch/middleware/sanitizer.js.map +1 -0
  613. package/dist/dispatch/middleware/session-resolver.d.ts +26 -0
  614. package/dist/dispatch/middleware/session-resolver.d.ts.map +1 -0
  615. package/dist/dispatch/middleware/session-resolver.js +65 -0
  616. package/dist/dispatch/middleware/session-resolver.js.map +1 -0
  617. package/dist/dispatch/middleware/verification-gates.d.ts +3 -0
  618. package/dist/dispatch/middleware/verification-gates.d.ts.map +1 -0
  619. package/dist/dispatch/middleware/verification-gates.js +40 -0
  620. package/dist/dispatch/middleware/verification-gates.js.map +1 -0
  621. package/dist/dispatch/registry.d.ts +91 -0
  622. package/dist/dispatch/registry.d.ts.map +1 -0
  623. package/dist/dispatch/registry.js +2833 -0
  624. package/dist/dispatch/registry.js.map +1 -0
  625. package/dist/dispatch/types.d.ts +218 -0
  626. package/dist/dispatch/types.d.ts.map +1 -0
  627. package/dist/dispatch/types.js +25 -0
  628. package/dist/dispatch/types.js.map +1 -0
  629. package/dist/mcp/gateways/mutate.d.ts +146 -0
  630. package/dist/mcp/gateways/mutate.d.ts.map +1 -0
  631. package/dist/mcp/gateways/mutate.js +1016 -0
  632. package/dist/mcp/gateways/mutate.js.map +1 -0
  633. package/dist/mcp/gateways/query.d.ts +138 -0
  634. package/dist/mcp/gateways/query.d.ts.map +1 -0
  635. package/dist/mcp/gateways/query.js +186 -0
  636. package/dist/mcp/gateways/query.js.map +1 -0
  637. package/dist/mcp/index.d.ts +16 -0
  638. package/dist/mcp/index.d.ts.map +1 -0
  639. package/dist/mcp/index.js +16735 -14861
  640. package/dist/mcp/index.js.map +4 -4
  641. package/dist/mcp/lib/background-jobs.d.ts +86 -0
  642. package/dist/mcp/lib/background-jobs.d.ts.map +1 -0
  643. package/dist/mcp/lib/background-jobs.js +183 -0
  644. package/dist/mcp/lib/background-jobs.js.map +1 -0
  645. package/dist/mcp/lib/budget.d.ts +35 -0
  646. package/dist/mcp/lib/budget.d.ts.map +1 -0
  647. package/dist/mcp/lib/budget.js +102 -0
  648. package/dist/mcp/lib/budget.js.map +1 -0
  649. package/dist/mcp/lib/cache.d.ts +78 -0
  650. package/dist/mcp/lib/cache.d.ts.map +1 -0
  651. package/dist/mcp/lib/cache.js +207 -0
  652. package/dist/mcp/lib/cache.js.map +1 -0
  653. package/dist/mcp/lib/config.d.ts +42 -0
  654. package/dist/mcp/lib/config.d.ts.map +1 -0
  655. package/dist/mcp/lib/config.js +241 -0
  656. package/dist/mcp/lib/config.js.map +1 -0
  657. package/dist/mcp/lib/defaults.d.ts +115 -0
  658. package/dist/mcp/lib/defaults.d.ts.map +1 -0
  659. package/dist/mcp/lib/defaults.js +61 -0
  660. package/dist/mcp/lib/defaults.js.map +1 -0
  661. package/dist/mcp/lib/gate-validators.d.ts +13 -0
  662. package/dist/mcp/lib/gate-validators.d.ts.map +1 -0
  663. package/dist/mcp/lib/gate-validators.js +13 -0
  664. package/dist/mcp/lib/gate-validators.js.map +1 -0
  665. package/dist/mcp/lib/gateway-meta.d.ts +37 -0
  666. package/dist/mcp/lib/gateway-meta.d.ts.map +1 -0
  667. package/dist/mcp/lib/gateway-meta.js +50 -0
  668. package/dist/mcp/lib/gateway-meta.js.map +1 -0
  669. package/dist/mcp/lib/job-manager-accessor.d.ts +10 -0
  670. package/dist/mcp/lib/job-manager-accessor.d.ts.map +1 -0
  671. package/dist/mcp/lib/job-manager-accessor.js +14 -0
  672. package/dist/mcp/lib/job-manager-accessor.js.map +1 -0
  673. package/dist/mcp/lib/protocol-enforcement.d.ts +12 -0
  674. package/dist/mcp/lib/protocol-enforcement.d.ts.map +1 -0
  675. package/dist/mcp/lib/protocol-enforcement.js +12 -0
  676. package/dist/mcp/lib/protocol-enforcement.js.map +1 -0
  677. package/dist/mcp/lib/protocol-rules.d.ts +12 -0
  678. package/dist/mcp/lib/protocol-rules.d.ts.map +1 -0
  679. package/dist/mcp/lib/protocol-rules.js +12 -0
  680. package/dist/mcp/lib/protocol-rules.js.map +1 -0
  681. package/dist/mcp/lib/rate-limiter.d.ts +110 -0
  682. package/dist/mcp/lib/rate-limiter.d.ts.map +1 -0
  683. package/dist/mcp/lib/rate-limiter.js +208 -0
  684. package/dist/mcp/lib/rate-limiter.js.map +1 -0
  685. package/dist/mcp/lib/router.d.ts +58 -0
  686. package/dist/mcp/lib/router.d.ts.map +1 -0
  687. package/dist/mcp/lib/router.js +12 -0
  688. package/dist/mcp/lib/router.js.map +1 -0
  689. package/dist/mcp/lib/security.d.ts +161 -0
  690. package/dist/mcp/lib/security.d.ts.map +1 -0
  691. package/dist/mcp/lib/security.js +360 -0
  692. package/dist/mcp/lib/security.js.map +1 -0
  693. package/dist/mcp/lib/verification-gates.d.ts +13 -0
  694. package/dist/mcp/lib/verification-gates.d.ts.map +1 -0
  695. package/dist/mcp/lib/verification-gates.js +12 -0
  696. package/dist/mcp/lib/verification-gates.js.map +1 -0
  697. package/dist/mcp/resources/budget.d.ts +22 -0
  698. package/dist/mcp/resources/budget.d.ts.map +1 -0
  699. package/dist/mcp/resources/budget.js +46 -0
  700. package/dist/mcp/resources/budget.js.map +1 -0
  701. package/dist/mcp/resources/index.d.ts +53 -0
  702. package/dist/mcp/resources/index.d.ts.map +1 -0
  703. package/dist/mcp/resources/index.js +278 -0
  704. package/dist/mcp/resources/index.js.map +1 -0
  705. package/package.json +3 -3
@@ -0,0 +1,1016 @@
1
+ /**
2
+ * mutate Gateway - Write Operations
3
+ *
4
+ * Handles all state-modifying operations with strict validation,
5
+ * audit logging, and rollback support.
6
+ *
7
+ * Canonical domains (10): tasks, session, memory, check, pipeline,
8
+ * orchestrate, tools, admin, nexus, sticky
9
+ *
10
+ * @task T2929
11
+ */
12
+ import { deriveGatewayMatrix, getByGateway } from '../../dispatch/registry.js';
13
+ /**
14
+ * Mutate operation matrix - all write operations by domain.
15
+ *
16
+ * DERIVED from the dispatch registry — single source of truth.
17
+ * Contains canonical domains.
18
+ *
19
+ * Reference: MCP-SERVER-SPECIFICATION.md Section 2.2.2
20
+ */
21
+ export const MUTATE_OPERATIONS = deriveGatewayMatrix('mutate');
22
+ /**
23
+ * Dynamic operation count (derived from MUTATE_OPERATIONS).
24
+ */
25
+ const actualMutateCount = Object.values(MUTATE_OPERATIONS).flat().length;
26
+ if (actualMutateCount < 1) {
27
+ console.error('Warning: Mutate operation registry is empty.');
28
+ }
29
+ function buildOperationFlagMatrix(predicate) {
30
+ const matrix = {};
31
+ for (const op of getByGateway('mutate')) {
32
+ if (!predicate(op)) {
33
+ continue;
34
+ }
35
+ if (!matrix[op.domain]) {
36
+ matrix[op.domain] = [];
37
+ }
38
+ matrix[op.domain].push(op.operation);
39
+ }
40
+ return matrix;
41
+ }
42
+ /**
43
+ * Idempotent operations derived from registry metadata.
44
+ */
45
+ const IDEMPOTENT_OPERATIONS = buildOperationFlagMatrix((op) => op.idempotent);
46
+ /**
47
+ * Session-required operations derived from registry metadata.
48
+ */
49
+ const SESSION_REQUIRED_OPERATIONS = buildOperationFlagMatrix((op) => op.sessionRequired);
50
+ /**
51
+ * Validate mutate request parameters
52
+ */
53
+ export function validateMutateParams(request) {
54
+ const { domain, operation, params } = request;
55
+ // Check if domain is valid
56
+ if (!MUTATE_OPERATIONS[domain]) {
57
+ return {
58
+ valid: false,
59
+ error: {
60
+ _meta: {
61
+ gateway: 'mutate',
62
+ domain,
63
+ operation,
64
+ version: '1.0.0',
65
+ timestamp: new Date().toISOString(),
66
+ duration_ms: 0,
67
+ },
68
+ success: false,
69
+ error: {
70
+ code: 'E_INVALID_DOMAIN',
71
+ exitCode: 2,
72
+ message: `Unknown mutate domain: ${domain}`,
73
+ fix: `Use one of: ${Object.keys(MUTATE_OPERATIONS).join(', ')}`,
74
+ alternatives: Object.keys(MUTATE_OPERATIONS).map((d) => ({
75
+ action: `List ${d} operations`,
76
+ command: `Available: ${MUTATE_OPERATIONS[d].join(', ')}`,
77
+ })),
78
+ },
79
+ },
80
+ };
81
+ }
82
+ // Check if operation is valid for this domain
83
+ const validOps = MUTATE_OPERATIONS[domain];
84
+ if (!validOps.includes(operation)) {
85
+ return {
86
+ valid: false,
87
+ error: {
88
+ _meta: {
89
+ gateway: 'mutate',
90
+ domain,
91
+ operation,
92
+ version: '1.0.0',
93
+ timestamp: new Date().toISOString(),
94
+ duration_ms: 0,
95
+ },
96
+ success: false,
97
+ error: {
98
+ code: 'E_INVALID_OPERATION',
99
+ exitCode: 2,
100
+ message: `Operation '${operation}' not supported for mutate in domain '${domain}'`,
101
+ fix: `Use one of: ${validOps.join(', ')}`,
102
+ alternatives: validOps.map((op) => ({
103
+ action: `Use ${op}`,
104
+ command: `mutate ${domain} ${op}`,
105
+ })),
106
+ },
107
+ },
108
+ };
109
+ }
110
+ // Perform operation-specific parameter validation
111
+ const paramValidation = validateOperationParams(domain, operation, params);
112
+ if (!paramValidation.valid) {
113
+ return paramValidation;
114
+ }
115
+ return { valid: true };
116
+ }
117
+ /**
118
+ * Validate operation-specific parameters
119
+ */
120
+ function validateOperationParams(domain, operation, params) {
121
+ // Domain-specific parameter validation (canonical domains only)
122
+ switch (domain) {
123
+ case 'tasks':
124
+ return validateTasksParams(operation, params);
125
+ case 'session':
126
+ return validateSessionParams(operation, params);
127
+ case 'orchestrate':
128
+ return validateOrchestrateParams(operation, params);
129
+ case 'memory':
130
+ return validateMemoryParams(operation, params);
131
+ case 'check':
132
+ return validateCheckParams(operation, params);
133
+ case 'pipeline':
134
+ return validatePipelineParams(operation, params);
135
+ case 'admin':
136
+ return validateAdminParams(operation, params);
137
+ case 'tools':
138
+ return validateToolsParams(operation, params);
139
+ default:
140
+ return { valid: true };
141
+ }
142
+ }
143
+ /**
144
+ * Validate tasks domain parameters
145
+ */
146
+ function validateTasksParams(operation, params) {
147
+ switch (operation) {
148
+ case 'add':
149
+ if (!params?.title || !params?.description) {
150
+ return {
151
+ valid: false,
152
+ error: {
153
+ _meta: {
154
+ gateway: 'mutate',
155
+ domain: 'tasks',
156
+ operation,
157
+ version: '1.0.0',
158
+ timestamp: new Date().toISOString(),
159
+ duration_ms: 0,
160
+ },
161
+ success: false,
162
+ error: {
163
+ code: 'E_VALIDATION_FAILED',
164
+ exitCode: 6,
165
+ message: 'Missing required parameters: title and description',
166
+ fix: 'Provide both title and description fields',
167
+ },
168
+ },
169
+ };
170
+ }
171
+ if (params.title === params.description) {
172
+ return {
173
+ valid: false,
174
+ error: {
175
+ _meta: {
176
+ gateway: 'mutate',
177
+ domain: 'tasks',
178
+ operation,
179
+ version: '1.0.0',
180
+ timestamp: new Date().toISOString(),
181
+ duration_ms: 0,
182
+ },
183
+ success: false,
184
+ error: {
185
+ code: 'E_VALIDATION_FAILED',
186
+ exitCode: 6,
187
+ message: 'Title and description must be different (anti-hallucination requirement)',
188
+ fix: 'Provide a unique description that differs from the title',
189
+ },
190
+ },
191
+ };
192
+ }
193
+ break;
194
+ case 'update':
195
+ case 'complete':
196
+ case 'delete':
197
+ case 'restore':
198
+ case 'reparent':
199
+ case 'promote':
200
+ case 'reorder':
201
+ case 'start':
202
+ if (!params?.taskId) {
203
+ return {
204
+ valid: false,
205
+ error: {
206
+ _meta: {
207
+ gateway: 'mutate',
208
+ domain: 'tasks',
209
+ operation,
210
+ version: '1.0.0',
211
+ timestamp: new Date().toISOString(),
212
+ duration_ms: 0,
213
+ },
214
+ success: false,
215
+ error: {
216
+ code: 'E_VALIDATION_FAILED',
217
+ exitCode: 6,
218
+ message: 'Missing required parameter: taskId',
219
+ fix: 'Provide taskId parameter',
220
+ },
221
+ },
222
+ };
223
+ }
224
+ break;
225
+ case 'relates.add': {
226
+ // Accept both targetId and relatedId for the second task (T5149)
227
+ const hasTarget = !!(params?.targetId || params?.relatedId);
228
+ if (!params?.taskId || !hasTarget || !params?.type) {
229
+ return {
230
+ valid: false,
231
+ error: {
232
+ _meta: {
233
+ gateway: 'mutate',
234
+ domain: 'tasks',
235
+ operation,
236
+ version: '1.0.0',
237
+ timestamp: new Date().toISOString(),
238
+ duration_ms: 0,
239
+ },
240
+ success: false,
241
+ error: {
242
+ code: 'E_VALIDATION_FAILED',
243
+ exitCode: 6,
244
+ message: 'Missing required parameters: taskId, targetId (or relatedId), and type',
245
+ fix: 'Provide taskId, targetId (or relatedId), and type parameters',
246
+ },
247
+ },
248
+ };
249
+ }
250
+ break;
251
+ }
252
+ }
253
+ return { valid: true };
254
+ }
255
+ /**
256
+ * Validate session domain parameters
257
+ */
258
+ function validateSessionParams(operation, params) {
259
+ switch (operation) {
260
+ case 'start':
261
+ if (!params?.scope) {
262
+ return {
263
+ valid: false,
264
+ error: {
265
+ _meta: {
266
+ gateway: 'mutate',
267
+ domain: 'session',
268
+ operation,
269
+ version: '1.0.0',
270
+ timestamp: new Date().toISOString(),
271
+ duration_ms: 0,
272
+ },
273
+ success: false,
274
+ error: {
275
+ code: 'E_VALIDATION_FAILED',
276
+ exitCode: 6,
277
+ message: 'Missing required parameter: scope',
278
+ fix: 'Provide scope as "global" or "epic:TXXX"',
279
+ },
280
+ },
281
+ };
282
+ }
283
+ break;
284
+ case 'resume':
285
+ if (!params?.sessionId) {
286
+ return {
287
+ valid: false,
288
+ error: {
289
+ _meta: {
290
+ gateway: 'mutate',
291
+ domain: 'session',
292
+ operation,
293
+ version: '1.0.0',
294
+ timestamp: new Date().toISOString(),
295
+ duration_ms: 0,
296
+ },
297
+ success: false,
298
+ error: {
299
+ code: 'E_VALIDATION_FAILED',
300
+ exitCode: 6,
301
+ message: 'Missing required parameter: sessionId',
302
+ fix: 'Provide sessionId parameter',
303
+ },
304
+ },
305
+ };
306
+ }
307
+ break;
308
+ case 'record.decision':
309
+ if (!params?.sessionId || !params?.taskId || !params?.decision || !params?.rationale) {
310
+ return {
311
+ valid: false,
312
+ error: {
313
+ _meta: {
314
+ gateway: 'mutate',
315
+ domain: 'session',
316
+ operation,
317
+ version: '1.0.0',
318
+ timestamp: new Date().toISOString(),
319
+ duration_ms: 0,
320
+ },
321
+ success: false,
322
+ error: {
323
+ code: 'E_VALIDATION_FAILED',
324
+ exitCode: 6,
325
+ message: 'Missing required parameters: sessionId, taskId, decision, and rationale',
326
+ fix: 'Provide sessionId, taskId, decision, and rationale parameters',
327
+ },
328
+ },
329
+ };
330
+ }
331
+ break;
332
+ case 'record.assumption':
333
+ if (!params?.assumption || !params?.confidence) {
334
+ return {
335
+ valid: false,
336
+ error: {
337
+ _meta: {
338
+ gateway: 'mutate',
339
+ domain: 'session',
340
+ operation,
341
+ version: '1.0.0',
342
+ timestamp: new Date().toISOString(),
343
+ duration_ms: 0,
344
+ },
345
+ success: false,
346
+ error: {
347
+ code: 'E_VALIDATION_FAILED',
348
+ exitCode: 6,
349
+ message: 'Missing required parameters: assumption and confidence',
350
+ fix: 'Provide assumption (string) and confidence (high|medium|low) parameters',
351
+ },
352
+ },
353
+ };
354
+ }
355
+ break;
356
+ }
357
+ return { valid: true };
358
+ }
359
+ /**
360
+ * Validate orchestrate domain parameters
361
+ */
362
+ function validateOrchestrateParams(operation, params) {
363
+ switch (operation) {
364
+ case 'start':
365
+ if (!params?.epicId) {
366
+ return {
367
+ valid: false,
368
+ error: {
369
+ _meta: {
370
+ gateway: 'mutate',
371
+ domain: 'orchestrate',
372
+ operation,
373
+ version: '1.0.0',
374
+ timestamp: new Date().toISOString(),
375
+ duration_ms: 0,
376
+ },
377
+ success: false,
378
+ error: {
379
+ code: 'E_VALIDATION_FAILED',
380
+ exitCode: 6,
381
+ message: 'Missing required parameter: epicId',
382
+ fix: 'Provide epicId parameter',
383
+ },
384
+ },
385
+ };
386
+ }
387
+ break;
388
+ case 'spawn':
389
+ case 'validate':
390
+ if (!params?.taskId) {
391
+ return {
392
+ valid: false,
393
+ error: {
394
+ _meta: {
395
+ gateway: 'mutate',
396
+ domain: 'orchestrate',
397
+ operation,
398
+ version: '1.0.0',
399
+ timestamp: new Date().toISOString(),
400
+ duration_ms: 0,
401
+ },
402
+ success: false,
403
+ error: {
404
+ code: 'E_VALIDATION_FAILED',
405
+ exitCode: 6,
406
+ message: 'Missing required parameter: taskId',
407
+ fix: 'Provide taskId parameter',
408
+ },
409
+ },
410
+ };
411
+ }
412
+ break;
413
+ case 'handoff':
414
+ if (!params?.taskId || !params?.protocolType) {
415
+ return {
416
+ valid: false,
417
+ error: {
418
+ _meta: {
419
+ gateway: 'mutate',
420
+ domain: 'orchestrate',
421
+ operation,
422
+ version: '1.0.0',
423
+ timestamp: new Date().toISOString(),
424
+ duration_ms: 0,
425
+ },
426
+ success: false,
427
+ error: {
428
+ code: 'E_VALIDATION_FAILED',
429
+ exitCode: 6,
430
+ message: 'Missing required parameters: taskId and protocolType',
431
+ fix: 'Provide both taskId and protocolType parameters',
432
+ },
433
+ },
434
+ };
435
+ }
436
+ break;
437
+ case 'parallel.start':
438
+ case 'parallel.end':
439
+ if (!params?.epicId || params?.wave === undefined) {
440
+ return {
441
+ valid: false,
442
+ error: {
443
+ _meta: {
444
+ gateway: 'mutate',
445
+ domain: 'orchestrate',
446
+ operation,
447
+ version: '1.0.0',
448
+ timestamp: new Date().toISOString(),
449
+ duration_ms: 0,
450
+ },
451
+ success: false,
452
+ error: {
453
+ code: 'E_VALIDATION_FAILED',
454
+ exitCode: 6,
455
+ message: 'Missing required parameters: epicId and wave',
456
+ fix: 'Provide both epicId and wave parameters',
457
+ },
458
+ },
459
+ };
460
+ }
461
+ break;
462
+ }
463
+ return { valid: true };
464
+ }
465
+ /**
466
+ * Validate memory domain parameters
467
+ */
468
+ function validateMemoryParams(operation, params) {
469
+ switch (operation) {
470
+ case 'inject':
471
+ if (!params?.protocolType) {
472
+ return {
473
+ valid: false,
474
+ error: {
475
+ _meta: {
476
+ gateway: 'mutate',
477
+ domain: 'memory',
478
+ operation,
479
+ version: '1.0.0',
480
+ timestamp: new Date().toISOString(),
481
+ duration_ms: 0,
482
+ },
483
+ success: false,
484
+ error: {
485
+ code: 'E_VALIDATION_FAILED',
486
+ exitCode: 6,
487
+ message: 'Missing required parameter: protocolType',
488
+ fix: 'Provide protocolType parameter (e.g., "research", "implementation")',
489
+ },
490
+ },
491
+ };
492
+ }
493
+ break;
494
+ case 'link':
495
+ if (!params?.researchId || !params?.taskId) {
496
+ return {
497
+ valid: false,
498
+ error: {
499
+ _meta: {
500
+ gateway: 'mutate',
501
+ domain: 'memory',
502
+ operation,
503
+ version: '1.0.0',
504
+ timestamp: new Date().toISOString(),
505
+ duration_ms: 0,
506
+ },
507
+ success: false,
508
+ error: {
509
+ code: 'E_VALIDATION_FAILED',
510
+ exitCode: 6,
511
+ message: 'Missing required parameters: researchId and taskId',
512
+ fix: 'Provide both researchId and taskId parameters',
513
+ },
514
+ },
515
+ };
516
+ }
517
+ break;
518
+ case 'manifest.append':
519
+ if (!params?.entry) {
520
+ return {
521
+ valid: false,
522
+ error: {
523
+ _meta: {
524
+ gateway: 'mutate',
525
+ domain: 'memory',
526
+ operation,
527
+ version: '1.0.0',
528
+ timestamp: new Date().toISOString(),
529
+ duration_ms: 0,
530
+ },
531
+ success: false,
532
+ error: {
533
+ code: 'E_VALIDATION_FAILED',
534
+ exitCode: 6,
535
+ message: 'Missing required parameter: entry',
536
+ fix: 'Provide entry parameter with manifest entry object',
537
+ },
538
+ },
539
+ };
540
+ }
541
+ break;
542
+ }
543
+ return { valid: true };
544
+ }
545
+ /**
546
+ * Validate pipeline stage.* sub-operation parameters
547
+ */
548
+ function validateStageParams(operation, params) {
549
+ switch (operation) {
550
+ case 'record':
551
+ if (!params?.taskId || !params?.stage || !params?.status) {
552
+ return {
553
+ valid: false,
554
+ error: {
555
+ _meta: {
556
+ gateway: 'mutate',
557
+ domain: 'pipeline',
558
+ operation,
559
+ version: '1.0.0',
560
+ timestamp: new Date().toISOString(),
561
+ duration_ms: 0,
562
+ },
563
+ success: false,
564
+ error: {
565
+ code: 'E_VALIDATION_FAILED',
566
+ exitCode: 6,
567
+ message: 'Missing required parameters: taskId, stage, and status',
568
+ fix: 'Provide taskId, stage, and status parameters',
569
+ },
570
+ },
571
+ };
572
+ }
573
+ break;
574
+ case 'skip':
575
+ case 'reset':
576
+ if (!params?.taskId || !params?.stage || !params?.reason) {
577
+ return {
578
+ valid: false,
579
+ error: {
580
+ _meta: {
581
+ gateway: 'mutate',
582
+ domain: 'pipeline',
583
+ operation,
584
+ version: '1.0.0',
585
+ timestamp: new Date().toISOString(),
586
+ duration_ms: 0,
587
+ },
588
+ success: false,
589
+ error: {
590
+ code: 'E_VALIDATION_FAILED',
591
+ exitCode: 6,
592
+ message: 'Missing required parameters: taskId, stage, and reason',
593
+ fix: 'Provide taskId, stage, and reason parameters',
594
+ },
595
+ },
596
+ };
597
+ }
598
+ break;
599
+ case 'gate.pass':
600
+ case 'gate.fail':
601
+ if (!params?.taskId || !params?.gateName) {
602
+ return {
603
+ valid: false,
604
+ error: {
605
+ _meta: {
606
+ gateway: 'mutate',
607
+ domain: 'pipeline',
608
+ operation,
609
+ version: '1.0.0',
610
+ timestamp: new Date().toISOString(),
611
+ duration_ms: 0,
612
+ },
613
+ success: false,
614
+ error: {
615
+ code: 'E_VALIDATION_FAILED',
616
+ exitCode: 6,
617
+ message: 'Missing required parameters: taskId and gateName',
618
+ fix: 'Provide taskId and gateName parameters',
619
+ },
620
+ },
621
+ };
622
+ }
623
+ break;
624
+ }
625
+ return { valid: true };
626
+ }
627
+ /**
628
+ * Validate check domain parameters
629
+ */
630
+ function validateCheckParams(operation, params) {
631
+ switch (operation) {
632
+ case 'compliance.record':
633
+ if (!params?.taskId || !params?.result) {
634
+ return {
635
+ valid: false,
636
+ error: {
637
+ _meta: {
638
+ gateway: 'mutate',
639
+ domain: 'check',
640
+ operation,
641
+ version: '1.0.0',
642
+ timestamp: new Date().toISOString(),
643
+ duration_ms: 0,
644
+ },
645
+ success: false,
646
+ error: {
647
+ code: 'E_VALIDATION_FAILED',
648
+ exitCode: 6,
649
+ message: 'Missing required parameters: taskId and result',
650
+ fix: 'Provide taskId and result parameters',
651
+ },
652
+ },
653
+ };
654
+ }
655
+ break;
656
+ }
657
+ return { valid: true };
658
+ }
659
+ /**
660
+ * Validate pipeline release.* sub-operation parameters
661
+ */
662
+ function validateReleaseParams(operation, params) {
663
+ switch (operation) {
664
+ case 'prepare':
665
+ case 'changelog':
666
+ case 'commit':
667
+ case 'tag':
668
+ case 'push':
669
+ case 'rollback':
670
+ case 'cancel':
671
+ if (!params?.version) {
672
+ return {
673
+ valid: false,
674
+ error: {
675
+ _meta: {
676
+ gateway: 'mutate',
677
+ domain: 'pipeline',
678
+ operation,
679
+ version: '1.0.0',
680
+ timestamp: new Date().toISOString(),
681
+ duration_ms: 0,
682
+ },
683
+ success: false,
684
+ error: {
685
+ code: 'E_VALIDATION_FAILED',
686
+ exitCode: 6,
687
+ message: 'Missing required parameter: version',
688
+ fix: 'Provide version parameter (X.Y.Z or YYYY.M.patch format)',
689
+ },
690
+ },
691
+ };
692
+ }
693
+ break;
694
+ }
695
+ return { valid: true };
696
+ }
697
+ /**
698
+ * Validate pipeline chain.* sub-operation parameters
699
+ */
700
+ function validateChainParams(operation, params) {
701
+ switch (operation) {
702
+ case 'gate.pass':
703
+ case 'gate.fail':
704
+ if (!params?.instanceId || !params?.gateId) {
705
+ return {
706
+ valid: false,
707
+ error: {
708
+ _meta: {
709
+ gateway: 'mutate',
710
+ domain: 'pipeline',
711
+ operation,
712
+ version: '1.0.0',
713
+ timestamp: new Date().toISOString(),
714
+ duration_ms: 0,
715
+ },
716
+ success: false,
717
+ error: {
718
+ code: 'E_VALIDATION_FAILED',
719
+ exitCode: 6,
720
+ message: 'Missing required parameters: instanceId and gateId',
721
+ fix: 'Provide instanceId and gateId parameters',
722
+ },
723
+ },
724
+ };
725
+ }
726
+ break;
727
+ }
728
+ return { valid: true };
729
+ }
730
+ /**
731
+ * Validate admin domain parameters
732
+ */
733
+ function validateAdminParams(operation, params) {
734
+ switch (operation) {
735
+ case 'config.set':
736
+ if (!params?.key || params?.value === undefined) {
737
+ return {
738
+ valid: false,
739
+ error: {
740
+ _meta: {
741
+ gateway: 'mutate',
742
+ domain: 'admin',
743
+ operation,
744
+ version: '1.0.0',
745
+ timestamp: new Date().toISOString(),
746
+ duration_ms: 0,
747
+ },
748
+ success: false,
749
+ error: {
750
+ code: 'E_VALIDATION_FAILED',
751
+ exitCode: 6,
752
+ message: 'Missing required parameters: key and value',
753
+ fix: 'Provide key and value parameters',
754
+ },
755
+ },
756
+ };
757
+ }
758
+ break;
759
+ case 'restore':
760
+ if (!params?.backupId) {
761
+ return {
762
+ valid: false,
763
+ error: {
764
+ _meta: {
765
+ gateway: 'mutate',
766
+ domain: 'admin',
767
+ operation,
768
+ version: '1.0.0',
769
+ timestamp: new Date().toISOString(),
770
+ duration_ms: 0,
771
+ },
772
+ success: false,
773
+ error: {
774
+ code: 'E_VALIDATION_FAILED',
775
+ exitCode: 6,
776
+ message: 'Missing required parameter: backupId',
777
+ fix: 'Provide backupId parameter',
778
+ },
779
+ },
780
+ };
781
+ }
782
+ break;
783
+ case 'job.cancel':
784
+ if (!params?.jobId) {
785
+ return {
786
+ valid: false,
787
+ error: {
788
+ _meta: {
789
+ gateway: 'mutate',
790
+ domain: 'admin',
791
+ operation,
792
+ version: '1.0.0',
793
+ timestamp: new Date().toISOString(),
794
+ duration_ms: 0,
795
+ },
796
+ success: false,
797
+ error: {
798
+ code: 'E_VALIDATION_FAILED',
799
+ exitCode: 6,
800
+ message: 'Missing required parameter: jobId',
801
+ fix: 'Provide jobId parameter',
802
+ },
803
+ },
804
+ };
805
+ }
806
+ break;
807
+ case 'cleanup':
808
+ if (!params?.type) {
809
+ return {
810
+ valid: false,
811
+ error: {
812
+ _meta: {
813
+ gateway: 'mutate',
814
+ domain: 'admin',
815
+ operation,
816
+ version: '1.0.0',
817
+ timestamp: new Date().toISOString(),
818
+ duration_ms: 0,
819
+ },
820
+ success: false,
821
+ error: {
822
+ code: 'E_VALIDATION_FAILED',
823
+ exitCode: 6,
824
+ message: 'Missing required parameter: type',
825
+ fix: 'Provide type parameter (e.g., "sessions", "backups")',
826
+ },
827
+ },
828
+ };
829
+ }
830
+ break;
831
+ }
832
+ return { valid: true };
833
+ }
834
+ /**
835
+ * Validate tools skill.* sub-operation parameters
836
+ */
837
+ function validateSkillSubParams(operation, params) {
838
+ switch (operation) {
839
+ case 'install':
840
+ case 'uninstall':
841
+ case 'enable':
842
+ case 'disable':
843
+ case 'configure':
844
+ if (!params?.name) {
845
+ return {
846
+ valid: false,
847
+ error: {
848
+ _meta: {
849
+ gateway: 'mutate',
850
+ domain: 'tools',
851
+ operation,
852
+ version: '1.0.0',
853
+ timestamp: new Date().toISOString(),
854
+ duration_ms: 0,
855
+ },
856
+ success: false,
857
+ error: {
858
+ code: 'E_VALIDATION_FAILED',
859
+ exitCode: 6,
860
+ message: 'Missing required parameter: name',
861
+ fix: 'Provide name parameter for the skill',
862
+ },
863
+ },
864
+ };
865
+ }
866
+ break;
867
+ }
868
+ return { valid: true };
869
+ }
870
+ /**
871
+ * Validate pipeline (canonical) domain parameters
872
+ *
873
+ * Handles stage.* and release.* prefixed operations that map to
874
+ * the legacy lifecycle and release domains respectively.
875
+ */
876
+ function validatePipelineParams(operation, params) {
877
+ // Stage operations (lifecycle alias)
878
+ if (operation.startsWith('stage.')) {
879
+ const stageOp = operation.slice('stage.'.length);
880
+ return validateStageParams(stageOp, params);
881
+ }
882
+ // Release operations
883
+ if (operation.startsWith('release.')) {
884
+ const releaseOp = operation.slice('release.'.length);
885
+ return validateReleaseParams(releaseOp, params);
886
+ }
887
+ // Chain operations
888
+ if (operation.startsWith('chain.')) {
889
+ const chainOp = operation.slice('chain.'.length);
890
+ return validateChainParams(chainOp, params);
891
+ }
892
+ return { valid: true };
893
+ }
894
+ /**
895
+ * Validate tools (canonical) domain parameters
896
+ *
897
+ * Handles skill.*, issue.*, and provider.* prefixed operations that
898
+ * map to the legacy skills, issues, and providers domains respectively.
899
+ */
900
+ function validateToolsParams(operation, params) {
901
+ // Skill operations
902
+ if (operation.startsWith('skill.')) {
903
+ const skillOp = operation.slice('skill.'.length);
904
+ return validateSkillSubParams(skillOp, params);
905
+ }
906
+ // Issue and provider operations pass through without extra validation
907
+ return { valid: true };
908
+ }
909
+ /**
910
+ * Register mutate tool with MCP server
911
+ *
912
+ * Returns tool definition for ListToolsRequestSchema handler
913
+ */
914
+ export function registerMutateTool() {
915
+ return {
916
+ name: 'mutate',
917
+ description: 'CLEO write operations: create, update, complete tasks; manage sessions; spawn agents; progress lifecycle; execute releases. Modifies state with validation. Use query with domain "admin", operation "help" first to discover available operations.',
918
+ inputSchema: {
919
+ type: 'object',
920
+ required: ['domain', 'operation'],
921
+ properties: {
922
+ domain: {
923
+ type: 'string',
924
+ enum: Object.keys(MUTATE_OPERATIONS),
925
+ description: 'Functional domain to mutate',
926
+ },
927
+ operation: {
928
+ type: 'string',
929
+ description: 'Domain-specific write operation. Call query admin.help to see the full operation matrix. Common: tasks.add, tasks.update, tasks.complete, session.start, session.end',
930
+ },
931
+ params: {
932
+ type: 'object',
933
+ description: 'Operation-specific parameters',
934
+ additionalProperties: true,
935
+ },
936
+ },
937
+ },
938
+ };
939
+ }
940
+ /**
941
+ * Handle mutate request
942
+ *
943
+ * Validates parameters, logs to audit trail, routes to domain handler,
944
+ * and handles idempotency
945
+ *
946
+ * @param request Mutate request with domain, operation, and params
947
+ * @returns Promise resolving to mutate response
948
+ */
949
+ export async function handleMutateRequest(request) {
950
+ const startTime = Date.now();
951
+ // Validate request parameters
952
+ const validation = validateMutateParams(request);
953
+ if (!validation.valid) {
954
+ return validation.error;
955
+ }
956
+ // Build domain request
957
+ const domainRequest = {
958
+ gateway: 'mutate',
959
+ domain: request.domain,
960
+ operation: request.operation,
961
+ params: request.params,
962
+ };
963
+ const response = {
964
+ _meta: {
965
+ gateway: 'mutate',
966
+ domain: request.domain,
967
+ operation: request.operation,
968
+ version: '1.0.0',
969
+ timestamp: new Date().toISOString(),
970
+ duration_ms: Date.now() - startTime,
971
+ },
972
+ success: true,
973
+ data: domainRequest,
974
+ };
975
+ return response;
976
+ }
977
+ /**
978
+ * Check if operation is idempotent
979
+ */
980
+ export function isIdempotentOperation(domain, operation) {
981
+ return IDEMPOTENT_OPERATIONS[domain]?.includes(operation) || false;
982
+ }
983
+ /**
984
+ * Check if operation requires session binding
985
+ */
986
+ export function requiresSession(domain, operation) {
987
+ return SESSION_REQUIRED_OPERATIONS[domain]?.includes(operation) || false;
988
+ }
989
+ /**
990
+ * Get mutate operation count for specific domain or all domains
991
+ */
992
+ export function getMutateOperationCount(domain) {
993
+ if (domain) {
994
+ return MUTATE_OPERATIONS[domain]?.length || 0;
995
+ }
996
+ return actualMutateCount;
997
+ }
998
+ /**
999
+ * Check if operation is write (mutate)
1000
+ */
1001
+ export function isMutateOperation(domain, operation) {
1002
+ return MUTATE_OPERATIONS[domain]?.includes(operation) || false;
1003
+ }
1004
+ /**
1005
+ * Get all mutate domains
1006
+ */
1007
+ export function getMutateDomains() {
1008
+ return Object.keys(MUTATE_OPERATIONS);
1009
+ }
1010
+ /**
1011
+ * Get operations for specific mutate domain
1012
+ */
1013
+ export function getMutateOperations(domain) {
1014
+ return MUTATE_OPERATIONS[domain] || [];
1015
+ }
1016
+ //# sourceMappingURL=mutate.js.map