@sixb/core 0.1.10 → 0.1.12
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/dist/actions/builders/params.d.ts +1 -22
- package/dist/actions/builders/params.d.ts.map +1 -1
- package/dist/actions/index.js +29 -28
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/types/params.d.ts +10 -44
- package/dist/actions/types/params.d.ts.map +1 -1
- package/dist/actions/validation.d.ts.map +1 -1
- package/dist/actions/worker.js +3 -2
- package/dist/actions/worker.js.map +2 -2
- package/dist/agents/errors.d.ts +1 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +15 -9
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/ids.d.ts +2 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +1 -1
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +48 -42
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/sandbox.d.ts +5 -0
- package/dist/agents/sandbox.d.ts.map +1 -0
- package/dist/agents/streams/index.js +4 -3
- package/dist/agents/streams/index.js.map +1 -1
- package/dist/agents/streams/internal.js +4 -3
- package/dist/agents/streams/internal.js.map +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/auth/index.js +8 -6
- package/dist/auth/index.js.map +1 -1
- package/dist/authorization/index.js +5 -4
- package/dist/authorization/index.js.map +1 -1
- package/dist/blob-storage/types.d.ts +4 -1
- package/dist/blob-storage/types.d.ts.map +1 -1
- package/dist/bootstrap/index.js +50 -46
- package/dist/bootstrap/index.js.map +1 -1
- package/dist/{chunk-17kfctj6.js → chunk-0mza4xb2.js} +2 -2
- package/dist/chunk-2c4j899j.js.map +1 -1
- package/dist/{chunk-g00bfdq6.js → chunk-2cxv584m.js} +12 -56
- package/dist/{chunk-g00bfdq6.js.map → chunk-2cxv584m.js.map} +3 -3
- package/dist/{chunk-e0d1rzef.js → chunk-2h63nrde.js} +380 -97
- package/dist/chunk-2h63nrde.js.map +20 -0
- package/dist/{chunk-rtk71jzp.js → chunk-3bnt2wna.js} +2 -2
- package/dist/{chunk-awbhdqyc.js → chunk-3ghw2t5q.js} +1 -1
- package/dist/{chunk-b19g04jk.js → chunk-3h7ctayx.js} +1 -1
- package/dist/{chunk-wjasrj67.js → chunk-3qpcrcj8.js} +1 -1
- package/dist/{chunk-5hz0fnca.js → chunk-4k53sm9e.js} +6 -2
- package/dist/chunk-4k53sm9e.js.map +12 -0
- package/dist/chunk-4ph94nhd.js +81 -0
- package/dist/chunk-4ph94nhd.js.map +10 -0
- package/dist/chunk-58geavnf.js +29 -0
- package/dist/chunk-58geavnf.js.map +10 -0
- package/dist/{chunk-0y39rgsb.js → chunk-5tetw4hn.js} +1 -1
- package/dist/{chunk-7bs40fe1.js → chunk-69266efg.js} +83 -2
- package/dist/chunk-69266efg.js.map +12 -0
- package/dist/{chunk-g7knyczr.js → chunk-6ma8dvzc.js} +121 -53
- package/dist/chunk-6ma8dvzc.js.map +15 -0
- package/dist/{chunk-skz0hst3.js → chunk-7c2g3sz9.js} +6 -86
- package/dist/{chunk-skz0hst3.js.map → chunk-7c2g3sz9.js.map} +3 -3
- package/dist/{chunk-976rxdpx.js → chunk-7qnvhtcd.js} +93 -17
- package/dist/{chunk-976rxdpx.js.map → chunk-7qnvhtcd.js.map} +7 -6
- package/dist/{chunk-c5rkjrgp.js → chunk-7ytf06d3.js} +1 -1
- package/dist/{chunk-mrp7k0pw.js → chunk-91kcnbf0.js} +9 -14
- package/dist/chunk-91kcnbf0.js.map +10 -0
- package/dist/{chunk-yv79ncbv.js → chunk-96yw3pwd.js} +3 -3
- package/dist/chunk-96yw3pwd.js.map +10 -0
- package/dist/chunk-98cw09sw.js.map +2 -2
- package/dist/{chunk-93csa55g.js → chunk-axndsymr.js} +10 -4
- package/dist/chunk-axndsymr.js.map +11 -0
- package/dist/{chunk-r7fj830t.js → chunk-b768c93y.js} +100 -29
- package/dist/chunk-b768c93y.js.map +36 -0
- package/dist/{chunk-dz5h08xv.js → chunk-bbaa1fet.js} +24 -9
- package/dist/{chunk-dz5h08xv.js.map → chunk-bbaa1fet.js.map} +4 -4
- package/dist/{chunk-7apz6hg4.js → chunk-bet1rb9h.js} +8 -4
- package/dist/chunk-bet1rb9h.js.map +10 -0
- package/dist/{chunk-358caqf5.js → chunk-bfjv1adk.js} +2 -2
- package/dist/{chunk-b0ec55a1.js → chunk-bg2bs62d.js} +5 -5
- package/dist/{chunk-860dwwy0.js → chunk-cd234ba4.js} +22 -12
- package/dist/chunk-cd234ba4.js.map +14 -0
- package/dist/chunk-d62kjtbg.js.map +1 -1
- package/dist/chunk-dmn70ztd.js.map +2 -2
- package/dist/{chunk-28ja2cjs.js → chunk-e1f1sqba.js} +39 -53
- package/dist/{chunk-28ja2cjs.js.map → chunk-e1f1sqba.js.map} +5 -6
- package/dist/{chunk-ap0g1g74.js → chunk-eyjzgav0.js} +39 -4
- package/dist/chunk-eyjzgav0.js.map +12 -0
- package/dist/{chunk-rb1xx120.js → chunk-f06sf7rr.js} +9 -5
- package/dist/chunk-f06sf7rr.js.map +11 -0
- package/dist/{chunk-g6cke204.js → chunk-f85hpqnm.js} +1 -1
- package/dist/{chunk-vsj3mdfj.js → chunk-fc5zfxy1.js} +1 -1
- package/dist/{chunk-38zv5rkr.js → chunk-g2gezsg5.js} +1 -1
- package/dist/{chunk-38zv5rkr.js.map → chunk-g2gezsg5.js.map} +2 -2
- package/dist/{chunk-nmbxcaqx.js → chunk-g50nxqs5.js} +53 -66
- package/dist/chunk-g50nxqs5.js.map +18 -0
- package/dist/{chunk-1824gssz.js → chunk-gswwr35f.js} +4 -4
- package/dist/{chunk-92vk7gta.js → chunk-gzt6v1ja.js} +1 -1
- package/dist/{chunk-aa6z4a19.js → chunk-hgqpcmyr.js} +2 -1
- package/dist/chunk-hgqpcmyr.js.map +12 -0
- package/dist/{chunk-gqh45d2n.js → chunk-hkw8rykk.js} +2 -2
- package/dist/{chunk-f4w3yp4f.js → chunk-hzw7yv5g.js} +104 -21
- package/dist/chunk-hzw7yv5g.js.map +13 -0
- package/dist/{chunk-5c7ga8zz.js → chunk-jjwhy3rs.js} +5 -5
- package/dist/chunk-kept9cdd.js +29 -0
- package/dist/chunk-kept9cdd.js.map +10 -0
- package/dist/{chunk-ftv470j8.js → chunk-m7cx05vp.js} +247 -16
- package/dist/{chunk-ftv470j8.js.map → chunk-m7cx05vp.js.map} +14 -10
- package/dist/{chunk-qyeptdyv.js → chunk-mdnw7nj8.js} +10 -6
- package/dist/chunk-mdnw7nj8.js.map +15 -0
- package/dist/{chunk-5p1v802y.js → chunk-nzsy3xrp.js} +253 -86
- package/dist/chunk-nzsy3xrp.js.map +46 -0
- package/dist/chunk-p1683c0v.js +104 -0
- package/dist/chunk-p1683c0v.js.map +11 -0
- package/dist/chunk-p6r1ex7t.js +93 -0
- package/dist/chunk-p6r1ex7t.js.map +10 -0
- package/dist/{chunk-p5vcsw9c.js → chunk-qm535afa.js} +10 -10
- package/dist/{chunk-p5vcsw9c.js.map → chunk-qm535afa.js.map} +4 -4
- package/dist/chunk-r5zythxp.js +552 -0
- package/dist/chunk-r5zythxp.js.map +17 -0
- package/dist/{chunk-9qsh3p5y.js → chunk-rb143ggb.js} +1 -1
- package/dist/{chunk-653vwrzr.js → chunk-rdghfsss.js} +1 -1
- package/dist/{chunk-t1f4f1ve.js → chunk-sfypc7mk.js} +18 -13
- package/dist/{chunk-t1f4f1ve.js.map → chunk-sfypc7mk.js.map} +3 -3
- package/dist/{chunk-f0rwz2vh.js → chunk-t6f3tdnr.js} +2 -54
- package/dist/chunk-t6f3tdnr.js.map +10 -0
- package/dist/{chunk-bn138h9w.js → chunk-t7dzd1tm.js} +3 -3
- package/dist/{chunk-pr2h4bv4.js → chunk-tg4g4zh0.js} +3 -3
- package/dist/chunk-vpxss818.js +56 -0
- package/dist/chunk-vpxss818.js.map +10 -0
- package/dist/{chunk-ms2tmn1k.js → chunk-vsg0g7h9.js} +53 -57
- package/dist/chunk-vsg0g7h9.js.map +17 -0
- package/dist/{chunk-8vj0rjgs.js → chunk-wjffn5m4.js} +1 -1
- package/dist/{chunk-nt99sxd6.js → chunk-x9tmx3fc.js} +18 -24
- package/dist/chunk-x9tmx3fc.js.map +14 -0
- package/dist/{chunk-agbbygvh.js → chunk-xn686q2e.js} +8 -8
- package/dist/{chunk-g53f0e4j.js → chunk-xnx96gfy.js} +45 -17
- package/dist/{chunk-g53f0e4j.js.map → chunk-xnx96gfy.js.map} +3 -3
- package/dist/{chunk-v2vcg0w6.js → chunk-xtfryrfb.js} +2 -2
- package/dist/chunk-y0v18c2j.js +363 -0
- package/dist/chunk-y0v18c2j.js.map +14 -0
- package/dist/{chunk-72w2pxk7.js → chunk-y1ahv8b7.js} +11 -3
- package/dist/{chunk-72w2pxk7.js.map → chunk-y1ahv8b7.js.map} +3 -3
- package/dist/chunk-y3ev53cq.js +84 -0
- package/dist/chunk-y3ev53cq.js.map +10 -0
- package/dist/{chunk-p6a4npdx.js → chunk-ybhz3j9g.js} +362 -60
- package/dist/chunk-ybhz3j9g.js.map +63 -0
- package/dist/{chunk-z30bv4ga.js → chunk-yxb4c62x.js} +3 -2
- package/dist/{chunk-z30bv4ga.js.map → chunk-yxb4c62x.js.map} +3 -3
- package/dist/chunk-z3y5kg1x.js +14 -0
- package/dist/chunk-z3y5kg1x.js.map +10 -0
- package/dist/connectors/connections/command-context.d.ts +2 -0
- package/dist/connectors/connections/command-context.d.ts.map +1 -1
- package/dist/connectors/connections/contracts.d.ts +1 -1
- package/dist/connectors/connections/contracts.d.ts.map +1 -1
- package/dist/connectors/connections/execution.d.ts +1 -0
- package/dist/connectors/connections/execution.d.ts.map +1 -1
- package/dist/connectors/connections/runs.d.ts +1 -0
- package/dist/connectors/connections/runs.d.ts.map +1 -1
- package/dist/connectors/connections/service.d.ts +2 -0
- package/dist/connectors/connections/service.d.ts.map +1 -1
- package/dist/datasets/validation.d.ts +4 -0
- package/dist/datasets/validation.d.ts.map +1 -1
- package/dist/datasets/write.d.ts.map +1 -1
- package/dist/datasets/write.js +5 -4
- package/dist/datasets/write.js.map +1 -1
- package/dist/error-reporting/capability.d.ts +3 -2
- package/dist/error-reporting/capability.d.ts.map +1 -1
- package/dist/error-reporting/internal.js +5 -4
- package/dist/error-reporting/internal.js.map +1 -1
- package/dist/error-reporting/reports.d.ts +10 -0
- package/dist/error-reporting/reports.d.ts.map +1 -1
- package/dist/error-reporting/types.d.ts +10 -2
- 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/failure-message.d.ts +8 -0
- package/dist/errors/failure-message.d.ts.map +1 -0
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +3 -2
- package/dist/errors/internal.js.map +1 -1
- package/dist/events/index.js +5 -4
- package/dist/events/index.js.map +1 -1
- package/dist/events/outbox-dispatcher.d.ts +2 -2
- package/dist/events/outbox-dispatcher.d.ts.map +1 -1
- package/dist/execution/agent.js +44 -41
- package/dist/execution/agent.js.map +1 -1
- package/dist/execution/authorization.d.ts.map +1 -1
- package/dist/execution/authorized-object-reader.d.ts +3 -0
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/kernel-operation.d.ts +4 -0
- package/dist/execution/kernel-operation.d.ts.map +1 -0
- package/dist/execution/primitive.js +44 -41
- package/dist/execution/primitive.js.map +2 -2
- package/dist/execution/request.js +45 -42
- package/dist/execution/request.js.map +2 -2
- package/dist/execution/types.d.ts +6 -0
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/index.d.ts +15 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -59
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/in-memory.d.ts.map +1 -1
- package/dist/lake-storage/index.js +5 -4
- package/dist/lake-storage/index.js.map +1 -1
- package/dist/lake-storage/types.d.ts +2 -0
- package/dist/lake-storage/types.d.ts.map +1 -1
- package/dist/maintenance/ontology-maintenance.d.ts.map +1 -1
- package/dist/maintenance/types.d.ts +1 -1
- package/dist/maintenance/types.d.ts.map +1 -1
- package/dist/materialization/errors.d.ts +1 -1
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -0
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +3 -3
- package/dist/materialization/model.d.ts +2 -0
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materialization/vectors.d.ts +19 -0
- package/dist/materialization/vectors.d.ts.map +1 -0
- package/dist/materializer/context.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/vector-authority.d.ts +6 -0
- package/dist/materializer/edits/vector-authority.d.ts.map +1 -0
- package/dist/materializer/edits/vectors.d.ts +6 -0
- package/dist/materializer/edits/vectors.d.ts.map +1 -0
- package/dist/materializer/effective/validate.d.ts.map +1 -1
- package/dist/materializer/effective/vector-indexing.d.ts +7 -0
- package/dist/materializer/effective/vector-indexing.d.ts.map +1 -0
- package/dist/materializer/effective/vectors.d.ts +6 -0
- package/dist/materializer/effective/vectors.d.ts.map +1 -0
- package/dist/materializer/execution/work-executor.d.ts +2 -1
- package/dist/materializer/execution/work-executor.d.ts.map +1 -1
- package/dist/materializer/index.js +26 -25
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/models/catalog-index.d.ts +15 -0
- package/dist/models/catalog-index.d.ts.map +1 -0
- package/dist/models/catalog.d.ts +27 -6
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/decision/catalog.d.ts +12 -0
- package/dist/models/decision/catalog.d.ts.map +1 -0
- package/dist/models/decision/errors.d.ts +7 -0
- package/dist/models/decision/errors.d.ts.map +1 -0
- package/dist/models/decision/output.d.ts +50 -0
- package/dist/models/decision/output.d.ts.map +1 -0
- package/dist/models/decision/questions.d.ts +14 -0
- package/dist/models/decision/questions.d.ts.map +1 -0
- package/dist/models/decision/runtime.d.ts +7 -0
- package/dist/models/decision/runtime.d.ts.map +1 -0
- package/dist/models/decision/types.d.ts +92 -0
- package/dist/models/decision/types.d.ts.map +1 -0
- package/dist/models/decision/validation.d.ts +7 -0
- package/dist/models/decision/validation.d.ts.map +1 -0
- package/dist/models/definitions.d.ts +8 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/embedding-model.d.ts +60 -0
- package/dist/models/embedding-model.d.ts.map +1 -0
- package/dist/models/execution/binding.d.ts +2 -0
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/embedding.d.ts +5 -0
- package/dist/models/execution/embedding.d.ts.map +1 -0
- package/dist/models/execution/index.js +29 -26
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +5 -1
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/session.d.ts +21 -0
- package/dist/models/execution/session.d.ts.map +1 -0
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +2 -0
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/index.d.ts +9 -1
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +17 -7
- package/dist/models/index.js.map +1 -1
- package/dist/models/pricing.d.ts +3 -2
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/objects/authorized-ontology-view.d.ts.map +1 -1
- package/dist/objects/execution.d.ts +1 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.js +29 -28
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/query/executor.d.ts +3 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -0
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +34 -24
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +6 -2
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/sdk/object-handle.d.ts +5 -0
- 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/sdk/query-executor.d.ts +2 -0
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/sdk/runtime-query-executor.d.ts.map +1 -1
- package/dist/objects/vectors/handle.d.ts +4 -0
- package/dist/objects/vectors/handle.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-batch.d.ts +6 -0
- package/dist/objects/vectors/indexing-batch.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-generate.d.ts +11 -0
- package/dist/objects/vectors/indexing-generate.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-runtime.d.ts +7 -0
- package/dist/objects/vectors/indexing-runtime.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-shared.d.ts +17 -0
- package/dist/objects/vectors/indexing-shared.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-single.d.ts +4 -0
- package/dist/objects/vectors/indexing-single.d.ts.map +1 -0
- package/dist/objects/vectors/indexing-store-batch.d.ts +6 -0
- package/dist/objects/vectors/indexing-store-batch.d.ts.map +1 -0
- package/dist/objects/vectors/indexing.d.ts +7 -0
- package/dist/objects/vectors/indexing.d.ts.map +1 -0
- package/dist/objects/vectors/profile.d.ts +13 -0
- package/dist/objects/vectors/profile.d.ts.map +1 -0
- package/dist/objects/vectors/query.d.ts +5 -0
- package/dist/objects/vectors/query.d.ts.map +1 -0
- package/dist/objects/vectors/resolve-query.d.ts +6 -0
- package/dist/objects/vectors/resolve-query.d.ts.map +1 -0
- package/dist/objects/vectors/types.d.ts +11 -0
- package/dist/objects/vectors/types.d.ts.map +1 -0
- package/dist/ontology/index.d.ts +2 -1
- package/dist/ontology/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 +5 -4
- package/dist/ontology/internal.js.map +1 -1
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +8 -9
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/validation/definition.d.ts +3 -0
- package/dist/ontology/validation/definition.d.ts.map +1 -0
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/query.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/ontology/vector-profiles.d.ts +4 -0
- package/dist/ontology/vector-profiles.d.ts.map +1 -0
- package/dist/pipelines/index.js +28 -27
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +24 -23
- package/dist/projections/internal.js.map +1 -1
- package/dist/query.js +2 -2
- package/dist/queues/in-memory.d.ts +2 -1
- 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 +5 -0
- package/dist/queues/types.d.ts.map +1 -1
- package/dist/runtime/create.d.ts +4 -3
- package/dist/runtime/create.d.ts.map +1 -1
- package/dist/runtime/host.d.ts +9 -6
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/internal.d.ts +3 -0
- package/dist/runtime/internal.d.ts.map +1 -1
- package/dist/runtime/internal.js +47 -1
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +9 -4
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +15 -3
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/auth.d.ts +16 -0
- package/dist/sandboxes/auth.d.ts.map +1 -0
- package/dist/sandboxes/config.d.ts +5 -0
- package/dist/sandboxes/config.d.ts.map +1 -0
- package/dist/sandboxes/configuration.d.ts +41 -0
- package/dist/sandboxes/configuration.d.ts.map +1 -0
- package/dist/sandboxes/environment.d.ts +13 -0
- package/dist/sandboxes/environment.d.ts.map +1 -0
- package/dist/sandboxes/errors.d.ts +1 -1
- package/dist/sandboxes/errors.d.ts.map +1 -1
- package/dist/sandboxes/index.d.ts +6 -1
- package/dist/sandboxes/index.d.ts.map +1 -1
- package/dist/sandboxes/index.js +16 -3
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/sandboxes/sandbox.d.ts +35 -3
- package/dist/sandboxes/sandbox.d.ts.map +1 -1
- package/dist/shared/params/builders.d.ts +25 -0
- package/dist/shared/params/builders.d.ts.map +1 -0
- package/dist/shared/params/types.d.ts +47 -0
- package/dist/shared/params/types.d.ts.map +1 -0
- package/dist/shared/params/validation.d.ts +15 -0
- package/dist/shared/params/validation.d.ts.map +1 -0
- package/dist/shares/internal.js +23 -22
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +4 -3
- package/dist/storage/action-runs/failure.js.map +1 -1
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/agents/in-memory.d.ts +2 -1
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +1 -1
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +5 -1
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +8 -4
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +49 -0
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +1 -0
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/index.d.ts +1 -1
- package/dist/storage/ai-cost/index.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +2 -2
- package/dist/storage/ai-cost/types.d.ts +14 -2
- package/dist/storage/ai-cost/types.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +4 -3
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/connector-connections/in-memory.d.ts +1 -0
- package/dist/storage/connector-connections/in-memory.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/connections.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/runs.d.ts +1 -0
- package/dist/storage/connector-connections/provider/runs.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider/shared.d.ts +1 -0
- package/dist/storage/connector-connections/provider/shared.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.d.ts +1 -0
- package/dist/storage/connector-connections/provider.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +12 -17
- package/dist/storage/connector-connections/provider.js.map +6 -6
- package/dist/storage/connector-connections/types.d.ts +3 -1
- package/dist/storage/connector-connections/types.d.ts.map +1 -1
- package/dist/storage/executions/provider.d.ts +3 -3
- package/dist/storage/executions/provider.d.ts.map +1 -1
- package/dist/storage/executions/provider.js +13 -11
- package/dist/storage/executions/provider.js.map +3 -3
- package/dist/storage/executions/types.d.ts +3 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/executions/validation.d.ts.map +1 -1
- package/dist/storage/index.d.ts +5 -3
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +25 -22
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.js +2 -2
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-source.d.ts +5 -0
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts +7 -0
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +2 -0
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/commits.d.ts +1 -0
- package/dist/storage/ontology/commits.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +4 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +2 -0
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/shared-state.d.ts +7 -0
- package/dist/storage/ontology/in-memory/shared-state.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/vector-indexing.d.ts +44 -0
- package/dist/storage/ontology/in-memory/vector-indexing.d.ts.map +1 -0
- package/dist/storage/ontology/in-memory/vectors.d.ts +31 -0
- package/dist/storage/ontology/in-memory/vectors.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +6 -0
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/outbox.d.ts +1 -0
- package/dist/storage/ontology/outbox.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +2 -2
- package/dist/storage/ontology/vector-indexing.d.ts +94 -0
- package/dist/storage/ontology/vector-indexing.d.ts.map +1 -0
- package/dist/storage/ontology/vectors.d.ts +56 -0
- package/dist/storage/ontology/vectors.d.ts.map +1 -0
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/provider.js +4 -3
- package/dist/storage/projection-runs/provider.js.map +1 -1
- 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 -7
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +29 -28
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-cost-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.js +488 -81
- package/dist/testing/index.js.map +10 -10
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/object-read-scope-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/webhooks/internal.js +24 -23
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +3 -2
- package/dist/workers/index.js.map +2 -2
- package/dist/workflows/failure.d.ts.map +1 -1
- package/dist/workflows/index.js +47 -43
- package/dist/workflows/index.js.map +1 -1
- package/package.json +1 -1
- package/src/actions/builders/params.ts +1 -48
- package/src/actions/types/params.ts +14 -74
- package/src/actions/validation.ts +7 -84
- package/src/agents/errors.ts +3 -0
- package/src/agents/execution.ts +67 -15
- package/src/agents/ids.ts +8 -0
- package/src/agents/index.ts +1 -0
- package/src/agents/model-loop.ts +7 -0
- package/src/agents/request.ts +11 -0
- package/src/agents/sandbox.ts +44 -0
- package/src/agents/validation.ts +2 -108
- package/src/blob-storage/types.ts +4 -1
- package/src/connectors/connections/command-context.ts +21 -4
- package/src/connectors/connections/contracts.ts +4 -1
- package/src/connectors/connections/execution.ts +3 -0
- package/src/connectors/connections/runs.ts +38 -1
- package/src/connectors/connections/service.ts +6 -0
- package/src/datasets/validation.ts +40 -11
- package/src/datasets/write.ts +8 -11
- package/src/error-reporting/capability.ts +11 -0
- package/src/error-reporting/reports.ts +23 -0
- package/src/error-reporting/types.ts +12 -1
- package/src/errors/catalog.ts +12 -0
- package/src/errors/failure-message.ts +15 -0
- package/src/errors/internal.ts +57 -25
- package/src/events/outbox-dispatcher.ts +20 -26
- package/src/execution/authorization.ts +12 -5
- package/src/execution/authorized-object-reader.ts +37 -2
- package/src/execution/kernel-operation.ts +27 -0
- package/src/execution/scopes.ts +2 -0
- package/src/execution/types.ts +4 -4
- package/src/index.ts +60 -1
- package/src/lake-storage/in-memory.ts +7 -3
- package/src/lake-storage/types.ts +2 -0
- package/src/maintenance/ontology-maintenance.ts +6 -2
- package/src/maintenance/types.ts +1 -1
- package/src/materialization/errors.ts +2 -2
- package/src/materialization/index.ts +1 -0
- package/src/materialization/model.ts +2 -0
- package/src/materialization/vectors.ts +18 -0
- package/src/materializer/README.md +15 -1
- package/src/materializer/context.ts +10 -0
- package/src/materializer/edits/commit.ts +8 -1
- package/src/materializer/edits/vector-authority.ts +108 -0
- package/src/materializer/edits/vectors.ts +100 -0
- package/src/materializer/effective/validate.ts +10 -3
- package/src/materializer/effective/vector-indexing.ts +84 -0
- package/src/materializer/effective/vectors.ts +47 -0
- package/src/materializer/execution/work-executor.ts +11 -3
- package/src/materializer/projections/replace.ts +1 -1
- package/src/materializer/shared/normalize.ts +11 -0
- package/src/materializer/telemetry/append.ts +1 -1
- package/src/models/catalog-index.ts +38 -0
- package/src/models/catalog.ts +66 -38
- package/src/models/decision/catalog.ts +32 -0
- package/src/models/decision/errors.ts +18 -0
- package/src/models/decision/output.ts +101 -0
- package/src/models/decision/questions.ts +29 -0
- package/src/models/decision/runtime.ts +188 -0
- package/src/models/decision/types.ts +109 -0
- package/src/models/decision/validation.ts +335 -0
- package/src/models/definitions.ts +20 -1
- package/src/models/embedding-model.ts +129 -0
- package/src/models/execution/README.md +63 -0
- package/src/models/execution/binding.ts +2 -0
- package/src/models/execution/embedding.ts +133 -0
- package/src/models/execution/model-call-recorder.ts +42 -30
- package/src/models/execution/session.ts +81 -0
- package/src/models/execution.ts +10 -52
- package/src/models/generation-types.ts +2 -0
- package/src/models/index.ts +37 -0
- package/src/models/pricing.ts +7 -4
- package/src/objects/authorized-ontology-view.ts +12 -8
- package/src/objects/execution.ts +2 -0
- package/src/objects/query/executor.ts +13 -4
- package/src/objects/query/explain.ts +7 -2
- package/src/objects/query/index.ts +2 -0
- package/src/objects/query/ir.ts +6 -2
- package/src/objects/query/normalize.ts +5 -1
- package/src/objects/query/validate.ts +74 -73
- package/src/objects/sdk/object-handle.ts +3 -0
- package/src/objects/sdk/object-set.ts +1 -0
- package/src/objects/sdk/query-builder.ts +9 -3
- package/src/objects/sdk/query-executor.ts +2 -1
- package/src/objects/sdk/runtime-query-executor.ts +6 -2
- package/src/objects/vectors/README.md +59 -0
- package/src/objects/vectors/handle.ts +91 -0
- package/src/objects/vectors/indexing-batch.ts +163 -0
- package/src/objects/vectors/indexing-generate.ts +184 -0
- package/src/objects/vectors/indexing-runtime.ts +17 -0
- package/src/objects/vectors/indexing-shared.ts +188 -0
- package/src/objects/vectors/indexing-single.ts +51 -0
- package/src/objects/vectors/indexing-store-batch.ts +62 -0
- package/src/objects/vectors/indexing.ts +23 -0
- package/src/objects/vectors/profile.ts +64 -0
- package/src/objects/vectors/query.ts +16 -0
- package/src/objects/vectors/resolve-query.ts +89 -0
- package/src/objects/vectors/types.ts +10 -0
- package/src/ontology/index.ts +2 -0
- package/src/ontology/registry.ts +8 -0
- package/src/ontology/types.ts +9 -9
- package/src/ontology/validation/definition.ts +104 -0
- package/src/ontology/validation/properties.ts +14 -4
- package/src/ontology/validation/query.ts +34 -51
- package/src/ontology/validation/schema.ts +85 -23
- package/src/ontology/vector-profiles.ts +35 -0
- package/src/queues/in-memory.ts +5 -0
- package/src/queues/index.ts +1 -0
- package/src/queues/types.ts +10 -0
- package/src/runtime/create.ts +7 -6
- package/src/runtime/host.ts +42 -6
- package/src/runtime/internal.ts +3 -0
- package/src/runtime/resolve-definitions.ts +19 -1
- package/src/runtime/sixb.ts +27 -9
- package/src/runtime/types.ts +16 -4
- package/src/sandboxes/README.md +41 -0
- package/src/sandboxes/auth.ts +17 -0
- package/src/sandboxes/config.ts +37 -0
- package/src/sandboxes/configuration.ts +268 -0
- package/src/sandboxes/environment.ts +107 -0
- package/src/sandboxes/errors.ts +1 -1
- package/src/sandboxes/index.ts +15 -0
- package/src/sandboxes/sandbox.ts +38 -3
- package/src/shared/params/builders.ts +50 -0
- package/src/shared/params/types.ts +84 -0
- package/src/shared/params/validation.ts +114 -0
- package/src/storage/agents/in-memory.ts +25 -1
- package/src/storage/agents/index.ts +3 -0
- package/src/storage/agents/provider.ts +105 -0
- package/src/storage/agents/types.ts +54 -0
- package/src/storage/ai-cost/analytics.ts +59 -21
- package/src/storage/ai-cost/index.ts +1 -0
- package/src/storage/ai-cost/types.ts +19 -2
- package/src/storage/connector-connections/in-memory.ts +16 -18
- package/src/storage/connector-connections/provider/connections.ts +1 -15
- package/src/storage/connector-connections/provider/runs.ts +6 -0
- package/src/storage/connector-connections/provider/shared.ts +2 -3
- package/src/storage/connector-connections/provider.ts +6 -0
- package/src/storage/connector-connections/types.ts +5 -1
- package/src/storage/executions/provider.ts +24 -12
- package/src/storage/executions/types.ts +1 -0
- package/src/storage/executions/validation.ts +7 -3
- package/src/storage/index.ts +15 -1
- package/src/storage/objects/in-memory/query.ts +25 -11
- package/src/storage/objects/in-memory/read-scope.ts +9 -2
- package/src/storage/objects/in-memory/read-source.ts +5 -0
- package/src/storage/objects/in-memory/selected-reader.ts +5 -1
- package/src/storage/objects/in-memory/storage.ts +19 -1
- package/src/storage/objects/types.ts +2 -0
- package/src/storage/ontology/commits.ts +1 -0
- package/src/storage/ontology/in-memory/index.ts +20 -0
- package/src/storage/ontology/in-memory/materializations.ts +13 -0
- package/src/storage/ontology/in-memory/shared-state.ts +19 -3
- package/src/storage/ontology/in-memory/vector-indexing.ts +179 -0
- package/src/storage/ontology/in-memory/vectors.ts +73 -0
- package/src/storage/ontology/index.ts +14 -0
- package/src/storage/ontology/outbox.ts +1 -0
- package/src/storage/ontology/vector-indexing.ts +98 -0
- package/src/storage/ontology/vectors.ts +48 -0
- package/src/storage/operation-scope.ts +1 -0
- package/src/storage/types.ts +3 -0
- package/src/testing/agent-storage-contract.ts +246 -0
- package/src/testing/ai-cost-storage-contract.ts +134 -0
- package/src/testing/connector-connection-storage-contract.ts +11 -11
- package/src/testing/lake-storage-contract.ts +29 -0
- package/src/testing/object-query-contract.ts +41 -25
- package/src/testing/object-read-scope-contract.ts +1 -5
- package/src/testing/ontology-storage-contract.ts +8 -3
- package/src/testing/queues-contract.ts +31 -0
- package/src/workflows/failure.ts +10 -4
- package/src/workflows/validation.ts +2 -2
- package/dist/chunk-5hz0fnca.js.map +0 -12
- package/dist/chunk-5p1v802y.js.map +0 -44
- package/dist/chunk-7apz6hg4.js.map +0 -10
- package/dist/chunk-7bs40fe1.js.map +0 -12
- package/dist/chunk-860dwwy0.js.map +0 -14
- package/dist/chunk-93csa55g.js.map +0 -11
- package/dist/chunk-aa6z4a19.js.map +0 -12
- package/dist/chunk-ap0g1g74.js.map +0 -11
- package/dist/chunk-e0d1rzef.js.map +0 -15
- package/dist/chunk-f0rwz2vh.js.map +0 -11
- package/dist/chunk-f4w3yp4f.js.map +0 -12
- package/dist/chunk-g7knyczr.js.map +0 -14
- package/dist/chunk-mrp7k0pw.js.map +0 -10
- package/dist/chunk-ms2tmn1k.js.map +0 -17
- package/dist/chunk-nmbxcaqx.js.map +0 -19
- package/dist/chunk-nt99sxd6.js.map +0 -14
- package/dist/chunk-p6a4npdx.js.map +0 -58
- package/dist/chunk-qyeptdyv.js.map +0 -15
- package/dist/chunk-r7fj830t.js.map +0 -36
- package/dist/chunk-rb1xx120.js.map +0 -11
- package/dist/chunk-yv79ncbv.js.map +0 -10
- package/dist/chunk-z3y411fq.js +0 -99
- package/dist/chunk-z3y411fq.js.map +0 -11
- /package/dist/{chunk-17kfctj6.js.map → chunk-0mza4xb2.js.map} +0 -0
- /package/dist/{chunk-rtk71jzp.js.map → chunk-3bnt2wna.js.map} +0 -0
- /package/dist/{chunk-awbhdqyc.js.map → chunk-3ghw2t5q.js.map} +0 -0
- /package/dist/{chunk-b19g04jk.js.map → chunk-3h7ctayx.js.map} +0 -0
- /package/dist/{chunk-wjasrj67.js.map → chunk-3qpcrcj8.js.map} +0 -0
- /package/dist/{chunk-0y39rgsb.js.map → chunk-5tetw4hn.js.map} +0 -0
- /package/dist/{chunk-c5rkjrgp.js.map → chunk-7ytf06d3.js.map} +0 -0
- /package/dist/{chunk-358caqf5.js.map → chunk-bfjv1adk.js.map} +0 -0
- /package/dist/{chunk-b0ec55a1.js.map → chunk-bg2bs62d.js.map} +0 -0
- /package/dist/{chunk-g6cke204.js.map → chunk-f85hpqnm.js.map} +0 -0
- /package/dist/{chunk-vsj3mdfj.js.map → chunk-fc5zfxy1.js.map} +0 -0
- /package/dist/{chunk-1824gssz.js.map → chunk-gswwr35f.js.map} +0 -0
- /package/dist/{chunk-92vk7gta.js.map → chunk-gzt6v1ja.js.map} +0 -0
- /package/dist/{chunk-gqh45d2n.js.map → chunk-hkw8rykk.js.map} +0 -0
- /package/dist/{chunk-5c7ga8zz.js.map → chunk-jjwhy3rs.js.map} +0 -0
- /package/dist/{chunk-9qsh3p5y.js.map → chunk-rb143ggb.js.map} +0 -0
- /package/dist/{chunk-653vwrzr.js.map → chunk-rdghfsss.js.map} +0 -0
- /package/dist/{chunk-bn138h9w.js.map → chunk-t7dzd1tm.js.map} +0 -0
- /package/dist/{chunk-pr2h4bv4.js.map → chunk-tg4g4zh0.js.map} +0 -0
- /package/dist/{chunk-8vj0rjgs.js.map → chunk-wjffn5m4.js.map} +0 -0
- /package/dist/{chunk-agbbygvh.js.map → chunk-xn686q2e.js.map} +0 -0
- /package/dist/{chunk-v2vcg0w6.js.map → chunk-xtfryrfb.js.map} +0 -0
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { isPlainRecord } from "../json"
|
|
2
|
+
import type { OntologyRegistry } from "../ontology/registry"
|
|
3
|
+
import { assertValidSchema } from "../ontology/validation/definition"
|
|
4
|
+
import type { Sixb } from "../runtime/sixb"
|
|
5
|
+
import type { InferParams, ParamsConfig } from "../shared/params/types"
|
|
6
|
+
import { coerceParamsToTyped, normalizeParams } from "../shared/params/validation"
|
|
7
|
+
import type { SandboxSourceAuth } from "./auth"
|
|
8
|
+
import { SandboxError } from "./errors"
|
|
9
|
+
import type { SandboxNetworkPolicy } from "./sandbox"
|
|
10
|
+
|
|
11
|
+
/** Static recipes accept an empty parameter record, not arbitrary undeclared keys. */
|
|
12
|
+
export type InferSandboxParams<TParams extends ParamsConfig> = keyof TParams extends never
|
|
13
|
+
? Record<string, never>
|
|
14
|
+
: InferParams<TParams>
|
|
15
|
+
|
|
16
|
+
/** Initial project contents, independent from the provider's runtime image or saved state. */
|
|
17
|
+
export interface SandboxSource {
|
|
18
|
+
readonly type: "git"
|
|
19
|
+
readonly url: string
|
|
20
|
+
readonly revision?: string
|
|
21
|
+
readonly access?: "read" | "write"
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/** Host-side recipe. Environment values are guest-readable, never a Git credential channel. */
|
|
25
|
+
export interface SandboxEnvironment {
|
|
26
|
+
readonly source?: SandboxSource
|
|
27
|
+
readonly setup?: readonly string[]
|
|
28
|
+
readonly env?: Readonly<Record<string, string>>
|
|
29
|
+
readonly network?: SandboxNetworkPolicy
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
export interface SandboxResolveContext<TParams = Record<string, unknown>> {
|
|
33
|
+
readonly params: TParams
|
|
34
|
+
/** Bound to the current execution; a stored binding is not authorization. */
|
|
35
|
+
readonly sixb: Sixb
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// The recipe both declares and consumes this schema: keep it invariant instead of asking
|
|
39
|
+
// TypeScript to compare the recursive ontology inference through callback variance.
|
|
40
|
+
// Provider option interfaces must preserve this annotation when extending the config.
|
|
41
|
+
export interface SandboxConfig<in out TParams extends ParamsConfig = ParamsConfig>
|
|
42
|
+
extends SandboxEnvironment {
|
|
43
|
+
readonly auth?: SandboxSourceAuth
|
|
44
|
+
readonly params?: TParams
|
|
45
|
+
readonly resolve?: (
|
|
46
|
+
context: SandboxResolveContext<InferParams<NoInfer<TParams>>>
|
|
47
|
+
) => SandboxEnvironment | Promise<SandboxEnvironment>
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** Registered project recipe; only thread params cross the durable boundary. */
|
|
51
|
+
export interface SandboxDefinition {
|
|
52
|
+
readonly auth?: SandboxSourceAuth
|
|
53
|
+
readonly params: ParamsConfig
|
|
54
|
+
readonly resolve: (context: SandboxResolveContext) => Promise<SandboxEnvironment>
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function createSandboxDefinition<TParams extends ParamsConfig>(
|
|
58
|
+
config: SandboxConfig<TParams>,
|
|
59
|
+
ontology: OntologyRegistry
|
|
60
|
+
): SandboxDefinition {
|
|
61
|
+
const raw: unknown = config
|
|
62
|
+
if (
|
|
63
|
+
!isPlainRecord(raw) ||
|
|
64
|
+
(config.params !== undefined && !isPlainRecord(raw.params)) ||
|
|
65
|
+
(config.resolve !== undefined && typeof config.resolve !== "function")
|
|
66
|
+
) {
|
|
67
|
+
throw new SandboxError(
|
|
68
|
+
"[Sixb] Sandbox configuration requires a params object and a callable resolver when provided."
|
|
69
|
+
)
|
|
70
|
+
}
|
|
71
|
+
for (const key of Object.keys(config)) {
|
|
72
|
+
if (!["params", "resolve", "source", "setup", "env", "network", "auth"].includes(key)) {
|
|
73
|
+
throw new SandboxError("[Sixb] Unknown sandbox configuration field.")
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (config.auth !== undefined && typeof config.auth?.authorize !== "function") {
|
|
77
|
+
throw new SandboxError("[Sixb] sandboxes.auth requires an authorize function.")
|
|
78
|
+
}
|
|
79
|
+
if (config.params !== undefined && config.resolve === undefined) {
|
|
80
|
+
throw new SandboxError("[Sixb] Sandbox params require a resolve function.")
|
|
81
|
+
}
|
|
82
|
+
if (config.resolve !== undefined && (config.source !== undefined || config.setup !== undefined)) {
|
|
83
|
+
throw new SandboxError("[Sixb] Use either static source/setup or resolve, not both.")
|
|
84
|
+
}
|
|
85
|
+
const invalid = (path: string) =>
|
|
86
|
+
new SandboxError(`[Sixb] ${path} must be a valid parameter declaration; use param(schema).`)
|
|
87
|
+
for (const [id, value] of Object.entries(config.params ?? {})) {
|
|
88
|
+
const path = `sandboxes.params.${id}`
|
|
89
|
+
if (!id.trim() || !isPlainRecord(value)) throw invalid(path)
|
|
90
|
+
for (const key of Object.keys(value)) {
|
|
91
|
+
if (!["schema", "required", "nullable", "description", "semanticType"].includes(key)) {
|
|
92
|
+
throw invalid(path)
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (
|
|
96
|
+
(value.required !== undefined && typeof value.required !== "boolean") ||
|
|
97
|
+
(value.nullable !== undefined && typeof value.nullable !== "boolean") ||
|
|
98
|
+
(value.description !== undefined && typeof value.description !== "string") ||
|
|
99
|
+
(value.semanticType !== undefined && typeof value.semanticType !== "string")
|
|
100
|
+
)
|
|
101
|
+
throw invalid(path)
|
|
102
|
+
const schema: unknown = value.schema
|
|
103
|
+
if (isPlainRecord(schema) && schema.type === "objectRef") {
|
|
104
|
+
if (
|
|
105
|
+
typeof schema.objectTypeId !== "string" ||
|
|
106
|
+
!ontology.getObjectTypesById().has(schema.objectTypeId)
|
|
107
|
+
) {
|
|
108
|
+
throw invalid(path)
|
|
109
|
+
}
|
|
110
|
+
} else {
|
|
111
|
+
assertValidSchema(schema, `${path}.schema`, invalid)
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
const params = structuredClone(config.params ?? {}) as ParamsConfig
|
|
115
|
+
const environment = captureEnvironment({
|
|
116
|
+
...(config.source === undefined ? {} : { source: config.source }),
|
|
117
|
+
...(config.setup === undefined ? {} : { setup: config.setup }),
|
|
118
|
+
...(config.env === undefined ? {} : { env: config.env }),
|
|
119
|
+
...(config.network === undefined ? {} : { network: config.network }),
|
|
120
|
+
})
|
|
121
|
+
// Capture the function too: later mutation of application config must not change this host.
|
|
122
|
+
// Erase inference only after capturing its schema; every invocation validates and coerces below.
|
|
123
|
+
const resolve = config.resolve as SandboxConfig["resolve"]
|
|
124
|
+
const authorize = config.auth?.authorize.bind(config.auth)
|
|
125
|
+
deepFreeze(params)
|
|
126
|
+
return Object.freeze({
|
|
127
|
+
params,
|
|
128
|
+
...(authorize ? { auth: Object.freeze({ authorize }) } : {}),
|
|
129
|
+
resolve: async ({ params: input, sixb }: SandboxResolveContext) => {
|
|
130
|
+
const binding = normalizeParams(ontology.getValueTypesById(), params, input, {
|
|
131
|
+
kind: "sandbox",
|
|
132
|
+
id: "sandboxes",
|
|
133
|
+
path: "sandbox",
|
|
134
|
+
})
|
|
135
|
+
const typed = coerceParamsToTyped(params, binding, ontology.getValueTypesById())
|
|
136
|
+
if (!resolve) return structuredClone(environment)
|
|
137
|
+
const resolved = captureEnvironment(await resolve({ params: typed, sixb }))
|
|
138
|
+
return {
|
|
139
|
+
...structuredClone(environment),
|
|
140
|
+
...resolved,
|
|
141
|
+
env: { ...environment.env, ...resolved.env },
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
})
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** Capture declarative data only; never retain caller-owned objects or include values in errors. */
|
|
148
|
+
export function captureEnvironment(value: unknown): SandboxEnvironment {
|
|
149
|
+
if (
|
|
150
|
+
!isPlainRecord(value) ||
|
|
151
|
+
Object.keys(value).some((key) => !["source", "setup", "env", "network"].includes(key))
|
|
152
|
+
) {
|
|
153
|
+
return fail("environment")
|
|
154
|
+
}
|
|
155
|
+
if (value.source !== undefined) validateSource(value.source)
|
|
156
|
+
if (value.setup !== undefined) validateSetup(value.setup)
|
|
157
|
+
if (value.env !== undefined) validateEnv(value.env)
|
|
158
|
+
if (value.network !== undefined) validateNetwork(value.network)
|
|
159
|
+
// Every field and discriminant has been checked above; return only an isolated snapshot.
|
|
160
|
+
return structuredClone(value) as SandboxEnvironment
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
function fail(field: string): never {
|
|
164
|
+
throw new SandboxError(`[Sixb] Invalid sandbox ${field}.`)
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function validateSource(source: unknown): void {
|
|
168
|
+
if (
|
|
169
|
+
!isPlainRecord(source) ||
|
|
170
|
+
source.type !== "git" ||
|
|
171
|
+
typeof source.url !== "string" ||
|
|
172
|
+
Object.keys(source).some((key) => !["type", "url", "revision", "access"].includes(key))
|
|
173
|
+
) {
|
|
174
|
+
fail("source")
|
|
175
|
+
}
|
|
176
|
+
const url = parseUrl(source.url, "source URL")
|
|
177
|
+
if (url.protocol !== "https:" || url.username || url.password || url.search || url.hash) {
|
|
178
|
+
fail("source URL: expected credential-free HTTPS")
|
|
179
|
+
}
|
|
180
|
+
if (
|
|
181
|
+
source.revision !== undefined &&
|
|
182
|
+
(typeof source.revision !== "string" ||
|
|
183
|
+
!source.revision.trim() ||
|
|
184
|
+
source.revision.startsWith("-") ||
|
|
185
|
+
/[\x00-\x1f]/.test(source.revision))
|
|
186
|
+
) {
|
|
187
|
+
fail("source revision")
|
|
188
|
+
}
|
|
189
|
+
if (source.access !== undefined && source.access !== "read" && source.access !== "write") {
|
|
190
|
+
fail("source access")
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
function validateSetup(setup: unknown): void {
|
|
195
|
+
if (
|
|
196
|
+
!Array.isArray(setup) ||
|
|
197
|
+
setup.some(
|
|
198
|
+
(command) => typeof command !== "string" || !command.trim() || command.includes("\0")
|
|
199
|
+
)
|
|
200
|
+
) {
|
|
201
|
+
fail("setup")
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
function validateEnv(env: unknown): void {
|
|
206
|
+
if (
|
|
207
|
+
!isPlainRecord(env) ||
|
|
208
|
+
Object.entries(env).some(
|
|
209
|
+
([key, entry]) =>
|
|
210
|
+
!key || /[=\0]/.test(key) || typeof entry !== "string" || entry.includes("\0")
|
|
211
|
+
)
|
|
212
|
+
) {
|
|
213
|
+
fail("env")
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
function validateNetwork(network: unknown): void {
|
|
218
|
+
if (!isPlainRecord(network)) fail("network")
|
|
219
|
+
if (network.mode === "restricted") {
|
|
220
|
+
if (
|
|
221
|
+
Object.keys(network).some((key) => key !== "mode" && key !== "allow") ||
|
|
222
|
+
!Array.isArray(network.allow)
|
|
223
|
+
) {
|
|
224
|
+
fail("network")
|
|
225
|
+
}
|
|
226
|
+
for (const target of network.allow) validateNetworkTarget(target)
|
|
227
|
+
return
|
|
228
|
+
}
|
|
229
|
+
if (
|
|
230
|
+
(network.mode !== "none" && network.mode !== "all") ||
|
|
231
|
+
Object.keys(network).some((key) => key !== "mode")
|
|
232
|
+
) {
|
|
233
|
+
fail("network")
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
function validateNetworkTarget(target: unknown): void {
|
|
238
|
+
if (
|
|
239
|
+
!isPlainRecord(target) ||
|
|
240
|
+
typeof target.name !== "string" ||
|
|
241
|
+
!target.name.trim() ||
|
|
242
|
+
typeof target.origin !== "string" ||
|
|
243
|
+
Object.keys(target).some((key) => key !== "name" && key !== "origin")
|
|
244
|
+
) {
|
|
245
|
+
fail("network target")
|
|
246
|
+
}
|
|
247
|
+
const url = parseUrl(target.origin, "network origin")
|
|
248
|
+
if (!["http:", "https:"].includes(url.protocol) || url.origin !== target.origin) {
|
|
249
|
+
fail("network origin")
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
function parseUrl(value: string, field: string): URL {
|
|
254
|
+
try {
|
|
255
|
+
return new URL(value)
|
|
256
|
+
} catch {
|
|
257
|
+
return fail(field)
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function deepFreeze(value: object, seen = new Set<object>()): void {
|
|
262
|
+
if (seen.has(value)) return
|
|
263
|
+
seen.add(value)
|
|
264
|
+
for (const child of Object.values(value)) {
|
|
265
|
+
if (child !== null && typeof child === "object") deepFreeze(child, seen)
|
|
266
|
+
}
|
|
267
|
+
Object.freeze(value)
|
|
268
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { posix } from "node:path"
|
|
2
|
+
import type { ParamsConfig } from "../shared/params/types"
|
|
3
|
+
import type { SandboxConfig } from "./configuration"
|
|
4
|
+
import { captureEnvironment, type SandboxEnvironment } from "./configuration"
|
|
5
|
+
import { SandboxError } from "./errors"
|
|
6
|
+
import type { CreateSandboxOptions, Sandbox } from "./sandbox"
|
|
7
|
+
|
|
8
|
+
/** Select and validate before provisioning. Only the execution runtime may resolve a recipe. */
|
|
9
|
+
export function sandboxCreationEnvironment<TParams extends ParamsConfig>(
|
|
10
|
+
configuration: SandboxConfig<TParams>,
|
|
11
|
+
options: CreateSandboxOptions
|
|
12
|
+
): Pick<SandboxEnvironment, "source" | "setup"> {
|
|
13
|
+
if (options.environment === undefined && configuration.resolve !== undefined) {
|
|
14
|
+
throw new SandboxError(
|
|
15
|
+
"[Sixb] Dynamic sandbox configuration requires an execution-resolved environment."
|
|
16
|
+
)
|
|
17
|
+
}
|
|
18
|
+
const environment = captureEnvironment(
|
|
19
|
+
options.environment !== undefined
|
|
20
|
+
? options.environment
|
|
21
|
+
: {
|
|
22
|
+
...(configuration.source === undefined ? {} : { source: configuration.source }),
|
|
23
|
+
...(configuration.setup === undefined ? {} : { setup: configuration.setup }),
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
if (environment.env !== undefined || environment.network !== undefined) {
|
|
27
|
+
throw new SandboxError(
|
|
28
|
+
"[Sixb] Pass env and network as sandbox session options, not environment."
|
|
29
|
+
)
|
|
30
|
+
}
|
|
31
|
+
if (environment.source) {
|
|
32
|
+
if (
|
|
33
|
+
(configuration.auth !== undefined || environment.source.access === "write") &&
|
|
34
|
+
!options.requestCredentials?.length
|
|
35
|
+
) {
|
|
36
|
+
throw new SandboxError(
|
|
37
|
+
"[Sixb] Sandbox source authentication requires execution-prepared request credentials."
|
|
38
|
+
)
|
|
39
|
+
}
|
|
40
|
+
const network = options.network ?? configuration.network ?? { mode: "none" }
|
|
41
|
+
const origin = new URL(environment.source.url).origin
|
|
42
|
+
if (
|
|
43
|
+
network.mode === "none" ||
|
|
44
|
+
(network.mode === "restricted" && !network.allow.some((target) => target.origin === origin))
|
|
45
|
+
) {
|
|
46
|
+
throw new SandboxError("[Sixb] Sandbox network policy denies the source origin.")
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
options.signal?.throwIfAborted()
|
|
50
|
+
return environment
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/** Select the same project directory on creation and resume without touching saved files. */
|
|
54
|
+
export function sandboxProjectDirectory(session: Sandbox, hasSource: boolean): Sandbox {
|
|
55
|
+
if (!hasSource) return session
|
|
56
|
+
const workingDirectory = posix.join(session.workingDirectory, "repository")
|
|
57
|
+
return {
|
|
58
|
+
id: session.id,
|
|
59
|
+
provider: session.provider,
|
|
60
|
+
get status() {
|
|
61
|
+
return session.status
|
|
62
|
+
},
|
|
63
|
+
workingDirectory,
|
|
64
|
+
...(session.setRequestCredentials
|
|
65
|
+
? { setRequestCredentials: session.setRequestCredentials.bind(session) }
|
|
66
|
+
: {}),
|
|
67
|
+
runCommand: (command, args, options) =>
|
|
68
|
+
session.runCommand(command, args, { ...options, cwd: options?.cwd ?? workingDirectory }),
|
|
69
|
+
writeFiles: (files) =>
|
|
70
|
+
session.writeFiles(
|
|
71
|
+
files.map((file) => ({
|
|
72
|
+
...file,
|
|
73
|
+
path: posix.isAbsolute(file.path) ? file.path : posix.join(workingDirectory, file.path),
|
|
74
|
+
}))
|
|
75
|
+
),
|
|
76
|
+
stop: () => session.stop(),
|
|
77
|
+
destroy: () => session.destroy(),
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Provider-side initialization, after the session network/credentials have been applied.
|
|
82
|
+
* Call only on fresh creation. The caller owns cleanup if any command fails.
|
|
83
|
+
*/
|
|
84
|
+
export async function initializeSandboxEnvironment(
|
|
85
|
+
session: Sandbox,
|
|
86
|
+
environment: Pick<SandboxEnvironment, "source" | "setup">,
|
|
87
|
+
signal?: AbortSignal
|
|
88
|
+
): Promise<Sandbox> {
|
|
89
|
+
environment = captureEnvironment(environment)
|
|
90
|
+
const run = async (sandbox: Sandbox, command: string, args: readonly string[]) => {
|
|
91
|
+
signal?.throwIfAborted()
|
|
92
|
+
const result = await sandbox.runCommand(command, args, { timeout: 120_000, signal })
|
|
93
|
+
if (result.exitCode !== 0 || result.timedOut) {
|
|
94
|
+
throw new SandboxError("[Sixb] Sandbox environment initialization failed.")
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
signal?.throwIfAborted()
|
|
98
|
+
const sandbox = sandboxProjectDirectory(session, environment.source !== undefined)
|
|
99
|
+
if (environment.source) {
|
|
100
|
+
await run(session, "git", ["clone", "--", environment.source.url, "repository"])
|
|
101
|
+
if (environment.source.revision) {
|
|
102
|
+
await run(sandbox, "git", ["checkout", environment.source.revision, "--"])
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
for (const command of environment.setup ?? []) await run(sandbox, "bash", ["-lc", command])
|
|
106
|
+
return sandbox
|
|
107
|
+
}
|
package/src/sandboxes/errors.ts
CHANGED
|
@@ -6,7 +6,7 @@ export class SandboxError extends Error {
|
|
|
6
6
|
readonly name: string = "SandboxError"
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
/**
|
|
9
|
+
/** Confirmed missing/expired state. Never use for transport, authorization or session setup errors. */
|
|
10
10
|
export class SandboxStateUnavailableError extends SandboxError {
|
|
11
11
|
override readonly name = "SandboxStateUnavailableError"
|
|
12
12
|
}
|
package/src/sandboxes/index.ts
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
export type { InferParams, ParamsConfig } from "../shared/params/types"
|
|
2
|
+
export type { SandboxSourceAuth, SandboxSourceCredentials } from "./auth"
|
|
3
|
+
export { sandboxConfig } from "./config"
|
|
4
|
+
export type {
|
|
5
|
+
SandboxConfig,
|
|
6
|
+
SandboxEnvironment,
|
|
7
|
+
SandboxResolveContext,
|
|
8
|
+
SandboxSource,
|
|
9
|
+
} from "./configuration"
|
|
10
|
+
export {
|
|
11
|
+
initializeSandboxEnvironment,
|
|
12
|
+
sandboxCreationEnvironment,
|
|
13
|
+
sandboxProjectDirectory,
|
|
14
|
+
} from "./environment"
|
|
1
15
|
export {
|
|
2
16
|
SandboxError,
|
|
3
17
|
SandboxIsolationUnavailableError,
|
|
@@ -17,6 +31,7 @@ export type {
|
|
|
17
31
|
SandboxFileRecord,
|
|
18
32
|
SandboxNetworkPolicy,
|
|
19
33
|
SandboxNetworkTarget,
|
|
34
|
+
SandboxRequestCredential,
|
|
20
35
|
SandboxSessionOptions,
|
|
21
36
|
SandboxStatus,
|
|
22
37
|
} from "./sandbox"
|
package/src/sandboxes/sandbox.ts
CHANGED
|
@@ -6,6 +6,9 @@
|
|
|
6
6
|
* SandboxFactory.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import type { ParamsConfig } from "../shared/params/types"
|
|
10
|
+
import type { SandboxConfig, SandboxEnvironment } from "./configuration"
|
|
11
|
+
|
|
9
12
|
export type SandboxStatus = "running" | "stopped" | "failed"
|
|
10
13
|
|
|
11
14
|
/**
|
|
@@ -72,8 +75,20 @@ export interface SandboxNetworkTarget {
|
|
|
72
75
|
readonly origin: string
|
|
73
76
|
}
|
|
74
77
|
|
|
78
|
+
/** Host-only credentials injected outside the guest into one exact HTTPS request target.
|
|
79
|
+
* This selects authenticated requests, not the sandbox's general egress allowlist.
|
|
80
|
+
*/
|
|
81
|
+
export interface SandboxRequestCredential {
|
|
82
|
+
readonly origin: string
|
|
83
|
+
readonly path: string
|
|
84
|
+
readonly method: "GET" | "POST"
|
|
85
|
+
readonly headers: { readonly Authorization: string }
|
|
86
|
+
}
|
|
87
|
+
|
|
75
88
|
/** Current execution defaults, supplied on both creation and resume, never recovered from files. */
|
|
76
89
|
export interface SandboxSessionOptions {
|
|
90
|
+
/** Apply outside the guest before source/setup or resumed commands. Reject if unsupported. */
|
|
91
|
+
readonly requestCredentials?: readonly SandboxRequestCredential[]
|
|
77
92
|
readonly workingDirectory?: string
|
|
78
93
|
readonly env?: Readonly<Record<string, string>>
|
|
79
94
|
readonly timeout?: number
|
|
@@ -82,6 +97,10 @@ export interface SandboxSessionOptions {
|
|
|
82
97
|
|
|
83
98
|
/** Options accepted by every SandboxFactory.create. */
|
|
84
99
|
export interface CreateSandboxOptions extends SandboxSessionOptions {
|
|
100
|
+
/** Cancel initialization; a provider request already in flight may still finish. */
|
|
101
|
+
readonly signal?: AbortSignal
|
|
102
|
+
/** Replaces static source/setup, including {} to skip both. Required for dynamic recipes. */
|
|
103
|
+
readonly environment?: Pick<SandboxEnvironment, "source" | "setup">
|
|
85
104
|
/** Create new named state; reject an existing name or unsupported persistence before provisioning. */
|
|
86
105
|
readonly persistence?: { readonly name: string }
|
|
87
106
|
}
|
|
@@ -98,6 +117,14 @@ export interface Sandbox {
|
|
|
98
117
|
readonly status: SandboxStatus
|
|
99
118
|
readonly workingDirectory: string
|
|
100
119
|
|
|
120
|
+
/** Optional secure injection capability. Replaces all credentials on this session only.
|
|
121
|
+
* An empty list removes injection. Secrets must never enter guest files, env or snapshots.
|
|
122
|
+
* Must not resume a stopped session or change defaults inherited by future sessions.
|
|
123
|
+
*/
|
|
124
|
+
readonly setRequestCredentials?: (
|
|
125
|
+
credentials: readonly SandboxRequestCredential[]
|
|
126
|
+
) => Promise<void>
|
|
127
|
+
|
|
101
128
|
runCommand(
|
|
102
129
|
command: string,
|
|
103
130
|
args?: readonly string[],
|
|
@@ -135,18 +162,26 @@ export interface Sandbox {
|
|
|
135
162
|
* Callers own namespacing and must serialize the entire create/resume/use/stop/destroy lifecycle.
|
|
136
163
|
* Credentials and current authority must be supplied again, never inferred from saved files.
|
|
137
164
|
*/
|
|
138
|
-
export interface SandboxFactory {
|
|
165
|
+
export interface SandboxFactory<in out TParams extends ParamsConfig = ParamsConfig> {
|
|
166
|
+
/** Supports initial and renewable host-only credentials on named persistent sessions. */
|
|
167
|
+
readonly supportsRequestCredentials?: boolean
|
|
168
|
+
/** Common host-side environment recipe. Never a discovered Agent definition. */
|
|
169
|
+
readonly configuration?: SandboxConfig<TParams>
|
|
139
170
|
/** Create an ephemeral sandbox unless persistence is requested. Existing names must fail,
|
|
140
|
-
* never attach or overwrite.
|
|
171
|
+
* never attach or overwrite. Apply the selected source/setup once, after session settings.
|
|
172
|
+
* Dynamic resolution and source authorization belong to the caller, never the provider.
|
|
173
|
+
* Unsupported providers must reject persistence before provisioning.
|
|
141
174
|
* A persistent handle targets one session; operations must not automatically resume another VM.
|
|
142
175
|
*/
|
|
143
176
|
create(options?: CreateSandboxOptions): Promise<Sandbox>
|
|
144
177
|
/**
|
|
145
178
|
* Present only when named persistent creation and resume are supported.
|
|
146
179
|
* Resume an existing, stopped sandbox. Missing/expired state throws SandboxStateUnavailableError;
|
|
147
|
-
* it must never create an empty replacement.
|
|
180
|
+
* it must never create an empty replacement. Transport/auth/setup errors must not be classified
|
|
181
|
+
* as missing state. An already running sandbox must be rejected.
|
|
148
182
|
* Returns a handle bound to the resumed session, with no automatic resume on use.
|
|
149
183
|
* Runtime options must be provided again; no creation settings or persistence option are accepted.
|
|
184
|
+
* Never clone or replay setup on resume.
|
|
150
185
|
*/
|
|
151
186
|
resume?(name: string, options?: ResumeSandboxOptions): Promise<Sandbox>
|
|
152
187
|
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import type { SchemaOrRef } from "../../ontology"
|
|
2
|
+
import type { QuantitativeTypeId } from "../../ontology/units"
|
|
3
|
+
import type { ParamConfig } from "./types"
|
|
4
|
+
|
|
5
|
+
export interface ParamOptions {
|
|
6
|
+
readonly description?: string
|
|
7
|
+
readonly semanticType?: QuantitativeTypeId
|
|
8
|
+
readonly nullable?: boolean
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
type FieldFromOptions<TOptions, TKey extends string, TFallback> =
|
|
12
|
+
TOptions extends Record<TKey, infer TValue>
|
|
13
|
+
? { [K in TKey]: TValue }
|
|
14
|
+
: { [K in TKey]?: TFallback }
|
|
15
|
+
|
|
16
|
+
type ParamResult<
|
|
17
|
+
TSchema extends SchemaOrRef,
|
|
18
|
+
TRequired extends boolean,
|
|
19
|
+
TOptions extends ParamOptions | undefined,
|
|
20
|
+
> = {
|
|
21
|
+
schema: TSchema
|
|
22
|
+
required: TRequired
|
|
23
|
+
} & FieldFromOptions<TOptions, "description", string> &
|
|
24
|
+
FieldFromOptions<TOptions, "semanticType", QuantitativeTypeId> &
|
|
25
|
+
FieldFromOptions<TOptions, "nullable", boolean>
|
|
26
|
+
|
|
27
|
+
/** Declare one required parameter. */
|
|
28
|
+
export function param<
|
|
29
|
+
const TSchema extends SchemaOrRef,
|
|
30
|
+
const TOptions extends ParamOptions | undefined = undefined,
|
|
31
|
+
>(schema: TSchema, options?: TOptions): ParamResult<TSchema, true, TOptions> {
|
|
32
|
+
const result: ParamConfig & { required: true } = {
|
|
33
|
+
schema,
|
|
34
|
+
required: true,
|
|
35
|
+
...(options?.description !== undefined ? { description: options.description } : {}),
|
|
36
|
+
...(options?.semanticType !== undefined ? { semanticType: options.semanticType } : {}),
|
|
37
|
+
...(options?.nullable !== undefined ? { nullable: options.nullable } : {}),
|
|
38
|
+
}
|
|
39
|
+
return result as ParamResult<TSchema, true, TOptions>
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/** Derive an optional parameter without changing its schema or metadata. */
|
|
43
|
+
export function optional<const TParam extends ParamConfig>(
|
|
44
|
+
paramConfig: TParam
|
|
45
|
+
): Omit<TParam, "required"> & { readonly required: false } {
|
|
46
|
+
return {
|
|
47
|
+
...paramConfig,
|
|
48
|
+
required: false,
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
DecimalValue,
|
|
3
|
+
InferSchemaOrRef,
|
|
4
|
+
ObjectRef,
|
|
5
|
+
ObjectRefSchema,
|
|
6
|
+
SchemaOrRef,
|
|
7
|
+
ValueType,
|
|
8
|
+
} from "../../ontology"
|
|
9
|
+
import type { QuantitativeTypeId } from "../../ontology/units"
|
|
10
|
+
|
|
11
|
+
type Simplify<T> = { [K in keyof T]: T[K] } & {}
|
|
12
|
+
|
|
13
|
+
/** One declarative parameter accepted by a Sixb definition. */
|
|
14
|
+
export interface ParamConfig {
|
|
15
|
+
readonly schema: SchemaOrRef
|
|
16
|
+
readonly required?: boolean
|
|
17
|
+
readonly nullable?: boolean
|
|
18
|
+
readonly description?: string
|
|
19
|
+
readonly semanticType?: QuantitativeTypeId
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/** Parameter shape shared by definitions that accept validated invocation-time input. */
|
|
23
|
+
export type ParamsConfig = Record<string, ParamConfig>
|
|
24
|
+
|
|
25
|
+
type RequiredParamKeys<TParams extends ParamsConfig> = {
|
|
26
|
+
[K in keyof TParams]-?: TParams[K]["required"] extends true ? K : never
|
|
27
|
+
}[keyof TParams]
|
|
28
|
+
|
|
29
|
+
type OptionalParamKeys<TParams extends ParamsConfig> = Exclude<
|
|
30
|
+
keyof TParams,
|
|
31
|
+
RequiredParamKeys<TParams>
|
|
32
|
+
>
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Validated params normalize `date` and `timestamp` values back to `Date` for typed runtime
|
|
36
|
+
* consumers. The wider ontology inference keeps storage-facing values permissive.
|
|
37
|
+
*/
|
|
38
|
+
export type ParamPrimitiveSchemaValues = {
|
|
39
|
+
string: string
|
|
40
|
+
uuid: string
|
|
41
|
+
boolean: boolean
|
|
42
|
+
integer: number
|
|
43
|
+
double: number
|
|
44
|
+
decimal: DecimalValue
|
|
45
|
+
date: Date
|
|
46
|
+
timestamp: Date
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
type InferStructuredParamValue<
|
|
50
|
+
TSchema extends SchemaOrRef,
|
|
51
|
+
TValueTypes extends readonly ValueType[],
|
|
52
|
+
> = TSchema extends { type: "enum"; values: readonly (infer TValue)[] }
|
|
53
|
+
? TValue
|
|
54
|
+
: TSchema extends ObjectRefSchema<infer TObjectTypeId>
|
|
55
|
+
? ObjectRef<TObjectTypeId>
|
|
56
|
+
: InferSchemaOrRef<TSchema, TValueTypes>
|
|
57
|
+
|
|
58
|
+
type InferParamSchemaValue<
|
|
59
|
+
TSchema extends SchemaOrRef,
|
|
60
|
+
TValueTypes extends readonly ValueType[] = [],
|
|
61
|
+
> = TSchema extends keyof ParamPrimitiveSchemaValues
|
|
62
|
+
? ParamPrimitiveSchemaValues[TSchema]
|
|
63
|
+
: InferStructuredParamValue<TSchema, TValueTypes>
|
|
64
|
+
|
|
65
|
+
type InferParamValue<
|
|
66
|
+
TParam extends ParamConfig,
|
|
67
|
+
TValueTypes extends readonly ValueType[] = [],
|
|
68
|
+
> = TParam["nullable"] extends true
|
|
69
|
+
? InferParamSchemaValue<TParam["schema"], TValueTypes> | null
|
|
70
|
+
: InferParamSchemaValue<TParam["schema"], TValueTypes>
|
|
71
|
+
|
|
72
|
+
/** Infer the validated runtime input represented by a parameter config. */
|
|
73
|
+
export type InferParams<
|
|
74
|
+
TParams extends ParamsConfig,
|
|
75
|
+
TValueTypes extends readonly ValueType[] = [],
|
|
76
|
+
> = string extends keyof TParams
|
|
77
|
+
? Record<string, unknown>
|
|
78
|
+
: Simplify<
|
|
79
|
+
{
|
|
80
|
+
[K in RequiredParamKeys<TParams>]: InferParamValue<TParams[K], TValueTypes>
|
|
81
|
+
} & {
|
|
82
|
+
[K in OptionalParamKeys<TParams>]?: InferParamValue<TParams[K], TValueTypes>
|
|
83
|
+
}
|
|
84
|
+
>
|