@sixb/core 0.1.2 → 0.1.4

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 (383) hide show
  1. package/dist/actions/index.js +19 -17
  2. package/dist/actions/index.js.map +1 -1
  3. package/dist/actions/worker.js +4 -4
  4. package/dist/actions/worker.js.map +1 -1
  5. package/dist/agents/adapters.d.ts +11 -1
  6. package/dist/agents/adapters.d.ts.map +1 -1
  7. package/dist/agents/context-compaction.d.ts +40 -0
  8. package/dist/agents/context-compaction.d.ts.map +1 -0
  9. package/dist/agents/context.js +1 -1
  10. package/dist/agents/errors.d.ts +1 -1
  11. package/dist/agents/errors.d.ts.map +1 -1
  12. package/dist/agents/execution.d.ts +3 -0
  13. package/dist/agents/execution.d.ts.map +1 -1
  14. package/dist/agents/ids.d.ts +2 -0
  15. package/dist/agents/ids.d.ts.map +1 -1
  16. package/dist/agents/index.d.ts +10 -6
  17. package/dist/agents/index.d.ts.map +1 -1
  18. package/dist/agents/index.js +51 -35
  19. package/dist/agents/index.js.map +1 -1
  20. package/dist/agents/request.d.ts.map +1 -1
  21. package/dist/agents/streams.d.ts +17 -1
  22. package/dist/agents/streams.d.ts.map +1 -1
  23. package/dist/agents/streams.js +5 -3
  24. package/dist/agents/streams.js.map +1 -1
  25. package/dist/agents/thread-context-projection.d.ts +19 -0
  26. package/dist/agents/thread-context-projection.d.ts.map +1 -0
  27. package/dist/agents/tool-definition.d.ts.map +1 -1
  28. package/dist/agents/tool-result.d.ts +6 -0
  29. package/dist/agents/tool-result.d.ts.map +1 -0
  30. package/dist/agents/types.d.ts +46 -1
  31. package/dist/agents/types.d.ts.map +1 -1
  32. package/dist/agents/validation.d.ts +2 -2
  33. package/dist/agents/validation.d.ts.map +1 -1
  34. package/dist/auth/index.js +11 -5
  35. package/dist/auth/index.js.map +1 -1
  36. package/dist/authorization/index.js +6 -2
  37. package/dist/authorization/index.js.map +1 -1
  38. package/dist/bootstrap/index.js +33 -31
  39. package/dist/bootstrap/index.js.map +1 -1
  40. package/dist/{chunk-ys1nse2v.js → chunk-1wk20wn3.js} +438 -246
  41. package/dist/{chunk-ys1nse2v.js.map → chunk-1wk20wn3.js.map} +11 -11
  42. package/dist/{chunk-sa4340y1.js → chunk-1yz3x65y.js} +7 -7
  43. package/dist/{chunk-gqdd7508.js → chunk-4rh2m6zg.js} +1 -1
  44. package/dist/{chunk-fmx1sz2h.js → chunk-72q2y8hn.js} +3 -3
  45. package/dist/{chunk-fmx1sz2h.js.map → chunk-72q2y8hn.js.map} +4 -4
  46. package/dist/{chunk-nnyp53zt.js → chunk-7gw7mepb.js} +259 -9
  47. package/dist/chunk-7gw7mepb.js.map +14 -0
  48. package/dist/{chunk-nten49ta.js → chunk-819wnjz8.js} +11 -5
  49. package/dist/chunk-819wnjz8.js.map +12 -0
  50. package/dist/chunk-96swp2wd.js +47 -0
  51. package/dist/chunk-96swp2wd.js.map +10 -0
  52. package/dist/{chunk-4x43bkbp.js → chunk-a09jx26t.js} +1 -1
  53. package/dist/{chunk-st4xgxey.js → chunk-afjpa2hs.js} +205 -48
  54. package/dist/chunk-afjpa2hs.js.map +45 -0
  55. package/dist/{chunk-0mbx247x.js → chunk-c43qr6s0.js} +427 -99
  56. package/dist/chunk-c43qr6s0.js.map +46 -0
  57. package/dist/{chunk-zg9yryhz.js → chunk-cbkm2vam.js} +3 -3
  58. package/dist/{chunk-57zpb99z.js → chunk-dm72y8wt.js} +26 -3
  59. package/dist/chunk-dm72y8wt.js.map +10 -0
  60. package/dist/chunk-drjqm1aa.js +913 -0
  61. package/dist/chunk-drjqm1aa.js.map +15 -0
  62. package/dist/chunk-dysw7nsm.js.map +1 -1
  63. package/dist/{chunk-8ryen3p3.js → chunk-f6erf2vv.js} +1 -1
  64. package/dist/{chunk-34bqh420.js → chunk-f83ka50g.js} +188 -44
  65. package/dist/chunk-f83ka50g.js.map +23 -0
  66. package/dist/{chunk-bct7hmfc.js → chunk-g13869yf.js} +3 -3
  67. package/dist/{chunk-0k4avqr2.js → chunk-hbeh8j9w.js} +2 -2
  68. package/dist/{chunk-qvybnnpe.js → chunk-nzw7sm3b.js} +2 -2
  69. package/dist/{chunk-k9pts48t.js → chunk-pn8n8sba.js} +16 -15
  70. package/dist/{chunk-k9pts48t.js.map → chunk-pn8n8sba.js.map} +3 -3
  71. package/dist/{chunk-63te770v.js → chunk-qewtks41.js} +8 -8
  72. package/dist/{chunk-63te770v.js.map → chunk-qewtks41.js.map} +2 -2
  73. package/dist/{chunk-85j5ybfj.js → chunk-rdeagz6b.js} +2 -2
  74. package/dist/{chunk-85j5ybfj.js.map → chunk-rdeagz6b.js.map} +3 -3
  75. package/dist/chunk-rhrbz7d4.js +36 -0
  76. package/dist/chunk-rhrbz7d4.js.map +10 -0
  77. package/dist/{chunk-bh6k3nc6.js → chunk-rs1wbvy6.js} +1 -1
  78. package/dist/{chunk-88ppkr54.js → chunk-rte5sm3z.js} +26 -2
  79. package/dist/chunk-rte5sm3z.js.map +12 -0
  80. package/dist/{chunk-n8herkry.js → chunk-s31d0qmq.js} +57 -20
  81. package/dist/{chunk-n8herkry.js.map → chunk-s31d0qmq.js.map} +8 -7
  82. package/dist/{chunk-7pc8b818.js → chunk-sxwk41qa.js} +1 -1
  83. package/dist/{chunk-663csy96.js → chunk-t0jjkep3.js} +2 -1
  84. package/dist/chunk-t0jjkep3.js.map +10 -0
  85. package/dist/{chunk-c6qd89g5.js → chunk-tek1qwgm.js} +6 -6
  86. package/dist/{chunk-c6qd89g5.js.map → chunk-tek1qwgm.js.map} +1 -1
  87. package/dist/{chunk-jaj13078.js → chunk-tkdscva6.js} +3 -33
  88. package/dist/{chunk-jaj13078.js.map → chunk-tkdscva6.js.map} +3 -4
  89. package/dist/{chunk-5egfka8j.js → chunk-tycbzedm.js} +2 -2
  90. package/dist/{chunk-g9t3kdtx.js → chunk-x2yw73hy.js} +1 -1
  91. package/dist/{chunk-57r1cpxx.js → chunk-xc7hq65b.js} +3 -2
  92. package/dist/{chunk-57r1cpxx.js.map → chunk-xc7hq65b.js.map} +3 -3
  93. package/dist/chunk-xdf9yswn.js +133 -0
  94. package/dist/chunk-xdf9yswn.js.map +11 -0
  95. package/dist/execution/agent.js +29 -27
  96. package/dist/execution/agent.js.map +1 -1
  97. package/dist/execution/primitive.js +29 -27
  98. package/dist/execution/primitive.js.map +2 -2
  99. package/dist/execution/request.js +30 -28
  100. package/dist/execution/request.js.map +2 -2
  101. package/dist/http/index.js +1 -1
  102. package/dist/index.d.ts +6 -5
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +60 -58
  105. package/dist/index.js.map +1 -1
  106. package/dist/lake-storage/types.d.ts +2 -1
  107. package/dist/lake-storage/types.d.ts.map +1 -1
  108. package/dist/materialization/model.d.ts +4 -0
  109. package/dist/materialization/model.d.ts.map +1 -1
  110. package/dist/materializer/edits/apply.d.ts +6 -1
  111. package/dist/materializer/edits/apply.d.ts.map +1 -1
  112. package/dist/materializer/edits/working-state.d.ts +2 -0
  113. package/dist/materializer/edits/working-state.d.ts.map +1 -1
  114. package/dist/materializer/effective/resolve.d.ts +3 -1
  115. package/dist/materializer/effective/resolve.d.ts.map +1 -1
  116. package/dist/materializer/execution/work-records.d.ts.map +1 -1
  117. package/dist/materializer/index.js +19 -17
  118. package/dist/materializer/index.js.map +1 -1
  119. package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
  120. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  121. package/dist/models/index.d.ts +40 -0
  122. package/dist/models/index.d.ts.map +1 -0
  123. package/dist/objects/execution.d.ts +6 -1
  124. package/dist/objects/execution.d.ts.map +1 -1
  125. package/dist/objects/index.js +21 -19
  126. package/dist/objects/index.js.map +1 -1
  127. package/dist/objects/link/endpoints.d.ts.map +1 -1
  128. package/dist/objects/query/executor.d.ts +1 -0
  129. package/dist/objects/query/executor.d.ts.map +1 -1
  130. package/dist/objects/query/explain.d.ts +1 -0
  131. package/dist/objects/query/explain.d.ts.map +1 -1
  132. package/dist/objects/query/index.d.ts +3 -1
  133. package/dist/objects/query/index.d.ts.map +1 -1
  134. package/dist/objects/query/index.js +30 -5
  135. package/dist/objects/query/index.js.map +1 -1
  136. package/dist/objects/query/ir.d.ts +14 -1
  137. package/dist/objects/query/ir.d.ts.map +1 -1
  138. package/dist/objects/query/links.d.ts +25 -0
  139. package/dist/objects/query/links.d.ts.map +1 -0
  140. package/dist/objects/query/normalize.d.ts.map +1 -1
  141. package/dist/objects/query/planner.d.ts.map +1 -1
  142. package/dist/objects/query/validate.d.ts +1 -0
  143. package/dist/objects/query/validate.d.ts.map +1 -1
  144. package/dist/pipelines/index.js +16 -15
  145. package/dist/pipelines/index.js.map +1 -1
  146. package/dist/projections/builders.d.ts +52 -10
  147. package/dist/projections/builders.d.ts.map +1 -1
  148. package/dist/projections/index.d.ts +2 -1
  149. package/dist/projections/index.d.ts.map +1 -1
  150. package/dist/projections/internal.d.ts +4 -1
  151. package/dist/projections/internal.d.ts.map +1 -1
  152. package/dist/projections/internal.js +22 -17
  153. package/dist/projections/internal.js.map +1 -1
  154. package/dist/projections/run-dispatch.d.ts +1 -0
  155. package/dist/projections/run-dispatch.d.ts.map +1 -1
  156. package/dist/projections/timestamp.d.ts +3 -0
  157. package/dist/projections/timestamp.d.ts.map +1 -0
  158. package/dist/projections/types.d.ts +21 -9
  159. package/dist/projections/types.d.ts.map +1 -1
  160. package/dist/projections/validation.d.ts +6 -5
  161. package/dist/projections/validation.d.ts.map +1 -1
  162. package/dist/query.d.ts +2 -1
  163. package/dist/query.d.ts.map +1 -1
  164. package/dist/query.js +2 -2
  165. package/dist/queues/index.d.ts +1 -1
  166. package/dist/queues/index.d.ts.map +1 -1
  167. package/dist/queues/types.d.ts +7 -0
  168. package/dist/queues/types.d.ts.map +1 -1
  169. package/dist/runtime/ai-cost.d.ts +8 -0
  170. package/dist/runtime/ai-cost.d.ts.map +1 -0
  171. package/dist/runtime/create.d.ts +3 -0
  172. package/dist/runtime/create.d.ts.map +1 -1
  173. package/dist/runtime/definitions.d.ts +3 -0
  174. package/dist/runtime/definitions.d.ts.map +1 -1
  175. package/dist/runtime/host.d.ts +2 -0
  176. package/dist/runtime/host.d.ts.map +1 -1
  177. package/dist/runtime/resolve-definitions.d.ts +2 -0
  178. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  179. package/dist/storage/agents/in-memory.d.ts +22 -4
  180. package/dist/storage/agents/in-memory.d.ts.map +1 -1
  181. package/dist/storage/agents/index.d.ts +1 -1
  182. package/dist/storage/agents/index.d.ts.map +1 -1
  183. package/dist/storage/agents/provider.d.ts +31 -0
  184. package/dist/storage/agents/provider.d.ts.map +1 -1
  185. package/dist/storage/agents/provider.js +22 -7
  186. package/dist/storage/agents/provider.js.map +1 -1
  187. package/dist/storage/agents/types.d.ts +75 -4
  188. package/dist/storage/agents/types.d.ts.map +1 -1
  189. package/dist/storage/ai-cost/analytics.d.ts +61 -0
  190. package/dist/storage/ai-cost/analytics.d.ts.map +1 -0
  191. package/dist/storage/ai-cost/codec.d.ts +14 -0
  192. package/dist/storage/ai-cost/codec.d.ts.map +1 -0
  193. package/dist/storage/ai-cost/errors.d.ts +7 -0
  194. package/dist/storage/ai-cost/errors.d.ts.map +1 -0
  195. package/dist/storage/ai-cost/in-memory.d.ts +32 -0
  196. package/dist/storage/ai-cost/in-memory.d.ts.map +1 -0
  197. package/dist/storage/ai-cost/index.d.ts +6 -0
  198. package/dist/storage/ai-cost/index.d.ts.map +1 -0
  199. package/dist/storage/ai-cost/provider.d.ts +7 -0
  200. package/dist/storage/ai-cost/provider.d.ts.map +1 -0
  201. package/dist/storage/ai-cost/provider.js +132 -0
  202. package/dist/storage/ai-cost/provider.js.map +10 -0
  203. package/dist/storage/ai-cost/types.d.ts +154 -0
  204. package/dist/storage/ai-cost/types.d.ts.map +1 -0
  205. package/dist/storage/ai-cost/validation.d.ts +7 -0
  206. package/dist/storage/ai-cost/validation.d.ts.map +1 -0
  207. package/dist/storage/ai-usage/in-memory.d.ts +2 -1
  208. package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
  209. package/dist/storage/ai-usage/index.d.ts +1 -1
  210. package/dist/storage/ai-usage/index.d.ts.map +1 -1
  211. package/dist/storage/ai-usage/types.d.ts +6 -0
  212. package/dist/storage/ai-usage/types.d.ts.map +1 -1
  213. package/dist/storage/in-memory/index.d.ts +5 -0
  214. package/dist/storage/in-memory/index.d.ts.map +1 -1
  215. package/dist/storage/index.d.ts +6 -3
  216. package/dist/storage/index.d.ts.map +1 -1
  217. package/dist/storage/index.js +33 -21
  218. package/dist/storage/index.js.map +1 -1
  219. package/dist/storage/objects/in-memory.d.ts +6 -3
  220. package/dist/storage/objects/in-memory.d.ts.map +1 -1
  221. package/dist/storage/objects/index.d.ts +3 -1
  222. package/dist/storage/objects/index.d.ts.map +1 -1
  223. package/dist/storage/objects/keys.d.ts +16 -0
  224. package/dist/storage/objects/keys.d.ts.map +1 -0
  225. package/dist/storage/objects/types.d.ts +33 -6
  226. package/dist/storage/objects/types.d.ts.map +1 -1
  227. package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
  228. package/dist/storage/ontology/materializations.d.ts +3 -0
  229. package/dist/storage/ontology/materializations.d.ts.map +1 -1
  230. package/dist/storage/ontology/provider.js +1 -1
  231. package/dist/storage/operation-scope.d.ts.map +1 -1
  232. package/dist/storage/operation-scope.js +1 -1
  233. package/dist/storage/types.d.ts +2 -0
  234. package/dist/storage/types.d.ts.map +1 -1
  235. package/dist/storage/workflow-runs/provider.js +10 -5
  236. package/dist/storage/workflow-runs/provider.js.map +1 -1
  237. package/dist/syncs/index.js +16 -15
  238. package/dist/syncs/index.js.map +1 -1
  239. package/dist/testing/agent-storage-contract.d.ts +3 -2
  240. package/dist/testing/agent-storage-contract.d.ts.map +1 -1
  241. package/dist/testing/ai-cost-storage-contract.d.ts +12 -0
  242. package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -0
  243. package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
  244. package/dist/testing/effective-storage-contract.d.ts +1 -1
  245. package/dist/testing/effective-storage-contract.d.ts.map +1 -1
  246. package/dist/testing/index.d.ts +1 -0
  247. package/dist/testing/index.d.ts.map +1 -1
  248. package/dist/testing/index.js +2525 -1480
  249. package/dist/testing/index.js.map +10 -9
  250. package/dist/testing/lake-storage-contract.d.ts.map +1 -1
  251. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  252. package/dist/testing/object-query-contract.d.ts +1 -1
  253. package/dist/testing/object-query-contract.d.ts.map +1 -1
  254. package/dist/webhooks/internal.js +14 -13
  255. package/dist/webhooks/internal.js.map +2 -2
  256. package/dist/workers/index.js +12 -2
  257. package/dist/workers/index.js.map +3 -3
  258. package/dist/workers/queue-worker.d.ts +2 -0
  259. package/dist/workers/queue-worker.d.ts.map +1 -1
  260. package/dist/workflows/execution.d.ts +3 -0
  261. package/dist/workflows/execution.d.ts.map +1 -1
  262. package/dist/workflows/index.js +30 -28
  263. package/dist/workflows/index.js.map +1 -1
  264. package/package.json +7 -1
  265. package/src/agents/adapters.ts +64 -23
  266. package/src/agents/builders.ts +3 -3
  267. package/src/agents/context-compaction.ts +261 -0
  268. package/src/agents/errors.ts +2 -2
  269. package/src/agents/execution.ts +14 -2
  270. package/src/agents/ids.ts +5 -0
  271. package/src/agents/index.ts +32 -6
  272. package/src/agents/request.ts +5 -0
  273. package/src/agents/streams.ts +56 -0
  274. package/src/agents/thread-context-projection.ts +93 -0
  275. package/src/agents/tool-definition.ts +17 -2
  276. package/src/agents/tool-result.ts +61 -0
  277. package/src/agents/types.ts +57 -1
  278. package/src/agents/validation.ts +36 -6
  279. package/src/http/api-routes.ts +7 -7
  280. package/src/index.ts +27 -0
  281. package/src/lake-storage/types.ts +2 -1
  282. package/src/materialization/model.ts +4 -0
  283. package/src/materializer/edits/apply.ts +55 -2
  284. package/src/materializer/edits/operations.ts +8 -1
  285. package/src/materializer/edits/working-state.ts +7 -0
  286. package/src/materializer/effective/resolve.ts +78 -9
  287. package/src/materializer/execution/work-records.ts +3 -1
  288. package/src/materializer/projections/entry-validator.ts +23 -1
  289. package/src/materializer/projections/replacement-plan.ts +2 -0
  290. package/src/materializer/shared/normalize.ts +16 -0
  291. package/src/materializer/telemetry/append.ts +33 -16
  292. package/src/models/index.ts +71 -0
  293. package/src/objects/execution.ts +20 -0
  294. package/src/objects/link/endpoints.ts +2 -1
  295. package/src/objects/query/executor.ts +42 -11
  296. package/src/objects/query/explain.ts +11 -0
  297. package/src/objects/query/index.ts +6 -0
  298. package/src/objects/query/ir.ts +16 -0
  299. package/src/objects/query/links.ts +308 -0
  300. package/src/objects/query/normalize.ts +40 -1
  301. package/src/objects/query/planner.ts +5 -0
  302. package/src/objects/query/validate.ts +58 -2
  303. package/src/projections/builders.ts +320 -50
  304. package/src/projections/index.ts +7 -0
  305. package/src/projections/internal.ts +4 -1
  306. package/src/projections/ownership.ts +5 -5
  307. package/src/projections/registry.ts +16 -3
  308. package/src/projections/revision.ts +35 -5
  309. package/src/projections/run-dispatch.ts +10 -1
  310. package/src/projections/timestamp.ts +66 -0
  311. package/src/projections/types.ts +20 -9
  312. package/src/projections/validation.ts +85 -19
  313. package/src/query.ts +2 -0
  314. package/src/queues/index.ts +1 -0
  315. package/src/queues/types.ts +8 -0
  316. package/src/runtime/ai-cost.ts +15 -0
  317. package/src/runtime/create.ts +4 -0
  318. package/src/runtime/definitions.ts +3 -0
  319. package/src/runtime/host.ts +2 -0
  320. package/src/runtime/resolve-definitions.ts +28 -0
  321. package/src/storage/agents/in-memory.ts +186 -4
  322. package/src/storage/agents/index.ts +5 -0
  323. package/src/storage/agents/provider.ts +225 -0
  324. package/src/storage/agents/types.ts +82 -3
  325. package/src/storage/ai-cost/analytics.ts +602 -0
  326. package/src/storage/ai-cost/codec.ts +136 -0
  327. package/src/storage/ai-cost/errors.ts +12 -0
  328. package/src/storage/ai-cost/in-memory.ts +164 -0
  329. package/src/storage/ai-cost/index.ts +35 -0
  330. package/src/storage/ai-cost/provider.ts +20 -0
  331. package/src/storage/ai-cost/types.ts +193 -0
  332. package/src/storage/ai-cost/validation.ts +337 -0
  333. package/src/storage/ai-usage/in-memory.ts +23 -0
  334. package/src/storage/ai-usage/index.ts +1 -0
  335. package/src/storage/ai-usage/types.ts +10 -0
  336. package/src/storage/in-memory/index.ts +50 -0
  337. package/src/storage/index.ts +48 -0
  338. package/src/storage/objects/in-memory.ts +103 -16
  339. package/src/storage/objects/index.ts +9 -0
  340. package/src/storage/objects/keys.ts +36 -0
  341. package/src/storage/objects/types.ts +34 -6
  342. package/src/storage/ontology/in-memory/materializations.ts +1 -0
  343. package/src/storage/ontology/materializations.ts +3 -0
  344. package/src/storage/ontology/provider-header-validation.ts +2 -2
  345. package/src/storage/operation-scope.ts +1 -0
  346. package/src/storage/types.ts +2 -0
  347. package/src/testing/agent-storage-contract.ts +353 -2
  348. package/src/testing/ai-cost-storage-contract.ts +320 -0
  349. package/src/testing/ai-usage-storage-contract.ts +35 -0
  350. package/src/testing/effective-storage-contract.ts +194 -4
  351. package/src/testing/index.ts +5 -0
  352. package/src/testing/lake-storage-contract.ts +56 -0
  353. package/src/testing/materializer-storage-contract.ts +120 -2
  354. package/src/testing/object-query-contract.ts +208 -1
  355. package/src/workers/queue-worker.ts +14 -1
  356. package/src/workflows/execution.ts +31 -10
  357. package/dist/agents/prompt.d.ts +0 -15
  358. package/dist/agents/prompt.d.ts.map +0 -1
  359. package/dist/chunk-0mbx247x.js.map +0 -43
  360. package/dist/chunk-34bqh420.js.map +0 -23
  361. package/dist/chunk-57zpb99z.js.map +0 -10
  362. package/dist/chunk-663csy96.js.map +0 -10
  363. package/dist/chunk-6wetht33.js +0 -89
  364. package/dist/chunk-6wetht33.js.map +0 -10
  365. package/dist/chunk-88ppkr54.js.map +0 -12
  366. package/dist/chunk-nnyp53zt.js.map +0 -13
  367. package/dist/chunk-nten49ta.js.map +0 -12
  368. package/dist/chunk-st4xgxey.js.map +0 -45
  369. package/dist/chunk-vp1vc6ee.js +0 -35
  370. package/dist/chunk-vp1vc6ee.js.map +0 -11
  371. package/src/agents/prompt.ts +0 -57
  372. /package/dist/{chunk-sa4340y1.js.map → chunk-1yz3x65y.js.map} +0 -0
  373. /package/dist/{chunk-gqdd7508.js.map → chunk-4rh2m6zg.js.map} +0 -0
  374. /package/dist/{chunk-4x43bkbp.js.map → chunk-a09jx26t.js.map} +0 -0
  375. /package/dist/{chunk-zg9yryhz.js.map → chunk-cbkm2vam.js.map} +0 -0
  376. /package/dist/{chunk-8ryen3p3.js.map → chunk-f6erf2vv.js.map} +0 -0
  377. /package/dist/{chunk-bct7hmfc.js.map → chunk-g13869yf.js.map} +0 -0
  378. /package/dist/{chunk-0k4avqr2.js.map → chunk-hbeh8j9w.js.map} +0 -0
  379. /package/dist/{chunk-qvybnnpe.js.map → chunk-nzw7sm3b.js.map} +0 -0
  380. /package/dist/{chunk-bh6k3nc6.js.map → chunk-rs1wbvy6.js.map} +0 -0
  381. /package/dist/{chunk-7pc8b818.js.map → chunk-sxwk41qa.js.map} +0 -0
  382. /package/dist/{chunk-5egfka8j.js.map → chunk-tycbzedm.js.map} +0 -0
  383. /package/dist/{chunk-g9t3kdtx.js.map → chunk-x2yw73hy.js.map} +0 -0
