@sixb/core 0.1.18 → 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 +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/index.js +11 -11
- package/dist/auth/index.js.map +1 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/index.js +3 -3
- package/dist/bootstrap/index.js +46 -49
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-d0eb5yy6.js → chunk-1f7wpmyp.js} +5 -5
- package/dist/{chunk-d0eb5yy6.js.map → chunk-1f7wpmyp.js.map} +1 -1
- package/dist/{chunk-vgk3hknm.js → chunk-1k89ecfr.js} +1 -1
- package/dist/{chunk-6h5m9xjx.js → chunk-3gnrh4ve.js} +6 -10
- package/dist/{chunk-6h5m9xjx.js.map → chunk-3gnrh4ve.js.map} +4 -4
- package/dist/{chunk-htr6wjmv.js → chunk-4tcx876c.js} +15 -15
- package/dist/{chunk-htr6wjmv.js.map → chunk-4tcx876c.js.map} +1 -1
- package/dist/{chunk-za5yd58j.js → chunk-52bk93x8.js} +2 -2
- package/dist/{chunk-22v5bpz3.js → chunk-5e43w60z.js} +1 -1
- package/dist/{chunk-zxawp1n2.js → chunk-7kg3k1m9.js} +1 -1
- package/dist/{chunk-ny3xyvcn.js → chunk-7mbzgd9m.js} +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-s4jhg8a3.js → chunk-80mc0971.js} +13 -13
- package/dist/{chunk-s4jhg8a3.js.map → chunk-80mc0971.js.map} +1 -1
- package/dist/{chunk-1b1f2d5f.js → chunk-85yvv5n0.js} +8 -8
- package/dist/{chunk-1b1f2d5f.js.map → chunk-85yvv5n0.js.map} +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-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-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-vz3gc1tm.js → chunk-aff7cyea.js} +62 -64
- package/dist/{chunk-vz3gc1tm.js.map → chunk-aff7cyea.js.map} +4 -4
- 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-bs7sqkre.js → chunk-bpgy64fw.js} +1 -1
- package/dist/{chunk-vx2yp45y.js → chunk-c85m1hyj.js} +2 -2
- package/dist/{chunk-v6xpd60t.js → chunk-d2ync1v3.js} +5 -5
- package/dist/{chunk-fe52eczz.js → chunk-ey3pyej1.js} +6345 -2125
- package/dist/chunk-ey3pyej1.js.map +106 -0
- package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +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-qq90g05n.js → chunk-j2bp5ryw.js} +53 -244
- package/dist/{chunk-qq90g05n.js.map → chunk-j2bp5ryw.js.map} +3 -3
- package/dist/{chunk-qmnnhde6.js → chunk-kg5j6fct.js} +1 -1
- package/dist/{chunk-de4z2bj6.js → chunk-kyzq4wy9.js} +6 -6
- 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-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
- package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
- package/dist/{chunk-ex496vct.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-7hpdd6r9.js → chunk-q1vkr2ys.js} +4 -4
- package/dist/{chunk-zb77kjth.js → chunk-rhg02hxq.js} +3 -3
- package/dist/{chunk-y9jmd7e5.js → chunk-s16apyk9.js} +102 -16
- package/dist/chunk-s16apyk9.js.map +16 -0
- package/dist/{chunk-yv9czyfr.js → chunk-t6vq7bff.js} +5 -5
- package/dist/{chunk-qkvz64nd.js → chunk-tjb1mk5t.js} +2 -2
- package/dist/{chunk-p844e0rn.js → chunk-tpn40322.js} +2 -2
- package/dist/{chunk-rt9p8m9t.js → chunk-v9xd5wzd.js} +1 -1
- package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
- package/dist/{chunk-k6hrnf35.js → chunk-wwdfe68s.js} +51 -4
- package/dist/chunk-wwdfe68s.js.map +11 -0
- package/dist/{chunk-f1zxad2t.js → chunk-wz0xs816.js} +6 -6
- package/dist/{chunk-f1zxad2t.js.map → chunk-wz0xs816.js.map} +1 -1
- package/dist/chunk-y0c4e6ex.js +16 -0
- package/dist/chunk-y0c4e6ex.js.map +10 -0
- package/dist/{chunk-qkbx3tf6.js → chunk-y7rqfrgg.js} +6 -13
- package/dist/{chunk-qkbx3tf6.js.map → chunk-y7rqfrgg.js.map} +4 -4
- 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-p0dqwj3n.js → chunk-zrmy8zvw.js} +66 -47
- package/dist/{chunk-p0dqwj3n.js.map → chunk-zrmy8zvw.js.map} +4 -4
- 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/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/primitive.js +57 -88
- package/dist/execution/primitive.js.map +3 -4
- package/dist/execution/request.js +35 -38
- package/dist/execution/request.js.map +2 -2
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +111 -120
- package/dist/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 +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 +18 -18
- 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/ontology/index.js +5 -5
- 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 +24 -25
- 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/every.d.ts +1 -1
- package/dist/shares/internal.js +17 -17
- 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/ai-limits/enforcement.js +2 -2
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/file-upload-sessions/provider.js +9 -9
- package/dist/storage/index.d.ts +2 -2
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +30 -31
- 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 +9 -9
- 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/index.d.ts +2 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +3202 -2860
- 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 +23 -23
- 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 +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/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/authorization/event-visibility.ts +0 -12
- 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/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/index.ts +1 -19
- 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/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/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/every.ts +1 -1
- 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/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/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/chunk-1hqwggsn.js.map +0 -12
- package/dist/chunk-85cd7e8c.js +0 -51
- package/dist/chunk-85cd7e8c.js.map +0 -10
- package/dist/chunk-dfm066qg.js.map +0 -11
- 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-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-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/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-vgk3hknm.js.map → chunk-1k89ecfr.js.map} +0 -0
- /package/dist/{chunk-za5yd58j.js.map → chunk-52bk93x8.js.map} +0 -0
- /package/dist/{chunk-22v5bpz3.js.map → chunk-5e43w60z.js.map} +0 -0
- /package/dist/{chunk-zxawp1n2.js.map → chunk-7kg3k1m9.js.map} +0 -0
- /package/dist/{chunk-ny3xyvcn.js.map → chunk-7mbzgd9m.js.map} +0 -0
- /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
- /package/dist/{chunk-48e3cn2d.js.map → chunk-9gyp8hg1.js.map} +0 -0
- /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
- /package/dist/{chunk-bs7sqkre.js.map → chunk-bpgy64fw.js.map} +0 -0
- /package/dist/{chunk-vx2yp45y.js.map → chunk-c85m1hyj.js.map} +0 -0
- /package/dist/{chunk-v6xpd60t.js.map → chunk-d2ync1v3.js.map} +0 -0
- /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
- /package/dist/{chunk-qmnnhde6.js.map → chunk-kg5j6fct.js.map} +0 -0
- /package/dist/{chunk-de4z2bj6.js.map → chunk-kyzq4wy9.js.map} +0 -0
- /package/dist/{chunk-ex496vct.js.map → chunk-nre82s12.js.map} +0 -0
- /package/dist/{chunk-7hpdd6r9.js.map → chunk-q1vkr2ys.js.map} +0 -0
- /package/dist/{chunk-zb77kjth.js.map → chunk-rhg02hxq.js.map} +0 -0
- /package/dist/{chunk-yv9czyfr.js.map → chunk-t6vq7bff.js.map} +0 -0
- /package/dist/{chunk-qkvz64nd.js.map → chunk-tjb1mk5t.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/src/actions/request.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { AuthorizationError, assertAuthorized, canViewActionRun } from "../authorization"
|
|
2
2
|
import {
|
|
3
3
|
getAuthorizationRef,
|
|
4
|
+
type ResolvedRuntimeAuthorization,
|
|
4
5
|
resolveExecutionScopeAuthorization,
|
|
5
|
-
resolveRuntimeAuthorizationForProject,
|
|
6
6
|
} from "../execution/authorization"
|
|
7
7
|
import {
|
|
8
8
|
createPrimitiveExecutionRecord,
|
|
@@ -10,22 +10,20 @@ import {
|
|
|
10
10
|
executionRecordInputFromRuntime,
|
|
11
11
|
} from "../execution/durable"
|
|
12
12
|
import type { ExecutionContext } from "../execution/types"
|
|
13
|
-
import { ActionRunTimeoutError } from "../objects/action/errors"
|
|
14
13
|
import { OntologyValidationError } from "../ontology/errors"
|
|
15
14
|
import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
|
|
16
15
|
import type { SixbRuntimeContext } from "../runtime/types"
|
|
17
16
|
import { assertParamUsersActive } from "../shared/params/user-refs"
|
|
17
|
+
import type { ActionRunRecord } from "../storage"
|
|
18
18
|
import {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
isTerminalActionRun,
|
|
23
|
-
} from "../storage"
|
|
24
|
-
import { assertObjectReadOutputWithinLimit } from "../storage/objects/execution-limits"
|
|
19
|
+
assertObjectReadOutputWithinLimit,
|
|
20
|
+
ObjectReadLimitExceededError,
|
|
21
|
+
} from "../storage/objects/execution-limits"
|
|
25
22
|
import { admitDelegatedObjectAction, assertDelegatedActionTarget } from "./delegated-admission"
|
|
26
|
-
import {
|
|
27
|
-
import {
|
|
23
|
+
import { getActionRunExecutor } from "./run/executor"
|
|
24
|
+
import { actionRunBelongsToShareGrant } from "./run-authorization"
|
|
28
25
|
import { createActionRunId } from "./run-id"
|
|
26
|
+
import { type ExistingActionRun, persistActionRun } from "./run-persistence"
|
|
29
27
|
import type { ActionDefinition, ActionSubject } from "./types"
|
|
30
28
|
import {
|
|
31
29
|
isObjectActionDefinition,
|
|
@@ -34,51 +32,23 @@ import {
|
|
|
34
32
|
validateActionSubject,
|
|
35
33
|
} from "./validation"
|
|
36
34
|
|
|
37
|
-
export interface RequestActionResult {
|
|
38
|
-
readonly runId: string
|
|
39
|
-
readonly queuedAt: string
|
|
40
|
-
readonly jobId?: string
|
|
41
|
-
readonly created: boolean
|
|
42
|
-
}
|
|
43
|
-
|
|
44
35
|
export interface RequestActionOptions {
|
|
45
36
|
readonly runId?: string
|
|
37
|
+
/**
|
|
38
|
+
* Cancels the run before its irreversible boundary: a succeeded writeback, or the commit of an
|
|
39
|
+
* Action without one. Past it, the run finishes whatever this signal does.
|
|
40
|
+
*/
|
|
46
41
|
readonly signal?: AbortSignal
|
|
47
42
|
}
|
|
48
43
|
|
|
49
|
-
export interface
|
|
50
|
-
readonly timeoutMs?: number
|
|
51
|
-
readonly onRequested?: (runId: string) => void | Promise<void>
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export interface RequestActionInput {
|
|
44
|
+
export interface RequestActionInput extends RequestActionOptions {
|
|
55
45
|
readonly actionId: string
|
|
56
46
|
readonly subject?: ActionSubject
|
|
57
47
|
readonly params?: Record<string, unknown>
|
|
58
|
-
|
|
59
|
-
readonly signal?: AbortSignal
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
export interface RequestActionAndWaitInput extends RequestActionInput {
|
|
63
|
-
readonly timeoutMs?: number
|
|
48
|
+
/** Called once the run's execution exists, before the run executes. A throw starts nothing. */
|
|
64
49
|
readonly onRequested?: (runId: string) => void | Promise<void>
|
|
65
50
|
}
|
|
66
51
|
|
|
67
|
-
export interface WaitForActionRunInput {
|
|
68
|
-
readonly runId: string
|
|
69
|
-
readonly timeoutMs?: number
|
|
70
|
-
readonly signal?: AbortSignal
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
const DEFAULT_ACTION_WAIT_TIMEOUT_MS = 60_000
|
|
74
|
-
const DEFAULT_ACTION_WAIT_POLL_MS = 1_000
|
|
75
|
-
|
|
76
|
-
function clearTimer(timer: ReturnType<typeof setTimeout> | undefined): void {
|
|
77
|
-
if (timer) {
|
|
78
|
-
clearTimeout(timer)
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
52
|
function getActionDefinition(runtime: SixbRuntimeContext, actionId: string): ActionDefinition {
|
|
83
53
|
const action = runtime.actionRegistry.getById(actionId)
|
|
84
54
|
if (!action) {
|
|
@@ -87,11 +57,17 @@ function getActionDefinition(runtime: SixbRuntimeContext, actionId: string): Act
|
|
|
87
57
|
return action
|
|
88
58
|
}
|
|
89
59
|
|
|
60
|
+
/**
|
|
61
|
+
* Request an Action run and execute it in this process, returning its terminal record.
|
|
62
|
+
*
|
|
63
|
+
* Admission, authorization and params are checked before anything is persisted. A run id that is
|
|
64
|
+
* already recorded returns that run's record, without running it again.
|
|
65
|
+
*/
|
|
90
66
|
export async function requestAction(
|
|
91
67
|
runtime: SixbRuntimeContext,
|
|
92
68
|
execution: ExecutionContext,
|
|
93
69
|
input: RequestActionInput
|
|
94
|
-
): Promise<
|
|
70
|
+
): Promise<ActionRunRecord> {
|
|
95
71
|
// Capture the three process-local capabilities before caller-owned request getters can run.
|
|
96
72
|
const projectId = runtime.projectId
|
|
97
73
|
const runtimeAuthorization = runtime.runtimeAuthorization
|
|
@@ -127,7 +103,7 @@ export async function requestAction(
|
|
|
127
103
|
assertAuthorized({ projectId, runtimeAuthorization }, { kind: "action.apply", actionId })
|
|
128
104
|
}
|
|
129
105
|
if (authorization.type !== "delegated" && action.binding.kind === "object") {
|
|
130
|
-
// Object actions
|
|
106
|
+
// Object actions require visibility of the type they are bound to, as listing them does.
|
|
131
107
|
assertAuthorized(
|
|
132
108
|
{ projectId, runtimeAuthorization },
|
|
133
109
|
{ kind: "object.view", objectTypeId: action.binding.objectType.id }
|
|
@@ -142,74 +118,136 @@ export async function requestAction(
|
|
|
142
118
|
if (isObjectActionDefinition(action)) {
|
|
143
119
|
objectType = resolveObjectActionSubject({ runtime, action, subject })
|
|
144
120
|
pathPrefix = `${objectType.id}.${action.id}`
|
|
121
|
+
if (authorization.type !== "delegated") {
|
|
122
|
+
// A run is visible to whoever may view its subject's type (`canViewActionRun`). A subtype
|
|
123
|
+
// excluded from a broad grant is not visible through its parent, so admitting the request on
|
|
124
|
+
// the bound type alone would run what its caller can never read back.
|
|
125
|
+
assertAuthorized(
|
|
126
|
+
{ projectId, runtimeAuthorization },
|
|
127
|
+
{ kind: "object.view", objectTypeId: objectType.id }
|
|
128
|
+
)
|
|
129
|
+
}
|
|
145
130
|
}
|
|
146
131
|
|
|
147
132
|
const actionParams = normalizeActionParams(runtime, action.params, rawParams, pathPrefix)
|
|
133
|
+
const runId = createActionRunId(request.runId)
|
|
148
134
|
|
|
149
|
-
// `
|
|
135
|
+
// `persistActionRun` checks an existing run id before creating its durable execution. Keep
|
|
150
136
|
// process-local delegation outside that oracle unless it carries durable grant provenance.
|
|
151
137
|
void getAuthorizationRef(runtimeAuthorization)
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
throw new AuthorizationError(
|
|
191
|
-
`apply:action:${actionId}`,
|
|
192
|
-
"[Sixb] Delegated authority cannot reuse this Action run."
|
|
193
|
-
)
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
}
|
|
197
|
-
: {}),
|
|
198
|
-
createExecution: async (executionId, runId) => {
|
|
199
|
-
const caller = await ensureExecutionRecord(
|
|
200
|
-
runtime.storage.executions,
|
|
201
|
-
executionRecordInputFromRuntime({
|
|
202
|
-
execution,
|
|
203
|
-
runtimeAuthorization,
|
|
138
|
+
// A run starts only while its caller still waits for it; an aborted caller gets its abort.
|
|
139
|
+
const executor = getActionRunExecutor(runtime)
|
|
140
|
+
request.signal?.throwIfAborted()
|
|
141
|
+
|
|
142
|
+
const payload = { actionId, subject, params: actionParams }
|
|
143
|
+
const assertCanReuse = (run: ExistingActionRun) =>
|
|
144
|
+
assertCallerMayHaveRun({ storage: runtime.storage, projectId, authorization, run })
|
|
145
|
+
const persist = () =>
|
|
146
|
+
persistActionRun({
|
|
147
|
+
projectId,
|
|
148
|
+
storage: runtime.storage,
|
|
149
|
+
runId,
|
|
150
|
+
payload,
|
|
151
|
+
assertCanReuse,
|
|
152
|
+
assertNewRun: () =>
|
|
153
|
+
assertParamUsersActive({
|
|
154
|
+
auth: runtime.storage.auth,
|
|
155
|
+
projectId,
|
|
156
|
+
schemas: Object.fromEntries(
|
|
157
|
+
Object.entries(action.params).map(([paramId, param]) => [paramId, param.schema])
|
|
158
|
+
),
|
|
159
|
+
values: actionParams,
|
|
160
|
+
valueTypesById: runtime.ontology.getValueTypesById(),
|
|
161
|
+
describe: (paramId) => `Action param '${pathPrefix}.${paramId}'`,
|
|
162
|
+
invalid: (message) => new OntologyValidationError(message),
|
|
163
|
+
}),
|
|
164
|
+
createExecution: async (executionId, runId) => {
|
|
165
|
+
const caller = await ensureExecutionRecord(
|
|
166
|
+
runtime.storage.executions,
|
|
167
|
+
executionRecordInputFromRuntime({
|
|
168
|
+
execution,
|
|
169
|
+
runtimeAuthorization,
|
|
170
|
+
})
|
|
171
|
+
)
|
|
172
|
+
return createPrimitiveExecutionRecord({
|
|
173
|
+
id: executionId,
|
|
174
|
+
primitive: { kind: "action", id: actionId, runId },
|
|
175
|
+
origin: { type: "execution", parent: caller },
|
|
204
176
|
})
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
177
|
+
},
|
|
178
|
+
})
|
|
179
|
+
|
|
180
|
+
const run = await executor.request({
|
|
181
|
+
runId,
|
|
182
|
+
payload,
|
|
183
|
+
persist,
|
|
184
|
+
assertCanReuse,
|
|
185
|
+
signal: request.signal,
|
|
186
|
+
onRequested: request.onRequested,
|
|
212
187
|
})
|
|
188
|
+
return enforceDelegatedOutputBudget(authorization, run)
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* A run that already exists under the requested run id, recorded or executing, answers this request
|
|
193
|
+
* only under the rules that would let its caller read it.
|
|
194
|
+
*
|
|
195
|
+
* A principal gets it under the visibility rules `actions.runs.getById` applies; admission already
|
|
196
|
+
* requires the grants those rules check for the request's own Action and subject, and this keeps a
|
|
197
|
+
* run that carries another request from depending on it. A delegated caller gets it only when it was
|
|
198
|
+
* requested under the same Share grant.
|
|
199
|
+
*/
|
|
200
|
+
async function assertCallerMayHaveRun(input: {
|
|
201
|
+
readonly storage: SixbRuntimeContext["storage"]
|
|
202
|
+
readonly projectId: string
|
|
203
|
+
readonly authorization: ResolvedRuntimeAuthorization
|
|
204
|
+
readonly run: ExistingActionRun
|
|
205
|
+
}): Promise<void> {
|
|
206
|
+
const { authorization, run } = input
|
|
207
|
+
const visible =
|
|
208
|
+
authorization.type === "delegated"
|
|
209
|
+
? authorization.delegation !== undefined &&
|
|
210
|
+
(await actionRunBelongsToShareGrant({
|
|
211
|
+
storage: input.storage,
|
|
212
|
+
projectId: input.projectId,
|
|
213
|
+
run,
|
|
214
|
+
grantId: authorization.delegation.grantId,
|
|
215
|
+
}))
|
|
216
|
+
: authorization.type !== "principal" || canViewActionRun(authorization.context, run)
|
|
217
|
+
if (!visible) {
|
|
218
|
+
throw new AuthorizationError(
|
|
219
|
+
`apply:action:${run.actionId}`,
|
|
220
|
+
authorization.type === "delegated"
|
|
221
|
+
? "[Sixb] Delegated authority cannot reuse this Action run."
|
|
222
|
+
: `[Sixb] Action run '${run.id}' is not visible to this principal.`
|
|
223
|
+
)
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
/**
|
|
228
|
+
* A delegated caller receives the record only within its output budget, like any read.
|
|
229
|
+
*
|
|
230
|
+
* The run already ran by then, and its record does not change: requesting the same run id again
|
|
231
|
+
* is refused the same way.
|
|
232
|
+
*/
|
|
233
|
+
function enforceDelegatedOutputBudget(
|
|
234
|
+
authorization: ResolvedRuntimeAuthorization,
|
|
235
|
+
run: ActionRunRecord
|
|
236
|
+
): ActionRunRecord {
|
|
237
|
+
if (authorization.type !== "delegated") return run
|
|
238
|
+
try {
|
|
239
|
+
assertObjectReadOutputWithinLimit(run, authorization.objectRead.limits)
|
|
240
|
+
} catch (error) {
|
|
241
|
+
if (!(error instanceof ObjectReadLimitExceededError)) throw error
|
|
242
|
+
throw new ObjectReadLimitExceededError(
|
|
243
|
+
error.metric,
|
|
244
|
+
error.limit,
|
|
245
|
+
`[Sixb] Action run '${run.id}' finished with status '${run.status}', but its record exceeds ` +
|
|
246
|
+
`this caller's ${error.metric} limit (${error.limit}). Requesting it again returns the ` +
|
|
247
|
+
"same record."
|
|
248
|
+
)
|
|
249
|
+
}
|
|
250
|
+
return run
|
|
213
251
|
}
|
|
214
252
|
|
|
215
253
|
function snapshotActionRequest(input: RequestActionInput): {
|
|
@@ -217,199 +255,23 @@ function snapshotActionRequest(input: RequestActionInput): {
|
|
|
217
255
|
readonly subject: ActionSubject
|
|
218
256
|
readonly params: Record<string, unknown>
|
|
219
257
|
readonly runId?: string
|
|
258
|
+
readonly signal?: AbortSignal
|
|
259
|
+
readonly onRequested?: (runId: string) => void | Promise<void>
|
|
220
260
|
} {
|
|
221
261
|
const actionId = input.actionId
|
|
222
262
|
const subject = input.subject
|
|
223
263
|
const params = input.params
|
|
224
264
|
const runId = input.runId
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
input: RequestActionAndWaitInput
|
|
237
|
-
): Promise<ActionRunRecord> {
|
|
238
|
-
const runId = createActionRunId(input.runId)
|
|
239
|
-
|
|
240
|
-
await requestAction(runtime, execution, {
|
|
241
|
-
...input,
|
|
242
|
-
runId,
|
|
243
|
-
})
|
|
244
|
-
await input.onRequested?.(runId)
|
|
245
|
-
|
|
246
|
-
return waitForActionRun(runtime, {
|
|
247
|
-
runId,
|
|
248
|
-
timeoutMs: input.timeoutMs,
|
|
249
|
-
signal: input.signal,
|
|
250
|
-
})
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
export async function waitForActionRun(
|
|
254
|
-
runtime: SixbRuntimeContext,
|
|
255
|
-
input: WaitForActionRunInput
|
|
256
|
-
): Promise<ActionRunRecord> {
|
|
257
|
-
const projectId = runtime.projectId
|
|
258
|
-
const runtimeAuthorization = runtime.runtimeAuthorization
|
|
259
|
-
const request = {
|
|
260
|
-
runId: input.runId,
|
|
261
|
-
timeoutMs: input.timeoutMs,
|
|
262
|
-
signal: input.signal,
|
|
263
|
-
}
|
|
264
|
-
const authorization = resolveRuntimeAuthorizationForProject({
|
|
265
|
-
projectId,
|
|
266
|
-
runtimeAuthorization,
|
|
267
|
-
})
|
|
268
|
-
if (authorization.type === "denied") {
|
|
269
|
-
throw new AuthorizationError(
|
|
270
|
-
"runtime:unbound",
|
|
271
|
-
"[Sixb] Protected operations require registered runtime authorization for this project."
|
|
272
|
-
)
|
|
273
|
-
}
|
|
274
|
-
// Process-local delegation cannot poll durable runs without originating grant provenance.
|
|
275
|
-
if (authorization.type === "delegated") void getAuthorizationRef(runtimeAuthorization)
|
|
276
|
-
const actionRuns = requireActionRunStorage(runtime)
|
|
277
|
-
const timeoutMs = request.timeoutMs ?? DEFAULT_ACTION_WAIT_TIMEOUT_MS
|
|
278
|
-
const signal = request.signal
|
|
279
|
-
const startedAt = Date.now()
|
|
280
|
-
|
|
281
|
-
if (signal?.aborted) {
|
|
282
|
-
throw signal.reason ?? new Error("aborted")
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
return new Promise<ActionRunRecord>((resolve, reject) => {
|
|
286
|
-
let timer: ReturnType<typeof setTimeout> | undefined
|
|
287
|
-
let pollTimer: ReturnType<typeof setTimeout> | undefined
|
|
288
|
-
let unsubscribe: (() => void) | undefined
|
|
289
|
-
let settled = false
|
|
290
|
-
let checking = false
|
|
291
|
-
|
|
292
|
-
const releaseSubscription = (release: (() => void) | undefined) => {
|
|
293
|
-
if (!release) return
|
|
294
|
-
try {
|
|
295
|
-
release()
|
|
296
|
-
} catch (error) {
|
|
297
|
-
console.error("[Sixb] Failed to release action run wait subscription:", error)
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
|
|
301
|
-
const cleanup = () => {
|
|
302
|
-
if (settled) return
|
|
303
|
-
settled = true
|
|
304
|
-
clearTimer(timer)
|
|
305
|
-
clearTimer(pollTimer)
|
|
306
|
-
signal?.removeEventListener("abort", onAbort)
|
|
307
|
-
releaseSubscription(unsubscribe)
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
const rejectWith = (error: unknown) => {
|
|
311
|
-
cleanup()
|
|
312
|
-
reject(error)
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
const schedulePoll = () => {
|
|
316
|
-
if (!settled && !pollTimer) {
|
|
317
|
-
pollTimer = setTimeout(() => {
|
|
318
|
-
pollTimer = undefined
|
|
319
|
-
void check()
|
|
320
|
-
}, DEFAULT_ACTION_WAIT_POLL_MS)
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
const check = async () => {
|
|
325
|
-
if (settled || checking) {
|
|
326
|
-
return
|
|
327
|
-
}
|
|
328
|
-
checking = true
|
|
329
|
-
try {
|
|
330
|
-
const record = await actionRuns.getById({
|
|
331
|
-
projectId,
|
|
332
|
-
id: request.runId,
|
|
333
|
-
})
|
|
334
|
-
const visible =
|
|
335
|
-
record &&
|
|
336
|
-
(authorization.type === "unrestricted" ||
|
|
337
|
-
(authorization.type === "principal" &&
|
|
338
|
-
canViewActionRun(authorization.context, record)) ||
|
|
339
|
-
(authorization.type === "delegated" &&
|
|
340
|
-
(await canDelegationAccessActionRun({
|
|
341
|
-
storage: runtime.storage,
|
|
342
|
-
projectId,
|
|
343
|
-
authority: authorization,
|
|
344
|
-
run: record,
|
|
345
|
-
}))))
|
|
346
|
-
if (visible && isTerminalActionRun(record)) {
|
|
347
|
-
if (authorization.type === "delegated") {
|
|
348
|
-
assertObjectReadOutputWithinLimit(record, authorization.objectRead.limits)
|
|
349
|
-
}
|
|
350
|
-
cleanup()
|
|
351
|
-
resolve(record)
|
|
352
|
-
return
|
|
353
|
-
}
|
|
354
|
-
schedulePoll()
|
|
355
|
-
} catch (error) {
|
|
356
|
-
rejectWith(error)
|
|
357
|
-
} finally {
|
|
358
|
-
checking = false
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
const onAbort = () => {
|
|
363
|
-
rejectWith(signal?.reason ?? new Error("aborted"))
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
timer = setTimeout(
|
|
367
|
-
() => {
|
|
368
|
-
rejectWith(new ActionRunTimeoutError({ runId: request.runId, timeoutMs }))
|
|
369
|
-
},
|
|
370
|
-
Math.max(0, timeoutMs - (Date.now() - startedAt))
|
|
371
|
-
)
|
|
372
|
-
|
|
373
|
-
if (signal) {
|
|
374
|
-
signal.addEventListener("abort", onAbort, { once: true })
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
runtime.events
|
|
378
|
-
.subscribe({ types: ["action.completed", "action.failed"] }, (events) => {
|
|
379
|
-
if (
|
|
380
|
-
events.some(
|
|
381
|
-
(event) =>
|
|
382
|
-
(event.type === "action.completed" || event.type === "action.failed") &&
|
|
383
|
-
event.payload.runId === request.runId
|
|
384
|
-
)
|
|
385
|
-
) {
|
|
386
|
-
void check()
|
|
387
|
-
}
|
|
388
|
-
})
|
|
389
|
-
.then((unsubscribeEvents) => {
|
|
390
|
-
// Timeout or abort can settle the wait before the asynchronous subscription resolves.
|
|
391
|
-
// `cleanup()` had no handle to release in that case, so release the late handle here.
|
|
392
|
-
if (settled) {
|
|
393
|
-
releaseSubscription(unsubscribeEvents)
|
|
394
|
-
return
|
|
395
|
-
}
|
|
396
|
-
unsubscribe = unsubscribeEvents
|
|
397
|
-
void check()
|
|
398
|
-
})
|
|
399
|
-
.catch((error: unknown) => {
|
|
400
|
-
if (settled) {
|
|
401
|
-
console.error("[Sixb] Action run wait subscription failed after the wait settled:", error)
|
|
402
|
-
return
|
|
403
|
-
}
|
|
404
|
-
rejectWith(error)
|
|
405
|
-
})
|
|
406
|
-
})
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
function requireActionRunStorage(runtime: SixbRuntimeContext): ActionRunStorage {
|
|
410
|
-
const actionRuns = runtime.storage.actionRuns
|
|
411
|
-
if (!actionRuns) {
|
|
412
|
-
throw new ActionRunError("[Sixb] Action run storage is not configured.")
|
|
265
|
+
const signal = input.signal
|
|
266
|
+
const onRequested = input.onRequested
|
|
267
|
+
return {
|
|
268
|
+
...structuredClone({
|
|
269
|
+
actionId,
|
|
270
|
+
subject: subject ?? { kind: "none" },
|
|
271
|
+
params: params ?? {},
|
|
272
|
+
...(runId === undefined ? {} : { runId }),
|
|
273
|
+
}),
|
|
274
|
+
...(signal === undefined ? {} : { signal }),
|
|
275
|
+
...(onRequested === undefined ? {} : { onRequested }),
|
|
413
276
|
}
|
|
414
|
-
return actionRuns
|
|
415
277
|
}
|