@sixb/core 0.1.21 → 0.1.22
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/commit-edits.d.ts +3 -1
- package/dist/actions/commit-edits.d.ts.map +1 -1
- package/dist/actions/execution.d.ts.map +1 -1
- package/dist/actions/index.js +63 -59
- package/dist/actions/index.js.map +1 -1
- package/dist/actions/read-facade.d.ts +9 -1
- package/dist/actions/read-facade.d.ts.map +1 -1
- package/dist/actions/request.d.ts +15 -1
- package/dist/actions/request.d.ts.map +1 -1
- package/dist/actions/run/context.d.ts +1 -0
- package/dist/actions/run/context.d.ts.map +1 -1
- package/dist/actions/run/execute.d.ts +2 -3
- package/dist/actions/run/execute.d.ts.map +1 -1
- package/dist/actions/run/executor.d.ts +3 -0
- package/dist/actions/run/executor.d.ts.map +1 -1
- package/dist/actions/run/normalize.d.ts +2 -1
- package/dist/actions/run/normalize.d.ts.map +1 -1
- package/dist/actions/run/signals.d.ts +1 -3
- package/dist/actions/run/signals.d.ts.map +1 -1
- package/dist/actions/run/types.d.ts +16 -1
- package/dist/actions/run/types.d.ts.map +1 -1
- package/dist/actions/run-authorization.d.ts +14 -0
- package/dist/actions/run-authorization.d.ts.map +1 -1
- package/dist/actions/types/context.d.ts +17 -1
- package/dist/actions/types/context.d.ts.map +1 -1
- package/dist/actions/validators.d.ts.map +1 -1
- package/dist/activity/timeline.d.ts +8 -1
- package/dist/activity/timeline.d.ts.map +1 -1
- package/dist/agents/accounting.d.ts +15 -0
- package/dist/agents/accounting.d.ts.map +1 -0
- package/dist/agents/adapters.d.ts.map +1 -1
- package/dist/agents/agent-mail.d.ts +9 -0
- package/dist/agents/agent-mail.d.ts.map +1 -0
- package/dist/agents/api-gateway.d.ts +5 -0
- package/dist/agents/api-gateway.d.ts.map +1 -1
- package/dist/agents/approval-continuation.d.ts +23 -0
- package/dist/agents/approval-continuation.d.ts.map +1 -0
- package/dist/agents/approval-executor.d.ts +56 -0
- package/dist/agents/approval-executor.d.ts.map +1 -0
- package/dist/agents/approval-outcome.d.ts +8 -0
- package/dist/agents/approval-outcome.d.ts.map +1 -0
- package/dist/agents/approvals.d.ts +210 -0
- package/dist/agents/approvals.d.ts.map +1 -0
- package/dist/agents/authority.d.ts +10 -0
- package/dist/agents/authority.d.ts.map +1 -1
- package/dist/agents/builders.d.ts.map +1 -1
- package/dist/agents/cancel.d.ts +23 -0
- package/dist/agents/cancel.d.ts.map +1 -0
- package/dist/agents/child-question.d.ts +18 -0
- package/dist/agents/child-question.d.ts.map +1 -0
- package/dist/agents/children.d.ts +99 -0
- package/dist/agents/children.d.ts.map +1 -0
- package/dist/agents/context/index.js +1 -1
- package/dist/agents/context-compaction.d.ts.map +1 -1
- package/dist/agents/errors.d.ts +13 -1
- package/dist/agents/errors.d.ts.map +1 -1
- package/dist/agents/execution.d.ts +180 -14
- package/dist/agents/execution.d.ts.map +1 -1
- package/dist/agents/fork.d.ts +16 -0
- package/dist/agents/fork.d.ts.map +1 -0
- package/dist/agents/ids.d.ts +7 -0
- package/dist/agents/ids.d.ts.map +1 -1
- package/dist/agents/index.d.ts +19 -8
- package/dist/agents/index.d.ts.map +1 -1
- package/dist/agents/index.js +159 -86
- package/dist/agents/index.js.map +1 -1
- package/dist/agents/memory-execution.d.ts +57 -0
- package/dist/agents/memory-execution.d.ts.map +1 -0
- package/dist/agents/memory.d.ts +49 -0
- package/dist/agents/memory.d.ts.map +1 -0
- package/dist/agents/message.d.ts +50 -1
- package/dist/agents/message.d.ts.map +1 -1
- package/dist/agents/model-loop.d.ts +19 -0
- package/dist/agents/model-loop.d.ts.map +1 -1
- package/dist/agents/model-routing.d.ts +19 -0
- package/dist/agents/model-routing.d.ts.map +1 -0
- package/dist/agents/participants.d.ts +18 -0
- package/dist/agents/participants.d.ts.map +1 -0
- package/dist/agents/reference.d.ts.map +1 -1
- package/dist/agents/request.d.ts +36 -2
- package/dist/agents/request.d.ts.map +1 -1
- package/dist/agents/run-scope.d.ts +51 -0
- package/dist/agents/run-scope.d.ts.map +1 -0
- package/dist/agents/streams/index.d.ts +3 -2
- package/dist/agents/streams/index.d.ts.map +1 -1
- package/dist/agents/streams/index.js +7 -3
- package/dist/agents/streams/index.js.map +1 -1
- package/dist/agents/streams/internal.d.ts +1 -1
- package/dist/agents/streams/internal.d.ts.map +1 -1
- package/dist/agents/streams/internal.js +5 -3
- package/dist/agents/streams/internal.js.map +1 -1
- package/dist/agents/streams/protocol.d.ts +122 -3
- package/dist/agents/streams/protocol.d.ts.map +1 -1
- package/dist/agents/subagent-runs.d.ts +12 -0
- package/dist/agents/subagent-runs.d.ts.map +1 -0
- package/dist/agents/thread-access.d.ts +53 -0
- package/dist/agents/thread-access.d.ts.map +1 -0
- package/dist/agents/tool-definition.d.ts +5 -4
- package/dist/agents/tool-definition.d.ts.map +1 -1
- package/dist/agents/types.d.ts +23 -4
- package/dist/agents/types.d.ts.map +1 -1
- package/dist/agents/validation.d.ts +1 -1
- package/dist/agents/validation.d.ts.map +1 -1
- package/dist/artifacts/access.d.ts +52 -0
- package/dist/artifacts/access.d.ts.map +1 -0
- package/dist/artifacts/canvas.d.ts +92 -0
- package/dist/artifacts/canvas.d.ts.map +1 -0
- package/dist/artifacts/csv.d.ts +5 -0
- package/dist/artifacts/csv.d.ts.map +1 -1
- package/dist/artifacts/errors.d.ts +7 -2
- package/dist/artifacts/errors.d.ts.map +1 -1
- package/dist/artifacts/execution.d.ts +102 -7
- package/dist/artifacts/execution.d.ts.map +1 -1
- package/dist/artifacts/formula/check.d.ts +24 -0
- package/dist/artifacts/formula/check.d.ts.map +1 -0
- package/dist/artifacts/formula/evaluate.d.ts +32 -0
- package/dist/artifacts/formula/evaluate.d.ts.map +1 -0
- package/dist/artifacts/formula/index.d.ts +38 -0
- package/dist/artifacts/formula/index.d.ts.map +1 -0
- package/dist/artifacts/formula/parser.d.ts +67 -0
- package/dist/artifacts/formula/parser.d.ts.map +1 -0
- package/dist/artifacts/frames/assets.d.ts +11 -9
- package/dist/artifacts/frames/assets.d.ts.map +1 -1
- package/dist/artifacts/frames/entries.d.ts +19 -0
- package/dist/artifacts/frames/entries.d.ts.map +1 -0
- package/dist/artifacts/frames/grants.d.ts +6 -6
- package/dist/artifacts/frames/grants.d.ts.map +1 -1
- package/dist/artifacts/frames/index.d.ts +4 -2
- package/dist/artifacts/frames/index.d.ts.map +1 -1
- package/dist/artifacts/frames/index.js +444 -51
- package/dist/artifacts/frames/index.js.map +10 -8
- package/dist/artifacts/frames/kit.d.ts +10 -5
- package/dist/artifacts/frames/kit.d.ts.map +1 -1
- package/dist/artifacts/frames/probe.d.ts +16 -12
- package/dist/artifacts/frames/probe.d.ts.map +1 -1
- package/dist/artifacts/frames/protocol.d.ts +79 -10
- package/dist/artifacts/frames/protocol.d.ts.map +1 -1
- package/dist/artifacts/frames/runtime.d.ts +27 -9
- package/dist/artifacts/frames/runtime.d.ts.map +1 -1
- package/dist/artifacts/index.d.ts +11 -5
- package/dist/artifacts/index.d.ts.map +1 -1
- package/dist/artifacts/index.js +128 -6
- package/dist/artifacts/index.js.map +3 -3
- package/dist/artifacts/kinds.d.ts +1 -1
- package/dist/artifacts/kinds.d.ts.map +1 -1
- package/dist/artifacts/limits.d.ts +30 -0
- package/dist/artifacts/limits.d.ts.map +1 -1
- package/dist/artifacts/live-sheet.d.ts +65 -0
- package/dist/artifacts/live-sheet.d.ts.map +1 -0
- package/dist/artifacts/outline.d.ts +27 -1
- package/dist/artifacts/outline.d.ts.map +1 -1
- package/dist/artifacts/publish/index.d.ts +2 -0
- package/dist/artifacts/publish/index.d.ts.map +1 -1
- package/dist/artifacts/publish/index.js +59 -19
- package/dist/artifacts/publish/index.js.map +1 -1
- package/dist/artifacts/publish/publish.d.ts +43 -11
- package/dist/artifacts/publish/publish.d.ts.map +1 -1
- package/dist/artifacts/publish/queries.d.ts +33 -0
- package/dist/artifacts/publish/queries.d.ts.map +1 -0
- package/dist/artifacts/publish/references.d.ts +6 -3
- package/dist/artifacts/publish/references.d.ts.map +1 -1
- package/dist/artifacts/publish/validate/canvas.d.ts +18 -0
- package/dist/artifacts/publish/validate/canvas.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/html.d.ts +20 -0
- package/dist/artifacts/publish/validate/html.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/page.d.ts +15 -0
- package/dist/artifacts/publish/validate/page.d.ts.map +1 -0
- package/dist/artifacts/publish/validate/sheet.d.ts +11 -3
- package/dist/artifacts/publish/validate/sheet.d.ts.map +1 -1
- package/dist/artifacts/publish/validate/slides.d.ts +1 -7
- package/dist/artifacts/publish/validate/slides.d.ts.map +1 -1
- package/dist/artifacts/queries.d.ts +95 -0
- package/dist/artifacts/queries.d.ts.map +1 -0
- package/dist/artifacts/resolve.d.ts +6 -0
- package/dist/artifacts/resolve.d.ts.map +1 -1
- package/dist/artifacts/run-query.d.ts +26 -0
- package/dist/artifacts/run-query.d.ts.map +1 -0
- package/dist/artifacts/serialize-query.d.ts +12 -0
- package/dist/artifacts/serialize-query.d.ts.map +1 -0
- package/dist/artifacts/sheet-rules.d.ts +26 -0
- package/dist/artifacts/sheet-rules.d.ts.map +1 -0
- package/dist/artifacts/tones.d.ts +8 -0
- package/dist/artifacts/tones.d.ts.map +1 -0
- package/dist/artifacts/workbook.d.ts +76 -5
- package/dist/artifacts/workbook.d.ts.map +1 -1
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +14 -11
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/member-events.d.ts +13 -0
- package/dist/auth/member-events.d.ts.map +1 -0
- package/dist/auth/profile.d.ts +11 -0
- package/dist/auth/profile.d.ts.map +1 -0
- package/dist/auth/runtime.d.ts +31 -3
- package/dist/auth/runtime.d.ts.map +1 -1
- package/dist/auth/strategy.d.ts +3 -1
- package/dist/auth/strategy.d.ts.map +1 -1
- package/dist/auth/strategy.js +7 -3
- package/dist/auth/strategy.js.map +1 -1
- package/dist/auth/types.d.ts +30 -1
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/authorization/decision.d.ts +15 -0
- package/dist/authorization/decision.d.ts.map +1 -1
- package/dist/authorization/event-visibility.d.ts +5 -1
- package/dist/authorization/event-visibility.d.ts.map +1 -1
- package/dist/authorization/grant-kinds.d.ts +2 -2
- package/dist/authorization/grant-kinds.d.ts.map +1 -1
- package/dist/authorization/index.d.ts +2 -2
- package/dist/authorization/index.d.ts.map +1 -1
- package/dist/authorization/index.js +12 -7
- package/dist/authorization/index.js.map +1 -1
- package/dist/authorization/resolve.d.ts +19 -1
- package/dist/authorization/resolve.d.ts.map +1 -1
- package/dist/authorization/run-visibility.d.ts +8 -1
- package/dist/authorization/run-visibility.d.ts.map +1 -1
- package/dist/authorization/types.d.ts +14 -0
- package/dist/authorization/types.d.ts.map +1 -1
- package/dist/bootstrap/index.js +69 -65
- package/dist/bootstrap/index.js.map +2 -2
- package/dist/{chunk-ky3j490c.js → chunk-02bzjgnt.js} +6 -6
- package/dist/{chunk-ky3j490c.js.map → chunk-02bzjgnt.js.map} +1 -1
- package/dist/{chunk-mfs23znk.js → chunk-07kkp2e1.js} +1 -1
- package/dist/{chunk-c1rxbz5y.js → chunk-098anw4f.js} +21 -19
- package/dist/chunk-098anw4f.js.map +12 -0
- package/dist/{chunk-z58tm0hm.js → chunk-0phpbbvm.js} +3 -3
- package/dist/{chunk-ere85b8y.js → chunk-0xmt5p5y.js} +116 -27
- package/dist/chunk-0xmt5p5y.js.map +14 -0
- package/dist/{chunk-t6f3tdnr.js → chunk-16a9dmfy.js} +33 -2
- package/dist/{chunk-t6f3tdnr.js.map → chunk-16a9dmfy.js.map} +5 -4
- package/dist/chunk-18sk89cg.js +47 -0
- package/dist/chunk-18sk89cg.js.map +10 -0
- package/dist/{chunk-e17zdm62.js → chunk-1t6k1avb.js} +1 -1
- package/dist/chunk-2626mh4m.js +693 -0
- package/dist/chunk-2626mh4m.js.map +19 -0
- package/dist/{chunk-qczk96d9.js → chunk-2adz0h75.js} +13 -4
- package/dist/chunk-2adz0h75.js.map +11 -0
- package/dist/{chunk-kge7k6ey.js → chunk-2fn60nvs.js} +2 -2
- package/dist/{chunk-99nd4rc1.js → chunk-2gjj5dx3.js} +5 -4
- package/dist/{chunk-99nd4rc1.js.map → chunk-2gjj5dx3.js.map} +3 -3
- package/dist/{chunk-mjddfa7k.js → chunk-3fqxbn31.js} +2 -24
- package/dist/{chunk-mjddfa7k.js.map → chunk-3fqxbn31.js.map} +3 -4
- package/dist/{chunk-y0c4e6ex.js → chunk-3gbefjg5.js} +1 -1
- package/dist/{chunk-5hx48dnn.js → chunk-45ngkxkp.js} +52 -31
- package/dist/chunk-45ngkxkp.js.map +13 -0
- package/dist/{chunk-cy4mbddw.js → chunk-48jezz3j.js} +1 -1
- package/dist/{chunk-561r0yc9.js → chunk-4b26qwbg.js} +13 -13
- package/dist/{chunk-561r0yc9.js.map → chunk-4b26qwbg.js.map} +1 -1
- package/dist/{chunk-9k93ah50.js → chunk-4f3ydv7t.js} +33 -69
- package/dist/chunk-4f3ydv7t.js.map +10 -0
- package/dist/chunk-4y26vs3v.js +97 -0
- package/dist/chunk-4y26vs3v.js.map +10 -0
- package/dist/{chunk-4as3wt1c.js → chunk-4ymrcdbm.js} +7 -3
- package/dist/chunk-4ymrcdbm.js.map +12 -0
- package/dist/{chunk-hcbyfxbe.js → chunk-5grk14e5.js} +76 -2
- package/dist/{chunk-hcbyfxbe.js.map → chunk-5grk14e5.js.map} +4 -3
- package/dist/{chunk-8frc8a4j.js → chunk-65pyhyas.js} +90 -83
- package/dist/chunk-65pyhyas.js.map +20 -0
- package/dist/{chunk-hwksyjks.js → chunk-661ezhks.js} +182 -6
- package/dist/chunk-661ezhks.js.map +11 -0
- package/dist/{chunk-447a5c0p.js → chunk-6n69k945.js} +2 -2
- package/dist/{chunk-0bphap9y.js → chunk-6p0pastb.js} +5 -5
- package/dist/{chunk-9j4jw7as.js → chunk-6rrtzea3.js} +18 -5
- package/dist/chunk-6rrtzea3.js.map +14 -0
- package/dist/{chunk-431pyp2c.js → chunk-6y0mkhex.js} +2 -2
- package/dist/{chunk-f4pamkt9.js → chunk-73v685wb.js} +10 -10
- package/dist/{chunk-f4pamkt9.js.map → chunk-73v685wb.js.map} +3 -3
- package/dist/{chunk-akzryx9h.js → chunk-7gr4j2eq.js} +7836 -5047
- package/dist/chunk-7gr4j2eq.js.map +120 -0
- package/dist/{chunk-bk9svbcq.js → chunk-7mc2wkre.js} +386 -86
- package/dist/chunk-7mc2wkre.js.map +50 -0
- package/dist/{chunk-6rqgmkde.js → chunk-7z5p905k.js} +335 -703
- package/dist/chunk-7z5p905k.js.map +22 -0
- package/dist/{chunk-yxd3nnqt.js → chunk-9mab3dvg.js} +26 -2
- package/dist/chunk-9mab3dvg.js.map +11 -0
- package/dist/chunk-9wr3yajk.js +42 -0
- package/dist/chunk-9wr3yajk.js.map +10 -0
- package/dist/chunk-az47zep4.js +41 -0
- package/dist/chunk-az47zep4.js.map +10 -0
- package/dist/{chunk-s7jg7pmn.js → chunk-bab05bhg.js} +1 -1
- package/dist/{chunk-858emn8m.js → chunk-bktev1ds.js} +14 -11
- package/dist/{chunk-858emn8m.js.map → chunk-bktev1ds.js.map} +3 -3
- package/dist/{chunk-dhcv7yxc.js → chunk-c0vk1djt.js} +5 -3
- package/dist/chunk-c0vk1djt.js.map +11 -0
- package/dist/chunk-c69nj7se.js +3 -0
- package/dist/{chunk-7n30ybym.js.map → chunk-c69nj7se.js.map} +1 -1
- package/dist/{chunk-q5e5tv4b.js → chunk-c844dkwd.js} +1 -1
- package/dist/{chunk-g257jwnc.js → chunk-cdk3egjj.js} +17 -4
- package/dist/chunk-cdk3egjj.js.map +12 -0
- package/dist/chunk-cswhawa2.js +113 -0
- package/dist/chunk-cswhawa2.js.map +10 -0
- package/dist/{chunk-cfj9dfbb.js → chunk-d2m879s4.js} +2 -2
- package/dist/{chunk-arns890k.js → chunk-d7vyc7k6.js} +2 -2
- package/dist/chunk-d7vyc7k6.js.map +10 -0
- package/dist/{chunk-q7gn29y3.js → chunk-dp0cdtj2.js} +2 -2
- package/dist/{chunk-6x0pqh32.js → chunk-e5wf5vz0.js} +3 -1
- package/dist/chunk-e5wf5vz0.js.map +10 -0
- package/dist/{chunk-cn0fwwhy.js → chunk-efmm01gj.js} +108 -1045
- package/dist/chunk-efmm01gj.js.map +18 -0
- package/dist/{chunk-918wwnaa.js → chunk-ezne9wc9.js} +1224 -430
- package/dist/chunk-ezne9wc9.js.map +71 -0
- package/dist/{chunk-tbc1ngpd.js → chunk-fe8zwt8b.js} +58 -12
- package/dist/{chunk-tbc1ngpd.js.map → chunk-fe8zwt8b.js.map} +5 -4
- package/dist/{chunk-br3k6qbf.js → chunk-fm62y49k.js} +1 -1
- package/dist/{chunk-nq6gpjt7.js → chunk-fntqb7qy.js} +30 -4
- package/dist/{chunk-nq6gpjt7.js.map → chunk-fntqb7qy.js.map} +5 -5
- package/dist/{chunk-1cc1xaf3.js → chunk-fp2kq35z.js} +26 -10
- package/dist/{chunk-1cc1xaf3.js.map → chunk-fp2kq35z.js.map} +5 -5
- package/dist/{chunk-vvxtn22d.js → chunk-g663fahq.js} +2 -2
- package/dist/{chunk-k43ct2ke.js → chunk-gvj5cd3b.js} +16 -9
- package/dist/chunk-gvj5cd3b.js.map +12 -0
- package/dist/{chunk-rmakanzx.js → chunk-h33shhq6.js} +5 -5
- package/dist/{chunk-nn5xnx3s.js → chunk-h3pbv7n8.js} +1738 -38
- package/dist/chunk-h3pbv7n8.js.map +48 -0
- package/dist/chunk-hn2r7z41.js.map +1 -1
- package/dist/{chunk-pbcbn83d.js → chunk-hqsp2sx4.js} +54 -8
- package/dist/chunk-hqsp2sx4.js.map +14 -0
- package/dist/{chunk-d09e3rax.js → chunk-hwarjrgf.js} +1 -1
- package/dist/{chunk-vf57cr4t.js → chunk-hyesv9dv.js} +1 -1
- package/dist/chunk-hz5d43gn.js +45 -0
- package/dist/chunk-hz5d43gn.js.map +10 -0
- package/dist/{chunk-91mg3nj9.js → chunk-j936th07.js} +86 -41
- package/dist/chunk-j936th07.js.map +12 -0
- package/dist/chunk-kcqpk9w1.js +75 -0
- package/dist/chunk-kcqpk9w1.js.map +10 -0
- package/dist/{chunk-5vems3nx.js → chunk-m2nevja0.js} +2 -2
- package/dist/{chunk-x9v4cx1d.js → chunk-m36fw8ft.js} +1 -1
- package/dist/{chunk-a40ad1ft.js → chunk-mbsbxarb.js} +1 -1
- package/dist/chunk-mzx71snp.js +129 -0
- package/dist/chunk-mzx71snp.js.map +10 -0
- package/dist/{chunk-6aawea28.js → chunk-n8q5j6y5.js} +1 -1
- package/dist/{chunk-d7dnxdep.js → chunk-n9zpx9c6.js} +4 -4
- package/dist/{chunk-xvsc5m8n.js → chunk-npcr0228.js} +1 -1
- package/dist/chunk-nydf3dbe.js +663 -0
- package/dist/chunk-nydf3dbe.js.map +13 -0
- package/dist/chunk-pdt5cw8z.js +233 -0
- package/dist/chunk-pdt5cw8z.js.map +11 -0
- package/dist/{chunk-rj69qcrd.js → chunk-pgrf64hp.js} +55 -7
- package/dist/chunk-pgrf64hp.js.map +12 -0
- package/dist/{chunk-y5tah2kf.js → chunk-q4pmvkg0.js} +1 -1
- package/dist/chunk-qhqgp4jf.js +1418 -0
- package/dist/chunk-qhqgp4jf.js.map +22 -0
- package/dist/{chunk-48qjhh6v.js → chunk-qx00vjrj.js} +19 -60
- package/dist/chunk-qx00vjrj.js.map +13 -0
- package/dist/{chunk-5948n82c.js → chunk-r6szek0x.js} +184 -7
- package/dist/chunk-r6szek0x.js.map +10 -0
- package/dist/{chunk-v4jbb3rs.js → chunk-rap5w0x0.js} +156 -2
- package/dist/chunk-rap5w0x0.js.map +10 -0
- package/dist/{chunk-pfp1txq2.js → chunk-sgx82nnt.js} +5 -31
- package/dist/{chunk-pfp1txq2.js.map → chunk-sgx82nnt.js.map} +3 -4
- package/dist/{chunk-bkpke1sg.js → chunk-t5608tkq.js} +3 -1
- package/dist/{chunk-bkpke1sg.js.map → chunk-t5608tkq.js.map} +3 -3
- package/dist/{chunk-29yx306f.js → chunk-tdxfsg1c.js} +507 -265
- package/dist/chunk-tdxfsg1c.js.map +23 -0
- package/dist/{chunk-d5rjr8c0.js → chunk-vabga7fk.js} +1 -1
- package/dist/{chunk-dhdha526.js → chunk-vhbw5sqm.js} +26 -2
- package/dist/chunk-vhbw5sqm.js.map +10 -0
- package/dist/{chunk-e6k4thh5.js → chunk-vpgwq5nf.js} +98 -12
- package/dist/chunk-vpgwq5nf.js.map +21 -0
- package/dist/{chunk-61y5xs4p.js → chunk-vyt322b6.js} +69 -50
- package/dist/{chunk-61y5xs4p.js.map → chunk-vyt322b6.js.map} +4 -4
- package/dist/chunk-waqk73p1.js +2380 -0
- package/dist/chunk-waqk73p1.js.map +23 -0
- package/dist/chunk-wsc1brye.js +27 -0
- package/dist/chunk-wsc1brye.js.map +10 -0
- package/dist/{chunk-96yw3pwd.js → chunk-y7dbmaqh.js} +28 -2
- package/dist/chunk-y7dbmaqh.js.map +10 -0
- package/dist/{chunk-6vb4st8k.js → chunk-yc9ners4.js} +120 -19
- package/dist/{chunk-6vb4st8k.js.map → chunk-yc9ners4.js.map} +8 -8
- package/dist/{chunk-dvd2fp9q.js → chunk-zbc929zg.js} +28 -4
- package/dist/chunk-zbc929zg.js.map +13 -0
- package/dist/chunk-zrvhsq7f.js +37 -0
- package/dist/chunk-zrvhsq7f.js.map +10 -0
- package/dist/datasets/write.js +5 -5
- package/dist/error-reporting/internal.js +3 -3
- package/dist/errors/catalog.d.ts +26 -0
- package/dist/errors/catalog.d.ts.map +1 -1
- package/dist/errors/internal.d.ts.map +1 -1
- package/dist/errors/internal.js +1 -1
- package/dist/events/definitions.d.ts +7 -0
- package/dist/events/definitions.d.ts.map +1 -1
- package/dist/events/execution.d.ts.map +1 -1
- package/dist/events/index.d.ts +2 -3
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +8 -10
- package/dist/events/index.js.map +1 -1
- package/dist/events/scope.d.ts.map +1 -1
- package/dist/events/scope.js +1 -1
- package/dist/events/selectors/builder.d.ts +12 -1
- 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/types.d.ts +19 -3
- package/dist/events/selectors/types.d.ts.map +1 -1
- package/dist/events/service.d.ts +17 -2
- package/dist/events/service.d.ts.map +1 -1
- package/dist/events/types/index.d.ts +3 -1
- package/dist/events/types/index.d.ts.map +1 -1
- package/dist/events/types/users.d.ts +63 -0
- package/dist/events/types/users.d.ts.map +1 -0
- package/dist/events/view-conditions.d.ts +34 -0
- package/dist/events/view-conditions.d.ts.map +1 -0
- package/dist/execution/agent.d.ts +15 -0
- package/dist/execution/agent.d.ts.map +1 -1
- package/dist/execution/agent.js +63 -57
- 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 +51 -2
- package/dist/execution/authorized-object-reader.d.ts.map +1 -1
- package/dist/execution/lineage.d.ts +7 -0
- package/dist/execution/lineage.d.ts.map +1 -0
- package/dist/execution/object-reader-ontology.d.ts +2 -2
- package/dist/execution/object-reader-ontology.d.ts.map +1 -1
- package/dist/execution/object-reader-security.d.ts +24 -3
- package/dist/execution/object-reader-security.d.ts.map +1 -1
- package/dist/execution/object-reader-users.d.ts +20 -0
- package/dist/execution/object-reader-users.d.ts.map +1 -0
- package/dist/execution/preparation.d.ts +23 -0
- package/dist/execution/preparation.d.ts.map +1 -0
- package/dist/execution/primitive.js +61 -57
- package/dist/execution/primitive.js.map +1 -1
- package/dist/execution/request.d.ts +2 -1
- package/dist/execution/request.d.ts.map +1 -1
- package/dist/execution/request.js +64 -56
- package/dist/execution/request.js.map +3 -3
- package/dist/execution/unique-lookup.d.ts +14 -0
- package/dist/execution/unique-lookup.d.ts.map +1 -0
- package/dist/execution/visible-objects.d.ts +12 -0
- package/dist/execution/visible-objects.d.ts.map +1 -0
- package/dist/http/api-routes.d.ts +17 -0
- package/dist/http/api-routes.d.ts.map +1 -1
- package/dist/http/index.js +1 -1
- package/dist/index.d.ts +32 -15
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +137 -126
- package/dist/index.js.map +1 -1
- package/dist/lake-storage/index.js +5 -5
- package/dist/materialization/errors.d.ts +25 -0
- package/dist/materialization/errors.d.ts.map +1 -1
- package/dist/materialization/event-envelopes.d.ts +5 -0
- package/dist/materialization/event-envelopes.d.ts.map +1 -1
- package/dist/materialization/index.d.ts +1 -1
- package/dist/materialization/index.d.ts.map +1 -1
- package/dist/materialization/index.js +14 -8
- package/dist/materialization/index.js.map +1 -1
- package/dist/materialization/model.d.ts +20 -2
- package/dist/materialization/model.d.ts.map +1 -1
- package/dist/materializer/edits/commit.d.ts.map +1 -1
- package/dist/materializer/edits/load-state.d.ts +5 -1
- package/dist/materializer/edits/load-state.d.ts.map +1 -1
- package/dist/materializer/edits/plan.d.ts.map +1 -1
- package/dist/materializer/edits/unique-values.d.ts +47 -0
- package/dist/materializer/edits/unique-values.d.ts.map +1 -0
- package/dist/materializer/edits/working-state.d.ts +6 -1
- package/dist/materializer/edits/working-state.d.ts.map +1 -1
- package/dist/materializer/execution/work-records.d.ts +7 -1
- package/dist/materializer/execution/work-records.d.ts.map +1 -1
- package/dist/materializer/index.js +45 -41
- package/dist/materializer/index.js.map +1 -1
- package/dist/materializer/projections/replacement-plan.d.ts.map +1 -1
- package/dist/materializer/projections/source-materialization.d.ts +1 -0
- package/dist/materializer/projections/source-materialization.d.ts.map +1 -1
- package/dist/materializer/shared/normalize.d.ts.map +1 -1
- package/dist/materializer/shared/projection-run.d.ts +0 -1
- package/dist/materializer/shared/projection-run.d.ts.map +1 -1
- package/dist/materializer/telemetry/plan.d.ts.map +1 -1
- package/dist/models/audio/catalog.d.ts +13 -1
- package/dist/models/audio/catalog.d.ts.map +1 -1
- package/dist/models/audio/errors.d.ts +6 -1
- package/dist/models/audio/errors.d.ts.map +1 -1
- package/dist/models/audio/runtime.d.ts.map +1 -1
- package/dist/models/audio/speech.d.ts +8 -0
- package/dist/models/audio/speech.d.ts.map +1 -0
- package/dist/models/audio/types.d.ts +93 -0
- package/dist/models/audio/types.d.ts.map +1 -1
- package/dist/models/calls.d.ts +27 -0
- package/dist/models/calls.d.ts.map +1 -0
- package/dist/models/catalog-index.d.ts +7 -4
- package/dist/models/catalog-index.d.ts.map +1 -1
- package/dist/models/catalog.d.ts +55 -3
- package/dist/models/catalog.d.ts.map +1 -1
- package/dist/models/decision/runtime.d.ts +6 -1
- package/dist/models/decision/runtime.d.ts.map +1 -1
- package/dist/models/decision/validation.d.ts +4 -1
- package/dist/models/decision/validation.d.ts.map +1 -1
- package/dist/models/definitions.d.ts +23 -1
- package/dist/models/definitions.d.ts.map +1 -1
- package/dist/models/events.d.ts +12 -1
- package/dist/models/events.d.ts.map +1 -1
- package/dist/models/execution/binding.d.ts +3 -1
- package/dist/models/execution/binding.d.ts.map +1 -1
- package/dist/models/execution/index.d.ts +1 -0
- package/dist/models/execution/index.d.ts.map +1 -1
- package/dist/models/execution/index.js +44 -34
- package/dist/models/execution/index.js.map +1 -1
- package/dist/models/execution/model-call-accounting.d.ts.map +1 -1
- package/dist/models/execution/model-call-recorder.d.ts +3 -0
- package/dist/models/execution/model-call-recorder.d.ts.map +1 -1
- package/dist/models/execution/usage.d.ts.map +1 -1
- package/dist/models/execution.d.ts +4 -2
- package/dist/models/execution.d.ts.map +1 -1
- package/dist/models/generation-types.d.ts +8 -1
- package/dist/models/generation-types.d.ts.map +1 -1
- package/dist/models/image/catalog.d.ts +13 -0
- package/dist/models/image/catalog.d.ts.map +1 -0
- package/dist/models/image/errors.d.ts +8 -0
- package/dist/models/image/errors.d.ts.map +1 -0
- package/dist/models/image/runtime.d.ts +8 -0
- package/dist/models/image/runtime.d.ts.map +1 -0
- package/dist/models/image/types.d.ts +103 -0
- package/dist/models/image/types.d.ts.map +1 -0
- package/dist/models/index.d.ts +12 -8
- 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/input-file.d.ts +9 -0
- package/dist/models/input-file.d.ts.map +1 -0
- package/dist/models/language-model.d.ts +13 -0
- package/dist/models/language-model.d.ts.map +1 -1
- package/dist/models/pricing.d.ts +25 -10
- package/dist/models/pricing.d.ts.map +1 -1
- package/dist/models/rate-card.d.ts +44 -6
- package/dist/models/rate-card.d.ts.map +1 -1
- package/dist/objects/conditional-writes.d.ts +37 -0
- package/dist/objects/conditional-writes.d.ts.map +1 -0
- package/dist/objects/execution.d.ts +2 -0
- package/dist/objects/execution.d.ts.map +1 -1
- package/dist/objects/index.d.ts +1 -0
- package/dist/objects/index.d.ts.map +1 -1
- package/dist/objects/index.js +68 -58
- package/dist/objects/index.js.map +1 -1
- package/dist/objects/link/authorization.d.ts +3 -0
- package/dist/objects/link/authorization.d.ts.map +1 -1
- package/dist/objects/link/endpoints.d.ts +21 -2
- package/dist/objects/link/endpoints.d.ts.map +1 -1
- package/dist/objects/link/remove.d.ts.map +1 -1
- package/dist/objects/link/upsert-batch.d.ts.map +1 -1
- package/dist/objects/link/upsert.d.ts.map +1 -1
- package/dist/objects/materializer-adapter.d.ts +13 -4
- package/dist/objects/materializer-adapter.d.ts.map +1 -1
- package/dist/objects/object/delete.d.ts +3 -0
- package/dist/objects/object/delete.d.ts.map +1 -1
- package/dist/objects/object/upsert-batch.d.ts.map +1 -1
- package/dist/objects/object/upsert.d.ts.map +1 -1
- package/dist/objects/query/current-user.d.ts +17 -0
- package/dist/objects/query/current-user.d.ts.map +1 -0
- package/dist/objects/query/executor.d.ts +14 -0
- package/dist/objects/query/executor.d.ts.map +1 -1
- package/dist/objects/query/index.d.ts +2 -2
- package/dist/objects/query/index.d.ts.map +1 -1
- package/dist/objects/query/index.js +49 -44
- package/dist/objects/query/index.js.map +1 -1
- package/dist/objects/query/ir.d.ts +19 -1
- package/dist/objects/query/ir.d.ts.map +1 -1
- package/dist/objects/query/matches-predicate.d.ts +9 -0
- package/dist/objects/query/matches-predicate.d.ts.map +1 -0
- package/dist/objects/query/normalize.d.ts.map +1 -1
- package/dist/objects/query/user-expansions.d.ts +27 -0
- package/dist/objects/query/user-expansions.d.ts.map +1 -0
- package/dist/objects/query/validate.d.ts.map +1 -1
- package/dist/objects/runtime-batch.d.ts +3 -1
- package/dist/objects/runtime-batch.d.ts.map +1 -1
- package/dist/objects/sdk/object-set.d.ts.map +1 -1
- package/dist/objects/sdk/query-executor.d.ts +6 -0
- package/dist/objects/sdk/query-executor.d.ts.map +1 -1
- package/dist/objects/serialize.d.ts +39 -0
- package/dist/objects/serialize.d.ts.map +1 -0
- package/dist/objects/unique-violation.d.ts +22 -0
- package/dist/objects/unique-violation.d.ts.map +1 -0
- package/dist/ontology/builders.d.ts +3 -1
- package/dist/ontology/builders.d.ts.map +1 -1
- package/dist/ontology/index.d.ts +2 -2
- package/dist/ontology/index.d.ts.map +1 -1
- package/dist/ontology/index.js +11 -7
- package/dist/ontology/index.js.map +1 -1
- package/dist/ontology/internal.js +7 -5
- package/dist/ontology/internal.js.map +3 -3
- package/dist/ontology/json-schema.d.ts.map +1 -1
- package/dist/ontology/primitives.d.ts +3 -0
- package/dist/ontology/primitives.d.ts.map +1 -1
- package/dist/ontology/registry.d.ts +6 -0
- package/dist/ontology/registry.d.ts.map +1 -1
- package/dist/ontology/types.d.ts +9 -0
- package/dist/ontology/types.d.ts.map +1 -1
- package/dist/ontology/unique-values.d.ts +26 -0
- package/dist/ontology/unique-values.d.ts.map +1 -0
- package/dist/ontology/user-ref.d.ts +23 -0
- package/dist/ontology/user-ref.d.ts.map +1 -1
- package/dist/ontology/validation/properties.d.ts.map +1 -1
- package/dist/ontology/validation/schema.d.ts.map +1 -1
- package/dist/pipelines/index.js +43 -40
- package/dist/pipelines/index.js.map +1 -1
- package/dist/projections/internal.js +36 -33
- package/dist/projections/internal.js.map +1 -1
- package/dist/projections/registry.d.ts +4 -0
- package/dist/projections/registry.d.ts.map +1 -1
- package/dist/projections/revision.d.ts +15 -0
- package/dist/projections/revision.d.ts.map +1 -1
- package/dist/projections/run-dispatch.d.ts.map +1 -1
- package/dist/projections/types.d.ts +2 -0
- package/dist/projections/types.d.ts.map +1 -1
- package/dist/query.d.ts +4 -2
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +2 -2
- package/dist/rules/execution.d.ts.map +1 -1
- package/dist/runtime/ai-cost.d.ts +2 -0
- package/dist/runtime/ai-cost.d.ts.map +1 -1
- package/dist/runtime/ai-usage.d.ts +7 -0
- package/dist/runtime/ai-usage.d.ts.map +1 -1
- package/dist/runtime/host.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/internal.js +42 -38
- package/dist/runtime/internal.js.map +1 -1
- package/dist/runtime/resolve-definitions.d.ts.map +1 -1
- package/dist/runtime/sixb.d.ts +2 -0
- package/dist/runtime/sixb.d.ts.map +1 -1
- package/dist/runtime/types.d.ts +66 -8
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/sandboxes/index.js +7 -6
- package/dist/sandboxes/index.js.map +1 -1
- package/dist/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.map +1 -1
- package/dist/security/grants.d.ts +12 -4
- package/dist/security/grants.d.ts.map +1 -1
- package/dist/security/index.d.ts +1 -1
- package/dist/security/index.d.ts.map +1 -1
- package/dist/security/internal.js +1 -1
- package/dist/security/project.d.ts +4 -1
- package/dist/security/project.d.ts.map +1 -1
- package/dist/security/public.js +2 -2
- package/dist/security/registry.d.ts +6 -0
- package/dist/security/registry.d.ts.map +1 -1
- package/dist/security/types.d.ts +47 -9
- package/dist/security/types.d.ts.map +1 -1
- package/dist/security/validation.d.ts.map +1 -1
- package/dist/security/view-conditions.d.ts +37 -0
- package/dist/security/view-conditions.d.ts.map +1 -0
- package/dist/shares/execution.d.ts.map +1 -1
- package/dist/shares/internal.js +34 -31
- package/dist/shares/internal.js.map +2 -2
- package/dist/storage/action-runs/failure.js +2 -2
- package/dist/storage/action-runs/provider.js +1 -1
- package/dist/storage/action-runs/types.d.ts +1 -1
- package/dist/storage/action-runs/types.d.ts.map +1 -1
- package/dist/storage/agents/errors.d.ts +3 -1
- package/dist/storage/agents/errors.d.ts.map +1 -1
- package/dist/storage/agents/in-memory.d.ts +120 -3
- package/dist/storage/agents/in-memory.d.ts.map +1 -1
- package/dist/storage/agents/index.d.ts +2 -2
- package/dist/storage/agents/index.d.ts.map +1 -1
- package/dist/storage/agents/provider.d.ts +154 -4
- package/dist/storage/agents/provider.d.ts.map +1 -1
- package/dist/storage/agents/provider.js +60 -5
- package/dist/storage/agents/provider.js.map +1 -1
- package/dist/storage/agents/types.d.ts +565 -13
- package/dist/storage/agents/types.d.ts.map +1 -1
- package/dist/storage/ai-cost/analytics.d.ts +10 -1
- package/dist/storage/ai-cost/analytics.d.ts.map +1 -1
- package/dist/storage/ai-cost/groups.d.ts +9 -0
- package/dist/storage/ai-cost/groups.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.d.ts +2 -1
- package/dist/storage/ai-cost/provider.d.ts.map +1 -1
- package/dist/storage/ai-cost/provider.js +11 -5
- package/dist/storage/ai-cost/provider.js.map +1 -1
- 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-cost/validation.d.ts.map +1 -1
- package/dist/storage/ai-limits/enforcement.js +5 -4
- package/dist/storage/ai-limits/enforcement.js.map +1 -1
- package/dist/storage/ai-limits/provider.d.ts +1 -1
- package/dist/storage/ai-limits/provider.d.ts.map +1 -1
- package/dist/storage/ai-limits/provider.js +3 -2
- package/dist/storage/ai-limits/provider.js.map +1 -1
- package/dist/storage/ai-usage/in-memory.d.ts +5 -1
- package/dist/storage/ai-usage/in-memory.d.ts.map +1 -1
- package/dist/storage/ai-usage/index.d.ts +2 -2
- package/dist/storage/ai-usage/index.d.ts.map +1 -1
- package/dist/storage/ai-usage/record.d.ts +5 -1
- package/dist/storage/ai-usage/record.d.ts.map +1 -1
- package/dist/storage/ai-usage/types.d.ts +33 -0
- package/dist/storage/ai-usage/types.d.ts.map +1 -1
- package/dist/storage/ai-usage/usage.d.ts +2 -0
- package/dist/storage/ai-usage/usage.d.ts.map +1 -1
- package/dist/storage/artifacts/errors.d.ts +12 -2
- package/dist/storage/artifacts/errors.d.ts.map +1 -1
- package/dist/storage/artifacts/in-memory.d.ts +23 -2
- package/dist/storage/artifacts/in-memory.d.ts.map +1 -1
- package/dist/storage/artifacts/index.d.ts +2 -2
- package/dist/storage/artifacts/index.d.ts.map +1 -1
- package/dist/storage/artifacts/record.d.ts +19 -2
- package/dist/storage/artifacts/record.d.ts.map +1 -1
- package/dist/storage/artifacts/types.d.ts +87 -8
- package/dist/storage/artifacts/types.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/auth-storage.d.ts +3 -2
- package/dist/storage/auth/in-memory/auth-storage.d.ts.map +1 -1
- package/dist/storage/auth/in-memory/users.d.ts +7 -3
- package/dist/storage/auth/in-memory/users.d.ts.map +1 -1
- package/dist/storage/auth/index.d.ts +1 -1
- package/dist/storage/auth/index.d.ts.map +1 -1
- package/dist/storage/auth/types.d.ts +40 -9
- package/dist/storage/auth/types.d.ts.map +1 -1
- package/dist/storage/connector-connections/provider.js +1 -1
- package/dist/storage/executions/in-memory.d.ts +2 -1
- package/dist/storage/executions/in-memory.d.ts.map +1 -1
- package/dist/storage/executions/index.d.ts +1 -1
- package/dist/storage/executions/index.d.ts.map +1 -1
- package/dist/storage/executions/types.d.ts +15 -0
- package/dist/storage/executions/types.d.ts.map +1 -1
- package/dist/storage/file-upload-sessions/provider.js +15 -12
- package/dist/storage/file-upload-sessions/provider.js.map +1 -1
- package/dist/storage/index.d.ts +13 -11
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +50 -39
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/internal.d.ts +2 -2
- package/dist/storage/internal.d.ts.map +1 -1
- package/dist/storage/internal.js +19 -8
- package/dist/storage/internal.js.map +1 -1
- package/dist/storage/migrations/migrate-storage.d.ts +4 -1
- package/dist/storage/migrations/migrate-storage.d.ts.map +1 -1
- package/dist/storage/migrations/prepare-unique-properties.d.ts +18 -0
- package/dist/storage/migrations/prepare-unique-properties.d.ts.map +1 -0
- package/dist/storage/objects/guard.d.ts +1 -1
- package/dist/storage/objects/guard.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/conditional-reader.d.ts +5 -0
- package/dist/storage/objects/in-memory/conditional-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/query.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-scope.d.ts +3 -9
- package/dist/storage/objects/in-memory/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/read-source.d.ts +10 -1
- package/dist/storage/objects/in-memory/read-source.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/scoped-reader.d.ts +14 -0
- package/dist/storage/objects/in-memory/scoped-reader.d.ts.map +1 -0
- package/dist/storage/objects/in-memory/selected-reader.d.ts.map +1 -1
- package/dist/storage/objects/in-memory/storage.d.ts +36 -1
- package/dist/storage/objects/in-memory/storage.d.ts.map +1 -1
- package/dist/storage/objects/index.d.ts +2 -2
- package/dist/storage/objects/index.d.ts.map +1 -1
- package/dist/storage/objects/read-scope.d.ts +9 -1
- package/dist/storage/objects/read-scope.d.ts.map +1 -1
- package/dist/storage/objects/types.d.ts +64 -1
- package/dist/storage/objects/types.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/index.d.ts +2 -0
- package/dist/storage/ontology/in-memory/index.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/materializations.d.ts +1 -0
- package/dist/storage/ontology/in-memory/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/replacement-plans.d.ts.map +1 -1
- package/dist/storage/ontology/in-memory/unique-values.d.ts +32 -0
- package/dist/storage/ontology/in-memory/unique-values.d.ts.map +1 -0
- package/dist/storage/ontology/index.d.ts +4 -1
- package/dist/storage/ontology/index.d.ts.map +1 -1
- package/dist/storage/ontology/materializations.d.ts +34 -1
- package/dist/storage/ontology/materializations.d.ts.map +1 -1
- package/dist/storage/ontology/provider-work.d.ts +15 -2
- package/dist/storage/ontology/provider-work.d.ts.map +1 -1
- package/dist/storage/ontology/provider.d.ts +1 -1
- package/dist/storage/ontology/provider.d.ts.map +1 -1
- package/dist/storage/ontology/provider.js +9 -4
- package/dist/storage/ontology/provider.js.map +1 -1
- package/dist/storage/ontology/unique-values.d.ts +54 -0
- package/dist/storage/ontology/unique-values.d.ts.map +1 -0
- package/dist/storage/operation-scope.d.ts +1 -1
- package/dist/storage/operation-scope.d.ts.map +1 -1
- package/dist/storage/operation-scope.js +1 -1
- package/dist/storage/projection-runs/in-memory.d.ts +0 -6
- package/dist/storage/projection-runs/in-memory.d.ts.map +1 -1
- package/dist/storage/projection-runs/provider.js +2 -2
- package/dist/storage/share-grants/provider.js +4 -3
- package/dist/storage/share-grants/provider.js.map +1 -1
- package/dist/storage/types.d.ts +2 -2
- package/dist/storage/types.d.ts.map +1 -1
- package/dist/storage/workflow-runs/provider.js +15 -12
- package/dist/storage/workflow-runs/provider.js.map +1 -1
- package/dist/syncs/index.js +42 -39
- package/dist/syncs/index.js.map +1 -1
- package/dist/testing/agent-approval-storage-contract.d.ts +17 -0
- package/dist/testing/agent-approval-storage-contract.d.ts.map +1 -0
- package/dist/testing/agent-memory-storage-contract.d.ts +12 -0
- package/dist/testing/agent-memory-storage-contract.d.ts.map +1 -0
- 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/ai-limit-storage-contract.d.ts +0 -1
- package/dist/testing/ai-limit-storage-contract.d.ts.map +1 -1
- package/dist/testing/ai-model-call-groups-contract.d.ts.map +1 -1
- package/dist/testing/ai-usage-storage-contract.d.ts.map +1 -1
- package/dist/testing/artifact-storage-contract.d.ts.map +1 -1
- package/dist/testing/auth-storage-contract.d.ts +13 -0
- package/dist/testing/auth-storage-contract.d.ts.map +1 -1
- package/dist/testing/broker-contract.d.ts +5 -0
- package/dist/testing/broker-contract.d.ts.map +1 -1
- package/dist/testing/effective-storage-contract.d.ts.map +1 -1
- package/dist/testing/execution-storage-contract.d.ts.map +1 -1
- package/dist/testing/file-upload-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/index.d.ts +9 -5
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +7938 -3743
- package/dist/testing/index.js.map +29 -25
- package/dist/testing/lake-storage-contract.d.ts.map +1 -1
- package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
- package/dist/testing/object-conditional-read-scope-contract.d.ts +11 -0
- package/dist/testing/object-conditional-read-scope-contract.d.ts.map +1 -0
- package/dist/testing/object-query-contract.d.ts +0 -2
- package/dist/testing/object-query-contract.d.ts.map +1 -1
- package/dist/testing/ontology-storage-contract.d.ts.map +1 -1
- package/dist/testing/projection-run-storage-contract.d.ts.map +1 -1
- package/dist/testing/queues-contract.d.ts +5 -0
- package/dist/testing/queues-contract.d.ts.map +1 -1
- package/dist/testing/sandboxes-contract.d.ts.map +1 -1
- package/dist/testing/share-grant-storage-contract.d.ts.map +1 -1
- package/dist/testing/share-session-storage-contract.d.ts.map +1 -1
- package/dist/testing/unique-values-contract.d.ts +21 -0
- package/dist/testing/unique-values-contract.d.ts.map +1 -0
- package/dist/testing/webhook-execution.d.ts +0 -8
- package/dist/testing/webhook-execution.d.ts.map +1 -1
- package/dist/testing/webhook-run-storage-contract.d.ts.map +1 -1
- package/dist/users/execution.d.ts +40 -0
- package/dist/users/execution.d.ts.map +1 -0
- package/dist/users/index.d.ts +3 -0
- package/dist/users/index.d.ts.map +1 -0
- package/dist/webhooks/internal.js +34 -31
- package/dist/webhooks/internal.js.map +2 -2
- package/dist/workers/index.js +4 -6
- package/dist/workers/index.js.map +4 -4
- package/dist/workers/queue-worker.d.ts +0 -2
- package/dist/workers/queue-worker.d.ts.map +1 -1
- package/dist/workers/worker.d.ts +0 -2
- package/dist/workers/worker.d.ts.map +1 -1
- package/dist/workflows/builders.d.ts.map +1 -1
- package/dist/workflows/index.js +67 -63
- package/dist/workflows/index.js.map +1 -1
- package/dist/workflows/request.d.ts +12 -1
- package/dist/workflows/request.d.ts.map +1 -1
- package/dist/workflows/types.d.ts +6 -2
- package/dist/workflows/types.d.ts.map +1 -1
- package/dist/workflows/validation.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/commit-edits.ts +6 -1
- package/src/actions/execution.ts +42 -15
- package/src/actions/read-facade.ts +33 -0
- package/src/actions/request.ts +224 -71
- package/src/actions/run/context.ts +47 -1
- package/src/actions/run/execute.ts +13 -6
- package/src/actions/run/executor.ts +11 -2
- package/src/actions/run/normalize.ts +12 -2
- package/src/actions/run/phases.ts +2 -0
- package/src/actions/run/run-action.ts +12 -3
- package/src/actions/run/signals.ts +3 -9
- package/src/actions/run/types.ts +17 -1
- package/src/actions/run-authorization.ts +72 -0
- package/src/actions/types/context.ts +20 -3
- package/src/actions/validators.ts +19 -8
- package/src/activity/README.md +5 -2
- package/src/activity/timeline.ts +39 -78
- package/src/agents/accounting.ts +59 -0
- package/src/agents/adapters.ts +10 -0
- package/src/agents/agent-mail.ts +29 -0
- package/src/agents/api-gateway.ts +14 -3
- package/src/agents/approval-continuation.ts +48 -0
- package/src/agents/approval-executor.ts +318 -0
- package/src/agents/approval-outcome.ts +59 -0
- package/src/agents/approvals.ts +566 -0
- package/src/agents/authority.ts +24 -1
- package/src/agents/builders.ts +5 -3
- package/src/agents/cancel.ts +103 -0
- package/src/agents/child-question.ts +46 -0
- package/src/agents/children.ts +404 -0
- package/src/agents/context-compaction.ts +12 -0
- package/src/agents/errors.ts +31 -0
- package/src/agents/execution.ts +788 -90
- package/src/agents/fork.ts +158 -0
- package/src/agents/ids.ts +18 -6
- package/src/agents/index.ts +55 -0
- package/src/agents/memory-execution.ts +186 -0
- package/src/agents/memory.ts +178 -0
- package/src/agents/message.ts +57 -0
- package/src/agents/model-loop.ts +93 -6
- package/src/agents/model-routing.ts +193 -0
- package/src/agents/participants.ts +213 -0
- package/src/agents/reference.ts +2 -0
- package/src/agents/request.ts +398 -69
- package/src/agents/run-scope.ts +134 -0
- package/src/agents/streams/index.ts +5 -0
- package/src/agents/streams/internal.ts +1 -0
- package/src/agents/streams/protocol.ts +385 -7
- package/src/agents/subagent-runs.ts +41 -0
- package/src/agents/thread-access.ts +137 -0
- package/src/agents/tool-definition.ts +5 -3
- package/src/agents/types.ts +35 -10
- package/src/agents/validation.ts +2 -0
- package/src/artifacts/access.ts +125 -0
- package/src/artifacts/canvas.ts +369 -0
- package/src/artifacts/csv.ts +10 -0
- package/src/artifacts/errors.ts +12 -1
- package/src/artifacts/execution.ts +436 -36
- package/src/artifacts/formula/check.ts +171 -0
- package/src/artifacts/formula/evaluate.ts +288 -0
- package/src/artifacts/formula/index.ts +199 -0
- package/src/artifacts/formula/parser.ts +357 -0
- package/src/artifacts/frames/assets.ts +35 -19
- package/src/artifacts/frames/entries.ts +35 -0
- package/src/artifacts/frames/grants.ts +10 -9
- package/src/artifacts/frames/index.ts +8 -2
- package/src/artifacts/frames/kit.ts +191 -14
- package/src/artifacts/frames/probe.ts +66 -18
- package/src/artifacts/frames/protocol.ts +164 -10
- package/src/artifacts/frames/runtime.ts +273 -28
- package/src/artifacts/index.ts +66 -2
- package/src/artifacts/kinds.ts +1 -1
- package/src/artifacts/limits.ts +31 -0
- package/src/artifacts/live-sheet.ts +345 -0
- package/src/artifacts/outline.ts +34 -1
- package/src/artifacts/publish/index.ts +2 -0
- package/src/artifacts/publish/publish.ts +120 -34
- package/src/artifacts/publish/queries.ts +336 -0
- package/src/artifacts/publish/references.ts +18 -13
- package/src/artifacts/publish/validate/canvas.ts +118 -0
- package/src/artifacts/publish/validate/html.ts +78 -0
- package/src/artifacts/publish/validate/page.ts +65 -0
- package/src/artifacts/publish/validate/sheet.ts +115 -69
- package/src/artifacts/publish/validate/slides.ts +11 -63
- package/src/artifacts/queries.ts +512 -0
- package/src/artifacts/resolve.ts +20 -5
- package/src/artifacts/run-query.ts +212 -0
- package/src/artifacts/serialize-query.ts +25 -0
- package/src/artifacts/sheet-rules.ts +180 -0
- package/src/artifacts/tones.ts +20 -0
- package/src/artifacts/workbook.ts +374 -15
- package/src/auth/index.ts +4 -0
- package/src/auth/member-events.ts +114 -0
- package/src/auth/profile.ts +118 -0
- package/src/auth/runtime.ts +190 -9
- package/src/auth/strategy.ts +3 -0
- package/src/auth/types.ts +32 -0
- package/src/authorization/decision.ts +47 -0
- package/src/authorization/event-visibility.ts +17 -16
- package/src/authorization/grant-kinds.ts +32 -0
- package/src/authorization/index.ts +6 -1
- package/src/authorization/resolve.ts +58 -1
- package/src/authorization/run-visibility.ts +8 -1
- package/src/authorization/types.ts +14 -0
- package/src/errors/catalog.ts +26 -1
- package/src/errors/internal.ts +17 -8
- package/src/events/definitions.ts +26 -0
- package/src/events/execution.ts +43 -6
- package/src/events/index.ts +10 -1
- package/src/events/scope.ts +2 -0
- package/src/events/selectors/builder.ts +50 -0
- package/src/events/selectors/index.ts +4 -0
- package/src/events/selectors/types.ts +32 -1
- package/src/events/service.ts +55 -2
- package/src/events/types/index.ts +10 -0
- package/src/events/types/users.ts +73 -0
- package/src/events/view-conditions.ts +241 -0
- package/src/execution/agent.ts +25 -0
- package/src/execution/authorization.ts +70 -0
- package/src/execution/authorized-object-reader.ts +238 -32
- package/src/execution/lineage.ts +14 -0
- package/src/execution/object-reader-ontology.ts +11 -14
- package/src/execution/object-reader-security.ts +134 -10
- package/src/execution/object-reader-users.ts +122 -0
- package/src/execution/preparation.ts +78 -0
- package/src/execution/request.ts +2 -0
- package/src/execution/unique-lookup.ts +55 -0
- package/src/execution/visible-objects.ts +26 -0
- package/src/http/api-routes.ts +206 -7
- package/src/index.ts +99 -2
- package/src/materialization/errors.ts +37 -0
- package/src/materialization/event-envelopes.ts +11 -3
- package/src/materialization/index.ts +1 -0
- package/src/materialization/model.ts +24 -4
- package/src/materializer/README.md +7 -1
- package/src/materializer/edits/commit.ts +56 -12
- package/src/materializer/edits/load-state.ts +15 -7
- package/src/materializer/edits/operations.ts +12 -0
- package/src/materializer/edits/plan.ts +2 -0
- package/src/materializer/edits/unique-values.ts +255 -0
- package/src/materializer/edits/working-state.ts +8 -1
- package/src/materializer/execution/work-records.ts +47 -0
- package/src/materializer/projections/finish-run.ts +0 -1
- package/src/materializer/projections/replace.ts +1 -1
- package/src/materializer/projections/replacement-plan.ts +4 -1
- package/src/materializer/projections/source-materialization.ts +2 -1
- package/src/materializer/shared/normalize.ts +37 -6
- package/src/materializer/shared/projection-run.ts +1 -2
- package/src/materializer/telemetry/append.ts +14 -17
- package/src/materializer/telemetry/plan.ts +2 -0
- package/src/models/audio/catalog.ts +89 -10
- package/src/models/audio/errors.ts +18 -1
- package/src/models/audio/runtime.ts +10 -13
- package/src/models/audio/speech.ts +261 -0
- package/src/models/audio/types.ts +97 -0
- package/src/models/calls.ts +100 -0
- package/src/models/catalog-index.ts +21 -2
- package/src/models/catalog.ts +211 -35
- package/src/models/decision/runtime.ts +21 -22
- package/src/models/decision/validation.ts +4 -1
- package/src/models/definitions.ts +57 -8
- package/src/models/events.ts +72 -1
- package/src/models/execution/README.md +34 -5
- package/src/models/execution/binding.ts +3 -1
- package/src/models/execution/embedding.ts +1 -0
- package/src/models/execution/index.ts +5 -0
- package/src/models/execution/model-call-accounting.ts +3 -1
- package/src/models/execution/model-call-recorder.ts +29 -1
- package/src/models/execution/usage.ts +8 -0
- package/src/models/execution.ts +20 -22
- package/src/models/generation-types.ts +8 -1
- package/src/models/image/catalog.ts +89 -0
- package/src/models/image/errors.ts +19 -0
- package/src/models/image/runtime.ts +335 -0
- package/src/models/image/types.ts +111 -0
- package/src/models/index.ts +38 -4
- package/src/models/{audio/file.ts → input-file.ts} +22 -13
- package/src/models/language-model.ts +13 -0
- package/src/models/pricing.ts +263 -42
- package/src/models/rate-card.ts +161 -12
- package/src/objects/authorized-ontology-view.ts +1 -0
- package/src/objects/conditional-writes.ts +109 -0
- package/src/objects/execution.ts +4 -0
- package/src/objects/index.ts +8 -0
- package/src/objects/link/authorization.ts +12 -3
- package/src/objects/link/endpoints.ts +42 -11
- package/src/objects/link/remove.ts +25 -10
- package/src/objects/link/upsert-batch.ts +2 -0
- package/src/objects/link/upsert.ts +18 -12
- package/src/objects/materializer-adapter.ts +55 -18
- package/src/objects/object/delete.ts +24 -7
- package/src/objects/object/upsert-batch.ts +44 -14
- package/src/objects/object/upsert.ts +23 -5
- package/src/objects/query/current-user.ts +76 -0
- package/src/objects/query/executor.ts +39 -103
- package/src/objects/query/explain.ts +20 -7
- package/src/objects/query/index.ts +2 -0
- package/src/objects/query/ir.ts +20 -0
- package/src/objects/query/links.ts +8 -0
- package/src/objects/query/matches-predicate.ts +108 -0
- package/src/objects/query/normalize.ts +50 -19
- package/src/objects/query/scalar-values.ts +19 -3
- package/src/objects/query/user-expansions.ts +65 -0
- package/src/objects/query/validate.ts +248 -10
- package/src/objects/runtime-batch.ts +8 -2
- package/src/objects/sdk/object-set.ts +12 -1
- package/src/objects/sdk/query-builder.ts +39 -8
- package/src/objects/sdk/query-executor.ts +6 -0
- package/src/objects/serialize.ts +79 -0
- package/src/objects/unique-violation.ts +59 -0
- package/src/objects/vectors/handle.ts +3 -3
- package/src/ontology/builders.ts +3 -0
- package/src/ontology/docs-markdown.ts +1 -0
- package/src/ontology/index.ts +2 -2
- package/src/ontology/json-schema.ts +4 -0
- package/src/ontology/primitives.ts +21 -8
- package/src/ontology/registry.ts +16 -0
- package/src/ontology/types.ts +9 -0
- package/src/ontology/unique-values.ts +84 -0
- package/src/ontology/user-ref.ts +39 -0
- package/src/ontology/validation/properties.ts +43 -0
- package/src/ontology/validation/schema.ts +9 -1
- package/src/projections/registry.ts +16 -10
- package/src/projections/revision.ts +112 -45
- package/src/projections/run-dispatch.ts +38 -25
- package/src/projections/types.ts +2 -0
- package/src/query.ts +5 -0
- package/src/rules/execution.ts +43 -11
- package/src/runtime/ai-cost.ts +30 -0
- package/src/runtime/ai-usage.ts +32 -1
- package/src/runtime/host.ts +18 -1
- package/src/runtime/index.ts +2 -0
- package/src/runtime/resolve-definitions.ts +3 -0
- package/src/runtime/sixb.ts +35 -8
- package/src/runtime/types.ts +99 -9
- package/src/schedules/builders.ts +3 -1
- package/src/schedules/runtime.ts +6 -0
- package/src/schedules/validation.ts +23 -1
- package/src/security/README.md +62 -0
- package/src/security/grants.ts +155 -10
- package/src/security/index.ts +3 -1
- package/src/security/project.ts +6 -1
- package/src/security/registry.ts +32 -7
- package/src/security/types.ts +54 -9
- package/src/security/validation.ts +27 -11
- package/src/security/view-conditions.ts +215 -0
- package/src/shares/execution.ts +43 -10
- package/src/storage/action-runs/types.ts +2 -0
- package/src/storage/agents/errors.ts +3 -0
- package/src/storage/agents/in-memory.ts +779 -32
- package/src/storage/agents/index.ts +42 -0
- package/src/storage/agents/provider.ts +733 -8
- package/src/storage/agents/types.ts +620 -12
- package/src/storage/ai-cost/analytics.ts +60 -7
- package/src/storage/ai-cost/codec.ts +6 -1
- package/src/storage/ai-cost/groups.ts +44 -1
- package/src/storage/ai-cost/index.ts +1 -0
- package/src/storage/ai-cost/provider.ts +2 -0
- package/src/storage/ai-cost/types.ts +18 -1
- package/src/storage/ai-cost/validation.ts +39 -12
- package/src/storage/ai-limits/provider.ts +4 -7
- package/src/storage/ai-usage/in-memory.ts +28 -1
- package/src/storage/ai-usage/index.ts +9 -1
- package/src/storage/ai-usage/record.ts +44 -7
- package/src/storage/ai-usage/types.ts +38 -0
- package/src/storage/ai-usage/usage.ts +15 -1
- package/src/storage/artifacts/errors.ts +13 -1
- package/src/storage/artifacts/in-memory.ts +156 -8
- package/src/storage/artifacts/index.ts +6 -1
- package/src/storage/artifacts/record.ts +61 -1
- package/src/storage/artifacts/types.ts +92 -8
- package/src/storage/auth/in-memory/auth-storage.ts +27 -2
- package/src/storage/auth/in-memory/users.ts +40 -6
- package/src/storage/auth/index.ts +1 -0
- package/src/storage/auth/types.ts +43 -7
- package/src/storage/executions/in-memory.ts +32 -0
- package/src/storage/executions/index.ts +2 -0
- package/src/storage/executions/types.ts +17 -0
- package/src/storage/index.ts +69 -1
- package/src/storage/internal.ts +9 -1
- package/src/storage/migrations/migrate-storage.ts +8 -1
- package/src/storage/migrations/prepare-unique-properties.ts +161 -0
- package/src/storage/objects/guard.ts +7 -3
- package/src/storage/objects/in-memory/conditional-reader.ts +72 -0
- package/src/storage/objects/in-memory/query.ts +4 -105
- package/src/storage/objects/in-memory/read-scope.ts +15 -14
- package/src/storage/objects/in-memory/read-source.ts +11 -1
- package/src/storage/objects/in-memory/scoped-reader.ts +243 -0
- package/src/storage/objects/in-memory/selected-reader.ts +6 -231
- package/src/storage/objects/in-memory/storage.ts +183 -1
- package/src/storage/objects/index.ts +9 -1
- package/src/storage/objects/read-scope.ts +191 -0
- package/src/storage/objects/types.ts +68 -1
- package/src/storage/ontology/in-memory/index.ts +3 -0
- package/src/storage/ontology/in-memory/materializations.ts +35 -0
- package/src/storage/ontology/in-memory/replacement-plans.ts +4 -0
- package/src/storage/ontology/in-memory/unique-values.ts +62 -0
- package/src/storage/ontology/index.ts +10 -0
- package/src/storage/ontology/materializations.ts +35 -1
- package/src/storage/ontology/provider-work.ts +76 -0
- package/src/storage/ontology/provider.ts +3 -0
- package/src/storage/ontology/unique-values.ts +56 -0
- package/src/storage/operation-scope.ts +9 -1
- package/src/storage/projection-runs/in-memory.ts +3 -35
- package/src/storage/types.ts +2 -0
- package/src/testing/agent-approval-storage-contract.ts +1117 -0
- package/src/testing/agent-memory-storage-contract.ts +400 -0
- package/src/testing/agent-storage-contract.ts +1188 -33
- package/src/testing/ai-cost-storage-contract.ts +31 -1
- package/src/testing/ai-limit-storage-contract.ts +9 -7
- package/src/testing/ai-model-call-groups-contract.ts +76 -0
- package/src/testing/ai-usage-storage-contract.ts +120 -13
- package/src/testing/artifact-storage-contract.ts +338 -4
- package/src/testing/auth-storage-contract.ts +550 -73
- package/src/testing/broker-contract.ts +28 -23
- package/src/testing/effective-storage-contract.ts +3 -8
- package/src/testing/execution-storage-contract.ts +53 -0
- package/src/testing/file-upload-session-storage-contract.ts +12 -24
- package/src/testing/index.ts +17 -4
- package/src/testing/lake-storage-contract.ts +22 -28
- package/src/testing/materializer-storage-contract.ts +36 -9
- package/src/testing/object-conditional-read-scope-contract.ts +634 -0
- package/src/testing/object-query-contract.ts +386 -186
- package/src/testing/ontology-storage-contract.ts +230 -21
- package/src/testing/projection-run-storage-contract.ts +8 -18
- package/src/testing/queues-contract.ts +39 -70
- package/src/testing/sandboxes-contract.ts +3 -14
- package/src/testing/share-grant-storage-contract.ts +13 -16
- package/src/testing/share-session-storage-contract.ts +4 -14
- package/src/testing/unique-values-contract.ts +907 -0
- package/src/testing/webhook-execution.ts +1 -1
- package/src/testing/webhook-run-storage-contract.ts +6 -9
- package/src/users/execution.ts +131 -0
- package/src/users/index.ts +2 -0
- package/src/workers/queue-worker.ts +1 -3
- package/src/workers/worker.ts +1 -3
- package/src/workflows/builders.ts +6 -0
- package/src/workflows/request.ts +46 -8
- package/src/workflows/types.ts +6 -2
- package/src/workflows/validation.ts +23 -9
- package/dist/chunk-29yx306f.js.map +0 -22
- package/dist/chunk-3jms7je7.js +0 -14
- package/dist/chunk-3jms7je7.js.map +0 -10
- package/dist/chunk-3qct2mdc.js +0 -297
- package/dist/chunk-3qct2mdc.js.map +0 -12
- package/dist/chunk-48qjhh6v.js.map +0 -13
- package/dist/chunk-4as3wt1c.js.map +0 -12
- package/dist/chunk-5948n82c.js.map +0 -10
- package/dist/chunk-5hx48dnn.js.map +0 -14
- package/dist/chunk-6rqgmkde.js.map +0 -29
- package/dist/chunk-6x0pqh32.js.map +0 -10
- package/dist/chunk-7n30ybym.js +0 -3
- package/dist/chunk-7n440zgt.js +0 -261
- package/dist/chunk-7n440zgt.js.map +0 -12
- package/dist/chunk-7q8t23v4.js +0 -467
- package/dist/chunk-7q8t23v4.js.map +0 -14
- package/dist/chunk-8frc8a4j.js.map +0 -20
- package/dist/chunk-918wwnaa.js.map +0 -68
- package/dist/chunk-91mg3nj9.js.map +0 -12
- package/dist/chunk-96yw3pwd.js.map +0 -10
- package/dist/chunk-9j4jw7as.js.map +0 -14
- package/dist/chunk-9k93ah50.js.map +0 -11
- package/dist/chunk-9kgkfg6v.js +0 -502
- package/dist/chunk-9kgkfg6v.js.map +0 -14
- package/dist/chunk-akzryx9h.js.map +0 -100
- package/dist/chunk-arns890k.js.map +0 -10
- package/dist/chunk-bk9svbcq.js.map +0 -49
- package/dist/chunk-c06hmxyy.js +0 -31
- package/dist/chunk-c06hmxyy.js.map +0 -10
- package/dist/chunk-c1rxbz5y.js.map +0 -12
- package/dist/chunk-cn0fwwhy.js.map +0 -19
- package/dist/chunk-dhcv7yxc.js.map +0 -11
- package/dist/chunk-dhdha526.js.map +0 -10
- package/dist/chunk-dvd2fp9q.js.map +0 -13
- package/dist/chunk-e6k4thh5.js.map +0 -19
- package/dist/chunk-ere85b8y.js.map +0 -15
- package/dist/chunk-g257jwnc.js.map +0 -12
- package/dist/chunk-hwksyjks.js.map +0 -11
- package/dist/chunk-k43ct2ke.js.map +0 -12
- package/dist/chunk-nn5xnx3s.js.map +0 -40
- package/dist/chunk-pbcbn83d.js.map +0 -14
- package/dist/chunk-pqajwytd.js +0 -68
- package/dist/chunk-pqajwytd.js.map +0 -11
- package/dist/chunk-qczk96d9.js.map +0 -11
- package/dist/chunk-rdghfsss.js +0 -39
- package/dist/chunk-rdghfsss.js.map +0 -10
- package/dist/chunk-rj69qcrd.js.map +0 -11
- package/dist/chunk-v4jbb3rs.js.map +0 -10
- package/dist/chunk-yxd3nnqt.js.map +0 -11
- package/dist/events/toStoredEvent.d.ts +0 -9
- package/dist/events/toStoredEvent.d.ts.map +0 -1
- package/dist/models/audio/file.d.ts +0 -9
- package/dist/models/audio/file.d.ts.map +0 -1
- package/src/events/toStoredEvent.ts +0 -33
- /package/dist/{chunk-mfs23znk.js.map → chunk-07kkp2e1.js.map} +0 -0
- /package/dist/{chunk-z58tm0hm.js.map → chunk-0phpbbvm.js.map} +0 -0
- /package/dist/{chunk-e17zdm62.js.map → chunk-1t6k1avb.js.map} +0 -0
- /package/dist/{chunk-kge7k6ey.js.map → chunk-2fn60nvs.js.map} +0 -0
- /package/dist/{chunk-y0c4e6ex.js.map → chunk-3gbefjg5.js.map} +0 -0
- /package/dist/{chunk-cy4mbddw.js.map → chunk-48jezz3j.js.map} +0 -0
- /package/dist/{chunk-twe4dx8p.js → chunk-5tfev0fv.js} +0 -0
- /package/dist/{chunk-twe4dx8p.js.map → chunk-5tfev0fv.js.map} +0 -0
- /package/dist/{chunk-447a5c0p.js.map → chunk-6n69k945.js.map} +0 -0
- /package/dist/{chunk-0bphap9y.js.map → chunk-6p0pastb.js.map} +0 -0
- /package/dist/{chunk-431pyp2c.js.map → chunk-6y0mkhex.js.map} +0 -0
- /package/dist/{chunk-s7jg7pmn.js.map → chunk-bab05bhg.js.map} +0 -0
- /package/dist/{chunk-q5e5tv4b.js.map → chunk-c844dkwd.js.map} +0 -0
- /package/dist/{chunk-cfj9dfbb.js.map → chunk-d2m879s4.js.map} +0 -0
- /package/dist/{chunk-q7gn29y3.js.map → chunk-dp0cdtj2.js.map} +0 -0
- /package/dist/{chunk-br3k6qbf.js.map → chunk-fm62y49k.js.map} +0 -0
- /package/dist/{chunk-vvxtn22d.js.map → chunk-g663fahq.js.map} +0 -0
- /package/dist/{chunk-rmakanzx.js.map → chunk-h33shhq6.js.map} +0 -0
- /package/dist/{chunk-d09e3rax.js.map → chunk-hwarjrgf.js.map} +0 -0
- /package/dist/{chunk-vf57cr4t.js.map → chunk-hyesv9dv.js.map} +0 -0
- /package/dist/{chunk-5vems3nx.js.map → chunk-m2nevja0.js.map} +0 -0
- /package/dist/{chunk-x9v4cx1d.js.map → chunk-m36fw8ft.js.map} +0 -0
- /package/dist/{chunk-a40ad1ft.js.map → chunk-mbsbxarb.js.map} +0 -0
- /package/dist/{chunk-6aawea28.js.map → chunk-n8q5j6y5.js.map} +0 -0
- /package/dist/{chunk-d7dnxdep.js.map → chunk-n9zpx9c6.js.map} +0 -0
- /package/dist/{chunk-xvsc5m8n.js.map → chunk-npcr0228.js.map} +0 -0
- /package/dist/{chunk-y5tah2kf.js.map → chunk-q4pmvkg0.js.map} +0 -0
- /package/dist/{chunk-d5rjr8c0.js.map → chunk-vabga7fk.js.map} +0 -0
|
@@ -1,26 +1,57 @@
|
|
|
1
1
|
import { isDeepStrictEqual } from "node:util"
|
|
2
|
+
import { createAgentMessageId, createCopiedAgentContextCheckpointId } from "../../agents/ids"
|
|
2
3
|
import { AGENT_REASONING_LEVELS } from "../../agents/types"
|
|
4
|
+
import type { Principal, UserPrincipal } from "../../auth"
|
|
5
|
+
import { isFileRef } from "../../blob-storage/validation"
|
|
3
6
|
import { isJsonObject, isPlainRecord } from "../../json"
|
|
7
|
+
import { isLanguageModelTier, LANGUAGE_MODEL_TIERS } from "../../models/catalog"
|
|
4
8
|
import { isModelReasoning } from "../../models/language-model"
|
|
5
9
|
import type { ExecutionRecord, ExecutionStorage } from "../executions"
|
|
6
10
|
import { findAgentRunExecution } from "../executions/run-link"
|
|
7
11
|
import { AgentStorageError } from "./errors"
|
|
8
12
|
import type {
|
|
13
|
+
AddAgentThreadParticipantsInput,
|
|
14
|
+
AgentApprovalCall,
|
|
15
|
+
AgentApprovalMode,
|
|
16
|
+
AgentApprovalRecord,
|
|
17
|
+
AgentApprovalStatus,
|
|
9
18
|
AgentContextCheckpointRecord,
|
|
19
|
+
AgentMemoryChange,
|
|
10
20
|
AgentMessageRecord,
|
|
11
21
|
AgentRunRecord,
|
|
22
|
+
AgentThreadParticipantRecord,
|
|
12
23
|
AgentThreadRecord,
|
|
13
24
|
AgentThreadSandboxParams,
|
|
14
25
|
AgentThreadSandboxState,
|
|
15
26
|
ConversationAgentRunSpec,
|
|
16
27
|
CreateAgentContextCheckpointInput,
|
|
17
28
|
CreateSubagentRunInput,
|
|
29
|
+
FinishAgentRunInput,
|
|
30
|
+
ForkAgentThreadInput,
|
|
31
|
+
ListAgentApprovalsInput,
|
|
32
|
+
RequestAgentApprovalInput,
|
|
33
|
+
SaveAgentMemoryInput,
|
|
34
|
+
StopAgentApprovalsInput,
|
|
35
|
+
SubagentRunFile,
|
|
18
36
|
SubagentRunRecord,
|
|
19
37
|
SubagentRunResult,
|
|
20
38
|
TransitionAgentThreadSandboxInput,
|
|
21
39
|
} from "./types"
|
|
40
|
+
import {
|
|
41
|
+
AGENT_APPROVAL_MODES,
|
|
42
|
+
AGENT_HOLDING_APPROVAL_MODES,
|
|
43
|
+
AGENT_MEMORY_HISTORY_DAYS,
|
|
44
|
+
} from "./types"
|
|
45
|
+
|
|
46
|
+
const SANDBOX_NAME_PATTERN = /^[a-zA-Z0-9-]{1,80}$/
|
|
22
47
|
|
|
23
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Shared state machine. Providers must lock the run, then thread, around this decision/write.
|
|
50
|
+
*
|
|
51
|
+
* A conversation has a workspace once its sandbox is configured. A sub-agent's thread may keep a
|
|
52
|
+
* blank one while the sub-agent pauses, fenced by the thread's active run as a turn's is. Its
|
|
53
|
+
* next run starts a fresh one where a conversation's would need an explicit recreation.
|
|
54
|
+
*/
|
|
24
55
|
export function transitionAgentThreadSandbox(
|
|
25
56
|
thread: AgentThreadRecord | null,
|
|
26
57
|
run: AgentRunRecord | null,
|
|
@@ -29,8 +60,10 @@ export function transitionAgentThreadSandbox(
|
|
|
29
60
|
const fail = (message: string): never => {
|
|
30
61
|
throw new AgentStorageError("invalid_state", `[Sixb] Sandbox ${message}`)
|
|
31
62
|
}
|
|
32
|
-
if (!thread
|
|
33
|
-
|
|
63
|
+
if (!thread || (!thread.sandboxParams && thread.kind !== "subagent")) {
|
|
64
|
+
return fail("is not configured on this thread.")
|
|
65
|
+
}
|
|
66
|
+
if (!SANDBOX_NAME_PATTERN.test(input.name)) return fail("name is invalid.")
|
|
34
67
|
const state = thread.sandboxState
|
|
35
68
|
if (input.action === "recreate") {
|
|
36
69
|
if (thread.activeRunId !== null) return fail("cannot be recreated during an active run.")
|
|
@@ -47,7 +80,7 @@ export function transitionAgentThreadSandbox(
|
|
|
47
80
|
}
|
|
48
81
|
}
|
|
49
82
|
if (
|
|
50
|
-
run
|
|
83
|
+
!run ||
|
|
51
84
|
run.threadId !== thread.id ||
|
|
52
85
|
run.status !== "running" ||
|
|
53
86
|
thread.activeRunId !== run.id ||
|
|
@@ -59,6 +92,9 @@ export function transitionAgentThreadSandbox(
|
|
|
59
92
|
}
|
|
60
93
|
if (input.action === "acquire") {
|
|
61
94
|
if (state && state.status !== "new" && state.status !== "ready") {
|
|
95
|
+
if (thread.kind === "subagent" && state.name !== input.name) {
|
|
96
|
+
return startSubagentWorkspaceAgain(input)
|
|
97
|
+
}
|
|
62
98
|
return fail("requires recovery; previous operations may still be in flight.")
|
|
63
99
|
}
|
|
64
100
|
if (state && state.name !== input.name) return fail("name changed.")
|
|
@@ -88,7 +124,7 @@ export function transitionAgentThreadSandbox(
|
|
|
88
124
|
if (
|
|
89
125
|
!state.initialized ||
|
|
90
126
|
input.nextName === state.name ||
|
|
91
|
-
|
|
127
|
+
!SANDBOX_NAME_PATTERN.test(input.nextName)
|
|
92
128
|
) {
|
|
93
129
|
return fail("replacement requires initialized state and a fresh valid name.")
|
|
94
130
|
}
|
|
@@ -110,6 +146,28 @@ export function transitionAgentThreadSandbox(
|
|
|
110
146
|
}
|
|
111
147
|
}
|
|
112
148
|
|
|
149
|
+
/**
|
|
150
|
+
* A sub-agent's thread whose workspace an ended run left destroyed, unsaved or in doubt: the run
|
|
151
|
+
* that continues it starts from a fresh one, under a new name, and is told its files were reset.
|
|
152
|
+
* Nobody can recreate a sub-agent's workspace, and the thread's single active run is this one, so
|
|
153
|
+
* whatever the old name still holds is never opened again.
|
|
154
|
+
*/
|
|
155
|
+
function startSubagentWorkspaceAgain(
|
|
156
|
+
input: Extract<TransitionAgentThreadSandboxInput, { readonly action: "acquire" }>
|
|
157
|
+
): AgentThreadSandboxState {
|
|
158
|
+
if (!/^[a-f0-9]{64}$/.test(input.sourceFingerprint)) {
|
|
159
|
+
throw new AgentStorageError("invalid_state", "[Sixb] Sandbox source fingerprint is invalid.")
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
name: input.name,
|
|
163
|
+
status: "busy",
|
|
164
|
+
initialized: false,
|
|
165
|
+
resetAt: new Date().toISOString(),
|
|
166
|
+
sourceFingerprint: input.sourceFingerprint,
|
|
167
|
+
owner: { runId: input.runId, executionToken: input.executionToken },
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
113
171
|
/** Snapshot application parameters independently of worker-owned sandbox state. */
|
|
114
172
|
export function snapshotAgentThreadSandboxParams(value: unknown): AgentThreadSandboxParams {
|
|
115
173
|
if (!isPlainRecord(value) || !isJsonObject(value)) {
|
|
@@ -121,6 +179,192 @@ export function snapshotAgentThreadSandboxParams(value: unknown): AgentThreadSan
|
|
|
121
179
|
return structuredClone(value)
|
|
122
180
|
}
|
|
123
181
|
|
|
182
|
+
/**
|
|
183
|
+
* The users an add actually adds: those not already taking part. Providers call it under the
|
|
184
|
+
* thread's lock with the participants they read there, so the cap holds across concurrent adds.
|
|
185
|
+
* Who may be added is the caller's decision; this enforces only the cap.
|
|
186
|
+
*/
|
|
187
|
+
export function participantsToAdd(
|
|
188
|
+
input: AddAgentThreadParticipantsInput,
|
|
189
|
+
existing: readonly AgentThreadParticipantRecord[],
|
|
190
|
+
prefix = "Sixb"
|
|
191
|
+
): readonly UserPrincipal[] {
|
|
192
|
+
const taken = new Set(existing.map((participant) => participant.principal.id))
|
|
193
|
+
const added = input.principals.filter((principal) => !taken.has(principal.id))
|
|
194
|
+
|
|
195
|
+
if (existing.length + added.length > input.maxParticipants) {
|
|
196
|
+
throw new AgentStorageError(
|
|
197
|
+
"participant_limit",
|
|
198
|
+
`[${prefix}] Agent thread '${input.threadId}' can have at most ${input.maxParticipants} participants.`
|
|
199
|
+
)
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
return added
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* Participants oldest first, then by user id and thread id compared as UTF-8 bytes: the order
|
|
207
|
+
* PostgreSQL's "C" collation and SQLite's binary one give, so every provider lists them alike.
|
|
208
|
+
*/
|
|
209
|
+
export function compareAgentThreadParticipants(
|
|
210
|
+
left: AgentThreadParticipantRecord,
|
|
211
|
+
right: AgentThreadParticipantRecord
|
|
212
|
+
): number {
|
|
213
|
+
return (
|
|
214
|
+
left.addedAt.getTime() - right.addedAt.getTime() ||
|
|
215
|
+
Buffer.compare(Buffer.from(left.principal.id), Buffer.from(right.principal.id)) ||
|
|
216
|
+
Buffer.compare(Buffer.from(left.threadId), Buffer.from(right.threadId))
|
|
217
|
+
)
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
const ARTIFACT_ID_TOKEN = /art_[0-9a-z]{10}/g
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Text with each artifact id the copies map replaced by its copy's: a copied message's parts, as
|
|
224
|
+
* JSON, or a summary. Ids are fixed-length tokens, so one never matches inside another.
|
|
225
|
+
*/
|
|
226
|
+
export function remapArtifactIds(
|
|
227
|
+
text: string,
|
|
228
|
+
copies: Readonly<Record<string, string>> | undefined
|
|
229
|
+
): string {
|
|
230
|
+
if (!copies || Object.keys(copies).length === 0) return text
|
|
231
|
+
return text.replace(ARTIFACT_ID_TOKEN, (id) => copies[id] ?? id)
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
/** What a fork reads from its source thread, inside the provider's transaction. */
|
|
235
|
+
export interface AgentThreadForkSource {
|
|
236
|
+
/** The active run's trigger message, when a turn is running. */
|
|
237
|
+
readonly triggerMessageId?: string
|
|
238
|
+
/**
|
|
239
|
+
* Every message of the source, ordered by ascending `seq`. `counted: false` marks one the thread
|
|
240
|
+
* does not count ({@link countsAsThreadMessage}); a provider reads it from the parts it copies.
|
|
241
|
+
*/
|
|
242
|
+
readonly messages: readonly (Pick<AgentMessageRecord, "id" | "seq"> & {
|
|
243
|
+
readonly counted?: boolean
|
|
244
|
+
})[]
|
|
245
|
+
/** Every checkpoint of the source, latest first, in `getLatest` order. */
|
|
246
|
+
readonly checkpoints: readonly AgentContextCheckpointRecord[]
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
/** The rows a provider writes for a fork. */
|
|
250
|
+
export interface AgentThreadForkPlan {
|
|
251
|
+
readonly thread: AgentThreadRecord
|
|
252
|
+
/** The source messages to copy, in `seq` order, with the id of each copy. */
|
|
253
|
+
readonly messages: readonly { readonly sourceId: string; readonly id: string }[]
|
|
254
|
+
readonly checkpoint?: AgentContextCheckpointRecord
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
/**
|
|
258
|
+
* Decide what a fork copies. While a turn is running, the fork copies what came before its trigger
|
|
259
|
+
* message, so the copy never has a gap; otherwise it copies everything. Copies keep their `seq`,
|
|
260
|
+
* so the latest checkpoint whose observed head was copied projects unchanged.
|
|
261
|
+
*
|
|
262
|
+
* The plan mints the ids of the copies: which messages are copied is only known here, under the
|
|
263
|
+
* provider's lock, so the caller cannot supply them.
|
|
264
|
+
*/
|
|
265
|
+
/**
|
|
266
|
+
* Whether a message counts in its thread's `messageCount`, which reads as what the conversation
|
|
267
|
+
* shows. The message Sixb writes to resume a paused turn carries only how its calls ended, which the
|
|
268
|
+
* chat shows on their cards: it is not counted.
|
|
269
|
+
*/
|
|
270
|
+
export function countsAsThreadMessage(message: Pick<AgentMessageRecord, "parts">): boolean {
|
|
271
|
+
return !(
|
|
272
|
+
message.parts.length > 0 && message.parts.every((part) => part.type === "approval-outcome")
|
|
273
|
+
)
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export function planAgentThreadFork(
|
|
277
|
+
input: ForkAgentThreadInput,
|
|
278
|
+
source: AgentThreadForkSource,
|
|
279
|
+
prefix = "Sixb"
|
|
280
|
+
): AgentThreadForkPlan {
|
|
281
|
+
const createdAt = new Date(input.createdAt ?? new Date())
|
|
282
|
+
const sandboxState = forkedSandboxState(input, createdAt, prefix)
|
|
283
|
+
|
|
284
|
+
const trigger = source.messages.find((message) => message.id === source.triggerMessageId)
|
|
285
|
+
const copied =
|
|
286
|
+
trigger === undefined
|
|
287
|
+
? source.messages
|
|
288
|
+
: source.messages.filter((message) => message.seq < trigger.seq)
|
|
289
|
+
const lastCopiedSeq = copied.at(-1)?.seq ?? 0
|
|
290
|
+
|
|
291
|
+
const checkpoint = source.checkpoints.find(
|
|
292
|
+
(candidate) => candidate.observedHeadSeq <= lastCopiedSeq
|
|
293
|
+
)
|
|
294
|
+
|
|
295
|
+
const thread: AgentThreadRecord = {
|
|
296
|
+
id: input.id,
|
|
297
|
+
projectId: input.projectId,
|
|
298
|
+
kind: "conversation",
|
|
299
|
+
ownerPrincipal: structuredClone(input.ownerPrincipal),
|
|
300
|
+
...(input.title === undefined ? {} : { title: input.title }),
|
|
301
|
+
...(input.sandboxParams === undefined
|
|
302
|
+
? {}
|
|
303
|
+
: { sandboxParams: snapshotAgentThreadSandboxParams(input.sandboxParams) }),
|
|
304
|
+
...(sandboxState === undefined ? {} : { sandboxState }),
|
|
305
|
+
status: "active",
|
|
306
|
+
activeRunId: null,
|
|
307
|
+
// No `lastMessageAt` until the fork's first new message: threads sort by it, else by their
|
|
308
|
+
// creation, so a fork of an old conversation sorts with what its owner just did.
|
|
309
|
+
messageCount: copied.filter((message) => message.counted !== false).length,
|
|
310
|
+
createdAt,
|
|
311
|
+
updatedAt: createdAt,
|
|
312
|
+
}
|
|
313
|
+
|
|
314
|
+
return {
|
|
315
|
+
thread,
|
|
316
|
+
messages: copied.map((message) => ({ sourceId: message.id, id: createAgentMessageId() })),
|
|
317
|
+
...(checkpoint === undefined
|
|
318
|
+
? {}
|
|
319
|
+
: {
|
|
320
|
+
checkpoint: {
|
|
321
|
+
...copyCheckpoint(checkpoint, input.id),
|
|
322
|
+
summary: remapArtifactIds(checkpoint.summary, input.artifactCopies),
|
|
323
|
+
},
|
|
324
|
+
}),
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* The copy starts the fork's chain: its predecessors stay in the source. Its `createdByRunId`
|
|
330
|
+
* still names the source run, under a foreign key that restricts deletion: deleting runs or
|
|
331
|
+
* threads later must account for the forks that copied their checkpoints.
|
|
332
|
+
*/
|
|
333
|
+
function copyCheckpoint(
|
|
334
|
+
checkpoint: AgentContextCheckpointRecord,
|
|
335
|
+
threadId: string
|
|
336
|
+
): AgentContextCheckpointRecord {
|
|
337
|
+
const { previousCheckpointId: _previous, ...copied } = structuredClone(checkpoint)
|
|
338
|
+
return { ...copied, id: createCopiedAgentContextCheckpointId(), threadId }
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/** A fresh sandbox, reset at the fork, so the Agent knows earlier local files are not there. */
|
|
342
|
+
function forkedSandboxState(
|
|
343
|
+
input: ForkAgentThreadInput,
|
|
344
|
+
createdAt: Date,
|
|
345
|
+
prefix: string
|
|
346
|
+
): AgentThreadSandboxState | undefined {
|
|
347
|
+
if ((input.sandboxParams === undefined) !== (input.sandboxName === undefined)) {
|
|
348
|
+
throw new AgentStorageError(
|
|
349
|
+
"invalid_input",
|
|
350
|
+
`[${prefix}] A forked thread needs a sandbox name exactly when it has sandbox params.`
|
|
351
|
+
)
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (input.sandboxName === undefined) return undefined
|
|
355
|
+
|
|
356
|
+
if (!SANDBOX_NAME_PATTERN.test(input.sandboxName)) {
|
|
357
|
+
throw new AgentStorageError("invalid_input", `[${prefix}] Sandbox name is invalid.`)
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
return {
|
|
361
|
+
name: input.sandboxName,
|
|
362
|
+
status: "new",
|
|
363
|
+
initialized: false,
|
|
364
|
+
resetAt: createdAt.toISOString(),
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
124
368
|
/** Validate the provider-neutral model selection captured for a conversational turn. */
|
|
125
369
|
export function assertConversationAgentRunSpec(
|
|
126
370
|
spec: ConversationAgentRunSpec,
|
|
@@ -149,6 +393,20 @@ export function assertConversationAgentRunSpec(
|
|
|
149
393
|
`[${prefix}] Conversational Agent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
|
|
150
394
|
)
|
|
151
395
|
}
|
|
396
|
+
|
|
397
|
+
if (spec.tier !== undefined && !isLanguageModelTier(spec.tier)) {
|
|
398
|
+
throw new AgentStorageError(
|
|
399
|
+
"invalid_input",
|
|
400
|
+
`[${prefix}] Conversational Agent run 'tier' must be one of: ${LANGUAGE_MODEL_TIERS.join(", ")}.`
|
|
401
|
+
)
|
|
402
|
+
}
|
|
403
|
+
if (spec.tierProbabilities !== undefined && !isTierProbabilities(spec.tierProbabilities)) {
|
|
404
|
+
throw new AgentStorageError(
|
|
405
|
+
"invalid_input",
|
|
406
|
+
`[${prefix}] Conversational Agent run 'tierProbabilities' must give each tier a probability.`
|
|
407
|
+
)
|
|
408
|
+
}
|
|
409
|
+
|
|
152
410
|
for (const [name, value] of [
|
|
153
411
|
["timeZone", spec.timeZone],
|
|
154
412
|
["locale", spec.locale],
|
|
@@ -160,12 +418,48 @@ export function assertConversationAgentRunSpec(
|
|
|
160
418
|
)
|
|
161
419
|
}
|
|
162
420
|
}
|
|
421
|
+
assertApprovalModeField(spec.approvalMode, "Conversational Agent run", prefix)
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
export function isAgentApprovalMode(value: unknown): value is AgentApprovalMode {
|
|
425
|
+
return (AGENT_APPROVAL_MODES as readonly unknown[]).includes(value)
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
/** Validate a mode a store is asked to keep, before it writes anything. */
|
|
429
|
+
export function assertAgentApprovalModeInput(
|
|
430
|
+
mode: unknown,
|
|
431
|
+
prefix = "Sixb"
|
|
432
|
+
): asserts mode is AgentApprovalMode {
|
|
433
|
+
if (!isAgentApprovalMode(mode)) {
|
|
434
|
+
throw new AgentStorageError(
|
|
435
|
+
"invalid_input",
|
|
436
|
+
`[${prefix}] Agent approval mode must be one of: ${AGENT_APPROVAL_MODES.join(", ")}.`
|
|
437
|
+
)
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
function assertApprovalModeField(value: unknown, owner: string, prefix: string): void {
|
|
442
|
+
if (value !== undefined && !isAgentApprovalMode(value)) {
|
|
443
|
+
throw new AgentStorageError(
|
|
444
|
+
"invalid_input",
|
|
445
|
+
`[${prefix}] ${owner} 'approvalMode' must be one of: ${AGENT_APPROVAL_MODES.join(", ")}.`
|
|
446
|
+
)
|
|
447
|
+
}
|
|
163
448
|
}
|
|
164
449
|
|
|
165
450
|
function isRecord(value: unknown): value is Readonly<Record<string, unknown>> {
|
|
166
451
|
return typeof value === "object" && value !== null && !Array.isArray(value)
|
|
167
452
|
}
|
|
168
453
|
|
|
454
|
+
function isTierProbabilities(value: unknown): boolean {
|
|
455
|
+
if (!isRecord(value) || Object.keys(value).length !== LANGUAGE_MODEL_TIERS.length) return false
|
|
456
|
+
|
|
457
|
+
return LANGUAGE_MODEL_TIERS.every((tier) => {
|
|
458
|
+
const probability = value[tier]
|
|
459
|
+
return typeof probability === "number" && probability >= 0 && probability <= 1
|
|
460
|
+
})
|
|
461
|
+
}
|
|
462
|
+
|
|
169
463
|
/** Validate the semantic link between a conversational Agent run and its immutable execution. */
|
|
170
464
|
export async function assertAgentRunExecution(input: {
|
|
171
465
|
readonly executions: ExecutionStorage
|
|
@@ -201,6 +495,8 @@ export function assertCreateSubagentRunInput(input: CreateSubagentRunInput, pref
|
|
|
201
495
|
["model.provider", input.spec.model.provider],
|
|
202
496
|
["model.modelId", input.spec.model.modelId],
|
|
203
497
|
["task", input.spec.task],
|
|
498
|
+
["thread.id", input.thread.id],
|
|
499
|
+
["trigger.id", input.trigger.id],
|
|
204
500
|
] as const) {
|
|
205
501
|
if (value.trim().length === 0) {
|
|
206
502
|
throw new AgentStorageError(
|
|
@@ -238,12 +534,22 @@ export function assertCreateSubagentRunInput(input: CreateSubagentRunInput, pref
|
|
|
238
534
|
`[${prefix}] Subagent reasoning must be one of: ${AGENT_REASONING_LEVELS.join(", ")}, or a nonnegative budgetTokens object.`
|
|
239
535
|
)
|
|
240
536
|
}
|
|
537
|
+
assertApprovalModeField(input.spec.approvalMode, "Subagent run", prefix)
|
|
538
|
+
|
|
539
|
+
assertSubagentRunFiles(input.spec.files, "spec.files", prefix)
|
|
540
|
+
|
|
241
541
|
if (input.spec.toolNames.some((name) => !name.trim())) {
|
|
242
542
|
throw new AgentStorageError(
|
|
243
543
|
"invalid_input",
|
|
244
544
|
`[${prefix}] Subagent run tool names must not be empty.`
|
|
245
545
|
)
|
|
246
546
|
}
|
|
547
|
+
if (!Array.isArray(input.trigger.parts) || input.trigger.parts.length === 0) {
|
|
548
|
+
throw new AgentStorageError(
|
|
549
|
+
"invalid_input",
|
|
550
|
+
`[${prefix}] Subagent run trigger must have at least one part.`
|
|
551
|
+
)
|
|
552
|
+
}
|
|
247
553
|
if (input.createdAt && !Number.isFinite(input.createdAt.getTime())) {
|
|
248
554
|
throw new AgentStorageError(
|
|
249
555
|
"invalid_input",
|
|
@@ -264,22 +570,175 @@ export function subagentRunMatchesCreateInput(
|
|
|
264
570
|
run.executionId === input.executionId &&
|
|
265
571
|
run.parentRunId === input.parentRunId &&
|
|
266
572
|
run.spawnKey === input.spawnKey &&
|
|
573
|
+
run.threadId === input.thread.id &&
|
|
267
574
|
isDeepStrictEqual(run.spec, input.spec)
|
|
268
575
|
)
|
|
269
576
|
}
|
|
270
577
|
|
|
271
|
-
/**
|
|
578
|
+
/** Refuse what only a conversation does on a sub-agent's thread. */
|
|
579
|
+
export function assertConversationThreadRow(
|
|
580
|
+
thread: Pick<AgentThreadRecord, "id" | "kind">,
|
|
581
|
+
/** What is refused, completing "only a conversation …". */
|
|
582
|
+
operation: string,
|
|
583
|
+
prefix = "Sixb"
|
|
584
|
+
): void {
|
|
585
|
+
if (thread.kind === "conversation") return
|
|
586
|
+
throw new AgentStorageError(
|
|
587
|
+
"thread_not_conversation",
|
|
588
|
+
`[${prefix}] Agent thread '${thread.id}' is a sub-agent's: only a conversation ${operation}.`
|
|
589
|
+
)
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* The thread a child's first run creates. Its conversation's owner owns it, and its run is active
|
|
594
|
+
* in it from the start: the trigger is its first and only message.
|
|
595
|
+
*/
|
|
596
|
+
export function newSubagentThreadRecord(
|
|
597
|
+
input: CreateSubagentRunInput,
|
|
598
|
+
conversation: { readonly id: string; readonly ownerPrincipal: Principal },
|
|
599
|
+
createdAt: Date
|
|
600
|
+
): AgentThreadRecord {
|
|
601
|
+
return {
|
|
602
|
+
id: input.thread.id,
|
|
603
|
+
projectId: input.projectId,
|
|
604
|
+
kind: "subagent",
|
|
605
|
+
parent: { threadId: conversation.id, spawnedBy: input.parentRunId, key: input.spawnKey },
|
|
606
|
+
ownerPrincipal: structuredClone(conversation.ownerPrincipal),
|
|
607
|
+
status: "active",
|
|
608
|
+
activeRunId: input.id,
|
|
609
|
+
lastMessageAt: createdAt,
|
|
610
|
+
messageCount: 1,
|
|
611
|
+
createdAt,
|
|
612
|
+
updatedAt: createdAt,
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
|
|
616
|
+
/**
|
|
617
|
+
* A later run of a child goes into its thread: the same child of the same conversation, and only
|
|
618
|
+
* once the thread's previous run has ended, as in a conversation.
|
|
619
|
+
*/
|
|
620
|
+
export function assertSubagentThreadTakesRun(
|
|
621
|
+
thread: AgentThreadRecord | null,
|
|
622
|
+
input: CreateSubagentRunInput,
|
|
623
|
+
conversationId: string,
|
|
624
|
+
prefix = "Sixb"
|
|
625
|
+
): asserts thread is AgentThreadRecord {
|
|
626
|
+
if (!thread) {
|
|
627
|
+
throw new AgentStorageError(
|
|
628
|
+
"thread_not_found",
|
|
629
|
+
`[${prefix}] Agent thread '${input.thread.id}' not found for project '${input.projectId}'.`
|
|
630
|
+
)
|
|
631
|
+
}
|
|
632
|
+
if (
|
|
633
|
+
thread.kind !== "subagent" ||
|
|
634
|
+
thread.parent?.threadId !== conversationId ||
|
|
635
|
+
thread.parent.key !== input.spawnKey
|
|
636
|
+
) {
|
|
637
|
+
throw new AgentStorageError(
|
|
638
|
+
"invalid_input",
|
|
639
|
+
`[${prefix}] Agent thread '${thread.id}' is not the thread of child '${input.spawnKey}' of this conversation.`
|
|
640
|
+
)
|
|
641
|
+
}
|
|
642
|
+
if (thread.activeRunId !== null) {
|
|
643
|
+
throw new AgentStorageError(
|
|
644
|
+
"active_run_exists",
|
|
645
|
+
`[${prefix}] Agent thread '${thread.id}' already has an active run '${thread.activeRunId}'.`
|
|
646
|
+
)
|
|
647
|
+
}
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
/**
|
|
651
|
+
* Validate what a finish keeps: a child's result once it succeeded. A child that paused, on its
|
|
652
|
+
* held calls or on a question, may not have answered yet, so its text may be empty. A conversation
|
|
653
|
+
* turn keeps none, and has no parent to wait for.
|
|
654
|
+
*/
|
|
655
|
+
export function assertAgentRunFinishPayload(
|
|
656
|
+
kind: AgentRunRecord["kind"],
|
|
657
|
+
input: FinishAgentRunInput,
|
|
658
|
+
runId: string,
|
|
659
|
+
prefix = "Sixb"
|
|
660
|
+
): void {
|
|
661
|
+
if (kind === "conversation") {
|
|
662
|
+
if (input.status === "succeeded" && input.result !== undefined) {
|
|
663
|
+
throw new AgentStorageError(
|
|
664
|
+
"invalid_input",
|
|
665
|
+
`[${prefix}] Conversational Agent run '${runId}' cannot persist a subagent result.`
|
|
666
|
+
)
|
|
667
|
+
}
|
|
668
|
+
if (input.finishReason === "awaiting_answer") {
|
|
669
|
+
throw new AgentStorageError(
|
|
670
|
+
"invalid_input",
|
|
671
|
+
`[${prefix}] Conversational Agent run '${runId}' has no parent to wait for: only a subagent finishes awaiting_answer.`
|
|
672
|
+
)
|
|
673
|
+
}
|
|
674
|
+
return
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
if (input.status === "succeeded") {
|
|
678
|
+
const paused =
|
|
679
|
+
input.finishReason === "awaiting_approval" || input.finishReason === "awaiting_answer"
|
|
680
|
+
assertSubagentRunResult(input.result, runId, prefix, paused)
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
/**
|
|
685
|
+
* Validate the small durable result returned by a successful child. A child that paused on its held
|
|
686
|
+
* calls may not have answered yet, so its text may be empty.
|
|
687
|
+
*/
|
|
272
688
|
export function assertSubagentRunResult(
|
|
273
689
|
result: SubagentRunResult | undefined,
|
|
274
690
|
runId: string,
|
|
275
|
-
prefix = "Sixb"
|
|
691
|
+
prefix = "Sixb",
|
|
692
|
+
paused = false
|
|
276
693
|
): asserts result is SubagentRunResult {
|
|
277
|
-
if (typeof result?.text !== "string" || result.text.trim().length === 0) {
|
|
694
|
+
if (typeof result?.text !== "string" || (!paused && result.text.trim().length === 0)) {
|
|
278
695
|
throw new AgentStorageError(
|
|
279
696
|
"invalid_input",
|
|
280
697
|
`[${prefix}] Succeeded subagent run '${runId}' requires text.`
|
|
281
698
|
)
|
|
282
699
|
}
|
|
700
|
+
assertSubagentRunFiles(result.files, "result.files", prefix)
|
|
701
|
+
if (
|
|
702
|
+
result.filesError !== undefined &&
|
|
703
|
+
(typeof result.filesError !== "string" || !result.filesError.trim() || result.files?.length)
|
|
704
|
+
) {
|
|
705
|
+
throw new AgentStorageError(
|
|
706
|
+
"invalid_input",
|
|
707
|
+
`[${prefix}] Subagent run '${runId}' result.filesError must say why it returned no files.`
|
|
708
|
+
)
|
|
709
|
+
}
|
|
710
|
+
}
|
|
711
|
+
|
|
712
|
+
/** Each file a parent and its child exchange: a safe relative path, once, and a valid FileRef. */
|
|
713
|
+
function assertSubagentRunFiles(
|
|
714
|
+
files: readonly SubagentRunFile[] | undefined,
|
|
715
|
+
field: string,
|
|
716
|
+
prefix: string
|
|
717
|
+
): void {
|
|
718
|
+
if (files === undefined) return
|
|
719
|
+
|
|
720
|
+
if (!Array.isArray(files)) {
|
|
721
|
+
throw new AgentStorageError(
|
|
722
|
+
"invalid_input",
|
|
723
|
+
`[${prefix}] Subagent run ${field} must be a list.`
|
|
724
|
+
)
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
const paths = new Set<string>()
|
|
728
|
+
for (const file of files) {
|
|
729
|
+
const segments: readonly string[] = typeof file?.path === "string" ? file.path.split("/") : []
|
|
730
|
+
const safe =
|
|
731
|
+
segments.length > 0 &&
|
|
732
|
+
!file.path.includes("\0") &&
|
|
733
|
+
segments.every((segment) => segment !== "" && segment !== "." && segment !== "..")
|
|
734
|
+
if (!safe || paths.has(file.path) || !isFileRef(file.fileRef)) {
|
|
735
|
+
throw new AgentStorageError(
|
|
736
|
+
"invalid_input",
|
|
737
|
+
`[${prefix}] Subagent run ${field} must hold unique relative paths, each with a valid FileRef.`
|
|
738
|
+
)
|
|
739
|
+
}
|
|
740
|
+
paths.add(file.path)
|
|
741
|
+
}
|
|
283
742
|
}
|
|
284
743
|
|
|
285
744
|
/** Validate provider-independent checkpoint fields before entering a storage critical section. */
|
|
@@ -499,3 +958,269 @@ export function agentContextCheckpointMatchesCreateInput(
|
|
|
499
958
|
record.summaryModelId === input.summaryModelId
|
|
500
959
|
)
|
|
501
960
|
}
|
|
961
|
+
|
|
962
|
+
/** Validate the fields of a save that storage relies on, before entering its transaction. */
|
|
963
|
+
export function assertSaveAgentMemoryInput(input: SaveAgentMemoryInput, prefix = "Sixb"): void {
|
|
964
|
+
const fail = (message: string): never => {
|
|
965
|
+
throw new AgentStorageError("invalid_input", `[${prefix}] Agent memory ${message}`)
|
|
966
|
+
}
|
|
967
|
+
if (input.projectId.trim().length === 0) fail("project id must not be empty.")
|
|
968
|
+
if (input.repoId.trim().length === 0) fail("repo id must not be empty.")
|
|
969
|
+
if (!Number.isSafeInteger(input.baseRevision) || input.baseRevision < 0) {
|
|
970
|
+
fail("base revision must be a non-negative integer.")
|
|
971
|
+
}
|
|
972
|
+
if (input.message.trim().length === 0) fail("save message must not be empty.")
|
|
973
|
+
if (input.changes.length === 0) fail("save must change at least one file.")
|
|
974
|
+
const paths = new Set<string>()
|
|
975
|
+
for (const change of input.changes) {
|
|
976
|
+
if (change.path.length === 0) fail("paths must not be empty.")
|
|
977
|
+
if (paths.has(change.path)) fail(`save changes '${change.path}' more than once.`)
|
|
978
|
+
paths.add(change.path)
|
|
979
|
+
}
|
|
980
|
+
if (input.createdAt && !Number.isFinite(input.createdAt.getTime())) {
|
|
981
|
+
fail("save time must be a valid date.")
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
|
|
985
|
+
/** A path's highest-revision version; `contents: null` when that revision deleted it. */
|
|
986
|
+
export interface LatestAgentMemoryFile {
|
|
987
|
+
readonly revision: number
|
|
988
|
+
readonly contents: string | null
|
|
989
|
+
}
|
|
990
|
+
|
|
991
|
+
/**
|
|
992
|
+
* The changes of a save that would overwrite another save's work, as their files are now: every
|
|
993
|
+
* change when the repo is behind the base revision (it was deleted since), otherwise each change
|
|
994
|
+
* whose path was written after the base revision. Ordered by path.
|
|
995
|
+
*/
|
|
996
|
+
export function agentMemoryConflicts(
|
|
997
|
+
input: SaveAgentMemoryInput,
|
|
998
|
+
head: number,
|
|
999
|
+
latest: ReadonlyMap<string, LatestAgentMemoryFile>
|
|
1000
|
+
): AgentMemoryChange[] {
|
|
1001
|
+
return input.changes
|
|
1002
|
+
.filter(
|
|
1003
|
+
(change) =>
|
|
1004
|
+
input.baseRevision > head || (latest.get(change.path)?.revision ?? 0) > input.baseRevision
|
|
1005
|
+
)
|
|
1006
|
+
.map((change) => ({ path: change.path, contents: latest.get(change.path)?.contents ?? null }))
|
|
1007
|
+
.sort((left, right) => compareAgentMemoryPaths(left.path, right.path))
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
/** Code-unit order, as SQLite and Postgres (with `COLLATE "C"`) compare paths. */
|
|
1011
|
+
export function compareAgentMemoryPaths(left: string, right: string): number {
|
|
1012
|
+
return left < right ? -1 : left > right ? 1 : 0
|
|
1013
|
+
}
|
|
1014
|
+
|
|
1015
|
+
/** File versions written before this time leave the history once a newer version exists. */
|
|
1016
|
+
export function agentMemoryHistoryCutoff(savedAt: Date): Date {
|
|
1017
|
+
return new Date(savedAt.getTime() - AGENT_MEMORY_HISTORY_DAYS * 24 * 60 * 60 * 1000)
|
|
1018
|
+
}
|
|
1019
|
+
|
|
1020
|
+
// ── approvals ─────────────────────────────────────────────────────────────────────────────────
|
|
1021
|
+
|
|
1022
|
+
/** An approval that still answers for its call key: a settled one asks again. */
|
|
1023
|
+
export const LIVE_AGENT_APPROVAL_STATUSES = [
|
|
1024
|
+
"pending",
|
|
1025
|
+
"approved",
|
|
1026
|
+
"denied",
|
|
1027
|
+
] as const satisfies readonly AgentApprovalStatus[]
|
|
1028
|
+
|
|
1029
|
+
/**
|
|
1030
|
+
* Whether an approval keeps its run paused: still waiting, or decided and not reported to the model
|
|
1031
|
+
* yet. A run finishes `awaiting_approval` only while it holds one.
|
|
1032
|
+
*/
|
|
1033
|
+
export function agentApprovalHoldsRun(approval: AgentApprovalRecord, runId: string): boolean {
|
|
1034
|
+
return (
|
|
1035
|
+
(approval.runId === runId || approval.callerRunId === runId) &&
|
|
1036
|
+
(LIVE_AGENT_APPROVAL_STATUSES as readonly string[]).includes(approval.status) &&
|
|
1037
|
+
approval.reportedInMessageId === undefined
|
|
1038
|
+
)
|
|
1039
|
+
}
|
|
1040
|
+
|
|
1041
|
+
/** Refuse a paused finish that holds no call, or a paused finish that did not succeed. */
|
|
1042
|
+
export function assertAwaitingApprovalFinish(input: {
|
|
1043
|
+
readonly runId: string
|
|
1044
|
+
readonly status: string
|
|
1045
|
+
readonly holdsApproval: boolean
|
|
1046
|
+
readonly prefix?: string
|
|
1047
|
+
}): void {
|
|
1048
|
+
const prefix = input.prefix ?? "Sixb"
|
|
1049
|
+
if (input.status !== "succeeded") {
|
|
1050
|
+
throw new AgentStorageError(
|
|
1051
|
+
"invalid_input",
|
|
1052
|
+
`[${prefix}] Agent run '${input.runId}' can only pause for approval when it succeeds.`
|
|
1053
|
+
)
|
|
1054
|
+
}
|
|
1055
|
+
if (!input.holdsApproval) {
|
|
1056
|
+
throw new AgentStorageError(
|
|
1057
|
+
"invalid_input",
|
|
1058
|
+
`[${prefix}] Agent run '${input.runId}' holds no call waiting for approval, so it cannot finish awaiting one.`
|
|
1059
|
+
)
|
|
1060
|
+
}
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
/**
|
|
1064
|
+
* Whether a run can have approvals: its mode holds some calls. A turn from before approval modes,
|
|
1065
|
+
* or in `auto`, holds none, and neither do its children, which copy its mode.
|
|
1066
|
+
*/
|
|
1067
|
+
export function agentRunMayHoldCalls(run: AgentRunRecord): boolean {
|
|
1068
|
+
return (AGENT_HOLDING_APPROVAL_MODES as readonly unknown[]).includes(run.spec?.approvalMode)
|
|
1069
|
+
}
|
|
1070
|
+
|
|
1071
|
+
/** Whether a stop request reaches this approval. */
|
|
1072
|
+
export function agentApprovalStops(
|
|
1073
|
+
approval: AgentApprovalRecord,
|
|
1074
|
+
input: StopAgentApprovalsInput
|
|
1075
|
+
): boolean {
|
|
1076
|
+
return (
|
|
1077
|
+
approval.projectId === input.projectId &&
|
|
1078
|
+
approval.threadId === input.threadId &&
|
|
1079
|
+
approval.reportedInMessageId === undefined &&
|
|
1080
|
+
(input.runId === undefined || approval.runId === input.runId) &&
|
|
1081
|
+
(input.requestedBy === undefined ||
|
|
1082
|
+
(approval.requestedBy.type === input.requestedBy.type &&
|
|
1083
|
+
approval.requestedBy.id === input.requestedBy.id))
|
|
1084
|
+
)
|
|
1085
|
+
}
|
|
1086
|
+
|
|
1087
|
+
/** Whether a repair pass has work on this approval; providers run the same filter in SQL. */
|
|
1088
|
+
export function agentApprovalRepairable(
|
|
1089
|
+
approval: AgentApprovalRecord,
|
|
1090
|
+
claimableBefore: Date
|
|
1091
|
+
): boolean {
|
|
1092
|
+
const unfinished =
|
|
1093
|
+
approval.status === "approved" &&
|
|
1094
|
+
approval.outcome === undefined &&
|
|
1095
|
+
(approval.executionClaimedAt ?? approval.decidedAt ?? new Date(0)) <= claimableBefore
|
|
1096
|
+
const resumable =
|
|
1097
|
+
(approval.status === "approved" || approval.status === "denied") &&
|
|
1098
|
+
approval.reportedInMessageId === undefined &&
|
|
1099
|
+
approval.turnStoppedAt === undefined
|
|
1100
|
+
return unfinished || resumable
|
|
1101
|
+
}
|
|
1102
|
+
|
|
1103
|
+
/** Whether an approved call without an outcome can be claimed now. */
|
|
1104
|
+
export function agentApprovalClaimable(approval: AgentApprovalRecord, staleBefore: Date): boolean {
|
|
1105
|
+
return (
|
|
1106
|
+
approval.status === "approved" &&
|
|
1107
|
+
approval.outcome === undefined &&
|
|
1108
|
+
(approval.executionClaimedAt ?? approval.decidedAt ?? new Date(0)) <= staleBefore
|
|
1109
|
+
)
|
|
1110
|
+
}
|
|
1111
|
+
|
|
1112
|
+
/** The run id the call names: unique among a thread's live approvals. */
|
|
1113
|
+
export function agentApprovalCallKey(call: AgentApprovalCall): string {
|
|
1114
|
+
return call.kind === "action" ? call.actionRunId : call.workflowRunId
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
export function assertRequestAgentApprovalInput(
|
|
1118
|
+
input: RequestAgentApprovalInput,
|
|
1119
|
+
prefix = "Sixb"
|
|
1120
|
+
): void {
|
|
1121
|
+
for (const [name, value] of [
|
|
1122
|
+
["id", input.id],
|
|
1123
|
+
["projectId", input.projectId],
|
|
1124
|
+
["runId", input.runId],
|
|
1125
|
+
["callerRunId", input.callerRunId],
|
|
1126
|
+
["executionToken", input.executionToken],
|
|
1127
|
+
["call key", agentApprovalCallKey(input.call)],
|
|
1128
|
+
] as const) {
|
|
1129
|
+
if (typeof value !== "string" || value.trim().length === 0) {
|
|
1130
|
+
throw new AgentStorageError(
|
|
1131
|
+
"invalid_input",
|
|
1132
|
+
`[${prefix}] Agent approval '${name}' must not be empty.`
|
|
1133
|
+
)
|
|
1134
|
+
}
|
|
1135
|
+
}
|
|
1136
|
+
if (!(AGENT_HOLDING_APPROVAL_MODES as readonly unknown[]).includes(input.mode)) {
|
|
1137
|
+
throw new AgentStorageError(
|
|
1138
|
+
"invalid_input",
|
|
1139
|
+
`[${prefix}] Agent approval mode must be one of: ${AGENT_HOLDING_APPROVAL_MODES.join(", ")}.`
|
|
1140
|
+
)
|
|
1141
|
+
}
|
|
1142
|
+
}
|
|
1143
|
+
|
|
1144
|
+
/**
|
|
1145
|
+
* Fence a held call: the caller run is running with the request's token, and is the turn or one of
|
|
1146
|
+
* its children. Returns the turn's thread.
|
|
1147
|
+
*/
|
|
1148
|
+
export function assertAgentApprovalCaller(input: {
|
|
1149
|
+
readonly request: RequestAgentApprovalInput
|
|
1150
|
+
readonly turn: AgentRunRecord | null
|
|
1151
|
+
readonly caller: AgentRunRecord | null
|
|
1152
|
+
readonly prefix?: string
|
|
1153
|
+
}): string {
|
|
1154
|
+
const { request, turn, caller } = input
|
|
1155
|
+
const prefix = input.prefix ?? "Sixb"
|
|
1156
|
+
if (!turn || !caller) {
|
|
1157
|
+
throw new AgentStorageError(
|
|
1158
|
+
"run_not_found",
|
|
1159
|
+
`[${prefix}] Agent run '${turn ? request.callerRunId : request.runId}' not found for project '${request.projectId}'.`
|
|
1160
|
+
)
|
|
1161
|
+
}
|
|
1162
|
+
if (turn.kind !== "conversation") {
|
|
1163
|
+
throw new AgentStorageError(
|
|
1164
|
+
"invalid_input",
|
|
1165
|
+
`[${prefix}] Agent approval run '${turn.id}' must be a conversation turn.`
|
|
1166
|
+
)
|
|
1167
|
+
}
|
|
1168
|
+
if (caller.id !== turn.id && !(caller.kind === "subagent" && caller.parentRunId === turn.id)) {
|
|
1169
|
+
throw new AgentStorageError(
|
|
1170
|
+
"invalid_input",
|
|
1171
|
+
`[${prefix}] Agent run '${caller.id}' does not belong to turn '${turn.id}'.`
|
|
1172
|
+
)
|
|
1173
|
+
}
|
|
1174
|
+
if (caller.status !== "running") {
|
|
1175
|
+
throw new AgentStorageError(
|
|
1176
|
+
"invalid_state",
|
|
1177
|
+
`[${prefix}] Agent run '${caller.id}' is not running (status '${caller.status}').`
|
|
1178
|
+
)
|
|
1179
|
+
}
|
|
1180
|
+
if (!caller.execution || caller.execution.token !== request.executionToken) {
|
|
1181
|
+
throw new AgentStorageError(
|
|
1182
|
+
"execution_lost",
|
|
1183
|
+
`[${prefix}] Execution token is no longer current on agent run '${caller.id}'.`
|
|
1184
|
+
)
|
|
1185
|
+
}
|
|
1186
|
+
return turn.threadId
|
|
1187
|
+
}
|
|
1188
|
+
|
|
1189
|
+
/** The approval a request creates, before any provider writes it. */
|
|
1190
|
+
export function newAgentApprovalRecord(
|
|
1191
|
+
input: RequestAgentApprovalInput,
|
|
1192
|
+
threadId: string
|
|
1193
|
+
): AgentApprovalRecord {
|
|
1194
|
+
return {
|
|
1195
|
+
id: input.id,
|
|
1196
|
+
projectId: input.projectId,
|
|
1197
|
+
threadId,
|
|
1198
|
+
runId: input.runId,
|
|
1199
|
+
callerRunId: input.callerRunId,
|
|
1200
|
+
requestedBy: structuredClone(input.requestedBy),
|
|
1201
|
+
mode: input.mode,
|
|
1202
|
+
callKey: agentApprovalCallKey(input.call),
|
|
1203
|
+
call: structuredClone(input.call),
|
|
1204
|
+
status: "pending",
|
|
1205
|
+
createdAt: new Date(input.createdAt ?? new Date()),
|
|
1206
|
+
expiresAt: new Date(input.expiresAt),
|
|
1207
|
+
}
|
|
1208
|
+
}
|
|
1209
|
+
|
|
1210
|
+
/** Whether an approval matches a list filter; providers run the same filter in SQL. */
|
|
1211
|
+
export function agentApprovalMatches(
|
|
1212
|
+
approval: AgentApprovalRecord,
|
|
1213
|
+
input: ListAgentApprovalsInput
|
|
1214
|
+
): boolean {
|
|
1215
|
+
return (
|
|
1216
|
+
approval.projectId === input.projectId &&
|
|
1217
|
+
(input.threadId === undefined || approval.threadId === input.threadId) &&
|
|
1218
|
+
(input.runId === undefined || approval.runId === input.runId) &&
|
|
1219
|
+
(input.requestedBy === undefined ||
|
|
1220
|
+
(approval.requestedBy.type === input.requestedBy.type &&
|
|
1221
|
+
approval.requestedBy.id === input.requestedBy.id)) &&
|
|
1222
|
+
(input.statuses === undefined || input.statuses.includes(approval.status)) &&
|
|
1223
|
+
(input.reported === undefined ||
|
|
1224
|
+
(approval.reportedInMessageId !== undefined) === input.reported)
|
|
1225
|
+
)
|
|
1226
|
+
}
|