@cleocode/core 2026.3.74 → 2026.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/README.md +1 -1
  2. package/dist/agents/agent-schema.d.ts.map +1 -1
  3. package/dist/agents/retry.js +26 -21
  4. package/dist/agents/retry.js.map +1 -1
  5. package/dist/cant/approval.d.ts +110 -0
  6. package/dist/cant/approval.d.ts.map +1 -0
  7. package/dist/cant/approval.js +185 -0
  8. package/dist/cant/approval.js.map +1 -0
  9. package/dist/cant/context-builder.d.ts +79 -0
  10. package/dist/cant/context-builder.d.ts.map +1 -0
  11. package/dist/cant/context-builder.js +117 -0
  12. package/dist/cant/context-builder.js.map +1 -0
  13. package/dist/cant/discretion.d.ts +95 -0
  14. package/dist/cant/discretion.d.ts.map +1 -0
  15. package/dist/cant/discretion.js +116 -0
  16. package/dist/cant/discretion.js.map +1 -0
  17. package/dist/cant/index.d.ts +25 -0
  18. package/dist/cant/index.d.ts.map +1 -0
  19. package/dist/cant/index.js +23 -0
  20. package/dist/cant/index.js.map +1 -0
  21. package/dist/cant/parallel-runner.d.ts +38 -0
  22. package/dist/cant/parallel-runner.d.ts.map +1 -0
  23. package/dist/cant/parallel-runner.js +173 -0
  24. package/dist/cant/parallel-runner.js.map +1 -0
  25. package/dist/cant/types.d.ts +127 -0
  26. package/dist/cant/types.d.ts.map +1 -0
  27. package/dist/cant/types.js +11 -0
  28. package/dist/cant/types.js.map +1 -0
  29. package/dist/cant/workflow-executor.d.ts +105 -0
  30. package/dist/cant/workflow-executor.d.ts.map +1 -0
  31. package/dist/cant/workflow-executor.js +440 -0
  32. package/dist/cant/workflow-executor.js.map +1 -0
  33. package/dist/cleo.js +21 -1
  34. package/dist/cleo.js.map +1 -1
  35. package/dist/code/index.d.ts +10 -0
  36. package/dist/code/index.d.ts.map +1 -0
  37. package/dist/code/outline.d.ts +51 -0
  38. package/dist/code/outline.d.ts.map +1 -0
  39. package/dist/code/parser.d.ts +30 -0
  40. package/dist/code/parser.d.ts.map +1 -0
  41. package/dist/code/search.d.ts +42 -0
  42. package/dist/code/search.d.ts.map +1 -0
  43. package/dist/code/unfold.d.ts +44 -0
  44. package/dist/code/unfold.d.ts.map +1 -0
  45. package/dist/conduit/conduit-client.d.ts +35 -0
  46. package/dist/conduit/conduit-client.d.ts.map +1 -0
  47. package/dist/conduit/conduit-client.js +94 -0
  48. package/dist/conduit/conduit-client.js.map +1 -0
  49. package/dist/conduit/factory.d.ts +15 -0
  50. package/dist/conduit/factory.d.ts.map +1 -0
  51. package/dist/conduit/factory.js +35 -0
  52. package/dist/conduit/factory.js.map +1 -0
  53. package/dist/conduit/http-transport.d.ts +44 -0
  54. package/dist/conduit/http-transport.d.ts.map +1 -0
  55. package/dist/conduit/http-transport.js +165 -0
  56. package/dist/conduit/http-transport.js.map +1 -0
  57. package/dist/conduit/index.d.ts +15 -0
  58. package/dist/conduit/index.d.ts.map +1 -0
  59. package/dist/conduit/index.js +12 -0
  60. package/dist/conduit/index.js.map +1 -0
  61. package/dist/conduit/local-transport.d.ts +91 -0
  62. package/dist/conduit/local-transport.d.ts.map +1 -0
  63. package/dist/conduit/sse-transport.d.ts +68 -0
  64. package/dist/conduit/sse-transport.d.ts.map +1 -0
  65. package/dist/config.js +4 -3
  66. package/dist/config.js.map +1 -1
  67. package/dist/crypto/credentials.d.ts +40 -0
  68. package/dist/crypto/credentials.d.ts.map +1 -0
  69. package/dist/crypto/credentials.js +144 -0
  70. package/dist/crypto/credentials.js.map +1 -0
  71. package/dist/engine-result.d.ts +1 -1
  72. package/dist/engine-result.d.ts.map +1 -1
  73. package/dist/error-catalog.d.ts +1 -1
  74. package/dist/error-catalog.d.ts.map +1 -1
  75. package/dist/error-registry.d.ts +1 -1
  76. package/dist/error-registry.d.ts.map +1 -1
  77. package/dist/errors.d.ts +1 -1
  78. package/dist/errors.d.ts.map +1 -1
  79. package/dist/hooks/handlers/agent-hooks.d.ts.map +1 -1
  80. package/dist/hooks/handlers/agent-hooks.js +106 -0
  81. package/dist/hooks/handlers/agent-hooks.js.map +1 -0
  82. package/dist/hooks/handlers/context-hooks.d.ts.map +1 -1
  83. package/dist/hooks/handlers/context-hooks.js +111 -0
  84. package/dist/hooks/handlers/context-hooks.js.map +1 -0
  85. package/dist/hooks/handlers/error-hooks.d.ts +14 -5
  86. package/dist/hooks/handlers/error-hooks.d.ts.map +1 -1
  87. package/dist/hooks/handlers/error-hooks.js +15 -6
  88. package/dist/hooks/handlers/error-hooks.js.map +1 -1
  89. package/dist/hooks/handlers/file-hooks.d.ts.map +1 -1
  90. package/dist/hooks/handlers/file-hooks.js +35 -11
  91. package/dist/hooks/handlers/file-hooks.js.map +1 -1
  92. package/dist/hooks/handlers/handler-helpers.d.ts +41 -0
  93. package/dist/hooks/handlers/handler-helpers.d.ts.map +1 -0
  94. package/dist/hooks/handlers/handler-helpers.js +61 -0
  95. package/dist/hooks/handlers/handler-helpers.js.map +1 -0
  96. package/dist/hooks/handlers/index.js +10 -1
  97. package/dist/hooks/handlers/index.js.map +1 -1
  98. package/dist/hooks/handlers/mcp-hooks.d.ts.map +1 -1
  99. package/dist/hooks/handlers/mcp-hooks.js +88 -21
  100. package/dist/hooks/handlers/mcp-hooks.js.map +1 -1
  101. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  102. package/dist/hooks/handlers/session-hooks.js +5 -10
  103. package/dist/hooks/handlers/session-hooks.js.map +1 -1
  104. package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
  105. package/dist/hooks/handlers/task-hooks.js +5 -10
  106. package/dist/hooks/handlers/task-hooks.js.map +1 -1
  107. package/dist/hooks/handlers/work-capture-hooks.d.ts.map +1 -1
  108. package/dist/hooks/handlers/work-capture-hooks.js +165 -0
  109. package/dist/hooks/handlers/work-capture-hooks.js.map +1 -0
  110. package/dist/hooks/payload-schemas.js +83 -26
  111. package/dist/hooks/payload-schemas.js.map +1 -1
  112. package/dist/hooks/provider-hooks.js +37 -5
  113. package/dist/hooks/provider-hooks.js.map +1 -1
  114. package/dist/hooks/registry.js +76 -23
  115. package/dist/hooks/registry.js.map +1 -1
  116. package/dist/hooks/types.js +17 -13
  117. package/dist/hooks/types.js.map +1 -1
  118. package/dist/index.d.ts +4 -1
  119. package/dist/index.d.ts.map +1 -1
  120. package/dist/index.js +6452 -3371
  121. package/dist/index.js.map +4 -4
  122. package/dist/init.d.ts.map +1 -1
  123. package/dist/init.js +12 -0
  124. package/dist/init.js.map +1 -1
  125. package/dist/internal.d.ts +11 -1
  126. package/dist/internal.d.ts.map +1 -1
  127. package/dist/internal.js +10 -0
  128. package/dist/internal.js.map +1 -1
  129. package/dist/lib/index.d.ts +1 -0
  130. package/dist/lib/index.d.ts.map +1 -1
  131. package/dist/lib/tree-sitter-languages.d.ts +29 -0
  132. package/dist/lib/tree-sitter-languages.d.ts.map +1 -0
  133. package/dist/memory/brain-links.d.ts.map +1 -1
  134. package/dist/memory/brain-maintenance.d.ts +13 -0
  135. package/dist/memory/brain-maintenance.d.ts.map +1 -1
  136. package/dist/memory/brain-retrieval.d.ts +3 -0
  137. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  138. package/dist/memory/brain-retrieval.js +5 -0
  139. package/dist/memory/brain-retrieval.js.map +1 -1
  140. package/dist/memory/decisions.d.ts.map +1 -1
  141. package/dist/mvi-helpers.d.ts +52 -0
  142. package/dist/mvi-helpers.d.ts.map +1 -0
  143. package/dist/mvi-helpers.js +74 -0
  144. package/dist/mvi-helpers.js.map +1 -0
  145. package/dist/nexus/index.js +2 -0
  146. package/dist/nexus/index.js.map +1 -1
  147. package/dist/nexus/workspace.d.ts.map +1 -1
  148. package/dist/nexus/workspace.js +355 -0
  149. package/dist/nexus/workspace.js.map +1 -0
  150. package/dist/orchestration/hierarchy.d.ts +32 -0
  151. package/dist/orchestration/hierarchy.d.ts.map +1 -0
  152. package/dist/orchestration/index.d.ts +1 -0
  153. package/dist/orchestration/index.d.ts.map +1 -1
  154. package/dist/output.d.ts +2 -2
  155. package/dist/output.d.ts.map +1 -1
  156. package/dist/output.js +40 -8
  157. package/dist/output.js.map +1 -1
  158. package/dist/pagination.d.ts +1 -1
  159. package/dist/pagination.d.ts.map +1 -1
  160. package/dist/sessions/find.d.ts +3 -0
  161. package/dist/sessions/find.d.ts.map +1 -1
  162. package/dist/sessions/find.js +3 -1
  163. package/dist/sessions/find.js.map +1 -1
  164. package/dist/sessions/index.d.ts.map +1 -1
  165. package/dist/sessions/index.js +11 -4
  166. package/dist/sessions/index.js.map +1 -1
  167. package/dist/sessions/snapshot.js +213 -0
  168. package/dist/sessions/snapshot.js.map +1 -0
  169. package/dist/store/agent-registry-accessor.d.ts +31 -0
  170. package/dist/store/agent-registry-accessor.d.ts.map +1 -0
  171. package/dist/store/agent-registry-accessor.js +169 -0
  172. package/dist/store/agent-registry-accessor.js.map +1 -0
  173. package/dist/store/converters.d.ts.map +1 -1
  174. package/dist/store/converters.js +2 -0
  175. package/dist/store/converters.js.map +1 -1
  176. package/dist/store/cross-db-cleanup.d.ts +34 -0
  177. package/dist/store/cross-db-cleanup.d.ts.map +1 -1
  178. package/dist/store/db-helpers.d.ts.map +1 -1
  179. package/dist/store/db-helpers.js +1 -0
  180. package/dist/store/db-helpers.js.map +1 -1
  181. package/dist/store/json.js +2 -2
  182. package/dist/store/safety-data-accessor.d.ts +7 -0
  183. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  184. package/dist/store/safety-data-accessor.js +14 -0
  185. package/dist/store/safety-data-accessor.js.map +1 -1
  186. package/dist/store/signaldock-sqlite.d.ts +48 -0
  187. package/dist/store/signaldock-sqlite.d.ts.map +1 -0
  188. package/dist/store/signaldock-sqlite.js +178 -0
  189. package/dist/store/signaldock-sqlite.js.map +1 -0
  190. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  191. package/dist/store/sqlite-data-accessor.js +50 -0
  192. package/dist/store/sqlite-data-accessor.js.map +1 -1
  193. package/dist/store/sqlite.d.ts.map +1 -1
  194. package/dist/store/sqlite.js +30 -1
  195. package/dist/store/sqlite.js.map +1 -1
  196. package/dist/store/task-store.d.ts.map +1 -1
  197. package/dist/store/task-store.js +2 -0
  198. package/dist/store/task-store.js.map +1 -1
  199. package/dist/store/tasks-schema.d.ts +16 -0
  200. package/dist/store/tasks-schema.d.ts.map +1 -1
  201. package/dist/store/tasks-schema.js +33 -0
  202. package/dist/store/tasks-schema.js.map +1 -1
  203. package/dist/store/validation-schemas.d.ts +32 -0
  204. package/dist/store/validation-schemas.d.ts.map +1 -1
  205. package/dist/system/health.d.ts +1 -1
  206. package/dist/system/health.d.ts.map +1 -1
  207. package/dist/system/health.js +35 -0
  208. package/dist/system/health.js.map +1 -1
  209. package/dist/task-work/index.d.ts.map +1 -1
  210. package/dist/task-work/index.js +8 -4
  211. package/dist/task-work/index.js.map +1 -1
  212. package/dist/tasks/complete.js +5 -2
  213. package/dist/tasks/complete.js.map +1 -1
  214. package/dist/tasks/find.d.ts +3 -0
  215. package/dist/tasks/find.d.ts.map +1 -1
  216. package/dist/tasks/find.js +7 -1
  217. package/dist/tasks/find.js.map +1 -1
  218. package/dist/tasks/list.d.ts +5 -2
  219. package/dist/tasks/list.d.ts.map +1 -1
  220. package/dist/tasks/list.js +9 -2
  221. package/dist/tasks/list.js.map +1 -1
  222. package/dist/tasks/show.d.ts +3 -0
  223. package/dist/tasks/show.d.ts.map +1 -1
  224. package/dist/tasks/show.js +2 -0
  225. package/dist/tasks/show.js.map +1 -1
  226. package/dist/upgrade.d.ts.map +1 -1
  227. package/dist/upgrade.js +15 -0
  228. package/dist/upgrade.js.map +1 -1
  229. package/migrations/drizzle-tasks/20260324000000_assignee-column/migration.sql +6 -0
  230. package/migrations/drizzle-tasks/20260324000000_assignee-column/snapshot.json +9 -0
  231. package/migrations/drizzle-tasks/20260327000000_agent-credentials/migration.sql +23 -0
  232. package/package.json +17 -7
  233. package/src/__tests__/cli-parity.test.js +11 -1
  234. package/src/__tests__/cli-parity.test.js.map +1 -1
  235. package/src/__tests__/cli-parity.test.ts +17 -1
  236. package/src/__tests__/human-output.test.js +11 -1
  237. package/src/__tests__/human-output.test.js.map +1 -1
  238. package/src/__tests__/human-output.test.ts +18 -1
  239. package/src/__tests__/injection-chain.test.js +3 -2
  240. package/src/__tests__/injection-chain.test.js.map +1 -1
  241. package/src/__tests__/injection-mvi-tiers.test.d.ts +2 -2
  242. package/src/__tests__/injection-mvi-tiers.test.js +15 -15
  243. package/src/__tests__/injection-mvi-tiers.test.js.map +1 -1
  244. package/src/__tests__/lafs-conformance.test.d.ts +1 -1
  245. package/src/__tests__/lafs-conformance.test.js +2 -2
  246. package/src/__tests__/sharing.test.js +19 -0
  247. package/src/__tests__/sharing.test.js.map +1 -1
  248. package/src/agents/__tests__/agent-registry.test.d.ts +12 -0
  249. package/src/agents/__tests__/agent-registry.test.d.ts.map +1 -0
  250. package/src/agents/__tests__/agent-registry.test.js +262 -0
  251. package/src/agents/__tests__/agent-registry.test.js.map +1 -0
  252. package/src/agents/__tests__/execution-learning.test.d.ts +14 -0
  253. package/src/agents/__tests__/execution-learning.test.d.ts.map +1 -0
  254. package/src/agents/__tests__/execution-learning.test.js +533 -0
  255. package/src/agents/__tests__/execution-learning.test.js.map +1 -0
  256. package/src/agents/__tests__/health-monitor.test.d.ts +10 -0
  257. package/src/agents/__tests__/health-monitor.test.d.ts.map +1 -0
  258. package/src/agents/__tests__/health-monitor.test.js +259 -0
  259. package/src/agents/__tests__/health-monitor.test.js.map +1 -0
  260. package/src/agents/__tests__/registry.test.js +27 -2
  261. package/src/agents/__tests__/registry.test.js.map +1 -1
  262. package/src/agents/agent-schema.ts +2 -5
  263. package/src/cant/__tests__/cant-agent-parse.test.ts +94 -0
  264. package/src/cant/approval.ts +218 -0
  265. package/src/cant/context-builder.ts +135 -0
  266. package/src/cant/discretion.ts +149 -0
  267. package/src/cant/index.ts +58 -0
  268. package/src/cant/parallel-runner.ts +205 -0
  269. package/src/cant/types.ts +158 -0
  270. package/src/cant/workflow-executor.ts +618 -0
  271. package/src/code/index.ts +10 -0
  272. package/src/code/outline.ts +214 -0
  273. package/src/code/parser.ts +299 -0
  274. package/src/code/search.ts +173 -0
  275. package/src/code/unfold.ts +204 -0
  276. package/src/conduit/__tests__/dual-api-e2e.test.ts +212 -0
  277. package/src/conduit/__tests__/local-credential-flow.test.ts +230 -0
  278. package/src/conduit/__tests__/local-transport.test.ts +320 -0
  279. package/src/conduit/__tests__/sse-transport.test.ts +344 -0
  280. package/src/conduit/conduit-client.ts +123 -0
  281. package/src/conduit/factory.ts +49 -0
  282. package/src/conduit/http-transport.ts +201 -0
  283. package/src/conduit/index.ts +15 -0
  284. package/src/conduit/local-transport.ts +309 -0
  285. package/src/conduit/sse-transport.ts +382 -0
  286. package/src/crypto/credentials.ts +166 -0
  287. package/src/engine-result.ts +1 -1
  288. package/src/error-catalog.ts +1 -1
  289. package/src/error-registry.ts +1 -1
  290. package/src/errors.ts +1 -1
  291. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts +13 -0
  292. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +1 -0
  293. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +501 -0
  294. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +1 -0
  295. package/src/hooks/handlers/agent-hooks.ts +1 -30
  296. package/src/hooks/handlers/context-hooks.ts +1 -30
  297. package/src/hooks/handlers/error-hooks.ts +14 -5
  298. package/src/hooks/handlers/file-hooks.ts +1 -6
  299. package/src/hooks/handlers/handler-helpers.ts +62 -0
  300. package/src/hooks/handlers/mcp-hooks.ts +2 -14
  301. package/src/hooks/handlers/session-hooks.ts +1 -6
  302. package/src/hooks/handlers/task-hooks.ts +1 -6
  303. package/src/hooks/handlers/work-capture-hooks.ts +1 -10
  304. package/src/index.ts +12 -1
  305. package/src/init.ts +12 -0
  306. package/src/intelligence/__tests__/adaptive-validation.test.d.ts +11 -0
  307. package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +1 -0
  308. package/src/intelligence/__tests__/adaptive-validation.test.js +517 -0
  309. package/src/intelligence/__tests__/adaptive-validation.test.js.map +1 -0
  310. package/src/intelligence/__tests__/impact.test.d.ts +1 -0
  311. package/src/intelligence/__tests__/impact.test.d.ts.map +1 -1
  312. package/src/intelligence/__tests__/impact.test.js +132 -1
  313. package/src/intelligence/__tests__/impact.test.js.map +1 -1
  314. package/src/internal.ts +22 -0
  315. package/src/lib/__tests__/retry.test.d.ts +7 -0
  316. package/src/lib/__tests__/retry.test.d.ts.map +1 -0
  317. package/src/lib/__tests__/retry.test.js +225 -0
  318. package/src/lib/__tests__/retry.test.js.map +1 -0
  319. package/src/lib/index.ts +8 -0
  320. package/src/lib/tree-sitter-languages.ts +88 -0
  321. package/src/lifecycle/__tests__/chain-store.test.js +6 -0
  322. package/src/lifecycle/__tests__/chain-store.test.js.map +1 -1
  323. package/src/lifecycle/__tests__/tessera-engine.test.js +52 -0
  324. package/src/lifecycle/__tests__/tessera-engine.test.js.map +1 -1
  325. package/src/memory/__tests__/brain-automation.test.d.ts +11 -0
  326. package/src/memory/__tests__/brain-automation.test.d.ts.map +1 -0
  327. package/src/memory/__tests__/brain-automation.test.js +730 -0
  328. package/src/memory/__tests__/brain-automation.test.js.map +1 -0
  329. package/src/memory/__tests__/brain-links.test.ts +14 -0
  330. package/src/memory/__tests__/brain-retrieval.test.ts +10 -0
  331. package/src/memory/__tests__/session-memory.test.ts +17 -0
  332. package/src/memory/brain-links.ts +17 -0
  333. package/src/memory/brain-maintenance.ts +33 -1
  334. package/src/memory/brain-retrieval.ts +27 -2
  335. package/src/memory/decisions.ts +18 -2
  336. package/src/mvi-helpers.ts +81 -0
  337. package/src/nexus/workspace.ts +19 -7
  338. package/src/orchestration/hierarchy.ts +202 -0
  339. package/src/orchestration/index.ts +1 -0
  340. package/src/output.ts +43 -10
  341. package/src/pagination.ts +1 -1
  342. package/src/sessions/__tests__/session-edge-cases.test.js +20 -1
  343. package/src/sessions/__tests__/session-edge-cases.test.js.map +1 -1
  344. package/src/sessions/__tests__/session-find.test.js +1 -1
  345. package/src/sessions/__tests__/session-find.test.js.map +1 -1
  346. package/src/sessions/__tests__/session-find.test.ts +1 -1
  347. package/src/sessions/find.ts +6 -1
  348. package/src/sessions/index.ts +9 -0
  349. package/src/store/__tests__/migration-safety.test.js +3 -0
  350. package/src/store/__tests__/migration-safety.test.js.map +1 -1
  351. package/src/store/__tests__/session-store.test.js +128 -1
  352. package/src/store/__tests__/session-store.test.js.map +1 -1
  353. package/src/store/__tests__/task-store.test.js +18 -1
  354. package/src/store/__tests__/task-store.test.js.map +1 -1
  355. package/src/store/__tests__/test-db-helper.d.ts.map +1 -1
  356. package/src/store/__tests__/test-db-helper.js +12 -0
  357. package/src/store/__tests__/test-db-helper.js.map +1 -1
  358. package/src/store/agent-registry-accessor.ts +375 -0
  359. package/src/store/converters.ts +2 -0
  360. package/src/store/cross-db-cleanup.ts +175 -1
  361. package/src/store/db-helpers.ts +1 -0
  362. package/src/store/safety-data-accessor.ts +23 -0
  363. package/src/store/signaldock-sqlite.ts +429 -0
  364. package/src/store/sqlite-data-accessor.ts +72 -0
  365. package/src/store/sqlite.ts +4 -1
  366. package/src/store/task-store.ts +9 -1
  367. package/src/store/tasks-schema.ts +7 -0
  368. package/src/system/__tests__/health.test.ts +2 -2
  369. package/src/system/health.ts +54 -2
  370. package/src/task-work/index.ts +5 -0
  371. package/src/tasks/__tests__/add.test.js +19 -1
  372. package/src/tasks/__tests__/add.test.js.map +1 -1
  373. package/src/tasks/__tests__/assignee.test.d.ts +14 -0
  374. package/src/tasks/__tests__/assignee.test.d.ts.map +1 -0
  375. package/src/tasks/__tests__/assignee.test.js +125 -0
  376. package/src/tasks/__tests__/assignee.test.js.map +1 -0
  377. package/src/tasks/__tests__/assignee.test.ts +162 -0
  378. package/src/tasks/__tests__/complete-unblocks.test.js +13 -1
  379. package/src/tasks/__tests__/complete-unblocks.test.js.map +1 -1
  380. package/src/tasks/__tests__/complete.test.js +28 -7
  381. package/src/tasks/__tests__/complete.test.js.map +1 -1
  382. package/src/tasks/__tests__/epic-enforcement.test.d.ts +15 -0
  383. package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +1 -0
  384. package/src/tasks/__tests__/epic-enforcement.test.js +669 -0
  385. package/src/tasks/__tests__/epic-enforcement.test.js.map +1 -0
  386. package/src/tasks/__tests__/hierarchy-policy.test.js +5 -0
  387. package/src/tasks/__tests__/hierarchy-policy.test.js.map +1 -1
  388. package/src/tasks/__tests__/minimal-test.test.d.ts +2 -0
  389. package/src/tasks/__tests__/minimal-test.test.d.ts.map +1 -0
  390. package/src/tasks/__tests__/minimal-test.test.js +25 -0
  391. package/src/tasks/__tests__/minimal-test.test.js.map +1 -0
  392. package/src/tasks/__tests__/pipeline-stage.test.d.ts +14 -0
  393. package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +1 -0
  394. package/src/tasks/__tests__/pipeline-stage.test.js +277 -0
  395. package/src/tasks/__tests__/pipeline-stage.test.js.map +1 -0
  396. package/src/tasks/__tests__/update.test.js +43 -6
  397. package/src/tasks/__tests__/update.test.js.map +1 -1
  398. package/src/tasks/find.ts +11 -1
  399. package/src/tasks/list.ts +14 -3
  400. package/src/tasks/show.ts +6 -0
  401. package/src/upgrade.ts +16 -0
  402. package/dist/tasks/reparent.d.ts +0 -38
  403. package/dist/tasks/reparent.d.ts.map +0 -1
  404. package/dist/ui/injection-legacy.d.ts +0 -26
  405. package/dist/ui/injection-legacy.d.ts.map +0 -1
  406. package/dist/ui/injection-legacy.js +0 -42
  407. package/dist/ui/injection-legacy.js.map +0 -1
  408. package/src/signaldock/__tests__/claude-code-transport.test.d.ts +0 -7
  409. package/src/signaldock/__tests__/claude-code-transport.test.d.ts.map +0 -1
  410. package/src/signaldock/__tests__/claude-code-transport.test.js +0 -147
  411. package/src/signaldock/__tests__/claude-code-transport.test.js.map +0 -1
  412. package/src/signaldock/__tests__/claude-code-transport.test.ts +0 -180
  413. package/src/signaldock/__tests__/factory.test.d.ts +0 -7
  414. package/src/signaldock/__tests__/factory.test.d.ts.map +0 -1
  415. package/src/signaldock/__tests__/factory.test.js +0 -55
  416. package/src/signaldock/__tests__/factory.test.js.map +0 -1
  417. package/src/signaldock/__tests__/factory.test.ts +0 -61
  418. package/src/signaldock/__tests__/signaldock-transport.test.d.ts +0 -9
  419. package/src/signaldock/__tests__/signaldock-transport.test.d.ts.map +0 -1
  420. package/src/signaldock/__tests__/signaldock-transport.test.js +0 -321
  421. package/src/signaldock/__tests__/signaldock-transport.test.js.map +0 -1
  422. package/src/signaldock/__tests__/signaldock-transport.test.ts +0 -421
  423. package/src/signaldock/claude-code-transport.ts +0 -137
  424. package/src/signaldock/factory.ts +0 -39
  425. package/src/signaldock/index.ts +0 -28
  426. package/src/signaldock/signaldock-transport.ts +0 -194
  427. package/src/signaldock/transport.ts +0 -78
  428. package/src/signaldock/types.ts +0 -100
