@cleocode/cleo 2026.4.10 → 2026.4.12

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 (710) 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 +202 -0
  8. package/dist/cli/commands/add.js.map +1 -0
  9. package/dist/cli/commands/admin.d.ts +12 -0
  10. package/dist/cli/commands/admin.d.ts.map +1 -0
  11. package/dist/cli/commands/admin.js +59 -0
  12. package/dist/cli/commands/admin.js.map +1 -0
  13. package/dist/cli/commands/adr.d.ts +27 -0
  14. package/dist/cli/commands/adr.d.ts.map +1 -0
  15. package/dist/cli/commands/adr.js +79 -0
  16. package/dist/cli/commands/adr.js.map +1 -0
  17. package/dist/cli/commands/agent-profile-status.d.ts +98 -0
  18. package/dist/cli/commands/agent-profile-status.d.ts.map +1 -0
  19. package/dist/cli/commands/agent-profile-status.js +71 -0
  20. package/dist/cli/commands/agent-profile-status.js.map +1 -0
  21. package/dist/cli/commands/agent.d.ts +38 -0
  22. package/dist/cli/commands/agent.d.ts.map +1 -0
  23. package/dist/cli/commands/agent.js +1169 -0
  24. package/dist/cli/commands/agent.js.map +1 -0
  25. package/dist/cli/commands/agents.d.ts +17 -0
  26. package/dist/cli/commands/agents.d.ts.map +1 -0
  27. package/dist/cli/commands/agents.js +20 -0
  28. package/dist/cli/commands/agents.js.map +1 -0
  29. package/dist/cli/commands/analyze.d.ts +12 -0
  30. package/dist/cli/commands/analyze.d.ts.map +1 -0
  31. package/dist/cli/commands/analyze.js +20 -0
  32. package/dist/cli/commands/analyze.js.map +1 -0
  33. package/dist/cli/commands/archive-stats.d.ts +18 -0
  34. package/dist/cli/commands/archive-stats.d.ts.map +1 -0
  35. package/dist/cli/commands/archive-stats.js +49 -0
  36. package/dist/cli/commands/archive-stats.js.map +1 -0
  37. package/dist/cli/commands/archive.d.ts +12 -0
  38. package/dist/cli/commands/archive.d.ts.map +1 -0
  39. package/dist/cli/commands/archive.js +32 -0
  40. package/dist/cli/commands/archive.js.map +1 -0
  41. package/dist/cli/commands/backfill.d.ts +38 -0
  42. package/dist/cli/commands/backfill.d.ts.map +1 -0
  43. package/dist/cli/commands/backfill.js +147 -0
  44. package/dist/cli/commands/backfill.js.map +1 -0
  45. package/dist/cli/commands/backup.d.ts +9 -0
  46. package/dist/cli/commands/backup.d.ts.map +1 -0
  47. package/dist/cli/commands/backup.js +41 -0
  48. package/dist/cli/commands/backup.js.map +1 -0
  49. package/dist/cli/commands/blockers.d.ts +7 -0
  50. package/dist/cli/commands/blockers.d.ts.map +1 -0
  51. package/dist/cli/commands/blockers.js +16 -0
  52. package/dist/cli/commands/blockers.js.map +1 -0
  53. package/dist/cli/commands/brain.d.ts +29 -0
  54. package/dist/cli/commands/brain.d.ts.map +1 -0
  55. package/dist/cli/commands/brain.js +107 -0
  56. package/dist/cli/commands/brain.js.map +1 -0
  57. package/dist/cli/commands/briefing.d.ts +22 -0
  58. package/dist/cli/commands/briefing.d.ts.map +1 -0
  59. package/dist/cli/commands/briefing.js +45 -0
  60. package/dist/cli/commands/briefing.js.map +1 -0
  61. package/dist/cli/commands/bug.d.ts +12 -0
  62. package/dist/cli/commands/bug.d.ts.map +1 -0
  63. package/dist/cli/commands/bug.js +81 -0
  64. package/dist/cli/commands/bug.js.map +1 -0
  65. package/dist/cli/commands/cant.d.ts +32 -0
  66. package/dist/cli/commands/cant.d.ts.map +1 -0
  67. package/dist/cli/commands/cant.js +281 -0
  68. package/dist/cli/commands/cant.js.map +1 -0
  69. package/dist/cli/commands/check.d.ts +22 -0
  70. package/dist/cli/commands/check.d.ts.map +1 -0
  71. package/dist/cli/commands/check.js +164 -0
  72. package/dist/cli/commands/check.js.map +1 -0
  73. package/dist/cli/commands/checkpoint.d.ts +15 -0
  74. package/dist/cli/commands/checkpoint.d.ts.map +1 -0
  75. package/dist/cli/commands/checkpoint.js +91 -0
  76. package/dist/cli/commands/checkpoint.js.map +1 -0
  77. package/dist/cli/commands/code.d.ts +11 -0
  78. package/dist/cli/commands/code.d.ts.map +1 -0
  79. package/dist/cli/commands/code.js +114 -0
  80. package/dist/cli/commands/code.js.map +1 -0
  81. package/dist/cli/commands/commands.d.ts +13 -0
  82. package/dist/cli/commands/commands.d.ts.map +1 -0
  83. package/dist/cli/commands/commands.js +29 -0
  84. package/dist/cli/commands/commands.js.map +1 -0
  85. package/dist/cli/commands/complete.d.ts +12 -0
  86. package/dist/cli/commands/complete.d.ts.map +1 -0
  87. package/dist/cli/commands/complete.js +92 -0
  88. package/dist/cli/commands/complete.js.map +1 -0
  89. package/dist/cli/commands/compliance.d.ts +8 -0
  90. package/dist/cli/commands/compliance.d.ts.map +1 -0
  91. package/dist/cli/commands/compliance.js +85 -0
  92. package/dist/cli/commands/compliance.js.map +1 -0
  93. package/dist/cli/commands/config.d.ts +10 -0
  94. package/dist/cli/commands/config.d.ts.map +1 -0
  95. package/dist/cli/commands/config.js +69 -0
  96. package/dist/cli/commands/config.js.map +1 -0
  97. package/dist/cli/commands/consensus.d.ts +13 -0
  98. package/dist/cli/commands/consensus.d.ts.map +1 -0
  99. package/dist/cli/commands/consensus.js +45 -0
  100. package/dist/cli/commands/consensus.js.map +1 -0
  101. package/dist/cli/commands/context.d.ts +8 -0
  102. package/dist/cli/commands/context.d.ts.map +1 -0
  103. package/dist/cli/commands/context.js +40 -0
  104. package/dist/cli/commands/context.js.map +1 -0
  105. package/dist/cli/commands/contribution.d.ts +13 -0
  106. package/dist/cli/commands/contribution.d.ts.map +1 -0
  107. package/dist/cli/commands/contribution.js +41 -0
  108. package/dist/cli/commands/contribution.js.map +1 -0
  109. package/dist/cli/commands/current.d.ts +13 -0
  110. package/dist/cli/commands/current.d.ts.map +1 -0
  111. package/dist/cli/commands/current.js +20 -0
  112. package/dist/cli/commands/current.js.map +1 -0
  113. package/dist/cli/commands/dash.d.ts +12 -0
  114. package/dist/cli/commands/dash.d.ts.map +1 -0
  115. package/dist/cli/commands/dash.js +24 -0
  116. package/dist/cli/commands/dash.js.map +1 -0
  117. package/dist/cli/commands/decomposition.d.ts +13 -0
  118. package/dist/cli/commands/decomposition.d.ts.map +1 -0
  119. package/dist/cli/commands/decomposition.js +45 -0
  120. package/dist/cli/commands/decomposition.js.map +1 -0
  121. package/dist/cli/commands/delete.d.ts +12 -0
  122. package/dist/cli/commands/delete.d.ts.map +1 -0
  123. package/dist/cli/commands/delete.js +37 -0
  124. package/dist/cli/commands/delete.js.map +1 -0
  125. package/dist/cli/commands/deps.d.ts +24 -0
  126. package/dist/cli/commands/deps.d.ts.map +1 -0
  127. package/dist/cli/commands/deps.js +98 -0
  128. package/dist/cli/commands/deps.js.map +1 -0
  129. package/dist/cli/commands/detect-drift.d.ts +15 -0
  130. package/dist/cli/commands/detect-drift.d.ts.map +1 -0
  131. package/dist/cli/commands/detect-drift.js +424 -0
  132. package/dist/cli/commands/detect-drift.js.map +1 -0
  133. package/dist/cli/commands/detect.d.ts +10 -0
  134. package/dist/cli/commands/detect.d.ts.map +1 -0
  135. package/dist/cli/commands/detect.js +24 -0
  136. package/dist/cli/commands/detect.js.map +1 -0
  137. package/dist/cli/commands/docs.d.ts +13 -0
  138. package/dist/cli/commands/docs.d.ts.map +1 -0
  139. package/dist/cli/commands/docs.js +169 -0
  140. package/dist/cli/commands/docs.js.map +1 -0
  141. package/dist/cli/commands/doctor.d.ts +15 -0
  142. package/dist/cli/commands/doctor.d.ts.map +1 -0
  143. package/dist/cli/commands/doctor.js +133 -0
  144. package/dist/cli/commands/doctor.js.map +1 -0
  145. package/dist/cli/commands/dynamic.d.ts +24 -0
  146. package/dist/cli/commands/dynamic.d.ts.map +1 -0
  147. package/dist/cli/commands/dynamic.js +27 -0
  148. package/dist/cli/commands/dynamic.js.map +1 -0
  149. package/dist/cli/commands/env.d.ts +12 -0
  150. package/dist/cli/commands/env.d.ts.map +1 -0
  151. package/dist/cli/commands/env.js +44 -0
  152. package/dist/cli/commands/env.js.map +1 -0
  153. package/dist/cli/commands/exists.d.ts +22 -0
  154. package/dist/cli/commands/exists.d.ts.map +1 -0
  155. package/dist/cli/commands/exists.js +51 -0
  156. package/dist/cli/commands/exists.js.map +1 -0
  157. package/dist/cli/commands/export-tasks.d.ts +10 -0
  158. package/dist/cli/commands/export-tasks.d.ts.map +1 -0
  159. package/dist/cli/commands/export-tasks.js +47 -0
  160. package/dist/cli/commands/export-tasks.js.map +1 -0
  161. package/dist/cli/commands/export.d.ts +9 -0
  162. package/dist/cli/commands/export.d.ts.map +1 -0
  163. package/dist/cli/commands/export.js +46 -0
  164. package/dist/cli/commands/export.js.map +1 -0
  165. package/dist/cli/commands/find.d.ts +14 -0
  166. package/dist/cli/commands/find.d.ts.map +1 -0
  167. package/dist/cli/commands/find.js +134 -0
  168. package/dist/cli/commands/find.js.map +1 -0
  169. package/dist/cli/commands/generate-changelog.d.ts +14 -0
  170. package/dist/cli/commands/generate-changelog.d.ts.map +1 -0
  171. package/dist/cli/commands/generate-changelog.js +252 -0
  172. package/dist/cli/commands/generate-changelog.js.map +1 -0
  173. package/dist/cli/commands/grade.d.ts +13 -0
  174. package/dist/cli/commands/grade.d.ts.map +1 -0
  175. package/dist/cli/commands/grade.js +26 -0
  176. package/dist/cli/commands/grade.js.map +1 -0
  177. package/dist/cli/commands/history.d.ts +9 -0
  178. package/dist/cli/commands/history.d.ts.map +1 -0
  179. package/dist/cli/commands/history.js +30 -0
  180. package/dist/cli/commands/history.js.map +1 -0
  181. package/dist/cli/commands/implementation.d.ts +13 -0
  182. package/dist/cli/commands/implementation.d.ts.map +1 -0
  183. package/dist/cli/commands/implementation.js +41 -0
  184. package/dist/cli/commands/implementation.js.map +1 -0
  185. package/dist/cli/commands/import-tasks.d.ts +10 -0
  186. package/dist/cli/commands/import-tasks.d.ts.map +1 -0
  187. package/dist/cli/commands/import-tasks.js +38 -0
  188. package/dist/cli/commands/import-tasks.js.map +1 -0
  189. package/dist/cli/commands/import.d.ts +9 -0
  190. package/dist/cli/commands/import.d.ts.map +1 -0
  191. package/dist/cli/commands/import.js +28 -0
  192. package/dist/cli/commands/import.js.map +1 -0
  193. package/dist/cli/commands/init.d.ts +34 -0
  194. package/dist/cli/commands/init.d.ts.map +1 -0
  195. package/dist/cli/commands/init.js +96 -0
  196. package/dist/cli/commands/init.js.map +1 -0
  197. package/dist/cli/commands/inject.d.ts +8 -0
  198. package/dist/cli/commands/inject.d.ts.map +1 -0
  199. package/dist/cli/commands/inject.js +28 -0
  200. package/dist/cli/commands/inject.js.map +1 -0
  201. package/dist/cli/commands/issue.d.ts +17 -0
  202. package/dist/cli/commands/issue.d.ts.map +1 -0
  203. package/dist/cli/commands/issue.js +107 -0
  204. package/dist/cli/commands/issue.js.map +1 -0
  205. package/dist/cli/commands/labels.d.ts +13 -0
  206. package/dist/cli/commands/labels.d.ts.map +1 -0
  207. package/dist/cli/commands/labels.js +44 -0
  208. package/dist/cli/commands/labels.js.map +1 -0
  209. package/dist/cli/commands/lifecycle.d.ts +8 -0
  210. package/dist/cli/commands/lifecycle.d.ts.map +1 -0
  211. package/dist/cli/commands/lifecycle.js +84 -0
  212. package/dist/cli/commands/lifecycle.js.map +1 -0
  213. package/dist/cli/commands/list.d.ts +14 -0
  214. package/dist/cli/commands/list.d.ts.map +1 -0
  215. package/dist/cli/commands/list.js +143 -0
  216. package/dist/cli/commands/list.js.map +1 -0
  217. package/dist/cli/commands/log.d.ts +12 -0
  218. package/dist/cli/commands/log.d.ts.map +1 -0
  219. package/dist/cli/commands/log.js +30 -0
  220. package/dist/cli/commands/log.js.map +1 -0
  221. package/dist/cli/commands/map.d.ts +10 -0
  222. package/dist/cli/commands/map.d.ts.map +1 -0
  223. package/dist/cli/commands/map.js +23 -0
  224. package/dist/cli/commands/map.js.map +1 -0
  225. package/dist/cli/commands/memory-brain.d.ts +14 -0
  226. package/dist/cli/commands/memory-brain.d.ts.map +1 -0
  227. package/dist/cli/commands/memory-brain.js +157 -0
  228. package/dist/cli/commands/memory-brain.js.map +1 -0
  229. package/dist/cli/commands/migrate-claude-mem.d.ts +18 -0
  230. package/dist/cli/commands/migrate-claude-mem.d.ts.map +1 -0
  231. package/dist/cli/commands/migrate-claude-mem.js +60 -0
  232. package/dist/cli/commands/migrate-claude-mem.js.map +1 -0
  233. package/dist/cli/commands/next.d.ts +9 -0
  234. package/dist/cli/commands/next.d.ts.map +1 -0
  235. package/dist/cli/commands/next.js +20 -0
  236. package/dist/cli/commands/next.js.map +1 -0
  237. package/dist/cli/commands/nexus.d.ts +16 -0
  238. package/dist/cli/commands/nexus.d.ts.map +1 -0
  239. package/dist/cli/commands/nexus.js +155 -0
  240. package/dist/cli/commands/nexus.js.map +1 -0
  241. package/dist/cli/commands/observe.d.ts +12 -0
  242. package/dist/cli/commands/observe.d.ts.map +1 -0
  243. package/dist/cli/commands/observe.js +42 -0
  244. package/dist/cli/commands/observe.js.map +1 -0
  245. package/dist/cli/commands/ops.d.ts +10 -0
  246. package/dist/cli/commands/ops.d.ts.map +1 -0
  247. package/dist/cli/commands/ops.js +19 -0
  248. package/dist/cli/commands/ops.js.map +1 -0
  249. package/dist/cli/commands/orchestrate.d.ts +8 -0
  250. package/dist/cli/commands/orchestrate.d.ts.map +1 -0
  251. package/dist/cli/commands/orchestrate.js +58 -0
  252. package/dist/cli/commands/orchestrate.js.map +1 -0
  253. package/dist/cli/commands/otel.d.ts +12 -0
  254. package/dist/cli/commands/otel.d.ts.map +1 -0
  255. package/dist/cli/commands/otel.js +128 -0
  256. package/dist/cli/commands/otel.js.map +1 -0
  257. package/dist/cli/commands/phase.d.ts +12 -0
  258. package/dist/cli/commands/phase.d.ts.map +1 -0
  259. package/dist/cli/commands/phase.js +91 -0
  260. package/dist/cli/commands/phase.js.map +1 -0
  261. package/dist/cli/commands/phases.d.ts +12 -0
  262. package/dist/cli/commands/phases.d.ts.map +1 -0
  263. package/dist/cli/commands/phases.js +37 -0
  264. package/dist/cli/commands/phases.js.map +1 -0
  265. package/dist/cli/commands/plan.d.ts +8 -0
  266. package/dist/cli/commands/plan.d.ts.map +1 -0
  267. package/dist/cli/commands/plan.js +15 -0
  268. package/dist/cli/commands/plan.js.map +1 -0
  269. package/dist/cli/commands/promote.d.ts +7 -0
  270. package/dist/cli/commands/promote.d.ts.map +1 -0
  271. package/dist/cli/commands/promote.js +15 -0
  272. package/dist/cli/commands/promote.js.map +1 -0
  273. package/dist/cli/commands/reason.d.ts +35 -0
  274. package/dist/cli/commands/reason.d.ts.map +1 -0
  275. package/dist/cli/commands/reason.js +104 -0
  276. package/dist/cli/commands/reason.js.map +1 -0
  277. package/dist/cli/commands/refresh-memory.d.ts +9 -0
  278. package/dist/cli/commands/refresh-memory.d.ts.map +1 -0
  279. package/dist/cli/commands/refresh-memory.js +24 -0
  280. package/dist/cli/commands/refresh-memory.js.map +1 -0
  281. package/dist/cli/commands/relates.d.ts +12 -0
  282. package/dist/cli/commands/relates.d.ts.map +1 -0
  283. package/dist/cli/commands/relates.js +53 -0
  284. package/dist/cli/commands/relates.js.map +1 -0
  285. package/dist/cli/commands/release.d.ts +8 -0
  286. package/dist/cli/commands/release.d.ts.map +1 -0
  287. package/dist/cli/commands/release.js +72 -0
  288. package/dist/cli/commands/release.js.map +1 -0
  289. package/dist/cli/commands/remote.d.ts +12 -0
  290. package/dist/cli/commands/remote.d.ts.map +1 -0
  291. package/dist/cli/commands/remote.js +207 -0
  292. package/dist/cli/commands/remote.js.map +1 -0
  293. package/dist/cli/commands/reorder.d.ts +7 -0
  294. package/dist/cli/commands/reorder.d.ts.map +1 -0
  295. package/dist/cli/commands/reorder.js +20 -0
  296. package/dist/cli/commands/reorder.js.map +1 -0
  297. package/dist/cli/commands/reparent.d.ts +10 -0
  298. package/dist/cli/commands/reparent.d.ts.map +1 -0
  299. package/dist/cli/commands/reparent.js +19 -0
  300. package/dist/cli/commands/reparent.js.map +1 -0
  301. package/dist/cli/commands/research.d.ts +8 -0
  302. package/dist/cli/commands/research.d.ts.map +1 -0
  303. package/dist/cli/commands/research.js +129 -0
  304. package/dist/cli/commands/research.js.map +1 -0
  305. package/dist/cli/commands/restore.d.ts +12 -0
  306. package/dist/cli/commands/restore.d.ts.map +1 -0
  307. package/dist/cli/commands/restore.js +228 -0
  308. package/dist/cli/commands/restore.js.map +1 -0
  309. package/dist/cli/commands/roadmap.d.ts +8 -0
  310. package/dist/cli/commands/roadmap.d.ts.map +1 -0
  311. package/dist/cli/commands/roadmap.js +21 -0
  312. package/dist/cli/commands/roadmap.js.map +1 -0
  313. package/dist/cli/commands/safestop.d.ts +14 -0
  314. package/dist/cli/commands/safestop.d.ts.map +1 -0
  315. package/dist/cli/commands/safestop.js +32 -0
  316. package/dist/cli/commands/safestop.js.map +1 -0
  317. package/dist/cli/commands/schema.d.ts +27 -0
  318. package/dist/cli/commands/schema.d.ts.map +1 -0
  319. package/dist/cli/commands/schema.js +160 -0
  320. package/dist/cli/commands/schema.js.map +1 -0
  321. package/dist/cli/commands/self-update.d.ts +15 -0
  322. package/dist/cli/commands/self-update.d.ts.map +1 -0
  323. package/dist/cli/commands/self-update.js +329 -0
  324. package/dist/cli/commands/self-update.js.map +1 -0
  325. package/dist/cli/commands/sequence.d.ts +8 -0
  326. package/dist/cli/commands/sequence.d.ts.map +1 -0
  327. package/dist/cli/commands/sequence.js +30 -0
  328. package/dist/cli/commands/sequence.js.map +1 -0
  329. package/dist/cli/commands/session.d.ts +12 -0
  330. package/dist/cli/commands/session.d.ts.map +1 -0
  331. package/dist/cli/commands/session.js +175 -0
  332. package/dist/cli/commands/session.js.map +1 -0
  333. package/dist/cli/commands/show.d.ts +13 -0
  334. package/dist/cli/commands/show.d.ts.map +1 -0
  335. package/dist/cli/commands/show.js +40 -0
  336. package/dist/cli/commands/show.js.map +1 -0
  337. package/dist/cli/commands/skills.d.ts +13 -0
  338. package/dist/cli/commands/skills.d.ts.map +1 -0
  339. package/dist/cli/commands/skills.js +131 -0
  340. package/dist/cli/commands/skills.js.map +1 -0
  341. package/dist/cli/commands/snapshot.d.ts +9 -0
  342. package/dist/cli/commands/snapshot.d.ts.map +1 -0
  343. package/dist/cli/commands/snapshot.js +50 -0
  344. package/dist/cli/commands/snapshot.js.map +1 -0
  345. package/dist/cli/commands/specification.d.ts +13 -0
  346. package/dist/cli/commands/specification.d.ts.map +1 -0
  347. package/dist/cli/commands/specification.js +45 -0
  348. package/dist/cli/commands/specification.js.map +1 -0
  349. package/dist/cli/commands/start.d.ts +13 -0
  350. package/dist/cli/commands/start.d.ts.map +1 -0
  351. package/dist/cli/commands/start.js +20 -0
  352. package/dist/cli/commands/start.js.map +1 -0
  353. package/dist/cli/commands/stats.d.ts +12 -0
  354. package/dist/cli/commands/stats.d.ts.map +1 -0
  355. package/dist/cli/commands/stats.js +35 -0
  356. package/dist/cli/commands/stats.js.map +1 -0
  357. package/dist/cli/commands/sticky.d.ts +16 -0
  358. package/dist/cli/commands/sticky.d.ts.map +1 -0
  359. package/dist/cli/commands/sticky.js +211 -0
  360. package/dist/cli/commands/sticky.js.map +1 -0
  361. package/dist/cli/commands/stop.d.ts +13 -0
  362. package/dist/cli/commands/stop.d.ts.map +1 -0
  363. package/dist/cli/commands/stop.js +20 -0
  364. package/dist/cli/commands/stop.js.map +1 -0
  365. package/dist/cli/commands/testing.d.ts +13 -0
  366. package/dist/cli/commands/testing.d.ts.map +1 -0
  367. package/dist/cli/commands/testing.js +64 -0
  368. package/dist/cli/commands/testing.js.map +1 -0
  369. package/dist/cli/commands/token.d.ts +10 -0
  370. package/dist/cli/commands/token.d.ts.map +1 -0
  371. package/dist/cli/commands/token.js +135 -0
  372. package/dist/cli/commands/token.js.map +1 -0
  373. package/dist/cli/commands/update.d.ts +12 -0
  374. package/dist/cli/commands/update.d.ts.map +1 -0
  375. package/dist/cli/commands/update.js +83 -0
  376. package/dist/cli/commands/update.js.map +1 -0
  377. package/dist/cli/commands/upgrade.d.ts +18 -0
  378. package/dist/cli/commands/upgrade.d.ts.map +1 -0
  379. package/dist/cli/commands/upgrade.js +103 -0
  380. package/dist/cli/commands/upgrade.js.map +1 -0
  381. package/dist/cli/commands/validate.d.ts +12 -0
  382. package/dist/cli/commands/validate.d.ts.map +1 -0
  383. package/dist/cli/commands/validate.js +23 -0
  384. package/dist/cli/commands/validate.js.map +1 -0
  385. package/dist/cli/commands/verify.d.ts +8 -0
  386. package/dist/cli/commands/verify.d.ts.map +1 -0
  387. package/dist/cli/commands/verify.js +28 -0
  388. package/dist/cli/commands/verify.js.map +1 -0
  389. package/dist/cli/commands/web.d.ts +13 -0
  390. package/dist/cli/commands/web.d.ts.map +1 -0
  391. package/dist/cli/commands/web.js +277 -0
  392. package/dist/cli/commands/web.js.map +1 -0
  393. package/dist/cli/field-context.d.ts +32 -0
  394. package/dist/cli/field-context.d.ts.map +1 -0
  395. package/dist/cli/field-context.js +47 -0
  396. package/dist/cli/field-context.js.map +1 -0
  397. package/dist/cli/format-context.d.ts +32 -0
  398. package/dist/cli/format-context.d.ts.map +1 -0
  399. package/dist/cli/format-context.js +50 -0
  400. package/dist/cli/format-context.js.map +1 -0
  401. package/dist/cli/help-generator.d.ts +74 -0
  402. package/dist/cli/help-generator.d.ts.map +1 -0
  403. package/dist/cli/help-generator.js +229 -0
  404. package/dist/cli/help-generator.js.map +1 -0
  405. package/dist/cli/index.d.ts +9 -0
  406. package/dist/cli/index.d.ts.map +1 -0
  407. package/dist/cli/index.js +342 -107611
  408. package/dist/cli/index.js.map +1 -7
  409. package/dist/cli/logger-bootstrap.d.ts +6 -0
  410. package/dist/cli/logger-bootstrap.d.ts.map +1 -0
  411. package/dist/cli/logger-bootstrap.js +10 -0
  412. package/dist/cli/logger-bootstrap.js.map +1 -0
  413. package/dist/cli/middleware/output-format.d.ts +30 -0
  414. package/dist/cli/middleware/output-format.d.ts.map +1 -0
  415. package/dist/cli/middleware/output-format.js +35 -0
  416. package/dist/cli/middleware/output-format.js.map +1 -0
  417. package/dist/cli/progress.d.ts +84 -0
  418. package/dist/cli/progress.d.ts.map +1 -0
  419. package/dist/cli/progress.js +169 -0
  420. package/dist/cli/progress.js.map +1 -0
  421. package/dist/cli/renderers/colors.d.ts +32 -0
  422. package/dist/cli/renderers/colors.d.ts.map +1 -0
  423. package/dist/cli/renderers/colors.js +141 -0
  424. package/dist/cli/renderers/colors.js.map +1 -0
  425. package/dist/cli/renderers/error.d.ts +13 -0
  426. package/dist/cli/renderers/error.d.ts.map +1 -0
  427. package/dist/cli/renderers/error.js +42 -0
  428. package/dist/cli/renderers/error.js.map +1 -0
  429. package/dist/cli/renderers/index.d.ts +87 -0
  430. package/dist/cli/renderers/index.d.ts.map +1 -0
  431. package/dist/cli/renderers/index.js +262 -0
  432. package/dist/cli/renderers/index.js.map +1 -0
  433. package/dist/cli/renderers/lafs-validator.d.ts +91 -0
  434. package/dist/cli/renderers/lafs-validator.d.ts.map +1 -0
  435. package/dist/cli/renderers/lafs-validator.js +176 -0
  436. package/dist/cli/renderers/lafs-validator.js.map +1 -0
  437. package/dist/cli/renderers/normalizer.d.ts +21 -0
  438. package/dist/cli/renderers/normalizer.d.ts.map +1 -0
  439. package/dist/cli/renderers/normalizer.js +106 -0
  440. package/dist/cli/renderers/normalizer.js.map +1 -0
  441. package/dist/cli/renderers/system.d.ts +25 -0
  442. package/dist/cli/renderers/system.d.ts.map +1 -0
  443. package/dist/cli/renderers/system.js +416 -0
  444. package/dist/cli/renderers/system.js.map +1 -0
  445. package/dist/cli/renderers/tasks.d.ts +28 -0
  446. package/dist/cli/renderers/tasks.d.ts.map +1 -0
  447. package/dist/cli/renderers/tasks.js +306 -0
  448. package/dist/cli/renderers/tasks.js.map +1 -0
  449. package/dist/dispatch/adapters/cli.d.ts +67 -0
  450. package/dist/dispatch/adapters/cli.d.ts.map +1 -0
  451. package/dist/dispatch/adapters/cli.js +276 -0
  452. package/dist/dispatch/adapters/cli.js.map +1 -0
  453. package/dist/dispatch/context/session-context.d.ts +54 -0
  454. package/dist/dispatch/context/session-context.d.ts.map +1 -0
  455. package/dist/dispatch/context/session-context.js +61 -0
  456. package/dist/dispatch/context/session-context.js.map +1 -0
  457. package/dist/dispatch/dispatcher.d.ts +23 -0
  458. package/dist/dispatch/dispatcher.d.ts.map +1 -0
  459. package/dist/dispatch/dispatcher.js +84 -0
  460. package/dist/dispatch/dispatcher.js.map +1 -0
  461. package/dist/dispatch/domains/_base.d.ts +59 -0
  462. package/dist/dispatch/domains/_base.d.ts.map +1 -0
  463. package/dist/dispatch/domains/_base.js +77 -0
  464. package/dist/dispatch/domains/_base.js.map +1 -0
  465. package/dist/dispatch/domains/_meta.d.ts +23 -0
  466. package/dist/dispatch/domains/_meta.d.ts.map +1 -0
  467. package/dist/dispatch/domains/_meta.js +25 -0
  468. package/dist/dispatch/domains/_meta.js.map +1 -0
  469. package/dist/dispatch/domains/_routing.d.ts +8 -0
  470. package/dist/dispatch/domains/_routing.d.ts.map +1 -0
  471. package/dist/dispatch/domains/_routing.js +20 -0
  472. package/dist/dispatch/domains/_routing.js.map +1 -0
  473. package/dist/dispatch/domains/admin.d.ts +25 -0
  474. package/dist/dispatch/domains/admin.d.ts.map +1 -0
  475. package/dist/dispatch/domains/admin.js +719 -0
  476. package/dist/dispatch/domains/admin.js.map +1 -0
  477. package/dist/dispatch/domains/check.d.ts +22 -0
  478. package/dist/dispatch/domains/check.d.ts.map +1 -0
  479. package/dist/dispatch/domains/check.js +360 -0
  480. package/dist/dispatch/domains/check.js.map +1 -0
  481. package/dist/dispatch/domains/conduit.d.ts +38 -0
  482. package/dist/dispatch/domains/conduit.d.ts.map +1 -0
  483. package/dist/dispatch/domains/conduit.js +247 -0
  484. package/dist/dispatch/domains/conduit.js.map +1 -0
  485. package/dist/dispatch/domains/index.d.ts +27 -0
  486. package/dist/dispatch/domains/index.d.ts.map +1 -0
  487. package/dist/dispatch/domains/index.js +40 -0
  488. package/dist/dispatch/domains/index.js.map +1 -0
  489. package/dist/dispatch/domains/memory.d.ts +22 -0
  490. package/dist/dispatch/domains/memory.d.ts.map +1 -0
  491. package/dist/dispatch/domains/memory.js +303 -0
  492. package/dist/dispatch/domains/memory.js.map +1 -0
  493. package/dist/dispatch/domains/nexus.d.ts +22 -0
  494. package/dist/dispatch/domains/nexus.d.ts.map +1 -0
  495. package/dist/dispatch/domains/nexus.js +286 -0
  496. package/dist/dispatch/domains/nexus.js.map +1 -0
  497. package/dist/dispatch/domains/orchestrate.d.ts +19 -0
  498. package/dist/dispatch/domains/orchestrate.d.ts.map +1 -0
  499. package/dist/dispatch/domains/orchestrate.js +259 -0
  500. package/dist/dispatch/domains/orchestrate.js.map +1 -0
  501. package/dist/dispatch/domains/pipeline.d.ts +35 -0
  502. package/dist/dispatch/domains/pipeline.d.ts.map +1 -0
  503. package/dist/dispatch/domains/pipeline.js +593 -0
  504. package/dist/dispatch/domains/pipeline.js.map +1 -0
  505. package/dist/dispatch/domains/session.d.ts +22 -0
  506. package/dist/dispatch/domains/session.d.ts.map +1 -0
  507. package/dist/dispatch/domains/session.js +257 -0
  508. package/dist/dispatch/domains/session.js.map +1 -0
  509. package/dist/dispatch/domains/sticky.d.ts +20 -0
  510. package/dist/dispatch/domains/sticky.d.ts.map +1 -0
  511. package/dist/dispatch/domains/sticky.js +164 -0
  512. package/dist/dispatch/domains/sticky.js.map +1 -0
  513. package/dist/dispatch/domains/tasks.d.ts +25 -0
  514. package/dist/dispatch/domains/tasks.d.ts.map +1 -0
  515. package/dist/dispatch/domains/tasks.js +361 -0
  516. package/dist/dispatch/domains/tasks.js.map +1 -0
  517. package/dist/dispatch/domains/tools.d.ts +37 -0
  518. package/dist/dispatch/domains/tools.d.ts.map +1 -0
  519. package/dist/dispatch/domains/tools.js +481 -0
  520. package/dist/dispatch/domains/tools.js.map +1 -0
  521. package/dist/dispatch/engines/_error.d.ts +119 -0
  522. package/dist/dispatch/engines/_error.d.ts.map +1 -0
  523. package/dist/dispatch/engines/_error.js +288 -0
  524. package/dist/dispatch/engines/_error.js.map +1 -0
  525. package/dist/dispatch/engines/code-engine.d.ts +18 -0
  526. package/dist/dispatch/engines/code-engine.d.ts.map +1 -0
  527. package/dist/dispatch/engines/code-engine.js +71 -0
  528. package/dist/dispatch/engines/code-engine.js.map +1 -0
  529. package/dist/dispatch/engines/codebase-map-engine.d.ts +31 -0
  530. package/dist/dispatch/engines/codebase-map-engine.d.ts.map +1 -0
  531. package/dist/dispatch/engines/codebase-map-engine.js +43 -0
  532. package/dist/dispatch/engines/codebase-map-engine.js.map +1 -0
  533. package/dist/dispatch/engines/config-engine.d.ts +32 -0
  534. package/dist/dispatch/engines/config-engine.d.ts.map +1 -0
  535. package/dist/dispatch/engines/config-engine.js +70 -0
  536. package/dist/dispatch/engines/config-engine.js.map +1 -0
  537. package/dist/dispatch/engines/hooks-engine.d.ts +96 -0
  538. package/dist/dispatch/engines/hooks-engine.d.ts.map +1 -0
  539. package/dist/dispatch/engines/hooks-engine.js +144 -0
  540. package/dist/dispatch/engines/hooks-engine.js.map +1 -0
  541. package/dist/dispatch/engines/init-engine.d.ts +56 -0
  542. package/dist/dispatch/engines/init-engine.d.ts.map +1 -0
  543. package/dist/dispatch/engines/init-engine.js +78 -0
  544. package/dist/dispatch/engines/init-engine.js.map +1 -0
  545. package/dist/dispatch/engines/lifecycle-engine.d.ts +66 -0
  546. package/dist/dispatch/engines/lifecycle-engine.d.ts.map +1 -0
  547. package/dist/dispatch/engines/lifecycle-engine.js +224 -0
  548. package/dist/dispatch/engines/lifecycle-engine.js.map +1 -0
  549. package/dist/dispatch/engines/memory-engine.d.ts +10 -0
  550. package/dist/dispatch/engines/memory-engine.d.ts.map +1 -0
  551. package/dist/dispatch/engines/memory-engine.js +10 -0
  552. package/dist/dispatch/engines/memory-engine.js.map +1 -0
  553. package/dist/dispatch/engines/nexus-engine.d.ts +167 -0
  554. package/dist/dispatch/engines/nexus-engine.d.ts.map +1 -0
  555. package/dist/dispatch/engines/nexus-engine.js +356 -0
  556. package/dist/dispatch/engines/nexus-engine.js.map +1 -0
  557. package/dist/dispatch/engines/orchestrate-engine.d.ts +133 -0
  558. package/dist/dispatch/engines/orchestrate-engine.d.ts.map +1 -0
  559. package/dist/dispatch/engines/orchestrate-engine.js +769 -0
  560. package/dist/dispatch/engines/orchestrate-engine.js.map +1 -0
  561. package/dist/dispatch/engines/pipeline-engine.d.ts +51 -0
  562. package/dist/dispatch/engines/pipeline-engine.d.ts.map +1 -0
  563. package/dist/dispatch/engines/pipeline-engine.js +191 -0
  564. package/dist/dispatch/engines/pipeline-engine.js.map +1 -0
  565. package/dist/dispatch/engines/release-engine.d.ts +94 -0
  566. package/dist/dispatch/engines/release-engine.d.ts.map +1 -0
  567. package/dist/dispatch/engines/release-engine.js +763 -0
  568. package/dist/dispatch/engines/release-engine.js.map +1 -0
  569. package/dist/dispatch/engines/session-engine.d.ts +383 -0
  570. package/dist/dispatch/engines/session-engine.d.ts.map +1 -0
  571. package/dist/dispatch/engines/session-engine.js +910 -0
  572. package/dist/dispatch/engines/session-engine.js.map +1 -0
  573. package/dist/dispatch/engines/sticky-engine.d.ts +100 -0
  574. package/dist/dispatch/engines/sticky-engine.d.ts.map +1 -0
  575. package/dist/dispatch/engines/sticky-engine.js +181 -0
  576. package/dist/dispatch/engines/sticky-engine.js.map +1 -0
  577. package/dist/dispatch/engines/system-engine.d.ts +539 -0
  578. package/dist/dispatch/engines/system-engine.d.ts.map +1 -0
  579. package/dist/dispatch/engines/system-engine.js +1258 -0
  580. package/dist/dispatch/engines/system-engine.js.map +1 -0
  581. package/dist/dispatch/engines/task-engine.d.ts +1055 -0
  582. package/dist/dispatch/engines/task-engine.d.ts.map +1 -0
  583. package/dist/dispatch/engines/task-engine.js +1193 -0
  584. package/dist/dispatch/engines/task-engine.js.map +1 -0
  585. package/dist/dispatch/engines/template-parser.d.ts +85 -0
  586. package/dist/dispatch/engines/template-parser.d.ts.map +1 -0
  587. package/dist/dispatch/engines/template-parser.js +108 -0
  588. package/dist/dispatch/engines/template-parser.js.map +1 -0
  589. package/dist/dispatch/engines/tools-engine.d.ts +270 -0
  590. package/dist/dispatch/engines/tools-engine.d.ts.map +1 -0
  591. package/dist/dispatch/engines/tools-engine.js +636 -0
  592. package/dist/dispatch/engines/tools-engine.js.map +1 -0
  593. package/dist/dispatch/engines/validate-engine.d.ts +218 -0
  594. package/dist/dispatch/engines/validate-engine.d.ts.map +1 -0
  595. package/dist/dispatch/engines/validate-engine.js +737 -0
  596. package/dist/dispatch/engines/validate-engine.js.map +1 -0
  597. package/dist/dispatch/index.d.ts +20 -0
  598. package/dist/dispatch/index.d.ts.map +1 -0
  599. package/dist/dispatch/index.js +19 -0
  600. package/dist/dispatch/index.js.map +1 -0
  601. package/dist/dispatch/lib/background-jobs.d.ts +86 -0
  602. package/dist/dispatch/lib/background-jobs.d.ts.map +1 -0
  603. package/dist/dispatch/lib/background-jobs.js +183 -0
  604. package/dist/dispatch/lib/background-jobs.js.map +1 -0
  605. package/dist/dispatch/lib/budget.d.ts +36 -0
  606. package/dist/dispatch/lib/budget.d.ts.map +1 -0
  607. package/dist/dispatch/lib/budget.js +109 -0
  608. package/dist/dispatch/lib/budget.js.map +1 -0
  609. package/dist/dispatch/lib/capability-matrix.d.ts +11 -0
  610. package/dist/dispatch/lib/capability-matrix.d.ts.map +1 -0
  611. package/dist/dispatch/lib/capability-matrix.js +10 -0
  612. package/dist/dispatch/lib/capability-matrix.js.map +1 -0
  613. package/dist/dispatch/lib/config-loader.d.ts +42 -0
  614. package/dist/dispatch/lib/config-loader.d.ts.map +1 -0
  615. package/dist/dispatch/lib/config-loader.js +217 -0
  616. package/dist/dispatch/lib/config-loader.js.map +1 -0
  617. package/dist/dispatch/lib/config.d.ts +11 -0
  618. package/dist/dispatch/lib/config.d.ts.map +1 -0
  619. package/dist/dispatch/lib/config.js +10 -0
  620. package/dist/dispatch/lib/config.js.map +1 -0
  621. package/dist/dispatch/lib/defaults.d.ts +115 -0
  622. package/dist/dispatch/lib/defaults.d.ts.map +1 -0
  623. package/dist/dispatch/lib/defaults.js +61 -0
  624. package/dist/dispatch/lib/defaults.js.map +1 -0
  625. package/dist/dispatch/lib/engine.d.ts +26 -0
  626. package/dist/dispatch/lib/engine.d.ts.map +1 -0
  627. package/dist/dispatch/lib/engine.js +46 -0
  628. package/dist/dispatch/lib/engine.js.map +1 -0
  629. package/dist/dispatch/lib/exit-codes.d.ts +35 -0
  630. package/dist/dispatch/lib/exit-codes.d.ts.map +1 -0
  631. package/dist/dispatch/lib/exit-codes.js +60 -0
  632. package/dist/dispatch/lib/exit-codes.js.map +1 -0
  633. package/dist/dispatch/lib/gateway-meta.d.ts +37 -0
  634. package/dist/dispatch/lib/gateway-meta.d.ts.map +1 -0
  635. package/dist/dispatch/lib/gateway-meta.js +50 -0
  636. package/dist/dispatch/lib/gateway-meta.js.map +1 -0
  637. package/dist/dispatch/lib/job-manager-accessor.d.ts +9 -0
  638. package/dist/dispatch/lib/job-manager-accessor.d.ts.map +1 -0
  639. package/dist/dispatch/lib/job-manager-accessor.js +13 -0
  640. package/dist/dispatch/lib/job-manager-accessor.js.map +1 -0
  641. package/dist/dispatch/lib/meta.d.ts +26 -0
  642. package/dist/dispatch/lib/meta.d.ts.map +1 -0
  643. package/dist/dispatch/lib/meta.js +37 -0
  644. package/dist/dispatch/lib/meta.js.map +1 -0
  645. package/dist/dispatch/lib/param-utils.d.ts +11 -0
  646. package/dist/dispatch/lib/param-utils.d.ts.map +1 -0
  647. package/dist/dispatch/lib/param-utils.js +10 -0
  648. package/dist/dispatch/lib/param-utils.js.map +1 -0
  649. package/dist/dispatch/lib/projections.d.ts +56 -0
  650. package/dist/dispatch/lib/projections.d.ts.map +1 -0
  651. package/dist/dispatch/lib/projections.js +65 -0
  652. package/dist/dispatch/lib/projections.js.map +1 -0
  653. package/dist/dispatch/lib/proto-envelope.d.ts +56 -0
  654. package/dist/dispatch/lib/proto-envelope.d.ts.map +1 -0
  655. package/dist/dispatch/lib/proto-envelope.js +17 -0
  656. package/dist/dispatch/lib/proto-envelope.js.map +1 -0
  657. package/dist/dispatch/lib/schema-utils.d.ts +39 -0
  658. package/dist/dispatch/lib/schema-utils.d.ts.map +1 -0
  659. package/dist/dispatch/lib/schema-utils.js +88 -0
  660. package/dist/dispatch/lib/schema-utils.js.map +1 -0
  661. package/dist/dispatch/lib/security.d.ts +11 -0
  662. package/dist/dispatch/lib/security.d.ts.map +1 -0
  663. package/dist/dispatch/lib/security.js +10 -0
  664. package/dist/dispatch/lib/security.js.map +1 -0
  665. package/dist/dispatch/middleware/audit.d.ts +23 -0
  666. package/dist/dispatch/middleware/audit.d.ts.map +1 -0
  667. package/dist/dispatch/middleware/audit.js +169 -0
  668. package/dist/dispatch/middleware/audit.js.map +1 -0
  669. package/dist/dispatch/middleware/field-filter.d.ts +25 -0
  670. package/dist/dispatch/middleware/field-filter.d.ts.map +1 -0
  671. package/dist/dispatch/middleware/field-filter.js +70 -0
  672. package/dist/dispatch/middleware/field-filter.js.map +1 -0
  673. package/dist/dispatch/middleware/pipeline.d.ts +33 -0
  674. package/dist/dispatch/middleware/pipeline.d.ts.map +1 -0
  675. package/dist/dispatch/middleware/pipeline.js +60 -0
  676. package/dist/dispatch/middleware/pipeline.js.map +1 -0
  677. package/dist/dispatch/middleware/projection.d.ts +35 -0
  678. package/dist/dispatch/middleware/projection.d.ts.map +1 -0
  679. package/dist/dispatch/middleware/projection.js +146 -0
  680. package/dist/dispatch/middleware/projection.js.map +1 -0
  681. package/dist/dispatch/middleware/protocol-enforcement.d.ts +30 -0
  682. package/dist/dispatch/middleware/protocol-enforcement.d.ts.map +1 -0
  683. package/dist/dispatch/middleware/protocol-enforcement.js +56 -0
  684. package/dist/dispatch/middleware/protocol-enforcement.js.map +1 -0
  685. package/dist/dispatch/middleware/rate-limiter.d.ts +72 -0
  686. package/dist/dispatch/middleware/rate-limiter.d.ts.map +1 -0
  687. package/dist/dispatch/middleware/rate-limiter.js +127 -0
  688. package/dist/dispatch/middleware/rate-limiter.js.map +1 -0
  689. package/dist/dispatch/middleware/sanitizer.d.ts +24 -0
  690. package/dist/dispatch/middleware/sanitizer.d.ts.map +1 -0
  691. package/dist/dispatch/middleware/sanitizer.js +56 -0
  692. package/dist/dispatch/middleware/sanitizer.js.map +1 -0
  693. package/dist/dispatch/middleware/session-resolver.d.ts +26 -0
  694. package/dist/dispatch/middleware/session-resolver.d.ts.map +1 -0
  695. package/dist/dispatch/middleware/session-resolver.js +65 -0
  696. package/dist/dispatch/middleware/session-resolver.js.map +1 -0
  697. package/dist/dispatch/middleware/verification-gates.d.ts +22 -0
  698. package/dist/dispatch/middleware/verification-gates.d.ts.map +1 -0
  699. package/dist/dispatch/middleware/verification-gates.js +59 -0
  700. package/dist/dispatch/middleware/verification-gates.js.map +1 -0
  701. package/dist/dispatch/registry.d.ts +91 -0
  702. package/dist/dispatch/registry.d.ts.map +1 -0
  703. package/dist/dispatch/registry.js +3133 -0
  704. package/dist/dispatch/registry.js.map +1 -0
  705. package/dist/dispatch/types.d.ts +206 -0
  706. package/dist/dispatch/types.d.ts.map +1 -0
  707. package/dist/dispatch/types.js +26 -0
  708. package/dist/dispatch/types.js.map +1 -0
  709. package/package.json +7 -7
  710. package/templates/cleoos-hub/pi-extensions/cleo-cant-bridge.ts +180 -0
