@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,10 @@
1
+ /**
2
+ * Security Hardening and Input Sanitization (Backward-Compat Re-export)
3
+ *
4
+ * Thin wrapper that re-exports from the canonical location at
5
+ * src/core/security/input-sanitization.ts.
6
+ *
7
+ * @task T5706
8
+ */
9
+ export { ALL_VALID_STATUSES, DEFAULT_RATE_LIMITS, ensureArray, RateLimiter, SecurityError, sanitizeContent, sanitizeParams, sanitizePath, sanitizeTaskId, VALID_DOMAINS, VALID_GATEWAYS, VALID_LIFECYCLE_STAGE_STATUSES, VALID_MANIFEST_STATUSES, VALID_PRIORITIES, validateEnum, } from '@cleocode/core/internal';
10
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../../../src/dispatch/lib/security.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,WAAW,EACX,aAAa,EACb,eAAe,EACf,cAAc,EACd,YAAY,EACZ,cAAc,EACd,aAAa,EACb,cAAc,EACd,8BAA8B,EAC9B,uBAAuB,EACvB,gBAAgB,EAChB,YAAY,GACb,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Audit Trail Middleware for CQRS Dispatch Layer.
3
+ *
4
+ * Dual-writes every audited operation to:
5
+ * 1. Pino structured log (subsystem: 'audit') -> .cleo/logs/cleo.log
6
+ * 2. SQLite audit_log table -> .cleo/tasks.db
7
+ *
8
+ * Legacy JSON file logging (.cleo/audit-log.json + rotated audit-log-*.json)
9
+ * has been removed per ADR-019.
10
+ *
11
+ * @task T2920
12
+ * @task T2929
13
+ * @task T4844
14
+ */
15
+ import type { Middleware } from '../types.js';
16
+ export type { AuditEntry } from '@cleocode/core/internal';
17
+ /**
18
+ * Creates an audit middleware that logs all mutate operations
19
+ * (and query operations during grade sessions) to Pino + SQLite.
20
+ */
21
+ export declare function createAudit(): Middleware;
22
+ export { queryAudit } from '@cleocode/core/internal';
23
+ //# sourceMappingURL=audit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAmD,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB/F,YAAY,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAqF1D;;;GAGG;AACH,wBAAgB,WAAW,IAAI,UAAU,CAkExC;AAGD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Audit Trail Middleware for CQRS Dispatch Layer.
3
+ *
4
+ * Dual-writes every audited operation to:
5
+ * 1. Pino structured log (subsystem: 'audit') -> .cleo/logs/cleo.log
6
+ * 2. SQLite audit_log table -> .cleo/tasks.db
7
+ *
8
+ * Legacy JSON file logging (.cleo/audit-log.json + rotated audit-log-*.json)
9
+ * has been removed per ADR-019.
10
+ *
11
+ * @task T2920
12
+ * @task T2929
13
+ * @task T4844
14
+ */
15
+ import { getLogger, getProjectInfoSync } from '@cleocode/core/internal';
16
+ import { getConfig } from '../lib/config.js';
17
+ const log = getLogger('audit');
18
+ /** Cached project hash — read once from project-info.json (immutable at runtime). */
19
+ let cachedProjectHash;
20
+ function resolveProjectHash() {
21
+ if (cachedProjectHash !== undefined)
22
+ return cachedProjectHash;
23
+ try {
24
+ const info = getProjectInfoSync();
25
+ cachedProjectHash = info?.projectHash ?? null;
26
+ }
27
+ catch {
28
+ cachedProjectHash = null;
29
+ }
30
+ return cachedProjectHash;
31
+ }
32
+ /**
33
+ * Check if the current context is a grade session.
34
+ *
35
+ * Now simplified: session-resolver middleware (T4959) populates request.sessionId
36
+ * before audit runs, so we only need to check grade mode flags.
37
+ */
38
+ function isGradeMode() {
39
+ return process.env.CLEO_SESSION_GRADE === 'true';
40
+ }
41
+ /**
42
+ * Get active session info from SQLite or env vars.
43
+ *
44
+ * Session-resolver middleware (T4959) now populates request.sessionId.
45
+ * This function is retained as a fallback for edge cases where
46
+ * session-resolver is not in the pipeline (e.g., tests, legacy callers).
47
+ */
48
+ async function getActiveSessionInfo() {
49
+ const gradeId = process.env.CLEO_SESSION_GRADE_ID;
50
+ if (gradeId && process.env.CLEO_SESSION_GRADE === 'true') {
51
+ return { id: gradeId, gradeMode: true };
52
+ }
53
+ const envId = process.env.CLEO_SESSION_ID;
54
+ if (envId) {
55
+ return { id: envId, gradeMode: false };
56
+ }
57
+ return null;
58
+ }
59
+ /**
60
+ * Write audit entry to SQLite audit_log table.
61
+ * Validates the payload with Zod before inserting.
62
+ * Fire-and-forget — errors are logged to Pino but never thrown.
63
+ *
64
+ * @task T4848
65
+ */
66
+ async function writeToSqlite(entry, requestId) {
67
+ try {
68
+ const { getDb } = await import('@cleocode/core/internal');
69
+ const { auditLog } = await import('@cleocode/core/internal');
70
+ const { AuditLogInsertSchema } = await import('@cleocode/core/internal');
71
+ const { randomUUID } = await import('node:crypto');
72
+ const payload = {
73
+ id: randomUUID(),
74
+ timestamp: entry.timestamp,
75
+ action: entry.operation,
76
+ taskId: entry.metadata.taskId ?? 'system',
77
+ actor: entry.metadata.userId ?? 'agent',
78
+ detailsJson: JSON.stringify(entry.params),
79
+ // Dispatch-level columns (ADR-019)
80
+ domain: entry.domain,
81
+ operation: entry.operation,
82
+ sessionId: entry.sessionId,
83
+ requestId: requestId ?? null,
84
+ durationMs: entry.result.duration,
85
+ success: entry.result.success ? 1 : 0,
86
+ source: entry.metadata.source,
87
+ gateway: entry.metadata.gateway ?? null,
88
+ errorMessage: entry.error ?? null,
89
+ // Project correlation (T5337)
90
+ projectHash: resolveProjectHash(),
91
+ };
92
+ // Validate payload before insert (T4848)
93
+ const parsed = AuditLogInsertSchema.safeParse(payload);
94
+ if (!parsed.success) {
95
+ log.warn({ issues: parsed.error.issues }, 'Audit payload failed Zod validation; skipping insert');
96
+ return;
97
+ }
98
+ const db = await getDb(process.cwd());
99
+ await db.insert(auditLog).values(parsed.data).run();
100
+ }
101
+ catch (err) {
102
+ log.warn({ err }, 'Failed to write audit entry to SQLite');
103
+ }
104
+ }
105
+ /**
106
+ * Creates an audit middleware that logs all mutate operations
107
+ * (and query operations during grade sessions) to Pino + SQLite.
108
+ */
109
+ export function createAudit() {
110
+ return async (req, next) => {
111
+ const startTime = Date.now();
112
+ // T4959: session-resolver middleware now populates req.sessionId before
113
+ // audit runs. Fall back to legacy lookup only if resolver missed it.
114
+ const currentSessionId = req.sessionId ?? (await getActiveSessionInfo())?.id ?? null;
115
+ const isGradeSession = isGradeMode();
116
+ const response = await next();
117
+ // Audit mutations always; audit queries only during grade sessions
118
+ const shouldAudit = req.gateway === 'mutate' || (req.gateway === 'query' && isGradeSession);
119
+ if (!shouldAudit)
120
+ return response;
121
+ // Check if audit logging is enabled
122
+ const config = getConfig();
123
+ if (!config.auditLog)
124
+ return response;
125
+ const entry = {
126
+ timestamp: new Date().toISOString(),
127
+ sessionId: currentSessionId,
128
+ domain: req.domain,
129
+ operation: req.operation,
130
+ params: req.params || {},
131
+ result: {
132
+ success: response.success,
133
+ exitCode: response.error?.exitCode || 0,
134
+ duration: Date.now() - startTime,
135
+ },
136
+ metadata: {
137
+ taskId: req.params?.taskId || req.params?.parent,
138
+ source: req.source,
139
+ gateway: req.gateway,
140
+ },
141
+ error: response.error?.message,
142
+ };
143
+ // Pino structured log (immediate, non-blocking)
144
+ log.info({
145
+ domain: entry.domain,
146
+ operation: entry.operation,
147
+ sessionId: entry.sessionId,
148
+ taskId: entry.metadata.taskId,
149
+ gateway: entry.metadata.gateway,
150
+ success: entry.result.success,
151
+ exitCode: entry.result.exitCode,
152
+ durationMs: entry.result.duration,
153
+ }, `${entry.metadata.gateway ?? 'dispatch'} ${entry.domain}.${entry.operation}`);
154
+ // SQLite write — await in grade mode to avoid race with grading query;
155
+ // fire-and-forget otherwise for performance.
156
+ if (isGradeSession) {
157
+ await writeToSqlite(entry, req.requestId);
158
+ }
159
+ else {
160
+ writeToSqlite(entry, req.requestId).catch((err) => {
161
+ log.error({ err }, 'Failed to persist audit entry to SQLite');
162
+ });
163
+ }
164
+ return response;
165
+ };
166
+ }
167
+ // queryAudit re-exported from core (canonical location)
168
+ export { queryAudit } from '@cleocode/core/internal';
169
+ //# sourceMappingURL=audit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audit.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/audit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * LAFS Field Filter Middleware
3
+ *
4
+ * Implements LAFS _fields parameter (field selection) and _mvi envelope verbosity.
5
+ * Extracts _fields and _mvi from params (for MCP agents that pass them as params),
6
+ * stores them on the request, and post-processes the response via the canonical
7
+ * SDK utilities from @cleocode/lafs-protocol v1.5.0.
8
+ *
9
+ * @epic T4820
10
+ * @task T4979
11
+ */
12
+ import type { Middleware } from '../types.js';
13
+ /**
14
+ * Create the LAFS field-filter middleware.
15
+ *
16
+ * Handles:
17
+ * - _fields: filter response data to specified fields (delegates to SDK applyFieldFilter)
18
+ * - _mvi: envelope verbosity — stored on request for downstream use
19
+ *
20
+ * _fields and _mvi are extracted from req.params (for MCP callers that pass
21
+ * them as params) and stored on the DispatchRequest before the domain handler runs.
22
+ */
23
+ export declare function createFieldFilter(): Middleware;
24
+ //# sourceMappingURL=field-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-filter.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/field-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAqC,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjF;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,CA+C9C"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * LAFS Field Filter Middleware
3
+ *
4
+ * Implements LAFS _fields parameter (field selection) and _mvi envelope verbosity.
5
+ * Extracts _fields and _mvi from params (for MCP agents that pass them as params),
6
+ * stores them on the request, and post-processes the response via the canonical
7
+ * SDK utilities from @cleocode/lafs-protocol v1.5.0.
8
+ *
9
+ * @epic T4820
10
+ * @task T4979
11
+ */
12
+ import { isMVILevel, applyFieldFilter as sdkApplyFieldFilter } from '@cleocode/lafs-protocol';
13
+ /**
14
+ * Create the LAFS field-filter middleware.
15
+ *
16
+ * Handles:
17
+ * - _fields: filter response data to specified fields (delegates to SDK applyFieldFilter)
18
+ * - _mvi: envelope verbosity — stored on request for downstream use
19
+ *
20
+ * _fields and _mvi are extracted from req.params (for MCP callers that pass
21
+ * them as params) and stored on the DispatchRequest before the domain handler runs.
22
+ */
23
+ export function createFieldFilter() {
24
+ return async (req, next) => {
25
+ // Extract control params from req.params (MCP agents pass them here)
26
+ const _fields = req._fields ?? req.params?._fields;
27
+ const rawMvi = req._mvi ?? req.params?._mvi;
28
+ const _mvi = isMVILevel(rawMvi) ? rawMvi : undefined;
29
+ // Remove from params so domain handlers don't see them
30
+ if (req.params) {
31
+ delete req.params['_fields'];
32
+ delete req.params['_mvi'];
33
+ }
34
+ // Store on request for potential downstream use
35
+ if (_fields)
36
+ req._fields = _fields;
37
+ if (_mvi)
38
+ req._mvi = _mvi;
39
+ const response = await next();
40
+ // Apply _fields filter via SDK — handles all four result shapes,
41
+ // preserves envelope structure, sets _meta.mvi = 'custom' per §9.1
42
+ if (_fields?.length && response.success && response.data !== undefined) {
43
+ const stub = {
44
+ $schema: 'https://lafs.dev/schemas/v1/envelope.schema.json',
45
+ _meta: {
46
+ specVersion: '',
47
+ schemaVersion: '',
48
+ timestamp: response._meta.timestamp,
49
+ operation: response._meta.operation,
50
+ requestId: response._meta.requestId,
51
+ transport: 'sdk',
52
+ strict: true,
53
+ mvi: 'standard',
54
+ contextVersion: 0,
55
+ },
56
+ success: true,
57
+ result: response.data,
58
+ };
59
+ const filtered = sdkApplyFieldFilter(stub, _fields);
60
+ response.data = filtered.result;
61
+ }
62
+ return response;
63
+ };
64
+ }
65
+ //# sourceMappingURL=field-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-filter.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/field-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,gBAAgB,IAAI,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAG9F;;;;;;;;;GASG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,KAAK,EACV,GAAoB,EACpB,IAAqC,EACV,EAAE;QAC7B,qEAAqE;QACrE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,IAAK,GAAG,CAAC,MAAM,EAAE,OAAgC,CAAC;QAC7E,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,IAAK,GAAG,CAAC,MAAM,EAAE,IAA2B,CAAC;QACpE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAErD,uDAAuD;QACvD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7B,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;QAED,gDAAgD;QAChD,IAAI,OAAO;YAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QACnC,IAAI,IAAI;YAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAE1B,MAAM,QAAQ,GAAG,MAAM,IAAI,EAAE,CAAC;QAE9B,iEAAiE;QACjE,mEAAmE;QACnE,IAAI,OAAO,EAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACvE,MAAM,IAAI,GAAiB;gBACzB,OAAO,EAAE,kDAAkD;gBAC3D,KAAK,EAAE;oBACL,WAAW,EAAE,EAAE;oBACf,aAAa,EAAE,EAAE;oBACjB,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;oBACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;oBACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS;oBACnC,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,IAAI;oBACZ,GAAG,EAAE,UAAU;oBACf,cAAc,EAAE,CAAC;iBAClB;gBACD,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,QAAQ,CAAC,IAA8B;aAChD,CAAC;YACF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YACpD,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC;QAClC,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Unified CQRS Dispatch Layer -- Middleware Pipeline
3
+ *
4
+ * Provides compose() to chain multiple Middleware functions together
5
+ * into a single executable pipeline.
6
+ *
7
+ * @epic T4820
8
+ * @task T4815
9
+ */
10
+ import type { Middleware } from '../types.js';
11
+ /**
12
+ * Composes an array of Middleware functions into a single Middleware function.
13
+ * Execution flows through the array from first to last, and returns bubble
14
+ * back up from last to first.
15
+ *
16
+ * @param middlewares Array of middleware functions to chain
17
+ * @returns A single composed Middleware function
18
+ */
19
+ export declare function compose(middlewares: Middleware[]): Middleware;
20
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAmD,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/F;;;;;;;GAOG;AACH,wBAAgB,OAAO,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,UAAU,CAkC7D"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Unified CQRS Dispatch Layer -- Middleware Pipeline
3
+ *
4
+ * Provides compose() to chain multiple Middleware functions together
5
+ * into a single executable pipeline.
6
+ *
7
+ * @epic T4820
8
+ * @task T4815
9
+ */
10
+ /**
11
+ * Composes an array of Middleware functions into a single Middleware function.
12
+ * Execution flows through the array from first to last, and returns bubble
13
+ * back up from last to first.
14
+ *
15
+ * @param middlewares Array of middleware functions to chain
16
+ * @returns A single composed Middleware function
17
+ */
18
+ export function compose(middlewares) {
19
+ if (middlewares.length === 0) {
20
+ return async (_req, next) => next();
21
+ }
22
+ return async (request, next) => {
23
+ let index = -1;
24
+ async function dispatch(i) {
25
+ if (i <= index) {
26
+ throw new Error('next() called multiple times in middleware');
27
+ }
28
+ index = i;
29
+ let fn = middlewares[i];
30
+ if (i === middlewares.length) {
31
+ // We've reached the end of the middleware chain; call the final handler
32
+ fn = async (_req, nxt) => nxt();
33
+ }
34
+ if (!fn) {
35
+ return next();
36
+ }
37
+ return fn(request, async () => {
38
+ if (i === middlewares.length) {
39
+ return next();
40
+ }
41
+ return dispatch(i + 1);
42
+ });
43
+ }
44
+ return dispatch(0);
45
+ };
46
+ }
47
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAAC,WAAyB;IAC/C,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,EAAE,IAAqB,EAAE,IAAkB,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,EAAE,OAAwB,EAAE,IAAkB,EAA6B,EAAE;QACvF,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QAEf,KAAK,UAAU,QAAQ,CAAC,CAAS;YAC/B,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,KAAK,GAAG,CAAC,CAAC;YAEV,IAAI,EAAE,GAA2B,WAAW,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;gBAC7B,wEAAwE;gBACxE,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC;YAClC,CAAC;YAED,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,OAAO,EAAE,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;gBAC5B,IAAI,CAAC,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;oBAC7B,OAAO,IAAI,EAAE,CAAC;gBAChB,CAAC;gBACD,OAAO,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * MVI projection middleware.
3
+ * Reads _mviTier from request params and filters response fields accordingly.
4
+ * If the domain is not allowed at the resolved tier, short-circuits with an error.
5
+ *
6
+ * @epic T4820
7
+ * @task T5096
8
+ */
9
+ import { type MviTier, type ProjectionConfig } from '../lib/projections.js';
10
+ import type { Middleware } from '../types.js';
11
+ export interface ProjectionContext {
12
+ tier: MviTier;
13
+ config: ProjectionConfig;
14
+ }
15
+ /**
16
+ * Check if a domain is allowed at the given tier.
17
+ */
18
+ export declare function isOperationAllowed(domain: string, tier: MviTier): boolean;
19
+ /**
20
+ * Apply field projection to a result object.
21
+ * Removes fields that are excluded at the given tier and prunes depth.
22
+ */
23
+ export declare function applyProjection<T>(data: T, config: ProjectionConfig): T;
24
+ /**
25
+ * Create projection context from request params.
26
+ */
27
+ export declare function createProjectionContext(params?: Record<string, unknown>): ProjectionContext;
28
+ /**
29
+ * Create the MVI projection middleware.
30
+ *
31
+ * Extracts _mviTier from params, checks domain access, and applies
32
+ * field exclusions to the response.
33
+ */
34
+ export declare function createProjectionMiddleware(): Middleware;
35
+ //# sourceMappingURL=projection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/projection.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,gBAAgB,EAEtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAqC,UAAU,EAAE,MAAM,aAAa,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,gBAAgB,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAEzE;AAiCD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,gBAAgB,GAAG,CAAC,CAuCvE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,CAG3F;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,IAAI,UAAU,CAqDvD"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * MVI projection middleware.
3
+ * Reads _mviTier from request params and filters response fields accordingly.
4
+ * If the domain is not allowed at the resolved tier, short-circuits with an error.
5
+ *
6
+ * @epic T4820
7
+ * @task T5096
8
+ */
9
+ import { getBoundSession } from '../context/session-context.js';
10
+ import { PROJECTIONS, resolveTier, } from '../lib/projections.js';
11
+ /**
12
+ * Check if a domain is allowed at the given tier.
13
+ */
14
+ export function isOperationAllowed(domain, tier) {
15
+ return PROJECTIONS[tier].allowedDomains.includes(domain);
16
+ }
17
+ /**
18
+ * Recursively prune data beyond maxDepth.
19
+ * At maxDepth, objects become '[Object]' and arrays become '[Array(N)]'.
20
+ */
21
+ function pruneDepth(data, maxDepth, currentDepth = 0) {
22
+ // Primitives pass through at any depth
23
+ if (data === null || data === undefined || typeof data !== 'object') {
24
+ return data;
25
+ }
26
+ // At max depth, replace with placeholder
27
+ if (currentDepth >= maxDepth) {
28
+ if (Array.isArray(data)) {
29
+ return `[Array(${data.length})]`;
30
+ }
31
+ return '[Object]';
32
+ }
33
+ // Recurse into arrays
34
+ if (Array.isArray(data)) {
35
+ return data.map((item) => pruneDepth(item, maxDepth, currentDepth + 1));
36
+ }
37
+ // Recurse into objects
38
+ const result = {};
39
+ for (const [key, value] of Object.entries(data)) {
40
+ result[key] = pruneDepth(value, maxDepth, currentDepth + 1);
41
+ }
42
+ return result;
43
+ }
44
+ /**
45
+ * Apply field projection to a result object.
46
+ * Removes fields that are excluded at the given tier and prunes depth.
47
+ */
48
+ export function applyProjection(data, config) {
49
+ if (!data || typeof data !== 'object')
50
+ return data;
51
+ let result = data;
52
+ // Apply field exclusions
53
+ if (config.excludeFields?.length) {
54
+ const obj = { ...data };
55
+ for (const field of config.excludeFields) {
56
+ const parts = field.split('.');
57
+ if (parts.length === 1) {
58
+ delete obj[parts[0]];
59
+ }
60
+ else {
61
+ // Handle nested fields like 'metadata._internal'
62
+ let current = obj;
63
+ for (let i = 0; i < parts.length - 1; i++) {
64
+ const val = current?.[parts[i]];
65
+ if (val && typeof val === 'object') {
66
+ current[parts[i]] = { ...val };
67
+ current = current[parts[i]];
68
+ }
69
+ else {
70
+ current = undefined;
71
+ break;
72
+ }
73
+ }
74
+ if (current) {
75
+ delete current[parts[parts.length - 1]];
76
+ }
77
+ }
78
+ }
79
+ result = obj;
80
+ }
81
+ // Apply depth pruning
82
+ if (config.maxDepth !== undefined) {
83
+ result = pruneDepth(result, config.maxDepth);
84
+ }
85
+ return result;
86
+ }
87
+ /**
88
+ * Create projection context from request params.
89
+ */
90
+ export function createProjectionContext(params) {
91
+ const tier = resolveTier(params);
92
+ return { tier, config: PROJECTIONS[tier] };
93
+ }
94
+ /**
95
+ * Create the MVI projection middleware.
96
+ *
97
+ * Extracts _mviTier from params, checks domain access, and applies
98
+ * field exclusions to the response.
99
+ */
100
+ export function createProjectionMiddleware() {
101
+ return async (req, next) => {
102
+ const session = getBoundSession();
103
+ const tier = resolveTier(req.params, session?.scope ?? null);
104
+ const config = PROJECTIONS[tier];
105
+ // Remove control param so domain handlers don't see it
106
+ if (req.params) {
107
+ delete req.params['_mviTier'];
108
+ }
109
+ // MCP smart defaults: tasks.list defaults to compact mode
110
+ if (req.source === 'mcp' && req.domain === 'tasks' && req.operation === 'list') {
111
+ req.params ??= {};
112
+ if (req.params['compact'] === undefined) {
113
+ req.params['compact'] = true;
114
+ }
115
+ }
116
+ // Check domain access at this tier
117
+ if (!config.allowedDomains.includes(req.domain)) {
118
+ return {
119
+ _meta: {
120
+ gateway: req.gateway,
121
+ domain: req.domain,
122
+ operation: req.operation,
123
+ version: '1.0.0',
124
+ timestamp: new Date().toISOString(),
125
+ duration_ms: 0,
126
+ source: req.source,
127
+ requestId: req.requestId,
128
+ },
129
+ success: false,
130
+ error: {
131
+ code: 'E_INVALID_OPERATION',
132
+ exitCode: 2,
133
+ message: `Operation not available at '${tier}' tier. Domain '${req.domain}' requires a higher tier.`,
134
+ },
135
+ };
136
+ }
137
+ const response = await next();
138
+ // Apply field exclusions to successful responses
139
+ if (response.success && response.data !== undefined) {
140
+ response.data = applyProjection(response.data, config);
141
+ }
142
+ return response;
143
+ };
144
+ }
145
+ //# sourceMappingURL=projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/dispatch/middleware/projection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Middleware } from '../types.js';
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
+ export declare function createProtocolEnforcement(strictMode?: boolean): Middleware;
12
+ //# sourceMappingURL=protocol-enforcement.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol-enforcement.d.ts","sourceRoot":"","sources":["../../../src/dispatch/middleware/protocol-enforcement.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmD,UAAU,EAAE,MAAM,aAAa,CAAC;AAE/F;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,UAAU,GAAE,OAAc,GAAG,UAAU,CAqBhF"}
@@ -0,0 +1,30 @@
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
+ export function createProtocolEnforcement(strictMode = true) {
12
+ const enforcer = new ProtocolEnforcer(strictMode);
13
+ return async (req, next) => {
14
+ const result = await enforcer.enforceProtocol(req, next);
15
+ // enforceProtocol may return a DomainResponse (missing source/requestId on _meta)
16
+ // when it constructs an error response. Ensure _meta has required DispatchResponse fields.
17
+ if (!result._meta.source || !result._meta.requestId) {
18
+ return {
19
+ ...result,
20
+ _meta: {
21
+ ...result._meta,
22
+ source: result._meta.source ?? req.source,
23
+ requestId: result._meta.requestId ?? req.requestId,
24
+ },
25
+ };
26
+ }
27
+ return result;
28
+ };
29
+ }
30
+ //# 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;;;;;;;;GAQG;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,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAEzD,kFAAkF;QAClF,2FAA2F;QAC3F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;YACpD,OAAO;gBACL,GAAG,MAAM;gBACT,KAAK,EAAE;oBACL,GAAG,MAAM,CAAC,KAAK;oBACf,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM;oBACzC,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS;iBACnD;aACkB,CAAC;QACxB,CAAC;QAED,OAAO,MAA0B,CAAC;IACpC,CAAC,CAAC;AACJ,CAAC"}