@@ -0,0 +1,105 @@
1
+ /**
2
+ * CANT workflow executor — orchestrates workflow statement execution.
3
+ *
4
+ * Walks the statement list of a `WorkflowDef` AST node, dispatching to
5
+ * appropriate handlers for each statement type: sessions, pipelines,
6
+ * parallel blocks, conditionals, loops, try/catch, approval gates,
7
+ * bindings, directives, and output statements.
8
+ *
9
+ * Pipelines are delegated to the Rust executor via napi-rs bridge.
10
+ * Sessions invoke the CLEO session machinery. Discretion conditions
11
+ * are evaluated by a pluggable evaluator.
12
+ *
13
+ * @see docs/specs/CANT-DSL-SPEC.md Section 7.2 (Workflow Execution)
14
+ */
15
+ import { ApprovalManager } from './approval.js';
16
+ import type { DiscretionEvaluator } from './discretion.js';
17
+ import type { ExecutionResult } from './types.js';
18
+ /** Configuration options for the workflow executor. */
19
+ export interface WorkflowExecutorConfig {
20
+ /** Maximum number of discretion evaluations per workflow run (default: 100). */
21
+ maxDiscretionEvaluations?: number;
22
+ /** The session ID for this execution. */
23
+ sessionId?: string;
24
+ /** The agent ID performing the execution. */
25
+ agentId?: string;
26
+ }
27
+ /** Loose AST statement shape — mirrors cant-core Statement variants. */
28
+ interface AstStatement {
29
+ type?: string;
30
+ [key: string]: unknown;
31
+ }
32
+ /** A workflow definition with a name, params, and body statements. */
33
+ interface WorkflowDef {
34
+ name: {
35
+ value: string;
36
+ };
37
+ params: Array<{
38
+ name: {
39
+ value: string;
40
+ };
41
+ }>;
42
+ body: AstStatement[];
43
+ }
44
+ /**
45
+ * Executes CANT workflow definitions.
46
+ *
47
+ * The executor processes each statement in the workflow body sequentially,
48
+ * maintaining an execution scope for variable bindings and dispatching to
49
+ * the appropriate handler based on statement type.
50
+ */
51
+ export declare class WorkflowExecutor {
52
+ private readonly discretionEvaluator;
53
+ private readonly approvalManager;
54
+ private readonly config;
55
+ /**
56
+ * Creates a new workflow executor.
57
+ *
58
+ * @param discretionEvaluator - Custom discretion evaluator (default: stub that returns true).
59
+ * @param approvalManager - Approval token manager (default: new instance).
60
+ * @param config - Executor configuration.
61
+ */
62
+ constructor(discretionEvaluator?: DiscretionEvaluator, approvalManager?: ApprovalManager, config?: WorkflowExecutorConfig);
63
+ /**
64
+ * Executes a workflow definition with the given parameter values.
65
+ *
66
+ * @param workflow - The parsed workflow AST node.
67
+ * @param context - Parameter values and initial context.
68
+ * @returns Execution result with outputs and step results.
69
+ */
70
+ execute(workflow: WorkflowDef, context?: Record<string, unknown>): Promise<ExecutionResult>;
71
+ /**
72
+ * Dispatches a single statement to the appropriate handler.
73
+ */
74
+ private executeStatement;
75
+ /** Execute a let binding statement. */
76
+ private executeBinding;
77
+ /** Execute an output binding statement. */
78
+ private executeOutput;
79
+ /** Execute an if/elif/else conditional. */
80
+ private executeConditional;
81
+ /** Execute a parallel block with arms. */
82
+ private executeParallelBlock;
83
+ /** Execute a session invocation (stub — real session dispatch is a separate integration). */
84
+ private executeSession;
85
+ /** Execute a pipeline definition (stub — real pipeline calls Rust via napi-rs). */
86
+ private executePipeline;
87
+ /** Execute an approval gate. */
88
+ private executeApprovalGate;
89
+ /** Execute a repeat N loop. */
90
+ private executeRepeat;
91
+ /** Execute a for-in loop. */
92
+ private executeForLoop;
93
+ /** Execute a loop-until block. */
94
+ private executeLoopUntil;
95
+ /** Execute a try/catch/finally block. */
96
+ private executeTryCatch;
97
+ /** Execute a CANT directive statement. */
98
+ private executeDirective;
99
+ /**
100
+ * Evaluate a condition (regular expression or discretion).
101
+ */
102
+ private evaluateCondition;
103
+ }
104
+ export {};
105
+ //# sourceMappingURL=workflow-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-executor.d.ts","sourceRoot":"","sources":["../../src/cant/workflow-executor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,OAAO,KAAK,EAEV,eAAe,EAIhB,MAAM,YAAY,CAAC;AAMpB,uDAAuD;AACvD,MAAM,WAAW,sBAAsB;IACrC,gFAAgF;IAChF,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAUD,wEAAwE;AACxE,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,sEAAsE;AACtE,UAAU,WAAW;IACnB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxB,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE;YAAE,KAAK,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC,CAAC;IAC3C,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAMD;;;;;;GAMG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyB;IAEhD;;;;;;OAMG;gBAED,mBAAmB,GAAE,mBAAsD,EAC3E,eAAe,GAAE,eAAuC,EACxD,MAAM,GAAE,sBAA2B;IAQrC;;;;;;OAMG;IACG,OAAO,CACX,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACpC,OAAO,CAAC,eAAe,CAAC;IAkD3B;;OAEG;YACW,gBAAgB;IA4C9B,uCAAuC;YACzB,cAAc;IAU5B,2CAA2C;YAC7B,aAAa;IAY3B,2CAA2C;YAC7B,kBAAkB;IA8ChC,0CAA0C;YAC5B,oBAAoB;IAuClC,6FAA6F;YAC/E,cAAc;IAkB5B,mFAAmF;YACrE,eAAe;IAgB7B,gCAAgC;YAClB,mBAAmB;IAiCjC,+BAA+B;YACjB,aAAa;IAkB3B,6BAA6B;YACf,cAAc;IA+B5B,kCAAkC;YACpB,gBAAgB;IAgC9B,yCAAyC;YAC3B,eAAe;IA0C7B,0CAA0C;YAC5B,gBAAgB;IAwB9B;;OAEG;YACW,iBAAiB;CAwBhC"}
@@ -0,0 +1,440 @@
1
+ /**
2
+ * CANT workflow executor — orchestrates workflow statement execution.
3
+ *
4
+ * Walks the statement list of a `WorkflowDef` AST node, dispatching to
5
+ * appropriate handlers for each statement type: sessions, pipelines,
6
+ * parallel blocks, conditionals, loops, try/catch, approval gates,
7
+ * bindings, directives, and output statements.
8
+ *
9
+ * Pipelines are delegated to the Rust executor via napi-rs bridge.
10
+ * Sessions invoke the CLEO session machinery. Discretion conditions
11
+ * are evaluated by a pluggable evaluator.
12
+ *
13
+ * @see docs/specs/CANT-DSL-SPEC.md Section 7.2 (Workflow Execution)
14
+ */
15
+ import { ApprovalManager } from './approval.js';
16
+ import { createChildScope, createScope, flattenScope, setVariable } from './context-builder.js';
17
+ import { DefaultDiscretionEvaluator, RateLimitedDiscretionEvaluator } from './discretion.js';
18
+ import { executeParallel } from './parallel-runner.js';
19
+ // ---------------------------------------------------------------------------
20
+ // Workflow Executor
21
+ // ---------------------------------------------------------------------------
22
+ /**
23
+ * Executes CANT workflow definitions.
24
+ *
25
+ * The executor processes each statement in the workflow body sequentially,
26
+ * maintaining an execution scope for variable bindings and dispatching to
27
+ * the appropriate handler based on statement type.
28
+ */
29
+ export class WorkflowExecutor {
30
+ discretionEvaluator;
31
+ approvalManager;
32
+ config;
33
+ /**
34
+ * Creates a new workflow executor.
35
+ *
36
+ * @param discretionEvaluator - Custom discretion evaluator (default: stub that returns true).
37
+ * @param approvalManager - Approval token manager (default: new instance).
38
+ * @param config - Executor configuration.
39
+ */
40
+ constructor(discretionEvaluator = new DefaultDiscretionEvaluator(), approvalManager = new ApprovalManager(), config = {}) {
41
+ const maxEvals = config.maxDiscretionEvaluations ?? 100;
42
+ this.discretionEvaluator = new RateLimitedDiscretionEvaluator(discretionEvaluator, maxEvals);
43
+ this.approvalManager = approvalManager;
44
+ this.config = config;
45
+ }
46
+ /**
47
+ * Executes a workflow definition with the given parameter values.
48
+ *
49
+ * @param workflow - The parsed workflow AST node.
50
+ * @param context - Parameter values and initial context.
51
+ * @returns Execution result with outputs and step results.
52
+ */
53
+ async execute(workflow, context = {}) {
54
+ const start = Date.now();
55
+ const scope = createScope(context);
56
+ const steps = [];
57
+ const outputs = {};
58
+ // Bind workflow parameters to scope
59
+ for (const param of workflow.params) {
60
+ const value = context[param.name.value];
61
+ if (value !== undefined) {
62
+ setVariable(scope, param.name.value, value);
63
+ }
64
+ }
65
+ let success = true;
66
+ for (const statement of workflow.body) {
67
+ const stepStart = Date.now();
68
+ try {
69
+ const result = await this.executeStatement(statement, scope, outputs);
70
+ if (result) {
71
+ steps.push({ ...result, duration: Date.now() - stepStart });
72
+ if (!result.success) {
73
+ success = false;
74
+ break;
75
+ }
76
+ }
77
+ }
78
+ catch (err) {
79
+ const error = err instanceof Error ? err.message : String(err);
80
+ steps.push({
81
+ name: getStatementName(statement),
82
+ type: getStatementType(statement),
83
+ success: false,
84
+ error,
85
+ duration: Date.now() - stepStart,
86
+ });
87
+ success = false;
88
+ break;
89
+ }
90
+ }
91
+ return {
92
+ success,
93
+ outputs,
94
+ steps,
95
+ duration: Date.now() - start,
96
+ };
97
+ }
98
+ /**
99
+ * Dispatches a single statement to the appropriate handler.
100
+ */
101
+ async executeStatement(statement, scope, outputs) {
102
+ const stmtType = detectStatementType(statement);
103
+ switch (stmtType) {
104
+ case 'Binding':
105
+ return this.executeBinding(statement, scope);
106
+ case 'Output':
107
+ return this.executeOutput(statement, scope, outputs);
108
+ case 'Conditional':
109
+ return this.executeConditional(statement, scope, outputs);
110
+ case 'Parallel':
111
+ return this.executeParallelBlock(statement, scope, outputs);
112
+ case 'Session':
113
+ return this.executeSession(statement, scope);
114
+ case 'Pipeline':
115
+ return this.executePipeline(statement, scope);
116
+ case 'ApprovalGate':
117
+ return this.executeApprovalGate(statement, scope);
118
+ case 'Repeat':
119
+ return this.executeRepeat(statement, scope, outputs);
120
+ case 'ForLoop':
121
+ return this.executeForLoop(statement, scope, outputs);
122
+ case 'LoopUntil':
123
+ return this.executeLoopUntil(statement, scope, outputs);
124
+ case 'TryCatch':
125
+ return this.executeTryCatch(statement, scope, outputs);
126
+ case 'Directive':
127
+ return this.executeDirective(statement, scope);
128
+ case 'Comment':
129
+ return null; // Comments are no-ops
130
+ default:
131
+ return {
132
+ name: getStatementName(statement),
133
+ type: 'binding',
134
+ success: true,
135
+ duration: 0,
136
+ };
137
+ }
138
+ }
139
+ /** Execute a let binding statement. */
140
+ async executeBinding(statement, scope) {
141
+ const name = statement.name?.value ?? 'binding';
142
+ const value = statement.value;
143
+ setVariable(scope, name, value);
144
+ return { name, type: 'binding', success: true, output: value, duration: 0 };
145
+ }
146
+ /** Execute an output binding statement. */
147
+ async executeOutput(statement, scope, outputs) {
148
+ const name = statement.name?.value ?? 'output';
149
+ const value = statement.value;
150
+ outputs[name] = value;
151
+ setVariable(scope, name, value);
152
+ return { name, type: 'output', success: true, output: value, duration: 0 };
153
+ }
154
+ /** Execute an if/elif/else conditional. */
155
+ async executeConditional(statement, scope, outputs) {
156
+ const conditional = statement;
157
+ // Evaluate the if condition
158
+ const ifResult = await this.evaluateCondition(conditional.condition, scope);
159
+ if (ifResult) {
160
+ for (const stmt of conditional.then_body ?? []) {
161
+ await this.executeStatement(stmt, scope, outputs);
162
+ }
163
+ return { name: 'if', type: 'conditional', success: true, output: true, duration: 0 };
164
+ }
165
+ // Check elif branches
166
+ for (const elif of conditional.elif_branches ?? []) {
167
+ const elifResult = await this.evaluateCondition(elif.condition, scope);
168
+ if (elifResult) {
169
+ for (const stmt of elif.body) {
170
+ await this.executeStatement(stmt, scope, outputs);
171
+ }
172
+ return { name: 'elif', type: 'conditional', success: true, output: true, duration: 0 };
173
+ }
174
+ }
175
+ // Execute else branch
176
+ if (conditional.else_body) {
177
+ for (const stmt of conditional.else_body) {
178
+ await this.executeStatement(stmt, scope, outputs);
179
+ }
180
+ }
181
+ return { name: 'else', type: 'conditional', success: true, output: false, duration: 0 };
182
+ }
183
+ /** Execute a parallel block with arms. */
184
+ async executeParallelBlock(statement, scope, _outputs) {
185
+ const parallel = statement;
186
+ const strategy = parallel.modifier === 'Race' ? 'race' : parallel.modifier === 'Settle' ? 'settle' : 'all';
187
+ const arms = (parallel.arms ?? []).map((arm) => ({
188
+ name: arm.name,
189
+ execute: async () => {
190
+ const childScope = createChildScope(scope);
191
+ const armOutputs = {};
192
+ const result = await this.executeStatement(arm.body, childScope, armOutputs);
193
+ return result?.output;
194
+ },
195
+ }));
196
+ const result = await executeParallel(arms, strategy);
197
+ // Bind arm results to the parent scope
198
+ for (const [name, value] of Object.entries(result.results)) {
199
+ setVariable(scope, name, value);
200
+ }
201
+ return {
202
+ name: 'parallel',
203
+ type: 'parallel',
204
+ success: result.success,
205
+ output: result.results,
206
+ duration: 0,
207
+ };
208
+ }
209
+ /** Execute a session invocation (stub — real session dispatch is a separate integration). */
210
+ async executeSession(statement, _scope) {
211
+ const session = statement;
212
+ const targetName = session.target?.Prompt ?? session.target?.Agent ?? 'session';
213
+ // Stub: real session dispatch integrates with CLEO session machinery
214
+ return {
215
+ name: targetName,
216
+ type: 'session',
217
+ success: true,
218
+ output: { stub: true, target: targetName },
219
+ duration: 0,
220
+ };
221
+ }
222
+ /** Execute a pipeline definition (stub — real pipeline calls Rust via napi-rs). */
223
+ async executePipeline(statement, _scope) {
224
+ const pipeline = statement;
225
+ const name = pipeline.name?.value ?? 'pipeline';
226
+ // Stub: real implementation calls Rust pipeline executor via napi-rs bridge
227
+ return {
228
+ name,
229
+ type: 'pipeline',
230
+ success: true,
231
+ output: { stub: true },
232
+ duration: 0,
233
+ };
234
+ }
235
+ /** Execute an approval gate. */
236
+ async executeApprovalGate(statement, _scope) {
237
+ const gate = statement;
238
+ const message = gate.properties?.find((p) => p.key.value === 'message')?.value?.raw ?? 'Approval required';
239
+ const gateName = 'approval-gate';
240
+ const workflowHash = ApprovalManager.computeWorkflowHash(JSON.stringify(statement));
241
+ const token = this.approvalManager.generateToken(this.config.sessionId ?? 'unknown-session', 'workflow', gateName, message, workflowHash, this.config.agentId ?? 'unknown-agent');
242
+ // In production, the executor would suspend the session here and
243
+ // wait for a /approve directive. For now, return the token info.
244
+ return {
245
+ name: gateName,
246
+ type: 'approval',
247
+ success: true,
248
+ output: { tokenId: token.token, message, status: token.status },
249
+ duration: 0,
250
+ };
251
+ }
252
+ /** Execute a repeat N loop. */
253
+ async executeRepeat(statement, scope, outputs) {
254
+ const repeat = statement;
255
+ const count = repeat.count?.value ?? 1;
256
+ for (let i = 0; i < count; i++) {
257
+ const iterScope = createChildScope(scope, { _iteration: i });
258
+ for (const stmt of repeat.body ?? []) {
259
+ await this.executeStatement(stmt, iterScope, outputs);
260
+ }
261
+ }
262
+ return { name: `repeat(${count})`, type: 'loop', success: true, output: count, duration: 0 };
263
+ }
264
+ /** Execute a for-in loop. */
265
+ async executeForLoop(statement, scope, outputs) {
266
+ const forLoop = statement;
267
+ const varName = forLoop.variable?.value ?? 'item';
268
+ const iterable = forLoop.iterable;
269
+ const items = Array.isArray(iterable) ? iterable : [];
270
+ for (const item of items) {
271
+ const iterScope = createChildScope(scope, { [varName]: item });
272
+ for (const stmt of forLoop.body ?? []) {
273
+ await this.executeStatement(stmt, iterScope, outputs);
274
+ }
275
+ }
276
+ return {
277
+ name: `for(${varName})`,
278
+ type: 'loop',
279
+ success: true,
280
+ output: items.length,
281
+ duration: 0,
282
+ };
283
+ }
284
+ /** Execute a loop-until block. */
285
+ async executeLoopUntil(statement, scope, outputs) {
286
+ const loop = statement;
287
+ let iterations = 0;
288
+ const maxIterations = 10000;
289
+ let conditionMet = false;
290
+ do {
291
+ iterations++;
292
+ if (iterations > maxIterations) {
293
+ throw new Error(`Loop exceeded maximum iterations (${maxIterations})`);
294
+ }
295
+ for (const stmt of loop.body ?? []) {
296
+ await this.executeStatement(stmt, scope, outputs);
297
+ }
298
+ conditionMet = await this.evaluateCondition(loop.condition, scope);
299
+ } while (!conditionMet);
300
+ return {
301
+ name: 'loop-until',
302
+ type: 'loop',
303
+ success: true,
304
+ output: iterations,
305
+ duration: 0,
306
+ };
307
+ }
308
+ /** Execute a try/catch/finally block. */
309
+ async executeTryCatch(statement, scope, outputs) {
310
+ const tryCatch = statement;
311
+ let success = true;
312
+ let error;
313
+ try {
314
+ for (const stmt of tryCatch.try_body ?? []) {
315
+ await this.executeStatement(stmt, scope, outputs);
316
+ }
317
+ }
318
+ catch (err) {
319
+ success = false;
320
+ error = err instanceof Error ? err.message : String(err);
321
+ if (tryCatch.catch_body) {
322
+ const catchScope = createChildScope(scope, {
323
+ [tryCatch.catch_name ?? 'err']: error,
324
+ });
325
+ for (const stmt of tryCatch.catch_body) {
326
+ await this.executeStatement(stmt, catchScope, outputs);
327
+ }
328
+ }
329
+ }
330
+ finally {
331
+ if (tryCatch.finally_body) {
332
+ for (const stmt of tryCatch.finally_body) {
333
+ await this.executeStatement(stmt, scope, outputs);
334
+ }
335
+ }
336
+ }
337
+ return { name: 'try-catch', type: 'conditional', success, error, duration: 0 };
338
+ }
339
+ /** Execute a CANT directive statement. */
340
+ async executeDirective(statement, _scope) {
341
+ const directive = statement;
342
+ // Stub: real implementation dispatches via CLEO operations
343
+ return {
344
+ name: `/${directive.verb ?? 'unknown'}`,
345
+ type: 'directive',
346
+ success: true,
347
+ output: {
348
+ verb: directive.verb,
349
+ addresses: directive.addresses,
350
+ taskRefs: directive.task_refs,
351
+ },
352
+ duration: 0,
353
+ };
354
+ }
355
+ /**
356
+ * Evaluate a condition (regular expression or discretion).
357
+ */
358
+ async evaluateCondition(condition, scope) {
359
+ if (!condition)
360
+ return true;
361
+ const cond = condition;
362
+ if (cond.Discretion) {
363
+ const context = {
364
+ sessionId: this.config.sessionId ?? '',
365
+ taskRefs: [],
366
+ agentId: this.config.agentId ?? '',
367
+ variables: flattenScope(scope),
368
+ condition: cond.Discretion.prose,
369
+ precedingResults: {},
370
+ };
371
+ return this.discretionEvaluator.evaluate(cond.Discretion.prose, context);
372
+ }
373
+ // For regular expressions, return true as a stub
374
+ // Real implementation would evaluate the expression against the scope
375
+ return true;
376
+ }
377
+ }
378
+ // ---------------------------------------------------------------------------
379
+ // Helpers
380
+ // ---------------------------------------------------------------------------
381
+ /** Detect the statement type from an AST statement object. */
382
+ function detectStatementType(statement) {
383
+ if ('Binding' in statement)
384
+ return 'Binding';
385
+ if ('Output' in statement)
386
+ return 'Output';
387
+ if ('Conditional' in statement || ('condition' in statement && 'then_body' in statement))
388
+ return 'Conditional';
389
+ if ('Parallel' in statement || 'arms' in statement)
390
+ return 'Parallel';
391
+ if ('Session' in statement || 'target' in statement)
392
+ return 'Session';
393
+ if ('Pipeline' in statement || ('steps' in statement && 'name' in statement))
394
+ return 'Pipeline';
395
+ if ('ApprovalGate' in statement)
396
+ return 'ApprovalGate';
397
+ if ('Repeat' in statement || 'count' in statement)
398
+ return 'Repeat';
399
+ if ('ForLoop' in statement || ('variable' in statement && 'iterable' in statement))
400
+ return 'ForLoop';
401
+ if ('LoopUntil' in statement)
402
+ return 'LoopUntil';
403
+ if ('TryCatch' in statement || 'try_body' in statement)
404
+ return 'TryCatch';
405
+ if ('Directive' in statement || 'verb' in statement)
406
+ return 'Directive';
407
+ if ('Comment' in statement || 'text' in statement)
408
+ return 'Comment';
409
+ return statement.type ?? 'unknown';
410
+ }
411
+ /** Extract a human-readable name from a statement. */
412
+ function getStatementName(statement) {
413
+ const named = statement;
414
+ if (typeof named.name === 'object' && named.name?.value)
415
+ return named.name.value;
416
+ if (typeof named.name === 'string')
417
+ return named.name;
418
+ if (named.verb)
419
+ return `/${named.verb}`;
420
+ return detectStatementType(statement);
421
+ }
422
+ /** Map a statement to a StepResult type category. */
423
+ function getStatementType(statement) {
424
+ const t = detectStatementType(statement);
425
+ const mapping = {
426
+ Session: 'session',
427
+ Pipeline: 'pipeline',
428
+ Parallel: 'parallel',
429
+ Conditional: 'conditional',
430
+ Repeat: 'loop',
431
+ ForLoop: 'loop',
432
+ LoopUntil: 'loop',
433
+ ApprovalGate: 'approval',
434
+ Binding: 'binding',
435
+ Output: 'output',
436
+ Directive: 'directive',
437
+ };
438
+ return mapping[t] ?? 'binding';
439
+ }
440
+ //# sourceMappingURL=workflow-executor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-executor.js","sourceRoot":"","sources":["../../src/cant/workflow-executor.ts"],"names":[],"mappings":"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"}
package/dist/cleo.js CHANGED
@@ -20,7 +20,7 @@ import { importTasks } from './admin/import.js';
20
20
  // Agents
