@cleocode/core 2026.6.12 → 2026.6.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (730) hide show
  1. package/dist/admin/ops.d.ts +4 -0
  2. package/dist/admin/ops.d.ts.map +1 -1
  3. package/dist/check/index.d.ts +12 -0
  4. package/dist/check/index.d.ts.map +1 -0
  5. package/dist/check/index.js +12 -0
  6. package/dist/check/index.js.map +1 -0
  7. package/dist/check/pr-gate.d.ts +179 -0
  8. package/dist/check/pr-gate.d.ts.map +1 -0
  9. package/dist/check/pr-gate.js +366 -0
  10. package/dist/check/pr-gate.js.map +1 -0
  11. package/dist/conduit/delivery-router.d.ts +134 -0
  12. package/dist/conduit/delivery-router.d.ts.map +1 -0
  13. package/dist/conduit/delivery-router.js +0 -0
  14. package/dist/conduit/delivery-router.js.map +1 -0
  15. package/dist/conduit/index.d.ts +5 -2
  16. package/dist/conduit/index.d.ts.map +1 -1
  17. package/dist/conduit/index.js +5 -2
  18. package/dist/conduit/index.js.map +1 -1
  19. package/dist/conduit/local-transport.d.ts +12 -0
  20. package/dist/conduit/local-transport.d.ts.map +1 -1
  21. package/dist/conduit/local-transport.js +53 -23
  22. package/dist/conduit/local-transport.js.map +1 -1
  23. package/dist/conduit/local-tui-adapter.d.ts +89 -0
  24. package/dist/conduit/local-tui-adapter.d.ts.map +1 -0
  25. package/dist/conduit/local-tui-adapter.js +225 -0
  26. package/dist/conduit/local-tui-adapter.js.map +1 -0
  27. package/dist/config/registry.d.ts +54 -0
  28. package/dist/config/registry.d.ts.map +1 -1
  29. package/dist/config/registry.js +94 -2
  30. package/dist/config/registry.js.map +1 -1
  31. package/dist/crypto/credentials.d.ts +37 -0
  32. package/dist/crypto/credentials.d.ts.map +1 -1
  33. package/dist/crypto/credentials.js +110 -0
  34. package/dist/crypto/credentials.js.map +1 -1
  35. package/dist/deriver/queue-manager.d.ts +30 -2
  36. package/dist/deriver/queue-manager.d.ts.map +1 -1
  37. package/dist/deriver/queue-manager.js +54 -9
  38. package/dist/deriver/queue-manager.js.map +1 -1
  39. package/dist/dispatch/config-domain-handler.d.ts +125 -0
  40. package/dist/dispatch/config-domain-handler.d.ts.map +1 -0
  41. package/dist/dispatch/config-domain-handler.js +160 -0
  42. package/dist/dispatch/config-domain-handler.js.map +1 -0
  43. package/dist/dispatch/contracts/derive-output-contract.d.ts +86 -0
  44. package/dist/dispatch/contracts/derive-output-contract.d.ts.map +1 -0
  45. package/dist/dispatch/contracts/derive-output-contract.js +347 -0
  46. package/dist/dispatch/contracts/derive-output-contract.js.map +1 -0
  47. package/dist/dispatch/contracts/ensures-schema.d.ts +77 -0
  48. package/dist/dispatch/contracts/ensures-schema.d.ts.map +1 -0
  49. package/dist/dispatch/contracts/ensures-schema.js +91 -0
  50. package/dist/dispatch/contracts/ensures-schema.js.map +1 -0
  51. package/dist/dispatch/contracts/input-contracts.d.ts.map +1 -1
  52. package/dist/dispatch/contracts/input-contracts.js +19 -1
  53. package/dist/dispatch/contracts/input-contracts.js.map +1 -1
  54. package/dist/dispatch/contracts/output-contracts.d.ts +27 -5
  55. package/dist/dispatch/contracts/output-contracts.d.ts.map +1 -1
  56. package/dist/dispatch/contracts/output-contracts.js +29 -6
  57. package/dist/dispatch/contracts/output-contracts.js.map +1 -1
  58. package/dist/docs/export-document.js +5413 -1345
  59. package/dist/docs/export-document.js.map +3 -3
  60. package/dist/gateway-client/client.d.ts +123 -0
  61. package/dist/gateway-client/client.d.ts.map +1 -0
  62. package/dist/gateway-client/client.js +93 -0
  63. package/dist/gateway-client/client.js.map +1 -0
  64. package/dist/gateway-client/generated/client/client.gen.d.ts +3 -0
  65. package/dist/gateway-client/generated/client/client.gen.d.ts.map +1 -0
  66. package/dist/gateway-client/generated/client/client.gen.js +217 -0
  67. package/dist/gateway-client/generated/client/client.gen.js.map +1 -0
  68. package/dist/gateway-client/generated/client/index.d.ts +11 -0
  69. package/dist/gateway-client/generated/client/index.d.ts.map +1 -0
  70. package/dist/gateway-client/generated/client/index.js +7 -0
  71. package/dist/gateway-client/generated/client/index.js.map +1 -0
  72. package/dist/gateway-client/generated/client/types.gen.d.ts +121 -0
  73. package/dist/gateway-client/generated/client/types.gen.d.ts.map +1 -0
  74. package/dist/gateway-client/generated/client/types.gen.js +3 -0
  75. package/dist/gateway-client/generated/client/types.gen.js.map +1 -0
  76. package/dist/gateway-client/generated/client/utils.gen.d.ts +38 -0
  77. package/dist/gateway-client/generated/client/utils.gen.d.ts.map +1 -0
  78. package/dist/gateway-client/generated/client/utils.gen.js +229 -0
  79. package/dist/gateway-client/generated/client/utils.gen.js.map +1 -0
  80. package/dist/gateway-client/generated/client.gen.d.ts +13 -0
  81. package/dist/gateway-client/generated/client.gen.d.ts.map +1 -0
  82. package/dist/gateway-client/generated/client.gen.js +4 -0
  83. package/dist/gateway-client/generated/client.gen.js.map +1 -0
  84. package/dist/gateway-client/generated/core/auth.gen.d.ts +26 -0
  85. package/dist/gateway-client/generated/core/auth.gen.d.ts.map +1 -0
  86. package/dist/gateway-client/generated/core/auth.gen.js +15 -0
  87. package/dist/gateway-client/generated/core/auth.gen.js.map +1 -0
  88. package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts +26 -0
  89. package/dist/gateway-client/generated/core/bodySerializer.gen.d.ts.map +1 -0
  90. package/dist/gateway-client/generated/core/bodySerializer.gen.js +58 -0
  91. package/dist/gateway-client/generated/core/bodySerializer.gen.js.map +1 -0
  92. package/dist/gateway-client/generated/core/params.gen.d.ts +44 -0
  93. package/dist/gateway-client/generated/core/params.gen.d.ts.map +1 -0
  94. package/dist/gateway-client/generated/core/params.gen.js +101 -0
  95. package/dist/gateway-client/generated/core/params.gen.js.map +1 -0
  96. package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts +34 -0
  97. package/dist/gateway-client/generated/core/pathSerializer.gen.d.ts.map +1 -0
  98. package/dist/gateway-client/generated/core/pathSerializer.gen.js +107 -0
  99. package/dist/gateway-client/generated/core/pathSerializer.gen.js.map +1 -0
  100. package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts +19 -0
  101. package/dist/gateway-client/generated/core/queryKeySerializer.gen.d.ts.map +1 -0
  102. package/dist/gateway-client/generated/core/queryKeySerializer.gen.js +93 -0
  103. package/dist/gateway-client/generated/core/queryKeySerializer.gen.js.map +1 -0
  104. package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts +72 -0
  105. package/dist/gateway-client/generated/core/serverSentEvents.gen.d.ts.map +1 -0
  106. package/dist/gateway-client/generated/core/serverSentEvents.gen.js +133 -0
  107. package/dist/gateway-client/generated/core/serverSentEvents.gen.js.map +1 -0
  108. package/dist/gateway-client/generated/core/types.gen.d.ts +84 -0
  109. package/dist/gateway-client/generated/core/types.gen.d.ts.map +1 -0
  110. package/dist/gateway-client/generated/core/types.gen.js +3 -0
  111. package/dist/gateway-client/generated/core/types.gen.js.map +1 -0
  112. package/dist/gateway-client/generated/core/utils.gen.d.ts +20 -0
  113. package/dist/gateway-client/generated/core/utils.gen.d.ts.map +1 -0
  114. package/dist/gateway-client/generated/core/utils.gen.js +88 -0
  115. package/dist/gateway-client/generated/core/utils.gen.js.map +1 -0
  116. package/dist/gateway-client/generated/index.d.ts +3 -0
  117. package/dist/gateway-client/generated/index.d.ts.map +1 -0
  118. package/dist/gateway-client/generated/index.js +3 -0
  119. package/dist/gateway-client/generated/index.js.map +1 -0
  120. package/dist/gateway-client/generated/namespaces.gen.d.ts +512 -0
  121. package/dist/gateway-client/generated/namespaces.gen.d.ts.map +1 -0
  122. package/dist/gateway-client/generated/namespaces.gen.js +521 -0
  123. package/dist/gateway-client/generated/namespaces.gen.js.map +1 -0
  124. package/dist/gateway-client/generated/sdk.gen.d.ts +1780 -0
  125. package/dist/gateway-client/generated/sdk.gen.d.ts.map +1 -0
  126. package/dist/gateway-client/generated/sdk.gen.js +3811 -0
  127. package/dist/gateway-client/generated/sdk.gen.js.map +1 -0
  128. package/dist/gateway-client/generated/types.gen.d.ts +14681 -0
  129. package/dist/gateway-client/generated/types.gen.d.ts.map +1 -0
  130. package/dist/gateway-client/generated/types.gen.js +3 -0
  131. package/dist/gateway-client/generated/types.gen.js.map +1 -0
  132. package/dist/gateway-client/index.d.ts +27 -0
  133. package/dist/gateway-client/index.d.ts.map +1 -0
  134. package/dist/gateway-client/index.js +25 -0
  135. package/dist/gateway-client/index.js.map +1 -0
  136. package/dist/go/driver.d.ts +132 -7
  137. package/dist/go/driver.d.ts.map +1 -1
  138. package/dist/go/driver.js +135 -10
  139. package/dist/go/driver.js.map +1 -1
  140. package/dist/go/index.d.ts +1 -1
  141. package/dist/go/index.d.ts.map +1 -1
  142. package/dist/go/index.js +1 -1
  143. package/dist/go/index.js.map +1 -1
  144. package/dist/index.d.ts +11 -0
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +25 -0
  147. package/dist/index.js.map +1 -1
  148. package/dist/init.d.ts.map +1 -1
  149. package/dist/init.js +28 -0
  150. package/dist/init.js.map +1 -1
  151. package/dist/internal.d.ts +23 -11
  152. package/dist/internal.d.ts.map +1 -1
  153. package/dist/internal.js +29 -12
  154. package/dist/internal.js.map +1 -1
  155. package/dist/lifecycle/engine-ops.d.ts.map +1 -1
  156. package/dist/lifecycle/engine-ops.js +7 -4
  157. package/dist/lifecycle/engine-ops.js.map +1 -1
  158. package/dist/lifecycle/ivtr-loop.d.ts +108 -183
  159. package/dist/lifecycle/ivtr-loop.d.ts.map +1 -1
  160. package/dist/lifecycle/ivtr-loop.js +207 -522
  161. package/dist/lifecycle/ivtr-loop.js.map +1 -1
  162. package/dist/llm/auxiliary-fallback.js +1 -1
  163. package/dist/llm/auxiliary-fallback.js.map +1 -1
  164. package/dist/llm/catalog-model-resolver.d.ts +19 -0
  165. package/dist/llm/catalog-model-resolver.d.ts.map +1 -1
  166. package/dist/llm/catalog-model-resolver.js +36 -0
  167. package/dist/llm/catalog-model-resolver.js.map +1 -1
  168. package/dist/llm/catalog-resolver.d.ts +112 -0
  169. package/dist/llm/catalog-resolver.d.ts.map +1 -0
  170. package/dist/llm/catalog-resolver.js +207 -0
  171. package/dist/llm/catalog-resolver.js.map +1 -0
  172. package/dist/llm/catalog-seeder.d.ts +96 -0
  173. package/dist/llm/catalog-seeder.d.ts.map +1 -0
  174. package/dist/llm/catalog-seeder.js +189 -0
  175. package/dist/llm/catalog-seeder.js.map +1 -0
  176. package/dist/llm/cli-ops.d.ts +14 -1
  177. package/dist/llm/cli-ops.d.ts.map +1 -1
  178. package/dist/llm/cli-ops.js +46 -17
  179. package/dist/llm/cli-ops.js.map +1 -1
  180. package/dist/llm/complexity-classifier.d.ts +208 -0
  181. package/dist/llm/complexity-classifier.d.ts.map +1 -0
  182. package/dist/llm/complexity-classifier.js +359 -0
  183. package/dist/llm/complexity-classifier.js.map +1 -0
  184. package/dist/llm/concrete-session.d.ts.map +1 -1
  185. package/dist/llm/concrete-session.js +4 -0
  186. package/dist/llm/concrete-session.js.map +1 -1
  187. package/dist/llm/credential-pool.d.ts +2 -0
  188. package/dist/llm/credential-pool.d.ts.map +1 -1
  189. package/dist/llm/credential-pool.js +5 -2
  190. package/dist/llm/credential-pool.js.map +1 -1
  191. package/dist/llm/credentials-store.d.ts +10 -14
  192. package/dist/llm/credentials-store.d.ts.map +1 -1
  193. package/dist/llm/credentials-store.js.map +1 -1
  194. package/dist/llm/credentials.d.ts +35 -0
  195. package/dist/llm/credentials.d.ts.map +1 -1
  196. package/dist/llm/credentials.js +49 -0
  197. package/dist/llm/credentials.js.map +1 -1
  198. package/dist/llm/entity-ops.d.ts +299 -0
  199. package/dist/llm/entity-ops.d.ts.map +1 -0
  200. package/dist/llm/entity-ops.js +441 -0
  201. package/dist/llm/entity-ops.js.map +1 -0
  202. package/dist/llm/index.d.ts +19 -0
  203. package/dist/llm/index.d.ts.map +1 -1
  204. package/dist/llm/index.js +12 -0
  205. package/dist/llm/index.js.map +1 -1
  206. package/dist/llm/llm-queue-admit.d.ts +118 -0
  207. package/dist/llm/llm-queue-admit.d.ts.map +1 -0
  208. package/dist/llm/llm-queue-admit.js +275 -0
  209. package/dist/llm/llm-queue-admit.js.map +1 -0
  210. package/dist/llm/oauth/device-code.d.ts.map +1 -1
  211. package/dist/llm/oauth/device-code.js +2 -8
  212. package/dist/llm/oauth/device-code.js.map +1 -1
  213. package/dist/llm/oauth/google-pkce.d.ts.map +1 -1
  214. package/dist/llm/oauth/google-pkce.js +2 -18
  215. package/dist/llm/oauth/google-pkce.js.map +1 -1
  216. package/dist/llm/oauth/pkce.d.ts +70 -0
  217. package/dist/llm/oauth/pkce.d.ts.map +1 -1
  218. package/dist/llm/oauth/pkce.js +106 -29
  219. package/dist/llm/oauth/pkce.js.map +1 -1
  220. package/dist/llm/onboarding/front-door.d.ts +146 -0
  221. package/dist/llm/onboarding/front-door.d.ts.map +1 -0
  222. package/dist/llm/onboarding/front-door.js +153 -0
  223. package/dist/llm/onboarding/front-door.js.map +1 -0
  224. package/dist/llm/onboarding/login-engine.d.ts +175 -0
  225. package/dist/llm/onboarding/login-engine.d.ts.map +1 -0
  226. package/dist/llm/onboarding/login-engine.js +286 -0
  227. package/dist/llm/onboarding/login-engine.js.map +1 -0
  228. package/dist/llm/pi/gondolin-loader.d.ts +241 -0
  229. package/dist/llm/pi/gondolin-loader.d.ts.map +1 -0
  230. package/dist/llm/pi/gondolin-loader.js +195 -0
  231. package/dist/llm/pi/gondolin-loader.js.map +1 -0
  232. package/dist/llm/pi/index.d.ts +28 -0
  233. package/dist/llm/pi/index.d.ts.map +1 -0
  234. package/dist/llm/pi/index.js +27 -0
  235. package/dist/llm/pi/index.js.map +1 -0
  236. package/dist/llm/pi/pi-agent-adapter.d.ts +135 -0
  237. package/dist/llm/pi/pi-agent-adapter.d.ts.map +1 -0
  238. package/dist/llm/pi/pi-agent-adapter.js +329 -0
  239. package/dist/llm/pi/pi-agent-adapter.js.map +1 -0
  240. package/dist/llm/pi/pi-errors.d.ts +161 -0
  241. package/dist/llm/pi/pi-errors.d.ts.map +1 -0
  242. package/dist/llm/pi/pi-errors.js +296 -0
  243. package/dist/llm/pi/pi-errors.js.map +1 -0
  244. package/dist/llm/pi/pi-execution-env.d.ts +286 -0
  245. package/dist/llm/pi/pi-execution-env.d.ts.map +1 -0
  246. package/dist/llm/pi/pi-execution-env.js +406 -0
  247. package/dist/llm/pi/pi-execution-env.js.map +1 -0
  248. package/dist/llm/pi/pi-gondolin-env.d.ts +250 -0
  249. package/dist/llm/pi/pi-gondolin-env.d.ts.map +1 -0
  250. package/dist/llm/pi/pi-gondolin-env.js +541 -0
  251. package/dist/llm/pi/pi-gondolin-env.js.map +1 -0
  252. package/dist/llm/pi/pi-session-storage.d.ts +154 -0
  253. package/dist/llm/pi/pi-session-storage.d.ts.map +1 -0
  254. package/dist/llm/pi/pi-session-storage.js +314 -0
  255. package/dist/llm/pi/pi-session-storage.js.map +1 -0
  256. package/dist/llm/pi/pi-stream-fn.d.ts +124 -0
  257. package/dist/llm/pi/pi-stream-fn.d.ts.map +1 -0
  258. package/dist/llm/pi/pi-stream-fn.js +504 -0
  259. package/dist/llm/pi/pi-stream-fn.js.map +1 -0
  260. package/dist/llm/pi/pi-tool-bridge.d.ts +99 -0
  261. package/dist/llm/pi/pi-tool-bridge.d.ts.map +1 -0
  262. package/dist/llm/pi/pi-tool-bridge.js +117 -0
  263. package/dist/llm/pi/pi-tool-bridge.js.map +1 -0
  264. package/dist/llm/pi/pi-types.d.ts +56 -0
  265. package/dist/llm/pi/pi-types.d.ts.map +1 -0
  266. package/dist/llm/pi/pi-types.js +16 -0
  267. package/dist/llm/pi/pi-types.js.map +1 -0
  268. package/dist/llm/pi/resolve-execution-env.d.ts +194 -0
  269. package/dist/llm/pi/resolve-execution-env.d.ts.map +1 -0
  270. package/dist/llm/pi/resolve-execution-env.js +132 -0
  271. package/dist/llm/pi/resolve-execution-env.js.map +1 -0
  272. package/dist/llm/plugin-facade.js +5472 -1331
  273. package/dist/llm/plugin-facade.js.map +3 -3
  274. package/dist/llm/provider-registry/builtin/anthropic.d.ts.map +1 -1
  275. package/dist/llm/provider-registry/builtin/anthropic.js +23 -10
  276. package/dist/llm/provider-registry/builtin/anthropic.js.map +1 -1
  277. package/dist/llm/provider-registry/provider-alias.d.ts +62 -0
  278. package/dist/llm/provider-registry/provider-alias.d.ts.map +1 -0
  279. package/dist/llm/provider-registry/provider-alias.js +85 -0
  280. package/dist/llm/provider-registry/provider-alias.js.map +1 -0
  281. package/dist/llm/provider-registry/provider-defs.d.ts +45 -0
  282. package/dist/llm/provider-registry/provider-defs.d.ts.map +1 -0
  283. package/dist/llm/provider-registry/provider-defs.js +145 -0
  284. package/dist/llm/provider-registry/provider-defs.js.map +1 -0
  285. package/dist/llm/provider-registry/provider-seed.d.ts +78 -0
  286. package/dist/llm/provider-registry/provider-seed.d.ts.map +1 -0
  287. package/dist/llm/provider-registry/provider-seed.js +113 -0
  288. package/dist/llm/provider-registry/provider-seed.js.map +1 -0
  289. package/dist/llm/role-executor.d.ts.map +1 -1
  290. package/dist/llm/role-executor.js +44 -5
  291. package/dist/llm/role-executor.js.map +1 -1
  292. package/dist/llm/role-resolver.d.ts +46 -14
  293. package/dist/llm/role-resolver.d.ts.map +1 -1
  294. package/dist/llm/role-resolver.js +185 -20
  295. package/dist/llm/role-resolver.js.map +1 -1
  296. package/dist/llm/sealed-credential.d.ts +125 -0
  297. package/dist/llm/sealed-credential.d.ts.map +1 -0
  298. package/dist/llm/sealed-credential.js +133 -0
  299. package/dist/llm/sealed-credential.js.map +1 -0
  300. package/dist/llm/session-factory.d.ts.map +1 -1
  301. package/dist/llm/session-factory.js +6 -2
  302. package/dist/llm/session-factory.js.map +1 -1
  303. package/dist/llm/system-key.d.ts +67 -0
  304. package/dist/llm/system-key.d.ts.map +1 -0
  305. package/dist/llm/system-key.js +87 -0
  306. package/dist/llm/system-key.js.map +1 -0
  307. package/dist/llm/system-of-use-registry.d.ts +119 -0
  308. package/dist/llm/system-of-use-registry.d.ts.map +1 -0
  309. package/dist/llm/system-of-use-registry.js +200 -0
  310. package/dist/llm/system-of-use-registry.js.map +1 -0
  311. package/dist/llm/system-resolver.d.ts +32 -10
  312. package/dist/llm/system-resolver.d.ts.map +1 -1
  313. package/dist/llm/system-resolver.js +138 -35
  314. package/dist/llm/system-resolver.js.map +1 -1
  315. package/dist/memory/brain-writer-thread.d.ts.map +1 -1
  316. package/dist/memory/brain-writer-thread.js +116 -11
  317. package/dist/memory/brain-writer-thread.js.map +1 -1
  318. package/dist/memory/claude-mem-migration.d.ts.map +1 -1
  319. package/dist/memory/claude-mem-migration.js +21 -0
  320. package/dist/memory/claude-mem-migration.js.map +1 -1
  321. package/dist/memory/graph-memory-bridge.d.ts.map +1 -1
  322. package/dist/memory/graph-memory-bridge.js +32 -25
  323. package/dist/memory/graph-memory-bridge.js.map +1 -1
  324. package/dist/memory/learnings.d.ts +4 -0
  325. package/dist/memory/learnings.d.ts.map +1 -1
  326. package/dist/memory/llm-backend-resolver.js +23 -5
  327. package/dist/memory/llm-backend-resolver.js.map +1 -1
  328. package/dist/memory/patterns.d.ts +4 -0
  329. package/dist/memory/patterns.d.ts.map +1 -1
  330. package/dist/metrics/index.d.ts +2 -0
  331. package/dist/metrics/index.d.ts.map +1 -1
  332. package/dist/metrics/index.js +1 -0
  333. package/dist/metrics/index.js.map +1 -1
  334. package/dist/nexus/migrations/M-split-graph.d.ts.map +1 -1
  335. package/dist/nexus/migrations/M-split-graph.js +60 -53
  336. package/dist/nexus/migrations/M-split-graph.js.map +1 -1
  337. package/dist/orchestrate/pivot.d.ts.map +1 -1
  338. package/dist/orchestrate/pivot.js +20 -2
  339. package/dist/orchestrate/pivot.js.map +1 -1
  340. package/dist/orchestration/spawn.d.ts +89 -0
  341. package/dist/orchestration/spawn.d.ts.map +1 -1
  342. package/dist/orchestration/spawn.js +68 -0
  343. package/dist/orchestration/spawn.js.map +1 -1
  344. package/dist/playbooks/cantbook-profile.d.ts +96 -0
  345. package/dist/playbooks/cantbook-profile.d.ts.map +1 -0
  346. package/dist/playbooks/cantbook-profile.js +97 -0
  347. package/dist/playbooks/cantbook-profile.js.map +1 -0
  348. package/dist/playbooks/guarded-deterministic-runner.d.ts +153 -0
  349. package/dist/playbooks/guarded-deterministic-runner.d.ts.map +1 -0
  350. package/dist/playbooks/guarded-deterministic-runner.js +155 -0
  351. package/dist/playbooks/guarded-deterministic-runner.js.map +1 -0
  352. package/dist/playbooks/index.d.ts +2 -0
  353. package/dist/playbooks/index.d.ts.map +1 -1
  354. package/dist/playbooks/index.js +10 -0
  355. package/dist/playbooks/index.js.map +1 -1
  356. package/dist/playbooks/pi-runner-wiring.d.ts +75 -0
  357. package/dist/playbooks/pi-runner-wiring.d.ts.map +1 -0
  358. package/dist/playbooks/pi-runner-wiring.js +82 -0
  359. package/dist/playbooks/pi-runner-wiring.js.map +1 -0
  360. package/dist/release/engine-ops.js +2 -2
  361. package/dist/release/engine-ops.js.map +1 -1
  362. package/dist/routing/capability-matrix.d.ts.map +1 -1
  363. package/dist/routing/capability-matrix.js +0 -57
  364. package/dist/routing/capability-matrix.js.map +1 -1
  365. package/dist/runtime/openapi/generate-openapi.d.ts +211 -0
  366. package/dist/runtime/openapi/generate-openapi.d.ts.map +1 -0
  367. package/dist/runtime/openapi/generate-openapi.js +300 -0
  368. package/dist/runtime/openapi/generate-openapi.js.map +1 -0
  369. package/dist/runtime/openapi/index.d.ts +16 -0
  370. package/dist/runtime/openapi/index.d.ts.map +1 -0
  371. package/dist/runtime/openapi/index.js +16 -0
  372. package/dist/runtime/openapi/index.js.map +1 -0
  373. package/dist/selfimprove/budget.d.ts +206 -0
  374. package/dist/selfimprove/budget.d.ts.map +1 -0
  375. package/dist/selfimprove/budget.js +203 -0
  376. package/dist/selfimprove/budget.js.map +1 -0
  377. package/dist/selfimprove/dhq-adapter.d.ts +105 -0
  378. package/dist/selfimprove/dhq-adapter.d.ts.map +1 -0
  379. package/dist/selfimprove/dhq-adapter.js +95 -0
  380. package/dist/selfimprove/dhq-adapter.js.map +1 -0
  381. package/dist/selfimprove/draft-pr.d.ts +129 -0
  382. package/dist/selfimprove/draft-pr.d.ts.map +1 -0
  383. package/dist/selfimprove/draft-pr.js +158 -0
  384. package/dist/selfimprove/draft-pr.js.map +1 -0
  385. package/dist/selfimprove/envelope-diff.d.ts +162 -0
  386. package/dist/selfimprove/envelope-diff.d.ts.map +1 -0
  387. package/dist/selfimprove/envelope-diff.js +321 -0
  388. package/dist/selfimprove/envelope-diff.js.map +1 -0
  389. package/dist/selfimprove/replay.d.ts +121 -0
  390. package/dist/selfimprove/replay.d.ts.map +1 -0
  391. package/dist/selfimprove/replay.js +109 -0
  392. package/dist/selfimprove/replay.js.map +1 -0
  393. package/dist/selfimprove/run-loop.d.ts +148 -0
  394. package/dist/selfimprove/run-loop.d.ts.map +1 -0
  395. package/dist/selfimprove/run-loop.js +240 -0
  396. package/dist/selfimprove/run-loop.js.map +1 -0
  397. package/dist/selfimprove/scenario.d.ts +145 -0
  398. package/dist/selfimprove/scenario.d.ts.map +1 -0
  399. package/dist/selfimprove/scenario.js +243 -0
  400. package/dist/selfimprove/scenario.js.map +1 -0
  401. package/dist/selfimprove/scenarios/dhq-replay-find/golden.json +32 -0
  402. package/dist/selfimprove/scenarios/dhq-replay-find/scenario.json +18 -0
  403. package/dist/sentient/daemon-entry.js +5 -0
  404. package/dist/sentient/daemon-entry.js.map +1 -1
  405. package/dist/sentient/daemon.d.ts.map +1 -1
  406. package/dist/sentient/daemon.js +19 -0
  407. package/dist/sentient/daemon.js.map +1 -1
  408. package/dist/sentient/hygiene-scan.d.ts.map +1 -1
  409. package/dist/sentient/hygiene-scan.js +14 -6
  410. package/dist/sentient/hygiene-scan.js.map +1 -1
  411. package/dist/sessions/briefing.d.ts.map +1 -1
  412. package/dist/sessions/briefing.js +13 -9
  413. package/dist/sessions/briefing.js.map +1 -1
  414. package/dist/sessions/connection-session-handle.d.ts +161 -0
  415. package/dist/sessions/connection-session-handle.d.ts.map +1 -0
  416. package/dist/sessions/connection-session-handle.js +168 -0
  417. package/dist/sessions/connection-session-handle.js.map +1 -0
  418. package/dist/sessions/handoff.d.ts.map +1 -1
  419. package/dist/sessions/handoff.js +9 -0
  420. package/dist/sessions/handoff.js.map +1 -1
  421. package/dist/sessions/index.d.ts +4 -1
  422. package/dist/sessions/index.d.ts.map +1 -1
  423. package/dist/sessions/index.js +31 -1
  424. package/dist/sessions/index.js.map +1 -1
  425. package/dist/sessions/session-id.d.ts +34 -0
  426. package/dist/sessions/session-id.d.ts.map +1 -1
  427. package/dist/sessions/session-id.js +37 -0
  428. package/dist/sessions/session-id.js.map +1 -1
  429. package/dist/sessions/session-manifest-mirror.d.ts +115 -0
  430. package/dist/sessions/session-manifest-mirror.d.ts.map +1 -0
  431. package/dist/sessions/session-manifest-mirror.js +250 -0
  432. package/dist/sessions/session-manifest-mirror.js.map +1 -0
  433. package/dist/sessions/session-switch.d.ts.map +1 -1
  434. package/dist/sessions/session-switch.js +5 -2
  435. package/dist/sessions/session-switch.js.map +1 -1
  436. package/dist/setup/config-json-merge.d.ts.map +1 -1
  437. package/dist/setup/config-json-merge.js +14 -0
  438. package/dist/setup/config-json-merge.js.map +1 -1
  439. package/dist/setup/index.d.ts +23 -11
  440. package/dist/setup/index.d.ts.map +1 -1
  441. package/dist/setup/index.js +25 -12
  442. package/dist/setup/index.js.map +1 -1
  443. package/dist/setup/sections/llm.d.ts +28 -1
  444. package/dist/setup/sections/llm.d.ts.map +1 -1
  445. package/dist/setup/sections/llm.js +27 -6
  446. package/dist/setup/sections/llm.js.map +1 -1
  447. package/dist/setup/sections/models-roles.d.ts +40 -0
  448. package/dist/setup/sections/models-roles.d.ts.map +1 -0
  449. package/dist/setup/sections/models-roles.js +219 -0
  450. package/dist/setup/sections/models-roles.js.map +1 -0
  451. package/dist/setup/wizard.d.ts +19 -1
  452. package/dist/setup/wizard.d.ts.map +1 -1
  453. package/dist/setup/wizard.js.map +1 -1
  454. package/dist/store/converters.d.ts.map +1 -1
  455. package/dist/store/converters.js +2 -0
  456. package/dist/store/converters.js.map +1 -1
  457. package/dist/store/db-helpers.d.ts.map +1 -1
  458. package/dist/store/db-helpers.js +2 -0
  459. package/dist/store/db-helpers.js.map +1 -1
  460. package/dist/store/dual-scope-db.d.ts.map +1 -1
  461. package/dist/store/dual-scope-db.js +87 -47
  462. package/dist/store/dual-scope-db.js.map +1 -1
  463. package/dist/store/pi-session-store.d.ts +151 -0
  464. package/dist/store/pi-session-store.d.ts.map +1 -0
  465. package/dist/store/pi-session-store.js +166 -0
  466. package/dist/store/pi-session-store.js.map +1 -0
  467. package/dist/store/safety-data-accessor.d.ts +1 -0
  468. package/dist/store/safety-data-accessor.d.ts.map +1 -1
  469. package/dist/store/safety-data-accessor.js +5 -0
  470. package/dist/store/safety-data-accessor.js.map +1 -1
  471. package/dist/store/schedule-schema.d.ts +195 -0
  472. package/dist/store/schedule-schema.d.ts.map +1 -0
  473. package/dist/store/schedule-schema.js +84 -0
  474. package/dist/store/schedule-schema.js.map +1 -0
  475. package/dist/store/schedule-store.d.ts +144 -0
  476. package/dist/store/schedule-store.d.ts.map +1 -0
  477. package/dist/store/schedule-store.js +162 -0
  478. package/dist/store/schedule-store.js.map +1 -0
  479. package/dist/store/schema/attachments.d.ts +1 -1
  480. package/dist/store/schema/cleo-global/accounts.d.ts +357 -0
  481. package/dist/store/schema/cleo-global/accounts.d.ts.map +1 -0
  482. package/dist/store/schema/cleo-global/accounts.js +136 -0
  483. package/dist/store/schema/cleo-global/accounts.js.map +1 -0
  484. package/dist/store/schema/cleo-global/index.d.ts +5 -0
  485. package/dist/store/schema/cleo-global/index.d.ts.map +1 -1
  486. package/dist/store/schema/cleo-global/index.js +7 -0
  487. package/dist/store/schema/cleo-global/index.js.map +1 -1
  488. package/dist/store/schema/cleo-global/models-catalog.d.ts +359 -0
  489. package/dist/store/schema/cleo-global/models-catalog.d.ts.map +1 -0
  490. package/dist/store/schema/cleo-global/models-catalog.js +114 -0
  491. package/dist/store/schema/cleo-global/models-catalog.js.map +1 -0
  492. package/dist/store/schema/cleo-global/providers.d.ts +279 -0
  493. package/dist/store/schema/cleo-global/providers.d.ts.map +1 -0
  494. package/dist/store/schema/cleo-global/providers.js +94 -0
  495. package/dist/store/schema/cleo-global/providers.js.map +1 -0
  496. package/dist/store/schema/cleo-global/services.d.ts +493 -0
  497. package/dist/store/schema/cleo-global/services.d.ts.map +1 -0
  498. package/dist/store/schema/cleo-global/services.js +200 -0
  499. package/dist/store/schema/cleo-global/services.js.map +1 -0
  500. package/dist/store/schema/cleo-global/session-manifest.d.ts +217 -0
  501. package/dist/store/schema/cleo-global/session-manifest.d.ts.map +1 -0
  502. package/dist/store/schema/cleo-global/session-manifest.js +99 -0
  503. package/dist/store/schema/cleo-global/session-manifest.js.map +1 -0
  504. package/dist/store/schema/cleo-project/docs.d.ts +1 -1
  505. package/dist/store/schema/cleo-project/provenance-rest.d.ts +1 -1
  506. package/dist/store/schema/cleo-project/tasks-core.d.ts +16 -0
  507. package/dist/store/schema/cleo-project/tasks-core.d.ts.map +1 -1
  508. package/dist/store/schema/cleo-project/tasks-core.js +14 -0
  509. package/dist/store/schema/cleo-project/tasks-core.js.map +1 -1
  510. package/dist/store/schema/cleo-shared/brain.d.ts +2 -2
  511. package/dist/store/schema/memory-schema.d.ts +182 -2
  512. package/dist/store/schema/memory-schema.d.ts.map +1 -1
  513. package/dist/store/schema/memory-schema.js +111 -2
  514. package/dist/store/schema/memory-schema.js.map +1 -1
  515. package/dist/store/schema/provenance/releases.d.ts +1 -1
  516. package/dist/store/schema/tasks.d.ts +16 -0
  517. package/dist/store/schema/tasks.d.ts.map +1 -1
  518. package/dist/store/schema/tasks.js +10 -0
  519. package/dist/store/schema/tasks.js.map +1 -1
  520. package/dist/store/selfimprove-dhq-schema.d.ts +284 -0
  521. package/dist/store/selfimprove-dhq-schema.d.ts.map +1 -0
  522. package/dist/store/selfimprove-dhq-schema.js +128 -0
  523. package/dist/store/selfimprove-dhq-schema.js.map +1 -0
  524. package/dist/store/selfimprove-dhq-store.d.ts +175 -0
  525. package/dist/store/selfimprove-dhq-store.d.ts.map +1 -0
  526. package/dist/store/selfimprove-dhq-store.js +182 -0
  527. package/dist/store/selfimprove-dhq-store.js.map +1 -0
  528. package/dist/store/service-connections-accessor.d.ts +313 -0
  529. package/dist/store/service-connections-accessor.d.ts.map +1 -0
  530. package/dist/store/service-connections-accessor.js +464 -0
  531. package/dist/store/service-connections-accessor.js.map +1 -0
  532. package/dist/store/service-host-matcher.d.ts +70 -0
  533. package/dist/store/service-host-matcher.d.ts.map +1 -0
  534. package/dist/store/service-host-matcher.js +127 -0
  535. package/dist/store/service-host-matcher.js.map +1 -0
  536. package/dist/store/service-injection.d.ts +152 -0
  537. package/dist/store/service-injection.d.ts.map +1 -0
  538. package/dist/store/service-injection.js +225 -0
  539. package/dist/store/service-injection.js.map +1 -0
  540. package/dist/store/service-oauth.d.ts +287 -0
  541. package/dist/store/service-oauth.d.ts.map +1 -0
  542. package/dist/store/service-oauth.js +524 -0
  543. package/dist/store/service-oauth.js.map +1 -0
  544. package/dist/store/service-trust-gate.d.ts +164 -0
  545. package/dist/store/service-trust-gate.d.ts.map +1 -0
  546. package/dist/store/service-trust-gate.js +122 -0
  547. package/dist/store/service-trust-gate.js.map +1 -0
  548. package/dist/store/session-store.d.ts +52 -13
  549. package/dist/store/session-store.d.ts.map +1 -1
  550. package/dist/store/session-store.js +71 -13
  551. package/dist/store/session-store.js.map +1 -1
  552. package/dist/store/sqlite-data-accessor.d.ts.map +1 -1
  553. package/dist/store/sqlite-data-accessor.js +7 -0
  554. package/dist/store/sqlite-data-accessor.js.map +1 -1
  555. package/dist/store/umbrella-data-accessor.d.ts +1 -0
  556. package/dist/store/umbrella-data-accessor.d.ts.map +1 -1
  557. package/dist/store/umbrella-data-accessor.js +5 -0
  558. package/dist/store/umbrella-data-accessor.js.map +1 -1
  559. package/dist/store/validation-schemas.d.ts +36 -4
  560. package/dist/store/validation-schemas.d.ts.map +1 -1
  561. package/dist/store/writer-lease-schema.d.ts +392 -0
  562. package/dist/store/writer-lease-schema.d.ts.map +1 -0
  563. package/dist/store/writer-lease-schema.js +142 -0
  564. package/dist/store/writer-lease-schema.js.map +1 -0
  565. package/dist/store/writer-lease.d.ts +368 -0
  566. package/dist/store/writer-lease.d.ts.map +1 -0
  567. package/dist/store/writer-lease.js +1002 -0
  568. package/dist/store/writer-lease.js.map +1 -0
  569. package/dist/tasks/agent-lifecycle-lane.d.ts +175 -0
  570. package/dist/tasks/agent-lifecycle-lane.d.ts.map +1 -0
  571. package/dist/tasks/agent-lifecycle-lane.js +176 -0
  572. package/dist/tasks/agent-lifecycle-lane.js.map +1 -0
  573. package/dist/tasks/backfill-child-projections.d.ts.map +1 -1
  574. package/dist/tasks/backfill-child-projections.js +14 -9
  575. package/dist/tasks/backfill-child-projections.js.map +1 -1
  576. package/dist/tasks/complete.d.ts +17 -0
  577. package/dist/tasks/complete.d.ts.map +1 -1
  578. package/dist/tasks/complete.js +60 -20
  579. package/dist/tasks/complete.js.map +1 -1
  580. package/dist/tasks/depends-waiver-audit.d.ts +52 -0
  581. package/dist/tasks/depends-waiver-audit.d.ts.map +1 -0
  582. package/dist/tasks/depends-waiver-audit.js +36 -0
  583. package/dist/tasks/depends-waiver-audit.js.map +1 -0
  584. package/dist/tasks/duplicate-detector.d.ts.map +1 -1
  585. package/dist/tasks/duplicate-detector.js +14 -7
  586. package/dist/tasks/duplicate-detector.js.map +1 -1
  587. package/dist/tasks/engine-wrap.d.ts +36 -2
  588. package/dist/tasks/engine-wrap.d.ts.map +1 -1
  589. package/dist/tasks/engine-wrap.js +44 -2
  590. package/dist/tasks/engine-wrap.js.map +1 -1
  591. package/dist/tasks/index.d.ts +1 -0
  592. package/dist/tasks/index.d.ts.map +1 -1
  593. package/dist/tasks/index.js +1 -0
  594. package/dist/tasks/index.js.map +1 -1
  595. package/dist/tasks/ops.d.ts +3 -0
  596. package/dist/tasks/ops.d.ts.map +1 -1
  597. package/dist/tasks/task-ops.d.ts +1 -1
  598. package/dist/tasks/task-ops.d.ts.map +1 -1
  599. package/dist/tasks/task-ops.js +3 -1
  600. package/dist/tasks/task-ops.js.map +1 -1
  601. package/dist/tasks/task-reparent.d.ts +90 -0
  602. package/dist/tasks/task-reparent.d.ts.map +1 -1
  603. package/dist/tasks/task-reparent.js +171 -0
  604. package/dist/tasks/task-reparent.js.map +1 -1
  605. package/dist/telemetry/index.d.ts.map +1 -1
  606. package/dist/telemetry/index.js +10 -4
  607. package/dist/telemetry/index.js.map +1 -1
  608. package/dist/tools/agent-registry.d.ts +250 -0
  609. package/dist/tools/agent-registry.d.ts.map +1 -0
  610. package/dist/tools/agent-registry.js +292 -0
  611. package/dist/tools/agent-registry.js.map +1 -0
  612. package/dist/tools/agent-tool-families.d.ts +107 -0
  613. package/dist/tools/agent-tool-families.d.ts.map +1 -0
  614. package/dist/tools/agent-tool-families.js +527 -0
  615. package/dist/tools/agent-tool-families.js.map +1 -0
  616. package/dist/tools/browser-driver.d.ts +183 -0
  617. package/dist/tools/browser-driver.d.ts.map +1 -0
  618. package/dist/tools/browser-driver.js +242 -0
  619. package/dist/tools/browser-driver.js.map +1 -0
  620. package/dist/tools/builtin-agent-tools.d.ts +36 -0
  621. package/dist/tools/builtin-agent-tools.d.ts.map +1 -0
  622. package/dist/tools/builtin-agent-tools.js +191 -0
  623. package/dist/tools/builtin-agent-tools.js.map +1 -0
  624. package/dist/tools/dispatch.d.ts +370 -0
  625. package/dist/tools/dispatch.d.ts.map +1 -0
  626. package/dist/tools/dispatch.js +505 -0
  627. package/dist/tools/dispatch.js.map +1 -0
  628. package/dist/tools/env-scrub.d.ts +93 -0
  629. package/dist/tools/env-scrub.d.ts.map +1 -0
  630. package/dist/tools/env-scrub.js +176 -0
  631. package/dist/tools/env-scrub.js.map +1 -0
  632. package/dist/tools/exec-code-agent-tool.d.ts +179 -0
  633. package/dist/tools/exec-code-agent-tool.d.ts.map +1 -0
  634. package/dist/tools/exec-code-agent-tool.js +239 -0
  635. package/dist/tools/exec-code-agent-tool.js.map +1 -0
  636. package/dist/tools/fs.d.ts +30 -0
  637. package/dist/tools/fs.d.ts.map +1 -1
  638. package/dist/tools/fs.js +55 -2
  639. package/dist/tools/fs.js.map +1 -1
  640. package/dist/tools/guard.d.ts +15 -0
  641. package/dist/tools/guard.d.ts.map +1 -1
  642. package/dist/tools/guard.js +49 -12
  643. package/dist/tools/guard.js.map +1 -1
  644. package/dist/tools/index.d.ts +16 -0
  645. package/dist/tools/index.d.ts.map +1 -1
  646. package/dist/tools/index.js +52 -0
  647. package/dist/tools/index.js.map +1 -1
  648. package/dist/tools/mcp-agent-tool.d.ts +189 -0
  649. package/dist/tools/mcp-agent-tool.d.ts.map +1 -0
  650. package/dist/tools/mcp-agent-tool.js +243 -0
  651. package/dist/tools/mcp-agent-tool.js.map +1 -0
  652. package/dist/tools/media-agent-tools.d.ts +105 -0
  653. package/dist/tools/media-agent-tools.d.ts.map +1 -0
  654. package/dist/tools/media-agent-tools.js +255 -0
  655. package/dist/tools/media-agent-tools.js.map +1 -0
  656. package/dist/tools/memory-agent-tools.d.ts +99 -0
  657. package/dist/tools/memory-agent-tools.d.ts.map +1 -0
  658. package/dist/tools/memory-agent-tools.js +190 -0
  659. package/dist/tools/memory-agent-tools.js.map +1 -0
  660. package/dist/tools/pty.d.ts +45 -0
  661. package/dist/tools/pty.d.ts.map +1 -0
  662. package/dist/tools/pty.js +166 -0
  663. package/dist/tools/pty.js.map +1 -0
  664. package/dist/tools/schedule-agent-tools.d.ts +151 -0
  665. package/dist/tools/schedule-agent-tools.d.ts.map +1 -0
  666. package/dist/tools/schedule-agent-tools.js +238 -0
  667. package/dist/tools/schedule-agent-tools.js.map +1 -0
  668. package/dist/tools/schema-gen.d.ts +57 -0
  669. package/dist/tools/schema-gen.d.ts.map +1 -0
  670. package/dist/tools/schema-gen.js +52 -0
  671. package/dist/tools/schema-gen.js.map +1 -0
  672. package/dist/tools/shell.d.ts +12 -0
  673. package/dist/tools/shell.d.ts.map +1 -1
  674. package/dist/tools/shell.js +14 -1
  675. package/dist/tools/shell.js.map +1 -1
  676. package/dist/tools/skill-agent-tool.d.ts +108 -0
  677. package/dist/tools/skill-agent-tool.d.ts.map +1 -0
  678. package/dist/tools/skill-agent-tool.js +135 -0
  679. package/dist/tools/skill-agent-tool.js.map +1 -0
  680. package/dist/tools/web-agent-tools.d.ts +72 -0
  681. package/dist/tools/web-agent-tools.d.ts.map +1 -0
  682. package/dist/tools/web-agent-tools.js +393 -0
  683. package/dist/tools/web-agent-tools.js.map +1 -0
  684. package/dist/tools/web-search-backends.d.ts +156 -0
  685. package/dist/tools/web-search-backends.d.ts.map +1 -0
  686. package/dist/tools/web-search-backends.js +290 -0
  687. package/dist/tools/web-search-backends.js.map +1 -0
  688. package/dist/validation/engine-ops.d.ts.map +1 -1
  689. package/dist/validation/engine-ops.js +17 -1
  690. package/dist/validation/engine-ops.js.map +1 -1
  691. package/dist/validation/ops.d.ts +1 -15
  692. package/dist/validation/ops.d.ts.map +1 -1
  693. package/dist/validation/ops.js +0 -20
  694. package/dist/validation/ops.js.map +1 -1
  695. package/migrations/drizzle-brain/20260610000001_t10405-bitemporal-network-columns/migration.sql +71 -0
  696. package/migrations/drizzle-cleo-global/20260607000000_t11891-writer-leases/migration.sql +55 -0
  697. package/migrations/drizzle-cleo-global/20260607010000_t11639-session-manifest/migration.sql +43 -0
  698. package/migrations/drizzle-cleo-global/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
  699. package/migrations/drizzle-cleo-global/20260608010000_t11709-accounts-credential-pool/migration.sql +72 -0
  700. package/migrations/drizzle-cleo-global/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
  701. package/migrations/drizzle-cleo-global/20260609000000_t11937-service-vault/migration.sql +93 -0
  702. package/migrations/drizzle-cleo-global/20260609010000_t11733-models-catalog/migration.sql +65 -0
  703. package/migrations/drizzle-cleo-global/20260609020000_t11703-providers/migration.sql +52 -0
  704. package/migrations/drizzle-cleo-global/20260610000000_t11962-schedules/migration.sql +48 -0
  705. package/migrations/drizzle-cleo-project/20260607000000_t11891-writer-leases/migration.sql +55 -0
  706. package/migrations/drizzle-cleo-project/20260607010000_t11639-session-parent/migration.sql +22 -0
  707. package/migrations/drizzle-cleo-project/20260608000000_t11899-pi-session-tree/migration.sql +52 -0
  708. package/migrations/drizzle-cleo-project/20260608020000_t11889-selfimprove-dhq/migration.sql +64 -0
  709. package/migrations/drizzle-cleo-project/20260610000000_t11962-schedules/migration.sql +48 -0
  710. package/package.json +26 -14
  711. package/dist/lifecycle/chain-composition.d.ts +0 -30
  712. package/dist/lifecycle/chain-composition.d.ts.map +0 -1
  713. package/dist/lifecycle/chain-composition.js +0 -152
  714. package/dist/lifecycle/chain-composition.js.map +0 -1
  715. package/dist/lifecycle/chain-store.d.ts +0 -70
  716. package/dist/lifecycle/chain-store.d.ts.map +0 -1
  717. package/dist/lifecycle/chain-store.js +0 -246
  718. package/dist/lifecycle/chain-store.js.map +0 -1
  719. package/dist/lifecycle/default-chain.d.ts +0 -39
  720. package/dist/lifecycle/default-chain.d.ts.map +0 -1
  721. package/dist/lifecycle/default-chain.js +0 -176
  722. package/dist/lifecycle/default-chain.js.map +0 -1
  723. package/dist/lifecycle/tessera-engine.d.ts +0 -48
  724. package/dist/lifecycle/tessera-engine.d.ts.map +0 -1
  725. package/dist/lifecycle/tessera-engine.js +0 -249
  726. package/dist/lifecycle/tessera-engine.js.map +0 -1
  727. package/dist/validation/chain-validation.d.ts +0 -43
  728. package/dist/validation/chain-validation.d.ts.map +0 -1
  729. package/dist/validation/chain-validation.js +0 -146
  730. package/dist/validation/chain-validation.js.map +0 -1
