@cleocode/cleo 2026.4.12 → 2026.4.14

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/README.md +27 -0
  2. package/dist/cli/index.js +121925 -340
  3. package/dist/cli/index.js.map +7 -1
  4. package/package.json +7 -7
  5. package/dist/cli/commander-shim.d.ts +0 -112
  6. package/dist/cli/commander-shim.d.ts.map +0 -1
  7. package/dist/cli/commander-shim.js +0 -233
  8. package/dist/cli/commander-shim.js.map +0 -1
  9. package/dist/cli/commands/add.d.ts +0 -12
  10. package/dist/cli/commands/add.d.ts.map +0 -1
  11. package/dist/cli/commands/add.js +0 -202
  12. package/dist/cli/commands/add.js.map +0 -1
  13. package/dist/cli/commands/admin.d.ts +0 -12
  14. package/dist/cli/commands/admin.d.ts.map +0 -1
  15. package/dist/cli/commands/admin.js +0 -59
  16. package/dist/cli/commands/admin.js.map +0 -1
  17. package/dist/cli/commands/adr.d.ts +0 -27
  18. package/dist/cli/commands/adr.d.ts.map +0 -1
  19. package/dist/cli/commands/adr.js +0 -79
  20. package/dist/cli/commands/adr.js.map +0 -1
  21. package/dist/cli/commands/agent-profile-status.d.ts +0 -98
  22. package/dist/cli/commands/agent-profile-status.d.ts.map +0 -1
  23. package/dist/cli/commands/agent-profile-status.js +0 -71
  24. package/dist/cli/commands/agent-profile-status.js.map +0 -1
  25. package/dist/cli/commands/agent.d.ts +0 -38
  26. package/dist/cli/commands/agent.d.ts.map +0 -1
  27. package/dist/cli/commands/agent.js +0 -1169
  28. package/dist/cli/commands/agent.js.map +0 -1
  29. package/dist/cli/commands/agents.d.ts +0 -17
  30. package/dist/cli/commands/agents.d.ts.map +0 -1
  31. package/dist/cli/commands/agents.js +0 -20
  32. package/dist/cli/commands/agents.js.map +0 -1
  33. package/dist/cli/commands/analyze.d.ts +0 -12
  34. package/dist/cli/commands/analyze.d.ts.map +0 -1
  35. package/dist/cli/commands/analyze.js +0 -20
  36. package/dist/cli/commands/analyze.js.map +0 -1
  37. package/dist/cli/commands/archive-stats.d.ts +0 -18
  38. package/dist/cli/commands/archive-stats.d.ts.map +0 -1
  39. package/dist/cli/commands/archive-stats.js +0 -49
  40. package/dist/cli/commands/archive-stats.js.map +0 -1
  41. package/dist/cli/commands/archive.d.ts +0 -12
  42. package/dist/cli/commands/archive.d.ts.map +0 -1
  43. package/dist/cli/commands/archive.js +0 -32
  44. package/dist/cli/commands/archive.js.map +0 -1
  45. package/dist/cli/commands/backfill.d.ts +0 -38
  46. package/dist/cli/commands/backfill.d.ts.map +0 -1
  47. package/dist/cli/commands/backfill.js +0 -147
  48. package/dist/cli/commands/backfill.js.map +0 -1
  49. package/dist/cli/commands/backup.d.ts +0 -9
  50. package/dist/cli/commands/backup.d.ts.map +0 -1
  51. package/dist/cli/commands/backup.js +0 -41
  52. package/dist/cli/commands/backup.js.map +0 -1
  53. package/dist/cli/commands/blockers.d.ts +0 -7
  54. package/dist/cli/commands/blockers.d.ts.map +0 -1
  55. package/dist/cli/commands/blockers.js +0 -16
  56. package/dist/cli/commands/blockers.js.map +0 -1
  57. package/dist/cli/commands/brain.d.ts +0 -29
  58. package/dist/cli/commands/brain.d.ts.map +0 -1
  59. package/dist/cli/commands/brain.js +0 -107
  60. package/dist/cli/commands/brain.js.map +0 -1
  61. package/dist/cli/commands/briefing.d.ts +0 -22
  62. package/dist/cli/commands/briefing.d.ts.map +0 -1
  63. package/dist/cli/commands/briefing.js +0 -45
  64. package/dist/cli/commands/briefing.js.map +0 -1
  65. package/dist/cli/commands/bug.d.ts +0 -12
  66. package/dist/cli/commands/bug.d.ts.map +0 -1
  67. package/dist/cli/commands/bug.js +0 -81
  68. package/dist/cli/commands/bug.js.map +0 -1
  69. package/dist/cli/commands/cant.d.ts +0 -32
  70. package/dist/cli/commands/cant.d.ts.map +0 -1
  71. package/dist/cli/commands/cant.js +0 -281
  72. package/dist/cli/commands/cant.js.map +0 -1
  73. package/dist/cli/commands/check.d.ts +0 -22
  74. package/dist/cli/commands/check.d.ts.map +0 -1
  75. package/dist/cli/commands/check.js +0 -164
  76. package/dist/cli/commands/check.js.map +0 -1
  77. package/dist/cli/commands/checkpoint.d.ts +0 -15
  78. package/dist/cli/commands/checkpoint.d.ts.map +0 -1
  79. package/dist/cli/commands/checkpoint.js +0 -91
  80. package/dist/cli/commands/checkpoint.js.map +0 -1
  81. package/dist/cli/commands/code.d.ts +0 -11
  82. package/dist/cli/commands/code.d.ts.map +0 -1
  83. package/dist/cli/commands/code.js +0 -114
  84. package/dist/cli/commands/code.js.map +0 -1
  85. package/dist/cli/commands/commands.d.ts +0 -13
  86. package/dist/cli/commands/commands.d.ts.map +0 -1
  87. package/dist/cli/commands/commands.js +0 -29
  88. package/dist/cli/commands/commands.js.map +0 -1
  89. package/dist/cli/commands/complete.d.ts +0 -12
  90. package/dist/cli/commands/complete.d.ts.map +0 -1
  91. package/dist/cli/commands/complete.js +0 -92
  92. package/dist/cli/commands/complete.js.map +0 -1
  93. package/dist/cli/commands/compliance.d.ts +0 -8
  94. package/dist/cli/commands/compliance.d.ts.map +0 -1
  95. package/dist/cli/commands/compliance.js +0 -85
  96. package/dist/cli/commands/compliance.js.map +0 -1
  97. package/dist/cli/commands/config.d.ts +0 -10
  98. package/dist/cli/commands/config.d.ts.map +0 -1
  99. package/dist/cli/commands/config.js +0 -69
  100. package/dist/cli/commands/config.js.map +0 -1
  101. package/dist/cli/commands/consensus.d.ts +0 -13
  102. package/dist/cli/commands/consensus.d.ts.map +0 -1
  103. package/dist/cli/commands/consensus.js +0 -45
  104. package/dist/cli/commands/consensus.js.map +0 -1
  105. package/dist/cli/commands/context.d.ts +0 -8
  106. package/dist/cli/commands/context.d.ts.map +0 -1
  107. package/dist/cli/commands/context.js +0 -40
  108. package/dist/cli/commands/context.js.map +0 -1
  109. package/dist/cli/commands/contribution.d.ts +0 -13
  110. package/dist/cli/commands/contribution.d.ts.map +0 -1
  111. package/dist/cli/commands/contribution.js +0 -41
  112. package/dist/cli/commands/contribution.js.map +0 -1
  113. package/dist/cli/commands/current.d.ts +0 -13
  114. package/dist/cli/commands/current.d.ts.map +0 -1
  115. package/dist/cli/commands/current.js +0 -20
  116. package/dist/cli/commands/current.js.map +0 -1
  117. package/dist/cli/commands/dash.d.ts +0 -12
  118. package/dist/cli/commands/dash.d.ts.map +0 -1
  119. package/dist/cli/commands/dash.js +0 -24
  120. package/dist/cli/commands/dash.js.map +0 -1
  121. package/dist/cli/commands/decomposition.d.ts +0 -13
  122. package/dist/cli/commands/decomposition.d.ts.map +0 -1
  123. package/dist/cli/commands/decomposition.js +0 -45
  124. package/dist/cli/commands/decomposition.js.map +0 -1
  125. package/dist/cli/commands/delete.d.ts +0 -12
  126. package/dist/cli/commands/delete.d.ts.map +0 -1
  127. package/dist/cli/commands/delete.js +0 -37
  128. package/dist/cli/commands/delete.js.map +0 -1
  129. package/dist/cli/commands/deps.d.ts +0 -24
  130. package/dist/cli/commands/deps.d.ts.map +0 -1
  131. package/dist/cli/commands/deps.js +0 -98
  132. package/dist/cli/commands/deps.js.map +0 -1
  133. package/dist/cli/commands/detect-drift.d.ts +0 -15
  134. package/dist/cli/commands/detect-drift.d.ts.map +0 -1
  135. package/dist/cli/commands/detect-drift.js +0 -424
  136. package/dist/cli/commands/detect-drift.js.map +0 -1
  137. package/dist/cli/commands/detect.d.ts +0 -10
  138. package/dist/cli/commands/detect.d.ts.map +0 -1
  139. package/dist/cli/commands/detect.js +0 -24
  140. package/dist/cli/commands/detect.js.map +0 -1
  141. package/dist/cli/commands/docs.d.ts +0 -13
  142. package/dist/cli/commands/docs.d.ts.map +0 -1
  143. package/dist/cli/commands/docs.js +0 -169
  144. package/dist/cli/commands/docs.js.map +0 -1
  145. package/dist/cli/commands/doctor.d.ts +0 -15
  146. package/dist/cli/commands/doctor.d.ts.map +0 -1
  147. package/dist/cli/commands/doctor.js +0 -133
  148. package/dist/cli/commands/doctor.js.map +0 -1
  149. package/dist/cli/commands/dynamic.d.ts +0 -24
  150. package/dist/cli/commands/dynamic.d.ts.map +0 -1
  151. package/dist/cli/commands/dynamic.js +0 -27
  152. package/dist/cli/commands/dynamic.js.map +0 -1
  153. package/dist/cli/commands/env.d.ts +0 -12
  154. package/dist/cli/commands/env.d.ts.map +0 -1
  155. package/dist/cli/commands/env.js +0 -44
  156. package/dist/cli/commands/env.js.map +0 -1
  157. package/dist/cli/commands/exists.d.ts +0 -22
  158. package/dist/cli/commands/exists.d.ts.map +0 -1
  159. package/dist/cli/commands/exists.js +0 -51
  160. package/dist/cli/commands/exists.js.map +0 -1
  161. package/dist/cli/commands/export-tasks.d.ts +0 -10
  162. package/dist/cli/commands/export-tasks.d.ts.map +0 -1
  163. package/dist/cli/commands/export-tasks.js +0 -47
  164. package/dist/cli/commands/export-tasks.js.map +0 -1
  165. package/dist/cli/commands/export.d.ts +0 -9
  166. package/dist/cli/commands/export.d.ts.map +0 -1
  167. package/dist/cli/commands/export.js +0 -46
  168. package/dist/cli/commands/export.js.map +0 -1
  169. package/dist/cli/commands/find.d.ts +0 -14
  170. package/dist/cli/commands/find.d.ts.map +0 -1
  171. package/dist/cli/commands/find.js +0 -134
  172. package/dist/cli/commands/find.js.map +0 -1
  173. package/dist/cli/commands/generate-changelog.d.ts +0 -14
  174. package/dist/cli/commands/generate-changelog.d.ts.map +0 -1
  175. package/dist/cli/commands/generate-changelog.js +0 -252
  176. package/dist/cli/commands/generate-changelog.js.map +0 -1
  177. package/dist/cli/commands/grade.d.ts +0 -13
  178. package/dist/cli/commands/grade.d.ts.map +0 -1
  179. package/dist/cli/commands/grade.js +0 -26
  180. package/dist/cli/commands/grade.js.map +0 -1
  181. package/dist/cli/commands/history.d.ts +0 -9
  182. package/dist/cli/commands/history.d.ts.map +0 -1
  183. package/dist/cli/commands/history.js +0 -30
  184. package/dist/cli/commands/history.js.map +0 -1
  185. package/dist/cli/commands/implementation.d.ts +0 -13
  186. package/dist/cli/commands/implementation.d.ts.map +0 -1
  187. package/dist/cli/commands/implementation.js +0 -41
  188. package/dist/cli/commands/implementation.js.map +0 -1
  189. package/dist/cli/commands/import-tasks.d.ts +0 -10
  190. package/dist/cli/commands/import-tasks.d.ts.map +0 -1
  191. package/dist/cli/commands/import-tasks.js +0 -38
  192. package/dist/cli/commands/import-tasks.js.map +0 -1
  193. package/dist/cli/commands/import.d.ts +0 -9
  194. package/dist/cli/commands/import.d.ts.map +0 -1
  195. package/dist/cli/commands/import.js +0 -28
  196. package/dist/cli/commands/import.js.map +0 -1
  197. package/dist/cli/commands/init.d.ts +0 -34
  198. package/dist/cli/commands/init.d.ts.map +0 -1
  199. package/dist/cli/commands/init.js +0 -96
  200. package/dist/cli/commands/init.js.map +0 -1
  201. package/dist/cli/commands/inject.d.ts +0 -8
  202. package/dist/cli/commands/inject.d.ts.map +0 -1
  203. package/dist/cli/commands/inject.js +0 -28
  204. package/dist/cli/commands/inject.js.map +0 -1
  205. package/dist/cli/commands/issue.d.ts +0 -17
  206. package/dist/cli/commands/issue.d.ts.map +0 -1
  207. package/dist/cli/commands/issue.js +0 -107
  208. package/dist/cli/commands/issue.js.map +0 -1
  209. package/dist/cli/commands/labels.d.ts +0 -13
  210. package/dist/cli/commands/labels.d.ts.map +0 -1
  211. package/dist/cli/commands/labels.js +0 -44
  212. package/dist/cli/commands/labels.js.map +0 -1
  213. package/dist/cli/commands/lifecycle.d.ts +0 -8
  214. package/dist/cli/commands/lifecycle.d.ts.map +0 -1
  215. package/dist/cli/commands/lifecycle.js +0 -84
  216. package/dist/cli/commands/lifecycle.js.map +0 -1
  217. package/dist/cli/commands/list.d.ts +0 -14
  218. package/dist/cli/commands/list.d.ts.map +0 -1
  219. package/dist/cli/commands/list.js +0 -143
  220. package/dist/cli/commands/list.js.map +0 -1
  221. package/dist/cli/commands/log.d.ts +0 -12
  222. package/dist/cli/commands/log.d.ts.map +0 -1
  223. package/dist/cli/commands/log.js +0 -30
  224. package/dist/cli/commands/log.js.map +0 -1
  225. package/dist/cli/commands/map.d.ts +0 -10
  226. package/dist/cli/commands/map.d.ts.map +0 -1
  227. package/dist/cli/commands/map.js +0 -23
  228. package/dist/cli/commands/map.js.map +0 -1
  229. package/dist/cli/commands/memory-brain.d.ts +0 -14
  230. package/dist/cli/commands/memory-brain.d.ts.map +0 -1
  231. package/dist/cli/commands/memory-brain.js +0 -157
  232. package/dist/cli/commands/memory-brain.js.map +0 -1
  233. package/dist/cli/commands/migrate-claude-mem.d.ts +0 -18
  234. package/dist/cli/commands/migrate-claude-mem.d.ts.map +0 -1
  235. package/dist/cli/commands/migrate-claude-mem.js +0 -60
  236. package/dist/cli/commands/migrate-claude-mem.js.map +0 -1
  237. package/dist/cli/commands/next.d.ts +0 -9
  238. package/dist/cli/commands/next.d.ts.map +0 -1
  239. package/dist/cli/commands/next.js +0 -20
  240. package/dist/cli/commands/next.js.map +0 -1
  241. package/dist/cli/commands/nexus.d.ts +0 -16
  242. package/dist/cli/commands/nexus.d.ts.map +0 -1
  243. package/dist/cli/commands/nexus.js +0 -155
  244. package/dist/cli/commands/nexus.js.map +0 -1
  245. package/dist/cli/commands/observe.d.ts +0 -12
  246. package/dist/cli/commands/observe.d.ts.map +0 -1
  247. package/dist/cli/commands/observe.js +0 -42
  248. package/dist/cli/commands/observe.js.map +0 -1
  249. package/dist/cli/commands/ops.d.ts +0 -10
  250. package/dist/cli/commands/ops.d.ts.map +0 -1
  251. package/dist/cli/commands/ops.js +0 -19
  252. package/dist/cli/commands/ops.js.map +0 -1
  253. package/dist/cli/commands/orchestrate.d.ts +0 -8
  254. package/dist/cli/commands/orchestrate.d.ts.map +0 -1
  255. package/dist/cli/commands/orchestrate.js +0 -58
  256. package/dist/cli/commands/orchestrate.js.map +0 -1
  257. package/dist/cli/commands/otel.d.ts +0 -12
  258. package/dist/cli/commands/otel.d.ts.map +0 -1
  259. package/dist/cli/commands/otel.js +0 -128
  260. package/dist/cli/commands/otel.js.map +0 -1
  261. package/dist/cli/commands/phase.d.ts +0 -12
  262. package/dist/cli/commands/phase.d.ts.map +0 -1
  263. package/dist/cli/commands/phase.js +0 -91
  264. package/dist/cli/commands/phase.js.map +0 -1
  265. package/dist/cli/commands/phases.d.ts +0 -12
  266. package/dist/cli/commands/phases.d.ts.map +0 -1
  267. package/dist/cli/commands/phases.js +0 -37
  268. package/dist/cli/commands/phases.js.map +0 -1
  269. package/dist/cli/commands/plan.d.ts +0 -8
  270. package/dist/cli/commands/plan.d.ts.map +0 -1
  271. package/dist/cli/commands/plan.js +0 -15
  272. package/dist/cli/commands/plan.js.map +0 -1
  273. package/dist/cli/commands/promote.d.ts +0 -7
  274. package/dist/cli/commands/promote.d.ts.map +0 -1
  275. package/dist/cli/commands/promote.js +0 -15
  276. package/dist/cli/commands/promote.js.map +0 -1
  277. package/dist/cli/commands/reason.d.ts +0 -35
  278. package/dist/cli/commands/reason.d.ts.map +0 -1
  279. package/dist/cli/commands/reason.js +0 -104
  280. package/dist/cli/commands/reason.js.map +0 -1
  281. package/dist/cli/commands/refresh-memory.d.ts +0 -9
  282. package/dist/cli/commands/refresh-memory.d.ts.map +0 -1
  283. package/dist/cli/commands/refresh-memory.js +0 -24
  284. package/dist/cli/commands/refresh-memory.js.map +0 -1
  285. package/dist/cli/commands/relates.d.ts +0 -12
  286. package/dist/cli/commands/relates.d.ts.map +0 -1
  287. package/dist/cli/commands/relates.js +0 -53
  288. package/dist/cli/commands/relates.js.map +0 -1
  289. package/dist/cli/commands/release.d.ts +0 -8
  290. package/dist/cli/commands/release.d.ts.map +0 -1
  291. package/dist/cli/commands/release.js +0 -72
  292. package/dist/cli/commands/release.js.map +0 -1
  293. package/dist/cli/commands/remote.d.ts +0 -12
  294. package/dist/cli/commands/remote.d.ts.map +0 -1
  295. package/dist/cli/commands/remote.js +0 -207
  296. package/dist/cli/commands/remote.js.map +0 -1
  297. package/dist/cli/commands/reorder.d.ts +0 -7
  298. package/dist/cli/commands/reorder.d.ts.map +0 -1
  299. package/dist/cli/commands/reorder.js +0 -20
  300. package/dist/cli/commands/reorder.js.map +0 -1
  301. package/dist/cli/commands/reparent.d.ts +0 -10
  302. package/dist/cli/commands/reparent.d.ts.map +0 -1
  303. package/dist/cli/commands/reparent.js +0 -19
  304. package/dist/cli/commands/reparent.js.map +0 -1
  305. package/dist/cli/commands/research.d.ts +0 -8
  306. package/dist/cli/commands/research.d.ts.map +0 -1
  307. package/dist/cli/commands/research.js +0 -129
  308. package/dist/cli/commands/research.js.map +0 -1
  309. package/dist/cli/commands/restore.d.ts +0 -12
  310. package/dist/cli/commands/restore.d.ts.map +0 -1
  311. package/dist/cli/commands/restore.js +0 -228
  312. package/dist/cli/commands/restore.js.map +0 -1
  313. package/dist/cli/commands/roadmap.d.ts +0 -8
  314. package/dist/cli/commands/roadmap.d.ts.map +0 -1
  315. package/dist/cli/commands/roadmap.js +0 -21
  316. package/dist/cli/commands/roadmap.js.map +0 -1
  317. package/dist/cli/commands/safestop.d.ts +0 -14
  318. package/dist/cli/commands/safestop.d.ts.map +0 -1
  319. package/dist/cli/commands/safestop.js +0 -32
  320. package/dist/cli/commands/safestop.js.map +0 -1
  321. package/dist/cli/commands/schema.d.ts +0 -27
  322. package/dist/cli/commands/schema.d.ts.map +0 -1
  323. package/dist/cli/commands/schema.js +0 -160
  324. package/dist/cli/commands/schema.js.map +0 -1
  325. package/dist/cli/commands/self-update.d.ts +0 -15
  326. package/dist/cli/commands/self-update.d.ts.map +0 -1
  327. package/dist/cli/commands/self-update.js +0 -329
  328. package/dist/cli/commands/self-update.js.map +0 -1
  329. package/dist/cli/commands/sequence.d.ts +0 -8
  330. package/dist/cli/commands/sequence.d.ts.map +0 -1
  331. package/dist/cli/commands/sequence.js +0 -30
  332. package/dist/cli/commands/sequence.js.map +0 -1
  333. package/dist/cli/commands/session.d.ts +0 -12
  334. package/dist/cli/commands/session.d.ts.map +0 -1
  335. package/dist/cli/commands/session.js +0 -175
  336. package/dist/cli/commands/session.js.map +0 -1
  337. package/dist/cli/commands/show.d.ts +0 -13
  338. package/dist/cli/commands/show.d.ts.map +0 -1
  339. package/dist/cli/commands/show.js +0 -40
  340. package/dist/cli/commands/show.js.map +0 -1
  341. package/dist/cli/commands/skills.d.ts +0 -13
  342. package/dist/cli/commands/skills.d.ts.map +0 -1
  343. package/dist/cli/commands/skills.js +0 -131
  344. package/dist/cli/commands/skills.js.map +0 -1
  345. package/dist/cli/commands/snapshot.d.ts +0 -9
  346. package/dist/cli/commands/snapshot.d.ts.map +0 -1
  347. package/dist/cli/commands/snapshot.js +0 -50
  348. package/dist/cli/commands/snapshot.js.map +0 -1
  349. package/dist/cli/commands/specification.d.ts +0 -13
  350. package/dist/cli/commands/specification.d.ts.map +0 -1
  351. package/dist/cli/commands/specification.js +0 -45
  352. package/dist/cli/commands/specification.js.map +0 -1
  353. package/dist/cli/commands/start.d.ts +0 -13
  354. package/dist/cli/commands/start.d.ts.map +0 -1
  355. package/dist/cli/commands/start.js +0 -20
  356. package/dist/cli/commands/start.js.map +0 -1
  357. package/dist/cli/commands/stats.d.ts +0 -12
  358. package/dist/cli/commands/stats.d.ts.map +0 -1
  359. package/dist/cli/commands/stats.js +0 -35
  360. package/dist/cli/commands/stats.js.map +0 -1
  361. package/dist/cli/commands/sticky.d.ts +0 -16
  362. package/dist/cli/commands/sticky.d.ts.map +0 -1
  363. package/dist/cli/commands/sticky.js +0 -211
  364. package/dist/cli/commands/sticky.js.map +0 -1
  365. package/dist/cli/commands/stop.d.ts +0 -13
  366. package/dist/cli/commands/stop.d.ts.map +0 -1
  367. package/dist/cli/commands/stop.js +0 -20
  368. package/dist/cli/commands/stop.js.map +0 -1
  369. package/dist/cli/commands/testing.d.ts +0 -13
  370. package/dist/cli/commands/testing.d.ts.map +0 -1
  371. package/dist/cli/commands/testing.js +0 -64
  372. package/dist/cli/commands/testing.js.map +0 -1
  373. package/dist/cli/commands/token.d.ts +0 -10
  374. package/dist/cli/commands/token.d.ts.map +0 -1
  375. package/dist/cli/commands/token.js +0 -135
  376. package/dist/cli/commands/token.js.map +0 -1
  377. package/dist/cli/commands/update.d.ts +0 -12
  378. package/dist/cli/commands/update.d.ts.map +0 -1
  379. package/dist/cli/commands/update.js +0 -83
  380. package/dist/cli/commands/update.js.map +0 -1
  381. package/dist/cli/commands/upgrade.d.ts +0 -18
  382. package/dist/cli/commands/upgrade.d.ts.map +0 -1
  383. package/dist/cli/commands/upgrade.js +0 -103
  384. package/dist/cli/commands/upgrade.js.map +0 -1
  385. package/dist/cli/commands/validate.d.ts +0 -12
  386. package/dist/cli/commands/validate.d.ts.map +0 -1
  387. package/dist/cli/commands/validate.js +0 -23
  388. package/dist/cli/commands/validate.js.map +0 -1
  389. package/dist/cli/commands/verify.d.ts +0 -8
  390. package/dist/cli/commands/verify.d.ts.map +0 -1
  391. package/dist/cli/commands/verify.js +0 -28
  392. package/dist/cli/commands/verify.js.map +0 -1
  393. package/dist/cli/commands/web.d.ts +0 -13
  394. package/dist/cli/commands/web.d.ts.map +0 -1
  395. package/dist/cli/commands/web.js +0 -277
  396. package/dist/cli/commands/web.js.map +0 -1
  397. package/dist/cli/field-context.d.ts +0 -32
  398. package/dist/cli/field-context.d.ts.map +0 -1
  399. package/dist/cli/field-context.js +0 -47
  400. package/dist/cli/field-context.js.map +0 -1
  401. package/dist/cli/format-context.d.ts +0 -32
  402. package/dist/cli/format-context.d.ts.map +0 -1
  403. package/dist/cli/format-context.js +0 -50
  404. package/dist/cli/format-context.js.map +0 -1
  405. package/dist/cli/help-generator.d.ts +0 -74
  406. package/dist/cli/help-generator.d.ts.map +0 -1
  407. package/dist/cli/help-generator.js +0 -229
  408. package/dist/cli/help-generator.js.map +0 -1
  409. package/dist/cli/index.d.ts +0 -9
  410. package/dist/cli/index.d.ts.map +0 -1
  411. package/dist/cli/logger-bootstrap.d.ts +0 -6
  412. package/dist/cli/logger-bootstrap.d.ts.map +0 -1
  413. package/dist/cli/logger-bootstrap.js +0 -10
  414. package/dist/cli/logger-bootstrap.js.map +0 -1
  415. package/dist/cli/middleware/output-format.d.ts +0 -30
  416. package/dist/cli/middleware/output-format.d.ts.map +0 -1
  417. package/dist/cli/middleware/output-format.js +0 -35
  418. package/dist/cli/middleware/output-format.js.map +0 -1
  419. package/dist/cli/progress.d.ts +0 -84
  420. package/dist/cli/progress.d.ts.map +0 -1
  421. package/dist/cli/progress.js +0 -169
  422. package/dist/cli/progress.js.map +0 -1
  423. package/dist/cli/renderers/colors.d.ts +0 -32
  424. package/dist/cli/renderers/colors.d.ts.map +0 -1
  425. package/dist/cli/renderers/colors.js +0 -141
  426. package/dist/cli/renderers/colors.js.map +0 -1
  427. package/dist/cli/renderers/error.d.ts +0 -13
  428. package/dist/cli/renderers/error.d.ts.map +0 -1
  429. package/dist/cli/renderers/error.js +0 -42
  430. package/dist/cli/renderers/error.js.map +0 -1
  431. package/dist/cli/renderers/index.d.ts +0 -87
  432. package/dist/cli/renderers/index.d.ts.map +0 -1
  433. package/dist/cli/renderers/index.js +0 -262
  434. package/dist/cli/renderers/index.js.map +0 -1
  435. package/dist/cli/renderers/lafs-validator.d.ts +0 -91
  436. package/dist/cli/renderers/lafs-validator.d.ts.map +0 -1
  437. package/dist/cli/renderers/lafs-validator.js +0 -176
  438. package/dist/cli/renderers/lafs-validator.js.map +0 -1
  439. package/dist/cli/renderers/normalizer.d.ts +0 -21
  440. package/dist/cli/renderers/normalizer.d.ts.map +0 -1
  441. package/dist/cli/renderers/normalizer.js +0 -106
  442. package/dist/cli/renderers/normalizer.js.map +0 -1
  443. package/dist/cli/renderers/system.d.ts +0 -25
  444. package/dist/cli/renderers/system.d.ts.map +0 -1
  445. package/dist/cli/renderers/system.js +0 -416
  446. package/dist/cli/renderers/system.js.map +0 -1
  447. package/dist/cli/renderers/tasks.d.ts +0 -28
  448. package/dist/cli/renderers/tasks.d.ts.map +0 -1
  449. package/dist/cli/renderers/tasks.js +0 -306
  450. package/dist/cli/renderers/tasks.js.map +0 -1
  451. package/dist/dispatch/adapters/cli.d.ts +0 -67
  452. package/dist/dispatch/adapters/cli.d.ts.map +0 -1
  453. package/dist/dispatch/adapters/cli.js +0 -276
  454. package/dist/dispatch/adapters/cli.js.map +0 -1
  455. package/dist/dispatch/context/session-context.d.ts +0 -54
  456. package/dist/dispatch/context/session-context.d.ts.map +0 -1
  457. package/dist/dispatch/context/session-context.js +0 -61
  458. package/dist/dispatch/context/session-context.js.map +0 -1
  459. package/dist/dispatch/dispatcher.d.ts +0 -23
  460. package/dist/dispatch/dispatcher.d.ts.map +0 -1
  461. package/dist/dispatch/dispatcher.js +0 -84
  462. package/dist/dispatch/dispatcher.js.map +0 -1
  463. package/dist/dispatch/domains/_base.d.ts +0 -59
  464. package/dist/dispatch/domains/_base.d.ts.map +0 -1
  465. package/dist/dispatch/domains/_base.js +0 -77
  466. package/dist/dispatch/domains/_base.js.map +0 -1
  467. package/dist/dispatch/domains/_meta.d.ts +0 -23
  468. package/dist/dispatch/domains/_meta.d.ts.map +0 -1
  469. package/dist/dispatch/domains/_meta.js +0 -25
  470. package/dist/dispatch/domains/_meta.js.map +0 -1
  471. package/dist/dispatch/domains/_routing.d.ts +0 -8
  472. package/dist/dispatch/domains/_routing.d.ts.map +0 -1
  473. package/dist/dispatch/domains/_routing.js +0 -20
  474. package/dist/dispatch/domains/_routing.js.map +0 -1
  475. package/dist/dispatch/domains/admin.d.ts +0 -25
  476. package/dist/dispatch/domains/admin.d.ts.map +0 -1
  477. package/dist/dispatch/domains/admin.js +0 -719
  478. package/dist/dispatch/domains/admin.js.map +0 -1
  479. package/dist/dispatch/domains/check.d.ts +0 -22
  480. package/dist/dispatch/domains/check.d.ts.map +0 -1
  481. package/dist/dispatch/domains/check.js +0 -360
  482. package/dist/dispatch/domains/check.js.map +0 -1
  483. package/dist/dispatch/domains/conduit.d.ts +0 -38
  484. package/dist/dispatch/domains/conduit.d.ts.map +0 -1
  485. package/dist/dispatch/domains/conduit.js +0 -247
  486. package/dist/dispatch/domains/conduit.js.map +0 -1
  487. package/dist/dispatch/domains/index.d.ts +0 -27
  488. package/dist/dispatch/domains/index.d.ts.map +0 -1
  489. package/dist/dispatch/domains/index.js +0 -40
  490. package/dist/dispatch/domains/index.js.map +0 -1
  491. package/dist/dispatch/domains/memory.d.ts +0 -22
  492. package/dist/dispatch/domains/memory.d.ts.map +0 -1
  493. package/dist/dispatch/domains/memory.js +0 -303
  494. package/dist/dispatch/domains/memory.js.map +0 -1
  495. package/dist/dispatch/domains/nexus.d.ts +0 -22
  496. package/dist/dispatch/domains/nexus.d.ts.map +0 -1
  497. package/dist/dispatch/domains/nexus.js +0 -286
  498. package/dist/dispatch/domains/nexus.js.map +0 -1
  499. package/dist/dispatch/domains/orchestrate.d.ts +0 -19
  500. package/dist/dispatch/domains/orchestrate.d.ts.map +0 -1
  501. package/dist/dispatch/domains/orchestrate.js +0 -259
  502. package/dist/dispatch/domains/orchestrate.js.map +0 -1
  503. package/dist/dispatch/domains/pipeline.d.ts +0 -35
  504. package/dist/dispatch/domains/pipeline.d.ts.map +0 -1
  505. package/dist/dispatch/domains/pipeline.js +0 -593
  506. package/dist/dispatch/domains/pipeline.js.map +0 -1
  507. package/dist/dispatch/domains/session.d.ts +0 -22
  508. package/dist/dispatch/domains/session.d.ts.map +0 -1
  509. package/dist/dispatch/domains/session.js +0 -257
  510. package/dist/dispatch/domains/session.js.map +0 -1
  511. package/dist/dispatch/domains/sticky.d.ts +0 -20
  512. package/dist/dispatch/domains/sticky.d.ts.map +0 -1
  513. package/dist/dispatch/domains/sticky.js +0 -164
  514. package/dist/dispatch/domains/sticky.js.map +0 -1
  515. package/dist/dispatch/domains/tasks.d.ts +0 -25
  516. package/dist/dispatch/domains/tasks.d.ts.map +0 -1
  517. package/dist/dispatch/domains/tasks.js +0 -361
  518. package/dist/dispatch/domains/tasks.js.map +0 -1
  519. package/dist/dispatch/domains/tools.d.ts +0 -37
  520. package/dist/dispatch/domains/tools.d.ts.map +0 -1
  521. package/dist/dispatch/domains/tools.js +0 -481
  522. package/dist/dispatch/domains/tools.js.map +0 -1
  523. package/dist/dispatch/engines/_error.d.ts +0 -119
  524. package/dist/dispatch/engines/_error.d.ts.map +0 -1
  525. package/dist/dispatch/engines/_error.js +0 -288
  526. package/dist/dispatch/engines/_error.js.map +0 -1
  527. package/dist/dispatch/engines/code-engine.d.ts +0 -18
  528. package/dist/dispatch/engines/code-engine.d.ts.map +0 -1
  529. package/dist/dispatch/engines/code-engine.js +0 -71
  530. package/dist/dispatch/engines/code-engine.js.map +0 -1
  531. package/dist/dispatch/engines/codebase-map-engine.d.ts +0 -31
  532. package/dist/dispatch/engines/codebase-map-engine.d.ts.map +0 -1
  533. package/dist/dispatch/engines/codebase-map-engine.js +0 -43
  534. package/dist/dispatch/engines/codebase-map-engine.js.map +0 -1
  535. package/dist/dispatch/engines/config-engine.d.ts +0 -32
  536. package/dist/dispatch/engines/config-engine.d.ts.map +0 -1
  537. package/dist/dispatch/engines/config-engine.js +0 -70
  538. package/dist/dispatch/engines/config-engine.js.map +0 -1
  539. package/dist/dispatch/engines/hooks-engine.d.ts +0 -96
  540. package/dist/dispatch/engines/hooks-engine.d.ts.map +0 -1
  541. package/dist/dispatch/engines/hooks-engine.js +0 -144
  542. package/dist/dispatch/engines/hooks-engine.js.map +0 -1
  543. package/dist/dispatch/engines/init-engine.d.ts +0 -56
  544. package/dist/dispatch/engines/init-engine.d.ts.map +0 -1
  545. package/dist/dispatch/engines/init-engine.js +0 -78
  546. package/dist/dispatch/engines/init-engine.js.map +0 -1
  547. package/dist/dispatch/engines/lifecycle-engine.d.ts +0 -66
  548. package/dist/dispatch/engines/lifecycle-engine.d.ts.map +0 -1
  549. package/dist/dispatch/engines/lifecycle-engine.js +0 -224
  550. package/dist/dispatch/engines/lifecycle-engine.js.map +0 -1
  551. package/dist/dispatch/engines/memory-engine.d.ts +0 -10
  552. package/dist/dispatch/engines/memory-engine.d.ts.map +0 -1
  553. package/dist/dispatch/engines/memory-engine.js +0 -10
  554. package/dist/dispatch/engines/memory-engine.js.map +0 -1
  555. package/dist/dispatch/engines/nexus-engine.d.ts +0 -167
  556. package/dist/dispatch/engines/nexus-engine.d.ts.map +0 -1
  557. package/dist/dispatch/engines/nexus-engine.js +0 -356
  558. package/dist/dispatch/engines/nexus-engine.js.map +0 -1
  559. package/dist/dispatch/engines/orchestrate-engine.d.ts +0 -133
  560. package/dist/dispatch/engines/orchestrate-engine.d.ts.map +0 -1
  561. package/dist/dispatch/engines/orchestrate-engine.js +0 -769
  562. package/dist/dispatch/engines/orchestrate-engine.js.map +0 -1
  563. package/dist/dispatch/engines/pipeline-engine.d.ts +0 -51
  564. package/dist/dispatch/engines/pipeline-engine.d.ts.map +0 -1
  565. package/dist/dispatch/engines/pipeline-engine.js +0 -191
  566. package/dist/dispatch/engines/pipeline-engine.js.map +0 -1
  567. package/dist/dispatch/engines/release-engine.d.ts +0 -94
  568. package/dist/dispatch/engines/release-engine.d.ts.map +0 -1
  569. package/dist/dispatch/engines/release-engine.js +0 -763
  570. package/dist/dispatch/engines/release-engine.js.map +0 -1
  571. package/dist/dispatch/engines/session-engine.d.ts +0 -383
  572. package/dist/dispatch/engines/session-engine.d.ts.map +0 -1
  573. package/dist/dispatch/engines/session-engine.js +0 -910
  574. package/dist/dispatch/engines/session-engine.js.map +0 -1
  575. package/dist/dispatch/engines/sticky-engine.d.ts +0 -100
  576. package/dist/dispatch/engines/sticky-engine.d.ts.map +0 -1
  577. package/dist/dispatch/engines/sticky-engine.js +0 -181
  578. package/dist/dispatch/engines/sticky-engine.js.map +0 -1
  579. package/dist/dispatch/engines/system-engine.d.ts +0 -539
  580. package/dist/dispatch/engines/system-engine.d.ts.map +0 -1
  581. package/dist/dispatch/engines/system-engine.js +0 -1258
  582. package/dist/dispatch/engines/system-engine.js.map +0 -1
  583. package/dist/dispatch/engines/task-engine.d.ts +0 -1055
  584. package/dist/dispatch/engines/task-engine.d.ts.map +0 -1
  585. package/dist/dispatch/engines/task-engine.js +0 -1193
  586. package/dist/dispatch/engines/task-engine.js.map +0 -1
  587. package/dist/dispatch/engines/template-parser.d.ts +0 -85
  588. package/dist/dispatch/engines/template-parser.d.ts.map +0 -1
  589. package/dist/dispatch/engines/template-parser.js +0 -108
  590. package/dist/dispatch/engines/template-parser.js.map +0 -1
  591. package/dist/dispatch/engines/tools-engine.d.ts +0 -270
  592. package/dist/dispatch/engines/tools-engine.d.ts.map +0 -1
  593. package/dist/dispatch/engines/tools-engine.js +0 -636
  594. package/dist/dispatch/engines/tools-engine.js.map +0 -1
  595. package/dist/dispatch/engines/validate-engine.d.ts +0 -218
  596. package/dist/dispatch/engines/validate-engine.d.ts.map +0 -1
  597. package/dist/dispatch/engines/validate-engine.js +0 -737
  598. package/dist/dispatch/engines/validate-engine.js.map +0 -1
  599. package/dist/dispatch/index.d.ts +0 -20
  600. package/dist/dispatch/index.d.ts.map +0 -1
  601. package/dist/dispatch/index.js +0 -19
  602. package/dist/dispatch/index.js.map +0 -1
  603. package/dist/dispatch/lib/background-jobs.d.ts +0 -86
  604. package/dist/dispatch/lib/background-jobs.d.ts.map +0 -1
  605. package/dist/dispatch/lib/background-jobs.js +0 -183
  606. package/dist/dispatch/lib/background-jobs.js.map +0 -1
  607. package/dist/dispatch/lib/budget.d.ts +0 -36
  608. package/dist/dispatch/lib/budget.d.ts.map +0 -1
  609. package/dist/dispatch/lib/budget.js +0 -109
  610. package/dist/dispatch/lib/budget.js.map +0 -1
  611. package/dist/dispatch/lib/capability-matrix.d.ts +0 -11
  612. package/dist/dispatch/lib/capability-matrix.d.ts.map +0 -1
  613. package/dist/dispatch/lib/capability-matrix.js +0 -10
  614. package/dist/dispatch/lib/capability-matrix.js.map +0 -1
  615. package/dist/dispatch/lib/config-loader.d.ts +0 -42
  616. package/dist/dispatch/lib/config-loader.d.ts.map +0 -1
  617. package/dist/dispatch/lib/config-loader.js +0 -217
  618. package/dist/dispatch/lib/config-loader.js.map +0 -1
  619. package/dist/dispatch/lib/config.d.ts +0 -11
  620. package/dist/dispatch/lib/config.d.ts.map +0 -1
  621. package/dist/dispatch/lib/config.js +0 -10
  622. package/dist/dispatch/lib/config.js.map +0 -1
  623. package/dist/dispatch/lib/defaults.d.ts +0 -115
  624. package/dist/dispatch/lib/defaults.d.ts.map +0 -1
  625. package/dist/dispatch/lib/defaults.js +0 -61
  626. package/dist/dispatch/lib/defaults.js.map +0 -1
  627. package/dist/dispatch/lib/engine.d.ts +0 -26
  628. package/dist/dispatch/lib/engine.d.ts.map +0 -1
  629. package/dist/dispatch/lib/engine.js +0 -46
  630. package/dist/dispatch/lib/engine.js.map +0 -1
  631. package/dist/dispatch/lib/exit-codes.d.ts +0 -35
  632. package/dist/dispatch/lib/exit-codes.d.ts.map +0 -1
  633. package/dist/dispatch/lib/exit-codes.js +0 -60
  634. package/dist/dispatch/lib/exit-codes.js.map +0 -1
  635. package/dist/dispatch/lib/gateway-meta.d.ts +0 -37
  636. package/dist/dispatch/lib/gateway-meta.d.ts.map +0 -1
  637. package/dist/dispatch/lib/gateway-meta.js +0 -50
  638. package/dist/dispatch/lib/gateway-meta.js.map +0 -1
  639. package/dist/dispatch/lib/job-manager-accessor.d.ts +0 -9
  640. package/dist/dispatch/lib/job-manager-accessor.d.ts.map +0 -1
  641. package/dist/dispatch/lib/job-manager-accessor.js +0 -13
  642. package/dist/dispatch/lib/job-manager-accessor.js.map +0 -1
  643. package/dist/dispatch/lib/meta.d.ts +0 -26
  644. package/dist/dispatch/lib/meta.d.ts.map +0 -1
  645. package/dist/dispatch/lib/meta.js +0 -37
  646. package/dist/dispatch/lib/meta.js.map +0 -1
  647. package/dist/dispatch/lib/param-utils.d.ts +0 -11
  648. package/dist/dispatch/lib/param-utils.d.ts.map +0 -1
  649. package/dist/dispatch/lib/param-utils.js +0 -10
  650. package/dist/dispatch/lib/param-utils.js.map +0 -1
  651. package/dist/dispatch/lib/projections.d.ts +0 -56
  652. package/dist/dispatch/lib/projections.d.ts.map +0 -1
  653. package/dist/dispatch/lib/projections.js +0 -65
  654. package/dist/dispatch/lib/projections.js.map +0 -1
  655. package/dist/dispatch/lib/proto-envelope.d.ts +0 -56
  656. package/dist/dispatch/lib/proto-envelope.d.ts.map +0 -1
  657. package/dist/dispatch/lib/proto-envelope.js +0 -17
  658. package/dist/dispatch/lib/proto-envelope.js.map +0 -1
  659. package/dist/dispatch/lib/schema-utils.d.ts +0 -39
  660. package/dist/dispatch/lib/schema-utils.d.ts.map +0 -1
  661. package/dist/dispatch/lib/schema-utils.js +0 -88
  662. package/dist/dispatch/lib/schema-utils.js.map +0 -1
  663. package/dist/dispatch/lib/security.d.ts +0 -11
  664. package/dist/dispatch/lib/security.d.ts.map +0 -1
  665. package/dist/dispatch/lib/security.js +0 -10
  666. package/dist/dispatch/lib/security.js.map +0 -1
  667. package/dist/dispatch/middleware/audit.d.ts +0 -23
  668. package/dist/dispatch/middleware/audit.d.ts.map +0 -1
  669. package/dist/dispatch/middleware/audit.js +0 -169
  670. package/dist/dispatch/middleware/audit.js.map +0 -1
  671. package/dist/dispatch/middleware/field-filter.d.ts +0 -25
  672. package/dist/dispatch/middleware/field-filter.d.ts.map +0 -1
  673. package/dist/dispatch/middleware/field-filter.js +0 -70
  674. package/dist/dispatch/middleware/field-filter.js.map +0 -1
  675. package/dist/dispatch/middleware/pipeline.d.ts +0 -33
  676. package/dist/dispatch/middleware/pipeline.d.ts.map +0 -1
  677. package/dist/dispatch/middleware/pipeline.js +0 -60
  678. package/dist/dispatch/middleware/pipeline.js.map +0 -1
  679. package/dist/dispatch/middleware/projection.d.ts +0 -35
  680. package/dist/dispatch/middleware/projection.d.ts.map +0 -1
  681. package/dist/dispatch/middleware/projection.js +0 -146
  682. package/dist/dispatch/middleware/projection.js.map +0 -1
  683. package/dist/dispatch/middleware/protocol-enforcement.d.ts +0 -30
  684. package/dist/dispatch/middleware/protocol-enforcement.d.ts.map +0 -1
  685. package/dist/dispatch/middleware/protocol-enforcement.js +0 -56
  686. package/dist/dispatch/middleware/protocol-enforcement.js.map +0 -1
  687. package/dist/dispatch/middleware/rate-limiter.d.ts +0 -72
  688. package/dist/dispatch/middleware/rate-limiter.d.ts.map +0 -1
  689. package/dist/dispatch/middleware/rate-limiter.js +0 -127
  690. package/dist/dispatch/middleware/rate-limiter.js.map +0 -1
  691. package/dist/dispatch/middleware/sanitizer.d.ts +0 -24
  692. package/dist/dispatch/middleware/sanitizer.d.ts.map +0 -1
  693. package/dist/dispatch/middleware/sanitizer.js +0 -56
  694. package/dist/dispatch/middleware/sanitizer.js.map +0 -1
  695. package/dist/dispatch/middleware/session-resolver.d.ts +0 -26
  696. package/dist/dispatch/middleware/session-resolver.d.ts.map +0 -1
  697. package/dist/dispatch/middleware/session-resolver.js +0 -65
  698. package/dist/dispatch/middleware/session-resolver.js.map +0 -1
  699. package/dist/dispatch/middleware/verification-gates.d.ts +0 -22
  700. package/dist/dispatch/middleware/verification-gates.d.ts.map +0 -1
  701. package/dist/dispatch/middleware/verification-gates.js +0 -59
  702. package/dist/dispatch/middleware/verification-gates.js.map +0 -1
  703. package/dist/dispatch/registry.d.ts +0 -91
  704. package/dist/dispatch/registry.d.ts.map +0 -1
  705. package/dist/dispatch/registry.js +0 -3133
  706. package/dist/dispatch/registry.js.map +0 -1
  707. package/dist/dispatch/types.d.ts +0 -206
  708. package/dist/dispatch/types.d.ts.map +0 -1
  709. package/dist/dispatch/types.js +0 -26
  710. package/dist/dispatch/types.js.map +0 -1