21
21
  import { checkAgentHealth, deregisterAgent, detectCrashedAgents, getAgentCapacity, heartbeat, isOverloaded, listAgentInstances, registerAgent, } from './agents/index.js';
22
22
  // Intelligence
23
- import { calculateBlastRadius, predictImpact, } from './intelligence/index.js';
23
+ import { calculateBlastRadius, predictImpact } from './intelligence/index.js';
24
24
  // Lifecycle
25
25
  import { checkGate, completeStage, failGate, getLifecycleHistory, getLifecycleStatus, PIPELINE_STAGES, passGate, resetStage, skipStage, startStage, } from './lifecycle/index.js';
26
26
  // Memory
@@ -31,6 +31,8 @@ import { discoverRelated, searchAcrossProjects } from './nexus/discover.js';
31
31
  import { setPermission } from './nexus/permissions.js';
32
32
  import { nexusGetProject, nexusInit, nexusList, nexusRegister, nexusSync, nexusSyncAll, nexusUnregister, } from './nexus/registry.js';
33
33
  import { getSharingStatus } from './nexus/sharing/index.js';
34
+ // Nexus workspace (ORCH-PLAN Phase B)
35
+ import { parseDirective, routeDirective, workspaceAgents, workspaceStatus, } from './nexus/workspace.js';
34
36
  // Orchestration
