@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,426 @@
|
|
|
1
|
+
import {
|
|
2
|
+
VAULT_LIMITS,
|
|
3
|
+
VaultFieldKind,
|
|
4
|
+
VaultItemCategory,
|
|
5
|
+
VaultItemType,
|
|
6
|
+
VaultProviderOperations,
|
|
7
|
+
isReservedVaultFieldName,
|
|
8
|
+
isValidSecretName
|
|
9
|
+
} from "./chunk-G4RKARXZ.js";
|
|
10
|
+
import {
|
|
11
|
+
boolean,
|
|
12
|
+
dateTime,
|
|
13
|
+
nonEmptyString,
|
|
14
|
+
string,
|
|
15
|
+
uuid
|
|
16
|
+
} from "./chunk-AQYDZUJV.js";
|
|
17
|
+
import {
|
|
18
|
+
defineSchema
|
|
19
|
+
} from "./chunk-56SNIMDO.js";
|
|
20
|
+
|
|
21
|
+
// src/vault-provider-wire.ts
|
|
22
|
+
import { z } from "zod";
|
|
23
|
+
var VAULT_PROVIDER_WIRE_VERSION = "opengeni.vault.v1";
|
|
24
|
+
var VAULT_PROVIDER_WIRE_RESPONSE_SIGNATURE_HEADER = "OpenGeni-Vault-Response-Signature";
|
|
25
|
+
function vaultProviderWireResponseKey(signingSecret) {
|
|
26
|
+
return `${signingSecret}\0${VAULT_PROVIDER_WIRE_VERSION}.response`;
|
|
27
|
+
}
|
|
28
|
+
var VAULT_PROVIDER_WIRE_LIMITS = {
|
|
29
|
+
maxRequestBytes: 4 * 1024 * 1024,
|
|
30
|
+
maxResponseBytes: 4 * 1024 * 1024,
|
|
31
|
+
/** Sum of returned secret value bytes in one read. */
|
|
32
|
+
maxReadValueBytes: 3 * 1024 * 1024,
|
|
33
|
+
pageSizeMax: 100,
|
|
34
|
+
cursorMaxChars: 1024,
|
|
35
|
+
snapshotMaxChars: 1024,
|
|
36
|
+
externalIdMaxChars: 300,
|
|
37
|
+
vaultNameMaxChars: 300,
|
|
38
|
+
nativeIdMaxChars: 200,
|
|
39
|
+
readFieldsMax: VAULT_LIMITS.fieldsPerItem,
|
|
40
|
+
idempotencyKeyMaxChars: 200,
|
|
41
|
+
accountIdMaxChars: 300,
|
|
42
|
+
accountNameMaxChars: 300,
|
|
43
|
+
versionMaxChars: 300,
|
|
44
|
+
cacheEpochMaxChars: 200,
|
|
45
|
+
/** Per request deadline enforced by Opengeni's transport. */
|
|
46
|
+
defaultTimeoutMs: 15e3,
|
|
47
|
+
maxTimeoutMs: 6e4,
|
|
48
|
+
/** Accepted request age; matches `OPENGENI_SIGNATURE_TOLERANCE_SECONDS`. */
|
|
49
|
+
signatureToleranceSeconds: 300
|
|
50
|
+
};
|
|
51
|
+
var VAULT_PROVIDER_WIRE_ERROR_CODES = [
|
|
52
|
+
"provider_auth_invalid",
|
|
53
|
+
"provider_auth_expired",
|
|
54
|
+
"provider_rate_limited",
|
|
55
|
+
"provider_unavailable",
|
|
56
|
+
"provider_conflict",
|
|
57
|
+
"provider_not_found",
|
|
58
|
+
"provider_permission_denied",
|
|
59
|
+
"provider_locked",
|
|
60
|
+
"provider_inventory_incomplete",
|
|
61
|
+
"provider_outcome_unknown"
|
|
62
|
+
];
|
|
63
|
+
var VAULT_PROVIDER_WIRE_OPERATIONS = [
|
|
64
|
+
"describe",
|
|
65
|
+
"refresh",
|
|
66
|
+
"list_vaults",
|
|
67
|
+
"list_items",
|
|
68
|
+
"read_fields",
|
|
69
|
+
"write_item",
|
|
70
|
+
"archive_item"
|
|
71
|
+
];
|
|
72
|
+
function isVaultProviderWireMutation(op) {
|
|
73
|
+
return op === "write_item" || op === "archive_item";
|
|
74
|
+
}
|
|
75
|
+
var VaultProviderWireProvider = /* @__PURE__ */ defineSchema(() => z.enum(["external"]));
|
|
76
|
+
var CONTROL_CHARACTERS = /[\u0000-\u001f\u007f-\u009f]/;
|
|
77
|
+
var encoder = /* @__PURE__ */ new TextEncoder();
|
|
78
|
+
function vaultProviderWireUtf8Bytes(value) {
|
|
79
|
+
return encoder.encode(value).byteLength;
|
|
80
|
+
}
|
|
81
|
+
function boundedText(max) {
|
|
82
|
+
return nonEmptyString.max(max).refine((value) => !CONTROL_CHARACTERS.test(value), "control characters are not allowed");
|
|
83
|
+
}
|
|
84
|
+
var ExternalId = /* @__PURE__ */ defineSchema(
|
|
85
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.externalIdMaxChars)
|
|
86
|
+
);
|
|
87
|
+
var NativeId = /* @__PURE__ */ defineSchema(
|
|
88
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.nativeIdMaxChars)
|
|
89
|
+
);
|
|
90
|
+
var ItemName = /* @__PURE__ */ defineSchema(
|
|
91
|
+
() => string.refine(isValidSecretName, "invalid_secret_name")
|
|
92
|
+
);
|
|
93
|
+
var FieldName = /* @__PURE__ */ defineSchema(
|
|
94
|
+
() => string.refine(
|
|
95
|
+
(name) => isValidSecretName(name) && !isReservedVaultFieldName(name),
|
|
96
|
+
"invalid_secret_name"
|
|
97
|
+
)
|
|
98
|
+
);
|
|
99
|
+
var Website = /* @__PURE__ */ defineSchema(() => boundedText(VAULT_LIMITS.websiteMaxChars));
|
|
100
|
+
var Version = /* @__PURE__ */ defineSchema(
|
|
101
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.versionMaxChars)
|
|
102
|
+
);
|
|
103
|
+
var Cursor = /* @__PURE__ */ defineSchema(
|
|
104
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.cursorMaxChars)
|
|
105
|
+
);
|
|
106
|
+
var Snapshot = /* @__PURE__ */ defineSchema(
|
|
107
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.snapshotMaxChars)
|
|
108
|
+
);
|
|
109
|
+
var IdempotencyKey = /* @__PURE__ */ defineSchema(
|
|
110
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.idempotencyKeyMaxChars)
|
|
111
|
+
);
|
|
112
|
+
var CacheEpoch = /* @__PURE__ */ defineSchema(
|
|
113
|
+
() => boundedText(VAULT_PROVIDER_WIRE_LIMITS.cacheEpochMaxChars).nullable()
|
|
114
|
+
);
|
|
115
|
+
function uniqueBy(values, key) {
|
|
116
|
+
const seen = /* @__PURE__ */ new Set();
|
|
117
|
+
for (const value of values) {
|
|
118
|
+
const k = key(value);
|
|
119
|
+
if (seen.has(k)) return false;
|
|
120
|
+
seen.add(k);
|
|
121
|
+
}
|
|
122
|
+
return true;
|
|
123
|
+
}
|
|
124
|
+
function vaultProviderWireNameKey(name) {
|
|
125
|
+
return name.normalize("NFC").trim().toLowerCase();
|
|
126
|
+
}
|
|
127
|
+
var VaultProviderWireAuthority = /* @__PURE__ */ defineSchema(
|
|
128
|
+
() => z.object({
|
|
129
|
+
accountId: NativeId,
|
|
130
|
+
workspaceId: NativeId,
|
|
131
|
+
/** Null for workspace-level background work with no acting human. */
|
|
132
|
+
subjectId: NativeId.nullable(),
|
|
133
|
+
/** Workspace that owns the encrypted connection (may differ from the caller). */
|
|
134
|
+
connectionWorkspaceId: NativeId,
|
|
135
|
+
sessionId: NativeId.optional(),
|
|
136
|
+
turnId: NativeId.optional(),
|
|
137
|
+
attemptId: NativeId.optional(),
|
|
138
|
+
siteId: NativeId.optional()
|
|
139
|
+
}).strict()
|
|
140
|
+
);
|
|
141
|
+
var VaultProviderWirePage = /* @__PURE__ */ defineSchema(
|
|
142
|
+
() => z.object({
|
|
143
|
+
limit: z.number().int().min(1).max(VAULT_PROVIDER_WIRE_LIMITS.pageSizeMax),
|
|
144
|
+
cursor: Cursor.optional(),
|
|
145
|
+
snapshot: Snapshot.optional()
|
|
146
|
+
}).strict()
|
|
147
|
+
);
|
|
148
|
+
var VaultProviderWireWriteField = /* @__PURE__ */ defineSchema(
|
|
149
|
+
() => z.object({
|
|
150
|
+
externalFieldId: ExternalId.optional(),
|
|
151
|
+
name: FieldName,
|
|
152
|
+
kind: VaultFieldKind,
|
|
153
|
+
/** Omitted on an update: keep the current value. */
|
|
154
|
+
value: string.refine(
|
|
155
|
+
(value) => vaultProviderWireUtf8Bytes(value) <= VAULT_LIMITS.textValueMaxBytes,
|
|
156
|
+
"secret_value_too_large"
|
|
157
|
+
).optional(),
|
|
158
|
+
remove: z.literal(true).optional()
|
|
159
|
+
}).strict().refine((field) => !(field.remove && field.value !== void 0), "remove carries no value").refine((field) => !(field.remove && !field.externalFieldId), "remove needs a field id").refine(
|
|
160
|
+
(field) => !(field.kind === "file" && field.value !== void 0),
|
|
161
|
+
"file writes are not supported"
|
|
162
|
+
)
|
|
163
|
+
);
|
|
164
|
+
var VaultProviderWireWriteItem = /* @__PURE__ */ defineSchema(
|
|
165
|
+
() => z.object({
|
|
166
|
+
externalItemId: ExternalId.optional(),
|
|
167
|
+
expectedVersion: Version.nullable().optional(),
|
|
168
|
+
name: ItemName,
|
|
169
|
+
type: VaultItemType.refine((type) => type !== "passkey", "passkeys are hosted only"),
|
|
170
|
+
category: VaultItemCategory.nullable().optional(),
|
|
171
|
+
websites: z.array(Website).max(VAULT_LIMITS.websitesPerItem),
|
|
172
|
+
fields: z.array(VaultProviderWireWriteField).max(VAULT_LIMITS.fieldsPerItem)
|
|
173
|
+
}).strict().refine(
|
|
174
|
+
(item) => uniqueBy(
|
|
175
|
+
item.fields.filter((field) => !field.remove),
|
|
176
|
+
(field) => vaultProviderWireNameKey(field.name)
|
|
177
|
+
) && uniqueBy(
|
|
178
|
+
item.fields.filter((field) => field.externalFieldId !== void 0),
|
|
179
|
+
(field) => field.externalFieldId
|
|
180
|
+
),
|
|
181
|
+
"duplicate fields"
|
|
182
|
+
)
|
|
183
|
+
);
|
|
184
|
+
var ReadContext = {
|
|
185
|
+
/** Recheck upstream; never bypasses authorization or upstream rate limits. */
|
|
186
|
+
forceRefresh: boolean,
|
|
187
|
+
/** Opengeni's mirror freshness epoch, for receiver-side cache invalidation. */
|
|
188
|
+
cacheEpoch: CacheEpoch
|
|
189
|
+
};
|
|
190
|
+
var VaultProviderWireOperation = /* @__PURE__ */ defineSchema(
|
|
191
|
+
() => z.discriminatedUnion("op", [
|
|
192
|
+
z.object({ op: z.literal("describe") }).strict(),
|
|
193
|
+
z.object({ op: z.literal("refresh") }).strict(),
|
|
194
|
+
z.object({ op: z.literal("list_vaults"), page: VaultProviderWirePage, ...ReadContext }).strict(),
|
|
195
|
+
z.object({
|
|
196
|
+
op: z.literal("list_items"),
|
|
197
|
+
externalVaultId: ExternalId,
|
|
198
|
+
page: VaultProviderWirePage,
|
|
199
|
+
...ReadContext
|
|
200
|
+
}).strict(),
|
|
201
|
+
z.object({
|
|
202
|
+
op: z.literal("read_fields"),
|
|
203
|
+
externalVaultId: ExternalId,
|
|
204
|
+
externalItemId: ExternalId,
|
|
205
|
+
externalFieldIds: z.array(ExternalId).min(1).max(VAULT_PROVIDER_WIRE_LIMITS.readFieldsMax).refine((ids) => new Set(ids).size === ids.length, "duplicate field ids"),
|
|
206
|
+
...ReadContext
|
|
207
|
+
}).strict(),
|
|
208
|
+
z.object({
|
|
209
|
+
op: z.literal("write_item"),
|
|
210
|
+
externalVaultId: ExternalId,
|
|
211
|
+
item: VaultProviderWireWriteItem,
|
|
212
|
+
idempotencyKey: IdempotencyKey
|
|
213
|
+
}).strict(),
|
|
214
|
+
z.object({
|
|
215
|
+
op: z.literal("archive_item"),
|
|
216
|
+
externalVaultId: ExternalId,
|
|
217
|
+
externalItemId: ExternalId,
|
|
218
|
+
idempotencyKey: IdempotencyKey
|
|
219
|
+
}).strict()
|
|
220
|
+
])
|
|
221
|
+
);
|
|
222
|
+
var VaultProviderWireRequest = /* @__PURE__ */ defineSchema(
|
|
223
|
+
() => z.object({
|
|
224
|
+
version: z.literal(VAULT_PROVIDER_WIRE_VERSION),
|
|
225
|
+
type: z.literal("request"),
|
|
226
|
+
requestId: uuid,
|
|
227
|
+
sentAt: dateTime,
|
|
228
|
+
provider: VaultProviderWireProvider,
|
|
229
|
+
connectionId: uuid,
|
|
230
|
+
authority: VaultProviderWireAuthority,
|
|
231
|
+
operation: VaultProviderWireOperation
|
|
232
|
+
}).strict()
|
|
233
|
+
);
|
|
234
|
+
var VaultProviderWireErrorCode = /* @__PURE__ */ defineSchema(
|
|
235
|
+
() => z.enum(VAULT_PROVIDER_WIRE_ERROR_CODES)
|
|
236
|
+
);
|
|
237
|
+
var VaultProviderWireFreshness = /* @__PURE__ */ defineSchema(
|
|
238
|
+
() => z.object({
|
|
239
|
+
state: z.enum(["current", "stale", "refreshing", "unavailable"]),
|
|
240
|
+
/** When the receiver last synchronized with its upstream store. */
|
|
241
|
+
sourceSyncedAt: z.string().datetime().nullable(),
|
|
242
|
+
source: z.enum(["live", "cache", "unknown"]),
|
|
243
|
+
errorCode: VaultProviderWireErrorCode.nullable(),
|
|
244
|
+
retryAt: z.string().datetime().nullable()
|
|
245
|
+
}).strict()
|
|
246
|
+
);
|
|
247
|
+
var VaultProviderWireVault = /* @__PURE__ */ defineSchema(
|
|
248
|
+
() => z.object({
|
|
249
|
+
externalVaultId: ExternalId,
|
|
250
|
+
name: boundedText(VAULT_PROVIDER_WIRE_LIMITS.vaultNameMaxChars),
|
|
251
|
+
contentVersion: Version.nullable(),
|
|
252
|
+
itemCount: z.number().int().nonnegative().nullable(),
|
|
253
|
+
writeAccess: z.enum(["read_only", "read_write", "unknown"]),
|
|
254
|
+
/** Narrows the connection operations for this vault; never widens them. */
|
|
255
|
+
operations: VaultProviderOperations.optional()
|
|
256
|
+
}).strict()
|
|
257
|
+
);
|
|
258
|
+
var VaultProviderWireFieldMeta = /* @__PURE__ */ defineSchema(
|
|
259
|
+
() => z.object({ externalFieldId: ExternalId, name: FieldName, kind: VaultFieldKind }).strict()
|
|
260
|
+
);
|
|
261
|
+
var VaultProviderWireItemMeta = /* @__PURE__ */ defineSchema(
|
|
262
|
+
() => z.object({
|
|
263
|
+
externalItemId: ExternalId,
|
|
264
|
+
name: ItemName,
|
|
265
|
+
type: VaultItemType,
|
|
266
|
+
username: z.string().max(VAULT_LIMITS.usernameMaxChars).nullable().optional(),
|
|
267
|
+
category: VaultItemCategory.nullable().optional(),
|
|
268
|
+
websites: z.array(Website).max(VAULT_LIMITS.websitesPerItem),
|
|
269
|
+
fields: z.array(VaultProviderWireFieldMeta).max(VAULT_LIMITS.fieldsPerItem).refine(
|
|
270
|
+
(fields) => uniqueBy(fields, (field) => field.externalFieldId) && uniqueBy(fields, (field) => vaultProviderWireNameKey(field.name)),
|
|
271
|
+
"duplicate fields"
|
|
272
|
+
),
|
|
273
|
+
version: Version.nullable(),
|
|
274
|
+
updatedAt: z.string().datetime().nullable()
|
|
275
|
+
}).strict()
|
|
276
|
+
);
|
|
277
|
+
var BASE64 = /^[A-Za-z0-9+/]*={0,2}$/;
|
|
278
|
+
var VaultProviderWireFieldValue = /* @__PURE__ */ defineSchema(
|
|
279
|
+
() => z.object({
|
|
280
|
+
externalFieldId: ExternalId,
|
|
281
|
+
value: z.discriminatedUnion("type", [
|
|
282
|
+
z.object({
|
|
283
|
+
type: z.literal("text"),
|
|
284
|
+
value: string.refine(
|
|
285
|
+
(value) => vaultProviderWireUtf8Bytes(value) <= VAULT_LIMITS.textValueMaxBytes
|
|
286
|
+
)
|
|
287
|
+
}).strict(),
|
|
288
|
+
/** An `otpauth://` URI or Base32 seed; Opengeni computes codes at use. */
|
|
289
|
+
z.object({ type: z.literal("totp"), value: boundedText(VAULT_LIMITS.websiteMaxChars) }).strict(),
|
|
290
|
+
z.object({
|
|
291
|
+
type: z.literal("bytes"),
|
|
292
|
+
base64: string.max(Math.ceil(VAULT_LIMITS.fileValueMaxBytes / 3) * 4).regex(BASE64)
|
|
293
|
+
}).strict()
|
|
294
|
+
])
|
|
295
|
+
}).strict()
|
|
296
|
+
);
|
|
297
|
+
function valueBytes(field) {
|
|
298
|
+
if (field.value.type === "bytes") return Math.floor(field.value.base64.length * 3 / 4);
|
|
299
|
+
return vaultProviderWireUtf8Bytes(field.value.value);
|
|
300
|
+
}
|
|
301
|
+
var VaultProviderWireDescribeResult = /* @__PURE__ */ defineSchema(
|
|
302
|
+
() => z.object({
|
|
303
|
+
/** Stable upstream account or bridge identity; reconnect rejects a change. */
|
|
304
|
+
accountId: boundedText(VAULT_PROVIDER_WIRE_LIMITS.accountIdMaxChars),
|
|
305
|
+
accountName: boundedText(VAULT_PROVIDER_WIRE_LIMITS.accountNameMaxChars).nullable(),
|
|
306
|
+
operations: VaultProviderOperations,
|
|
307
|
+
capabilities: z.object({ totp: boolean, files: boolean }).strict(),
|
|
308
|
+
/** One fixed inventory per connection, independent of the acting subject. */
|
|
309
|
+
inventoryScope: z.literal("connection")
|
|
310
|
+
}).strict()
|
|
311
|
+
);
|
|
312
|
+
function pageOf(item) {
|
|
313
|
+
return z.object({
|
|
314
|
+
items: z.array(item).max(VAULT_PROVIDER_WIRE_LIMITS.pageSizeMax),
|
|
315
|
+
nextCursor: Cursor.nullable(),
|
|
316
|
+
/** Null only when the receiver cannot supply snapshot consistency. */
|
|
317
|
+
snapshot: Snapshot.nullable()
|
|
318
|
+
}).strict();
|
|
319
|
+
}
|
|
320
|
+
var VaultProviderWireListVaultsResult = /* @__PURE__ */ defineSchema(
|
|
321
|
+
() => pageOf(VaultProviderWireVault)
|
|
322
|
+
);
|
|
323
|
+
var VaultProviderWireListItemsResult = /* @__PURE__ */ defineSchema(
|
|
324
|
+
() => pageOf(VaultProviderWireItemMeta)
|
|
325
|
+
);
|
|
326
|
+
var VaultProviderWireReadFieldsResult = /* @__PURE__ */ defineSchema(
|
|
327
|
+
() => z.object({
|
|
328
|
+
fields: z.array(VaultProviderWireFieldValue).max(VAULT_PROVIDER_WIRE_LIMITS.readFieldsMax).refine((fields) => uniqueBy(fields, (field) => field.externalFieldId), "duplicate fields").refine(
|
|
329
|
+
(fields) => fields.reduce((total, field) => total + valueBytes(field), 0) <= VAULT_PROVIDER_WIRE_LIMITS.maxReadValueBytes,
|
|
330
|
+
"secret values too large"
|
|
331
|
+
)
|
|
332
|
+
}).strict()
|
|
333
|
+
);
|
|
334
|
+
var VaultProviderWireRefreshResult = /* @__PURE__ */ defineSchema(
|
|
335
|
+
() => z.object({ refreshed: z.literal(true) }).strict()
|
|
336
|
+
);
|
|
337
|
+
var VaultProviderWireWriteItemResult = /* @__PURE__ */ defineSchema(
|
|
338
|
+
() => z.object({ item: VaultProviderWireItemMeta }).strict()
|
|
339
|
+
);
|
|
340
|
+
var VaultProviderWireArchiveItemResult = /* @__PURE__ */ defineSchema(
|
|
341
|
+
() => z.object({ archived: z.literal(true) }).strict()
|
|
342
|
+
);
|
|
343
|
+
var VaultProviderWireResults = {
|
|
344
|
+
describe: VaultProviderWireDescribeResult,
|
|
345
|
+
refresh: VaultProviderWireRefreshResult,
|
|
346
|
+
list_vaults: VaultProviderWireListVaultsResult,
|
|
347
|
+
list_items: VaultProviderWireListItemsResult,
|
|
348
|
+
read_fields: VaultProviderWireReadFieldsResult,
|
|
349
|
+
write_item: VaultProviderWireWriteItemResult,
|
|
350
|
+
archive_item: VaultProviderWireArchiveItemResult
|
|
351
|
+
};
|
|
352
|
+
var VaultProviderWireError = /* @__PURE__ */ defineSchema(
|
|
353
|
+
() => z.object({
|
|
354
|
+
code: VaultProviderWireErrorCode,
|
|
355
|
+
retryAfterMs: z.number().int().min(0).max(864e5).nullable()
|
|
356
|
+
}).strict()
|
|
357
|
+
);
|
|
358
|
+
var VaultProviderWireResponseEnvelope = /* @__PURE__ */ defineSchema(
|
|
359
|
+
() => z.discriminatedUnion("ok", [
|
|
360
|
+
z.object({
|
|
361
|
+
version: z.literal(VAULT_PROVIDER_WIRE_VERSION),
|
|
362
|
+
type: z.literal("response"),
|
|
363
|
+
requestId: uuid,
|
|
364
|
+
ok: z.literal(true),
|
|
365
|
+
op: z.enum(VAULT_PROVIDER_WIRE_OPERATIONS),
|
|
366
|
+
result: z.unknown(),
|
|
367
|
+
freshness: VaultProviderWireFreshness.nullable()
|
|
368
|
+
}).strict(),
|
|
369
|
+
z.object({
|
|
370
|
+
version: z.literal(VAULT_PROVIDER_WIRE_VERSION),
|
|
371
|
+
type: z.literal("response"),
|
|
372
|
+
requestId: uuid,
|
|
373
|
+
ok: z.literal(false),
|
|
374
|
+
op: z.enum(VAULT_PROVIDER_WIRE_OPERATIONS),
|
|
375
|
+
error: VaultProviderWireError,
|
|
376
|
+
freshness: VaultProviderWireFreshness.nullable()
|
|
377
|
+
}).strict()
|
|
378
|
+
])
|
|
379
|
+
);
|
|
380
|
+
function parseVaultProviderWireResponse(value, expected) {
|
|
381
|
+
const envelope = VaultProviderWireResponseEnvelope.safeParse(value);
|
|
382
|
+
if (!envelope.success) return null;
|
|
383
|
+
const response = envelope.data;
|
|
384
|
+
if (response.requestId !== expected.requestId || response.op !== expected.op) return null;
|
|
385
|
+
if (!response.ok) return response;
|
|
386
|
+
const result = VaultProviderWireResults[expected.op].safeParse(response.result);
|
|
387
|
+
if (!result.success) return null;
|
|
388
|
+
return { ...response, op: expected.op, result: result.data };
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
export {
|
|
392
|
+
VAULT_PROVIDER_WIRE_VERSION,
|
|
393
|
+
VAULT_PROVIDER_WIRE_RESPONSE_SIGNATURE_HEADER,
|
|
394
|
+
vaultProviderWireResponseKey,
|
|
395
|
+
VAULT_PROVIDER_WIRE_LIMITS,
|
|
396
|
+
VAULT_PROVIDER_WIRE_ERROR_CODES,
|
|
397
|
+
VAULT_PROVIDER_WIRE_OPERATIONS,
|
|
398
|
+
isVaultProviderWireMutation,
|
|
399
|
+
VaultProviderWireProvider,
|
|
400
|
+
vaultProviderWireUtf8Bytes,
|
|
401
|
+
vaultProviderWireNameKey,
|
|
402
|
+
VaultProviderWireAuthority,
|
|
403
|
+
VaultProviderWirePage,
|
|
404
|
+
VaultProviderWireWriteField,
|
|
405
|
+
VaultProviderWireWriteItem,
|
|
406
|
+
VaultProviderWireOperation,
|
|
407
|
+
VaultProviderWireRequest,
|
|
408
|
+
VaultProviderWireErrorCode,
|
|
409
|
+
VaultProviderWireFreshness,
|
|
410
|
+
VaultProviderWireVault,
|
|
411
|
+
VaultProviderWireFieldMeta,
|
|
412
|
+
VaultProviderWireItemMeta,
|
|
413
|
+
VaultProviderWireFieldValue,
|
|
414
|
+
VaultProviderWireDescribeResult,
|
|
415
|
+
VaultProviderWireListVaultsResult,
|
|
416
|
+
VaultProviderWireListItemsResult,
|
|
417
|
+
VaultProviderWireReadFieldsResult,
|
|
418
|
+
VaultProviderWireRefreshResult,
|
|
419
|
+
VaultProviderWireWriteItemResult,
|
|
420
|
+
VaultProviderWireArchiveItemResult,
|
|
421
|
+
VaultProviderWireResults,
|
|
422
|
+
VaultProviderWireError,
|
|
423
|
+
VaultProviderWireResponseEnvelope,
|
|
424
|
+
parseVaultProviderWireResponse
|
|
425
|
+
};
|
|
426
|
+
//# sourceMappingURL=chunk-2WOWEWXV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/vault-provider-wire.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\n/**\n * `opengeni.vault.v1`: the signed remote vault-provider protocol.\n *\n * Opengeni POSTs one JSON request per operation to a registered endpoint,\n * signed over the exact body with the existing `OpenGeni-Signature` scheme\n * (`signOpenGeniPayload`). The receiver verifies the signature, then maps the\n * trusted native authority tuple to its own tenant and user and rechecks\n * access on every operation: a valid MAC authenticates Opengeni, it is not an\n * authorization decision. Responses are signed with a response-only derived\n * key (`vaultProviderWireResponseKey`) so a response can never be replayed as\n * a request.\n *\n * Every shape is strict and bounded. Item metadata may carry a username display\n * hint, but never other field values.\n * Mutations carry an idempotency key; Opengeni never retries a mutation\n * automatically and reports an ambiguous outcome instead.\n */\nimport { z } from \"zod\";\nimport { defineSchema } from \"./define-schema\";\nimport {\n VAULT_LIMITS,\n VaultFieldKind,\n VaultItemCategory,\n VaultItemType,\n VaultProviderOperations,\n isReservedVaultFieldName,\n isValidSecretName,\n} from \"./vaults\";\n\nexport const VAULT_PROVIDER_WIRE_VERSION = \"opengeni.vault.v1\" as const;\n\n/** Response signature header. Requests use the shared `OpenGeni-Signature` header. */\nexport const VAULT_PROVIDER_WIRE_RESPONSE_SIGNATURE_HEADER = \"OpenGeni-Vault-Response-Signature\";\n\n/**\n * The response signing key is derived from the connection secret with a fixed\n * domain label, so request and response MACs are never interchangeable.\n */\nexport function vaultProviderWireResponseKey(signingSecret: string): string {\n return `${signingSecret}\\u0000${VAULT_PROVIDER_WIRE_VERSION}.response`;\n}\n\nexport const VAULT_PROVIDER_WIRE_LIMITS = {\n maxRequestBytes: 4 * 1024 * 1024,\n maxResponseBytes: 4 * 1024 * 1024,\n /** Sum of returned secret value bytes in one read. */\n maxReadValueBytes: 3 * 1024 * 1024,\n pageSizeMax: 100,\n cursorMaxChars: 1_024,\n snapshotMaxChars: 1_024,\n externalIdMaxChars: 300,\n vaultNameMaxChars: 300,\n nativeIdMaxChars: 200,\n readFieldsMax: VAULT_LIMITS.fieldsPerItem,\n idempotencyKeyMaxChars: 200,\n accountIdMaxChars: 300,\n accountNameMaxChars: 300,\n versionMaxChars: 300,\n cacheEpochMaxChars: 200,\n /** Per request deadline enforced by Opengeni's transport. */\n defaultTimeoutMs: 15_000,\n maxTimeoutMs: 60_000,\n /** Accepted request age; matches `OPENGENI_SIGNATURE_TOLERANCE_SECONDS`. */\n signatureToleranceSeconds: 300,\n} as const;\n\n/** Mirrors `VAULT_PROVIDER_ERROR_CODES` in `@opengeni/vaults` (parity tested there). */\nexport const VAULT_PROVIDER_WIRE_ERROR_CODES = [\n \"provider_auth_invalid\",\n \"provider_auth_expired\",\n \"provider_rate_limited\",\n \"provider_unavailable\",\n \"provider_conflict\",\n \"provider_not_found\",\n \"provider_permission_denied\",\n \"provider_locked\",\n \"provider_inventory_incomplete\",\n \"provider_outcome_unknown\",\n] as const;\nexport type VaultProviderWireErrorCode = (typeof VAULT_PROVIDER_WIRE_ERROR_CODES)[number];\n\nexport const VAULT_PROVIDER_WIRE_OPERATIONS = [\n \"describe\",\n \"refresh\",\n \"list_vaults\",\n \"list_items\",\n \"read_fields\",\n \"write_item\",\n \"archive_item\",\n] as const;\nexport type VaultProviderWireOperationName = (typeof VAULT_PROVIDER_WIRE_OPERATIONS)[number];\n\nexport type VaultProviderWireMutationName = \"write_item\" | \"archive_item\";\nexport function isVaultProviderWireMutation(\n op: VaultProviderWireOperationName,\n): op is VaultProviderWireMutationName {\n return op === \"write_item\" || op === \"archive_item\";\n}\n\n/** Remote providers that use this protocol. */\nexport const VaultProviderWireProvider = /* @__PURE__ */ defineSchema(() => z.enum([\"external\"]));\nexport type VaultProviderWireProvider = z.infer<typeof VaultProviderWireProvider>;\n\n// oxlint-disable-next-line no-control-regex\nconst CONTROL_CHARACTERS = /[\\u0000-\\u001f\\u007f-\\u009f]/;\nconst encoder = /* @__PURE__ */ new TextEncoder();\n\nexport function vaultProviderWireUtf8Bytes(value: string): number {\n return encoder.encode(value).byteLength;\n}\n\nfunction boundedText(max: number) {\n return primitives.nonEmptyString\n .max(max)\n .refine((value) => !CONTROL_CHARACTERS.test(value), \"control characters are not allowed\");\n}\n\nconst ExternalId = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.externalIdMaxChars),\n);\nconst NativeId = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.nativeIdMaxChars),\n);\nconst ItemName = /* @__PURE__ */ defineSchema(() =>\n primitives.string.refine(isValidSecretName, \"invalid_secret_name\"),\n);\nconst FieldName = /* @__PURE__ */ defineSchema(() =>\n primitives.string.refine(\n (name) => isValidSecretName(name) && !isReservedVaultFieldName(name),\n \"invalid_secret_name\",\n ),\n);\nconst Website = /* @__PURE__ */ defineSchema(() => boundedText(VAULT_LIMITS.websiteMaxChars));\nconst Version = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.versionMaxChars),\n);\nconst Cursor = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.cursorMaxChars),\n);\nconst Snapshot = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.snapshotMaxChars),\n);\nconst IdempotencyKey = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.idempotencyKeyMaxChars),\n);\nconst CacheEpoch = /* @__PURE__ */ defineSchema(() =>\n boundedText(VAULT_PROVIDER_WIRE_LIMITS.cacheEpochMaxChars).nullable(),\n);\n\nfunction uniqueBy<T>(values: readonly T[], key: (value: T) => string): boolean {\n const seen = new Set<string>();\n for (const value of values) {\n const k = key(value);\n if (seen.has(k)) return false;\n seen.add(k);\n }\n return true;\n}\n\n/** Case-insensitive name identity used for field-name uniqueness. */\nexport function vaultProviderWireNameKey(name: string): string {\n return name.normalize(\"NFC\").trim().toLowerCase();\n}\n\n/**\n * The trusted native caller. Opengeni fills it from the authorized registry,\n * never from model or body-supplied arguments.\n */\nexport const VaultProviderWireAuthority = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n accountId: NativeId,\n workspaceId: NativeId,\n /** Null for workspace-level background work with no acting human. */\n subjectId: NativeId.nullable(),\n /** Workspace that owns the encrypted connection (may differ from the caller). */\n connectionWorkspaceId: NativeId,\n sessionId: NativeId.optional(),\n turnId: NativeId.optional(),\n attemptId: NativeId.optional(),\n siteId: NativeId.optional(),\n })\n .strict(),\n);\nexport type VaultProviderWireAuthority = z.infer<typeof VaultProviderWireAuthority>;\n\nexport const VaultProviderWirePage = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n limit: z.number().int().min(1).max(VAULT_PROVIDER_WIRE_LIMITS.pageSizeMax),\n cursor: Cursor.optional(),\n snapshot: Snapshot.optional(),\n })\n .strict(),\n);\nexport type VaultProviderWirePage = z.infer<typeof VaultProviderWirePage>;\n\nexport const VaultProviderWireWriteField = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n externalFieldId: ExternalId.optional(),\n name: FieldName,\n kind: VaultFieldKind,\n /** Omitted on an update: keep the current value. */\n value: primitives.string\n .refine(\n (value) => vaultProviderWireUtf8Bytes(value) <= VAULT_LIMITS.textValueMaxBytes,\n \"secret_value_too_large\",\n )\n .optional(),\n remove: z.literal(true).optional(),\n })\n .strict()\n .refine((field) => !(field.remove && field.value !== undefined), \"remove carries no value\")\n .refine((field) => !(field.remove && !field.externalFieldId), \"remove needs a field id\")\n .refine(\n (field) => !(field.kind === \"file\" && field.value !== undefined),\n \"file writes are not supported\",\n ),\n);\nexport type VaultProviderWireWriteField = z.infer<typeof VaultProviderWireWriteField>;\n\nexport const VaultProviderWireWriteItem = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n externalItemId: ExternalId.optional(),\n expectedVersion: Version.nullable().optional(),\n name: ItemName,\n type: VaultItemType.refine((type) => type !== \"passkey\", \"passkeys are hosted only\"),\n category: VaultItemCategory.nullable().optional(),\n websites: z.array(Website).max(VAULT_LIMITS.websitesPerItem),\n fields: z.array(VaultProviderWireWriteField).max(VAULT_LIMITS.fieldsPerItem),\n })\n .strict()\n .refine(\n (item) =>\n uniqueBy(\n item.fields.filter((field) => !field.remove),\n (field) => vaultProviderWireNameKey(field.name),\n ) &&\n uniqueBy(\n item.fields.filter((field) => field.externalFieldId !== undefined),\n (field) => field.externalFieldId!,\n ),\n \"duplicate fields\",\n ),\n);\nexport type VaultProviderWireWriteItem = z.infer<typeof VaultProviderWireWriteItem>;\n\nconst ReadContext = {\n /** Recheck upstream; never bypasses authorization or upstream rate limits. */\n forceRefresh: primitives.boolean,\n /** Opengeni's mirror freshness epoch, for receiver-side cache invalidation. */\n cacheEpoch: CacheEpoch,\n};\n\nexport const VaultProviderWireOperation = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"op\", [\n z.object({ op: z.literal(\"describe\") }).strict(),\n z.object({ op: z.literal(\"refresh\") }).strict(),\n z\n .object({ op: z.literal(\"list_vaults\"), page: VaultProviderWirePage, ...ReadContext })\n .strict(),\n z\n .object({\n op: z.literal(\"list_items\"),\n externalVaultId: ExternalId,\n page: VaultProviderWirePage,\n ...ReadContext,\n })\n .strict(),\n z\n .object({\n op: z.literal(\"read_fields\"),\n externalVaultId: ExternalId,\n externalItemId: ExternalId,\n externalFieldIds: z\n .array(ExternalId)\n .min(1)\n .max(VAULT_PROVIDER_WIRE_LIMITS.readFieldsMax)\n .refine((ids) => new Set(ids).size === ids.length, \"duplicate field ids\"),\n ...ReadContext,\n })\n .strict(),\n z\n .object({\n op: z.literal(\"write_item\"),\n externalVaultId: ExternalId,\n item: VaultProviderWireWriteItem,\n idempotencyKey: IdempotencyKey,\n })\n .strict(),\n z\n .object({\n op: z.literal(\"archive_item\"),\n externalVaultId: ExternalId,\n externalItemId: ExternalId,\n idempotencyKey: IdempotencyKey,\n })\n .strict(),\n ]),\n);\nexport type VaultProviderWireOperation = z.infer<typeof VaultProviderWireOperation>;\nexport type VaultProviderWireOperationOf<Op extends VaultProviderWireOperationName> = Extract<\n VaultProviderWireOperation,\n { op: Op }\n>;\n\nexport const VaultProviderWireRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n version: z.literal(VAULT_PROVIDER_WIRE_VERSION),\n type: z.literal(\"request\"),\n requestId: primitives.uuid,\n sentAt: primitives.dateTime,\n provider: VaultProviderWireProvider,\n connectionId: primitives.uuid,\n authority: VaultProviderWireAuthority,\n operation: VaultProviderWireOperation,\n })\n .strict(),\n);\nexport type VaultProviderWireRequest = z.infer<typeof VaultProviderWireRequest>;\n\nexport const VaultProviderWireErrorCode = /* @__PURE__ */ defineSchema(() =>\n z.enum(VAULT_PROVIDER_WIRE_ERROR_CODES),\n);\n\n/** Receiver freshness. Opengeni adds its own `lastCheckedAt`. */\nexport const VaultProviderWireFreshness = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n state: z.enum([\"current\", \"stale\", \"refreshing\", \"unavailable\"]),\n /** When the receiver last synchronized with its upstream store. */\n sourceSyncedAt: z.string().datetime().nullable(),\n source: z.enum([\"live\", \"cache\", \"unknown\"]),\n errorCode: VaultProviderWireErrorCode.nullable(),\n retryAt: z.string().datetime().nullable(),\n })\n .strict(),\n);\nexport type VaultProviderWireFreshness = z.infer<typeof VaultProviderWireFreshness>;\n\nexport const VaultProviderWireVault = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n externalVaultId: ExternalId,\n name: boundedText(VAULT_PROVIDER_WIRE_LIMITS.vaultNameMaxChars),\n contentVersion: Version.nullable(),\n itemCount: z.number().int().nonnegative().nullable(),\n writeAccess: z.enum([\"read_only\", \"read_write\", \"unknown\"]),\n /** Narrows the connection operations for this vault; never widens them. */\n operations: VaultProviderOperations.optional(),\n })\n .strict(),\n);\nexport type VaultProviderWireVault = z.infer<typeof VaultProviderWireVault>;\n\nexport const VaultProviderWireFieldMeta = /* @__PURE__ */ defineSchema(() =>\n z.object({ externalFieldId: ExternalId, name: FieldName, kind: VaultFieldKind }).strict(),\n);\nexport type VaultProviderWireFieldMeta = z.infer<typeof VaultProviderWireFieldMeta>;\n\n/** Item metadata, including an optional username display hint but no other values. */\nexport const VaultProviderWireItemMeta = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n externalItemId: ExternalId,\n name: ItemName,\n type: VaultItemType,\n username: z.string().max(VAULT_LIMITS.usernameMaxChars).nullable().optional(),\n category: VaultItemCategory.nullable().optional(),\n websites: z.array(Website).max(VAULT_LIMITS.websitesPerItem),\n fields: z\n .array(VaultProviderWireFieldMeta)\n .max(VAULT_LIMITS.fieldsPerItem)\n .refine(\n (fields) =>\n uniqueBy(fields, (field) => field.externalFieldId) &&\n uniqueBy(fields, (field) => vaultProviderWireNameKey(field.name)),\n \"duplicate fields\",\n ),\n version: Version.nullable(),\n updatedAt: z.string().datetime().nullable(),\n })\n .strict(),\n);\nexport type VaultProviderWireItemMeta = z.infer<typeof VaultProviderWireItemMeta>;\n\nconst BASE64 = /^[A-Za-z0-9+/]*={0,2}$/;\nexport const VaultProviderWireFieldValue = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n externalFieldId: ExternalId,\n value: z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"text\"),\n value: primitives.string.refine(\n (value) => vaultProviderWireUtf8Bytes(value) <= VAULT_LIMITS.textValueMaxBytes,\n ),\n })\n .strict(),\n /** An `otpauth://` URI or Base32 seed; Opengeni computes codes at use. */\n z\n .object({ type: z.literal(\"totp\"), value: boundedText(VAULT_LIMITS.websiteMaxChars) })\n .strict(),\n z\n .object({\n type: z.literal(\"bytes\"),\n base64: primitives.string\n .max(Math.ceil(VAULT_LIMITS.fileValueMaxBytes / 3) * 4)\n .regex(BASE64),\n })\n .strict(),\n ]),\n })\n .strict(),\n);\nexport type VaultProviderWireFieldValue = z.infer<typeof VaultProviderWireFieldValue>;\n\nfunction valueBytes(field: VaultProviderWireFieldValue): number {\n if (field.value.type === \"bytes\") return Math.floor((field.value.base64.length * 3) / 4);\n return vaultProviderWireUtf8Bytes(field.value.value);\n}\n\nexport const VaultProviderWireDescribeResult = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n /** Stable upstream account or bridge identity; reconnect rejects a change. */\n accountId: boundedText(VAULT_PROVIDER_WIRE_LIMITS.accountIdMaxChars),\n accountName: boundedText(VAULT_PROVIDER_WIRE_LIMITS.accountNameMaxChars).nullable(),\n operations: VaultProviderOperations,\n capabilities: z.object({ totp: primitives.boolean, files: primitives.boolean }).strict(),\n /** One fixed inventory per connection, independent of the acting subject. */\n inventoryScope: z.literal(\"connection\"),\n })\n .strict(),\n);\nexport type VaultProviderWireDescribeResult = z.infer<typeof VaultProviderWireDescribeResult>;\n\nfunction pageOf<T extends z.ZodType>(item: T) {\n return z\n .object({\n items: z.array(item).max(VAULT_PROVIDER_WIRE_LIMITS.pageSizeMax),\n nextCursor: Cursor.nullable(),\n /** Null only when the receiver cannot supply snapshot consistency. */\n snapshot: Snapshot.nullable(),\n })\n .strict();\n}\n\nexport const VaultProviderWireListVaultsResult = /* @__PURE__ */ defineSchema(() =>\n pageOf(VaultProviderWireVault),\n);\nexport const VaultProviderWireListItemsResult = /* @__PURE__ */ defineSchema(() =>\n pageOf(VaultProviderWireItemMeta),\n);\nexport const VaultProviderWireReadFieldsResult = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n fields: z\n .array(VaultProviderWireFieldValue)\n .max(VAULT_PROVIDER_WIRE_LIMITS.readFieldsMax)\n .refine((fields) => uniqueBy(fields, (field) => field.externalFieldId), \"duplicate fields\")\n .refine(\n (fields) =>\n fields.reduce((total, field) => total + valueBytes(field), 0) <=\n VAULT_PROVIDER_WIRE_LIMITS.maxReadValueBytes,\n \"secret values too large\",\n ),\n })\n .strict(),\n);\nexport const VaultProviderWireRefreshResult = /* @__PURE__ */ defineSchema(() =>\n z.object({ refreshed: z.literal(true) }).strict(),\n);\nexport const VaultProviderWireWriteItemResult = /* @__PURE__ */ defineSchema(() =>\n z.object({ item: VaultProviderWireItemMeta }).strict(),\n);\nexport const VaultProviderWireArchiveItemResult = /* @__PURE__ */ defineSchema(() =>\n z.object({ archived: z.literal(true) }).strict(),\n);\n\nexport const VaultProviderWireResults = {\n describe: VaultProviderWireDescribeResult,\n refresh: VaultProviderWireRefreshResult,\n list_vaults: VaultProviderWireListVaultsResult,\n list_items: VaultProviderWireListItemsResult,\n read_fields: VaultProviderWireReadFieldsResult,\n write_item: VaultProviderWireWriteItemResult,\n archive_item: VaultProviderWireArchiveItemResult,\n} as const;\n\nexport type VaultProviderWireResult<Op extends VaultProviderWireOperationName> = z.infer<\n (typeof VaultProviderWireResults)[Op]\n>;\n\nexport const VaultProviderWireError = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n code: VaultProviderWireErrorCode,\n retryAfterMs: z.number().int().min(0).max(86_400_000).nullable(),\n })\n .strict(),\n);\nexport type VaultProviderWireError = z.infer<typeof VaultProviderWireError>;\n\n/**\n * Response envelope. `result` is validated separately against\n * `VaultProviderWireResults[op]` for the operation that was requested.\n */\nexport const VaultProviderWireResponseEnvelope = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"ok\", [\n z\n .object({\n version: z.literal(VAULT_PROVIDER_WIRE_VERSION),\n type: z.literal(\"response\"),\n requestId: primitives.uuid,\n ok: z.literal(true),\n op: z.enum(VAULT_PROVIDER_WIRE_OPERATIONS),\n result: z.unknown(),\n freshness: VaultProviderWireFreshness.nullable(),\n })\n .strict(),\n z\n .object({\n version: z.literal(VAULT_PROVIDER_WIRE_VERSION),\n type: z.literal(\"response\"),\n requestId: primitives.uuid,\n ok: z.literal(false),\n op: z.enum(VAULT_PROVIDER_WIRE_OPERATIONS),\n error: VaultProviderWireError,\n freshness: VaultProviderWireFreshness.nullable(),\n })\n .strict(),\n ]),\n);\n\nexport type VaultProviderWireSuccess<\n Op extends VaultProviderWireOperationName = VaultProviderWireOperationName,\n> = {\n [K in Op]: {\n version: typeof VAULT_PROVIDER_WIRE_VERSION;\n type: \"response\";\n requestId: string;\n ok: true;\n op: K;\n result: VaultProviderWireResult<K>;\n freshness: VaultProviderWireFreshness | null;\n };\n}[Op];\n\nexport type VaultProviderWireFailure = {\n version: typeof VAULT_PROVIDER_WIRE_VERSION;\n type: \"response\";\n requestId: string;\n ok: false;\n op: VaultProviderWireOperationName;\n error: VaultProviderWireError;\n freshness: VaultProviderWireFreshness | null;\n};\n\nexport type VaultProviderWireResponse = VaultProviderWireSuccess | VaultProviderWireFailure;\n\n/** Parse one response envelope and its operation-specific result. */\nexport function parseVaultProviderWireResponse<Op extends VaultProviderWireOperationName>(\n value: unknown,\n expected: { requestId: string; op: Op },\n): VaultProviderWireSuccess<Op> | VaultProviderWireFailure | null {\n const envelope = VaultProviderWireResponseEnvelope.safeParse(value);\n if (!envelope.success) return null;\n const response = envelope.data;\n if (response.requestId !== expected.requestId || response.op !== expected.op) return null;\n if (!response.ok) return response as VaultProviderWireFailure;\n const result = VaultProviderWireResults[expected.op].safeParse(response.result);\n if (!result.success) return null;\n return { ...response, op: expected.op, result: result.data } as VaultProviderWireSuccess<Op>;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
// src/model-display.ts
|
|
2
|
+
function modelLogoUrl(input) {
|
|
3
|
+
const value = typeof input === "string" ? void 0 : input.logoUrl;
|
|
4
|
+
if (!value || value.length > 2048 || value !== value.trim()) return null;
|
|
5
|
+
try {
|
|
6
|
+
const url = new URL(value);
|
|
7
|
+
return url.protocol === "https:" && !url.username && !url.password ? value : null;
|
|
8
|
+
} catch {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
var WORDS = {
|
|
13
|
+
gpt: "GPT",
|
|
14
|
+
chatgpt: "ChatGPT",
|
|
15
|
+
claude: "Claude",
|
|
16
|
+
grok: "Grok",
|
|
17
|
+
gemini: "Gemini",
|
|
18
|
+
gemma: "Gemma",
|
|
19
|
+
llama: "Llama",
|
|
20
|
+
deepseek: "DeepSeek",
|
|
21
|
+
qwen: "Qwen",
|
|
22
|
+
glm: "GLM",
|
|
23
|
+
kimi: "Kimi",
|
|
24
|
+
mistral: "Mistral",
|
|
25
|
+
codestral: "Codestral",
|
|
26
|
+
devstral: "Devstral",
|
|
27
|
+
magistral: "Magistral",
|
|
28
|
+
nemotron: "Nemotron",
|
|
29
|
+
oss: "OSS",
|
|
30
|
+
// Region-pinned gateway routes (Opper `aws/claude-sonnet-4-6-eu`).
|
|
31
|
+
eu: "EU"
|
|
32
|
+
};
|
|
33
|
+
function modelSlug(value) {
|
|
34
|
+
const last = value.split("/").filter(Boolean).at(-1) ?? value;
|
|
35
|
+
return last.replace(/:[^:]*$/, "") || last;
|
|
36
|
+
}
|
|
37
|
+
function upstreamOf(input) {
|
|
38
|
+
return input.upstreamModelId?.trim() || input.deployment?.upstreamModelId?.trim() || null;
|
|
39
|
+
}
|
|
40
|
+
function titleToken(token, index) {
|
|
41
|
+
const lower = token.toLowerCase();
|
|
42
|
+
const word = WORDS[lower];
|
|
43
|
+
if (word) return word;
|
|
44
|
+
if (index === 0 && /^o\d+$/.test(lower)) return lower;
|
|
45
|
+
if (/^\d+(?:\.\d+)?[bkmt]$/.test(lower) || /^[a-z]\d+[a-z\d]*$/.test(lower)) {
|
|
46
|
+
return lower.toUpperCase();
|
|
47
|
+
}
|
|
48
|
+
if (/^\d/.test(token)) return lower;
|
|
49
|
+
return lower.charAt(0).toUpperCase() + lower.slice(1);
|
|
50
|
+
}
|
|
51
|
+
function humanizeModelSlug(value) {
|
|
52
|
+
const slug = modelSlug(value.trim()).replace(/[-_](?:\d{8}|\d{4}-\d{2}-\d{2})$/, "").replace(/[-_]latest$/i, "");
|
|
53
|
+
const raw = slug.split(/[-_\s]+/).filter(Boolean);
|
|
54
|
+
if (raw.length === 0) return value.trim() || value;
|
|
55
|
+
const tokens = [];
|
|
56
|
+
for (const token of raw) {
|
|
57
|
+
const previous = tokens.at(-1);
|
|
58
|
+
if (previous !== void 0 && /^\d{1,2}$/.test(token) && /^\d{1,2}$/.test(previous)) {
|
|
59
|
+
tokens[tokens.length - 1] = `${previous}.${token}`;
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
tokens.push(token);
|
|
63
|
+
}
|
|
64
|
+
const words = tokens.map(titleToken);
|
|
65
|
+
if (words[0] === "GPT" && words.length > 1 && /^\d/.test(words[1])) {
|
|
66
|
+
return [`GPT-${words[1]}`, ...words.slice(2)].join(" ");
|
|
67
|
+
}
|
|
68
|
+
return words.join(" ");
|
|
69
|
+
}
|
|
70
|
+
function isRawModelLabel(label, ids = []) {
|
|
71
|
+
const text = label.trim();
|
|
72
|
+
if (!text) return true;
|
|
73
|
+
return ids.some((id) => {
|
|
74
|
+
if (!id) return false;
|
|
75
|
+
const segments = id.trim().split("/").filter(Boolean);
|
|
76
|
+
return segments.some((_, index) => {
|
|
77
|
+
const tail = segments.slice(index).join("/");
|
|
78
|
+
return tail === text || modelSlug(tail) === text;
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
function modelDisplayName(input) {
|
|
83
|
+
if (typeof input === "string") {
|
|
84
|
+
return input.trim() && !/\s/.test(input.trim()) ? withoutClaudeFamilyPrefix(humanizeModelSlug(input)) : input;
|
|
85
|
+
}
|
|
86
|
+
const upstream = upstreamOf(input);
|
|
87
|
+
const label = input.label?.trim();
|
|
88
|
+
if (label && !isRawModelLabel(label, [input.id, upstream])) {
|
|
89
|
+
return withoutClaudeFamilyPrefix(label);
|
|
90
|
+
}
|
|
91
|
+
return withoutClaudeFamilyPrefix(humanizeModelSlug(upstream ?? label ?? input.id));
|
|
92
|
+
}
|
|
93
|
+
function withoutClaudeFamilyPrefix(name) {
|
|
94
|
+
return name.replace(/^Claude\s+(?=(?:Opus|Sonnet|Haiku)\b)/, "");
|
|
95
|
+
}
|
|
96
|
+
var VENDOR_PATTERNS = [
|
|
97
|
+
["anthropic", /^claude\b/],
|
|
98
|
+
["openai", /^(?:gpt|chatgpt|o\d+|codex|dall-e|sora|text-embedding|whisper)\b/],
|
|
99
|
+
["xai", /^grok\b/],
|
|
100
|
+
["google", /^(?:gemini|gemma)\b/],
|
|
101
|
+
["meta", /^llama\b/],
|
|
102
|
+
["mistral", /^(?:mistral|codestral|devstral|magistral|ministral|pixtral)\b/],
|
|
103
|
+
["deepseek", /^deepseek\b/],
|
|
104
|
+
["moonshot", /^(?:kimi|moonshot)\b/],
|
|
105
|
+
["qwen", /^(?:qwen|qwq)\b/],
|
|
106
|
+
["zhipu", /^glm\b/],
|
|
107
|
+
["nvidia", /^nemotron\b/]
|
|
108
|
+
];
|
|
109
|
+
var VENDOR_SEGMENTS = {
|
|
110
|
+
anthropic: "anthropic",
|
|
111
|
+
openai: "openai",
|
|
112
|
+
"x-ai": "xai",
|
|
113
|
+
xai: "xai",
|
|
114
|
+
google: "google",
|
|
115
|
+
"meta-llama": "meta",
|
|
116
|
+
mistralai: "mistral",
|
|
117
|
+
deepseek: "deepseek",
|
|
118
|
+
moonshotai: "moonshot",
|
|
119
|
+
qwen: "qwen",
|
|
120
|
+
"z-ai": "zhipu",
|
|
121
|
+
nvidia: "nvidia"
|
|
122
|
+
};
|
|
123
|
+
function vendorFromSlug(slug) {
|
|
124
|
+
for (const [vendor, pattern] of VENDOR_PATTERNS) if (pattern.test(slug)) return vendor;
|
|
125
|
+
return null;
|
|
126
|
+
}
|
|
127
|
+
function modelVendor(input) {
|
|
128
|
+
const ids = typeof input === "string" ? [input] : [upstreamOf(input), input.id];
|
|
129
|
+
for (const id of ids) {
|
|
130
|
+
if (!id) continue;
|
|
131
|
+
const lower = id.trim().toLowerCase();
|
|
132
|
+
if (lower.startsWith("codex/")) return "openai";
|
|
133
|
+
if (lower.startsWith("supergrok/")) return "xai";
|
|
134
|
+
const vendor = vendorFromSlug(modelSlug(lower));
|
|
135
|
+
if (vendor) return vendor;
|
|
136
|
+
const segment = lower.split("/").filter(Boolean).at(-2);
|
|
137
|
+
if (segment && Object.hasOwn(VENDOR_SEGMENTS, segment)) return VENDOR_SEGMENTS[segment];
|
|
138
|
+
}
|
|
139
|
+
if (typeof input !== "string" && input.label) {
|
|
140
|
+
return vendorFromSlug(input.label.trim().toLowerCase().replace(/\s+/g, "-"));
|
|
141
|
+
}
|
|
142
|
+
return null;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export {
|
|
146
|
+
modelLogoUrl,
|
|
147
|
+
modelSlug,
|
|
148
|
+
humanizeModelSlug,
|
|
149
|
+
isRawModelLabel,
|
|
150
|
+
modelDisplayName,
|
|
151
|
+
modelVendor
|
|
152
|
+
};
|
|
153
|
+
//# sourceMappingURL=chunk-2ZIHHL72.js.map
|