@@ -8,15 +8,17 @@ import {
8
8
  type AgentStorage,
9
9
  AgentStorageError,
10
10
  type AgentStorageErrorCode,
11
+ type CreateAgentContextCheckpointInput,
11
12
  type CreateAgentRunInput,
12
13
  type CreateAgentThreadInput,
13
14
  type StartAgentRunInput,
14
15
  } from "../storage/agents"
15
16
  import type { AuthStorage } from "../storage/auth"
16
17
  import type { ExecutionStorage } from "../storage/executions"
18
+ import type { Storage } from "../storage/types"
17
19
  import { createTestAgentExecution } from "./agent-execution"
18
20
 
19
- export interface AgentStorageContractStorage {
21
+ export interface AgentStorageContractStorage extends Pick<Storage, "transaction"> {
20
22
  readonly agents: AgentStorage
21
23
  readonly auth: AuthStorage
22
24
  readonly executions: ExecutionStorage
@@ -102,6 +104,30 @@ function runInput(overrides: Partial<TestRunInput> = {}): TestRunInput {
102
104
  }
103
105
  }
104
106
 
107
+ function checkpointInput(
108
+ overrides: Partial<CreateAgentContextCheckpointInput> = {}
109
+ ): CreateAgentContextCheckpointInput {
110
+ return {
111
+ id: "checkpoint_1",
112
+ projectId,
113
+ threadId: "thr_1",
114
+ createdByRunId: "run_2",
115
+ expectedPreviousCheckpointId: null,
116
+ expectedHeadSeq: 3,
117
+ executionToken: "exec_2",
118
+ reason: "threshold",
119
+ summary: "The user asked for one and the agent answered two.",
120
+ summaryFormatVersion: 1,
121
+ summarizedThroughSeq: 2,
122
+ observedHeadSeq: 3,
123
+ estimatedInputTokensBefore: 1_000,
124
+ estimatedInputTokensAfter: 300,
125
+ summaryModelId: "test-model",
126
+ createdAt: at("2026-06-23T10:03:00.000Z"),
127
+ ...overrides,
128
+ }
129
+ }
130
+
105
131
  async function createAndStartRun(
106
132
  storage: AgentStorage,
107
133
  fixture: AgentStorageContractStorage,
@@ -131,12 +157,55 @@ async function createRun(
131
157
  return storage.runs.create(input)
132
158
  }
133
159
 
160
+ async function prepareCheckpointCandidate(
161
+ storage: AgentStorage,
162
+ fixture: AgentStorageContractStorage
163
+ ): Promise<void> {
164
+ await storage.threads.create(threadInput())
165
+ await storage.messages.append({
166
+ id: "m1",
167
+ projectId,
168
+ threadId: "thr_1",
169
+ runId: null,
170
+ role: "user",
171
+ parts: [{ type: "text", text: "one" }],
172
+ })
173
+ await createAndStartRun(storage, fixture, runInput({ id: "run_1" }))
174
+ await storage.messages.append({
175
+ id: "m2",
176
+ projectId,
177
+ threadId: "thr_1",
178
+ runId: "run_1",
179
+ role: "assistant",
180
+ parts: [{ type: "text", text: "two" }],
181
+ })
182
+ await storage.runs.finish({
183
+ id: "run_1",
184
+ projectId,
185
+ executionToken: "exec_1",
186
+ status: "succeeded",
187
+ })
188
+ await storage.messages.append({
189
+ id: "m3",
190
+ projectId,
191
+ threadId: "thr_1",
192
+ runId: null,
193
+ role: "user",
194
+ parts: [{ type: "text", text: "three" }],
195
+ })
196
+ await createAndStartRun(
197
+ storage,
198
+ fixture,
199
+ runInput({ id: "run_2", triggerMessageId: "m3", execution: execution("exec_2") })
200
+ )
201
+ }
202
+
134
203
  /**
135
204
  * Runs the shared `AgentStorage` contract against any storage implementation.
136
205
  *
137
206
  * This is the storage-independent specification for Sixb agent persistence: thread lifecycle and
138
207
  * project isolation, single-flight run reservation, execution reclaim, run finalization with
139
- * execution metadata, and message append with thread-stats bookkeeping.
208
+ * execution metadata, message append with thread-stats bookkeeping, and fenced context checkpoints.
140
209
  */
141
210
  export function runAgentStorageContractSuite<TStorage extends AgentStorageContractStorage>(
142
211
  label: string,
@@ -810,6 +879,62 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
810
879
  })
811
880
  })