35
37
  import { analyzeEpic, buildDependencyGraph, computeEpicStatus, computeProgress, getNextTask, getOrchestratorContext, getReadyTasks, startOrchestration, } from './orchestration/index.js';
36
38
  // Reconciliation (sync)
@@ -40,6 +42,8 @@ import { getLinksByProvider, getLinksByTaskId, removeLinksByProvider, } from './
40
42
  import { bumpVersionFromConfig, calculateNewVersion, commitRelease, prepareRelease, pushRelease, rollbackRelease, tagRelease, } from './release/index.js';
41
43
  // Sessions
42
44
  import { computeBriefing, computeHandoff, endSession, findSessions, gcSessions, getContextDrift, getDecisionLog, getLastHandoff, listSessions, recordAssumption, recordDecision, resumeSession, sessionStatus, showSession, startSession, suspendSession, } from './sessions/index.js';
45
+ // Session snapshots (Phase 3: persistence)
46
+ import { restoreSession, serializeSession } from './sessions/snapshot.js';
43
47
  // Sticky
44
48
  import { addSticky, archiveSticky, convertStickyToMemory, convertStickyToTask, getSticky, listStickies, purgeSticky, } from './sticky/index.js';
45
49
  // Store
@@ -141,6 +145,14 @@ export class Cleo {
141
145
  contextDrift: (p) => getContextDrift(root, p),
142
146
  decisionLog: (p) => getDecisionLog(root, { sessionId: p?.sessionId, taskId: p?.taskId }),
143
147
  lastHandoff: (scope) => getLastHandoff(root, scope),
148
+ serialize: (p) => serializeSession(root, {
149
+ sessionId: p?.sessionId,
150
+ maxObservations: p?.maxObservations,
151
+ }),
152
+ restore: (snapshot, p) => restoreSession(root, snapshot, {
153
+ agent: p?.agent,
154
+ activate: p?.activate,
155
+ }),
144
156
  };
145
157
  }
146
158
  // === Memory ===
@@ -252,6 +264,14 @@ export class Cleo {
252
264
  search: (p) => searchAcrossProjects(p.pattern, p.project, p.limit),
253
265
  setPermission: (p) => setPermission(p.name, p.level),
254
266
  sharingStatus: () => getSharingStatus(),
267
+ route: (message) => {
268
+ const directive = parseDirective(message);
269
+ if (!directive)
270
+ return Promise.resolve([]);
271
+ return routeDirective(directive);
272
+ },
273
+ workspaceStatus: () => workspaceStatus(),
274
+ workspaceAgents: () => workspaceAgents(),
255
275
  };
256
276
  }
257
277
  // === Agents ===