@opengeni/contracts 5.5.0 → 5.5.2-canary.40656248492001
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/agent-authored-durable-text.d.ts +9 -9
- package/dist/agent-config.d.ts +148 -37
- package/dist/api-key-presets.d.ts +19 -0
- package/dist/app-action-catalog-types.d.ts +32 -0
- package/dist/app-action-catalog.gen.d.ts +2 -0
- package/dist/app-actions.d.ts +91 -0
- package/dist/app-actions.js +10130 -0
- package/dist/app-actions.js.map +1 -0
- package/dist/app-shot.d.ts +55 -0
- package/dist/artifact-catalog.d.ts +33 -0
- package/dist/artifacts.d.ts +166 -0
- package/dist/atlassian-native-retirement.d.ts +16 -0
- package/dist/atlassian-native-retirement.js +30 -0
- package/dist/atlassian-native-retirement.js.map +1 -0
- package/dist/atlassian.js +48 -23
- package/dist/automation-templates.d.ts +434 -0
- package/dist/automation-templates.js +31 -0
- package/dist/automation-templates.js.map +1 -0
- package/dist/billing-subscriptions.d.ts +61 -0
- package/dist/bots.d.ts +583 -0
- package/dist/bundled-skills.d.ts +58 -2
- package/dist/canonical-human-identities.js +3 -1
- package/dist/child-lifecycle-notice-protocol.d.ts +45 -0
- package/dist/chunk-2QKIEAGY.js +396 -0
- package/dist/chunk-2QKIEAGY.js.map +1 -0
- package/dist/chunk-2WOWEWXV.js +426 -0
- package/dist/chunk-2WOWEWXV.js.map +1 -0
- package/dist/chunk-2ZIHHL72.js +153 -0
- package/dist/chunk-2ZIHHL72.js.map +1 -0
- package/dist/chunk-32U6NKQQ.js +389 -0
- package/dist/chunk-32U6NKQQ.js.map +1 -0
- package/dist/chunk-4YDDHSO2.js +799 -0
- package/dist/chunk-4YDDHSO2.js.map +1 -0
- package/dist/chunk-56SNIMDO.js +9 -0
- package/dist/chunk-56SNIMDO.js.map +1 -0
- package/dist/chunk-5RWB6QVL.js +101 -0
- package/dist/chunk-5RWB6QVL.js.map +1 -0
- package/dist/chunk-5UGUOT3L.js +243 -0
- package/dist/chunk-5UGUOT3L.js.map +1 -0
- package/dist/chunk-6LAT33BH.js +130 -0
- package/dist/chunk-6LAT33BH.js.map +1 -0
- package/dist/chunk-7272KVWZ.js +60 -0
- package/dist/chunk-7272KVWZ.js.map +1 -0
- package/dist/chunk-72QC2GTL.js +36 -0
- package/dist/chunk-72QC2GTL.js.map +1 -0
- package/dist/chunk-7EQGGZBY.js +105 -0
- package/dist/chunk-7EQGGZBY.js.map +1 -0
- package/dist/chunk-A3LXWVYU.js +382 -0
- package/dist/chunk-A3LXWVYU.js.map +1 -0
- package/dist/chunk-AQYDZUJV.js +34 -0
- package/dist/chunk-AQYDZUJV.js.map +1 -0
- package/dist/chunk-BHCEVVUP.js +93 -0
- package/dist/chunk-BHCEVVUP.js.map +1 -0
- package/dist/chunk-BMUTAZX5.js +486 -0
- package/dist/chunk-BMUTAZX5.js.map +1 -0
- package/dist/chunk-DGG6IBBK.js +150 -0
- package/dist/chunk-DGG6IBBK.js.map +1 -0
- package/dist/{chunk-YBW5JSA3.js → chunk-FBCTUMHI.js} +123 -102
- package/dist/chunk-FBCTUMHI.js.map +1 -0
- package/dist/chunk-G2KJTFIC.js +97 -0
- package/dist/chunk-G2KJTFIC.js.map +1 -0
- package/dist/chunk-G4RKARXZ.js +1167 -0
- package/dist/chunk-G4RKARXZ.js.map +1 -0
- package/dist/chunk-H6UJJIUM.js +350 -0
- package/dist/chunk-H6UJJIUM.js.map +1 -0
- package/dist/chunk-JOTHDW4H.js +18 -0
- package/dist/chunk-JOTHDW4H.js.map +1 -0
- package/dist/chunk-L4GUEP7K.js +56480 -0
- package/dist/chunk-L4GUEP7K.js.map +1 -0
- package/dist/{chunk-SIOU2K4U.js → chunk-LJH2EYGT.js} +23 -23
- package/dist/chunk-MTJKSIGA.js +161 -0
- package/dist/chunk-MTJKSIGA.js.map +1 -0
- package/dist/chunk-MYHMB6GZ.js +202 -0
- package/dist/chunk-MYHMB6GZ.js.map +1 -0
- package/dist/chunk-PI5VIKJY.js +660 -0
- package/dist/chunk-PI5VIKJY.js.map +1 -0
- package/dist/{chunk-RIY7GYQS.js → chunk-PTSROVDG.js} +2 -2
- package/dist/chunk-PUIUXIOL.js +189 -0
- package/dist/chunk-PUIUXIOL.js.map +1 -0
- package/dist/chunk-R6VXJIMB.js +19 -0
- package/dist/chunk-R6VXJIMB.js.map +1 -0
- package/dist/chunk-RLJUNVAM.js +15 -0
- package/dist/chunk-RLJUNVAM.js.map +1 -0
- package/dist/chunk-RR6APCBK.js +213 -0
- package/dist/chunk-RR6APCBK.js.map +1 -0
- package/dist/{chunk-TXTQIYCV.js → chunk-RUQ4I6DO.js} +59 -13
- package/dist/chunk-RUQ4I6DO.js.map +1 -0
- package/dist/{chunk-WYBDERIY.js → chunk-RWEEUDHD.js} +53 -42
- package/dist/chunk-RWEEUDHD.js.map +1 -0
- package/dist/chunk-S7MSQQL6.js +158 -0
- package/dist/chunk-S7MSQQL6.js.map +1 -0
- package/dist/{chunk-5Q54VCCH.js → chunk-SHO4YO4B.js} +20 -36
- package/dist/chunk-SHO4YO4B.js.map +1 -0
- package/dist/{chunk-HHZSZYYF.js → chunk-T3HSWMA5.js} +20 -4
- package/dist/chunk-T3HSWMA5.js.map +1 -0
- package/dist/{chunk-YRKRZ6OF.js → chunk-TOOJIBJC.js} +2 -2
- package/dist/chunk-UCUOTRS6.js +431 -0
- package/dist/chunk-UCUOTRS6.js.map +1 -0
- package/dist/chunk-UH4K7GP7.js +424 -0
- package/dist/chunk-UH4K7GP7.js.map +1 -0
- package/dist/chunk-UIZWGPHV.js +120 -0
- package/dist/chunk-UIZWGPHV.js.map +1 -0
- package/dist/chunk-VLUKBV6Y.js +1170 -0
- package/dist/chunk-VLUKBV6Y.js.map +1 -0
- package/dist/chunk-W2QQ5Y6K.js +55 -0
- package/dist/chunk-W2QQ5Y6K.js.map +1 -0
- package/dist/{chunk-Y3KNXVTD.js → chunk-W3NBPR4E.js} +131 -31
- package/dist/chunk-W3NBPR4E.js.map +1 -0
- package/dist/{chunk-NRMCVHAU.js → chunk-WMGO4HJU.js} +11 -9
- package/dist/chunk-WMGO4HJU.js.map +1 -0
- package/dist/{chunk-MYBZRDTY.js → chunk-WQI7VNN4.js} +19 -9
- package/dist/chunk-WQI7VNN4.js.map +1 -0
- package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
- package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
- package/dist/chunk-XB6GQLBH.js +76 -0
- package/dist/chunk-XB6GQLBH.js.map +1 -0
- package/dist/{chunk-D2HKF2EF.js → chunk-XP5M3IKT.js} +2 -2
- package/dist/{chunk-O77VSFYZ.js → chunk-ZMPU5BWE.js} +12 -2
- package/dist/chunk-ZMPU5BWE.js.map +1 -0
- package/dist/{chunk-3SIZGL3O.js → chunk-ZYVEJFNU.js} +22 -18
- package/dist/chunk-ZYVEJFNU.js.map +1 -0
- package/dist/claude-provider-account-authority.d.ts +18 -0
- package/dist/claude-subscription-oauth.d.ts +25 -0
- package/dist/claude-subscription-usage.d.ts +95 -1
- package/dist/client-error-report.d.ts +154 -8
- package/dist/client-error-report.js +157 -2
- package/dist/client-error-report.js.map +1 -1
- package/dist/code-search.d.ts +1 -1
- package/dist/code-search.js.map +1 -1
- package/dist/codex-provider-account-authority.js +23 -12
- package/dist/codex-provider-account-authority.js.map +1 -1
- package/dist/company-profile.d.ts +144 -0
- package/dist/connect.d.ts +38 -0
- package/dist/connect.js +244 -164
- package/dist/connect.js.map +1 -1
- package/dist/connection-account-label.d.ts +2 -0
- package/dist/connection-account-label.js +34 -0
- package/dist/connection-account-label.js.map +1 -0
- package/dist/connection-authority.js +49 -24
- package/dist/connector-attachments.js +3 -1
- package/dist/connector-destinations.js +3 -1
- package/dist/connector-tool-permissions.d.ts +68 -4
- package/dist/credential-profiles.d.ts +166 -0
- package/dist/cua-desktop-tools.d.ts +19 -0
- package/dist/define-schema.d.ts +8 -0
- package/dist/desktop-app.d.ts +28 -0
- package/dist/direct-model-provider.d.ts +38 -0
- package/dist/document-artifact-commands.js +2 -2
- package/dist/document-artifact-query.js +2 -2
- package/dist/editable-artifact-binary.d.ts +7 -0
- package/dist/editable-artifact-causal-frontier.js +2 -2
- package/dist/editable-artifact-codec-registry.js +7 -7
- package/dist/editable-artifact-committed-transaction.js +4 -2
- package/dist/editable-artifact-live.js +8 -8
- package/dist/editable-artifact-serialized-commit.js +9 -9
- package/dist/editable-artifact-versions.d.ts +7 -1
- package/dist/editable-artifact-versions.js +1 -1
- package/dist/editable-artifacts.js +49 -43
- package/dist/event-preview.d.ts +22 -0
- package/dist/event-triggers.d.ts +1253 -0
- package/dist/event-triggers.js +148 -0
- package/dist/event-triggers.js.map +1 -0
- package/dist/external-identities.d.ts +34 -0
- package/dist/external-identities.js +4 -2
- package/dist/feedback.d.ts +181 -0
- package/dist/file-access.d.ts +23 -0
- package/dist/first-party-tool-authorization.d.ts +852 -0
- package/dist/github-repository-contracts.js +64 -43
- package/dist/github-repository-contracts.js.map +1 -1
- package/dist/google-drive-native-retirement.d.ts +12 -0
- package/dist/google-drive-native-retirement.js +20 -0
- package/dist/google-drive-native-retirement.js.map +1 -0
- package/dist/google-drive.d.ts +1 -1
- package/dist/google-drive.js +323 -239
- package/dist/google-drive.js.map +1 -1
- package/dist/host-mcp-bindings.js +250 -198
- package/dist/host-mcp-bindings.js.map +1 -1
- package/dist/index.d.ts +29072 -20593
- package/dist/index.js +2432 -366
- package/dist/inference-residency.d.ts +22 -0
- package/dist/insights-usage.d.ts +948 -0
- package/dist/insights-usage.js +608 -0
- package/dist/insights-usage.js.map +1 -0
- package/dist/integration-capability-id.d.ts +8 -0
- package/dist/interaction-action-deadline.d.ts +48 -0
- package/dist/interaction-driver-diagnostic.d.ts +28 -0
- package/dist/interaction.d.ts +2126 -881
- package/dist/knowledge-entries.d.ts +38 -0
- package/dist/knowledge-preparation.d.ts +4 -0
- package/dist/learning-refusal.d.ts +43 -0
- package/dist/learning-refusal.js +49 -0
- package/dist/learning-refusal.js.map +1 -0
- package/dist/managed-auth-session-sets.d.ts +1 -0
- package/dist/managed-auth-session-sets.js +207 -146
- package/dist/managed-auth-session-sets.js.map +1 -1
- package/dist/managed-sign-in-methods.d.ts +96 -0
- package/dist/managed-sign-in-methods.js +157 -35
- package/dist/managed-sign-in-methods.js.map +1 -1
- package/dist/mcp-structured-content.d.ts +25 -0
- package/dist/message-time-zone.d.ts +38 -0
- package/dist/message-time-zone.js +19 -0
- package/dist/message-time-zone.js.map +1 -0
- package/dist/modal-native-proof-v2.d.ts +587 -0
- package/dist/modal-native-proof-v2.js +39 -0
- package/dist/modal-native-proof-v2.js.map +1 -0
- package/dist/model-account-choice.d.ts +237 -0
- package/dist/model-account-settings.d.ts +422 -0
- package/dist/model-availability.d.ts +15 -0
- package/dist/model-connection-access.d.ts +13 -0
- package/dist/model-context-inspector.d.ts +8 -0
- package/dist/model-display.d.ts +43 -0
- package/dist/model-display.js +17 -0
- package/dist/model-display.js.map +1 -0
- package/dist/model-picker-order.js.map +1 -1
- package/dist/model-residency.d.ts +304 -0
- package/dist/organization-access.d.ts +416 -0
- package/dist/organization-access.js +40 -0
- package/dist/organization-access.js.map +1 -0
- package/dist/organization-integration-policy.d.ts +18 -0
- package/dist/organization-membership-lifecycle.d.ts +66 -0
- package/dist/organization-model-usage.d.ts +146 -0
- package/dist/organization-model-usage.js +87 -0
- package/dist/organization-model-usage.js.map +1 -0
- package/dist/organization-recovery.js +3 -1
- package/dist/organization-usage.d.ts +12 -0
- package/dist/passkey-only-account.d.ts +14 -0
- package/dist/passkey-only-account.js +13 -0
- package/dist/passkey-only-account.js.map +1 -0
- package/dist/permissions.d.ts +19 -0
- package/dist/personal-github.js +220 -148
- package/dist/personal-github.js.map +1 -1
- package/dist/personal-integration-setup.d.ts +81 -0
- package/dist/personal-integration-setup.js +42 -0
- package/dist/personal-integration-setup.js.map +1 -0
- package/dist/prepared-mcp-setup.d.ts +54 -0
- package/dist/prepared-mcp-setup.js +13 -0
- package/dist/prepared-mcp-setup.js.map +1 -0
- package/dist/presentation-artifact-commands.js +2 -2
- package/dist/presentation-artifact-query.js +2 -2
- package/dist/primitives.d.ts +18 -0
- package/dist/product-analytics.d.ts +27 -10
- package/dist/product-lifecycle-facts.d.ts +26 -3
- package/dist/prompt-cache-diagnostics.d.ts +92 -0
- package/dist/recordings.d.ts +1371 -0
- package/dist/remember.d.ts +98 -2
- package/dist/retained-output.d.ts +4 -2
- package/dist/sandbox-file-artifacts.d.ts +19 -2
- package/dist/sandbox-provider-command.d.ts +5 -44
- package/dist/sandbox-recovery.d.ts +139 -8
- package/dist/secret-generator.d.ts +44 -0
- package/dist/secret-mask-strings.d.ts +32 -0
- package/dist/secret-references.d.ts +90 -0
- package/dist/secret-resolution.d.ts +143 -0
- package/dist/secret-shape-masking.d.ts +52 -0
- package/dist/secret-shape-masking.js +19 -0
- package/dist/secret-shape-masking.js.map +1 -0
- package/dist/secret-totp.d.ts +41 -0
- package/dist/secret-use-approval-question.d.ts +11 -0
- package/dist/secret-use-approval-question.js +11 -0
- package/dist/secret-use-approval-question.js.map +1 -0
- package/dist/secret-use-approvals.d.ts +106 -0
- package/dist/secret-value-masking.d.ts +299 -0
- package/dist/secret-value-masking.js +62 -0
- package/dist/secret-value-masking.js.map +1 -0
- package/dist/secret-value.d.ts +19 -0
- package/dist/session-history-import.d.ts +444 -8
- package/dist/session-history.d.ts +111 -0
- package/dist/session-history.js +35 -0
- package/dist/session-history.js.map +1 -0
- package/dist/session-list-entries.d.ts +8 -0
- package/dist/session-list-entries.js +61 -0
- package/dist/session-list-entries.js.map +1 -0
- package/dist/session-mcp-projections.d.ts +13 -1
- package/dist/session-mcp-tool-permissions.d.ts +62 -0
- package/dist/session-target.d.ts +18 -0
- package/dist/session-titles.d.ts +8 -0
- package/dist/session-titles.js +5 -1
- package/dist/session-usage-limit-refusal.d.ts +34 -0
- package/dist/session-usage-limit-refusal.js +15 -0
- package/dist/session-usage-limit-refusal.js.map +1 -0
- package/dist/session-usage-limits.d.ts +127 -0
- package/dist/session-usage-limits.js +43 -0
- package/dist/session-usage-limits.js.map +1 -0
- package/dist/site-data.d.ts +286 -0
- package/dist/site-operations.d.ts +39 -0
- package/dist/site-publishing.d.ts +813 -0
- package/dist/site-session-http.d.ts +103 -4
- package/dist/site-session-http.js +27 -1
- package/dist/site-sql.d.ts +425 -0
- package/dist/skills.d.ts +38 -0
- package/dist/slack-bot-scopes.d.ts +9 -7
- package/dist/slack-bot-scopes.js +6 -3
- package/dist/slack-rest-mcp.d.ts +36 -0
- package/dist/slack-rest-mcp.js +25 -0
- package/dist/slack-rest-mcp.js.map +1 -0
- package/dist/spreadsheet-artifact-commands.d.ts +14 -1
- package/dist/spreadsheet-artifact-commands.js +9 -2
- package/dist/spreadsheet-artifact-query.d.ts +13 -6
- package/dist/spreadsheet-artifact-query.js +4 -3
- package/dist/subscription-account-actions.d.ts +83 -0
- package/dist/subscription-account-pools.d.ts +326 -0
- package/dist/subscription-personal-authority-v2.d.ts +28 -0
- package/dist/subscription-personal-authority-v2.js +13 -0
- package/dist/subscription-personal-authority-v2.js.map +1 -0
- package/dist/subscription-plans.d.ts +38 -0
- package/dist/subscription-usage-pool.d.ts +89 -0
- package/dist/tool-action-review.d.ts +141 -0
- package/dist/tool-catalog.d.ts +479 -0
- package/dist/tool-policy.d.ts +5 -0
- package/dist/tool-review-presentation.d.ts +29 -0
- package/dist/tool-review-presentation.js +21 -0
- package/dist/tool-review-presentation.js.map +1 -0
- package/dist/turn-serving-policy.d.ts +223 -0
- package/dist/usage-allowances.d.ts +30 -0
- package/dist/usage-allowances.js +5 -1
- package/dist/values.d.ts +11 -0
- package/dist/values.js +19 -0
- package/dist/values.js.map +1 -0
- package/dist/vault-provider-wire.d.ts +907 -0
- package/dist/vault-provider-wire.js +74 -0
- package/dist/vault-provider-wire.js.map +1 -0
- package/dist/vaults.d.ts +2185 -0
- package/dist/video-generation.d.ts +75 -0
- package/dist/video-generation.js +8 -1
- package/dist/workspace-control-event.d.ts +18 -0
- package/dist/workspace-control-event.js +18 -0
- package/dist/workspace-control-event.js.map +1 -0
- package/dist/workspace-governance-context.d.ts +18 -0
- package/dist/workspace-integration-wire.d.ts +1 -1
- package/dist/workspace-integration-wire.js +1 -1
- package/dist/workspace-integrations.d.ts +212 -12
- package/dist/xai-provider-account-authority.js +3 -1
- package/package.json +121 -4
- package/src/agent-authored-durable-text.ts +14 -11
- package/src/agent-config.ts +382 -203
- package/src/agent-instruction-changes.ts +94 -74
- package/src/agent-learning.ts +94 -66
- package/src/agent-topology.ts +58 -52
- package/src/api-key-presets.ts +28 -0
- package/src/app-action-catalog-types.ts +32 -0
- package/src/app-action-catalog.gen.ts +9905 -0
- package/src/app-actions.ts +365 -0
- package/src/app-shot.ts +176 -0
- package/src/artifact-catalog.ts +81 -46
- package/src/artifacts.ts +360 -227
- package/src/atlassian-native-retirement.ts +33 -0
- package/src/atlassian.ts +136 -108
- package/src/automation-templates.ts +201 -0
- package/src/billing-subscriptions.ts +48 -0
- package/src/bots.ts +238 -0
- package/src/bundled-skills.ts +79 -22
- package/src/canonical-human-identities.ts +65 -62
- package/src/child-lifecycle-notice-protocol.gen.json +1310 -0
- package/src/child-lifecycle-notice-protocol.ts +224 -0
- package/src/claude-provider-account-authority.ts +12 -0
- package/src/claude-subscription-oauth.ts +61 -19
- package/src/claude-subscription-usage.ts +64 -35
- package/src/client-error-report.ts +344 -9
- package/src/code-search.ts +1 -1
- package/src/codex-provider-account-authority.ts +22 -16
- package/src/company-brain-governed-writes.ts +265 -244
- package/src/company-brain.ts +165 -154
- package/src/company-profile.ts +362 -297
- package/src/connect.ts +222 -173
- package/src/connection-account-label.ts +45 -0
- package/src/connection-authority.ts +172 -152
- package/src/connector-attachments.ts +139 -123
- package/src/connector-destinations.ts +48 -43
- package/src/connector-tool-permissions.ts +104 -46
- package/src/credential-profiles.ts +161 -0
- package/src/cua-desktop-tools.gen.json +6722 -0
- package/src/cua-desktop-tools.linux.gen.json +6798 -0
- package/src/cua-desktop-tools.ts +42 -0
- package/src/cua-desktop-tools.windows.gen.json +6739 -0
- package/src/define-schema.ts +10 -0
- package/src/desktop-app.ts +50 -0
- package/src/direct-model-provider.ts +112 -0
- package/src/editable-artifact-binary.ts +29 -8
- package/src/editable-artifact-committed-transaction.ts +19 -18
- package/src/editable-artifact-serialized-commit.ts +8 -2
- package/src/editable-artifact-versions.ts +7 -1
- package/src/event-preview.ts +53 -3
- package/src/event-triggers.ts +891 -0
- package/src/external-identities.ts +239 -195
- package/src/feedback.ts +125 -30
- package/src/file-access.ts +26 -0
- package/src/first-party-tool-authorization.ts +383 -0
- package/src/github-repository-contracts.ts +78 -64
- package/src/google-drive-native-retirement.ts +20 -0
- package/src/google-drive.ts +286 -234
- package/src/governed-learning-activation.ts +159 -137
- package/src/governed-learning-evaluator.ts +141 -133
- package/src/host-mcp-bindings.ts +244 -221
- package/src/image-generation.ts +105 -95
- package/src/index.ts +13928 -9899
- package/src/inference-residency.ts +36 -0
- package/src/insights-usage.ts +774 -0
- package/src/integration-capability-id.ts +16 -0
- package/src/interaction-action-deadline.ts +143 -0
- package/src/interaction-driver-diagnostic.ts +89 -0
- package/src/interaction.ts +3527 -2427
- package/src/knowledge-entries.ts +386 -299
- package/src/knowledge-preparation.ts +49 -41
- package/src/knowledge.ts +242 -213
- package/src/learning-refusal.ts +90 -0
- package/src/managed-auth-session-sets.ts +180 -133
- package/src/managed-sign-in-methods.ts +156 -34
- package/src/mcp-oauth.ts +58 -46
- package/src/mcp-receipts.ts +199 -194
- package/src/mcp-structured-content.ts +81 -0
- package/src/memory-slack-delivery.ts +172 -142
- package/src/message-time-zone.ts +109 -0
- package/src/modal-native-proof-v2.ts +430 -0
- package/src/model-account-choice.ts +178 -0
- package/src/model-account-settings.ts +210 -0
- package/src/model-availability.ts +22 -0
- package/src/model-connection-access.ts +62 -14
- package/src/model-context-inspector.ts +130 -109
- package/src/model-display.ts +221 -0
- package/src/model-picker-order.ts +1 -1
- package/src/model-residency.ts +535 -0
- package/src/organization-access.ts +216 -0
- package/src/organization-integration-policy.ts +47 -28
- package/src/organization-membership-lifecycle.ts +558 -384
- package/src/organization-model-usage.ts +82 -0
- package/src/organization-recovery.ts +148 -135
- package/src/organization-usage.ts +84 -52
- package/src/passkey-only-account.ts +29 -0
- package/src/permissions.ts +94 -52
- package/src/personal-github.ts +211 -171
- package/src/personal-integration-setup.ts +150 -0
- package/src/preference-registry.ts +319 -263
- package/src/prepared-mcp-setup.ts +190 -0
- package/src/primitives.ts +22 -0
- package/src/product-analytics.ts +40 -15
- package/src/product-lifecycle-facts.ts +50 -20
- package/src/prompt-cache-diagnostics.ts +212 -0
- package/src/recordings.ts +1153 -0
- package/src/remember.ts +184 -172
- package/src/retained-output.ts +181 -168
- package/src/sandbox-file-artifacts.ts +78 -57
- package/src/sandbox-provider-command.ts +55 -72
- package/src/sandbox-recovery.ts +163 -77
- package/src/scoped-knowledge.ts +62 -43
- package/src/secret-generator.ts +156 -0
- package/src/secret-mask-strings.ts +175 -0
- package/src/secret-references.ts +414 -0
- package/src/secret-resolution.ts +322 -0
- package/src/secret-shape-masking.ts +573 -0
- package/src/secret-totp.ts +188 -0
- package/src/secret-use-approval-question.ts +22 -0
- package/src/secret-use-approvals.ts +219 -0
- package/src/secret-value-masking.ts +1283 -0
- package/src/secret-value.ts +22 -0
- package/src/session-goal-reports.ts +55 -49
- package/src/session-history-import.ts +84 -68
- package/src/session-history.ts +197 -0
- package/src/session-list-entries.ts +106 -0
- package/src/session-mcp-projections.ts +21 -3
- package/src/session-mcp-tool-permissions.ts +109 -0
- package/src/session-message-search.ts +46 -38
- package/src/session-target.ts +58 -0
- package/src/session-titles.ts +40 -4
- package/src/session-topology-primitives.ts +20 -12
- package/src/session-usage-limit-refusal.ts +101 -0
- package/src/session-usage-limits.ts +169 -0
- package/src/signup-attribution.ts +20 -15
- package/src/site-data.ts +337 -0
- package/src/site-operations.ts +154 -0
- package/src/site-publishing.ts +903 -0
- package/src/site-session-http.ts +344 -16
- package/src/site-sql.ts +1120 -0
- package/src/skill-use.ts +18 -17
- package/src/skills.ts +105 -50
- package/src/slack-bot-scopes.ts +18 -35
- package/src/slack-rest-mcp.ts +222 -0
- package/src/slack-task-policy.ts +97 -73
- package/src/spreadsheet-artifact-commands.ts +74 -13
- package/src/spreadsheet-artifact-query.ts +188 -50
- package/src/subscription-account-actions.ts +103 -0
- package/src/subscription-account-pools.ts +74 -0
- package/src/subscription-personal-authority-v2.ts +69 -0
- package/src/subscription-plans.ts +51 -0
- package/src/subscription-usage-pool.ts +44 -0
- package/src/task-notes.ts +70 -68
- package/src/tool-action-review.ts +271 -0
- package/src/tool-catalog.ts +694 -379
- package/src/tool-policy.ts +82 -0
- package/src/tool-result-spill.ts +13 -9
- package/src/tool-review-presentation.ts +643 -0
- package/src/turn-serving-policy.ts +167 -0
- package/src/usage-allowances.ts +212 -136
- package/src/values.ts +25 -0
- package/src/vault-provider-wire.ts +580 -0
- package/src/vaults.ts +1296 -0
- package/src/video-generation.ts +430 -361
- package/src/work-claims.ts +183 -166
- package/src/workspace-control-event.ts +134 -0
- package/src/workspace-governance-context.ts +63 -0
- package/src/workspace-instruction-policies.ts +346 -279
- package/src/workspace-integration-wire.ts +10 -0
- package/src/workspace-integrations.ts +488 -398
- package/src/workspace-learning-administration.ts +58 -44
- package/src/workspace-learning-policy.ts +126 -99
- package/src/workspace-state.ts +239 -220
- package/src/xai-provider-account-authority.ts +23 -17
- package/dist/chunk-3SIZGL3O.js.map +0 -1
- package/dist/chunk-566IFOVP.js +0 -26133
- package/dist/chunk-566IFOVP.js.map +0 -1
- package/dist/chunk-5IXYF6XN.js +0 -728
- package/dist/chunk-5IXYF6XN.js.map +0 -1
- package/dist/chunk-5Q54VCCH.js.map +0 -1
- package/dist/chunk-BCS7WHCK.js +0 -139
- package/dist/chunk-BCS7WHCK.js.map +0 -1
- package/dist/chunk-EK7NDGFR.js +0 -128
- package/dist/chunk-EK7NDGFR.js.map +0 -1
- package/dist/chunk-GRG7PHWQ.js +0 -25
- package/dist/chunk-GRG7PHWQ.js.map +0 -1
- package/dist/chunk-HHZSZYYF.js.map +0 -1
- package/dist/chunk-ICDZGUX2.js +0 -186
- package/dist/chunk-ICDZGUX2.js.map +0 -1
- package/dist/chunk-JUFK3T4Q.js +0 -80
- package/dist/chunk-JUFK3T4Q.js.map +0 -1
- package/dist/chunk-MYBZRDTY.js.map +0 -1
- package/dist/chunk-NRMCVHAU.js.map +0 -1
- package/dist/chunk-O77VSFYZ.js.map +0 -1
- package/dist/chunk-P3HLDT77.js +0 -59
- package/dist/chunk-P3HLDT77.js.map +0 -1
- package/dist/chunk-TXTQIYCV.js.map +0 -1
- package/dist/chunk-WYBDERIY.js.map +0 -1
- package/dist/chunk-Y3KNXVTD.js.map +0 -1
- package/dist/chunk-YBW5JSA3.js.map +0 -1
- package/dist/chunk-YRXAWWCU.js +0 -45
- package/dist/chunk-YRXAWWCU.js.map +0 -1
- package/dist/chunk-YWMOIZ6A.js +0 -185
- package/dist/chunk-YWMOIZ6A.js.map +0 -1
- package/dist/site-request-headers.test.d.ts +0 -1
- package/dist/transcription-recordings.d.ts +0 -300
- package/src/transcription-recordings.ts +0 -169
- /package/dist/{chunk-SIOU2K4U.js.map → chunk-LJH2EYGT.js.map} +0 -0
- /package/dist/{chunk-RIY7GYQS.js.map → chunk-PTSROVDG.js.map} +0 -0
- /package/dist/{chunk-YRKRZ6OF.js.map → chunk-TOOJIBJC.js.map} +0 -0
- /package/dist/{chunk-D2HKF2EF.js.map → chunk-XP5M3IKT.js.map} +0 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import {
|
|
2
|
+
string
|
|
3
|
+
} from "./chunk-AQYDZUJV.js";
|
|
4
|
+
import {
|
|
5
|
+
defineSchema
|
|
6
|
+
} from "./chunk-56SNIMDO.js";
|
|
7
|
+
|
|
8
|
+
// src/prepared-mcp-setup.ts
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
var fieldId = /* @__PURE__ */ defineSchema(
|
|
11
|
+
() => string.regex(/^[A-Za-z][A-Za-z0-9_]{0,63}$/)
|
|
12
|
+
);
|
|
13
|
+
var headerName = /* @__PURE__ */ defineSchema(
|
|
14
|
+
() => z.string().min(1).max(256).regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/)
|
|
15
|
+
);
|
|
16
|
+
var headerPart = /* @__PURE__ */ defineSchema(
|
|
17
|
+
() => z.string().max(16384).regex(/^[^\r\n\0]*$/)
|
|
18
|
+
);
|
|
19
|
+
var PreparedMcpSetup = /* @__PURE__ */ defineSchema(
|
|
20
|
+
() => z.object({
|
|
21
|
+
name: string.trim().min(1).max(256),
|
|
22
|
+
endpointUrl: z.string().url().max(2048).refine((value) => {
|
|
23
|
+
try {
|
|
24
|
+
const url = new URL(value);
|
|
25
|
+
return url.protocol === "https:" && !url.username && !url.password && !url.search && !url.hash;
|
|
26
|
+
} catch {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
}, "Use an HTTPS endpoint without credentials, query parameters, or a fragment"),
|
|
30
|
+
headers: z.array(
|
|
31
|
+
z.union([
|
|
32
|
+
z.object({ name: headerName, value: headerPart.min(1) }).strict(),
|
|
33
|
+
z.object({
|
|
34
|
+
name: headerName,
|
|
35
|
+
secret: fieldId,
|
|
36
|
+
prefix: headerPart.optional(),
|
|
37
|
+
suffix: headerPart.optional()
|
|
38
|
+
}).strict()
|
|
39
|
+
])
|
|
40
|
+
).min(1).max(32),
|
|
41
|
+
secretFields: z.array(z.object({ id: fieldId, label: string.trim().min(1).max(256) }).strict()).max(32)
|
|
42
|
+
}).strict().superRefine((value, context) => {
|
|
43
|
+
const names = value.headers.map((header) => header.name.toLowerCase());
|
|
44
|
+
const ids = value.secretFields.map((field) => field.id);
|
|
45
|
+
if (new Set(names).size !== names.length)
|
|
46
|
+
context.addIssue({
|
|
47
|
+
code: "custom",
|
|
48
|
+
path: ["headers"],
|
|
49
|
+
message: "Header names must be unique"
|
|
50
|
+
});
|
|
51
|
+
if (new Set(ids).size !== ids.length)
|
|
52
|
+
context.addIssue({
|
|
53
|
+
code: "custom",
|
|
54
|
+
path: ["secretFields"],
|
|
55
|
+
message: "Secret field IDs must be unique"
|
|
56
|
+
});
|
|
57
|
+
const used = new Set(
|
|
58
|
+
value.headers.flatMap((header) => "secret" in header ? [header.secret] : [])
|
|
59
|
+
);
|
|
60
|
+
if (used.size !== ids.length || ids.some((id) => !used.has(id)))
|
|
61
|
+
context.addIssue({
|
|
62
|
+
code: "custom",
|
|
63
|
+
path: ["secretFields"],
|
|
64
|
+
message: "Declare exactly the secret fields used by the headers"
|
|
65
|
+
});
|
|
66
|
+
for (const [index, header] of value.headers.entries()) {
|
|
67
|
+
if ("value" in header && ["authorization", "proxy-authorization", "cookie", "x-api-key", "api-key"].includes(
|
|
68
|
+
header.name.toLowerCase()
|
|
69
|
+
))
|
|
70
|
+
context.addIssue({
|
|
71
|
+
code: "custom",
|
|
72
|
+
path: ["headers", index],
|
|
73
|
+
message: "Credential headers must reference a protected secret field"
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
})
|
|
77
|
+
);
|
|
78
|
+
var CustomMcpSetupRequest = /* @__PURE__ */ defineSchema(
|
|
79
|
+
() => z.object({
|
|
80
|
+
kind: z.literal("mcp"),
|
|
81
|
+
name: string.trim().min(1).max(256),
|
|
82
|
+
endpointUrl: z.string().url().max(2048).refine((value) => {
|
|
83
|
+
try {
|
|
84
|
+
const url = new URL(value);
|
|
85
|
+
return url.protocol === "https:" && !url.username && !url.password && !url.hash && !url.search;
|
|
86
|
+
} catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
}),
|
|
90
|
+
rationale: string.trim().min(1).max(2e3),
|
|
91
|
+
ownership: z.enum(["personal", "workspace"]).optional(),
|
|
92
|
+
mcpSetup: PreparedMcpSetup.optional()
|
|
93
|
+
}).strict().superRefine((value, context) => {
|
|
94
|
+
if (Boolean(value.ownership) !== Boolean(value.mcpSetup))
|
|
95
|
+
context.addIssue({ code: "custom", message: "Prepared setup requires explicit ownership" });
|
|
96
|
+
if (value.mcpSetup && (value.name !== value.mcpSetup.name || value.endpointUrl !== value.mcpSetup.endpointUrl))
|
|
97
|
+
context.addIssue({
|
|
98
|
+
code: "custom",
|
|
99
|
+
message: "Prepared setup must match the displayed server"
|
|
100
|
+
});
|
|
101
|
+
})
|
|
102
|
+
);
|
|
103
|
+
function preparedMcpHeaders(configuration, values) {
|
|
104
|
+
const setup = PreparedMcpSetup.parse(configuration);
|
|
105
|
+
const supplied = Object.keys(values);
|
|
106
|
+
if (supplied.length !== setup.secretFields.length || setup.secretFields.some((field) => !Object.hasOwn(values, field.id)) || supplied.some((key) => {
|
|
107
|
+
const value = values[key];
|
|
108
|
+
return typeof value !== "string" || value.length === 0 || value.length > 16384 || /[\r\n\0]/.test(value);
|
|
109
|
+
}))
|
|
110
|
+
throw new Error("Supply exactly the requested secret fields");
|
|
111
|
+
const headers = {};
|
|
112
|
+
for (const header of setup.headers) {
|
|
113
|
+
const value = "value" in header ? header.value : `${header.prefix ?? ""}${values[header.secret]}${header.suffix ?? ""}`;
|
|
114
|
+
if (value.length > 16384) throw new Error("Prepared credential header is too long");
|
|
115
|
+
Object.defineProperty(headers, header.name, {
|
|
116
|
+
value,
|
|
117
|
+
enumerable: true,
|
|
118
|
+
configurable: true,
|
|
119
|
+
writable: true
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return headers;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export {
|
|
126
|
+
PreparedMcpSetup,
|
|
127
|
+
CustomMcpSetupRequest,
|
|
128
|
+
preparedMcpHeaders
|
|
129
|
+
};
|
|
130
|
+
//# sourceMappingURL=chunk-6LAT33BH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/prepared-mcp-setup.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\nimport { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nconst fieldId = /* @__PURE__ */ defineSchema(() =>\n primitives.string.regex(/^[A-Za-z][A-Za-z0-9_]{0,63}$/),\n);\nconst headerName = /* @__PURE__ */ defineSchema(() =>\n z\n .string()\n .min(1)\n .max(256)\n .regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/),\n);\nconst headerPart = /* @__PURE__ */ defineSchema(() =>\n z\n .string()\n .max(16_384)\n .regex(/^[^\\r\\n\\0]*$/),\n);\n\n/** Configuration is safe to retain; secret values enter only the protected\n * Connect credential request, never this model-visible setup description. */\nexport const PreparedMcpSetup = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n name: primitives.string.trim().min(1).max(256),\n endpointUrl: z\n .string()\n .url()\n .max(2048)\n .refine((value) => {\n try {\n const url = new URL(value);\n return (\n url.protocol === \"https:\" &&\n !url.username &&\n !url.password &&\n !url.search &&\n !url.hash\n );\n } catch {\n return false;\n }\n }, \"Use an HTTPS endpoint without credentials, query parameters, or a fragment\"),\n headers: z\n .array(\n z.union([\n z.object({ name: headerName, value: headerPart.min(1) }).strict(),\n z\n .object({\n name: headerName,\n secret: fieldId,\n prefix: headerPart.optional(),\n suffix: headerPart.optional(),\n })\n .strict(),\n ]),\n )\n .min(1)\n .max(32),\n secretFields: z\n .array(z.object({ id: fieldId, label: primitives.string.trim().min(1).max(256) }).strict())\n .max(32),\n })\n .strict()\n .superRefine((value, context) => {\n const names = value.headers.map((header) => header.name.toLowerCase());\n const ids = value.secretFields.map((field) => field.id);\n if (new Set(names).size !== names.length)\n context.addIssue({\n code: \"custom\",\n path: [\"headers\"],\n message: \"Header names must be unique\",\n });\n if (new Set(ids).size !== ids.length)\n context.addIssue({\n code: \"custom\",\n path: [\"secretFields\"],\n message: \"Secret field IDs must be unique\",\n });\n const used = new Set(\n value.headers.flatMap((header) => (\"secret\" in header ? [header.secret] : [])),\n );\n if (used.size !== ids.length || ids.some((id) => !used.has(id)))\n context.addIssue({\n code: \"custom\",\n path: [\"secretFields\"],\n message: \"Declare exactly the secret fields used by the headers\",\n });\n for (const [index, header] of value.headers.entries()) {\n if (\n \"value\" in header &&\n [\"authorization\", \"proxy-authorization\", \"cookie\", \"x-api-key\", \"api-key\"].includes(\n header.name.toLowerCase(),\n )\n )\n context.addIssue({\n code: \"custom\",\n path: [\"headers\", index],\n message: \"Credential headers must reference a protected secret field\",\n });\n }\n }),\n);\nexport type PreparedMcpSetup = z.infer<typeof PreparedMcpSetup>;\n\n/** A missing-key proposal retains configuration only. Ownership is explicit\n * and the displayed identity must equal the destination actually configured. */\nexport const CustomMcpSetupRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n kind: z.literal(\"mcp\"),\n name: primitives.string.trim().min(1).max(256),\n endpointUrl: z\n .string()\n .url()\n .max(2048)\n .refine((value) => {\n try {\n const url = new URL(value);\n return (\n url.protocol === \"https:\" &&\n !url.username &&\n !url.password &&\n !url.hash &&\n !url.search\n );\n } catch {\n return false;\n }\n }),\n rationale: primitives.string.trim().min(1).max(2000),\n ownership: z.enum([\"personal\", \"workspace\"]).optional(),\n mcpSetup: PreparedMcpSetup.optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (Boolean(value.ownership) !== Boolean(value.mcpSetup))\n context.addIssue({ code: \"custom\", message: \"Prepared setup requires explicit ownership\" });\n if (\n value.mcpSetup &&\n (value.name !== value.mcpSetup.name || value.endpointUrl !== value.mcpSetup.endpointUrl)\n )\n context.addIssue({\n code: \"custom\",\n message: \"Prepared setup must match the displayed server\",\n });\n }),\n);\nexport type CustomMcpSetupRequest = z.infer<typeof CustomMcpSetupRequest>;\n\n/** Values are intentionally accepted separately. Errors name neither supplied\n * values nor undeclared input keys, which may themselves contain credentials. */\nexport function preparedMcpHeaders(\n configuration: PreparedMcpSetup,\n values: Readonly<Record<string, string>>,\n): Record<string, string> {\n const setup = PreparedMcpSetup.parse(configuration);\n const supplied = Object.keys(values);\n if (\n supplied.length !== setup.secretFields.length ||\n setup.secretFields.some((field) => !Object.hasOwn(values, field.id)) ||\n supplied.some((key) => {\n const value = values[key];\n return (\n typeof value !== \"string\" ||\n value.length === 0 ||\n value.length > 16_384 ||\n /[\\r\\n\\0]/.test(value)\n );\n })\n )\n throw new Error(\"Supply exactly the requested secret fields\");\n const headers: Record<string, string> = {};\n for (const header of setup.headers) {\n const value =\n \"value\" in header\n ? header.value\n : `${header.prefix ?? \"\"}${values[header.secret]}${header.suffix ?? \"\"}`;\n if (value.length > 16_384) throw new Error(\"Prepared credential header is too long\");\n Object.defineProperty(headers, header.name, {\n value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n }\n return headers;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// src/session-usage-limit-refusal.ts
|
|
2
|
+
var SESSION_USAGE_LIMIT_SEGMENT = "session_usage_limit";
|
|
3
|
+
var SESSION_USAGE_LIMIT_GOAL_PAUSED_REASON = "session_usage_limit";
|
|
4
|
+
var BASIS = "model_api_equivalent_v1";
|
|
5
|
+
var MAX_LIMIT_MICROS = 1e7 * 1e6;
|
|
6
|
+
var MESSAGE_MAX_UTF8_BYTES = 1024;
|
|
7
|
+
var UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
8
|
+
function record(value) {
|
|
9
|
+
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
10
|
+
}
|
|
11
|
+
function micros(value, max = Number.MAX_SAFE_INTEGER) {
|
|
12
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 && value <= max;
|
|
13
|
+
}
|
|
14
|
+
function boundedMessage(value) {
|
|
15
|
+
const normalized = value.slice(0, MESSAGE_MAX_UTF8_BYTES * 2).replace(/[\u0000-\u001f\u007f]+/g, " ").trim();
|
|
16
|
+
const bytes = new TextEncoder().encode(normalized);
|
|
17
|
+
let end = Math.min(bytes.length, MESSAGE_MAX_UTF8_BYTES);
|
|
18
|
+
while (end > 0 && end < bytes.length && (bytes[end] & 192) === 128) end -= 1;
|
|
19
|
+
return new TextDecoder().decode(bytes.slice(0, end)).trim();
|
|
20
|
+
}
|
|
21
|
+
function parseSessionUsageLimitReachedRefusal(value) {
|
|
22
|
+
const outer = record(value);
|
|
23
|
+
if (!outer) return null;
|
|
24
|
+
const source = record(outer.sessionUsageLimit) ?? outer;
|
|
25
|
+
if (source.code !== "session_usage_limit_reached") return null;
|
|
26
|
+
const fields = record(source.details) ?? source;
|
|
27
|
+
if (fields.basis !== BASIS || typeof fields.rootSessionId !== "string" || !UUID.test(fields.rootSessionId) || !micros(fields.limitMicros, MAX_LIMIT_MICROS) || !micros(fields.usedMicros)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
const refusal = {
|
|
31
|
+
code: "session_usage_limit_reached",
|
|
32
|
+
basis: BASIS,
|
|
33
|
+
rootSessionId: fields.rootSessionId.toLowerCase(),
|
|
34
|
+
limitMicros: fields.limitMicros,
|
|
35
|
+
usedMicros: fields.usedMicros,
|
|
36
|
+
message: ""
|
|
37
|
+
};
|
|
38
|
+
const message = typeof source.message === "string" ? boundedMessage(source.message) : "";
|
|
39
|
+
return { ...refusal, message: message || sessionUsageLimitReachedMessage(refusal) };
|
|
40
|
+
}
|
|
41
|
+
function formatSessionUsageMicros(value) {
|
|
42
|
+
if (value > 0 && value < 1e4) return "<$0.01";
|
|
43
|
+
const dollars = value / 1e6;
|
|
44
|
+
return `$${dollars.toLocaleString("en-US", {
|
|
45
|
+
minimumFractionDigits: 2,
|
|
46
|
+
maximumFractionDigits: 2
|
|
47
|
+
})}`;
|
|
48
|
+
}
|
|
49
|
+
function sessionUsageLimitReachedMessage(refusal) {
|
|
50
|
+
return `This task's usage limit is reached (${formatSessionUsageMicros(refusal.usedMicros)} of ${formatSessionUsageMicros(refusal.limitMicros)} API-equivalent model usage). A person can raise or remove the limit to continue.`;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export {
|
|
54
|
+
SESSION_USAGE_LIMIT_SEGMENT,
|
|
55
|
+
SESSION_USAGE_LIMIT_GOAL_PAUSED_REASON,
|
|
56
|
+
parseSessionUsageLimitReachedRefusal,
|
|
57
|
+
formatSessionUsageMicros,
|
|
58
|
+
sessionUsageLimitReachedMessage
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=chunk-7272KVWZ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/session-usage-limit-refusal.ts"],"sourcesContent":["/**\n * Browser/React Native-safe session usage limit helpers. Deliberately free of\n * the zod runtime so synchronous timeline projection can use it; contract\n * parity tests keep it aligned with `session-usage-limits.ts`.\n */\n\n/** `turn.completed.segmentLimit` for a stop caused by a task usage limit. */\nexport const SESSION_USAGE_LIMIT_SEGMENT = \"session_usage_limit\" as const;\n/** `SessionGoal.pausedReason` for a goal paused by a task usage limit. */\nexport const SESSION_USAGE_LIMIT_GOAL_PAUSED_REASON = \"session_usage_limit\" as const;\n\nconst BASIS = \"model_api_equivalent_v1\";\nconst MAX_LIMIT_MICROS = 10_000_000 * 1_000_000;\nconst MESSAGE_MAX_UTF8_BYTES = 1_024;\nconst UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nexport type ParsedSessionUsageLimitReachedRefusal = {\n code: \"session_usage_limit_reached\";\n basis: \"model_api_equivalent_v1\";\n rootSessionId: string;\n limitMicros: number;\n usedMicros: number;\n message: string;\n};\n\nfunction record(value: unknown): Record<string, unknown> | null {\n return value !== null && typeof value === \"object\" && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : null;\n}\n\nfunction micros(value: unknown, max = Number.MAX_SAFE_INTEGER): value is number {\n return typeof value === \"number\" && Number.isSafeInteger(value) && value >= 0 && value <= max;\n}\n\nfunction boundedMessage(value: string): string {\n const normalized = value\n .slice(0, MESSAGE_MAX_UTF8_BYTES * 2)\n .replace(/[\\u0000-\\u001f\\u007f]+/g, \" \")\n .trim();\n const bytes = new TextEncoder().encode(normalized);\n let end = Math.min(bytes.length, MESSAGE_MAX_UTF8_BYTES);\n while (end > 0 && end < bytes.length && (bytes[end]! & 0xc0) === 0x80) end -= 1;\n return new TextDecoder().decode(bytes.slice(0, end)).trim();\n}\n\n/**\n * Select only the public refusal fields from an API error body (fields may sit\n * in `details`), a `turn.completed` payload's `sessionUsageLimit` record, or a\n * refusal object. Anything malformed returns null instead of a guessed amount.\n */\nexport function parseSessionUsageLimitReachedRefusal(\n value: unknown,\n): ParsedSessionUsageLimitReachedRefusal | null {\n const outer = record(value);\n if (!outer) return null;\n const source = record(outer.sessionUsageLimit) ?? outer;\n if (source.code !== \"session_usage_limit_reached\") return null;\n const fields = record(source.details) ?? source;\n if (\n fields.basis !== BASIS ||\n typeof fields.rootSessionId !== \"string\" ||\n !UUID.test(fields.rootSessionId) ||\n !micros(fields.limitMicros, MAX_LIMIT_MICROS) ||\n !micros(fields.usedMicros)\n ) {\n return null;\n }\n const refusal = {\n code: \"session_usage_limit_reached\" as const,\n basis: BASIS as \"model_api_equivalent_v1\",\n rootSessionId: fields.rootSessionId.toLowerCase(),\n limitMicros: fields.limitMicros,\n usedMicros: fields.usedMicros,\n message: \"\",\n };\n const message = typeof source.message === \"string\" ? boundedMessage(source.message) : \"\";\n return { ...refusal, message: message || sessionUsageLimitReachedMessage(refusal) };\n}\n\n/**\n * \"$12.34\" for known amounts, \"<$0.01\" for a positive amount under a cent.\n * Callers must not pass unknown usage: render \"Preparing usage\" or\n * \"Usage unavailable\" instead of a dollar figure.\n */\nexport function formatSessionUsageMicros(value: number): string {\n if (value > 0 && value < 10_000) return \"<$0.01\";\n const dollars = value / 1_000_000;\n return `$${dollars.toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n })}`;\n}\n\n/** Fixed, bounded wording: no reset date, purchase remedy or invoice claim. */\nexport function sessionUsageLimitReachedMessage(refusal: {\n limitMicros: number;\n usedMicros: number;\n}): string {\n return `This task's usage limit is reached (${formatSessionUsageMicros(refusal.usedMicros)} of ${formatSessionUsageMicros(refusal.limitMicros)} API-equivalent model usage). A person can raise or remove the limit to continue.`;\n}\n"],"mappings":";AAOO,IAAM,8BAA8B;AAEpC,IAAM,yCAAyC;AAEtD,IAAM,QAAQ;AACd,IAAM,mBAAmB,MAAa;AACtC,IAAM,yBAAyB;AAC/B,IAAM,OAAO;AAWb,SAAS,OAAO,OAAgD;AAC9D,SAAO,UAAU,QAAQ,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,IACrE,QACD;AACN;AAEA,SAAS,OAAO,OAAgB,MAAM,OAAO,kBAAmC;AAC9E,SAAO,OAAO,UAAU,YAAY,OAAO,cAAc,KAAK,KAAK,SAAS,KAAK,SAAS;AAC5F;AAEA,SAAS,eAAe,OAAuB;AAC7C,QAAM,aAAa,MAChB,MAAM,GAAG,yBAAyB,CAAC,EACnC,QAAQ,2BAA2B,GAAG,EACtC,KAAK;AACR,QAAM,QAAQ,IAAI,YAAY,EAAE,OAAO,UAAU;AACjD,MAAI,MAAM,KAAK,IAAI,MAAM,QAAQ,sBAAsB;AACvD,SAAO,MAAM,KAAK,MAAM,MAAM,WAAW,MAAM,GAAG,IAAK,SAAU,IAAM,QAAO;AAC9E,SAAO,IAAI,YAAY,EAAE,OAAO,MAAM,MAAM,GAAG,GAAG,CAAC,EAAE,KAAK;AAC5D;AAOO,SAAS,qCACd,OAC8C;AAC9C,QAAM,QAAQ,OAAO,KAAK;AAC1B,MAAI,CAAC,MAAO,QAAO;AACnB,QAAM,SAAS,OAAO,MAAM,iBAAiB,KAAK;AAClD,MAAI,OAAO,SAAS,8BAA+B,QAAO;AAC1D,QAAM,SAAS,OAAO,OAAO,OAAO,KAAK;AACzC,MACE,OAAO,UAAU,SACjB,OAAO,OAAO,kBAAkB,YAChC,CAAC,KAAK,KAAK,OAAO,aAAa,KAC/B,CAAC,OAAO,OAAO,aAAa,gBAAgB,KAC5C,CAAC,OAAO,OAAO,UAAU,GACzB;AACA,WAAO;AAAA,EACT;AACA,QAAM,UAAU;AAAA,IACd,MAAM;AAAA,IACN,OAAO;AAAA,IACP,eAAe,OAAO,cAAc,YAAY;AAAA,IAChD,aAAa,OAAO;AAAA,IACpB,YAAY,OAAO;AAAA,IACnB,SAAS;AAAA,EACX;AACA,QAAM,UAAU,OAAO,OAAO,YAAY,WAAW,eAAe,OAAO,OAAO,IAAI;AACtF,SAAO,EAAE,GAAG,SAAS,SAAS,WAAW,gCAAgC,OAAO,EAAE;AACpF;AAOO,SAAS,yBAAyB,OAAuB;AAC9D,MAAI,QAAQ,KAAK,QAAQ,IAAQ,QAAO;AACxC,QAAM,UAAU,QAAQ;AACxB,SAAO,IAAI,QAAQ,eAAe,SAAS;AAAA,IACzC,uBAAuB;AAAA,IACvB,uBAAuB;AAAA,EACzB,CAAC,CAAC;AACJ;AAGO,SAAS,gCAAgC,SAGrC;AACT,SAAO,uCAAuC,yBAAyB,QAAQ,UAAU,CAAC,OAAO,yBAAyB,QAAQ,WAAW,CAAC;AAChJ;","names":[]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import {
|
|
2
|
+
positiveInteger
|
|
3
|
+
} from "./chunk-AQYDZUJV.js";
|
|
4
|
+
import {
|
|
5
|
+
defineSchema
|
|
6
|
+
} from "./chunk-56SNIMDO.js";
|
|
7
|
+
|
|
8
|
+
// src/xai-provider-account-authority.ts
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
var PositiveSafeInteger = /* @__PURE__ */ defineSchema(
|
|
11
|
+
() => positiveInteger.max(Number.MAX_SAFE_INTEGER)
|
|
12
|
+
);
|
|
13
|
+
var XaiProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(
|
|
14
|
+
() => z.discriminatedUnion("scope", [
|
|
15
|
+
z.object({ version: z.literal(1), scope: z.literal("organization") }).strict(),
|
|
16
|
+
z.object({
|
|
17
|
+
version: z.literal(1),
|
|
18
|
+
scope: z.literal("workspace")
|
|
19
|
+
}).strict(),
|
|
20
|
+
z.object({
|
|
21
|
+
version: z.literal(1),
|
|
22
|
+
scope: z.literal("user"),
|
|
23
|
+
authorityGeneration: PositiveSafeInteger
|
|
24
|
+
}).strict()
|
|
25
|
+
])
|
|
26
|
+
);
|
|
27
|
+
var WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {
|
|
28
|
+
version: 1,
|
|
29
|
+
scope: "workspace"
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
export {
|
|
33
|
+
XaiProviderAccountAuthoritySnapshotV1,
|
|
34
|
+
WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1
|
|
35
|
+
};
|
|
36
|
+
//# sourceMappingURL=chunk-72QC2GTL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider-account-authority.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\nimport { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nconst PositiveSafeInteger = /* @__PURE__ */ defineSchema(() =>\n primitives.positiveInteger.max(Number.MAX_SAFE_INTEGER),\n);\n\n/**\n * Opaque authority frozen at an xAI provider-account acceptance boundary.\n *\n * This snapshot deliberately carries no organization, membership, credential,\n * provider-account, subject, label, quota, token, or plan identity. User scope\n * becomes executable only after exact live database revalidation against the\n * separately stored causal subject and xAI subscription authority row.\n */\nexport const XaiProviderAccountAuthoritySnapshotV1 = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"scope\", [\n z.object({ version: z.literal(1), scope: z.literal(\"organization\") }).strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"workspace\"),\n })\n .strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"user\"),\n authorityGeneration: PositiveSafeInteger,\n })\n .strict(),\n ]),\n);\n\nexport type XaiProviderAccountAuthoritySnapshotV1 = z.infer<\n typeof XaiProviderAccountAuthoritySnapshotV1\n>;\n\n/** Explicit compatibility value for workspace-default accepted work. */\nexport const WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {\n version: 1,\n scope: \"workspace\",\n} as const satisfies XaiProviderAccountAuthoritySnapshotV1;\n"],"mappings":";;;;;;;;AAEA,SAAS,SAAS;AAElB,IAAM,sBAAsC;AAAA,EAAa,MAC5C,gBAAgB,IAAI,OAAO,gBAAgB;AACxD;AAUO,IAAM,wCAAwD;AAAA,EAAa,MAChF,EAAE,mBAAmB,SAAS;AAAA,IAC5B,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO;AAAA,IAC7E,EACG,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,CAAC;AAAA,MACpB,OAAO,EAAE,QAAQ,WAAW;AAAA,IAC9B,CAAC,EACA,OAAO;AAAA,IACV,EACG,OAAO;AAAA,MACN,SAAS,EAAE,QAAQ,CAAC;AAAA,MACpB,OAAO,EAAE,QAAQ,MAAM;AAAA,MACvB,qBAAqB;AAAA,IACvB,CAAC,EACA,OAAO;AAAA,EACZ,CAAC;AACH;AAOO,IAAM,uDAAuD;AAAA,EAClE,SAAS;AAAA,EACT,OAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import {
|
|
2
|
+
boolean,
|
|
3
|
+
dateTime,
|
|
4
|
+
nonnegativeInteger,
|
|
5
|
+
nullableString,
|
|
6
|
+
nullableUuid,
|
|
7
|
+
optionalUuid,
|
|
8
|
+
string,
|
|
9
|
+
uuid
|
|
10
|
+
} from "./chunk-AQYDZUJV.js";
|
|
11
|
+
import {
|
|
12
|
+
defineSchema
|
|
13
|
+
} from "./chunk-56SNIMDO.js";
|
|
14
|
+
|
|
15
|
+
// src/organization-usage.ts
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
var OrganizationUsagePeriod = /* @__PURE__ */ defineSchema(
|
|
18
|
+
() => z.enum(["today", "week", "month", "ytd"])
|
|
19
|
+
);
|
|
20
|
+
var OrganizationUsageQuery = /* @__PURE__ */ defineSchema(
|
|
21
|
+
() => z.object({
|
|
22
|
+
period: OrganizationUsagePeriod.default("month")
|
|
23
|
+
})
|
|
24
|
+
);
|
|
25
|
+
var OrganizationUsageWorkspacePageQuery = /* @__PURE__ */ defineSchema(
|
|
26
|
+
() => OrganizationUsageQuery.extend({
|
|
27
|
+
until: dateTime,
|
|
28
|
+
afterWorkspaceId: optionalUuid
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
var OrganizationUsageTotal = /* @__PURE__ */ defineSchema(
|
|
32
|
+
() => z.object({
|
|
33
|
+
eventType: string,
|
|
34
|
+
unit: string,
|
|
35
|
+
quantity: string.regex(/^-?\d+$/),
|
|
36
|
+
eventCount: string.regex(/^\d+$/)
|
|
37
|
+
})
|
|
38
|
+
);
|
|
39
|
+
var OrganizationUsagePersonalWorkspace = /* @__PURE__ */ defineSchema(
|
|
40
|
+
() => z.object({
|
|
41
|
+
membershipId: uuid,
|
|
42
|
+
totals: z.array(OrganizationUsageTotal)
|
|
43
|
+
})
|
|
44
|
+
);
|
|
45
|
+
var OrganizationUsageSummary = /* @__PURE__ */ defineSchema(
|
|
46
|
+
() => z.object({
|
|
47
|
+
accountId: uuid,
|
|
48
|
+
period: OrganizationUsagePeriod,
|
|
49
|
+
since: dateTime,
|
|
50
|
+
until: dateTime,
|
|
51
|
+
granularity: z.enum(["hour", "day"]),
|
|
52
|
+
totals: z.array(OrganizationUsageTotal),
|
|
53
|
+
buckets: z.array(
|
|
54
|
+
z.object({ bucket: string, totals: z.array(OrganizationUsageTotal) })
|
|
55
|
+
),
|
|
56
|
+
workspaces: z.array(
|
|
57
|
+
z.object({
|
|
58
|
+
workspaceId: uuid,
|
|
59
|
+
name: nullableString,
|
|
60
|
+
totals: z.array(OrganizationUsageTotal)
|
|
61
|
+
})
|
|
62
|
+
).max(50),
|
|
63
|
+
nextWorkspaceCursor: nullableUuid,
|
|
64
|
+
/**
|
|
65
|
+
* Usage in each member's Personal workspace, keyed by the owner's
|
|
66
|
+
* organization membership: amounts only, never the workspace's id, name or
|
|
67
|
+
* content. Only Personal workspaces with usage in the period, the 50 that
|
|
68
|
+
* spent the most. Absent before migration 0543, hence the defaults.
|
|
69
|
+
*/
|
|
70
|
+
personalWorkspaces: z.array(OrganizationUsagePersonalWorkspace).max(50).default([]),
|
|
71
|
+
/** How many Personal workspaces had usage in the period, listed or not. */
|
|
72
|
+
personalWorkspaceCount: nonnegativeInteger.default(0),
|
|
73
|
+
/** Other people's Only-me chats in shared workspaces: member amounts only. */
|
|
74
|
+
privateChats: z.array(
|
|
75
|
+
z.object({
|
|
76
|
+
workspaceId: uuid,
|
|
77
|
+
membershipId: nullableUuid,
|
|
78
|
+
name: nullableString,
|
|
79
|
+
totals: z.array(OrganizationUsageTotal)
|
|
80
|
+
})
|
|
81
|
+
).default([]),
|
|
82
|
+
privateChatsTruncated: boolean.default(false)
|
|
83
|
+
})
|
|
84
|
+
);
|
|
85
|
+
var OrganizationUsageWorkspacePage = /* @__PURE__ */ defineSchema(
|
|
86
|
+
() => OrganizationUsageSummary.omit({
|
|
87
|
+
totals: true,
|
|
88
|
+
buckets: true,
|
|
89
|
+
personalWorkspaces: true,
|
|
90
|
+
personalWorkspaceCount: true,
|
|
91
|
+
privateChats: true,
|
|
92
|
+
privateChatsTruncated: true
|
|
93
|
+
})
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
export {
|
|
97
|
+
OrganizationUsagePeriod,
|
|
98
|
+
OrganizationUsageQuery,
|
|
99
|
+
OrganizationUsageWorkspacePageQuery,
|
|
100
|
+
OrganizationUsageTotal,
|
|
101
|
+
OrganizationUsagePersonalWorkspace,
|
|
102
|
+
OrganizationUsageSummary,
|
|
103
|
+
OrganizationUsageWorkspacePage
|
|
104
|
+
};
|
|
105
|
+
//# sourceMappingURL=chunk-7EQGGZBY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/organization-usage.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\nimport { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nexport const OrganizationUsagePeriod = /* @__PURE__ */ defineSchema(() =>\n z.enum([\"today\", \"week\", \"month\", \"ytd\"]),\n);\nexport type OrganizationUsagePeriod = z.infer<typeof OrganizationUsagePeriod>;\nexport const OrganizationUsageQuery = /* @__PURE__ */ defineSchema(() =>\n z.object({\n period: OrganizationUsagePeriod.default(\"month\"),\n }),\n);\nexport const OrganizationUsageWorkspacePageQuery = /* @__PURE__ */ defineSchema(() =>\n OrganizationUsageQuery.extend({\n until: primitives.dateTime,\n afterWorkspaceId: primitives.optionalUuid,\n }),\n);\n// PostgreSQL SUM(bigint) must never pass through a JavaScript number.\nexport const OrganizationUsageTotal = /* @__PURE__ */ defineSchema(() =>\n z.object({\n eventType: primitives.string,\n unit: primitives.string,\n quantity: primitives.string.regex(/^-?\\d+$/),\n eventCount: primitives.string.regex(/^\\d+$/),\n }),\n);\n/** One member's Personal workspace, as usage only. */\nexport const OrganizationUsagePersonalWorkspace = /* @__PURE__ */ defineSchema(() =>\n z.object({\n membershipId: primitives.uuid,\n totals: z.array(OrganizationUsageTotal),\n }),\n);\nexport type OrganizationUsagePersonalWorkspace = z.infer<typeof OrganizationUsagePersonalWorkspace>;\nexport const OrganizationUsageSummary = /* @__PURE__ */ defineSchema(() =>\n z.object({\n accountId: primitives.uuid,\n period: OrganizationUsagePeriod,\n since: primitives.dateTime,\n until: primitives.dateTime,\n granularity: z.enum([\"hour\", \"day\"]),\n totals: z.array(OrganizationUsageTotal),\n buckets: z.array(\n z.object({ bucket: primitives.string, totals: z.array(OrganizationUsageTotal) }),\n ),\n workspaces: z\n .array(\n z.object({\n workspaceId: primitives.uuid,\n name: primitives.nullableString,\n totals: z.array(OrganizationUsageTotal),\n }),\n )\n .max(50),\n nextWorkspaceCursor: primitives.nullableUuid,\n /**\n * Usage in each member's Personal workspace, keyed by the owner's\n * organization membership: amounts only, never the workspace's id, name or\n * content. Only Personal workspaces with usage in the period, the 50 that\n * spent the most. Absent before migration 0543, hence the defaults.\n */\n personalWorkspaces: z.array(OrganizationUsagePersonalWorkspace).max(50).default([]),\n /** How many Personal workspaces had usage in the period, listed or not. */\n personalWorkspaceCount: primitives.nonnegativeInteger.default(0),\n /** Other people's Only-me chats in shared workspaces: member amounts only. */\n privateChats: z\n .array(\n z.object({\n workspaceId: primitives.uuid,\n membershipId: primitives.nullableUuid,\n name: primitives.nullableString,\n totals: z.array(OrganizationUsageTotal),\n }),\n )\n .default([]),\n privateChatsTruncated: primitives.boolean.default(false),\n }),\n);\nexport type OrganizationUsageSummary = z.infer<typeof OrganizationUsageSummary>;\n\n/**\n * A page deliberately excludes totals, charts and Personal rows: those are not\n * recomputed. Pages continue the shared workspaces only.\n */\nexport const OrganizationUsageWorkspacePage = /* @__PURE__ */ defineSchema(() =>\n OrganizationUsageSummary.omit({\n totals: true,\n buckets: true,\n personalWorkspaces: true,\n personalWorkspaceCount: true,\n privateChats: true,\n privateChatsTruncated: true,\n }),\n);\nexport type OrganizationUsageWorkspacePage = z.infer<typeof OrganizationUsageWorkspacePage>;\n"],"mappings":";;;;;;;;;;;;;;;AAEA,SAAS,SAAS;AAEX,IAAM,0BAA0C;AAAA,EAAa,MAClE,EAAE,KAAK,CAAC,SAAS,QAAQ,SAAS,KAAK,CAAC;AAC1C;AAEO,IAAM,yBAAyC;AAAA,EAAa,MACjE,EAAE,OAAO;AAAA,IACP,QAAQ,wBAAwB,QAAQ,OAAO;AAAA,EACjD,CAAC;AACH;AACO,IAAM,sCAAsD;AAAA,EAAa,MAC9E,uBAAuB,OAAO;AAAA,IAC5B,OAAkB;AAAA,IAClB,kBAA6B;AAAA,EAC/B,CAAC;AACH;AAEO,IAAM,yBAAyC;AAAA,EAAa,MACjE,EAAE,OAAO;AAAA,IACP,WAAsB;AAAA,IACtB,MAAiB;AAAA,IACjB,UAAqB,OAAO,MAAM,SAAS;AAAA,IAC3C,YAAuB,OAAO,MAAM,OAAO;AAAA,EAC7C,CAAC;AACH;AAEO,IAAM,qCAAqD;AAAA,EAAa,MAC7E,EAAE,OAAO;AAAA,IACP,cAAyB;AAAA,IACzB,QAAQ,EAAE,MAAM,sBAAsB;AAAA,EACxC,CAAC;AACH;AAEO,IAAM,2BAA2C;AAAA,EAAa,MACnE,EAAE,OAAO;AAAA,IACP,WAAsB;AAAA,IACtB,QAAQ;AAAA,IACR,OAAkB;AAAA,IAClB,OAAkB;AAAA,IAClB,aAAa,EAAE,KAAK,CAAC,QAAQ,KAAK,CAAC;AAAA,IACnC,QAAQ,EAAE,MAAM,sBAAsB;AAAA,IACtC,SAAS,EAAE;AAAA,MACT,EAAE,OAAO,EAAE,QAAmB,QAAQ,QAAQ,EAAE,MAAM,sBAAsB,EAAE,CAAC;AAAA,IACjF;AAAA,IACA,YAAY,EACT;AAAA,MACC,EAAE,OAAO;AAAA,QACP,aAAwB;AAAA,QACxB,MAAiB;AAAA,QACjB,QAAQ,EAAE,MAAM,sBAAsB;AAAA,MACxC,CAAC;AAAA,IACH,EACC,IAAI,EAAE;AAAA,IACT,qBAAgC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOhC,oBAAoB,EAAE,MAAM,kCAAkC,EAAE,IAAI,EAAE,EAAE,QAAQ,CAAC,CAAC;AAAA;AAAA,IAElF,wBAAmC,mBAAmB,QAAQ,CAAC;AAAA;AAAA,IAE/D,cAAc,EACX;AAAA,MACC,EAAE,OAAO;AAAA,QACP,aAAwB;AAAA,QACxB,cAAyB;AAAA,QACzB,MAAiB;AAAA,QACjB,QAAQ,EAAE,MAAM,sBAAsB;AAAA,MACxC,CAAC;AAAA,IACH,EACC,QAAQ,CAAC,CAAC;AAAA,IACb,uBAAkC,QAAQ,QAAQ,KAAK;AAAA,EACzD,CAAC;AACH;AAOO,IAAM,iCAAiD;AAAA,EAAa,MACzE,yBAAyB,KAAK;AAAA,IAC5B,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,oBAAoB;AAAA,IACpB,wBAAwB;AAAA,IACxB,cAAc;AAAA,IACd,uBAAuB;AAAA,EACzB,CAAC;AACH;","names":[]}
|