@cleocode/core 2026.3.74 → 2026.3.76

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 (1087) hide show
  1. package/README.md +1 -1
  2. package/dist/cant/approval.d.ts +110 -0
  3. package/dist/cant/approval.d.ts.map +1 -0
  4. package/dist/cant/context-builder.d.ts +79 -0
  5. package/dist/cant/context-builder.d.ts.map +1 -0
  6. package/dist/cant/discretion.d.ts +95 -0
  7. package/dist/cant/discretion.d.ts.map +1 -0
  8. package/dist/cant/index.d.ts +25 -0
  9. package/dist/cant/index.d.ts.map +1 -0
  10. package/dist/cant/parallel-runner.d.ts +38 -0
  11. package/dist/cant/parallel-runner.d.ts.map +1 -0
  12. package/dist/cant/types.d.ts +127 -0
  13. package/dist/cant/types.d.ts.map +1 -0
  14. package/dist/cant/workflow-executor.d.ts +105 -0
  15. package/dist/cant/workflow-executor.d.ts.map +1 -0
  16. package/dist/conduit/conduit-client.d.ts +26 -0
  17. package/dist/conduit/conduit-client.d.ts.map +1 -0
  18. package/dist/conduit/factory.d.ts +13 -0
  19. package/dist/conduit/factory.d.ts.map +1 -0
  20. package/dist/conduit/http-transport.d.ts +32 -0
  21. package/dist/conduit/http-transport.d.ts.map +1 -0
  22. package/dist/conduit/index.d.ts +12 -0
  23. package/dist/conduit/index.d.ts.map +1 -0
  24. package/dist/crypto/credentials.d.ts +40 -0
  25. package/dist/crypto/credentials.d.ts.map +1 -0
  26. package/dist/engine-result.d.ts +1 -1
  27. package/dist/engine-result.d.ts.map +1 -1
  28. package/dist/error-catalog.d.ts +1 -1
  29. package/dist/error-catalog.d.ts.map +1 -1
  30. package/dist/error-registry.d.ts +1 -1
  31. package/dist/error-registry.d.ts.map +1 -1
  32. package/dist/errors.d.ts +1 -1
  33. package/dist/errors.d.ts.map +1 -1
  34. package/dist/hooks/handlers/agent-hooks.d.ts.map +1 -1
  35. package/dist/hooks/handlers/context-hooks.d.ts.map +1 -1
  36. package/dist/hooks/handlers/error-hooks.d.ts +14 -5
  37. package/dist/hooks/handlers/error-hooks.d.ts.map +1 -1
  38. package/dist/hooks/handlers/file-hooks.d.ts.map +1 -1
  39. package/dist/hooks/handlers/handler-helpers.d.ts +41 -0
  40. package/dist/hooks/handlers/handler-helpers.d.ts.map +1 -0
  41. package/dist/hooks/handlers/mcp-hooks.d.ts.map +1 -1
  42. package/dist/hooks/handlers/session-hooks.d.ts.map +1 -1
  43. package/dist/hooks/handlers/task-hooks.d.ts.map +1 -1
  44. package/dist/hooks/handlers/work-capture-hooks.d.ts.map +1 -1
  45. package/dist/index.d.ts +3 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2285 -767
  48. package/dist/index.js.map +4 -4
  49. package/dist/init.d.ts.map +1 -1
  50. package/dist/internal.d.ts +7 -0
  51. package/dist/internal.d.ts.map +1 -1
  52. package/dist/memory/brain-retrieval.d.ts +3 -0
  53. package/dist/memory/brain-retrieval.d.ts.map +1 -1
  54. package/dist/mvi-helpers.d.ts +52 -0
  55. package/dist/mvi-helpers.d.ts.map +1 -0
  56. package/dist/nexus/workspace.d.ts.map +1 -1
  57. package/dist/output.d.ts +2 -2
  58. package/dist/output.d.ts.map +1 -1
  59. package/dist/pagination.d.ts +1 -1
  60. package/dist/pagination.d.ts.map +1 -1
  61. package/dist/sessions/find.d.ts +3 -0
  62. package/dist/sessions/find.d.ts.map +1 -1
  63. package/dist/sessions/index.d.ts.map +1 -1
  64. package/dist/store/agent-registry-accessor.d.ts +454 -0
  65. package/dist/store/agent-registry-accessor.d.ts.map +1 -0
  66. package/dist/store/converters.d.ts.map +1 -1
  67. package/dist/store/db-helpers.d.ts.map +1 -1
  68. package/dist/store/safety-data-accessor.d.ts +7 -0
  69. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  70. package/dist/store/signaldock-sqlite.d.ts +48 -0
  71. package/dist/store/signaldock-sqlite.d.ts.map +1 -0
  72. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  73. package/dist/store/sqlite.d.ts.map +1 -1
  74. package/dist/store/task-store.d.ts.map +1 -1
  75. package/dist/store/tasks-schema.d.ts +240 -0
  76. package/dist/store/tasks-schema.d.ts.map +1 -1
  77. package/dist/store/validation-schemas.d.ts +32 -0
  78. package/dist/store/validation-schemas.d.ts.map +1 -1
  79. package/dist/system/health.d.ts.map +1 -1
  80. package/dist/task-work/index.d.ts.map +1 -1
  81. package/dist/tasks/find.d.ts +3 -0
  82. package/dist/tasks/find.d.ts.map +1 -1
  83. package/dist/tasks/list.d.ts +5 -2
  84. package/dist/tasks/list.d.ts.map +1 -1
  85. package/dist/tasks/show.d.ts +3 -0
  86. package/dist/tasks/show.d.ts.map +1 -1
  87. package/dist/upgrade.d.ts.map +1 -1
  88. package/migrations/drizzle-tasks/20260324000000_assignee-column/migration.sql +6 -0
  89. package/migrations/drizzle-tasks/20260324000000_assignee-column/snapshot.json +9 -0
  90. package/migrations/drizzle-tasks/20260327000000_agent-credentials/migration.sql +23 -0
  91. package/package.json +7 -7
  92. package/src/__tests__/cli-parity.test.js +11 -1
  93. package/src/__tests__/cli-parity.test.js.map +1 -1
  94. package/src/__tests__/cli-parity.test.ts +17 -1
  95. package/src/__tests__/human-output.test.js +11 -1
  96. package/src/__tests__/human-output.test.js.map +1 -1
  97. package/src/__tests__/human-output.test.ts +18 -1
  98. package/src/__tests__/injection-chain.test.js +3 -2
  99. package/src/__tests__/injection-chain.test.js.map +1 -1
  100. package/src/__tests__/injection-mvi-tiers.test.d.ts +2 -2
  101. package/src/__tests__/injection-mvi-tiers.test.js +15 -15
  102. package/src/__tests__/injection-mvi-tiers.test.js.map +1 -1
  103. package/src/__tests__/lafs-conformance.test.d.ts +1 -1
  104. package/src/__tests__/lafs-conformance.test.js +2 -2
  105. package/src/__tests__/sharing.test.js +19 -0
  106. package/src/__tests__/sharing.test.js.map +1 -1
  107. package/src/agents/__tests__/agent-registry.test.d.ts +12 -0
  108. package/src/agents/__tests__/agent-registry.test.d.ts.map +1 -0
  109. package/src/agents/__tests__/agent-registry.test.js +262 -0
  110. package/src/agents/__tests__/agent-registry.test.js.map +1 -0
  111. package/src/agents/__tests__/execution-learning.test.d.ts +14 -0
  112. package/src/agents/__tests__/execution-learning.test.d.ts.map +1 -0
  113. package/src/agents/__tests__/execution-learning.test.js +533 -0
  114. package/src/agents/__tests__/execution-learning.test.js.map +1 -0
  115. package/src/agents/__tests__/health-monitor.test.d.ts +10 -0
  116. package/src/agents/__tests__/health-monitor.test.d.ts.map +1 -0
  117. package/src/agents/__tests__/health-monitor.test.js +259 -0
  118. package/src/agents/__tests__/health-monitor.test.js.map +1 -0
  119. package/src/agents/__tests__/registry.test.js +27 -2
  120. package/src/agents/__tests__/registry.test.js.map +1 -1
  121. package/src/cant/__tests__/cant-agent-parse.test.ts +94 -0
  122. package/src/cant/approval.ts +218 -0
  123. package/src/cant/context-builder.ts +135 -0
  124. package/src/cant/discretion.ts +149 -0
  125. package/src/cant/index.ts +58 -0
  126. package/src/cant/parallel-runner.ts +205 -0
  127. package/src/cant/types.ts +158 -0
  128. package/src/cant/workflow-executor.ts +618 -0
  129. package/src/conduit/conduit-client.ts +114 -0
  130. package/src/conduit/factory.ts +45 -0
  131. package/src/conduit/http-transport.ts +140 -0
  132. package/src/conduit/index.ts +12 -0
  133. package/src/crypto/credentials.ts +166 -0
  134. package/src/engine-result.ts +1 -1
  135. package/src/error-catalog.ts +1 -1
  136. package/src/error-registry.ts +1 -1
  137. package/src/errors.ts +1 -1
  138. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts +13 -0
  139. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.d.ts.map +1 -0
  140. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js +501 -0
  141. package/src/hooks/handlers/__tests__/hook-automation-e2e.test.js.map +1 -0
  142. package/src/hooks/handlers/agent-hooks.ts +1 -30
  143. package/src/hooks/handlers/context-hooks.ts +1 -30
  144. package/src/hooks/handlers/error-hooks.ts +14 -5
  145. package/src/hooks/handlers/file-hooks.ts +1 -6
  146. package/src/hooks/handlers/handler-helpers.ts +62 -0
  147. package/src/hooks/handlers/mcp-hooks.ts +2 -14
  148. package/src/hooks/handlers/session-hooks.ts +1 -6
  149. package/src/hooks/handlers/task-hooks.ts +1 -6
  150. package/src/hooks/handlers/work-capture-hooks.ts +1 -10
  151. package/src/index.ts +11 -1
  152. package/src/init.ts +12 -0
  153. package/src/intelligence/__tests__/adaptive-validation.test.d.ts +11 -0
  154. package/src/intelligence/__tests__/adaptive-validation.test.d.ts.map +1 -0
  155. package/src/intelligence/__tests__/adaptive-validation.test.js +517 -0
  156. package/src/intelligence/__tests__/adaptive-validation.test.js.map +1 -0
  157. package/src/intelligence/__tests__/impact.test.d.ts +1 -0
  158. package/src/intelligence/__tests__/impact.test.d.ts.map +1 -1
  159. package/src/intelligence/__tests__/impact.test.js +132 -1
  160. package/src/intelligence/__tests__/impact.test.js.map +1 -1
  161. package/src/internal.ts +17 -0
  162. package/src/lib/__tests__/retry.test.d.ts +7 -0
  163. package/src/lib/__tests__/retry.test.d.ts.map +1 -0
  164. package/src/lib/__tests__/retry.test.js +225 -0
  165. package/src/lib/__tests__/retry.test.js.map +1 -0
  166. package/src/lifecycle/__tests__/chain-store.test.js +6 -0
  167. package/src/lifecycle/__tests__/chain-store.test.js.map +1 -1
  168. package/src/lifecycle/__tests__/tessera-engine.test.js +52 -0
  169. package/src/lifecycle/__tests__/tessera-engine.test.js.map +1 -1
  170. package/src/memory/__tests__/brain-automation.test.d.ts +11 -0
  171. package/src/memory/__tests__/brain-automation.test.d.ts.map +1 -0
  172. package/src/memory/__tests__/brain-automation.test.js +730 -0
  173. package/src/memory/__tests__/brain-automation.test.js.map +1 -0
  174. package/src/memory/brain-retrieval.ts +9 -0
  175. package/src/mvi-helpers.ts +81 -0
  176. package/src/nexus/workspace.ts +19 -7
  177. package/src/output.ts +43 -10
  178. package/src/pagination.ts +1 -1
  179. package/src/sessions/__tests__/session-edge-cases.test.js +20 -1
  180. package/src/sessions/__tests__/session-edge-cases.test.js.map +1 -1
  181. package/src/sessions/__tests__/session-find.test.js +1 -1
  182. package/src/sessions/__tests__/session-find.test.js.map +1 -1
  183. package/src/sessions/__tests__/session-find.test.ts +1 -1
  184. package/src/sessions/find.ts +6 -1
  185. package/src/sessions/index.ts +9 -0
  186. package/src/store/__tests__/migration-safety.test.js +3 -0
  187. package/src/store/__tests__/migration-safety.test.js.map +1 -1
  188. package/src/store/__tests__/session-store.test.js +128 -1
  189. package/src/store/__tests__/session-store.test.js.map +1 -1
  190. package/src/store/__tests__/task-store.test.js +18 -1
  191. package/src/store/__tests__/task-store.test.js.map +1 -1
  192. package/src/store/__tests__/test-db-helper.d.ts.map +1 -1
  193. package/src/store/__tests__/test-db-helper.js +12 -0
  194. package/src/store/__tests__/test-db-helper.js.map +1 -1
  195. package/src/store/agent-registry-accessor.ts +199 -0
  196. package/src/store/converters.ts +2 -0
  197. package/src/store/db-helpers.ts +1 -0
  198. package/src/store/safety-data-accessor.ts +23 -0
  199. package/src/store/signaldock-sqlite.ts +227 -0
  200. package/src/store/sqlite-data-accessor.ts +69 -0
  201. package/src/store/sqlite.ts +4 -1
  202. package/src/store/task-store.ts +1 -0
  203. package/src/store/tasks-schema.ts +42 -0
  204. package/src/system/health.ts +33 -0
  205. package/src/task-work/index.ts +5 -0
  206. package/src/tasks/__tests__/add.test.js +19 -1
  207. package/src/tasks/__tests__/add.test.js.map +1 -1
  208. package/src/tasks/__tests__/assignee.test.d.ts +14 -0
  209. package/src/tasks/__tests__/assignee.test.d.ts.map +1 -0
  210. package/src/tasks/__tests__/assignee.test.js +125 -0
  211. package/src/tasks/__tests__/assignee.test.js.map +1 -0
  212. package/src/tasks/__tests__/assignee.test.ts +162 -0
  213. package/src/tasks/__tests__/complete-unblocks.test.js +13 -1
  214. package/src/tasks/__tests__/complete-unblocks.test.js.map +1 -1
  215. package/src/tasks/__tests__/complete.test.js +28 -7
  216. package/src/tasks/__tests__/complete.test.js.map +1 -1
  217. package/src/tasks/__tests__/epic-enforcement.test.d.ts +15 -0
  218. package/src/tasks/__tests__/epic-enforcement.test.d.ts.map +1 -0
  219. package/src/tasks/__tests__/epic-enforcement.test.js +669 -0
  220. package/src/tasks/__tests__/epic-enforcement.test.js.map +1 -0
  221. package/src/tasks/__tests__/hierarchy-policy.test.js +5 -0
  222. package/src/tasks/__tests__/hierarchy-policy.test.js.map +1 -1
  223. package/src/tasks/__tests__/minimal-test.test.d.ts +2 -0
  224. package/src/tasks/__tests__/minimal-test.test.d.ts.map +1 -0
  225. package/src/tasks/__tests__/minimal-test.test.js +25 -0
  226. package/src/tasks/__tests__/minimal-test.test.js.map +1 -0
  227. package/src/tasks/__tests__/pipeline-stage.test.d.ts +14 -0
  228. package/src/tasks/__tests__/pipeline-stage.test.d.ts.map +1 -0
  229. package/src/tasks/__tests__/pipeline-stage.test.js +277 -0
  230. package/src/tasks/__tests__/pipeline-stage.test.js.map +1 -0
  231. package/src/tasks/__tests__/update.test.js +43 -6
  232. package/src/tasks/__tests__/update.test.js.map +1 -1
  233. package/src/tasks/find.ts +11 -1
  234. package/src/tasks/list.ts +14 -3
  235. package/src/tasks/show.ts +6 -0
  236. package/src/upgrade.ts +16 -0
  237. package/dist/adapters/adapter-registry.js +0 -64
  238. package/dist/adapters/adapter-registry.js.map +0 -1
  239. package/dist/adapters/discovery.js +0 -83
  240. package/dist/adapters/discovery.js.map +0 -1
  241. package/dist/adapters/index.js +0 -9
  242. package/dist/adapters/index.js.map +0 -1
  243. package/dist/adapters/manager.js +0 -260
  244. package/dist/adapters/manager.js.map +0 -1
  245. package/dist/admin/export-tasks.js +0 -171
  246. package/dist/admin/export-tasks.js.map +0 -1
  247. package/dist/admin/export.js +0 -103
  248. package/dist/admin/export.js.map +0 -1
  249. package/dist/admin/help.js +0 -106
  250. package/dist/admin/help.js.map +0 -1
  251. package/dist/admin/import-tasks.js +0 -182
  252. package/dist/admin/import-tasks.js.map +0 -1
  253. package/dist/admin/import.js +0 -129
  254. package/dist/admin/import.js.map +0 -1
  255. package/dist/admin/index.js +0 -13
  256. package/dist/admin/index.js.map +0 -1
  257. package/dist/adrs/find.js +0 -134
  258. package/dist/adrs/find.js.map +0 -1
  259. package/dist/adrs/index.js +0 -15
  260. package/dist/adrs/index.js.map +0 -1
  261. package/dist/adrs/link-pipeline.js +0 -160
  262. package/dist/adrs/link-pipeline.js.map +0 -1
  263. package/dist/adrs/list.js +0 -43
  264. package/dist/adrs/list.js.map +0 -1
  265. package/dist/adrs/parse.js +0 -51
  266. package/dist/adrs/parse.js.map +0 -1
  267. package/dist/adrs/show.js +0 -22
  268. package/dist/adrs/show.js.map +0 -1
  269. package/dist/adrs/sync.js +0 -188
  270. package/dist/adrs/sync.js.map +0 -1
  271. package/dist/adrs/types.js +0 -9
  272. package/dist/adrs/types.js.map +0 -1
  273. package/dist/adrs/validate.js +0 -57
  274. package/dist/adrs/validate.js.map +0 -1
  275. package/dist/agents/agent-registry.js +0 -288
  276. package/dist/agents/agent-registry.js.map +0 -1
  277. package/dist/agents/agent-schema.js +0 -85
  278. package/dist/agents/agent-schema.js.map +0 -1
  279. package/dist/agents/capacity.js +0 -116
  280. package/dist/agents/capacity.js.map +0 -1
  281. package/dist/agents/execution-learning.js +0 -474
  282. package/dist/agents/execution-learning.js.map +0 -1
  283. package/dist/agents/health-monitor.js +0 -217
  284. package/dist/agents/health-monitor.js.map +0 -1
  285. package/dist/agents/index.js +0 -29
  286. package/dist/agents/index.js.map +0 -1
  287. package/dist/agents/registry.js +0 -314
  288. package/dist/agents/registry.js.map +0 -1
  289. package/dist/agents/retry.js +0 -210
  290. package/dist/agents/retry.js.map +0 -1
  291. package/dist/audit-prune.js +0 -94
  292. package/dist/audit-prune.js.map +0 -1
  293. package/dist/audit.js +0 -68
  294. package/dist/audit.js.map +0 -1
  295. package/dist/backfill/index.js +0 -229
  296. package/dist/backfill/index.js.map +0 -1
  297. package/dist/bootstrap.js +0 -367
  298. package/dist/bootstrap.js.map +0 -1
  299. package/dist/caamp/adapter.js +0 -434
  300. package/dist/caamp/adapter.js.map +0 -1
  301. package/dist/caamp/capability-check.js +0 -38
  302. package/dist/caamp/capability-check.js.map +0 -1
  303. package/dist/caamp/index.js +0 -23
  304. package/dist/caamp/index.js.map +0 -1
  305. package/dist/caamp-init.js +0 -16
  306. package/dist/caamp-init.js.map +0 -1
  307. package/dist/cleo.js +0 -302
  308. package/dist/cleo.js.map +0 -1
  309. package/dist/codebase-map/analyzers/architecture.js +0 -130
  310. package/dist/codebase-map/analyzers/architecture.js.map +0 -1
  311. package/dist/codebase-map/analyzers/concerns.js +0 -122
  312. package/dist/codebase-map/analyzers/concerns.js.map +0 -1
  313. package/dist/codebase-map/analyzers/conventions.js +0 -149
  314. package/dist/codebase-map/analyzers/conventions.js.map +0 -1
  315. package/dist/codebase-map/analyzers/integrations.js +0 -108
  316. package/dist/codebase-map/analyzers/integrations.js.map +0 -1
  317. package/dist/codebase-map/analyzers/stack.js +0 -117
  318. package/dist/codebase-map/analyzers/stack.js.map +0 -1
  319. package/dist/codebase-map/analyzers/structure.js +0 -137
  320. package/dist/codebase-map/analyzers/structure.js.map +0 -1
  321. package/dist/codebase-map/analyzers/testing.js +0 -118
  322. package/dist/codebase-map/analyzers/testing.js.map +0 -1
  323. package/dist/codebase-map/index.js +0 -57
  324. package/dist/codebase-map/index.js.map +0 -1
  325. package/dist/codebase-map/store.js +0 -122
  326. package/dist/codebase-map/store.js.map +0 -1
  327. package/dist/codebase-map/summary.js +0 -152
  328. package/dist/codebase-map/summary.js.map +0 -1
  329. package/dist/compliance/index.js +0 -288
  330. package/dist/compliance/index.js.map +0 -1
  331. package/dist/compliance/protocol-enforcement.js +0 -332
  332. package/dist/compliance/protocol-enforcement.js.map +0 -1
  333. package/dist/compliance/protocol-rules.js +0 -786
  334. package/dist/compliance/protocol-rules.js.map +0 -1
  335. package/dist/compliance/protocol-types.js +0 -80
  336. package/dist/compliance/protocol-types.js.map +0 -1
  337. package/dist/compliance/store.js +0 -53
  338. package/dist/compliance/store.js.map +0 -1
  339. package/dist/config/build-config.js +0 -29
  340. package/dist/config/build-config.js.map +0 -1
  341. package/dist/config.js +0 -400
  342. package/dist/config.js.map +0 -1
  343. package/dist/constants.js +0 -18
  344. package/dist/constants.js.map +0 -1
  345. package/dist/context/index.js +0 -137
  346. package/dist/context/index.js.map +0 -1
  347. package/dist/engine-result.js +0 -12
  348. package/dist/engine-result.js.map +0 -1
  349. package/dist/error-catalog.js +0 -404
  350. package/dist/error-catalog.js.map +0 -1
  351. package/dist/error-registry.js +0 -393
  352. package/dist/error-registry.js.map +0 -1
  353. package/dist/errors.js +0 -167
  354. package/dist/errors.js.map +0 -1
  355. package/dist/hooks/handlers/error-hooks.js +0 -43
  356. package/dist/hooks/handlers/error-hooks.js.map +0 -1
  357. package/dist/hooks/handlers/file-hooks.js +0 -80
  358. package/dist/hooks/handlers/file-hooks.js.map +0 -1
  359. package/dist/hooks/handlers/index.js +0 -19
  360. package/dist/hooks/handlers/index.js.map +0 -1
  361. package/dist/hooks/handlers/mcp-hooks.js +0 -80
  362. package/dist/hooks/handlers/mcp-hooks.js.map +0 -1
  363. package/dist/hooks/handlers/memory-bridge-refresh.js +0 -42
  364. package/dist/hooks/handlers/memory-bridge-refresh.js.map +0 -1
  365. package/dist/hooks/handlers/session-hooks.js +0 -109
  366. package/dist/hooks/handlers/session-hooks.js.map +0 -1
  367. package/dist/hooks/handlers/task-hooks.js +0 -70
  368. package/dist/hooks/handlers/task-hooks.js.map +0 -1
  369. package/dist/hooks/index.js +0 -13
  370. package/dist/hooks/index.js.map +0 -1
  371. package/dist/hooks/payload-schemas.js +0 -163
  372. package/dist/hooks/payload-schemas.js.map +0 -1
  373. package/dist/hooks/provider-hooks.js +0 -34
  374. package/dist/hooks/provider-hooks.js.map +0 -1
  375. package/dist/hooks/registry.js +0 -176
  376. package/dist/hooks/registry.js.map +0 -1
  377. package/dist/hooks/types.js +0 -62
  378. package/dist/hooks/types.js.map +0 -1
  379. package/dist/hooks.js +0 -136
  380. package/dist/hooks.js.map +0 -1
  381. package/dist/init.js +0 -711
  382. package/dist/init.js.map +0 -1
  383. package/dist/inject/index.js +0 -82
  384. package/dist/inject/index.js.map +0 -1
  385. package/dist/injection.js +0 -343
  386. package/dist/injection.js.map +0 -1
  387. package/dist/intelligence/adaptive-validation.js +0 -497
  388. package/dist/intelligence/adaptive-validation.js.map +0 -1
  389. package/dist/intelligence/impact.js +0 -675
  390. package/dist/intelligence/impact.js.map +0 -1
  391. package/dist/intelligence/index.js +0 -22
  392. package/dist/intelligence/index.js.map +0 -1
  393. package/dist/intelligence/patterns.js +0 -492
  394. package/dist/intelligence/patterns.js.map +0 -1
  395. package/dist/intelligence/prediction.js +0 -499
  396. package/dist/intelligence/prediction.js.map +0 -1
  397. package/dist/intelligence/types.js +0 -13
  398. package/dist/intelligence/types.js.map +0 -1
  399. package/dist/internal.js +0 -276
  400. package/dist/internal.js.map +0 -1
  401. package/dist/issue/create.js +0 -121
  402. package/dist/issue/create.js.map +0 -1
  403. package/dist/issue/diagnostics.js +0 -59
  404. package/dist/issue/diagnostics.js.map +0 -1
  405. package/dist/issue/index.js +0 -10
  406. package/dist/issue/index.js.map +0 -1
  407. package/dist/issue/template-parser.js +0 -267
  408. package/dist/issue/template-parser.js.map +0 -1
  409. package/dist/json-schema-validator.js +0 -76
  410. package/dist/json-schema-validator.js.map +0 -1
  411. package/dist/lib/index.js +0 -10
  412. package/dist/lib/index.js.map +0 -1
  413. package/dist/lib/retry.js +0 -152
  414. package/dist/lib/retry.js.map +0 -1
  415. package/dist/lifecycle/chain-composition.js +0 -152
  416. package/dist/lifecycle/chain-composition.js.map +0 -1
  417. package/dist/lifecycle/chain-store.js +0 -246
  418. package/dist/lifecycle/chain-store.js.map +0 -1
  419. package/dist/lifecycle/consolidate-rcasd.js +0 -352
  420. package/dist/lifecycle/consolidate-rcasd.js.map +0 -1
  421. package/dist/lifecycle/default-chain.js +0 -167
  422. package/dist/lifecycle/default-chain.js.map +0 -1
  423. package/dist/lifecycle/evidence.js +0 -180
  424. package/dist/lifecycle/evidence.js.map +0 -1
  425. package/dist/lifecycle/frontmatter.js +0 -363
  426. package/dist/lifecycle/frontmatter.js.map +0 -1
  427. package/dist/lifecycle/index.js +0 -753
  428. package/dist/lifecycle/index.js.map +0 -1
  429. package/dist/lifecycle/pipeline.js +0 -656
  430. package/dist/lifecycle/pipeline.js.map +0 -1
  431. package/dist/lifecycle/rcasd-index.js +0 -326
  432. package/dist/lifecycle/rcasd-index.js.map +0 -1
  433. package/dist/lifecycle/rcasd-paths.js +0 -220
  434. package/dist/lifecycle/rcasd-paths.js.map +0 -1
  435. package/dist/lifecycle/resume.js +0 -864
  436. package/dist/lifecycle/resume.js.map +0 -1
  437. package/dist/lifecycle/stage-artifacts.js +0 -94
  438. package/dist/lifecycle/stage-artifacts.js.map +0 -1
  439. package/dist/lifecycle/stages.js +0 -534
  440. package/dist/lifecycle/stages.js.map +0 -1
  441. package/dist/lifecycle/state-machine.js +0 -516
  442. package/dist/lifecycle/state-machine.js.map +0 -1
  443. package/dist/lifecycle/tessera-engine.js +0 -249
  444. package/dist/lifecycle/tessera-engine.js.map +0 -1
  445. package/dist/logger.js +0 -140
  446. package/dist/logger.js.map +0 -1
  447. package/dist/mcp/index.js +0 -146
  448. package/dist/mcp/index.js.map +0 -1
  449. package/dist/memory/auto-extract.js +0 -177
  450. package/dist/memory/auto-extract.js.map +0 -1
  451. package/dist/memory/brain-embedding.js +0 -66
  452. package/dist/memory/brain-embedding.js.map +0 -1
  453. package/dist/memory/brain-lifecycle.js +0 -298
  454. package/dist/memory/brain-lifecycle.js.map +0 -1
  455. package/dist/memory/brain-links.js +0 -148
  456. package/dist/memory/brain-links.js.map +0 -1
  457. package/dist/memory/brain-maintenance.js +0 -98
  458. package/dist/memory/brain-maintenance.js.map +0 -1
  459. package/dist/memory/brain-migration.js +0 -149
  460. package/dist/memory/brain-migration.js.map +0 -1
  461. package/dist/memory/brain-reasoning.js +0 -215
  462. package/dist/memory/brain-reasoning.js.map +0 -1
  463. package/dist/memory/brain-retrieval.js +0 -521
  464. package/dist/memory/brain-retrieval.js.map +0 -1
  465. package/dist/memory/brain-row-types.js +0 -10
  466. package/dist/memory/brain-row-types.js.map +0 -1
  467. package/dist/memory/brain-search.js +0 -519
  468. package/dist/memory/brain-search.js.map +0 -1
  469. package/dist/memory/brain-similarity.js +0 -145
  470. package/dist/memory/brain-similarity.js.map +0 -1
  471. package/dist/memory/claude-mem-migration.js +0 -277
  472. package/dist/memory/claude-mem-migration.js.map +0 -1
  473. package/dist/memory/decisions.js +0 -148
  474. package/dist/memory/decisions.js.map +0 -1
  475. package/dist/memory/embedding-local.js +0 -97
  476. package/dist/memory/embedding-local.js.map +0 -1
  477. package/dist/memory/embedding-queue.js +0 -271
  478. package/dist/memory/embedding-queue.js.map +0 -1
  479. package/dist/memory/embedding-worker.js +0 -58
  480. package/dist/memory/embedding-worker.js.map +0 -1
  481. package/dist/memory/engine-compat.js +0 -1030
  482. package/dist/memory/engine-compat.js.map +0 -1
  483. package/dist/memory/index.js +0 -773
  484. package/dist/memory/index.js.map +0 -1
  485. package/dist/memory/learnings.js +0 -121
  486. package/dist/memory/learnings.js.map +0 -1
  487. package/dist/memory/memory-bridge.js +0 -370
  488. package/dist/memory/memory-bridge.js.map +0 -1
  489. package/dist/memory/patterns.js +0 -122
  490. package/dist/memory/patterns.js.map +0 -1
  491. package/dist/memory/pipeline-manifest-sqlite.js +0 -975
  492. package/dist/memory/pipeline-manifest-sqlite.js.map +0 -1
  493. package/dist/memory/session-memory.js +0 -331
  494. package/dist/memory/session-memory.js.map +0 -1
  495. package/dist/metrics/ab-test.js +0 -260
  496. package/dist/metrics/ab-test.js.map +0 -1
  497. package/dist/metrics/aggregation.js +0 -363
  498. package/dist/metrics/aggregation.js.map +0 -1
  499. package/dist/metrics/common.js +0 -64
  500. package/dist/metrics/common.js.map +0 -1
  501. package/dist/metrics/enums.js +0 -78
  502. package/dist/metrics/enums.js.map +0 -1
  503. package/dist/metrics/index.js +0 -19
  504. package/dist/metrics/index.js.map +0 -1
  505. package/dist/metrics/model-provider-registry.js +0 -88
  506. package/dist/metrics/model-provider-registry.js.map +0 -1
  507. package/dist/metrics/otel-integration.js +0 -263
  508. package/dist/metrics/otel-integration.js.map +0 -1
  509. package/dist/metrics/provider-detection.js +0 -103
  510. package/dist/metrics/provider-detection.js.map +0 -1
  511. package/dist/metrics/token-estimation.js +0 -253
  512. package/dist/metrics/token-estimation.js.map +0 -1
  513. package/dist/metrics/token-service.js +0 -450
  514. package/dist/metrics/token-service.js.map +0 -1
  515. package/dist/migration/agent-outputs.js +0 -316
  516. package/dist/migration/agent-outputs.js.map +0 -1
  517. package/dist/migration/checksum.js +0 -92
  518. package/dist/migration/checksum.js.map +0 -1
  519. package/dist/migration/index.js +0 -282
  520. package/dist/migration/index.js.map +0 -1
  521. package/dist/migration/logger.js +0 -360
  522. package/dist/migration/logger.js.map +0 -1
  523. package/dist/migration/preflight.js +0 -9
  524. package/dist/migration/preflight.js.map +0 -1
  525. package/dist/migration/state.js +0 -421
  526. package/dist/migration/state.js.map +0 -1
  527. package/dist/migration/validate.js +0 -241
  528. package/dist/migration/validate.js.map +0 -1
  529. package/dist/nexus/deps.js +0 -375
  530. package/dist/nexus/deps.js.map +0 -1
  531. package/dist/nexus/discover.js +0 -288
  532. package/dist/nexus/discover.js.map +0 -1
  533. package/dist/nexus/hash.js +0 -10
  534. package/dist/nexus/hash.js.map +0 -1
  535. package/dist/nexus/index.js +0 -38
  536. package/dist/nexus/index.js.map +0 -1
  537. package/dist/nexus/migrate-json-to-sqlite.js +0 -115
  538. package/dist/nexus/migrate-json-to-sqlite.js.map +0 -1
  539. package/dist/nexus/permissions.js +0 -105
  540. package/dist/nexus/permissions.js.map +0 -1
  541. package/dist/nexus/query.js +0 -175
  542. package/dist/nexus/query.js.map +0 -1
  543. package/dist/nexus/registry.js +0 -584
  544. package/dist/nexus/registry.js.map +0 -1
  545. package/dist/nexus/sharing/index.js +0 -288
  546. package/dist/nexus/sharing/index.js.map +0 -1
  547. package/dist/nexus/transfer-types.js +0 -8
  548. package/dist/nexus/transfer-types.js.map +0 -1
  549. package/dist/nexus/transfer.js +0 -263
  550. package/dist/nexus/transfer.js.map +0 -1
  551. package/dist/observability/index.js +0 -103
  552. package/dist/observability/index.js.map +0 -1
  553. package/dist/observability/log-filter.js +0 -63
  554. package/dist/observability/log-filter.js.map +0 -1
  555. package/dist/observability/log-parser.js +0 -99
  556. package/dist/observability/log-parser.js.map +0 -1
  557. package/dist/observability/log-reader.js +0 -139
  558. package/dist/observability/log-reader.js.map +0 -1
  559. package/dist/observability/types.js +0 -19
  560. package/dist/observability/types.js.map +0 -1
  561. package/dist/orchestration/analyze.js +0 -107
  562. package/dist/orchestration/analyze.js.map +0 -1
  563. package/dist/orchestration/bootstrap.js +0 -132
  564. package/dist/orchestration/bootstrap.js.map +0 -1
  565. package/dist/orchestration/context.js +0 -56
  566. package/dist/orchestration/context.js.map +0 -1
  567. package/dist/orchestration/critical-path.js +0 -100
  568. package/dist/orchestration/critical-path.js.map +0 -1
  569. package/dist/orchestration/index.js +0 -286
  570. package/dist/orchestration/index.js.map +0 -1
  571. package/dist/orchestration/parallel.js +0 -89
  572. package/dist/orchestration/parallel.js.map +0 -1
  573. package/dist/orchestration/protocol-validators.js +0 -524
  574. package/dist/orchestration/protocol-validators.js.map +0 -1
  575. package/dist/orchestration/skill-ops.js +0 -98
  576. package/dist/orchestration/skill-ops.js.map +0 -1
  577. package/dist/orchestration/status.js +0 -107
  578. package/dist/orchestration/status.js.map +0 -1
  579. package/dist/orchestration/unblock.js +0 -103
  580. package/dist/orchestration/unblock.js.map +0 -1
  581. package/dist/orchestration/validate-spawn.js +0 -67
  582. package/dist/orchestration/validate-spawn.js.map +0 -1
  583. package/dist/orchestration/waves.js +0 -86
  584. package/dist/orchestration/waves.js.map +0 -1
  585. package/dist/otel/index.js +0 -163
  586. package/dist/otel/index.js.map +0 -1
  587. package/dist/output.js +0 -132
  588. package/dist/output.js.map +0 -1
  589. package/dist/pagination.js +0 -64
  590. package/dist/pagination.js.map +0 -1
  591. package/dist/paths.js +0 -337
  592. package/dist/paths.js.map +0 -1
  593. package/dist/phases/deps.js +0 -372
  594. package/dist/phases/deps.js.map +0 -1
  595. package/dist/phases/index.js +0 -349
  596. package/dist/phases/index.js.map +0 -1
  597. package/dist/pipeline/index.js +0 -10
  598. package/dist/pipeline/index.js.map +0 -1
  599. package/dist/pipeline/phase.js +0 -45
  600. package/dist/pipeline/phase.js.map +0 -1
  601. package/dist/platform.js +0 -211
  602. package/dist/platform.js.map +0 -1
  603. package/dist/project-info.js +0 -84
  604. package/dist/project-info.js.map +0 -1
  605. package/dist/reconciliation/index.js +0 -10
  606. package/dist/reconciliation/index.js.map +0 -1
  607. package/dist/reconciliation/link-store.js +0 -129
  608. package/dist/reconciliation/link-store.js.map +0 -1
  609. package/dist/reconciliation/reconciliation-engine.js +0 -298
  610. package/dist/reconciliation/reconciliation-engine.js.map +0 -1
  611. package/dist/release/artifacts.js +0 -427
  612. package/dist/release/artifacts.js.map +0 -1
  613. package/dist/release/changelog-writer.js +0 -151
  614. package/dist/release/changelog-writer.js.map +0 -1
  615. package/dist/release/channel.js +0 -144
  616. package/dist/release/channel.js.map +0 -1
  617. package/dist/release/ci.js +0 -166
  618. package/dist/release/ci.js.map +0 -1
  619. package/dist/release/github-pr.js +0 -225
  620. package/dist/release/github-pr.js.map +0 -1
  621. package/dist/release/guards.js +0 -116
  622. package/dist/release/guards.js.map +0 -1
  623. package/dist/release/index.js +0 -22
  624. package/dist/release/index.js.map +0 -1
  625. package/dist/release/release-config.js +0 -158
  626. package/dist/release/release-config.js.map +0 -1
  627. package/dist/release/release-manifest.js +0 -1019
  628. package/dist/release/release-manifest.js.map +0 -1
  629. package/dist/release/version-bump.js +0 -255
  630. package/dist/release/version-bump.js.map +0 -1
  631. package/dist/remote/index.js +0 -257
  632. package/dist/remote/index.js.map +0 -1
  633. package/dist/repair.js +0 -130
  634. package/dist/repair.js.map +0 -1
  635. package/dist/research/index.js +0 -2
  636. package/dist/research/index.js.map +0 -1
  637. package/dist/roadmap/index.js +0 -59
  638. package/dist/roadmap/index.js.map +0 -1
  639. package/dist/routing/capability-matrix.js +0 -1557
  640. package/dist/routing/capability-matrix.js.map +0 -1
  641. package/dist/routing/index.js +0 -9
  642. package/dist/routing/index.js.map +0 -1
  643. package/dist/scaffold.js +0 -1178
  644. package/dist/scaffold.js.map +0 -1
  645. package/dist/schema-management.js +0 -295
  646. package/dist/schema-management.js.map +0 -1
  647. package/dist/security/index.js +0 -9
  648. package/dist/security/index.js.map +0 -1
  649. package/dist/security/input-sanitization.js +0 -321
  650. package/dist/security/input-sanitization.js.map +0 -1
  651. package/dist/sequence/index.js +0 -295
  652. package/dist/sequence/index.js.map +0 -1
  653. package/dist/sessions/assumptions.js +0 -54
  654. package/dist/sessions/assumptions.js.map +0 -1
  655. package/dist/sessions/briefing.js +0 -377
  656. package/dist/sessions/briefing.js.map +0 -1
  657. package/dist/sessions/context-alert.js +0 -222
  658. package/dist/sessions/context-alert.js.map +0 -1
  659. package/dist/sessions/context-inject.js +0 -61
  660. package/dist/sessions/context-inject.js.map +0 -1
  661. package/dist/sessions/context-monitor.js +0 -98
  662. package/dist/sessions/context-monitor.js.map +0 -1
  663. package/dist/sessions/decisions.js +0 -65
  664. package/dist/sessions/decisions.js.map +0 -1
  665. package/dist/sessions/find.js +0 -63
  666. package/dist/sessions/find.js.map +0 -1
  667. package/dist/sessions/handoff.js +0 -328
  668. package/dist/sessions/handoff.js.map +0 -1
  669. package/dist/sessions/hitl-warnings.js +0 -254
  670. package/dist/sessions/hitl-warnings.js.map +0 -1
  671. package/dist/sessions/index.js +0 -314
  672. package/dist/sessions/index.js.map +0 -1
  673. package/dist/sessions/session-archive.js +0 -40
  674. package/dist/sessions/session-archive.js.map +0 -1
  675. package/dist/sessions/session-cleanup.js +0 -59
  676. package/dist/sessions/session-cleanup.js.map +0 -1
  677. package/dist/sessions/session-drift.js +0 -134
  678. package/dist/sessions/session-drift.js.map +0 -1
  679. package/dist/sessions/session-enforcement.js +0 -144
  680. package/dist/sessions/session-enforcement.js.map +0 -1
  681. package/dist/sessions/session-grade.js +0 -253
  682. package/dist/sessions/session-grade.js.map +0 -1
  683. package/dist/sessions/session-history.js +0 -42
  684. package/dist/sessions/session-history.js.map +0 -1
  685. package/dist/sessions/session-id.js +0 -81
  686. package/dist/sessions/session-id.js.map +0 -1
  687. package/dist/sessions/session-memory-bridge.js +0 -52
  688. package/dist/sessions/session-memory-bridge.js.map +0 -1
  689. package/dist/sessions/session-show.js +0 -24
  690. package/dist/sessions/session-show.js.map +0 -1
  691. package/dist/sessions/session-stats.js +0 -69
  692. package/dist/sessions/session-stats.js.map +0 -1
  693. package/dist/sessions/session-suspend.js +0 -39
  694. package/dist/sessions/session-suspend.js.map +0 -1
  695. package/dist/sessions/session-switch.js +0 -51
  696. package/dist/sessions/session-switch.js.map +0 -1
  697. package/dist/sessions/session-view.js +0 -76
  698. package/dist/sessions/session-view.js.map +0 -1
  699. package/dist/sessions/statusline-setup.js +0 -85
  700. package/dist/sessions/statusline-setup.js.map +0 -1
  701. package/dist/sessions/types.js +0 -8
  702. package/dist/sessions/types.js.map +0 -1
  703. package/dist/signaldock/claude-code-transport.d.ts +0 -34
  704. package/dist/signaldock/claude-code-transport.d.ts.map +0 -1
  705. package/dist/signaldock/claude-code-transport.js +0 -107
  706. package/dist/signaldock/claude-code-transport.js.map +0 -1
  707. package/dist/signaldock/factory.d.ts +0 -22
  708. package/dist/signaldock/factory.d.ts.map +0 -1
  709. package/dist/signaldock/factory.js +0 -25
  710. package/dist/signaldock/factory.js.map +0 -1
  711. package/dist/signaldock/index.d.ts +0 -13
  712. package/dist/signaldock/index.d.ts.map +0 -1
  713. package/dist/signaldock/index.js +0 -9
  714. package/dist/signaldock/index.js.map +0 -1
  715. package/dist/signaldock/signaldock-transport.d.ts +0 -45
  716. package/dist/signaldock/signaldock-transport.d.ts.map +0 -1
  717. package/dist/signaldock/signaldock-transport.js +0 -122
  718. package/dist/signaldock/signaldock-transport.js.map +0 -1
  719. package/dist/signaldock/transport.d.ts +0 -49
  720. package/dist/signaldock/transport.d.ts.map +0 -1
  721. package/dist/signaldock/transport.js +0 -11
  722. package/dist/signaldock/transport.js.map +0 -1
  723. package/dist/signaldock/types.d.ts +0 -88
  724. package/dist/signaldock/types.d.ts.map +0 -1
  725. package/dist/signaldock/types.js +0 -11
  726. package/dist/signaldock/types.js.map +0 -1
  727. package/dist/skills/agents/config.js +0 -94
  728. package/dist/skills/agents/config.js.map +0 -1
  729. package/dist/skills/agents/install.js +0 -116
  730. package/dist/skills/agents/install.js.map +0 -1
  731. package/dist/skills/agents/registry.js +0 -161
  732. package/dist/skills/agents/registry.js.map +0 -1
  733. package/dist/skills/discovery.js +0 -333
  734. package/dist/skills/discovery.js.map +0 -1
  735. package/dist/skills/dispatch.js +0 -347
  736. package/dist/skills/dispatch.js.map +0 -1
  737. package/dist/skills/dynamic-skill-generator.js +0 -100
  738. package/dist/skills/dynamic-skill-generator.js.map +0 -1
  739. package/dist/skills/index.js +0 -44
  740. package/dist/skills/index.js.map +0 -1
  741. package/dist/skills/injection/subagent.js +0 -195
  742. package/dist/skills/injection/subagent.js.map +0 -1
  743. package/dist/skills/injection/token.js +0 -260
  744. package/dist/skills/injection/token.js.map +0 -1
  745. package/dist/skills/install.js +0 -40
  746. package/dist/skills/install.js.map +0 -1
  747. package/dist/skills/manifests/contribution.js +0 -175
  748. package/dist/skills/manifests/contribution.js.map +0 -1
  749. package/dist/skills/manifests/research.js +0 -281
  750. package/dist/skills/manifests/research.js.map +0 -1
  751. package/dist/skills/manifests/resolver.js +0 -146
  752. package/dist/skills/manifests/resolver.js.map +0 -1
  753. package/dist/skills/marketplace.js +0 -90
  754. package/dist/skills/marketplace.js.map +0 -1
  755. package/dist/skills/orchestrator/spawn.js +0 -178
  756. package/dist/skills/orchestrator/spawn.js.map +0 -1
  757. package/dist/skills/orchestrator/startup.js +0 -451
  758. package/dist/skills/orchestrator/startup.js.map +0 -1
  759. package/dist/skills/orchestrator/validator.js +0 -301
  760. package/dist/skills/orchestrator/validator.js.map +0 -1
  761. package/dist/skills/precedence-integration.js +0 -73
  762. package/dist/skills/precedence-integration.js.map +0 -1
  763. package/dist/skills/precedence-types.js +0 -16
  764. package/dist/skills/precedence-types.js.map +0 -1
  765. package/dist/skills/routing-table.js +0 -63
  766. package/dist/skills/routing-table.js.map +0 -1
  767. package/dist/skills/skill-paths.js +0 -220
  768. package/dist/skills/skill-paths.js.map +0 -1
  769. package/dist/skills/test-utility.js +0 -55
  770. package/dist/skills/test-utility.js.map +0 -1
  771. package/dist/skills/types.js +0 -118
  772. package/dist/skills/types.js.map +0 -1
  773. package/dist/skills/validation.js +0 -183
  774. package/dist/skills/validation.js.map +0 -1
  775. package/dist/skills/version.js +0 -57
  776. package/dist/skills/version.js.map +0 -1
  777. package/dist/snapshot/index.js +0 -188
  778. package/dist/snapshot/index.js.map +0 -1
  779. package/dist/spawn/adapter-registry.js +0 -246
  780. package/dist/spawn/adapter-registry.js.map +0 -1
  781. package/dist/spawn/index.js +0 -10
  782. package/dist/spawn/index.js.map +0 -1
  783. package/dist/stats/index.js +0 -343
  784. package/dist/stats/index.js.map +0 -1
  785. package/dist/stats/workflow-telemetry.js +0 -400
  786. package/dist/stats/workflow-telemetry.js.map +0 -1
  787. package/dist/sticky/archive.js +0 -47
  788. package/dist/sticky/archive.js.map +0 -1
  789. package/dist/sticky/convert.js +0 -235
  790. package/dist/sticky/convert.js.map +0 -1
  791. package/dist/sticky/create.js +0 -48
  792. package/dist/sticky/create.js.map +0 -1
  793. package/dist/sticky/id.js +0 -35
  794. package/dist/sticky/id.js.map +0 -1
  795. package/dist/sticky/index.js +0 -16
  796. package/dist/sticky/index.js.map +0 -1
  797. package/dist/sticky/list.js +0 -44
  798. package/dist/sticky/list.js.map +0 -1
  799. package/dist/sticky/purge.js +0 -45
  800. package/dist/sticky/purge.js.map +0 -1
  801. package/dist/sticky/show.js +0 -42
  802. package/dist/sticky/show.js.map +0 -1
  803. package/dist/sticky/types.js +0 -10
  804. package/dist/sticky/types.js.map +0 -1
  805. package/dist/store/atomic.js +0 -167
  806. package/dist/store/atomic.js.map +0 -1
  807. package/dist/store/backup.js +0 -94
  808. package/dist/store/backup.js.map +0 -1
  809. package/dist/store/brain-accessor.js +0 -397
  810. package/dist/store/brain-accessor.js.map +0 -1
  811. package/dist/store/brain-schema.js +0 -215
  812. package/dist/store/brain-schema.js.map +0 -1
  813. package/dist/store/brain-sqlite.js +0 -222
  814. package/dist/store/brain-sqlite.js.map +0 -1
  815. package/dist/store/cache.js +0 -168
  816. package/dist/store/cache.js.map +0 -1
  817. package/dist/store/chain-schema.js +0 -51
  818. package/dist/store/chain-schema.js.map +0 -1
  819. package/dist/store/converters.js +0 -122
  820. package/dist/store/converters.js.map +0 -1
  821. package/dist/store/cross-db-cleanup.js +0 -169
  822. package/dist/store/cross-db-cleanup.js.map +0 -1
  823. package/dist/store/data-accessor.js +0 -26
  824. package/dist/store/data-accessor.js.map +0 -1
  825. package/dist/store/data-safety-central.js +0 -269
  826. package/dist/store/data-safety-central.js.map +0 -1
  827. package/dist/store/data-safety.js +0 -274
  828. package/dist/store/data-safety.js.map +0 -1
  829. package/dist/store/db-helpers.js +0 -223
  830. package/dist/store/db-helpers.js.map +0 -1
  831. package/dist/store/export.js +0 -155
  832. package/dist/store/export.js.map +0 -1
  833. package/dist/store/file-utils.js +0 -270
  834. package/dist/store/file-utils.js.map +0 -1
  835. package/dist/store/git-checkpoint.js +0 -365
  836. package/dist/store/git-checkpoint.js.map +0 -1
  837. package/dist/store/import-logging.js +0 -139
  838. package/dist/store/import-logging.js.map +0 -1
  839. package/dist/store/import-remap.js +0 -145
  840. package/dist/store/import-remap.js.map +0 -1
  841. package/dist/store/import-sort.js +0 -121
  842. package/dist/store/import-sort.js.map +0 -1
  843. package/dist/store/index.js +0 -28
  844. package/dist/store/index.js.map +0 -1
  845. package/dist/store/json.js +0 -208
  846. package/dist/store/json.js.map +0 -1
  847. package/dist/store/lifecycle-store.js +0 -249
  848. package/dist/store/lifecycle-store.js.map +0 -1
  849. package/dist/store/lock.js +0 -70
  850. package/dist/store/lock.js.map +0 -1
  851. package/dist/store/migration-manager.js +0 -151
  852. package/dist/store/migration-manager.js.map +0 -1
  853. package/dist/store/migration-sqlite.js +0 -676
  854. package/dist/store/migration-sqlite.js.map +0 -1
  855. package/dist/store/nexus-schema.js +0 -62
  856. package/dist/store/nexus-schema.js.map +0 -1
  857. package/dist/store/nexus-sqlite.js +0 -217
  858. package/dist/store/nexus-sqlite.js.map +0 -1
  859. package/dist/store/nexus-validation-schemas.js +0 -40
  860. package/dist/store/nexus-validation-schemas.js.map +0 -1
  861. package/dist/store/parsers.js +0 -37
  862. package/dist/store/parsers.js.map +0 -1
  863. package/dist/store/project-detect.js +0 -457
  864. package/dist/store/project-detect.js.map +0 -1
  865. package/dist/store/provider.js +0 -101
  866. package/dist/store/provider.js.map +0 -1
  867. package/dist/store/safety-data-accessor.js +0 -243
  868. package/dist/store/safety-data-accessor.js.map +0 -1
  869. package/dist/store/schema.js +0 -7
  870. package/dist/store/schema.js.map +0 -1
  871. package/dist/store/session-store.js +0 -219
  872. package/dist/store/session-store.js.map +0 -1
  873. package/dist/store/sqlite-backup.js +0 -105
  874. package/dist/store/sqlite-backup.js.map +0 -1
  875. package/dist/store/sqlite-data-accessor.js +0 -734
  876. package/dist/store/sqlite-data-accessor.js.map +0 -1
  877. package/dist/store/sqlite.js +0 -436
  878. package/dist/store/sqlite.js.map +0 -1
  879. package/dist/store/status-registry.js +0 -8
  880. package/dist/store/status-registry.js.map +0 -1
  881. package/dist/store/task-store.js +0 -348
  882. package/dist/store/task-store.js.map +0 -1
  883. package/dist/store/tasks-schema.js +0 -604
  884. package/dist/store/tasks-schema.js.map +0 -1
  885. package/dist/store/typed-query.js +0 -15
  886. package/dist/store/typed-query.js.map +0 -1
  887. package/dist/store/validation-schemas.js +0 -278
  888. package/dist/store/validation-schemas.js.map +0 -1
  889. package/dist/system/archive-analytics.js +0 -277
  890. package/dist/system/archive-analytics.js.map +0 -1
  891. package/dist/system/archive-stats.js +0 -64
  892. package/dist/system/archive-stats.js.map +0 -1
  893. package/dist/system/audit.js +0 -145
  894. package/dist/system/audit.js.map +0 -1
  895. package/dist/system/backup.js +0 -141
  896. package/dist/system/backup.js.map +0 -1
  897. package/dist/system/cleanup.js +0 -134
  898. package/dist/system/cleanup.js.map +0 -1
  899. package/dist/system/health.js +0 -1054
  900. package/dist/system/health.js.map +0 -1
  901. package/dist/system/index.js +0 -18
  902. package/dist/system/index.js.map +0 -1
  903. package/dist/system/inject-generate.js +0 -122
  904. package/dist/system/inject-generate.js.map +0 -1
  905. package/dist/system/labels.js +0 -38
  906. package/dist/system/labels.js.map +0 -1
  907. package/dist/system/metrics.js +0 -61
  908. package/dist/system/metrics.js.map +0 -1
  909. package/dist/system/migrate.js +0 -43
  910. package/dist/system/migrate.js.map +0 -1
  911. package/dist/system/platform-paths.js +0 -80
  912. package/dist/system/platform-paths.js.map +0 -1
  913. package/dist/system/runtime.js +0 -161
  914. package/dist/system/runtime.js.map +0 -1
  915. package/dist/system/safestop.js +0 -99
  916. package/dist/system/safestop.js.map +0 -1
  917. package/dist/system/storage-preflight.js +0 -123
  918. package/dist/system/storage-preflight.js.map +0 -1
  919. package/dist/task-work/index.js +0 -155
  920. package/dist/task-work/index.js.map +0 -1
  921. package/dist/tasks/add.js +0 -661
  922. package/dist/tasks/add.js.map +0 -1
  923. package/dist/tasks/analyze.js +0 -85
  924. package/dist/tasks/analyze.js.map +0 -1
  925. package/dist/tasks/archive.js +0 -90
  926. package/dist/tasks/archive.js.map +0 -1
  927. package/dist/tasks/atomicity.js +0 -83
  928. package/dist/tasks/atomicity.js.map +0 -1
  929. package/dist/tasks/cancel-ops.js +0 -83
  930. package/dist/tasks/cancel-ops.js.map +0 -1
  931. package/dist/tasks/complete.js +0 -208
  932. package/dist/tasks/complete.js.map +0 -1
  933. package/dist/tasks/crossref-extract.js +0 -73
  934. package/dist/tasks/crossref-extract.js.map +0 -1
  935. package/dist/tasks/delete-preview.js +0 -192
  936. package/dist/tasks/delete-preview.js.map +0 -1
  937. package/dist/tasks/delete.js +0 -120
  938. package/dist/tasks/delete.js.map +0 -1
  939. package/dist/tasks/deletion-strategy.js +0 -200
  940. package/dist/tasks/deletion-strategy.js.map +0 -1
  941. package/dist/tasks/dependency-check.js +0 -278
  942. package/dist/tasks/dependency-check.js.map +0 -1
  943. package/dist/tasks/deps-ready.js +0 -32
  944. package/dist/tasks/deps-ready.js.map +0 -1
  945. package/dist/tasks/enforcement.js +0 -86
  946. package/dist/tasks/enforcement.js.map +0 -1
  947. package/dist/tasks/epic-enforcement.js +0 -294
  948. package/dist/tasks/epic-enforcement.js.map +0 -1
  949. package/dist/tasks/find.js +0 -148
  950. package/dist/tasks/find.js.map +0 -1
  951. package/dist/tasks/graph-cache.js +0 -127
  952. package/dist/tasks/graph-cache.js.map +0 -1
  953. package/dist/tasks/graph-ops.js +0 -171
  954. package/dist/tasks/graph-ops.js.map +0 -1
  955. package/dist/tasks/graph-rag.js +0 -328
  956. package/dist/tasks/graph-rag.js.map +0 -1
  957. package/dist/tasks/hierarchy-policy.js +0 -149
  958. package/dist/tasks/hierarchy-policy.js.map +0 -1
  959. package/dist/tasks/hierarchy.js +0 -185
  960. package/dist/tasks/hierarchy.js.map +0 -1
  961. package/dist/tasks/id-generator.js +0 -65
  962. package/dist/tasks/id-generator.js.map +0 -1
  963. package/dist/tasks/index.js +0 -14
  964. package/dist/tasks/index.js.map +0 -1
  965. package/dist/tasks/labels.js +0 -52
  966. package/dist/tasks/labels.js.map +0 -1
  967. package/dist/tasks/list.js +0 -68
  968. package/dist/tasks/list.js.map +0 -1
  969. package/dist/tasks/phase-tracking.js +0 -133
  970. package/dist/tasks/phase-tracking.js.map +0 -1
  971. package/dist/tasks/pipeline-stage.js +0 -248
  972. package/dist/tasks/pipeline-stage.js.map +0 -1
  973. package/dist/tasks/plan.js +0 -268
  974. package/dist/tasks/plan.js.map +0 -1
  975. package/dist/tasks/relates.js +0 -89
  976. package/dist/tasks/relates.js.map +0 -1
  977. package/dist/tasks/reparent.d.ts +0 -38
  978. package/dist/tasks/reparent.d.ts.map +0 -1
  979. package/dist/tasks/show.js +0 -78
  980. package/dist/tasks/show.js.map +0 -1
  981. package/dist/tasks/size-weighting.js +0 -86
  982. package/dist/tasks/size-weighting.js.map +0 -1
  983. package/dist/tasks/staleness.js +0 -86
  984. package/dist/tasks/staleness.js.map +0 -1
  985. package/dist/tasks/task-ops.js +0 -1340
  986. package/dist/tasks/task-ops.js.map +0 -1
  987. package/dist/tasks/update.js +0 -271
  988. package/dist/tasks/update.js.map +0 -1
  989. package/dist/templates/index.js +0 -10
  990. package/dist/templates/index.js.map +0 -1
  991. package/dist/templates/parser.js +0 -254
  992. package/dist/templates/parser.js.map +0 -1
  993. package/dist/ui/aliases.js +0 -153
  994. package/dist/ui/aliases.js.map +0 -1
  995. package/dist/ui/changelog.js +0 -184
  996. package/dist/ui/changelog.js.map +0 -1
  997. package/dist/ui/command-registry.js +0 -168
  998. package/dist/ui/command-registry.js.map +0 -1
  999. package/dist/ui/flags.js +0 -94
  1000. package/dist/ui/flags.js.map +0 -1
  1001. package/dist/ui/index.js +0 -24
  1002. package/dist/ui/index.js.map +0 -1
  1003. package/dist/ui/injection-legacy.d.ts +0 -26
  1004. package/dist/ui/injection-legacy.d.ts.map +0 -1
  1005. package/dist/ui/injection-legacy.js +0 -42
  1006. package/dist/ui/injection-legacy.js.map +0 -1
  1007. package/dist/upgrade.js +0 -1144
  1008. package/dist/upgrade.js.map +0 -1
  1009. package/dist/validation/chain-validation.js +0 -146
  1010. package/dist/validation/chain-validation.js.map +0 -1
  1011. package/dist/validation/compliance.js +0 -155
  1012. package/dist/validation/compliance.js.map +0 -1
  1013. package/dist/validation/docs-sync.js +0 -212
  1014. package/dist/validation/docs-sync.js.map +0 -1
  1015. package/dist/validation/doctor/checks.js +0 -1069
  1016. package/dist/validation/doctor/checks.js.map +0 -1
  1017. package/dist/validation/doctor/index.js +0 -9
  1018. package/dist/validation/doctor/index.js.map +0 -1
  1019. package/dist/validation/doctor/project-cache.js +0 -160
  1020. package/dist/validation/doctor/project-cache.js.map +0 -1
  1021. package/dist/validation/doctor/utils.js +0 -155
  1022. package/dist/validation/doctor/utils.js.map +0 -1
  1023. package/dist/validation/engine.js +0 -902
  1024. package/dist/validation/engine.js.map +0 -1
  1025. package/dist/validation/gap-check.js +0 -175
  1026. package/dist/validation/gap-check.js.map +0 -1
  1027. package/dist/validation/index.js +0 -40
  1028. package/dist/validation/index.js.map +0 -1
  1029. package/dist/validation/manifest.js +0 -237
  1030. package/dist/validation/manifest.js.map +0 -1
  1031. package/dist/validation/operation-gate-validators.js +0 -724
  1032. package/dist/validation/operation-gate-validators.js.map +0 -1
  1033. package/dist/validation/operation-verification-gates.js +0 -532
  1034. package/dist/validation/operation-verification-gates.js.map +0 -1
  1035. package/dist/validation/param-utils.js +0 -139
  1036. package/dist/validation/param-utils.js.map +0 -1
  1037. package/dist/validation/protocol-common.js +0 -300
  1038. package/dist/validation/protocol-common.js.map +0 -1
  1039. package/dist/validation/protocols/consensus.js +0 -71
  1040. package/dist/validation/protocols/consensus.js.map +0 -1
  1041. package/dist/validation/protocols/contribution.js +0 -59
  1042. package/dist/validation/protocols/contribution.js.map +0 -1
  1043. package/dist/validation/protocols/decomposition.js +0 -59
  1044. package/dist/validation/protocols/decomposition.js.map +0 -1
  1045. package/dist/validation/protocols/implementation.js +0 -59
  1046. package/dist/validation/protocols/implementation.js.map +0 -1
  1047. package/dist/validation/protocols/release-protocol.js +0 -60
  1048. package/dist/validation/protocols/release-protocol.js.map +0 -1
  1049. package/dist/validation/protocols/research.js +0 -77
  1050. package/dist/validation/protocols/research.js.map +0 -1
  1051. package/dist/validation/protocols/specification.js +0 -84
  1052. package/dist/validation/protocols/specification.js.map +0 -1
  1053. package/dist/validation/protocols/testing-protocol.js +0 -70
  1054. package/dist/validation/protocols/testing-protocol.js.map +0 -1
  1055. package/dist/validation/protocols/validation-protocol.js +0 -70
  1056. package/dist/validation/protocols/validation-protocol.js.map +0 -1
  1057. package/dist/validation/schema-integrity.js +0 -170
  1058. package/dist/validation/schema-integrity.js.map +0 -1
  1059. package/dist/validation/schema-validator.js +0 -176
  1060. package/dist/validation/schema-validator.js.map +0 -1
  1061. package/dist/validation/validate-ops.js +0 -937
  1062. package/dist/validation/validate-ops.js.map +0 -1
  1063. package/dist/validation/validation-rules.js +0 -226
  1064. package/dist/validation/validation-rules.js.map +0 -1
  1065. package/dist/validation/verification.js +0 -321
  1066. package/dist/validation/verification.js.map +0 -1
  1067. package/src/signaldock/__tests__/claude-code-transport.test.d.ts +0 -7
  1068. package/src/signaldock/__tests__/claude-code-transport.test.d.ts.map +0 -1
  1069. package/src/signaldock/__tests__/claude-code-transport.test.js +0 -147
  1070. package/src/signaldock/__tests__/claude-code-transport.test.js.map +0 -1
  1071. package/src/signaldock/__tests__/claude-code-transport.test.ts +0 -180
  1072. package/src/signaldock/__tests__/factory.test.d.ts +0 -7
  1073. package/src/signaldock/__tests__/factory.test.d.ts.map +0 -1
  1074. package/src/signaldock/__tests__/factory.test.js +0 -55
  1075. package/src/signaldock/__tests__/factory.test.js.map +0 -1
  1076. package/src/signaldock/__tests__/factory.test.ts +0 -61
  1077. package/src/signaldock/__tests__/signaldock-transport.test.d.ts +0 -9
  1078. package/src/signaldock/__tests__/signaldock-transport.test.d.ts.map +0 -1
  1079. package/src/signaldock/__tests__/signaldock-transport.test.js +0 -321
  1080. package/src/signaldock/__tests__/signaldock-transport.test.js.map +0 -1
  1081. package/src/signaldock/__tests__/signaldock-transport.test.ts +0 -421
  1082. package/src/signaldock/claude-code-transport.ts +0 -137
  1083. package/src/signaldock/factory.ts +0 -39
  1084. package/src/signaldock/index.ts +0 -28
  1085. package/src/signaldock/signaldock-transport.ts +0 -194
  1086. package/src/signaldock/transport.ts +0 -78
  1087. package/src/signaldock/types.ts +0 -100