@@ -1,910 +0,0 @@
1
- /**
2
- * Session Engine — thin wrapper layer.
3
- *
4
- * Delegates all business logic to src/core/sessions/ and src/core/task-work/.
5
- * Each function catches errors from core and wraps them into EngineResult.
6
- *
7
- * @task T4782
8
- * @epic T4654
9
- */
10
- // ... existing imports ...
11
- import { archiveSessions, cleanupSessions, computeBriefing, computeDebrief, computeHandoff, currentTask, findSessions, generateSessionId, getAccessor, getContextDrift, getDecisionLog, getLastHandoff, getSessionHistory, getSessionStats, getTaskHistory, injectContext, paginate, parseScope, persistHandoff, recordAssumption, recordDecision, showSession, startTask, stopTask, suspendSession, switchSession, } from '@cleocode/core/internal';
12
- import { cleoErrorToEngineError, engineError } from './_error.js';
13
- /**
14
- * Get current session status.
15
- *
16
- * @remarks
17
- * Returns whether there is an active session, along with the session record
18
- * and current task work state if available.
19
- *
20
- * @param projectRoot - Absolute path to the project root
21
- * @returns EngineResult with active session flag, session record, and task work state
22
- *
23
- * @example
24
- * ```typescript
25
- * const result = await sessionStatus('/project');
26
- * if (result.success && result.data.hasActiveSession) {
27
- * console.log(result.data.session?.id);
28
- * }
29
- * ```
30
- *
31
- * @task T4782
32
- */
33
- export async function sessionStatus(projectRoot) {
34
- try {
35
- const accessor = await getAccessor(projectRoot);
36
- const focusState = await accessor.getMetaValue('focus_state');
37
- const sessions = await accessor.loadSessions();
38
- const active = sessions.find((s) => s.status === 'active');
39
- return {
40
- success: true,
41
- data: {
42
- hasActiveSession: !!active,
43
- session: active || null,
44
- taskWork: focusState || null,
45
- },
46
- };
47
- }
48
- catch {
49
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
50
- }
51
- }
52
- /** Default limit for sessionList when none is provided. @task T5121 */
53
- const SESSION_LIST_DEFAULT_LIMIT = 10;
54
- /**
55
- * List sessions with budget enforcement.
56
- *
57
- * When a limit is applied (explicit or default), the response includes
58
- * `_meta.truncated` and `_meta.total` so agents know the result set
59
- * was capped.
60
- *
61
- * @remarks
62
- * Defaults to 10 results when no explicit limit is provided to protect
63
- * agent context budgets. Use offset for pagination.
64
- *
65
- * @param projectRoot - Absolute path to the project root
66
- * @param params - Optional filter and pagination parameters
67
- * @returns EngineResult with sessions array, total, filtered count, and truncation metadata
68
- *
69
- * @example
70
- * ```typescript
71
- * const result = await sessionList('/project', { active: true, limit: 5 });
72
- * ```
73
- *
74
- * @task T4782
75
- * @task T5120 - budget enforcement metadata
76
- * @task T5121 - default limit=10
77
- */
78
- export async function sessionList(projectRoot, params) {
79
- try {
80
- const accessor = await getAccessor(projectRoot);
81
- const sessions = await accessor.loadSessions();
82
- let result = sessions;
83
- if (params?.status) {
84
- result = result.filter((s) => s.status === params.status);
85
- }
86
- else if (params?.active === true) {
87
- result = result.filter((s) => s.status === 'active');
88
- }
89
- else if (params?.active === false) {
90
- result = result.filter((s) => s.status !== 'active');
91
- }
92
- const total = sessions.length;
93
- const filtered = result.length;
94
- const limit = params?.limit && params.limit > 0 ? params.limit : SESSION_LIST_DEFAULT_LIMIT;
95
- const offset = typeof params?.offset === 'number' && params.offset > 0 ? params.offset : 0;
96
- const pageResult = paginate(result, limit, offset);
97
- const truncated = filtered !== pageResult.items.length || offset > 0;
98
- return {
99
- success: true,
100
- data: {
101
- sessions: pageResult.items,
102
- total,
103
- filtered,
104
- _meta: { truncated, total: filtered },
105
- },
106
- page: pageResult.page,
107
- };
108
- }
109
- catch {
110
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
111
- }
112
- }
113
- /**
114
- * Lightweight session discovery -- returns minimal session records.
115
- *
116
- * @remarks
117
- * Optimized for low context cost. Returns only essential fields (ID, status,
118
- * scope, timestamps) without full session details.
119
- *
120
- * @param projectRoot - Absolute path to the project root
121
- * @param params - Optional search parameters
122
- * @returns EngineResult with array of minimal session records
123
- *
124
- * @example
125
- * ```typescript
126
- * const result = await sessionFind('/project', { status: 'active' });
127
- * ```
128
- *
129
- * @task T5119
130
- */
131
- export async function sessionFind(projectRoot, params) {
132
- try {
133
- const accessor = await getAccessor(projectRoot);
134
- const result = await findSessions(accessor, params);
135
- return { success: true, data: result };
136
- }
137
- catch {
138
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
139
- }
140
- }
141
- /**
142
- * Show a specific session by ID.
143
- *
144
- * @remarks
145
- * Returns the full session record including scope, status, timestamps,
146
- * and associated task data.
147
- *
148
- * @param projectRoot - Absolute path to the project root
149
- * @param sessionId - Session identifier to look up
150
- * @returns EngineResult with the full Session record
151
- *
152
- * @example
153
- * ```typescript
154
- * const result = await sessionShow('/project', 'ses_20260401_abc123');
155
- * ```
156
- *
157
- * @task T4782
158
- */
159
- export async function sessionShow(projectRoot, sessionId) {
160
- try {
161
- const result = await showSession(projectRoot, sessionId);
162
- return { success: true, data: result };
163
- }
164
- catch (err) {
165
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Session not initialized');
166
- }
167
- }
168
- /**
169
- * Get current task being worked on.
170
- * Delegates to core/task-work/currentTask.
171
- * @task T4782
172
- */
173
- export async function taskCurrentGet(projectRoot) {
174
- try {
175
- const accessor = await getAccessor(projectRoot);
176
- const result = await currentTask(undefined, accessor);
177
- return {
178
- success: true,
179
- data: {
180
- currentTask: result.currentTask,
181
- currentPhase: result.currentPhase,
182
- },
183
- };
184
- }
185
- catch {
186
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
187
- }
188
- }
189
- /**
190
- * Start working on a specific task.
191
- * Delegates to core/task-work/startTask.
192
- * @task T4782
193
- */
194
- export async function taskStart(projectRoot, taskId) {
195
- try {
196
- const accessor = await getAccessor(projectRoot);
197
- const result = await startTask(taskId, undefined, accessor);
198
- return {
199
- success: true,
200
- data: { taskId: result.taskId, previousTask: result.previousTask },
201
- };
202
- }
203
- catch (err) {
204
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Failed to start task');
205
- }
206
- }
207
- /**
208
- * Stop working on the current task.
209
- * Delegates to core/task-work/stopTask.
210
- * @task T4782
211
- */
212
- export async function taskStop(projectRoot) {
213
- try {
214
- const accessor = await getAccessor(projectRoot);
215
- const result = await stopTask(undefined, accessor);
216
- return {
217
- success: true,
218
- data: { cleared: true, previousTask: result.previousTask },
219
- };
220
- }
221
- catch {
222
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
223
- }
224
- }
225
- /**
226
- * Get task work history from session notes.
227
- * @task T5323
228
- */
229
- export async function taskWorkHistory(projectRoot) {
230
- try {
231
- const accessor = await getAccessor(projectRoot);
232
- const history = await getTaskHistory(undefined, accessor);
233
- return {
234
- success: true,
235
- data: { history, count: history.length },
236
- };
237
- }
238
- catch {
239
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
240
- }
241
- }
242
- /**
243
- * Start a new session.
244
- * Note: This function has engine-specific logic for task file focus management
245
- * and session store updates, so it remains in the engine layer.
246
- * @task T4782
247
- */
248
- export async function sessionStart(projectRoot, params) {
249
- try {
250
- let accessor = await getAccessor(projectRoot);
251
- // Validate scope BEFORE auto-ending active session (prevents data loss on invalid input)
252
- let scope;
253
- try {
254
- scope = parseScope(params.scope);
255
- }
256
- catch (err) {
257
- return cleoErrorToEngineError(err, 'E_INVALID_INPUT', 'Invalid scope');
258
- }
259
- // For non-global scopes, verify root task exists before auto-ending
260
- if (scope.type !== 'global') {
261
- const rootTask = await accessor.loadSingleTask(scope.rootTaskId);
262
- if (!rootTask) {
263
- return engineError('E_NOT_FOUND', `Root task '${scope.rootTaskId}' not found`);
264
- }
265
- }
266
- // Auto-end any active session before starting a new one
267
- const existingActive = await accessor.getActiveSession();
268
- if (existingActive) {
269
- await sessionEnd(projectRoot);
270
- // Reload after auto-end
271
- accessor = await getAccessor(projectRoot);
272
- }
273
- const now = new Date().toISOString();
274
- const sessionId = generateSessionId();
275
- // T4959: Chain linking — find most recent ended session for same scope
276
- let previousSessionId = null;
277
- {
278
- const sessions = await accessor.loadSessions();
279
- const sameScope = sessions
280
- .filter((s) => s.status === 'ended' &&
281
- s.endedAt &&
282
- s.scope?.type === scope.type &&
283
- (scope.type === 'global' || s.scope?.rootTaskId === scope.rootTaskId))
284
- .sort((a, b) => new Date(b.endedAt).getTime() - new Date(a.endedAt).getTime());
285
- if (sameScope.length > 0) {
286
- previousSessionId = sameScope[0].id;
287
- }
288
- }
289
- // Resolve agent identifier from params or env
290
- const agentIdentifier = params.agentIdentifier ??
291
- process.env.CLEO_AGENT_ID ??
292
- null;
293
- const rootTaskId = scope.type !== 'global' ? scope.rootTaskId : undefined;
294
- const startingTaskId = params.startTask || (params.autoStart && rootTaskId ? rootTaskId : null);
295
- const newSession = {
296
- id: sessionId,
297
- status: 'active',
298
- name: params.name || `session-${sessionId}`,
299
- scope: scope.type === 'global'
300
- ? { type: 'global' }
301
- : { type: scope.type, rootTaskId: scope.rootTaskId, includeDescendants: true },
302
- taskWork: {
303
- taskId: startingTaskId,
304
- setAt: now,
305
- },
306
- startedAt: now,
307
- resumeCount: 0,
308
- ...(params.grade ? { gradeMode: true } : {}),
309
- stats: {
310
- tasksCompleted: 0,
311
- tasksCreated: 0,
312
- tasksUpdated: 0,
313
- focusChanges: 0,
314
- totalActiveMinutes: 0,
315
- suspendCount: 0,
316
- },
317
- };
318
- // Update focus state via metadata
319
- const existingFocus = (await accessor.getMetaValue('focus_state')) ?? {
320
- currentTask: null,
321
- currentPhase: null,
322
- blockedUntil: null,
323
- sessionNote: null,
324
- sessionNotes: [],
325
- nextAction: null,
326
- primarySession: null,
327
- };
328
- const startingTask = params.startTask;
329
- if (startingTask) {
330
- existingFocus.currentTask = startingTask;
331
- }
332
- else if (params.autoStart && rootTaskId) {
333
- existingFocus.currentTask = rootTaskId;
334
- }
335
- await accessor.setMetaValue('focus_state', existingFocus);
336
- // Update file meta (activeSession no longer stored — session.status is source of truth)
337
- const currentMeta = (await accessor.getMetaValue('file_meta')) ?? {};
338
- currentMeta.lastSessionId = sessionId;
339
- currentMeta.generation = (currentMeta.generation || 0) + 1;
340
- await accessor.setMetaValue('file_meta', currentMeta);
341
- // T4959: Set chain fields on new session
342
- if (previousSessionId) {
343
- newSession.previousSessionId = previousSessionId;
344
- }
345
- if (agentIdentifier) {
346
- newSession.agentIdentifier = agentIdentifier;
347
- }
348
- // Insert new session FIRST — FK constraints require the target row to exist
349
- // before predecessor.nextSessionId can reference it.
350
- await accessor.upsertSingleSession(newSession);
351
- // Now update predecessor's nextSessionId (new session row exists for FK)
352
- if (previousSessionId) {
353
- const sessions = await accessor.loadSessions();
354
- const pred = sessions.find((s) => s.id === previousSessionId);
355
- if (pred) {
356
- pred.nextSessionId = sessionId;
357
- await accessor.upsertSingleSession(pred);
358
- }
359
- }
360
- // Enable grade mode: set env vars so audit middleware logs queries too
361
- if (params.grade) {
362
- process.env.CLEO_SESSION_GRADE = 'true';
363
- process.env.CLEO_SESSION_ID = sessionId;
364
- process.env.CLEO_SESSION_GRADE_ID = sessionId;
365
- }
366
- // T4959: Auto-briefing — enrich response with briefing + predecessor debrief
367
- let briefing = null;
368
- let previousDebrief = null;
369
- try {
370
- briefing = await computeBriefing(projectRoot, { scope: params.scope });
371
- }
372
- catch {
373
- // Best-effort — briefing failure should not fail session start
374
- }
375
- // 5B: Load predecessor debrief/handoff and mark consumed
376
- let previousHandoff = null;
377
- if (previousSessionId) {
378
- try {
379
- const sessions2 = await accessor.loadSessions();
380
- const pred = sessions2.find((s) => s.id === previousSessionId);
381
- if (pred) {
382
- // Try debriefJson first (rich data), then handoffJson (basic)
383
- if (pred.debriefJson) {
384
- previousDebrief = JSON.parse(pred.debriefJson);
385
- }
386
- else if (pred.handoffJson) {
387
- previousHandoff = JSON.parse(pred.handoffJson);
388
- }
389
- // Always mark consumed regardless of debrief vs handoff
390
- pred.handoffConsumedAt = new Date().toISOString();
391
- pred.handoffConsumedBy = sessionId;
392
- await accessor.upsertSingleSession(pred);
393
- }
394
- }
395
- catch {
396
- // Best-effort
397
- }
398
- }
399
- const enrichedSession = {
400
- ...newSession,
401
- ...(briefing && { briefing }),
402
- ...(previousDebrief && { previousDebrief }),
403
- ...(previousHandoff && { previousHandoff }),
404
- };
405
- return { success: true, data: enrichedSession };
406
- }
407
- catch {
408
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
409
- }
410
- }
411
- /**
412
- * End the current session.
413
- * Note: This function has engine-specific logic for task file focus management
414
- * and session store management, so it remains in the engine layer.
415
- * @task T4782
416
- * @task T140 @epic T134 - Summarization wiring
417
- */
418
- export async function sessionEnd(projectRoot, notes, params) {
419
- try {
420
- const accessor = await getAccessor(projectRoot);
421
- const activeSession = await accessor.getActiveSession();
422
- const sessionId = activeSession?.id;
423
- if (!sessionId) {
424
- return engineError('E_SESSION_NOT_FOUND', 'No active session to end', {
425
- fix: 'Start a session first with: session start --scope <scope> --name <name>',
426
- });
427
- }
428
- const now = new Date().toISOString();
429
- // NOTE: Do NOT clear grade mode env vars here — gradeSession() needs them
430
- // to query audit entries after the session ends. The caller (admin.grade handler)
431
- // is responsible for cleanup after evaluation completes.
432
- // Clear focus
433
- const focusEnd = await accessor.getMetaValue('focus_state');
434
- if (focusEnd) {
435
- focusEnd.currentTask = null;
436
- if (notes) {
437
- if (!focusEnd.sessionNotes)
438
- focusEnd.sessionNotes = [];
439
- focusEnd.sessionNotes.push({ timestamp: now, note: notes });
440
- }
441
- await accessor.setMetaValue('focus_state', focusEnd);
442
- }
443
- // Bump file_meta generation (activeSession no longer stored here)
444
- const fileMetaEnd = await accessor.getMetaValue('file_meta');
445
- if (fileMetaEnd) {
446
- fileMetaEnd.generation = (fileMetaEnd.generation || 0) + 1;
447
- await accessor.setMetaValue('file_meta', fileMetaEnd);
448
- }
449
- // Update session record — status is the source of truth
450
- if (sessionId !== 'default') {
451
- activeSession.status = 'ended';
452
- activeSession.endedAt = now;
453
- await accessor.upsertSingleSession(activeSession);
454
- }
455
- // T140: Build summarization prompt and ingest structured summary if provided
456
- let memoryPrompt;
457
- try {
458
- const { loadConfig } = await import('@cleocode/core/internal');
459
- const config = await loadConfig(projectRoot);
460
- if (config.brain?.summarization?.enabled) {
461
- // Fetch the debrief if available to build a summarization prompt
462
- const sessions = await accessor.loadSessions();
463
- const endedSession = sessions.find((s) => s.id === sessionId);
464
- if (endedSession?.debriefJson) {
465
- try {
466
- const debrief = JSON.parse(endedSession.debriefJson);
467
- const { buildSummarizationPrompt } = await import('@cleocode/core/internal');
468
- const prompt = buildSummarizationPrompt(sessionId, debrief);
469
- if (prompt)
470
- memoryPrompt = prompt;
471
- }
472
- catch {
473
- // Best-effort
474
- }
475
- }
476
- }
477
- // Ingest structured summary if provided by caller (e.g. from CLI --summary flag)
478
- if (params?.sessionSummary) {
479
- const { ingestStructuredSummary } = await import('@cleocode/core/internal');
480
- await ingestStructuredSummary(projectRoot, sessionId, params.sessionSummary);
481
- }
482
- }
483
- catch {
484
- // Summarization must never block session end
485
- }
486
- return {
487
- success: true,
488
- data: { sessionId, ended: true, ...(memoryPrompt && { memoryPrompt }) },
489
- };
490
- }
491
- catch {
492
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
493
- }
494
- }
495
- /**
496
- * Resume an ended or suspended session.
497
- * Note: This function has engine-specific logic for task file focus sync,
498
- * so it remains in the engine layer.
499
- * @task T4782
500
- */
501
- export async function sessionResume(projectRoot, sessionId) {
502
- try {
503
- const accessor = await getAccessor(projectRoot);
504
- // Look up sessions from the store.
505
- const sessions = await accessor.loadSessions();
506
- // Look in sessions list
507
- const session = sessions.find((s) => s.id === sessionId);
508
- if (!session) {
509
- return engineError('E_NOT_FOUND', `Session '${sessionId}' not found`);
510
- }
511
- if (session.status === 'active') {
512
- return { success: true, data: session };
513
- }
514
- if (session.status === 'archived') {
515
- return engineError('E_INVALID_INPUT', `Session '${sessionId}' is archived and cannot be resumed`);
516
- }
517
- session.status = 'active';
518
- session.endedAt = undefined;
519
- session.resumeCount = (session.resumeCount || 0) + 1;
520
- // Bump file_meta generation (activeSession no longer stored — status is source of truth)
521
- const resumeMeta = (await accessor.getMetaValue('file_meta')) ?? {};
522
- resumeMeta.generation = (resumeMeta.generation || 0) + 1;
523
- await accessor.setMetaValue('file_meta', resumeMeta);
524
- // Restore focus from session task work
525
- if (session.taskWork?.taskId) {
526
- const resumeFocus = await accessor.getMetaValue('focus_state');
527
- if (resumeFocus) {
528
- resumeFocus.currentTask = session.taskWork.taskId;
529
- await accessor.setMetaValue('focus_state', resumeFocus);
530
- }
531
- }
532
- await accessor.upsertSingleSession(session);
533
- // Wave 3B: Enrich resumed session with brain memory context (best-effort)
534
- let memoryContext;
535
- try {
536
- const { getSessionMemoryContext } = await import('@cleocode/core/internal');
537
- const scopeType = session.scope?.type;
538
- const rootTaskId = session.scope?.rootTaskId;
539
- memoryContext = await getSessionMemoryContext(projectRoot, {
540
- type: scopeType ?? 'global',
541
- rootTaskId,
542
- epicId: rootTaskId,
543
- });
544
- }
545
- catch {
546
- // Best-effort -- memory context failure should not fail resume
547
- }
548
- const enrichedSession = {
549
- ...session,
550
- ...(memoryContext && { memoryContext }),
551
- };
552
- return { success: true, data: enrichedSession };
553
- }
554
- catch {
555
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
556
- }
557
- }
558
- /**
559
- * Garbage collect old sessions.
560
- * @task T4782
561
- */
562
- export async function sessionGc(projectRoot, maxAgeDays = 1) {
563
- try {
564
- const accessor = await getAccessor(projectRoot);
565
- const sessions = await accessor.loadSessions();
566
- const now = Date.now();
567
- const maxAgeMs = maxAgeDays * 24 * 60 * 60 * 1000;
568
- const thirtyDaysMs = 30 * 24 * 60 * 60 * 1000;
569
- const orphaned = [];
570
- const removed = [];
571
- // Mark stale active sessions as orphaned
572
- for (const session of sessions) {
573
- if (session.status === 'active') {
574
- const lastActive = new Date(session.endedAt || session.startedAt).getTime();
575
- if (now - lastActive > maxAgeMs) {
576
- session.status = 'ended';
577
- session.endedAt = new Date().toISOString();
578
- orphaned.push(session.id);
579
- await accessor.upsertSingleSession(session);
580
- }
581
- }
582
- }
583
- // Remove very old ended sessions
584
- for (const s of sessions) {
585
- if (s.status === 'active')
586
- continue;
587
- const endedAt = s.endedAt ? new Date(s.endedAt).getTime() : new Date(s.startedAt).getTime();
588
- if (now - endedAt > thirtyDaysMs) {
589
- removed.push(s.id);
590
- await accessor.removeSingleSession(s.id);
591
- }
592
- }
593
- return { success: true, data: { orphaned, removed } };
594
- }
595
- catch {
596
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
597
- }
598
- }
599
- /**
600
- * Suspend an active session.
601
- * @task T4782
602
- */
603
- export async function sessionSuspend(projectRoot, sessionId, reason) {
604
- try {
605
- const result = await suspendSession(projectRoot, sessionId, reason);
606
- return { success: true, data: result };
607
- }
608
- catch (err) {
609
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Failed to end session');
610
- }
611
- }
612
- /**
613
- * List session history with focus changes and completed tasks.
614
- * @task T4782
615
- */
616
- export async function sessionHistory(projectRoot, params) {
617
- try {
618
- const result = await getSessionHistory(projectRoot, params);
619
- return { success: true, data: result };
620
- }
621
- catch {
622
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
623
- }
624
- }
625
- /**
626
- * Remove orphaned sessions and clean up stale data.
627
- * @task T4782
628
- */
629
- export async function sessionCleanup(projectRoot) {
630
- try {
631
- const result = await cleanupSessions(projectRoot);
632
- return { success: true, data: result };
633
- }
634
- catch {
635
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
636
- }
637
- }
638
- /**
639
- * Record a decision to the audit trail.
640
- * @task T4782
641
- */
642
- export async function sessionRecordDecision(projectRoot, params) {
643
- try {
644
- const result = await recordDecision(projectRoot, params);
645
- return { success: true, data: result };
646
- }
647
- catch (err) {
648
- return cleoErrorToEngineError(err, 'E_INVALID_INPUT', 'Failed to record decision');
649
- }
650
- }
651
- /**
652
- * Read the decision log, optionally filtered by sessionId and/or taskId.
653
- * @task T4782
654
- */
655
- export async function sessionDecisionLog(projectRoot, params) {
656
- try {
657
- const result = await getDecisionLog(projectRoot, params);
658
- return { success: true, data: result };
659
- }
660
- catch {
661
- return { success: true, data: [] };
662
- }
663
- }
664
- /**
665
- * Compute context drift score for the current session.
666
- * @task T4782
667
- */
668
- export async function sessionContextDrift(projectRoot, params) {
669
- try {
670
- const result = await getContextDrift(projectRoot, params);
671
- return { success: true, data: result };
672
- }
673
- catch (err) {
674
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Failed to read decision log');
675
- }
676
- }
677
- /**
678
- * Record an assumption made during a session.
679
- * @task T4782
680
- */
681
- export async function sessionRecordAssumption(projectRoot, params) {
682
- try {
683
- const result = await recordAssumption(projectRoot, params);
684
- return { success: true, data: result };
685
- }
686
- catch (err) {
687
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Failed to record assumption');
688
- }
689
- }
690
- /**
691
- * Compute session statistics, optionally for a specific session.
692
- * @task T4782
693
- */
694
- export async function sessionStats(projectRoot, sessionId) {
695
- try {
696
- const result = await getSessionStats(projectRoot, sessionId);
697
- return { success: true, data: result };
698
- }
699
- catch (err) {
700
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Failed to get session stats');
701
- }
702
- }
703
- /**
704
- * Switch to a different session.
705
- * @task T4782
706
- */
707
- export async function sessionSwitch(projectRoot, sessionId) {
708
- try {
709
- const result = await switchSession(projectRoot, sessionId);
710
- return { success: true, data: result };
711
- }
712
- catch (err) {
713
- return cleoErrorToEngineError(err, 'E_NOT_INITIALIZED', 'Failed to switch session');
714
- }
715
- }
716
- /**
717
- * Archive old/ended sessions.
718
- * @task T4782
719
- */
720
- export async function sessionArchive(projectRoot, olderThan) {
721
- try {
722
- const result = await archiveSessions(projectRoot, olderThan);
723
- return { success: true, data: result };
724
- }
725
- catch {
726
- return engineError('E_NOT_INITIALIZED', 'Task database not initialized');
727
- }
728
- }
729
- /**
730
- * Get handoff data for the most recent ended session.
731
- * @task T4915, T5123
732
- */
733
- export async function sessionHandoff(projectRoot, scope) {
734
- try {
735
- const result = await getLastHandoff(projectRoot, scope);
736
- return { success: true, data: result };
737
- }
738
- catch (err) {
739
- return cleoErrorToEngineError(err, 'E_GENERAL', 'Failed to archive sessions');
740
- }
741
- }
742
- /**
743
- * Compute and persist handoff data for a session.
744
- * @task T4915
745
- */
746
- export async function sessionComputeHandoff(projectRoot, sessionId, options) {
747
- try {
748
- const handoff = await computeHandoff(projectRoot, {
749
- sessionId,
750
- note: options?.note,
751
- nextAction: options?.nextAction,
752
- });
753
- await persistHandoff(projectRoot, sessionId, handoff);
754
- return { success: true, data: handoff };
755
- }
756
- catch (err) {
757
- return cleoErrorToEngineError(err, 'E_INTERNAL', 'Failed to get handoff');
758
- }
759
- }
760
- /**
761
- * Compute session briefing - composite view for session start.
762
- * Aggregates data from handoff, current focus, next tasks, bugs, blockers, and epics.
763
- * @task T4916
764
- */
765
- export async function sessionBriefing(projectRoot, options) {
766
- try {
767
- const briefing = await computeBriefing(projectRoot, options);
768
- return { success: true, data: briefing };
769
- }
770
- catch (err) {
771
- return cleoErrorToEngineError(err, 'E_INTERNAL', 'Failed to compute briefing');
772
- }
773
- }
774
- // =============================================================================
775
- // RICH DEBRIEF + CHAIN OPERATIONS (T4959)
776
- // =============================================================================
777
- /**
778
- * Compute and persist rich debrief data for a session.
779
- * Persists as both handoffJson (backward compat) and debriefJson (rich data).
780
- * @epic T4959
781
- */
782
- export async function sessionComputeDebrief(projectRoot, sessionId, options) {
783
- try {
784
- const accessor = await getAccessor(projectRoot);
785
- const sessions = await accessor.loadSessions();
786
- const session = sessions.find((s) => s.id === sessionId);
787
- const debrief = await computeDebrief(projectRoot, {
788
- sessionId,
789
- note: options?.note,
790
- nextAction: options?.nextAction,
791
- agentIdentifier: session?.agentIdentifier ?? null,
792
- startedAt: session?.startedAt,
793
- endedAt: session?.endedAt ?? new Date().toISOString(),
794
- });
795
- // Persist both handoffJson and debriefJson
796
- const { persistHandoff: corePersistHandoff } = await import('@cleocode/core/internal');
797
- await corePersistHandoff(projectRoot, sessionId, debrief.handoff);
798
- // Persist debriefJson via session update
799
- if (session) {
800
- session.debriefJson = JSON.stringify(debrief);
801
- await accessor.upsertSingleSession(session);
802
- }
803
- return { success: true, data: debrief };
804
- }
805
- catch (err) {
806
- return cleoErrorToEngineError(err, 'E_INTERNAL', 'Failed to compute debrief');
807
- }
808
- }
809
- /**
810
- * Read a session's debrief data.
811
- * Falls back to handoff data if no debrief is available.
812
- * @epic T4959
813
- */
814
- export async function sessionDebriefShow(projectRoot, sessionId) {
815
- try {
816
- const accessor = await getAccessor(projectRoot);
817
- const sessions = await accessor.loadSessions();
818
- const session = sessions.find((s) => s.id === sessionId);
819
- if (!session) {
820
- return engineError('E_NOT_FOUND', `Session '${sessionId}' not found`);
821
- }
822
- // Try debriefJson first
823
- if (session.debriefJson) {
824
- try {
825
- const debrief = JSON.parse(session.debriefJson);
826
- return { success: true, data: debrief };
827
- }
828
- catch {
829
- // Fall through to handoff
830
- }
831
- }
832
- // Fall back to handoffJson
833
- if (typeof session.handoffJson === 'string') {
834
- try {
835
- const handoff = JSON.parse(session.handoffJson);
836
- return { success: true, data: { handoff, fallback: true } };
837
- }
838
- catch {
839
- // No data available
840
- }
841
- }
842
- return { success: true, data: null };
843
- }
844
- catch (err) {
845
- return cleoErrorToEngineError(err, 'E_INTERNAL', 'Failed to show debrief');
846
- }
847
- }
848
- /**
849
- * Show the session chain for a given session.
850
- * Returns ordered list of sessions linked via previousSessionId/nextSessionId.
851
- * @epic T4959
852
- */
853
- export async function sessionChainShow(projectRoot, sessionId) {
854
- try {
855
- const accessor = await getAccessor(projectRoot);
856
- const sessions = await accessor.loadSessions();
857
- const sessionMap = new Map(sessions.map((s) => [s.id, s]));
858
- const target = sessionMap.get(sessionId);
859
- if (!target) {
860
- return engineError('E_NOT_FOUND', `Session '${sessionId}' not found`);
861
- }
862
- // Walk backward to chain start
863
- const chain = [sessionId];
864
- const visited = new Set([sessionId]);
865
- let current = target.previousSessionId;
866
- while (current && !visited.has(current)) {
867
- chain.unshift(current);
868
- visited.add(current);
869
- const s = sessionMap.get(current);
870
- current = s?.previousSessionId ?? undefined;
871
- }
872
- // Walk forward from target
873
- current = target.nextSessionId;
874
- while (current && !visited.has(current)) {
875
- chain.push(current);
876
- visited.add(current);
877
- const s = sessionMap.get(current);
878
- current = s?.nextSessionId ?? undefined;
879
- }
880
- const result = chain.map((id, idx) => {
881
- const s = sessionMap.get(id);
882
- return {
883
- id,
884
- status: s?.status ?? 'unknown',
885
- startedAt: s?.startedAt ?? '',
886
- endedAt: s?.endedAt ?? null,
887
- agentIdentifier: s?.agentIdentifier ?? null,
888
- position: idx + 1,
889
- };
890
- });
891
- return { success: true, data: result };
892
- }
893
- catch (err) {
894
- return cleoErrorToEngineError(err, 'E_INTERNAL', 'Failed to show session chain');
895
- }
896
- }
897
- /**
898
- * Inject context protocol content.
899
- * @task T5673
900
- */
901
- export function sessionContextInject(protocolType, params, projectRoot) {
902
- try {
903
- const result = injectContext(protocolType, params, projectRoot);
904
- return { success: true, data: result };
905
- }
906
- catch (err) {
907
- return cleoErrorToEngineError(err, 'E_INTERNAL', 'Failed to inject context');
908
- }
909
- }
910
- //# sourceMappingURL=session-engine.js.map