@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.
- package/README.md +7 -6
- package/dist/actions/commit-edits.d.ts +7 -19
- package/dist/actions/commit-edits.d.ts.map +1 -1
- package/dist/actions/errors.d.ts +0 -3
- package/dist/actions/errors.d.ts.map +1 -1
- package/dist/actions/execution.d.ts +10 -3
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.d.ts +6 -9
- package/dist/actions/index.d.ts.map +1 -1
- package/dist/actions/index.js +56 -52
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +1 -1
- package/dist/actions/request.d.ts +14 -25
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run/context.d.ts +40 -0
- package/dist/actions/run/context.d.ts.map +1 -0
- package/dist/actions/run/edits-commit.d.ts +31 -0
- package/dist/actions/run/edits-commit.d.ts.map +1 -0
- package/dist/actions/run/effects.d.ts +23 -0
- package/dist/actions/run/effects.d.ts.map +1 -0
- package/dist/actions/run/execute.d.ts +30 -0
- package/dist/actions/run/execute.d.ts.map +1 -0
- package/dist/actions/run/executor.d.ts +95 -0
- package/dist/actions/run/executor.d.ts.map +1 -0
- package/dist/actions/run/normalize.d.ts +36 -0
- package/dist/actions/run/normalize.d.ts.map +1 -0
- package/dist/actions/run/phase-types.d.ts +18 -0
- package/dist/actions/run/phase-types.d.ts.map +1 -0
- package/dist/actions/run/phases.d.ts +20 -0
- package/dist/actions/run/phases.d.ts.map +1 -0
- package/dist/actions/run/run-action.d.ts +25 -0
- package/dist/actions/run/run-action.d.ts.map +1 -0
- package/dist/actions/run/signals.d.ts +67 -0
- package/dist/actions/run/signals.d.ts.map +1 -0
- package/dist/actions/run/state.d.ts +47 -0
- package/dist/actions/run/state.d.ts.map +1 -0
- package/dist/actions/run/types.d.ts +54 -0
- package/dist/actions/run/types.d.ts.map +1 -0
- package/dist/actions/run/writeback.d.ts +17 -0
- package/dist/actions/run/writeback.d.ts.map +1 -0
- package/dist/actions/run-authorization.d.ts +1 -1
- package/dist/actions/run-authorization.d.ts.map +1 -1
- package/dist/actions/run-persistence.d.ts +53 -0
- package/dist/actions/run-persistence.d.ts.map +1 -0
- package/dist/actions/types/context.d.ts +10 -0
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/agents/adapters.d.ts +7 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/authority.d.ts +7 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/context/entries.d.ts +10 -1
- package/dist/agents/context/entries.d.ts.map +1 -1
- package/dist/agents/context/index.d.ts +1 -1
- package/dist/agents/context/index.d.ts.map +1 -1
- package/dist/agents/context/index.js +4 -2
- package/dist/agents/context/index.js.map +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/index.d.ts +6 -4
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +63 -59
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/message.d.ts +8 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/request.d.ts +19 -5
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/skills.d.ts +41 -0
- package/dist/agents/skills.d.ts.map +1 -0
- package/dist/agents/streams/index.js +2 -2
- package/dist/agents/streams/internal.js +2 -2
- package/dist/agents/types.d.ts +33 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/auth/index.js +12 -9
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/types.d.ts +6 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/index.js +6 -4
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +1 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +7 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/blob-storage/browser.js +1 -1
- package/dist/blob-storage/execution.d.ts.map +1 -1
- package/dist/blob-storage/file-content.d.ts +18 -0
- package/dist/blob-storage/file-content.d.ts.map +1 -0
- package/dist/blob-storage/index.d.ts +1 -1
- package/dist/blob-storage/index.d.ts.map +1 -1
- package/dist/blob-storage/index.js +2 -2
- package/dist/blob-storage/internal.d.ts +2 -0
- package/dist/blob-storage/internal.d.ts.map +1 -1
- package/dist/blob-storage/internal.js +16 -4
- package/dist/blob-storage/internal.js.map +1 -1
- package/dist/blob-storage/media-type.d.ts +8 -0
- package/dist/blob-storage/media-type.d.ts.map +1 -0
- package/dist/blob-storage/types.d.ts +12 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/blob-storage/validation.d.ts +6 -0
- package/dist/blob-storage/validation.d.ts.map +1 -1
- package/dist/bootstrap/agent-context.d.ts +33 -0
- package/dist/bootstrap/agent-context.d.ts.map +1 -0
- package/dist/bootstrap/discovery.d.ts +23 -3
- package/dist/bootstrap/discovery.d.ts.map +1 -1
- package/dist/bootstrap/index.d.ts +2 -1
- package/dist/bootstrap/index.d.ts.map +1 -1
- package/dist/bootstrap/index.js +285 -77
- package/dist/bootstrap/index.js.map +4 -3
- package/dist/bootstrap/ontology-type-manifest.d.ts.map +1 -1
- package/dist/{chunk-t9shqx3w.js → chunk-1f7wpmyp.js} +143 -7
- package/dist/chunk-1f7wpmyp.js.map +14 -0
- package/dist/{chunk-jjrn5v0p.js → chunk-1k89ecfr.js} +1 -1
- package/dist/{chunk-9vx5e9g1.js → chunk-1sr8ryzk.js} +3 -3
- package/dist/chunk-1sr8ryzk.js.map +11 -0
- package/dist/{chunk-s7ftxrdr.js → chunk-29yx306f.js} +20 -3
- package/dist/{chunk-s7ftxrdr.js.map → chunk-29yx306f.js.map} +3 -3
- package/dist/{chunk-svabwqdq.js → chunk-3gnrh4ve.js} +44 -420
- package/dist/{chunk-svabwqdq.js.map → chunk-3gnrh4ve.js.map} +9 -13
- package/dist/{chunk-4ra628t7.js → chunk-3zxk45er.js} +70 -6
- package/dist/{chunk-4ra628t7.js.map → chunk-3zxk45er.js.map} +5 -4
- package/dist/{chunk-pja9jfz6.js → chunk-4tcx876c.js} +126 -64
- package/dist/chunk-4tcx876c.js.map +19 -0
- package/dist/{chunk-vre348sb.js → chunk-52bk93x8.js} +2 -2
- package/dist/{chunk-4gmng3vf.js → chunk-5e43w60z.js} +2 -2
- package/dist/{chunk-91kcnbf0.js → chunk-6gmfggss.js} +22 -9
- package/dist/chunk-6gmfggss.js.map +10 -0
- package/dist/{chunk-33saed7g.js → chunk-7kg3k1m9.js} +1 -1
- package/dist/{chunk-7ecp4v7a.js → chunk-7mbzgd9m.js} +10 -4
- package/dist/{chunk-7ecp4v7a.js.map → chunk-7mbzgd9m.js.map} +3 -3
- package/dist/{chunk-b9affek3.js → chunk-7n440zgt.js} +30 -30
- package/dist/{chunk-b9affek3.js.map → chunk-7n440zgt.js.map} +4 -4
- package/dist/{chunk-kkqwzy6h.js → chunk-7t429e3f.js} +1 -1
- package/dist/{chunk-xcy5ddha.js → chunk-80mc0971.js} +356 -301
- package/dist/chunk-80mc0971.js.map +15 -0
- package/dist/{chunk-gf7yht60.js → chunk-85yvv5n0.js} +27 -10
- package/dist/chunk-85yvv5n0.js.map +12 -0
- package/dist/{chunk-6fsr7y93.js → chunk-8mx7qw3y.js} +14 -13
- package/dist/{chunk-6fsr7y93.js.map → chunk-8mx7qw3y.js.map} +4 -4
- package/dist/{chunk-kpx7jrmn.js → chunk-91mg3nj9.js} +59 -59
- package/dist/{chunk-kpx7jrmn.js.map → chunk-91mg3nj9.js.map} +5 -5
- package/dist/{chunk-2am3db31.js → chunk-9gyp8hg1.js} +2 -2
- package/dist/{chunk-ewqa58h9.js → chunk-9k93ah50.js} +4 -4
- package/dist/{chunk-ewqa58h9.js.map → chunk-9k93ah50.js.map} +1 -1
- package/dist/{chunk-4wn7bxxa.js → chunk-9ybhtmg4.js} +1 -1
- package/dist/{chunk-fc5zfxy1.js → chunk-a40ad1ft.js} +5 -13
- package/dist/chunk-a40ad1ft.js.map +10 -0
- package/dist/{chunk-dam456ve.js → chunk-aff7cyea.js} +431 -70
- package/dist/{chunk-dam456ve.js.map → chunk-aff7cyea.js.map} +10 -7
- package/dist/{chunk-y2aq6ag9.js → chunk-b38szspf.js} +5 -14
- package/dist/chunk-b38szspf.js.map +11 -0
- package/dist/{chunk-r2y23egw.js → chunk-bkpke1sg.js} +1 -10
- package/dist/chunk-bkpke1sg.js.map +10 -0
- package/dist/{chunk-xyvy73tj.js → chunk-bpgy64fw.js} +8 -3
- package/dist/chunk-bpgy64fw.js.map +12 -0
- package/dist/{chunk-rb143ggb.js → chunk-bwjcehza.js} +1 -1
- package/dist/{chunk-5thzcb8g.js → chunk-c85m1hyj.js} +2 -2
- package/dist/{chunk-e67ynxcr.js → chunk-d2ync1v3.js} +5 -5
- package/dist/{chunk-3rrezgyc.js → chunk-dnmadg9k.js} +2 -2
- package/dist/chunk-enpsx8k5.js +127 -0
- package/dist/chunk-enpsx8k5.js.map +10 -0
- package/dist/chunk-ey3pyej1.js +8807 -0
- package/dist/chunk-ey3pyej1.js.map +106 -0
- package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
- package/dist/{chunk-9se093qz.js → chunk-gc4ntf7d.js} +4 -4
- package/dist/{chunk-9se093qz.js.map → chunk-gc4ntf7d.js.map} +1 -1
- package/dist/{chunk-98cw09sw.js → chunk-hkc3jct7.js} +4 -2
- package/dist/chunk-hkc3jct7.js.map +10 -0
- package/dist/{chunk-rpxz486p.js → chunk-hvsb78a1.js} +24 -8
- package/dist/{chunk-rpxz486p.js.map → chunk-hvsb78a1.js.map} +3 -3
- package/dist/{chunk-5yd8cchh.js → chunk-j2bp5ryw.js} +55 -246
- package/dist/{chunk-5yd8cchh.js.map → chunk-j2bp5ryw.js.map} +4 -4
- package/dist/{chunk-h3v76ams.js → chunk-jhm3zsa7.js} +25 -2
- package/dist/chunk-jhm3zsa7.js.map +12 -0
- package/dist/{chunk-w9yycd3t.js → chunk-kg5j6fct.js} +4 -8
- package/dist/{chunk-w9yycd3t.js.map → chunk-kg5j6fct.js.map} +3 -3
- package/dist/{chunk-vp3z1ckh.js → chunk-kyzq4wy9.js} +7 -7
- package/dist/{chunk-wr8qp979.js → chunk-m427qgq0.js} +9 -5
- package/dist/{chunk-wr8qp979.js.map → chunk-m427qgq0.js.map} +4 -3
- package/dist/{chunk-c2rga5cx.js → chunk-mfs23znk.js} +1 -1
- package/dist/{chunk-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
- package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
- package/dist/{chunk-a7er86jd.js → chunk-nre82s12.js} +1 -1
- package/dist/{chunk-1hqwggsn.js → chunk-nzapm6p0.js} +1 -2
- package/dist/chunk-nzapm6p0.js.map +12 -0
- package/dist/{chunk-wt4szfec.js → chunk-pbcbn83d.js} +4 -4
- package/dist/{chunk-wt4szfec.js.map → chunk-pbcbn83d.js.map} +1 -1
- package/dist/{chunk-dmn70ztd.js → chunk-pfp1txq2.js} +25 -6
- package/dist/chunk-pfp1txq2.js.map +11 -0
- package/dist/chunk-pqajwytd.js.map +2 -2
- package/dist/{chunk-f1xh7a32.js → chunk-q1vkr2ys.js} +4 -4
- package/dist/chunk-rdghfsss.js.map +2 -2
- package/dist/{chunk-23xs4qp9.js → chunk-rhg02hxq.js} +4 -4
- package/dist/{chunk-cd234ba4.js → chunk-rz53yb4v.js} +10 -5
- package/dist/chunk-rz53yb4v.js.map +14 -0
- package/dist/{chunk-aq39q04r.js → chunk-s16apyk9.js} +104 -18
- package/dist/chunk-s16apyk9.js.map +16 -0
- package/dist/{chunk-69266efg.js → chunk-s54c868q.js} +12 -4
- package/dist/chunk-s54c868q.js.map +12 -0
- package/dist/{chunk-k4g51s47.js → chunk-t6vq7bff.js} +5 -5
- package/dist/{chunk-sk0hcjsz.js → chunk-tjb1mk5t.js} +3 -3
- package/dist/{chunk-cnb5kv05.js → chunk-tpn40322.js} +23 -8
- package/dist/chunk-tpn40322.js.map +19 -0
- package/dist/{chunk-rx7h5fdx.js → chunk-v9xd5wzd.js} +1 -1
- package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
- package/dist/chunk-wwdfe68s.js +128 -0
- package/dist/chunk-wwdfe68s.js.map +11 -0
- package/dist/{chunk-jnfxmr3f.js → chunk-wz0xs816.js} +6 -6
- package/dist/{chunk-jnfxmr3f.js.map → chunk-wz0xs816.js.map} +1 -1
- package/dist/chunk-xt1zt7gv.js +471 -0
- package/dist/chunk-xt1zt7gv.js.map +13 -0
- package/dist/chunk-y0c4e6ex.js +16 -0
- package/dist/chunk-y0c4e6ex.js.map +10 -0
- package/dist/{chunk-5be2ath4.js → chunk-y7rqfrgg.js} +20 -138
- package/dist/{chunk-5be2ath4.js.map → chunk-y7rqfrgg.js.map} +8 -9
- package/dist/{chunk-z5rnrmz1.js → chunk-yw9pyg66.js} +5 -3
- package/dist/chunk-yw9pyg66.js.map +11 -0
- package/dist/{chunk-dfm066qg.js → chunk-yxd3nnqt.js} +2 -29
- package/dist/chunk-yxd3nnqt.js.map +11 -0
- package/dist/{chunk-70jmg2zx.js → chunk-yzwja0mj.js} +4 -19
- package/dist/{chunk-70jmg2zx.js.map → chunk-yzwja0mj.js.map} +3 -3
- package/dist/{chunk-fggq3d9k.js → chunk-zrmy8zvw.js} +66 -47
- package/dist/{chunk-fggq3d9k.js.map → chunk-zrmy8zvw.js.map} +4 -4
- package/dist/datasets/builders.d.ts +12 -1
- package/dist/datasets/builders.d.ts.map +1 -1
- package/dist/datasets/execution.d.ts +27 -1
- package/dist/datasets/execution.d.ts.map +1 -1
- package/dist/datasets/index.d.ts +1 -1
- package/dist/datasets/index.d.ts.map +1 -1
- package/dist/datasets/types.d.ts +2 -0
- package/dist/datasets/types.d.ts.map +1 -1
- package/dist/datasets/write.d.ts +5 -0
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +10 -5
- package/dist/datasets/write.js.map +1 -1
- package/dist/deploy/index.d.ts +1 -1
- package/dist/deploy/index.d.ts.map +1 -1
- package/dist/deploy/internal.js +10 -8
- package/dist/deploy/internal.js.map +4 -4
- package/dist/deploy/services.d.ts +1 -2
- package/dist/deploy/services.d.ts.map +1 -1
- package/dist/deploy/types.d.ts +6 -5
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/validation.d.ts.map +1 -1
- package/dist/edits/index.js +3 -5
- package/dist/edits/index.js.map +1 -1
- package/dist/edits/properties.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +3 -3
- package/dist/error-reporting/types.d.ts +2 -9
- package/dist/error-reporting/types.d.ts.map +1 -1
- package/dist/errors/catalog.d.ts +12 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/definitions.d.ts +0 -5
- package/dist/events/definitions.d.ts.map +1 -1
- package/dist/events/execution.d.ts +2 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.d.ts +3 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +6 -8
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.d.ts +0 -1
- package/dist/events/scope.d.ts.map +1 -1
- package/dist/events/scope.js +1 -1
- package/dist/events/selectors/builder.d.ts +1 -8
- package/dist/events/selectors/builder.d.ts.map +1 -1
- package/dist/events/selectors/index.d.ts +2 -2
- package/dist/events/selectors/index.d.ts.map +1 -1
- package/dist/events/selectors/index.js +2 -2
- package/dist/events/selectors/predicate.d.ts.map +1 -1
- package/dist/events/selectors/types.d.ts +2 -33
- package/dist/events/selectors/types.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +1 -12
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/events/types/objects.d.ts +5 -0
- package/dist/events/types/objects.d.ts.map +1 -1
- package/dist/execution/agent.d.ts +10 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +50 -48
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +6 -1
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/primitive.js +60 -88
- package/dist/execution/primitive.js.map +3 -4
- package/dist/execution/request.js +46 -46
- package/dist/execution/request.js.map +1 -1
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +120 -124
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +8 -5
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/materialization/index.js +3 -3
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +19 -6
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/index.js +35 -32
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/models/catalog.d.ts +1 -1
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +6 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.js +26 -23
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +4 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/index.js +1 -1
- package/dist/models/language-model.d.ts +6 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/objects/action/errors.d.ts +0 -9
- package/dist/objects/action/errors.d.ts.map +1 -1
- package/dist/objects/action/index.d.ts +3 -3
- package/dist/objects/action/index.d.ts.map +1 -1
- package/dist/objects/action/request.d.ts +2 -8
- package/dist/objects/action/request.d.ts.map +1 -1
- package/dist/objects/context/index.d.ts +1 -1
- package/dist/objects/context/index.d.ts.map +1 -1
- package/dist/objects/context/types.d.ts +6 -0
- package/dist/objects/context/types.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +2 -3
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +49 -30
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/property-clearance.d.ts +41 -0
- package/dist/objects/property-clearance.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +3 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.js +34 -31
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/validate.d.ts +10 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/file-handle.d.ts +6 -0
- package/dist/objects/sdk/file-handle.d.ts.map +1 -0
- package/dist/objects/sdk/object-handle.d.ts +2 -2
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts +2 -0
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/service/index.d.ts +0 -1
- package/dist/objects/service/index.d.ts.map +1 -1
- package/dist/ontology/builders.d.ts +12 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/docs-markdown.d.ts +35 -0
- package/dist/ontology/docs-markdown.d.ts.map +1 -0
- package/dist/ontology/docs.d.ts +50 -0
- package/dist/ontology/docs.d.ts.map +1 -0
- package/dist/ontology/index.js +7 -4
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/inference/index.d.ts +19 -0
- package/dist/ontology/inference/index.d.ts.map +1 -1
- package/dist/ontology/internal.d.ts +3 -1
- package/dist/ontology/internal.d.ts.map +1 -1
- package/dist/ontology/internal.js +276 -3
- package/dist/ontology/internal.js.map +4 -3
- package/dist/ontology/tokens.d.ts +8 -1
- package/dist/ontology/tokens.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +5 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/index.d.ts +1 -1
- package/dist/ontology/validation/index.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts +7 -0
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +34 -31
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +27 -24
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +1 -2
- package/dist/queues/in-memory.d.ts.map +1 -1
- package/dist/queues/index.d.ts +1 -1
- package/dist/queues/index.d.ts.map +1 -1
- package/dist/queues/index.js +1 -1
- package/dist/queues/types.d.ts +0 -7
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +11 -2
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/definitions.d.ts +3 -1
- package/dist/runtime/definitions.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +13 -2
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.js +30 -28
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/locale.d.ts +9 -0
- package/dist/runtime/locale.d.ts.map +1 -0
- package/dist/runtime/resolve-definitions.d.ts +4 -2
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +46 -39
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/scheduler/index.js +1 -1
- package/dist/scheduler/runtime.d.ts +3 -0
- package/dist/scheduler/runtime.d.ts.map +1 -1
- package/dist/schedules/builders.d.ts.map +1 -1
- package/dist/schedules/index.js +3 -3
- package/dist/schedules/runtime.d.ts.map +1 -1
- package/dist/schedules/validation.d.ts +0 -1
- package/dist/schedules/validation.d.ts.map +1 -1
- package/dist/security/builders.d.ts +11 -2
- package/dist/security/builders.d.ts.map +1 -1
- package/dist/security/every.d.ts +1 -1
- package/dist/security/index.d.ts +4 -4
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/markings.d.ts +19 -0
- package/dist/security/markings.d.ts.map +1 -0
- package/dist/security/redactions.d.ts +4 -0
- package/dist/security/redactions.d.ts.map +1 -0
- package/dist/security/registry.d.ts +7 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +25 -0
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +4 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +24 -21
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/action-runs/idempotency.d.ts +3 -4
- package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
- package/dist/storage/action-runs/in-memory.d.ts +2 -9
- package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/action-runs/index.d.ts +1 -3
- package/dist/storage/action-runs/index.d.ts.map +1 -1
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/action-runs/record.d.ts +20 -0
- package/dist/storage/action-runs/record.d.ts.map +1 -0
- package/dist/storage/action-runs/types.d.ts +39 -68
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +5 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +15 -9
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/file-upload-sessions/provider.js +12 -9
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/index.d.ts +3 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +36 -34
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +1 -1
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +11 -13
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/objects/execution-limits.d.ts +1 -1
- package/dist/storage/objects/execution-limits.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +7 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +2 -2
- package/dist/storage/projection-runs/provider.js +2 -2
- package/dist/storage/types.d.ts +1 -1
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +12 -9
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +35 -32
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/action-execution.d.ts +34 -4
- package/dist/testing/action-execution.d.ts.map +1 -1
- package/dist/testing/action-run-storage-contract.d.ts +11 -0
- package/dist/testing/action-run-storage-contract.d.ts.map +1 -0
- package/dist/testing/index.d.ts +2 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3213 -2869
- package/dist/testing/index.js.map +7 -6
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +29 -26
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +55 -55
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -3
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts +2 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +1 -7
- package/src/actions/commit-edits.ts +9 -37
- package/src/actions/errors.ts +0 -4
- package/src/actions/execution.ts +10 -10
- package/src/actions/index.ts +5 -24
- package/src/actions/read-facade.ts +2 -1
- package/src/actions/request.ts +157 -295
- package/src/actions/run/context.ts +193 -0
- package/src/actions/run/edits-commit.ts +102 -0
- package/src/actions/run/effects.ts +105 -0
- package/src/actions/run/execute.ts +113 -0
- package/src/actions/run/executor.ts +314 -0
- package/src/actions/run/normalize.ts +142 -0
- package/src/actions/run/phase-types.ts +20 -0
- package/src/actions/run/phases.ts +150 -0
- package/src/actions/run/run-action.ts +170 -0
- package/src/actions/run/signals.ts +118 -0
- package/src/actions/run/state.ts +95 -0
- package/src/actions/run/types.ts +61 -0
- package/src/actions/run/writeback.ts +79 -0
- package/src/actions/run-authorization.ts +1 -1
- package/src/actions/run-persistence.ts +105 -0
- package/src/actions/types/context.ts +10 -0
- package/src/actions/validation.ts +4 -1
- package/src/agents/adapters.ts +15 -0
- package/src/agents/authority.ts +15 -0
- package/src/agents/context/entries.ts +48 -4
- package/src/agents/context/index.ts +1 -0
- package/src/agents/context-compaction.ts +6 -0
- package/src/agents/errors.ts +3 -0
- package/src/agents/index.ts +13 -1
- package/src/agents/message.ts +9 -0
- package/src/agents/request.ts +178 -22
- package/src/agents/skills.ts +63 -0
- package/src/agents/types.ts +35 -5
- package/src/auth/runtime.ts +14 -0
- package/src/auth/types.ts +6 -0
- package/src/authorization/event-visibility.ts +0 -12
- package/src/authorization/resolve.ts +6 -1
- package/src/authorization/types.ts +7 -0
- package/src/blob-storage/execution.ts +12 -0
- package/src/blob-storage/file-content.ts +106 -0
- package/src/blob-storage/index.ts +1 -0
- package/src/blob-storage/internal.ts +7 -0
- package/src/blob-storage/media-type.ts +29 -0
- package/src/blob-storage/types.ts +13 -1
- package/src/blob-storage/validation.ts +13 -0
- package/src/bootstrap/agent-context.ts +356 -0
- package/src/bootstrap/discovery.ts +100 -33
- package/src/bootstrap/index.ts +1 -1
- package/src/bootstrap/ontology-type-manifest.ts +3 -38
- package/src/datasets/builders.ts +17 -1
- package/src/datasets/execution.ts +110 -2
- package/src/datasets/index.ts +7 -1
- package/src/datasets/types.ts +2 -0
- package/src/datasets/write.ts +21 -2
- package/src/deploy/index.ts +0 -1
- package/src/deploy/services.ts +2 -11
- package/src/deploy/types.ts +6 -6
- package/src/deploy/validation.ts +12 -6
- package/src/edits/properties.ts +3 -0
- package/src/error-reporting/types.ts +2 -10
- package/src/errors/catalog.ts +13 -0
- package/src/events/definitions.ts +0 -17
- package/src/events/execution.ts +15 -16
- package/src/events/index.ts +0 -14
- package/src/events/scope.ts +0 -12
- package/src/events/selectors/builder.ts +0 -51
- package/src/events/selectors/index.ts +0 -6
- package/src/events/selectors/predicate.ts +0 -2
- package/src/events/selectors/types.ts +7 -65
- package/src/events/types/index.ts +0 -11
- package/src/events/types/objects.ts +5 -0
- package/src/execution/agent.ts +27 -0
- package/src/execution/authorization.ts +1 -0
- package/src/execution/authorized-object-reader.ts +96 -34
- package/src/execution/scopes.ts +2 -6
- package/src/http/api-routes.ts +4 -3
- package/src/index.ts +28 -21
- package/src/materialization/model.ts +26 -9
- package/src/materializer/README.md +6 -1
- package/src/materializer/edits/commit.ts +42 -32
- package/src/materializer/shared/normalize.ts +25 -14
- package/src/models/catalog.ts +26 -2
- package/src/models/execution/README.md +4 -3
- package/src/models/execution/binding.ts +6 -0
- package/src/models/execution/model-call-recorder.ts +10 -0
- package/src/models/execution/session.ts +2 -2
- package/src/models/execution.ts +6 -2
- package/src/models/language-model.ts +6 -0
- package/src/objects/action/errors.ts +0 -12
- package/src/objects/action/index.ts +3 -3
- package/src/objects/action/request.ts +2 -29
- package/src/objects/context/index.ts +1 -0
- package/src/objects/context/types.ts +7 -0
- package/src/objects/execution.ts +6 -3
- package/src/objects/materializer-adapter.ts +3 -0
- package/src/objects/object/upsert-batch.ts +4 -1
- package/src/objects/object/upsert.ts +3 -1
- package/src/objects/property-clearance.ts +209 -0
- package/src/objects/query/executor.ts +43 -36
- package/src/objects/query/validate.ts +133 -14
- package/src/objects/sdk/file-handle.ts +77 -0
- package/src/objects/sdk/object-handle.ts +11 -33
- package/src/objects/sdk/object-set.ts +10 -32
- package/src/objects/service/index.ts +0 -1
- package/src/ontology/builders.ts +18 -2
- package/src/ontology/docs-markdown.ts +394 -0
- package/src/ontology/docs.ts +196 -0
- package/src/ontology/inference/index.ts +25 -0
- package/src/ontology/internal.ts +7 -0
- package/src/ontology/tokens.ts +13 -2
- package/src/ontology/types.ts +5 -0
- package/src/ontology/validation/index.ts +1 -0
- package/src/ontology/validation/schema.ts +26 -1
- package/src/queues/in-memory.ts +0 -6
- package/src/queues/index.ts +0 -2
- package/src/queues/types.ts +0 -11
- package/src/runtime/create.ts +34 -4
- package/src/runtime/definitions.ts +3 -1
- package/src/runtime/host.ts +50 -1
- package/src/runtime/index.ts +3 -0
- package/src/runtime/locale.ts +26 -0
- package/src/runtime/resolve-definitions.ts +28 -2
- package/src/runtime/sixb.ts +1 -1
- package/src/runtime/types.ts +55 -48
- package/src/scheduler/runtime.ts +11 -2
- package/src/schedules/builders.ts +1 -4
- package/src/schedules/runtime.ts +0 -41
- package/src/schedules/validation.ts +2 -16
- package/src/security/builders.ts +49 -5
- package/src/security/every.ts +1 -1
- package/src/security/index.ts +6 -1
- package/src/security/markings.ts +313 -0
- package/src/security/redactions.ts +6 -0
- package/src/security/registry.ts +21 -1
- package/src/security/types.ts +26 -0
- package/src/security/validation.ts +59 -2
- package/src/storage/action-runs/idempotency.ts +13 -41
- package/src/storage/action-runs/in-memory.ts +20 -311
- package/src/storage/action-runs/index.ts +1 -16
- package/src/storage/action-runs/record.ts +130 -0
- package/src/storage/action-runs/types.ts +37 -92
- package/src/storage/agents/provider.ts +11 -0
- package/src/storage/agents/types.ts +15 -7
- package/src/storage/index.ts +2 -9
- package/src/storage/internal.ts +1 -7
- package/src/storage/objects/execution-limits.ts +3 -2
- package/src/storage/objects/types.ts +7 -0
- package/src/storage/types.ts +2 -4
- package/src/testing/action-execution.ts +73 -13
- package/src/testing/action-run-storage-contract.ts +335 -0
- package/src/testing/index.ts +8 -1
- package/src/testing/materializer-storage-contract.ts +174 -18
- package/src/testing/queues-contract.ts +0 -18
- package/src/workflows/builders.ts +24 -1
- package/src/workflows/request.ts +3 -0
- package/src/workflows/types.ts +6 -3
- package/src/workflows/validation.ts +32 -4
- package/dist/actions/run-dispatch.d.ts +0 -25
- package/dist/actions/run-dispatch.d.ts.map +0 -1
- package/dist/actions/worker.d.ts +0 -3
- package/dist/actions/worker.d.ts.map +0 -1
- package/dist/actions/worker.js +0 -321
- package/dist/actions/worker.js.map +0 -11
- package/dist/chunk-10styjgk.js +0 -1572
- package/dist/chunk-10styjgk.js.map +0 -20
- package/dist/chunk-1hqwggsn.js.map +0 -12
- package/dist/chunk-52c5zb0z.js +0 -81
- package/dist/chunk-52c5zb0z.js.map +0 -10
- package/dist/chunk-69266efg.js.map +0 -12
- package/dist/chunk-6wbm6ymz.js +0 -4399
- package/dist/chunk-6wbm6ymz.js.map +0 -48
- package/dist/chunk-85cd7e8c.js +0 -51
- package/dist/chunk-85cd7e8c.js.map +0 -10
- package/dist/chunk-91kcnbf0.js.map +0 -10
- package/dist/chunk-98cw09sw.js.map +0 -10
- package/dist/chunk-9g6jz9kk.js +0 -592
- package/dist/chunk-9g6jz9kk.js.map +0 -15
- package/dist/chunk-9vx5e9g1.js.map +0 -11
- package/dist/chunk-aq39q04r.js.map +0 -15
- package/dist/chunk-cd234ba4.js.map +0 -14
- package/dist/chunk-cnb5kv05.js.map +0 -19
- package/dist/chunk-dfm066qg.js.map +0 -11
- package/dist/chunk-dmn70ztd.js.map +0 -11
- package/dist/chunk-fc5zfxy1.js.map +0 -11
- package/dist/chunk-gf7yht60.js.map +0 -12
- package/dist/chunk-h3v76ams.js.map +0 -11
- package/dist/chunk-pja9jfz6.js.map +0 -19
- package/dist/chunk-r2y23egw.js.map +0 -10
- package/dist/chunk-t9shqx3w.js.map +0 -12
- package/dist/chunk-tjjgy3z4.js +0 -1277
- package/dist/chunk-tjjgy3z4.js.map +0 -35
- package/dist/chunk-xcy5ddha.js.map +0 -15
- package/dist/chunk-xyvy73tj.js.map +0 -12
- package/dist/chunk-y2aq6ag9.js.map +0 -11
- package/dist/chunk-z5rnrmz1.js.map +0 -11
- package/dist/chunk-zvx7h87b.js +0 -12
- package/dist/chunk-zvx7h87b.js.map +0 -10
- package/dist/events/types/actions.d.ts +0 -39
- package/dist/events/types/actions.d.ts.map +0 -1
- package/dist/objects/service/action-service.d.ts +0 -13
- package/dist/objects/service/action-service.d.ts.map +0 -1
- package/src/actions/run-dispatch.ts +0 -282
- package/src/actions/worker.ts +0 -2
- package/src/events/types/actions.ts +0 -42
- package/src/objects/service/action-service.ts +0 -43
- /package/dist/{chunk-jjrn5v0p.js.map → chunk-1k89ecfr.js.map} +0 -0
- /package/dist/{chunk-vre348sb.js.map → chunk-52bk93x8.js.map} +0 -0
- /package/dist/{chunk-4gmng3vf.js.map → chunk-5e43w60z.js.map} +0 -0
- /package/dist/{chunk-33saed7g.js.map → chunk-7kg3k1m9.js.map} +0 -0
- /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
- /package/dist/{chunk-2am3db31.js.map → chunk-9gyp8hg1.js.map} +0 -0
- /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
- /package/dist/{chunk-rb143ggb.js.map → chunk-bwjcehza.js.map} +0 -0
- /package/dist/{chunk-5thzcb8g.js.map → chunk-c85m1hyj.js.map} +0 -0
- /package/dist/{chunk-e67ynxcr.js.map → chunk-d2ync1v3.js.map} +0 -0
- /package/dist/{chunk-3rrezgyc.js.map → chunk-dnmadg9k.js.map} +0 -0
- /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
- /package/dist/{chunk-vp3z1ckh.js.map → chunk-kyzq4wy9.js.map} +0 -0
- /package/dist/{chunk-c2rga5cx.js.map → chunk-mfs23znk.js.map} +0 -0
- /package/dist/{chunk-a7er86jd.js.map → chunk-nre82s12.js.map} +0 -0
- /package/dist/{chunk-f1xh7a32.js.map → chunk-q1vkr2ys.js.map} +0 -0
- /package/dist/{chunk-23xs4qp9.js.map → chunk-rhg02hxq.js.map} +0 -0
- /package/dist/{chunk-k4g51s47.js.map → chunk-t6vq7bff.js.map} +0 -0
- /package/dist/{chunk-sk0hcjsz.js.map → chunk-tjb1mk5t.js.map} +0 -0
- /package/dist/{chunk-rx7h5fdx.js.map → chunk-v9xd5wzd.js.map} +0 -0
- /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
package/src/agents/adapters.ts
CHANGED
|
@@ -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
|
|
package/src/agents/authority.ts
CHANGED
|
@@ -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
|
-
| {
|
|
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
|
-
|
|
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: {
|
|
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`)
|
|
@@ -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
|
? [
|
package/src/agents/errors.ts
CHANGED
|
@@ -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"
|
package/src/agents/index.ts
CHANGED
|
@@ -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,
|
package/src/agents/message.ts
CHANGED
|
@@ -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
|
|
package/src/agents/request.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
-
/**
|
|
52
|
-
readonly reasoning?:
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
304
|
-
if (
|
|
305
|
-
|
|
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
|
+
}
|