@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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/projections/types.ts", "../src/storage/projection-runs/types.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import type { SixbErrorCode } from \"../errors/types\"\n\n/** Error codes a projection run can persist and expose through its public contract. */\nexport const PROJECTION_RUN_FAILURE_CODES = [\n \"internal.unexpected\",\n \"runtime.cancelled\",\n \"queue.enqueue_failed\",\n \"projection.execution_failed\",\n \"storage.unavailable\",\n] as const satisfies readonly [SixbErrorCode, ...SixbErrorCode[]]\n\nexport type ProjectionRunFailureCode = (typeof PROJECTION_RUN_FAILURE_CODES)[number]\n\n/**\n * Lowered, serializable definition interfaces for projection DSL.\n *\n * These are the runtime-inspectable data structures that projection builders\n * lower into. They use plain string ids (no tokens, no methods) so they can\n * be stored, serialized, and introspected by tooling.\n */\n\n/**\n * Describes how a foreign key column in a dataset resolves to a link target.\n *\n * The source can be either a projected source property or a raw dataset field.\n * Its value equals the target object's primary property value, creating an\n * implicit link between source and target.\n *\n * `targetObjectTypeId` declares the concrete target type for this projection.\n * It must be the same type or a subtype (via `extends`) of the link's declared\n * target at the ontology level. Validation of the subtype relationship happens\n * at Sixb startup (Increment 7), not at DSL build time.\n */\nexport interface ForeignKeyDescriptor {\n readonly linkId: string\n /** Object property holding the target id. Mutually exclusive with sourceField. */\n readonly sourcePropertyId?: string\n /** Dataset column holding the target id. Mutually exclusive with sourcePropertyId. */\n readonly sourceField?: string\n readonly targetObjectTypeId: string\n}\n\n/** Resolves competing source-projection and managed-edit values for projected properties. */\nexport type SourceEditConflictResolution =\n | { readonly strategy: \"editsWin\" }\n | { readonly strategy: \"mostRecent\"; readonly sourceTimestamp: string }\n\n/**\n * Lowered, serializable definition for projecting a dataset into object instances.\n *\n * Each row contributes one complete object root to an authoritative replacement snapshot, with\n * properties mapped from dataset columns to object type properties. Duplicate roots are rejected.\n * FK links are resolved from source property or dataset field values to target object primary\n * values.\n */\nexport interface ObjectProjectionDefinition {\n readonly _tag: \"ObjectProjectionDefinition\"\n readonly id: string\n readonly objectTypeId: string\n readonly datasetId: string\n /** Maps object type property id -> dataset column name. */\n readonly properties: Readonly<Record<string, string>>\n /** Maps link id -> FK descriptor. Empty `{}` when no FK links are projected. */\n readonly links: Readonly<Record<string, ForeignKeyDescriptor>>\n /** Defaults to `editsWin` when omitted by a legacy lowered definition. */\n readonly conflictResolution?: SourceEditConflictResolution\n}\n\n/**\n * Lowered, serializable definition for projecting a join dataset into link instances.\n *\n * Each row in the join dataset contributes one complete link root to an authoritative replacement\n * snapshot, identified by its source, link id, and target. Duplicate roots are rejected.\n */\nexport interface LinkProjectionDefinition {\n readonly _tag: \"LinkProjectionDefinition\"\n readonly id: string\n readonly linkId: string\n readonly sourceObjectTypeId: string\n readonly targetObjectTypeId: string\n readonly datasetId: string\n /** Dataset column holding the source object's primary property value. */\n readonly sourceField: string\n /** Dataset column holding the target object's primary property value. */\n readonly targetField: string\n}\n\n/** Dataset columns that produce one telemetry property value. */\nexport interface TelemetryProjectionPropertyMapping {\n /** Dataset column holding the telemetry value. */\n readonly valueField: string\n /** Dataset column holding the telemetry unit, when the property requires one. */\n readonly unitField?: string\n}\n\n/**\n * Lowered, serializable definition for projecting dataset rows into telemetry history.\n *\n * Each row shares one target object id and observation timestamp, then contributes up to one\n * telemetry point for every mapped property. A property-token projection is lowered to the same\n * shape with one entry, so execution and ownership have one canonical contract.\n */\nexport interface TelemetryProjectionDefinition {\n readonly _tag: \"TelemetryProjectionDefinition\"\n readonly id: string\n readonly objectTypeId: string\n readonly datasetId: string\n /** Dataset column holding the target object's primary id. */\n readonly objectIdField: string\n /** Dataset column holding the telemetry observation timestamp. */\n readonly atField: string\n /** Maps telemetry property id -> value and optional unit dataset columns. */\n readonly properties: Readonly<Record<string, TelemetryProjectionPropertyMapping>>\n}\n\n/** Union of all projection definition types. */\nexport type ProjectionDefinition =\n | ObjectProjectionDefinition\n | LinkProjectionDefinition\n | TelemetryProjectionDefinition\n\nexport interface ProjectionOwnership {\n readonly objects: readonly {\n readonly objectTypeId: string\n readonly existence: boolean\n readonly propertyIds: readonly string[]\n }[]\n readonly links: readonly {\n readonly sourceObjectTypeId: string\n readonly linkId: string\n }[]\n readonly telemetry: readonly {\n readonly objectTypeId: string\n readonly propertyId: string\n }[]\n}\n\n/** Canonical correlation between a projection kind and its materialization protocol. */\nexport type ProjectionProtocolIdentity =\n | { readonly projectionKind: \"object\"; readonly protocol: \"replacement\" }\n | { readonly projectionKind: \"link\"; readonly protocol: \"replacement\" }\n | { readonly projectionKind: \"telemetry\"; readonly protocol: \"telemetry\" }\n\nexport type ProjectionKind = ProjectionProtocolIdentity[\"projectionKind\"]\n\nexport interface ObjectProjectionTarget {\n readonly objectTypeId: string\n}\n\nexport interface LinkProjectionTarget {\n readonly sourceObjectTypeId: string\n readonly targetObjectTypeId: string\n}\n\nexport interface ProjectionTargetByKind {\n readonly object: ObjectProjectionTarget\n readonly link: LinkProjectionTarget\n readonly telemetry: ObjectProjectionTarget\n}\n\n/** Object types affected by one projection, correlated with its projection kind. */\nexport type ProjectionTarget<TKind extends ProjectionKind = ProjectionKind> =\n ProjectionTargetByKind[TKind]\n\n/**\n * Frozen semantic identity used to dispatch one registered projection.\n *\n * Dataset version metadata is attached only when a committed dataset event is routed. Keeping the\n * registry-owned fields together prevents the orchestrator from recomputing ontology semantics.\n */\nexport type ProjectionDispatchDescriptor = ProjectionDispatchDescriptorBase &\n ProjectionProtocolIdentity\n\ninterface ProjectionDispatchDescriptorBase {\n readonly projectionId: string\n readonly datasetId: string\n readonly ontologyRevision: string\n readonly projectionRevision: string\n readonly ownershipHash: string\n}\n\nexport interface ResolvedProjection<TDefinition extends ProjectionDefinition> {\n readonly projectionId: string\n readonly datasetId: string\n readonly projectionRevision: string\n readonly ownershipHash: string\n readonly ownership: ProjectionOwnership\n readonly definition: TDefinition\n}\n",
|
|
5
|
+
"import type { SixbErrorCode } from \"../errors/types\"\n\n/** Error codes a projection run can persist and expose through its public contract. */\nexport const PROJECTION_RUN_FAILURE_CODES = [\n \"internal.unexpected\",\n \"runtime.cancelled\",\n \"queue.enqueue_failed\",\n \"projection.execution_failed\",\n \"storage.unavailable\",\n] as const satisfies readonly [SixbErrorCode, ...SixbErrorCode[]]\n\nexport type ProjectionRunFailureCode = (typeof PROJECTION_RUN_FAILURE_CODES)[number]\n\n/**\n * Lowered, serializable definition interfaces for projection DSL.\n *\n * These are the runtime-inspectable data structures that projection builders\n * lower into. They use plain string ids (no tokens, no methods) so they can\n * be stored, serialized, and introspected by tooling.\n */\n\n/**\n * Describes how a foreign key column in a dataset resolves to a link target.\n *\n * The source can be either a projected source property or a raw dataset field.\n * Its value equals the target object's primary property value, creating an\n * implicit link between source and target.\n *\n * `targetObjectTypeId` declares the concrete target type for this projection.\n * It must be the same type or a subtype (via `extends`) of the link's declared\n * target at the ontology level. Validation of the subtype relationship happens\n * at Sixb startup (Increment 7), not at DSL build time.\n */\nexport interface ForeignKeyDescriptor {\n readonly linkId: string\n /** Object property holding the target id. Mutually exclusive with sourceField. */\n readonly sourcePropertyId?: string\n /** Dataset column holding the target id. Mutually exclusive with sourcePropertyId. */\n readonly sourceField?: string\n readonly targetObjectTypeId: string\n}\n\n/** Resolves competing source-projection and managed-edit values for projected properties. */\nexport type SourceEditConflictResolution =\n | { readonly strategy: \"editsWin\" }\n | { readonly strategy: \"mostRecent\"; readonly sourceTimestamp: string }\n\n/**\n * Lowered, serializable definition for projecting a dataset into object instances.\n *\n * Each row contributes one complete object root to an authoritative replacement snapshot, with\n * properties mapped from dataset columns to object type properties. Duplicate roots are rejected.\n * FK links are resolved from source property or dataset field values to target object primary\n * values.\n */\nexport interface ObjectProjectionDefinition {\n readonly _tag: \"ObjectProjectionDefinition\"\n readonly id: string\n readonly objectTypeId: string\n readonly datasetId: string\n /** Maps object type property id -> dataset column name. */\n readonly properties: Readonly<Record<string, string>>\n /** Maps link id -> FK descriptor. Empty `{}` when no FK links are projected. */\n readonly links: Readonly<Record<string, ForeignKeyDescriptor>>\n /** Defaults to `editsWin` when omitted by a legacy lowered definition. */\n readonly conflictResolution?: SourceEditConflictResolution\n}\n\n/**\n * Lowered, serializable definition for projecting a join dataset into link instances.\n *\n * Each row in the join dataset contributes one complete link root to an authoritative replacement\n * snapshot, identified by its source, link id, and target. Duplicate roots are rejected.\n */\nexport interface LinkProjectionDefinition {\n readonly _tag: \"LinkProjectionDefinition\"\n readonly id: string\n readonly linkId: string\n readonly sourceObjectTypeId: string\n readonly targetObjectTypeId: string\n readonly datasetId: string\n /** Dataset column holding the source object's primary property value. */\n readonly sourceField: string\n /** Dataset column holding the target object's primary property value. */\n readonly targetField: string\n}\n\n/** Dataset columns that produce one telemetry property value. */\nexport interface TelemetryProjectionPropertyMapping {\n /** Dataset column holding the telemetry value. */\n readonly valueField: string\n /** Dataset column holding the telemetry unit, when the property requires one. */\n readonly unitField?: string\n}\n\n/**\n * Lowered, serializable definition for projecting dataset rows into telemetry history.\n *\n * Each row shares one target object id and observation timestamp, then contributes up to one\n * telemetry point for every mapped property. A property-token projection is lowered to the same\n * shape with one entry, so execution and ownership have one canonical contract.\n */\nexport interface TelemetryProjectionDefinition {\n readonly _tag: \"TelemetryProjectionDefinition\"\n readonly id: string\n readonly objectTypeId: string\n readonly datasetId: string\n /** Dataset column holding the target object's primary id. */\n readonly objectIdField: string\n /** Dataset column holding the telemetry observation timestamp. */\n readonly atField: string\n /** Maps telemetry property id -> value and optional unit dataset columns. */\n readonly properties: Readonly<Record<string, TelemetryProjectionPropertyMapping>>\n}\n\n/** Union of all projection definition types. */\nexport type ProjectionDefinition =\n | ObjectProjectionDefinition\n | LinkProjectionDefinition\n | TelemetryProjectionDefinition\n\nexport interface ProjectionOwnership {\n readonly objects: readonly {\n readonly objectTypeId: string\n readonly existence: boolean\n readonly propertyIds: readonly string[]\n }[]\n readonly links: readonly {\n readonly sourceObjectTypeId: string\n readonly linkId: string\n }[]\n readonly telemetry: readonly {\n readonly objectTypeId: string\n readonly propertyId: string\n }[]\n}\n\n/** Canonical correlation between a projection kind and its materialization protocol. */\nexport type ProjectionProtocolIdentity =\n | { readonly projectionKind: \"object\"; readonly protocol: \"replacement\" }\n | { readonly projectionKind: \"link\"; readonly protocol: \"replacement\" }\n | { readonly projectionKind: \"telemetry\"; readonly protocol: \"telemetry\" }\n\nexport type ProjectionKind = ProjectionProtocolIdentity[\"projectionKind\"]\n\nexport interface ObjectProjectionTarget {\n readonly objectTypeId: string\n}\n\nexport interface LinkProjectionTarget {\n readonly sourceObjectTypeId: string\n readonly targetObjectTypeId: string\n}\n\nexport interface ProjectionTargetByKind {\n readonly object: ObjectProjectionTarget\n readonly link: LinkProjectionTarget\n readonly telemetry: ObjectProjectionTarget\n}\n\n/** Object types affected by one projection, correlated with its projection kind. */\nexport type ProjectionTarget<TKind extends ProjectionKind = ProjectionKind> =\n ProjectionTargetByKind[TKind]\n\n/**\n * Frozen semantic identity used to dispatch one registered projection.\n *\n * Dataset version metadata is attached only when a committed dataset event is routed. Keeping the\n * registry-owned fields together prevents the orchestrator from recomputing ontology semantics.\n */\nexport type ProjectionDispatchDescriptor = ProjectionDispatchDescriptorBase &\n ProjectionProtocolIdentity\n\ninterface ProjectionDispatchDescriptorBase {\n readonly projectionId: string\n readonly datasetId: string\n readonly ontologyRevision: string\n readonly projectionRevision: string\n readonly ownershipHash: string\n}\n\nexport interface ResolvedProjection<TDefinition extends ProjectionDefinition> {\n readonly projectionId: string\n readonly datasetId: string\n /** The part of the ontology this projection reads; see `computeProjectionOntologyRevision`. */\n readonly ontologyRevision: string\n readonly projectionRevision: string\n readonly ownershipHash: string\n readonly ownership: ProjectionOwnership\n readonly definition: TDefinition\n}\n",
|
|
6
6
|
"import type { SixbFailure } from \"../../errors/types\"\nimport type {\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionMaterializationIdentity,\n ProjectionRunTerminalDecision,\n} from \"../../materialization/model\"\nimport type {\n LinkProjectionTarget,\n ObjectProjectionTarget,\n ProjectionKind,\n ProjectionRunFailureCode,\n ProjectionTarget,\n} from \"../../projections/types\"\n\nexport type { ProjectionRunFailureCode } from \"../../projections/types\"\nexport { PROJECTION_RUN_FAILURE_CODES } from \"../../projections/types\"\n\n/**\n * `superseded` ends a replacement run whose output would be stale on arrival: a run of the same\n * projection pinned to a later dataset version exists and has not failed. Telemetry runs append\n * readings rather than replace a source, so none is ever superseded.\n */\nexport type ProjectionRunStatus =\n | \"queued\"\n | \"running\"\n | \"succeeded\"\n | \"failed\"\n | \"cancelled\"\n | \"superseded\"\n\nexport interface ProjectionRunProgress {\n /** Physical immutable-version rows consumed, before normalization or semantic materialization. */\n readonly sourceRowsRead: number\n /** Physical rows intentionally skipped because a required mapped value was blank. */\n readonly sourceRowsSkipped: number\n /** Maximum complete change records consumed by one incremental attempt; not a recovery cursor. */\n readonly sourceChangesRead?: number\n}\n\nconst progressKeyFlags: Record<keyof ProjectionRunProgress, true> = {\n sourceRowsRead: true,\n sourceRowsSkipped: true,\n sourceChangesRead: true,\n}\n\nexport const PROJECTION_RUN_PROGRESS_KEYS = Object.keys(\n progressKeyFlags\n) as readonly (keyof ProjectionRunProgress)[]\n\nexport function zeroProjectionRunProgress(): ProjectionRunProgress {\n return { sourceRowsRead: 0, sourceRowsSkipped: 0 }\n}\n\nexport interface ProjectionTelemetryCheckpoint {\n readonly fixedBatchSize: number\n readonly nextBatchOrdinal: number\n readonly nextRowOffset: number\n readonly inputExhausted: boolean\n}\n\n/**\n * The object a telemetry batch is waiting for, and when this run first found it missing.\n *\n * A projection's dataset can legitimately be materialized before the objects it references, so\n * the run waits instead of failing. The wait needs a start, and the run has no other durable one:\n * `startedAt` is when the run began, which on a batched projection is long before the batch that\n * cannot commit, and `attempt` counts every reclaim including the ones an unreachable queue caused.\n *\n * Cleared by any committed batch, so a run that is making progress never carries a stale wait.\n */\nexport interface ProjectionMissingTarget {\n readonly objectTypeId: string\n readonly objectId: string\n /** The batch that could not commit because of it. */\n readonly batchOrdinal: number\n readonly firstSeenAt: Date\n}\n\ninterface ProjectionRunRecordBase {\n readonly id: string\n readonly projectId: string\n readonly executionId: string\n readonly status: ProjectionRunStatus\n readonly attempt: number\n readonly progress: ProjectionRunProgress\n readonly queuedAt: Date\n readonly startedAt?: Date\n readonly finishedAt?: Date\n /**\n * The run's most recent failure, read with its status: on a `running` run, why its last attempt\n * failed while the queue retries it; on a `failed` or `cancelled` run, why it ended. Cleared when\n * the run succeeds or is superseded, so a present error always describes something current.\n */\n readonly error?: SixbFailure<ProjectionRunFailureCode>\n}\n\ntype ProjectionIdentity<TKind extends ProjectionKind> = Extract<\n ProjectionMaterializationIdentity,\n { readonly projectionKind: TKind }\n>\n\nexport type ObjectProjectionRunRecord = ProjectionRunRecordBase & {\n readonly identity: ProjectionIdentity<\"object\">\n readonly target: ObjectProjectionTarget\n readonly telemetryCheckpoint?: never\n readonly missingTarget?: never\n}\n\nexport type LinkProjectionRunRecord = ProjectionRunRecordBase & {\n readonly identity: ProjectionIdentity<\"link\">\n readonly target: LinkProjectionTarget\n readonly telemetryCheckpoint?: never\n readonly missingTarget?: never\n}\n\nexport type TelemetryProjectionRunRecord = ProjectionRunRecordBase & {\n readonly identity: ProjectionIdentity<\"telemetry\">\n readonly target: ObjectProjectionTarget\n readonly telemetryCheckpoint: ProjectionTelemetryCheckpoint\n /**\n * Only telemetry carries this: `MaterializationObjectNotFoundError` is raised by telemetry\n * validation alone, and only a batched protocol has a checkpoint to anchor the wait to.\n */\n readonly missingTarget?: ProjectionMissingTarget\n}\n\n/** Durable projection lifecycle state. The execution token is deliberately returned separately. */\nexport type ProjectionRunRecord =\n | ObjectProjectionRunRecord\n | LinkProjectionRunRecord\n | TelemetryProjectionRunRecord\n\nexport function projectionRunObjectTypesVisible(\n run: ProjectionRunRecord,\n canView: (objectTypeId: string) => boolean\n): boolean {\n const target: ProjectionTarget = run.target\n if (\"sourceObjectTypeId\" in target) {\n return canView(target.sourceObjectTypeId) && canView(target.targetObjectTypeId)\n }\n return canView(target.objectTypeId)\n}\n\ninterface ProjectionRunAdmissionBase {\n readonly id: string\n readonly projectId: string\n readonly executionId: string\n readonly queuedAt?: Date\n}\n\nexport type QueueProjectionRunInput =\n | (ProjectionRunAdmissionBase & {\n readonly identity: ProjectionIdentity<\"object\">\n readonly target: ObjectProjectionRunRecord[\"target\"]\n readonly fixedBatchSize?: never\n })\n | (ProjectionRunAdmissionBase & {\n readonly identity: ProjectionIdentity<\"link\">\n readonly target: LinkProjectionRunRecord[\"target\"]\n readonly fixedBatchSize?: never\n })\n | (ProjectionRunAdmissionBase & {\n readonly identity: ProjectionIdentity<\"telemetry\">\n readonly target: TelemetryProjectionRunRecord[\"target\"]\n readonly fixedBatchSize: number\n })\n\nexport type StartOrReclaimProjectionRunInput = QueueProjectionRunInput extends infer TInput\n ? TInput extends QueueProjectionRunInput\n ? Omit<TInput, \"executionId\" | \"queuedAt\"> & { readonly startedAt?: Date }\n : never\n : never\n\nexport interface FailProjectionRunEnqueueInput {\n readonly id: string\n readonly projectId: string\n readonly finishedAt?: Date\n readonly error: SixbFailure<ProjectionRunFailureCode>\n}\n\nexport interface ProjectionRunClaim {\n readonly run: ProjectionRunRecord\n readonly execution: ProjectionExecution\n}\n\nexport interface LockProjectionRunForMaterializationInput {\n readonly id: string\n readonly projectId: string\n readonly executionToken: string\n readonly identity: ProjectionMaterializationIdentity\n}\n\nexport interface UpdateProjectionRunInput extends LockProjectionRunForMaterializationInput {\n readonly progress: Partial<ProjectionRunProgress>\n}\n\nexport type FinishProjectionRunInput = ProjectionRunTerminalDecision &\n LockProjectionRunForMaterializationInput & {\n readonly finishedAt?: Date\n readonly progress?: Partial<ProjectionRunProgress>\n }\n\nexport interface AdvanceProjectionTelemetryCheckpointInput\n extends LockProjectionRunForMaterializationInput {\n /** Must equal the run's current nextBatchOrdinal. */\n readonly batchOrdinal: number\n /** Physical dataset rows consumed by this batch, including skipped rows. */\n readonly batchRowCount: number\n /** Physical rows intentionally skipped inside this batch. */\n readonly batchRowsSkipped: number\n /** True when this batch consumed the final row of the immutable dataset version. */\n readonly inputExhausted: boolean\n}\n\nexport interface RecordProjectionMissingTargetInput\n extends LockProjectionRunForMaterializationInput {\n readonly missingTarget: ProjectionMissingTarget\n}\n\nexport interface RecordProjectionAttemptFailureInput\n extends LockProjectionRunForMaterializationInput {\n readonly error: SixbFailure<ProjectionRunFailureCode>\n}\n\nexport interface FindSupersedingProjectionRunInput {\n readonly projectId: string\n /** The run that may be superseded. */\n readonly id: string\n}\n\nexport interface ListProjectionRunsInput {\n readonly projectId: string\n readonly projectionId?: string\n readonly projectionKind?: ProjectionKind\n readonly datasetId?: string\n readonly datasetVersionId?: string\n /**\n * Viewable object type ids. A run is included only if every target type is present. Omit for an\n * unrestricted internal execution; an empty set matches no runs.\n */\n readonly objectTypeIds?: readonly string[]\n readonly statuses?: readonly ProjectionRunStatus[]\n /** Runs whose recorded `error` has one of these codes; an empty set matches no runs. */\n readonly errorCodes?: readonly ProjectionRunFailureCode[]\n readonly startedAfter?: Date\n readonly startedBefore?: Date\n readonly limit?: number\n readonly offset?: number\n readonly order?: \"asc\" | \"desc\"\n}\n\nexport interface ListProjectionRunsResult {\n readonly runs: readonly ProjectionRunRecord[]\n readonly hasMore: boolean\n readonly total: number\n}\n\nexport interface ListLatestProjectionRunsInput {\n readonly projectId: string\n readonly projectionIds: readonly string[]\n}\n\nexport interface ListLatestProjectionRunsResult {\n readonly runs: readonly ProjectionRunRecord[]\n}\n\nexport interface ProjectionRunStorage {\n queue(input: QueueProjectionRunInput): Promise<ProjectionRunRecord>\n startOrReclaim(input: StartOrReclaimProjectionRunInput): Promise<ProjectionRunClaim>\n failEnqueue(input: FailProjectionRunEnqueueInput): Promise<ProjectionRunRecord>\n /** Transactionally fences the current execution before ontology materialization writes. */\n lockForMaterialization(\n input: LockProjectionRunForMaterializationInput\n ): Promise<ProjectionRunRecord>\n /** Updates physical source progress only. */\n update(input: UpdateProjectionRunInput): Promise<ProjectionRunRecord>\n /**\n * Advances telemetry progress atomically with the corresponding ontology commit.\n *\n * Clears any recorded missing target: a batch that commits is a batch that was not waiting.\n */\n advanceTelemetryCheckpoint(\n input: AdvanceProjectionTelemetryCheckpointInput\n ): Promise<TelemetryProjectionRunRecord>\n /** Records the object a telemetry batch is waiting for, so the wait has a durable start. */\n recordMissingTarget(\n input: RecordProjectionMissingTargetInput\n ): Promise<TelemetryProjectionRunRecord>\n /**\n * Records the failure of the current attempt as the `error` of a run that stays `running` to be\n * retried. Fenced like every other write: a delivery that lost the run cannot overwrite the\n * failure of the one that holds it now. A reclaim keeps it until the run ends.\n */\n recordAttemptFailure(input: RecordProjectionAttemptFailureInput): Promise<ProjectionRunRecord>\n /** Telemetry success also records the worker's EOF observation atomically. */\n finish(input: FinishProjectionRunInput): Promise<ProjectionRunRecord>\n /**\n * The newest replacement run of the same projection that makes this one stale: pinned to a\n * later dataset version, and queued, running, or succeeded. A failed or cancelled run replaces\n * nothing, so it supersedes nothing either. Null for a telemetry run.\n */\n findSupersedingRun(input: FindSupersedingProjectionRunInput): Promise<ProjectionRunRecord | null>\n getById(params: { projectId: string; id: string }): Promise<ProjectionRunRecord | null>\n list(input: ListProjectionRunsInput): Promise<ListProjectionRunsResult>\n /** Superseded runs are skipped: the run that superseded them is the one that matters. */\n listLatestByProjectionIds(\n input: ListLatestProjectionRunsInput\n ): Promise<ListLatestProjectionRunsResult>\n}\n\nexport type {\n LinkProjectionTarget,\n ObjectProjectionTarget,\n PinnedDatasetVersion,\n ProjectionExecution,\n ProjectionKind,\n ProjectionMaterializationIdentity,\n ProjectionTarget,\n}\n"
|
|
7
7
|
],
|
|
8
8
|
"mappings": ";;AAGO,IAAM,gCAA+B;AAAA,EAC1C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;;;AC+BA,IAAM,mBAA8D;AAAA,EAClE,gBAAgB;AAAA,EAChB,mBAAmB;AAAA,EACnB,mBAAmB;AACrB;AAEO,IAAM,gCAA+B,OAAO,KACjD,gBACF;AAEO,SAAS,0BAAyB,GAA0B;AAAA,EACjE,OAAO,EAAE,gBAAgB,GAAG,mBAAmB,EAAE;AAAA;AAkF5C,SAAS,gCAA+B,CAC7C,KACA,SACS;AAAA,EACT,MAAM,SAA2B,IAAI;AAAA,EACrC,IAAI,wBAAwB,QAAQ;AAAA,IAClC,OAAO,QAAQ,OAAO,kBAAkB,KAAK,QAAQ,OAAO,kBAAkB;AAAA,EAChF;AAAA,EACA,OAAO,QAAQ,OAAO,YAAY;AAAA;",
|
|
@@ -1,20 +1,26 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
import {
|
|
3
|
-
materializationEventKindOrdinal2,
|
|
4
|
-
createEventId2,
|
|
5
3
|
objectRefKey2,
|
|
6
4
|
linkRefKey2,
|
|
7
5
|
projectionEntityKey2,
|
|
8
6
|
telemetryPointKey2,
|
|
9
7
|
linkRefSortKey2,
|
|
10
|
-
linkScopeSortKey2
|
|
8
|
+
linkScopeSortKey2
|
|
9
|
+
} from "./chunk-cswhawa2.js";
|
|
10
|
+
import {
|
|
11
|
+
materializationEventKindOrdinal2,
|
|
12
|
+
createEventId2
|
|
13
|
+
} from "./chunk-zrvhsq7f.js";
|
|
14
|
+
import {
|
|
11
15
|
materializationEvent2,
|
|
12
16
|
eventAttribution2
|
|
13
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-mzx71snp.js";
|
|
14
18
|
import {
|
|
15
19
|
MaterializationValidationError2,
|
|
20
|
+
UniqueValueViolationError2,
|
|
21
|
+
UniquePropertyNotPreparedError,
|
|
16
22
|
MaterializationConflictError2
|
|
17
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-y7dbmaqh.js";
|
|
18
24
|
import {
|
|
19
25
|
stableJsonStringify2
|
|
20
26
|
} from "./chunk-wy0qdqfm.js";
|
|
@@ -58,6 +64,7 @@ function materializationApplyPhase2(kind) {
|
|
|
58
64
|
case "link-override-delete":
|
|
59
65
|
case "link-slot-override-upsert":
|
|
60
66
|
case "link-slot-override-delete":
|
|
67
|
+
case "unique-value-release":
|
|
61
68
|
return 0;
|
|
62
69
|
case "point-upsert":
|
|
63
70
|
return 1;
|
|
@@ -69,6 +76,8 @@ function materializationApplyPhase2(kind) {
|
|
|
69
76
|
return 4;
|
|
70
77
|
case "link-upsert":
|
|
71
78
|
return 5;
|
|
79
|
+
case "unique-value-claim":
|
|
80
|
+
return 6;
|
|
72
81
|
}
|
|
73
82
|
}
|
|
74
83
|
|
|
@@ -198,7 +207,7 @@ function assertPageRows2(value) {
|
|
|
198
207
|
throw new MaterializationValidationError2("Materialization page size must be positive.");
|
|
199
208
|
}
|
|
200
209
|
function materializationChunkRows2(chunk) {
|
|
201
|
-
return chunk.overrides.objects.upserts.length + chunk.overrides.objects.deletes.length + chunk.overrides.links.edges.upserts.length + chunk.overrides.links.edges.deletes.length + chunk.overrides.links.slots.upserts.length + chunk.overrides.links.slots.deletes.length + chunk.effective.objectUpserts.length + chunk.effective.objectDeletes.length + chunk.effective.linkUpserts.length + chunk.effective.linkDeletes.length + chunk.timeseries.pointUpserts.length + chunk.outbox.length;
|
|
210
|
+
return chunk.overrides.objects.upserts.length + chunk.overrides.objects.deletes.length + chunk.overrides.links.edges.upserts.length + chunk.overrides.links.edges.deletes.length + chunk.overrides.links.slots.upserts.length + chunk.overrides.links.slots.deletes.length + chunk.effective.objectUpserts.length + chunk.effective.objectDeletes.length + chunk.effective.linkUpserts.length + chunk.effective.linkDeletes.length + chunk.timeseries.pointUpserts.length + chunk.unique.releases.length + chunk.unique.claims.length + chunk.outbox.length;
|
|
202
211
|
}
|
|
203
212
|
function materializationPlanChunk2(items, outbox = []) {
|
|
204
213
|
const chunk = {
|
|
@@ -225,6 +234,10 @@ function materializationPlanChunk2(items, outbox = []) {
|
|
|
225
234
|
linkDeletes: []
|
|
226
235
|
},
|
|
227
236
|
timeseries: { pointUpserts: [] },
|
|
237
|
+
unique: {
|
|
238
|
+
releases: [],
|
|
239
|
+
claims: []
|
|
240
|
+
},
|
|
228
241
|
outbox
|
|
229
242
|
};
|
|
230
243
|
for (const item of items) {
|
|
@@ -262,6 +275,12 @@ function materializationPlanChunk2(items, outbox = []) {
|
|
|
262
275
|
case "point-upsert":
|
|
263
276
|
chunk.timeseries.pointUpserts.push(item.value);
|
|
264
277
|
break;
|
|
278
|
+
case "unique-value-release":
|
|
279
|
+
chunk.unique.releases.push(item.value);
|
|
280
|
+
break;
|
|
281
|
+
case "unique-value-claim":
|
|
282
|
+
chunk.unique.claims.push(item.value);
|
|
283
|
+
break;
|
|
265
284
|
}
|
|
266
285
|
}
|
|
267
286
|
return chunk;
|
|
@@ -415,6 +434,12 @@ function createCardinalityValidator2() {
|
|
|
415
434
|
function cardinalityViolation2(view, sourceTypeId, linkId) {
|
|
416
435
|
return new MaterializationValidationError2(view === "candidate" ? `Projection source scope '${sourceTypeId}.${linkId}' has cardinality one.` : `Link scope '${sourceTypeId}.${linkId}' has cardinality one.`);
|
|
417
436
|
}
|
|
437
|
+
function uniqueValueViolation2(value, holderPrimaryId, claimantPrimaryId) {
|
|
438
|
+
return new UniqueValueViolationError2(value.objectTypeId, value.propertyId, holderPrimaryId, claimantPrimaryId);
|
|
439
|
+
}
|
|
440
|
+
function uniquePropertyNotPrepared2(value) {
|
|
441
|
+
return new UniquePropertyNotPreparedError(value.objectTypeId, value.propertyId);
|
|
442
|
+
}
|
|
418
443
|
function assertWorkRecord2(record, header) {
|
|
419
444
|
if (record.recordKey.trim().length === 0) {
|
|
420
445
|
throw new MaterializationValidationError2("Materialization work key must be nonblank.");
|
|
@@ -485,6 +510,10 @@ function materializationPlanKindRank2(kind) {
|
|
|
485
510
|
return 9;
|
|
486
511
|
case "link-upsert":
|
|
487
512
|
return 10;
|
|
513
|
+
case "unique-value-release":
|
|
514
|
+
return 11;
|
|
515
|
+
case "unique-value-claim":
|
|
516
|
+
return 12;
|
|
488
517
|
}
|
|
489
518
|
}
|
|
490
519
|
function compareCardinalityWork2(left, right) {
|
|
@@ -528,8 +557,25 @@ function assertPlanItemCorrelation(item, commit) {
|
|
|
528
557
|
case "point-upsert":
|
|
529
558
|
assertPointWriteCorrelation(item.value, commit);
|
|
530
559
|
return;
|
|
560
|
+
case "unique-value-release":
|
|
561
|
+
assertUniqueValueWrite(item.value);
|
|
562
|
+
return;
|
|
563
|
+
case "unique-value-claim":
|
|
564
|
+
assertUniqueValueWrite(item.value);
|
|
565
|
+
if (!Number.isSafeInteger(item.value.keyVersion) || !isNonblank(item.value.keyKind)) {
|
|
566
|
+
invalidCorrelation2("Unique value claim must name how its key was computed.");
|
|
567
|
+
}
|
|
568
|
+
return;
|
|
569
|
+
}
|
|
570
|
+
}
|
|
571
|
+
function assertUniqueValueWrite(value) {
|
|
572
|
+
if (!isNonblank(value.objectTypeId) || !isNonblank(value.propertyId) || !isNonblank(value.primaryId) || typeof value.valueKey !== "string") {
|
|
573
|
+
invalidCorrelation2("Unique value write must name its type, property, value and object.");
|
|
531
574
|
}
|
|
532
575
|
}
|
|
576
|
+
function isNonblank(value) {
|
|
577
|
+
return typeof value === "string" && value.trim().length > 0;
|
|
578
|
+
}
|
|
533
579
|
function assertPointWriteCorrelation(value, commit) {
|
|
534
580
|
if (telemetryPointKey2(value.point.series, value.point.at) !== telemetryPointKey2(value.expected.series, value.expected.at)) {
|
|
535
581
|
invalidCorrelation2("Timeseries point write does not match its expected identity.");
|
|
@@ -1079,6 +1125,6 @@ function sourceConflict2(message) {
|
|
|
1079
1125
|
return new MaterializationConflictError2("source-materialization", message);
|
|
1080
1126
|
}
|
|
1081
1127
|
|
|
1082
|
-
export { assertNonblank2, assertPositiveInteger2, assertNonnegativeInteger2, assertTimestamp2, invalidCorrelation2,
|
|
1128
|
+
export { materializationApplyPhase2, assertNonblank2, assertPositiveInteger2, assertNonnegativeInteger2, assertTimestamp2, invalidCorrelation2, assertMaterializationHeader2, assertPageRows2, materializationChunkRows2, materializationPlanChunk2, materializationOutboxWrite2, claimedOutboxRows2, assertReplacementPlanCommit2, prepareReplacementIdentities2, projectionChangeCounts, createCardinalityValidator2, cardinalityViolation2, uniqueValueViolation2, uniquePropertyNotPrepared2, assertWorkRecord2, workUniquenessKey2, comparePlanWork2, materializationPlanKindRank2, compareCardinalityWork2, compareEventWork2, startScopeAccumulator2, appendScopeSnapshot2, finishScopeAccumulator2, linkSlotOverrideValue2, ProviderMaterializationSessionState2, beginMaterializationVectorChanges2, beginMaterializationApply2, ProviderMaterializationTransactionLifecycle2, prepareMaterializationWork2, assertMaterializationFinalizationCorrelation2, assertSourceActivationCorrelation2, uniqueSorted2, sameNonnegativeCounts2, effectiveConflict2, assertExpectedObjectRevision2, assertExpectedLinkRevision2, assertExpectedLinkScopeRevision2, materializationWorkColumns2, duplicateMaterializationWork2, canonicalJson2, originColumns2, originWhere2, objectRefFromColumns2, linkRefFromColumns2, sourceEntityKey2, sourceStageRows2, sourceStageRow2, sourceStageRoots2, reconcileSourceStageRows2, sourceMaterializationIdentity2, assertSourceBeginInput2, assertSourceWriteIdentity2, assertSourceProject2, assertSourceExecutionIdentity2, assertSourceCandidateOwner2, assertSourceStagedRow2, sourceEntityColumns2, sourceEntityFromKey2, sourceAssertionPayload2, sourceAssertionFromColumns2, isExactStagingManifest2, sourceConflict2 };
|
|
1083
1129
|
|
|
1084
|
-
//# debugId=
|
|
1130
|
+
//# debugId=6AE7168CEA7F1E8664756E2164756E21
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/storage/ontology/provider.ts", "../src/storage/ontology/provider-validation.ts", "../src/storage/ontology/materializations.ts", "../src/storage/ontology/provider-header-validation.ts", "../src/storage/ontology/provider-work.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"import { createHash, randomUUID } from \"node:crypto\"\nimport { stableJsonStringify } from \"../../json\"\nimport {\n MaterializationConflictError,\n MaterializationValidationError,\n} from \"../../materialization/errors\"\nimport type {\n EffectiveLinkSnapshot,\n ExpectedLinkRevision,\n ExpectedLinkScopeRevision,\n ExpectedObjectRevision,\n OntologyLinkRef,\n OntologyObjectRef,\n ProjectionEntityRef,\n ProjectionSourceAssertion,\n} from \"../../materialization/model\"\nimport { linkRefKey, objectRefKey, projectionEntityKey } from \"../../materialization/refs\"\nimport type { OntologyCommitOriginSelector, OntologyCommitWrite } from \"./commits\"\nimport type {\n FinalizeMaterializationInput,\n MaterializationLinkScopeRevision,\n MaterializationPlanHeader,\n MaterializationSession,\n MaterializationWorkRecord,\n SourceActivationWrite,\n StageMaterializationWorkInput,\n StoredLinkSlotOverride,\n} from \"./materializations\"\nimport { assertNonblank, assertTimestamp } from \"./provider-validation\"\nimport { assertWorkRecord, materializationPlanKindRank, workUniquenessKey } from \"./provider-work\"\nimport type {\n AssertSourceMaterializationExecutionInput,\n BeginSourceMaterializationInput,\n OntologySourceRecord,\n StageSourceAssertion,\n} from \"./sources\"\n\n/**\n * Provider-neutral validation and ordering used by ontology storage implementations.\n *\n * @internal Repository storage providers only. Application code must use the capability contracts\n * from `@sixb/core/storage` instead.\n */\n\nexport { materializationApplyPhase } from \"./materializations\"\nexport { assertMaterializationHeader } from \"./provider-header-validation\"\nexport {\n assertNonblank,\n assertNonnegativeInteger,\n assertPositiveInteger,\n assertTimestamp,\n invalidCorrelation,\n} from \"./provider-validation\"\nexport {\n assertPageRows,\n assertReplacementPlanCommit,\n assertWorkRecord,\n type CardinalityValidator,\n type ClaimedOutboxDraft,\n cardinalityViolation,\n claimedOutboxRows,\n compareCardinalityWork,\n compareEventWork,\n comparePlanWork,\n createCardinalityValidator,\n type ExactEffectiveWrites,\n type ExactOverrideWrites,\n type ExactTimeseriesWrites,\n type ExactUniqueValueWrites,\n type MaterializationPlanChunk,\n materializationChunkRows,\n materializationOutboxWrite,\n materializationPlanChunk,\n materializationPlanKindRank,\n type OntologyOutboxWrite,\n type OutboxEventContext,\n type PreparedReplacementIdentity,\n prepareReplacementIdentities,\n uniquePropertyNotPrepared,\n uniqueValueViolation,\n workUniquenessKey,\n} from \"./provider-work\"\n\nexport interface LinkScopeAccumulator {\n readonly source: OntologyObjectRef\n readonly linkId: string\n readonly hash: ReturnType<typeof createHash>\n effectiveCount: number\n}\n\nexport function startScopeAccumulator(\n source: OntologyObjectRef,\n linkId: string\n): LinkScopeAccumulator {\n const hash = createHash(\"sha256\")\n hash.update(\"[\")\n return {\n source: structuredClone(source),\n linkId,\n hash,\n effectiveCount: 0,\n }\n}\n\nexport function appendScopeSnapshot(\n accumulator: LinkScopeAccumulator,\n snapshot: EffectiveLinkSnapshot\n): void {\n if (accumulator.effectiveCount > 0) accumulator.hash.update(\",\")\n accumulator.hash.update(\n stableJsonStringify({\n ref: snapshot.ref,\n properties: snapshot.properties ?? {},\n lastCommitId: snapshot.lastCommitId,\n })\n )\n accumulator.effectiveCount += 1\n}\n\nexport function finishScopeAccumulator(\n accumulator: LinkScopeAccumulator\n): MaterializationLinkScopeRevision {\n accumulator.hash.update(\"]\")\n return {\n source: accumulator.source,\n linkId: accumulator.linkId,\n effectiveCount: accumulator.effectiveCount,\n fingerprint: accumulator.hash.digest(\"hex\"),\n }\n}\n\nexport function linkSlotOverrideValue(\n value: unknown,\n scopeLabel: string\n): StoredLinkSlotOverride[\"value\"] {\n if (!isRecord(value) || typeof value.kind !== \"string\") {\n throw invalidLinkSlotOverride(scopeLabel)\n }\n if (value.kind === \"legacy-conflict\") {\n return { kind: \"legacy-conflict\" }\n }\n if (\n (value.kind !== \"set\" && value.kind !== \"clear\") ||\n !isRecord(value.target) ||\n typeof value.target.objectTypeId !== \"string\" ||\n value.target.objectTypeId.trim().length === 0 ||\n typeof value.target.primaryId !== \"string\" ||\n value.target.primaryId.trim().length === 0\n ) {\n throw invalidLinkSlotOverride(scopeLabel)\n }\n const target = {\n objectTypeId: value.target.objectTypeId,\n primaryId: value.target.primaryId,\n }\n if (value.kind === \"clear\") return { kind: \"clear\", target }\n if (value.properties === undefined) return { kind: \"set\", target }\n if (!isJsonObject(value.properties)) throw invalidLinkSlotOverride(scopeLabel)\n return { kind: \"set\", target, properties: structuredClone(value.properties) }\n}\n\nfunction invalidLinkSlotOverride(scopeLabel: string): MaterializationConflictError {\n return new MaterializationConflictError(\n \"effective-state\",\n `Cardinality-one link slot ${scopeLabel} contains an invalid stored override.`\n )\n}\n\nfunction isRecord(value: unknown): value is Readonly<Record<string, unknown>> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value)\n}\n\nfunction isJsonObject(\n value: unknown\n): value is Readonly<Record<string, import(\"../../json\").JsonValue>> {\n return isRecord(value) && Object.values(value).every(isJsonValue)\n}\n\nfunction isJsonValue(value: unknown): value is import(\"../../json\").JsonValue {\n if (value === null || typeof value === \"string\" || typeof value === \"boolean\") return true\n if (typeof value === \"number\") return Number.isFinite(value)\n if (Array.isArray(value)) return value.every(isJsonValue)\n return isRecord(value) && Object.values(value).every(isJsonValue)\n}\n\nexport class ProviderMaterializationSessionState {\n readonly id = randomUUID()\n readonly providerToken = {}\n active = true\n /** Staging closes once vector changes stream or the plan applies. */\n workSealed = false\n vectorChangesStreamed = false\n applied = false\n appliedEventCount = 0\n\n constructor(\n readonly header: MaterializationPlanHeader,\n readonly transactionId: object\n ) {}\n\n publicSession(): MaterializationSession {\n return { providerToken: this.providerToken }\n }\n}\n\n/** Seals staging for the vector-change stream: once per session, before the plan applies. */\nexport function beginMaterializationVectorChanges(\n state: Pick<\n ProviderMaterializationSessionState,\n \"workSealed\" | \"vectorChangesStreamed\" | \"applied\"\n >\n): void {\n if (state.vectorChangesStreamed || state.applied) {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"Materialization vector changes stream once per session, before the plan applies.\"\n )\n }\n state.vectorChangesStreamed = true\n state.workSealed = true\n}\n\n/** Seals staging for the apply step: once per session. */\nexport function beginMaterializationApply(\n state: Pick<ProviderMaterializationSessionState, \"workSealed\" | \"applied\">\n): void {\n if (state.applied) {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"A materialization plan applies once per session.\"\n )\n }\n state.applied = true\n state.workSealed = true\n}\n\n/**\n * Tracks the materialization sessions owned by one storage transaction.\n *\n * Applying a chunk mutates authoritative tables before `finalize()` inserts the commit ledger row.\n * The transaction must therefore fail closed while any materialization session remains unfinished.\n */\nexport class ProviderMaterializationTransactionLifecycle {\n private readonly openSessions = new Set<object>()\n private active = true\n\n register(sessionToken: object): void {\n if (!this.active) {\n throw new MaterializationValidationError(\n \"Cannot open a materialization session on an inactive storage transaction.\"\n )\n }\n this.openSessions.add(sessionToken)\n }\n\n complete(sessionToken: object): void {\n this.openSessions.delete(sessionToken)\n }\n\n assertCommittable(): void {\n if (this.openSessions.size === 0) return\n throw new MaterializationValidationError(\n `Storage transaction has ${this.openSessions.size} unfinished materialization session${\n this.openSessions.size === 1 ? \"\" : \"s\"\n }; every session returned by begin() must be finalized.`\n )\n }\n\n deactivate(): void {\n this.active = false\n this.openSessions.clear()\n }\n}\n\nexport interface PreparedMaterializationWork {\n readonly record: MaterializationWorkRecord\n readonly uniqueKey: string\n readonly columns: ReturnType<typeof materializationWorkColumns>\n}\n\nexport function prepareMaterializationWork(\n state: Pick<ProviderMaterializationSessionState, \"header\" | \"workSealed\">,\n input: StageMaterializationWorkInput\n): readonly PreparedMaterializationWork[] {\n if (state.header.plan) {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"A plan-bound materialization session applies its plan and stages no work.\"\n )\n }\n if (state.workSealed) {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"Materialization work cannot be staged once vector changes stream or the plan applies.\"\n )\n }\n const keys = new Set<string>()\n const uniqueKeys = new Set<string>()\n return input.records.map((record) => {\n assertWorkRecord(record, state.header)\n const uniqueKey = workUniquenessKey(record)\n if (keys.has(record.recordKey) || uniqueKeys.has(uniqueKey)) {\n throw duplicateMaterializationWork(record.recordKey)\n }\n if (record.kind === \"incident-object\" || record.kind === \"object-existence\") {\n throw new MaterializationConflictError(\n \"effective-state\",\n \"Replacement work is staged on a replacement plan, not on a session.\"\n )\n }\n keys.add(record.recordKey)\n uniqueKeys.add(uniqueKey)\n return { record, uniqueKey, columns: materializationWorkColumns(record) }\n })\n}\n\nexport function assertMaterializationFinalizationCorrelation(\n state: Pick<ProviderMaterializationSessionState, \"header\" | \"applied\" | \"appliedEventCount\">,\n input: FinalizeMaterializationInput\n): void {\n const { commit } = state.header\n const { result, sourceActivations } = input.finalization\n if (!state.applied) {\n invalidMaterializationCorrelation(\"A materialization plan must apply before it finalizes.\")\n }\n if (\n result.commitId !== commit.id ||\n result.kind !== commit.intent.kind ||\n result.committedAt !== commit.committedAt ||\n result.created !== true ||\n !Number.isSafeInteger(result.eventCount) ||\n result.eventCount < 0 ||\n result.eventCount !== state.appliedEventCount\n ) {\n invalidMaterializationCorrelation(\n \"Materialization result does not correlate with its commit intent.\"\n )\n }\n if (commit.intent.kind === \"edit\") {\n if (result.kind !== \"edit\" || result.outcomes.length !== commit.intent.operationCount) {\n invalidMaterializationCorrelation(\"Edit result does not correlate with its operation count.\")\n }\n if (sourceActivations.length !== 0) {\n invalidMaterializationCorrelation(\n \"Edit materialization cannot activate a source materialization.\"\n )\n }\n } else if (commit.intent.kind === \"projection\") {\n if (result.kind !== \"projection\" || sourceActivations.length !== 1) {\n invalidMaterializationCorrelation(\n \"Projection result requires exactly one correlated source activation.\"\n )\n }\n } else if (result.kind !== \"telemetry\" || sourceActivations.length !== 0) {\n invalidMaterializationCorrelation(\"Telemetry result does not correlate with its point intent.\")\n }\n}\n\nexport function assertSourceActivationCorrelation(\n state: Pick<ProviderMaterializationSessionState, \"header\">,\n activation: SourceActivationWrite\n): void {\n const { commit } = state.header\n if (\n commit.intent.kind !== \"projection\" ||\n commit.origin.kind !== \"projection\" ||\n activation.source.projectionId !== commit.intent.source.projectionId ||\n activation.source.projectionId !== commit.origin.projectionId ||\n activation.execution.projectionRunId !== commit.origin.projectionRunId ||\n activation.protocol !== \"replacement\" ||\n stableJsonStringify(activation.datasetVersion) !==\n stableJsonStringify(commit.intent.datasetVersion) ||\n activation.projectionRevision !== commit.projectionRevision ||\n activation.ownershipHash !== commit.ownershipHash ||\n activation.ontologyRevision !== commit.ontologyRevision ||\n activation.lastCommitId !== commit.id ||\n activation.updatedAt !== commit.committedAt ||\n !state.header.expected.sources.some(\n (expected) => stableJsonStringify(expected) === stableJsonStringify(activation.expected)\n )\n ) {\n invalidMaterializationCorrelation(\n \"Source activation does not correlate with its projection commit.\"\n )\n }\n if (\n !state.header.plan ||\n state.header.plan.source.projectionId !== activation.source.projectionId ||\n state.header.plan.materializationId !== activation.materializationId\n ) {\n invalidMaterializationCorrelation(\n \"Source activation does not match the replacement plan the session applies.\"\n )\n }\n}\n\nfunction invalidMaterializationCorrelation(message: string): never {\n throw new MaterializationValidationError(message)\n}\n\nexport function uniqueSorted<T>(\n values: readonly T[],\n identity: (value: T) => string,\n sortKey: (value: T) => string\n): T[] {\n return [...new Map(values.map((value) => [identity(value), value])).values()].sort(\n (left, right) => sortKey(left).localeCompare(sortKey(right))\n )\n}\n\nexport function sameNonnegativeCounts(actual: object, expected: object): boolean {\n const actualCounts = actual as Record<string, unknown>\n return Object.entries(expected).every(\n ([key, value]) =>\n typeof value === \"number\" &&\n Number.isSafeInteger(actualCounts[key]) &&\n actualCounts[key] === value &&\n value >= 0\n )\n}\n\nexport function effectiveConflict(message: string): MaterializationConflictError {\n return new MaterializationConflictError(\"effective-state\", message)\n}\n\n/**\n * Rejects a commit whose expected object no longer matches its current effective row.\n *\n * Every provider checks commit expectations through these helpers, so a failed expectation is always\n * the `expectation` conflict kind: an Action run reports exactly that kind as a read conflict.\n */\nexport function assertExpectedObjectRevision(\n current: { readonly version: number; readonly lastCommitId: string | null } | null,\n expected: ExpectedObjectRevision\n): void {\n if (!expected.exists) {\n if (current) {\n throw expectationConflict(`Expected object ${objectRefKey(expected.ref)} to be absent.`)\n }\n return\n }\n if (\n !current ||\n current.version !== expected.version ||\n current.lastCommitId !== expected.lastCommitId\n ) {\n throw expectationConflict(`Expected object ${objectRefKey(expected.ref)} changed.`)\n }\n}\n\n/** `currentLastCommitId` is `undefined` when the link has no effective row. */\nexport function assertExpectedLinkRevision(\n currentLastCommitId: string | null | undefined,\n expected: ExpectedLinkRevision\n): void {\n if (!expected.exists) {\n if (currentLastCommitId !== undefined) {\n throw expectationConflict(`Expected link ${linkRefKey(expected.ref)} to be absent.`)\n }\n return\n }\n if (currentLastCommitId === undefined || currentLastCommitId !== expected.lastCommitId) {\n throw expectationConflict(`Expected link ${linkRefKey(expected.ref)} changed.`)\n }\n}\n\nexport function assertExpectedLinkScopeRevision(\n currentFingerprint: string | undefined,\n expected: ExpectedLinkScopeRevision\n): void {\n if (currentFingerprint === expected.fingerprint) return\n throw expectationConflict(\n `Expected link scope changed for ${expected.source.objectTypeId}:${expected.source.primaryId}.${expected.linkId}.`\n )\n}\n\nfunction expectationConflict(message: string): MaterializationConflictError {\n return new MaterializationConflictError(\"expectation\", message)\n}\n\nexport function materializationWorkColumns(record: MaterializationWorkRecord): {\n readonly lane: \"none\" | \"apply\" | \"cardinality\" | \"event\"\n readonly majorOrder: number\n readonly minorOrder: number\n readonly sortOne: string\n readonly sortTwo: string\n} {\n if (record.kind === \"plan\") {\n return {\n lane: \"apply\",\n majorOrder: record.applyPhase,\n minorOrder: materializationPlanKindRank(record.item.kind),\n sortOne: record.sortKey,\n sortTwo: \"\",\n }\n }\n if (record.kind === \"cardinality\") {\n return {\n lane: \"cardinality\",\n majorOrder: record.view === \"effective\" ? 0 : 1,\n minorOrder: 0,\n sortOne: record.scopeSortKey,\n sortTwo: record.linkSortKey,\n }\n }\n if (record.kind === \"event\") {\n return {\n lane: \"event\",\n majorOrder: record.eventKindRank,\n minorOrder: 0,\n sortOne: record.sortKey,\n sortTwo: \"\",\n }\n }\n return { lane: \"none\", majorOrder: 0, minorOrder: 0, sortOne: \"\", sortTwo: \"\" }\n}\n\nexport function duplicateMaterializationWork(key?: string): MaterializationConflictError {\n return new MaterializationConflictError(\n \"effective-state\",\n key === undefined\n ? \"Duplicate materialization work.\"\n : `Duplicate materialization work key '${key}'.`\n )\n}\n\nexport function canonicalJson(value: unknown): string {\n return stableJsonStringify(value)\n}\n\nexport function originColumns(origin: OntologyCommitWrite[\"origin\"]): {\n readonly kind: string\n readonly runId: string | null\n readonly batchOrdinal: number | null\n} {\n if (origin.kind === \"action\") {\n return { kind: \"action\", runId: origin.runId, batchOrdinal: null }\n }\n if (origin.kind === \"projection\") {\n return { kind: \"projection\", runId: origin.projectionRunId, batchOrdinal: null }\n }\n if (origin.kind === \"telemetry\" && origin.source.kind === \"projection\") {\n return {\n kind: \"telemetry\",\n runId: origin.source.projectionRunId,\n batchOrdinal: origin.source.batchOrdinal,\n }\n }\n return { kind: origin.kind, runId: null, batchOrdinal: null }\n}\n\nexport function originWhere(origin: OntologyCommitOriginSelector): {\n readonly kind: string\n readonly runId: string\n readonly batchOrdinal: number | null\n} {\n if (origin.kind === \"action\") {\n return { kind: origin.kind, runId: origin.actionRunId, batchOrdinal: null }\n }\n if (origin.kind === \"projection\") {\n return { kind: origin.kind, runId: origin.projectionRunId, batchOrdinal: null }\n }\n return {\n kind: origin.kind,\n runId: origin.projectionRunId,\n batchOrdinal: origin.batchOrdinal,\n }\n}\n\nexport function objectRefFromColumns(row: {\n readonly object_type_id: string\n readonly primary_id: string\n}): OntologyObjectRef {\n return { objectTypeId: row.object_type_id, primaryId: row.primary_id }\n}\n\nexport function linkRefFromColumns(row: {\n readonly source_type_id: string\n readonly source_id: string\n readonly link_id: string\n readonly target_type_id: string\n readonly target_id: string\n}): OntologyLinkRef {\n return {\n source: { objectTypeId: row.source_type_id, primaryId: row.source_id },\n linkId: row.link_id,\n target: { objectTypeId: row.target_type_id, primaryId: row.target_id },\n }\n}\n\nexport function sourceEntityKey(row: StageSourceAssertion): string {\n return projectionEntityKey(row.assertion)\n}\n\nexport interface SourceStageRow {\n readonly row: StageSourceAssertion\n readonly rootKey: string\n readonly entityKey: string\n}\n\nexport interface ReconciledSourceStageRows {\n readonly pending: readonly SourceStageRow[]\n readonly unchanged: number\n}\n\nexport function sourceStageRows(\n projectionKind: OntologySourceRecord[\"projectionKind\"],\n rows: readonly StageSourceAssertion[]\n): readonly SourceStageRow[] {\n return rows.map((row) => {\n assertSourceStagedRow(projectionKind, row)\n return sourceStageRow(row)\n })\n}\n\nexport function sourceStageRow(row: StageSourceAssertion): SourceStageRow {\n return {\n row,\n rootKey: projectionEntityKey(row.root),\n entityKey: sourceEntityKey(row),\n }\n}\n\nexport interface SourceStageRoot {\n readonly root: StageSourceAssertion[\"root\"]\n readonly rootKey: string\n readonly stagingOrdinal: number\n readonly deleted: boolean\n}\n\n/** Shared root identity rules, including deletions that deliberately have no assertion rows. */\nexport function sourceStageRoots(\n projectionKind: OntologySourceRecord[\"projectionKind\"],\n input: {\n readonly rows: readonly StageSourceAssertion[]\n readonly deletions?: readonly {\n readonly root: StageSourceAssertion[\"root\"]\n readonly stagingOrdinal: number\n }[]\n }\n): readonly SourceStageRoot[] {\n for (const row of input.rows) assertSourceStagedRow(projectionKind, row)\n const roots = new Map<string, SourceStageRoot>()\n const ordinals = new Map<number, string>()\n for (const [items, deleted] of [\n [input.rows, false],\n [input.deletions ?? [], true],\n ] as const) {\n for (const row of items) {\n assertSourceEntity(row.root, \"Source root\")\n if (\n row.root.kind !== projectionKind ||\n !Number.isSafeInteger(row.stagingOrdinal) ||\n row.stagingOrdinal < 0\n ) {\n throw new MaterializationValidationError(\"Source root kind or staging ordinal is invalid.\")\n }\n const key = projectionEntityKey(row.root)\n const previous = roots.get(key)\n const otherRoot = ordinals.get(row.stagingOrdinal)\n if (\n (previous &&\n (previous.deleted !== deleted || previous.stagingOrdinal !== row.stagingOrdinal)) ||\n (otherRoot !== undefined && otherRoot !== key)\n ) {\n throw new MaterializationValidationError(\n `Source materialization repeats root or stream ordinal ${row.stagingOrdinal} with different content.`\n )\n }\n roots.set(key, {\n root: row.root,\n rootKey: key,\n stagingOrdinal: row.stagingOrdinal,\n deleted,\n })\n ordinals.set(row.stagingOrdinal, key)\n }\n }\n return [...roots.values()]\n}\n\nexport function reconcileSourceStageRows(\n rows: readonly SourceStageRow[],\n existingRows: readonly SourceStageRow[]\n): ReconciledSourceStageRows {\n const rootOrdinals = new Map(\n existingRows.map(({ rootKey, row }) => [rootKey, row.stagingOrdinal] as const)\n )\n const ordinalRoots = new Map(\n existingRows.map(({ rootKey, row }) => [row.stagingOrdinal, rootKey] as const)\n )\n const assertions = new Map(existingRows.map((row) => [row.entityKey, row.row] as const))\n const pending = new Map<string, SourceStageRow>()\n let unchanged = 0\n\n for (const staged of rows) {\n const { entityKey, rootKey, row } = staged\n const rootOrdinal = rootOrdinals.get(rootKey)\n if (rootOrdinal !== undefined && rootOrdinal !== row.stagingOrdinal) {\n throw new MaterializationValidationError(\n `Source materialization repeats root ${rootKey} at a different stream ordinal.`\n )\n }\n const ordinalRoot = ordinalRoots.get(row.stagingOrdinal)\n if (ordinalRoot !== undefined && ordinalRoot !== rootKey) {\n throw new MaterializationValidationError(\n `Source materialization repeats stream ordinal ${row.stagingOrdinal} for another root.`\n )\n }\n\n const existing = assertions.get(entityKey) ?? pending.get(entityKey)?.row\n if (existing) {\n if (canonicalJson(existing) === canonicalJson(row)) {\n unchanged += 1\n continue\n }\n throw new MaterializationValidationError(\n `Source materialization repeats asserted entity ${entityKey}.`\n )\n }\n\n rootOrdinals.set(rootKey, row.stagingOrdinal)\n ordinalRoots.set(row.stagingOrdinal, rootKey)\n pending.set(entityKey, { ...staged, row: structuredClone(row) })\n }\n\n return { pending: [...pending.values()], unchanged }\n}\n\nexport function sourceMaterializationIdentity(\n input: BeginSourceMaterializationInput\n): NonNullable<AssertSourceMaterializationExecutionInput[\"identity\"]> {\n return {\n projectionKind: input.projectionKind,\n protocol: input.protocol,\n datasetVersion: input.datasetVersion,\n projectionRevision: input.projectionRevision,\n ownershipHash: input.ownershipHash,\n ontologyRevision: input.ontologyRevision,\n }\n}\n\nexport function assertSourceBeginInput(input: BeginSourceMaterializationInput): void {\n assertSourceWriteIdentity(input)\n if (input.projectionKind !== \"object\" && input.projectionKind !== \"link\") {\n throw new MaterializationValidationError(\"Source projection kind must be 'object' or 'link'.\")\n }\n if (input.protocol !== \"replacement\") {\n throw new MaterializationValidationError(\n \"Source materialization protocol must be 'replacement'.\"\n )\n }\n assertNonblank(input.projectionRevision, \"Source projection revision\")\n assertNonblank(input.ownershipHash, \"Source ownership hash\")\n assertNonblank(input.ontologyRevision, \"Source ontology revision\")\n assertNonblank(input.datasetVersion.datasetId, \"Source dataset id\")\n assertNonblank(input.datasetVersion.versionId, \"Source dataset version id\")\n assertTimestamp(input.datasetVersion.createdAt, \"Source dataset version createdAt\", true)\n assertTimestamp(input.createdAt, \"Source createdAt\", true)\n if (input.base) {\n assertNonblank(input.base.materializationId, \"Source base materialization id\")\n assertNonblank(input.base.lastCommitId, \"Source base commit id\")\n if (input.base.materializationId === input.materializationId) {\n throw new MaterializationValidationError(\"A source candidate cannot be its own base.\")\n }\n }\n}\n\nexport function assertSourceWriteIdentity(input: {\n readonly projectId: string\n readonly source: { readonly projectionId: string }\n readonly materializationId: string\n readonly execution: { readonly projectionRunId: string; readonly executionToken: string }\n}): void {\n assertSourceProject(input)\n assertNonblank(input.materializationId, \"Source materialization id\")\n assertSourceExecutionIdentity(input.execution.projectionRunId, input.execution.executionToken)\n}\n\nexport function assertSourceProject(input: {\n readonly projectId: string\n readonly source: { readonly projectionId: string }\n}): void {\n assertNonblank(input.projectId, \"Source project id\")\n assertNonblank(input.source.projectionId, \"Source projection id\")\n}\n\nexport function assertSourceExecutionIdentity(runId: string, token: string): void {\n assertNonblank(runId, \"Source projection run id\")\n assertNonblank(token, \"Source execution token\")\n}\n\nexport function assertSourceCandidateOwner(\n manifest: OntologySourceRecord,\n execution: { readonly projectionRunId: string; readonly executionToken: string }\n): void {\n if (\n manifest.projectionRunId !== execution.projectionRunId ||\n manifest.executionToken !== execution.executionToken\n ) {\n throw sourceConflict(\n `Source materialization '${manifest.materializationId}' is owned by another execution.`\n )\n }\n}\n\nexport function assertSourceStagedRow(\n projectionKind: OntologySourceRecord[\"projectionKind\"],\n row: StageSourceAssertion\n): void {\n if (!Number.isSafeInteger(row.stagingOrdinal) || row.stagingOrdinal < 0) {\n throw new MaterializationValidationError(\n \"Source staging ordinal must be a nonnegative safe integer.\"\n )\n }\n assertSourceEntity(row.root, \"Source root\")\n assertSourceEntity(row.assertion, \"Source assertion\")\n if (projectionKind === \"object\" && row.root.kind !== \"object\") {\n throw new MaterializationValidationError(\n \"Object projection source rows require an object root.\"\n )\n }\n if (projectionKind === \"link\" && (row.root.kind !== \"link\" || row.assertion.kind !== \"link\")) {\n throw new MaterializationValidationError(\n \"Link projection source rows require a link root and link assertion.\"\n )\n }\n}\n\nfunction assertSourceEntity(entity: StageSourceAssertion[\"root\"], label: string): void {\n if (entity.kind === \"object\") {\n assertNonblank(entity.ref.objectTypeId, `${label} object type id`)\n assertNonblank(entity.ref.primaryId, `${label} primary id`)\n return\n }\n assertNonblank(entity.ref.source.objectTypeId, `${label} source object type id`)\n assertNonblank(entity.ref.source.primaryId, `${label} source primary id`)\n assertNonblank(entity.ref.linkId, `${label} link id`)\n assertNonblank(entity.ref.target.objectTypeId, `${label} target object type id`)\n assertNonblank(entity.ref.target.primaryId, `${label} target primary id`)\n}\n\nexport function sourceEntityColumns(entity: StageSourceAssertion[\"root\"]): {\n readonly objectTypeId: string | null\n readonly primaryId: string | null\n readonly sourceTypeId: string | null\n readonly sourcePrimaryId: string | null\n readonly linkId: string | null\n readonly targetTypeId: string | null\n readonly targetPrimaryId: string | null\n} {\n if (entity.kind === \"object\") {\n return {\n objectTypeId: entity.ref.objectTypeId,\n primaryId: entity.ref.primaryId,\n sourceTypeId: null,\n sourcePrimaryId: null,\n linkId: null,\n targetTypeId: null,\n targetPrimaryId: null,\n }\n }\n return {\n objectTypeId: null,\n primaryId: null,\n sourceTypeId: entity.ref.source.objectTypeId,\n sourcePrimaryId: entity.ref.source.primaryId,\n linkId: entity.ref.linkId,\n targetTypeId: entity.ref.target.objectTypeId,\n targetPrimaryId: entity.ref.target.primaryId,\n }\n}\n\n/** The inverse of `projectionEntityKey`, for providers that store only the canonical key. */\nexport function sourceEntityFromKey(key: string): ProjectionEntityRef {\n const parts: unknown = JSON.parse(key)\n if (Array.isArray(parts) && parts.every((part) => typeof part === \"string\")) {\n if (parts[0] === \"object\" && parts.length === 3) {\n return { kind: \"object\", ref: { objectTypeId: parts[1]!, primaryId: parts[2]! } }\n }\n if (parts[0] === \"link\" && parts.length === 6) {\n return {\n kind: \"link\",\n ref: {\n source: { objectTypeId: parts[1]!, primaryId: parts[2]! },\n linkId: parts[3]!,\n target: { objectTypeId: parts[4]!, primaryId: parts[5]! },\n },\n }\n }\n }\n throw new MaterializationConflictError(\n \"source-materialization\",\n `Stored source key ${key} is not a canonical entity key.`\n )\n}\n\n/** What an assertion carries beyond its identity, or null when that is nothing. */\nexport function sourceAssertionPayload(\n assertion: ProjectionSourceAssertion\n): Readonly<Record<string, unknown>> | null {\n const { kind: _kind, ref: _ref, ...payload } = assertion\n return Object.keys(payload).length === 0 ? null : payload\n}\n\n/** Rebuilds an assertion from its typed identity columns and its payload. */\nexport function sourceAssertionFromColumns(\n columns: {\n readonly entity_kind: \"object\" | \"link\"\n readonly object_type_id: string | null\n readonly primary_id: string | null\n readonly source_type_id: string | null\n readonly source_primary_id: string | null\n readonly link_id: string | null\n readonly target_type_id: string | null\n readonly target_primary_id: string | null\n },\n payload: unknown\n): ProjectionSourceAssertion {\n const rest = (payload ?? {}) as Record<string, unknown>\n if (columns.entity_kind === \"object\") {\n return {\n kind: \"object\",\n ref: { objectTypeId: columns.object_type_id!, primaryId: columns.primary_id! },\n ...rest,\n } as ProjectionSourceAssertion\n }\n return {\n kind: \"link\",\n ref: {\n source: { objectTypeId: columns.source_type_id!, primaryId: columns.source_primary_id! },\n linkId: columns.link_id!,\n target: { objectTypeId: columns.target_type_id!, primaryId: columns.target_primary_id! },\n },\n ...rest,\n } as ProjectionSourceAssertion\n}\n\nexport function isExactStagingManifest(\n row: OntologySourceRecord,\n input: BeginSourceMaterializationInput\n): boolean {\n return (\n row.status === \"staging\" &&\n row.executionToken === input.execution.executionToken &&\n row.projectionRunId === input.execution.projectionRunId &&\n row.projectionKind === input.projectionKind &&\n row.protocol === input.protocol &&\n row.createdAt === input.createdAt &&\n row.datasetVersion.datasetId === input.datasetVersion.datasetId &&\n row.datasetVersion.versionId === input.datasetVersion.versionId &&\n row.datasetVersion.createdAt === input.datasetVersion.createdAt &&\n row.projectionRevision === input.projectionRevision &&\n row.ownershipHash === input.ownershipHash &&\n row.base?.materializationId === input.base?.materializationId &&\n row.base?.lastCommitId === input.base?.lastCommitId &&\n row.ontologyRevision === input.ontologyRevision\n )\n}\n\nexport function sourceConflict(message: string): MaterializationConflictError {\n return new MaterializationConflictError(\"source-materialization\", message)\n}\n",
|
|
6
|
+
"import { MaterializationValidationError } from \"../../materialization/errors\"\n\nexport function assertNonblank(value: string, label: string): void {\n if (typeof value !== \"string\" || value.trim().length === 0) {\n throw new MaterializationValidationError(`${label} must be nonblank.`)\n }\n}\n\nexport function assertPositiveInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value <= 0) {\n throw new MaterializationValidationError(`${label} must be a positive safe integer.`)\n }\n}\n\nexport function assertNonnegativeInteger(value: number, label: string): void {\n if (!Number.isSafeInteger(value) || value < 0) {\n throw new MaterializationValidationError(`${label} must be a nonnegative safe integer.`)\n }\n}\n\nexport function assertTimestamp(value: string, label: string, canonical = true): number {\n const milliseconds = Date.parse(value)\n if (\n !Number.isFinite(milliseconds) ||\n (canonical && new Date(milliseconds).toISOString() !== value)\n ) {\n throw new MaterializationValidationError(\n `${label} must be ${canonical ? \"a canonical UTC\" : \"a valid\"} timestamp.`\n )\n }\n return milliseconds\n}\n\nexport function invalidCorrelation(message: string): never {\n throw new MaterializationValidationError(message)\n}\n",
|
|
7
|
+
"import type { JsonValue } from \"../../json\"\nimport type {\n EditCommitResult,\n EffectiveLinkSnapshot,\n EffectiveObjectSnapshot,\n ExpectedLinkRevision,\n ExpectedLinkScopeRevision,\n ExpectedObjectRevision,\n LinkOverride,\n LinkSlotOverride,\n ObjectOverride,\n OntologyLinkRef,\n OntologyLinkScopeRef,\n OntologyObjectRef,\n PinnedDatasetVersion,\n ProjectionCommitResult,\n ProjectionExecution,\n ProjectionSourceRef,\n TelemetryCommitResult,\n TelemetrySeriesRef,\n} from \"../../materialization/model\"\nimport type { UniqueValueKind } from \"../../ontology/unique-values\"\nimport type { OntologyCommitRecord, OntologyCommitWrite } from \"./commits\"\nimport type { OntologyMaterializationEventDraft } from \"./outbox\"\nimport type { StoredSourceLinkAssertion, StoredSourceObjectAssertion } from \"./sources\"\n\nexport interface StoredObjectOverride {\n readonly ref: OntologyObjectRef\n readonly value: ObjectOverride\n /** Per-property Action/runtime edit time. Legacy rows fall back to `updatedAt`. */\n readonly editedAt?: Readonly<Record<string, string>>\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface StoredLinkOverride {\n readonly ref: OntologyLinkRef\n readonly value: LinkOverride\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface StoredLinkSlotOverride {\n readonly ref: OntologyLinkScopeRef\n /** `legacy-conflict` is migration state and is rejected only when read as cardinality-one. */\n readonly value: LinkSlotOverride | { readonly kind: \"legacy-conflict\" }\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface StoredTelemetryPoint {\n readonly series: TelemetrySeriesRef\n readonly value: JsonValue\n readonly unit?: string\n readonly at: string\n readonly lastCommitId: string\n}\n\nexport interface ExpectedTimeseriesPointRevision {\n readonly series: TelemetrySeriesRef\n readonly at: string\n readonly lastCommitId: string | null\n}\n\n/** One value of a unique property, as the key core computes for it. */\nexport interface UniqueValueRef {\n readonly objectTypeId: string\n readonly propertyId: string\n readonly valueKey: string\n}\n\n/** A unique value and the object that gives it up or takes it. */\nexport interface ExactUniqueValueWrite extends UniqueValueRef {\n readonly primaryId: string\n}\n\n/**\n * A unique value an object takes, with how its key was computed. Storage refuses it unless the\n * property's stored values were prepared with that same key kind and version.\n */\nexport interface ExactUniqueValueClaim extends ExactUniqueValueWrite {\n readonly keyKind: UniqueValueKind\n readonly keyVersion: number\n}\n\nexport interface MaterializationObjectState {\n readonly ref: OntologyObjectRef\n readonly source: StoredSourceObjectAssertion | null\n readonly override: StoredObjectOverride | null\n readonly effective: EffectiveObjectSnapshot | null\n readonly latestTelemetry: readonly StoredTelemetryPoint[]\n}\n\nexport interface MaterializationLinkState {\n readonly ref: OntologyLinkRef\n readonly source: StoredSourceLinkAssertion | null\n readonly override: StoredLinkOverride | null\n readonly slotOverride: StoredLinkSlotOverride | null\n readonly effective: EffectiveLinkSnapshot | null\n}\n\n/** Revision of the complete effective `(source, linkId)` member set, for either cardinality. */\nexport interface MaterializationLinkScopeRevision {\n readonly source: OntologyObjectRef\n readonly linkId: string\n readonly effectiveCount: number\n readonly fingerprint: string\n}\n\n/** Cardinality-one slot state used while resolving managed and projected authority. */\nexport interface MaterializationLinkScopeState extends MaterializationLinkScopeRevision {\n /** Complete active source value for the link slot. */\n readonly sourceAssertion: StoredSourceLinkAssertion | null\n /** Managed slot authority; absence delegates to source authority. */\n readonly override: StoredLinkSlotOverride | null\n /** The single effective edge, if its endpoints are effective. */\n readonly effective: EffectiveLinkSnapshot | null\n}\n\nexport interface MaterializationStatePage {\n readonly objects: readonly MaterializationObjectState[]\n readonly links: readonly MaterializationLinkState[]\n readonly linkScopes: readonly MaterializationLinkScopeState[]\n readonly points: readonly StoredTelemetryPoint[]\n /** The objects holding requested unique values; a value no object holds is left out. */\n readonly uniqueHolders?: readonly ExactUniqueValueWrite[]\n}\n\nexport interface SourceReplacementObjectState extends Omit<MaterializationObjectState, \"source\"> {\n readonly candidateSource: StoredSourceObjectAssertion | null\n}\n\nexport interface SourceReplacementLinkState extends Omit<MaterializationLinkState, \"source\"> {\n readonly candidateSource: StoredSourceLinkAssertion | null\n /** False only for an unchanged existing member included to validate a complete link scope. */\n readonly diffRequired: boolean\n}\n\nexport interface MaterializationStateRequestChunk {\n readonly objects: readonly OntologyObjectRef[]\n readonly links: readonly OntologyLinkRef[]\n readonly linkScopes: readonly {\n readonly source: OntologyObjectRef\n readonly linkId: string\n }[]\n /** Provider work request for every effective link touching these objects in either direction. */\n readonly incidentObjects: readonly OntologyObjectRef[]\n readonly points: readonly {\n readonly series: TelemetrySeriesRef\n readonly at: string\n }[]\n /** Unique values whose holders to read. */\n readonly uniqueValues?: readonly UniqueValueRef[]\n}\n\n/**\n * Provider-local opaque handle valid only for its creating transaction until commit or rollback.\n * Providers own the token and validate its identity/liveness (for example, through a WeakMap).\n */\nexport interface MaterializationSession {\n readonly providerToken: object\n}\n\nexport interface ExpectedSourceRevision {\n readonly source: ProjectionSourceRef\n readonly activeMaterializationId: string | null\n readonly lastCommitId: string | null\n}\n\nexport interface MaterializationCasState {\n readonly sources: readonly ExpectedSourceRevision[]\n readonly objects: readonly ExpectedObjectRevision[]\n readonly links: readonly ExpectedLinkRevision[]\n readonly linkScopes: readonly ExpectedLinkScopeRevision[]\n readonly points: readonly ExpectedTimeseriesPointRevision[]\n}\n\nexport interface MaterializationPlanHeader {\n /**\n * Core must fence Action/projection execution through the matching run facade on this same\n * transaction before opening the exact-plan session. Replacement activation and telemetry\n * checkpoint writes recheck the token before commit.\n */\n readonly commit: OntologyCommitWrite\n readonly expected: MaterializationCasState\n /**\n * A projection commit applies the durable plan of this candidate, refreshed in the same\n * transaction, instead of work staged on the session.\n */\n readonly plan?: {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n }\n}\n\nexport interface ExactObjectOverrideWrite {\n readonly ref: OntologyObjectRef\n readonly value: ObjectOverride\n readonly editedAt: Readonly<Record<string, string>>\n readonly expectedLastCommitId: string | null\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface ExactLinkOverrideWrite {\n readonly ref: OntologyLinkRef\n readonly value: LinkOverride\n readonly expectedLastCommitId: string | null\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface ExactObjectOverrideDelete {\n readonly ref: OntologyObjectRef\n readonly expectedLastCommitId: string\n}\n\nexport interface ExactLinkOverrideDelete {\n readonly ref: OntologyLinkRef\n readonly expectedLastCommitId: string\n}\n\nexport interface ExactLinkSlotOverrideWrite {\n readonly ref: OntologyLinkScopeRef\n readonly value: LinkSlotOverride\n readonly expectedLastCommitId: string | null\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface ExactLinkSlotOverrideDelete {\n readonly ref: OntologyLinkScopeRef\n readonly expectedLastCommitId: string\n}\n\nexport interface ExactEffectiveObjectWrite {\n readonly row: EffectiveObjectSnapshot\n readonly expected: ExpectedObjectRevision\n}\n\nexport interface ExactEffectiveLinkWrite {\n readonly row: EffectiveLinkSnapshot\n readonly expected: ExpectedLinkRevision\n}\n\nexport interface ExactEffectiveObjectDelete {\n readonly ref: OntologyObjectRef\n readonly expected: Extract<ExpectedObjectRevision, { readonly exists: true }>\n}\n\nexport interface ExactEffectiveLinkDelete {\n readonly ref: OntologyLinkRef\n readonly expected: Extract<ExpectedLinkRevision, { readonly exists: true }>\n}\n\nexport interface ExactTimeseriesPointWrite {\n readonly point: StoredTelemetryPoint\n readonly expected: ExpectedTimeseriesPointRevision\n}\n\nexport interface SourceActivationWrite {\n readonly source: ProjectionSourceRef\n readonly materializationId: string\n readonly execution: ProjectionExecution\n readonly projectionKind: \"object\" | \"link\"\n readonly protocol: \"replacement\"\n readonly datasetVersion: PinnedDatasetVersion\n readonly projectionRevision: string\n readonly ownershipHash: string\n readonly ontologyRevision: string\n readonly expected: ExpectedSourceRevision\n readonly lastCommitId: string\n readonly updatedAt: string\n}\n\nexport interface MaterializationPlanFinalization {\n readonly sourceActivations: readonly SourceActivationWrite[]\n readonly result: EditCommitResult | ProjectionCommitResult | TelemetryCommitResult\n}\n\nexport interface FinalizeMaterializationInput {\n readonly session: MaterializationSession\n readonly finalization: MaterializationPlanFinalization\n}\n\nexport interface ApplyMaterializationResult {\n readonly commit: OntologyCommitRecord\n}\n\nexport interface StreamMaterializationStateInput {\n readonly session: MaterializationSession\n readonly requests: AsyncIterable<MaterializationStateRequestChunk>\n readonly pageRows: number\n}\n\nexport type MaterializationWorkEntityKind = \"object\" | \"link\" | \"point\"\n\nexport interface MaterializationClassificationWorkRecord {\n readonly kind: \"classification\"\n readonly recordKey: string\n readonly entityKind: MaterializationWorkEntityKind\n readonly identityKey: string\n}\n\n/** Replacement plans only: the existence an object is planned to have, read by its links. */\nexport interface MaterializationObjectExistenceWorkRecord {\n readonly kind: \"object-existence\"\n readonly recordKey: string\n readonly ref: OntologyObjectRef\n readonly exists: boolean\n}\n\n/** Replacement plans only: an object whose existence flips, so its links join the plan. */\nexport interface MaterializationIncidentObjectWorkRecord {\n readonly kind: \"incident-object\"\n readonly recordKey: string\n readonly ref: OntologyObjectRef\n}\n\nexport interface MaterializationCardinalityOccupantWorkRecord {\n readonly kind: \"cardinality\"\n readonly recordKey: string\n /** Projection candidates are validated independently from the final effective scope. */\n readonly view: \"candidate\" | \"effective\"\n readonly scopeSortKey: string\n readonly linkSortKey: string\n readonly ref: OntologyLinkRef\n readonly occupied: boolean\n}\n\nexport type MaterializationPlanWorkItem =\n | { readonly kind: \"object-override-upsert\"; readonly value: ExactObjectOverrideWrite }\n | { readonly kind: \"object-override-delete\"; readonly value: ExactObjectOverrideDelete }\n | { readonly kind: \"link-override-upsert\"; readonly value: ExactLinkOverrideWrite }\n | { readonly kind: \"link-override-delete\"; readonly value: ExactLinkOverrideDelete }\n | { readonly kind: \"link-slot-override-upsert\"; readonly value: ExactLinkSlotOverrideWrite }\n | { readonly kind: \"link-slot-override-delete\"; readonly value: ExactLinkSlotOverrideDelete }\n | { readonly kind: \"object-upsert\"; readonly value: ExactEffectiveObjectWrite }\n | { readonly kind: \"object-delete\"; readonly value: ExactEffectiveObjectDelete }\n | { readonly kind: \"link-upsert\"; readonly value: ExactEffectiveLinkWrite }\n | { readonly kind: \"link-delete\"; readonly value: ExactEffectiveLinkDelete }\n | { readonly kind: \"point-upsert\"; readonly value: ExactTimeseriesPointWrite }\n /** Drops the value's holder row if it still names this object; a missing row is no conflict. */\n | { readonly kind: \"unique-value-release\"; readonly value: ExactUniqueValueWrite }\n /** Rejects a value another object holds once every release of the commit has applied. */\n | { readonly kind: \"unique-value-claim\"; readonly value: ExactUniqueValueClaim }\n\n/**\n * Safe physical phases shared by the core planner and provider validation through\n * {@link materializationApplyPhase}.\n */\nexport type MaterializationApplyPhase = 0 | 1 | 2 | 3 | 4 | 5 | 6\n\nexport interface MaterializationPlanWorkRecord {\n readonly kind: \"plan\"\n readonly recordKey: string\n readonly applyPhase: MaterializationApplyPhase\n readonly sortKey: string\n readonly item: MaterializationPlanWorkItem\n}\n\n/**\n * Canonical physical apply phase for a plan work item kind. The application-layer work planner and\n * the provider's order validation both derive ordering from this single source so the two can never\n * drift apart. Kept in the neutral storage contract because storage must not import the materializer.\n */\nexport function materializationApplyPhase(\n kind: MaterializationPlanWorkItem[\"kind\"]\n): MaterializationApplyPhase {\n switch (kind) {\n case \"object-override-upsert\":\n case \"object-override-delete\":\n case \"link-override-upsert\":\n case \"link-override-delete\":\n case \"link-slot-override-upsert\":\n case \"link-slot-override-delete\":\n case \"unique-value-release\":\n return 0\n case \"point-upsert\":\n return 1\n case \"link-delete\":\n return 2\n case \"object-delete\":\n return 3\n case \"object-upsert\":\n return 4\n case \"link-upsert\":\n return 5\n // Last, after every release of the commit in any chunk: values can move between objects.\n case \"unique-value-claim\":\n return 6\n }\n}\n\nexport interface MaterializationEventWorkRecord {\n readonly kind: \"event\"\n readonly recordKey: string\n readonly eventKindRank: number\n readonly sortKey: string\n readonly draft: OntologyMaterializationEventDraft\n}\n\nexport type MaterializationWorkRecord =\n | MaterializationClassificationWorkRecord\n | MaterializationObjectExistenceWorkRecord\n | MaterializationIncidentObjectWorkRecord\n | MaterializationCardinalityOccupantWorkRecord\n | MaterializationPlanWorkRecord\n | MaterializationEventWorkRecord\n\nexport interface StageMaterializationWorkInput {\n readonly session: MaterializationSession\n /**\n * Insert-only and batch-atomic. Staging closes once vector changes stream or the plan applies.\n * Object existence and incident objects belong to replacement plans and are rejected here.\n */\n readonly records: readonly MaterializationWorkRecord[]\n}\n\nexport interface StreamMaterializationVectorChangesInput {\n readonly session: MaterializationSession\n /** Object types that declare vector profiles. */\n readonly objectTypeIds: readonly string[]\n readonly pageRows: number\n}\n\nexport type MaterializationVectorChange = Extract<\n MaterializationPlanWorkItem,\n { readonly kind: \"object-upsert\" | \"object-delete\" }\n>\n\nexport interface MaterializationVectorChangePage {\n readonly items: readonly MaterializationVectorChange[]\n}\n\nexport interface ApplyMaterializationInput {\n readonly session: MaterializationSession\n}\n\nexport interface AppliedMaterialization {\n /** Outbox events written, with commit ordinals contiguous from zero. */\n readonly eventCount: number\n}\n\nexport interface MaterializationObjectExistence {\n readonly ref: OntologyObjectRef\n readonly exists: boolean\n}\n\nexport interface OntologyMaterializationStorage {\n begin(input: MaterializationPlanHeader): Promise<MaterializationSession>\n streamState(input: StreamMaterializationStateInput): AsyncIterable<MaterializationStatePage>\n /** Not on a plan-bound session: its work is the durable plan. */\n stageWork(input: StageMaterializationWorkInput): Promise<void>\n /**\n * Staged object upserts and deletes that vector profiles must see before they apply: those of\n * `objectTypeIds`, and any other object that still holds a stored vector. Streams once, before\n * `apply`.\n */\n streamVectorChanges(\n input: StreamMaterializationVectorChangesInput\n ): AsyncIterable<MaterializationVectorChangePage>\n /**\n * Validates the staged cardinality, applies the staged plan in phase order and writes the staged\n * events to the outbox in canonical order. Once per session, before `finalize`.\n */\n apply(input: ApplyMaterializationInput): Promise<AppliedMaterialization>\n /**\n * Finalizes ontology-owned state only. Execution checkpoints remain owned by their run stores\n * and are coordinated by the Materializer through the enclosing Storage transaction.\n */\n finalize(input: FinalizeMaterializationInput): Promise<ApplyMaterializationResult>\n}\n",
|
|
8
|
+
"import type {\n EditOntologyCommitIntent,\n OntologyCommitWrite,\n ProjectionOntologyCommitIntent,\n TelemetryOntologyCommitIntent,\n} from \"./commits\"\nimport type { MaterializationPlanHeader } from \"./materializations\"\nimport {\n assertNonblank,\n assertNonnegativeInteger,\n assertPositiveInteger,\n assertTimestamp,\n invalidCorrelation,\n} from \"./provider-validation\"\n\n/** Validates provider-neutral commit identity and intent/origin correlation. */\nexport function assertMaterializationHeader({ commit }: MaterializationPlanHeader): void {\n assertCommitEnvelope(commit)\n\n switch (commit.intent.kind) {\n case \"edit\":\n assertEditCommit(commit, commit.intent)\n break\n case \"projection\":\n assertProjectionCommit(commit, commit.intent)\n break\n case \"telemetry\":\n assertTelemetryCommit(commit, commit.intent)\n break\n }\n}\n\nfunction assertCommitEnvelope(commit: OntologyCommitWrite): void {\n assertNonblank(commit.projectId, \"Materialization project id\")\n assertNonblank(commit.id, \"Materialization commit id\")\n assertNonblank(commit.idempotencyKey, \"Materialization idempotency key\")\n assertNonblank(commit.requestHash, \"Materialization request hash\")\n assertNonblank(commit.executionId, \"Materialization execution id\")\n assertNonblank(commit.ontologyRevision, \"Materialization ontology revision\")\n assertTimestamp(commit.committedAt, \"Materialization commit time\")\n}\n\nfunction assertEditCommit(commit: OntologyCommitWrite, intent: EditOntologyCommitIntent): void {\n assertNonnegativeInteger(intent.operationCount, \"Edit commit operation count\")\n\n switch (commit.origin.kind) {\n case \"action\":\n assertNonblank(commit.origin.actionId, \"Action origin action id\")\n assertNonblank(commit.origin.runId, \"Action origin run id\")\n return\n case \"runtime\":\n assertNonblank(commit.origin.requestId, \"Runtime origin request id\")\n return\n default:\n invalidCorrelation(\"Edit commit origin does not correlate with its intent.\")\n }\n}\n\nfunction assertProjectionCommit(\n commit: OntologyCommitWrite,\n intent: ProjectionOntologyCommitIntent\n): void {\n if (commit.origin.kind !== \"projection\") {\n invalidCorrelation(\"Projection commit origin does not correlate with its intent.\")\n }\n\n assertProjectionSemanticMetadata(commit)\n assertNonblank(commit.origin.projectionRunId, \"Projection run id\")\n assertTimestamp(intent.datasetVersion.createdAt, \"Projection dataset version createdAt\")\n\n if (commit.origin.projectionId !== intent.source.projectionId) {\n invalidCorrelation(\"Projection commit origin does not match its projection.\")\n }\n if (\n commit.origin.datasetId !== intent.datasetVersion.datasetId ||\n commit.origin.datasetVersionId !== intent.datasetVersion.versionId\n ) {\n invalidCorrelation(\"Projection commit origin does not match its dataset version.\")\n }\n}\n\nfunction assertTelemetryCommit(\n commit: OntologyCommitWrite,\n intent: TelemetryOntologyCommitIntent\n): void {\n if (commit.origin.kind !== \"telemetry\") {\n invalidCorrelation(\"Telemetry commit origin does not correlate with its intent.\")\n }\n\n assertTelemetryPointCounts(intent)\n if (intent.source.kind === \"runtime\") {\n assertRuntimeTelemetryCommit(commit)\n return\n }\n assertProjectionTelemetryCommit(commit, intent.source, intent.inputPointCount)\n}\n\nfunction assertTelemetryPointCounts(intent: TelemetryOntologyCommitIntent): void {\n assertNonnegativeInteger(intent.pointCount, \"Telemetry commit point count\")\n assertNonnegativeInteger(intent.inputPointCount, \"Telemetry commit input point count\")\n if (intent.inputPointCount < intent.pointCount) {\n invalidCorrelation(\n \"Telemetry input point count cannot be lower than its canonical point count.\"\n )\n }\n}\n\nfunction assertRuntimeTelemetryCommit(commit: OntologyCommitWrite): void {\n if (commit.origin.kind !== \"telemetry\" || commit.origin.source.kind !== \"runtime\") {\n invalidCorrelation(\"Runtime telemetry origin does not correlate with its intent.\")\n }\n if (commit.projectionRevision !== undefined || commit.ownershipHash !== undefined) {\n invalidCorrelation(\"Runtime telemetry commit contains projection-only metadata.\")\n }\n assertNonblank(commit.origin.source.requestId, \"Runtime telemetry request id\")\n}\n\nfunction assertProjectionTelemetryCommit(\n commit: OntologyCommitWrite,\n source: Extract<TelemetryOntologyCommitIntent[\"source\"], { readonly kind: \"projection\" }>,\n inputPointCount: number\n): void {\n if (commit.origin.kind !== \"telemetry\" || commit.origin.source.kind !== \"projection\") {\n invalidCorrelation(\"Projection telemetry origin does not correlate with its intent.\")\n }\n\n const origin = commit.origin.source\n assertProjectionSemanticMetadata(commit)\n assertNonblank(origin.projectionRunId, \"Telemetry projection run id\")\n assertTimestamp(source.datasetVersion.createdAt, \"Telemetry dataset version createdAt\")\n assertProjectionTelemetryBatch(source, inputPointCount)\n\n if (origin.projectionId !== source.projection.projectionId) {\n invalidCorrelation(\"Projection telemetry origin does not match its projection.\")\n }\n if (\n origin.datasetId !== source.datasetVersion.datasetId ||\n origin.datasetVersionId !== source.datasetVersion.versionId\n ) {\n invalidCorrelation(\"Projection telemetry origin does not match its dataset version.\")\n }\n if (origin.batchOrdinal !== source.batchOrdinal) {\n invalidCorrelation(\"Projection telemetry origin does not match its batch ordinal.\")\n }\n}\n\nfunction assertProjectionTelemetryBatch(\n source: Extract<TelemetryOntologyCommitIntent[\"source\"], { readonly kind: \"projection\" }>,\n inputPointCount: number\n): void {\n assertNonnegativeInteger(source.batchOrdinal, \"Projection telemetry batch ordinal\")\n assertPositiveInteger(source.sourceRowCount, \"Projection telemetry source row count\")\n assertNonnegativeInteger(source.sourceRowsSkipped, \"Projection telemetry skipped row count\")\n\n if (source.sourceRowsSkipped > source.sourceRowCount) {\n invalidCorrelation(\"Projection telemetry skipped rows exceed its source row count.\")\n }\n if (inputPointCount < source.sourceRowCount - source.sourceRowsSkipped) {\n invalidCorrelation(\n \"Projection telemetry input points do not account for every non-skipped source row.\"\n )\n }\n if (typeof source.inputExhausted !== \"boolean\") {\n invalidCorrelation(\"Projection telemetry input exhaustion marker is invalid.\")\n }\n}\n\nfunction assertProjectionSemanticMetadata(commit: OntologyCommitWrite): void {\n if (commit.projectionRevision === undefined || commit.ownershipHash === undefined) {\n invalidCorrelation(\"Projection materialization is missing semantic identity metadata.\")\n }\n assertNonblank(commit.projectionRevision, \"Projection revision\")\n assertNonblank(commit.ownershipHash, \"Projection ownership hash\")\n}\n",
|
|
9
|
+
"import {\n MaterializationConflictError,\n MaterializationValidationError,\n UniquePropertyNotPreparedError,\n UniqueValueViolationError,\n} from \"../../materialization/errors\"\nimport { eventAttribution, materializationEvent } from \"../../materialization/event-envelopes\"\nimport type {\n OntologyMaterializationEventAttribution,\n OntologyMaterializationEventCommit,\n} from \"../../materialization/events\"\nimport { createEventId, materializationEventKindOrdinal } from \"../../materialization/identity\"\nimport type {\n EffectiveChangeCounts,\n OntologyLinkRef,\n OntologyObjectRef,\n} from \"../../materialization/model\"\nimport {\n linkRefKey,\n linkRefSortKey,\n linkScopeSortKey,\n objectRefKey,\n projectionEntityKey,\n telemetryPointKey,\n} from \"../../materialization/refs\"\nimport type { OntologyCommitWrite } from \"./commits\"\nimport {\n type ExactEffectiveLinkDelete,\n type ExactEffectiveLinkWrite,\n type ExactEffectiveObjectDelete,\n type ExactEffectiveObjectWrite,\n type ExactLinkOverrideDelete,\n type ExactLinkOverrideWrite,\n type ExactLinkSlotOverrideDelete,\n type ExactLinkSlotOverrideWrite,\n type ExactObjectOverrideDelete,\n type ExactObjectOverrideWrite,\n type ExactTimeseriesPointWrite,\n type ExactUniqueValueClaim,\n type ExactUniqueValueWrite,\n type MaterializationCardinalityOccupantWorkRecord,\n type MaterializationEventWorkRecord,\n type MaterializationPlanHeader,\n type MaterializationPlanWorkItem,\n type MaterializationPlanWorkRecord,\n type MaterializationWorkRecord,\n materializationApplyPhase,\n type UniqueValueRef,\n} from \"./materializations\"\nimport type { ClaimedOntologyOutboxRow, OntologyMaterializationEventDraft } from \"./outbox\"\nimport { assertMaterializationHeader } from \"./provider-header-validation\"\nimport { assertTimestamp, invalidCorrelation } from \"./provider-validation\"\nimport type { PlannedReplacementIdentity, StageReplacementPlanInput } from \"./replacement-plans\"\n\nexport { invalidCorrelation } from \"./provider-validation\"\n\nexport function assertPageRows(value: number): void {\n if (!Number.isSafeInteger(value) || value <= 0)\n throw new MaterializationValidationError(\"Materialization page size must be positive.\")\n}\n\nexport function materializationChunkRows(chunk: MaterializationPlanChunk): number {\n return (\n chunk.overrides.objects.upserts.length +\n chunk.overrides.objects.deletes.length +\n chunk.overrides.links.edges.upserts.length +\n chunk.overrides.links.edges.deletes.length +\n chunk.overrides.links.slots.upserts.length +\n chunk.overrides.links.slots.deletes.length +\n chunk.effective.objectUpserts.length +\n chunk.effective.objectDeletes.length +\n chunk.effective.linkUpserts.length +\n chunk.effective.linkDeletes.length +\n chunk.timeseries.pointUpserts.length +\n chunk.unique.releases.length +\n chunk.unique.claims.length +\n chunk.outbox.length\n )\n}\n\nexport interface ExactOverrideWrites {\n readonly objects: {\n readonly upserts: readonly ExactObjectOverrideWrite[]\n readonly deletes: readonly ExactObjectOverrideDelete[]\n }\n readonly links: {\n readonly edges: {\n readonly upserts: readonly ExactLinkOverrideWrite[]\n readonly deletes: readonly ExactLinkOverrideDelete[]\n }\n readonly slots: {\n readonly upserts: readonly ExactLinkSlotOverrideWrite[]\n readonly deletes: readonly ExactLinkSlotOverrideDelete[]\n }\n }\n}\n\nexport interface ExactEffectiveWrites {\n readonly objectUpserts: readonly ExactEffectiveObjectWrite[]\n readonly objectDeletes: readonly ExactEffectiveObjectDelete[]\n readonly linkUpserts: readonly ExactEffectiveLinkWrite[]\n readonly linkDeletes: readonly ExactEffectiveLinkDelete[]\n}\n\nexport interface ExactTimeseriesWrites {\n readonly pointUpserts: readonly ExactTimeseriesPointWrite[]\n}\n\n/** A chunk holds one phase, so releases and claims never share one. */\nexport interface ExactUniqueValueWrites {\n readonly releases: readonly ExactUniqueValueWrite[]\n readonly claims: readonly ExactUniqueValueClaim[]\n}\n\n/** Plan items and outbox writes of one bounded provider write, grouped by table. */\nexport interface MaterializationPlanChunk {\n readonly overrides: ExactOverrideWrites\n readonly effective: ExactEffectiveWrites\n readonly timeseries: ExactTimeseriesWrites\n readonly unique: ExactUniqueValueWrites\n readonly outbox: readonly OntologyOutboxWrite[]\n}\n\n/** Groups staged plan items, already in apply order, and outbox writes into one provider write. */\nexport function materializationPlanChunk(\n items: readonly MaterializationPlanWorkItem[],\n outbox: readonly OntologyOutboxWrite[] = []\n): MaterializationPlanChunk {\n const chunk = {\n overrides: {\n objects: {\n upserts: [] as ExactObjectOverrideWrite[],\n deletes: [] as ExactObjectOverrideDelete[],\n },\n links: {\n edges: {\n upserts: [] as ExactLinkOverrideWrite[],\n deletes: [] as ExactLinkOverrideDelete[],\n },\n slots: {\n upserts: [] as ExactLinkSlotOverrideWrite[],\n deletes: [] as ExactLinkSlotOverrideDelete[],\n },\n },\n },\n effective: {\n objectUpserts: [] as ExactEffectiveObjectWrite[],\n objectDeletes: [] as ExactEffectiveObjectDelete[],\n linkUpserts: [] as ExactEffectiveLinkWrite[],\n linkDeletes: [] as ExactEffectiveLinkDelete[],\n },\n timeseries: { pointUpserts: [] as ExactTimeseriesPointWrite[] },\n unique: {\n releases: [] as ExactUniqueValueWrite[],\n claims: [] as ExactUniqueValueClaim[],\n },\n outbox,\n }\n for (const item of items) {\n switch (item.kind) {\n case \"object-override-upsert\":\n chunk.overrides.objects.upserts.push(item.value)\n break\n case \"object-override-delete\":\n chunk.overrides.objects.deletes.push(item.value)\n break\n case \"link-override-upsert\":\n chunk.overrides.links.edges.upserts.push(item.value)\n break\n case \"link-override-delete\":\n chunk.overrides.links.edges.deletes.push(item.value)\n break\n case \"link-slot-override-upsert\":\n chunk.overrides.links.slots.upserts.push(item.value)\n break\n case \"link-slot-override-delete\":\n chunk.overrides.links.slots.deletes.push(item.value)\n break\n case \"object-upsert\":\n chunk.effective.objectUpserts.push(item.value)\n break\n case \"object-delete\":\n chunk.effective.objectDeletes.push(item.value)\n break\n case \"link-upsert\":\n chunk.effective.linkUpserts.push(item.value)\n break\n case \"link-delete\":\n chunk.effective.linkDeletes.push(item.value)\n break\n case \"point-upsert\":\n chunk.timeseries.pointUpserts.push(item.value)\n break\n case \"unique-value-release\":\n chunk.unique.releases.push(item.value)\n break\n case \"unique-value-claim\":\n chunk.unique.claims.push(item.value)\n break\n }\n }\n return chunk\n}\n\n/**\n * One outbox row: a staged event draft at its commit ordinal. The draft is all a provider stores\n * of the event; the commit's own row holds the context every event of that commit shares.\n */\nexport interface OntologyOutboxWrite {\n readonly id: string\n readonly commitOrdinal: number\n readonly event: OntologyMaterializationEventDraft\n /** The commit time: an event is due, and ordered, from the moment its commit is. */\n readonly createdAt: string\n}\n\n/** The outbox write of a staged event draft at its commit ordinal. */\nexport function materializationOutboxWrite(\n commit: Pick<OntologyCommitWrite, \"projectId\" | \"id\" | \"committedAt\">,\n event: OntologyMaterializationEventDraft,\n commitOrdinal: number\n): OntologyOutboxWrite {\n return {\n id: createEventId(commit.projectId, commit.id, commitOrdinal),\n commitOrdinal,\n event,\n createdAt: commit.committedAt,\n }\n}\n\n/** A claimed outbox row as a provider reads it back: its draft and its commit's id. */\nexport interface ClaimedOutboxDraft extends Omit<ClaimedOntologyOutboxRow, \"envelope\"> {\n readonly id: string\n readonly commitId: string\n readonly commitOrdinal: number\n readonly event: OntologyMaterializationEventDraft\n}\n\n/** The commit an event belongs to and the execution that commit ran under. */\nexport interface OutboxEventContext {\n readonly commit: OntologyMaterializationEventCommit\n readonly execution: Parameters<typeof eventAttribution>[0]\n}\n\n/**\n * Claimed rows with their events rebuilt from their commits and executions. Both outlive their\n * events, so a missing one is corrupt storage, not a retryable state.\n */\nexport function claimedOutboxRows(\n rows: readonly ClaimedOutboxDraft[],\n contextOf: (commitId: string) => OutboxEventContext | undefined\n): ClaimedOntologyOutboxRow[] {\n const attributions = new Map<string, OntologyMaterializationEventAttribution>()\n return rows.map(({ id, commitId, commitOrdinal, event, ...row }) => {\n const context = contextOf(commitId)\n if (!context) {\n throw new Error(`[Sixb] Ontology outbox event '${id}' has no commit '${commitId}'.`)\n }\n let attribution = attributions.get(commitId)\n if (!attribution) {\n attribution = eventAttribution(context.execution)\n attributions.set(commitId, attribution)\n }\n return {\n ...row,\n envelope: materializationEvent(event, { id, commitOrdinal }, context.commit, attribution),\n }\n })\n}\n\n/** One planned replacement identity, checked and summarized for a provider to store. */\nexport interface PreparedReplacementIdentity {\n readonly kind: \"object\" | \"link\"\n /** `objectRefKey` or `linkRefKey`, as classification records and provider tables key it. */\n readonly key: string\n readonly entityKey: string\n readonly records: readonly MaterializationWorkRecord[]\n readonly classified: boolean\n /** The effective change its work makes, null when it makes none. */\n readonly change: \"created\" | \"updated\" | \"deleted\" | null\n}\n\n/**\n * Validates the commit a replacement plan carries: once the plan is open, the very commit it was\n * opened with, time included.\n */\nexport function assertReplacementPlanCommit(\n commit: OntologyCommitWrite,\n opened?: { readonly commitId: string; readonly committedAt: string }\n): void {\n assertMaterializationHeader({ commit, expected: NO_EXPECTATIONS })\n if (opened && (commit.id !== opened.commitId || commit.committedAt !== opened.committedAt)) {\n throw new MaterializationValidationError(\n \"Replacement plan work must carry the commit its plan was opened with.\"\n )\n }\n}\n\nconst NO_EXPECTATIONS = { sources: [], objects: [], links: [], linkScopes: [], points: [] }\n\n/**\n * The identities of one `stage` call, checked against the commit the plan was opened with. Each is\n * planned once: one listed twice is rejected.\n */\nexport function prepareReplacementIdentities(\n input: Pick<StageReplacementPlanInput, \"commit\" | \"planned\">,\n opened: { readonly commitId: string; readonly committedAt: string }\n): PreparedReplacementIdentity[] {\n assertReplacementPlanCommit(input.commit, opened)\n const header = { commit: input.commit, expected: NO_EXPECTATIONS }\n const keys = new Set<string>()\n return input.planned.map((planned) => {\n const prepared = prepareReplacementIdentity(planned, header)\n if (keys.has(prepared.entityKey)) {\n throw new MaterializationValidationError(\n `Replacement identity ${prepared.entityKey} is staged twice.`\n )\n }\n keys.add(prepared.entityKey)\n return prepared\n })\n}\n\nfunction prepareReplacementIdentity(\n planned: PlannedReplacementIdentity,\n header: MaterializationPlanHeader\n): PreparedReplacementIdentity {\n const { identity } = planned\n const identityKind = identity.kind\n const key = identity.kind === \"object\" ? objectRefKey(identity.ref) : linkRefKey(identity.ref)\n const keys = new Set<string>()\n let classified = false\n let change: PreparedReplacementIdentity[\"change\"] = null\n for (const record of planned.records) {\n assertWorkRecord(record, header)\n if (keys.has(record.recordKey)) {\n throw new MaterializationConflictError(\n \"effective-state\",\n `Duplicate materialization work key '${record.recordKey}'.`\n )\n }\n keys.add(record.recordKey)\n if (record.kind === \"classification\") {\n // Coverage is checked on the identity, so its classification must be its own.\n if (record.entityKind !== identityKind || record.identityKey !== key) {\n throw new MaterializationValidationError(\"A replacement identity can only classify itself.\")\n }\n classified = true\n }\n if (record.kind !== \"plan\") continue\n const { item } = record\n if (item.kind === \"object-upsert\" || item.kind === \"link-upsert\") {\n change = item.value.expected.exists ? \"updated\" : \"created\"\n } else if (item.kind === \"object-delete\" || item.kind === \"link-delete\") {\n change = \"deleted\"\n }\n }\n return {\n kind: identityKind,\n key,\n entityKey: projectionEntityKey(identity),\n records: planned.records,\n classified,\n change,\n }\n}\n\n/** The change counts a replacement commit reports, derived from its planned work. */\nexport function projectionChangeCounts(\n records: Iterable<MaterializationWorkRecord>\n): EffectiveChangeCounts {\n let objects = 0\n let links = 0\n const counts = {\n objectsCreated: 0,\n objectsUpdated: 0,\n objectsDeleted: 0,\n linksCreated: 0,\n linksUpdated: 0,\n linksDeleted: 0,\n }\n for (const record of records) {\n if (record.kind === \"classification\") {\n if (record.entityKind === \"object\") objects += 1\n if (record.entityKind === \"link\") links += 1\n continue\n }\n if (record.kind !== \"plan\") continue\n const { item } = record\n if (item.kind === \"object-upsert\") {\n if (item.value.expected.exists) counts.objectsUpdated += 1\n else counts.objectsCreated += 1\n } else if (item.kind === \"object-delete\") counts.objectsDeleted += 1\n else if (item.kind === \"link-upsert\") {\n if (item.value.expected.exists) counts.linksUpdated += 1\n else counts.linksCreated += 1\n } else if (item.kind === \"link-delete\") counts.linksDeleted += 1\n }\n return {\n ...counts,\n objectsUnchanged:\n objects - counts.objectsCreated - counts.objectsUpdated - counts.objectsDeleted,\n linksUnchanged: links - counts.linksCreated - counts.linksUpdated - counts.linksDeleted,\n }\n}\n\nexport interface CardinalityValidator {\n /** Accepts staged cardinality records in canonical order (`compareCardinalityWork`). */\n accept(record: MaterializationCardinalityOccupantWorkRecord): void\n}\n\n/**\n * Rejects a cardinality-one scope with two occupants. The candidate view is the projection source\n * alone; the effective view is the resolved scope after this commit.\n */\nexport function createCardinalityValidator(): CardinalityValidator {\n let view: MaterializationCardinalityOccupantWorkRecord[\"view\"] | null = null\n let scope: string | null = null\n let occupant: string | null = null\n return {\n accept(record) {\n if (record.view !== view || record.scopeSortKey !== scope) {\n view = record.view\n scope = record.scopeSortKey\n occupant = null\n }\n if (!record.occupied) return\n if (occupant !== null && occupant !== record.linkSortKey) {\n throw cardinalityViolation(record.view, record.ref.source.objectTypeId, record.ref.linkId)\n }\n occupant = record.linkSortKey\n },\n }\n}\n\n/** The user-facing error for a cardinality-one scope with two occupants. */\nexport function cardinalityViolation(\n view: MaterializationCardinalityOccupantWorkRecord[\"view\"],\n sourceTypeId: string,\n linkId: string\n): MaterializationValidationError {\n return new MaterializationValidationError(\n view === \"candidate\"\n ? `Projection source scope '${sourceTypeId}.${linkId}' has cardinality one.`\n : `Link scope '${sourceTypeId}.${linkId}' has cardinality one.`\n )\n}\n\n/**\n * The error for a unique value `claimant` takes while `holder` keeps it. Two claimants of one value\n * in the same commit report each other.\n */\nexport function uniqueValueViolation(\n value: Pick<UniqueValueRef, \"objectTypeId\" | \"propertyId\">,\n holderPrimaryId: string,\n claimantPrimaryId: string\n): UniqueValueViolationError {\n return new UniqueValueViolationError(\n value.objectTypeId,\n value.propertyId,\n holderPrimaryId,\n claimantPrimaryId\n )\n}\n\n/** The error for a claim on a property whose stored values were not prepared with its key. */\nexport function uniquePropertyNotPrepared(\n value: Pick<UniqueValueRef, \"objectTypeId\" | \"propertyId\">\n): UniquePropertyNotPreparedError {\n return new UniquePropertyNotPreparedError(value.objectTypeId, value.propertyId)\n}\n\nexport function assertWorkRecord(\n record: MaterializationWorkRecord,\n header: MaterializationPlanHeader\n): void {\n if (record.recordKey.trim().length === 0) {\n throw new MaterializationValidationError(\"Materialization work key must be nonblank.\")\n }\n if (record.kind === \"plan\") {\n if (!/^[0-9a-f]+$/.test(record.sortKey) || !planPhaseMatches(record)) {\n throw new MaterializationValidationError(\"Materialization plan work has an invalid order.\")\n }\n assertPlanItemCorrelation(record.item, header.commit)\n return\n }\n if (record.kind === \"event\") {\n if (\n !/^[0-9a-f]+$/.test(record.sortKey) ||\n !Number.isSafeInteger(record.eventKindRank) ||\n record.eventKindRank < 0 ||\n record.eventKindRank !== materializationEventKindOrdinal(record.draft.type)\n ) {\n throw new MaterializationValidationError(\"Materialization event work is invalid.\")\n }\n return\n }\n if (record.kind === \"cardinality\") {\n if (\n record.scopeSortKey !== linkScopeSortKey(record.ref.source, record.ref.linkId) ||\n record.linkSortKey !== linkRefSortKey(record.ref)\n ) {\n throw new MaterializationValidationError(\n \"Materialization cardinality work has an invalid identity or order.\"\n )\n }\n return\n }\n if (record.kind === \"classification\" && record.identityKey.trim().length === 0) {\n throw new MaterializationValidationError(\"Materialization classification identity is invalid.\")\n }\n}\n\nexport function workUniquenessKey(record: MaterializationWorkRecord): string {\n switch (record.kind) {\n case \"classification\":\n return `classification:${record.entityKind}:${record.identityKey}`\n case \"object-existence\":\n return `object-existence:${objectRefKey(record.ref)}`\n case \"incident-object\":\n return `incident-object:${objectRefKey(record.ref)}`\n case \"cardinality\":\n return `cardinality:${record.view}:${record.scopeSortKey}:${record.linkSortKey}`\n case \"plan\":\n return `plan:${record.item.kind}:${record.sortKey}`\n case \"event\":\n return `event:${record.eventKindRank}:${record.sortKey}`\n }\n}\n\nexport function comparePlanWork(\n left: MaterializationPlanWorkRecord,\n right: MaterializationPlanWorkRecord\n): number {\n return (\n left.applyPhase - right.applyPhase ||\n materializationPlanKindRank(left.item.kind) - materializationPlanKindRank(right.item.kind) ||\n left.sortKey.localeCompare(right.sortKey) ||\n left.recordKey.localeCompare(right.recordKey)\n )\n}\n\n/** Canonical order of plan item kinds within an apply phase; providers store it with the work. */\nexport function materializationPlanKindRank(kind: MaterializationPlanWorkItem[\"kind\"]): number {\n switch (kind) {\n case \"object-override-upsert\":\n return 0\n case \"object-override-delete\":\n return 1\n case \"link-override-upsert\":\n return 2\n case \"link-override-delete\":\n return 3\n case \"link-slot-override-upsert\":\n return 4\n case \"link-slot-override-delete\":\n return 5\n case \"point-upsert\":\n return 6\n case \"link-delete\":\n return 7\n case \"object-delete\":\n return 8\n case \"object-upsert\":\n return 9\n case \"link-upsert\":\n return 10\n case \"unique-value-release\":\n return 11\n case \"unique-value-claim\":\n return 12\n }\n}\n\nexport function compareCardinalityWork(\n left: MaterializationCardinalityOccupantWorkRecord,\n right: MaterializationCardinalityOccupantWorkRecord\n): number {\n return (\n cardinalityViewOrder(left.view) - cardinalityViewOrder(right.view) ||\n left.scopeSortKey.localeCompare(right.scopeSortKey) ||\n left.linkSortKey.localeCompare(right.linkSortKey) ||\n left.recordKey.localeCompare(right.recordKey)\n )\n}\n\nfunction cardinalityViewOrder(view: MaterializationCardinalityOccupantWorkRecord[\"view\"]): number {\n return view === \"effective\" ? 0 : 1\n}\n\nexport function compareEventWork(\n left: MaterializationEventWorkRecord,\n right: MaterializationEventWorkRecord\n): number {\n return (\n left.eventKindRank - right.eventKindRank ||\n left.sortKey.localeCompare(right.sortKey) ||\n left.recordKey.localeCompare(right.recordKey)\n )\n}\n\nfunction planPhaseMatches(record: MaterializationPlanWorkRecord): boolean {\n // Validate the submitted phase against the neutral contract's canonical mapping so a provider\n // still rejects a mis-ordered record without re-encoding the phase table here.\n return record.applyPhase === materializationApplyPhase(record.item.kind)\n}\n\nfunction assertPlanItemCorrelation(\n item: MaterializationPlanWorkItem,\n commit: MaterializationPlanHeader[\"commit\"]\n): void {\n switch (item.kind) {\n case \"object-override-upsert\":\n assertCommitWriteCorrelation(\n item.value.lastCommitId,\n item.value.updatedAt,\n commit,\n \"Object override\"\n )\n return\n case \"object-override-delete\":\n return\n case \"link-override-upsert\":\n assertCommitWriteCorrelation(\n item.value.lastCommitId,\n item.value.updatedAt,\n commit,\n \"Link override\"\n )\n return\n case \"link-override-delete\":\n return\n case \"object-upsert\":\n assertObjectRefEqual(item.value.row.ref, item.value.expected.ref, \"Effective object upsert\")\n assertCommitWriteCorrelation(\n item.value.row.lastCommitId,\n item.value.row.updatedAt,\n commit,\n \"Effective object\"\n )\n return\n case \"object-delete\":\n assertObjectRefEqual(item.value.ref, item.value.expected.ref, \"Effective object delete\")\n return\n case \"link-upsert\":\n assertLinkRefEqual(item.value.row.ref, item.value.expected.ref, \"Effective link upsert\")\n assertCommitWriteCorrelation(\n item.value.row.lastCommitId,\n item.value.row.updatedAt,\n commit,\n \"Effective link\"\n )\n return\n case \"link-delete\":\n assertLinkRefEqual(item.value.ref, item.value.expected.ref, \"Effective link delete\")\n return\n case \"point-upsert\":\n assertPointWriteCorrelation(item.value, commit)\n return\n case \"unique-value-release\":\n assertUniqueValueWrite(item.value)\n return\n case \"unique-value-claim\":\n assertUniqueValueWrite(item.value)\n if (!Number.isSafeInteger(item.value.keyVersion) || !isNonblank(item.value.keyKind)) {\n invalidCorrelation(\"Unique value claim must name how its key was computed.\")\n }\n return\n }\n}\n\nfunction assertUniqueValueWrite(value: ExactUniqueValueWrite): void {\n if (\n !isNonblank(value.objectTypeId) ||\n !isNonblank(value.propertyId) ||\n !isNonblank(value.primaryId) ||\n typeof value.valueKey !== \"string\"\n ) {\n invalidCorrelation(\"Unique value write must name its type, property, value and object.\")\n }\n}\n\nfunction isNonblank(value: unknown): boolean {\n return typeof value === \"string\" && value.trim().length > 0\n}\n\nfunction assertPointWriteCorrelation(\n value: ExactTimeseriesPointWrite,\n commit: MaterializationPlanHeader[\"commit\"]\n): void {\n if (\n telemetryPointKey(value.point.series, value.point.at) !==\n telemetryPointKey(value.expected.series, value.expected.at)\n ) {\n invalidCorrelation(\"Timeseries point write does not match its expected identity.\")\n }\n assertTimestamp(value.point.at, \"Timeseries point timestamp\")\n if (value.point.lastCommitId !== commit.id) {\n invalidCorrelation(\"Timeseries point last commit id does not match its session commit.\")\n }\n}\n\nfunction assertCommitWriteCorrelation(\n lastCommitId: string,\n updatedAt: string,\n commit: MaterializationPlanHeader[\"commit\"],\n label: string\n): void {\n if (lastCommitId !== commit.id || updatedAt !== commit.committedAt) {\n invalidCorrelation(`${label} provenance does not match its session commit.`)\n }\n}\n\nfunction assertObjectRefEqual(\n left: OntologyObjectRef,\n right: OntologyObjectRef,\n label: string\n): void {\n if (objectRefKey(left) !== objectRefKey(right)) {\n invalidCorrelation(`${label} row and expected references differ.`)\n }\n}\n\nfunction assertLinkRefEqual(left: OntologyLinkRef, right: OntologyLinkRef, label: string): void {\n if (linkRefKey(left) !== linkRefKey(right)) {\n invalidCorrelation(`${label} row and expected references differ.`)\n }\n}\n"
|
|
10
|
+
],
|
|
11
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;ACEO,SAAS,eAAc,CAAC,OAAe,OAAqB;AAAA,EACjE,IAAI,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,WAAW,GAAG;AAAA,IAC1D,MAAM,IAAI,gCAA+B,GAAG,yBAAyB;AAAA,EACvE;AAAA;AAGK,SAAS,sBAAqB,CAAC,OAAe,OAAqB;AAAA,EACxE,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,SAAS,GAAG;AAAA,IAC9C,MAAM,IAAI,gCAA+B,GAAG,wCAAwC;AAAA,EACtF;AAAA;AAGK,SAAS,yBAAwB,CAAC,OAAe,OAAqB;AAAA,EAC3E,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,QAAQ,GAAG;AAAA,IAC7C,MAAM,IAAI,gCAA+B,GAAG,2CAA2C;AAAA,EACzF;AAAA;AAGK,SAAS,gBAAe,CAAC,OAAe,OAAe,YAAY,MAAc;AAAA,EACtF,MAAM,eAAe,KAAK,MAAM,KAAK;AAAA,EACrC,IACE,CAAC,OAAO,SAAS,YAAY,KAC5B,aAAa,IAAI,KAAK,YAAY,EAAE,YAAY,MAAM,OACvD;AAAA,IACA,MAAM,IAAI,gCACR,GAAG,iBAAiB,YAAY,oBAAoB,sBACtD;AAAA,EACF;AAAA,EACA,OAAO;AAAA;AAGF,SAAS,mBAAkB,CAAC,SAAwB;AAAA,EACzD,MAAM,IAAI,gCAA+B,OAAO;AAAA;;;AC4U3C,SAAS,0BAAyB,CACvC,MAC2B;AAAA,EAC3B,QAAQ;AAAA,SACD;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,SACA;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SAEJ;AAAA,MACH,OAAO;AAAA;AAAA;;;ACtXN,SAAS,4BAA2B,GAAG,UAA2C;AAAA,EACvF,qBAAqB,MAAM;AAAA,EAE3B,QAAQ,OAAO,OAAO;AAAA,SACf;AAAA,MACH,iBAAiB,QAAQ,OAAO,MAAM;AAAA,MACtC;AAAA,SACG;AAAA,MACH,uBAAuB,QAAQ,OAAO,MAAM;AAAA,MAC5C;AAAA,SACG;AAAA,MACH,sBAAsB,QAAQ,OAAO,MAAM;AAAA,MAC3C;AAAA;AAAA;AAIN,SAAS,oBAAoB,CAAC,QAAmC;AAAA,EAC/D,gBAAe,OAAO,WAAW,4BAA4B;AAAA,EAC7D,gBAAe,OAAO,IAAI,2BAA2B;AAAA,EACrD,gBAAe,OAAO,gBAAgB,iCAAiC;AAAA,EACvE,gBAAe,OAAO,aAAa,8BAA8B;AAAA,EACjE,gBAAe,OAAO,aAAa,8BAA8B;AAAA,EACjE,gBAAe,OAAO,kBAAkB,mCAAmC;AAAA,EAC3E,iBAAgB,OAAO,aAAa,6BAA6B;AAAA;AAGnE,SAAS,gBAAgB,CAAC,QAA6B,QAAwC;AAAA,EAC7F,0BAAyB,OAAO,gBAAgB,6BAA6B;AAAA,EAE7E,QAAQ,OAAO,OAAO;AAAA,SACf;AAAA,MACH,gBAAe,OAAO,OAAO,UAAU,yBAAyB;AAAA,MAChE,gBAAe,OAAO,OAAO,OAAO,sBAAsB;AAAA,MAC1D;AAAA,SACG;AAAA,MACH,gBAAe,OAAO,OAAO,WAAW,2BAA2B;AAAA,MACnE;AAAA;AAAA,MAEA,oBAAmB,wDAAwD;AAAA;AAAA;AAIjF,SAAS,sBAAsB,CAC7B,QACA,QACM;AAAA,EACN,IAAI,OAAO,OAAO,SAAS,cAAc;AAAA,IACvC,oBAAmB,8DAA8D;AAAA,EACnF;AAAA,EAEA,iCAAiC,MAAM;AAAA,EACvC,gBAAe,OAAO,OAAO,iBAAiB,mBAAmB;AAAA,EACjE,iBAAgB,OAAO,eAAe,WAAW,sCAAsC;AAAA,EAEvF,IAAI,OAAO,OAAO,iBAAiB,OAAO,OAAO,cAAc;AAAA,IAC7D,oBAAmB,yDAAyD;AAAA,EAC9E;AAAA,EACA,IACE,OAAO,OAAO,cAAc,OAAO,eAAe,aAClD,OAAO,OAAO,qBAAqB,OAAO,eAAe,WACzD;AAAA,IACA,oBAAmB,8DAA8D;AAAA,EACnF;AAAA;AAGF,SAAS,qBAAqB,CAC5B,QACA,QACM;AAAA,EACN,IAAI,OAAO,OAAO,SAAS,aAAa;AAAA,IACtC,oBAAmB,6DAA6D;AAAA,EAClF;AAAA,EAEA,2BAA2B,MAAM;AAAA,EACjC,IAAI,OAAO,OAAO,SAAS,WAAW;AAAA,IACpC,6BAA6B,MAAM;AAAA,IACnC;AAAA,EACF;AAAA,EACA,gCAAgC,QAAQ,OAAO,QAAQ,OAAO,eAAe;AAAA;AAG/E,SAAS,0BAA0B,CAAC,QAA6C;AAAA,EAC/E,0BAAyB,OAAO,YAAY,8BAA8B;AAAA,EAC1E,0BAAyB,OAAO,iBAAiB,oCAAoC;AAAA,EACrF,IAAI,OAAO,kBAAkB,OAAO,YAAY;AAAA,IAC9C,oBACE,6EACF;AAAA,EACF;AAAA;AAGF,SAAS,4BAA4B,CAAC,QAAmC;AAAA,EACvE,IAAI,OAAO,OAAO,SAAS,eAAe,OAAO,OAAO,OAAO,SAAS,WAAW;AAAA,IACjF,oBAAmB,8DAA8D;AAAA,EACnF;AAAA,EACA,IAAI,OAAO,uBAAuB,aAAa,OAAO,kBAAkB,WAAW;AAAA,IACjF,oBAAmB,6DAA6D;AAAA,EAClF;AAAA,EACA,gBAAe,OAAO,OAAO,OAAO,WAAW,8BAA8B;AAAA;AAG/E,SAAS,+BAA+B,CACtC,QACA,QACA,iBACM;AAAA,EACN,IAAI,OAAO,OAAO,SAAS,eAAe,OAAO,OAAO,OAAO,SAAS,cAAc;AAAA,IACpF,oBAAmB,iEAAiE;AAAA,EACtF;AAAA,EAEA,MAAM,SAAS,OAAO,OAAO;AAAA,EAC7B,iCAAiC,MAAM;AAAA,EACvC,gBAAe,OAAO,iBAAiB,6BAA6B;AAAA,EACpE,iBAAgB,OAAO,eAAe,WAAW,qCAAqC;AAAA,EACtF,+BAA+B,QAAQ,eAAe;AAAA,EAEtD,IAAI,OAAO,iBAAiB,OAAO,WAAW,cAAc;AAAA,IAC1D,oBAAmB,4DAA4D;AAAA,EACjF;AAAA,EACA,IACE,OAAO,cAAc,OAAO,eAAe,aAC3C,OAAO,qBAAqB,OAAO,eAAe,WAClD;AAAA,IACA,oBAAmB,iEAAiE;AAAA,EACtF;AAAA,EACA,IAAI,OAAO,iBAAiB,OAAO,cAAc;AAAA,IAC/C,oBAAmB,+DAA+D;AAAA,EACpF;AAAA;AAGF,SAAS,8BAA8B,CACrC,QACA,iBACM;AAAA,EACN,0BAAyB,OAAO,cAAc,oCAAoC;AAAA,EAClF,uBAAsB,OAAO,gBAAgB,uCAAuC;AAAA,EACpF,0BAAyB,OAAO,mBAAmB,wCAAwC;AAAA,EAE3F,IAAI,OAAO,oBAAoB,OAAO,gBAAgB;AAAA,IACpD,oBAAmB,gEAAgE;AAAA,EACrF;AAAA,EACA,IAAI,kBAAkB,OAAO,iBAAiB,OAAO,mBAAmB;AAAA,IACtE,oBACE,oFACF;AAAA,EACF;AAAA,EACA,IAAI,OAAO,OAAO,mBAAmB,WAAW;AAAA,IAC9C,oBAAmB,0DAA0D;AAAA,EAC/E;AAAA;AAGF,SAAS,gCAAgC,CAAC,QAAmC;AAAA,EAC3E,IAAI,OAAO,uBAAuB,aAAa,OAAO,kBAAkB,WAAW;AAAA,IACjF,oBAAmB,mEAAmE;AAAA,EACxF;AAAA,EACA,gBAAe,OAAO,oBAAoB,qBAAqB;AAAA,EAC/D,gBAAe,OAAO,eAAe,2BAA2B;AAAA;;;ACpH3D,SAAS,eAAc,CAAC,OAAqB;AAAA,EAClD,IAAI,CAAC,OAAO,cAAc,KAAK,KAAK,SAAS;AAAA,IAC3C,MAAM,IAAI,gCAA+B,6CAA6C;AAAA;AAGnF,SAAS,yBAAwB,CAAC,OAAyC;AAAA,EAChF,OACE,MAAM,UAAU,QAAQ,QAAQ,SAChC,MAAM,UAAU,QAAQ,QAAQ,SAChC,MAAM,UAAU,MAAM,MAAM,QAAQ,SACpC,MAAM,UAAU,MAAM,MAAM,QAAQ,SACpC,MAAM,UAAU,MAAM,MAAM,QAAQ,SACpC,MAAM,UAAU,MAAM,MAAM,QAAQ,SACpC,MAAM,UAAU,cAAc,SAC9B,MAAM,UAAU,cAAc,SAC9B,MAAM,UAAU,YAAY,SAC5B,MAAM,UAAU,YAAY,SAC5B,MAAM,WAAW,aAAa,SAC9B,MAAM,OAAO,SAAS,SACtB,MAAM,OAAO,OAAO,SACpB,MAAM,OAAO;AAAA;AAgDV,SAAS,yBAAwB,CACtC,OACA,SAAyC,CAAC,GAChB;AAAA,EAC1B,MAAM,QAAQ;AAAA,IACZ,WAAW;AAAA,MACT,SAAS;AAAA,QACP,SAAS,CAAC;AAAA,QACV,SAAS,CAAC;AAAA,MACZ;AAAA,MACA,OAAO;AAAA,QACL,OAAO;AAAA,UACL,SAAS,CAAC;AAAA,UACV,SAAS,CAAC;AAAA,QACZ;AAAA,QACA,OAAO;AAAA,UACL,SAAS,CAAC;AAAA,UACV,SAAS,CAAC;AAAA,QACZ;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW;AAAA,MACT,eAAe,CAAC;AAAA,MAChB,eAAe,CAAC;AAAA,MAChB,aAAa,CAAC;AAAA,MACd,aAAa,CAAC;AAAA,IAChB;AAAA,IACA,YAAY,EAAE,cAAc,CAAC,EAAiC;AAAA,IAC9D,QAAQ;AAAA,MACN,UAAU,CAAC;AAAA,MACX,QAAQ,CAAC;AAAA,IACX;AAAA,IACA;AAAA,EACF;AAAA,EACA,WAAW,QAAQ,OAAO;AAAA,IACxB,QAAQ,KAAK;AAAA,WACN;AAAA,QACH,MAAM,UAAU,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAAA,QAC/C;AAAA,WACG;AAAA,QACH,MAAM,UAAU,QAAQ,QAAQ,KAAK,KAAK,KAAK;AAAA,QAC/C;AAAA,WACG;AAAA,QACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,QACnD;AAAA,WACG;AAAA,QACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,QACnD;AAAA,WACG;AAAA,QACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,QACnD;AAAA,WACG;AAAA,QACH,MAAM,UAAU,MAAM,MAAM,QAAQ,KAAK,KAAK,KAAK;AAAA,QACnD;AAAA,WACG;AAAA,QACH,MAAM,UAAU,cAAc,KAAK,KAAK,KAAK;AAAA,QAC7C;AAAA,WACG;AAAA,QACH,MAAM,UAAU,cAAc,KAAK,KAAK,KAAK;AAAA,QAC7C;AAAA,WACG;AAAA,QACH,MAAM,UAAU,YAAY,KAAK,KAAK,KAAK;AAAA,QAC3C;AAAA,WACG;AAAA,QACH,MAAM,UAAU,YAAY,KAAK,KAAK,KAAK;AAAA,QAC3C;AAAA,WACG;AAAA,QACH,MAAM,WAAW,aAAa,KAAK,KAAK,KAAK;AAAA,QAC7C;AAAA,WACG;AAAA,QACH,MAAM,OAAO,SAAS,KAAK,KAAK,KAAK;AAAA,QACrC;AAAA,WACG;AAAA,QACH,MAAM,OAAO,OAAO,KAAK,KAAK,KAAK;AAAA,QACnC;AAAA;AAAA,EAEN;AAAA,EACA,OAAO;AAAA;AAgBF,SAAS,2BAA0B,CACxC,QACA,OACA,eACqB;AAAA,EACrB,OAAO;AAAA,IACL,IAAI,eAAc,OAAO,WAAW,OAAO,IAAI,aAAa;AAAA,IAC5D;AAAA,IACA;AAAA,IACA,WAAW,OAAO;AAAA,EACpB;AAAA;AAqBK,SAAS,kBAAiB,CAC/B,MACA,WAC4B;AAAA,EAC5B,MAAM,eAAe,IAAI;AAAA,EACzB,OAAO,KAAK,IAAI,GAAG,IAAI,UAAU,eAAe,UAAU,UAAU;AAAA,IAClE,MAAM,UAAU,UAAU,QAAQ;AAAA,IAClC,IAAI,CAAC,SAAS;AAAA,MACZ,MAAM,IAAI,MAAM,iCAAiC,sBAAsB,YAAY;AAAA,IACrF;AAAA,IACA,IAAI,cAAc,aAAa,IAAI,QAAQ;AAAA,IAC3C,IAAI,CAAC,aAAa;AAAA,MAChB,cAAc,kBAAiB,QAAQ,SAAS;AAAA,MAChD,aAAa,IAAI,UAAU,WAAW;AAAA,IACxC;AAAA,IACA,OAAO;AAAA,SACF;AAAA,MACH,UAAU,sBAAqB,OAAO,EAAE,IAAI,cAAc,GAAG,QAAQ,QAAQ,WAAW;AAAA,IAC1F;AAAA,GACD;AAAA;AAmBI,SAAS,4BAA2B,CACzC,QACA,QACM;AAAA,EACN,6BAA4B,EAAE,QAAQ,UAAU,gBAAgB,CAAC;AAAA,EACjE,IAAI,WAAW,OAAO,OAAO,OAAO,YAAY,OAAO,gBAAgB,OAAO,cAAc;AAAA,IAC1F,MAAM,IAAI,gCACR,uEACF;AAAA,EACF;AAAA;AAGF,IAAM,kBAAkB,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC,GAAG,OAAO,CAAC,GAAG,YAAY,CAAC,GAAG,QAAQ,CAAC,EAAE;AAMnF,SAAS,6BAA4B,CAC1C,OACA,QAC+B;AAAA,EAC/B,6BAA4B,MAAM,QAAQ,MAAM;AAAA,EAChD,MAAM,SAAS,EAAE,QAAQ,MAAM,QAAQ,UAAU,gBAAgB;AAAA,EACjE,MAAM,OAAO,IAAI;AAAA,EACjB,OAAO,MAAM,QAAQ,IAAI,CAAC,YAAY;AAAA,IACpC,MAAM,WAAW,2BAA2B,SAAS,MAAM;AAAA,IAC3D,IAAI,KAAK,IAAI,SAAS,SAAS,GAAG;AAAA,MAChC,MAAM,IAAI,gCACR,wBAAwB,SAAS,4BACnC;AAAA,IACF;AAAA,IACA,KAAK,IAAI,SAAS,SAAS;AAAA,IAC3B,OAAO;AAAA,GACR;AAAA;AAGH,SAAS,0BAA0B,CACjC,SACA,QAC6B;AAAA,EAC7B,QAAQ,aAAa;AAAA,EACrB,MAAM,eAAe,SAAS;AAAA,EAC9B,MAAM,MAAM,SAAS,SAAS,WAAW,cAAa,SAAS,GAAG,IAAI,YAAW,SAAS,GAAG;AAAA,EAC7F,MAAM,OAAO,IAAI;AAAA,EACjB,IAAI,aAAa;AAAA,EACjB,IAAI,SAAgD;AAAA,EACpD,WAAW,UAAU,QAAQ,SAAS;AAAA,IACpC,kBAAiB,QAAQ,MAAM;AAAA,IAC/B,IAAI,KAAK,IAAI,OAAO,SAAS,GAAG;AAAA,MAC9B,MAAM,IAAI,8BACR,mBACA,uCAAuC,OAAO,aAChD;AAAA,IACF;AAAA,IACA,KAAK,IAAI,OAAO,SAAS;AAAA,IACzB,IAAI,OAAO,SAAS,kBAAkB;AAAA,MAEpC,IAAI,OAAO,eAAe,gBAAgB,OAAO,gBAAgB,KAAK;AAAA,QACpE,MAAM,IAAI,gCAA+B,kDAAkD;AAAA,MAC7F;AAAA,MACA,aAAa;AAAA,IACf;AAAA,IACA,IAAI,OAAO,SAAS;AAAA,MAAQ;AAAA,IAC5B,QAAQ,SAAS;AAAA,IACjB,IAAI,KAAK,SAAS,mBAAmB,KAAK,SAAS,eAAe;AAAA,MAChE,SAAS,KAAK,MAAM,SAAS,SAAS,YAAY;AAAA,IACpD,EAAO,SAAI,KAAK,SAAS,mBAAmB,KAAK,SAAS,eAAe;AAAA,MACvE,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN;AAAA,IACA,WAAW,qBAAoB,QAAQ;AAAA,IACvC,SAAS,QAAQ;AAAA,IACjB;AAAA,IACA;AAAA,EACF;AAAA;AAIK,SAAS,sBAAsB,CACpC,SACuB;AAAA,EACvB,IAAI,UAAU;AAAA,EACd,IAAI,QAAQ;AAAA,EACZ,MAAM,SAAS;AAAA,IACb,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,cAAc;AAAA,IACd,cAAc;AAAA,EAChB;AAAA,EACA,WAAW,UAAU,SAAS;AAAA,IAC5B,IAAI,OAAO,SAAS,kBAAkB;AAAA,MACpC,IAAI,OAAO,eAAe;AAAA,QAAU,WAAW;AAAA,MAC/C,IAAI,OAAO,eAAe;AAAA,QAAQ,SAAS;AAAA,MAC3C;AAAA,IACF;AAAA,IACA,IAAI,OAAO,SAAS;AAAA,MAAQ;AAAA,IAC5B,QAAQ,SAAS;AAAA,IACjB,IAAI,KAAK,SAAS,iBAAiB;AAAA,MACjC,IAAI,KAAK,MAAM,SAAS;AAAA,QAAQ,OAAO,kBAAkB;AAAA,MACpD;AAAA,eAAO,kBAAkB;AAAA,IAChC,EAAO,SAAI,KAAK,SAAS;AAAA,MAAiB,OAAO,kBAAkB;AAAA,IAC9D,SAAI,KAAK,SAAS,eAAe;AAAA,MACpC,IAAI,KAAK,MAAM,SAAS;AAAA,QAAQ,OAAO,gBAAgB;AAAA,MAClD;AAAA,eAAO,gBAAgB;AAAA,IAC9B,EAAO,SAAI,KAAK,SAAS;AAAA,MAAe,OAAO,gBAAgB;AAAA,EACjE;AAAA,EACA,OAAO;AAAA,OACF;AAAA,IACH,kBACE,UAAU,OAAO,iBAAiB,OAAO,iBAAiB,OAAO;AAAA,IACnE,gBAAgB,QAAQ,OAAO,eAAe,OAAO,eAAe,OAAO;AAAA,EAC7E;AAAA;AAYK,SAAS,2BAA0B,GAAyB;AAAA,EACjE,IAAI,OAAoE;AAAA,EACxE,IAAI,QAAuB;AAAA,EAC3B,IAAI,WAA0B;AAAA,EAC9B,OAAO;AAAA,IACL,MAAM,CAAC,QAAQ;AAAA,MACb,IAAI,OAAO,SAAS,QAAQ,OAAO,iBAAiB,OAAO;AAAA,QACzD,OAAO,OAAO;AAAA,QACd,QAAQ,OAAO;AAAA,QACf,WAAW;AAAA,MACb;AAAA,MACA,IAAI,CAAC,OAAO;AAAA,QAAU;AAAA,MACtB,IAAI,aAAa,QAAQ,aAAa,OAAO,aAAa;AAAA,QACxD,MAAM,sBAAqB,OAAO,MAAM,OAAO,IAAI,OAAO,cAAc,OAAO,IAAI,MAAM;AAAA,MAC3F;AAAA,MACA,WAAW,OAAO;AAAA;AAAA,EAEtB;AAAA;AAIK,SAAS,qBAAoB,CAClC,MACA,cACA,QACgC;AAAA,EAChC,OAAO,IAAI,gCACT,SAAS,cACL,4BAA4B,gBAAgB,iCAC5C,eAAe,gBAAgB,8BACrC;AAAA;AAOK,SAAS,qBAAoB,CAClC,OACA,iBACA,mBAC2B;AAAA,EAC3B,OAAO,IAAI,2BACT,MAAM,cACN,MAAM,YACN,iBACA,iBACF;AAAA;AAIK,SAAS,0BAAyB,CACvC,OACgC;AAAA,EAChC,OAAO,IAAI,+BAA+B,MAAM,cAAc,MAAM,UAAU;AAAA;AAGzE,SAAS,iBAAgB,CAC9B,QACA,QACM;AAAA,EACN,IAAI,OAAO,UAAU,KAAK,EAAE,WAAW,GAAG;AAAA,IACxC,MAAM,IAAI,gCAA+B,4CAA4C;AAAA,EACvF;AAAA,EACA,IAAI,OAAO,SAAS,QAAQ;AAAA,IAC1B,IAAI,CAAC,cAAc,KAAK,OAAO,OAAO,KAAK,CAAC,iBAAiB,MAAM,GAAG;AAAA,MACpE,MAAM,IAAI,gCAA+B,iDAAiD;AAAA,IAC5F;AAAA,IACA,0BAA0B,OAAO,MAAM,OAAO,MAAM;AAAA,IACpD;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,SAAS;AAAA,IAC3B,IACE,CAAC,cAAc,KAAK,OAAO,OAAO,KAClC,CAAC,OAAO,cAAc,OAAO,aAAa,KAC1C,OAAO,gBAAgB,KACvB,OAAO,kBAAkB,iCAAgC,OAAO,MAAM,IAAI,GAC1E;AAAA,MACA,MAAM,IAAI,gCAA+B,wCAAwC;AAAA,IACnF;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,eAAe;AAAA,IACjC,IACE,OAAO,iBAAiB,kBAAiB,OAAO,IAAI,QAAQ,OAAO,IAAI,MAAM,KAC7E,OAAO,gBAAgB,gBAAe,OAAO,GAAG,GAChD;AAAA,MACA,MAAM,IAAI,gCACR,oEACF;AAAA,IACF;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,oBAAoB,OAAO,YAAY,KAAK,EAAE,WAAW,GAAG;AAAA,IAC9E,MAAM,IAAI,gCAA+B,qDAAqD;AAAA,EAChG;AAAA;AAGK,SAAS,kBAAiB,CAAC,QAA2C;AAAA,EAC3E,QAAQ,OAAO;AAAA,SACR;AAAA,MACH,OAAO,kBAAkB,OAAO,cAAc,OAAO;AAAA,SAClD;AAAA,MACH,OAAO,oBAAoB,cAAa,OAAO,GAAG;AAAA,SAC/C;AAAA,MACH,OAAO,mBAAmB,cAAa,OAAO,GAAG;AAAA,SAC9C;AAAA,MACH,OAAO,eAAe,OAAO,QAAQ,OAAO,gBAAgB,OAAO;AAAA,SAChE;AAAA,MACH,OAAO,QAAQ,OAAO,KAAK,QAAQ,OAAO;AAAA,SACvC;AAAA,MACH,OAAO,SAAS,OAAO,iBAAiB,OAAO;AAAA;AAAA;AAI9C,SAAS,gBAAe,CAC7B,MACA,OACQ;AAAA,EACR,OACE,KAAK,aAAa,MAAM,cACxB,6BAA4B,KAAK,KAAK,IAAI,IAAI,6BAA4B,MAAM,KAAK,IAAI,KACzF,KAAK,QAAQ,cAAc,MAAM,OAAO,KACxC,KAAK,UAAU,cAAc,MAAM,SAAS;AAAA;AAKzC,SAAS,4BAA2B,CAAC,MAAmD;AAAA,EAC7F,QAAQ;AAAA,SACD;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA,SACJ;AAAA,MACH,OAAO;AAAA;AAAA;AAIN,SAAS,uBAAsB,CACpC,MACA,OACQ;AAAA,EACR,OACE,qBAAqB,KAAK,IAAI,IAAI,qBAAqB,MAAM,IAAI,KACjE,KAAK,aAAa,cAAc,MAAM,YAAY,KAClD,KAAK,YAAY,cAAc,MAAM,WAAW,KAChD,KAAK,UAAU,cAAc,MAAM,SAAS;AAAA;AAIhD,SAAS,oBAAoB,CAAC,MAAoE;AAAA,EAChG,OAAO,SAAS,cAAc,IAAI;AAAA;AAG7B,SAAS,iBAAgB,CAC9B,MACA,OACQ;AAAA,EACR,OACE,KAAK,gBAAgB,MAAM,iBAC3B,KAAK,QAAQ,cAAc,MAAM,OAAO,KACxC,KAAK,UAAU,cAAc,MAAM,SAAS;AAAA;AAIhD,SAAS,gBAAgB,CAAC,QAAgD;AAAA,EAGxE,OAAO,OAAO,eAAe,2BAA0B,OAAO,KAAK,IAAI;AAAA;AAGzE,SAAS,yBAAyB,CAChC,MACA,QACM;AAAA,EACN,QAAQ,KAAK;AAAA,SACN;AAAA,MACH,6BACE,KAAK,MAAM,cACX,KAAK,MAAM,WACX,QACA,iBACF;AAAA,MACA;AAAA,SACG;AAAA,MACH;AAAA,SACG;AAAA,MACH,6BACE,KAAK,MAAM,cACX,KAAK,MAAM,WACX,QACA,eACF;AAAA,MACA;AAAA,SACG;AAAA,MACH;AAAA,SACG;AAAA,MACH,qBAAqB,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,SAAS,KAAK,yBAAyB;AAAA,MAC3F,6BACE,KAAK,MAAM,IAAI,cACf,KAAK,MAAM,IAAI,WACf,QACA,kBACF;AAAA,MACA;AAAA,SACG;AAAA,MACH,qBAAqB,KAAK,MAAM,KAAK,KAAK,MAAM,SAAS,KAAK,yBAAyB;AAAA,MACvF;AAAA,SACG;AAAA,MACH,mBAAmB,KAAK,MAAM,IAAI,KAAK,KAAK,MAAM,SAAS,KAAK,uBAAuB;AAAA,MACvF,6BACE,KAAK,MAAM,IAAI,cACf,KAAK,MAAM,IAAI,WACf,QACA,gBACF;AAAA,MACA;AAAA,SACG;AAAA,MACH,mBAAmB,KAAK,MAAM,KAAK,KAAK,MAAM,SAAS,KAAK,uBAAuB;AAAA,MACnF;AAAA,SACG;AAAA,MACH,4BAA4B,KAAK,OAAO,MAAM;AAAA,MAC9C;AAAA,SACG;AAAA,MACH,uBAAuB,KAAK,KAAK;AAAA,MACjC;AAAA,SACG;AAAA,MACH,uBAAuB,KAAK,KAAK;AAAA,MACjC,IAAI,CAAC,OAAO,cAAc,KAAK,MAAM,UAAU,KAAK,CAAC,WAAW,KAAK,MAAM,OAAO,GAAG;AAAA,QACnF,oBAAmB,wDAAwD;AAAA,MAC7E;AAAA,MACA;AAAA;AAAA;AAIN,SAAS,sBAAsB,CAAC,OAAoC;AAAA,EAClE,IACE,CAAC,WAAW,MAAM,YAAY,KAC9B,CAAC,WAAW,MAAM,UAAU,KAC5B,CAAC,WAAW,MAAM,SAAS,KAC3B,OAAO,MAAM,aAAa,UAC1B;AAAA,IACA,oBAAmB,oEAAoE;AAAA,EACzF;AAAA;AAGF,SAAS,UAAU,CAAC,OAAyB;AAAA,EAC3C,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS;AAAA;AAG5D,SAAS,2BAA2B,CAClC,OACA,QACM;AAAA,EACN,IACE,mBAAkB,MAAM,MAAM,QAAQ,MAAM,MAAM,EAAE,MACpD,mBAAkB,MAAM,SAAS,QAAQ,MAAM,SAAS,EAAE,GAC1D;AAAA,IACA,oBAAmB,8DAA8D;AAAA,EACnF;AAAA,EACA,iBAAgB,MAAM,MAAM,IAAI,4BAA4B;AAAA,EAC5D,IAAI,MAAM,MAAM,iBAAiB,OAAO,IAAI;AAAA,IAC1C,oBAAmB,oEAAoE;AAAA,EACzF;AAAA;AAGF,SAAS,4BAA4B,CACnC,cACA,WACA,QACA,OACM;AAAA,EACN,IAAI,iBAAiB,OAAO,MAAM,cAAc,OAAO,aAAa;AAAA,IAClE,oBAAmB,GAAG,qDAAqD;AAAA,EAC7E;AAAA;AAGF,SAAS,oBAAoB,CAC3B,MACA,OACA,OACM;AAAA,EACN,IAAI,cAAa,IAAI,MAAM,cAAa,KAAK,GAAG;AAAA,IAC9C,oBAAmB,GAAG,2CAA2C;AAAA,EACnE;AAAA;AAGF,SAAS,kBAAkB,CAAC,MAAuB,OAAwB,OAAqB;AAAA,EAC9F,IAAI,YAAW,IAAI,MAAM,YAAW,KAAK,GAAG;AAAA,IAC1C,oBAAmB,GAAG,2CAA2C;AAAA,EACnE;AAAA;;;AJ5nBK,SAAS,sBAAqB,CACnC,QACA,QACsB;AAAA,EACtB,MAAM,OAAO,WAAW,QAAQ;AAAA,EAChC,KAAK,OAAO,GAAG;AAAA,EACf,OAAO;AAAA,IACL,QAAQ,gBAAgB,MAAM;AAAA,IAC9B;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,EAClB;AAAA;AAGK,SAAS,oBAAmB,CACjC,aACA,UACM;AAAA,EACN,IAAI,YAAY,iBAAiB;AAAA,IAAG,YAAY,KAAK,OAAO,GAAG;AAAA,EAC/D,YAAY,KAAK,OACf,qBAAoB;AAAA,IAClB,KAAK,SAAS;AAAA,IACd,YAAY,SAAS,cAAc,CAAC;AAAA,IACpC,cAAc,SAAS;AAAA,EACzB,CAAC,CACH;AAAA,EACA,YAAY,kBAAkB;AAAA;AAGzB,SAAS,uBAAsB,CACpC,aACkC;AAAA,EAClC,YAAY,KAAK,OAAO,GAAG;AAAA,EAC3B,OAAO;AAAA,IACL,QAAQ,YAAY;AAAA,IACpB,QAAQ,YAAY;AAAA,IACpB,gBAAgB,YAAY;AAAA,IAC5B,aAAa,YAAY,KAAK,OAAO,KAAK;AAAA,EAC5C;AAAA;AAGK,SAAS,sBAAqB,CACnC,OACA,YACiC;AAAA,EACjC,IAAI,CAAC,SAAS,KAAK,KAAK,OAAO,MAAM,SAAS,UAAU;AAAA,IACtD,MAAM,wBAAwB,UAAU;AAAA,EAC1C;AAAA,EACA,IAAI,MAAM,SAAS,mBAAmB;AAAA,IACpC,OAAO,EAAE,MAAM,kBAAkB;AAAA,EACnC;AAAA,EACA,IACG,MAAM,SAAS,SAAS,MAAM,SAAS,WACxC,CAAC,SAAS,MAAM,MAAM,KACtB,OAAO,MAAM,OAAO,iBAAiB,YACrC,MAAM,OAAO,aAAa,KAAK,EAAE,WAAW,KAC5C,OAAO,MAAM,OAAO,cAAc,YAClC,MAAM,OAAO,UAAU,KAAK,EAAE,WAAW,GACzC;AAAA,IACA,MAAM,wBAAwB,UAAU;AAAA,EAC1C;AAAA,EACA,MAAM,SAAS;AAAA,IACb,cAAc,MAAM,OAAO;AAAA,IAC3B,WAAW,MAAM,OAAO;AAAA,EAC1B;AAAA,EACA,IAAI,MAAM,SAAS;AAAA,IAAS,OAAO,EAAE,MAAM,SAAS,OAAO;AAAA,EAC3D,IAAI,MAAM,eAAe;AAAA,IAAW,OAAO,EAAE,MAAM,OAAO,OAAO;AAAA,EACjE,IAAI,CAAC,aAAa,MAAM,UAAU;AAAA,IAAG,MAAM,wBAAwB,UAAU;AAAA,EAC7E,OAAO,EAAE,MAAM,OAAO,QAAQ,YAAY,gBAAgB,MAAM,UAAU,EAAE;AAAA;AAG9E,SAAS,uBAAuB,CAAC,YAAkD;AAAA,EACjF,OAAO,IAAI,8BACT,mBACA,6BAA6B,iDAC/B;AAAA;AAGF,SAAS,QAAQ,CAAC,OAA4D;AAAA,EAC5E,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAAA;AAG5E,SAAS,YAAY,CACnB,OACmE;AAAA,EACnE,OAAO,SAAS,KAAK,KAAK,OAAO,OAAO,KAAK,EAAE,MAAM,WAAW;AAAA;AAGlE,SAAS,WAAW,CAAC,OAAyD;AAAA,EAC5E,IAAI,UAAU,QAAQ,OAAO,UAAU,YAAY,OAAO,UAAU;AAAA,IAAW,OAAO;AAAA,EACtF,IAAI,OAAO,UAAU;AAAA,IAAU,OAAO,OAAO,SAAS,KAAK;AAAA,EAC3D,IAAI,MAAM,QAAQ,KAAK;AAAA,IAAG,OAAO,MAAM,MAAM,WAAW;AAAA,EACxD,OAAO,SAAS,KAAK,KAAK,OAAO,OAAO,KAAK,EAAE,MAAM,WAAW;AAAA;AAAA;AAG3D,MAAM,qCAAoC;AAAA,EAWpC;AAAA,EACA;AAAA,EAXF,KAAK,WAAW;AAAA,EAChB,gBAAgB,CAAC;AAAA,EAC1B,SAAS;AAAA,EAET,aAAa;AAAA,EACb,wBAAwB;AAAA,EACxB,UAAU;AAAA,EACV,oBAAoB;AAAA,EAEpB,WAAW,CACA,QACA,eACT;AAAA,IAFS;AAAA,IACA;AAAA;AAAA,EAGX,aAAa,GAA2B;AAAA,IACtC,OAAO,EAAE,eAAe,KAAK,cAAc;AAAA;AAE/C;AAGO,SAAS,kCAAiC,CAC/C,OAIM;AAAA,EACN,IAAI,MAAM,yBAAyB,MAAM,SAAS;AAAA,IAChD,MAAM,IAAI,8BACR,mBACA,kFACF;AAAA,EACF;AAAA,EACA,MAAM,wBAAwB;AAAA,EAC9B,MAAM,aAAa;AAAA;AAId,SAAS,0BAAyB,CACvC,OACM;AAAA,EACN,IAAI,MAAM,SAAS;AAAA,IACjB,MAAM,IAAI,8BACR,mBACA,kDACF;AAAA,EACF;AAAA,EACA,MAAM,UAAU;AAAA,EAChB,MAAM,aAAa;AAAA;AAAA;AASd,MAAM,6CAA4C;AAAA,EACtC,eAAe,IAAI;AAAA,EAC5B,SAAS;AAAA,EAEjB,QAAQ,CAAC,cAA4B;AAAA,IACnC,IAAI,CAAC,KAAK,QAAQ;AAAA,MAChB,MAAM,IAAI,gCACR,2EACF;AAAA,IACF;AAAA,IACA,KAAK,aAAa,IAAI,YAAY;AAAA;AAAA,EAGpC,QAAQ,CAAC,cAA4B;AAAA,IACnC,KAAK,aAAa,OAAO,YAAY;AAAA;AAAA,EAGvC,iBAAiB,GAAS;AAAA,IACxB,IAAI,KAAK,aAAa,SAAS;AAAA,MAAG;AAAA,IAClC,MAAM,IAAI,gCACR,2BAA2B,KAAK,aAAa,0CAC3C,KAAK,aAAa,SAAS,IAAI,KAAK,2DAExC;AAAA;AAAA,EAGF,UAAU,GAAS;AAAA,IACjB,KAAK,SAAS;AAAA,IACd,KAAK,aAAa,MAAM;AAAA;AAE5B;AAQO,SAAS,2BAA0B,CACxC,OACA,OACwC;AAAA,EACxC,IAAI,MAAM,OAAO,MAAM;AAAA,IACrB,MAAM,IAAI,8BACR,mBACA,2EACF;AAAA,EACF;AAAA,EACA,IAAI,MAAM,YAAY;AAAA,IACpB,MAAM,IAAI,8BACR,mBACA,uFACF;AAAA,EACF;AAAA,EACA,MAAM,OAAO,IAAI;AAAA,EACjB,MAAM,aAAa,IAAI;AAAA,EACvB,OAAO,MAAM,QAAQ,IAAI,CAAC,WAAW;AAAA,IACnC,kBAAiB,QAAQ,MAAM,MAAM;AAAA,IACrC,MAAM,YAAY,mBAAkB,MAAM;AAAA,IAC1C,IAAI,KAAK,IAAI,OAAO,SAAS,KAAK,WAAW,IAAI,SAAS,GAAG;AAAA,MAC3D,MAAM,8BAA6B,OAAO,SAAS;AAAA,IACrD;AAAA,IACA,IAAI,OAAO,SAAS,qBAAqB,OAAO,SAAS,oBAAoB;AAAA,MAC3E,MAAM,IAAI,8BACR,mBACA,qEACF;AAAA,IACF;AAAA,IACA,KAAK,IAAI,OAAO,SAAS;AAAA,IACzB,WAAW,IAAI,SAAS;AAAA,IACxB,OAAO,EAAE,QAAQ,WAAW,SAAS,4BAA2B,MAAM,EAAE;AAAA,GACzE;AAAA;AAGI,SAAS,6CAA4C,CAC1D,OACA,OACM;AAAA,EACN,QAAQ,WAAW,MAAM;AAAA,EACzB,QAAQ,QAAQ,sBAAsB,MAAM;AAAA,EAC5C,IAAI,CAAC,MAAM,SAAS;AAAA,IAClB,kCAAkC,wDAAwD;AAAA,EAC5F;AAAA,EACA,IACE,OAAO,aAAa,OAAO,MAC3B,OAAO,SAAS,OAAO,OAAO,QAC9B,OAAO,gBAAgB,OAAO,eAC9B,OAAO,YAAY,QACnB,CAAC,OAAO,cAAc,OAAO,UAAU,KACvC,OAAO,aAAa,KACpB,OAAO,eAAe,MAAM,mBAC5B;AAAA,IACA,kCACE,mEACF;AAAA,EACF;AAAA,EACA,IAAI,OAAO,OAAO,SAAS,QAAQ;AAAA,IACjC,IAAI,OAAO,SAAS,UAAU,OAAO,SAAS,WAAW,OAAO,OAAO,gBAAgB;AAAA,MACrF,kCAAkC,0DAA0D;AAAA,IAC9F;AAAA,IACA,IAAI,kBAAkB,WAAW,GAAG;AAAA,MAClC,kCACE,gEACF;AAAA,IACF;AAAA,EACF,EAAO,SAAI,OAAO,OAAO,SAAS,cAAc;AAAA,IAC9C,IAAI,OAAO,SAAS,gBAAgB,kBAAkB,WAAW,GAAG;AAAA,MAClE,kCACE,sEACF;AAAA,IACF;AAAA,EACF,EAAO,SAAI,OAAO,SAAS,eAAe,kBAAkB,WAAW,GAAG;AAAA,IACxE,kCAAkC,4DAA4D;AAAA,EAChG;AAAA;AAGK,SAAS,kCAAiC,CAC/C,OACA,YACM;AAAA,EACN,QAAQ,WAAW,MAAM;AAAA,EACzB,IACE,OAAO,OAAO,SAAS,gBACvB,OAAO,OAAO,SAAS,gBACvB,WAAW,OAAO,iBAAiB,OAAO,OAAO,OAAO,gBACxD,WAAW,OAAO,iBAAiB,OAAO,OAAO,gBACjD,WAAW,UAAU,oBAAoB,OAAO,OAAO,mBACvD,WAAW,aAAa,iBACxB,qBAAoB,WAAW,cAAc,MAC3C,qBAAoB,OAAO,OAAO,cAAc,KAClD,WAAW,uBAAuB,OAAO,sBACzC,WAAW,kBAAkB,OAAO,iBACpC,WAAW,qBAAqB,OAAO,oBACvC,WAAW,iBAAiB,OAAO,MACnC,WAAW,cAAc,OAAO,eAChC,CAAC,MAAM,OAAO,SAAS,QAAQ,KAC7B,CAAC,aAAa,qBAAoB,QAAQ,MAAM,qBAAoB,WAAW,QAAQ,CACzF,GACA;AAAA,IACA,kCACE,kEACF;AAAA,EACF;AAAA,EACA,IACE,CAAC,MAAM,OAAO,QACd,MAAM,OAAO,KAAK,OAAO,iBAAiB,WAAW,OAAO,gBAC5D,MAAM,OAAO,KAAK,sBAAsB,WAAW,mBACnD;AAAA,IACA,kCACE,4EACF;AAAA,EACF;AAAA;AAGF,SAAS,iCAAiC,CAAC,SAAwB;AAAA,EACjE,MAAM,IAAI,gCAA+B,OAAO;AAAA;AAG3C,SAAS,aAAe,CAC7B,QACA,UACA,SACK;AAAA,EACL,OAAO,CAAC,GAAG,IAAI,IAAI,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,KAAK,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAC5E,CAAC,MAAM,UAAU,QAAQ,IAAI,EAAE,cAAc,QAAQ,KAAK,CAAC,CAC7D;AAAA;AAGK,SAAS,sBAAqB,CAAC,QAAgB,UAA2B;AAAA,EAC/E,MAAM,eAAe;AAAA,EACrB,OAAO,OAAO,QAAQ,QAAQ,EAAE,MAC9B,EAAE,KAAK,WACL,OAAO,UAAU,YACjB,OAAO,cAAc,aAAa,IAAI,KACtC,aAAa,SAAS,SACtB,SAAS,CACb;AAAA;AAGK,SAAS,kBAAiB,CAAC,SAA+C;AAAA,EAC/E,OAAO,IAAI,8BAA6B,mBAAmB,OAAO;AAAA;AAS7D,SAAS,6BAA4B,CAC1C,SACA,UACM;AAAA,EACN,IAAI,CAAC,SAAS,QAAQ;AAAA,IACpB,IAAI,SAAS;AAAA,MACX,MAAM,oBAAoB,mBAAmB,cAAa,SAAS,GAAG,iBAAiB;AAAA,IACzF;AAAA,IACA;AAAA,EACF;AAAA,EACA,IACE,CAAC,WACD,QAAQ,YAAY,SAAS,WAC7B,QAAQ,iBAAiB,SAAS,cAClC;AAAA,IACA,MAAM,oBAAoB,mBAAmB,cAAa,SAAS,GAAG,YAAY;AAAA,EACpF;AAAA;AAIK,SAAS,2BAA0B,CACxC,qBACA,UACM;AAAA,EACN,IAAI,CAAC,SAAS,QAAQ;AAAA,IACpB,IAAI,wBAAwB,WAAW;AAAA,MACrC,MAAM,oBAAoB,iBAAiB,YAAW,SAAS,GAAG,iBAAiB;AAAA,IACrF;AAAA,IACA;AAAA,EACF;AAAA,EACA,IAAI,wBAAwB,aAAa,wBAAwB,SAAS,cAAc;AAAA,IACtF,MAAM,oBAAoB,iBAAiB,YAAW,SAAS,GAAG,YAAY;AAAA,EAChF;AAAA;AAGK,SAAS,gCAA+B,CAC7C,oBACA,UACM;AAAA,EACN,IAAI,uBAAuB,SAAS;AAAA,IAAa;AAAA,EACjD,MAAM,oBACJ,mCAAmC,SAAS,OAAO,gBAAgB,SAAS,OAAO,aAAa,SAAS,SAC3G;AAAA;AAGF,SAAS,mBAAmB,CAAC,SAA+C;AAAA,EAC1E,OAAO,IAAI,8BAA6B,eAAe,OAAO;AAAA;AAGzD,SAAS,2BAA0B,CAAC,QAMzC;AAAA,EACA,IAAI,OAAO,SAAS,QAAQ;AAAA,IAC1B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY,OAAO;AAAA,MACnB,YAAY,6BAA4B,OAAO,KAAK,IAAI;AAAA,MACxD,SAAS,OAAO;AAAA,MAChB,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,eAAe;AAAA,IACjC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY,OAAO,SAAS,cAAc,IAAI;AAAA,MAC9C,YAAY;AAAA,MACZ,SAAS,OAAO;AAAA,MAChB,SAAS,OAAO;AAAA,IAClB;AAAA,EACF;AAAA,EACA,IAAI,OAAO,SAAS,SAAS;AAAA,IAC3B,OAAO;AAAA,MACL,MAAM;AAAA,MACN,YAAY,OAAO;AAAA,MACnB,YAAY;AAAA,MACZ,SAAS,OAAO;AAAA,MAChB,SAAS;AAAA,IACX;AAAA,EACF;AAAA,EACA,OAAO,EAAE,MAAM,QAAQ,YAAY,GAAG,YAAY,GAAG,SAAS,IAAI,SAAS,GAAG;AAAA;AAGzE,SAAS,6BAA4B,CAAC,KAA4C;AAAA,EACvF,OAAO,IAAI,8BACT,mBACA,QAAQ,YACJ,oCACA,uCAAuC,OAC7C;AAAA;AAGK,SAAS,cAAa,CAAC,OAAwB;AAAA,EACpD,OAAO,qBAAoB,KAAK;AAAA;AAG3B,SAAS,cAAa,CAAC,QAI5B;AAAA,EACA,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,OAAO,EAAE,MAAM,UAAU,OAAO,OAAO,OAAO,cAAc,KAAK;AAAA,EACnE;AAAA,EACA,IAAI,OAAO,SAAS,cAAc;AAAA,IAChC,OAAO,EAAE,MAAM,cAAc,OAAO,OAAO,iBAAiB,cAAc,KAAK;AAAA,EACjF;AAAA,EACA,IAAI,OAAO,SAAS,eAAe,OAAO,OAAO,SAAS,cAAc;AAAA,IACtE,OAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,OAAO,OAAO;AAAA,MACrB,cAAc,OAAO,OAAO;AAAA,IAC9B;AAAA,EACF;AAAA,EACA,OAAO,EAAE,MAAM,OAAO,MAAM,OAAO,MAAM,cAAc,KAAK;AAAA;AAGvD,SAAS,YAAW,CAAC,QAI1B;AAAA,EACA,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,OAAO,EAAE,MAAM,OAAO,MAAM,OAAO,OAAO,aAAa,cAAc,KAAK;AAAA,EAC5E;AAAA,EACA,IAAI,OAAO,SAAS,cAAc;AAAA,IAChC,OAAO,EAAE,MAAM,OAAO,MAAM,OAAO,OAAO,iBAAiB,cAAc,KAAK;AAAA,EAChF;AAAA,EACA,OAAO;AAAA,IACL,MAAM,OAAO;AAAA,IACb,OAAO,OAAO;AAAA,IACd,cAAc,OAAO;AAAA,EACvB;AAAA;AAGK,SAAS,qBAAoB,CAAC,KAGf;AAAA,EACpB,OAAO,EAAE,cAAc,IAAI,gBAAgB,WAAW,IAAI,WAAW;AAAA;AAGhE,SAAS,mBAAkB,CAAC,KAMf;AAAA,EAClB,OAAO;AAAA,IACL,QAAQ,EAAE,cAAc,IAAI,gBAAgB,WAAW,IAAI,UAAU;AAAA,IACrE,QAAQ,IAAI;AAAA,IACZ,QAAQ,EAAE,cAAc,IAAI,gBAAgB,WAAW,IAAI,UAAU;AAAA,EACvE;AAAA;AAGK,SAAS,gBAAe,CAAC,KAAmC;AAAA,EACjE,OAAO,qBAAoB,IAAI,SAAS;AAAA;AAcnC,SAAS,gBAAe,CAC7B,gBACA,MAC2B;AAAA,EAC3B,OAAO,KAAK,IAAI,CAAC,QAAQ;AAAA,IACvB,uBAAsB,gBAAgB,GAAG;AAAA,IACzC,OAAO,gBAAe,GAAG;AAAA,GAC1B;AAAA;AAGI,SAAS,eAAc,CAAC,KAA2C;AAAA,EACxE,OAAO;AAAA,IACL;AAAA,IACA,SAAS,qBAAoB,IAAI,IAAI;AAAA,IACrC,WAAW,iBAAgB,GAAG;AAAA,EAChC;AAAA;AAWK,SAAS,iBAAgB,CAC9B,gBACA,OAO4B;AAAA,EAC5B,WAAW,OAAO,MAAM;AAAA,IAAM,uBAAsB,gBAAgB,GAAG;AAAA,EACvE,MAAM,QAAQ,IAAI;AAAA,EAClB,MAAM,WAAW,IAAI;AAAA,EACrB,YAAY,OAAO,YAAY;AAAA,IAC7B,CAAC,MAAM,MAAM,KAAK;AAAA,IAClB,CAAC,MAAM,aAAa,CAAC,GAAG,IAAI;AAAA,EAC9B,GAAY;AAAA,IACV,WAAW,OAAO,OAAO;AAAA,MACvB,mBAAmB,IAAI,MAAM,aAAa;AAAA,MAC1C,IACE,IAAI,KAAK,SAAS,kBAClB,CAAC,OAAO,cAAc,IAAI,cAAc,KACxC,IAAI,iBAAiB,GACrB;AAAA,QACA,MAAM,IAAI,gCAA+B,iDAAiD;AAAA,MAC5F;AAAA,MACA,MAAM,MAAM,qBAAoB,IAAI,IAAI;AAAA,MACxC,MAAM,WAAW,MAAM,IAAI,GAAG;AAAA,MAC9B,MAAM,YAAY,SAAS,IAAI,IAAI,cAAc;AAAA,MACjD,IACG,aACE,SAAS,YAAY,WAAW,SAAS,mBAAmB,IAAI,mBAClE,cAAc,aAAa,cAAc,KAC1C;AAAA,QACA,MAAM,IAAI,gCACR,yDAAyD,IAAI,wCAC/D;AAAA,MACF;AAAA,MACA,MAAM,IAAI,KAAK;AAAA,QACb,MAAM,IAAI;AAAA,QACV,SAAS;AAAA,QACT,gBAAgB,IAAI;AAAA,QACpB;AAAA,MACF,CAAC;AAAA,MACD,SAAS,IAAI,IAAI,gBAAgB,GAAG;AAAA,IACtC;AAAA,EACF;AAAA,EACA,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC;AAAA;AAGpB,SAAS,yBAAwB,CACtC,MACA,cAC2B;AAAA,EAC3B,MAAM,eAAe,IAAI,IACvB,aAAa,IAAI,GAAG,SAAS,UAAU,CAAC,SAAS,IAAI,cAAc,CAAU,CAC/E;AAAA,EACA,MAAM,eAAe,IAAI,IACvB,aAAa,IAAI,GAAG,SAAS,UAAU,CAAC,IAAI,gBAAgB,OAAO,CAAU,CAC/E;AAAA,EACA,MAAM,aAAa,IAAI,IAAI,aAAa,IAAI,CAAC,QAAQ,CAAC,IAAI,WAAW,IAAI,GAAG,CAAU,CAAC;AAAA,EACvF,MAAM,UAAU,IAAI;AAAA,EACpB,IAAI,YAAY;AAAA,EAEhB,WAAW,UAAU,MAAM;AAAA,IACzB,QAAQ,WAAW,SAAS,QAAQ;AAAA,IACpC,MAAM,cAAc,aAAa,IAAI,OAAO;AAAA,IAC5C,IAAI,gBAAgB,aAAa,gBAAgB,IAAI,gBAAgB;AAAA,MACnE,MAAM,IAAI,gCACR,uCAAuC,wCACzC;AAAA,IACF;AAAA,IACA,MAAM,cAAc,aAAa,IAAI,IAAI,cAAc;AAAA,IACvD,IAAI,gBAAgB,aAAa,gBAAgB,SAAS;AAAA,MACxD,MAAM,IAAI,gCACR,iDAAiD,IAAI,kCACvD;AAAA,IACF;AAAA,IAEA,MAAM,WAAW,WAAW,IAAI,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG;AAAA,IACtE,IAAI,UAAU;AAAA,MACZ,IAAI,eAAc,QAAQ,MAAM,eAAc,GAAG,GAAG;AAAA,QAClD,aAAa;AAAA,QACb;AAAA,MACF;AAAA,MACA,MAAM,IAAI,gCACR,kDAAkD,YACpD;AAAA,IACF;AAAA,IAEA,aAAa,IAAI,SAAS,IAAI,cAAc;AAAA,IAC5C,aAAa,IAAI,IAAI,gBAAgB,OAAO;AAAA,IAC5C,QAAQ,IAAI,WAAW,KAAK,QAAQ,KAAK,gBAAgB,GAAG,EAAE,CAAC;AAAA,EACjE;AAAA,EAEA,OAAO,EAAE,SAAS,CAAC,GAAG,QAAQ,OAAO,CAAC,GAAG,UAAU;AAAA;AAG9C,SAAS,8BAA6B,CAC3C,OACoE;AAAA,EACpE,OAAO;AAAA,IACL,gBAAgB,MAAM;AAAA,IACtB,UAAU,MAAM;AAAA,IAChB,gBAAgB,MAAM;AAAA,IACtB,oBAAoB,MAAM;AAAA,IAC1B,eAAe,MAAM;AAAA,IACrB,kBAAkB,MAAM;AAAA,EAC1B;AAAA;AAGK,SAAS,uBAAsB,CAAC,OAA8C;AAAA,EACnF,2BAA0B,KAAK;AAAA,EAC/B,IAAI,MAAM,mBAAmB,YAAY,MAAM,mBAAmB,QAAQ;AAAA,IACxE,MAAM,IAAI,gCAA+B,oDAAoD;AAAA,EAC/F;AAAA,EACA,IAAI,MAAM,aAAa,eAAe;AAAA,IACpC,MAAM,IAAI,gCACR,wDACF;AAAA,EACF;AAAA,EACA,gBAAe,MAAM,oBAAoB,4BAA4B;AAAA,EACrE,gBAAe,MAAM,eAAe,uBAAuB;AAAA,EAC3D,gBAAe,MAAM,kBAAkB,0BAA0B;AAAA,EACjE,gBAAe,MAAM,eAAe,WAAW,mBAAmB;AAAA,EAClE,gBAAe,MAAM,eAAe,WAAW,2BAA2B;AAAA,EAC1E,iBAAgB,MAAM,eAAe,WAAW,oCAAoC,IAAI;AAAA,EACxF,iBAAgB,MAAM,WAAW,oBAAoB,IAAI;AAAA,EACzD,IAAI,MAAM,MAAM;AAAA,IACd,gBAAe,MAAM,KAAK,mBAAmB,gCAAgC;AAAA,IAC7E,gBAAe,MAAM,KAAK,cAAc,uBAAuB;AAAA,IAC/D,IAAI,MAAM,KAAK,sBAAsB,MAAM,mBAAmB;AAAA,MAC5D,MAAM,IAAI,gCAA+B,4CAA4C;AAAA,IACvF;AAAA,EACF;AAAA;AAGK,SAAS,0BAAyB,CAAC,OAKjC;AAAA,EACP,qBAAoB,KAAK;AAAA,EACzB,gBAAe,MAAM,mBAAmB,2BAA2B;AAAA,EACnE,+BAA8B,MAAM,UAAU,iBAAiB,MAAM,UAAU,cAAc;AAAA;AAGxF,SAAS,oBAAmB,CAAC,OAG3B;AAAA,EACP,gBAAe,MAAM,WAAW,mBAAmB;AAAA,EACnD,gBAAe,MAAM,OAAO,cAAc,sBAAsB;AAAA;AAG3D,SAAS,8BAA6B,CAAC,OAAe,OAAqB;AAAA,EAChF,gBAAe,OAAO,0BAA0B;AAAA,EAChD,gBAAe,OAAO,wBAAwB;AAAA;AAGzC,SAAS,2BAA0B,CACxC,UACA,WACM;AAAA,EACN,IACE,SAAS,oBAAoB,UAAU,mBACvC,SAAS,mBAAmB,UAAU,gBACtC;AAAA,IACA,MAAM,gBACJ,2BAA2B,SAAS,mDACtC;AAAA,EACF;AAAA;AAGK,SAAS,sBAAqB,CACnC,gBACA,KACM;AAAA,EACN,IAAI,CAAC,OAAO,cAAc,IAAI,cAAc,KAAK,IAAI,iBAAiB,GAAG;AAAA,IACvE,MAAM,IAAI,gCACR,4DACF;AAAA,EACF;AAAA,EACA,mBAAmB,IAAI,MAAM,aAAa;AAAA,EAC1C,mBAAmB,IAAI,WAAW,kBAAkB;AAAA,EACpD,IAAI,mBAAmB,YAAY,IAAI,KAAK,SAAS,UAAU;AAAA,IAC7D,MAAM,IAAI,gCACR,uDACF;AAAA,EACF;AAAA,EACA,IAAI,mBAAmB,WAAW,IAAI,KAAK,SAAS,UAAU,IAAI,UAAU,SAAS,SAAS;AAAA,IAC5F,MAAM,IAAI,gCACR,qEACF;AAAA,EACF;AAAA;AAGF,SAAS,kBAAkB,CAAC,QAAsC,OAAqB;AAAA,EACrF,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,gBAAe,OAAO,IAAI,cAAc,GAAG,sBAAsB;AAAA,IACjE,gBAAe,OAAO,IAAI,WAAW,GAAG,kBAAkB;AAAA,IAC1D;AAAA,EACF;AAAA,EACA,gBAAe,OAAO,IAAI,OAAO,cAAc,GAAG,6BAA6B;AAAA,EAC/E,gBAAe,OAAO,IAAI,OAAO,WAAW,GAAG,yBAAyB;AAAA,EACxE,gBAAe,OAAO,IAAI,QAAQ,GAAG,eAAe;AAAA,EACpD,gBAAe,OAAO,IAAI,OAAO,cAAc,GAAG,6BAA6B;AAAA,EAC/E,gBAAe,OAAO,IAAI,OAAO,WAAW,GAAG,yBAAyB;AAAA;AAGnE,SAAS,oBAAmB,CAAC,QAQlC;AAAA,EACA,IAAI,OAAO,SAAS,UAAU;AAAA,IAC5B,OAAO;AAAA,MACL,cAAc,OAAO,IAAI;AAAA,MACzB,WAAW,OAAO,IAAI;AAAA,MACtB,cAAc;AAAA,MACd,iBAAiB;AAAA,MACjB,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,iBAAiB;AAAA,IACnB;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,cAAc;AAAA,IACd,WAAW;AAAA,IACX,cAAc,OAAO,IAAI,OAAO;AAAA,IAChC,iBAAiB,OAAO,IAAI,OAAO;AAAA,IACnC,QAAQ,OAAO,IAAI;AAAA,IACnB,cAAc,OAAO,IAAI,OAAO;AAAA,IAChC,iBAAiB,OAAO,IAAI,OAAO;AAAA,EACrC;AAAA;AAIK,SAAS,oBAAmB,CAAC,KAAkC;AAAA,EACpE,MAAM,QAAiB,KAAK,MAAM,GAAG;AAAA,EACrC,IAAI,MAAM,QAAQ,KAAK,KAAK,MAAM,MAAM,CAAC,SAAS,OAAO,SAAS,QAAQ,GAAG;AAAA,IAC3E,IAAI,MAAM,OAAO,YAAY,MAAM,WAAW,GAAG;AAAA,MAC/C,OAAO,EAAE,MAAM,UAAU,KAAK,EAAE,cAAc,MAAM,IAAK,WAAW,MAAM,GAAI,EAAE;AAAA,IAClF;AAAA,IACA,IAAI,MAAM,OAAO,UAAU,MAAM,WAAW,GAAG;AAAA,MAC7C,OAAO;AAAA,QACL,MAAM;AAAA,QACN,KAAK;AAAA,UACH,QAAQ,EAAE,cAAc,MAAM,IAAK,WAAW,MAAM,GAAI;AAAA,UACxD,QAAQ,MAAM;AAAA,UACd,QAAQ,EAAE,cAAc,MAAM,IAAK,WAAW,MAAM,GAAI;AAAA,QAC1D;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EACA,MAAM,IAAI,8BACR,0BACA,qBAAqB,oCACvB;AAAA;AAIK,SAAS,uBAAsB,CACpC,WAC0C;AAAA,EAC1C,QAAQ,MAAM,OAAO,KAAK,SAAS,YAAY;AAAA,EAC/C,OAAO,OAAO,KAAK,OAAO,EAAE,WAAW,IAAI,OAAO;AAAA;AAI7C,SAAS,2BAA0B,CACxC,SAUA,SAC2B;AAAA,EAC3B,MAAM,OAAQ,WAAW,CAAC;AAAA,EAC1B,IAAI,QAAQ,gBAAgB,UAAU;AAAA,IACpC,OAAO;AAAA,MACL,MAAM;AAAA,MACN,KAAK,EAAE,cAAc,QAAQ,gBAAiB,WAAW,QAAQ,WAAY;AAAA,SAC1E;AAAA,IACL;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,KAAK;AAAA,MACH,QAAQ,EAAE,cAAc,QAAQ,gBAAiB,WAAW,QAAQ,kBAAmB;AAAA,MACvF,QAAQ,QAAQ;AAAA,MAChB,QAAQ,EAAE,cAAc,QAAQ,gBAAiB,WAAW,QAAQ,kBAAmB;AAAA,IACzF;AAAA,OACG;AAAA,EACL;AAAA;AAGK,SAAS,uBAAsB,CACpC,KACA,OACS;AAAA,EACT,OACE,IAAI,WAAW,aACf,IAAI,mBAAmB,MAAM,UAAU,kBACvC,IAAI,oBAAoB,MAAM,UAAU,mBACxC,IAAI,mBAAmB,MAAM,kBAC7B,IAAI,aAAa,MAAM,YACvB,IAAI,cAAc,MAAM,aACxB,IAAI,eAAe,cAAc,MAAM,eAAe,aACtD,IAAI,eAAe,cAAc,MAAM,eAAe,aACtD,IAAI,eAAe,cAAc,MAAM,eAAe,aACtD,IAAI,uBAAuB,MAAM,sBACjC,IAAI,kBAAkB,MAAM,iBAC5B,IAAI,MAAM,sBAAsB,MAAM,MAAM,qBAC5C,IAAI,MAAM,iBAAiB,MAAM,MAAM,gBACvC,IAAI,qBAAqB,MAAM;AAAA;AAI5B,SAAS,eAAc,CAAC,SAA+C;AAAA,EAC5E,OAAO,IAAI,8BAA6B,0BAA0B,OAAO;AAAA;",
|
|
12
|
+
"debugId": "6AE7168CEA7F1E8664756E2164756E21",
|
|
13
|
+
"names": []
|
|
14
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/artifacts/limits.ts
|
|
3
|
+
var ARTIFACT_LIMITS2 = {
|
|
4
|
+
maxFiles: 200,
|
|
5
|
+
maxFileBytes: 25 * 1024 * 1024,
|
|
6
|
+
maxVersionBytes: 100 * 1024 * 1024,
|
|
7
|
+
maxPathLength: 512,
|
|
8
|
+
maxTitleLength: 200,
|
|
9
|
+
maxDocumentBytes: 2 * 1024 * 1024,
|
|
10
|
+
maxThemeBytes: 4 * 1024,
|
|
11
|
+
maxWorkbookBytes: 256 * 1024,
|
|
12
|
+
maxSheets: 20,
|
|
13
|
+
maxSheetRows: 1e5,
|
|
14
|
+
maxSheetFileBytes: 5 * 1024 * 1024,
|
|
15
|
+
maxSheetColumns: 200,
|
|
16
|
+
maxCharts: 10,
|
|
17
|
+
maxChartSeries: 5,
|
|
18
|
+
maxPieSlices: 5,
|
|
19
|
+
maxDeckBytes: 2 * 1024 * 1024,
|
|
20
|
+
maxPageBytes: 2 * 1024 * 1024,
|
|
21
|
+
maxSlides: 100,
|
|
22
|
+
maxCanvasBytes: 512 * 1024,
|
|
23
|
+
maxCanvasItems: 500,
|
|
24
|
+
maxCanvasBoards: 40,
|
|
25
|
+
minCanvasItemSize: 40,
|
|
26
|
+
maxCanvasItemSize: 8000,
|
|
27
|
+
maxCanvasPosition: 1e5,
|
|
28
|
+
maxCanvasTextLength: 2000,
|
|
29
|
+
maxCanvasLabelLength: 120,
|
|
30
|
+
maxBoardBytes: 2 * 1024 * 1024,
|
|
31
|
+
maxReferences: 200,
|
|
32
|
+
maxQueries: 20,
|
|
33
|
+
maxQueryBytes: 64 * 1024,
|
|
34
|
+
maxQueryRows: 1e4
|
|
35
|
+
};
|
|
36
|
+
var ARTIFACT_STATE_LIMITS2 = {
|
|
37
|
+
maxKeyLength: 128,
|
|
38
|
+
maxValueBytes: 64 * 1024,
|
|
39
|
+
maxKeys: 100,
|
|
40
|
+
maxBytes: 1024 * 1024
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export { ARTIFACT_LIMITS2, ARTIFACT_STATE_LIMITS2 };
|
|
44
|
+
|
|
45
|
+
//# debugId=172E8F6E5D1BE4A964756E2164756E21
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/artifacts/limits.ts"],
|
|
4
|
+
"sourcesContent": [
|
|
5
|
+
"/** What one version may hold. Publishing refuses a version over any of these. */\nexport const ARTIFACT_LIMITS = {\n maxFiles: 200,\n maxFileBytes: 25 * 1024 * 1024,\n maxVersionBytes: 100 * 1024 * 1024,\n maxPathLength: 512,\n maxTitleLength: 200,\n /** A document's Markdown is parsed whole when it is published. */\n maxDocumentBytes: 2 * 1024 * 1024,\n maxThemeBytes: 4 * 1024,\n maxWorkbookBytes: 256 * 1024,\n /** A sheet's limits keep the grid quick and its charts readable. */\n maxSheets: 20,\n maxSheetRows: 100_000,\n /** The viewer reads a sheet whole, and reads at most this much. */\n maxSheetFileBytes: 5 * 1024 * 1024,\n maxSheetColumns: 200,\n maxCharts: 10,\n maxChartSeries: 5,\n /** One slice per theme chart color, so no two slices share one. */\n maxPieSlices: 5,\n /** A deck's `index.html` is parsed whole when it is published. */\n maxDeckBytes: 2 * 1024 * 1024,\n /** A page's `index.html` is parsed whole when it is published; its scripts and data are not. */\n maxPageBytes: 2 * 1024 * 1024,\n maxSlides: 100,\n /** A canvas's items, its live boards, and where they may sit, in pixels. */\n maxCanvasBytes: 512 * 1024,\n maxCanvasItems: 500,\n maxCanvasBoards: 40,\n minCanvasItemSize: 40,\n maxCanvasItemSize: 8000,\n maxCanvasPosition: 100_000,\n /** A note's or a text's words, in characters. */\n maxCanvasTextLength: 2000,\n /** An item's title, a shape's words, or an arrow's label, in characters. */\n maxCanvasLabelLength: 120,\n /** A board's HTML is parsed whole when it is published, as a page's is. */\n maxBoardBytes: 2 * 1024 * 1024,\n /** `artifact:` addresses one version may use. */\n maxReferences: 200,\n /** `queries/<name>.json` files, each run for every reader who opens the version. */\n maxQueries: 20,\n maxQueryBytes: 64 * 1024,\n /** What one query returns at most; past it, its result says it is truncated. */\n maxQueryRows: 10_000,\n} as const\n\n/**\n * What a page may keep for each reader with `sixb.state`, across its versions: values are JSON,\n * counted by their UTF-8 bytes as written.\n */\nexport const ARTIFACT_STATE_LIMITS = {\n maxKeyLength: 128,\n maxValueBytes: 64 * 1024,\n maxKeys: 100,\n maxBytes: 1024 * 1024,\n} as const\n"
|
|
6
|
+
],
|
|
7
|
+
"mappings": ";;AACO,IAAM,mBAAkB;AAAA,EAC7B,UAAU;AAAA,EACV,cAAc,KAAK,OAAO;AAAA,EAC1B,iBAAiB,MAAM,OAAO;AAAA,EAC9B,eAAe;AAAA,EACf,gBAAgB;AAAA,EAEhB,kBAAkB,IAAI,OAAO;AAAA,EAC7B,eAAe,IAAI;AAAA,EACnB,kBAAkB,MAAM;AAAA,EAExB,WAAW;AAAA,EACX,cAAc;AAAA,EAEd,mBAAmB,IAAI,OAAO;AAAA,EAC9B,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,gBAAgB;AAAA,EAEhB,cAAc;AAAA,EAEd,cAAc,IAAI,OAAO;AAAA,EAEzB,cAAc,IAAI,OAAO;AAAA,EACzB,WAAW;AAAA,EAEX,gBAAgB,MAAM;AAAA,EACtB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EAEnB,qBAAqB;AAAA,EAErB,sBAAsB;AAAA,EAEtB,eAAe,IAAI,OAAO;AAAA,EAE1B,eAAe;AAAA,EAEf,YAAY;AAAA,EACZ,eAAe,KAAK;AAAA,EAEpB,cAAc;AAChB;AAMO,IAAM,yBAAwB;AAAA,EACnC,cAAc;AAAA,EACd,eAAe,KAAK;AAAA,EACpB,SAAS;AAAA,EACT,UAAU,OAAO;AACnB;",
|
|
8
|
+
"debugId": "172E8F6E5D1BE4A964756E2164756E21",
|
|
9
|
+
"names": []
|
|
10
|
+
}
|