@@ -0,0 +1,321 @@
1
+ /**
2
+ * Envelope normalization + structural diff vs a golden (T11889-B).
3
+ *
4
+ * The self-improvement loop replays a scenario (see {@link "./replay.js"}) and
5
+ * diffs each captured envelope against the golden expected envelope. This module:
6
+ *
7
+ * 1. {@link normalizeEnvelope} — strips the VOLATILE `meta` fields so only
8
+ * deterministic structure is compared. Two classes are stripped:
9
+ * timing/trace fields (`timestamp`, `requestId`, `duration_ms` /
10
+ * `durationMs`) AND the per-run session-lineage UUIDs (`sessionId`,
11
+ * `originSessionId`, `executionSessionId`). The latter are non-deterministic:
12
+ * the live `Dispatcher` defaults `executionSessionId`/`originSessionId` to a
13
+ * fresh `randomUUID()` per request
14
+ * (`ensureRequestSessionLineage`), then stamps all three onto `response.meta`
15
+ * — so a real envelope carries UUIDs the hand-authored golden cannot know.
16
+ * Stripping them prevents a permanent phantom DHQ that self-fires on every
17
+ * clean run. (The runtime field is `meta` with snake_case `duration_ms`; the
18
+ * spec wording uses `_meta`/`durationMs`, so both spellings and both
19
+ * container keys are stripped defensively.)
20
+ * 2. {@link diffEnvelopes} — structurally compares the normalized envelope set
21
+ * against the golden, producing `{ regressions: DiffEntry[] }`. Zero
22
+ * regressions on a golden match; N on injected divergence. The `meta`
23
+ * container is compared as a SUBSET (only golden-declared meta keys are
24
+ * asserted) so deterministic-but-golden-absent infra keys
25
+ * (`specVersion`, `schemaVersion`, `transport`, `mvi`, `contextVersion`,
26
+ * `strict`, `x-cleo-transport`, …) stamped by the runtime are NOT phantom
27
+ * regressions. The semantic payload (`data`/`error`) is still compared by
28
+ * full key-union — a missing or extra payload key IS a regression.
29
+ * 3. {@link computeQuestionHash} — sha256 of the normalized regression
30
+ * signature (op coordinates + diff path set) so the SAME regression maps to
31
+ * the SAME open DHQ row (the idempotency partial-UNIQUE index in T11889-A).
32
+ *
33
+ * `extractFieldFromResult` from `@cleocode/lafs` is reused for targeted-field
34
+ * asserts where a full structural compare would be too brittle.
35
+ *
36
+ * This module is PURE — no DB, no native handle, no `cleo` mutation.
37
+ * Import-time side-effect-free.
38
+ *
39
+ * @module @cleocode/core/selfimprove/envelope-diff
40
+ * @epic T11889
41
+ * @task T11912
42
+ */
43
+ import { createHash } from 'node:crypto';
44
+ import { extractFieldFromResult } from '@cleocode/lafs';
45
+ /**
46
+ * Volatile envelope-meta field names stripped before diffing.
47
+ *
48
+ * Two classes, both non-deterministic per run:
49
+ *
50
+ * - Timing / trace: `timestamp`, `requestId`, `duration_ms` (the runtime
51
+ * canonical, snake_case) and `durationMs` (the spec wording — stripped so a
52
+ * golden authored either way normalizes identically).
53
+ * - Session lineage: `sessionId`, `originSessionId`, `executionSessionId`. The
54
+ * live `Dispatcher` stamps these onto `response.meta`
55
+ * after defaulting `executionSessionId`/`originSessionId` to a fresh
56
+ * `randomUUID()` per request (`ensureRequestSessionLineage`). They are
57
+ * per-run UUIDs the hand-authored golden cannot encode; leaving them in would
58
+ * make every clean replay emit a phantom regression at
59
+ * `meta/executionSessionId` and `meta/originSessionId`, and because the
60
+ * regression signature hashes only `opCoord@path` (constant), the resulting
61
+ * `question_hash` would be STABLE — a permanent self-firing DHQ. Stripping
62
+ * them keeps an identical-but-for-lineage envelope a non-regression.
63
+ */
64
+ const VOLATILE_META_FIELDS = [
65
+ 'timestamp',
66
+ 'requestId',
67
+ 'duration_ms',
68
+ 'durationMs',
69
+ 'sessionId',
70
+ 'originSessionId',
71
+ 'executionSessionId',
72
+ ];
73
+ /**
74
+ * Meta container keys whose volatile fields are stripped, and whose remaining
75
+ * keys are compared as a SUBSET (see {@link diffEnvelopes}).
76
+ *
77
+ * Runtime envelopes use `meta`; `_meta` is stripped too for defensive parity with
78
+ * the gateway envelope shape.
79
+ */
80
+ const META_CONTAINER_KEYS = ['meta', '_meta'];
81
+ /**
82
+ * Top-level envelope keys whose value is a meta container.
83
+ *
84
+ * The structural diff treats these containers as a SUBSET compare (golden-declared
85
+ * keys only) so deterministic-but-golden-absent infra keys the runtime stamps
86
+ * (`specVersion`, `schemaVersion`, `transport`, `mvi`, `contextVersion`, `strict`,
87
+ * `x-cleo-transport`, …) are not phantom regressions. Everything else (`data`,
88
+ * `error`, …) keeps a full key-union compare.
89
+ */
90
+ const SUBSET_COMPARE_KEYS = new Set(META_CONTAINER_KEYS);
91
+ /**
92
+ * Deep-clone a JSON-serializable value via structured round-trip.
93
+ *
94
+ * Replay envelopes are JSON-shaped (they round-trip through transports), so a
95
+ * JSON clone is safe and avoids mutating the caller's object during normalization.
96
+ *
97
+ * @param value - The value to clone.
98
+ * @returns A deep copy.
99
+ */
100
+ function jsonClone(value) {
101
+ return JSON.parse(JSON.stringify(value));
102
+ }
103
+ /**
104
+ * Strip the volatile `meta`/`_meta` fields from an envelope.
105
+ *
106
+ * Returns a NEW object; the input is not mutated. The volatile timing/trace fields
107
+ * AND the per-run session-lineage UUIDs (`sessionId`, `originSessionId`,
108
+ * `executionSessionId`) are removed — see {@link VOLATILE_META_FIELDS}. The stable
109
+ * meta remnant (`gateway`, `domain`, `operation`, `source`, …) is preserved so
110
+ * structural identity (which operation produced the envelope) still compares.
111
+ *
112
+ * Note: deterministic-but-golden-absent infra meta keys (`specVersion`,
113
+ * `transport`, …) are NOT stripped here — they are tolerated by the SUBSET compare
114
+ * in {@link diffEnvelopes} instead, so the strip set stays exactly the volatile
115
+ * fields and nothing semantic.
116
+ *
117
+ * @param envelope - The replayed envelope to normalize.
118
+ * @returns The normalized envelope with volatile meta fields removed.
119
+ *
120
+ * @example
121
+ * ```ts
122
+ * const norm = normalizeEnvelope(envelope);
123
+ * // norm.meta has no timestamp / requestId / duration_ms / *SessionId
124
+ * ```
125
+ */
126
+ export function normalizeEnvelope(envelope) {
127
+ const cloned = jsonClone(envelope);
128
+ for (const containerKey of META_CONTAINER_KEYS) {
129
+ const container = cloned[containerKey];
130
+ if (container !== null && typeof container === 'object' && !Array.isArray(container)) {
131
+ const meta = container;
132
+ for (const field of VOLATILE_META_FIELDS) {
133
+ delete meta[field];
134
+ }
135
+ }
136
+ }
137
+ return cloned;
138
+ }
139
+ /**
140
+ * Recursively collect structural differences between two JSON values.
141
+ *
142
+ * Walks both trees in parallel, recording a `{ path, actual, expected }` for each
143
+ * leaf-level divergence. Object key sets and array lengths are compared; the path
144
+ * uses `/`-delimited segments.
145
+ *
146
+ * Key-set semantics depend on the container:
147
+ * - **Subset** (`subset === true`): only the EXPECTED (golden) object's keys are
148
+ * compared. Extra keys present in `actual` but absent from the golden are
149
+ * ignored. Applied to the `meta` container (see {@link SUBSET_COMPARE_KEYS}) so
150
+ * deterministic infra meta keys the runtime stamps but the golden omits are not
151
+ * phantom regressions.
152
+ * - **Full union** (`subset === false`, the default): keys from BOTH objects are
153
+ * compared, so an extra OR missing key is a regression. Applied to the semantic
154
+ * payload (`data`/`error`).
155
+ *
156
+ * A child whose top-level key is in {@link SUBSET_COMPARE_KEYS} (i.e. `meta`)
157
+ * switches its subtree into subset mode.
158
+ *
159
+ * @param actual - The actual (normalized replay) value.
160
+ * @param expected - The expected (golden) value.
161
+ * @param path - Accumulated path prefix.
162
+ * @param out - Mutable accumulator of `{ path, actual, expected }` tuples.
163
+ * @param subset - When `true`, compare only the golden-declared keys at this node.
164
+ */
165
+ function collectStructuralDiffs(actual, expected, path, out, subset = false) {
166
+ if (actual === expected)
167
+ return;
168
+ const bothObjects = actual !== null &&
169
+ expected !== null &&
170
+ typeof actual === 'object' &&
171
+ typeof expected === 'object' &&
172
+ Array.isArray(actual) === Array.isArray(expected);
173
+ if (!bothObjects) {
174
+ out.push({ path, actual, expected });
175
+ return;
176
+ }
177
+ const actualRec = actual;
178
+ const expectedRec = expected;
179
+ // Subset mode (meta container): compare ONLY the golden's keys, so extra
180
+ // deterministic runtime meta keys are not regressions. Full mode: union both
181
+ // key sets, so an extra OR missing payload key IS a regression.
182
+ const keys = subset
183
+ ? new Set(Object.keys(expectedRec))
184
+ : new Set([...Object.keys(actualRec), ...Object.keys(expectedRec)]);
185
+ for (const key of keys) {
186
+ const childPath = path === '' ? key : `${path}/${key}`;
187
+ // A `meta`/`_meta` container's subtree is compared as a subset; never widen
188
+ // back to full-union once inside a subset container.
189
+ const childSubset = subset || SUBSET_COMPARE_KEYS.has(key);
190
+ collectStructuralDiffs(actualRec[key], expectedRec[key], childPath, out, childSubset);
191
+ }
192
+ }
193
+ /**
194
+ * Diff a set of replayed envelopes against the golden envelope set.
195
+ *
196
+ * Normalizes each replayed envelope (volatile meta stripped) and structurally
197
+ * compares it against the positionally-aligned golden entry. The op coordinate
198
+ * for each `DiffEntry` is taken from `ops[opIndex]`. Callers MUST pass aligned
199
+ * arrays (`ops.length === replayed.length === golden.length`); the function
200
+ * diffs up to the shortest length and reports an extra regression for any length
201
+ * mismatch.
202
+ *
203
+ * The `meta` container is compared as a SUBSET (only golden-declared meta keys are
204
+ * asserted) so deterministic-but-golden-absent infra keys the runtime stamps
205
+ * (`specVersion`, `transport`, …) are not phantom regressions; the semantic
206
+ * payload (`data`/`error`) keeps a full key-union compare where an extra or
207
+ * missing key IS a regression. Together with the volatile-lineage strip in
208
+ * {@link normalizeEnvelope}, a real live envelope that matches the golden body
209
+ * yields ZERO regressions.
210
+ *
211
+ * @param ops - The scenario ops (for op-coordinate labelling).
212
+ * @param replayed - The captured envelopes, one per op (replay order).
213
+ * @param golden - The golden expected entries, positionally aligned with `ops`.
214
+ * @returns `{ regressions }` — empty when the replay matches the golden.
215
+ *
216
+ * @example
217
+ * ```ts
218
+ * const { regressions } = diffEnvelopes(scenario.ops, replayed, golden.envelopes);
219
+ * if (regressions.length === 0) { /* happy path — no DHQ, no PR *\/ }
220
+ * ```
221
+ */
222
+ export function diffEnvelopes(ops, replayed, golden) {
223
+ const regressions = [];
224
+ const n = Math.min(ops.length, replayed.length, golden.length);
225
+ for (let i = 0; i < n; i++) {
226
+ const op = ops[i];
227
+ const replayEnvelope = replayed[i];
228
+ const goldenEntry = golden[i];
229
+ if (op === undefined || replayEnvelope === undefined || goldenEntry === undefined)
230
+ continue;
231
+ const opCoord = `${op.domain}.${op.operation}`;
232
+ const normalized = normalizeEnvelope(replayEnvelope);
233
+ const leafDiffs = [];
234
+ collectStructuralDiffs(normalized, goldenEntry, '', leafDiffs);
235
+ for (const d of leafDiffs) {
236
+ regressions.push({
237
+ opIndex: i,
238
+ opCoord,
239
+ path: d.path,
240
+ actual: d.actual,
241
+ expected: d.expected,
242
+ });
243
+ }
244
+ }
245
+ if (replayed.length !== golden.length) {
246
+ regressions.push({
247
+ opIndex: -1,
248
+ opCoord: '<count>',
249
+ path: 'envelopes/length',
250
+ actual: replayed.length,
251
+ expected: golden.length,
252
+ });
253
+ }
254
+ return { regressions };
255
+ }
256
+ /**
257
+ * Extract a targeted field from a normalized envelope's `data` payload.
258
+ *
259
+ * Reuses the LAFS `--field` extractor (`extractFieldFromResult`) for cases where
260
+ * a full structural diff is too brittle and only a specific field's value matters
261
+ * (e.g. assert `data.tasks[0].id` without comparing the whole envelope).
262
+ *
263
+ * @param normalized - A normalized envelope (from {@link normalizeEnvelope}).
264
+ * @param field - The field name to extract from the envelope's `data` payload.
265
+ * @returns The extracted value, or `undefined` when absent.
266
+ *
267
+ * @example
268
+ * ```ts
269
+ * const id = extractTargetedField(normalizeEnvelope(env), 'id');
270
+ * ```
271
+ */
272
+ export function extractTargetedField(normalized, field) {
273
+ const data = normalized.data;
274
+ if (data === undefined || data === null)
275
+ return undefined;
276
+ // The LAFS extractor operates on a result value (object | array | null); the
277
+ // dispatch envelope's `data` is the equivalent payload.
278
+ if (typeof data !== 'object')
279
+ return undefined;
280
+ return extractFieldFromResult(data, field);
281
+ }
282
+ /**
283
+ * Build the deterministic regression signature for a diff result.
284
+ *
285
+ * The signature is the SORTED set of `{ opCoord, path }` pairs from the
286
+ * regressions — NOT the values. Two runs that diverge at the same op coordinates
287
+ * on the same paths produce the same signature (and thus the same
288
+ * {@link computeQuestionHash}), so a repeated regression maps to ONE open DHQ row
289
+ * rather than spamming duplicates. Actual/expected values are intentionally
290
+ * excluded so transient value noise does not fork the hash.
291
+ *
292
+ * @param regressions - The diff regressions.
293
+ * @returns A stable, sorted signature string.
294
+ */
295
+ function regressionSignature(regressions) {
296
+ const pairs = regressions.map((r) => `${r.opCoord}@${r.path}`);
297
+ pairs.sort();
298
+ return pairs.join('\n');
299
+ }
300
+ /**
301
+ * Compute the sha256 `question_hash` of a diff result's normalized signature.
302
+ *
303
+ * The hash is over the {@link regressionSignature} (op coordinates + diff path
304
+ * set), so it is stable across runs of the SAME regression and feeds the
305
+ * idempotency partial-UNIQUE index (`ux_selfimprove_dhq_open`, T11889-A): one
306
+ * open DHQ row per `question_hash`. An empty regression set hashes the empty
307
+ * signature deterministically (callers should not persist on the happy path).
308
+ *
309
+ * @param result - The diff result whose regressions are hashed.
310
+ * @returns The lowercase hex sha256 of the regression signature.
311
+ *
312
+ * @example
313
+ * ```ts
314
+ * const hash = computeQuestionHash(diffEnvelopes(ops, replayed, golden));
315
+ * ```
316
+ */
317
+ export function computeQuestionHash(result) {
318
+ const signature = regressionSignature(result.regressions);
319
+ return createHash('sha256').update(signature, 'utf-8').digest('hex');
320
+ }
321
+ //# sourceMappingURL=envelope-diff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"envelope-diff.js","sourceRoot":"","sources":["../../src/selfimprove/envelope-diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Self-improvement scenario replay via an injected dispatch port (T11889-B).
3
+ *
4
+ * `replayScenario` replays a scenario's ordered ops through an injected
5
+ * {@link ReplayDispatch} port — it captures ONE LAFS envelope per op. CORE owns
6
+ * the PORT TYPE only; the real adapter (a thin closure over the cleo-resident
7
+ * `Dispatcher`) is supplied by `packages/cleo` at the call site (dependency
8
+ * inversion — `core` MUST NOT import the cleo dispatcher, and `dispatchFromCore`
9
+ * does not exist; see the P5 self-improvement spec §B.0.1).
10
+ *
11
+ * This module is PURE — no DB, no native handle, no `cleo` mutation. Tests inject
12
+ * a mocked `ReplayDispatch`. Import-time side-effect-free: the logger is resolved
13
+ * lazily on first use.
14
+ *
15
+ * Read-only guarantee: in the in-process fallback (no VM isolation) a `mutate` op
16
+ * could touch a live handle, so {@link replayScenario} HARD-REJECTS any
17
+ * `gateway:'mutate'` op when `allowMutate` is not explicitly set, throwing
18
+ * {@link MutateInFallbackError} (code `E_SELFIMPROVE_MUTATE_IN_FALLBACK`). The
19
+ * canned dogfood scenario is `query`-only, so the default replay never mutates.
20
+ *
21
+ * @module @cleocode/core/selfimprove/replay
22
+ * @epic T11889
23
+ * @task T11912
24
+ */
25
+ import type { DispatchResponse } from '@cleocode/contracts/gateway';
26
+ import type { Scenario, ScenarioOp } from './scenario.js';
27
+ /**
28
+ * The captured envelope shape per replayed op.
29
+ *
30
+ * This is the canonical {@link DispatchResponse} the cleo-side `Dispatcher`
31
+ * returns (a `meta` block + `success` + optional `data`/`error`/`page`/`partial`).
32
+ * The diff layer (see {@link "./envelope-diff.js"}) normalizes this by stripping
33
+ * the volatile `meta` fields before comparing against the golden.
34
+ */
35
+ export type ReplayEnvelope = DispatchResponse;
36
+ /**
37
+ * Narrow dispatch port the replay engine calls — CORE owns this TYPE, NOT the impl.
38
+ *
39
+ * The cleo dispatch handler supplies the concrete adapter by closing over its
40
+ * already-instantiated `Dispatcher` (`dispatcher.dispatch({ gateway, domain,
41
+ * operation, params, source, requestId })`, where `source` is a valid
42
+ * `GatewaySource` — e.g. `'rpc'`) and returning the resulting envelope. Injecting
43
+ * the port keeps the engine + diff + budget logic
44
+ * in `core` while the dispatcher binding lives in `cleo` (CORE-first, no
45
+ * package-boundary inversion).
46
+ */
47
+ /**
48
+ * The dispatch coordinate handed to a {@link ReplayDispatch} port for one op.
49
+ */
50
+ export interface ReplayDispatchOp {
51
+ /** CQRS gateway. */
52
+ gateway: ScenarioOp['gateway'];
53
+ /** Registered domain handler key (plural, e.g. `'tasks'`). */
54
+ domain: string;
55
+ /** Operation name within the domain. */
56
+ operation: string;
57
+ /** Optional operation parameters. */
58
+ params?: Record<string, unknown>;
59
+ }
60
+ /**
61
+ * Dispatch a single op and return its captured envelope.
62
+ *
63
+ * @param op - The dispatch coordinate (gateway, domain, operation, params).
64
+ * @returns The captured {@link ReplayEnvelope}.
65
+ */
66
+ export type ReplayDispatch = (op: ReplayDispatchOp) => Promise<ReplayEnvelope>;
67
+ /** Options controlling a replay run. */
68
+ export interface ReplayOptions {
69
+ /**
70
+ * When `true`, permit `gateway:'mutate'` ops (VM-isolated execution path).
71
+ *
72
+ * Defaults to `false`: in the in-process fallback there is no VM boundary, so a
73
+ * mutate op is HARD-REJECTED with {@link MutateInFallbackError}. The canned
74
+ * dogfood scenario is `query`-only and never sets this.
75
+ *
76
+ * @defaultValue false
77
+ */
78
+ allowMutate?: boolean;
79
+ }
80
+ /**
81
+ * Thrown when a `gateway:'mutate'` op is replayed without `allowMutate`.
82
+ *
83
+ * In the in-process fallback the replay runs in the host process, which DOES hold
84
+ * live-DB handles; a mutate op there could corrupt a live `tasks.db`/`brain.db`
85
+ * (the T5158 vector). The hard guard ensures no mutate path can fire without an
86
+ * explicit VM-isolation opt-in.
87
+ */
88
+ export declare class MutateInFallbackError extends Error {
89
+ /** Stable machine-readable error code. */
90
+ readonly code: "E_SELFIMPROVE_MUTATE_IN_FALLBACK";
91
+ /** The op coordinate (`domain.operation`) that was rejected. */
92
+ readonly opCoord: string;
93
+ /**
94
+ * @param op - The rejected mutate op.
95
+ */
96
+ constructor(op: ScenarioOp);
97
+ }
98
+ /**
99
+ * Replay a scenario's ordered ops through the injected dispatch port.
100
+ *
101
+ * Captures ONE envelope per op, in op order. Read-only by default: every
102
+ * `gateway:'mutate'` op is HARD-REJECTED with {@link MutateInFallbackError}
103
+ * unless `options.allowMutate` is set (the VM-isolation path).
104
+ *
105
+ * PURE — no DB, no mutation. The `dispatch` port is the only external dependency;
106
+ * tests inject a mock.
107
+ *
108
+ * @param scenario - The validated scenario whose ops are replayed.
109
+ * @param dispatch - The injected dispatch port (cleo supplies the real adapter).
110
+ * @param options - Replay options; see {@link ReplayOptions}.
111
+ * @returns The captured envelopes, one per op, in scenario order.
112
+ * @throws {@link MutateInFallbackError} On a `mutate` op without `allowMutate`.
113
+ *
114
+ * @example
115
+ * ```ts
116
+ * const envelopes = await replayScenario(scenario, dispatch);
117
+ * // envelopes.length === scenario.ops.length
118
+ * ```
119
+ */
120
+ export declare function replayScenario(scenario: Scenario, dispatch: ReplayDispatch, options?: ReplayOptions): Promise<ReplayEnvelope[]>;
121
+ //# sourceMappingURL=replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.d.ts","sourceRoot":"","sources":["../../src/selfimprove/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE9C;;;;;;;;;;GAUG;AACH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,oBAAoB;IACpB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC/B,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,EAAE,EAAE,gBAAgB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAE/E,wCAAwC;AACxC,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,0CAA0C;IAC1C,SAAgB,IAAI,EAAG,kCAAkC,CAAU;IAEnE,gEAAgE;IAChE,SAAgB,OAAO,EAAE,MAAM,CAAC;IAEhC;;OAEG;gBACS,EAAE,EAAE,UAAU;CAS3B;AAuBD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,cAAc,EAAE,CAAC,CAwB3B"}
@@ -0,0 +1,109 @@
1
+ /**
2
+ * Self-improvement scenario replay via an injected dispatch port (T11889-B).
3
+ *
4
+ * `replayScenario` replays a scenario's ordered ops through an injected
5
+ * {@link ReplayDispatch} port — it captures ONE LAFS envelope per op. CORE owns
6
+ * the PORT TYPE only; the real adapter (a thin closure over the cleo-resident
7
+ * `Dispatcher`) is supplied by `packages/cleo` at the call site (dependency
8
+ * inversion — `core` MUST NOT import the cleo dispatcher, and `dispatchFromCore`
9
+ * does not exist; see the P5 self-improvement spec §B.0.1).
10
+ *
11
+ * This module is PURE — no DB, no native handle, no `cleo` mutation. Tests inject
12
+ * a mocked `ReplayDispatch`. Import-time side-effect-free: the logger is resolved
13
+ * lazily on first use.
14
+ *
15
+ * Read-only guarantee: in the in-process fallback (no VM isolation) a `mutate` op
16
+ * could touch a live handle, so {@link replayScenario} HARD-REJECTS any
17
+ * `gateway:'mutate'` op when `allowMutate` is not explicitly set, throwing
18
+ * {@link MutateInFallbackError} (code `E_SELFIMPROVE_MUTATE_IN_FALLBACK`). The
19
+ * canned dogfood scenario is `query`-only, so the default replay never mutates.
20
+ *
21
+ * @module @cleocode/core/selfimprove/replay
22
+ * @epic T11889
23
+ * @task T11912
24
+ */
25
+ /**
26
+ * Thrown when a `gateway:'mutate'` op is replayed without `allowMutate`.
27
+ *
28
+ * In the in-process fallback the replay runs in the host process, which DOES hold
29
+ * live-DB handles; a mutate op there could corrupt a live `tasks.db`/`brain.db`
30
+ * (the T5158 vector). The hard guard ensures no mutate path can fire without an
31
+ * explicit VM-isolation opt-in.
32
+ */
33
+ export class MutateInFallbackError extends Error {
34
+ /** Stable machine-readable error code. */
35
+ code = 'E_SELFIMPROVE_MUTATE_IN_FALLBACK';
36
+ /** The op coordinate (`domain.operation`) that was rejected. */
37
+ opCoord;
38
+ /**
39
+ * @param op - The rejected mutate op.
40
+ */
41
+ constructor(op) {
42
+ const opCoord = `${op.domain}.${op.operation}`;
43
+ super(`Refusing to replay mutate op '${opCoord}' without VM isolation ` +
44
+ '(set allowMutate only when running in a sandbox VM)');
45
+ this.name = 'MutateInFallbackError';
46
+ this.opCoord = opCoord;
47
+ }
48
+ }
49
+ /**
50
+ * Lazily-resolved module logger.
51
+ *
52
+ * Resolved on first use rather than at import time so importing this module never
53
+ * triggers logger initialization. The cached instance is reused across calls.
54
+ */
55
+ let cachedLogger;
56
+ /**
57
+ * Resolve the module logger, initializing it lazily on first call.
58
+ *
59
+ * @returns The `selfimprove-replay` subsystem logger.
60
+ */
61
+ async function getModuleLogger() {
62
+ if (cachedLogger === undefined) {
63
+ const { getLogger } = await import('../logger.js');
64
+ cachedLogger = getLogger('selfimprove-replay');
65
+ }
66
+ return cachedLogger;
67
+ }
68
+ /**
69
+ * Replay a scenario's ordered ops through the injected dispatch port.
70
+ *
71
+ * Captures ONE envelope per op, in op order. Read-only by default: every
72
+ * `gateway:'mutate'` op is HARD-REJECTED with {@link MutateInFallbackError}
73
+ * unless `options.allowMutate` is set (the VM-isolation path).
74
+ *
75
+ * PURE — no DB, no mutation. The `dispatch` port is the only external dependency;
76
+ * tests inject a mock.
77
+ *
78
+ * @param scenario - The validated scenario whose ops are replayed.
79
+ * @param dispatch - The injected dispatch port (cleo supplies the real adapter).
80
+ * @param options - Replay options; see {@link ReplayOptions}.
81
+ * @returns The captured envelopes, one per op, in scenario order.
82
+ * @throws {@link MutateInFallbackError} On a `mutate` op without `allowMutate`.
83
+ *
84
+ * @example
85
+ * ```ts
86
+ * const envelopes = await replayScenario(scenario, dispatch);
87
+ * // envelopes.length === scenario.ops.length
88
+ * ```
89
+ */
90
+ export async function replayScenario(scenario, dispatch, options = {}) {
91
+ const allowMutate = options.allowMutate ?? false;
92
+ const logger = await getModuleLogger();
93
+ const captured = [];
94
+ for (const op of scenario.ops) {
95
+ if (op.gateway === 'mutate' && !allowMutate) {
96
+ throw new MutateInFallbackError(op);
97
+ }
98
+ const envelope = await dispatch({
99
+ gateway: op.gateway,
100
+ domain: op.domain,
101
+ operation: op.operation,
102
+ ...(op.params !== undefined ? { params: op.params } : {}),
103
+ });
104
+ captured.push(envelope);
105
+ }
106
+ logger.debug({ scenario: scenario.name, captured: captured.length }, 'replayed self-improvement scenario');
107
+ return captured;
108
+ }
109
+ //# sourceMappingURL=replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replay.js","sourceRoot":"","sources":["../../src/selfimprove/replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AA+DH;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,0CAA0C;IAC1B,IAAI,GAAG,kCAA2C,CAAC;IAEnE,gEAAgE;IAChD,OAAO,CAAS;IAEhC;;OAEG;IACH,YAAY,EAAc;QACxB,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;QAC/C,KAAK,CACH,iCAAiC,OAAO,yBAAyB;YAC/D,qDAAqD,CACxD,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;CACF;AAED;;;;;GAKG;AACH,IAAI,YAAgC,CAAC;AAErC;;;;GAIG;AACH,KAAK,UAAU,eAAe;IAC5B,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;QACnD,YAAY,GAAG,SAAS,CAAC,oBAAoB,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAkB,EAClB,QAAwB,EACxB,UAAyB,EAAE;IAE3B,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IAEvC,MAAM,QAAQ,GAAqB,EAAE,CAAC;IACtC,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;YAC5C,MAAM,IAAI,qBAAqB,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC;YAC9B,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,GAAG,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC,CAAC;QACH,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,EAAE,EACtD,oCAAoC,CACrC,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}