@@ -0,0 +1,56 @@
1
+ import { ProtocolEnforcer } from '@cleocode/core/internal';
2
+ /**
3
+ * Creates a middleware that enforces protocol compliance.
4
+ *
5
+ * Delegates to ProtocolEnforcer.enforceProtocol() which:
6
+ * - Passes through query operations untouched
7
+ * - Passes through mutate operations that don't require validation
8
+ * - Validates protocol compliance on validated mutate operations after execution
9
+ * - In strict mode, blocks operations with protocol violations (exit codes 60-70)
10
+ *
11
+ * @remarks
12
+ * ProtocolEnforcer.enforceProtocol uses the core's proto-shape (`_meta`) while
13
+ * the dispatch layer uses the canonical CLI envelope shape (`meta`). This
14
+ * middleware bridges between the two shapes:
15
+ * - Wraps `next` to map `DispatchResponse.meta` → proto-shape `_meta` for the enforcer
16
+ * - Maps the enforcer's proto-shape result back to `DispatchResponse` (with `meta`)
17
+ * - Ensures `source` and `requestId` are always populated on the returned `meta`
18
+ *
19
+ * @param strictMode - When true, blocks operations that violate protocol rules
20
+ * @returns Middleware function that enforces protocol compliance
21
+ *
22
+ * @example
23
+ * ```typescript
24
+ * import { createProtocolEnforcement } from './protocol-enforcement.js';
25
+ *
26
+ * const enforcement = createProtocolEnforcement(true);
27
+ * ```
28
+ */
29
+ export function createProtocolEnforcement(strictMode = true) {
30
+ const enforcer = new ProtocolEnforcer(strictMode);
31
+ return async (req, next) => {
32
+ // Bridge DispatchNext (returns DispatchResponse with `meta`) to the proto-shape
33
+ // expected by ProtocolEnforcer (ProtocolResponse with `_meta`).
34
+ const protoNext = async () => {
35
+ const dispatchResult = await next();
36
+ // Map canonical `meta` → proto-shape `_meta` for the enforcer
37
+ const { meta, ...rest } = dispatchResult;
38
+ return { ...rest, _meta: meta };
39
+ };
40
+ const protoResult = await enforcer.enforceProtocol(req, protoNext);
41
+ // Map proto-shape result back to canonical DispatchResponse shape.
42
+ // enforceProtocol may return a minimal proto-response (missing source/requestId)
43
+ // when it constructs an error response — fill those in from the request.
44
+ const { _meta, ...protoRest } = protoResult;
45
+ const responseMeta = {
46
+ ..._meta,
47
+ source: _meta.source ?? req.source,
48
+ requestId: _meta.requestId ?? req.requestId,
49
+ };
50
+ return {
51
+ ...protoRest,
52
+ meta: responseMeta,
53
+ };
54
+ };
55
+ }
56
+ //# sourceMappingURL=protocol-enforcement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-enforcement.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/protocol-enforcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,yBAAyB,CAAC,aAAsB,IAAI;IAClE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAElD,OAAO,KAAK,EAAE,GAAoB,EAAE,IAAkB,EAA6B,EAAE;QACnF,gFAAgF;QAChF,gEAAgE;QAChE,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;YAC3B,MAAM,cAAc,GAAG,MAAM,IAAI,EAAE,CAAC;YACpC,8DAA8D;YAC9D,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,cAAc,CAAC;YACzC,OAAO,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAClC,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAEnE,mEAAmE;QACnE,iFAAiF;QACjF,yEAAyE;QACzE,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,EAAE,GAAG,WAAW,CAAC;QAC5C,MAAM,YAAY,GAAG;YACnB,GAAG,KAAK;YACR,MAAM,EAAG,KAAK,CAAC,MAA6C,IAAI,GAAG,CAAC,MAAM;YAC1E,SAAS,EAAG,KAAK,CAAC,SAAoB,IAAI,GAAG,CAAC,SAAS;SACxD,CAAC;QAEF,OAAO;YACL,GAAG,SAAS;YACZ,IAAI,EAAE,YAAY;SACC,CAAC;IACxB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,72 @@
1
+ import type { DispatchRequest, Middleware, RateLimitMeta } from '../types.js';
2
+ /**
3
+ * Per-category rate limit thresholds.
4
+ *
5
+ * @remarks
6
+ * Each category (query, mutate, spawn) uses a sliding window algorithm.
7
+ * Requests older than `windowMs` are pruned before checking the count.
8
+ */
9
+ export interface RateLimitConfig {
10
+ /** Maximum number of requests allowed within the window. */
11
+ maxRequests: number;
12
+ /** Sliding window duration in milliseconds. */
13
+ windowMs: number;
14
+ }
15
+ /**
16
+ * Full rate limiting configuration across all categories.
17
+ *
18
+ * @remarks
19
+ * When `enabled` is false, all requests pass through without limit checks.
20
+ */
21
+ export interface RateLimitingConfig {
22
+ /** Whether rate limiting is active. */
23
+ enabled: boolean;
24
+ /** Limits for read-only query operations. */
25
+ query: RateLimitConfig;
26
+ /** Limits for mutate (write) operations. */
27
+ mutate: RateLimitConfig;
28
+ /** Limits for spawn (subagent launch) operations. */
29
+ spawn: RateLimitConfig;
30
+ }
31
+ export declare const DEFAULT_RATE_LIMITING: RateLimitingConfig;
32
+ /**
33
+ * Sliding-window rate limiter for the dispatch pipeline.
34
+ *
35
+ * @remarks
36
+ * Tracks request timestamps per category (query, mutate, spawn) using
37
+ * in-memory sliding window buckets. The `check` method prunes stale
38
+ * timestamps, evaluates the current count, and returns whether the
39
+ * request is allowed along with limit metadata.
40
+ */
41
+ export declare class RateLimiter {
42
+ /** Per-category sliding window buckets. */
43
+ private buckets;
44
+ /** Merged configuration with defaults. */
45
+ private config;
46
+ constructor(config?: Partial<RateLimitingConfig>);
47
+ check(req: DispatchRequest): RateLimitMeta & {
48
+ allowed: boolean;
49
+ };
50
+ private resolveCategory;
51
+ private getLimitConfig;
52
+ }
53
+ /**
54
+ * Creates a rate limiting middleware for the dispatch pipeline.
55
+ *
56
+ * @remarks
57
+ * Attaches rate limit metadata to every response `_meta.rateLimit` field.
58
+ * When the limit is exceeded, returns an error response with code
59
+ * `E_RATE_LIMIT_EXCEEDED` and HTTP-style exit code 429.
60
+ *
61
+ * @param config - Optional partial config to override defaults
62
+ * @returns Middleware function that enforces rate limits
63
+ *
64
+ * @example
65
+ * ```typescript
66
+ * import { createRateLimiter } from './rate-limiter.js';
67
+ *
68
+ * const limiter = createRateLimiter({ query: { maxRequests: 50, windowMs: 30_000 } });
69
+ * ```
70
+ */
71
+ export declare function createRateLimiter(config?: Partial<RateLimitingConfig>): Middleware;
72
+ //# sourceMappingURL=rate-limiter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,eAAe,EAEf,UAAU,EACV,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,4DAA4D;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB;IACjC,uCAAuC;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,KAAK,EAAE,eAAe,CAAC;IACvB,4CAA4C;IAC5C,MAAM,EAAE,eAAe,CAAC;IACxB,qDAAqD;IACrD,KAAK,EAAE,eAAe,CAAC;CACxB;AAED,eAAO,MAAM,qBAAqB,EAAE,kBAKnC,CAAC;AASF;;;;;;;;GAQG;AACH,qBAAa,WAAW;IACtB,2CAA2C;IAC3C,OAAO,CAAC,OAAO,CAA+C;IAC9D,0CAA0C;IAC1C,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC;IAUhD,KAAK,CAAC,GAAG,EAAE,eAAe,GAAG,aAAa,GAAG;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE;IA2CjE,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;CAGvB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,UAAU,CAqClF"}
@@ -0,0 +1,127 @@
1
+ export const DEFAULT_RATE_LIMITING = {
2
+ enabled: true,
3
+ query: { maxRequests: 100, windowMs: 60_000 },
4
+ mutate: { maxRequests: 30, windowMs: 60_000 },
5
+ spawn: { maxRequests: 10, windowMs: 60_000 },
6
+ };
7
+ /**
8
+ * Sliding-window rate limiter for the dispatch pipeline.
9
+ *
10
+ * @remarks
11
+ * Tracks request timestamps per category (query, mutate, spawn) using
12
+ * in-memory sliding window buckets. The `check` method prunes stale
13
+ * timestamps, evaluates the current count, and returns whether the
14
+ * request is allowed along with limit metadata.
15
+ */
16
+ export class RateLimiter {
17
+ /** Per-category sliding window buckets. */
18
+ buckets = new Map();
19
+ /** Merged configuration with defaults. */
20
+ config;
21
+ constructor(config) {
22
+ this.config = {
23
+ ...DEFAULT_RATE_LIMITING,
24
+ ...config,
25
+ query: { ...DEFAULT_RATE_LIMITING.query, ...config?.query },
26
+ mutate: { ...DEFAULT_RATE_LIMITING.mutate, ...config?.mutate },
27
+ spawn: { ...DEFAULT_RATE_LIMITING.spawn, ...config?.spawn },
28
+ };
29
+ }
30
+ check(req) {
31
+ if (!this.config.enabled) {
32
+ return {
33
+ allowed: true,
34
+ remaining: Infinity,
35
+ limit: Infinity,
36
+ resetMs: 0,
37
+ category: 'disabled',
38
+ };
39
+ }
40
+ const category = this.resolveCategory(req.gateway, req.domain, req.operation);
41
+ const limitConfig = this.getLimitConfig(category);
42
+ const now = Date.now();
43
+ const windowStart = now - limitConfig.windowMs;
44
+ let bucket = this.buckets.get(category);
45
+ if (!bucket) {
46
+ bucket = { timestamps: [] };
47
+ this.buckets.set(category, bucket);
48
+ }
49
+ // Clean up old timestamps
50
+ bucket.timestamps = bucket.timestamps.filter((t) => t > windowStart);
51
+ const allowed = bucket.timestamps.length < limitConfig.maxRequests;
52
+ if (allowed) {
53
+ bucket.timestamps.push(now);
54
+ }
55
+ const oldest = bucket.timestamps[0] || now;
56
+ const resetMs = Math.max(0, oldest + limitConfig.windowMs - now);
57
+ return {
58
+ allowed,
59
+ remaining: Math.max(0, limitConfig.maxRequests - bucket.timestamps.length),
60
+ limit: limitConfig.maxRequests,
61
+ resetMs,
62
+ category,
63
+ };
64
+ }
65
+ resolveCategory(gateway, domain, operation) {
66
+ if (domain === 'orchestrate' && operation === 'spawn') {
67
+ return 'spawn';
68
+ }
69
+ return gateway === 'query' ? 'query' : 'mutate';
70
+ }
71
+ getLimitConfig(category) {
72
+ return this.config[category];
73
+ }
74
+ }
75
+ /**
76
+ * Creates a rate limiting middleware for the dispatch pipeline.
77
+ *
78
+ * @remarks
79
+ * Attaches rate limit metadata to every response `_meta.rateLimit` field.
80
+ * When the limit is exceeded, returns an error response with code
81
+ * `E_RATE_LIMIT_EXCEEDED` and HTTP-style exit code 429.
82
+ *
83
+ * @param config - Optional partial config to override defaults
84
+ * @returns Middleware function that enforces rate limits
85
+ *
86
+ * @example
87
+ * ```typescript
88
+ * import { createRateLimiter } from './rate-limiter.js';
89
+ *
90
+ * const limiter = createRateLimiter({ query: { maxRequests: 50, windowMs: 30_000 } });
91
+ * ```
92
+ */
93
+ export function createRateLimiter(config) {
94
+ const limiter = new RateLimiter(config);
95
+ return async (req, next) => {
96
+ const check = limiter.check(req);
97
+ if (!check.allowed) {
98
+ return {
99
+ meta: {
100
+ gateway: req.gateway,
101
+ domain: req.domain,
102
+ operation: req.operation,
103
+ timestamp: new Date().toISOString(),
104
+ duration_ms: 0,
105
+ source: req.source,
106
+ requestId: req.requestId,
107
+ rateLimit: check,
108
+ },
109
+ success: false,
110
+ error: {
111
+ code: 'E_RATE_LIMIT_EXCEEDED',
112
+ exitCode: 429, // Too Many Requests
113
+ message: `Rate limit exceeded for category: ${check.category}. Please wait ${Math.ceil(check.resetMs / 1000)} seconds.`,
114
+ },
115
+ };
116
+ }
117
+ const response = await next();
118
+ response.meta.rateLimit = {
119
+ limit: check.limit,
120
+ remaining: check.remaining,
121
+ resetMs: check.resetMs,
122
+ category: check.category,
123
+ };
124
+ return response;
125
+ };
126
+ }
127
+ //# sourceMappingURL=rate-limiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rate-limiter.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/rate-limiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Middleware } from '../types.js';
2
+ /**
3
+ * Creates a middleware that sanitizes incoming request parameters.
4
+ * Uses the canonical sanitization logic from security.ts to handle
5
+ * Task IDs, paths, string lengths, and enum validation.
6
+ *
7
+ * @remarks
8
+ * If sanitization fails (e.g. path traversal detected, invalid task ID format),
9
+ * the middleware short-circuits the pipeline and returns an error response with
10
+ * code `E_VALIDATION_FAILED` (exit code 6). Otherwise, the sanitized params
11
+ * replace the originals on the request object before calling `next()`.
12
+ *
13
+ * @param getProjectRoot - Optional function to resolve the current project root for path sanitization
14
+ * @returns Middleware function that sanitizes request params
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { createSanitizer } from './sanitizer.js';
19
+ *
20
+ * const sanitizer = createSanitizer(() => process.cwd());
21
+ * ```
22
+ */
23
+ export declare function createSanitizer(getProjectRoot?: () => string): Middleware;
24
+ //# sourceMappingURL=sanitizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/sanitizer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmD,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/F;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,UAAU,CAgCzE"}
@@ -0,0 +1,56 @@
1
+ import { sanitizeParams as legacySanitizeParams } from '../lib/security.js';
2
+ /**
3
+ * Creates a middleware that sanitizes incoming request parameters.
4
+ * Uses the canonical sanitization logic from security.ts to handle
5
+ * Task IDs, paths, string lengths, and enum validation.
6
+ *
7
+ * @remarks
8
+ * If sanitization fails (e.g. path traversal detected, invalid task ID format),
9
+ * the middleware short-circuits the pipeline and returns an error response with
10
+ * code `E_VALIDATION_FAILED` (exit code 6). Otherwise, the sanitized params
11
+ * replace the originals on the request object before calling `next()`.
12
+ *
13
+ * @param getProjectRoot - Optional function to resolve the current project root for path sanitization
14
+ * @returns Middleware function that sanitizes request params
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * import { createSanitizer } from './sanitizer.js';
19
+ *
20
+ * const sanitizer = createSanitizer(() => process.cwd());
21
+ * ```
22
+ */
23
+ export function createSanitizer(getProjectRoot) {
24
+ return async (req, next) => {
25
+ if (req.params) {
26
+ try {
27
+ const root = getProjectRoot ? getProjectRoot() : undefined;
28
+ req.params = legacySanitizeParams(req.params, root, {
29
+ domain: req.domain,
30
+ operation: req.operation,
31
+ });
32
+ }
33
+ catch (error) {
34
+ return {
35
+ meta: {
36
+ gateway: req.gateway,
37
+ domain: req.domain,
38
+ operation: req.operation,
39
+ timestamp: new Date().toISOString(),
40
+ duration_ms: 0,
41
+ source: req.source,
42
+ requestId: req.requestId,
43
+ },
44
+ success: false,
45
+ error: {
46
+ code: 'E_VALIDATION_FAILED',
47
+ exitCode: 6, // VALIDATION_ERROR
48
+ message: error instanceof Error ? error.message : String(error),
49
+ },
50
+ };
51
+ }
52
+ }
53
+ return next();
54
+ };
55
+ }
56
+ //# sourceMappingURL=sanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/sanitizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG5E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,eAAe,CAAC,cAA6B;IAC3D,OAAO,KAAK,EAAE,GAAoB,EAAE,IAAkB,EAA6B,EAAE;QACnF,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3D,GAAG,CAAC,MAAM,GAAG,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE;oBAClD,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO;oBACL,IAAI,EAAE;wBACJ,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;wBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACnC,WAAW,EAAE,CAAC;wBACd,MAAM,EAAE,GAAG,CAAC,MAAM;wBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;qBACzB;oBACD,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,qBAAqB;wBAC3B,QAAQ,EAAE,CAAC,EAAE,mBAAmB;wBAChC,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;qBAChE;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Session Resolver Middleware for CQRS Dispatch Layer.
3
+ *
4
+ * Runs FIRST in the CLI middleware pipeline.
5
+ * Populates request.sessionId from the best available source:
6
+ *
7
+ * 1. request.sessionId already set (explicit) -> use it
8
+ * 2. getBoundSession() has context -> stamp it
9
+ * 3. process.env.CLEO_SESSION_ID (legacy/transitional) -> use it
10
+ * 4. No session found -> leave undefined (OK for many operations)
11
+ *
12
+ * All downstream middleware (audit, enforcement) reads request.sessionId
13
+ * directly instead of doing their own multi-tier fallback.
14
+ *
15
+ * @epic T4959
16
+ */
17
+ import type { Middleware } from '../types.js';
18
+ /**
19
+ * Creates the session resolver middleware.
20
+ *
21
+ * @param cliSessionLookup Optional async function that resolves the active
22
+ * session ID from SQLite for CLI commands. If not provided, the resolver
23
+ * falls through to env var / null.
24
+ */
25
+ export declare function createSessionResolver(cliSessionLookup?: () => Promise<string | null>): Middleware;
26
+ //# sourceMappingURL=session-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-resolver.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,KAAK,EAAmD,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/F;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,UAAU,CA0CjG"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Session Resolver Middleware for CQRS Dispatch Layer.
3
+ *
4
+ * Runs FIRST in the CLI middleware pipeline.
5
+ * Populates request.sessionId from the best available source:
6
+ *
7
+ * 1. request.sessionId already set (explicit) -> use it
8
+ * 2. getBoundSession() has context -> stamp it
9
+ * 3. process.env.CLEO_SESSION_ID (legacy/transitional) -> use it
10
+ * 4. No session found -> leave undefined (OK for many operations)
11
+ *
12
+ * All downstream middleware (audit, enforcement) reads request.sessionId
13
+ * directly instead of doing their own multi-tier fallback.
14
+ *
15
+ * @epic T4959
16
+ */
17
+ import { getBoundSession } from '../context/session-context.js';
18
+ /**
19
+ * Creates the session resolver middleware.
20
+ *
21
+ * @param cliSessionLookup Optional async function that resolves the active
22
+ * session ID from SQLite for CLI commands. If not provided, the resolver
23
+ * falls through to env var / null.
24
+ */
25
+ export function createSessionResolver(cliSessionLookup) {
26
+ return async (req, next) => {
27
+ // Tier 1: Explicit — already populated by adapter
28
+ if (req.sessionId) {
29
+ return next();
30
+ }
31
+ // Tier 2: Process-scoped session context
32
+ const bound = getBoundSession();
33
+ if (bound) {
34
+ req.sessionId = bound.sessionId;
35
+ return next();
36
+ }
37
+ // Tier 3: CLI active session lookup (best-effort SQLite query)
38
+ if (cliSessionLookup && req.source === 'cli') {
39
+ try {
40
+ const activeId = await cliSessionLookup();
41
+ if (activeId) {
42
+ req.sessionId = activeId;
43
+ return next();
44
+ }
45
+ }
46
+ catch {
47
+ // Silent failure — many CLI commands don't need a session
48
+ }
49
+ }
50
+ // Tier 4: Legacy env var (transitional — will be removed)
51
+ const envGradeId = process.env.CLEO_SESSION_GRADE_ID;
52
+ if (envGradeId && process.env.CLEO_SESSION_GRADE === 'true') {
53
+ req.sessionId = envGradeId;
54
+ return next();
55
+ }
56
+ const envId = process.env.CLEO_SESSION_ID;
57
+ if (envId) {
58
+ req.sessionId = envId;
59
+ return next();
60
+ }
61
+ // Tier 5: No session — leave undefined
62
+ return next();
63
+ };
64
+ }
65
+ //# sourceMappingURL=session-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-resolver.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/session-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAGhE;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,gBAA+C;IACnF,OAAO,KAAK,EAAE,GAAoB,EAAE,IAAkB,EAA6B,EAAE;QACnF,kDAAkD;QAClD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,yCAAyC;QACzC,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAChC,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;YAChC,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,+DAA+D;QAC/D,IAAI,gBAAgB,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,gBAAgB,EAAE,CAAC;gBAC1C,IAAI,QAAQ,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,GAAG,QAAQ,CAAC;oBACzB,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,0DAA0D;YAC5D,CAAC;QACH,CAAC;QAED,0DAA0D;QAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACrD,IAAI,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,EAAE,CAAC;YAC5D,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC;YAC3B,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QAC1C,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YACtB,OAAO,IAAI,EAAE,CAAC;QAChB,CAAC;QAED,uCAAuC;QACvC,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { Middleware } from '../types.js';
2
+ /**
3
+ * Creates a middleware that enforces verification gates on task operations.
4
+ *
5
+ * @remarks
6
+ * Maps the dispatch request into a legacy OperationContext and delegates
7
+ * to the core VerificationGate. When verification fails, returns an error
8
+ * response with code `E_VALIDATION_FAILED` (exit code 80, LIFECYCLE_GATE_FAILED).
9
+ * On success, attaches the verification result to the response `_meta.verification`.
10
+ *
11
+ * @param strictMode - When true, blocks operations that fail verification gates
12
+ * @returns Middleware function that enforces verification gates
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { createVerificationGates } from './verification-gates.js';
17
+ *
18
+ * const gates = createVerificationGates(true);
19
+ * ```
20
+ */
21
+ export declare function createVerificationGates(strictMode?: boolean): Middleware;
22
+ //# sourceMappingURL=verification-gates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-gates.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/verification-gates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmD,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/F;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,GAAE,OAAc,GAAG,UAAU,CAyC9E"}
@@ -0,0 +1,59 @@
1
+ import { createVerificationGate as legacyCreateGate } from '@cleocode/core/internal';
2
+ /**
3
+ * Creates a middleware that enforces verification gates on task operations.
4
+ *
5
+ * @remarks
6
+ * Maps the dispatch request into a legacy OperationContext and delegates
7
+ * to the core VerificationGate. When verification fails, returns an error
8
+ * response with code `E_VALIDATION_FAILED` (exit code 80, LIFECYCLE_GATE_FAILED).
9
+ * On success, attaches the verification result to the response `_meta.verification`.
10
+ *
11
+ * @param strictMode - When true, blocks operations that fail verification gates
12
+ * @returns Middleware function that enforces verification gates
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * import { createVerificationGates } from './verification-gates.js';
17
+ *
18
+ * const gates = createVerificationGates(true);
19
+ * ```
20
+ */
21
+ export function createVerificationGates(strictMode = true) {
22
+ const gate = legacyCreateGate(strictMode);
23
+ return async (req, next) => {
24
+ // Map DispatchRequest to legacy OperationContext
25
+ const context = {
26
+ domain: req.domain,
27
+ operation: req.operation,
28
+ gateway: req.gateway === 'query' ? 'query' : 'mutate',
29
+ params: req.params,
30
+ taskId: req.params?.taskId || req.params?.parent,
31
+ };
32
+ const result = await gate.verifyOperation(context);
33
+ if (!result.passed) {
34
+ return {
35
+ meta: {
36
+ gateway: req.gateway,
37
+ domain: req.domain,
38
+ operation: req.operation,
39
+ timestamp: new Date().toISOString(),
40
+ duration_ms: 0,
41
+ source: req.source,
42
+ requestId: req.requestId,
43
+ verification: result,
44
+ },
45
+ success: false,
46
+ error: {
47
+ code: 'E_VALIDATION_FAILED',
48
+ exitCode: 80, // LIFECYCLE_GATE_FAILED
49
+ message: `Verification gate failed at layer ${result.blockedAt}: ${result.summary}`,
50
+ details: { verification: result },
51
+ },
52
+ };
53
+ }
54
+ const response = await next();
55
+ response.meta.verification = result;
56
+ return response;
57
+ };
58
+ }
59
+ //# sourceMappingURL=verification-gates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verification-gates.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/verification-gates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAGrF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,uBAAuB,CAAC,aAAsB,IAAI;IAChE,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1C,OAAO,KAAK,EAAE,GAAoB,EAAE,IAAkB,EAA6B,EAAE;QACnF,iDAAiD;QACjD,MAAM,OAAO,GAAG;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,OAAO,EAAE,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAE,OAAiB,CAAC,CAAC,CAAE,QAAkB;YAC3E,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,MAAM,EAAG,GAAG,CAAC,MAAM,EAAE,MAAiB,IAAK,GAAG,CAAC,MAAM,EAAE,MAAiB;SACzE,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEnD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO;gBACL,IAAI,EAAE;oBACJ,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,WAAW,EAAE,CAAC;oBACd,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,YAAY,EAAE,MAAM;iBACrB;gBACD,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,qBAAqB;oBAC3B,QAAQ,EAAE,EAAE,EAAE,wBAAwB;oBACtC,OAAO,EAAE,qCAAqC,MAAM,CAAC,SAAS,KAAK,MAAM,CAAC,OAAO,EAAE;oBACnF,OAAO,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;iBAClC;aACF,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Unified CQRS Dispatch Layer -- Operation Registry
3
+ *
4
+ * Single source of truth for all operations mapped to 10 canonical domains.
5
+ * Canonical domains only -- no legacy alias support.
6
+ *
7
+ * @epic T4820
8
+ * @task T4814, T5241, T5615
9
+ */
10
+ import type { CanonicalDomain, Gateway, ParamDef, Tier } from './types.js';
11
+ /** Definition of a single dispatchable operation. */
12
+ export interface OperationDef {
13
+ /** The CQRS gateway ('query' or 'mutate'). */
14
+ gateway: Gateway;
15
+ /** The canonical domain this operation belongs to. */
16
+ domain: CanonicalDomain;
17
+ /** The specific operation name (e.g. 'show', 'skill.list'). */
18
+ operation: string;
19
+ /** Brief description of what the operation does. */
20
+ description: string;
21
+ /** Agent progressive-disclosure tier (0=basic, 1=memory/check, 2=full). */
22
+ tier: Tier;
23
+ /** Whether the operation is safe to retry. */
24
+ idempotent: boolean;
25
+ /** Whether this operation requires an active session. */
26
+ sessionRequired: boolean;
27
+ /** List of parameter keys that MUST be present in the request. */
28
+ requiredParams: string[];
29
+ /**
30
+ * Fully-described parameter list. Replaces `requiredParams` when populated.
31
+ * Empty array = "no declared params" (not "no params accepted").
32
+ * Optional during T4897 migration — defaults to [] when absent.
33
+ * @see T4897 for progressive migration
34
+ */
35
+ params?: ParamDef[];
36
+ }
37
+ /**
38
+ * Resolution output for a dispatch request.
39
+ */
40
+ export interface Resolution {
41
+ /** The canonical domain. */
42
+ domain: CanonicalDomain;
43
+ /** The operation name. */
44
+ operation: string;
45
+ /** The definition of the matched operation. */
46
+ def: OperationDef;
47
+ }
48
+ /**
49
+ * The single source of truth for all operations in CLEO.
50
+ */
51
+ export declare const OPERATIONS: OperationDef[];
52
+ /**
53
+ * Derive a gateway operation matrix from the registry.
54
+ *
55
+ * Returns `Record<string, string[]>` containing:
56
+ * - All canonical domains with their operations
57
+ *
58
+ * This is the SINGLE derivation point — gateways use this instead of
59
+ * maintaining independent operation lists.
60
+ */
61
+ export declare function deriveGatewayMatrix(gateway: Gateway): Record<string, string[]>;
62
+ /**
63
+ * Get all accepted domain names for a gateway (canonical only).
64
+ */
65
+ export declare function getGatewayDomains(gateway: Gateway): string[];
66
+ /**
67
+ * Resolves a domain + operation to its registered definition.
68
+ */
69
+ export declare function resolve(gateway: Gateway, domain: string, operation: string): Resolution | undefined;
70
+ /**
71
+ * Validates that all required parameters are present in the request.
72
+ * Returns an array of missing parameter keys.
73
+ */
74
+ export declare function validateRequiredParams(def: OperationDef, params?: Record<string, unknown>): string[];
75
+ /** Get all operations for a specific canonical domain. */
76
+ export declare function getByDomain(domain: CanonicalDomain): OperationDef[];
77
+ /** Get all operations for a specific gateway. */
78
+ export declare function getByGateway(gateway: Gateway): OperationDef[];
79
+ /** Get all operations available at or below a specific tier. */
80
+ export declare function getByTier(tier: Tier): OperationDef[];
81
+ /** Get a list of canonical domains that actually have operations registered. */
82
+ export declare function getActiveDomains(): CanonicalDomain[];
83
+ /**
84
+ * Returns summary counts of operations for module validation.
85
+ */
86
+ export declare function getCounts(): {
87
+ query: number;
88
+ mutate: number;
89
+ total: number;
90
+ };
91
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/dispatch/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3E,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,OAAO,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,MAAM,EAAE,eAAe,CAAC;IACxB,+DAA+D;IAC/D,SAAS,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,IAAI,EAAE,IAAI,CAAC;IACX,8CAA8C;IAC9C,UAAU,EAAE,OAAO,CAAC;IACpB,yDAAyD;IACzD,eAAe,EAAE,OAAO,CAAC;IACzB,kEAAkE;IAClE,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,0BAA0B;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,GAAG,EAAE,YAAY,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,YAAY,EAihGpC,CAAC;AAMF;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAU9E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAE5D;AAMD;;GAEG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAChB,UAAU,GAAG,SAAS,CAQxB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,YAAY,EACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,EAAE,CAMV;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,MAAM,EAAE,eAAe,GAAG,YAAY,EAAE,CAEnE;AAED,iDAAiD;AACjD,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAE7D;AAED,gEAAgE;AAChE,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,YAAY,EAAE,CAEpD;AAED,gFAAgF;AAChF,wBAAgB,gBAAgB,IAAI,eAAe,EAAE,CAGpD;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAM5E"}