@sixb/core 0.1.18 → 0.1.20
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 +51 -50
- package/dist/actions/index.js.map +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/agents/index.js +52 -55
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/streams/index.js +2 -2
- package/dist/agents/streams/internal.js +2 -2
- package/dist/auth/cookies.d.ts +2 -4
- package/dist/auth/cookies.d.ts.map +1 -1
- package/dist/auth/index.d.ts +0 -2
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +15 -21
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/runtime.d.ts +8 -10
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/session-cache.d.ts +1 -5
- package/dist/auth/session-cache.d.ts.map +1 -1
- package/dist/auth/strategy.js +1 -1
- package/dist/auth/types.d.ts +4 -8
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/auth/validation.d.ts +0 -1
- package/dist/auth/validation.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +0 -4
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +6 -8
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +0 -1
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +5 -9
- 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/bootstrap/index.js +50 -53
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-vz3gc1tm.js → chunk-0rbyz4qy.js} +67 -69
- package/dist/{chunk-vz3gc1tm.js.map → chunk-0rbyz4qy.js.map} +4 -4
- package/dist/{chunk-rz53yb4v.js → chunk-0yh890a4.js} +1 -1
- package/dist/{chunk-vgk3hknm.js → chunk-1k89ecfr.js} +1 -1
- package/dist/{chunk-ny3xyvcn.js → chunk-1zq2p6g0.js} +3 -3
- package/dist/{chunk-dnmadg9k.js → chunk-3t2hgbgd.js} +2 -2
- package/dist/{chunk-k6hrnf35.js → chunk-4vyr1j8f.js} +51 -4
- package/dist/chunk-4vyr1j8f.js.map +11 -0
- package/dist/{chunk-22v5bpz3.js → chunk-5e43w60z.js} +1 -1
- package/dist/{chunk-de4z2bj6.js → chunk-5j58wjct.js} +17 -17
- package/dist/chunk-5j58wjct.js.map +18 -0
- package/dist/{chunk-fe52eczz.js → chunk-6c6sn0bh.js} +6352 -2127
- package/dist/chunk-6c6sn0bh.js.map +106 -0
- package/dist/{chunk-7hpdd6r9.js → chunk-6p49a5cq.js} +4 -4
- 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-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-ex496vct.js → chunk-9dmt152s.js} +1 -1
- package/dist/{chunk-48e3cn2d.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-zxawp1n2.js → chunk-9w055r5b.js} +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-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-htr6wjmv.js → chunk-bx9q3cwv.js} +22 -22
- package/dist/{chunk-htr6wjmv.js.map → chunk-bx9q3cwv.js.map} +1 -1
- package/dist/{chunk-vx2yp45y.js → chunk-c85m1hyj.js} +2 -2
- package/dist/{chunk-bs7sqkre.js → chunk-d09tj99x.js} +2 -2
- package/dist/{chunk-qkbx3tf6.js → chunk-d0bqz29d.js} +27 -47
- package/dist/chunk-d0bqz29d.js.map +23 -0
- package/dist/{chunk-zb77kjth.js → chunk-dk8tkk5f.js} +4 -4
- package/dist/{chunk-xt1zt7gv.js → chunk-es1gxsbf.js} +24 -15
- package/dist/chunk-es1gxsbf.js.map +13 -0
- package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
- package/dist/{chunk-za5yd58j.js → chunk-fkgc1wt8.js} +2 -2
- package/dist/{chunk-enpsx8k5.js → chunk-gsjm1wms.js} +16 -20
- package/dist/chunk-gsjm1wms.js.map +10 -0
- package/dist/{chunk-2jntasmh.js → chunk-hcbyfxbe.js} +25 -49
- package/dist/chunk-hcbyfxbe.js.map +12 -0
- package/dist/{chunk-p0dqwj3n.js → chunk-hjzdd750.js} +66 -47
- package/dist/{chunk-p0dqwj3n.js.map → chunk-hjzdd750.js.map} +4 -4
- package/dist/chunk-hkc3jct7.js.map +1 -1
- package/dist/{chunk-y05543x6.js → chunk-hvsb78a1.js} +4 -4
- package/dist/{chunk-y05543x6.js.map → chunk-hvsb78a1.js.map} +1 -1
- package/dist/{chunk-1b1f2d5f.js → chunk-k6q3n2sc.js} +9 -9
- package/dist/{chunk-1b1f2d5f.js.map → chunk-k6q3n2sc.js.map} +1 -1
- 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-qq90g05n.js → chunk-n33z5bjw.js} +50 -240
- package/dist/{chunk-qq90g05n.js.map → chunk-n33z5bjw.js.map} +4 -4
- 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-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-s4jhg8a3.js → chunk-ren4kg2j.js} +15 -15
- package/dist/{chunk-s4jhg8a3.js.map → chunk-ren4kg2j.js.map} +1 -1
- package/dist/{chunk-d0eb5yy6.js → chunk-rrzt8jdy.js} +5 -5
- package/dist/{chunk-d0eb5yy6.js.map → chunk-rrzt8jdy.js.map} +1 -1
- package/dist/{chunk-y9jmd7e5.js → chunk-s16apyk9.js} +102 -16
- package/dist/chunk-s16apyk9.js.map +16 -0
- package/dist/{chunk-6gmfggss.js → chunk-t7x8dmn0.js} +2 -2
- package/dist/{chunk-f1zxad2t.js → chunk-tg2cw67r.js} +6 -6
- package/dist/{chunk-f1zxad2t.js.map → chunk-tg2cw67r.js.map} +1 -1
- package/dist/{chunk-p844e0rn.js → chunk-tpn40322.js} +2 -2
- package/dist/{chunk-rt9p8m9t.js → chunk-v9xd5wzd.js} +1 -1
- package/dist/{chunk-6h5m9xjx.js → chunk-vpq4shxz.js} +49 -113
- package/dist/chunk-vpq4shxz.js.map +39 -0
- package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
- package/dist/{chunk-bwjcehza.js → chunk-way52z4h.js} +1 -1
- package/dist/{chunk-qkvz64nd.js → chunk-x6m907x7.js} +3 -3
- package/dist/{chunk-yv9czyfr.js → chunk-xfs8x8m9.js} +5 -5
- package/dist/chunk-y0c4e6ex.js +16 -0
- package/dist/chunk-y0c4e6ex.js.map +10 -0
- package/dist/{chunk-v6xpd60t.js → chunk-yevzdx4y.js} +5 -5
- 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-qmnnhde6.js → chunk-z4m0yz8c.js} +1 -1
- package/dist/datasets/write.js +5 -5
- package/dist/deploy/index.d.ts +1 -1
- package/dist/deploy/index.d.ts.map +1 -1
- package/dist/deploy/internal.js +13 -10
- 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 +7 -7
- 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/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/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/execution/agent.js +41 -44
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/primitive.js +60 -91
- package/dist/execution/primitive.js.map +3 -4
- package/dist/execution/request.js +40 -43
- package/dist/execution/request.js.map +2 -2
- package/dist/index.d.ts +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +105 -127
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +5 -5
- 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 +31 -31
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/models/execution/index.js +21 -21
- 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/execution.d.ts +0 -2
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +44 -29
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/index.js +29 -29
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts.map +1 -1
- 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/objects/vectors/handle.d.ts.map +1 -1
- package/dist/objects/vectors/profile.d.ts +5 -0
- package/dist/objects/vectors/profile.d.ts.map +1 -1
- package/dist/ontology/index.js +6 -6
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +2 -2
- package/dist/pipelines/index.js +28 -28
- package/dist/projections/internal.js +22 -22
- 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/host.d.ts.map +1 -1
- package/dist/runtime/internal.js +27 -28
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +16 -36
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +5 -5
- 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.map +1 -1
- package/dist/security/every.d.ts +2 -5
- package/dist/security/every.d.ts.map +1 -1
- package/dist/security/grants.d.ts +2 -4
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -2
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/membership-policies.d.ts.map +1 -1
- package/dist/security/public.d.ts +10 -0
- package/dist/security/public.d.ts.map +1 -0
- package/dist/security/public.js +10 -0
- package/dist/security/public.js.map +9 -0
- package/dist/security/registry.d.ts +0 -1
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +13 -18
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts +0 -6
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/shares/internal.js +20 -20
- 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/types.d.ts +1 -1
- package/dist/storage/ai-limits/enforcement.js +2 -2
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/magic-links.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/oidc-attempts.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/sessions.d.ts +0 -10
- package/dist/storage/auth/in-memory/sessions.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/shared.d.ts +1 -2
- package/dist/storage/auth/in-memory/shared.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +1 -17
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/file-upload-sessions/provider.js +10 -10
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +21 -22
- 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 +9 -12
- 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/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 +10 -10
- package/dist/syncs/index.js +29 -29
- 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/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +2 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3205 -2946
- package/dist/testing/index.js.map +9 -8
- 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 +26 -26
- package/dist/webhooks/internal.js.map +1 -1
- package/dist/workers/index.js +1 -1
- package/dist/workflows/index.js +48 -51
- package/dist/workflows/index.js.map +1 -1
- package/package.json +8 -8
- 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/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/auth/cookies.ts +3 -20
- package/src/auth/index.ts +0 -6
- package/src/auth/runtime.ts +59 -76
- package/src/auth/session-cache.ts +2 -9
- package/src/auth/types.ts +4 -8
- package/src/auth/validation.ts +0 -2
- package/src/authorization/decision.ts +8 -23
- package/src/authorization/event-visibility.ts +0 -12
- package/src/authorization/grant-kinds.ts +20 -27
- package/src/authorization/index.ts +0 -1
- package/src/authorization/resolve.ts +10 -6
- package/src/deploy/index.ts +0 -1
- package/src/deploy/services.ts +2 -12
- package/src/deploy/types.ts +7 -8
- package/src/deploy/validation.ts +15 -7
- 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/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/execution/authorization.ts +11 -5
- package/src/index.ts +2 -33
- 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/execution/embedding.ts +6 -6
- 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/execution.ts +2 -2
- package/src/objects/sdk/object-handle.ts +3 -29
- package/src/objects/sdk/object-set.ts +5 -30
- package/src/objects/service/index.ts +0 -1
- package/src/objects/vectors/README.md +4 -0
- package/src/objects/vectors/handle.ts +11 -2
- package/src/objects/vectors/indexing-generate.ts +2 -2
- package/src/objects/vectors/profile.ts +5 -0
- 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/host.ts +5 -0
- package/src/runtime/resolve-definitions.ts +0 -1
- package/src/runtime/types.ts +16 -45
- 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 +7 -2
- package/src/security/every.ts +1 -5
- package/src/security/grants.ts +5 -25
- package/src/security/index.ts +0 -3
- package/src/security/membership-policies.ts +3 -1
- package/src/security/public.ts +10 -0
- package/src/security/registry.ts +0 -8
- package/src/security/types.ts +19 -25
- package/src/security/validation.ts +19 -17
- 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/types.ts +1 -1
- package/src/storage/auth/in-memory/auth-storage.ts +0 -18
- package/src/storage/auth/in-memory/magic-links.ts +0 -3
- package/src/storage/auth/in-memory/oidc-attempts.ts +0 -3
- package/src/storage/auth/in-memory/sessions.ts +1 -25
- package/src/storage/auth/in-memory/shared.ts +1 -10
- package/src/storage/auth/types.ts +2 -18
- package/src/storage/index.ts +1 -9
- package/src/storage/internal.ts +1 -7
- package/src/storage/objects/execution-limits.ts +3 -2
- 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/auth-storage-contract.ts +14 -107
- package/src/testing/execution-storage-contract.ts +0 -2
- 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/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 -325
- package/dist/actions/worker.js.map +0 -11
- package/dist/auth/audience.d.ts +0 -8
- package/dist/auth/audience.d.ts.map +0 -1
- package/dist/authorization/application-access.d.ts +0 -18
- package/dist/authorization/application-access.d.ts.map +0 -1
- package/dist/chunk-1hqwggsn.js.map +0 -12
- package/dist/chunk-2jntasmh.js.map +0 -13
- package/dist/chunk-6h5m9xjx.js.map +0 -40
- package/dist/chunk-85cd7e8c.js +0 -51
- package/dist/chunk-85cd7e8c.js.map +0 -10
- package/dist/chunk-de4z2bj6.js.map +0 -18
- package/dist/chunk-dfm066qg.js.map +0 -11
- package/dist/chunk-enpsx8k5.js.map +0 -10
- package/dist/chunk-fc5zfxy1.js.map +0 -11
- package/dist/chunk-fe52eczz.js.map +0 -49
- package/dist/chunk-fx93hd2n.js +0 -1614
- package/dist/chunk-fx93hd2n.js.map +0 -20
- package/dist/chunk-k6hrnf35.js.map +0 -10
- package/dist/chunk-qkbx3tf6.js.map +0 -24
- package/dist/chunk-qxvp5epv.js +0 -1329
- package/dist/chunk-qxvp5epv.js.map +0 -36
- package/dist/chunk-r2y23egw.js.map +0 -10
- package/dist/chunk-tffvfy6s.js +0 -593
- package/dist/chunk-tffvfy6s.js.map +0 -15
- package/dist/chunk-xt1zt7gv.js.map +0 -13
- package/dist/chunk-y2aq6ag9.js.map +0 -11
- package/dist/chunk-y9jmd7e5.js.map +0 -15
- 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/dist/security/applications.d.ts +0 -15
- package/dist/security/applications.d.ts.map +0 -1
- package/src/actions/run-dispatch.ts +0 -282
- package/src/actions/worker.ts +0 -2
- package/src/auth/audience.ts +0 -28
- package/src/authorization/application-access.ts +0 -34
- package/src/events/types/actions.ts +0 -42
- package/src/objects/service/action-service.ts +0 -43
- package/src/security/applications.ts +0 -11
- /package/dist/{chunk-rz53yb4v.js.map → chunk-0yh890a4.js.map} +0 -0
- /package/dist/{chunk-vgk3hknm.js.map → chunk-1k89ecfr.js.map} +0 -0
- /package/dist/{chunk-ny3xyvcn.js.map → chunk-1zq2p6g0.js.map} +0 -0
- /package/dist/{chunk-dnmadg9k.js.map → chunk-3t2hgbgd.js.map} +0 -0
- /package/dist/{chunk-22v5bpz3.js.map → chunk-5e43w60z.js.map} +0 -0
- /package/dist/{chunk-7hpdd6r9.js.map → chunk-6p49a5cq.js.map} +0 -0
- /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
- /package/dist/{chunk-ex496vct.js.map → chunk-9dmt152s.js.map} +0 -0
- /package/dist/{chunk-48e3cn2d.js.map → chunk-9gyp8hg1.js.map} +0 -0
- /package/dist/{chunk-zxawp1n2.js.map → chunk-9w055r5b.js.map} +0 -0
- /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
- /package/dist/{chunk-vx2yp45y.js.map → chunk-c85m1hyj.js.map} +0 -0
- /package/dist/{chunk-bs7sqkre.js.map → chunk-d09tj99x.js.map} +0 -0
- /package/dist/{chunk-zb77kjth.js.map → chunk-dk8tkk5f.js.map} +0 -0
- /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
- /package/dist/{chunk-za5yd58j.js.map → chunk-fkgc1wt8.js.map} +0 -0
- /package/dist/{chunk-6gmfggss.js.map → chunk-t7x8dmn0.js.map} +0 -0
- /package/dist/{chunk-p844e0rn.js.map → chunk-tpn40322.js.map} +0 -0
- /package/dist/{chunk-rt9p8m9t.js.map → chunk-v9xd5wzd.js.map} +0 -0
- /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
- /package/dist/{chunk-bwjcehza.js.map → chunk-way52z4h.js.map} +0 -0
- /package/dist/{chunk-qkvz64nd.js.map → chunk-x6m907x7.js.map} +0 -0
- /package/dist/{chunk-yv9czyfr.js.map → chunk-xfs8x8m9.js.map} +0 -0
- /package/dist/{chunk-v6xpd60t.js.map → chunk-yevzdx4y.js.map} +0 -0
- /package/dist/{chunk-qmnnhde6.js.map → chunk-z4m0yz8c.js.map} +0 -0
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import {
|
|
3
3
|
createSixbError2,
|
|
4
4
|
isSixbError2
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-8mx7qw3y.js";
|
|
6
6
|
import {
|
|
7
7
|
AiLimitStorageError2,
|
|
8
8
|
aiLimitMeterApplies2
|
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
applicableAiLimitPolicies2,
|
|
13
13
|
aiUsageLimitExceededError2,
|
|
14
14
|
aiUsageLimitUnavailableError2
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-vyf9kfqf.js";
|
|
16
16
|
import {
|
|
17
17
|
AiUsageStorageError2,
|
|
18
18
|
normalizeAiModelCallCostRecord2,
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
} from "./chunk-ere85b8y.js";
|
|
21
21
|
import {
|
|
22
22
|
AiCostStorageError2
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-n33z5bjw.js";
|
|
24
24
|
import {
|
|
25
25
|
normalizeAiModelCallRecord2
|
|
26
26
|
} from "./chunk-rj69qcrd.js";
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
datasetSequenceValue,
|
|
4
4
|
assertDatasetDefinition2,
|
|
5
5
|
getDatasetRowValidationFailure
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-0yh890a4.js";
|
|
7
7
|
import {
|
|
8
8
|
LakeStorageError2,
|
|
9
9
|
LakeConcurrencyError2,
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
encodeDatasetPrimaryKey2,
|
|
12
12
|
getDatasetMergeChangeValidationError2,
|
|
13
13
|
cloneDatasetMergeChange2
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-way52z4h.js";
|
|
15
15
|
import {
|
|
16
16
|
normalizeDecimalValue2
|
|
17
17
|
} from "./chunk-3bh94gbw.js";
|
|
@@ -4,11 +4,58 @@ import {
|
|
|
4
4
|
createAiModelCallLimitController2,
|
|
5
5
|
AiModelCallRecorder2,
|
|
6
6
|
enqueueAiModelCallRecovery2
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-1zq2p6g0.js";
|
|
8
8
|
import {
|
|
9
9
|
executionRecordInputFromRuntime,
|
|
10
10
|
ensureExecutionRecord2
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-9dmt152s.js";
|
|
12
|
+
|
|
13
|
+
// src/runtime/ontology-mutations.ts
|
|
14
|
+
var ontologyMutationRuntimeKey = Symbol("sixb.ontologyMutationRuntime");
|
|
15
|
+
function registerOntologyMutationRuntime2(owner, runtime) {
|
|
16
|
+
const registered = owner[ontologyMutationRuntimeKey];
|
|
17
|
+
if (registered && registered !== runtime) {
|
|
18
|
+
throw new Error("[Sixb] Ontology mutation runtime is already registered for this owner.");
|
|
19
|
+
}
|
|
20
|
+
Object.defineProperty(owner, ontologyMutationRuntimeKey, {
|
|
21
|
+
configurable: false,
|
|
22
|
+
enumerable: true,
|
|
23
|
+
value: runtime,
|
|
24
|
+
writable: false
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
function getOntologyMutationRuntime2(owner) {
|
|
28
|
+
const runtime = owner[ontologyMutationRuntimeKey];
|
|
29
|
+
if (runtime)
|
|
30
|
+
return runtime;
|
|
31
|
+
throw new Error("[Sixb] Ontology mutation runtime is not registered for this runtime context.");
|
|
32
|
+
}
|
|
33
|
+
function shareOntologyMutationRuntime2(source, target) {
|
|
34
|
+
registerOntologyMutationRuntime2(target, getOntologyMutationRuntime2(source));
|
|
35
|
+
}
|
|
36
|
+
function createOntologyMutationRuntime2(input) {
|
|
37
|
+
const runtime = {
|
|
38
|
+
getProjectionSource: (source) => input.materializer.projections.getActive(source),
|
|
39
|
+
commitEdits: (command) => commitAndNotify(() => input.materializer.edits.commit(command), input.notifyCommittedFacts),
|
|
40
|
+
replaceProjection: (command) => commitAndNotify(() => input.materializer.projections.replace(command), input.notifyCommittedFacts),
|
|
41
|
+
finishProjection: (command) => input.materializer.projections.finishRun(command),
|
|
42
|
+
appendTelemetry: (command) => commitAndNotify(() => input.materializer.telemetry.append(command), input.notifyCommittedFacts)
|
|
43
|
+
};
|
|
44
|
+
return Object.freeze(runtime);
|
|
45
|
+
}
|
|
46
|
+
async function commitAndNotify(commit, notify) {
|
|
47
|
+
const result = await commit();
|
|
48
|
+
if (result.eventCount > 0)
|
|
49
|
+
notifyWithoutAffectingCommit(notify);
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
function notifyWithoutAffectingCommit(notify) {
|
|
53
|
+
try {
|
|
54
|
+
notify();
|
|
55
|
+
} catch (error) {
|
|
56
|
+
console.error("[Sixb] Failed to wake the ontology outbox dispatcher:", error);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
12
59
|
|
|
13
60
|
// src/models/execution/session.ts
|
|
14
61
|
class ModelExecutionSession {
|
|
@@ -76,6 +123,6 @@ class ModelExecutionSession {
|
|
|
76
123
|
}
|
|
77
124
|
}
|
|
78
125
|
|
|
79
|
-
export { ModelExecutionSession };
|
|
126
|
+
export { registerOntologyMutationRuntime2, getOntologyMutationRuntime2, shareOntologyMutationRuntime2, createOntologyMutationRuntime2, ModelExecutionSession };
|
|
80
127
|
|
|
81
|
-
//# debugId=
|
|
128
|
+
//# debugId=68E7C49FC6F738D764756E2164756E21
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/runtime/ontology-mutations.ts", "../src/models/execution/session.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import type {\n EditCommitResult,\n OntologyEditCommit,\n ProjectionCommitResult,\n ProjectionRunFinishInput,\n ProjectionSourceRef,\n ProjectionSourceReplacement,\n TelemetryAppend,\n TelemetryCommitResult,\n} from \"../materialization/model\"\nimport type { BoundOntologyMaterializer } from \"../materializer\"\nimport type { OntologySourceRecord } from \"../storage/ontology\"\n\nexport interface OntologyMutationRuntime {\n getProjectionSource?(source: ProjectionSourceRef): Promise<OntologySourceRecord | null>\n commitEdits(input: OntologyEditCommit): Promise<EditCommitResult>\n replaceProjection(input: ProjectionSourceReplacement): Promise<ProjectionCommitResult>\n finishProjection(input: ProjectionRunFinishInput): Promise<void>\n appendTelemetry(input: TelemetryAppend): Promise<TelemetryCommitResult>\n}\n\nconst ontologyMutationRuntimeKey: unique symbol = Symbol(\"sixb.ontologyMutationRuntime\")\n\ninterface OntologyMutationRuntimeOwner {\n readonly [ontologyMutationRuntimeKey]?: OntologyMutationRuntime\n}\n\nexport function registerOntologyMutationRuntime(\n owner: object,\n runtime: OntologyMutationRuntime\n): void {\n const registered = (owner as OntologyMutationRuntimeOwner)[ontologyMutationRuntimeKey]\n if (registered && registered !== runtime) {\n throw new Error(\"[Sixb] Ontology mutation runtime is already registered for this owner.\")\n }\n Object.defineProperty(owner, ontologyMutationRuntimeKey, {\n configurable: false,\n enumerable: true,\n value: runtime,\n writable: false,\n })\n}\n\nexport function getOntologyMutationRuntime(owner: object): OntologyMutationRuntime {\n const runtime = (owner as OntologyMutationRuntimeOwner)[ontologyMutationRuntimeKey]\n if (runtime) return runtime\n throw new Error(\"[Sixb] Ontology mutation runtime is not registered for this runtime context.\")\n}\n\n/** Copies the opaque capability when an internal runtime context is reconstructed. */\nexport function shareOntologyMutationRuntime(source: object, target: object): void {\n registerOntologyMutationRuntime(target, getOntologyMutationRuntime(source))\n}\n\n/** Adapt an already-bound Materializer to the internal ontology mutation runtime. */\nexport function createOntologyMutationRuntime(input: {\n readonly materializer: BoundOntologyMaterializer\n readonly notifyCommittedFacts: () => void\n}): OntologyMutationRuntime {\n const runtime: OntologyMutationRuntime = {\n getProjectionSource: (source) => input.materializer.projections.getActive(source),\n commitEdits: (command) =>\n commitAndNotify(() => input.materializer.edits.commit(command), input.notifyCommittedFacts),\n replaceProjection: (command) =>\n commitAndNotify(\n () => input.materializer.projections.replace(command),\n input.notifyCommittedFacts\n ),\n finishProjection: (command) => input.materializer.projections.finishRun(command),\n appendTelemetry: (command) =>\n commitAndNotify(\n () => input.materializer.telemetry.append(command),\n input.notifyCommittedFacts\n ),\n }\n return Object.freeze(runtime)\n}\n\nasync function commitAndNotify<TResult extends { readonly eventCount: number }>(\n commit: () => Promise<TResult>,\n notify: () => void\n): Promise<TResult> {\n const result = await commit()\n if (result.eventCount > 0) notifyWithoutAffectingCommit(notify)\n return result\n}\n\nfunction notifyWithoutAffectingCommit(notify: () => void): void {\n try {\n notify()\n } catch (error) {\n // The ontology commit is already durable. A wake-up failure must never turn it into an apparent\n // mutation failure; API-hosted ontology maintenance remains the correctness fallback.\n console.error(\"[Sixb] Failed to wake the ontology outbox dispatcher:\", error)\n }\n}\n",
|
|
6
|
+
"import type { ExecutionContext, RuntimeAuthorization } from \"../../execution\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { ModelExecutionAttempt } from \"./binding\"\nimport { requireAccountingCapabilities } from \"./model-call-accounting\"\nimport { createAiModelCallLimitController } from \"./model-call-limits\"\nimport { AiModelCallRecorder } from \"./model-call-recorder\"\nimport { enqueueAiModelCallRecovery } from \"./recovery-queue\"\n\n/** One accounting boundary shared by all model protocols in a bound execution. */\nexport class ModelExecutionSession {\n private binding?: ModelExecutionAttempt\n private recorder?: Promise<AiModelCallRecorder>\n\n constructor(\n private readonly runtime: SixbHostContext & { runtimeAuthorization: RuntimeAuthorization },\n private readonly execution: ExecutionContext\n ) {}\n\n bind(input: ModelExecutionAttempt): void {\n if (this.binding) throw new Error(\"[SixbModels] Execution attempt is already bound.\")\n this.binding = { ...input }\n }\n\n signal(signal?: AbortSignal): AbortSignal {\n const binding = this.requireBinding()\n return signal ? AbortSignal.any([binding.signal, signal]) : binding.signal\n }\n\n async admitEmbeddingCall(admit: () => Promise<void>): Promise<void> {\n const admission = this.requireBinding().embeddingAdmission\n if (admission) await admission(admit)\n else await admit()\n }\n\n accounting(): Promise<AiModelCallRecorder> {\n const { accounting } = this.requireBinding()\n this.recorder ??= accounting ? Promise.resolve(accounting) : this.createRecorder()\n return this.recorder\n }\n\n private requireBinding(): ModelExecutionAttempt {\n if (!this.binding) {\n throw new Error(\n \"[SixbModels] Model calls require a bound request or worker execution attempt.\"\n )\n }\n return this.binding\n }\n\n private async createRecorder(): Promise<AiModelCallRecorder> {\n const runtime = this.runtime\n const execution = this.execution\n const { attempt } = this.requireBinding()\n const storage = {\n ...requireAccountingCapabilities(runtime.storage),\n transaction: runtime.storage.transaction.bind(runtime.storage),\n }\n const { requesterGroupIds } = await ensureExecutionRecord(\n runtime.storage.executions,\n executionRecordInputFromRuntime({\n execution,\n runtimeAuthorization: runtime.runtimeAuthorization,\n })\n )\n return new AiModelCallRecorder({\n storage,\n projectId: runtime.projectId,\n executionId: execution.id,\n attempt,\n requesterGroupIds,\n limits: createAiModelCallLimitController({\n storage,\n projectId: runtime.projectId,\n requestedBy: execution.requestedBy,\n requesterGroupIds,\n }),\n recoverAiModelCall: (input) => enqueueAiModelCallRecovery(runtime.queues.agents, input),\n })\n }\n}\n"
|
|
7
|
+
],
|
|
8
|
+
"mappings": "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",
|
|
9
|
+
"debugId": "68E7C49FC6F738D764756E2164756E21",
|
|
10
|
+
"names": []
|
|
11
|
+
}
|
|
@@ -3,29 +3,30 @@ import {
|
|
|
3
3
|
createSixbError2,
|
|
4
4
|
captureSixbFailure2,
|
|
5
5
|
isSixbError2
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-8mx7qw3y.js";
|
|
7
7
|
import {
|
|
8
8
|
reportVectorIndexingFailure
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-fa02jy15.js";
|
|
10
10
|
import {
|
|
11
11
|
createKernelRuntimeAuthorization
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import {
|
|
14
|
-
estimateModelCall
|
|
15
|
-
} from "./chunk-29yx306f.js";
|
|
12
|
+
} from "./chunk-d0bqz29d.js";
|
|
16
13
|
import {
|
|
14
|
+
INDEXING_EMBEDDING_TIMEOUT_MS,
|
|
17
15
|
vectorConfiguration,
|
|
18
16
|
vectorSources,
|
|
19
17
|
normalizeVector2,
|
|
20
18
|
VECTOR_INDEXING_FAILURE_CODES2
|
|
21
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-n33z5bjw.js";
|
|
20
|
+
import {
|
|
21
|
+
estimateModelCall
|
|
22
|
+
} from "./chunk-29yx306f.js";
|
|
22
23
|
import {
|
|
23
24
|
ModelExecutionSession
|
|
24
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-4vyr1j8f.js";
|
|
25
26
|
import {
|
|
26
27
|
executionRecordInputFromRuntime,
|
|
27
28
|
ensureExecutionRecord2
|
|
28
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-9dmt152s.js";
|
|
29
30
|
import {
|
|
30
31
|
MaterializationConflictError2
|
|
31
32
|
} from "./chunk-96yw3pwd.js";
|
|
@@ -198,8 +199,7 @@ async function executeEmbedding(session, binding, input) {
|
|
|
198
199
|
throw new TypeError("[SixbModels] Embedding purpose must be 'document' or 'query'.");
|
|
199
200
|
}
|
|
200
201
|
const signal = session.signal(input.signal);
|
|
201
|
-
|
|
202
|
-
requestSignal.throwIfAborted();
|
|
202
|
+
signal.throwIfAborted();
|
|
203
203
|
if (!texts.length)
|
|
204
204
|
return { vectors: [] };
|
|
205
205
|
const accounting = await session.accounting();
|
|
@@ -209,7 +209,7 @@ async function executeEmbedding(session, binding, input) {
|
|
|
209
209
|
if (!sameEmbeddingModel(model, binding)) {
|
|
210
210
|
throw new TypeError("[SixbModels] Resolved embedding model identity does not match the selected model.");
|
|
211
211
|
}
|
|
212
|
-
|
|
212
|
+
signal.throwIfAborted();
|
|
213
213
|
const callId = `call_${randomUUID2()}`;
|
|
214
214
|
const tokens = texts.reduce((sum, text) => sum + Math.ceil(new TextEncoder().encode(text).byteLength / 4), 0);
|
|
215
215
|
await session.admitEmbeddingCall(() => accounting.admitCall({
|
|
@@ -223,8 +223,8 @@ async function executeEmbedding(session, binding, input) {
|
|
|
223
223
|
}));
|
|
224
224
|
let result;
|
|
225
225
|
try {
|
|
226
|
-
|
|
227
|
-
result = await model.embed({ texts, purpose, signal
|
|
226
|
+
signal.throwIfAborted();
|
|
227
|
+
result = await model.embed({ texts, purpose, signal });
|
|
228
228
|
} catch (error) {
|
|
229
229
|
if (error instanceof EmbeddingModelResponseError2) {
|
|
230
230
|
await recordEmbedding(accounting, model, callId, error.metadata);
|
|
@@ -234,7 +234,7 @@ async function executeEmbedding(session, binding, input) {
|
|
|
234
234
|
throw error;
|
|
235
235
|
}
|
|
236
236
|
await recordEmbedding(accounting, model, callId, result ?? {});
|
|
237
|
-
|
|
237
|
+
signal.throwIfAborted();
|
|
238
238
|
return result;
|
|
239
239
|
}
|
|
240
240
|
async function recordEmbedding(accounting, model, callId, metadata) {
|
|
@@ -280,7 +280,7 @@ async function generateVectors(runtime, entries, scope, attempt, signal) {
|
|
|
280
280
|
const result = await model.embed({
|
|
281
281
|
texts: entries.map((entry) => entry.input.text),
|
|
282
282
|
purpose: "document",
|
|
283
|
-
signal
|
|
283
|
+
signal: AbortSignal.any([signal, AbortSignal.timeout(INDEXING_EMBEDDING_TIMEOUT_MS)])
|
|
284
284
|
});
|
|
285
285
|
const values = normalizeEmbeddingResult(result, entries.length, profile.model.definition.dimensions);
|
|
286
286
|
await runtime.storage.ontology.vectorIndexing.updateBatch({
|
|
@@ -581,4 +581,4 @@ function normalizeOrigin(value) {
|
|
|
581
581
|
|
|
582
582
|
export { bindEmbeddingModels, VectorIndexingDeferred2, createVectorIndexingRuntime, registerVectorIndexingRuntime, getVectorIndexingRuntime2, setApiPublicOrigin2, getApiPublicOrigin };
|
|
583
583
|
|
|
584
|
-
//# debugId=
|
|
584
|
+
//# debugId=169C24138A98CF9B64756E2164756E21
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/objects/vectors/indexing-shared.ts", "../src/models/execution/embedding.ts", "../src/objects/vectors/indexing-generate.ts", "../src/objects/vectors/indexing-single.ts", "../src/objects/vectors/indexing-store-batch.ts", "../src/objects/vectors/indexing-batch.ts", "../src/objects/vectors/indexing.ts", "../src/objects/vectors/indexing-runtime.ts", "../src/runtime/public-origin.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { randomUUID } from \"node:crypto\"\nimport { reportVectorIndexingFailure } from \"../../error-reporting/capability\"\nimport { captureSixbFailure } from \"../../errors/internal\"\nimport { createKernelRuntimeAuthorization } from \"../../execution/authorization\"\nimport { ensureExecutionRecord, executionRecordInputFromRuntime } from \"../../execution/durable\"\nimport type { ExecutionContext, ExecutionScope } from \"../../execution/types\"\nimport { MaterializationConflictError } from \"../../materialization/errors\"\nimport type { ObjectVectorWrite, PreparedObjectVector } from \"../../materialization/vectors\"\nimport type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport {\n type OntologyVectorIndexingStorage,\n VECTOR_INDEXING_FAILURE_CODES,\n type VectorIndexingWork,\n} from \"../../storage/ontology/vector-indexing\"\nimport { vectorConfiguration, vectorSources } from \"./profile\"\n\n/** Return null when the requested representation is obsolete or already stored. */\nexport async function prepare(\n runtime: SixbHostContext,\n work: VectorIndexingWork\n): Promise<PreparedObjectVector | null> {\n const profile = runtime.ontology.getObjectTypeById(work.ref.objectTypeId)?.search?.vectors?.[\n work.profile\n ]\n if (!profile || vectorConfiguration(profile) !== work.configuration) return null\n\n const row = await runtime.storage.objects.getByPrimaryId({\n projectId: runtime.projectId,\n ...work.ref,\n })\n if (!row) return null\n\n const sources = vectorSources(profile.source, row.properties)\n if (sources.sourceFingerprint !== work.sourceFingerprint) return null\n\n const storedVectors = await runtime.storage.ontology.vectors!.list({\n projectId: runtime.projectId,\n ref: work.ref,\n })\n const currentVector = storedVectors.find((entry) => entry.profile === work.profile)\n const alreadyIndexed =\n currentVector?.configuration === work.configuration &&\n currentVector.sourceFingerprint === work.sourceFingerprint\n\n if (alreadyIndexed) return null\n\n return {\n projectId: runtime.projectId,\n ref: work.ref,\n profile: work.profile,\n configuration: work.configuration,\n ...sources,\n expectedObject: {\n ref: work.ref,\n exists: true,\n version: row.version,\n lastCommitId: row.lastCommitId,\n },\n expectedVectorCommitId: currentVector?.lastCommitId ?? null,\n }\n}\n\nexport async function storeVector(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n work: VectorIndexingWork,\n scope: ExecutionScope,\n signal: AbortSignal\n): Promise<void> {\n const indexing = runtime.storage.ontology.vectorIndexing!\n const identity = { projectId: runtime.projectId, id: work.id }\n\n // Unrelated property changes renew the object fence without repeating a paid inference.\n for (let attempt = 0; attempt < 3; attempt++) {\n signal.throwIfAborted()\n const prepared = await prepare(runtime, work)\n\n if (!prepared) {\n await indexing.remove(identity)\n return\n }\n\n try {\n await commitPreparedVectors(materializer, scope, [{ input: prepared, values: work.values! }])\n await indexing.remove(identity)\n return\n } catch (error) {\n if (!(error instanceof MaterializationConflictError)) throw error\n\n const currentWork = await indexing.get(identity)\n if (!currentWork) return\n }\n }\n\n throw new VectorIndexingDeferred(new Date(Date.now() + 1000).toISOString())\n}\n\nexport async function commitPreparedVectors(\n materializer: OntologyMaterializerContract,\n scope: ExecutionScope,\n writes: readonly ObjectVectorWrite[]\n): Promise<void> {\n await materializer.edits.commit({\n scope,\n input: {\n mode: \"atomic\",\n source: { kind: \"runtime\", requestId: randomUUID() },\n operations: [],\n vectorWrites: writes,\n expectedObjects: writes.map((write) => write.input.expectedObject),\n expectedLinks: [],\n expectedLinkScopes: [],\n },\n })\n}\n\nexport async function indexingScope(\n runtime: SixbHostContext,\n work: VectorIndexingWork,\n indexingId = work.id\n): Promise<ExecutionScope> {\n const operation = { type: \"ontology.indexVectors\", indexingId } as const\n const execution: ExecutionContext = {\n id: `exec_vector_${indexingId}`,\n projectId: runtime.projectId,\n executor: { type: \"kernel\", operation },\n source: { type: \"ontologyCommit\", commitId: work.sourceCommitId },\n correlationId: `vector_${indexingId}`,\n }\n const authorization = createKernelRuntimeAuthorization({ execution, operation })\n\n await ensureExecutionRecord(runtime.storage.executions, {\n ...executionRecordInputFromRuntime({ execution, runtimeAuthorization: authorization }),\n requesterGroupIds: [],\n })\n\n return { execution, authorization }\n}\n\nexport async function fail(\n runtime: SixbHostContext,\n indexing: OntologyVectorIndexingStorage,\n work: VectorIndexingWork,\n error: unknown\n): Promise<void> {\n const failure = captureSixbFailure(error, {\n allowedCodes: VECTOR_INDEXING_FAILURE_CODES,\n defaultCode: \"internal.unexpected\",\n })\n\n const recorded = await indexing.update({\n projectId: runtime.projectId,\n id: work.id,\n expectedStatus: work.status,\n status: \"failed\",\n availableAt: new Date().toISOString(),\n error: failure,\n })\n\n if (!recorded) return\n\n reportVectorIndexingFailure(runtime, error, {\n projectId: runtime.projectId,\n indexingId: work.id,\n failure,\n ...work.ref,\n profile: work.profile,\n })\n}\n\nexport function retryAt(details: unknown): string {\n const resetAt =\n details && typeof details === \"object\" && \"resetAt\" in details ? details.resetAt : undefined\n const resetTimestamp = typeof resetAt === \"string\" ? Date.parse(resetAt) : Number.NaN\n\n const minimumRetryTimestamp = Date.now() + 60_000\n const budgetResetTimestamp = Number.isFinite(resetTimestamp) ? resetTimestamp : 0\n const retryTimestamp = Math.max(minimumRetryTimestamp, budgetResetTimestamp)\n\n return new Date(retryTimestamp).toISOString()\n}\n\nexport class VectorIndexingDeferred extends Error {\n constructor(readonly availableAt: string) {\n super(\"[Sixb] Vector indexing is deferred.\")\n }\n}\n",
|
|
6
|
+
"import { randomUUID } from \"node:crypto\"\nimport type { EmbeddingModelCatalog, EmbeddingModelEntry, ModelRef } from \"../catalog\"\nimport {\n assertEmbeddingModel,\n type EmbeddingModel,\n type EmbeddingModelRequest,\n EmbeddingModelResponseError,\n type EmbeddingModelResponseMetadata,\n type EmbeddingModelResult,\n sameEmbeddingModel,\n} from \"../embedding-model\"\nimport { estimateModelCall } from \"../pricing\"\nimport type { AiModelCallRecorder } from \"./model-call-recorder\"\nimport type { ModelExecutionSession } from \"./session\"\n\n/** Scope the configured bindings without changing profile identity or object permissions. */\nexport function bindEmbeddingModels(\n catalog: EmbeddingModelCatalog | undefined,\n session: ModelExecutionSession\n): EmbeddingModelCatalog | undefined {\n if (!catalog) return undefined\n const entries: readonly EmbeddingModelEntry[] = Object.freeze(\n catalog.list().map((entry) =>\n Object.freeze({\n ...entry,\n model: Object.freeze({\n providerId: entry.model.providerId,\n modelId: entry.model.modelId,\n definition: entry.model.definition,\n batching: entry.model.batching && Object.freeze({ ...entry.model.batching }),\n embed: (input: EmbeddingModelRequest) => executeEmbedding(session, entry.model, input),\n }),\n })\n )\n )\n const byRef = new Map(\n entries.map((entry) => [JSON.stringify([entry.provider, entry.modelId]), entry])\n )\n return Object.freeze({\n list: () => entries,\n getByRef: (ref: ModelRef) => byRef.get(JSON.stringify([ref.provider, ref.modelId])) ?? null,\n })\n}\n\nasync function executeEmbedding(\n session: ModelExecutionSession,\n binding: EmbeddingModel,\n input: EmbeddingModelRequest\n) {\n if (\n !Array.isArray(input.texts) ||\n input.texts.some((text) => typeof text !== \"string\" || !text.trim())\n ) {\n throw new TypeError(\"[SixbModels] Embedding inputs must be nonempty strings.\")\n }\n const texts = [...input.texts]\n const purpose = input.purpose\n if (purpose !== undefined && purpose !== \"document\" && purpose !== \"query\") {\n throw new TypeError(\"[SixbModels] Embedding purpose must be 'document' or 'query'.\")\n }\n // The caller owns the deadline: only it knows whether anyone is waiting for the result.\n const signal = session.signal(input.signal)\n signal.throwIfAborted()\n if (!texts.length) return { vectors: [] }\n\n const accounting = await session.accounting()\n accounting.assertHealthy()\n const model = (await binding.resolve?.()) ?? binding\n assertEmbeddingModel(model)\n if (!sameEmbeddingModel(model, binding)) {\n throw new TypeError(\n \"[SixbModels] Resolved embedding model identity does not match the selected model.\"\n )\n }\n signal.throwIfAborted()\n const callId = `call_${randomUUID()}`\n const tokens = texts.reduce(\n (sum, text) => sum + Math.ceil(new TextEncoder().encode(text).byteLength / 4),\n 0\n )\n await session.admitEmbeddingCall(() =>\n accounting.admitCall({\n callId,\n providerId: model.providerId,\n modelId: model.modelId,\n costEstimator: model.costEstimator,\n inputTokens: { status: \"estimated\", tokens, method: \"utf8BytesDividedByFour\" },\n outputTokenAllowance: 0,\n estimatedTotalTokens: tokens,\n })\n )\n\n let result: EmbeddingModelResult\n try {\n signal.throwIfAborted()\n result = await model.embed({ texts, purpose, signal })\n } catch (error) {\n if (error instanceof EmbeddingModelResponseError) {\n await recordEmbedding(accounting, model, callId, error.metadata)\n } else {\n // The provider may have accepted the request. Never retry inference or release its budget.\n await recordEmbedding(accounting, model, callId, {})\n }\n throw error\n }\n // Account before cancellation, vector validation or the materializer's optimistic write.\n await recordEmbedding(accounting, model, callId, result ?? {})\n signal.throwIfAborted()\n return result\n}\n\nasync function recordEmbedding(\n accounting: AiModelCallRecorder,\n model: EmbeddingModel,\n callId: string,\n metadata: EmbeddingModelResponseMetadata\n): Promise<void> {\n // Embeddings produce no output tokens; missing INPUT usage must remain unknown.\n const usage = { ...metadata.usage, outputTokens: 0 }\n const estimate = estimateModelCall(model, {\n usage,\n route: metadata.route,\n responseModelId: metadata.responseModelId,\n })\n await accounting.onModelCallEnd({\n callId,\n providerId: model.providerId,\n modelId: model.modelId,\n responseId: metadata.providerIds?.responseId ?? callId,\n responseModelId: metadata.responseModelId,\n providerIds: metadata.providerIds,\n usage,\n cost: metadata.reportedCost ? { status: \"reported\", ...metadata.reportedCost } : estimate,\n ...(metadata.reportedCost ? { estimate } : {}),\n route: metadata.route,\n })\n}\n",
|
|
7
|
+
"import { createSixbError, isSixbError } from \"../../errors/internal\"\nimport type { ExecutionScope } from \"../../execution/types\"\nimport type { PreparedObjectVector } from \"../../materialization/vectors\"\nimport {\n EmbeddingModelResponseError,\n type EmbeddingModelResult,\n sameEmbeddingModel,\n} from \"../../models/embedding-model\"\nimport { bindEmbeddingModels } from \"../../models/execution/embedding\"\nimport { ModelExecutionSession } from \"../../models/execution/session\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { VectorIndexingWork } from \"../../storage/ontology/vector-indexing\"\nimport { fail, retryAt, VectorIndexingDeferred } from \"./indexing-shared\"\nimport { INDEXING_EMBEDDING_TIMEOUT_MS, normalizeVector } from \"./profile\"\n\nexport interface PreparedIndexingWork {\n readonly work: VectorIndexingWork\n readonly input: PreparedObjectVector\n}\n\ninterface GenerationAttempt {\n readonly runtime: SixbHostContext\n readonly entries: readonly PreparedIndexingWork[]\n readonly signal: AbortSignal\n /** Running means the durable claim succeeded; budget admission may still be pending. */\n phase: \"pending\" | \"claiming\" | \"running\"\n}\n\n/** One accounted provider call, with durable admission and atomic result persistence. */\nexport async function generateVectors(\n runtime: SixbHostContext,\n entries: readonly PreparedIndexingWork[],\n scope: ExecutionScope,\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n const first = entries[0]!\n const profile = runtime.ontology.resolveObjectType(first.work.ref.objectTypeId).search!.vectors![\n first.work.profile\n ]!\n const generation: GenerationAttempt = { runtime, entries, signal, phase: \"pending\" }\n\n const session = new ModelExecutionSession(\n { ...runtime, runtimeAuthorization: scope.authorization },\n scope.execution\n )\n session.bind({\n attempt,\n signal,\n embeddingAdmission: (admit) => admitGeneration(generation, admit),\n })\n\n try {\n const model = bindEmbeddingModels(runtime.embeddingModels, session)?.getByRef({\n provider: profile.model.providerId,\n modelId: profile.model.modelId,\n })?.model\n\n if (!model || !sameEmbeddingModel(model, profile.model)) {\n throw createSixbError(\n \"vector.model_unavailable\",\n \"[Sixb] Vector indexing requires the profile's configured embedding model.\"\n )\n }\n\n const result = await model.embed({\n texts: entries.map((entry) => entry.input.text),\n purpose: \"document\",\n signal: AbortSignal.any([signal, AbortSignal.timeout(INDEXING_EMBEDDING_TIMEOUT_MS)]),\n })\n const values = normalizeEmbeddingResult(\n result,\n entries.length,\n profile.model.definition.dimensions\n )\n\n // Persist every surviving result atomically before any vector is published.\n await runtime.storage.ontology.vectorIndexing!.updateBatch({\n projectId: runtime.projectId,\n updates: entries.map(({ work }, index) => ({\n id: work.id,\n expectedStatus: \"running\",\n status: \"ready\",\n values: values[index]!,\n availableAt: new Date().toISOString(),\n })),\n })\n } catch (error) {\n await handleGenerationFailure(generation, error)\n }\n}\n\nasync function admitGeneration(\n generation: GenerationAttempt,\n admit: () => Promise<void>\n): Promise<void> {\n generation.signal.throwIfAborted()\n generation.phase = \"claiming\"\n\n const claimed = await transitionWork(generation, \"pending\", \"running\", { requireAll: true })\n generation.phase = claimed ? \"running\" : \"pending\"\n\n if (!claimed) {\n if (generation.entries.length === 1) {\n throw new Error(\"[Sixb] Vector indexing request was superseded.\")\n }\n throw new VectorIndexingDeferred(new Date().toISOString())\n }\n\n try {\n await admit()\n } catch (error) {\n await transitionWork(generation, \"running\", \"pending\")\n generation.phase = \"pending\"\n throw error\n }\n}\n\nfunction normalizeEmbeddingResult(\n result: EmbeddingModelResult,\n count: number,\n dimensions: number\n): readonly (readonly number[])[] {\n try {\n if (!Array.isArray(result?.vectors) || result.vectors.length !== count) {\n throw new Error(\"Unexpected vector count\")\n }\n\n return result.vectors.map((vector) => normalizeVector(vector, dimensions))\n } catch (cause) {\n throw createSixbError(\"vector.response_invalid\", \"[Sixb] Invalid embedding batch response.\", {\n cause,\n })\n }\n}\n\nasync function handleGenerationFailure(\n generation: GenerationAttempt,\n error: unknown\n): Promise<void> {\n // No provider call can start while the storage claim is unresolved. Retry delivery,\n // not inference; an ambiguously committed claim will be fenced as running on redelivery.\n if (generation.phase === \"claiming\" || error instanceof VectorIndexingDeferred) {\n throw error\n }\n\n if (generation.phase === \"pending\") {\n if (\n isSixbError(error) &&\n (error.code === \"ai.usage_limit_exceeded\" || error.code === \"ai.usage_limit_unavailable\")\n ) {\n const availableAt = retryAt(error.details)\n await transitionWork(generation, \"pending\", \"pending\", { availableAt })\n throw new VectorIndexingDeferred(availableAt)\n }\n\n if (generation.signal.aborted) throw error\n }\n\n const failure =\n error instanceof EmbeddingModelResponseError\n ? createSixbError(\"vector.response_invalid\", \"[Sixb] Invalid embedding batch response.\", {\n cause: error,\n })\n : error\n const { runtime, entries } = generation\n const indexing = runtime.storage.ontology.vectorIndexing!\n\n for (const { work } of entries) {\n await fail(runtime, indexing, { ...work, status: generation.phase }, failure)\n }\n}\n\nfunction transitionWork(\n generation: GenerationAttempt,\n expectedStatus: VectorIndexingWork[\"status\"],\n status: VectorIndexingWork[\"status\"],\n options: { availableAt?: string; requireAll?: boolean } = {}\n): Promise<boolean> {\n const { runtime, entries } = generation\n const availableAt = options.availableAt ?? new Date().toISOString()\n\n return runtime.storage.ontology.vectorIndexing!.updateBatch({\n projectId: runtime.projectId,\n requireAll: options.requireAll ?? false,\n updates: entries.map(({ work }) => ({ id: work.id, expectedStatus, status, availableAt })),\n })\n}\n",
|
|
8
|
+
"import { createSixbError } from \"../../errors/internal\"\nimport type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport { generateVectors } from \"./indexing-generate\"\nimport {\n fail,\n indexingScope,\n prepare,\n storeVector,\n VectorIndexingDeferred,\n} from \"./indexing-shared\"\n\nexport async function processVector(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n id: string,\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n const indexing = runtime.storage.ontology.vectorIndexing\n if (!indexing) throw new Error(\"[Sixb] Storage does not support automatic vector indexing.\")\n const projectId = runtime.projectId\n const work = await indexing.get({ projectId, id })\n if (!work || work.status === \"failed\") return\n if (work.status === \"running\") {\n await fail(\n runtime,\n indexing,\n work,\n createSixbError(\n \"vector.outcome_unknown\",\n \"[Sixb] Interrupted embedding call has an unknown outcome; inference was not repeated.\"\n )\n )\n return\n }\n if (Date.parse(work.availableAt) > Date.now()) throw new VectorIndexingDeferred(work.availableAt)\n const prepared = await prepare(runtime, work)\n if (!prepared) {\n await indexing.remove({ projectId, id })\n return\n }\n const scope = await indexingScope(runtime, work, work.batchId ?? work.id)\n if (work.status === \"ready\") {\n await storeVector(runtime, materializer, work, scope, signal)\n return\n }\n await generateVectors(runtime, [{ work, input: prepared }], scope, attempt, signal)\n const ready = await indexing.get({ projectId, id })\n if (ready?.status === \"ready\") await storeVector(runtime, materializer, ready, scope, signal)\n}\n",
|
|
9
|
+
"import type { ExecutionScope } from \"../../execution/types\"\nimport { MaterializationConflictError } from \"../../materialization/errors\"\nimport type { ObjectVectorWrite } from \"../../materialization/vectors\"\nimport type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport {\n commitPreparedVectors,\n prepare,\n storeVector,\n VectorIndexingDeferred,\n} from \"./indexing-shared\"\n\n/** Publish a current subset atomically; reprepare conflicts without repeating inference. */\nexport async function storeVectorBatch(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n batchId: string,\n scope: ExecutionScope,\n signal: AbortSignal\n): Promise<void> {\n const indexing = runtime.storage.ontology.vectorIndexing!\n const identity = { projectId: runtime.projectId, batchId }\n\n for (let attempt = 0; attempt < 3; attempt++) {\n const ready = (await indexing.getBatch(identity)).filter((work) => work.status === \"ready\")\n const writes: ObjectVectorWrite[] = []\n\n for (const work of ready) {\n signal.throwIfAborted()\n const input = await prepare(runtime, work)\n if (input) {\n writes.push({ input, values: work.values! })\n } else {\n await indexing.remove({ projectId: runtime.projectId, id: work.id })\n }\n }\n\n if (!writes.length) return\n\n try {\n signal.throwIfAborted()\n await commitPreparedVectors(materializer, scope, writes)\n return\n } catch (error) {\n if (!(error instanceof MaterializationConflictError)) throw error\n }\n }\n\n // A continuously changing object must not keep stable peers from becoming searchable.\n let deferred = false\n for (const work of await indexing.getBatch(identity)) {\n if (work.status !== \"ready\") continue\n try {\n await storeVector(runtime, materializer, work, scope, signal)\n } catch (error) {\n if (!(error instanceof VectorIndexingDeferred)) throw error\n deferred = true\n }\n }\n\n if (deferred) throw new VectorIndexingDeferred(new Date(Date.now() + 1000).toISOString())\n}\n",
|
|
10
|
+
"import type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { EmbeddingBatchLimits } from \"../../models/embedding-model\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport type { VectorIndexingWork } from \"../../storage/ontology/vector-indexing\"\nimport { generateVectors, type PreparedIndexingWork } from \"./indexing-generate\"\nimport { indexingScope, prepare, VectorIndexingDeferred } from \"./indexing-shared\"\nimport { processVector } from \"./indexing-single\"\nimport { storeVectorBatch } from \"./indexing-store-batch\"\n\n/** Membership was persisted by one projection commit; there is no fill timer or memory queue. */\nexport async function processVectorBatch(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n batchId: string,\n batch: readonly VectorIndexingWork[],\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n if (batch.some((work) => work.status !== \"pending\")) {\n await resumeBatch(runtime, materializer, batchId, batch, attempt, signal)\n return\n }\n\n const entries = await prepareBatch(runtime, batch, signal)\n const first = entries[0]\n if (!first) return\n\n const limits = getBatchLimits(runtime, first.work)\n if (!limits) {\n // Unknown provider batch limits: embed each object/profile individually.\n for (const { work } of entries) {\n await processVector(runtime, materializer, work.id, attempt, signal)\n }\n return\n }\n\n assertCompatibleEntries(entries, first.work)\n const scope = await indexingScope(runtime, first.work, batchId)\n\n for (const group of partition(entries, limits)) {\n if (group.length === 1) {\n await processVector(runtime, materializer, group[0]!.work.id, attempt, signal)\n } else {\n await generateVectors(runtime, group, scope, attempt, signal)\n }\n }\n\n await storeVectorBatch(runtime, materializer, batchId, scope, signal)\n}\n\n/** Resume storage or terminalize interrupted calls; never repeat paid inference. */\nasync function resumeBatch(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract,\n batchId: string,\n batch: readonly VectorIndexingWork[],\n attempt: number,\n signal: AbortSignal\n): Promise<void> {\n const ready = batch.find((work) => work.status === \"ready\")\n if (ready) {\n const scope = await indexingScope(runtime, ready, batchId)\n await storeVectorBatch(runtime, materializer, batchId, scope, signal)\n }\n\n for (const work of batch) {\n if (work.status !== \"ready\") {\n await processVector(runtime, materializer, work.id, attempt, signal)\n }\n }\n}\n\nasync function prepareBatch(\n runtime: SixbHostContext,\n batch: readonly VectorIndexingWork[],\n signal: AbortSignal\n): Promise<PreparedIndexingWork[]> {\n const availableAt = batch.reduce(\n (latest, work) => (work.availableAt > latest ? work.availableAt : latest),\n \"\"\n )\n if (Date.parse(availableAt) > Date.now()) {\n throw new VectorIndexingDeferred(availableAt)\n }\n\n const entries: PreparedIndexingWork[] = []\n const indexing = runtime.storage.ontology.vectorIndexing!\n\n for (const work of batch) {\n signal.throwIfAborted()\n const input = await prepare(runtime, work)\n\n if (input) {\n entries.push({ work, input })\n } else {\n await indexing.remove({ projectId: runtime.projectId, id: work.id })\n }\n }\n\n return entries\n}\n\nfunction getBatchLimits(\n runtime: SixbHostContext,\n work: VectorIndexingWork\n): EmbeddingBatchLimits | undefined {\n const profile = runtime.ontology.resolveObjectType(work.ref.objectTypeId).search!.vectors![\n work.profile\n ]!\n\n return runtime.embeddingModels?.getByRef({\n provider: profile.model.providerId,\n modelId: profile.model.modelId,\n })?.model.batching\n}\n\n/** Do not mix commits or configurations, even with malformed storage membership. */\nfunction assertCompatibleEntries(\n entries: readonly PreparedIndexingWork[],\n reference: VectorIndexingWork\n): void {\n const incompatible = entries.some(\n ({ work }) =>\n work.sourceCommitId !== reference.sourceCommitId ||\n work.ref.objectTypeId !== reference.ref.objectTypeId ||\n work.profile !== reference.profile ||\n work.configuration !== reference.configuration\n )\n\n if (incompatible) {\n throw new Error(\"[Sixb] Incompatible vector batch membership.\")\n }\n}\n\n/** Split an already durable, bounded page; never wait for more work or truncate input. */\nfunction* partition(entries: readonly PreparedIndexingWork[], limits: EmbeddingBatchLimits) {\n let group: PreparedIndexingWork[] = []\n let bytes = 0\n\n for (const entry of entries) {\n const size = Buffer.byteLength(entry.input.text)\n const exceedsGroupLimit =\n group.length >= limits.maxInputs ||\n bytes + size > limits.maxTotalInputBytes ||\n size > limits.maxInputBytes\n\n if (group.length > 0 && exceedsGroupLimit) {\n yield group\n group = []\n bytes = 0\n }\n\n if (size > limits.maxInputBytes || size > limits.maxTotalInputBytes) {\n yield [entry]\n continue\n }\n\n group.push(entry)\n bytes += size\n }\n\n if (group.length > 0) yield group\n}\n",
|
|
11
|
+
"import type { OntologyMaterializerContract } from \"../../materializer/materializer\"\nimport type { SixbHostContext } from \"../../runtime/types\"\nimport { processVectorBatch } from \"./indexing-batch\"\nimport type { VectorIndexingRuntime } from \"./indexing-runtime\"\nimport { processVector } from \"./indexing-single\"\n\nexport { VectorIndexingDeferred } from \"./indexing-shared\"\n\n/** Internal processing port; durable projection groups and individual requests share delivery. */\nexport function createVectorIndexingRuntime(\n runtime: SixbHostContext,\n materializer: OntologyMaterializerContract\n): VectorIndexingRuntime {\n return {\n async process(id, attempt, signal) {\n const indexing = runtime.storage.ontology.vectorIndexing\n if (!indexing) throw new Error(\"[Sixb] Storage does not support automatic vector indexing.\")\n const batch = await indexing.getBatch({ projectId: runtime.projectId, batchId: id })\n if (batch.length) await processVectorBatch(runtime, materializer, id, batch, attempt, signal)\n else await processVector(runtime, materializer, id, attempt, signal)\n },\n }\n}\n",
|
|
12
|
+
"/** Internal worker entry point; it does not expose the host context or domain SDK. */\nexport interface VectorIndexingRuntime {\n process(id: string, attempt: number, signal: AbortSignal): Promise<void>\n}\n\n// Associates each host with its service. Durable work lives in ontology storage, not this map.\nconst runtimes = new WeakMap<object, VectorIndexingRuntime>()\n\nexport function registerVectorIndexingRuntime(host: object, runtime: VectorIndexingRuntime): void {\n runtimes.set(host, runtime)\n}\n\nexport function getVectorIndexingRuntime(host: object): VectorIndexingRuntime {\n const runtime = runtimes.get(host)\n if (!runtime) throw new Error(\"[Sixb] Vector indexing requires a configured Sixb host.\")\n return runtime\n}\n",
|
|
13
|
+
"/**\n * The origin the API is reachable at from outside, for features that hand out absolute URLs a\n * third party will fetch. It is deployment topology, not app configuration: the API server\n * records the `publicOrigin` it was started with, and the CLI records `SIXB_API_PUBLIC_ORIGIN`\n * for worker processes. A process that never learns it cannot issue such URLs.\n */\n\nconst apiPublicOrigins = new WeakMap<object, string>()\n\n/** Record where the API is reachable. A host served by several servers keeps the latest one. */\nexport function setApiPublicOrigin(host: object, origin: string): void {\n apiPublicOrigins.set(host, normalizeOrigin(origin))\n}\n\nexport function getApiPublicOrigin(host: object): string | undefined {\n return apiPublicOrigins.get(host)\n}\n\nfunction normalizeOrigin(value: string): string {\n let url: URL\n try {\n url = new URL(value)\n } catch {\n throw new Error(`[Sixb] Invalid API public origin: '${value}'.`)\n }\n if (url.protocol !== \"http:\" && url.protocol !== \"https:\") {\n throw new Error(\"[Sixb] The API public origin must use http or https.\")\n }\n if (url.pathname !== \"/\" || url.search || url.hash) {\n throw new Error(\"[Sixb] The API public origin must be an origin, not a full URL.\")\n }\n return url.origin\n}\n"
|
|
14
|
+
],
|
|
15
|
+
"mappings": "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",
|
|
16
|
+
"debugId": "169C24138A98CF9B64756E2164756E21",
|
|
17
|
+
"names": []
|
|
18
|
+
}
|