812
881
 
882
+ test("deletes messages produced by a run and repairs thread stats", async () => {
883
+ await withStorage(async (storage, fixture) => {
884
+ await storage.threads.create(threadInput())
885
+ await storage.messages.append({
886
+ id: "msg_user_1",
887
+ projectId,
888
+ threadId: "thr_1",
889
+ runId: null,
890
+ role: "user",
891
+ parts: [{ type: "text", text: "Try this" }],
892
+ createdAt: at("2026-06-23T10:00:30.000Z"),
893
+ })
894
+ await createAndStartRun(storage, fixture, runInput({ id: "run_1" }))
895
+ await storage.messages.append({
896
+ id: "msg_asst_1",
897
+ projectId,
898
+ threadId: "thr_1",
899
+ runId: "run_1",
900
+ role: "assistant",
901
+ parts: [
902
+ { type: "text", text: "Partial answer" },
903
+ {
904
+ type: "tool-call",
905
+ toolCallId: "call_1",
906
+ toolName: "search",
907
+ input: { query: "sixb" },
908
+ state: "output-available",
909
+ output: { matches: 1 },
910
+ },
911
+ ],
912
+ createdAt: at("2026-06-23T10:01:00.000Z"),
913
+ })
914
+
915
+ await expect(
916
+ storage.messages.deleteByRunId({ projectId, threadId: "thr_1", runId: "run_1" })
917
+ ).resolves.toBe(1)
918
+ await expect(storage.messages.getById({ projectId, id: "msg_asst_1" })).resolves.toBeNull()
919
+
920
+ const messages = await storage.messages.list({ projectId, threadId: "thr_1" })
921
+ expect(messages.messages.map((message) => message.id)).toEqual(["msg_user_1"])
922
+ expect(messages.total).toBe(1)
923
+ await expect(storage.threads.getById({ projectId, id: "thr_1" })).resolves.toMatchObject({
924
+ messageCount: 1,
925
+ lastMessageAt: at("2026-06-23T10:00:30.000Z"),
926
+ })
927
+
928
+ await expect(
929
+ storage.messages.deleteByRunId({ projectId, threadId: "thr_1", runId: "run_1" })
930
+ ).resolves.toBe(0)
931
+ await expect(storage.threads.getById({ projectId, id: "thr_1" })).resolves.toMatchObject({
932
+ messageCount: 1,
933
+ lastMessageAt: at("2026-06-23T10:00:30.000Z"),
934
+ })
935
+ })
936
+ })
937
+
813
938
  test("lists messages with role filter, ordering, and pagination", async () => {
814
939
  await withStorage(async (storage, fixture) => {
815
940
  await storage.threads.create(threadInput())
@@ -857,6 +982,15 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
857
982
  })
858
983
  expect(users.messages.map((message) => message.id)).toEqual(["m1", "m3"])
859
984
 
985
+ const retainedTail = await storage.messages.list({
986
+ projectId,
987
+ threadId: "thr_1",
988
+ afterSeq: 1,
989
+ order: "asc",
990
+ })
991
+ expect(retainedTail.messages.map((message) => message.id)).toEqual(["m2", "m3"])
992
+ expect(retainedTail.total).toBe(2)
993
+
860
994
  const firstPage = await storage.messages.list({
861
995
  projectId,
862
996
  threadId: "thr_1",
@@ -915,5 +1049,222 @@ export function runAgentStorageContractSuite<TStorage extends AgentStorageContra
915
1049
  )
916
1050
  })
917
1051
  })
