@sixb/core 0.1.17 → 0.1.19

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 (715) hide show
  1. package/README.md +7 -6
  2. package/dist/actions/commit-edits.d.ts +7 -19
  3. package/dist/actions/commit-edits.d.ts.map +1 -1
  4. package/dist/actions/errors.d.ts +0 -3
  5. package/dist/actions/errors.d.ts.map +1 -1
  6. package/dist/actions/execution.d.ts +10 -3
  7. package/dist/actions/execution.d.ts.map +1 -1
  8. package/dist/actions/index.d.ts +6 -9
  9. package/dist/actions/index.d.ts.map +1 -1
  10. package/dist/actions/index.js +56 -52
  11. package/dist/actions/index.js.map +1 -1
  12. package/dist/actions/read-facade.d.ts +1 -1
  13. package/dist/actions/request.d.ts +14 -25
  14. package/dist/actions/request.d.ts.map +1 -1
  15. package/dist/actions/run/context.d.ts +40 -0
  16. package/dist/actions/run/context.d.ts.map +1 -0
  17. package/dist/actions/run/edits-commit.d.ts +31 -0
  18. package/dist/actions/run/edits-commit.d.ts.map +1 -0
  19. package/dist/actions/run/effects.d.ts +23 -0
  20. package/dist/actions/run/effects.d.ts.map +1 -0
  21. package/dist/actions/run/execute.d.ts +30 -0
  22. package/dist/actions/run/execute.d.ts.map +1 -0
  23. package/dist/actions/run/executor.d.ts +95 -0
  24. package/dist/actions/run/executor.d.ts.map +1 -0
  25. package/dist/actions/run/normalize.d.ts +36 -0
  26. package/dist/actions/run/normalize.d.ts.map +1 -0
  27. package/dist/actions/run/phase-types.d.ts +18 -0
  28. package/dist/actions/run/phase-types.d.ts.map +1 -0
  29. package/dist/actions/run/phases.d.ts +20 -0
  30. package/dist/actions/run/phases.d.ts.map +1 -0
  31. package/dist/actions/run/run-action.d.ts +25 -0
  32. package/dist/actions/run/run-action.d.ts.map +1 -0
  33. package/dist/actions/run/signals.d.ts +67 -0
  34. package/dist/actions/run/signals.d.ts.map +1 -0
  35. package/dist/actions/run/state.d.ts +47 -0
  36. package/dist/actions/run/state.d.ts.map +1 -0
  37. package/dist/actions/run/types.d.ts +54 -0
  38. package/dist/actions/run/types.d.ts.map +1 -0
  39. package/dist/actions/run/writeback.d.ts +17 -0
  40. package/dist/actions/run/writeback.d.ts.map +1 -0
  41. package/dist/actions/run-authorization.d.ts +1 -1
  42. package/dist/actions/run-authorization.d.ts.map +1 -1
  43. package/dist/actions/run-persistence.d.ts +53 -0
  44. package/dist/actions/run-persistence.d.ts.map +1 -0
  45. package/dist/actions/types/context.d.ts +10 -0
  46. package/dist/actions/types/context.d.ts.map +1 -1
  47. package/dist/actions/validation.d.ts.map +1 -1
  48. package/dist/agents/adapters.d.ts +7 -0
  49. package/dist/agents/adapters.d.ts.map +1 -1
  50. package/dist/agents/authority.d.ts +7 -0
  51. package/dist/agents/authority.d.ts.map +1 -1
  52. package/dist/agents/context/entries.d.ts +10 -1
  53. package/dist/agents/context/entries.d.ts.map +1 -1
  54. package/dist/agents/context/index.d.ts +1 -1
  55. package/dist/agents/context/index.d.ts.map +1 -1
  56. package/dist/agents/context/index.js +4 -2
  57. package/dist/agents/context/index.js.map +1 -1
  58. package/dist/agents/context-compaction.d.ts.map +1 -1
  59. package/dist/agents/errors.d.ts +1 -1
  60. package/dist/agents/errors.d.ts.map +1 -1
  61. package/dist/agents/index.d.ts +6 -4
  62. package/dist/agents/index.d.ts.map +1 -1
  63. package/dist/agents/index.js +63 -59
  64. package/dist/agents/index.js.map +1 -1
  65. package/dist/agents/message.d.ts +8 -1
  66. package/dist/agents/message.d.ts.map +1 -1
  67. package/dist/agents/request.d.ts +19 -5
  68. package/dist/agents/request.d.ts.map +1 -1
  69. package/dist/agents/skills.d.ts +41 -0
  70. package/dist/agents/skills.d.ts.map +1 -0
  71. package/dist/agents/streams/index.js +2 -2
  72. package/dist/agents/streams/internal.js +2 -2
  73. package/dist/agents/types.d.ts +33 -4
  74. package/dist/agents/types.d.ts.map +1 -1
  75. package/dist/auth/index.js +12 -9
  76. package/dist/auth/index.js.map +1 -1
  77. package/dist/auth/runtime.d.ts.map +1 -1
  78. package/dist/auth/types.d.ts +6 -0
  79. package/dist/auth/types.d.ts.map +1 -1
  80. package/dist/authorization/event-visibility.d.ts.map +1 -1
  81. package/dist/authorization/index.js +6 -4
  82. package/dist/authorization/index.js.map +1 -1
  83. package/dist/authorization/resolve.d.ts +1 -1
  84. package/dist/authorization/resolve.d.ts.map +1 -1
  85. package/dist/authorization/types.d.ts +7 -0
  86. package/dist/authorization/types.d.ts.map +1 -1
  87. package/dist/blob-storage/browser.js +1 -1
  88. package/dist/blob-storage/execution.d.ts.map +1 -1
  89. package/dist/blob-storage/file-content.d.ts +18 -0
  90. package/dist/blob-storage/file-content.d.ts.map +1 -0
  91. package/dist/blob-storage/index.d.ts +1 -1
  92. package/dist/blob-storage/index.d.ts.map +1 -1
  93. package/dist/blob-storage/index.js +2 -2
  94. package/dist/blob-storage/internal.d.ts +2 -0
  95. package/dist/blob-storage/internal.d.ts.map +1 -1
  96. package/dist/blob-storage/internal.js +16 -4
  97. package/dist/blob-storage/internal.js.map +1 -1
  98. package/dist/blob-storage/media-type.d.ts +8 -0
  99. package/dist/blob-storage/media-type.d.ts.map +1 -0
  100. package/dist/blob-storage/types.d.ts +12 -1
  101. package/dist/blob-storage/types.d.ts.map +1 -1
  102. package/dist/blob-storage/validation.d.ts +6 -0
  103. package/dist/blob-storage/validation.d.ts.map +1 -1
  104. package/dist/bootstrap/agent-context.d.ts +33 -0
  105. package/dist/bootstrap/agent-context.d.ts.map +1 -0
  106. package/dist/bootstrap/discovery.d.ts +23 -3
  107. package/dist/bootstrap/discovery.d.ts.map +1 -1
  108. package/dist/bootstrap/index.d.ts +2 -1
  109. package/dist/bootstrap/index.d.ts.map +1 -1
  110. package/dist/bootstrap/index.js +285 -77
  111. package/dist/bootstrap/index.js.map +4 -3
  112. package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
  113. package/dist/{chunk-t9shqx3w.js → chunk-1f7wpmyp.js} +143 -7
  114. package/dist/chunk-1f7wpmyp.js.map +14 -0
  115. package/dist/{chunk-jjrn5v0p.js → chunk-1k89ecfr.js} +1 -1
  116. package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
  117. package/dist/chunk-1sr8ryzk.js.map +11 -0
  118. package/dist/{chunk-s7ftxrdr.js → chunk-29yx306f.js} +20 -3
  119. package/dist/{chunk-s7ftxrdr.js.map → chunk-29yx306f.js.map} +3 -3
  120. package/dist/{chunk-svabwqdq.js → chunk-3gnrh4ve.js} +44 -420
  121. package/dist/{chunk-svabwqdq.js.map → chunk-3gnrh4ve.js.map} +9 -13
  122. package/dist/{chunk-4ra628t7.js → chunk-3zxk45er.js} +70 -6
  123. package/dist/{chunk-4ra628t7.js.map → chunk-3zxk45er.js.map} +5 -4
  124. package/dist/{chunk-pja9jfz6.js → chunk-4tcx876c.js} +126 -64
  125. package/dist/chunk-4tcx876c.js.map +19 -0
  126. package/dist/{chunk-vre348sb.js → chunk-52bk93x8.js} +2 -2
  127. package/dist/{chunk-4gmng3vf.js → chunk-5e43w60z.js} +2 -2
  128. package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
  129. package/dist/chunk-6gmfggss.js.map +10 -0
  130. package/dist/{chunk-33saed7g.js → chunk-7kg3k1m9.js} +1 -1
  131. package/dist/{chunk-7ecp4v7a.js → chunk-7mbzgd9m.js} +10 -4
  132. package/dist/{chunk-7ecp4v7a.js.map → chunk-7mbzgd9m.js.map} +3 -3
  133. package/dist/{chunk-b9affek3.js → chunk-7n440zgt.js} +30 -30
  134. package/dist/{chunk-b9affek3.js.map → chunk-7n440zgt.js.map} +4 -4
  135. package/dist/{chunk-kkqwzy6h.js → chunk-7t429e3f.js} +1 -1
  136. package/dist/{chunk-xcy5ddha.js → chunk-80mc0971.js} +356 -301
  137. package/dist/chunk-80mc0971.js.map +15 -0
  138. package/dist/{chunk-gf7yht60.js → chunk-85yvv5n0.js} +27 -10
  139. package/dist/chunk-85yvv5n0.js.map +12 -0
  140. package/dist/{chunk-6fsr7y93.js → chunk-8mx7qw3y.js} +14 -13
  141. package/dist/{chunk-6fsr7y93.js.map → chunk-8mx7qw3y.js.map} +4 -4
  142. package/dist/{chunk-kpx7jrmn.js → chunk-91mg3nj9.js} +59 -59
  143. package/dist/{chunk-kpx7jrmn.js.map → chunk-91mg3nj9.js.map} +5 -5
  144. package/dist/{chunk-2am3db31.js → chunk-9gyp8hg1.js} +2 -2
  145. package/dist/{chunk-ewqa58h9.js → chunk-9k93ah50.js} +4 -4
  146. package/dist/{chunk-ewqa58h9.js.map → chunk-9k93ah50.js.map} +1 -1
  147. package/dist/{chunk-4wn7bxxa.js → chunk-9ybhtmg4.js} +1 -1
  148. package/dist/{chunk-fc5zfxy1.js → chunk-a40ad1ft.js} +5 -13
  149. package/dist/chunk-a40ad1ft.js.map +10 -0
  150. package/dist/{chunk-dam456ve.js → chunk-aff7cyea.js} +431 -70
  151. package/dist/{chunk-dam456ve.js.map → chunk-aff7cyea.js.map} +10 -7
  152. package/dist/{chunk-y2aq6ag9.js → chunk-b38szspf.js} +5 -14
  153. package/dist/chunk-b38szspf.js.map +11 -0
  154. package/dist/{chunk-r2y23egw.js → chunk-bkpke1sg.js} +1 -10
  155. package/dist/chunk-bkpke1sg.js.map +10 -0
  156. package/dist/{chunk-xyvy73tj.js → chunk-bpgy64fw.js} +8 -3
  157. package/dist/chunk-bpgy64fw.js.map +12 -0
  158. package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
  159. package/dist/{chunk-5thzcb8g.js → chunk-c85m1hyj.js} +2 -2
  160. package/dist/{chunk-e67ynxcr.js → chunk-d2ync1v3.js} +5 -5
  161. package/dist/{chunk-3rrezgyc.js → chunk-dnmadg9k.js} +2 -2
  162. package/dist/chunk-enpsx8k5.js +127 -0
  163. package/dist/chunk-enpsx8k5.js.map +10 -0
  164. package/dist/chunk-ey3pyej1.js +8807 -0
  165. package/dist/chunk-ey3pyej1.js.map +106 -0
  166. package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
  167. package/dist/{chunk-9se093qz.js → chunk-gc4ntf7d.js} +4 -4
  168. package/dist/{chunk-9se093qz.js.map → chunk-gc4ntf7d.js.map} +1 -1
  169. package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
  170. package/dist/chunk-hkc3jct7.js.map +10 -0
  171. package/dist/{chunk-rpxz486p.js → chunk-hvsb78a1.js} +24 -8
  172. package/dist/{chunk-rpxz486p.js.map → chunk-hvsb78a1.js.map} +3 -3
  173. package/dist/{chunk-5yd8cchh.js → chunk-j2bp5ryw.js} +55 -246
  174. package/dist/{chunk-5yd8cchh.js.map → chunk-j2bp5ryw.js.map} +4 -4
  175. package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
  176. package/dist/chunk-jhm3zsa7.js.map +12 -0
  177. package/dist/{chunk-w9yycd3t.js → chunk-kg5j6fct.js} +4 -8
  178. package/dist/{chunk-w9yycd3t.js.map → chunk-kg5j6fct.js.map} +3 -3
  179. package/dist/{chunk-vp3z1ckh.js → chunk-kyzq4wy9.js} +7 -7
  180. package/dist/{chunk-wr8qp979.js → chunk-m427qgq0.js} +9 -5
  181. package/dist/{chunk-wr8qp979.js.map → chunk-m427qgq0.js.map} +4 -3
  182. package/dist/{chunk-c2rga5cx.js → chunk-mfs23znk.js} +1 -1
  183. package/dist/{chunk-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
  184. package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
  185. package/dist/{chunk-a7er86jd.js → chunk-nre82s12.js} +1 -1
  186. package/dist/{chunk-1hqwggsn.js → chunk-nzapm6p0.js} +1 -2
  187. package/dist/chunk-nzapm6p0.js.map +12 -0
  188. package/dist/{chunk-wt4szfec.js → chunk-pbcbn83d.js} +4 -4
  189. package/dist/{chunk-wt4szfec.js.map → chunk-pbcbn83d.js.map} +1 -1
  190. package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
  191. package/dist/chunk-pfp1txq2.js.map +11 -0
  192. package/dist/chunk-pqajwytd.js.map +2 -2
  193. package/dist/{chunk-f1xh7a32.js → chunk-q1vkr2ys.js} +4 -4
  194. package/dist/chunk-rdghfsss.js.map +2 -2
  195. package/dist/{chunk-23xs4qp9.js → chunk-rhg02hxq.js} +4 -4
  196. package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
  197. package/dist/chunk-rz53yb4v.js.map +14 -0
  198. package/dist/{chunk-aq39q04r.js → chunk-s16apyk9.js} +104 -18
  199. package/dist/chunk-s16apyk9.js.map +16 -0
  200. package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
  201. package/dist/chunk-s54c868q.js.map +12 -0
  202. package/dist/{chunk-k4g51s47.js → chunk-t6vq7bff.js} +5 -5
  203. package/dist/{chunk-sk0hcjsz.js → chunk-tjb1mk5t.js} +3 -3
  204. package/dist/{chunk-cnb5kv05.js → chunk-tpn40322.js} +23 -8
  205. package/dist/chunk-tpn40322.js.map +19 -0
  206. package/dist/{chunk-rx7h5fdx.js → chunk-v9xd5wzd.js} +1 -1
  207. package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
  208. package/dist/chunk-wwdfe68s.js +128 -0
  209. package/dist/chunk-wwdfe68s.js.map +11 -0
  210. package/dist/{chunk-jnfxmr3f.js → chunk-wz0xs816.js} +6 -6
  211. package/dist/{chunk-jnfxmr3f.js.map → chunk-wz0xs816.js.map} +1 -1
  212. package/dist/chunk-xt1zt7gv.js +471 -0
  213. package/dist/chunk-xt1zt7gv.js.map +13 -0
  214. package/dist/chunk-y0c4e6ex.js +16 -0
  215. package/dist/chunk-y0c4e6ex.js.map +10 -0
  216. package/dist/{chunk-5be2ath4.js → chunk-y7rqfrgg.js} +20 -138
  217. package/dist/{chunk-5be2ath4.js.map → chunk-y7rqfrgg.js.map} +8 -9
  218. package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
  219. package/dist/chunk-yw9pyg66.js.map +11 -0
  220. package/dist/{chunk-dfm066qg.js → chunk-yxd3nnqt.js} +2 -29
  221. package/dist/chunk-yxd3nnqt.js.map +11 -0
  222. package/dist/{chunk-70jmg2zx.js → chunk-yzwja0mj.js} +4 -19
  223. package/dist/{chunk-70jmg2zx.js.map → chunk-yzwja0mj.js.map} +3 -3
  224. package/dist/{chunk-fggq3d9k.js → chunk-zrmy8zvw.js} +66 -47
  225. package/dist/{chunk-fggq3d9k.js.map → chunk-zrmy8zvw.js.map} +4 -4
  226. package/dist/datasets/builders.d.ts +12 -1
  227. package/dist/datasets/builders.d.ts.map +1 -1
  228. package/dist/datasets/execution.d.ts +27 -1
  229. package/dist/datasets/execution.d.ts.map +1 -1
  230. package/dist/datasets/index.d.ts +1 -1
  231. package/dist/datasets/index.d.ts.map +1 -1
  232. package/dist/datasets/types.d.ts +2 -0
  233. package/dist/datasets/types.d.ts.map +1 -1
  234. package/dist/datasets/write.d.ts +5 -0
  235. package/dist/datasets/write.d.ts.map +1 -1
  236. package/dist/datasets/write.js +10 -5
  237. package/dist/datasets/write.js.map +1 -1
  238. package/dist/deploy/index.d.ts +1 -1
  239. package/dist/deploy/index.d.ts.map +1 -1
  240. package/dist/deploy/internal.js +10 -8
  241. package/dist/deploy/internal.js.map +4 -4
  242. package/dist/deploy/services.d.ts +1 -2
  243. package/dist/deploy/services.d.ts.map +1 -1
  244. package/dist/deploy/types.d.ts +6 -5
  245. package/dist/deploy/types.d.ts.map +1 -1
  246. package/dist/deploy/validation.d.ts.map +1 -1
  247. package/dist/edits/index.js +3 -5
  248. package/dist/edits/index.js.map +1 -1
  249. package/dist/edits/properties.d.ts.map +1 -1
  250. package/dist/error-reporting/internal.js +3 -3
  251. package/dist/error-reporting/types.d.ts +2 -9
  252. package/dist/error-reporting/types.d.ts.map +1 -1
  253. package/dist/errors/catalog.d.ts +12 -0
  254. package/dist/errors/catalog.d.ts.map +1 -1
  255. package/dist/errors/internal.js +1 -1
  256. package/dist/events/definitions.d.ts +0 -5
  257. package/dist/events/definitions.d.ts.map +1 -1
  258. package/dist/events/execution.d.ts +2 -1
  259. package/dist/events/execution.d.ts.map +1 -1
  260. package/dist/events/index.d.ts +3 -3
  261. package/dist/events/index.d.ts.map +1 -1
  262. package/dist/events/index.js +6 -8
  263. package/dist/events/index.js.map +1 -1
  264. package/dist/events/scope.d.ts +0 -1
  265. package/dist/events/scope.d.ts.map +1 -1
  266. package/dist/events/scope.js +1 -1
  267. package/dist/events/selectors/builder.d.ts +1 -8
  268. package/dist/events/selectors/builder.d.ts.map +1 -1
  269. package/dist/events/selectors/index.d.ts +2 -2
  270. package/dist/events/selectors/index.d.ts.map +1 -1
  271. package/dist/events/selectors/index.js +2 -2
  272. package/dist/events/selectors/predicate.d.ts.map +1 -1
  273. package/dist/events/selectors/types.d.ts +2 -33
  274. package/dist/events/selectors/types.d.ts.map +1 -1
  275. package/dist/events/types/index.d.ts +1 -12
  276. package/dist/events/types/index.d.ts.map +1 -1
  277. package/dist/events/types/objects.d.ts +5 -0
  278. package/dist/events/types/objects.d.ts.map +1 -1
  279. package/dist/execution/agent.d.ts +10 -0
  280. package/dist/execution/agent.d.ts.map +1 -1
  281. package/dist/execution/agent.js +50 -48
  282. package/dist/execution/agent.js.map +1 -1
  283. package/dist/execution/authorized-object-reader.d.ts +6 -1
  284. package/dist/execution/authorized-object-reader.d.ts.map +1 -1
  285. package/dist/execution/primitive.js +60 -88
  286. package/dist/execution/primitive.js.map +3 -4
  287. package/dist/execution/request.js +46 -46
  288. package/dist/execution/request.js.map +1 -1
  289. package/dist/http/api-routes.d.ts.map +1 -1
  290. package/dist/http/index.js +1 -1
  291. package/dist/index.d.ts +12 -11
  292. package/dist/index.d.ts.map +1 -1
  293. package/dist/index.js +120 -124
  294. package/dist/index.js.map +1 -1
  295. package/dist/lake-storage/index.js +8 -5
  296. package/dist/lake-storage/index.js.map +1 -1
  297. package/dist/materialization/index.js +3 -3
  298. package/dist/materialization/index.js.map +1 -1
  299. package/dist/materialization/model.d.ts +19 -6
  300. package/dist/materialization/model.d.ts.map +1 -1
  301. package/dist/materializer/index.js +35 -32
  302. package/dist/materializer/index.js.map +1 -1
  303. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  304. package/dist/models/catalog.d.ts +1 -1
  305. package/dist/models/catalog.d.ts.map +1 -1
  306. package/dist/models/execution/binding.d.ts +6 -0
  307. package/dist/models/execution/binding.d.ts.map +1 -1
  308. package/dist/models/execution/index.js +26 -23
  309. package/dist/models/execution/index.js.map +1 -1
  310. package/dist/models/execution/model-call-recorder.d.ts +4 -0
  311. package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
  312. package/dist/models/execution.d.ts.map +1 -1
  313. package/dist/models/index.js +1 -1
  314. package/dist/models/language-model.d.ts +6 -0
  315. package/dist/models/language-model.d.ts.map +1 -1
  316. package/dist/objects/action/errors.d.ts +0 -9
  317. package/dist/objects/action/errors.d.ts.map +1 -1
  318. package/dist/objects/action/index.d.ts +3 -3
  319. package/dist/objects/action/index.d.ts.map +1 -1
  320. package/dist/objects/action/request.d.ts +2 -8
  321. package/dist/objects/action/request.d.ts.map +1 -1
  322. package/dist/objects/context/index.d.ts +1 -1
  323. package/dist/objects/context/index.d.ts.map +1 -1
  324. package/dist/objects/context/types.d.ts +6 -0
  325. package/dist/objects/context/types.d.ts.map +1 -1
  326. package/dist/objects/execution.d.ts +2 -3
  327. package/dist/objects/execution.d.ts.map +1 -1
  328. package/dist/objects/index.js +49 -30
  329. package/dist/objects/index.js.map +1 -1
  330. package/dist/objects/materializer-adapter.d.ts.map +1 -1
  331. package/dist/objects/object/upsert-batch.d.ts.map +1 -1
  332. package/dist/objects/object/upsert.d.ts.map +1 -1
  333. package/dist/objects/property-clearance.d.ts +41 -0
  334. package/dist/objects/property-clearance.d.ts.map +1 -0
  335. package/dist/objects/query/executor.d.ts +3 -0
  336. package/dist/objects/query/executor.d.ts.map +1 -1
  337. package/dist/objects/query/index.js +34 -31
  338. package/dist/objects/query/index.js.map +1 -1
  339. package/dist/objects/query/validate.d.ts +10 -1
  340. package/dist/objects/query/validate.d.ts.map +1 -1
  341. package/dist/objects/sdk/file-handle.d.ts +6 -0
  342. package/dist/objects/sdk/file-handle.d.ts.map +1 -0
  343. package/dist/objects/sdk/object-handle.d.ts +2 -2
  344. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  345. package/dist/objects/sdk/object-set.d.ts +2 -0
  346. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  347. package/dist/objects/service/index.d.ts +0 -1
  348. package/dist/objects/service/index.d.ts.map +1 -1
  349. package/dist/ontology/builders.d.ts +12 -1
  350. package/dist/ontology/builders.d.ts.map +1 -1
  351. package/dist/ontology/docs-markdown.d.ts +35 -0
  352. package/dist/ontology/docs-markdown.d.ts.map +1 -0
  353. package/dist/ontology/docs.d.ts +50 -0
  354. package/dist/ontology/docs.d.ts.map +1 -0
  355. package/dist/ontology/index.js +7 -4
  356. package/dist/ontology/index.js.map +1 -1
  357. package/dist/ontology/inference/index.d.ts +19 -0
  358. package/dist/ontology/inference/index.d.ts.map +1 -1
  359. package/dist/ontology/internal.d.ts +3 -1
  360. package/dist/ontology/internal.d.ts.map +1 -1
  361. package/dist/ontology/internal.js +276 -3
  362. package/dist/ontology/internal.js.map +4 -3
  363. package/dist/ontology/tokens.d.ts +8 -1
  364. package/dist/ontology/tokens.d.ts.map +1 -1
  365. package/dist/ontology/types.d.ts +5 -0
  366. package/dist/ontology/types.d.ts.map +1 -1
  367. package/dist/ontology/validation/index.d.ts +1 -1
  368. package/dist/ontology/validation/index.d.ts.map +1 -1
  369. package/dist/ontology/validation/schema.d.ts +7 -0
  370. package/dist/ontology/validation/schema.d.ts.map +1 -1
  371. package/dist/pipelines/index.js +34 -31
  372. package/dist/pipelines/index.js.map +1 -1
  373. package/dist/projections/internal.js +27 -24
  374. package/dist/projections/internal.js.map +1 -1
  375. package/dist/query.js +2 -2
  376. package/dist/queues/in-memory.d.ts +1 -2
  377. package/dist/queues/in-memory.d.ts.map +1 -1
  378. package/dist/queues/index.d.ts +1 -1
  379. package/dist/queues/index.d.ts.map +1 -1
  380. package/dist/queues/index.js +1 -1
  381. package/dist/queues/types.d.ts +0 -7
  382. package/dist/queues/types.d.ts.map +1 -1
  383. package/dist/runtime/create.d.ts +11 -2
  384. package/dist/runtime/create.d.ts.map +1 -1
  385. package/dist/runtime/definitions.d.ts +3 -1
  386. package/dist/runtime/definitions.d.ts.map +1 -1
  387. package/dist/runtime/host.d.ts +13 -2
  388. package/dist/runtime/host.d.ts.map +1 -1
  389. package/dist/runtime/index.d.ts +1 -1
  390. package/dist/runtime/index.d.ts.map +1 -1
  391. package/dist/runtime/internal.js +30 -28
  392. package/dist/runtime/internal.js.map +1 -1
  393. package/dist/runtime/locale.d.ts +9 -0
  394. package/dist/runtime/locale.d.ts.map +1 -0
  395. package/dist/runtime/resolve-definitions.d.ts +4 -2
  396. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  397. package/dist/runtime/types.d.ts +46 -39
  398. package/dist/runtime/types.d.ts.map +1 -1
  399. package/dist/sandboxes/index.js +7 -6
  400. package/dist/sandboxes/index.js.map +1 -1
  401. package/dist/scheduler/index.js +1 -1
  402. package/dist/scheduler/runtime.d.ts +3 -0
  403. package/dist/scheduler/runtime.d.ts.map +1 -1
  404. package/dist/schedules/builders.d.ts.map +1 -1
  405. package/dist/schedules/index.js +3 -3
  406. package/dist/schedules/runtime.d.ts.map +1 -1
  407. package/dist/schedules/validation.d.ts +0 -1
  408. package/dist/schedules/validation.d.ts.map +1 -1
  409. package/dist/security/builders.d.ts +11 -2
  410. package/dist/security/builders.d.ts.map +1 -1
  411. package/dist/security/every.d.ts +1 -1
  412. package/dist/security/index.d.ts +4 -4
  413. package/dist/security/index.d.ts.map +1 -1
  414. package/dist/security/markings.d.ts +19 -0
  415. package/dist/security/markings.d.ts.map +1 -0
  416. package/dist/security/redactions.d.ts +4 -0
  417. package/dist/security/redactions.d.ts.map +1 -0
  418. package/dist/security/registry.d.ts +7 -1
  419. package/dist/security/registry.d.ts.map +1 -1
  420. package/dist/security/types.d.ts +25 -0
  421. package/dist/security/types.d.ts.map +1 -1
  422. package/dist/security/validation.d.ts +4 -1
  423. package/dist/security/validation.d.ts.map +1 -1
  424. package/dist/shares/internal.js +24 -21
  425. package/dist/shares/internal.js.map +2 -2
  426. package/dist/storage/action-runs/failure.js +2 -2
  427. package/dist/storage/action-runs/idempotency.d.ts +3 -4
  428. package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
  429. package/dist/storage/action-runs/in-memory.d.ts +2 -9
  430. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  431. package/dist/storage/action-runs/index.d.ts +1 -3
  432. package/dist/storage/action-runs/index.d.ts.map +1 -1
  433. package/dist/storage/action-runs/provider.js +1 -1
  434. package/dist/storage/action-runs/record.d.ts +20 -0
  435. package/dist/storage/action-runs/record.d.ts.map +1 -0
  436. package/dist/storage/action-runs/types.d.ts +39 -68
  437. package/dist/storage/action-runs/types.d.ts.map +1 -1
  438. package/dist/storage/agents/provider.d.ts.map +1 -1
  439. package/dist/storage/agents/provider.js +5 -4
  440. package/dist/storage/agents/provider.js.map +1 -1
  441. package/dist/storage/agents/types.d.ts +15 -9
  442. package/dist/storage/agents/types.d.ts.map +1 -1
  443. package/dist/storage/ai-limits/enforcement.js +2 -2
  444. package/dist/storage/connector-connections/provider.js +1 -1
  445. package/dist/storage/file-upload-sessions/provider.js +12 -9
  446. package/dist/storage/file-upload-sessions/provider.js.map +1 -1
  447. package/dist/storage/index.d.ts +3 -2
  448. package/dist/storage/index.d.ts.map +1 -1
  449. package/dist/storage/index.js +36 -34
  450. package/dist/storage/index.js.map +1 -1
  451. package/dist/storage/internal.d.ts +1 -1
  452. package/dist/storage/internal.d.ts.map +1 -1
  453. package/dist/storage/internal.js +11 -13
  454. package/dist/storage/internal.js.map +1 -1
  455. package/dist/storage/objects/execution-limits.d.ts +1 -1
  456. package/dist/storage/objects/execution-limits.d.ts.map +1 -1
  457. package/dist/storage/objects/types.d.ts +7 -0
  458. package/dist/storage/objects/types.d.ts.map +1 -1
  459. package/dist/storage/ontology/provider.js +2 -2
  460. package/dist/storage/projection-runs/provider.js +2 -2
  461. package/dist/storage/types.d.ts +1 -1
  462. package/dist/storage/types.d.ts.map +1 -1
  463. package/dist/storage/workflow-runs/provider.js +12 -9
  464. package/dist/storage/workflow-runs/provider.js.map +1 -1
  465. package/dist/syncs/index.js +35 -32
  466. package/dist/syncs/index.js.map +1 -1
  467. package/dist/testing/action-execution.d.ts +34 -4
  468. package/dist/testing/action-execution.d.ts.map +1 -1
  469. package/dist/testing/action-run-storage-contract.d.ts +11 -0
  470. package/dist/testing/action-run-storage-contract.d.ts.map +1 -0
  471. package/dist/testing/index.d.ts +2 -1
  472. package/dist/testing/index.d.ts.map +1 -1
  473. package/dist/testing/index.js +3213 -2869
  474. package/dist/testing/index.js.map +7 -6
  475. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  476. package/dist/testing/queues-contract.d.ts.map +1 -1
  477. package/dist/webhooks/internal.js +29 -26
  478. package/dist/webhooks/internal.js.map +2 -2
  479. package/dist/workers/index.js +1 -1
  480. package/dist/workflows/builders.d.ts.map +1 -1
  481. package/dist/workflows/index.js +55 -55
  482. package/dist/workflows/index.js.map +1 -1
  483. package/dist/workflows/request.d.ts.map +1 -1
  484. package/dist/workflows/types.d.ts +6 -3
  485. package/dist/workflows/types.d.ts.map +1 -1
  486. package/dist/workflows/validation.d.ts +2 -1
  487. package/dist/workflows/validation.d.ts.map +1 -1
  488. package/package.json +1 -7
  489. package/src/actions/commit-edits.ts +9 -37
  490. package/src/actions/errors.ts +0 -4
  491. package/src/actions/execution.ts +10 -10
  492. package/src/actions/index.ts +5 -24
  493. package/src/actions/read-facade.ts +2 -1
  494. package/src/actions/request.ts +157 -295
  495. package/src/actions/run/context.ts +193 -0
  496. package/src/actions/run/edits-commit.ts +102 -0
  497. package/src/actions/run/effects.ts +105 -0
  498. package/src/actions/run/execute.ts +113 -0
  499. package/src/actions/run/executor.ts +314 -0
  500. package/src/actions/run/normalize.ts +142 -0
  501. package/src/actions/run/phase-types.ts +20 -0
  502. package/src/actions/run/phases.ts +150 -0
  503. package/src/actions/run/run-action.ts +170 -0
  504. package/src/actions/run/signals.ts +118 -0
  505. package/src/actions/run/state.ts +95 -0
  506. package/src/actions/run/types.ts +61 -0
  507. package/src/actions/run/writeback.ts +79 -0
  508. package/src/actions/run-authorization.ts +1 -1
  509. package/src/actions/run-persistence.ts +105 -0
  510. package/src/actions/types/context.ts +10 -0
  511. package/src/actions/validation.ts +4 -1
  512. package/src/agents/adapters.ts +15 -0
  513. package/src/agents/authority.ts +15 -0
  514. package/src/agents/context/entries.ts +48 -4
  515. package/src/agents/context/index.ts +1 -0
  516. package/src/agents/context-compaction.ts +6 -0
  517. package/src/agents/errors.ts +3 -0
  518. package/src/agents/index.ts +13 -1
  519. package/src/agents/message.ts +9 -0
  520. package/src/agents/request.ts +178 -22
  521. package/src/agents/skills.ts +63 -0
  522. package/src/agents/types.ts +35 -5
  523. package/src/auth/runtime.ts +14 -0
  524. package/src/auth/types.ts +6 -0
  525. package/src/authorization/event-visibility.ts +0 -12
  526. package/src/authorization/resolve.ts +6 -1
  527. package/src/authorization/types.ts +7 -0
  528. package/src/blob-storage/execution.ts +12 -0
  529. package/src/blob-storage/file-content.ts +106 -0
  530. package/src/blob-storage/index.ts +1 -0
  531. package/src/blob-storage/internal.ts +7 -0
  532. package/src/blob-storage/media-type.ts +29 -0
  533. package/src/blob-storage/types.ts +13 -1
  534. package/src/blob-storage/validation.ts +13 -0
  535. package/src/bootstrap/agent-context.ts +356 -0
  536. package/src/bootstrap/discovery.ts +100 -33
  537. package/src/bootstrap/index.ts +1 -1
  538. package/src/bootstrap/ontology-type-manifest.ts +3 -38
  539. package/src/datasets/builders.ts +17 -1
  540. package/src/datasets/execution.ts +110 -2
  541. package/src/datasets/index.ts +7 -1
  542. package/src/datasets/types.ts +2 -0
  543. package/src/datasets/write.ts +21 -2
  544. package/src/deploy/index.ts +0 -1
  545. package/src/deploy/services.ts +2 -11
  546. package/src/deploy/types.ts +6 -6
  547. package/src/deploy/validation.ts +12 -6
  548. package/src/edits/properties.ts +3 -0
  549. package/src/error-reporting/types.ts +2 -10
  550. package/src/errors/catalog.ts +13 -0
  551. package/src/events/definitions.ts +0 -17
  552. package/src/events/execution.ts +15 -16
  553. package/src/events/index.ts +0 -14
  554. package/src/events/scope.ts +0 -12
  555. package/src/events/selectors/builder.ts +0 -51
  556. package/src/events/selectors/index.ts +0 -6
  557. package/src/events/selectors/predicate.ts +0 -2
  558. package/src/events/selectors/types.ts +7 -65
  559. package/src/events/types/index.ts +0 -11
  560. package/src/events/types/objects.ts +5 -0
  561. package/src/execution/agent.ts +27 -0
  562. package/src/execution/authorization.ts +1 -0
  563. package/src/execution/authorized-object-reader.ts +96 -34
  564. package/src/execution/scopes.ts +2 -6
  565. package/src/http/api-routes.ts +4 -3
  566. package/src/index.ts +28 -21
  567. package/src/materialization/model.ts +26 -9
  568. package/src/materializer/README.md +6 -1
  569. package/src/materializer/edits/commit.ts +42 -32
  570. package/src/materializer/shared/normalize.ts +25 -14
  571. package/src/models/catalog.ts +26 -2
  572. package/src/models/execution/README.md +4 -3
  573. package/src/models/execution/binding.ts +6 -0
  574. package/src/models/execution/model-call-recorder.ts +10 -0
  575. package/src/models/execution/session.ts +2 -2
  576. package/src/models/execution.ts +6 -2
  577. package/src/models/language-model.ts +6 -0
  578. package/src/objects/action/errors.ts +0 -12
  579. package/src/objects/action/index.ts +3 -3
  580. package/src/objects/action/request.ts +2 -29
  581. package/src/objects/context/index.ts +1 -0
  582. package/src/objects/context/types.ts +7 -0
  583. package/src/objects/execution.ts +6 -3
  584. package/src/objects/materializer-adapter.ts +3 -0
  585. package/src/objects/object/upsert-batch.ts +4 -1
  586. package/src/objects/object/upsert.ts +3 -1
  587. package/src/objects/property-clearance.ts +209 -0
  588. package/src/objects/query/executor.ts +43 -36
  589. package/src/objects/query/validate.ts +133 -14
  590. package/src/objects/sdk/file-handle.ts +77 -0
  591. package/src/objects/sdk/object-handle.ts +11 -33
  592. package/src/objects/sdk/object-set.ts +10 -32
  593. package/src/objects/service/index.ts +0 -1
  594. package/src/ontology/builders.ts +18 -2
  595. package/src/ontology/docs-markdown.ts +394 -0
  596. package/src/ontology/docs.ts +196 -0
  597. package/src/ontology/inference/index.ts +25 -0
  598. package/src/ontology/internal.ts +7 -0
  599. package/src/ontology/tokens.ts +13 -2
  600. package/src/ontology/types.ts +5 -0
  601. package/src/ontology/validation/index.ts +1 -0
  602. package/src/ontology/validation/schema.ts +26 -1
  603. package/src/queues/in-memory.ts +0 -6
  604. package/src/queues/index.ts +0 -2
  605. package/src/queues/types.ts +0 -11
  606. package/src/runtime/create.ts +34 -4
  607. package/src/runtime/definitions.ts +3 -1
  608. package/src/runtime/host.ts +50 -1
  609. package/src/runtime/index.ts +3 -0
  610. package/src/runtime/locale.ts +26 -0
  611. package/src/runtime/resolve-definitions.ts +28 -2
  612. package/src/runtime/sixb.ts +1 -1
  613. package/src/runtime/types.ts +55 -48
  614. package/src/scheduler/runtime.ts +11 -2
  615. package/src/schedules/builders.ts +1 -4
  616. package/src/schedules/runtime.ts +0 -41
  617. package/src/schedules/validation.ts +2 -16
  618. package/src/security/builders.ts +49 -5
  619. package/src/security/every.ts +1 -1
  620. package/src/security/index.ts +6 -1
  621. package/src/security/markings.ts +313 -0
  622. package/src/security/redactions.ts +6 -0
  623. package/src/security/registry.ts +21 -1
  624. package/src/security/types.ts +26 -0
  625. package/src/security/validation.ts +59 -2
  626. package/src/storage/action-runs/idempotency.ts +13 -41
  627. package/src/storage/action-runs/in-memory.ts +20 -311
  628. package/src/storage/action-runs/index.ts +1 -16
  629. package/src/storage/action-runs/record.ts +130 -0
  630. package/src/storage/action-runs/types.ts +37 -92
  631. package/src/storage/agents/provider.ts +11 -0
  632. package/src/storage/agents/types.ts +15 -7
  633. package/src/storage/index.ts +2 -9
  634. package/src/storage/internal.ts +1 -7
  635. package/src/storage/objects/execution-limits.ts +3 -2
  636. package/src/storage/objects/types.ts +7 -0
  637. package/src/storage/types.ts +2 -4
  638. package/src/testing/action-execution.ts +73 -13
  639. package/src/testing/action-run-storage-contract.ts +335 -0
  640. package/src/testing/index.ts +8 -1
  641. package/src/testing/materializer-storage-contract.ts +174 -18
  642. package/src/testing/queues-contract.ts +0 -18
  643. package/src/workflows/builders.ts +24 -1
  644. package/src/workflows/request.ts +3 -0
  645. package/src/workflows/types.ts +6 -3
  646. package/src/workflows/validation.ts +32 -4
  647. package/dist/actions/run-dispatch.d.ts +0 -25
  648. package/dist/actions/run-dispatch.d.ts.map +0 -1
  649. package/dist/actions/worker.d.ts +0 -3
  650. package/dist/actions/worker.d.ts.map +0 -1
  651. package/dist/actions/worker.js +0 -321
  652. package/dist/actions/worker.js.map +0 -11
  653. package/dist/chunk-10styjgk.js +0 -1572
  654. package/dist/chunk-10styjgk.js.map +0 -20
  655. package/dist/chunk-1hqwggsn.js.map +0 -12
  656. package/dist/chunk-52c5zb0z.js +0 -81
  657. package/dist/chunk-52c5zb0z.js.map +0 -10
  658. package/dist/chunk-69266efg.js.map +0 -12
  659. package/dist/chunk-6wbm6ymz.js +0 -4399
  660. package/dist/chunk-6wbm6ymz.js.map +0 -48
  661. package/dist/chunk-85cd7e8c.js +0 -51
  662. package/dist/chunk-85cd7e8c.js.map +0 -10
  663. package/dist/chunk-91kcnbf0.js.map +0 -10
  664. package/dist/chunk-98cw09sw.js.map +0 -10
  665. package/dist/chunk-9g6jz9kk.js +0 -592
  666. package/dist/chunk-9g6jz9kk.js.map +0 -15
  667. package/dist/chunk-9vx5e9g1.js.map +0 -11
  668. package/dist/chunk-aq39q04r.js.map +0 -15
  669. package/dist/chunk-cd234ba4.js.map +0 -14
  670. package/dist/chunk-cnb5kv05.js.map +0 -19
  671. package/dist/chunk-dfm066qg.js.map +0 -11
  672. package/dist/chunk-dmn70ztd.js.map +0 -11
  673. package/dist/chunk-fc5zfxy1.js.map +0 -11
  674. package/dist/chunk-gf7yht60.js.map +0 -12
  675. package/dist/chunk-h3v76ams.js.map +0 -11
  676. package/dist/chunk-pja9jfz6.js.map +0 -19
  677. package/dist/chunk-r2y23egw.js.map +0 -10
  678. package/dist/chunk-t9shqx3w.js.map +0 -12
  679. package/dist/chunk-tjjgy3z4.js +0 -1277
  680. package/dist/chunk-tjjgy3z4.js.map +0 -35
  681. package/dist/chunk-xcy5ddha.js.map +0 -15
  682. package/dist/chunk-xyvy73tj.js.map +0 -12
  683. package/dist/chunk-y2aq6ag9.js.map +0 -11
  684. package/dist/chunk-z5rnrmz1.js.map +0 -11
  685. package/dist/chunk-zvx7h87b.js +0 -12
  686. package/dist/chunk-zvx7h87b.js.map +0 -10
  687. package/dist/events/types/actions.d.ts +0 -39
  688. package/dist/events/types/actions.d.ts.map +0 -1
  689. package/dist/objects/service/action-service.d.ts +0 -13
  690. package/dist/objects/service/action-service.d.ts.map +0 -1
  691. package/src/actions/run-dispatch.ts +0 -282
  692. package/src/actions/worker.ts +0 -2
  693. package/src/events/types/actions.ts +0 -42
  694. package/src/objects/service/action-service.ts +0 -43
  695. /package/dist/{chunk-jjrn5v0p.js.map → chunk-1k89ecfr.js.map} +0 -0
  696. /package/dist/{chunk-vre348sb.js.map → chunk-52bk93x8.js.map} +0 -0
  697. /package/dist/{chunk-4gmng3vf.js.map → chunk-5e43w60z.js.map} +0 -0
  698. /package/dist/{chunk-33saed7g.js.map → chunk-7kg3k1m9.js.map} +0 -0
  699. /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
  700. /package/dist/{chunk-2am3db31.js.map → chunk-9gyp8hg1.js.map} +0 -0
  701. /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
  702. /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
  703. /package/dist/{chunk-5thzcb8g.js.map → chunk-c85m1hyj.js.map} +0 -0
  704. /package/dist/{chunk-e67ynxcr.js.map → chunk-d2ync1v3.js.map} +0 -0
  705. /package/dist/{chunk-3rrezgyc.js.map → chunk-dnmadg9k.js.map} +0 -0
  706. /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
  707. /package/dist/{chunk-vp3z1ckh.js.map → chunk-kyzq4wy9.js.map} +0 -0
  708. /package/dist/{chunk-c2rga5cx.js.map → chunk-mfs23znk.js.map} +0 -0
  709. /package/dist/{chunk-a7er86jd.js.map → chunk-nre82s12.js.map} +0 -0
  710. /package/dist/{chunk-f1xh7a32.js.map → chunk-q1vkr2ys.js.map} +0 -0
  711. /package/dist/{chunk-23xs4qp9.js.map → chunk-rhg02hxq.js.map} +0 -0
  712. /package/dist/{chunk-k4g51s47.js.map → chunk-t6vq7bff.js.map} +0 -0
  713. /package/dist/{chunk-sk0hcjsz.js.map → chunk-tjb1mk5t.js.map} +0 -0
  714. /package/dist/{chunk-rx7h5fdx.js.map → chunk-v9xd5wzd.js.map} +0 -0
  715. /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
@@ -20,6 +20,10 @@ import type {
20
20
  import { isAgentToolResult } from "./tool-result"
21
21
  import type { AgentToolFileContent } from "./types"
22
22
 
23
+ /** What the model reads for a {@link AgentContinuationPart}, in place of a user's words. */
24
+ export const AGENT_CONTINUATION_INSTRUCTION =
25
+ "<sixb_continuation>Your previous answer stopped at the turn time limit. Continue from where it stopped, in the same language, without repeating what you already wrote.</sixb_continuation>"
26
+
23
27
  export interface AgentFileDataResolverInput<TMessage extends AgentMessage = AgentMessage> {
24
28
  readonly message: TMessage
25
29
  readonly part: AgentFilePart
@@ -54,6 +58,11 @@ export interface ToModelMessagesOptions<TMessage extends AgentMessage = AgentMes
54
58
  * models that cannot consume inline files.
55
59
  */
56
60
  readonly fileText?: (input: AgentFileDataResolverInput<TMessage>) => string | undefined
61
+ /**
62
+ * Framework text closing a user message, such as when it was sent. It must derive from stored
63
+ * data only, so replaying the same history always projects the same bytes.
64
+ */
65
+ readonly userMessageSuffix?: (message: TMessage) => string | undefined
57
66
  /** Add current metadata, sandbox paths, and projection notes for a tool-result file. */
58
67
  readonly toolResultFileText?: (
59
68
  input: AgentToolResultFileResolverInput<TMessage>
@@ -122,6 +131,10 @@ function userModelMessage<TMessage extends AgentMessage>(
122
131
  content.push({ type: "text", text: `${serializedContext}\n\n` })
123
132
  }
124
133
  message.parts.forEach((part, partIndex) => {
134
+ if (part.type === "continuation") {
135
+ content.push({ type: "text", text: AGENT_CONTINUATION_INSTRUCTION })
136
+ return
137
+ }
125
138
  if (part.type === "text") {
126
139
  content.push({
127
140
  type: "text",
@@ -152,6 +165,8 @@ function userModelMessage<TMessage extends AgentMessage>(
152
165
  }
153
166
  }
154
167
  })
168
+ const suffix = options.userMessageSuffix?.(message)
169
+ if (suffix) content.push({ type: "text", text: `\n\n${suffix}` })
155
170
  return { role: "user", content }
156
171
  }
157
172
 
@@ -3,6 +3,8 @@ import type { AuthorizationContext } from "../authorization"
3
3
  import { resolveAuthorizationContext } from "../authorization"
4
4
  import { createSixbError } from "../errors/internal"
5
5
  import type { AuthorizablePrincipal, AuthorizationRef } from "../execution"
6
+ import { type PropertyClearance, resolvePropertyClearance } from "../objects/property-clearance"
7
+ import type { OntologyDefinitionCatalog } from "../ontology/registry"
6
8
  import type { SecurityDefinitionCatalog } from "../security"
7
9
  import type {
8
10
  AccessTokenRecord,
@@ -19,6 +21,19 @@ export type AgentExecutionAuthorization =
19
21
  | { readonly type: "principal"; readonly context: AuthorizationContext }
20
22
  | { readonly type: "disabled" }
21
23
 
24
+ /**
25
+ * The marked properties an Agent execution cannot read, resolved exactly as its object reader
26
+ * resolves them. Disabled authorization reads everything.
27
+ */
28
+ export function resolveAgentPropertyClearance(
29
+ ontology: OntologyDefinitionCatalog,
30
+ authorization: AgentExecutionAuthorization
31
+ ): PropertyClearance | undefined {
32
+ return authorization.type === "principal"
33
+ ? resolvePropertyClearance(ontology, authorization.context.clearances ?? new Set())
34
+ : undefined
35
+ }
36
+
22
37
  type UserCredentialRef = NonNullable<
23
38
  Extract<AuthorizationRef, { readonly type: "principal" }>["credential"]
24
39
  >
@@ -4,7 +4,15 @@ import type { ObjectRef } from "../../ontology/refs"
4
4
  import { AgentRequestError } from "../errors"
5
5
 
6
6
  export type AgentContextInput =
7
- | { readonly kind: "object"; readonly ref: ObjectRef }
7
+ | {
8
+ readonly kind: "object"
9
+ readonly ref: ObjectRef
10
+ /**
11
+ * What the chat shows for this object instead of its title. Display only: it is not part of
12
+ * the context's identity and is never sent to the model.
13
+ */
14
+ readonly label?: string
15
+ }
8
16
  | {
9
17
  readonly kind: "app-state"
10
18
  readonly id: string
@@ -28,16 +36,25 @@ export interface AgentContextPart extends AgentContextEntryInput {
28
36
  export const MAX_AGENT_CONTEXT_ENTRIES = 12
29
37
  export const MAX_AGENT_APP_STATE_ENTRY_BYTES = 16 * 1024
30
38
  export const MAX_AGENT_APP_STATE_TOTAL_BYTES = 64 * 1024
39
+ export const MAX_AGENT_CONTEXT_LABEL_LENGTH = 200
31
40
 
32
41
  /** Typed constructors for context values shared by custom apps and agent clients. */
33
42
  export const agentContext = {
34
43
  object<const TObjectTypeId extends string>(
35
44
  objectType: { readonly id: TObjectTypeId },
36
- primaryId: string
45
+ primaryId: string,
46
+ options: { readonly label?: string } = {}
37
47
  ) {
48
+ const label =
49
+ options.label === undefined
50
+ ? undefined
51
+ : objectContextLabel(options.label, "agentContext.object() label", (message) => {
52
+ throw new TypeError(`[Sixb] ${message}.`)
53
+ })
38
54
  return {
39
55
  kind: "object" as const,
40
56
  ref: { objectTypeId: objectType.id, primaryId },
57
+ ...(label === undefined ? {} : { label }),
41
58
  }
42
59
  },
43
60
 
@@ -85,7 +102,13 @@ export function normalizeAgentContextEntries(
85
102
  for (const [index, rawEntry] of input.entries()) {
86
103
  const entry = normalizeEntry(rawEntry, index)
87
104
  const identity = agentContextIdentity(entry.context)
88
- const serialized = stableJsonStringify(entry)
105
+ // A label is display only, so two entries that differ only by label are the same entry; the
106
+ // first one's label is kept.
107
+ const serialized = stableJsonStringify(
108
+ entry.context.kind === "object"
109
+ ? { ...entry, context: { kind: "object", ref: entry.context.ref } }
110
+ : entry
111
+ )
89
112
  const existing = byIdentity.get(identity)
90
113
 
91
114
  if (existing !== undefined) {
@@ -133,8 +156,16 @@ function normalizeEntry(rawEntry: unknown, index: number): AgentContextEntryInpu
133
156
  context.ref.primaryId,
134
157
  `context[${index}].context.ref.primaryId`
135
158
  )
159
+ const label =
160
+ context.label === undefined
161
+ ? undefined
162
+ : objectContextLabel(context.label, `context[${index}].context.label`, invalidContext)
136
163
  return {
137
- context: { kind: "object", ref: { objectTypeId, primaryId } },
164
+ context: {
165
+ kind: "object",
166
+ ref: { objectTypeId, primaryId },
167
+ ...(label === undefined ? {} : { label }),
168
+ },
138
169
  origin: rawEntry.origin,
139
170
  }
140
171
  }
@@ -165,6 +196,19 @@ function normalizeEntry(rawEntry: unknown, index: number): AgentContextEntryInpu
165
196
  invalidContext(`context[${index}].context.kind must be 'object' or 'app-state'`)
166
197
  }
167
198
 
199
+ function objectContextLabel(
200
+ value: unknown,
201
+ label: string,
202
+ fail: (message: string) => never
203
+ ): string {
204
+ const trimmed = typeof value === "string" ? value.trim() : ""
205
+ if (!trimmed) fail(`${label} must be a non-empty string`)
206
+ if (trimmed.length > MAX_AGENT_CONTEXT_LABEL_LENGTH) {
207
+ fail(`${label} must be at most ${MAX_AGENT_CONTEXT_LABEL_LENGTH} characters`)
208
+ }
209
+ return trimmed
210
+ }
211
+
168
212
  function requireNonEmptyString(value: unknown, label: string): string {
169
213
  if (typeof value !== "string" || value.trim().length === 0) {
170
214
  invalidContext(`${label} must be a non-empty string`)
@@ -12,4 +12,5 @@ export {
12
12
  MAX_AGENT_APP_STATE_ENTRY_BYTES,
13
13
  MAX_AGENT_APP_STATE_TOTAL_BYTES,
14
14
  MAX_AGENT_CONTEXT_ENTRIES,
15
+ MAX_AGENT_CONTEXT_LABEL_LENGTH,
15
16
  } from "./entries"
@@ -1,5 +1,6 @@
1
1
  import { stableJsonStringify } from "../json"
2
2
  import type { AgentMessageRecord } from "../storage/agents/types"
3
+ import { AGENT_CONTINUATION_INSTRUCTION } from "./adapters"
3
4
  import type { AgentMessage, AgentMessagePart } from "./message"
4
5
 
5
6
  export const AGENT_CONTEXT_ESTIMATOR_VERSION = 1 as const
@@ -144,6 +145,9 @@ function estimateMessageTokens(
144
145
  case "step-start":
145
146
  tokens += STEP_OVERHEAD_TOKENS
146
147
  break
148
+ case "continuation":
149
+ tokens += textTokens(AGENT_CONTINUATION_INSTRUCTION)
150
+ break
147
151
  case "context":
148
152
  tokens += textTokens(stableJsonStringify(part.context))
149
153
  break
@@ -199,6 +203,8 @@ function serializeSummaryPart(
199
203
  case "provider-state":
200
204
  case "step-start":
201
205
  return []
206
+ case "continuation":
207
+ return [`${indent}<continuation_request />`]
202
208
  case "context":
203
209
  return part.context.kind === "object"
204
210
  ? [
@@ -33,12 +33,15 @@ export type AgentRequestErrorCode =
33
33
  | "agent_not_found"
34
34
  | "model_not_found"
35
35
  | "invalid_model_selection"
36
+ | "invalid_locale"
37
+ | "invalid_message"
36
38
  | "run_not_found"
37
39
  | "run_not_retryable"
38
40
  | "thread_not_found"
39
41
  | "active_run_exists"
40
42
  | "authority_not_inheritable"
41
43
  | "invalid_context"
44
+ | "invalid_attachment"
42
45
  | "storage_unavailable"
43
46
  | "sandbox_not_configured"
44
47
  | "invalid_sandbox_params"
@@ -1,3 +1,4 @@
1
+ export type { PropertyClearance } from "../objects/property-clearance"
1
2
  export type {
2
3
  AgentFileDataProjection,
3
4
  AgentFileDataResolverInput,
@@ -18,6 +19,7 @@ export {
18
19
  agentServiceAccountId,
19
20
  ensureManagedAgentExecutionIdentity,
20
21
  resolveAgentExecutionAuthorization,
22
+ resolveAgentPropertyClearance,
21
23
  resolveInheritedAgentExecutionAuthorization,
22
24
  } from "./authority"
23
25
  export { defineAgentTool } from "./builders"
@@ -84,6 +86,7 @@ export {
84
86
  } from "./ids"
85
87
  export {
86
88
  AGENT_MESSAGE_CONTENT_VERSION,
89
+ type AgentContinuationPart,
87
90
  type AgentFilePart,
88
91
  type AgentMessage,
89
92
  type AgentMessagePart,
@@ -105,11 +108,19 @@ export type {
105
108
  export { runModelLoop } from "./model-loop"
106
109
  export { agent } from "./reference"
107
110
  export {
111
+ isRetryableAgentRun,
108
112
  type RequestAgentRunInput,
109
113
  type RequestAgentRunResult,
110
114
  requestAgentRun,
111
115
  retryAgentRun,
112
116
  } from "./request"
117
+ export type {
118
+ AgentDefinitions,
119
+ AgentDefinitionsInput,
120
+ AgentProjectFile,
121
+ AgentSkillCatalog,
122
+ AgentSkillDefinition,
123
+ } from "./skills"
113
124
  export type {
114
125
  AgentCompactionFailureCode,
115
126
  AgentRunControlStreamId,
@@ -144,11 +155,11 @@ export { isAgentToolResult } from "./tool-result"
144
155
  export type {
145
156
  AgentDescriptor,
146
157
  AgentReasoning,
147
- AgentReasoningLevel,
148
158
  AgentReference,
149
159
  AgentToolArtifact,
150
160
  AgentToolArtifactPutInput,
151
161
  AgentToolArtifacts,
162
+ AgentToolAttachments,
152
163
  AgentToolContent,
153
164
  AgentToolDefinition,
154
165
  AgentToolDescriptionBuilder,
@@ -161,6 +172,7 @@ export type {
161
172
  AgentToolRunBuilder,
162
173
  AgentToolRunContext,
163
174
  AgentToolRunInfo,
175
+ AgentToolRuntimeFacade,
164
176
  AgentToolTextContent,
165
177
  AgentUsageReference,
166
178
  InferAgentToolInput,
@@ -60,6 +60,14 @@ interface AgentToolCallBase {
60
60
  readonly providerMetadata?: ProviderData
61
61
  }
62
62
 
63
+ /**
64
+ * The user asked the Agent to continue an answer the turn limit cut short. Sixb writes the
65
+ * instruction the model reads; chats show no message for it.
66
+ */
67
+ export interface AgentContinuationPart {
68
+ readonly type: "continuation"
69
+ }
70
+
63
71
  /** Ordered, hidden provider state required to replay a model response losslessly. */
64
72
  export interface AgentProviderStatePart {
65
73
  readonly type: "provider-state"
@@ -84,6 +92,7 @@ export type AgentMessagePart =
84
92
  | AgentStepStartPart
85
93
  | AgentFilePart
86
94
  | AgentContextPart
95
+ | AgentContinuationPart
87
96
  | AgentToolCallPart
88
97
  | AgentProviderStatePart
89
98
 
@@ -3,6 +3,7 @@ import type { Principal } from "../auth"
3
3
  import { SYSTEM_PRINCIPAL } from "../auth"
4
4
  import { assertAuthorized } from "../authorization"
5
5
  import type { FileRef } from "../blob-storage"
6
+ import { isValidFileRef } from "../blob-storage/validation"
6
7
  import {
7
8
  canInheritAgentRequestAuthorization,
8
9
  createInheritedAgentExecutionRecord,
@@ -10,8 +11,10 @@ import {
10
11
  import { resolveExecutionScopeAuthorization } from "../execution/authorization"
11
12
  import { ensureExecutionRecord, executionRecordInputFromRuntime } from "../execution/durable"
12
13
  import type { ExecutionContext } from "../execution/types"
13
- import type { LanguageModelCatalog, LanguageModelRef } from "../models"
14
- import { isModelReasoning } from "../models/language-model"
14
+ import type { LanguageModelCatalog, LanguageModelEntry, LanguageModelRef } from "../models"
15
+ import { isModelReasoning, modelReasoningSupportIssue } from "../models/language-model"
16
+ import { resolveLanguageModel } from "../models/resolve"
17
+ import { canonicalLocale, canonicalTimeZone } from "../runtime/locale"
15
18
  import type { SixbRuntimeContext } from "../runtime/types"
16
19
  import {
17
20
  type AgentStorage,
@@ -33,13 +36,19 @@ import { resolveAgentContextParts } from "./context-resolution"
33
36
  import { dispatchQueuedAgentRuns } from "./dispatch"
34
37
  import { AgentRequestError } from "./errors"
35
38
  import { createAgentMessageId, createAgentRunId, createAgentThreadId } from "./ids"
39
+ import type { AgentMessagePart } from "./message"
36
40
  import { assertNoAgentSelector } from "./retired-config"
37
41
  import { publishAgentRunActivity } from "./streams/protocol"
38
- import { AGENT_REASONING_LEVELS, type AgentReasoningLevel } from "./types"
42
+ import { AGENT_REASONING_LEVELS, type AgentReasoning } from "./types"
39
43
 
40
44
  export interface RequestAgentRunInput {
41
- /** The user's message that triggers the turn. */
42
- readonly text: string
45
+ /** The user's message that triggers the turn. Omitted only to {@link continue}. */
46
+ readonly text?: string
47
+ /**
48
+ * Continue an answer the turn limit cut short, in an existing thread. Sixb writes the
49
+ * instruction the model reads, so the request carries no text, attachments, or context.
50
+ */
51
+ readonly continue?: boolean
43
52
  /** Blob-backed files attached to the trigger message. */
44
53
  readonly attachments?: readonly FileRef[]
45
54
  /** Structured page/object context snapshotted onto the triggering user message. */
@@ -48,8 +57,15 @@ export interface RequestAgentRunInput {
48
57
  readonly threadId?: string
49
58
  /** Configured language model selected for this turn. Omitted uses the agent default. */
50
59
  readonly model?: LanguageModelRef
51
- /** Provider-neutral reasoning effort selected for this turn. */
52
- readonly reasoning?: AgentReasoningLevel
60
+ /** Reasoning effort or token budget for this turn. Omitted uses the model's default. */
61
+ readonly reasoning?: AgentReasoning
62
+ /**
63
+ * IANA time zone of the person asking, such as their browser's. The Agent presents dates and
64
+ * times in it. Omitted uses the project time zone.
65
+ */
66
+ readonly timeZone?: string
67
+ /** BCP 47 language of the person asking. Omitted uses the project locale. */
68
+ readonly locale?: string
53
69
  /** Title to stamp on the thread when one is created. */
54
70
  readonly title?: string
55
71
  /** Explicit id for the trigger (user) message. Defaults to a generated id. */
@@ -88,7 +104,17 @@ export async function requestAgentRun(
88
104
  assertNoAgentSelector(input)
89
105
  assertAuthorized(runtime, { kind: "agent.run" })
90
106
  assertRequestAuthorityCanRunAgent(runtime)
91
- const spec = resolveConversationRunSpec({ models, input })
107
+ const trigger = triggerParts(input)
108
+ const continued = input.continue ? await continuedSelection(runtime, models, input) : {}
109
+ const spec = await resolveConversationRunSpec({
110
+ models,
111
+ input: {
112
+ ...input,
113
+ model: input.model ?? continued.model,
114
+ reasoning: input.reasoning ?? continued.reasoning,
115
+ },
116
+ })
117
+ assertAttachments(input.attachments)
92
118
 
93
119
  // Resolve context before creating a thread: invalid or inaccessible references must not leave an
94
120
  // empty conversation behind. The resulting parts are the exact snapshot persisted below.
@@ -142,7 +168,7 @@ export async function requestAgentRun(
142
168
  role: "user",
143
169
  parts: [
144
170
  ...contextParts,
145
- { type: "text", text: input.text },
171
+ ...trigger,
146
172
  ...(input.attachments ?? []).map((fileRef) => ({ type: "file" as const, fileRef })),
147
173
  ],
148
174
  authorPrincipal: principal,
@@ -173,6 +199,15 @@ export async function requestAgentRun(
173
199
  }
174
200
  }
175
201
 
202
+ /** A failed turn, or one its worker died during, can run again from the same trigger message. */
203
+ export function isRetryableAgentRun(
204
+ run: Pick<ConversationAgentRunRecord, "status" | "finishReason">
205
+ ): boolean {
206
+ return (
207
+ run.status === "failed" || (run.status === "cancelled" && run.finishReason === "interrupted")
208
+ )
209
+ }
210
+
176
211
  /** Retry a failed turn as a new child execution while reusing its immutable trigger message. */
177
212
  export async function retryAgentRun(
178
213
  runtime: SixbRuntimeContext,
@@ -186,10 +221,10 @@ export async function retryAgentRun(
186
221
  })
187
222
  assertAuthorized(runtime, { kind: "agent.run" })
188
223
  assertRequestAuthorityCanRunAgent(runtime)
189
- if (failedRun.status !== "failed") {
224
+ if (!isRetryableAgentRun(failedRun)) {
190
225
  throw new AgentRequestError(
191
226
  "run_not_retryable",
192
- `[Sixb] Only failed Agent runs can be retried.`
227
+ `[Sixb] Only failed or interrupted Agent runs can be retried.`
193
228
  )
194
229
  }
195
230
 
@@ -227,10 +262,10 @@ export async function retryAgentRun(
227
262
  triggerMessageId: failedRun.triggerMessageId,
228
263
  spec:
229
264
  failedRun.spec ??
230
- resolveConversationRunSpec({
265
+ (await resolveConversationRunSpec({
231
266
  models,
232
267
  input: {},
233
- }),
268
+ })),
234
269
  })
235
270
  })
236
271
  await publishRunActivity(runtime, run)
@@ -238,6 +273,70 @@ export async function retryAgentRun(
238
273
  return { run, ...(jobId ? { jobId } : {}), createdThread: false }
239
274
  }
240
275
 
276
+ /**
277
+ * A continuation picks up where the cut-short turn stopped, with its model and reasoning unless the
278
+ * request chooses others. A model that has since left the catalog falls back to the defaults.
279
+ */
280
+ async function continuedSelection(
281
+ runtime: SixbRuntimeContext,
282
+ models: LanguageModelCatalog | undefined,
283
+ input: RequestAgentRunInput
284
+ ): Promise<Pick<RequestAgentRunInput, "model" | "reasoning">> {
285
+ const agents = requireAgentStorage(runtime)
286
+ const threadId = input.threadId ?? ""
287
+ if (!(await agents.threads.getById({ projectId: runtime.projectId, id: threadId }))) {
288
+ throw new AgentRequestError(
289
+ "thread_not_found",
290
+ "[Sixb] An Agent continuation needs an existing thread."
291
+ )
292
+ }
293
+ if (input.model !== undefined || input.reasoning !== undefined) return {}
294
+ const { runs } = await agents.runs.list({
295
+ projectId: runtime.projectId,
296
+ threadId,
297
+ kinds: ["conversation"],
298
+ order: "desc",
299
+ limit: 1,
300
+ })
301
+ const spec = runs[0]?.kind === "conversation" ? runs[0].spec : undefined
302
+ if (!spec || !models?.getByRef(spec.model)) return {}
303
+ return {
304
+ model: spec.model,
305
+ ...(spec.reasoning === undefined ? {} : { reasoning: spec.reasoning }),
306
+ }
307
+ }
308
+
309
+ /** The words of the user, or the continuation Sixb words for them. */
310
+ function triggerParts(input: RequestAgentRunInput): readonly AgentMessagePart[] {
311
+ if (input.continue === true) {
312
+ if (input.text !== undefined || input.attachments?.length || input.context?.length) {
313
+ throw new AgentRequestError(
314
+ "invalid_message",
315
+ "[Sixb] An Agent continuation carries no text, attachments, or context."
316
+ )
317
+ }
318
+ return [{ type: "continuation" }]
319
+ }
320
+ if (typeof input.text !== "string" || input.text.trim().length === 0) {
321
+ throw new AgentRequestError(
322
+ "invalid_message",
323
+ "[Sixb] An Agent message needs text, or `continue: true` to continue the previous answer."
324
+ )
325
+ }
326
+ return [{ type: "text", text: input.text }]
327
+ }
328
+
329
+ function assertAttachments(attachments: readonly FileRef[] | undefined): void {
330
+ for (const [index, attachment] of (attachments ?? []).entries()) {
331
+ if (!isValidFileRef(attachment)) {
332
+ throw new AgentRequestError(
333
+ "invalid_attachment",
334
+ `[Sixb] Attachment ${index} is not a valid file reference.`
335
+ )
336
+ }
337
+ }
338
+ }
339
+
241
340
  function assertSandboxExecutionAvailable(thread: AgentThreadRecord): void {
242
341
  if (thread.sandboxState && !["new", "ready"].includes(thread.sandboxState.status)) {
243
342
  throw new AgentRequestError(
@@ -281,10 +380,14 @@ async function assertAiLimitPreflight(
281
380
  }
282
381
  }
283
382
 
284
- function resolveConversationRunSpec(input: {
383
+ /**
384
+ * Freeze the model selection of a turn. The model's default reasoning is resolved here, not by the
385
+ * worker, so a retry runs with the reasoning the turn was admitted with.
386
+ */
387
+ async function resolveConversationRunSpec(input: {
285
388
  readonly models?: LanguageModelCatalog
286
- readonly input: Pick<RequestAgentRunInput, "model" | "reasoning">
287
- }): ConversationAgentRunSpec {
389
+ readonly input: Pick<RequestAgentRunInput, "model" | "reasoning" | "timeZone" | "locale">
390
+ }): Promise<ConversationAgentRunSpec> {
288
391
  if (!input.models) {
289
392
  throw new AgentRequestError(
290
393
  "model_not_found",
@@ -300,20 +403,73 @@ function resolveConversationRunSpec(input: {
300
403
  )
301
404
  }
302
405
 
303
- const reasoning = input.input.reasoning
304
- if (reasoning !== undefined && !isModelReasoning(reasoning)) {
305
- throw new AgentRequestError(
306
- "invalid_model_selection",
307
- `[Sixb] Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
308
- )
406
+ const explicitReasoning = input.input.reasoning
407
+ if (explicitReasoning !== undefined) {
408
+ await assertModelSupportsReasoning(model, explicitReasoning)
309
409
  }
410
+ const reasoning = explicitReasoning ?? model.model.defaultReasoning
411
+ const timeZone = requestedSetting(
412
+ "timeZone",
413
+ input.input.timeZone,
414
+ canonicalTimeZone,
415
+ "an IANA time zone"
416
+ )
417
+ const locale = requestedSetting(
418
+ "locale",
419
+ input.input.locale,
420
+ canonicalLocale,
421
+ "a BCP 47 language tag"
422
+ )
310
423
 
311
424
  return Object.freeze({
312
425
  model: Object.freeze({ provider: selected.provider, modelId: selected.modelId }),
313
426
  ...(reasoning === undefined ? {} : { reasoning }),
427
+ ...(timeZone === undefined ? {} : { timeZone }),
428
+ ...(locale === undefined ? {} : { locale }),
314
429
  })
315
430
  }
316
431
 
432
+ function requestedSetting(
433
+ field: "timeZone" | "locale",
434
+ value: string | undefined,
435
+ canonical: (value: unknown) => string | undefined,
436
+ expected: string
437
+ ): string | undefined {
438
+ if (value === undefined) return undefined
439
+ const resolved = canonical(value)
440
+ if (resolved === undefined) {
441
+ throw new AgentRequestError(
442
+ "invalid_locale",
443
+ `[Sixb] Agent request '${field}' must be ${expected}; received ${JSON.stringify(value)}.`
444
+ )
445
+ }
446
+ return resolved
447
+ }
448
+
449
+ // Checked against the model's resolved capabilities, as `GET /api/models` reports them (its
450
+ // configured ones when the provider catalog is unavailable). Undeclared capabilities accept any
451
+ // level; the provider then falls back to its own default.
452
+ async function assertModelSupportsReasoning(
453
+ entry: LanguageModelEntry,
454
+ reasoning: unknown
455
+ ): Promise<void> {
456
+ if (!isModelReasoning(reasoning)) {
457
+ throw new AgentRequestError(
458
+ "invalid_model_selection",
459
+ `[Sixb] Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
460
+ )
461
+ }
462
+ if (reasoning === "provider-default") return
463
+ const model = await resolveLanguageModel(entry.model)
464
+ const issue = modelReasoningSupportIssue(model.definition.capabilities.reasoning, reasoning)
465
+ if (issue !== undefined) {
466
+ throw new AgentRequestError(
467
+ "invalid_model_selection",
468
+ `[Sixb] Language model '${entry.provider}/${entry.modelId}' cannot use this reasoning: ${issue}.`
469
+ )
470
+ }
471
+ }
472
+
317
473
  async function prepareDurableAgentExecution(
318
474
  runtime: SixbRuntimeContext,
319
475
  execution: ExecutionContext,
@@ -0,0 +1,63 @@
1
+ import type { OntologyDocsCatalog, OntologyDocsInput } from "../ontology/docs"
2
+ import { RuntimeError } from "../runtime/errors"
3
+
4
+ /** A project file the Agent receives byte-for-byte in its sandbox. */
5
+ export interface AgentProjectFile {
6
+ /** POSIX path, relative to the directory the file is installed in. */
7
+ readonly path: string
8
+ readonly contents: string | Uint8Array
9
+ /** Permission bits, kept only for executable files. */
10
+ readonly mode?: number
11
+ }
12
+
13
+ /** An Agent Skill read from `skills/<name>/SKILL.md` and the files next to it. */
14
+ export interface AgentSkillDefinition {
15
+ readonly name: string
16
+ readonly description: string
17
+ /** Every file of the skill directory, `SKILL.md` included. */
18
+ readonly files: readonly AgentProjectFile[]
19
+ }
20
+
21
+ /** Immutable catalog of the Agent Skills registered with a Sixb host. */
22
+ export interface AgentSkillCatalog {
23
+ list(): readonly AgentSkillDefinition[]
24
+ getByName(name: string): AgentSkillDefinition | null
25
+ }
26
+
27
+ /** The project files the Agent reads. createSixb() discovers them; tests may pass them directly. */
28
+ export interface AgentDefinitionsInput {
29
+ /** Agent Skills, from `skills/`. */
30
+ readonly skills?: readonly AgentSkillDefinition[]
31
+ /** The conversational Agent's instructions, from `SIXB.md`. */
32
+ readonly instructions?: string
33
+ /** The modules, docs, and scripts of `ontology/`. */
34
+ readonly ontologyDocs?: OntologyDocsInput
35
+ }
36
+
37
+ /** The project files the Agent reads, validated with the other definitions. */
38
+ export interface AgentDefinitions {
39
+ readonly skills: AgentSkillCatalog
40
+ /** Absent without `SIXB.md`. */
41
+ readonly instructions?: string
42
+ /** Where each object type's reference doc lives, with the docs and scripts of `ontology/`. */
43
+ readonly ontologyDocs: OntologyDocsCatalog
44
+ }
45
+
46
+ /** Index skills by name. Discovery validates each skill; names must also be unique. */
47
+ export function createAgentSkillCatalog(
48
+ definitions: readonly AgentSkillDefinition[] | undefined
49
+ ): AgentSkillCatalog {
50
+ const skills = Object.freeze([...(definitions ?? [])])
51
+ const skillsByName = new Map<string, AgentSkillDefinition>()
52
+ for (const skill of skills) {
53
+ if (skillsByName.has(skill.name)) {
54
+ throw new RuntimeError(`[Sixb] Duplicate Agent Skill name: ${skill.name}`)
55
+ }
56
+ skillsByName.set(skill.name, skill)
57
+ }
58
+
59
+ return Object.freeze({
60
+ list: () => skills,
61
+ getByName: (name: string) => skillsByName.get(name) ?? null,
62
+ })
63
+ }