@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
|
@@ -38,11 +38,16 @@ class AgentRequestError2 extends Error {
|
|
|
38
38
|
var MAX_AGENT_CONTEXT_ENTRIES2 = 12;
|
|
39
39
|
var MAX_AGENT_APP_STATE_ENTRY_BYTES2 = 16 * 1024;
|
|
40
40
|
var MAX_AGENT_APP_STATE_TOTAL_BYTES2 = 64 * 1024;
|
|
41
|
+
var MAX_AGENT_CONTEXT_LABEL_LENGTH2 = 200;
|
|
41
42
|
var agentContext2 = {
|
|
42
|
-
object(objectType, primaryId) {
|
|
43
|
+
object(objectType, primaryId, options = {}) {
|
|
44
|
+
const label = options.label === undefined ? undefined : objectContextLabel(options.label, "agentContext.object() label", (message) => {
|
|
45
|
+
throw new TypeError(`[Sixb] ${message}.`);
|
|
46
|
+
});
|
|
43
47
|
return {
|
|
44
48
|
kind: "object",
|
|
45
|
-
ref: { objectTypeId: objectType.id, primaryId }
|
|
49
|
+
ref: { objectTypeId: objectType.id, primaryId },
|
|
50
|
+
...label === undefined ? {} : { label }
|
|
46
51
|
};
|
|
47
52
|
},
|
|
48
53
|
appState(id, input) {
|
|
@@ -69,7 +74,7 @@ function normalizeAgentContextEntries2(input) {
|
|
|
69
74
|
for (const [index, rawEntry] of input.entries()) {
|
|
70
75
|
const entry = normalizeEntry(rawEntry, index);
|
|
71
76
|
const identity = agentContextIdentity2(entry.context);
|
|
72
|
-
const serialized = stableJsonStringify2(entry);
|
|
77
|
+
const serialized = stableJsonStringify2(entry.context.kind === "object" ? { ...entry, context: { kind: "object", ref: entry.context.ref } } : entry);
|
|
73
78
|
const existing = byIdentity.get(identity);
|
|
74
79
|
if (existing !== undefined) {
|
|
75
80
|
if (existing === serialized)
|
|
@@ -105,8 +110,13 @@ function normalizeEntry(rawEntry, index) {
|
|
|
105
110
|
invalidContext(`context[${index}].context.ref must be an object`);
|
|
106
111
|
const objectTypeId = requireNonEmptyString(context.ref.objectTypeId, `context[${index}].context.ref.objectTypeId`);
|
|
107
112
|
const primaryId = requireNonEmptyString(context.ref.primaryId, `context[${index}].context.ref.primaryId`);
|
|
113
|
+
const label = context.label === undefined ? undefined : objectContextLabel(context.label, `context[${index}].context.label`, invalidContext);
|
|
108
114
|
return {
|
|
109
|
-
context: {
|
|
115
|
+
context: {
|
|
116
|
+
kind: "object",
|
|
117
|
+
ref: { objectTypeId, primaryId },
|
|
118
|
+
...label === undefined ? {} : { label }
|
|
119
|
+
},
|
|
110
120
|
origin: rawEntry.origin
|
|
111
121
|
};
|
|
112
122
|
}
|
|
@@ -131,6 +141,15 @@ function normalizeEntry(rawEntry, index) {
|
|
|
131
141
|
}
|
|
132
142
|
invalidContext(`context[${index}].context.kind must be 'object' or 'app-state'`);
|
|
133
143
|
}
|
|
144
|
+
function objectContextLabel(value, label, fail) {
|
|
145
|
+
const trimmed = typeof value === "string" ? value.trim() : "";
|
|
146
|
+
if (!trimmed)
|
|
147
|
+
fail(`${label} must be a non-empty string`);
|
|
148
|
+
if (trimmed.length > MAX_AGENT_CONTEXT_LABEL_LENGTH2) {
|
|
149
|
+
fail(`${label} must be at most ${MAX_AGENT_CONTEXT_LABEL_LENGTH2} characters`);
|
|
150
|
+
}
|
|
151
|
+
return trimmed;
|
|
152
|
+
}
|
|
134
153
|
function requireNonEmptyString(value, label) {
|
|
135
154
|
if (typeof value !== "string" || value.trim().length === 0) {
|
|
136
155
|
invalidContext(`${label} must be a non-empty string`);
|
|
@@ -147,6 +166,6 @@ function invalidContext(message) {
|
|
|
147
166
|
throw new AgentRequestError2("invalid_context", `[Sixb] Invalid agent context: ${message}.`);
|
|
148
167
|
}
|
|
149
168
|
|
|
150
|
-
export { AgentDefinitionError2, AgentToolPublicError2, AgentToolResultValidationError2, AgentRequestError2, MAX_AGENT_CONTEXT_ENTRIES2, MAX_AGENT_APP_STATE_ENTRY_BYTES2, MAX_AGENT_APP_STATE_TOTAL_BYTES2, agentContext2, agentContextIdentity2, agentContextFingerprint2, normalizeAgentContextEntries2 };
|
|
169
|
+
export { AgentDefinitionError2, AgentToolPublicError2, AgentToolResultValidationError2, AgentRequestError2, MAX_AGENT_CONTEXT_ENTRIES2, MAX_AGENT_APP_STATE_ENTRY_BYTES2, MAX_AGENT_APP_STATE_TOTAL_BYTES2, MAX_AGENT_CONTEXT_LABEL_LENGTH2, agentContext2, agentContextIdentity2, agentContextFingerprint2, normalizeAgentContextEntries2 };
|
|
151
170
|
|
|
152
|
-
//# debugId=
|
|
171
|
+
//# debugId=D2B517DE0E9AFCDE64756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/agents/errors.ts", "../src/agents/context/entries.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/**\n * Base error for the agents module. Specific subclasses extend this so callers\n * can catch any agent-scoped failure with a single `instanceof AgentDefinitionError` check.\n */\nexport class AgentDefinitionError extends Error {\n readonly name: string = \"AgentDefinitionError\"\n}\n\n/**\n * An agent-tool failure whose message is intentionally safe to expose to the model and persist in\n * the durable trace. Tool authors must keep the message free of credentials and internal details;\n * unknown errors remain masked by the worker.\n */\nexport class AgentToolPublicError extends Error {\n readonly name: string = \"AgentToolPublicError\"\n}\n\n/** Raised when an agent tool result cannot cross the durable message boundary. */\nexport class AgentToolResultValidationError extends Error {\n readonly name = \"AgentToolResultValidationError\"\n\n constructor(\n readonly toolName: string,\n readonly reason: string,\n options?: ErrorOptions\n ) {\n super(`[Sixb] Agent tool '${toolName}' returned an invalid result; ${reason}.`, options)\n }\n}\n\nexport type AgentRequestErrorCode =\n | \"agent_selector_removed\"\n | \"agent_not_found\"\n | \"model_not_found\"\n | \"invalid_model_selection\"\n | \"invalid_locale\"\n | \"invalid_message\"\n | \"run_not_found\"\n | \"run_not_retryable\"\n | \"thread_not_found\"\n | \"active_run_exists\"\n | \"authority_not_inheritable\"\n | \"invalid_context\"\n | \"invalid_attachment\"\n | \"storage_unavailable\"\n | \"sandbox_not_configured\"\n | \"invalid_sandbox_params\"\n | \"sandbox_execution_unavailable\"\n\n/**\n * Raised by {@link requestAgentRun} (the trigger). Callers branch on `code` rather than message text\n * — e.g. the HTTP layer maps `active_run_exists` to 409 and `agent_not_found` to 404.\n */\nexport class AgentRequestError extends Error {\n readonly name = \"AgentRequestError\"\n\n constructor(\n readonly code: AgentRequestErrorCode,\n message: string\n ) {\n super(message)\n }\n}\n",
|
|
6
|
+
"import type { JsonValue } from \"../../json\"\nimport { cloneJsonValue, getInvalidJsonValueReason, stableJsonStringify } from \"../../json\"\nimport type { ObjectRef } from \"../../ontology/refs\"\nimport { AgentRequestError } from \"../errors\"\n\nexport type AgentContextInput =\n | {\n readonly kind: \"object\"\n readonly ref: ObjectRef\n /**\n * What the chat shows for this object instead of its title. Display only: it is not part of\n * the context's identity and is never sent to the model.\n */\n readonly label?: string\n }\n | {\n readonly kind: \"app-state\"\n readonly id: string\n readonly label: string\n readonly description: string\n readonly value: JsonValue\n }\n\nexport type AgentContextOrigin = \"ambient\" | \"explicit\"\n\nexport interface AgentContextEntryInput {\n readonly context: AgentContextInput\n readonly origin: AgentContextOrigin\n}\n\n/** Durable user-message part. Origin is display provenance, never an authorization grant. */\nexport interface AgentContextPart extends AgentContextEntryInput {\n readonly type: \"context\"\n}\n\nexport const MAX_AGENT_CONTEXT_ENTRIES = 12\nexport const MAX_AGENT_APP_STATE_ENTRY_BYTES = 16 * 1024\nexport const MAX_AGENT_APP_STATE_TOTAL_BYTES = 64 * 1024\nexport const MAX_AGENT_CONTEXT_LABEL_LENGTH = 200\n\n/** Typed constructors for context values shared by custom apps and agent clients. */\nexport const agentContext = {\n object<const TObjectTypeId extends string>(\n objectType: { readonly id: TObjectTypeId },\n primaryId: string,\n options: { readonly label?: string } = {}\n ) {\n const label =\n options.label === undefined\n ? undefined\n : objectContextLabel(options.label, \"agentContext.object() label\", (message) => {\n throw new TypeError(`[Sixb] ${message}.`)\n })\n return {\n kind: \"object\" as const,\n ref: { objectTypeId: objectType.id, primaryId },\n ...(label === undefined ? {} : { label }),\n }\n },\n\n appState<const TValue extends JsonValue>(\n id: string,\n input: {\n readonly label: string\n readonly description: string\n readonly value: TValue\n }\n ) {\n return { kind: \"app-state\" as const, id, ...input }\n },\n}\n\n/** Stable identity shared by core deduplication and context-aware clients. */\nexport function agentContextIdentity(context: AgentContextInput): string {\n return context.kind === \"object\"\n ? `object:${encodeURIComponent(context.ref.objectTypeId)}:${encodeURIComponent(context.ref.primaryId)}`\n : `app-state:${encodeURIComponent(context.id)}`\n}\n\n/** Stable semantic key for client-side comparisons. */\nexport function agentContextFingerprint(context: AgentContextInput): string {\n return stableJsonStringify(context)\n}\n\n/**\n * Validate transport-independent context rules and clone mutable app state before it can become\n * durable. Object existence and visibility are resolved separately because they require a runtime.\n */\nexport function normalizeAgentContextEntries(\n input: readonly AgentContextEntryInput[] | undefined\n): readonly AgentContextEntryInput[] {\n if (input === undefined) return []\n if (!Array.isArray(input)) invalidContext(\"context must be an array\")\n if (input.length > MAX_AGENT_CONTEXT_ENTRIES) {\n invalidContext(`context cannot contain more than ${MAX_AGENT_CONTEXT_ENTRIES} entries`)\n }\n\n const entries: AgentContextEntryInput[] = []\n const byIdentity = new Map<string, string>()\n let totalAppStateBytes = 0\n\n for (const [index, rawEntry] of input.entries()) {\n const entry = normalizeEntry(rawEntry, index)\n const identity = agentContextIdentity(entry.context)\n // A label is display only, so two entries that differ only by label are the same entry; the\n // first one's label is kept.\n const serialized = stableJsonStringify(\n entry.context.kind === \"object\"\n ? { ...entry, context: { kind: \"object\", ref: entry.context.ref } }\n : entry\n )\n const existing = byIdentity.get(identity)\n\n if (existing !== undefined) {\n if (existing === serialized) continue\n invalidContext(`context contains conflicting entries for '${identity}'`)\n }\n\n if (entry.context.kind === \"app-state\") {\n const bytes = utf8ByteLength(serialized)\n if (bytes > MAX_AGENT_APP_STATE_ENTRY_BYTES) {\n invalidContext(\n `context entry '${identity}' exceeds the ${MAX_AGENT_APP_STATE_ENTRY_BYTES}-byte limit`\n )\n }\n totalAppStateBytes += bytes\n if (totalAppStateBytes > MAX_AGENT_APP_STATE_TOTAL_BYTES) {\n invalidContext(\n `app-state context exceeds the ${MAX_AGENT_APP_STATE_TOTAL_BYTES}-byte message limit`\n )\n }\n }\n\n byIdentity.set(identity, serialized)\n entries.push(entry)\n }\n\n return entries\n}\n\nfunction normalizeEntry(rawEntry: unknown, index: number): AgentContextEntryInput {\n if (!isRecord(rawEntry)) invalidContext(`context[${index}] must be an object`)\n if (rawEntry.origin !== \"ambient\" && rawEntry.origin !== \"explicit\") {\n invalidContext(`context[${index}].origin must be 'ambient' or 'explicit'`)\n }\n if (!isRecord(rawEntry.context)) invalidContext(`context[${index}].context must be an object`)\n\n const context = rawEntry.context\n if (context.kind === \"object\") {\n if (!isRecord(context.ref)) invalidContext(`context[${index}].context.ref must be an object`)\n const objectTypeId = requireNonEmptyString(\n context.ref.objectTypeId,\n `context[${index}].context.ref.objectTypeId`\n )\n const primaryId = requireNonEmptyString(\n context.ref.primaryId,\n `context[${index}].context.ref.primaryId`\n )\n const label =\n context.label === undefined\n ? undefined\n : objectContextLabel(context.label, `context[${index}].context.label`, invalidContext)\n return {\n context: {\n kind: \"object\",\n ref: { objectTypeId, primaryId },\n ...(label === undefined ? {} : { label }),\n },\n origin: rawEntry.origin,\n }\n }\n\n if (context.kind === \"app-state\") {\n const id = requireNonEmptyString(context.id, `context[${index}].context.id`)\n const label = requireNonEmptyString(context.label, `context[${index}].context.label`)\n const description = requireNonEmptyString(\n context.description,\n `context[${index}].context.description`\n )\n const reason = getInvalidJsonValueReason(context.value, `context[${index}].context.value`)\n if (reason) {\n invalidContext(`context[${index}].context.value must be a JSON value; ${reason}`)\n }\n return {\n context: {\n kind: \"app-state\",\n id,\n label,\n description,\n value: cloneJsonValue(context.value as JsonValue),\n },\n origin: rawEntry.origin,\n }\n }\n\n invalidContext(`context[${index}].context.kind must be 'object' or 'app-state'`)\n}\n\nfunction objectContextLabel(\n value: unknown,\n label: string,\n fail: (message: string) => never\n): string {\n const trimmed = typeof value === \"string\" ? value.trim() : \"\"\n if (!trimmed) fail(`${label} must be a non-empty string`)\n if (trimmed.length > MAX_AGENT_CONTEXT_LABEL_LENGTH) {\n fail(`${label} must be at most ${MAX_AGENT_CONTEXT_LABEL_LENGTH} characters`)\n }\n return trimmed\n}\n\nfunction requireNonEmptyString(value: unknown, label: string): string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n invalidContext(`${label} must be a non-empty string`)\n }\n return value\n}\n\nfunction utf8ByteLength(value: string): number {\n return new TextEncoder().encode(value).byteLength\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction invalidContext(message: string): never {\n throw new AgentRequestError(\"invalid_context\", `[Sixb] Invalid agent context: ${message}.`)\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "D2B517DE0E9AFCDE64756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/models/language-model.ts", "../src/models/events.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { JsonObject, ReadonlyJsonObject } from \"../json\"\nimport type { LanguageModelDefinitionCatalog, ModelDefinitionCatalog } from \"./catalog\"\nimport type { LanguageModelDefinition } from \"./definitions\"\nimport type { LanguageModelStreamEvent } from \"./events\"\nimport type { ModelMessage } from \"./messages\"\nimport type { ModelCostEstimator } from \"./pricing\"\n\nexport const MODEL_REASONING_EFFORTS = [\"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const\n\nexport type ModelReasoningEffort = (typeof MODEL_REASONING_EFFORTS)[number]\n\nexport const MODEL_REASONING_LEVELS = [\n \"provider-default\",\n \"none\",\n ...MODEL_REASONING_EFFORTS,\n] as const\n\nexport type ModelReasoningLevel = (typeof MODEL_REASONING_LEVELS)[number]\n\n/** Exact provider-native reasoning budget, expressed in tokens. */\nexport interface ModelReasoningBudget extends ReadonlyJsonObject {\n readonly budgetTokens: number\n}\n\n/** Provider-neutral reasoning preference accepted by every language-model runtime. */\nexport type ModelReasoning = ModelReasoningLevel | ModelReasoningBudget\n\nexport interface ModelReasoningBudgetCapabilities {\n readonly min?: number\n readonly max?: number\n}\n\n/** Controls exposed by one concrete model offering through one provider. */\nexport interface ModelReasoningCapabilities {\n readonly canDisable?: boolean\n readonly efforts?: readonly ModelReasoningEffort[]\n readonly budgetTokens?: ModelReasoningBudgetCapabilities\n}\n\nexport interface ModelCapabilities {\n readonly inputMediaTypes?: readonly string[] | \"any\"\n /** `undefined` is unknown, `false` is unsupported, and an object describes supported controls. */\n readonly reasoning?: false | ModelReasoningCapabilities\n readonly localTools?: boolean\n readonly parallelToolCalls?: boolean\n /** `undefined` is unknown, not an assertion that schema-constrained output is unsupported. */\n readonly nativeStructuredOutput?: boolean\n readonly providerExecutedTools?: boolean\n}\n\nexport interface ModelToolSpecification {\n readonly name: string\n readonly description: string\n readonly inputSchema: JsonObject\n}\n\nexport interface ModelResponseFormat {\n readonly type: \"json\"\n readonly name: string\n readonly description?: string\n readonly schema: JsonObject\n}\n\nexport interface LanguageModelRequest {\n readonly callId: string\n readonly messages: readonly ModelMessage[]\n readonly tools: readonly ModelToolSpecification[]\n readonly reasoning?: ModelReasoning\n /** Per-call output ceiling; providers must not exceed a stricter configured model limit. */\n readonly maxOutputTokens?: number\n /** Disable automatic prompt caching without overriding explicit provider configuration. */\n readonly caching?: \"auto\" | \"off\"\n readonly responseFormat?: ModelResponseFormat\n readonly signal: AbortSignal\n}\n\nexport interface LanguageModelStream {\n readonly events: AsyncIterable<LanguageModelStreamEvent>\n}\n\nexport interface LanguageModel {\n readonly providerId: string\n readonly modelId: string\n readonly definition: LanguageModelDefinition\n readonly costEstimator?: ModelCostEstimator\n /**\n * Return an executable model pinned to operational metadata, preserving model identity.\n * `offline` requires a local snapshot without catalog I/O. Workers retain this model\n * for generation and compaction; later catalog refreshes must not change its capabilities/limits.\n * Throw ModelCatalogUnavailableError for catalog transport/access failures to allow workers to\n * retry with an offline snapshot. Invalid definitions and other resolver errors remain fatal.\n */\n resolve?(options?: { readonly offline?: boolean }): Promise<LanguageModel>\n /** Validate known output constraints without inference. Success does not certify endpoint support. */\n validateResponseFormat?(format: ModelResponseFormat): void | Promise<void>\n stream(request: LanguageModelRequest): Promise<LanguageModelStream>\n}\n\n/** The common callable provider shape. Provider packages may accept additional model options. */\nexport interface ModelProvider<TCatalog extends ModelDefinitionCatalog = ModelDefinitionCatalog> {\n readonly providerId: string\n readonly catalog: TCatalog\n}\n\nexport interface LanguageModelProvider extends ModelProvider<LanguageModelDefinitionCatalog> {\n (modelId: string): LanguageModel\n}\n\nexport function isModelReasoning(value: unknown): value is ModelReasoning {\n if (typeof value === \"string\") {\n return (MODEL_REASONING_LEVELS as readonly string[]).includes(value)\n }\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n if (Object.keys(value).length !== 1) return false\n const budgetTokens = (value as { readonly budgetTokens?: unknown }).budgetTokens\n return typeof budgetTokens === \"number\" && Number.isSafeInteger(budgetTokens) && budgetTokens >= 0\n}\n\n/** Explain why a request cannot be represented by known model capabilities. Unknown is allowed. */\nexport function modelReasoningSupportIssue(\n capabilities: ModelCapabilities[\"reasoning\"],\n reasoning: unknown\n): string | undefined {\n if (reasoning === undefined) return undefined\n if (!isModelReasoning(reasoning)) return \"the reasoning preference is invalid\"\n if (reasoning === \"provider-default\") return undefined\n if (capabilities === undefined) return undefined\n if (capabilities === false) return \"reasoning is not supported\"\n if (reasoning === \"none\") {\n return capabilities.canDisable === true ? undefined : \"reasoning cannot be disabled\"\n }\n if (typeof reasoning === \"string\") {\n return capabilities.efforts?.includes(reasoning) === true\n ? undefined\n : `reasoning effort '${reasoning}' is not supported`\n }\n const budget = capabilities.budgetTokens\n if (budget === undefined) return \"reasoning token budgets are not supported\"\n if (budget.min !== undefined && reasoning.budgetTokens < budget.min) {\n return `reasoning token budget must be at least ${budget.min}`\n }\n if (budget.max !== undefined && reasoning.budgetTokens > budget.max) {\n return `reasoning token budget must not exceed ${budget.max}`\n }\n return undefined\n}\n",
|
|
5
|
+
"import type { JsonObject, ReadonlyJsonObject } from \"../json\"\nimport type { LanguageModelDefinitionCatalog, ModelDefinitionCatalog } from \"./catalog\"\nimport type { LanguageModelDefinition } from \"./definitions\"\nimport type { LanguageModelStreamEvent } from \"./events\"\nimport type { ModelMessage } from \"./messages\"\nimport type { ModelCostEstimator } from \"./pricing\"\n\nexport const MODEL_REASONING_EFFORTS = [\"minimal\", \"low\", \"medium\", \"high\", \"xhigh\", \"max\"] as const\n\nexport type ModelReasoningEffort = (typeof MODEL_REASONING_EFFORTS)[number]\n\nexport const MODEL_REASONING_LEVELS = [\n \"provider-default\",\n \"none\",\n ...MODEL_REASONING_EFFORTS,\n] as const\n\nexport type ModelReasoningLevel = (typeof MODEL_REASONING_LEVELS)[number]\n\n/** Exact provider-native reasoning budget, expressed in tokens. */\nexport interface ModelReasoningBudget extends ReadonlyJsonObject {\n readonly budgetTokens: number\n}\n\n/** Provider-neutral reasoning preference accepted by every language-model runtime. */\nexport type ModelReasoning = ModelReasoningLevel | ModelReasoningBudget\n\nexport interface ModelReasoningBudgetCapabilities {\n readonly min?: number\n readonly max?: number\n}\n\n/** Controls exposed by one concrete model offering through one provider. */\nexport interface ModelReasoningCapabilities {\n readonly canDisable?: boolean\n readonly efforts?: readonly ModelReasoningEffort[]\n readonly budgetTokens?: ModelReasoningBudgetCapabilities\n}\n\nexport interface ModelCapabilities {\n readonly inputMediaTypes?: readonly string[] | \"any\"\n /** `undefined` is unknown, `false` is unsupported, and an object describes supported controls. */\n readonly reasoning?: false | ModelReasoningCapabilities\n readonly localTools?: boolean\n readonly parallelToolCalls?: boolean\n /** `undefined` is unknown, not an assertion that schema-constrained output is unsupported. */\n readonly nativeStructuredOutput?: boolean\n readonly providerExecutedTools?: boolean\n}\n\nexport interface ModelToolSpecification {\n readonly name: string\n readonly description: string\n readonly inputSchema: JsonObject\n}\n\nexport interface ModelResponseFormat {\n readonly type: \"json\"\n readonly name: string\n readonly description?: string\n readonly schema: JsonObject\n}\n\nexport interface LanguageModelRequest {\n readonly callId: string\n readonly messages: readonly ModelMessage[]\n readonly tools: readonly ModelToolSpecification[]\n readonly reasoning?: ModelReasoning\n /** Per-call output ceiling; providers must not exceed a stricter configured model limit. */\n readonly maxOutputTokens?: number\n /** Disable automatic prompt caching without overriding explicit provider configuration. */\n readonly caching?: \"auto\" | \"off\"\n readonly responseFormat?: ModelResponseFormat\n readonly signal: AbortSignal\n}\n\nexport interface LanguageModelStream {\n readonly events: AsyncIterable<LanguageModelStreamEvent>\n}\n\nexport interface LanguageModel {\n readonly providerId: string\n readonly modelId: string\n readonly definition: LanguageModelDefinition\n readonly costEstimator?: ModelCostEstimator\n /**\n * Reasoning Sixb applies whenever this model runs without an explicit choice: chat turns, AI\n * workflow steps, subagents, and direct generation. Providers set it from their model options;\n * Sixb checks it against `definition.capabilities` at startup.\n */\n readonly defaultReasoning?: ModelReasoningLevel\n /**\n * Return an executable model pinned to operational metadata, preserving model identity.\n * `offline` requires a local snapshot without catalog I/O. Workers retain this model\n * for generation and compaction; later catalog refreshes must not change its capabilities/limits.\n * Throw ModelCatalogUnavailableError for catalog transport/access failures to allow workers to\n * retry with an offline snapshot. Invalid definitions and other resolver errors remain fatal.\n */\n resolve?(options?: { readonly offline?: boolean }): Promise<LanguageModel>\n /** Validate known output constraints without inference. Success does not certify endpoint support. */\n validateResponseFormat?(format: ModelResponseFormat): void | Promise<void>\n stream(request: LanguageModelRequest): Promise<LanguageModelStream>\n}\n\n/** The common callable provider shape. Provider packages may accept additional model options. */\nexport interface ModelProvider<TCatalog extends ModelDefinitionCatalog = ModelDefinitionCatalog> {\n readonly providerId: string\n readonly catalog: TCatalog\n}\n\nexport interface LanguageModelProvider extends ModelProvider<LanguageModelDefinitionCatalog> {\n (modelId: string): LanguageModel\n}\n\nexport function isModelReasoning(value: unknown): value is ModelReasoning {\n if (typeof value === \"string\") {\n return (MODEL_REASONING_LEVELS as readonly string[]).includes(value)\n }\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) return false\n if (Object.keys(value).length !== 1) return false\n const budgetTokens = (value as { readonly budgetTokens?: unknown }).budgetTokens\n return typeof budgetTokens === \"number\" && Number.isSafeInteger(budgetTokens) && budgetTokens >= 0\n}\n\n/** Explain why a request cannot be represented by known model capabilities. Unknown is allowed. */\nexport function modelReasoningSupportIssue(\n capabilities: ModelCapabilities[\"reasoning\"],\n reasoning: unknown\n): string | undefined {\n if (reasoning === undefined) return undefined\n if (!isModelReasoning(reasoning)) return \"the reasoning preference is invalid\"\n if (reasoning === \"provider-default\") return undefined\n if (capabilities === undefined) return undefined\n if (capabilities === false) return \"reasoning is not supported\"\n if (reasoning === \"none\") {\n return capabilities.canDisable === true ? undefined : \"reasoning cannot be disabled\"\n }\n if (typeof reasoning === \"string\") {\n return capabilities.efforts?.includes(reasoning) === true\n ? undefined\n : `reasoning effort '${reasoning}' is not supported`\n }\n const budget = capabilities.budgetTokens\n if (budget === undefined) return \"reasoning token budgets are not supported\"\n if (budget.min !== undefined && reasoning.budgetTokens < budget.min) {\n return `reasoning token budget must be at least ${budget.min}`\n }\n if (budget.max !== undefined && reasoning.budgetTokens > budget.max) {\n return `reasoning token budget must not exceed ${budget.max}`\n }\n return undefined\n}\n",
|
|
6
6
|
"import type { JsonObject, JsonValue } from \"../json\"\nimport type { ModelReasoning } from \"./language-model\"\nimport type {\n ModelAssistantPart,\n ModelToolCallPart,\n ModelToolResultPart,\n ProviderData,\n} from \"./messages\"\nimport type { ModelCallCost, ModelCostEstimate, ModelReportedCost } from \"./pricing\"\n\nexport interface ModelRoute {\n /** Provider selected by a routing gateway, when it differs from the provider being called. */\n readonly providerId?: string\n readonly modelId?: string\n}\n\n/** Only identifiers supplied by the provider. Internal call/response fallback IDs never belong here. */\nexport type ModelProviderIds = {\n readonly requestId?: string\n readonly responseId?: string\n readonly generationId?: string\n}\n\nexport function normalizeModelProviderIds(value: unknown): ModelProviderIds {\n if (typeof value !== \"object\" || value === null || Array.isArray(value))\n throw new TypeError(\"[Sixb] Provider identifiers must be an object.\")\n const result: { requestId?: string; responseId?: string; generationId?: string } = {}\n for (const [key, id] of Object.entries(value)) {\n if (key !== \"requestId\" && key !== \"responseId\" && key !== \"generationId\") continue\n if (id === undefined) continue\n if (typeof id !== \"string\" || !id.trim())\n throw new TypeError(`[Sixb] Provider ${key} must be nonblank.`)\n result[key] = id\n }\n return Object.freeze(result)\n}\n\nexport type ModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"pause\"\n | \"error\"\n | \"other\"\n | \"unknown\"\n\nexport interface ModelUsage {\n /** Audio content duration in milliseconds, rounded to the nearest millisecond. Not billed duration. */\n readonly audioDurationMs?: number\n readonly inputTokens?: number\n readonly outputTokens?: number\n readonly uncachedInputTokens?: number\n readonly cacheReadInputTokens?: number\n readonly cacheWriteInputTokens?: number\n readonly cacheWrite5mInputTokens?: number\n readonly cacheWrite1hInputTokens?: number\n readonly textOutputTokens?: number\n readonly reasoningOutputTokens?: number\n readonly raw?: JsonObject\n}\n\nexport type LanguageModelStreamEvent =\n | { readonly type: \"stream-start\" }\n | {\n readonly type: \"response-metadata\"\n readonly providerIds?: ModelProviderIds\n readonly id?: string\n readonly modelId?: string\n }\n | { readonly type: \"text-start\"; readonly id: string; readonly providerData?: ProviderData }\n | { readonly type: \"text-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"text-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"reasoning-start\"\n readonly id: string\n readonly providerData?: ProviderData\n }\n | { readonly type: \"reasoning-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"reasoning-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"tool-input-start\"\n readonly id: string\n readonly toolName: string\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | { readonly type: \"tool-input-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"tool-input-end\"; readonly id: string; readonly providerData?: ProviderData }\n | {\n readonly type: \"tool-call\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: string\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | {\n readonly type: \"tool-result\"\n readonly toolCallId: string\n readonly toolName: string\n readonly output: JsonValue\n readonly isError?: boolean\n readonly providerData?: ProviderData\n readonly providerExecuted?: boolean\n readonly dynamic?: boolean\n }\n | {\n readonly type: \"provider-state\"\n readonly providerId: string\n readonly data: JsonValue\n }\n | {\n readonly type: \"finish\"\n readonly finishReason: ModelFinishReason\n readonly rawFinishReason?: string\n readonly usage: ModelUsage\n readonly providerData?: ProviderData\n readonly reportedCost?: ModelReportedCost\n readonly route?: ModelRoute\n }\n | { readonly type: \"error\"; readonly error: unknown }\n\nexport type ModelUiChunk =\n | { readonly type: \"start-step\" }\n | { readonly type: \"text-start\"; readonly id: string }\n | { readonly type: \"text-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"text-end\"; readonly id: string }\n | { readonly type: \"reasoning-start\"; readonly id: string }\n | { readonly type: \"reasoning-delta\"; readonly id: string; readonly delta: string }\n | { readonly type: \"reasoning-end\"; readonly id: string }\n | {\n readonly type: \"tool-input-start\"\n readonly toolCallId: string\n readonly toolName: string\n }\n | {\n readonly type: \"tool-input-delta\"\n readonly toolCallId: string\n readonly toolName: string\n readonly inputTextDelta: string\n }\n | {\n readonly type: \"tool-input-available\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: JsonValue\n }\n | {\n readonly type: \"tool-input-error\"\n readonly toolCallId: string\n readonly toolName: string\n readonly input: JsonValue\n readonly errorText: string\n }\n | {\n readonly type: \"tool-output-available\"\n readonly toolCallId: string\n readonly toolName: string\n readonly output: JsonValue\n }\n | {\n readonly type: \"tool-output-error\"\n readonly toolCallId: string\n readonly toolName: string\n readonly errorText: string\n }\n | { readonly type: \"error\"; readonly errorText: string }\n\nexport interface ModelCallEndEvent {\n readonly modelKind?: import(\"./definitions\").ModelKind\n readonly providerIds?: ModelProviderIds\n /** Retained independently when the selected display cost is provider-reported. */\n readonly estimate?: ModelCostEstimate\n readonly callId: string\n readonly providerId: string\n readonly modelId: string\n readonly responseId: string\n readonly responseModelId?: string\n readonly usage: ModelUsage\n readonly cost: ModelCallCost\n readonly requestedReasoning?: ModelReasoning\n readonly route?: ModelRoute\n}\n\nexport interface ModelStep {\n readonly content: readonly (ModelAssistantPart | ModelToolResultPart)[]\n readonly finishReason: ModelFinishReason\n readonly rawFinishReason?: string\n readonly usage: ModelUsage\n readonly responseId: string\n readonly responseModelId?: string\n readonly cost: ModelCallCost\n readonly route?: ModelRoute\n}\n\nexport interface ModelLoopPartial {\n readonly content: readonly (ModelAssistantPart | ModelToolCallPart | ModelToolResultPart)[]\n}\n"
|
|
7
7
|
],
|
|
8
|
-
"mappings": ";;AAOO,IAAM,2BAA0B,CAAC,WAAW,OAAO,UAAU,QAAQ,SAAS,KAAK;AAInF,IAAM,0BAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,GAAG;AACL;
|
|
8
|
+
"mappings": ";;AAOO,IAAM,2BAA0B,CAAC,WAAW,OAAO,UAAU,QAAQ,SAAS,KAAK;AAInF,IAAM,0BAAyB;AAAA,EACpC;AAAA,EACA;AAAA,EACA,GAAG;AACL;AAmGO,SAAS,iBAAgB,CAAC,OAAyC;AAAA,EACxE,IAAI,OAAO,UAAU,UAAU;AAAA,IAC7B,OAAQ,wBAA6C,SAAS,KAAK;AAAA,EACrE;AAAA,EACA,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO;AAAA,EAChF,IAAI,OAAO,KAAK,KAAK,EAAE,WAAW;AAAA,IAAG,OAAO;AAAA,EAC5C,MAAM,eAAgB,MAA8C;AAAA,EACpE,OAAO,OAAO,iBAAiB,YAAY,OAAO,cAAc,YAAY,KAAK,gBAAgB;AAAA;AAI5F,SAAS,2BAA0B,CACxC,cACA,WACoB;AAAA,EACpB,IAAI,cAAc;AAAA,IAAW;AAAA,EAC7B,IAAI,CAAC,kBAAiB,SAAS;AAAA,IAAG,OAAO;AAAA,EACzC,IAAI,cAAc;AAAA,IAAoB;AAAA,EACtC,IAAI,iBAAiB;AAAA,IAAW;AAAA,EAChC,IAAI,iBAAiB;AAAA,IAAO,OAAO;AAAA,EACnC,IAAI,cAAc,QAAQ;AAAA,IACxB,OAAO,aAAa,eAAe,OAAO,YAAY;AAAA,EACxD;AAAA,EACA,IAAI,OAAO,cAAc,UAAU;AAAA,IACjC,OAAO,aAAa,SAAS,SAAS,SAAS,MAAM,OACjD,YACA,qBAAqB;AAAA,EAC3B;AAAA,EACA,MAAM,SAAS,aAAa;AAAA,EAC5B,IAAI,WAAW;AAAA,IAAW,OAAO;AAAA,EACjC,IAAI,OAAO,QAAQ,aAAa,UAAU,eAAe,OAAO,KAAK;AAAA,IACnE,OAAO,2CAA2C,OAAO;AAAA,EAC3D;AAAA,EACA,IAAI,OAAO,QAAQ,aAAa,UAAU,eAAe,OAAO,KAAK;AAAA,IACnE,OAAO,0CAA0C,OAAO;AAAA,EAC1D;AAAA,EACA;AAAA;;;AC/HK,SAAS,0BAAyB,CAAC,OAAkC;AAAA,EAC1E,IAAI,OAAO,UAAU,YAAY,UAAU,QAAQ,MAAM,QAAQ,KAAK;AAAA,IACpE,MAAM,IAAI,UAAU,gDAAgD;AAAA,EACtE,MAAM,SAA6E,CAAC;AAAA,EACpF,YAAY,KAAK,OAAO,OAAO,QAAQ,KAAK,GAAG;AAAA,IAC7C,IAAI,QAAQ,eAAe,QAAQ,gBAAgB,QAAQ;AAAA,MAAgB;AAAA,IAC3E,IAAI,OAAO;AAAA,MAAW;AAAA,IACtB,IAAI,OAAO,OAAO,YAAY,CAAC,GAAG,KAAK;AAAA,MACrC,MAAM,IAAI,UAAU,mBAAmB,uBAAuB;AAAA,IAChE,OAAO,OAAO;AAAA,EAChB;AAAA,EACA,OAAO,OAAO,OAAO,MAAM;AAAA;",
|
|
9
9
|
"debugId": "1D80C81FE1B8244564756E2164756E21",
|
|
10
10
|
"names": []
|
|
11
11
|
}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
3
|
ProjectionValidationError2
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-y7rqfrgg.js";
|
|
5
5
|
import {
|
|
6
6
|
sha256Canonical2
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7n440zgt.js";
|
|
8
8
|
import {
|
|
9
9
|
ProjectionRunError2,
|
|
10
10
|
assertProjectionRunIdentityMatches2,
|
|
11
11
|
assertProjectionRunDurableExecution2
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-9ybhtmg4.js";
|
|
13
13
|
import {
|
|
14
14
|
createPrimitiveExecutionRecord
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-nre82s12.js";
|
|
16
16
|
import {
|
|
17
17
|
findPrimitiveRunExecution
|
|
18
18
|
} from "./chunk-ey1nk510.js";
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/ontology/tokens.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { InferObjectProperties } from \"./inference\"\nimport {\n createLinkPathSelection,\n type LinkPathSelectionBuilder,\n type LinkPathSelectionInput,\n} from \"./link-path-selection\"\nimport type { ObjectLink, ObjectType, Property } from \"./types\"\n\ndeclare const propertyTokenBrand: unique symbol\ndeclare const linkTokenBrand: unique symbol\ndeclare const objectPropertiesBrand: unique symbol\n\n/**\n * Strongly-typed handle to a property on a specific object type.\n *\n * Tokens let runtime APIs accept object properties without using string ids.\n */\nexport type PropertyToken<\n TObjectTypeId extends string = string,\n TPropertyId extends string = string,\n TProperty extends Property = Property,\n> = {\n readonly [propertyTokenBrand]?: never\n readonly objectTypeId: TObjectTypeId\n readonly id: TPropertyId\n readonly property: TProperty\n}\n\nexport type PropertyTokenMap<TObjectType extends ObjectType> = {\n readonly [P in TObjectType[\"properties\"][number] as P[\"id\"]]: PropertyToken<\n TObjectType[\"id\"],\n P[\"id\"],\n P\n >\n}\n\nexport type LinkToken<\n TObjectTypeId extends string = string,\n TLinkId extends string = string,\n TTargetObjectTypeId extends string | readonly string[] = string | readonly string[],\n TLink extends ObjectLink = ObjectLink,\n> = {\n readonly [linkTokenBrand]?: never\n readonly objectTypeId: TObjectTypeId\n readonly id: TLinkId\n readonly targetObjectTypeId: TTargetObjectTypeId\n readonly link: TLink\n} & LinkPathSelectionBuilder<TObjectTypeId, TLinkId, TTargetObjectTypeId>\n\nexport type LinkTokenMap<TObjectType extends ObjectType> = {\n readonly [L in TObjectType[\"links\"][number] as L[\"id\"]]: LinkToken<\n TObjectType[\"id\"],\n L[\"id\"],\n L[\"targetObjectTypeId\"],\n L\n >\n}\n\n/**\n * Object type with property tokens (`p.*`).\n *\n * The original ontology shape is preserved; this only adds typed handles, and the type-only\n * property values every row of this object type carries.\n */\nexport type ObjectTypeWithPropertyTokens<TObjectType extends ObjectType = ObjectType> =\n TObjectType & {\n readonly p: PropertyTokenMap<TObjectType>\n } & ObjectPropertiesMetadata<TObjectType>\n\n/**\n * Type-only property values of an object type, inferred once where the type is defined so SDK types\n * read them back by indexed access instead of re-deriving them from `properties`.\n *\n * Exported only so declaration files can name it, like the token maps.\n */\nexport type ObjectPropertiesMetadata<TObjectType extends ObjectType> = {\n readonly [objectPropertiesBrand]?: string extends TObjectType[\"id\"]\n ? {
|
|
5
|
+
"import type { InferObjectProperties, InferObjectReadProperties } from \"./inference\"\nimport {\n createLinkPathSelection,\n type LinkPathSelectionBuilder,\n type LinkPathSelectionInput,\n} from \"./link-path-selection\"\nimport type { ObjectLink, ObjectType, Property } from \"./types\"\n\ndeclare const propertyTokenBrand: unique symbol\ndeclare const linkTokenBrand: unique symbol\ndeclare const objectPropertiesBrand: unique symbol\n\n/**\n * Strongly-typed handle to a property on a specific object type.\n *\n * Tokens let runtime APIs accept object properties without using string ids.\n */\nexport type PropertyToken<\n TObjectTypeId extends string = string,\n TPropertyId extends string = string,\n TProperty extends Property = Property,\n> = {\n readonly [propertyTokenBrand]?: never\n readonly objectTypeId: TObjectTypeId\n readonly id: TPropertyId\n readonly property: TProperty\n}\n\nexport type PropertyTokenMap<TObjectType extends ObjectType> = {\n readonly [P in TObjectType[\"properties\"][number] as P[\"id\"]]: PropertyToken<\n TObjectType[\"id\"],\n P[\"id\"],\n P\n >\n}\n\nexport type LinkToken<\n TObjectTypeId extends string = string,\n TLinkId extends string = string,\n TTargetObjectTypeId extends string | readonly string[] = string | readonly string[],\n TLink extends ObjectLink = ObjectLink,\n> = {\n readonly [linkTokenBrand]?: never\n readonly objectTypeId: TObjectTypeId\n readonly id: TLinkId\n readonly targetObjectTypeId: TTargetObjectTypeId\n readonly link: TLink\n} & LinkPathSelectionBuilder<TObjectTypeId, TLinkId, TTargetObjectTypeId>\n\nexport type LinkTokenMap<TObjectType extends ObjectType> = {\n readonly [L in TObjectType[\"links\"][number] as L[\"id\"]]: LinkToken<\n TObjectType[\"id\"],\n L[\"id\"],\n L[\"targetObjectTypeId\"],\n L\n >\n}\n\n/**\n * Object type with property tokens (`p.*`).\n *\n * The original ontology shape is preserved; this only adds typed handles, and the type-only\n * property values every row of this object type carries.\n */\nexport type ObjectTypeWithPropertyTokens<TObjectType extends ObjectType = ObjectType> =\n TObjectType & {\n readonly p: PropertyTokenMap<TObjectType>\n } & ObjectPropertiesMetadata<TObjectType>\n\n/**\n * Type-only property values of an object type, inferred once where the type is defined so SDK types\n * read them back by indexed access instead of re-deriving them from `properties`.\n *\n * Exported only so declaration files can name it, like the token maps.\n */\nexport type ObjectPropertiesMetadata<TObjectType extends ObjectType> = {\n readonly [objectPropertiesBrand]?: string extends TObjectType[\"id\"]\n ? {\n readonly properties: Record<string, unknown>\n readonly readProperties: Record<string, unknown>\n }\n : ObjectPropertiesCarrier<TObjectType>\n}\n\n/**\n * Carrier of an object type's inferred property values.\n *\n * When TypeScript relates, or infers between, two instantiations of a generic type it has not been\n * told the variance of, it measures that variance by probing the type with marker types. A probe\n * that reached the schema inference over a marker overflowed its depth limits (TS2589), in code as\n * ordinary as reassigning a query. Declaring this carrier invariant stops every probe here, so an\n * object type costs no more to relate than its tokens. The loose base type carries a plain record\n * instead, which a concrete object type's carrier relates to structurally.\n */\ninterface ObjectPropertiesCarrier<in out TObjectType extends ObjectType> {\n readonly properties: InferObjectProperties<TObjectType>\n readonly readProperties: InferObjectReadProperties<TObjectType>\n}\n\n/**\n * The property values of an object type, as its rows carry them.\n *\n * Reads the type computed once by {@link ObjectTypeWithPropertyTokens}. For the loose base type,\n * whose property ids are not statically known, it is `Record<string, unknown>`.\n */\nexport type ObjectTypeProperties<TObjectType extends ObjectTypeWithPropertyTokens> = NonNullable<\n TObjectType[typeof objectPropertiesBrand]\n>[\"properties\"]\n\n/**\n * The property values of an object type as a read returns them: a marked property is optional,\n * because a reader without clearance receives it redacted.\n */\nexport type ObjectTypeReadProperties<TObjectType extends ObjectTypeWithPropertyTokens> =\n NonNullable<TObjectType[typeof objectPropertiesBrand]>[\"readProperties\"]\n\n/**\n * Object type with property tokens (`p.*`) and link tokens (`l.*`).\n *\n * `links` is a plain array for iteration.\n * `l` provides keyed token access (`Room.l.hasThermostat`).\n */\nexport type ObjectTypeWithTokens<TObjectType extends ObjectType = ObjectType> =\n ObjectTypeWithPropertyTokens<TObjectType> & {\n readonly l: LinkTokenMap<TObjectType>\n }\n\n/**\n * Build the `objectType.p.*` token map once when the object type is defined.\n */\nexport function createPropertyTokenMap<TObjectType extends ObjectType>(\n objectType: TObjectType\n): PropertyTokenMap<TObjectType> {\n const tokenEntries = objectType.properties.map((property) => {\n const token: PropertyToken<TObjectType[\"id\"], typeof property.id, typeof property> = {\n objectTypeId: objectType.id,\n id: property.id,\n property,\n }\n return [property.id, token] as const\n })\n\n return Object.fromEntries(tokenEntries) as PropertyTokenMap<TObjectType>\n}\n\n/**\n * Build the `objectType.l.*` link token map once when the object type is defined.\n */\nexport function createLinkTokenMap<TObjectType extends ObjectType>(\n objectType: TObjectType\n): LinkTokenMap<TObjectType> {\n const tokenEntries = objectType.links.map((link) => {\n const token = {\n objectTypeId: objectType.id,\n id: link.id,\n targetObjectTypeId: link.targetObjectTypeId,\n link,\n } as LinkToken<TObjectType[\"id\"], typeof link.id, typeof link.targetObjectTypeId, typeof link>\n Object.defineProperty(token, \"withLinks\", {\n configurable: false,\n enumerable: false,\n writable: false,\n value: (...args: [links?: readonly LinkPathSelectionInput[]]) =>\n createLinkPathSelection(token, args.length === 0 ? undefined : args[0]),\n })\n return [link.id, token] as const\n })\n\n return Object.fromEntries(tokenEntries) as LinkTokenMap<TObjectType>\n}\n"
|
|
6
6
|
],
|
|
7
|
-
"mappings": ";;;;;;
|
|
7
|
+
"mappings": ";;;;;;AAkIO,SAAS,uBAAsD,CACpE,YAC+B;AAAA,EAC/B,MAAM,eAAe,WAAW,WAAW,IAAI,CAAC,aAAa;AAAA,IAC3D,MAAM,QAA+E;AAAA,MACnF,cAAc,WAAW;AAAA,MACzB,IAAI,SAAS;AAAA,MACb;AAAA,IACF;AAAA,IACA,OAAO,CAAC,SAAS,IAAI,KAAK;AAAA,GAC3B;AAAA,EAED,OAAO,OAAO,YAAY,YAAY;AAAA;AAMjC,SAAS,mBAAkD,CAChE,YAC2B;AAAA,EAC3B,MAAM,eAAe,WAAW,MAAM,IAAI,CAAC,SAAS;AAAA,IAClD,MAAM,QAAQ;AAAA,MACZ,cAAc,WAAW;AAAA,MACzB,IAAI,KAAK;AAAA,MACT,oBAAoB,KAAK;AAAA,MACzB;AAAA,IACF;AAAA,IACA,OAAO,eAAe,OAAO,aAAa;AAAA,MACxC,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,OAAO,IAAI,SACT,wBAAwB,OAAO,KAAK,WAAW,IAAI,YAAY,KAAK,EAAE;AAAA,IAC1E,CAAC;AAAA,IACD,OAAO,CAAC,KAAK,IAAI,KAAK;AAAA,GACvB;AAAA,EAED,OAAO,OAAO,YAAY,YAAY;AAAA;",
|
|
8
8
|
"debugId": "710872C866C65A1D64756E2164756E21",
|
|
9
9
|
"names": []
|
|
10
10
|
}
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
import {
|
|
3
3
|
isScheduleReference2,
|
|
4
4
|
isScheduleDefinition2
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-nq6gpjt7.js";
|
|
6
6
|
import {
|
|
7
7
|
ConnectorError2,
|
|
8
8
|
createConnectorCodedError,
|
|
9
9
|
getConnectorExecutionSourceResolver
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-wz0xs816.js";
|
|
11
11
|
import {
|
|
12
12
|
isDatasetDefinition2
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-rz53yb4v.js";
|
|
14
14
|
import {
|
|
15
15
|
SyncValidationError2
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-t6vq7bff.js";
|
|
17
17
|
import {
|
|
18
18
|
isOAuthConnectorAdapter,
|
|
19
19
|
isConnectorDefinition
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import {
|
|
3
|
+
isFileRef2
|
|
4
|
+
} from "./chunk-jhm3zsa7.js";
|
|
2
5
|
import {
|
|
3
6
|
withFailureMessage
|
|
4
7
|
} from "./chunk-z3y5kg1x.js";
|
|
8
|
+
import {
|
|
9
|
+
markingIdsFrom
|
|
10
|
+
} from "./chunk-xt1zt7gv.js";
|
|
5
11
|
import {
|
|
6
12
|
isDecimalString2
|
|
7
13
|
} from "./chunk-3bh94gbw.js";
|
|
8
|
-
import {
|
|
9
|
-
isFileRef2
|
|
10
|
-
} from "./chunk-h3v76ams.js";
|
|
11
14
|
import {
|
|
12
15
|
isJsonValue2,
|
|
13
16
|
isPlainRecord
|
|
@@ -285,10 +288,12 @@ function rowFailure(message, publicMessage = message) {
|
|
|
285
288
|
|
|
286
289
|
// src/datasets/builders.ts
|
|
287
290
|
function col2(name, type, options) {
|
|
291
|
+
const markings = options?.markings;
|
|
288
292
|
const column = {
|
|
289
293
|
name,
|
|
290
294
|
type,
|
|
291
|
-
...options?.nullable !== undefined ? { nullable: options.nullable } : {}
|
|
295
|
+
...options?.nullable !== undefined ? { nullable: options.nullable } : {},
|
|
296
|
+
...markings && markings.length > 0 ? { markings: markingIdsFrom(markings, `Dataset column '${name}' markings`) } : {}
|
|
292
297
|
};
|
|
293
298
|
assertDatasetColumnDefinition(column, (message) => new DatasetValidationError2(message));
|
|
294
299
|
return column;
|
|
@@ -375,4 +380,4 @@ function deleteChange(key, options) {
|
|
|
375
380
|
}
|
|
376
381
|
export { DatasetValidationError2, datasetSequenceValue, getDatasetSequenceValidationError, assertDatasetDefinition2, isDatasetDefinition2, getDatasetRowValidationError2, getDatasetRowValidationFailure, col2, defineDataset2, change2 };
|
|
377
382
|
|
|
378
|
-
//# debugId=
|
|
383
|
+
//# debugId=93487566238603FF64756E2164756E21
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/datasets/errors.ts", "../src/datasets/sequence.ts", "../src/datasets/validation.ts", "../src/datasets/builders.ts", "../src/datasets/changes.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"export class DatasetValidationError extends Error {\n readonly name = \"DatasetValidationError\"\n}\n",
|
|
6
|
+
"import type { DatasetDefinition } from \"./types\"\n\nconst MIN_INT64 = -(1n << 63n)\nconst MAX_INT64 = (1n << 63n) - 1n\n\n/** Normalize source ordering to an exact integer (timestamp milliseconds or signed int64). */\nexport function datasetSequenceValue(dataset: DatasetDefinition, value: unknown): bigint {\n const column = dataset.schema.columns.find((column) => column.name === dataset.sequenceBy)\n if (column?.type === \"int64\") {\n if (\n (typeof value === \"number\" && Number.isSafeInteger(value)) ||\n (typeof value === \"string\" && /^-?\\d+$/.test(value))\n ) {\n const integer = BigInt(value)\n if (integer >= MIN_INT64 && integer <= MAX_INT64) return integer\n }\n throw new Error(\n `Dataset '${dataset.id}' sequence must be a signed int64; use a string outside the safe integer range.`\n )\n }\n if (column?.type === \"timestamp\") {\n const millis = parseDatasetTimestamp(value)\n if (millis !== null) return BigInt(millis)\n throw new Error(\n `Dataset '${dataset.id}' sequence must be a valid Date or ISO timestamp with an explicit timezone and at most millisecond precision.`\n )\n }\n throw new Error(\n `Dataset '${dataset.id}' sequenceBy must reference a non-nullable timestamp or int64 column.`\n )\n}\n\n/** Date.parse alone normalizes impossible calendar dates instead of rejecting them. */\nexport function parseDatasetTimestamp(value: unknown): number | null {\n if (value instanceof Date && Number.isFinite(value.getTime())) return value.getTime()\n if (typeof value === \"string\") {\n const match =\n /^([+-]\\d{6}|\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d{1,3}))?(Z|[+-]\\d{2}:\\d{2})$/.exec(\n value\n )\n if (match) {\n const [, year, month, day, hour, minute, second, , zone] = match\n const numericYear = Number(year)\n const leapYear = numericYear % 4 === 0 && (numericYear % 100 !== 0 || numericYear % 400 === 0)\n const days =\n Number(month) === 2 ? (leapYear ? 29 : 28) : [4, 6, 9, 11].includes(Number(month)) ? 30 : 31\n const validZone =\n zone === \"Z\" || (Number(zone?.slice(1, 3)) <= 23 && Number(zone?.slice(4)) <= 59)\n const millis = Date.parse(value)\n if (\n Number(month) >= 1 &&\n Number(month) <= 12 &&\n Number(day) >= 1 &&\n Number(day) <= days &&\n Number(hour) < 24 &&\n Number(minute) < 60 &&\n Number(second) < 60 &&\n validZone &&\n Number.isFinite(millis)\n )\n return millis\n }\n }\n return null\n}\n\nexport function getDatasetSequenceValidationError(\n dataset: DatasetDefinition,\n value: unknown\n): string | null {\n try {\n datasetSequenceValue(dataset, value)\n return null\n } catch (error) {\n return error instanceof Error ? error.message : String(error)\n }\n}\n",
|
|
7
|
+
"import { isFileRef } from \"../blob-storage\"\nimport { withFailureMessage } from \"../errors/failure-message\"\nimport { isJsonValue, isPlainRecord } from \"../json\"\nimport { isDecimalString } from \"../ontology/decimal\"\nimport { DatasetValidationError } from \"./errors\"\nimport { getDatasetSequenceValidationError, parseDatasetTimestamp } from \"./sequence\"\nimport type {\n DatasetColumnDefinition,\n DatasetColumnType,\n DatasetDefinition,\n DatasetSchema,\n} from \"./types\"\n\nconst datasetColumnTypes = new Set<DatasetColumnType>([\n \"string\",\n \"boolean\",\n \"int64\",\n \"float64\",\n \"decimal\",\n \"date\",\n \"timestamp\",\n \"json\",\n \"fileRef\",\n])\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction isValidDateValue(value: unknown): boolean {\n return value instanceof Date && !Number.isNaN(value.getTime())\n}\n\nfunction isDateString(value: unknown): value is string {\n return (\n typeof value === \"string\" &&\n /^\\d{4}-\\d{2}-\\d{2}$/.test(value) &&\n !Number.isNaN(Date.parse(value))\n )\n}\n\nfunction isTimestampString(value: unknown): value is string {\n return typeof value === \"string\" && !Number.isNaN(Date.parse(value))\n}\n\nfunction matchesColumnType(value: unknown, type: DatasetColumnType): boolean {\n switch (type) {\n case \"string\":\n return typeof value === \"string\"\n case \"boolean\":\n return typeof value === \"boolean\"\n case \"int64\":\n return (\n (typeof value === \"number\" && Number.isInteger(value)) ||\n (typeof value === \"string\" && /^-?\\d+$/.test(value))\n )\n case \"float64\":\n return typeof value === \"number\" && Number.isFinite(value)\n case \"decimal\":\n return isDecimalString(value)\n case \"date\":\n return isValidDateValue(value) || isDateString(value)\n case \"timestamp\":\n return isValidDateValue(value) || isTimestampString(value)\n case \"json\":\n return isJsonValue(value)\n case \"fileRef\":\n return isFileRef(value)\n }\n}\n\nfunction assertNonEmptyString(\n value: unknown,\n field: string,\n createError: (message: string) => Error\n): asserts value is string {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw createError(`${field} must not be empty.`)\n }\n}\n\nexport function assertDatasetColumnDefinition(\n column: unknown,\n createError: (message: string) => Error,\n fieldPrefix = \"Dataset column\"\n): asserts column is DatasetColumnDefinition {\n if (!isRecord(column)) {\n throw createError(`${fieldPrefix} must be an object.`)\n }\n\n assertNonEmptyString(column.name, `${fieldPrefix} name`, createError)\n\n if (!datasetColumnTypes.has(column.type as DatasetColumnType)) {\n throw createError(\n `${fieldPrefix} '${column.name}' has an invalid type '${String(column.type)}'.`\n )\n }\n\n if (column.nullable !== undefined && typeof column.nullable !== \"boolean\") {\n throw createError(`${fieldPrefix} '${column.name}' nullable must be a boolean.`)\n }\n}\n\nfunction assertDatasetSchema(\n schema: unknown,\n createError: (message: string) => Error\n): asserts schema is DatasetSchema {\n if (!isRecord(schema) || !Array.isArray(schema.columns)) {\n throw createError(\"Dataset definitions must declare a schema.\")\n }\n\n const seenColumnNames = new Set<string>()\n for (const column of schema.columns) {\n assertDatasetColumnDefinition(column, createError)\n\n if (seenColumnNames.has(column.name)) {\n throw createError(`Dataset schema contains a duplicate column '${column.name}'.`)\n }\n\n seenColumnNames.add(column.name)\n }\n}\n\nfunction assertDatasetPrimaryKey(\n primaryKey: unknown,\n schema: DatasetSchema,\n createError: (message: string) => Error\n): void {\n let keyColumns: readonly unknown[]\n if (typeof primaryKey === \"string\") {\n keyColumns = [primaryKey]\n } else if (Array.isArray(primaryKey)) {\n if (primaryKey.length < 2) {\n throw createError(\n \"Dataset primaryKey arrays must contain at least two column names. Use a string for a single-column key.\"\n )\n }\n keyColumns = primaryKey\n } else {\n throw createError(\n \"Dataset primaryKey must be a column name or an array of at least two column names.\"\n )\n }\n\n const columnsByName = new Map(schema.columns.map((column) => [column.name, column] as const))\n const seenColumnNames = new Set<string>()\n\n for (const columnName of keyColumns) {\n if (typeof columnName !== \"string\" || columnName.trim().length === 0) {\n throw createError(\"Dataset primaryKey columns must be non-empty strings.\")\n }\n\n if (seenColumnNames.has(columnName)) {\n throw createError(`Dataset primaryKey contains duplicate column '${columnName}'.`)\n }\n seenColumnNames.add(columnName)\n\n const column = columnsByName.get(columnName)\n if (column === undefined) {\n throw createError(`Dataset primaryKey column '${columnName}' is not declared in the schema.`)\n }\n if (column.type !== \"string\") {\n throw createError(`Dataset primaryKey column '${columnName}' must have type 'string'.`)\n }\n if (column.nullable === true) {\n throw createError(`Dataset primaryKey column '${columnName}' must not be nullable.`)\n }\n }\n}\n\nexport function assertDatasetDefinition(\n definition: unknown,\n createError: (message: string) => Error = (message) => new DatasetValidationError(message)\n): asserts definition is DatasetDefinition {\n if (!isRecord(definition)) {\n throw createError(\"Dataset definition must be an object.\")\n }\n\n if (definition.kind !== \"dataset\") {\n throw createError(\"Dataset definition kind must be 'dataset'.\")\n }\n\n assertNonEmptyString(definition.id, \"Dataset id\", createError)\n assertDatasetSchema(definition.schema, createError)\n\n if (definition.primaryKey !== undefined) {\n assertDatasetPrimaryKey(definition.primaryKey, definition.schema, createError)\n }\n\n if (definition.sequenceBy !== undefined) {\n const column = definition.schema.columns.find((column) => column.name === definition.sequenceBy)\n if (\n definition.primaryKey === undefined ||\n !column ||\n column.nullable ||\n ![\"timestamp\", \"int64\"].includes(column.type)\n ) {\n throw createError(\n \"Dataset sequenceBy requires a primaryKey and a non-nullable timestamp or int64 column.\"\n )\n }\n }\n\n if (definition.partitionBy !== undefined) {\n if (!Array.isArray(definition.partitionBy)) {\n throw createError(\"Dataset partitionBy must be an array of column names.\")\n }\n\n const columnNames = new Set(definition.schema.columns.map((column) => column.name))\n for (const columnName of definition.partitionBy) {\n assertNonEmptyString(columnName, \"Dataset partition column\", createError)\n if (!columnNames.has(columnName)) {\n throw createError(`Dataset partition column '${columnName}' is not declared in the schema.`)\n }\n }\n }\n\n if (definition.description !== undefined && typeof definition.description !== \"string\") {\n throw createError(\"Dataset description must be a string.\")\n }\n}\n\nexport function isDatasetDefinition(value: unknown): value is DatasetDefinition {\n try {\n assertDatasetDefinition(value, (message) => new Error(message))\n return true\n } catch {\n return false\n }\n}\n\nexport function getDatasetRowValidationError(\n row: unknown,\n dataset: DatasetDefinition,\n options?: { readonly columns?: Iterable<string> }\n): string | null {\n return getDatasetRowValidationFailure(row, dataset, options)?.message ?? null\n}\n\n/** Internal form retains a value-free explanation for the durable failure boundary. */\nexport function getDatasetRowValidationFailure(\n row: unknown,\n dataset: DatasetDefinition,\n options?: { readonly columns?: Iterable<string> }\n): Error | null {\n if (!isPlainRecord(row)) {\n return rowFailure(`Dataset '${dataset.id}' rows must be plain objects.`)\n }\n\n const columnsByName = new Map(\n dataset.schema.columns.map((column) => [column.name, column] as const)\n )\n\n // When `columns` is provided, validate only that subset (e.g. the columns a\n // projection actually maps). Projection reads are column-pruned, so the row\n // never carries unmapped columns and must not be checked against them.\n if (options?.columns !== undefined) {\n const columnsToValidate = new Set(options.columns)\n for (const column of dataset.schema.columns) {\n if (!columnsToValidate.has(column.name)) {\n continue\n }\n\n const error = getColumnValidationFailure(row, column, dataset)\n if (error) {\n return error\n }\n }\n\n return null\n }\n\n for (const columnName of Object.keys(row)) {\n if (!columnsByName.has(columnName)) {\n return rowFailure(\n `Dataset '${dataset.id}' row contains unknown column '${columnName}'.`,\n `Dataset '${dataset.id}' row contains an undeclared column.`\n )\n }\n }\n\n for (const column of dataset.schema.columns) {\n const error = getColumnValidationFailure(row, column, dataset)\n if (error) {\n return error\n }\n }\n\n return null\n}\n\nfunction getColumnValidationFailure(\n row: Record<string, unknown>,\n column: DatasetColumnDefinition,\n dataset: DatasetDefinition\n): Error | null {\n const hasValue = Object.hasOwn(row, column.name)\n const value = row[column.name]\n if (column.name === dataset.sequenceBy) {\n const message = getDatasetSequenceValidationError(dataset, value)\n return message === null\n ? null\n : rowFailure(\n message,\n `Dataset '${dataset.id}' sequence column '${column.name}' must contain a valid ${column.type} source sequence.`\n )\n }\n\n // Treat `undefined` the same as an omitted field so callers either send a real\n // value or use `null` explicitly on nullable columns.\n if (!hasValue || value === undefined) {\n if (!column.nullable) {\n return rowFailure(`Dataset '${dataset.id}' row is missing required column '${column.name}'.`)\n }\n return null\n }\n\n if (value === null) {\n if (!column.nullable) {\n return rowFailure(\n `Dataset '${dataset.id}' column '${column.name}' does not allow null values.`\n )\n }\n return null\n }\n\n // Every timestamp contributes to a sequenced row's millisecond-precision content digest.\n // Reject ambiguous or lossy values before staging, even when another column orders the row.\n if (dataset.sequenceBy !== undefined && column.type === \"timestamp\") {\n return parseDatasetTimestamp(value) === null\n ? rowFailure(\n `Dataset '${dataset.id}' column '${column.name}' must be a valid Date or ISO timestamp with an explicit timezone and at most millisecond precision.`\n )\n : null\n }\n\n if (!matchesColumnType(value, column.type)) {\n return rowFailure(\n `Dataset '${dataset.id}' column '${column.name}' must match type '${column.type}'.`\n )\n }\n\n return null\n}\n\nfunction rowFailure(message: string, publicMessage = message): Error {\n return withFailureMessage(new DatasetValidationError(message), publicMessage)\n}\n",
|
|
8
|
+
"import { markingIdsFrom } from \"../security/builders\"\nimport type { MarkingDefinition } from \"../security/types\"\nimport { DatasetValidationError } from \"./errors\"\nimport type {\n DatasetColumnDefinition,\n DatasetColumnNameOf,\n DatasetColumnType,\n DatasetDefinition,\n DatasetPrimaryKey,\n} from \"./types\"\nimport { assertDatasetColumnDefinition, assertDatasetDefinition } from \"./validation\"\n\ntype DatasetColumnOptions = {\n readonly nullable?: boolean\n /** Principals need a clearance for every marking to read this column. */\n readonly markings?: readonly MarkingDefinition[]\n}\n\ntype DefineDatasetOptions = {\n readonly schema: readonly DatasetColumnDefinition[]\n readonly primaryKey?: DatasetPrimaryKey\n readonly sequenceBy?: string\n readonly partitionBy?: readonly string[]\n readonly description?: string\n}\n\ntype DeriveDatasetOptions<TParent extends DatasetDefinition> = {\n readonly pick?: readonly DatasetColumnNameOf<TParent>[]\n readonly add?: readonly DatasetColumnDefinition[]\n readonly primaryKey?: DatasetPrimaryKey\n readonly sequenceBy?: string\n readonly partitionBy?: readonly string[]\n readonly description?: string\n}\n\ntype FieldFromOptions<TOptions, TKey extends string, TFallback> = TOptions extends {\n readonly [K in TKey]: infer TValue\n}\n ? TValue extends TFallback\n ? { readonly [K in TKey]: TValue }\n : { readonly [K in TKey]?: TFallback }\n : { readonly [K in TKey]?: TFallback }\n\ntype ColumnNameOf<TColumns extends readonly DatasetColumnDefinition[]> = TColumns[number][\"name\"]\n\ntype ColumnDefinitionOf<\n TColumns extends readonly DatasetColumnDefinition[],\n TName extends ColumnNameOf<TColumns>,\n> = Extract<TColumns[number], { readonly name: TName }>\n\ntype PrimaryKeyColumnNameOf<TColumns extends readonly DatasetColumnDefinition[]> =\n string extends ColumnNameOf<TColumns>\n ? string\n : {\n [TName in ColumnNameOf<TColumns>]: ColumnDefinitionOf<\n TColumns,\n TName\n >[\"type\"] extends \"string\"\n ? ColumnDefinitionOf<TColumns, TName> extends { readonly nullable: true }\n ? never\n : TName\n : never\n }[ColumnNameOf<TColumns>]\n\ntype CheckedDefineDatasetOptions<TOptions extends DefineDatasetOptions> = TOptions & {\n readonly primaryKey?: DatasetPrimaryKey<PrimaryKeyColumnNameOf<TOptions[\"schema\"]>>\n readonly sequenceBy?: SequenceColumnNameOf<TOptions[\"schema\"]>\n}\n\ntype SequenceColumnNameOf<TColumns extends readonly DatasetColumnDefinition[]> =\n string extends ColumnNameOf<TColumns>\n ? string\n : {\n [TName in ColumnNameOf<TColumns>]: ColumnDefinitionOf<TColumns, TName>[\"type\"] extends\n | \"timestamp\"\n | \"int64\"\n ? ColumnDefinitionOf<TColumns, TName> extends { readonly nullable: true }\n ? never\n : TName\n : never\n }[ColumnNameOf<TColumns>]\n\ntype PickColumns<\n TColumns extends readonly DatasetColumnDefinition[],\n TNames extends readonly ColumnNameOf<TColumns>[],\n> = TNames extends readonly [infer THead, ...infer TTail]\n ? THead extends ColumnNameOf<TColumns>\n ? TTail extends readonly ColumnNameOf<TColumns>[]\n ? readonly [ColumnDefinitionOf<TColumns, THead>, ...PickColumns<TColumns, TTail>]\n : never\n : never\n : TNames extends readonly []\n ? readonly []\n : readonly ColumnDefinitionOf<TColumns, TNames[number]>[]\n\ntype AddColumns<\n TColumns extends readonly DatasetColumnDefinition[],\n TAdd extends readonly DatasetColumnDefinition[],\n> = readonly [...TColumns, ...TAdd]\n\ntype DerivedBaseColumns<\n TParent extends DatasetDefinition,\n TOptions extends DeriveDatasetOptions<TParent> | undefined,\n> = TOptions extends { readonly pick: infer TPick }\n ? TPick extends readonly DatasetColumnNameOf<TParent>[]\n ? PickColumns<TParent[\"schema\"][\"columns\"], TPick>\n : TParent[\"schema\"][\"columns\"]\n : TParent[\"schema\"][\"columns\"]\n\ntype DerivedColumns<\n TParent extends DatasetDefinition,\n TOptions extends DeriveDatasetOptions<TParent> | undefined,\n> = TOptions extends { readonly add: infer TAdd }\n ? TAdd extends readonly DatasetColumnDefinition[]\n ? AddColumns<DerivedBaseColumns<TParent, TOptions>, TAdd>\n : DerivedBaseColumns<TParent, TOptions>\n : DerivedBaseColumns<TParent, TOptions>\n\n/** The column records marking ids; only a declared, non-empty list marks it. */\ntype MarkingsFromOptions<TOptions> = TOptions extends {\n readonly markings: readonly [MarkingDefinition, ...MarkingDefinition[]]\n}\n ? { readonly markings: readonly string[] }\n : { readonly markings?: readonly string[] }\n\ntype DatasetColumnResult<\n TName extends string,\n TType extends DatasetColumnType,\n TOptions extends DatasetColumnOptions | undefined,\n> = {\n readonly name: TName\n readonly type: TType\n} & FieldFromOptions<TOptions, \"nullable\", boolean> &\n MarkingsFromOptions<TOptions>\n\ntype DatasetDefinitionResult<TId extends string, TOptions extends DefineDatasetOptions> = Omit<\n DatasetDefinition<TId, TOptions[\"schema\"]>,\n \"primaryKey\" | \"sequenceBy\" | \"partitionBy\" | \"description\"\n> &\n FieldFromOptions<TOptions, \"sequenceBy\", string> &\n FieldFromOptions<TOptions, \"primaryKey\", DatasetPrimaryKey> &\n FieldFromOptions<TOptions, \"partitionBy\", readonly string[]> &\n FieldFromOptions<TOptions, \"description\", string>\n\ntype DerivedDatasetDefinitionResult<\n TId extends string,\n TParent extends DatasetDefinition,\n TOptions extends DeriveDatasetOptions<TParent> | undefined,\n> = Omit<\n DatasetDefinition<TId, DerivedColumns<TParent, TOptions>>,\n \"primaryKey\" | \"sequenceBy\" | \"partitionBy\" | \"description\"\n> &\n FieldFromOptions<TOptions, \"sequenceBy\", string> &\n FieldFromOptions<TOptions, \"primaryKey\", DatasetPrimaryKey> &\n FieldFromOptions<TOptions, \"partitionBy\", readonly string[]> &\n FieldFromOptions<TOptions, \"description\", string>\n\ntype CheckedDeriveDatasetOptions<\n TParent extends DatasetDefinition,\n TOptions extends DeriveDatasetOptions<TParent>,\n> = TOptions & {\n readonly primaryKey?: DatasetPrimaryKey<PrimaryKeyColumnNameOf<DerivedColumns<TParent, TOptions>>>\n readonly sequenceBy?: SequenceColumnNameOf<DerivedColumns<TParent, TOptions>>\n}\n\nexport function col<const TName extends string, const TType extends DatasetColumnType>(\n name: TName,\n type: TType\n): DatasetColumnResult<TName, TType, undefined>\nexport function col<\n const TName extends string,\n const TType extends DatasetColumnType,\n const TOptions extends DatasetColumnOptions,\n>(name: TName, type: TType, options: TOptions): DatasetColumnResult<TName, TType, TOptions>\nexport function col(\n name: string,\n type: DatasetColumnType,\n options?: DatasetColumnOptions\n): DatasetColumnDefinition {\n const markings = options?.markings\n const column: DatasetColumnDefinition = {\n name,\n type,\n ...(options?.nullable !== undefined ? { nullable: options.nullable } : {}),\n ...(markings && markings.length > 0\n ? { markings: markingIdsFrom(markings, `Dataset column '${name}' markings`) }\n : {}),\n }\n\n assertDatasetColumnDefinition(column, (message) => new DatasetValidationError(message))\n return column\n}\n\nfunction assertDatasetId(id: string): void {\n if (!id.trim()) {\n throw new DatasetValidationError(\"Dataset id must not be empty.\")\n }\n}\n\nfunction createDatasetDefinition(id: string, options: DefineDatasetOptions): DatasetDefinition {\n const definition: unknown = {\n kind: \"dataset\",\n id,\n schema: {\n columns: [...options.schema],\n },\n ...(options.primaryKey !== undefined\n ? {\n primaryKey: Array.isArray(options.primaryKey)\n ? [...options.primaryKey]\n : options.primaryKey,\n }\n : {}),\n ...(options.partitionBy !== undefined ? { partitionBy: [...options.partitionBy] } : {}),\n ...(options.sequenceBy !== undefined ? { sequenceBy: options.sequenceBy } : {}),\n ...(options.description !== undefined ? { description: options.description } : {}),\n }\n\n assertDatasetDefinition(definition, (message) => new DatasetValidationError(message))\n return definition\n}\n\nfunction assertStringArray(value: unknown, field: string): asserts value is readonly string[] {\n if (!Array.isArray(value)) {\n throw new DatasetValidationError(`${field} must be an array of column names.`)\n }\n\n for (const item of value) {\n if (typeof item !== \"string\" || !item.trim()) {\n throw new DatasetValidationError(`${field} must contain only non-empty column names.`)\n }\n }\n}\n\nfunction deriveDatasetDefinition(\n id: string,\n parent: DatasetDefinition,\n options: DeriveDatasetOptions<DatasetDefinition> = {}\n): DatasetDefinition {\n assertDatasetDefinition(parent, (message) => new DatasetValidationError(message))\n\n if (options.pick !== undefined) {\n assertStringArray(options.pick, \"Dataset derive pick\")\n }\n\n if (options.add !== undefined && !Array.isArray(options.add)) {\n throw new DatasetValidationError(\"Dataset derive add must be an array of columns.\")\n }\n\n const parentColumnsByName = new Map(\n parent.schema.columns.map((column) => [column.name, column] as const)\n )\n const pickedColumns =\n options.pick === undefined\n ? parent.schema.columns\n : options.pick.map((columnName) => {\n const column = parentColumnsByName.get(columnName)\n if (column === undefined) {\n throw new DatasetValidationError(\n `Dataset derive pick column '${columnName}' is not declared on parent dataset '${parent.id}'.`\n )\n }\n return column\n })\n\n return createDatasetDefinition(id, {\n schema: [...pickedColumns, ...(options.add ?? [])],\n ...(options.primaryKey !== undefined ? { primaryKey: options.primaryKey } : {}),\n ...(options.sequenceBy !== undefined ? { sequenceBy: options.sequenceBy } : {}),\n ...(options.partitionBy !== undefined ? { partitionBy: options.partitionBy } : {}),\n ...(options.description !== undefined ? { description: options.description } : {}),\n })\n}\n\nfunction createDatasetDeriveBuilder<TId extends string>(id: TId) {\n assertDatasetId(id)\n\n function derive<const TParent extends DatasetDefinition>(\n parent: TParent\n ): DerivedDatasetDefinitionResult<TId, TParent, undefined>\n function derive<\n const TParent extends DatasetDefinition,\n const TOptions extends DeriveDatasetOptions<TParent>,\n >(\n parent: TParent,\n options: CheckedDeriveDatasetOptions<TParent, TOptions>\n ): DerivedDatasetDefinitionResult<TId, TParent, TOptions>\n function derive(\n parent: DatasetDefinition,\n options?: DeriveDatasetOptions<DatasetDefinition>\n ): DatasetDefinition {\n return deriveDatasetDefinition(id, parent, options)\n }\n\n return { derive }\n}\n\nexport function defineDataset<const TId extends string>(\n id: TId\n): ReturnType<typeof createDatasetDeriveBuilder<TId>>\nexport function defineDataset<\n const TId extends string,\n const TOptions extends DefineDatasetOptions,\n>(id: TId, options: CheckedDefineDatasetOptions<TOptions>): DatasetDefinitionResult<TId, TOptions>\nexport function defineDataset(\n id: string,\n options?: DefineDatasetOptions\n): DatasetDefinition | ReturnType<typeof createDatasetDeriveBuilder<string>> {\n if (options === undefined) {\n return createDatasetDeriveBuilder(id)\n }\n\n return createDatasetDefinition(id, options)\n}\n",
|
|
9
|
+
"export type MergeChange<Row, Key> =\n | { readonly kind: \"upsert\"; readonly row: Row }\n | { readonly kind: \"delete\"; readonly key: Key; readonly sequence?: string | number | Date }\n\nexport const change = {\n upsert<const Row extends object>(row: Row): { readonly kind: \"upsert\"; readonly row: Row } {\n return { kind: \"upsert\", row }\n },\n\n delete: deleteChange,\n}\n\nfunction deleteChange<const Key extends object>(\n key: Key\n): { readonly kind: \"delete\"; readonly key: Key }\nfunction deleteChange<const Key extends object, const Sequence extends string | number | Date>(\n key: Key,\n options: { readonly sequence: Sequence }\n): { readonly kind: \"delete\"; readonly key: Key; readonly sequence: Sequence }\nfunction deleteChange<Key extends object>(\n key: Key,\n options?: { readonly sequence: string | number | Date }\n): { readonly kind: \"delete\"; readonly key: Key; readonly sequence?: string | number | Date } {\n return { kind: \"delete\", key, ...(options ? { sequence: options.sequence } : {}) }\n}\n"
|
|
10
|
+
],
|
|
11
|
+
"mappings": "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",
|
|
12
|
+
"debugId": "93487566238603FF64756E2164756E21",
|
|
13
|
+
"names": []
|
|
14
|
+
}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
1
|
// @bun
|
|
2
|
+
import {
|
|
3
|
+
ACTION_RUN_PHASES2,
|
|
4
|
+
parseActionRunFailure2
|
|
5
|
+
} from "./chunk-b38szspf.js";
|
|
6
|
+
import {
|
|
7
|
+
isFileRef2
|
|
8
|
+
} from "./chunk-jhm3zsa7.js";
|
|
2
9
|
import {
|
|
3
10
|
createObjectOperationScope2
|
|
4
11
|
} from "./chunk-qczk96d9.js";
|
|
5
12
|
import {
|
|
6
|
-
|
|
7
|
-
} from "./chunk-
|
|
13
|
+
ActionRunError2
|
|
14
|
+
} from "./chunk-y0c4e6ex.js";
|
|
8
15
|
import {
|
|
16
|
+
assertJsonValue2,
|
|
17
|
+
cloneJsonValue2,
|
|
9
18
|
stableJsonStringify2
|
|
10
19
|
} from "./chunk-wy0qdqfm.js";
|
|
11
20
|
|
|
12
21
|
// src/storage/action-runs/idempotency.ts
|
|
13
|
-
function
|
|
22
|
+
function actionSubjectsEqual(left, right) {
|
|
14
23
|
if (left.kind !== right.kind)
|
|
15
24
|
return false;
|
|
16
25
|
if (left.kind === "none")
|
|
@@ -19,27 +28,104 @@ function actionSubjectsEqual2(left, right) {
|
|
|
19
28
|
return false;
|
|
20
29
|
return left.objectTypeId === right.objectTypeId && left.primaryId === right.primaryId;
|
|
21
30
|
}
|
|
22
|
-
function
|
|
31
|
+
function actionRunParamsEqual(left, right) {
|
|
23
32
|
return stableJsonStringify2(left) === stableJsonStringify2(right);
|
|
24
33
|
}
|
|
25
|
-
function
|
|
26
|
-
return
|
|
34
|
+
function actionRunRequestsEqual(left, right) {
|
|
35
|
+
return left.actionId === right.actionId && actionSubjectsEqual(left.subject, right.subject) && actionRunParamsEqual(left.params, right.params);
|
|
27
36
|
}
|
|
28
|
-
function
|
|
37
|
+
function actionRunPhaseRecordsEqual(left, right) {
|
|
38
|
+
return actionRunParamsEqual(stripPhaseRecordCompletedAt(left), stripPhaseRecordCompletedAt(right));
|
|
39
|
+
}
|
|
40
|
+
function stripPhaseRecordCompletedAt(record) {
|
|
41
|
+
const { completedAt: _completedAt, ...stableRecord } = record;
|
|
42
|
+
return stableRecord;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// src/storage/action-runs/record.ts
|
|
46
|
+
function normalizeRecordActionRunInput2(input) {
|
|
47
|
+
const label = `[Sixb] Action run '${input.id}'`;
|
|
48
|
+
for (const field of ["id", "projectId", "executionId", "actionId", "idempotencyKey"]) {
|
|
49
|
+
if (typeof input[field] !== "string" || input[field].trim().length === 0) {
|
|
50
|
+
throw new ActionRunError2(`${label} must have a nonblank ${field}.`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const status = input.status;
|
|
54
|
+
if (status !== "succeeded" && status !== "failed") {
|
|
55
|
+
throw new ActionRunError2(`${label} has unknown status '${status}'.`);
|
|
56
|
+
}
|
|
57
|
+
if (!ACTION_RUN_PHASES2.includes(input.phase)) {
|
|
58
|
+
throw new ActionRunError2(`${label} has unknown phase '${input.phase}'.`);
|
|
59
|
+
}
|
|
60
|
+
if (input.phase === "effects") {
|
|
61
|
+
throw new ActionRunError2(`${label} is recorded before its effects run.`);
|
|
62
|
+
}
|
|
63
|
+
const startedAt = requireDate(input.startedAt, `${label} startedAt`);
|
|
64
|
+
const finishedAt = requireDate(input.finishedAt, `${label} finishedAt`);
|
|
65
|
+
if (finishedAt < startedAt) {
|
|
66
|
+
throw new ActionRunError2(`${label} cannot finish before it started.`);
|
|
67
|
+
}
|
|
68
|
+
assertJsonValue2(input.params, `${label} params`);
|
|
69
|
+
const fields = {
|
|
70
|
+
id: input.id,
|
|
71
|
+
projectId: input.projectId,
|
|
72
|
+
executionId: input.executionId,
|
|
73
|
+
actionId: input.actionId,
|
|
74
|
+
subject: structuredClone(input.subject),
|
|
75
|
+
phase: input.phase,
|
|
76
|
+
startedAt,
|
|
77
|
+
finishedAt,
|
|
78
|
+
params: structuredClone(input.params),
|
|
79
|
+
idempotencyKey: input.idempotencyKey,
|
|
80
|
+
...input.writeback === undefined ? {} : { writeback: normalizeWriteback(input.writeback, label) }
|
|
81
|
+
};
|
|
29
82
|
if (input.status === "succeeded") {
|
|
30
|
-
|
|
83
|
+
if (input.error !== undefined) {
|
|
84
|
+
throw new ActionRunError2(`${label} succeeded, so it cannot record a failure.`);
|
|
85
|
+
}
|
|
86
|
+
return { ...fields, status: "succeeded" };
|
|
87
|
+
}
|
|
88
|
+
const error = parseActionRunFailure2(input.error, input.phase);
|
|
89
|
+
if (error.details.runId !== input.id || error.details.actionId !== input.actionId) {
|
|
90
|
+
throw new ActionRunError2(`${label} records the failure of another run.`);
|
|
31
91
|
}
|
|
32
|
-
return
|
|
92
|
+
return { ...fields, status: "failed", error };
|
|
33
93
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
94
|
+
function resolveActionRunEffects2(existing, input) {
|
|
95
|
+
const label = `[Sixb] Action run '${input.id}'`;
|
|
96
|
+
if (!existing) {
|
|
97
|
+
throw new ActionRunError2(`${label} not found for project '${input.projectId}'.`);
|
|
98
|
+
}
|
|
99
|
+
const completedAt = requireDate(input.completedAt ?? new Date, `${label} effects`);
|
|
100
|
+
const effects = input.status === "succeeded" ? { status: "succeeded", completedAt } : { status: "failed", completedAt, error: parseActionRunFailure2(input.error, "effects") };
|
|
101
|
+
if (existing.effects) {
|
|
102
|
+
if (actionRunPhaseRecordsEqual(existing.effects, effects))
|
|
103
|
+
return { run: existing, effects: null };
|
|
104
|
+
throw new ActionRunError2(`${label} already has a different effects record.`);
|
|
105
|
+
}
|
|
106
|
+
if (existing.status !== "succeeded" || existing.phase !== "commit") {
|
|
107
|
+
throw new ActionRunError2(`${label} cannot record effects: it ended '${existing.status}' in phase '${existing.phase}'.`);
|
|
108
|
+
}
|
|
109
|
+
return { run: existing, effects };
|
|
36
110
|
}
|
|
37
|
-
function
|
|
38
|
-
|
|
111
|
+
function normalizeWriteback(writeback, label) {
|
|
112
|
+
const completedAt = requireDate(writeback.completedAt, `${label} writeback`);
|
|
113
|
+
if (writeback.status === "succeeded") {
|
|
114
|
+
assertJsonValue2(writeback.result, `${label} writeback result`);
|
|
115
|
+
return { status: "succeeded", completedAt, result: cloneJsonValue2(writeback.result) };
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
status: "failed",
|
|
119
|
+
completedAt,
|
|
120
|
+
error: parseActionRunFailure2(writeback.error, "writeback")
|
|
121
|
+
};
|
|
39
122
|
}
|
|
40
|
-
function
|
|
41
|
-
const
|
|
42
|
-
|
|
123
|
+
function requireDate(value, label) {
|
|
124
|
+
const date = value instanceof Date ? new Date(value) : new Date(Number.NaN);
|
|
125
|
+
if (!Number.isFinite(date.getTime())) {
|
|
126
|
+
throw new ActionRunError2(`${label} must be a valid date.`);
|
|
127
|
+
}
|
|
128
|
+
return date;
|
|
43
129
|
}
|
|
44
130
|
|
|
45
131
|
// src/storage/errors.ts
|
|
@@ -165,6 +251,6 @@ function throwNestedStorageTransaction2() {
|
|
|
165
251
|
});
|
|
166
252
|
}
|
|
167
253
|
|
|
168
|
-
export {
|
|
254
|
+
export { actionSubjectsEqual, actionRunRequestsEqual, normalizeRecordActionRunInput2, resolveActionRunEffects2, ObjectNotFoundError2, ObjectStorageError2, StorageTransactionError2, isStorageSerializationFailure2, parseFileDownloadGrantRow2, cloneFileDownloadGrantRecord, canRequeuePipelineRunAfterEnqueueFailure2, canRequeueSyncRunAfterEnqueueFailure2, createTransactionStorageProxy2, assertTransactionActive2, throwNestedStorageTransaction2 };
|
|
169
255
|
|
|
170
|
-
//# debugId=
|
|
256
|
+
//# debugId=B710291DEE8F3A1864756E2164756E21
|