1052
+
1053
+ // ── context checkpoints ─────────────────────────────────────────────────────────────────
1054
+
1055
+ test("creates an idempotent checkpoint without mutating the transcript", async () => {
1056
+ await withStorage(async (storage, fixture) => {
1057
+ await prepareCheckpointCandidate(storage, fixture)
1058
+ await storage.threads.create(threadInput({ id: "thr_2" }))
1059
+
1060
+ const threadBefore = await storage.threads.getById({ projectId, id: "thr_1" })
1061
+ const [created, replayed] = await Promise.all([
1062
+ storage.checkpoints.create(checkpointInput()),
1063
+ storage.checkpoints.create(checkpointInput()),
1064
+ ])
1065
+
1066
+ expect(replayed).toEqual(created)
1067
+ expect(created).toMatchObject({
1068
+ id: "checkpoint_1",
1069
+ createdByRunId: "run_2",
1070
+ summarizedThroughSeq: 2,
1071
+ observedHeadSeq: 3,
1072
+ })
1073
+ expect(await storage.checkpoints.getLatest({ projectId, threadId: "thr_1" })).toEqual(
1074
+ created
1075
+ )
1076
+ expect(
1077
+ await storage.checkpoints.getLatest({ projectId: otherProjectId, threadId: "thr_1" })
1078
+ ).toBeNull()
1079
+ expect(await storage.checkpoints.getLatest({ projectId, threadId: "thr_2" })).toBeNull()
1080
+ await expect(
1081
+ storage.checkpoints.getByRunIds({
1082
+ projectId,
1083
+ runIds: ["run_2", "missing", "run_2"],
1084
+ })
1085
+ ).resolves.toEqual([created])
1086
+ await expect(
1087
+ storage.checkpoints.getByRunIds({
1088
+ projectId: otherProjectId,
1089
+ runIds: ["run_2"],
1090
+ })
1091
+ ).resolves.toEqual([])
1092
+
1093
+ const retained = await storage.messages.list({
1094
+ projectId,
1095
+ threadId: "thr_1",
1096
+ afterSeq: created.summarizedThroughSeq,
1097
+ order: "asc",
1098
+ })
1099
+ expect(retained.messages.map((message) => message.id)).toEqual(["m3"])
1100
+
1101
+ const complete = await storage.messages.list({
1102
+ projectId,
1103
+ threadId: "thr_1",
1104
+ order: "asc",
1105
+ })
1106
+ expect(complete.messages.map((message) => message.id)).toEqual(["m1", "m2", "m3"])
1107
+ expect(await storage.threads.getById({ projectId, id: "thr_1" })).toEqual(threadBefore)
1108
+ })
1109
+ })
1110
+
1111
+ test("rejects checkpoints from an inactive run or a different thread", async () => {
1112
+ await withStorage(async (storage, fixture) => {
1113
+ await prepareCheckpointCandidate(storage, fixture)
1114
+ await storage.threads.create(threadInput({ id: "thr_2" }))
1115
+
1116
+ await expectAgentError(
1117
+ storage.checkpoints.create(checkpointInput({ threadId: "thr_2" })),
1118
+ "invalid_input"
1119
+ )
1120
+
1121
+ await storage.runs.finish({
1122
+ id: "run_2",
1123
+ projectId,
1124
+ executionToken: "exec_2",
1125
+ status: "failed",
1126
+ })
1127
+ await expectAgentError(storage.checkpoints.create(checkpointInput()), "invalid_state")
1128
+ expect(await storage.checkpoints.getLatest({ projectId, threadId: "thr_1" })).toBeNull()
1129
+ })
1130
+ })
1131
+
1132
+ test("rolls back a checkpoint with its containing storage transaction", async () => {
1133
+ await withStorage(async (storage, fixture) => {
1134
+ await prepareCheckpointCandidate(storage, fixture)
1135
+ const rollback = new Error("rollback checkpoint")
1136
+
1137
+ await expect(
1138
+ fixture.transaction(async (tx) => {
1139
+ if (!tx.agents) throw new Error("Expected agent storage in transaction.")
1140
+ const created = await tx.agents.checkpoints.create(checkpointInput())
1141
+ expect(await tx.agents.checkpoints.getLatest({ projectId, threadId: "thr_1" })).toEqual(
1142
+ created
1143
+ )
1144
+ throw rollback
1145
+ })
1146
+ ).rejects.toBe(rollback)
1147
+
1148
+ expect(await storage.checkpoints.getLatest({ projectId, threadId: "thr_1" })).toBeNull()
1149
+ })
1150
+ })
1151
+
1152
+ test("fences checkpoint creation by execution, message head, and prior checkpoint", async () => {
1153
+ await withStorage(async (storage, fixture) => {
1154
+ await prepareCheckpointCandidate(storage, fixture)
1155
+
1156
+ await expectAgentError(
1157
+ storage.checkpoints.create(checkpointInput({ executionToken: "stale" })),
1158
+ "execution_lost"
1159
+ )
1160
+ await expectAgentError(
1161
+ storage.checkpoints.create(
1162
+ checkpointInput({ expectedHeadSeq: 2, observedHeadSeq: 2, summarizedThroughSeq: 1 })
1163
+ ),
1164
+ "invalid_state"
1165
+ )
1166
+ await expectAgentError(
1167
+ storage.checkpoints.create(
1168
+ checkpointInput({ expectedPreviousCheckpointId: "checkpoint_missing" })
1169
+ ),
1170
+ "invalid_state"
1171
+ )
1172
+ await expectAgentError(
1173
+ storage.checkpoints.create(checkpointInput({ summarizedThroughSeq: 1 })),
1174
+ "invalid_input"
1175
+ )
1176
+
1177
+ await storage.runs.reclaim({
1178
+ id: "run_2",
1179
+ projectId,
1180
+ execution: execution("exec_2_reclaimed"),
1181
+ })
1182
+ await expectAgentError(storage.checkpoints.create(checkpointInput()), "execution_lost")
1183
+
1184
+ const reclaimedInput = checkpointInput({ executionToken: "exec_2_reclaimed" })
1185
+ await storage.checkpoints.create(reclaimedInput)
1186
+ await expectAgentError(
1187
+ storage.checkpoints.create({ ...reclaimedInput, summary: "different" }),
1188
+ "invalid_state"
1189
+ )
1190
+ await expectAgentError(storage.checkpoints.create(checkpointInput()), "execution_lost")
1191
+ await storage.messages.append({
1192
+ id: "m4",
1193
+ projectId,
1194
+ threadId: "thr_1",
1195
+ runId: "run_2",
1196
+ role: "assistant",
1197
+ parts: [{ type: "text", text: "four" }],
1198
+ })
1199
+ await expectAgentError(storage.checkpoints.create(reclaimedInput), "invalid_state")
1200
+ })
1201
+ })
1202
+
1203
+ test("chains checkpoints only when the retained boundary advances", async () => {
1204
+ await withStorage(async (storage, fixture) => {
1205
+ await prepareCheckpointCandidate(storage, fixture)
1206
+ await storage.checkpoints.create(checkpointInput())
1207
+ await storage.messages.append({
1208
+ id: "m4",
1209
+ projectId,
1210
+ threadId: "thr_1",
1211
+ runId: "run_2",
1212
+ role: "assistant",
1213
+ parts: [{ type: "text", text: "four" }],
1214
+ })
1215
+ await storage.runs.finish({
1216
+ id: "run_2",
1217
+ projectId,
1218
+ executionToken: "exec_2",
1219
+ status: "succeeded",
1220
+ })
1221
+ await storage.messages.append({
1222
+ id: "m5",
1223
+ projectId,
1224
+ threadId: "thr_1",
1225
+ runId: null,
1226
+ role: "user",
1227
+ parts: [{ type: "text", text: "five" }],
1228
+ })
1229
+ await createAndStartRun(
1230
+ storage,
1231
+ fixture,
1232
+ runInput({ id: "run_3", triggerMessageId: "m5", execution: execution("exec_3") })
1233
+ )
1234
+
1235
+ await expectAgentError(
1236
+ storage.checkpoints.create(
1237
+ checkpointInput({
1238
+ id: "checkpoint_2",
1239
+ createdByRunId: "run_3",
1240
+ expectedPreviousCheckpointId: "checkpoint_1",
1241
+ expectedHeadSeq: 5,
1242
+ executionToken: "exec_3",
1243
+ summarizedThroughSeq: 2,
1244
+ observedHeadSeq: 5,
1245
+ })
1246
+ ),
1247
+ "invalid_input"
1248
+ )
1249
+
1250
+ const second = await storage.checkpoints.create(
1251
+ checkpointInput({
1252
+ id: "checkpoint_2",
1253
+ createdByRunId: "run_3",
1254
+ expectedPreviousCheckpointId: "checkpoint_1",
1255
+ expectedHeadSeq: 5,
1256
+ executionToken: "exec_3",
1257
+ summary: "The prior summary was extended through the fourth message.",
1258
+ summarizedThroughSeq: 4,
1259
+ observedHeadSeq: 5,
1260
+ createdAt: at("2026-06-23T10:05:00.000Z"),
1261
+ })
1262
+ )
1263
+ expect(second.previousCheckpointId).toBe("checkpoint_1")
1264
+ expect(await storage.checkpoints.getLatest({ projectId, threadId: "thr_1" })).toEqual(
1265
+ second
1266
+ )
1267
+ })
1268
+ })
918
1269
  })
919
1270
  }