package/dist/index.js CHANGED
@@ -516,6 +516,1207 @@ var init_status_registry = __esm({
516
516
  }
517
517
  });
518
518
 
519
+ // packages/contracts/src/wasm/lafs-core/lafs_core.js
520
+ var lafs_core_exports = {};
521
+ __export(lafs_core_exports, {
522
+ WasmLafsEnvelope: () => WasmLafsEnvelope,
523
+ WasmLafsMeta: () => WasmLafsMeta,
524
+ WasmLafsTransport: () => WasmLafsTransport,
525
+ create_transport: () => create_transport,
526
+ default: () => __wbg_init,
527
+ initSync: () => initSync
528
+ });
529
+ function create_transport(transport) {
530
+ const ptr0 = passStringToWasm0(transport, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
531
+ const len0 = WASM_VECTOR_LEN;
532
+ const ret = wasm.create_transport(ptr0, len0);
533
+ return WasmLafsTransport.__wrap(ret);
534
+ }
535
+ function __wbg_get_imports() {
536
+ const import0 = {
537
+ __proto__: null,
538
+ __wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {
539
+ throw new Error(getStringFromWasm0(arg0, arg1));
540
+ },
541
+ __wbg_getRandomValues_a1cf2e70b003a59d: function() {
542
+ return handleError(function(arg0, arg1) {
543
+ globalThis.crypto.getRandomValues(getArrayU8FromWasm0(arg0, arg1));
544
+ }, arguments);
545
+ },
546
+ __wbg_getTime_1dad7b5386ddd2d9: function(arg0) {
547
+ const ret = arg0.getTime();
548
+ return ret;
549
+ },
550
+ __wbg_new_0_1dcafdf5e786e876: function() {
551
+ const ret = /* @__PURE__ */ new Date();
552
+ return ret;
553
+ },
554
+ __wbindgen_init_externref_table: function() {
555
+ const table = wasm.__wbindgen_externrefs;
556
+ const offset = table.grow(4);
557
+ table.set(0, void 0);
558
+ table.set(offset + 0, void 0);
559
+ table.set(offset + 1, null);
560
+ table.set(offset + 2, true);
561
+ table.set(offset + 3, false);
562
+ }
563
+ };
564
+ return {
565
+ __proto__: null,
566
+ "./lafs_core_bg.js": import0
567
+ };
568
+ }
569
+ function addToExternrefTable0(obj) {
570
+ const idx = wasm.__externref_table_alloc();
571
+ wasm.__wbindgen_externrefs.set(idx, obj);
572
+ return idx;
573
+ }
574
+ function _assertClass(instance, klass) {
575
+ if (!(instance instanceof klass)) {
576
+ throw new Error(`expected instance of ${klass.name}`);
577
+ }
578
+ }
579
+ function getArrayU8FromWasm0(ptr, len) {
580
+ ptr = ptr >>> 0;
581
+ return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len);
582
+ }
583
+ function getStringFromWasm0(ptr, len) {
584
+ ptr = ptr >>> 0;
585
+ return decodeText(ptr, len);
586
+ }
587
+ function getUint8ArrayMemory0() {
588
+ if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.byteLength === 0) {
589
+ cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer);
590
+ }
591
+ return cachedUint8ArrayMemory0;
592
+ }
593
+ function handleError(f, args) {
594
+ try {
595
+ return f.apply(this, args);
596
+ } catch (e) {
597
+ const idx = addToExternrefTable0(e);
598
+ wasm.__wbindgen_exn_store(idx);
599
+ }
600
+ }
601
+ function passStringToWasm0(arg, malloc, realloc) {
602
+ if (realloc === void 0) {
603
+ const buf = cachedTextEncoder.encode(arg);
604
+ const ptr2 = malloc(buf.length, 1) >>> 0;
605
+ getUint8ArrayMemory0().subarray(ptr2, ptr2 + buf.length).set(buf);
606
+ WASM_VECTOR_LEN = buf.length;
607
+ return ptr2;
608
+ }
609
+ let len = arg.length;
610
+ let ptr = malloc(len, 1) >>> 0;
611
+ const mem = getUint8ArrayMemory0();
612
+ let offset = 0;
613
+ for (; offset < len; offset++) {
614
+ const code = arg.charCodeAt(offset);
615
+ if (code > 127) break;
616
+ mem[ptr + offset] = code;
617
+ }
618
+ if (offset !== len) {
619
+ if (offset !== 0) {
620
+ arg = arg.slice(offset);
621
+ }
622
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
623
+ const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len);
624
+ const ret = cachedTextEncoder.encodeInto(arg, view);
625
+ offset += ret.written;
626
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
627
+ }
628
+ WASM_VECTOR_LEN = offset;
629
+ return ptr;
630
+ }
631
+ function decodeText(ptr, len) {
632
+ numBytesDecoded += len;
633
+ if (numBytesDecoded >= MAX_SAFARI_DECODE_BYTES) {
634
+ cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
635
+ cachedTextDecoder.decode();
636
+ numBytesDecoded = len;
637
+ }
638
+ return cachedTextDecoder.decode(getUint8ArrayMemory0().subarray(ptr, ptr + len));
639
+ }
640
+ function __wbg_finalize_init(instance, module) {
641
+ wasm = instance.exports;
642
+ wasmModule = module;
643
+ cachedUint8ArrayMemory0 = null;
644
+ wasm.__wbindgen_start();
645
+ return wasm;
646
+ }
647
+ async function __wbg_load(module, imports) {
648
+ if (typeof Response === "function" && module instanceof Response) {
649
+ if (typeof WebAssembly.instantiateStreaming === "function") {
650
+ try {
651
+ return await WebAssembly.instantiateStreaming(module, imports);
652
+ } catch (e) {
653
+ const validResponse = module.ok && expectedResponseType(module.type);
654
+ if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {
655
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
656
+ } else {
657
+ throw e;
658
+ }
659
+ }
660
+ }
661
+ const bytes = await module.arrayBuffer();
662
+ return await WebAssembly.instantiate(bytes, imports);
663
+ } else {
664
+ const instance = await WebAssembly.instantiate(module, imports);
665
+ if (instance instanceof WebAssembly.Instance) {
666
+ return { instance, module };
667
+ } else {
668
+ return instance;
669
+ }
670
+ }
671
+ function expectedResponseType(type) {
672
+ switch (type) {
673
+ case "basic":
674
+ case "cors":
675
+ case "default":
676
+ return true;
677
+ }
678
+ return false;
679
+ }
680
+ }
681
+ function initSync(module) {
682
+ if (wasm !== void 0) return wasm;
683
+ if (module !== void 0) {
684
+ if (Object.getPrototypeOf(module) === Object.prototype) {
685
+ ({ module } = module);
686
+ } else {
687
+ console.warn("using deprecated parameters for `initSync()`; pass a single object instead");
688
+ }
689
+ }
690
+ const imports = __wbg_get_imports();
691
+ if (!(module instanceof WebAssembly.Module)) {
692
+ module = new WebAssembly.Module(module);
693
+ }
694
+ const instance = new WebAssembly.Instance(module, imports);
695
+ return __wbg_finalize_init(instance, module);
696
+ }
697
+ async function __wbg_init(module_or_path) {
698
+ if (wasm !== void 0) return wasm;
699
+ if (module_or_path !== void 0) {
700
+ if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
701
+ ({ module_or_path } = module_or_path);
702
+ } else {
703
+ console.warn("using deprecated parameters for the initialization function; pass a single object instead");
704
+ }
705
+ }
706
+ if (module_or_path === void 0) {
707
+ module_or_path = new URL("lafs_core_bg.wasm", import.meta.url);
708
+ }
709
+ const imports = __wbg_get_imports();
710
+ if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {
711
+ module_or_path = fetch(module_or_path);
712
+ }
713
+ const { instance, module } = await __wbg_load(await module_or_path, imports);
714
+ return __wbg_finalize_init(instance, module);
715
+ }
716
+ var WasmLafsEnvelope, WasmLafsMeta, WasmLafsTransport, WasmLafsEnvelopeFinalization, WasmLafsMetaFinalization, WasmLafsTransportFinalization, cachedUint8ArrayMemory0, cachedTextDecoder, MAX_SAFARI_DECODE_BYTES, numBytesDecoded, cachedTextEncoder, WASM_VECTOR_LEN, wasmModule, wasm;
717
+ var init_lafs_core = __esm({
718
+ "packages/contracts/src/wasm/lafs-core/lafs_core.js"() {
719
+ "use strict";
720
+ WasmLafsEnvelope = class _WasmLafsEnvelope {
721
+ static __wrap(ptr) {
722
+ ptr = ptr >>> 0;
723
+ const obj = Object.create(_WasmLafsEnvelope.prototype);
724
+ obj.__wbg_ptr = ptr;
725
+ WasmLafsEnvelopeFinalization.register(obj, obj.__wbg_ptr, obj);
726
+ return obj;
727
+ }
728
+ __destroy_into_raw() {
729
+ const ptr = this.__wbg_ptr;
730
+ this.__wbg_ptr = 0;
731
+ WasmLafsEnvelopeFinalization.unregister(this);
732
+ return ptr;
733
+ }
734
+ free() {
735
+ const ptr = this.__destroy_into_raw();
736
+ wasm.__wbg_wasmlafsenvelope_free(ptr, 0);
737
+ }
738
+ /**
739
+ * Create an error envelope.
740
+ *
741
+ * # Arguments
742
+ * * `code` - Error code string
743
+ * * `message` - Error message
744
+ * * `meta` - LAFS metadata
745
+ * @param {string} code
746
+ * @param {string} message
747
+ * @param {WasmLafsMeta} meta
748
+ * @returns {WasmLafsEnvelope}
749
+ */
750
+ static createError(code, message, meta) {
751
+ const ptr0 = passStringToWasm0(code, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
752
+ const len0 = WASM_VECTOR_LEN;
753
+ const ptr1 = passStringToWasm0(message, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
754
+ const len1 = WASM_VECTOR_LEN;
755
+ _assertClass(meta, WasmLafsMeta);
756
+ var ptr2 = meta.__destroy_into_raw();
757
+ const ret = wasm.wasmlafsenvelope_createError(ptr0, len0, ptr1, len1, ptr2);
758
+ return _WasmLafsEnvelope.__wrap(ret);
759
+ }
760
+ /**
761
+ * Create a success envelope.
762
+ *
763
+ * # Arguments
764
+ * * `data` - JSON string of the result data
765
+ * * `meta` - LAFS metadata
766
+ * @param {string} data
767
+ * @param {WasmLafsMeta} meta
768
+ * @returns {WasmLafsEnvelope}
769
+ */
770
+ static createSuccess(data, meta) {
771
+ const ptr0 = passStringToWasm0(data, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
772
+ const len0 = WASM_VECTOR_LEN;
773
+ _assertClass(meta, WasmLafsMeta);
774
+ var ptr1 = meta.__destroy_into_raw();
775
+ const ret = wasm.wasmlafsenvelope_createSuccess(ptr0, len0, ptr1);
776
+ return _WasmLafsEnvelope.__wrap(ret);
777
+ }
778
+ /**
779
+ * Get the error as a JSON string.
780
+ * @returns {string}
781
+ */
782
+ get error_json() {
783
+ let deferred1_0;
784
+ let deferred1_1;
785
+ try {
786
+ const ret = wasm.wasmlafsenvelope_error_json(this.__wbg_ptr);
787
+ deferred1_0 = ret[0];
788
+ deferred1_1 = ret[1];
789
+ return getStringFromWasm0(ret[0], ret[1]);
790
+ } finally {
791
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
792
+ }
793
+ }
794
+ /**
795
+ * Get the metadata as a JSON string.
796
+ * @returns {string}
797
+ */
798
+ get meta_json() {
799
+ let deferred1_0;
800
+ let deferred1_1;
801
+ try {
802
+ const ret = wasm.wasmlafsenvelope_meta_json(this.__wbg_ptr);
803
+ deferred1_0 = ret[0];
804
+ deferred1_1 = ret[1];
805
+ return getStringFromWasm0(ret[0], ret[1]);
806
+ } finally {
807
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
808
+ }
809
+ }
810
+ /**
811
+ * Get the result as a JSON string.
812
+ * @returns {string}
813
+ */
814
+ get result_json() {
815
+ let deferred1_0;
816
+ let deferred1_1;
817
+ try {
818
+ const ret = wasm.wasmlafsenvelope_result_json(this.__wbg_ptr);
819
+ deferred1_0 = ret[0];
820
+ deferred1_1 = ret[1];
821
+ return getStringFromWasm0(ret[0], ret[1]);
822
+ } finally {
823
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
824
+ }
825
+ }
826
+ /**
827
+ * Check if the envelope represents success.
828
+ * @returns {boolean}
829
+ */
830
+ get success() {
831
+ const ret = wasm.wasmlafsenvelope_success(this.__wbg_ptr);
832
+ return ret !== 0;
833
+ }
834
+ };
835
+ if (Symbol.dispose) WasmLafsEnvelope.prototype[Symbol.dispose] = WasmLafsEnvelope.prototype.free;
836
+ WasmLafsMeta = class {
837
+ __destroy_into_raw() {
838
+ const ptr = this.__wbg_ptr;
839
+ this.__wbg_ptr = 0;
840
+ WasmLafsMetaFinalization.unregister(this);
841
+ return ptr;
842
+ }
843
+ free() {
844
+ const ptr = this.__destroy_into_raw();
845
+ wasm.__wbg_wasmlafsmeta_free(ptr, 0);
846
+ }
847
+ /**
848
+ * Create new LAFS metadata.
849
+ *
850
+ * # Arguments
851
+ * * `operation` - The operation name (e.g., "tasks.list")
852
+ * * `transport` - Transport type string ("cli", "http", "grpc", "sdk")
853
+ * @param {string} operation
854
+ * @param {string} transport
855
+ */
856
+ constructor(operation, transport) {
857
+ const ptr0 = passStringToWasm0(operation, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
858
+ const len0 = WASM_VECTOR_LEN;
859
+ const ptr1 = passStringToWasm0(transport, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
860
+ const len1 = WASM_VECTOR_LEN;
861
+ const ret = wasm.wasmlafsmeta_new(ptr0, len0, ptr1, len1);
862
+ this.__wbg_ptr = ret >>> 0;
863
+ WasmLafsMetaFinalization.register(this, this.__wbg_ptr, this);
864
+ return this;
865
+ }
866
+ /**
867
+ * Get the operation name.
868
+ * @returns {string}
869
+ */
870
+ get operation() {
871
+ let deferred1_0;
872
+ let deferred1_1;
873
+ try {
874
+ const ret = wasm.wasmlafsmeta_operation(this.__wbg_ptr);
875
+ deferred1_0 = ret[0];
876
+ deferred1_1 = ret[1];
877
+ return getStringFromWasm0(ret[0], ret[1]);
878
+ } finally {
879
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
880
+ }
881
+ }
882
+ /**
883
+ * Get the schema version.
884
+ * @returns {string}
885
+ */
886
+ get schema_version() {
887
+ let deferred1_0;
888
+ let deferred1_1;
889
+ try {
890
+ const ret = wasm.wasmlafsmeta_schema_version(this.__wbg_ptr);
891
+ deferred1_0 = ret[0];
892
+ deferred1_1 = ret[1];
893
+ return getStringFromWasm0(ret[0], ret[1]);
894
+ } finally {
895
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
896
+ }
897
+ }
898
+ /**
899
+ * Get the LAFS spec version.
900
+ * @returns {string}
901
+ */
902
+ get spec_version() {
903
+ let deferred1_0;
904
+ let deferred1_1;
905
+ try {
906
+ const ret = wasm.wasmlafsmeta_spec_version(this.__wbg_ptr);
907
+ deferred1_0 = ret[0];
908
+ deferred1_1 = ret[1];
909
+ return getStringFromWasm0(ret[0], ret[1]);
910
+ } finally {
911
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
912
+ }
913
+ }
914
+ /**
915
+ * Get the transport type as a string.
916
+ * @returns {string}
917
+ */
918
+ get transport() {
919
+ let deferred1_0;
920
+ let deferred1_1;
921
+ try {
922
+ const ret = wasm.wasmlafsmeta_transport(this.__wbg_ptr);
923
+ deferred1_0 = ret[0];
924
+ deferred1_1 = ret[1];
925
+ return getStringFromWasm0(ret[0], ret[1]);
926
+ } finally {
927
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
928
+ }
929
+ }
930
+ };
931
+ if (Symbol.dispose) WasmLafsMeta.prototype[Symbol.dispose] = WasmLafsMeta.prototype.free;
932
+ WasmLafsTransport = class _WasmLafsTransport {
933
+ static __wrap(ptr) {
934
+ ptr = ptr >>> 0;
935
+ const obj = Object.create(_WasmLafsTransport.prototype);
936
+ obj.__wbg_ptr = ptr;
937
+ WasmLafsTransportFinalization.register(obj, obj.__wbg_ptr, obj);
938
+ return obj;
939
+ }
940
+ __destroy_into_raw() {
941
+ const ptr = this.__wbg_ptr;
942
+ this.__wbg_ptr = 0;
943
+ WasmLafsTransportFinalization.unregister(this);
944
+ return ptr;
945
+ }
946
+ free() {
947
+ const ptr = this.__destroy_into_raw();
948
+ wasm.__wbg_wasmlafstransport_free(ptr, 0);
949
+ }
950
+ /**
951
+ * Create a CLI transport variant.
952
+ * @returns {WasmLafsTransport}
953
+ */
954
+ static Cli() {
955
+ const ret = wasm.wasmlafstransport_Cli();
956
+ return _WasmLafsTransport.__wrap(ret);
957
+ }
958
+ /**
959
+ * Create a gRPC transport variant.
960
+ * @returns {WasmLafsTransport}
961
+ */
962
+ static Grpc() {
963
+ const ret = wasm.wasmlafstransport_Grpc();
964
+ return _WasmLafsTransport.__wrap(ret);
965
+ }
966
+ /**
967
+ * Create an HTTP transport variant.
968
+ * @returns {WasmLafsTransport}
969
+ */
970
+ static Http() {
971
+ const ret = wasm.wasmlafstransport_Http();
972
+ return _WasmLafsTransport.__wrap(ret);
973
+ }
974
+ /**
975
+ * Create an SDK transport variant.
976
+ * @returns {WasmLafsTransport}
977
+ */
978
+ static Sdk() {
979
+ const ret = wasm.wasmlafstransport_Sdk();
980
+ return _WasmLafsTransport.__wrap(ret);
981
+ }
982
+ /**
983
+ * Get the transport as a string.
984
+ * @returns {string}
985
+ */
986
+ get as_string() {
987
+ let deferred1_0;
988
+ let deferred1_1;
989
+ try {
990
+ const ret = wasm.wasmlafstransport_as_string(this.__wbg_ptr);
991
+ deferred1_0 = ret[0];
992
+ deferred1_1 = ret[1];
993
+ return getStringFromWasm0(ret[0], ret[1]);
994
+ } finally {
995
+ wasm.__wbindgen_free(deferred1_0, deferred1_1, 1);
996
+ }
997
+ }
998
+ };
999
+ if (Symbol.dispose) WasmLafsTransport.prototype[Symbol.dispose] = WasmLafsTransport.prototype.free;
1000
+ WasmLafsEnvelopeFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
1001
+ }, unregister: () => {
1002
+ } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmlafsenvelope_free(ptr >>> 0, 1));
1003
+ WasmLafsMetaFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
1004
+ }, unregister: () => {
1005
+ } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmlafsmeta_free(ptr >>> 0, 1));
1006
+ WasmLafsTransportFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
1007
+ }, unregister: () => {
1008
+ } } : new FinalizationRegistry((ptr) => wasm.__wbg_wasmlafstransport_free(ptr >>> 0, 1));
1009
+ cachedUint8ArrayMemory0 = null;
1010
+ cachedTextDecoder = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
1011
+ cachedTextDecoder.decode();
1012
+ MAX_SAFARI_DECODE_BYTES = 2146435072;
1013
+ numBytesDecoded = 0;
1014
+ cachedTextEncoder = new TextEncoder();
1015
+ if (!("encodeInto" in cachedTextEncoder)) {
1016
+ cachedTextEncoder.encodeInto = function(arg, view) {
1017
+ const buf = cachedTextEncoder.encode(arg);
1018
+ view.set(buf);
1019
+ return {
1020
+ read: arg.length,
1021
+ written: buf.length
1022
+ };
1023
+ };
1024
+ }
1025
+ WASM_VECTOR_LEN = 0;
1026
+ }
1027
+ });
1028
+
1029
+ // packages/contracts/src/wasm/conduit-core/conduit_core.js
1030
+ var conduit_core_exports = {};
1031
+ __export(conduit_core_exports, {
1032
+ WasmCantMetadata: () => WasmCantMetadata,
1033
+ WasmConduitMessage: () => WasmConduitMessage,
1034
+ WasmConduitState: () => WasmConduitState,
1035
+ create_conduit_state: () => create_conduit_state,
1036
+ default: () => __wbg_init2,
1037
+ initSync: () => initSync2,
1038
+ parse_conduit_message: () => parse_conduit_message
1039
+ });
1040
+ function create_conduit_state(state) {
1041
+ const ptr0 = passStringToWasm02(state, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1042
+ const len0 = WASM_VECTOR_LEN2;
1043
+ const ret = wasm2.create_conduit_state(ptr0, len0);
1044
+ return WasmConduitState.__wrap(ret);
1045
+ }
1046
+ function parse_conduit_message(json3) {
1047
+ const ptr0 = passStringToWasm02(json3, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1048
+ const len0 = WASM_VECTOR_LEN2;
1049
+ const ret = wasm2.parse_conduit_message(ptr0, len0);
1050
+ return ret === 0 ? void 0 : WasmConduitMessage.__wrap(ret);
1051
+ }
1052
+ function __wbg_get_imports2() {
1053
+ const import0 = {
1054
+ __proto__: null,
1055
+ __wbg___wbindgen_throw_6ddd609b62940d55: function(arg0, arg1) {
1056
+ throw new Error(getStringFromWasm02(arg0, arg1));
1057
+ },
1058
+ __wbindgen_init_externref_table: function() {
1059
+ const table = wasm2.__wbindgen_externrefs;
1060
+ const offset = table.grow(4);
1061
+ table.set(0, void 0);
1062
+ table.set(offset + 0, void 0);
1063
+ table.set(offset + 1, null);
1064
+ table.set(offset + 2, true);
1065
+ table.set(offset + 3, false);
1066
+ }
1067
+ };
1068
+ return {
1069
+ __proto__: null,
1070
+ "./conduit_core_bg.js": import0
1071
+ };
1072
+ }
1073
+ function getStringFromWasm02(ptr, len) {
1074
+ ptr = ptr >>> 0;
1075
+ return decodeText2(ptr, len);
1076
+ }
1077
+ function getUint8ArrayMemory02() {
1078
+ if (cachedUint8ArrayMemory02 === null || cachedUint8ArrayMemory02.byteLength === 0) {
1079
+ cachedUint8ArrayMemory02 = new Uint8Array(wasm2.memory.buffer);
1080
+ }
1081
+ return cachedUint8ArrayMemory02;
1082
+ }
1083
+ function passStringToWasm02(arg, malloc, realloc) {
1084
+ if (realloc === void 0) {
1085
+ const buf = cachedTextEncoder2.encode(arg);
1086
+ const ptr2 = malloc(buf.length, 1) >>> 0;
1087
+ getUint8ArrayMemory02().subarray(ptr2, ptr2 + buf.length).set(buf);
1088
+ WASM_VECTOR_LEN2 = buf.length;
1089
+ return ptr2;
1090
+ }
1091
+ let len = arg.length;
1092
+ let ptr = malloc(len, 1) >>> 0;
1093
+ const mem = getUint8ArrayMemory02();
1094
+ let offset = 0;
1095
+ for (; offset < len; offset++) {
1096
+ const code = arg.charCodeAt(offset);
1097
+ if (code > 127) break;
1098
+ mem[ptr + offset] = code;
1099
+ }
1100
+ if (offset !== len) {
1101
+ if (offset !== 0) {
1102
+ arg = arg.slice(offset);
1103
+ }
1104
+ ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0;
1105
+ const view = getUint8ArrayMemory02().subarray(ptr + offset, ptr + len);
1106
+ const ret = cachedTextEncoder2.encodeInto(arg, view);
1107
+ offset += ret.written;
1108
+ ptr = realloc(ptr, len, offset, 1) >>> 0;
1109
+ }
1110
+ WASM_VECTOR_LEN2 = offset;
1111
+ return ptr;
1112
+ }
1113
+ function decodeText2(ptr, len) {
1114
+ numBytesDecoded2 += len;
1115
+ if (numBytesDecoded2 >= MAX_SAFARI_DECODE_BYTES2) {
1116
+ cachedTextDecoder2 = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
1117
+ cachedTextDecoder2.decode();
1118
+ numBytesDecoded2 = len;
1119
+ }
1120
+ return cachedTextDecoder2.decode(getUint8ArrayMemory02().subarray(ptr, ptr + len));
1121
+ }
1122
+ function __wbg_finalize_init2(instance, module) {
1123
+ wasm2 = instance.exports;
1124
+ wasmModule2 = module;
1125
+ cachedUint8ArrayMemory02 = null;
1126
+ wasm2.__wbindgen_start();
1127
+ return wasm2;
1128
+ }
1129
+ async function __wbg_load2(module, imports) {
1130
+ if (typeof Response === "function" && module instanceof Response) {
1131
+ if (typeof WebAssembly.instantiateStreaming === "function") {
1132
+ try {
1133
+ return await WebAssembly.instantiateStreaming(module, imports);
1134
+ } catch (e) {
1135
+ const validResponse = module.ok && expectedResponseType(module.type);
1136
+ if (validResponse && module.headers.get("Content-Type") !== "application/wasm") {
1137
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
1138
+ } else {
1139
+ throw e;
1140
+ }
1141
+ }
1142
+ }
1143
+ const bytes = await module.arrayBuffer();
1144
+ return await WebAssembly.instantiate(bytes, imports);
1145
+ } else {
1146
+ const instance = await WebAssembly.instantiate(module, imports);
1147
+ if (instance instanceof WebAssembly.Instance) {
1148
+ return { instance, module };
1149
+ } else {
1150
+ return instance;
1151
+ }
1152
+ }
1153
+ function expectedResponseType(type) {
1154
+ switch (type) {
1155
+ case "basic":
1156
+ case "cors":
1157
+ case "default":
1158
+ return true;
1159
+ }
1160
+ return false;
1161
+ }
1162
+ }
1163
+ function initSync2(module) {
1164
+ if (wasm2 !== void 0) return wasm2;
1165
+ if (module !== void 0) {
1166
+ if (Object.getPrototypeOf(module) === Object.prototype) {
1167
+ ({ module } = module);
1168
+ } else {
1169
+ console.warn("using deprecated parameters for `initSync()`; pass a single object instead");
1170
+ }
1171
+ }
1172
+ const imports = __wbg_get_imports2();
1173
+ if (!(module instanceof WebAssembly.Module)) {
1174
+ module = new WebAssembly.Module(module);
1175
+ }
1176
+ const instance = new WebAssembly.Instance(module, imports);
1177
+ return __wbg_finalize_init2(instance, module);
1178
+ }
1179
+ async function __wbg_init2(module_or_path) {
1180
+ if (wasm2 !== void 0) return wasm2;
1181
+ if (module_or_path !== void 0) {
1182
+ if (Object.getPrototypeOf(module_or_path) === Object.prototype) {
1183
+ ({ module_or_path } = module_or_path);
1184
+ } else {
1185
+ console.warn("using deprecated parameters for the initialization function; pass a single object instead");
1186
+ }
1187
+ }
1188
+ if (module_or_path === void 0) {
1189
+ module_or_path = new URL("conduit_core_bg.wasm", import.meta.url);
1190
+ }
1191
+ const imports = __wbg_get_imports2();
1192
+ if (typeof module_or_path === "string" || typeof Request === "function" && module_or_path instanceof Request || typeof URL === "function" && module_or_path instanceof URL) {
1193
+ module_or_path = fetch(module_or_path);
1194
+ }
1195
+ const { instance, module } = await __wbg_load2(await module_or_path, imports);
1196
+ return __wbg_finalize_init2(instance, module);
1197
+ }
1198
+ var WasmCantMetadata, WasmConduitMessage, WasmConduitState, WasmCantMetadataFinalization, WasmConduitMessageFinalization, WasmConduitStateFinalization, cachedUint8ArrayMemory02, cachedTextDecoder2, MAX_SAFARI_DECODE_BYTES2, numBytesDecoded2, cachedTextEncoder2, WASM_VECTOR_LEN2, wasmModule2, wasm2;
1199
+ var init_conduit_core = __esm({
1200
+ "packages/contracts/src/wasm/conduit-core/conduit_core.js"() {
1201
+ "use strict";
1202
+ WasmCantMetadata = class {
1203
+ __destroy_into_raw() {
1204
+ const ptr = this.__wbg_ptr;
1205
+ this.__wbg_ptr = 0;
1206
+ WasmCantMetadataFinalization.unregister(this);
1207
+ return ptr;
1208
+ }
1209
+ free() {
1210
+ const ptr = this.__destroy_into_raw();
1211
+ wasm2.__wbg_wasmcantmetadata_free(ptr, 0);
1212
+ }
1213
+ /**
1214
+ * Get addresses as JSON string.
1215
+ * @returns {string}
1216
+ */
1217
+ get addresses_json() {
1218
+ let deferred1_0;
1219
+ let deferred1_1;
1220
+ try {
1221
+ const ret = wasm2.wasmcantmetadata_addresses_json(this.__wbg_ptr);
1222
+ deferred1_0 = ret[0];
1223
+ deferred1_1 = ret[1];
1224
+ return getStringFromWasm02(ret[0], ret[1]);
1225
+ } finally {
1226
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1227
+ }
1228
+ }
1229
+ /**
1230
+ * Get the directive type.
1231
+ * @returns {string}
1232
+ */
1233
+ get directive_type() {
1234
+ let deferred1_0;
1235
+ let deferred1_1;
1236
+ try {
1237
+ const ret = wasm2.wasmcantmetadata_directive_type(this.__wbg_ptr);
1238
+ deferred1_0 = ret[0];
1239
+ deferred1_1 = ret[1];
1240
+ return getStringFromWasm02(ret[0], ret[1]);
1241
+ } finally {
1242
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1243
+ }
1244
+ }
1245
+ /**
1246
+ * Create new CANT metadata.
1247
+ *
1248
+ * # Arguments
1249
+ * * `directive_type` - "actionable", "routing", or "informational"
1250
+ * * `addresses` - JSON array of addresses
1251
+ * * `task_refs` - JSON array of task refs
1252
+ * * `tags` - JSON array of tags
1253
+ * @param {string} directive_type
1254
+ * @param {string} addresses
1255
+ * @param {string} task_refs
1256
+ * @param {string} tags
1257
+ */
1258
+ constructor(directive_type, addresses, task_refs, tags) {
1259
+ const ptr0 = passStringToWasm02(directive_type, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1260
+ const len0 = WASM_VECTOR_LEN2;
1261
+ const ptr1 = passStringToWasm02(addresses, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1262
+ const len1 = WASM_VECTOR_LEN2;
1263
+ const ptr2 = passStringToWasm02(task_refs, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1264
+ const len2 = WASM_VECTOR_LEN2;
1265
+ const ptr3 = passStringToWasm02(tags, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1266
+ const len3 = WASM_VECTOR_LEN2;
1267
+ const ret = wasm2.wasmcantmetadata_new(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
1268
+ this.__wbg_ptr = ret >>> 0;
1269
+ WasmCantMetadataFinalization.register(this, this.__wbg_ptr, this);
1270
+ return this;
1271
+ }
1272
+ /**
1273
+ * Get tags as JSON string.
1274
+ * @returns {string}
1275
+ */
1276
+ get tags_json() {
1277
+ let deferred1_0;
1278
+ let deferred1_1;
1279
+ try {
1280
+ const ret = wasm2.wasmcantmetadata_tags_json(this.__wbg_ptr);
1281
+ deferred1_0 = ret[0];
1282
+ deferred1_1 = ret[1];
1283
+ return getStringFromWasm02(ret[0], ret[1]);
1284
+ } finally {
1285
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1286
+ }
1287
+ }
1288
+ /**
1289
+ * Get task refs as JSON string.
1290
+ * @returns {string}
1291
+ */
1292
+ get task_refs_json() {
1293
+ let deferred1_0;
1294
+ let deferred1_1;
1295
+ try {
1296
+ const ret = wasm2.wasmcantmetadata_task_refs_json(this.__wbg_ptr);
1297
+ deferred1_0 = ret[0];
1298
+ deferred1_1 = ret[1];
1299
+ return getStringFromWasm02(ret[0], ret[1]);
1300
+ } finally {
1301
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1302
+ }
1303
+ }
1304
+ /**
1305
+ * Convert to JSON string.
1306
+ * @returns {string}
1307
+ */
1308
+ toJson() {
1309
+ let deferred1_0;
1310
+ let deferred1_1;
1311
+ try {
1312
+ const ret = wasm2.wasmcantmetadata_toJson(this.__wbg_ptr);
1313
+ deferred1_0 = ret[0];
1314
+ deferred1_1 = ret[1];
1315
+ return getStringFromWasm02(ret[0], ret[1]);
1316
+ } finally {
1317
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1318
+ }
1319
+ }
1320
+ };
1321
+ if (Symbol.dispose) WasmCantMetadata.prototype[Symbol.dispose] = WasmCantMetadata.prototype.free;
1322
+ WasmConduitMessage = class _WasmConduitMessage {
1323
+ static __wrap(ptr) {
1324
+ ptr = ptr >>> 0;
1325
+ const obj = Object.create(_WasmConduitMessage.prototype);
1326
+ obj.__wbg_ptr = ptr;
1327
+ WasmConduitMessageFinalization.register(obj, obj.__wbg_ptr, obj);
1328
+ return obj;
1329
+ }
1330
+ __destroy_into_raw() {
1331
+ const ptr = this.__wbg_ptr;
1332
+ this.__wbg_ptr = 0;
1333
+ WasmConduitMessageFinalization.unregister(this);
1334
+ return ptr;
1335
+ }
1336
+ free() {
1337
+ const ptr = this.__destroy_into_raw();
1338
+ wasm2.__wbg_wasmconduitmessage_free(ptr, 0);
1339
+ }
1340
+ /**
1341
+ * Get the message content.
1342
+ * @returns {string}
1343
+ */
1344
+ get content() {
1345
+ let deferred1_0;
1346
+ let deferred1_1;
1347
+ try {
1348
+ const ret = wasm2.wasmconduitmessage_content(this.__wbg_ptr);
1349
+ deferred1_0 = ret[0];
1350
+ deferred1_1 = ret[1];
1351
+ return getStringFromWasm02(ret[0], ret[1]);
1352
+ } finally {
1353
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1354
+ }
1355
+ }
1356
+ /**
1357
+ * Get the sender agent ID.
1358
+ * @returns {string}
1359
+ */
1360
+ get from() {
1361
+ let deferred1_0;
1362
+ let deferred1_1;
1363
+ try {
1364
+ const ret = wasm2.wasmconduitmessage_from(this.__wbg_ptr);
1365
+ deferred1_0 = ret[0];
1366
+ deferred1_1 = ret[1];
1367
+ return getStringFromWasm02(ret[0], ret[1]);
1368
+ } finally {
1369
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1370
+ }
1371
+ }
1372
+ /**
1373
+ * Parse from JSON string.
1374
+ * @param {string} json
1375
+ * @returns {WasmConduitMessage | undefined}
1376
+ */
1377
+ static fromJson(json3) {
1378
+ const ptr0 = passStringToWasm02(json3, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1379
+ const len0 = WASM_VECTOR_LEN2;
1380
+ const ret = wasm2.wasmconduitmessage_fromJson(ptr0, len0);
1381
+ return ret === 0 ? void 0 : _WasmConduitMessage.__wrap(ret);
1382
+ }
1383
+ /**
1384
+ * Get the message ID.
1385
+ * @returns {string}
1386
+ */
1387
+ get id() {
1388
+ let deferred1_0;
1389
+ let deferred1_1;
1390
+ try {
1391
+ const ret = wasm2.wasmconduitmessage_id(this.__wbg_ptr);
1392
+ deferred1_0 = ret[0];
1393
+ deferred1_1 = ret[1];
1394
+ return getStringFromWasm02(ret[0], ret[1]);
1395
+ } finally {
1396
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1397
+ }
1398
+ }
1399
+ /**
1400
+ * Get metadata as JSON string.
1401
+ * @returns {string}
1402
+ */
1403
+ get metadata_json() {
1404
+ let deferred1_0;
1405
+ let deferred1_1;
1406
+ try {
1407
+ const ret = wasm2.wasmconduitmessage_metadata_json(this.__wbg_ptr);
1408
+ deferred1_0 = ret[0];
1409
+ deferred1_1 = ret[1];
1410
+ return getStringFromWasm02(ret[0], ret[1]);
1411
+ } finally {
1412
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1413
+ }
1414
+ }
1415
+ /**
1416
+ * Create a new Conduit message.
1417
+ *
1418
+ * # Arguments
1419
+ * * `id` - Unique message ID
1420
+ * * `from` - Sender agent ID
1421
+ * * `content` - Message content
1422
+ * * `timestamp` - ISO 8601 timestamp
1423
+ * @param {string} id
1424
+ * @param {string} from
1425
+ * @param {string} content
1426
+ * @param {string} timestamp
1427
+ */
1428
+ constructor(id, from, content, timestamp2) {
1429
+ const ptr0 = passStringToWasm02(id, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1430
+ const len0 = WASM_VECTOR_LEN2;
1431
+ const ptr1 = passStringToWasm02(from, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1432
+ const len1 = WASM_VECTOR_LEN2;
1433
+ const ptr2 = passStringToWasm02(content, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1434
+ const len2 = WASM_VECTOR_LEN2;
1435
+ const ptr3 = passStringToWasm02(timestamp2, wasm2.__wbindgen_malloc, wasm2.__wbindgen_realloc);
1436
+ const len3 = WASM_VECTOR_LEN2;
1437
+ const ret = wasm2.wasmconduitmessage_new(ptr0, len0, ptr1, len1, ptr2, len2, ptr3, len3);
1438
+ this.__wbg_ptr = ret >>> 0;
1439
+ WasmConduitMessageFinalization.register(this, this.__wbg_ptr, this);
1440
+ return this;
1441
+ }
1442
+ /**
1443
+ * Get tags as JSON string.
1444
+ * @returns {string}
1445
+ */
1446
+ get tags_json() {
1447
+ let deferred1_0;
1448
+ let deferred1_1;
1449
+ try {
1450
+ const ret = wasm2.wasmconduitmessage_tags_json(this.__wbg_ptr);
1451
+ deferred1_0 = ret[0];
1452
+ deferred1_1 = ret[1];
1453
+ return getStringFromWasm02(ret[0], ret[1]);
1454
+ } finally {
1455
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1456
+ }
1457
+ }
1458
+ /**
1459
+ * Get the timestamp.
1460
+ * @returns {string}
1461
+ */
1462
+ get timestamp() {
1463
+ let deferred1_0;
1464
+ let deferred1_1;
1465
+ try {
1466
+ const ret = wasm2.wasmconduitmessage_timestamp(this.__wbg_ptr);
1467
+ deferred1_0 = ret[0];
1468
+ deferred1_1 = ret[1];
1469
+ return getStringFromWasm02(ret[0], ret[1]);
1470
+ } finally {
1471
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1472
+ }
1473
+ }
1474
+ /**
1475
+ * Convert to JSON string.
1476
+ * @returns {string}
1477
+ */
1478
+ toJson() {
1479
+ let deferred1_0;
1480
+ let deferred1_1;
1481
+ try {
1482
+ const ret = wasm2.wasmconduitmessage_toJson(this.__wbg_ptr);
1483
+ deferred1_0 = ret[0];
1484
+ deferred1_1 = ret[1];
1485
+ return getStringFromWasm02(ret[0], ret[1]);
1486
+ } finally {
1487
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1488
+ }
1489
+ }
1490
+ };
1491
+ if (Symbol.dispose) WasmConduitMessage.prototype[Symbol.dispose] = WasmConduitMessage.prototype.free;
1492
+ WasmConduitState = class _WasmConduitState {
1493
+ static __wrap(ptr) {
1494
+ ptr = ptr >>> 0;
1495
+ const obj = Object.create(_WasmConduitState.prototype);
1496
+ obj.__wbg_ptr = ptr;
1497
+ WasmConduitStateFinalization.register(obj, obj.__wbg_ptr, obj);
1498
+ return obj;
1499
+ }
1500
+ __destroy_into_raw() {
1501
+ const ptr = this.__wbg_ptr;
1502
+ this.__wbg_ptr = 0;
1503
+ WasmConduitStateFinalization.unregister(this);
1504
+ return ptr;
1505
+ }
1506
+ free() {
1507
+ const ptr = this.__destroy_into_raw();
1508
+ wasm2.__wbg_wasmconduitstate_free(ptr, 0);
1509
+ }
1510
+ /**
1511
+ * Create connected state.
1512
+ * @returns {WasmConduitState}
1513
+ */
1514
+ static Connected() {
1515
+ const ret = wasm2.wasmconduitstate_Connected();
1516
+ return _WasmConduitState.__wrap(ret);
1517
+ }
1518
+ /**
1519
+ * Create connecting state.
1520
+ * @returns {WasmConduitState}
1521
+ */
1522
+ static Connecting() {
1523
+ const ret = wasm2.wasmconduitstate_Connecting();
1524
+ return _WasmConduitState.__wrap(ret);
1525
+ }
1526
+ /**
1527
+ * Create disconnected state.
1528
+ * @returns {WasmConduitState}
1529
+ */
1530
+ static Disconnected() {
1531
+ const ret = wasm2.wasmconduitstate_Disconnected();
1532
+ return _WasmConduitState.__wrap(ret);
1533
+ }
1534
+ /**
1535
+ * Create error state.
1536
+ * @returns {WasmConduitState}
1537
+ */
1538
+ static Error() {
1539
+ const ret = wasm2.wasmconduitstate_Error();
1540
+ return _WasmConduitState.__wrap(ret);
1541
+ }
1542
+ /**
1543
+ * Create reconnecting state.
1544
+ * @returns {WasmConduitState}
1545
+ */
1546
+ static Reconnecting() {
1547
+ const ret = wasm2.wasmconduitstate_Reconnecting();
1548
+ return _WasmConduitState.__wrap(ret);
1549
+ }
1550
+ /**
1551
+ * Get state as string.
1552
+ * @returns {string}
1553
+ */
1554
+ get as_string() {
1555
+ let deferred1_0;
1556
+ let deferred1_1;
1557
+ try {
1558
+ const ret = wasm2.wasmconduitstate_as_string(this.__wbg_ptr);
1559
+ deferred1_0 = ret[0];
1560
+ deferred1_1 = ret[1];
1561
+ return getStringFromWasm02(ret[0], ret[1]);
1562
+ } finally {
1563
+ wasm2.__wbindgen_free(deferred1_0, deferred1_1, 1);
1564
+ }
1565
+ }
1566
+ };
1567
+ if (Symbol.dispose) WasmConduitState.prototype[Symbol.dispose] = WasmConduitState.prototype.free;
1568
+ WasmCantMetadataFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
1569
+ }, unregister: () => {
1570
+ } } : new FinalizationRegistry((ptr) => wasm2.__wbg_wasmcantmetadata_free(ptr >>> 0, 1));
1571
+ WasmConduitMessageFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
1572
+ }, unregister: () => {
1573
+ } } : new FinalizationRegistry((ptr) => wasm2.__wbg_wasmconduitmessage_free(ptr >>> 0, 1));
1574
+ WasmConduitStateFinalization = typeof FinalizationRegistry === "undefined" ? { register: () => {
1575
+ }, unregister: () => {
1576
+ } } : new FinalizationRegistry((ptr) => wasm2.__wbg_wasmconduitstate_free(ptr >>> 0, 1));
1577
+ cachedUint8ArrayMemory02 = null;
1578
+ cachedTextDecoder2 = new TextDecoder("utf-8", { ignoreBOM: true, fatal: true });
1579
+ cachedTextDecoder2.decode();
1580
+ MAX_SAFARI_DECODE_BYTES2 = 2146435072;
1581
+ numBytesDecoded2 = 0;
1582
+ cachedTextEncoder2 = new TextEncoder();
1583
+ if (!("encodeInto" in cachedTextEncoder2)) {
1584
+ cachedTextEncoder2.encodeInto = function(arg, view) {
1585
+ const buf = cachedTextEncoder2.encode(arg);
1586
+ view.set(buf);
1587
+ return {
1588
+ read: arg.length,
1589
+ written: buf.length
1590
+ };
1591
+ };
1592
+ }
1593
+ WASM_VECTOR_LEN2 = 0;
1594
+ }
1595
+ });
1596
+
1597
+ // packages/contracts/src/wasm/index.ts
1598
+ var wasm_exports = {};
1599
+ __export(wasm_exports, {
1600
+ conduit: () => conduit,
1601
+ initWasm: () => initWasm,
1602
+ isWasmReady: () => isWasmReady,
1603
+ lafs: () => lafs
1604
+ });
1605
+ async function initWasm() {
1606
+ if (isInitialized) return;
1607
+ if (isInitializing) {
1608
+ return initPromise;
1609
+ }
1610
+ isInitializing = true;
1611
+ initPromise = (async () => {
1612
+ try {
1613
+ const [lafs2, conduit2] = await Promise.all([
1614
+ Promise.resolve().then(() => (init_lafs_core(), lafs_core_exports)),
1615
+ Promise.resolve().then(() => (init_conduit_core(), conduit_core_exports))
1616
+ ]);
1617
+ await Promise.all([lafs2.default(), conduit2.default()]);
1618
+ lafsModule = lafs2;
1619
+ conduitModule = conduit2;
1620
+ isInitialized = true;
1621
+ } catch (_error) {
1622
+ throw new Error("WASM initialization failed. Ensure WASM files are present.");
1623
+ }
1624
+ })();
1625
+ await initPromise;
1626
+ isInitializing = false;
1627
+ }
1628
+ function isWasmReady() {
1629
+ return isInitialized;
1630
+ }
1631
+ var lafsModule, conduitModule, isInitialized, isInitializing, initPromise, lafs, conduit;
1632
+ var init_wasm = __esm({
1633
+ "packages/contracts/src/wasm/index.ts"() {
1634
+ "use strict";
1635
+ lafsModule = null;
1636
+ conduitModule = null;
1637
+ isInitialized = false;
1638
+ isInitializing = false;
1639
+ initPromise = null;
1640
+ lafs = {
1641
+ /**
1642
+ * LAFS Transport enum
1643
+ * Use WasmLafsTransport.cli(), .http(), .grpc(), or .sdk()
1644
+ */
1645
+ get WasmLafsTransport() {
1646
+ if (!lafsModule) throw new Error("WASM not initialized. Call initWasm() first.");
1647
+ return lafsModule.WasmLafsTransport;
1648
+ },
1649
+ /**
1650
+ * LAFS Metadata constructor
1651
+ * new WasmLafsMeta(operation: string, transport: string)
1652
+ */
1653
+ get WasmLafsMeta() {
1654
+ if (!lafsModule) throw new Error("WASM not initialized. Call initWasm() first.");
1655
+ return lafsModule.WasmLafsMeta;
1656
+ },
1657
+ /**
1658
+ * LAFS Envelope class
1659
+ * Use WasmLafsEnvelope.createSuccess() or .createError()
1660
+ */
1661
+ get WasmLafsEnvelope() {
1662
+ if (!lafsModule) throw new Error("WASM not initialized. Call initWasm() first.");
1663
+ return lafsModule.WasmLafsEnvelope;
1664
+ },
1665
+ /**
1666
+ * Helper function to create transport from string
1667
+ * @param transport - "cli", "http", "grpc", or "sdk"
1668
+ */
1669
+ get createTransport() {
1670
+ if (!lafsModule) throw new Error("WASM not initialized. Call initWasm() first.");
1671
+ return lafsModule.create_transport;
1672
+ }
1673
+ };
1674
+ conduit = {
1675
+ /**
1676
+ * Conduit Message constructor
1677
+ * new WasmConduitMessage(id, from, content, timestamp)
1678
+ */
1679
+ get WasmConduitMessage() {
1680
+ if (!conduitModule) throw new Error("WASM not initialized. Call initWasm() first.");
1681
+ return conduitModule.WasmConduitMessage;
1682
+ },
1683
+ /**
1684
+ * Conduit State enum
1685
+ * Use WasmConduitState.disconnected(), .connecting(), .connected(), etc.
1686
+ */
1687
+ get WasmConduitState() {
1688
+ if (!conduitModule) throw new Error("WASM not initialized. Call initWasm() first.");
1689
+ return conduitModule.WasmConduitState;
1690
+ },
1691
+ /**
1692
+ * CANT Metadata constructor
1693
+ * new WasmCantMetadata(directiveType, addressesJson, taskRefsJson, tagsJson)
1694
+ */
1695
+ get WasmCantMetadata() {
1696
+ if (!conduitModule) throw new Error("WASM not initialized. Call initWasm() first.");
1697
+ return conduitModule.WasmCantMetadata;
1698
+ },
1699
+ /**
1700
+ * Parse a ConduitMessage from JSON string
1701
+ * @param json - JSON string
1702
+ * @returns WasmConduitMessage or undefined
1703
+ */
1704
+ get parseConduitMessage() {
1705
+ if (!conduitModule) throw new Error("WASM not initialized. Call initWasm() first.");
1706
+ return conduitModule.parse_conduit_message;
1707
+ },
1708
+ /**
1709
+ * Create a ConduitState from string
1710
+ * @param state - "disconnected", "connecting", "connected", "reconnecting", "error"
1711
+ */
1712
+ get createConduitState() {
1713
+ if (!conduitModule) throw new Error("WASM not initialized. Call initWasm() first.");
1714
+ return conduitModule.create_conduit_state;
1715
+ }
1716
+ };
1717
+ }
1718
+ });
1719
+
519
1720
  // packages/contracts/src/index.ts
520
1721
  var init_src = __esm({
521
1722
  "packages/contracts/src/index.ts"() {
@@ -526,6 +1727,7 @@ var init_src = __esm({
526
1727
  init_operations();
527
1728
  init_session2();
528
1729
  init_status_registry();
1730
+ init_wasm();
529
1731
  }
530
1732
  });
531
1733
 
@@ -1253,7 +2455,8 @@ function rowToTask(row) {
1253
2455
  modifiedBy: row.modifiedBy ?? null,
1254
2456
  sessionId: row.sessionId ?? null
1255
2457
  } : void 0,
1256
- pipelineStage: row.pipelineStage ?? void 0
2458
+ pipelineStage: row.pipelineStage ?? void 0,
2459
+ assignee: row.assignee ?? void 0
1257
2460
  };
1258
2461
  }
1259
2462
  function taskToRow(task) {
@@ -1286,7 +2489,8 @@ function taskToRow(task) {
1286
2489
  createdBy: task.provenance?.createdBy ?? null,
1287
2490
  modifiedBy: task.provenance?.modifiedBy ?? null,
1288
2491
  sessionId: task.provenance?.sessionId ?? null,
1289
- pipelineStage: task.pipelineStage ?? null
2492
+ pipelineStage: task.pipelineStage ?? null,
2493
+ assignee: task.assignee ?? null
1290
2494
  };
1291
2495
  }
1292
2496
  function archivedTaskToRow(task) {
@@ -1880,7 +3084,7 @@ var init_sql = __esm({
1880
3084
  return new SQL([new StringChunk(str)]);
1881
3085
  }
1882
3086
  _sql.raw = raw;
1883
- function join105(chunks, separator) {
3087
+ function join106(chunks, separator) {
1884
3088
  const result = [];
1885
3089
  for (const [i, chunk] of chunks.entries()) {
1886
3090
  if (i > 0 && separator !== void 0) result.push(separator);
@@ -1888,7 +3092,7 @@ var init_sql = __esm({
1888
3092
  }
1889
3093
  return new SQL(result);
1890
3094
  }
1891
- _sql.join = join105;
3095
+ _sql.join = join106;
1892
3096
  function identifier(value) {
1893
3097
  return new Name(value);
1894
3098
  }
@@ -6662,7 +7866,7 @@ var init_select2 = __esm({
6662
7866
  const baseTableName = this.tableName;
6663
7867
  const tableName = getTableLikeName(table);
6664
7868
  for (const item of extractUsedTable(table)) this.usedTables.add(item);
6665
- if (typeof tableName === "string" && this.config.joins?.some((join105) => join105.alias === tableName)) throw new Error(`Alias "${tableName}" is already used in this query`);
7869
+ if (typeof tableName === "string" && this.config.joins?.some((join106) => join106.alias === tableName)) throw new Error(`Alias "${tableName}" is already used in this query`);
6666
7870
  if (!this.isPartialSelect) {
6667
7871
  if (Object.keys(this.joinsNotNullableMap).length === 1 && typeof baseTableName === "string") this.config.fields = { [baseTableName]: this.config.fields };
6668
7872
  if (typeof tableName === "string" && !is(table, SQL)) {
@@ -7947,7 +9151,7 @@ var init_dialect = __esm({
7947
9151
  if (!joins2) return;
7948
9152
  const withEntries = Object.entries(joins2).filter(([_, v]) => v);
7949
9153
  if (!withEntries.length) return;
7950
- return sql.join(withEntries.map(([k, join105]) => {
9154
+ return sql.join(withEntries.map(([k, join106]) => {
7951
9155
  const relation = tableConfig.relations[k];
7952
9156
  const isSingle2 = is(relation, One3);
7953
9157
  const targetTable = aliasedTable(relation.targetTable, `d${currentDepth + 1}`);
@@ -7958,7 +9162,7 @@ var init_dialect = __esm({
7958
9162
  table: targetTable,
7959
9163
  mode: isSingle2 ? "first" : "many",
7960
9164
  schema,
7961
- queryConfig: join105,
9165
+ queryConfig: join106,
7962
9166
  tableConfig: schema[relation.targetTableName],
7963
9167
  relationWhere: filter,
7964
9168
  isNested: true,
@@ -7972,7 +9176,7 @@ var init_dialect = __esm({
7972
9176
  key: k,
7973
9177
  selection: innerQuery.selection,
7974
9178
  isArray: !isSingle2,
7975
- isOptional: (relation.optional ?? false) || join105 !== true && !!join105.where
9179
+ isOptional: (relation.optional ?? false) || join106 !== true && !!join106.where
7976
9180
  });
7977
9181
  const jsonColumns = sql.join(innerQuery.selection.map((s) => {
7978
9182
  return sql`${sql.raw(this.escapeString(s.key))}, ${s.selection ? sql`${jsonb2}(${sql.identifier(s.key)})` : sql.identifier(s.key)}`;
@@ -8371,7 +9575,7 @@ var init_update = __esm({
8371
9575
  createJoin(joinType) {
8372
9576
  return ((table, on) => {
8373
9577
  const tableName = getTableLikeName(table);
8374
- if (typeof tableName === "string" && this.config.joins.some((join105) => join105.alias === tableName)) throw new Error(`Alias "${tableName}" is already used in this query`);
9578
+ if (typeof tableName === "string" && this.config.joins.some((join106) => join106.alias === tableName)) throw new Error(`Alias "${tableName}" is already used in this query`);
8375
9579
  if (typeof on === "function") {
8376
9580
  const from = this.config.from ? is(table, SQLiteTable) ? table[Table.Symbol.Columns] : is(table, Subquery) ? table._.selectedFields : is(table, SQLiteViewBase) ? table[ViewBaseConfig].selectedFields : void 0 : void 0;
8377
9581
  on = on(new Proxy(this.config.table[Table.Symbol.Columns], new SelectionProxyHandler({
@@ -9159,6 +10363,7 @@ __export(tasks_schema_exports, {
9159
10363
  TOKEN_USAGE_TRANSPORTS: () => TOKEN_USAGE_TRANSPORTS,
9160
10364
  adrRelations: () => adrRelations,
9161
10365
  adrTaskLinks: () => adrTaskLinks,
10366
+ agentCredentials: () => agentCredentials,
9162
10367
  agentErrorLog: () => agentErrorLog,
9163
10368
  agentInstances: () => agentInstances,
9164
10369
  architectureDecisions: () => architectureDecisions,
@@ -9185,7 +10390,7 @@ __export(tasks_schema_exports, {
9185
10390
  warpChains: () => warpChains
9186
10391
  });
9187
10392
  import { sql as sql4 } from "drizzle-orm";
9188
- var TASK_PRIORITIES, TASK_TYPES, TASK_SIZES, LIFECYCLE_STAGE_NAMES, LIFECYCLE_GATE_RESULTS, LIFECYCLE_EVIDENCE_TYPES, TOKEN_USAGE_METHODS, TOKEN_USAGE_CONFIDENCE, TOKEN_USAGE_TRANSPORTS, TASK_RELATION_TYPES, LIFECYCLE_TRANSITION_TYPES, EXTERNAL_LINK_TYPES, SYNC_DIRECTIONS, tasks, taskDependencies, taskRelations, sessions, taskWorkHistory, lifecyclePipelines, lifecycleStages, lifecycleGateResults, lifecycleEvidence, lifecycleTransitions, manifestEntries, pipelineManifest, releaseManifests, schemaMeta, auditLog, tokenUsage, architectureDecisions, adrTaskLinks, adrRelations, externalTaskLinks, statusRegistryTable;
10393
+ var TASK_PRIORITIES, TASK_TYPES, TASK_SIZES, LIFECYCLE_STAGE_NAMES, LIFECYCLE_GATE_RESULTS, LIFECYCLE_EVIDENCE_TYPES, TOKEN_USAGE_METHODS, TOKEN_USAGE_CONFIDENCE, TOKEN_USAGE_TRANSPORTS, TASK_RELATION_TYPES, LIFECYCLE_TRANSITION_TYPES, EXTERNAL_LINK_TYPES, SYNC_DIRECTIONS, tasks, taskDependencies, taskRelations, sessions, taskWorkHistory, lifecyclePipelines, lifecycleStages, lifecycleGateResults, lifecycleEvidence, lifecycleTransitions, manifestEntries, pipelineManifest, releaseManifests, schemaMeta, auditLog, tokenUsage, architectureDecisions, adrTaskLinks, adrRelations, externalTaskLinks, statusRegistryTable, agentCredentials;
9189
10394
  var init_tasks_schema = __esm({
9190
10395
  "packages/core/src/store/tasks-schema.ts"() {
9191
10396
  "use strict";
@@ -9277,7 +10482,9 @@ var init_tasks_schema = __esm({
9277
10482
  // T060: pipeline stage name (RCASD-IVTR+C). Stored as a plain stage name string.
9278
10483
  // Not referencing lifecycle_stages.id so that stage binding works without
9279
10484
  // requiring a lifecycle pipeline record for every task.
9280
- pipelineStage: text("pipeline_stage")
10485
+ pipelineStage: text("pipeline_stage"),
10486
+ /** Agent ID that has claimed/is assigned to this task. */
10487
+ assignee: text("assignee")
9281
10488
  },
9282
10489
  (table) => [
9283
10490
  index("idx_tasks_status").on(table.status),
@@ -9287,6 +10494,7 @@ var init_tasks_schema = __esm({
9287
10494
  index("idx_tasks_priority").on(table.priority),
9288
10495
  index("idx_tasks_session_id").on(table.sessionId),
9289
10496
  index("idx_tasks_pipeline_stage").on(table.pipelineStage),
10497
+ index("idx_tasks_assignee").on(table.assignee),
9290
10498
  // T033 composite indexes
9291
10499
  index("idx_tasks_parent_status").on(table.parentId, table.status),
9292
10500
  index("idx_tasks_status_priority").on(table.status, table.priority),
@@ -9756,6 +10964,32 @@ var init_tasks_schema = __esm({
9756
10964
  index("idx_status_registry_namespace").on(table.namespace)
9757
10965
  ]
9758
10966
  );
10967
+ agentCredentials = sqliteTable(
10968
+ "agent_credentials",
10969
+ {
10970
+ agentId: text("agent_id").primaryKey(),
10971
+ displayName: text("display_name").notNull(),
10972
+ /** API key encrypted at rest using AES-256-GCM with machine-bound key. */
10973
+ apiKeyEncrypted: text("api_key_encrypted").notNull(),
10974
+ apiBaseUrl: text("api_base_url").notNull().default("https://api.signaldock.io"),
10975
+ classification: text("classification"),
10976
+ privacyTier: text("privacy_tier").notNull().default("public"),
10977
+ /** JSON array of capability slugs. */
10978
+ capabilities: text("capabilities").notNull().default("[]"),
10979
+ /** JSON array of skill slugs. */
10980
+ skills: text("skills").notNull().default("[]"),
10981
+ /** JSON object with transport-specific settings. */
10982
+ transportConfig: text("transport_config").notNull().default("{}"),
10983
+ isActive: integer("is_active", { mode: "boolean" }).notNull().default(true),
10984
+ lastUsedAt: integer("last_used_at"),
10985
+ createdAt: integer("created_at").notNull(),
10986
+ updatedAt: integer("updated_at").notNull()
10987
+ },
10988
+ (table) => [
10989
+ index("idx_agent_credentials_active").on(table.isActive),
10990
+ index("idx_agent_credentials_last_used").on(table.lastUsedAt)
10991
+ ]
10992
+ );
9759
10993
  }
9760
10994
  });
9761
10995
 
@@ -9799,6 +11033,7 @@ async function upsertTask(db, row, archiveFields) {
9799
11033
  sessionId: row.sessionId,
9800
11034
  // T060: pipeline stage name (RCASD-IVTR+C)
9801
11035
  pipelineStage: row.pipelineStage ?? null,
11036
+ assignee: row.assignee ?? null,
9802
11037
  // Always include archive metadata so unarchive clears stale values (T5034)
9803
11038
  archivedAt: archiveFields?.archivedAt ?? null,
9804
11039
  archiveReason: archiveFields?.archiveReason ?? null,
@@ -11430,7 +12665,10 @@ var init_sqlite2 = __esm({
11430
12665
  _initPromise2 = null;
11431
12666
  _gitTrackingChecked = false;
11432
12667
  MIN_BACKUP_TASK_COUNT = 10;
11433
- REQUIRED_TASK_COLUMNS = [{ name: "pipeline_stage", ddl: "text" }];
12668
+ REQUIRED_TASK_COLUMNS = [
12669
+ { name: "pipeline_stage", ddl: "text" },
12670
+ { name: "assignee", ddl: "text" }
12671
+ ];
11434
12672
  REQUIRED_SESSION_COLUMNS = [
11435
12673
  { name: "provider_id", ddl: "text" },
11436
12674
  { name: "stats_json", ddl: "text" },
@@ -11440,13 +12678,253 @@ var init_sqlite2 = __esm({
11440
12678
  }
11441
12679
  });
11442
12680
 
12681
+ // packages/core/src/agents/registry.ts
12682
+ var registry_exports2 = {};
12683
+ __export(registry_exports2, {
12684
+ checkAgentHealth: () => checkAgentHealth,
12685
+ classifyError: () => classifyError,
12686
+ deregisterAgent: () => deregisterAgent,
12687
+ generateAgentId: () => generateAgentId,
12688
+ getAgentErrorHistory: () => getAgentErrorHistory,
12689
+ getAgentInstance: () => getAgentInstance,
12690
+ getHealthReport: () => getHealthReport,
12691
+ heartbeat: () => heartbeat,
12692
+ incrementTasksCompleted: () => incrementTasksCompleted,
12693
+ listAgentInstances: () => listAgentInstances,
12694
+ markCrashed: () => markCrashed,
12695
+ registerAgent: () => registerAgent,
12696
+ updateAgentStatus: () => updateAgentStatus
12697
+ });
12698
+ import { randomBytes } from "node:crypto";
12699
+ import { and as and2, eq as eq4, inArray as inArray3, lt as lt2, sql as sql7 } from "drizzle-orm";
12700
+ function generateAgentId() {
12701
+ const now = /* @__PURE__ */ new Date();
12702
+ const ts = now.toISOString().replace(/[-:T]/g, "").substring(0, 14);
12703
+ const hex = randomBytes(3).toString("hex");
12704
+ return `agt_${ts}_${hex}`;
12705
+ }
12706
+ async function registerAgent(opts, cwd) {
12707
+ const db = await getDb(cwd);
12708
+ const id = generateAgentId();
12709
+ const now = (/* @__PURE__ */ new Date()).toISOString();
12710
+ const row = {
12711
+ id,
12712
+ agentType: opts.agentType,
12713
+ status: "starting",
12714
+ sessionId: opts.sessionId ?? null,
12715
+ taskId: opts.taskId ?? null,
12716
+ startedAt: now,
12717
+ lastHeartbeat: now,
12718
+ stoppedAt: null,
12719
+ errorCount: 0,
12720
+ totalTasksCompleted: 0,
12721
+ capacity: "1.0",
12722
+ metadataJson: opts.metadata ? JSON.stringify(opts.metadata) : "{}",
12723
+ parentAgentId: opts.parentAgentId ?? null
12724
+ };
12725
+ await db.insert(agentInstances).values(row);
12726
+ return row;
12727
+ }
12728
+ async function deregisterAgent(id, cwd) {
12729
+ const db = await getDb(cwd);
12730
+ const now = (/* @__PURE__ */ new Date()).toISOString();
12731
+ const existing = await db.select().from(agentInstances).where(eq4(agentInstances.id, id)).get();
12732
+ if (!existing) return null;
12733
+ if (existing.status === "stopped") return existing;
12734
+ await db.update(agentInstances).set({ status: "stopped", stoppedAt: now }).where(eq4(agentInstances.id, id));
12735
+ return { ...existing, status: "stopped", stoppedAt: now };
12736
+ }
12737
+ async function heartbeat(id, cwd) {
12738
+ const db = await getDb(cwd);
12739
+ const now = (/* @__PURE__ */ new Date()).toISOString();
12740
+ const existing = await db.select().from(agentInstances).where(eq4(agentInstances.id, id)).get();
12741
+ if (!existing) return null;
12742
+ if (existing.status === "stopped" || existing.status === "crashed") {
12743
+ return existing.status;
12744
+ }
12745
+ await db.update(agentInstances).set({ lastHeartbeat: now }).where(eq4(agentInstances.id, id));
12746
+ return existing.status;
12747
+ }
12748
+ async function updateAgentStatus(id, opts, cwd) {
12749
+ const db = await getDb(cwd);
12750
+ const existing = await db.select().from(agentInstances).where(eq4(agentInstances.id, id)).get();
12751
+ if (!existing) return null;
12752
+ const updates = {
12753
+ status: opts.status
12754
+ };
12755
+ if (opts.taskId !== void 0) {
12756
+ updates.taskId = opts.taskId;
12757
+ }
12758
+ if (opts.status === "active") {
12759
+ updates.lastHeartbeat = (/* @__PURE__ */ new Date()).toISOString();
12760
+ }
12761
+ if (opts.status === "error" || opts.status === "crashed") {
12762
+ updates.errorCount = existing.errorCount + 1;
12763
+ if (opts.error) {
12764
+ const errorType = classifyError(new Error(opts.error));
12765
+ await db.insert(agentErrorLog).values({
12766
+ agentId: id,
12767
+ errorType,
12768
+ message: opts.error,
12769
+ occurredAt: (/* @__PURE__ */ new Date()).toISOString()
12770
+ });
12771
+ }
12772
+ }
12773
+ if (opts.status === "stopped") {
12774
+ updates.stoppedAt = (/* @__PURE__ */ new Date()).toISOString();
12775
+ }
12776
+ await db.update(agentInstances).set(updates).where(eq4(agentInstances.id, id));
12777
+ return { ...existing, ...updates };
12778
+ }
12779
+ async function incrementTasksCompleted(id, cwd) {
12780
+ const db = await getDb(cwd);
12781
+ await db.update(agentInstances).set({ totalTasksCompleted: sql7`${agentInstances.totalTasksCompleted} + 1` }).where(eq4(agentInstances.id, id));
12782
+ }
12783
+ async function listAgentInstances(filters, cwd) {
12784
+ const db = await getDb(cwd);
12785
+ const conditions = [];
12786
+ if (filters?.status) {
12787
+ const statuses = Array.isArray(filters.status) ? filters.status : [filters.status];
12788
+ conditions.push(inArray3(agentInstances.status, statuses));
12789
+ }
12790
+ if (filters?.agentType) {
12791
+ const types = Array.isArray(filters.agentType) ? filters.agentType : [filters.agentType];
12792
+ conditions.push(inArray3(agentInstances.agentType, types));
12793
+ }
12794
+ if (filters?.sessionId) {
12795
+ conditions.push(eq4(agentInstances.sessionId, filters.sessionId));
12796
+ }
12797
+ if (filters?.parentAgentId) {
12798
+ conditions.push(eq4(agentInstances.parentAgentId, filters.parentAgentId));
12799
+ }
12800
+ if (conditions.length === 0) {
12801
+ return db.select().from(agentInstances).all();
12802
+ }
12803
+ return db.select().from(agentInstances).where(and2(...conditions)).all();
12804
+ }
12805
+ async function getAgentInstance(id, cwd) {
12806
+ const db = await getDb(cwd);
12807
+ const row = await db.select().from(agentInstances).where(eq4(agentInstances.id, id)).get();
12808
+ return row ?? null;
12809
+ }
12810
+ function classifyError(error40) {
12811
+ const message = error40 instanceof Error ? error40.message : String(error40);
12812
+ for (const pattern of RETRIABLE_PATTERNS) {
12813
+ if (pattern.test(message)) return "retriable";
12814
+ }
12815
+ for (const pattern of PERMANENT_PATTERNS) {
12816
+ if (pattern.test(message)) return "permanent";
12817
+ }
12818
+ return "unknown";
12819
+ }
12820
+ async function getAgentErrorHistory(agentId, cwd) {
12821
+ const db = await getDb(cwd);
12822
+ return db.select().from(agentErrorLog).where(eq4(agentErrorLog.agentId, agentId)).all();
12823
+ }
12824
+ async function checkAgentHealth(thresholdMs = 3e4, cwd) {
12825
+ const db = await getDb(cwd);
12826
+ const cutoff = new Date(Date.now() - thresholdMs).toISOString();
12827
+ return db.select().from(agentInstances).where(
12828
+ and2(
12829
+ inArray3(agentInstances.status, ["active", "idle", "starting"]),
12830
+ lt2(agentInstances.lastHeartbeat, cutoff)
12831
+ )
12832
+ ).all();
12833
+ }
12834
+ async function markCrashed(id, reason, cwd) {
12835
+ return updateAgentStatus(
12836
+ id,
12837
+ { status: "crashed", error: reason ?? "Heartbeat timeout \u2014 agent presumed crashed" },
12838
+ cwd
12839
+ );
12840
+ }
12841
+ async function getHealthReport(thresholdMs = 3e4, cwd) {
12842
+ const allAgents = await listAgentInstances(void 0, cwd);
12843
+ const staleAgents = await checkAgentHealth(thresholdMs, cwd);
12844
+ const report = {
12845
+ total: allAgents.length,
12846
+ active: 0,
12847
+ idle: 0,
12848
+ starting: 0,
12849
+ error: 0,
12850
+ crashed: 0,
12851
+ stopped: 0,
12852
+ totalErrors: 0,
12853
+ staleAgents
12854
+ };
12855
+ for (const agent of allAgents) {
12856
+ switch (agent.status) {
12857
+ case "active":
12858
+ report.active++;
12859
+ break;
12860
+ case "idle":
12861
+ report.idle++;
12862
+ break;
12863
+ case "starting":
12864
+ report.starting++;
12865
+ break;
12866
+ case "error":
12867
+ report.error++;
12868
+ break;
12869
+ case "crashed":
12870
+ report.crashed++;
12871
+ break;
12872
+ case "stopped":
12873
+ report.stopped++;
12874
+ break;
12875
+ }
12876
+ report.totalErrors += agent.errorCount;
12877
+ }
12878
+ return report;
12879
+ }
12880
+ var RETRIABLE_PATTERNS, PERMANENT_PATTERNS;
12881
+ var init_registry2 = __esm({
12882
+ "packages/core/src/agents/registry.ts"() {
12883
+ "use strict";
12884
+ init_sqlite2();
12885
+ init_agent_schema();
12886
+ RETRIABLE_PATTERNS = [
12887
+ /timeout/i,
12888
+ /ECONNREFUSED/,
12889
+ /ECONNRESET/,
12890
+ /EPIPE/,
12891
+ /ETIMEDOUT/,
12892
+ /rate.?limit/i,
12893
+ /429/,
12894
+ /503/,
12895
+ /502/,
12896
+ /SQLITE_BUSY/i,
12897
+ /database is locked/i,
12898
+ /temporarily unavailable/i,
12899
+ /too many requests/i,
12900
+ /network/i,
12901
+ /socket hang up/i
12902
+ ];
12903
+ PERMANENT_PATTERNS = [
12904
+ /permission denied/i,
12905
+ /EACCES/,
12906
+ /authentication/i,
12907
+ /unauthorized/i,
12908
+ /401/,
12909
+ /403/,
12910
+ /404/,
12911
+ /not found/i,
12912
+ /invalid.*token/i,
12913
+ /SQLITE_CONSTRAINT/i,
12914
+ /syntax error/i,
12915
+ /type error/i,
12916
+ /reference error/i
12917
+ ];
12918
+ }
12919
+ });
12920
+
11443
12921
  // packages/core/src/store/sqlite-data-accessor.ts
11444
12922
  var sqlite_data_accessor_exports = {};
11445
12923
  __export(sqlite_data_accessor_exports, {
11446
12924
  createSqliteDataAccessor: () => createSqliteDataAccessor,
11447
12925
  setMetaValue: () => setMetaValue
11448
12926
  });
11449
- import { and as and2, eq as eq4, inArray as inArray3, isNull as isNull2, like as like2, ne as ne2, notInArray as notInArray2, or as or2, sql as sql7 } from "drizzle-orm";
12927
+ import { and as and3, eq as eq5, inArray as inArray4, isNull as isNull2, like as like2, ne as ne2, notInArray as notInArray2, or as or2, sql as sql8 } from "drizzle-orm";
11450
12928
  function generateAuditLogId() {
11451
12929
  const epoch = Math.floor(Date.now() / 1e3);
11452
12930
  const rand = Math.random().toString(36).slice(2, 8);
@@ -11454,7 +12932,7 @@ function generateAuditLogId() {
11454
12932
  }
11455
12933
  async function getMetaValue(cwd, key) {
11456
12934
  const db = await getDb(cwd);
11457
- const rows = await db.select().from(schemaMeta).where(eq4(schemaMeta.key, key)).all();
12935
+ const rows = await db.select().from(schemaMeta).where(eq5(schemaMeta.key, key)).all();
11458
12936
  if (rows.length === 0 || !rows[0]) return null;
11459
12937
  try {
11460
12938
  return JSON.parse(rows[0].value);
@@ -11482,7 +12960,7 @@ async function createSqliteDataAccessor(cwd) {
11482
12960
  // ---- loadArchive ----
11483
12961
  async loadArchive() {
11484
12962
  const db = await getDb(cwd);
11485
- const archivedRows = await db.select().from(tasks).where(eq4(tasks.status, "archived")).all();
12963
+ const archivedRows = await db.select().from(tasks).where(eq5(tasks.status, "archived")).all();
11486
12964
  if (archivedRows.length === 0) return null;
11487
12965
  const archivedTasks = archivedRows.map((row) => {
11488
12966
  const task = rowToTask(row);
@@ -11554,7 +13032,7 @@ async function createSqliteDataAccessor(cwd) {
11554
13032
  const incomingIds = new Set(sessions2.map((s) => s.id));
11555
13033
  for (const eid of existingIds) {
11556
13034
  if (!incomingIds.has(eid)) {
11557
- await db.delete(sessions).where(eq4(sessions.id, eid)).run();
13035
+ await db.delete(sessions).where(eq5(sessions.id, eid)).run();
11558
13036
  }
11559
13037
  }
11560
13038
  for (const session of sessions2) {
@@ -11607,7 +13085,7 @@ async function createSqliteDataAccessor(cwd) {
11607
13085
  },
11608
13086
  async archiveSingleTask(taskId, fields) {
11609
13087
  const db = await getDb(cwd);
11610
- const rows = await db.select({ id: tasks.id }).from(tasks).where(eq4(tasks.id, taskId)).all();
13088
+ const rows = await db.select({ id: tasks.id }).from(tasks).where(eq5(tasks.id, taskId)).all();
11611
13089
  if (rows.length === 0) return;
11612
13090
  await db.update(tasks).set({
11613
13091
  status: "archived",
@@ -11615,17 +13093,17 @@ async function createSqliteDataAccessor(cwd) {
11615
13093
  archiveReason: fields.archiveReason ?? "completed",
11616
13094
  cycleTimeDays: fields.cycleTimeDays ?? null,
11617
13095
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
11618
- }).where(eq4(tasks.id, taskId)).run();
13096
+ }).where(eq5(tasks.id, taskId)).run();
11619
13097
  },
11620
13098
  async removeSingleTask(taskId) {
11621
13099
  const db = await getDb(cwd);
11622
- await db.delete(taskDependencies).where(eq4(taskDependencies.taskId, taskId)).run();
11623
- await db.delete(taskDependencies).where(eq4(taskDependencies.dependsOn, taskId)).run();
11624
- await db.delete(tasks).where(eq4(tasks.id, taskId)).run();
13100
+ await db.delete(taskDependencies).where(eq5(taskDependencies.taskId, taskId)).run();
13101
+ await db.delete(taskDependencies).where(eq5(taskDependencies.dependsOn, taskId)).run();
13102
+ await db.delete(tasks).where(eq5(tasks.id, taskId)).run();
11625
13103
  },
11626
13104
  async loadSingleTask(taskId) {
11627
13105
  const db = await getDb(cwd);
11628
- const rows = await db.select().from(tasks).where(eq4(tasks.id, taskId)).limit(1).all();
13106
+ const rows = await db.select().from(tasks).where(eq5(tasks.id, taskId)).limit(1).all();
11629
13107
  if (rows.length === 0 || !rows[0]) return null;
11630
13108
  const task = rowToTask(rows[0]);
11631
13109
  const allIdRows = await db.select({ id: tasks.id }).from(tasks).all();
@@ -11636,7 +13114,7 @@ async function createSqliteDataAccessor(cwd) {
11636
13114
  },
11637
13115
  async getActiveSession() {
11638
13116
  const db = await getDb(cwd);
11639
- const rows = await db.select().from(sessions).where(eq4(sessions.status, "active")).orderBy(sql7`${sessions.startedAt} DESC`).limit(1).all();
13117
+ const rows = await db.select().from(sessions).where(eq5(sessions.status, "active")).orderBy(sql8`${sessions.startedAt} DESC`).limit(1).all();
11640
13118
  if (rows.length === 0 || !rows[0]) return null;
11641
13119
  return rowToSession(rows[0]);
11642
13120
  },
@@ -11646,7 +13124,7 @@ async function createSqliteDataAccessor(cwd) {
11646
13124
  },
11647
13125
  async removeSingleSession(sessionId) {
11648
13126
  const db = await getDb(cwd);
11649
- await db.delete(sessions).where(eq4(sessions.id, sessionId)).run();
13127
+ await db.delete(sessions).where(eq5(sessions.id, sessionId)).run();
11650
13128
  },
11651
13129
  // ---- Targeted query methods (Phase 2 modernization) ----
11652
13130
  async queryTasks(filters) {
@@ -11657,7 +13135,7 @@ async function createSqliteDataAccessor(cwd) {
11657
13135
  if (!statuses.includes("archived")) {
11658
13136
  conditions.push(ne2(tasks.status, "archived"));
11659
13137
  }
11660
- conditions.push(inArray3(tasks.status, statuses));
13138
+ conditions.push(inArray4(tasks.status, statuses));
11661
13139
  } else if (filters.excludeStatus) {
11662
13140
  const excluded = Array.isArray(filters.excludeStatus) ? filters.excludeStatus : [filters.excludeStatus];
11663
13141
  for (const s of excluded) {
@@ -11666,14 +13144,14 @@ async function createSqliteDataAccessor(cwd) {
11666
13144
  } else {
11667
13145
  conditions.push(ne2(tasks.status, "archived"));
11668
13146
  }
11669
- if (filters.priority) conditions.push(eq4(tasks.priority, filters.priority));
11670
- if (filters.type) conditions.push(eq4(tasks.type, filters.type));
11671
- if (filters.phase) conditions.push(eq4(tasks.phase, filters.phase));
13147
+ if (filters.priority) conditions.push(eq5(tasks.priority, filters.priority));
13148
+ if (filters.type) conditions.push(eq5(tasks.type, filters.type));
13149
+ if (filters.phase) conditions.push(eq5(tasks.phase, filters.phase));
11672
13150
  if (filters.parentId !== void 0) {
11673
13151
  if (filters.parentId === null) {
11674
13152
  conditions.push(isNull2(tasks.parentId));
11675
13153
  } else {
11676
- conditions.push(eq4(tasks.parentId, filters.parentId));
13154
+ conditions.push(eq5(tasks.parentId, filters.parentId));
11677
13155
  }
11678
13156
  }
11679
13157
  if (filters.search) {
@@ -11689,25 +13167,25 @@ async function createSqliteDataAccessor(cwd) {
11689
13167
  if (filters.label) {
11690
13168
  conditions.push(like2(tasks.labelsJson, `%${JSON.stringify(filters.label)}%`));
11691
13169
  }
11692
- const where = conditions.length > 0 ? and2(...conditions) : void 0;
11693
- const countResult = await db.select({ count: sql7`count(*)` }).from(tasks).where(where).get();
13170
+ const where = conditions.length > 0 ? and3(...conditions) : void 0;
13171
+ const countResult = await db.select({ count: sql8`count(*)` }).from(tasks).where(where).get();
11694
13172
  const total = countResult?.count ?? 0;
11695
13173
  let orderClause;
11696
13174
  switch (filters.orderBy) {
11697
13175
  case "createdAt":
11698
- orderClause = sql7`${tasks.createdAt} ASC`;
13176
+ orderClause = sql8`${tasks.createdAt} ASC`;
11699
13177
  break;
11700
13178
  case "updatedAt":
11701
- orderClause = sql7`${tasks.updatedAt} DESC NULLS LAST`;
13179
+ orderClause = sql8`${tasks.updatedAt} DESC NULLS LAST`;
11702
13180
  break;
11703
13181
  case "priority": {
11704
- orderClause = sql7`CASE ${tasks.priority}
13182
+ orderClause = sql8`CASE ${tasks.priority}
11705
13183
  WHEN 'critical' THEN 0 WHEN 'high' THEN 1
11706
13184
  WHEN 'medium' THEN 2 WHEN 'low' THEN 3 ELSE 4 END ASC`;
11707
13185
  break;
11708
13186
  }
11709
13187
  default:
11710
- orderClause = sql7`${tasks.position} ASC, ${tasks.createdAt} ASC`;
13188
+ orderClause = sql8`${tasks.position} ASC, ${tasks.createdAt} ASC`;
11711
13189
  }
11712
13190
  let query = db.select().from(tasks).where(where).orderBy(orderClause);
11713
13191
  if (filters.limit !== void 0) {
@@ -11730,20 +13208,20 @@ async function createSqliteDataAccessor(cwd) {
11730
13208
  const conditions = [];
11731
13209
  if (filters?.status) {
11732
13210
  const statuses = Array.isArray(filters.status) ? filters.status : [filters.status];
11733
- conditions.push(inArray3(tasks.status, statuses));
13211
+ conditions.push(inArray4(tasks.status, statuses));
11734
13212
  } else {
11735
13213
  conditions.push(ne2(tasks.status, "archived"));
11736
13214
  }
11737
13215
  if (filters?.parentId) {
11738
- conditions.push(eq4(tasks.parentId, filters.parentId));
13216
+ conditions.push(eq5(tasks.parentId, filters.parentId));
11739
13217
  }
11740
- const where = conditions.length > 0 ? and2(...conditions) : void 0;
11741
- const result = await db.select({ count: sql7`count(*)` }).from(tasks).where(where).get();
13218
+ const where = conditions.length > 0 ? and3(...conditions) : void 0;
13219
+ const result = await db.select({ count: sql8`count(*)` }).from(tasks).where(where).get();
11742
13220
  return result?.count ?? 0;
11743
13221
  },
11744
13222
  async getChildren(parentId) {
11745
13223
  const db = await getDb(cwd);
11746
- const rows = await db.select().from(tasks).where(and2(eq4(tasks.parentId, parentId), ne2(tasks.status, "archived"))).orderBy(sql7`${tasks.position} ASC, ${tasks.createdAt} ASC`).all();
13224
+ const rows = await db.select().from(tasks).where(and3(eq5(tasks.parentId, parentId), ne2(tasks.status, "archived"))).orderBy(sql8`${tasks.position} ASC, ${tasks.createdAt} ASC`).all();
11747
13225
  const tasks2 = rows.map(rowToTask);
11748
13226
  if (tasks2.length > 0) {
11749
13227
  const allIds = await getAllTaskIds();
@@ -11754,14 +13232,14 @@ async function createSqliteDataAccessor(cwd) {
11754
13232
  },
11755
13233
  async countChildren(parentId) {
11756
13234
  const db = await getDb(cwd);
11757
- const result = await db.select({ count: sql7`count(*)` }).from(tasks).where(and2(eq4(tasks.parentId, parentId), ne2(tasks.status, "archived"))).get();
13235
+ const result = await db.select({ count: sql8`count(*)` }).from(tasks).where(and3(eq5(tasks.parentId, parentId), ne2(tasks.status, "archived"))).get();
11758
13236
  return result?.count ?? 0;
11759
13237
  },
11760
13238
  async countActiveChildren(parentId) {
11761
13239
  const db = await getDb(cwd);
11762
- const result = await db.select({ count: sql7`count(*)` }).from(tasks).where(
11763
- and2(
11764
- eq4(tasks.parentId, parentId),
13240
+ const result = await db.select({ count: sql8`count(*)` }).from(tasks).where(
13241
+ and3(
13242
+ eq5(tasks.parentId, parentId),
11765
13243
  notInArray2(tasks.status, [...TERMINAL_TASK_STATUSES])
11766
13244
  )
11767
13245
  ).get();
@@ -11783,7 +13261,7 @@ async function createSqliteDataAccessor(cwd) {
11783
13261
  if (idRows.length === 0) return [];
11784
13262
  const db = await getDb(cwd);
11785
13263
  const ids = idRows.map((r) => r.id);
11786
- const taskRows = await db.select().from(tasks).where(inArray3(tasks.id, ids)).all();
13264
+ const taskRows = await db.select().from(tasks).where(inArray4(tasks.id, ids)).all();
11787
13265
  const tasks2 = taskRows.map(rowToTask);
11788
13266
  if (tasks2.length > 0) {
11789
13267
  const allIds = await getAllTaskIds();
@@ -11809,7 +13287,7 @@ async function createSqliteDataAccessor(cwd) {
11809
13287
  if (idRows.length === 0) return [];
11810
13288
  const db = await getDb(cwd);
11811
13289
  const ids = idRows.map((r) => r.id);
11812
- const rows = await db.select().from(tasks).where(inArray3(tasks.id, ids)).all();
13290
+ const rows = await db.select().from(tasks).where(inArray4(tasks.id, ids)).all();
11813
13291
  const tasks2 = rows.map(rowToTask);
11814
13292
  if (tasks2.length > 0) {
11815
13293
  const allIds = await getAllTaskIds();
@@ -11820,10 +13298,10 @@ async function createSqliteDataAccessor(cwd) {
11820
13298
  },
11821
13299
  async getDependents(taskId) {
11822
13300
  const db = await getDb(cwd);
11823
- const depRows = await db.select().from(taskDependencies).where(eq4(taskDependencies.dependsOn, taskId)).all();
13301
+ const depRows = await db.select().from(taskDependencies).where(eq5(taskDependencies.dependsOn, taskId)).all();
11824
13302
  if (depRows.length === 0) return [];
11825
13303
  const dependentIds = depRows.map((r) => r.taskId);
11826
- const rows = await db.select().from(tasks).where(inArray3(tasks.id, dependentIds)).all();
13304
+ const rows = await db.select().from(tasks).where(inArray4(tasks.id, dependentIds)).all();
11827
13305
  const tasks2 = rows.map(rowToTask);
11828
13306
  if (tasks2.length > 0) {
11829
13307
  const allIds = await getAllTaskIds();
@@ -11848,13 +13326,13 @@ async function createSqliteDataAccessor(cwd) {
11848
13326
  },
11849
13327
  async taskExists(taskId) {
11850
13328
  const db = await getDb(cwd);
11851
- const result = await db.select({ id: tasks.id }).from(tasks).where(eq4(tasks.id, taskId)).limit(1).get();
13329
+ const result = await db.select({ id: tasks.id }).from(tasks).where(eq5(tasks.id, taskId)).limit(1).get();
11852
13330
  return !!result;
11853
13331
  },
11854
13332
  async loadTasks(taskIds) {
11855
13333
  if (taskIds.length === 0) return [];
11856
13334
  const db = await getDb(cwd);
11857
- const rows = await db.select().from(tasks).where(inArray3(tasks.id, taskIds)).all();
13335
+ const rows = await db.select().from(tasks).where(inArray4(tasks.id, taskIds)).all();
11858
13336
  const tasks2 = rows.map(rowToTask);
11859
13337
  if (tasks2.length > 0) {
11860
13338
  const allIds = await getAllTaskIds();
@@ -11922,14 +13400,15 @@ async function createSqliteDataAccessor(cwd) {
11922
13400
  ["verificationJson", "verificationJson"],
11923
13401
  ["createdBy", "createdBy"],
11924
13402
  ["modifiedBy", "modifiedBy"],
11925
- ["sessionId", "sessionId"]
13403
+ ["sessionId", "sessionId"],
13404
+ ["assignee", "assignee"]
11926
13405
  ];
11927
13406
  for (const [key, col] of fieldMap) {
11928
13407
  if (fields[key] !== void 0) {
11929
13408
  updateRow[col] = fields[key];
11930
13409
  }
11931
13410
  }
11932
- await db.update(tasks).set(updateRow).where(eq4(tasks.id, taskId)).run();
13411
+ await db.update(tasks).set(updateRow).where(eq5(tasks.id, taskId)).run();
11933
13412
  },
11934
13413
  async transaction(fn) {
11935
13414
  const nativeDb = getNativeTasksDb();
@@ -11952,12 +13431,12 @@ async function createSqliteDataAccessor(cwd) {
11952
13431
  archiveReason: fields.archiveReason ?? "completed",
11953
13432
  cycleTimeDays: fields.cycleTimeDays ?? null,
11954
13433
  updatedAt: (/* @__PURE__ */ new Date()).toISOString()
11955
- }).where(eq4(tasks.id, taskId)).run();
13434
+ }).where(eq5(tasks.id, taskId)).run();
11956
13435
  },
11957
13436
  async removeSingleTask(taskId) {
11958
- await db.delete(taskDependencies).where(eq4(taskDependencies.taskId, taskId)).run();
11959
- await db.delete(taskDependencies).where(eq4(taskDependencies.dependsOn, taskId)).run();
11960
- await db.delete(tasks).where(eq4(tasks.id, taskId)).run();
13437
+ await db.delete(taskDependencies).where(eq5(taskDependencies.taskId, taskId)).run();
13438
+ await db.delete(taskDependencies).where(eq5(taskDependencies.dependsOn, taskId)).run();
13439
+ await db.delete(tasks).where(eq5(tasks.id, taskId)).run();
11961
13440
  },
11962
13441
  async setMetaValue(key, value) {
11963
13442
  await setMetaValue(cwd, key, value);
@@ -11991,6 +13470,46 @@ async function createSqliteDataAccessor(cwd) {
11991
13470
  async getSchemaVersion() {
11992
13471
  const meta = await getMetaValue(cwd, "file_meta");
11993
13472
  return meta?.schemaVersion ?? null;
13473
+ },
13474
+ // ---- Agent instances ----
13475
+ async listAgentInstances(filters) {
13476
+ const { listAgentInstances: listAgents2 } = await Promise.resolve().then(() => (init_registry2(), registry_exports2));
13477
+ return listAgents2(filters, cwd);
13478
+ },
13479
+ async getAgentInstance(agentId) {
13480
+ const { getAgentInstance: getAgent2 } = await Promise.resolve().then(() => (init_registry2(), registry_exports2));
13481
+ return getAgent2(agentId, cwd);
13482
+ },
13483
+ // ---- Agent task claiming ----
13484
+ async claimTask(taskId, agentId) {
13485
+ const nativeDb = getNativeTasksDb();
13486
+ if (!nativeDb) {
13487
+ throw new Error("Native database not initialized");
13488
+ }
13489
+ const existsRow = nativeDb.prepare("SELECT assignee FROM tasks WHERE id = ?").get(taskId);
13490
+ if (!existsRow) {
13491
+ throw new Error(`Task not found: ${taskId}`);
13492
+ }
13493
+ const result = nativeDb.prepare(
13494
+ "UPDATE tasks SET assignee = ?, updated_at = ? WHERE id = ? AND (assignee IS NULL OR assignee = ?)"
13495
+ ).run(agentId, (/* @__PURE__ */ new Date()).toISOString(), taskId, agentId);
13496
+ if (result.changes === 0) {
13497
+ const currentRow = nativeDb.prepare("SELECT assignee FROM tasks WHERE id = ?").get(taskId);
13498
+ throw new Error(
13499
+ `Task ${taskId} is already claimed by agent: ${currentRow?.assignee ?? "unknown"}`
13500
+ );
13501
+ }
13502
+ },
13503
+ async unclaimTask(taskId) {
13504
+ const nativeDb = getNativeTasksDb();
13505
+ if (!nativeDb) {
13506
+ throw new Error("Native database not initialized");
13507
+ }
13508
+ const existsRow = nativeDb.prepare("SELECT id FROM tasks WHERE id = ?").get(taskId);
13509
+ if (!existsRow) {
13510
+ throw new Error(`Task not found: ${taskId}`);
13511
+ }
13512
+ nativeDb.prepare("UPDATE tasks SET assignee = NULL, updated_at = ? WHERE id = ?").run((/* @__PURE__ */ new Date()).toISOString(), taskId);
11994
13513
  }
11995
13514
  };
11996
13515
  return accessor;
@@ -14215,6 +15734,20 @@ var init_safety_data_accessor = __esm({
14215
15734
  async removeSingleSession(sessionId) {
14216
15735
  return this.inner.removeSingleSession(sessionId);
14217
15736
  }
15737
+ // ---- Agent instances ----
15738
+ async listAgentInstances(filters) {
15739
+ return this.inner.listAgentInstances(filters);
15740
+ }
15741
+ async getAgentInstance(agentId) {
15742
+ return this.inner.getAgentInstance(agentId);
15743
+ }
15744
+ // ---- Agent task claiming ----
15745
+ async claimTask(taskId, agentId) {
15746
+ return this.inner.claimTask(taskId, agentId);
15747
+ }
15748
+ async unclaimTask(taskId) {
15749
+ return this.inner.unclaimTask(taskId);
15750
+ }
14218
15751
  // ---- Lifecycle ----
14219
15752
  async close() {
14220
15753
  this.logVerbose("Closing accessor");
@@ -14386,7 +15919,7 @@ var init_link_pipeline = __esm({
14386
15919
  });
14387
15920
 
14388
15921
  // packages/core/src/store/brain-accessor.ts
14389
- import { and as and3, asc as asc2, desc as desc2, eq as eq5, gte as gte2, or as or3 } from "drizzle-orm";
15922
+ import { and as and4, asc as asc2, desc as desc2, eq as eq6, gte as gte2, or as or3 } from "drizzle-orm";
14390
15923
  async function getBrainAccessor(cwd) {
14391
15924
  const db = await getBrainDb(cwd);
14392
15925
  return new BrainDataAccessor(db);
@@ -14406,30 +15939,30 @@ var init_brain_accessor = __esm({
14406
15939
  // =========================================================================
14407
15940
  async addDecision(row) {
14408
15941
  await this.db.insert(brainDecisions).values(row);
14409
- const result = await this.db.select().from(brainDecisions).where(eq5(brainDecisions.id, row.id));
15942
+ const result = await this.db.select().from(brainDecisions).where(eq6(brainDecisions.id, row.id));
14410
15943
  return result[0];
14411
15944
  }
14412
15945
  async getDecision(id) {
14413
- const result = await this.db.select().from(brainDecisions).where(eq5(brainDecisions.id, id));
15946
+ const result = await this.db.select().from(brainDecisions).where(eq6(brainDecisions.id, id));
14414
15947
  return result[0] ?? null;
14415
15948
  }
14416
15949
  async findDecisions(params = {}) {
14417
15950
  const conditions = [];
14418
15951
  if (params.type) {
14419
- conditions.push(eq5(brainDecisions.type, params.type));
15952
+ conditions.push(eq6(brainDecisions.type, params.type));
14420
15953
  }
14421
15954
  if (params.confidence) {
14422
- conditions.push(eq5(brainDecisions.confidence, params.confidence));
15955
+ conditions.push(eq6(brainDecisions.confidence, params.confidence));
14423
15956
  }
14424
15957
  if (params.outcome) {
14425
- conditions.push(eq5(brainDecisions.outcome, params.outcome));
15958
+ conditions.push(eq6(brainDecisions.outcome, params.outcome));
14426
15959
  }
14427
15960
  if (params.contextTaskId) {
14428
- conditions.push(eq5(brainDecisions.contextTaskId, params.contextTaskId));
15961
+ conditions.push(eq6(brainDecisions.contextTaskId, params.contextTaskId));
14429
15962
  }
14430
15963
  let query = this.db.select().from(brainDecisions).orderBy(desc2(brainDecisions.createdAt));
14431
15964
  if (conditions.length > 0) {
14432
- query = query.where(and3(...conditions));
15965
+ query = query.where(and4(...conditions));
14433
15966
  }
14434
15967
  if (params.limit) {
14435
15968
  query = query.limit(params.limit);
@@ -14437,34 +15970,34 @@ var init_brain_accessor = __esm({
14437
15970
  return query;
14438
15971
  }
14439
15972
  async updateDecision(id, updates) {
14440
- await this.db.update(brainDecisions).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq5(brainDecisions.id, id));
15973
+ await this.db.update(brainDecisions).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq6(brainDecisions.id, id));
14441
15974
  }
14442
15975
  // =========================================================================
14443
15976
  // Patterns CRUD
14444
15977
  // =========================================================================
14445
15978
  async addPattern(row) {
14446
15979
  await this.db.insert(brainPatterns).values(row);
14447
- const result = await this.db.select().from(brainPatterns).where(eq5(brainPatterns.id, row.id));
15980
+ const result = await this.db.select().from(brainPatterns).where(eq6(brainPatterns.id, row.id));
14448
15981
  return result[0];
14449
15982
  }
14450
15983
  async getPattern(id) {
14451
- const result = await this.db.select().from(brainPatterns).where(eq5(brainPatterns.id, id));
15984
+ const result = await this.db.select().from(brainPatterns).where(eq6(brainPatterns.id, id));
14452
15985
  return result[0] ?? null;
14453
15986
  }
14454
15987
  async findPatterns(params = {}) {
14455
15988
  const conditions = [];
14456
15989
  if (params.type) {
14457
- conditions.push(eq5(brainPatterns.type, params.type));
15990
+ conditions.push(eq6(brainPatterns.type, params.type));
14458
15991
  }
14459
15992
  if (params.impact) {
14460
- conditions.push(eq5(brainPatterns.impact, params.impact));
15993
+ conditions.push(eq6(brainPatterns.impact, params.impact));
14461
15994
  }
14462
15995
  if (params.minFrequency !== void 0) {
14463
15996
  conditions.push(gte2(brainPatterns.frequency, params.minFrequency));
14464
15997
  }
14465
15998
  let query = this.db.select().from(brainPatterns).orderBy(desc2(brainPatterns.frequency));
14466
15999
  if (conditions.length > 0) {
14467
- query = query.where(and3(...conditions));
16000
+ query = query.where(and4(...conditions));
14468
16001
  }
14469
16002
  if (params.limit) {
14470
16003
  query = query.limit(params.limit);
@@ -14472,18 +16005,18 @@ var init_brain_accessor = __esm({
14472
16005
  return query;
14473
16006
  }
14474
16007
  async updatePattern(id, updates) {
14475
- await this.db.update(brainPatterns).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq5(brainPatterns.id, id));
16008
+ await this.db.update(brainPatterns).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq6(brainPatterns.id, id));
14476
16009
  }
14477
16010
  // =========================================================================
14478
16011
  // Learnings CRUD
14479
16012
  // =========================================================================
14480
16013
  async addLearning(row) {
14481
16014
  await this.db.insert(brainLearnings).values(row);
14482
- const result = await this.db.select().from(brainLearnings).where(eq5(brainLearnings.id, row.id));
16015
+ const result = await this.db.select().from(brainLearnings).where(eq6(brainLearnings.id, row.id));
14483
16016
  return result[0];
14484
16017
  }
14485
16018
  async getLearning(id) {
14486
- const result = await this.db.select().from(brainLearnings).where(eq5(brainLearnings.id, id));
16019
+ const result = await this.db.select().from(brainLearnings).where(eq6(brainLearnings.id, id));
14487
16020
  return result[0] ?? null;
14488
16021
  }
14489
16022
  async findLearnings(params = {}) {
@@ -14492,11 +16025,11 @@ var init_brain_accessor = __esm({
14492
16025
  conditions.push(gte2(brainLearnings.confidence, params.minConfidence));
14493
16026
  }
14494
16027
  if (params.actionable !== void 0) {
14495
- conditions.push(eq5(brainLearnings.actionable, params.actionable));
16028
+ conditions.push(eq6(brainLearnings.actionable, params.actionable));
14496
16029
  }
14497
16030
  let query = this.db.select().from(brainLearnings).orderBy(desc2(brainLearnings.confidence));
14498
16031
  if (conditions.length > 0) {
14499
- query = query.where(and3(...conditions));
16032
+ query = query.where(and4(...conditions));
14500
16033
  }
14501
16034
  if (params.limit) {
14502
16035
  query = query.limit(params.limit);
@@ -14504,37 +16037,37 @@ var init_brain_accessor = __esm({
14504
16037
  return query;
14505
16038
  }
14506
16039
  async updateLearning(id, updates) {
14507
- await this.db.update(brainLearnings).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq5(brainLearnings.id, id));
16040
+ await this.db.update(brainLearnings).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq6(brainLearnings.id, id));
14508
16041
  }
14509
16042
  // =========================================================================
14510
16043
  // Observations CRUD
14511
16044
  // =========================================================================
14512
16045
  async addObservation(row) {
14513
16046
  await this.db.insert(brainObservations).values(row);
14514
- const result = await this.db.select().from(brainObservations).where(eq5(brainObservations.id, row.id));
16047
+ const result = await this.db.select().from(brainObservations).where(eq6(brainObservations.id, row.id));
14515
16048
  return result[0];
14516
16049
  }
14517
16050
  async getObservation(id) {
14518
- const result = await this.db.select().from(brainObservations).where(eq5(brainObservations.id, id));
16051
+ const result = await this.db.select().from(brainObservations).where(eq6(brainObservations.id, id));
14519
16052
  return result[0] ?? null;
14520
16053
  }
14521
16054
  async findObservations(params = {}) {
14522
16055
  const conditions = [];
14523
16056
  if (params.type) {
14524
- conditions.push(eq5(brainObservations.type, params.type));
16057
+ conditions.push(eq6(brainObservations.type, params.type));
14525
16058
  }
14526
16059
  if (params.project) {
14527
- conditions.push(eq5(brainObservations.project, params.project));
16060
+ conditions.push(eq6(brainObservations.project, params.project));
14528
16061
  }
14529
16062
  if (params.sourceType) {
14530
- conditions.push(eq5(brainObservations.sourceType, params.sourceType));
16063
+ conditions.push(eq6(brainObservations.sourceType, params.sourceType));
14531
16064
  }
14532
16065
  if (params.sourceSessionId) {
14533
- conditions.push(eq5(brainObservations.sourceSessionId, params.sourceSessionId));
16066
+ conditions.push(eq6(brainObservations.sourceSessionId, params.sourceSessionId));
14534
16067
  }
14535
16068
  let query = this.db.select().from(brainObservations).orderBy(desc2(brainObservations.createdAt));
14536
16069
  if (conditions.length > 0) {
14537
- query = query.where(and3(...conditions));
16070
+ query = query.where(and4(...conditions));
14538
16071
  }
14539
16072
  if (params.limit) {
14540
16073
  query = query.limit(params.limit);
@@ -14542,7 +16075,7 @@ var init_brain_accessor = __esm({
14542
16075
  return query;
14543
16076
  }
14544
16077
  async updateObservation(id, updates) {
14545
- await this.db.update(brainObservations).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq5(brainObservations.id, id));
16078
+ await this.db.update(brainObservations).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq6(brainObservations.id, id));
14546
16079
  }
14547
16080
  // =========================================================================
14548
16081
  // Memory Links CRUD
@@ -14552,22 +16085,22 @@ var init_brain_accessor = __esm({
14552
16085
  }
14553
16086
  async getLinksForMemory(memoryType, memoryId) {
14554
16087
  return this.db.select().from(brainMemoryLinks).where(
14555
- and3(
14556
- eq5(brainMemoryLinks.memoryType, memoryType),
14557
- eq5(brainMemoryLinks.memoryId, memoryId)
16088
+ and4(
16089
+ eq6(brainMemoryLinks.memoryType, memoryType),
16090
+ eq6(brainMemoryLinks.memoryId, memoryId)
14558
16091
  )
14559
16092
  ).orderBy(asc2(brainMemoryLinks.createdAt));
14560
16093
  }
14561
16094
  async getLinksForTask(taskId) {
14562
- return this.db.select().from(brainMemoryLinks).where(eq5(brainMemoryLinks.taskId, taskId)).orderBy(asc2(brainMemoryLinks.createdAt));
16095
+ return this.db.select().from(brainMemoryLinks).where(eq6(brainMemoryLinks.taskId, taskId)).orderBy(asc2(brainMemoryLinks.createdAt));
14563
16096
  }
14564
16097
  async removeLink(memoryType, memoryId, taskId, linkType) {
14565
16098
  await this.db.delete(brainMemoryLinks).where(
14566
- and3(
14567
- eq5(brainMemoryLinks.memoryType, memoryType),
14568
- eq5(brainMemoryLinks.memoryId, memoryId),
14569
- eq5(brainMemoryLinks.taskId, taskId),
14570
- eq5(brainMemoryLinks.linkType, linkType)
16099
+ and4(
16100
+ eq6(brainMemoryLinks.memoryType, memoryType),
16101
+ eq6(brainMemoryLinks.memoryId, memoryId),
16102
+ eq6(brainMemoryLinks.taskId, taskId),
16103
+ eq6(brainMemoryLinks.linkType, linkType)
14571
16104
  )
14572
16105
  );
14573
16106
  }
@@ -14576,27 +16109,27 @@ var init_brain_accessor = __esm({
14576
16109
  // =========================================================================
14577
16110
  async addStickyNote(row) {
14578
16111
  await this.db.insert(brainStickyNotes).values(row);
14579
- const result = await this.db.select().from(brainStickyNotes).where(eq5(brainStickyNotes.id, row.id));
16112
+ const result = await this.db.select().from(brainStickyNotes).where(eq6(brainStickyNotes.id, row.id));
14580
16113
  return result[0];
14581
16114
  }
14582
16115
  async getStickyNote(id) {
14583
- const result = await this.db.select().from(brainStickyNotes).where(eq5(brainStickyNotes.id, id));
16116
+ const result = await this.db.select().from(brainStickyNotes).where(eq6(brainStickyNotes.id, id));
14584
16117
  return result[0] ?? null;
14585
16118
  }
14586
16119
  async findStickyNotes(params = {}) {
14587
16120
  const conditions = [];
14588
16121
  if (params.status) {
14589
- conditions.push(eq5(brainStickyNotes.status, params.status));
16122
+ conditions.push(eq6(brainStickyNotes.status, params.status));
14590
16123
  }
14591
16124
  if (params.color) {
14592
- conditions.push(eq5(brainStickyNotes.color, params.color));
16125
+ conditions.push(eq6(brainStickyNotes.color, params.color));
14593
16126
  }
14594
16127
  if (params.priority) {
14595
- conditions.push(eq5(brainStickyNotes.priority, params.priority));
16128
+ conditions.push(eq6(brainStickyNotes.priority, params.priority));
14596
16129
  }
14597
16130
  let query = this.db.select().from(brainStickyNotes).orderBy(desc2(brainStickyNotes.createdAt));
14598
16131
  if (conditions.length > 0) {
14599
- query = query.where(and3(...conditions));
16132
+ query = query.where(and4(...conditions));
14600
16133
  }
14601
16134
  if (params.limit) {
14602
16135
  query = query.limit(params.limit);
@@ -14604,31 +16137,31 @@ var init_brain_accessor = __esm({
14604
16137
  return query;
14605
16138
  }
14606
16139
  async updateStickyNote(id, updates) {
14607
- await this.db.update(brainStickyNotes).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq5(brainStickyNotes.id, id));
16140
+ await this.db.update(brainStickyNotes).set({ ...updates, updatedAt: (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19) }).where(eq6(brainStickyNotes.id, id));
14608
16141
  }
14609
16142
  async deleteStickyNote(id) {
14610
- await this.db.delete(brainStickyNotes).where(eq5(brainStickyNotes.id, id));
16143
+ await this.db.delete(brainStickyNotes).where(eq6(brainStickyNotes.id, id));
14611
16144
  }
14612
16145
  // =========================================================================
14613
16146
  // PageIndex Node CRUD (T5383)
14614
16147
  // =========================================================================
14615
16148
  async addPageNode(node) {
14616
16149
  await this.db.insert(brainPageNodes).values(node);
14617
- const result = await this.db.select().from(brainPageNodes).where(eq5(brainPageNodes.id, node.id));
16150
+ const result = await this.db.select().from(brainPageNodes).where(eq6(brainPageNodes.id, node.id));
14618
16151
  return result[0];
14619
16152
  }
14620
16153
  async getPageNode(id) {
14621
- const result = await this.db.select().from(brainPageNodes).where(eq5(brainPageNodes.id, id));
16154
+ const result = await this.db.select().from(brainPageNodes).where(eq6(brainPageNodes.id, id));
14622
16155
  return result[0] ?? null;
14623
16156
  }
14624
16157
  async findPageNodes(params = {}) {
14625
16158
  const conditions = [];
14626
16159
  if (params.nodeType) {
14627
- conditions.push(eq5(brainPageNodes.nodeType, params.nodeType));
16160
+ conditions.push(eq6(brainPageNodes.nodeType, params.nodeType));
14628
16161
  }
14629
16162
  let query = this.db.select().from(brainPageNodes).orderBy(desc2(brainPageNodes.createdAt));
14630
16163
  if (conditions.length > 0) {
14631
- query = query.where(and3(...conditions));
16164
+ query = query.where(and4(...conditions));
14632
16165
  }
14633
16166
  if (params.limit) {
14634
16167
  query = query.limit(params.limit);
@@ -14637,9 +16170,9 @@ var init_brain_accessor = __esm({
14637
16170
  }
14638
16171
  async removePageNode(id) {
14639
16172
  await this.db.delete(brainPageEdges).where(
14640
- or3(eq5(brainPageEdges.fromId, id), eq5(brainPageEdges.toId, id))
16173
+ or3(eq6(brainPageEdges.fromId, id), eq6(brainPageEdges.toId, id))
14641
16174
  );
14642
- await this.db.delete(brainPageNodes).where(eq5(brainPageNodes.id, id));
16175
+ await this.db.delete(brainPageNodes).where(eq6(brainPageNodes.id, id));
14643
16176
  }
14644
16177
  // =========================================================================
14645
16178
  // PageIndex Edge CRUD (T5383)
@@ -14647,34 +16180,34 @@ var init_brain_accessor = __esm({
14647
16180
  async addPageEdge(edge) {
14648
16181
  await this.db.insert(brainPageEdges).values(edge);
14649
16182
  const result = await this.db.select().from(brainPageEdges).where(
14650
- and3(
14651
- eq5(brainPageEdges.fromId, edge.fromId),
14652
- eq5(brainPageEdges.toId, edge.toId),
14653
- eq5(brainPageEdges.edgeType, edge.edgeType)
16183
+ and4(
16184
+ eq6(brainPageEdges.fromId, edge.fromId),
16185
+ eq6(brainPageEdges.toId, edge.toId),
16186
+ eq6(brainPageEdges.edgeType, edge.edgeType)
14654
16187
  )
14655
16188
  );
14656
16189
  return result[0];
14657
16190
  }
14658
16191
  async getPageEdges(nodeId, direction = "both") {
14659
16192
  if (direction === "out") {
14660
- return this.db.select().from(brainPageEdges).where(eq5(brainPageEdges.fromId, nodeId)).orderBy(asc2(brainPageEdges.createdAt));
16193
+ return this.db.select().from(brainPageEdges).where(eq6(brainPageEdges.fromId, nodeId)).orderBy(asc2(brainPageEdges.createdAt));
14661
16194
  }
14662
16195
  if (direction === "in") {
14663
- return this.db.select().from(brainPageEdges).where(eq5(brainPageEdges.toId, nodeId)).orderBy(asc2(brainPageEdges.createdAt));
16196
+ return this.db.select().from(brainPageEdges).where(eq6(brainPageEdges.toId, nodeId)).orderBy(asc2(brainPageEdges.createdAt));
14664
16197
  }
14665
16198
  return this.db.select().from(brainPageEdges).where(
14666
16199
  or3(
14667
- eq5(brainPageEdges.fromId, nodeId),
14668
- eq5(brainPageEdges.toId, nodeId)
16200
+ eq6(brainPageEdges.fromId, nodeId),
16201
+ eq6(brainPageEdges.toId, nodeId)
14669
16202
  )
14670
16203
  ).orderBy(asc2(brainPageEdges.createdAt));
14671
16204
  }
14672
16205
  async getNeighbors(nodeId, edgeType) {
14673
- const conditions = [eq5(brainPageEdges.fromId, nodeId)];
16206
+ const conditions = [eq6(brainPageEdges.fromId, nodeId)];
14674
16207
  if (edgeType) {
14675
- conditions.push(eq5(brainPageEdges.edgeType, edgeType));
16208
+ conditions.push(eq6(brainPageEdges.edgeType, edgeType));
14676
16209
  }
14677
- const edges = await this.db.select().from(brainPageEdges).where(and3(...conditions));
16210
+ const edges = await this.db.select().from(brainPageEdges).where(and4(...conditions));
14678
16211
  if (edges.length === 0) return [];
14679
16212
  const neighborIds = edges.map((e) => e.toId);
14680
16213
  const nodes = [];
@@ -14686,10 +16219,10 @@ var init_brain_accessor = __esm({
14686
16219
  }
14687
16220
  async removePageEdge(fromId, toId, edgeType) {
14688
16221
  await this.db.delete(brainPageEdges).where(
14689
- and3(
14690
- eq5(brainPageEdges.fromId, fromId),
14691
- eq5(brainPageEdges.toId, toId),
14692
- eq5(brainPageEdges.edgeType, edgeType)
16222
+ and4(
16223
+ eq6(brainPageEdges.fromId, fromId),
16224
+ eq6(brainPageEdges.toId, toId),
16225
+ eq6(brainPageEdges.edgeType, edgeType)
14693
16226
  )
14694
16227
  );
14695
16228
  }
@@ -14697,246 +16230,6 @@ var init_brain_accessor = __esm({
14697
16230
  }
14698
16231
  });
14699
16232
 
14700
- // packages/core/src/agents/registry.ts
14701
- var registry_exports2 = {};
14702
- __export(registry_exports2, {
14703
- checkAgentHealth: () => checkAgentHealth,
14704
- classifyError: () => classifyError,
14705
- deregisterAgent: () => deregisterAgent,
14706
- generateAgentId: () => generateAgentId,
14707
- getAgentErrorHistory: () => getAgentErrorHistory,
14708
- getAgentInstance: () => getAgentInstance,
14709
- getHealthReport: () => getHealthReport,
14710
- heartbeat: () => heartbeat,
14711
- incrementTasksCompleted: () => incrementTasksCompleted,
14712
- listAgentInstances: () => listAgentInstances,
14713
- markCrashed: () => markCrashed,
14714
- registerAgent: () => registerAgent,
14715
- updateAgentStatus: () => updateAgentStatus
14716
- });
14717
- import { randomBytes as randomBytes2 } from "node:crypto";
14718
- import { and as and4, eq as eq6, inArray as inArray4, lt as lt2, sql as sql8 } from "drizzle-orm";
14719
- function generateAgentId() {
14720
- const now = /* @__PURE__ */ new Date();
14721
- const ts = now.toISOString().replace(/[-:T]/g, "").substring(0, 14);
14722
- const hex = randomBytes2(3).toString("hex");
14723
- return `agt_${ts}_${hex}`;
14724
- }
14725
- async function registerAgent(opts, cwd) {
14726
- const db = await getDb(cwd);
14727
- const id = generateAgentId();
14728
- const now = (/* @__PURE__ */ new Date()).toISOString();
14729
- const row = {
14730
- id,
14731
- agentType: opts.agentType,
14732
- status: "starting",
14733
- sessionId: opts.sessionId ?? null,
14734
- taskId: opts.taskId ?? null,
14735
- startedAt: now,
14736
- lastHeartbeat: now,
14737
- stoppedAt: null,
14738
- errorCount: 0,
14739
- totalTasksCompleted: 0,
14740
- capacity: "1.0",
14741
- metadataJson: opts.metadata ? JSON.stringify(opts.metadata) : "{}",
14742
- parentAgentId: opts.parentAgentId ?? null
14743
- };
14744
- await db.insert(agentInstances).values(row);
14745
- return row;
14746
- }
14747
- async function deregisterAgent(id, cwd) {
14748
- const db = await getDb(cwd);
14749
- const now = (/* @__PURE__ */ new Date()).toISOString();
14750
- const existing = await db.select().from(agentInstances).where(eq6(agentInstances.id, id)).get();
14751
- if (!existing) return null;
14752
- if (existing.status === "stopped") return existing;
14753
- await db.update(agentInstances).set({ status: "stopped", stoppedAt: now }).where(eq6(agentInstances.id, id));
14754
- return { ...existing, status: "stopped", stoppedAt: now };
14755
- }
14756
- async function heartbeat(id, cwd) {
14757
- const db = await getDb(cwd);
14758
- const now = (/* @__PURE__ */ new Date()).toISOString();
14759
- const existing = await db.select().from(agentInstances).where(eq6(agentInstances.id, id)).get();
14760
- if (!existing) return null;
14761
- if (existing.status === "stopped" || existing.status === "crashed") {
14762
- return existing.status;
14763
- }
14764
- await db.update(agentInstances).set({ lastHeartbeat: now }).where(eq6(agentInstances.id, id));
14765
- return existing.status;
14766
- }
14767
- async function updateAgentStatus(id, opts, cwd) {
14768
- const db = await getDb(cwd);
14769
- const existing = await db.select().from(agentInstances).where(eq6(agentInstances.id, id)).get();
14770
- if (!existing) return null;
14771
- const updates = {
14772
- status: opts.status
14773
- };
14774
- if (opts.taskId !== void 0) {
14775
- updates.taskId = opts.taskId;
14776
- }
14777
- if (opts.status === "active") {
14778
- updates.lastHeartbeat = (/* @__PURE__ */ new Date()).toISOString();
14779
- }
14780
- if (opts.status === "error" || opts.status === "crashed") {
14781
- updates.errorCount = existing.errorCount + 1;
14782
- if (opts.error) {
14783
- const errorType = classifyError(new Error(opts.error));
14784
- await db.insert(agentErrorLog).values({
14785
- agentId: id,
14786
- errorType,
14787
- message: opts.error,
14788
- occurredAt: (/* @__PURE__ */ new Date()).toISOString()
14789
- });
14790
- }
14791
- }
14792
- if (opts.status === "stopped") {
14793
- updates.stoppedAt = (/* @__PURE__ */ new Date()).toISOString();
14794
- }
14795
- await db.update(agentInstances).set(updates).where(eq6(agentInstances.id, id));
14796
- return { ...existing, ...updates };
14797
- }
14798
- async function incrementTasksCompleted(id, cwd) {
14799
- const db = await getDb(cwd);
14800
- await db.update(agentInstances).set({ totalTasksCompleted: sql8`${agentInstances.totalTasksCompleted} + 1` }).where(eq6(agentInstances.id, id));
14801
- }
14802
- async function listAgentInstances(filters, cwd) {
14803
- const db = await getDb(cwd);
14804
- const conditions = [];
14805
- if (filters?.status) {
14806
- const statuses = Array.isArray(filters.status) ? filters.status : [filters.status];
14807
- conditions.push(inArray4(agentInstances.status, statuses));
14808
- }
14809
- if (filters?.agentType) {
14810
- const types = Array.isArray(filters.agentType) ? filters.agentType : [filters.agentType];
14811
- conditions.push(inArray4(agentInstances.agentType, types));
14812
- }
14813
- if (filters?.sessionId) {
14814
- conditions.push(eq6(agentInstances.sessionId, filters.sessionId));
14815
- }
14816
- if (filters?.parentAgentId) {
14817
- conditions.push(eq6(agentInstances.parentAgentId, filters.parentAgentId));
14818
- }
14819
- if (conditions.length === 0) {
14820
- return db.select().from(agentInstances).all();
14821
- }
14822
- return db.select().from(agentInstances).where(and4(...conditions)).all();
14823
- }
14824
- async function getAgentInstance(id, cwd) {
14825
- const db = await getDb(cwd);
14826
- const row = await db.select().from(agentInstances).where(eq6(agentInstances.id, id)).get();
14827
- return row ?? null;
14828
- }
14829
- function classifyError(error40) {
14830
- const message = error40 instanceof Error ? error40.message : String(error40);
14831
- for (const pattern of RETRIABLE_PATTERNS) {
14832
- if (pattern.test(message)) return "retriable";
14833
- }
14834
- for (const pattern of PERMANENT_PATTERNS) {
14835
- if (pattern.test(message)) return "permanent";
14836
- }
14837
- return "unknown";
14838
- }
14839
- async function getAgentErrorHistory(agentId, cwd) {
14840
- const db = await getDb(cwd);
14841
- return db.select().from(agentErrorLog).where(eq6(agentErrorLog.agentId, agentId)).all();
14842
- }
14843
- async function checkAgentHealth(thresholdMs = 3e4, cwd) {
14844
- const db = await getDb(cwd);
14845
- const cutoff = new Date(Date.now() - thresholdMs).toISOString();
14846
- return db.select().from(agentInstances).where(
14847
- and4(
14848
- inArray4(agentInstances.status, ["active", "idle", "starting"]),
14849
- lt2(agentInstances.lastHeartbeat, cutoff)
14850
- )
14851
- ).all();
14852
- }
14853
- async function markCrashed(id, reason, cwd) {
14854
- return updateAgentStatus(
14855
- id,
14856
- { status: "crashed", error: reason ?? "Heartbeat timeout \u2014 agent presumed crashed" },
14857
- cwd
14858
- );
14859
- }
14860
- async function getHealthReport(thresholdMs = 3e4, cwd) {
14861
- const allAgents = await listAgentInstances(void 0, cwd);
14862
- const staleAgents = await checkAgentHealth(thresholdMs, cwd);
14863
- const report = {
14864
- total: allAgents.length,
14865
- active: 0,
14866
- idle: 0,
14867
- starting: 0,
14868
- error: 0,
14869
- crashed: 0,
14870
- stopped: 0,
14871
- totalErrors: 0,
14872
- staleAgents
14873
- };
14874
- for (const agent of allAgents) {
14875
- switch (agent.status) {
14876
- case "active":
14877
- report.active++;
14878
- break;
14879
- case "idle":
14880
- report.idle++;
14881
- break;
14882
- case "starting":
14883
- report.starting++;
14884
- break;
14885
- case "error":
14886
- report.error++;
14887
- break;
14888
- case "crashed":
14889
- report.crashed++;
14890
- break;
14891
- case "stopped":
14892
- report.stopped++;
14893
- break;
14894
- }
14895
- report.totalErrors += agent.errorCount;
14896
- }
14897
- return report;
14898
- }
14899
- var RETRIABLE_PATTERNS, PERMANENT_PATTERNS;
14900
- var init_registry2 = __esm({
14901
- "packages/core/src/agents/registry.ts"() {
14902
- "use strict";
14903
- init_sqlite2();
14904
- init_agent_schema();
14905
- RETRIABLE_PATTERNS = [
14906
- /timeout/i,
14907
- /ECONNREFUSED/,
14908
- /ECONNRESET/,
14909
- /EPIPE/,
14910
- /ETIMEDOUT/,
14911
- /rate.?limit/i,
14912
- /429/,
14913
- /503/,
14914
- /502/,
14915
- /SQLITE_BUSY/i,
14916
- /database is locked/i,
14917
- /temporarily unavailable/i,
14918
- /too many requests/i,
14919
- /network/i,
14920
- /socket hang up/i
14921
- ];
14922
- PERMANENT_PATTERNS = [
14923
- /permission denied/i,
14924
- /EACCES/,
14925
- /authentication/i,
14926
- /unauthorized/i,
14927
- /401/,
14928
- /403/,
14929
- /404/,
14930
- /not found/i,
14931
- /invalid.*token/i,
14932
- /SQLITE_CONSTRAINT/i,
14933
- /syntax error/i,
14934
- /type error/i,
14935
- /reference error/i
14936
- ];
14937
- }
14938
- });
14939
-
14940
16233
  // packages/core/src/store/project-detect.ts
14941
16234
  var project_detect_exports = {};
14942
16235
  __export(project_detect_exports, {
@@ -16261,6 +17554,42 @@ var init_learnings = __esm({
16261
17554
  }
16262
17555
  });
16263
17556
 
17557
+ // packages/core/src/mvi-helpers.ts
17558
+ function taskShowNext(taskId) {
17559
+ return {
17560
+ full: `cleo show ${taskId} --mvi full`,
17561
+ children: `cleo find --parent ${taskId}`,
17562
+ deps: `cleo deps ${taskId}`
17563
+ };
17564
+ }
17565
+ function taskListItemNext(taskId) {
17566
+ return {
17567
+ show: `cleo show ${taskId}`
17568
+ };
17569
+ }
17570
+ function sessionListItemNext(sessionId) {
17571
+ return {
17572
+ show: `cleo session show ${sessionId}`,
17573
+ serialize: `cleo session serialize ${sessionId}`
17574
+ };
17575
+ }
17576
+ function sessionStartNext() {
17577
+ return {
17578
+ current: "cleo current",
17579
+ stop: "cleo session end"
17580
+ };
17581
+ }
17582
+ function memoryFindHitNext(entryId) {
17583
+ return {
17584
+ fetch: `cleo memory fetch ${entryId}`
17585
+ };
17586
+ }
17587
+ var init_mvi_helpers = __esm({
17588
+ "packages/core/src/mvi-helpers.ts"() {
17589
+ "use strict";
17590
+ }
17591
+ });
17592
+
16264
17593
  // packages/core/src/store/typed-query.ts
16265
17594
  function typedAll(stmt, ...params) {
16266
17595
  return stmt.all(...params);
@@ -17813,6 +19142,27 @@ var init_memory_bridge = __esm({
17813
19142
  }
17814
19143
  });
17815
19144
 
19145
+ // packages/core/src/hooks/handlers/handler-helpers.ts
19146
+ function isMissingBrainSchemaError(err) {
19147
+ if (!(err instanceof Error)) return false;
19148
+ const message = String(err.message || "").toLowerCase();
19149
+ return message.includes("no such table") && message.includes("brain_");
19150
+ }
19151
+ async function isAutoCaptureEnabled(projectRoot) {
19152
+ try {
19153
+ const { loadConfig: loadConfig3 } = await Promise.resolve().then(() => (init_config(), config_exports));
19154
+ const config2 = await loadConfig3(projectRoot);
19155
+ return config2.brain?.autoCapture ?? false;
19156
+ } catch {
19157
+ return false;
19158
+ }
19159
+ }
19160
+ var init_handler_helpers = __esm({
19161
+ "packages/core/src/hooks/handlers/handler-helpers.ts"() {
19162
+ "use strict";
19163
+ }
19164
+ });
19165
+
17816
19166
  // packages/core/src/hooks/handlers/memory-bridge-refresh.ts
17817
19167
  async function maybeRefreshMemoryBridge(projectRoot) {
17818
19168
  try {
@@ -18371,11 +19721,6 @@ var init_auto_extract = __esm({
18371
19721
  });
18372
19722
 
18373
19723
  // packages/core/src/hooks/handlers/session-hooks.ts
18374
- function isMissingBrainSchemaError(err) {
18375
- if (!(err instanceof Error)) return false;
18376
- const message = String(err.message || "").toLowerCase();
18377
- return message.includes("no such table") && message.includes("brain_");
18378
- }
18379
19724
  async function handleSessionStart(projectRoot, payload) {
18380
19725
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
18381
19726
  try {
@@ -18437,6 +19782,7 @@ var init_session_hooks = __esm({
18437
19782
  "packages/core/src/hooks/handlers/session-hooks.ts"() {
18438
19783
  "use strict";
18439
19784
  init_registry();
19785
+ init_handler_helpers();
18440
19786
  init_memory_bridge_refresh();
18441
19787
  hooks.register({
18442
19788
  id: "brain-session-start",
@@ -18454,11 +19800,6 @@ var init_session_hooks = __esm({
18454
19800
  });
18455
19801
 
18456
19802
  // packages/core/src/hooks/handlers/task-hooks.ts
18457
- function isMissingBrainSchemaError2(err) {
18458
- if (!(err instanceof Error)) return false;
18459
- const message = String(err.message || "").toLowerCase();
18460
- return message.includes("no such table") && message.includes("brain_");
18461
- }
18462
19803
  async function handleToolStart(projectRoot, payload) {
18463
19804
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
18464
19805
  try {
@@ -18469,7 +19810,7 @@ async function handleToolStart(projectRoot, payload) {
18469
19810
  sourceType: "agent"
18470
19811
  });
18471
19812
  } catch (err) {
18472
- if (!isMissingBrainSchemaError2(err)) throw err;
19813
+ if (!isMissingBrainSchemaError(err)) throw err;
18473
19814
  }
18474
19815
  }
18475
19816
  async function handleToolComplete(projectRoot, payload) {
@@ -18482,7 +19823,7 @@ async function handleToolComplete(projectRoot, payload) {
18482
19823
  sourceType: "agent"
18483
19824
  });
18484
19825
  } catch (err) {
18485
- if (!isMissingBrainSchemaError2(err)) throw err;
19826
+ if (!isMissingBrainSchemaError(err)) throw err;
18486
19827
  }
18487
19828
  await maybeRefreshMemoryBridge(projectRoot);
18488
19829
  }
@@ -18490,6 +19831,7 @@ var init_task_hooks = __esm({
18490
19831
  "packages/core/src/hooks/handlers/task-hooks.ts"() {
18491
19832
  "use strict";
18492
19833
  init_registry();
19834
+ init_handler_helpers();
18493
19835
  init_memory_bridge_refresh();
18494
19836
  hooks.register({
18495
19837
  id: "brain-tool-start",
@@ -18507,7 +19849,7 @@ var init_task_hooks = __esm({
18507
19849
  });
18508
19850
 
18509
19851
  // packages/core/src/hooks/handlers/error-hooks.ts
18510
- async function handleError(projectRoot, payload) {
19852
+ async function handleError2(projectRoot, payload) {
18511
19853
  if (payload.metadata?.["_fromHook"]) return;
18512
19854
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
18513
19855
  const domainOp = payload.domain && payload.operation ? `${payload.domain}.${payload.operation}` : "unknown";
@@ -18530,7 +19872,7 @@ var init_error_hooks = __esm({
18530
19872
  hooks.register({
18531
19873
  id: "brain-error",
18532
19874
  event: "PostToolUseFailure",
18533
- handler: handleError,
19875
+ handler: handleError2,
18534
19876
  priority: 100
18535
19877
  });
18536
19878
  }
@@ -18538,11 +19880,6 @@ var init_error_hooks = __esm({
18538
19880
 
18539
19881
  // packages/core/src/hooks/handlers/file-hooks.ts
18540
19882
  import { isAbsolute, relative } from "node:path";
18541
- function isMissingBrainSchemaError3(err) {
18542
- if (!(err instanceof Error)) return false;
18543
- const message = String(err.message || "").toLowerCase();
18544
- return message.includes("no such table") && message.includes("brain_");
18545
- }
18546
19883
  function shouldSkipPath(relativePath) {
18547
19884
  return SKIP_PATTERNS.some((pattern) => pattern.test(relativePath));
18548
19885
  }
@@ -18577,7 +19914,7 @@ async function handleFileChange(projectRoot, payload) {
18577
19914
  sourceType: "agent"
18578
19915
  });
18579
19916
  } catch (err) {
18580
- if (!isMissingBrainSchemaError3(err)) throw err;
19917
+ if (!isMissingBrainSchemaError(err)) throw err;
18581
19918
  }
18582
19919
  }
18583
19920
  var recentWrites, DEDUP_INTERVAL_MS, SKIP_PATTERNS;
@@ -18585,6 +19922,7 @@ var init_file_hooks = __esm({
18585
19922
  "packages/core/src/hooks/handlers/file-hooks.ts"() {
18586
19923
  "use strict";
18587
19924
  init_registry();
19925
+ init_handler_helpers();
18588
19926
  recentWrites = /* @__PURE__ */ new Map();
18589
19927
  DEDUP_INTERVAL_MS = 5e3;
18590
19928
  SKIP_PATTERNS = [
@@ -18615,11 +19953,6 @@ var init_file_hooks = __esm({
18615
19953
  });
18616
19954
 
18617
19955
  // packages/core/src/hooks/handlers/mcp-hooks.ts
18618
- function isMissingBrainSchemaError4(err) {
18619
- if (!(err instanceof Error)) return false;
18620
- const message = String(err.message || "").toLowerCase();
18621
- return message.includes("no such table") && message.includes("brain_");
18622
- }
18623
19956
  async function isBrainCaptureEnabled(projectRoot) {
18624
19957
  const envOverride = process.env["CLEO_BRAIN_CAPTURE_MCP"];
18625
19958
  if (envOverride !== void 0) {
@@ -18644,7 +19977,7 @@ async function handlePromptSubmit(projectRoot, payload) {
18644
19977
  sourceType: "agent"
18645
19978
  });
18646
19979
  } catch (err) {
18647
- if (!isMissingBrainSchemaError4(err)) throw err;
19980
+ if (!isMissingBrainSchemaError(err)) throw err;
18648
19981
  }
18649
19982
  }
18650
19983
  async function handleResponseComplete(projectRoot, payload) {
@@ -18658,19 +19991,13 @@ async function handleResponseComplete(projectRoot, payload) {
18658
19991
  sourceType: "agent"
18659
19992
  });
18660
19993
  } catch (err) {
18661
- if (!isMissingBrainSchemaError4(err)) throw err;
19994
+ if (!isMissingBrainSchemaError(err)) throw err;
18662
19995
  }
18663
19996
  }
18664
19997
  async function handleSystemNotification(projectRoot, payload) {
18665
19998
  if (payload.filePath || payload.changeType) return;
18666
19999
  if (!payload.message) return;
18667
- try {
18668
- const { loadConfig: loadConfig3 } = await Promise.resolve().then(() => (init_config(), config_exports));
18669
- const config2 = await loadConfig3(projectRoot);
18670
- if (!config2.brain?.autoCapture) return;
18671
- } catch {
18672
- return;
18673
- }
20000
+ if (!await isAutoCaptureEnabled(projectRoot)) return;
18674
20001
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
18675
20002
  try {
18676
20003
  await observeBrain2(projectRoot, {
@@ -18681,13 +20008,14 @@ async function handleSystemNotification(projectRoot, payload) {
18681
20008
  sourceType: "agent"
18682
20009
  });
18683
20010
  } catch (err) {
18684
- if (!isMissingBrainSchemaError4(err)) throw err;
20011
+ if (!isMissingBrainSchemaError(err)) throw err;
18685
20012
  }
18686
20013
  }
18687
20014
  var init_mcp_hooks = __esm({
18688
20015
  "packages/core/src/hooks/handlers/mcp-hooks.ts"() {
18689
20016
  "use strict";
18690
20017
  init_registry();
20018
+ init_handler_helpers();
18691
20019
  hooks.register({
18692
20020
  id: "brain-prompt-submit",
18693
20021
  event: "PromptSubmit",
@@ -18710,11 +20038,6 @@ var init_mcp_hooks = __esm({
18710
20038
  });
18711
20039
 
18712
20040
  // packages/core/src/hooks/handlers/work-capture-hooks.ts
18713
- function isMissingBrainSchemaError5(err) {
18714
- if (!(err instanceof Error)) return false;
18715
- const message = String(err.message || "").toLowerCase();
18716
- return message.includes("no such table") && message.includes("brain_");
18717
- }
18718
20041
  async function isWorkCaptureEnabled(projectRoot) {
18719
20042
  const envOverride = process.env["CLEO_BRAIN_CAPTURE_WORK"];
18720
20043
  if (envOverride !== void 0) {
@@ -18745,7 +20068,7 @@ async function handleWorkPromptSubmit(projectRoot, payload) {
18745
20068
  sourceType: "agent"
18746
20069
  });
18747
20070
  } catch (err) {
18748
- if (!isMissingBrainSchemaError5(err)) throw err;
20071
+ if (!isMissingBrainSchemaError(err)) throw err;
18749
20072
  }
18750
20073
  }
18751
20074
  async function handleWorkResponseComplete(projectRoot, payload) {
@@ -18762,7 +20085,7 @@ async function handleWorkResponseComplete(projectRoot, payload) {
18762
20085
  sourceType: "agent"
18763
20086
  });
18764
20087
  } catch (err) {
18765
- if (!isMissingBrainSchemaError5(err)) throw err;
20088
+ if (!isMissingBrainSchemaError(err)) throw err;
18766
20089
  }
18767
20090
  }
18768
20091
  var CAPTURE_OPERATIONS;
@@ -18770,6 +20093,7 @@ var init_work_capture_hooks = __esm({
18770
20093
  "packages/core/src/hooks/handlers/work-capture-hooks.ts"() {
18771
20094
  "use strict";
18772
20095
  init_registry();
20096
+ init_handler_helpers();
18773
20097
  CAPTURE_OPERATIONS = /* @__PURE__ */ new Set([
18774
20098
  "tasks.add",
18775
20099
  "tasks.update",
@@ -18796,20 +20120,6 @@ var init_work_capture_hooks = __esm({
18796
20120
  });
18797
20121
 
18798
20122
  // packages/core/src/hooks/handlers/agent-hooks.ts
18799
- function isMissingBrainSchemaError6(err) {
18800
- if (!(err instanceof Error)) return false;
18801
- const message = String(err.message || "").toLowerCase();
18802
- return message.includes("no such table") && message.includes("brain_");
18803
- }
18804
- async function isAutoCaptureEnabled(projectRoot) {
18805
- try {
18806
- const { loadConfig: loadConfig3 } = await Promise.resolve().then(() => (init_config(), config_exports));
18807
- const config2 = await loadConfig3(projectRoot);
18808
- return config2.brain?.autoCapture ?? false;
18809
- } catch {
18810
- return false;
18811
- }
18812
- }
18813
20123
  async function handleSubagentStart(projectRoot, payload) {
18814
20124
  if (!await isAutoCaptureEnabled(projectRoot)) return;
18815
20125
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
@@ -18824,7 +20134,7 @@ async function handleSubagentStart(projectRoot, payload) {
18824
20134
  sourceType: "agent"
18825
20135
  });
18826
20136
  } catch (err) {
18827
- if (!isMissingBrainSchemaError6(err)) throw err;
20137
+ if (!isMissingBrainSchemaError(err)) throw err;
18828
20138
  }
18829
20139
  }
18830
20140
  async function handleSubagentStop(projectRoot, payload) {
@@ -18843,13 +20153,14 @@ Summary: ${payload.summary}` : "";
18843
20153
  sourceType: "agent"
18844
20154
  });
18845
20155
  } catch (err) {
18846
- if (!isMissingBrainSchemaError6(err)) throw err;
20156
+ if (!isMissingBrainSchemaError(err)) throw err;
18847
20157
  }
18848
20158
  }
18849
20159
  var init_agent_hooks = __esm({
18850
20160
  "packages/core/src/hooks/handlers/agent-hooks.ts"() {
18851
20161
  "use strict";
18852
20162
  init_registry();
20163
+ init_handler_helpers();
18853
20164
  hooks.register({
18854
20165
  id: "brain-subagent-start",
18855
20166
  event: "SubagentStart",
@@ -18866,22 +20177,8 @@ var init_agent_hooks = __esm({
18866
20177
  });
18867
20178
 
18868
20179
  // packages/core/src/hooks/handlers/context-hooks.ts
18869
- function isMissingBrainSchemaError7(err) {
18870
- if (!(err instanceof Error)) return false;
18871
- const message = String(err.message || "").toLowerCase();
18872
- return message.includes("no such table") && message.includes("brain_");
18873
- }
18874
- async function isAutoCaptureEnabled2(projectRoot) {
18875
- try {
18876
- const { loadConfig: loadConfig3 } = await Promise.resolve().then(() => (init_config(), config_exports));
18877
- const config2 = await loadConfig3(projectRoot);
18878
- return config2.brain?.autoCapture ?? false;
18879
- } catch {
18880
- return false;
18881
- }
18882
- }
18883
20180
  async function handlePreCompact(projectRoot, payload) {
18884
- if (!await isAutoCaptureEnabled2(projectRoot)) return;
20181
+ if (!await isAutoCaptureEnabled(projectRoot)) return;
18885
20182
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
18886
20183
  const tokensPart = payload.tokensBefore != null ? ` (~${payload.tokensBefore.toLocaleString()} tokens)` : "";
18887
20184
  const reasonPart = payload.reason ? ` Reason: ${payload.reason}` : "";
@@ -18894,11 +20191,11 @@ async function handlePreCompact(projectRoot, payload) {
18894
20191
  sourceType: "agent"
18895
20192
  });
18896
20193
  } catch (err) {
18897
- if (!isMissingBrainSchemaError7(err)) throw err;
20194
+ if (!isMissingBrainSchemaError(err)) throw err;
18898
20195
  }
18899
20196
  }
18900
20197
  async function handlePostCompact(projectRoot, payload) {
18901
- if (!await isAutoCaptureEnabled2(projectRoot)) return;
20198
+ if (!await isAutoCaptureEnabled(projectRoot)) return;
18902
20199
  const { observeBrain: observeBrain2 } = await Promise.resolve().then(() => (init_brain_retrieval(), brain_retrieval_exports));
18903
20200
  const statusPart = payload.success ? "succeeded" : "failed";
18904
20201
  const beforePart = payload.tokensBefore != null ? ` before=${payload.tokensBefore.toLocaleString()}` : "";
@@ -18912,13 +20209,14 @@ async function handlePostCompact(projectRoot, payload) {
18912
20209
  sourceType: "agent"
18913
20210
  });
18914
20211
  } catch (err) {
18915
- if (!isMissingBrainSchemaError7(err)) throw err;
20212
+ if (!isMissingBrainSchemaError(err)) throw err;
18916
20213
  }
18917
20214
  }
18918
20215
  var init_context_hooks = __esm({
18919
20216
  "packages/core/src/hooks/handlers/context-hooks.ts"() {
18920
20217
  "use strict";
18921
20218
  init_registry();
20219
+ init_handler_helpers();
18922
20220
  hooks.register({
18923
20221
  id: "brain-pre-compact",
18924
20222
  event: "PreCompact",
@@ -20068,12 +21366,14 @@ function toMinimal(s) {
20068
21366
  name: s.name,
20069
21367
  status: s.status,
20070
21368
  startedAt: s.startedAt,
20071
- scope: s.scope
21369
+ scope: s.scope,
21370
+ _next: sessionListItemNext(s.id)
20072
21371
  };
20073
21372
  }
20074
21373
  var init_find = __esm({
20075
21374
  "packages/core/src/sessions/find.ts"() {
20076
21375
  "use strict";
21376
+ init_mvi_helpers();
20077
21377
  }
20078
21378
  });
20079
21379
 
@@ -20807,6 +22107,7 @@ async function startSession(options, cwd, accessor) {
20807
22107
  providerId: session.providerId ?? void 0
20808
22108
  }).catch(() => {
20809
22109
  });
22110
+ Object.assign(session, { _next: sessionStartNext() });
20810
22111
  return session;
20811
22112
  }
20812
22113
  async function endSession(options = {}, cwd, accessor) {
@@ -20899,6 +22200,9 @@ async function listSessions(options = {}, cwd, accessor) {
20899
22200
  if (options.limit) {
20900
22201
  sessions2 = sessions2.slice(0, options.limit);
20901
22202
  }
22203
+ for (const s of sessions2) {
22204
+ Object.assign(s, { _next: sessionListItemNext(s.id) });
22205
+ }
20902
22206
  return sessions2;
20903
22207
  }
20904
22208
  async function gcSessions(maxAgeHours = 24, cwd, accessor) {
@@ -20943,6 +22247,7 @@ var init_sessions = __esm({
20943
22247
  "use strict";
20944
22248
  init_src();
20945
22249
  init_errors3();
22250
+ init_mvi_helpers();
20946
22251
  init_data_accessor();
20947
22252
  init_handlers();
20948
22253
  init_assumptions();
@@ -21025,6 +22330,9 @@ async function searchBrainCompact(projectRoot, params) {
21025
22330
  if (dateEnd) {
21026
22331
  results = results.filter((r) => r.date <= dateEnd);
21027
22332
  }
22333
+ for (const hit of results) {
22334
+ hit._next = memoryFindHitNext(hit.id);
22335
+ }
21028
22336
  return {
21029
22337
  results,
21030
22338
  total: results.length,
@@ -21349,6 +22657,7 @@ var TYPE_KEYWORDS, observeSeq;
21349
22657
  var init_brain_retrieval = __esm({
21350
22658
  "packages/core/src/memory/brain-retrieval.ts"() {
21351
22659
  "use strict";
22660
+ init_mvi_helpers();
21352
22661
  init_brain_accessor();
21353
22662
  init_typed_query();
21354
22663
  init_brain_embedding();
@@ -24702,10 +26011,10 @@ async function readProjectMeta(projectPath) {
24702
26011
  }
24703
26012
  async function readProjectId(projectPath) {
24704
26013
  try {
24705
- const { readFileSync: readFileSync78, existsSync: existsSync104 } = await import("node:fs");
26014
+ const { readFileSync: readFileSync79, existsSync: existsSync105 } = await import("node:fs");
24706
26015
  const infoPath = join59(projectPath, ".cleo", "project-info.json");
24707
- if (!existsSync104(infoPath)) return "";
24708
- const data = JSON.parse(readFileSync78(infoPath, "utf-8"));
26016
+ if (!existsSync105(infoPath)) return "";
26017
+ const data = JSON.parse(readFileSync79(infoPath, "utf-8"));
24709
26018
  return typeof data.projectId === "string" ? data.projectId : "";
24710
26019
  } catch {
24711
26020
  return "";
@@ -25067,6 +26376,9 @@ async function startTask(taskId, cwd, accessor) {
25067
26376
  }
25068
26377
  focus.sessionNotes.push(noteEntry);
25069
26378
  await acc.setMetaValue("focus_state", focus);
26379
+ if (!task.assignee) {
26380
+ await acc.updateTaskFields(taskId, { assignee: process.env["CLEO_AGENT_ID"] ?? "local" });
26381
+ }
25070
26382
  await logOperation(
25071
26383
  "task_start",
25072
26384
  taskId,
@@ -25747,6 +27059,153 @@ var init_hooks = __esm({
25747
27059
  }
25748
27060
  });
25749
27061
 
27062
+ // packages/core/src/store/signaldock-sqlite.ts
27063
+ var signaldock_sqlite_exports = {};
27064
+ __export(signaldock_sqlite_exports, {
27065
+ SIGNALDOCK_SCHEMA_VERSION: () => SIGNALDOCK_SCHEMA_VERSION,
27066
+ checkSignaldockDbHealth: () => checkSignaldockDbHealth,
27067
+ ensureSignaldockDb: () => ensureSignaldockDb,
27068
+ getSignaldockDbPath: () => getSignaldockDbPath
27069
+ });
27070
+ import { existsSync as existsSync100, mkdirSync as mkdirSync22, readFileSync as readFileSync74 } from "node:fs";
27071
+ import { createRequire as createRequire5 } from "node:module";
27072
+ import { dirname as dirname19, join as join101 } from "node:path";
27073
+ import { fileURLToPath as fileURLToPath5 } from "node:url";
27074
+ function getSignaldockDbPath(cwd) {
27075
+ const cleoDir = cwd ? join101(cwd, ".cleo") : getCleoDirAbsolute();
27076
+ return join101(cleoDir, DB_FILENAME4);
27077
+ }
27078
+ function resolveMigrationSql(cwd) {
27079
+ const projectRoot = cwd ?? process.cwd();
27080
+ const monorepoPath = join101(
27081
+ projectRoot,
27082
+ "crates",
27083
+ "signaldock-storage",
27084
+ "migrations",
27085
+ "2026-03-28-000000_initial",
27086
+ "up.sql"
27087
+ );
27088
+ if (existsSync100(monorepoPath)) return monorepoPath;
27089
+ const thisDir = dirname19(fileURLToPath5(import.meta.url));
27090
+ const installedPath = join101(
27091
+ thisDir,
27092
+ "..",
27093
+ "..",
27094
+ "..",
27095
+ "..",
27096
+ "crates",
27097
+ "signaldock-storage",
27098
+ "migrations",
27099
+ "2026-03-28-000000_initial",
27100
+ "up.sql"
27101
+ );
27102
+ if (existsSync100(installedPath)) return installedPath;
27103
+ return null;
27104
+ }
27105
+ async function ensureSignaldockDb(cwd) {
27106
+ const dbPath = getSignaldockDbPath(cwd);
27107
+ const alreadyExists = existsSync100(dbPath);
27108
+ mkdirSync22(dirname19(dbPath), { recursive: true });
27109
+ const db = new DatabaseSyncClass(dbPath);
27110
+ try {
27111
+ db.exec("PRAGMA journal_mode = WAL");
27112
+ db.exec("PRAGMA busy_timeout = 5000");
27113
+ db.exec("PRAGMA synchronous = NORMAL");
27114
+ db.exec("PRAGMA foreign_keys = ON");
27115
+ db.exec("PRAGMA cache_size = -64000");
27116
+ const hasSchema = (() => {
27117
+ try {
27118
+ const result = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agents'").get();
27119
+ return !!result;
27120
+ } catch {
27121
+ return false;
27122
+ }
27123
+ })();
27124
+ if (!hasSchema) {
27125
+ const migrationPath = resolveMigrationSql(cwd);
27126
+ if (!migrationPath) {
27127
+ throw new Error(
27128
+ "signaldock-storage migration SQL not found. Ensure crates/signaldock-storage/ exists."
27129
+ );
27130
+ }
27131
+ const migrationSql = readFileSync74(migrationPath, "utf-8");
27132
+ db.exec("BEGIN TRANSACTION");
27133
+ try {
27134
+ db.exec(migrationSql);
27135
+ db.exec("COMMIT");
27136
+ } catch (err) {
27137
+ db.exec("ROLLBACK");
27138
+ throw err;
27139
+ }
27140
+ }
27141
+ db.exec(`
27142
+ CREATE TABLE IF NOT EXISTS _signaldock_meta (
27143
+ key TEXT PRIMARY KEY,
27144
+ value TEXT NOT NULL,
27145
+ updated_at INTEGER NOT NULL DEFAULT (strftime('%s', 'now'))
27146
+ )
27147
+ `);
27148
+ db.exec(`
27149
+ INSERT OR REPLACE INTO _signaldock_meta (key, value, updated_at)
27150
+ VALUES ('schema_version', '${SIGNALDOCK_SCHEMA_VERSION}', strftime('%s', 'now'))
27151
+ `);
27152
+ return {
27153
+ action: alreadyExists && hasSchema ? "exists" : "created",
27154
+ path: dbPath
27155
+ };
27156
+ } finally {
27157
+ db.close();
27158
+ }
27159
+ }
27160
+ async function checkSignaldockDbHealth(cwd) {
27161
+ const dbPath = getSignaldockDbPath(cwd);
27162
+ if (!existsSync100(dbPath)) {
27163
+ return {
27164
+ exists: false,
27165
+ path: dbPath,
27166
+ tableCount: 0,
27167
+ walMode: false,
27168
+ schemaVersion: null,
27169
+ foreignKeysEnabled: false
27170
+ };
27171
+ }
27172
+ const db = new DatabaseSyncClass(dbPath);
27173
+ try {
27174
+ const tables = db.prepare(
27175
+ "SELECT COUNT(*) as count FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%'"
27176
+ ).get();
27177
+ const journalMode = db.prepare("PRAGMA journal_mode").get();
27178
+ const fkEnabled = db.prepare("PRAGMA foreign_keys").get();
27179
+ let schemaVersion = null;
27180
+ try {
27181
+ const meta = db.prepare("SELECT value FROM _signaldock_meta WHERE key = 'schema_version'").get();
27182
+ schemaVersion = meta?.value ?? null;
27183
+ } catch {
27184
+ }
27185
+ return {
27186
+ exists: true,
27187
+ path: dbPath,
27188
+ tableCount: tables.count,
27189
+ walMode: journalMode.journal_mode === "wal",
27190
+ schemaVersion,
27191
+ foreignKeysEnabled: fkEnabled.foreign_keys === 1
27192
+ };
27193
+ } finally {
27194
+ db.close();
27195
+ }
27196
+ }
27197
+ var _require5, DatabaseSyncClass, DB_FILENAME4, SIGNALDOCK_SCHEMA_VERSION;
27198
+ var init_signaldock_sqlite = __esm({
27199
+ "packages/core/src/store/signaldock-sqlite.ts"() {
27200
+ "use strict";
27201
+ init_paths();
27202
+ _require5 = createRequire5(import.meta.url);
27203
+ ({ DatabaseSync: DatabaseSyncClass } = _require5("node:sqlite"));
27204
+ DB_FILENAME4 = "signaldock.db";
27205
+ SIGNALDOCK_SCHEMA_VERSION = "2026.3.76";
27206
+ }
27207
+ });
27208
+
25750
27209
  // packages/core/src/init.ts
25751
27210
  var init_exports = {};
25752
27211
  __export(init_exports, {
@@ -25761,27 +27220,27 @@ __export(init_exports, {
25761
27220
  isAutoInitEnabled: () => isAutoInitEnabled,
25762
27221
  updateDocs: () => updateDocs
25763
27222
  });
25764
- import { existsSync as existsSync100, readdirSync as readdirSync34, readFileSync as readFileSync74 } from "node:fs";
27223
+ import { existsSync as existsSync101, readdirSync as readdirSync34, readFileSync as readFileSync75 } from "node:fs";
25765
27224
  import { copyFile as copyFile3, lstat, mkdir as mkdir16, readFile as readFile17, symlink, unlink as unlink4, writeFile as writeFile11 } from "node:fs/promises";
25766
27225
  import { platform as platform4 } from "node:os";
25767
- import { basename as basename17, dirname as dirname19, join as join101 } from "node:path";
27226
+ import { basename as basename17, dirname as dirname20, join as join102 } from "node:path";
25768
27227
  async function initAgentDefinition(created, warnings) {
25769
27228
  let agentSourceDir = null;
25770
27229
  try {
25771
- const { createRequire: createRequire5 } = await import("node:module");
25772
- const req = createRequire5(import.meta.url);
27230
+ const { createRequire: createRequire6 } = await import("node:module");
27231
+ const req = createRequire6(import.meta.url);
25773
27232
  const agentsPkgMain = req.resolve("@cleocode/agents/package.json");
25774
- const agentsPkgRoot = dirname19(agentsPkgMain);
25775
- const candidate = join101(agentsPkgRoot, "cleo-subagent");
25776
- if (existsSync100(candidate)) {
27233
+ const agentsPkgRoot = dirname20(agentsPkgMain);
27234
+ const candidate = join102(agentsPkgRoot, "cleo-subagent");
27235
+ if (existsSync101(candidate)) {
25777
27236
  agentSourceDir = candidate;
25778
27237
  }
25779
27238
  } catch {
25780
27239
  }
25781
27240
  if (!agentSourceDir) {
25782
27241
  const packageRoot = getPackageRoot();
25783
- const bundled = join101(packageRoot, "agents", "cleo-subagent");
25784
- if (existsSync100(bundled)) {
27242
+ const bundled = join102(packageRoot, "agents", "cleo-subagent");
27243
+ if (existsSync101(bundled)) {
25785
27244
  agentSourceDir = bundled;
25786
27245
  }
25787
27246
  }
@@ -25789,8 +27248,8 @@ async function initAgentDefinition(created, warnings) {
25789
27248
  warnings.push("agents/cleo-subagent/ not found in package, skipping agent definition install");
25790
27249
  return;
25791
27250
  }
25792
- const globalAgentsDir = join101(getAgentsHome(), "agents", "cleo-subagent");
25793
- await mkdir16(dirname19(globalAgentsDir), { recursive: true });
27251
+ const globalAgentsDir = join102(getAgentsHome(), "agents", "cleo-subagent");
27252
+ await mkdir16(dirname20(globalAgentsDir), { recursive: true });
25794
27253
  try {
25795
27254
  try {
25796
27255
  const stat2 = await lstat(globalAgentsDir);
@@ -25813,7 +27272,7 @@ async function initAgentDefinition(created, warnings) {
25813
27272
  await mkdir16(globalAgentsDir, { recursive: true });
25814
27273
  const files = readdirSync34(agentSourceDir);
25815
27274
  for (const file2 of files) {
25816
- await copyFile3(join101(agentSourceDir, file2), join101(globalAgentsDir, file2));
27275
+ await copyFile3(join102(agentSourceDir, file2), join102(globalAgentsDir, file2));
25817
27276
  }
25818
27277
  created.push("agent: cleo-subagent (copied)");
25819
27278
  } catch (copyErr) {
@@ -25865,23 +27324,23 @@ async function initCoreSkills(created, warnings) {
25865
27324
  const packageRoot = getPackageRoot();
25866
27325
  let ctSkillsRoot = null;
25867
27326
  try {
25868
- const { createRequire: createRequire5 } = await import("node:module");
25869
- const req = createRequire5(import.meta.url);
27327
+ const { createRequire: createRequire6 } = await import("node:module");
27328
+ const req = createRequire6(import.meta.url);
25870
27329
  const skillsPkgMain = req.resolve("@cleocode/skills/package.json");
25871
- const skillsPkgRoot = dirname19(skillsPkgMain);
25872
- if (existsSync100(join101(skillsPkgRoot, "skills.json"))) {
27330
+ const skillsPkgRoot = dirname20(skillsPkgMain);
27331
+ if (existsSync101(join102(skillsPkgRoot, "skills.json"))) {
25873
27332
  ctSkillsRoot = skillsPkgRoot;
25874
27333
  }
25875
27334
  } catch {
25876
27335
  }
25877
27336
  if (!ctSkillsRoot) {
25878
27337
  try {
25879
- const bundledPath = join101(packageRoot, "packages", "skills");
25880
- if (existsSync100(join101(bundledPath, "skills.json"))) {
27338
+ const bundledPath = join102(packageRoot, "packages", "skills");
27339
+ if (existsSync101(join102(bundledPath, "skills.json"))) {
25881
27340
  ctSkillsRoot = bundledPath;
25882
27341
  } else {
25883
- const ctSkillsPath = join101(packageRoot, "node_modules", "@cleocode", "skills");
25884
- if (existsSync100(join101(ctSkillsPath, "skills.json"))) {
27342
+ const ctSkillsPath = join102(packageRoot, "node_modules", "@cleocode", "skills");
27343
+ if (existsSync101(join102(ctSkillsPath, "skills.json"))) {
25885
27344
  ctSkillsRoot = ctSkillsPath;
25886
27345
  }
25887
27346
  }
@@ -25897,14 +27356,14 @@ async function initCoreSkills(created, warnings) {
25897
27356
  } catch {
25898
27357
  warnings.push("Failed to register skill library with CAAMP");
25899
27358
  }
25900
- const catalogPath = join101(ctSkillsRoot, "skills.json");
25901
- const catalog3 = JSON.parse(readFileSync74(catalogPath, "utf-8"));
27359
+ const catalogPath = join102(ctSkillsRoot, "skills.json");
27360
+ const catalog3 = JSON.parse(readFileSync75(catalogPath, "utf-8"));
25902
27361
  const skills = catalog3.skills ?? [];
25903
27362
  const coreSkills = skills.filter((s) => s.tier <= 2);
25904
27363
  const installed = [];
25905
27364
  for (const skill of coreSkills) {
25906
- const skillSourceDir = dirname19(join101(ctSkillsRoot, skill.path));
25907
- if (!existsSync100(skillSourceDir)) {
27365
+ const skillSourceDir = dirname20(join102(ctSkillsRoot, skill.path));
27366
+ if (!existsSync101(skillSourceDir)) {
25908
27367
  continue;
25909
27368
  }
25910
27369
  try {
@@ -25947,38 +27406,38 @@ async function initNexusRegistration(projectRoot, created, warnings) {
25947
27406
  }
25948
27407
  }
25949
27408
  async function installGitHubTemplates(projectRoot, created, skipped) {
25950
- if (!existsSync100(join101(projectRoot, ".git"))) {
27409
+ if (!existsSync101(join102(projectRoot, ".git"))) {
25951
27410
  return;
25952
27411
  }
25953
- const githubDir = join101(projectRoot, ".github");
25954
- const issueTemplateDir = join101(githubDir, "ISSUE_TEMPLATE");
27412
+ const githubDir = join102(projectRoot, ".github");
27413
+ const issueTemplateDir = join102(githubDir, "ISSUE_TEMPLATE");
25955
27414
  const packageRoot = getPackageRoot();
25956
- const templateSrcDir = join101(packageRoot, "templates", "github");
25957
- if (!existsSync100(templateSrcDir)) {
27415
+ const templateSrcDir = join102(packageRoot, "templates", "github");
27416
+ if (!existsSync101(templateSrcDir)) {
25958
27417
  return;
25959
27418
  }
25960
27419
  await mkdir16(issueTemplateDir, { recursive: true });
25961
- const issueSrcDir = join101(templateSrcDir, "ISSUE_TEMPLATE");
25962
- if (existsSync100(issueSrcDir)) {
27420
+ const issueSrcDir = join102(templateSrcDir, "ISSUE_TEMPLATE");
27421
+ if (existsSync101(issueSrcDir)) {
25963
27422
  const issueFiles = readdirSync34(issueSrcDir);
25964
27423
  for (const file2 of issueFiles) {
25965
- const dest = join101(issueTemplateDir, file2);
25966
- if (existsSync100(dest)) {
27424
+ const dest = join102(issueTemplateDir, file2);
27425
+ if (existsSync101(dest)) {
25967
27426
  skipped.push(`.github/ISSUE_TEMPLATE/${file2}`);
25968
27427
  continue;
25969
27428
  }
25970
- const content = readFileSync74(join101(issueSrcDir, file2), "utf-8");
27429
+ const content = readFileSync75(join102(issueSrcDir, file2), "utf-8");
25971
27430
  await writeFile11(dest, content, "utf-8");
25972
27431
  created.push(`.github/ISSUE_TEMPLATE/${file2}`);
25973
27432
  }
25974
27433
  }
25975
- const prTemplateSrc = join101(templateSrcDir, "pull_request_template.md");
25976
- const prTemplateDest = join101(githubDir, "pull_request_template.md");
25977
- if (existsSync100(prTemplateSrc)) {
25978
- if (existsSync100(prTemplateDest)) {
27434
+ const prTemplateSrc = join102(templateSrcDir, "pull_request_template.md");
27435
+ const prTemplateDest = join102(githubDir, "pull_request_template.md");
27436
+ if (existsSync101(prTemplateSrc)) {
27437
+ if (existsSync101(prTemplateDest)) {
25979
27438
  skipped.push(".github/pull_request_template.md");
25980
27439
  } else {
25981
- const content = readFileSync74(prTemplateSrc, "utf-8");
27440
+ const content = readFileSync75(prTemplateSrc, "utf-8");
25982
27441
  await writeFile11(prTemplateDest, content, "utf-8");
25983
27442
  created.push(".github/pull_request_template.md");
25984
27443
  }
@@ -26009,7 +27468,7 @@ async function updateDocs() {
26009
27468
  async function initProject(opts = {}) {
26010
27469
  const cleoDir = getCleoDirAbsolute();
26011
27470
  const projRoot = getProjectRoot();
26012
- const alreadyInitialized = existsSync100(cleoDir) && (existsSync100(join101(cleoDir, "tasks.db")) || existsSync100(join101(cleoDir, "config.json")));
27471
+ const alreadyInitialized = existsSync101(cleoDir) && (existsSync101(join102(cleoDir, "tasks.db")) || existsSync101(join102(cleoDir, "config.json")));
26013
27472
  if (alreadyInitialized && !opts.force) {
26014
27473
  throw new CleoError(
26015
27474
  1 /* GENERAL_ERROR */,
@@ -26033,7 +27492,7 @@ async function initProject(opts = {}) {
26033
27492
  }
26034
27493
  try {
26035
27494
  const { getDb: getDb3 } = await Promise.resolve().then(() => (init_sqlite2(), sqlite_exports));
26036
- await getDb3(join101(cleoDir, ".."));
27495
+ await getDb3(join102(cleoDir, ".."));
26037
27496
  created.push("tasks.db");
26038
27497
  } catch (err) {
26039
27498
  created.push(`tasks.db (deferred: ${err instanceof Error ? err.message : String(err)})`);
@@ -26046,6 +27505,15 @@ async function initProject(opts = {}) {
26046
27505
  } catch (err) {
26047
27506
  created.push(`brain.db (deferred: ${err instanceof Error ? err.message : String(err)})`);
26048
27507
  }
27508
+ try {
27509
+ const { ensureSignaldockDb: ensureSignaldockDb2 } = await Promise.resolve().then(() => (init_signaldock_sqlite(), signaldock_sqlite_exports));
27510
+ const sdResult = await ensureSignaldockDb2(projRoot);
27511
+ if (sdResult.action === "created") {
27512
+ created.push("signaldock.db");
27513
+ }
27514
+ } catch (err) {
27515
+ created.push(`signaldock.db (deferred: ${err instanceof Error ? err.message : String(err)})`);
27516
+ }
26049
27517
  if (force) {
26050
27518
  const gitignoreResult = await ensureGitignore(projRoot);
26051
27519
  if (gitignoreResult.action === "skipped") {
@@ -26054,8 +27522,8 @@ async function initProject(opts = {}) {
26054
27522
  created.push(".gitignore");
26055
27523
  }
26056
27524
  } else {
26057
- const gitignorePath = join101(cleoDir, ".gitignore");
26058
- if (existsSync100(gitignorePath)) {
27525
+ const gitignorePath = join102(cleoDir, ".gitignore");
27526
+ if (existsSync101(gitignorePath)) {
26059
27527
  skipped.push(".gitignore");
26060
27528
  } else {
26061
27529
  const gitignoreResult = await ensureGitignore(projRoot);
@@ -26066,12 +27534,12 @@ async function initProject(opts = {}) {
26066
27534
  }
26067
27535
  }
26068
27536
  }
26069
- const legacySequencePath = join101(cleoDir, ".sequence");
27537
+ const legacySequencePath = join102(cleoDir, ".sequence");
26070
27538
  try {
26071
27539
  await unlink4(legacySequencePath);
26072
27540
  } catch {
26073
27541
  }
26074
- const legacySequenceJsonPath = join101(cleoDir, ".sequence.json");
27542
+ const legacySequenceJsonPath = join102(cleoDir, ".sequence.json");
26075
27543
  try {
26076
27544
  await unlink4(legacySequenceJsonPath);
26077
27545
  } catch {
@@ -26232,8 +27700,8 @@ function isAutoInitEnabled() {
26232
27700
  }
26233
27701
  async function ensureInitialized(projectRoot) {
26234
27702
  const root = projectRoot ?? getProjectRoot();
26235
- const cleoDir = join101(root, ".cleo");
26236
- const isInit = existsSync100(cleoDir) && (existsSync100(join101(cleoDir, "tasks.db")) || existsSync100(join101(cleoDir, "config.json")));
27703
+ const cleoDir = join102(root, ".cleo");
27704
+ const isInit = existsSync101(cleoDir) && (existsSync101(join102(cleoDir, "tasks.db")) || existsSync101(join102(cleoDir, "config.json")));
26237
27705
  if (isInit) {
26238
27706
  return { initialized: true };
26239
27707
  }
@@ -26245,7 +27713,7 @@ async function ensureInitialized(projectRoot) {
26245
27713
  }
26246
27714
  async function getVersion2(projectRoot) {
26247
27715
  const root = projectRoot ?? getProjectRoot();
26248
- const versionPaths = [join101(root, "VERSION"), join101(root, "..", "VERSION")];
27716
+ const versionPaths = [join102(root, "VERSION"), join102(root, "..", "VERSION")];
26249
27717
  for (const versionPath of versionPaths) {
26250
27718
  try {
26251
27719
  const content = await readFile17(versionPath, "utf-8");
@@ -26256,7 +27724,7 @@ async function getVersion2(projectRoot) {
26256
27724
  } catch {
26257
27725
  }
26258
27726
  }
26259
- const pkg = await readJson(join101(root, "package.json"));
27727
+ const pkg = await readJson(join102(root, "package.json"));
26260
27728
  if (pkg?.version) {
26261
27729
  return { version: pkg.version };
26262
27730
  }
@@ -27511,15 +28979,15 @@ import { and as and5, eq as eq7, inArray as inArray5 } from "drizzle-orm";
27511
28979
 
27512
28980
  // packages/core/src/agents/execution-learning.ts
27513
28981
  init_brain_accessor();
27514
- import { randomBytes } from "node:crypto";
28982
+ import { randomBytes as randomBytes2 } from "node:crypto";
27515
28983
  function generateDecisionId() {
27516
- return `AGT-${randomBytes(5).toString("hex")}`;
28984
+ return `AGT-${randomBytes2(5).toString("hex")}`;
27517
28985
  }
27518
28986
  function generatePatternId() {
27519
- return `P-agt-${randomBytes(4).toString("hex")}`;
28987
+ return `P-agt-${randomBytes2(4).toString("hex")}`;
27520
28988
  }
27521
28989
  function generateObservationId() {
27522
- return `O-agt-${randomBytes(4).toString("hex")}`;
28990
+ return `O-agt-${randomBytes2(4).toString("hex")}`;
27523
28991
  }
27524
28992
  function nowSql() {
27525
28993
  return (/* @__PURE__ */ new Date()).toISOString().replace("T", " ").slice(0, 19);
@@ -28782,6 +30250,195 @@ async function getValueMetrics(days = 7, cwd) {
28782
30250
  };
28783
30251
  }
28784
30252
 
30253
+ // packages/core/src/conduit/index.ts
30254
+ var conduit_exports = {};
30255
+ __export(conduit_exports, {
30256
+ ConduitClient: () => ConduitClient,
30257
+ HttpTransport: () => HttpTransport,
30258
+ createConduit: () => createConduit
30259
+ });
30260
+
30261
+ // packages/core/src/conduit/conduit-client.ts
30262
+ var ConduitClient = class {
30263
+ transport;
30264
+ credential;
30265
+ state = "disconnected";
30266
+ constructor(transport, credential) {
30267
+ this.transport = transport;
30268
+ this.credential = credential;
30269
+ }
30270
+ get agentId() {
30271
+ return this.credential.agentId;
30272
+ }
30273
+ getState() {
30274
+ return this.state;
30275
+ }
30276
+ async connect() {
30277
+ this.state = "connecting";
30278
+ try {
30279
+ await this.transport.connect({
30280
+ agentId: this.credential.agentId,
30281
+ apiKey: this.credential.apiKey,
30282
+ apiBaseUrl: this.credential.apiBaseUrl,
30283
+ ...this.credential.transportConfig
30284
+ });
30285
+ this.state = "connected";
30286
+ } catch (err) {
30287
+ this.state = "error";
30288
+ throw err;
30289
+ }
30290
+ }
30291
+ async send(to, content, options) {
30292
+ const result = await this.transport.push(to, content, {
30293
+ conversationId: options?.threadId
30294
+ });
30295
+ return {
30296
+ messageId: result.messageId,
30297
+ deliveredAt: (/* @__PURE__ */ new Date()).toISOString()
30298
+ };
30299
+ }
30300
+ onMessage(handler) {
30301
+ if (this.transport.subscribe) {
30302
+ return this.transport.subscribe(handler);
30303
+ }
30304
+ const interval2 = setInterval(async () => {
30305
+ const messages = await this.transport.poll();
30306
+ for (const msg of messages) handler(msg);
30307
+ if (messages.length > 0) {
30308
+ await this.transport.ack(messages.map((m) => m.id));
30309
+ }
30310
+ }, this.credential.transportConfig.pollIntervalMs ?? 5e3);
30311
+ return () => clearInterval(interval2);
30312
+ }
30313
+ async heartbeat() {
30314
+ await this.transport.push(this.credential.agentId, "", {});
30315
+ }
30316
+ async isOnline(agentId) {
30317
+ try {
30318
+ const response = await fetch(`${this.credential.apiBaseUrl}/agents/${agentId}`, {
30319
+ headers: {
30320
+ Authorization: `Bearer ${this.credential.apiKey}`,
30321
+ "X-Agent-Id": this.credential.agentId
30322
+ }
30323
+ });
30324
+ if (!response.ok) return false;
30325
+ const data = await response.json();
30326
+ return data.data?.agent?.status === "online";
30327
+ } catch {
30328
+ return false;
30329
+ }
30330
+ }
30331
+ async disconnect() {
30332
+ await this.transport.disconnect();
30333
+ this.state = "disconnected";
30334
+ }
30335
+ };
30336
+
30337
+ // packages/core/src/conduit/http-transport.ts
30338
+ var HttpTransport = class {
30339
+ name = "http";
30340
+ state = null;
30341
+ async connect(config2) {
30342
+ this.state = {
30343
+ agentId: config2.agentId,
30344
+ apiKey: config2.apiKey,
30345
+ apiBaseUrl: config2.apiBaseUrl,
30346
+ connected: true
30347
+ };
30348
+ }
30349
+ async disconnect() {
30350
+ this.state = null;
30351
+ }
30352
+ async push(to, content, options) {
30353
+ this.ensureConnected();
30354
+ const body = { content };
30355
+ let url2;
30356
+ if (options?.conversationId) {
30357
+ url2 = `${this.state.apiBaseUrl}/conversations/${options.conversationId}/messages`;
30358
+ if (options.replyTo) {
30359
+ body["replyTo"] = options.replyTo;
30360
+ }
30361
+ } else {
30362
+ url2 = `${this.state.apiBaseUrl}/messages`;
30363
+ body["toAgentId"] = to;
30364
+ }
30365
+ const response = await fetch(url2, {
30366
+ method: "POST",
30367
+ headers: this.headers(),
30368
+ body: JSON.stringify(body)
30369
+ });
30370
+ if (!response.ok) {
30371
+ const text3 = await response.text().catch(() => "");
30372
+ throw new Error(`HttpTransport push failed: ${response.status} ${text3}`);
30373
+ }
30374
+ const data = await response.json();
30375
+ const messageId = data.data?.message?.id ?? data.data?.id ?? "unknown";
30376
+ return { messageId };
30377
+ }
30378
+ async poll(options) {
30379
+ this.ensureConnected();
30380
+ const params = new URLSearchParams();
30381
+ params.set("mentioned", this.state.agentId);
30382
+ if (options?.limit) params.set("limit", String(options.limit));
30383
+ if (options?.since) params.set("since", options.since);
30384
+ const url2 = `${this.state.apiBaseUrl}/messages/peek?${params}`;
30385
+ const response = await fetch(url2, {
30386
+ method: "GET",
30387
+ headers: this.headers()
30388
+ });
30389
+ if (!response.ok) return [];
30390
+ const data = await response.json();
30391
+ return (data.data?.messages ?? []).map((m) => ({
30392
+ id: m.id,
30393
+ from: m.fromAgentId ?? "unknown",
30394
+ content: m.content ?? "",
30395
+ threadId: m.conversationId,
30396
+ timestamp: m.createdAt ?? (/* @__PURE__ */ new Date()).toISOString()
30397
+ }));
30398
+ }
30399
+ async ack(messageIds) {
30400
+ this.ensureConnected();
30401
+ await fetch(`${this.state.apiBaseUrl}/messages/ack`, {
30402
+ method: "POST",
30403
+ headers: this.headers(),
30404
+ body: JSON.stringify({ messageIds })
30405
+ });
30406
+ }
30407
+ headers() {
30408
+ return {
30409
+ "Content-Type": "application/json",
30410
+ Authorization: `Bearer ${this.state.apiKey}`,
30411
+ "X-Agent-Id": this.state.agentId
30412
+ };
30413
+ }
30414
+ ensureConnected() {
30415
+ if (!this.state?.connected) {
30416
+ throw new Error("HttpTransport not connected. Call connect() first.");
30417
+ }
30418
+ }
30419
+ };
30420
+
30421
+ // packages/core/src/conduit/factory.ts
30422
+ function resolveTransport(credential) {
30423
+ if (credential.transportConfig.wsUrl) {
30424
+ }
30425
+ if (credential.transportConfig.sseEndpoint) {
30426
+ }
30427
+ return new HttpTransport();
30428
+ }
30429
+ async function createConduit(registry2, agentId) {
30430
+ const credential = agentId ? await registry2.get(agentId) : await registry2.getActive();
30431
+ if (!credential) {
30432
+ throw new Error(
30433
+ "No agent credential found. Run: cleo agent register --id <id> --api-key <key>"
30434
+ );
30435
+ }
30436
+ const transport = resolveTransport(credential);
30437
+ const conduit2 = new ConduitClient(transport, credential);
30438
+ await conduit2.connect();
30439
+ return conduit2;
30440
+ }
30441
+
28785
30442
  // packages/core/src/context/index.ts
28786
30443
  var context_exports = {};
28787
30444
  __export(context_exports, {
@@ -28925,7 +30582,7 @@ __export(hooks_exports, {
28925
30582
  OnToolCompletePayloadSchema: () => OnToolCompletePayloadSchema,
28926
30583
  OnToolStartPayloadSchema: () => OnToolStartPayloadSchema,
28927
30584
  OnWorkAvailablePayloadSchema: () => OnWorkAvailablePayloadSchema,
28928
- handleError: () => handleError,
30585
+ handleError: () => handleError2,
28929
30586
  handleFileChange: () => handleFileChange,
28930
30587
  handlePostCompact: () => handlePostCompact,
28931
30588
  handlePreCompact: () => handlePreCompact,
@@ -48208,7 +49865,7 @@ function checkRateLimit(agentId) {
48208
49865
  );
48209
49866
  }
48210
49867
  }
48211
- var DEFAULT_ACL = { authorizedAgents: ["*"] };
49868
+ var DEFAULT_ACL = { authorizedAgents: [] };
48212
49869
  async function loadProjectACL(projectPath) {
48213
49870
  try {
48214
49871
  const { loadConfig: loadConfig3 } = await Promise.resolve().then(() => (init_config(), config_exports));
@@ -48218,9 +49875,18 @@ async function loadProjectACL(projectPath) {
48218
49875
  return { authorizedAgents: agents };
48219
49876
  }
48220
49877
  } catch {
49878
+ await logAclFailure(projectPath);
48221
49879
  }
48222
49880
  return DEFAULT_ACL;
48223
49881
  }
49882
+ async function logAclFailure(projectPath) {
49883
+ try {
49884
+ const { getLogger: getLogger2 } = await Promise.resolve().then(() => (init_logger(), logger_exports));
49885
+ const log9 = getLogger2("nexus.acl");
49886
+ log9.warn({ projectPath }, "Failed to load ACL configuration, defaulting to deny-all");
49887
+ } catch {
49888
+ }
49889
+ }
48224
49890
  function isAuthorized(acl, agentId) {
48225
49891
  if (acl.authorizedAgents.includes("*")) return true;
48226
49892
  return acl.authorizedAgents.includes(agentId);
@@ -48304,10 +49970,11 @@ async function routeSingleTask(taskId, directive, operation, projects) {
48304
49970
  }
48305
49971
  const acl = await loadProjectACL(targetProject.path);
48306
49972
  if (!isAuthorized(acl, directive.agentId)) {
49973
+ await logRouteAudit(directive, targetProject.name, taskId, operation, false);
48307
49974
  return {
48308
49975
  success: false,
48309
49976
  project: targetProject.name,
48310
- projectPath: targetProject.path,
49977
+ projectPath: "",
48311
49978
  taskId,
48312
49979
  operation,
48313
49980
  error: `Agent '${directive.agentId}' not authorized to mutate project '${targetProject.name}'`
@@ -48436,8 +50103,8 @@ async function workspaceAgents() {
48436
50103
  const agents = [];
48437
50104
  for (const project of projects) {
48438
50105
  try {
48439
- const { listAgentInstances: listAgentInstances2 } = await Promise.resolve().then(() => (init_registry2(), registry_exports2));
48440
- const instances = await listAgentInstances2(void 0, project.path);
50106
+ const acc = await getAccessor(project.path);
50107
+ const instances = await acc.listAgentInstances();
48441
50108
  for (const inst of instances) {
48442
50109
  agents.push({
48443
50110
  agentId: inst.id,
@@ -54349,222 +56016,6 @@ function sanitizeParams(params, projectRoot, context) {
54349
56016
  init_sequence();
54350
56017
  init_sessions();
54351
56018
 
54352
- // packages/core/src/signaldock/index.ts
54353
- var signaldock_exports = {};
54354
- __export(signaldock_exports, {
54355
- ClaudeCodeTransport: () => ClaudeCodeTransport,
54356
- SignalDockTransport: () => SignalDockTransport,
54357
- createTransport: () => createTransport
54358
- });
54359
-
54360
- // packages/core/src/signaldock/claude-code-transport.ts
54361
- var ClaudeCodeTransport = class {
54362
- name = "claude-code";
54363
- agents = /* @__PURE__ */ new Map();
54364
- conversations = /* @__PURE__ */ new Map();
54365
- messages = [];
54366
- async register(name2, agentClass, privacyTier) {
54367
- const registration = {
54368
- agentId: `cc-${name2}`,
54369
- name: name2,
54370
- agentClass,
54371
- privacyTier
54372
- };
54373
- this.agents.set(registration.agentId, registration);
54374
- return registration;
54375
- }
54376
- async deregister(agentId) {
54377
- this.agents.delete(agentId);
54378
- }
54379
- async send(fromAgentId, toAgentId, content, conversationId) {
54380
- const resolvedConversationId = conversationId ?? `cc-conv-${fromAgentId}-${toAgentId}`;
54381
- const now = (/* @__PURE__ */ new Date()).toISOString();
54382
- const messageId = `cc-msg-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`;
54383
- const message = {
54384
- id: messageId,
54385
- conversationId: resolvedConversationId,
54386
- fromAgentId,
54387
- toAgentId,
54388
- content,
54389
- contentType: "text",
54390
- status: "delivered",
54391
- createdAt: now,
54392
- deliveredAt: now
54393
- };
54394
- this.messages.push(message);
54395
- return {
54396
- messageId,
54397
- conversationId: resolvedConversationId,
54398
- status: "delivered"
54399
- };
54400
- }
54401
- async poll(agentId, since) {
54402
- return this.messages.filter((m) => {
54403
- if (m.toAgentId !== agentId) return false;
54404
- if (since && m.createdAt <= since) return false;
54405
- return true;
54406
- });
54407
- }
54408
- async heartbeat(agentId) {
54409
- const agent = this.agents.get(agentId);
54410
- if (agent) {
54411
- this.agents.set(agentId, { ...agent });
54412
- }
54413
- }
54414
- async createConversation(participants, visibility) {
54415
- const now = (/* @__PURE__ */ new Date()).toISOString();
54416
- const id = `cc-conv-${participants.sort().join("-")}`;
54417
- const existing = this.conversations.get(id);
54418
- if (existing) return existing;
54419
- const conversation = {
54420
- id,
54421
- participants,
54422
- visibility: visibility ?? "private",
54423
- messageCount: 0,
54424
- createdAt: now,
54425
- updatedAt: now
54426
- };
54427
- this.conversations.set(id, conversation);
54428
- return conversation;
54429
- }
54430
- async getAgent(agentId) {
54431
- const registration = this.agents.get(agentId);
54432
- if (!registration) return null;
54433
- const now = (/* @__PURE__ */ new Date()).toISOString();
54434
- return {
54435
- id: registration.agentId,
54436
- name: registration.name,
54437
- agentClass: registration.agentClass,
54438
- privacyTier: registration.privacyTier,
54439
- status: "online",
54440
- createdAt: now,
54441
- updatedAt: now
54442
- };
54443
- }
54444
- };
54445
-
54446
- // packages/core/src/signaldock/signaldock-transport.ts
54447
- var SignalDockTransport = class {
54448
- name = "signaldock";
54449
- config;
54450
- constructor(config2) {
54451
- this.config = config2;
54452
- }
54453
- async register(name2, agentClass, privacyTier) {
54454
- const prefixedName = `${this.config.agentPrefix}${name2}`;
54455
- const body = {
54456
- name: prefixedName,
54457
- agentClass,
54458
- privacyTier
54459
- };
54460
- const response = await this.request("POST", "/agents", body);
54461
- return {
54462
- agentId: response.id,
54463
- name: response.name,
54464
- agentClass: response.agentClass,
54465
- privacyTier: response.privacyTier
54466
- };
54467
- }
54468
- async deregister(agentId) {
54469
- await this.request("DELETE", `/agents/${encodeURIComponent(agentId)}`);
54470
- }
54471
- async send(fromAgentId, toAgentId, content, conversationId) {
54472
- let convId = conversationId;
54473
- if (!convId) {
54474
- const conversation = await this.createConversation([fromAgentId, toAgentId], "private");
54475
- convId = conversation.id;
54476
- }
54477
- const body = {
54478
- conversationId: convId,
54479
- fromAgentId,
54480
- toAgentId,
54481
- content,
54482
- contentType: "text"
54483
- };
54484
- const message = await this.request("POST", "/messages", body, fromAgentId);
54485
- return {
54486
- messageId: message.id,
54487
- conversationId: message.conversationId,
54488
- status: message.status === "delivered" ? "delivered" : "pending"
54489
- };
54490
- }
54491
- async poll(agentId, since) {
54492
- const path2 = since ? `/messages/poll/new?since=${encodeURIComponent(since)}` : "/messages/poll/new";
54493
- const messages = await this.request("GET", path2, void 0, agentId);
54494
- return messages;
54495
- }
54496
- async heartbeat(agentId) {
54497
- await this.request(
54498
- "POST",
54499
- `/agents/${encodeURIComponent(agentId)}/heartbeat`,
54500
- void 0,
54501
- agentId
54502
- );
54503
- }
54504
- async createConversation(participants, visibility = "private") {
54505
- const body = {
54506
- participants: [...participants].sort(),
54507
- visibility
54508
- };
54509
- return this.request("POST", "/conversations", body);
54510
- }
54511
- async getAgent(agentId) {
54512
- try {
54513
- return await this.request("GET", `/agents/${encodeURIComponent(agentId)}`);
54514
- } catch {
54515
- return null;
54516
- }
54517
- }
54518
- /**
54519
- * Make an HTTP request to the SignalDock API.
54520
- */
54521
- async request(method, path2, body, agentId) {
54522
- const url2 = `${this.config.endpoint}${path2}`;
54523
- const headers = {
54524
- "Content-Type": "application/json",
54525
- Accept: "application/json"
54526
- };
54527
- if (agentId) {
54528
- headers["X-Agent-Id"] = agentId;
54529
- }
54530
- const init = {
54531
- method,
54532
- headers
54533
- };
54534
- if (body !== void 0) {
54535
- init.body = JSON.stringify(body);
54536
- }
54537
- const response = await fetch(url2, init);
54538
- if (!response.ok) {
54539
- const text3 = await response.text().catch(() => "");
54540
- throw new Error(
54541
- `SignalDock API error: ${method} ${path2} returned ${response.status}: ${text3}`
54542
- );
54543
- }
54544
- if (response.status === 204) {
54545
- return void 0;
54546
- }
54547
- const envelope = await response.json();
54548
- if (!envelope.success && envelope.error) {
54549
- throw new Error(`SignalDock error [${envelope.error.code}]: ${envelope.error.message}`);
54550
- }
54551
- return envelope.data;
54552
- }
54553
- };
54554
-
54555
- // packages/core/src/signaldock/factory.ts
54556
- function createTransport(config2) {
54557
- if (!config2?.enabled) {
54558
- return new ClaudeCodeTransport();
54559
- }
54560
- const sdConfig = {
54561
- endpoint: config2.endpoint,
54562
- agentPrefix: config2.agentPrefix,
54563
- privacyTier: config2.privacyTier
54564
- };
54565
- return new SignalDockTransport(sdConfig);
54566
- }
54567
-
54568
56019
  // packages/core/src/skills/index.ts
54569
56020
  var skills_exports = {};
54570
56021
  __export(skills_exports, {
@@ -57601,8 +59052,8 @@ async function initializeSpawnAdapters(manifests) {
57601
59052
  if (!manifest.capabilities?.supportsSpawn) continue;
57602
59053
  if (spawnRegistry.hasAdapterForProvider(manifest.provider)) continue;
57603
59054
  try {
57604
- const { join: join105 } = await import("node:path");
57605
- const modulePath = join105(manifest.packagePath, manifest.entryPoint);
59055
+ const { join: join106 } = await import("node:path");
59056
+ const modulePath = join106(manifest.packagePath, manifest.entryPoint);
57606
59057
  const adapterModule = await import(modulePath);
57607
59058
  let SpawnProviderClass;
57608
59059
  for (const [exportName, exportValue] of Object.entries(adapterModule)) {
@@ -60359,6 +61810,37 @@ function getSystemHealth(projectRoot, opts) {
60359
61810
  if (existsSync86(dbPath)) {
60360
61811
  checks.push(checkAuditLogAvailability(dbPath));
60361
61812
  }
61813
+ const sdDbPath = join90(cleoDir, "signaldock.db");
61814
+ if (existsSync86(sdDbPath)) {
61815
+ try {
61816
+ const sdSize = statSync19(sdDbPath).size;
61817
+ if (sdSize > 0) {
61818
+ checks.push({
61819
+ name: "signaldock_db",
61820
+ status: "pass",
61821
+ message: `signaldock.db: ${sdSize} bytes`
61822
+ });
61823
+ } else {
61824
+ checks.push({
61825
+ name: "signaldock_db",
61826
+ status: "warn",
61827
+ message: "signaldock.db exists but is empty"
61828
+ });
61829
+ }
61830
+ } catch {
61831
+ checks.push({
61832
+ name: "signaldock_db",
61833
+ status: "fail",
61834
+ message: "signaldock.db exists but is not readable"
61835
+ });
61836
+ }
61837
+ } else {
61838
+ checks.push({
61839
+ name: "signaldock_db",
61840
+ status: "warn",
61841
+ message: "signaldock.db not found. Run: cleo init"
61842
+ });
61843
+ }
60362
61844
  const configPath = join90(cleoDir, "config.json");
60363
61845
  if (existsSync86(configPath)) {
60364
61846
  try {
@@ -61478,6 +62960,7 @@ async function deleteTask(options, cwd, accessor) {
61478
62960
  // packages/core/src/tasks/find.ts
61479
62961
  init_src();
61480
62962
  init_errors3();
62963
+ init_mvi_helpers();
61481
62964
  init_data_accessor();
61482
62965
  function fuzzyScore(query, text3) {
61483
62966
  const q = query.toLowerCase();
@@ -61583,8 +63066,12 @@ async function findTasks(options, cwd, accessor) {
61583
63066
  const limit = options.limit ?? 20;
61584
63067
  const offset = options.offset ?? 0;
61585
63068
  results = results.slice(offset, offset + limit);
63069
+ const enrichedResults = results.map((r) => ({
63070
+ ...r,
63071
+ _next: taskListItemNext(r.id)
63072
+ }));
61586
63073
  return {
61587
- results,
63074
+ results: enrichedResults,
61588
63075
  total,
61589
63076
  query: queryStr,
61590
63077
  searchType
@@ -61592,6 +63079,7 @@ async function findTasks(options, cwd, accessor) {
61592
63079
  }
61593
63080
 
61594
63081
  // packages/core/src/tasks/list.ts
63082
+ init_mvi_helpers();
61595
63083
  var TASK_LIST_DEFAULT_LIMIT = 10;
61596
63084
  async function listTasks(options = {}, cwd, accessor) {
61597
63085
  const dataAccessor = accessor ?? await (await Promise.resolve().then(() => (init_data_accessor(), data_accessor_exports))).getAccessor(cwd);
@@ -61616,8 +63104,12 @@ async function listTasks(options = {}, cwd, accessor) {
61616
63104
  offset: page.offset,
61617
63105
  hasMore: page.hasMore
61618
63106
  } : void 0;
63107
+ const enrichedTasks = tasks2.map((t) => ({
63108
+ ...t,
63109
+ _next: taskListItemNext(t.id)
63110
+ }));
61619
63111
  return {
61620
- tasks: tasks2,
63112
+ tasks: enrichedTasks,
61621
63113
  total,
61622
63114
  filtered: filteredCount,
61623
63115
  page,
@@ -61628,6 +63120,7 @@ async function listTasks(options = {}, cwd, accessor) {
61628
63120
  // packages/core/src/tasks/show.ts
61629
63121
  init_src();
61630
63122
  init_errors3();
63123
+ init_mvi_helpers();
61631
63124
  init_data_accessor();
61632
63125
  async function showTask(taskId, cwd, accessor) {
61633
63126
  if (!taskId) {
@@ -61686,6 +63179,7 @@ async function showTask(taskId, cwd, accessor) {
61686
63179
  detail.hierarchyPath = [...ancestors.map((t) => t.id), taskId];
61687
63180
  }
61688
63181
  }
63182
+ detail._next = taskShowNext(taskId);
61689
63183
  return detail;
61690
63184
  }
61691
63185
 
@@ -65369,13 +66863,13 @@ import { randomUUID as randomUUID6 } from "node:crypto";
65369
66863
 
65370
66864
  // packages/core/src/sessions/context-alert.ts
65371
66865
  init_paths();
65372
- import { existsSync as existsSync101, readFileSync as readFileSync75, writeFileSync as writeFileSync18 } from "node:fs";
65373
- import { join as join102 } from "node:path";
66866
+ import { existsSync as existsSync102, readFileSync as readFileSync76, writeFileSync as writeFileSync18 } from "node:fs";
66867
+ import { join as join103 } from "node:path";
65374
66868
  function getCurrentSessionId(cwd) {
65375
66869
  if (process.env.CLEO_SESSION) return process.env.CLEO_SESSION;
65376
- const sessionFile = join102(getCleoDir(cwd), ".current-session");
65377
- if (existsSync101(sessionFile)) {
65378
- return readFileSync75(sessionFile, "utf-8").trim() || null;
66870
+ const sessionFile = join103(getCleoDir(cwd), ".current-session");
66871
+ if (existsSync102(sessionFile)) {
66872
+ return readFileSync76(sessionFile, "utf-8").trim() || null;
65379
66873
  }
65380
66874
  return null;
65381
66875
  }
@@ -65391,7 +66885,7 @@ function drainWarnings() {
65391
66885
  pendingWarnings.length = 0;
65392
66886
  return drained;
65393
66887
  }
65394
- function createCliMeta(operation, mvi = "standard") {
66888
+ function createCliMeta(operation, mvi = "minimal") {
65395
66889
  const warnings = drainWarnings();
65396
66890
  const meta = {
65397
66891
  specVersion: "1.2.3",
@@ -65413,20 +66907,37 @@ function createCliMeta(operation, mvi = "standard") {
65413
66907
  }
65414
66908
  function formatSuccess(data, message, operationOrOpts) {
65415
66909
  const opts = typeof operationOrOpts === "string" ? { operation: operationOrOpts } : operationOrOpts ?? {};
65416
- const envelope = {
66910
+ const mviLevel = opts.mvi ?? "minimal";
66911
+ const meta = createCliMeta(opts.operation ?? "cli.output", mviLevel);
66912
+ const fullEnvelope = {
65417
66913
  $schema: "https://lafs.dev/schemas/v1/envelope.schema.json",
65418
- _meta: createCliMeta(opts.operation ?? "cli.output", opts.mvi),
66914
+ _meta: meta,
65419
66915
  success: true,
65420
66916
  result: data,
65421
- ...message && { message }
66917
+ ...message && { message },
66918
+ ...opts.page && { page: opts.page },
66919
+ ...opts.extensions && Object.keys(opts.extensions).length > 0 && { _extensions: opts.extensions }
65422
66920
  };
65423
- if (opts.page) {
65424
- envelope["page"] = opts.page;
66921
+ if (mviLevel === "full") {
66922
+ return JSON.stringify(fullEnvelope);
65425
66923
  }
65426
- if (opts.extensions && Object.keys(opts.extensions).length > 0) {
65427
- envelope["_extensions"] = opts.extensions;
66924
+ if (mviLevel === "minimal") {
66925
+ const minimalMeta = {
66926
+ op: meta.operation,
66927
+ rid: meta.requestId
66928
+ };
66929
+ if (meta.sessionId) minimalMeta.sid = meta.sessionId;
66930
+ if (meta.warnings?.length) minimalMeta.w = meta.warnings;
66931
+ const minimal = {
66932
+ ok: true,
66933
+ r: data,
66934
+ _m: minimalMeta
66935
+ };
66936
+ if (message) minimal.msg = message;
66937
+ if (opts.page) minimal.p = opts.page;
66938
+ return JSON.stringify(minimal);
65428
66939
  }
65429
- return JSON.stringify(envelope);
66940
+ return JSON.stringify(fullEnvelope);
65430
66941
  }
65431
66942
  function formatError3(error40, operation) {
65432
66943
  const envelope = {
@@ -65450,13 +66961,13 @@ init_paths();
65450
66961
 
65451
66962
  // packages/core/src/project-info.ts
65452
66963
  init_paths();
65453
- import { existsSync as existsSync102, readFileSync as readFileSync76, writeFileSync as writeFileSync19 } from "node:fs";
66964
+ import { existsSync as existsSync103, readFileSync as readFileSync77, writeFileSync as writeFileSync19 } from "node:fs";
65454
66965
  import { readFile as readFile18 } from "node:fs/promises";
65455
- import { join as join103 } from "node:path";
66966
+ import { join as join104 } from "node:path";
65456
66967
  async function getProjectInfo(cwd) {
65457
66968
  const projectRoot = cwd ?? process.cwd();
65458
66969
  const cleoDir = getCleoDirAbsolute(projectRoot);
65459
- const infoPath = join103(cleoDir, "project-info.json");
66970
+ const infoPath = join104(cleoDir, "project-info.json");
65460
66971
  const raw = await readFile18(infoPath, "utf-8");
65461
66972
  const data = JSON.parse(raw);
65462
66973
  if (typeof data.projectHash !== "string" || data.projectHash.length === 0) {
@@ -65474,10 +66985,10 @@ async function getProjectInfo(cwd) {
65474
66985
  function getProjectInfoSync(cwd) {
65475
66986
  const projectRoot = cwd ?? process.cwd();
65476
66987
  const cleoDir = getCleoDirAbsolute(projectRoot);
65477
- const infoPath = join103(cleoDir, "project-info.json");
65478
- if (!existsSync102(infoPath)) return null;
66988
+ const infoPath = join104(cleoDir, "project-info.json");
66989
+ if (!existsSync103(infoPath)) return null;
65479
66990
  try {
65480
- const raw = readFileSync76(infoPath, "utf-8");
66991
+ const raw = readFileSync77(infoPath, "utf-8");
65481
66992
  const data = JSON.parse(raw);
65482
66993
  if (typeof data.projectHash !== "string" || data.projectHash.length === 0) {
65483
66994
  return null;
@@ -65496,9 +67007,9 @@ function getProjectInfoSync(cwd) {
65496
67007
  }
65497
67008
  function updateProjectName(cwd, name2) {
65498
67009
  const cleoDir = getCleoDirAbsolute(cwd);
65499
- const infoPath = join103(cleoDir, "project-info.json");
65500
- if (!existsSync102(infoPath)) return;
65501
- const data = JSON.parse(readFileSync76(infoPath, "utf-8"));
67010
+ const infoPath = join104(cleoDir, "project-info.json");
67011
+ if (!existsSync103(infoPath)) return;
67012
+ const data = JSON.parse(readFileSync77(infoPath, "utf-8"));
65502
67013
  data.projectName = name2;
65503
67014
  data.lastUpdated = (/* @__PURE__ */ new Date()).toISOString();
65504
67015
  writeFileSync19(infoPath, `${JSON.stringify(data, null, 2)}
@@ -65512,10 +67023,10 @@ init_adapters();
65512
67023
  // packages/core/src/bootstrap.ts
65513
67024
  init_paths();
65514
67025
  init_scaffold();
65515
- import { existsSync as existsSync103, readFileSync as readFileSync77 } from "node:fs";
67026
+ import { existsSync as existsSync104, readFileSync as readFileSync78 } from "node:fs";
65516
67027
  import { mkdir as mkdir17, readFile as readFile19, writeFile as writeFile12 } from "node:fs/promises";
65517
67028
  import { homedir as homedir6 } from "node:os";
65518
- import { join as join104 } from "node:path";
67029
+ import { join as join105 } from "node:path";
65519
67030
  async function bootstrapGlobalCleo(options) {
65520
67031
  const ctx = {
65521
67032
  created: [],
@@ -65537,8 +67048,8 @@ async function bootstrapGlobalCleo(options) {
65537
67048
  }
65538
67049
  async function writeTemplateTo(content, destPath, isDryRun) {
65539
67050
  if (isDryRun) return false;
65540
- const { dirname: dirname20 } = await import("node:path");
65541
- await mkdir17(dirname20(destPath), { recursive: true });
67051
+ const { dirname: dirname21 } = await import("node:path");
67052
+ await mkdir17(dirname21(destPath), { recursive: true });
65542
67053
  await writeFile12(destPath, content);
65543
67054
  return true;
65544
67055
  }
@@ -65550,9 +67061,9 @@ async function ensureGlobalTemplatesBootstrap(ctx, packageRootOverride) {
65550
67061
  let templateContent = null;
65551
67062
  try {
65552
67063
  const pkgRoot = packageRootOverride ?? getPackageRoot();
65553
- const templatePath = join104(pkgRoot, "templates", "CLEO-INJECTION.md");
65554
- if (existsSync103(templatePath)) {
65555
- templateContent = readFileSync77(templatePath, "utf-8");
67064
+ const templatePath = join105(pkgRoot, "templates", "CLEO-INJECTION.md");
67065
+ if (existsSync104(templatePath)) {
67066
+ templateContent = readFileSync78(templatePath, "utf-8");
65556
67067
  }
65557
67068
  } catch {
65558
67069
  }
@@ -65569,15 +67080,15 @@ async function ensureGlobalTemplatesBootstrap(ctx, packageRootOverride) {
65569
67080
  ctx.warnings.push("Could not refresh CLEO-INJECTION.md template");
65570
67081
  return;
65571
67082
  }
65572
- const xdgDest = join104(globalTemplatesDir, "CLEO-INJECTION.md");
67083
+ const xdgDest = join105(globalTemplatesDir, "CLEO-INJECTION.md");
65573
67084
  const xdgWritten = await writeTemplateTo(templateContent, xdgDest, ctx.isDryRun);
65574
67085
  ctx.created.push(
65575
67086
  `${getCleoTemplatesTildePath()}/CLEO-INJECTION.md (${xdgWritten ? "refreshed" : "would refresh"})`
65576
67087
  );
65577
67088
  const home = homedir6();
65578
- const legacyTemplatesDir = join104(home, ".cleo", "templates");
65579
- if (legacyTemplatesDir !== globalTemplatesDir && existsSync103(join104(home, ".cleo"))) {
65580
- const legacyDest = join104(legacyTemplatesDir, "CLEO-INJECTION.md");
67089
+ const legacyTemplatesDir = join105(home, ".cleo", "templates");
67090
+ if (legacyTemplatesDir !== globalTemplatesDir && existsSync104(join105(home, ".cleo"))) {
67091
+ const legacyDest = join105(legacyTemplatesDir, "CLEO-INJECTION.md");
65581
67092
  const legacyWritten = await writeTemplateTo(templateContent, legacyDest, ctx.isDryRun);
65582
67093
  if (legacyWritten) {
65583
67094
  ctx.created.push("~/.cleo/templates/CLEO-INJECTION.md (legacy sync)");
@@ -65596,12 +67107,12 @@ function sanitizeCaampFile(content) {
65596
67107
  }
65597
67108
  async function injectAgentsHub(ctx) {
65598
67109
  const globalAgentsDir = getAgentsHome();
65599
- const globalAgentsMd = join104(globalAgentsDir, "AGENTS.md");
67110
+ const globalAgentsMd = join105(globalAgentsDir, "AGENTS.md");
65600
67111
  try {
65601
67112
  const { inject: inject2, getInstalledProviders: getInstalledProviders3, injectAll: injectAll2, buildInjectionContent } = await import("@cleocode/caamp");
65602
67113
  if (!ctx.isDryRun) {
65603
67114
  await mkdir17(globalAgentsDir, { recursive: true });
65604
- if (existsSync103(globalAgentsMd)) {
67115
+ if (existsSync104(globalAgentsMd)) {
65605
67116
  const content = await readFile19(globalAgentsMd, "utf8");
65606
67117
  const stripped = content.replace(
65607
67118
  /\n?<!-- CLEO:START[^>]*-->[\s\S]*?<!-- CLEO:END -->\n?/g,
@@ -65636,8 +67147,8 @@ async function injectAgentsHub(ctx) {
65636
67147
  });
65637
67148
  if (!ctx.isDryRun) {
65638
67149
  for (const provider of providers) {
65639
- const instructFilePath = join104(provider.pathGlobal, provider.instructFile);
65640
- if (existsSync103(instructFilePath)) {
67150
+ const instructFilePath = join105(provider.pathGlobal, provider.instructFile);
67151
+ if (existsSync104(instructFilePath)) {
65641
67152
  const fileContent = await readFile19(instructFilePath, "utf8");
65642
67153
  const stripped = fileContent.replace(
65643
67154
  /\n?<!-- CLEO:START[^>]*-->[\s\S]*?<!-- CLEO:END -->\n?/g,
@@ -65655,7 +67166,7 @@ async function injectAgentsHub(ctx) {
65655
67166
  }
65656
67167
  } else {
65657
67168
  for (const p of providers) {
65658
- const displayPath = join104(p.pathGlobal, p.instructFile).replace(homedir6(), "~");
67169
+ const displayPath = join105(p.pathGlobal, p.instructFile).replace(homedir6(), "~");
65659
67170
  ctx.created.push(`${displayPath} (would update CAAMP block)`);
65660
67171
  }
65661
67172
  }
@@ -65760,17 +67271,17 @@ async function installProviderAdapters(ctx, packageRootOverride) {
65760
67271
  async function verifyBootstrapHealth(ctx) {
65761
67272
  if (ctx.isDryRun) return;
65762
67273
  try {
65763
- const xdgTemplatePath = join104(getCleoTemplatesDir(), "CLEO-INJECTION.md");
65764
- const agentsMd = join104(getAgentsHome(), "AGENTS.md");
65765
- if (!existsSync103(xdgTemplatePath)) {
67274
+ const xdgTemplatePath = join105(getCleoTemplatesDir(), "CLEO-INJECTION.md");
67275
+ const agentsMd = join105(getAgentsHome(), "AGENTS.md");
67276
+ if (!existsSync104(xdgTemplatePath)) {
65766
67277
  ctx.warnings.push("Health: XDG template missing after bootstrap");
65767
67278
  return;
65768
67279
  }
65769
67280
  const xdgContent = await readFile19(xdgTemplatePath, "utf8");
65770
67281
  const xdgVersion = xdgContent.match(/^Version:\s*(.+)$/m)?.[1]?.trim();
65771
67282
  const home = homedir6();
65772
- const legacyTemplatePath = join104(home, ".cleo", "templates", "CLEO-INJECTION.md");
65773
- if (existsSync103(legacyTemplatePath)) {
67283
+ const legacyTemplatePath = join105(home, ".cleo", "templates", "CLEO-INJECTION.md");
67284
+ if (existsSync104(legacyTemplatePath)) {
65774
67285
  const legacyContent = await readFile19(legacyTemplatePath, "utf8");
65775
67286
  const legacyVersion = legacyContent.match(/^Version:\s*(.+)$/m)?.[1]?.trim();
65776
67287
  if (legacyVersion !== xdgVersion) {
@@ -65779,7 +67290,7 @@ async function verifyBootstrapHealth(ctx) {
65779
67290
  );
65780
67291
  }
65781
67292
  }
65782
- if (existsSync103(agentsMd)) {
67293
+ if (existsSync104(agentsMd)) {
65783
67294
  const agentsContent = await readFile19(agentsMd, "utf8");
65784
67295
  const expectedRef = `@${getCleoTemplatesTildePath()}/CLEO-INJECTION.md`;
65785
67296
  if (!agentsContent.includes(expectedRef)) {
@@ -66248,6 +67759,7 @@ var Cleo = class _Cleo {
66248
67759
  init_registry();
66249
67760
  init_brain_retrieval();
66250
67761
  init_brain_search();
67762
+ init_mvi_helpers();
66251
67763
  init_sessions();
66252
67764
  init_task_work();
66253
67765
  init_add();
@@ -66316,6 +67828,7 @@ export {
66316
67828
  compareSemver,
66317
67829
  completeTask,
66318
67830
  compliance_exports as compliance,
67831
+ conduit_exports as conduit,
66319
67832
  context_exports as context,
66320
67833
  hooks_exports as coreHooks,
66321
67834
  mcp_exports as coreMcp,
@@ -66410,6 +67923,7 @@ export {
66410
67923
  loadConfig,
66411
67924
  manifestStatusSchema,
66412
67925
  memory_exports as memory,
67926
+ memoryFindHitNext,
66413
67927
  metrics_exports as metrics,
66414
67928
  migration_exports as migration,
66415
67929
  nexus_exports as nexus,
@@ -66452,13 +67966,14 @@ export {
66452
67966
  selectTaskSchema,
66453
67967
  sequence_exports as sequence,
66454
67968
  serializeSession,
67969
+ sessionListItemNext,
67970
+ sessionStartNext,
66455
67971
  sessionStatus,
66456
67972
  sessionStatusSchema,
66457
67973
  sessions_exports as sessions,
66458
67974
  setConfigValue,
66459
67975
  sha256,
66460
67976
  showTask,
66461
- signaldock_exports as signaldock,
66462
67977
  skills_exports as skills,
66463
67978
  snapshot_exports as snapshot,
66464
67979
  spawn_exports as spawn,
@@ -66469,8 +67984,10 @@ export {
66469
67984
  stopTask,
66470
67985
  syncDirectionSchema,
66471
67986
  system_exports as system,
67987
+ taskListItemNext,
66472
67988
  taskPrioritySchema,
66473
67989
  taskRelationTypeSchema,
67990
+ taskShowNext,
66474
67991
  taskSizeSchema,
66475
67992
  taskStatusSchema,
66476
67993
  taskTypeSchema,
@@ -66485,6 +68002,7 @@ export {
66485
68002
  updateProjectName,
66486
68003
  updateTask,
66487
68004
  validateAgainstSchema,
66488
- validation_exports as validation
68005
+ validation_exports as validation,
68006
+ wasm_exports as wasm
66489
68007
  };
66490
68008
  //# sourceMappingURL=index.js.map