@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,150 @@
|
|
|
1
|
+
import {
|
|
2
|
+
EVENT_TRIGGERS_PER_AUTOMATION_MAX,
|
|
3
|
+
EVENT_TRIGGER_CONDITIONS_MAX,
|
|
4
|
+
EVENT_TRIGGER_TYPES_MAX,
|
|
5
|
+
EventCondition,
|
|
6
|
+
EventSourceKind,
|
|
7
|
+
EventTypeName,
|
|
8
|
+
MAX_EVENT_RUNS_PER_HOUR,
|
|
9
|
+
WebhookEventAdapter
|
|
10
|
+
} from "./chunk-PI5VIKJY.js";
|
|
11
|
+
import {
|
|
12
|
+
defineSchema
|
|
13
|
+
} from "./chunk-56SNIMDO.js";
|
|
14
|
+
|
|
15
|
+
// src/automation-templates.ts
|
|
16
|
+
import { z } from "zod";
|
|
17
|
+
var AUTOMATION_TEMPLATE_NAME_MAX_LENGTH = 120;
|
|
18
|
+
var AUTOMATION_TEMPLATE_DESCRIPTION_MAX_LENGTH = 500;
|
|
19
|
+
var AUTOMATION_TEMPLATE_INSTRUCTIONS_MAX_LENGTH = 2e4;
|
|
20
|
+
var AUTOMATION_TEMPLATES_PER_WORKSPACE_MAX = 200;
|
|
21
|
+
var Uuid = /* @__PURE__ */ defineSchema(() => z.string().uuid());
|
|
22
|
+
var AutomationTemplateSchedule = /* @__PURE__ */ defineSchema(
|
|
23
|
+
() => z.discriminatedUnion("type", [
|
|
24
|
+
z.object({
|
|
25
|
+
type: z.literal("calendar"),
|
|
26
|
+
hour: z.number().int().min(0).max(23),
|
|
27
|
+
minute: z.number().int().min(0).max(59),
|
|
28
|
+
/** Omitted: every day. */
|
|
29
|
+
daysOfWeek: z.array(
|
|
30
|
+
z.enum(["SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY"])
|
|
31
|
+
).min(1).max(7).optional()
|
|
32
|
+
}).strict(),
|
|
33
|
+
z.object({
|
|
34
|
+
type: z.literal("interval"),
|
|
35
|
+
everySeconds: z.number().int().min(60).max(366 * 86400)
|
|
36
|
+
}).strict()
|
|
37
|
+
])
|
|
38
|
+
);
|
|
39
|
+
var AutomationTemplateEventSource = /* @__PURE__ */ defineSchema(
|
|
40
|
+
() => z.object({
|
|
41
|
+
kind: EventSourceKind,
|
|
42
|
+
/** For a webhook: how it verifies and reads deliveries. */
|
|
43
|
+
adapter: WebhookEventAdapter.optional(),
|
|
44
|
+
/** For an MCP source: the server, as configured for the workspace. */
|
|
45
|
+
mcpServerId: z.string().min(1).max(256).optional(),
|
|
46
|
+
sourceId: Uuid.optional()
|
|
47
|
+
}).strict().superRefine((source, context) => {
|
|
48
|
+
if (source.kind === "webhook" !== (source.adapter !== void 0)) {
|
|
49
|
+
context.addIssue({
|
|
50
|
+
code: "custom",
|
|
51
|
+
path: ["adapter"],
|
|
52
|
+
message: "A webhook source names its adapter, and only a webhook source does"
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
if (source.kind === "mcp" !== (source.mcpServerId !== void 0)) {
|
|
56
|
+
context.addIssue({
|
|
57
|
+
code: "custom",
|
|
58
|
+
path: ["mcpServerId"],
|
|
59
|
+
message: "An MCP source names its server, and only an MCP source does"
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
})
|
|
63
|
+
);
|
|
64
|
+
var AutomationTemplateTrigger = /* @__PURE__ */ defineSchema(
|
|
65
|
+
() => z.object({
|
|
66
|
+
source: AutomationTemplateEventSource,
|
|
67
|
+
eventTypes: z.array(EventTypeName).min(1).max(EVENT_TRIGGER_TYPES_MAX),
|
|
68
|
+
conditions: z.array(EventCondition).max(EVENT_TRIGGER_CONDITIONS_MAX).default([]),
|
|
69
|
+
/** Also fire on events made by Opengeni's own bots. */
|
|
70
|
+
includeOwnEvents: z.boolean().default(false),
|
|
71
|
+
/** MCP subscription arguments. */
|
|
72
|
+
arguments: z.record(z.string(), z.unknown()).optional()
|
|
73
|
+
}).strict()
|
|
74
|
+
);
|
|
75
|
+
var TemplateName = /* @__PURE__ */ defineSchema(
|
|
76
|
+
() => z.string().trim().min(1).max(AUTOMATION_TEMPLATE_NAME_MAX_LENGTH)
|
|
77
|
+
);
|
|
78
|
+
var TemplateDescription = /* @__PURE__ */ defineSchema(
|
|
79
|
+
() => z.string().trim().max(AUTOMATION_TEMPLATE_DESCRIPTION_MAX_LENGTH)
|
|
80
|
+
);
|
|
81
|
+
var TemplateInstructions = /* @__PURE__ */ defineSchema(
|
|
82
|
+
() => z.string().trim().min(1).max(AUTOMATION_TEMPLATE_INSTRUCTIONS_MAX_LENGTH)
|
|
83
|
+
);
|
|
84
|
+
var TemplateTriggers = /* @__PURE__ */ defineSchema(
|
|
85
|
+
() => z.array(AutomationTemplateTrigger).max(EVENT_TRIGGERS_PER_AUTOMATION_MAX)
|
|
86
|
+
);
|
|
87
|
+
var TemplateMaxRunsPerHour = /* @__PURE__ */ defineSchema(
|
|
88
|
+
() => z.number().int().min(1).max(MAX_EVENT_RUNS_PER_HOUR).nullable()
|
|
89
|
+
);
|
|
90
|
+
var WorkspaceAutomationTemplate = /* @__PURE__ */ defineSchema(
|
|
91
|
+
() => z.object({
|
|
92
|
+
id: Uuid,
|
|
93
|
+
workspaceId: Uuid,
|
|
94
|
+
name: z.string(),
|
|
95
|
+
description: z.string(),
|
|
96
|
+
instructions: z.string(),
|
|
97
|
+
/** Null: it runs only on its events or with Run now. */
|
|
98
|
+
schedule: AutomationTemplateSchedule.nullable(),
|
|
99
|
+
triggers: TemplateTriggers,
|
|
100
|
+
maxRunsPerHour: TemplateMaxRunsPerHour,
|
|
101
|
+
/** Who saved it; null when a workspace-level caller did. */
|
|
102
|
+
createdBySubjectId: z.string().nullable(),
|
|
103
|
+
/** `manage`: the reader may rename, change or delete it. */
|
|
104
|
+
viewerAccess: z.enum(["manage", "use"]),
|
|
105
|
+
createdAt: z.string(),
|
|
106
|
+
updatedAt: z.string()
|
|
107
|
+
})
|
|
108
|
+
);
|
|
109
|
+
var CreateAutomationTemplateRequest = /* @__PURE__ */ defineSchema(
|
|
110
|
+
() => z.object({
|
|
111
|
+
name: TemplateName,
|
|
112
|
+
description: TemplateDescription.default(""),
|
|
113
|
+
instructions: TemplateInstructions,
|
|
114
|
+
schedule: AutomationTemplateSchedule.nullable().default(null),
|
|
115
|
+
triggers: TemplateTriggers.default([]),
|
|
116
|
+
maxRunsPerHour: TemplateMaxRunsPerHour.default(null)
|
|
117
|
+
}).strict()
|
|
118
|
+
);
|
|
119
|
+
var UpdateAutomationTemplateRequest = /* @__PURE__ */ defineSchema(
|
|
120
|
+
() => z.object({
|
|
121
|
+
name: TemplateName.optional(),
|
|
122
|
+
description: TemplateDescription.optional(),
|
|
123
|
+
instructions: TemplateInstructions.optional(),
|
|
124
|
+
schedule: AutomationTemplateSchedule.nullable().optional(),
|
|
125
|
+
triggers: TemplateTriggers.optional(),
|
|
126
|
+
maxRunsPerHour: TemplateMaxRunsPerHour.optional()
|
|
127
|
+
}).strict()
|
|
128
|
+
);
|
|
129
|
+
var ListAutomationTemplatesResponse = /* @__PURE__ */ defineSchema(
|
|
130
|
+
() => z.object({ templates: z.array(WorkspaceAutomationTemplate) })
|
|
131
|
+
);
|
|
132
|
+
var AutomationTemplateResponse = /* @__PURE__ */ defineSchema(
|
|
133
|
+
() => z.object({ template: WorkspaceAutomationTemplate })
|
|
134
|
+
);
|
|
135
|
+
|
|
136
|
+
export {
|
|
137
|
+
AUTOMATION_TEMPLATE_NAME_MAX_LENGTH,
|
|
138
|
+
AUTOMATION_TEMPLATE_DESCRIPTION_MAX_LENGTH,
|
|
139
|
+
AUTOMATION_TEMPLATE_INSTRUCTIONS_MAX_LENGTH,
|
|
140
|
+
AUTOMATION_TEMPLATES_PER_WORKSPACE_MAX,
|
|
141
|
+
AutomationTemplateSchedule,
|
|
142
|
+
AutomationTemplateEventSource,
|
|
143
|
+
AutomationTemplateTrigger,
|
|
144
|
+
WorkspaceAutomationTemplate,
|
|
145
|
+
CreateAutomationTemplateRequest,
|
|
146
|
+
UpdateAutomationTemplateRequest,
|
|
147
|
+
ListAutomationTemplatesResponse,
|
|
148
|
+
AutomationTemplateResponse
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=chunk-DGG6IBBK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/automation-templates.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { defineSchema } from \"./define-schema\";\nimport {\n EVENT_TRIGGER_CONDITIONS_MAX,\n EVENT_TRIGGER_TYPES_MAX,\n EVENT_TRIGGERS_PER_AUTOMATION_MAX,\n EventCondition,\n EventSourceKind,\n EventTypeName,\n MAX_EVENT_RUNS_PER_HOUR,\n WebhookEventAdapter,\n} from \"./event-triggers\";\n\n/**\n * Automation templates: where a new automation starts. A template holds what\n * an automation does and when, but never where its runs go, who owns it or\n * which accounts it uses: those come from wherever it is used. Its schedule\n * has no time zone (the person's own applies) and its triggers name a kind\n * of source rather than a source, since sources differ per person.\n *\n * Built-in and host templates live in the client. A workspace keeps the\n * templates its people save from their automations.\n *\n * This module must not import `./index`.\n */\n\nexport const AUTOMATION_TEMPLATE_NAME_MAX_LENGTH = 120;\nexport const AUTOMATION_TEMPLATE_DESCRIPTION_MAX_LENGTH = 500;\nexport const AUTOMATION_TEMPLATE_INSTRUCTIONS_MAX_LENGTH = 20_000;\n/** Saved templates a workspace keeps; saving another past this is refused. */\nexport const AUTOMATION_TEMPLATES_PER_WORKSPACE_MAX = 200;\n\nconst Uuid = /* @__PURE__ */ defineSchema(() => z.string().uuid());\n\n/** When it runs, read in the time zone of whoever uses the template. */\nexport const AutomationTemplateSchedule = /* @__PURE__ */ defineSchema(() =>\n z.discriminatedUnion(\"type\", [\n z\n .object({\n type: z.literal(\"calendar\"),\n hour: z.number().int().min(0).max(23),\n minute: z.number().int().min(0).max(59),\n /** Omitted: every day. */\n daysOfWeek: z\n .array(\n z.enum([\"SUNDAY\", \"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\"]),\n )\n .min(1)\n .max(7)\n .optional(),\n })\n .strict(),\n z\n .object({\n type: z.literal(\"interval\"),\n everySeconds: z\n .number()\n .int()\n .min(60)\n .max(366 * 86_400),\n })\n .strict(),\n ]),\n);\nexport type AutomationTemplateSchedule = z.infer<typeof AutomationTemplateSchedule>;\n\n/**\n * The kind of source a template trigger listens on: GitHub, a Linear webhook,\n * one MCP server, this workspace. `sourceId` names a source shared with the\n * workspace, used when the person can use it; otherwise their own source of\n * this kind is.\n */\nexport const AutomationTemplateEventSource = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n kind: EventSourceKind,\n /** For a webhook: how it verifies and reads deliveries. */\n adapter: WebhookEventAdapter.optional(),\n /** For an MCP source: the server, as configured for the workspace. */\n mcpServerId: z.string().min(1).max(256).optional(),\n sourceId: Uuid.optional(),\n })\n .strict()\n .superRefine((source, context) => {\n if ((source.kind === \"webhook\") !== (source.adapter !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"adapter\"],\n message: \"A webhook source names its adapter, and only a webhook source does\",\n });\n }\n if ((source.kind === \"mcp\") !== (source.mcpServerId !== undefined)) {\n context.addIssue({\n code: \"custom\",\n path: [\"mcpServerId\"],\n message: \"An MCP source names its server, and only an MCP source does\",\n });\n }\n }),\n);\nexport type AutomationTemplateEventSource = z.infer<typeof AutomationTemplateEventSource>;\n\nexport const AutomationTemplateTrigger = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n source: AutomationTemplateEventSource,\n eventTypes: z.array(EventTypeName).min(1).max(EVENT_TRIGGER_TYPES_MAX),\n conditions: z.array(EventCondition).max(EVENT_TRIGGER_CONDITIONS_MAX).default([]),\n /** Also fire on events made by Opengeni's own bots. */\n includeOwnEvents: z.boolean().default(false),\n /** MCP subscription arguments. */\n arguments: z.record(z.string(), z.unknown()).optional(),\n })\n .strict(),\n);\nexport type AutomationTemplateTrigger = z.input<typeof AutomationTemplateTrigger>;\n\nconst TemplateName = /* @__PURE__ */ defineSchema(() =>\n z.string().trim().min(1).max(AUTOMATION_TEMPLATE_NAME_MAX_LENGTH),\n);\nconst TemplateDescription = /* @__PURE__ */ defineSchema(() =>\n z.string().trim().max(AUTOMATION_TEMPLATE_DESCRIPTION_MAX_LENGTH),\n);\n/** What the agent does on each run. */\nconst TemplateInstructions = /* @__PURE__ */ defineSchema(() =>\n z.string().trim().min(1).max(AUTOMATION_TEMPLATE_INSTRUCTIONS_MAX_LENGTH),\n);\nconst TemplateTriggers = /* @__PURE__ */ defineSchema(() =>\n z.array(AutomationTemplateTrigger).max(EVENT_TRIGGERS_PER_AUTOMATION_MAX),\n);\n/** The storm guard for event runs; null takes the default. */\nconst TemplateMaxRunsPerHour = /* @__PURE__ */ defineSchema(() =>\n z.number().int().min(1).max(MAX_EVENT_RUNS_PER_HOUR).nullable(),\n);\n\n/** A template saved in a workspace. */\nexport const WorkspaceAutomationTemplate = /* @__PURE__ */ defineSchema(() =>\n z.object({\n id: Uuid,\n workspaceId: Uuid,\n name: z.string(),\n description: z.string(),\n instructions: z.string(),\n /** Null: it runs only on its events or with Run now. */\n schedule: AutomationTemplateSchedule.nullable(),\n triggers: TemplateTriggers,\n maxRunsPerHour: TemplateMaxRunsPerHour,\n /** Who saved it; null when a workspace-level caller did. */\n createdBySubjectId: z.string().nullable(),\n /** `manage`: the reader may rename, change or delete it. */\n viewerAccess: z.enum([\"manage\", \"use\"]),\n createdAt: z.string(),\n updatedAt: z.string(),\n }),\n);\nexport type WorkspaceAutomationTemplate = z.output<typeof WorkspaceAutomationTemplate>;\n\nexport const CreateAutomationTemplateRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n name: TemplateName,\n description: TemplateDescription.default(\"\"),\n instructions: TemplateInstructions,\n schedule: AutomationTemplateSchedule.nullable().default(null),\n triggers: TemplateTriggers.default([]),\n maxRunsPerHour: TemplateMaxRunsPerHour.default(null),\n })\n .strict(),\n);\nexport type CreateAutomationTemplateRequest = z.input<typeof CreateAutomationTemplateRequest>;\nexport type ParsedCreateAutomationTemplateRequest = z.output<\n typeof CreateAutomationTemplateRequest\n>;\n\n/** Changes only what it names. */\nexport const UpdateAutomationTemplateRequest = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n name: TemplateName.optional(),\n description: TemplateDescription.optional(),\n instructions: TemplateInstructions.optional(),\n schedule: AutomationTemplateSchedule.nullable().optional(),\n triggers: TemplateTriggers.optional(),\n maxRunsPerHour: TemplateMaxRunsPerHour.optional(),\n })\n .strict(),\n);\nexport type UpdateAutomationTemplateRequest = z.input<typeof UpdateAutomationTemplateRequest>;\nexport type ParsedUpdateAutomationTemplateRequest = z.output<\n typeof UpdateAutomationTemplateRequest\n>;\n\nexport const ListAutomationTemplatesResponse = /* @__PURE__ */ defineSchema(() =>\n z.object({ templates: z.array(WorkspaceAutomationTemplate) }),\n);\nexport type ListAutomationTemplatesResponse = z.output<typeof ListAutomationTemplatesResponse>;\n\nexport const AutomationTemplateResponse = /* @__PURE__ */ defineSchema(() =>\n z.object({ template: WorkspaceAutomationTemplate }),\n);\nexport type AutomationTemplateResponse = z.output<typeof AutomationTemplateResponse>;\n"],"mappings":"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","names":[]}
|
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
string
|
|
3
|
+
} from "./chunk-AQYDZUJV.js";
|
|
4
|
+
import {
|
|
5
|
+
defineSchema
|
|
6
|
+
} from "./chunk-56SNIMDO.js";
|
|
7
|
+
|
|
1
8
|
// src/connector-attachments.ts
|
|
2
9
|
import { z } from "zod";
|
|
3
10
|
var CONNECTOR_ATTACHMENT_TRANSFER_VERSION = 1;
|
|
@@ -24,7 +31,7 @@ function utf8Bytes(value) {
|
|
|
24
31
|
return textEncoder.encode(value).byteLength;
|
|
25
32
|
}
|
|
26
33
|
function boundedString(maxUtf8Bytes) {
|
|
27
|
-
return
|
|
34
|
+
return string.refine((value) => utf8Bytes(value) <= maxUtf8Bytes, {
|
|
28
35
|
message: `must be at most ${maxUtf8Bytes} UTF-8 bytes`
|
|
29
36
|
});
|
|
30
37
|
}
|
|
@@ -74,15 +81,17 @@ function privateUrlCredentialValues(value) {
|
|
|
74
81
|
function publicMetadataContainsCredential(publicValue, credential) {
|
|
75
82
|
return publicValue.includes(credential);
|
|
76
83
|
}
|
|
77
|
-
var ConnectorAttachmentProviderIdentity =
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
})
|
|
84
|
+
var ConnectorAttachmentProviderIdentity = /* @__PURE__ */ defineSchema(
|
|
85
|
+
() => z.object({
|
|
86
|
+
provider: boundedString(CONNECTOR_ATTACHMENT_PROVIDER_MAX_UTF8_BYTES).regex(PROVIDER_PATTERN),
|
|
87
|
+
kind: z.literal("attachment"),
|
|
88
|
+
value: boundedString(CONNECTOR_ATTACHMENT_PROVIDER_ID_MAX_UTF8_BYTES).min(1).refine((value) => !CONTROL_CHARACTER_PATTERN.test(value), {
|
|
89
|
+
message: "must not contain control characters"
|
|
90
|
+
}).refine((value) => !isHttpUrl(value) && !containsHttpUrlReference(value), {
|
|
91
|
+
message: "must be an opaque provider attachment identity, not a URL"
|
|
92
|
+
})
|
|
93
|
+
}).strict()
|
|
94
|
+
);
|
|
86
95
|
var ConnectorAttachmentFileName = boundedString(
|
|
87
96
|
CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES
|
|
88
97
|
).min(1).refine(
|
|
@@ -94,79 +103,87 @@ var ConnectorAttachmentMediaType = boundedString(
|
|
|
94
103
|
).regex(MEDIA_TYPE_PATTERN).refine((value) => !containsHttpUrlReference(value), {
|
|
95
104
|
message: "must not contain an HTTP URL reference"
|
|
96
105
|
});
|
|
97
|
-
var ConnectorAttachmentSha256 =
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
106
|
+
var ConnectorAttachmentSha256 = /* @__PURE__ */ defineSchema(
|
|
107
|
+
() => string.regex(SHA256_PATTERN)
|
|
108
|
+
);
|
|
109
|
+
var ConnectorAttachmentPrivateSource = /* @__PURE__ */ defineSchema(
|
|
110
|
+
() => z.object({
|
|
111
|
+
url: boundedString(CONNECTOR_ATTACHMENT_SOURCE_URL_MAX_UTF8_BYTES).superRefine(
|
|
112
|
+
(value, context) => {
|
|
113
|
+
let parsed;
|
|
114
|
+
try {
|
|
115
|
+
parsed = new URL(value);
|
|
116
|
+
} catch {
|
|
117
|
+
context.addIssue({
|
|
118
|
+
code: "custom",
|
|
119
|
+
message: "must be an absolute URL"
|
|
120
|
+
});
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (parsed.protocol !== "http:" && parsed.protocol !== "https:") {
|
|
124
|
+
context.addIssue({ code: "custom", message: "must use http or https" });
|
|
125
|
+
}
|
|
126
|
+
if (parsed.username || parsed.password) {
|
|
127
|
+
context.addIssue({
|
|
128
|
+
code: "custom",
|
|
129
|
+
message: "must not contain URL userinfo"
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
if (parsed.hash) {
|
|
133
|
+
context.addIssue({
|
|
134
|
+
code: "custom",
|
|
135
|
+
message: "must not contain a URL fragment"
|
|
136
|
+
});
|
|
137
|
+
}
|
|
113
138
|
}
|
|
114
|
-
|
|
139
|
+
),
|
|
140
|
+
expiresAt: z.iso.datetime({ offset: true })
|
|
141
|
+
}).strict()
|
|
142
|
+
);
|
|
143
|
+
var ConnectorAttachmentTransfer = /* @__PURE__ */ defineSchema(
|
|
144
|
+
() => z.object({
|
|
145
|
+
providerAttachmentId: ConnectorAttachmentProviderIdentity,
|
|
146
|
+
fileName: ConnectorAttachmentFileName,
|
|
147
|
+
mediaType: ConnectorAttachmentMediaType,
|
|
148
|
+
byteSize: z.number().int().min(0).max(CONNECTOR_ATTACHMENT_MAX_BYTES),
|
|
149
|
+
contentSha256: ConnectorAttachmentSha256,
|
|
150
|
+
source: ConnectorAttachmentPrivateSource
|
|
151
|
+
}).strict().superRefine((attachment, context) => {
|
|
152
|
+
const publicValues = [
|
|
153
|
+
attachment.providerAttachmentId.value,
|
|
154
|
+
attachment.fileName,
|
|
155
|
+
attachment.mediaType
|
|
156
|
+
];
|
|
157
|
+
for (const credential of privateUrlCredentialValues(attachment.source.url)) {
|
|
158
|
+
if (publicValues.some((value) => publicMetadataContainsCredential(value, credential))) {
|
|
115
159
|
context.addIssue({
|
|
116
160
|
code: "custom",
|
|
117
|
-
message: "must not
|
|
161
|
+
message: "private source credentials must not appear in public attachment metadata"
|
|
118
162
|
});
|
|
163
|
+
return;
|
|
119
164
|
}
|
|
120
|
-
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
);
|
|
168
|
+
var ConnectorAttachmentTransferEnvelope = /* @__PURE__ */ defineSchema(
|
|
169
|
+
() => z.object({
|
|
170
|
+
version: z.literal(CONNECTOR_ATTACHMENT_TRANSFER_VERSION),
|
|
171
|
+
attachments: z.array(ConnectorAttachmentTransfer).min(1).max(CONNECTOR_ATTACHMENT_MAX_COUNT)
|
|
172
|
+
}).strict().superRefine((envelope, context) => {
|
|
173
|
+
const identities = /* @__PURE__ */ new Set();
|
|
174
|
+
for (const [index, attachment] of envelope.attachments.entries()) {
|
|
175
|
+
const identity = `${attachment.providerAttachmentId.provider}\0${attachment.providerAttachmentId.value}`;
|
|
176
|
+
if (identities.has(identity)) {
|
|
121
177
|
context.addIssue({
|
|
122
178
|
code: "custom",
|
|
123
|
-
message: "
|
|
179
|
+
message: "provider attachment identities must be unique",
|
|
180
|
+
path: ["attachments", index, "providerAttachmentId"]
|
|
124
181
|
});
|
|
125
182
|
}
|
|
183
|
+
identities.add(identity);
|
|
126
184
|
}
|
|
127
|
-
)
|
|
128
|
-
|
|
129
|
-
}).strict();
|
|
130
|
-
var ConnectorAttachmentTransfer = z.object({
|
|
131
|
-
providerAttachmentId: ConnectorAttachmentProviderIdentity,
|
|
132
|
-
fileName: ConnectorAttachmentFileName,
|
|
133
|
-
mediaType: ConnectorAttachmentMediaType,
|
|
134
|
-
byteSize: z.number().int().min(0).max(CONNECTOR_ATTACHMENT_MAX_BYTES),
|
|
135
|
-
contentSha256: ConnectorAttachmentSha256,
|
|
136
|
-
source: ConnectorAttachmentPrivateSource
|
|
137
|
-
}).strict().superRefine((attachment, context) => {
|
|
138
|
-
const publicValues = [
|
|
139
|
-
attachment.providerAttachmentId.value,
|
|
140
|
-
attachment.fileName,
|
|
141
|
-
attachment.mediaType
|
|
142
|
-
];
|
|
143
|
-
for (const credential of privateUrlCredentialValues(attachment.source.url)) {
|
|
144
|
-
if (publicValues.some((value) => publicMetadataContainsCredential(value, credential))) {
|
|
145
|
-
context.addIssue({
|
|
146
|
-
code: "custom",
|
|
147
|
-
message: "private source credentials must not appear in public attachment metadata"
|
|
148
|
-
});
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
});
|
|
153
|
-
var ConnectorAttachmentTransferEnvelope = z.object({
|
|
154
|
-
version: z.literal(CONNECTOR_ATTACHMENT_TRANSFER_VERSION),
|
|
155
|
-
attachments: z.array(ConnectorAttachmentTransfer).min(1).max(CONNECTOR_ATTACHMENT_MAX_COUNT)
|
|
156
|
-
}).strict().superRefine((envelope, context) => {
|
|
157
|
-
const identities = /* @__PURE__ */ new Set();
|
|
158
|
-
for (const [index, attachment] of envelope.attachments.entries()) {
|
|
159
|
-
const identity = `${attachment.providerAttachmentId.provider}\0${attachment.providerAttachmentId.value}`;
|
|
160
|
-
if (identities.has(identity)) {
|
|
161
|
-
context.addIssue({
|
|
162
|
-
code: "custom",
|
|
163
|
-
message: "provider attachment identities must be unique",
|
|
164
|
-
path: ["attachments", index, "providerAttachmentId"]
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
identities.add(identity);
|
|
168
|
-
}
|
|
169
|
-
});
|
|
185
|
+
})
|
|
186
|
+
);
|
|
170
187
|
var ConnectorAttachmentSandboxPath = boundedString(
|
|
171
188
|
CONNECTOR_ATTACHMENT_SANDBOX_PATH_MAX_UTF8_BYTES
|
|
172
189
|
).min(1).refine(
|
|
@@ -184,34 +201,38 @@ var ConnectorAttachmentSandboxPath = boundedString(
|
|
|
184
201
|
},
|
|
185
202
|
{ message: "must be a confined connector attachment sandbox path" }
|
|
186
203
|
);
|
|
187
|
-
var ConnectorAttachmentReceipt =
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
204
|
+
var ConnectorAttachmentReceipt = /* @__PURE__ */ defineSchema(
|
|
205
|
+
() => z.object({
|
|
206
|
+
providerAttachmentId: ConnectorAttachmentProviderIdentity,
|
|
207
|
+
fileName: ConnectorAttachmentFileName,
|
|
208
|
+
mediaType: ConnectorAttachmentMediaType,
|
|
209
|
+
byteSize: z.number().int().min(0).max(CONNECTOR_ATTACHMENT_MAX_BYTES),
|
|
210
|
+
contentSha256: ConnectorAttachmentSha256,
|
|
211
|
+
sandboxPath: ConnectorAttachmentSandboxPath
|
|
212
|
+
}).strict().superRefine((receipt, context) => {
|
|
213
|
+
const segments = receipt.sandboxPath.split("/");
|
|
214
|
+
if (segments[2] !== receipt.providerAttachmentId.provider) {
|
|
215
|
+
context.addIssue({
|
|
216
|
+
code: "custom",
|
|
217
|
+
message: "sandbox path provider must match the provider attachment identity",
|
|
218
|
+
path: ["sandboxPath"]
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
if (segments[4] !== receipt.fileName) {
|
|
222
|
+
context.addIssue({
|
|
223
|
+
code: "custom",
|
|
224
|
+
message: "sandbox path filename must match the attachment filename",
|
|
225
|
+
path: ["sandboxPath"]
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
})
|
|
229
|
+
);
|
|
230
|
+
var ConnectorAttachmentReceiptEnvelope = /* @__PURE__ */ defineSchema(
|
|
231
|
+
() => z.object({
|
|
232
|
+
version: z.literal(CONNECTOR_ATTACHMENT_RECEIPT_VERSION),
|
|
233
|
+
attachments: z.array(ConnectorAttachmentReceipt).min(1).max(CONNECTOR_ATTACHMENT_MAX_COUNT)
|
|
234
|
+
}).strict()
|
|
235
|
+
);
|
|
215
236
|
function parseConnectorAttachmentTransferEnvelope(value, options = {}) {
|
|
216
237
|
const envelope = ConnectorAttachmentTransferEnvelope.parse(value);
|
|
217
238
|
const nowMs = options.nowMs ?? Date.now();
|
|
@@ -248,4 +269,4 @@ export {
|
|
|
248
269
|
ConnectorAttachmentReceiptEnvelope,
|
|
249
270
|
parseConnectorAttachmentTransferEnvelope
|
|
250
271
|
};
|
|
251
|
-
//# sourceMappingURL=chunk-
|
|
272
|
+
//# sourceMappingURL=chunk-FBCTUMHI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/connector-attachments.ts"],"sourcesContent":["import * as primitives from \"./primitives\";\nimport { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\nexport const CONNECTOR_ATTACHMENT_TRANSFER_VERSION = 1 as const;\nexport const CONNECTOR_ATTACHMENT_RECEIPT_VERSION = 1 as const;\nexport const CONNECTOR_ATTACHMENT_TRANSFER_META_KEY =\n \"opengeni/connector-attachment-transfers\" as const;\nexport const CONNECTOR_ATTACHMENT_RECEIPT_META_KEY =\n \"opengeni/connector-attachment-receipts\" as const;\nexport const CONNECTOR_ATTACHMENT_MAX_COUNT = 16;\n// Must remain byte-for-byte aligned with Channel A's exact workspace importer.\nexport const CONNECTOR_ATTACHMENT_MAX_BYTES = 5_000_000_000;\nexport const CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES = 255;\nexport const CONNECTOR_ATTACHMENT_MEDIA_TYPE_MAX_UTF8_BYTES = 256;\nexport const CONNECTOR_ATTACHMENT_PROVIDER_MAX_UTF8_BYTES = 128;\nexport const CONNECTOR_ATTACHMENT_PROVIDER_ID_MAX_UTF8_BYTES = 512;\nexport const CONNECTOR_ATTACHMENT_SOURCE_URL_MAX_UTF8_BYTES = 8 * 1024;\nexport const CONNECTOR_ATTACHMENT_SANDBOX_PATH_MAX_UTF8_BYTES = 2 * 1024;\n\nconst PROVIDER_PATTERN = /^[a-z0-9]+(?:[._-][a-z0-9]+)*$/u;\nconst SHA256_PATTERN = /^[0-9a-f]{64}$/u;\nconst MEDIA_TYPE_PATTERN =\n /^[a-z0-9!#$&^_.+-]+\\/[a-z0-9!#$&^_.+-]+(?:\\s*;\\s*[a-z0-9!#$&^_.+-]+=(?:[a-z0-9!#$&^_.+-]+|\"[^\"\\r\\n]*\"))*$/iu;\nconst CONTROL_CHARACTER_PATTERN = /[\\u0000-\\u001f\\u007f]/u;\nconst HTTP_URL_REFERENCE_PATTERN = /(?:https?:)?\\/\\/[^\\s]/iu;\nconst PORTABLE_FILENAME_FORBIDDEN_PATTERN = /[<>:\"|?*]/u;\nconst PORTABLE_FILENAME_RESERVED_PATTERN = /^(?:con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\\.|$)/iu;\nconst textEncoder = new TextEncoder();\n\nfunction utf8Bytes(value: string): number {\n return textEncoder.encode(value).byteLength;\n}\n\nfunction boundedString(maxUtf8Bytes: number) {\n return primitives.string.refine((value) => utf8Bytes(value) <= maxUtf8Bytes, {\n message: `must be at most ${maxUtf8Bytes} UTF-8 bytes`,\n });\n}\n\nfunction isHttpUrl(value: string): boolean {\n try {\n const parsed = new URL(value);\n return parsed.protocol === \"http:\" || parsed.protocol === \"https:\";\n } catch {\n return false;\n }\n}\n\nfunction containsHttpUrlReference(value: string): boolean {\n return HTTP_URL_REFERENCE_PATTERN.test(value);\n}\n\nfunction isPrivateUrlCredentialQueryName(value: string): boolean {\n const normalized = value.toLowerCase().replace(/[^a-z0-9]/gu, \"\");\n return (\n normalized === \"sig\" ||\n normalized === \"auth\" ||\n normalized.endsWith(\"signature\") ||\n normalized.endsWith(\"token\") ||\n normalized.endsWith(\"credential\") ||\n normalized.endsWith(\"secret\") ||\n normalized.endsWith(\"password\") ||\n normalized.endsWith(\"passcode\") ||\n normalized.endsWith(\"authorization\") ||\n normalized.endsWith(\"apikey\") ||\n normalized.endsWith(\"accesskey\") ||\n normalized.endsWith(\"securitytoken\") ||\n normalized.endsWith(\"sas\") ||\n normalized === \"googleaccessid\"\n );\n}\n\nfunction privateUrlCredentialValues(value: string): string[] {\n let parsed: URL;\n try {\n parsed = new URL(value);\n } catch {\n return [];\n }\n const credentials = new Set<string>();\n for (const [name, credential] of parsed.searchParams) {\n if (credential && isPrivateUrlCredentialQueryName(name)) credentials.add(credential);\n }\n for (const pair of parsed.search.slice(1).split(\"&\")) {\n if (!pair) continue;\n const separator = pair.indexOf(\"=\");\n const rawName = separator === -1 ? pair : pair.slice(0, separator);\n const rawCredential = separator === -1 ? \"\" : pair.slice(separator + 1);\n let decodedName: string;\n try {\n decodedName = decodeURIComponent(rawName.replace(/\\+/gu, \" \"));\n } catch {\n continue;\n }\n if (rawCredential && isPrivateUrlCredentialQueryName(decodedName)) {\n credentials.add(rawCredential);\n }\n }\n return [...credentials];\n}\n\nfunction publicMetadataContainsCredential(publicValue: string, credential: string): boolean {\n return publicValue.includes(credential);\n}\n\nexport const ConnectorAttachmentProviderIdentity = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n provider: boundedString(CONNECTOR_ATTACHMENT_PROVIDER_MAX_UTF8_BYTES).regex(PROVIDER_PATTERN),\n kind: z.literal(\"attachment\"),\n value: boundedString(CONNECTOR_ATTACHMENT_PROVIDER_ID_MAX_UTF8_BYTES)\n .min(1)\n .refine((value) => !CONTROL_CHARACTER_PATTERN.test(value), {\n message: \"must not contain control characters\",\n })\n .refine((value) => !isHttpUrl(value) && !containsHttpUrlReference(value), {\n message: \"must be an opaque provider attachment identity, not a URL\",\n }),\n })\n .strict(),\n);\nexport type ConnectorAttachmentProviderIdentity = z.infer<\n typeof ConnectorAttachmentProviderIdentity\n>;\n\nexport const ConnectorAttachmentFileName = boundedString(\n CONNECTOR_ATTACHMENT_FILENAME_MAX_UTF8_BYTES,\n)\n .min(1)\n .refine(\n (value) =>\n value !== \".\" &&\n value !== \"..\" &&\n value === value.trim() &&\n !value.includes(\"/\") &&\n !value.includes(\"\\\\\") &&\n !CONTROL_CHARACTER_PATTERN.test(value) &&\n !PORTABLE_FILENAME_FORBIDDEN_PATTERN.test(value) &&\n !/[ .]$/u.test(value) &&\n !PORTABLE_FILENAME_RESERVED_PATTERN.test(value),\n { message: \"must be a safe leaf filename\" },\n );\n\nexport const ConnectorAttachmentMediaType = boundedString(\n CONNECTOR_ATTACHMENT_MEDIA_TYPE_MAX_UTF8_BYTES,\n)\n .regex(MEDIA_TYPE_PATTERN)\n .refine((value) => !containsHttpUrlReference(value), {\n message: \"must not contain an HTTP URL reference\",\n });\n\nexport const ConnectorAttachmentSha256 = /* @__PURE__ */ defineSchema(() =>\n primitives.string.regex(SHA256_PATTERN),\n);\n\nexport const ConnectorAttachmentPrivateSource = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n url: boundedString(CONNECTOR_ATTACHMENT_SOURCE_URL_MAX_UTF8_BYTES).superRefine(\n (value, context) => {\n let parsed: URL;\n try {\n parsed = new URL(value);\n } catch {\n context.addIssue({\n code: \"custom\",\n message: \"must be an absolute URL\",\n });\n return;\n }\n if (parsed.protocol !== \"http:\" && parsed.protocol !== \"https:\") {\n context.addIssue({ code: \"custom\", message: \"must use http or https\" });\n }\n if (parsed.username || parsed.password) {\n context.addIssue({\n code: \"custom\",\n message: \"must not contain URL userinfo\",\n });\n }\n if (parsed.hash) {\n context.addIssue({\n code: \"custom\",\n message: \"must not contain a URL fragment\",\n });\n }\n },\n ),\n expiresAt: z.iso.datetime({ offset: true }),\n })\n .strict(),\n);\nexport type ConnectorAttachmentPrivateSource = z.infer<typeof ConnectorAttachmentPrivateSource>;\n\nexport const ConnectorAttachmentTransfer = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n providerAttachmentId: ConnectorAttachmentProviderIdentity,\n fileName: ConnectorAttachmentFileName,\n mediaType: ConnectorAttachmentMediaType,\n byteSize: z.number().int().min(0).max(CONNECTOR_ATTACHMENT_MAX_BYTES),\n contentSha256: ConnectorAttachmentSha256,\n source: ConnectorAttachmentPrivateSource,\n })\n .strict()\n .superRefine((attachment, context) => {\n const publicValues = [\n attachment.providerAttachmentId.value,\n attachment.fileName,\n attachment.mediaType,\n ];\n for (const credential of privateUrlCredentialValues(attachment.source.url)) {\n if (publicValues.some((value) => publicMetadataContainsCredential(value, credential))) {\n context.addIssue({\n code: \"custom\",\n message: \"private source credentials must not appear in public attachment metadata\",\n });\n return;\n }\n }\n }),\n);\nexport type ConnectorAttachmentTransfer = z.infer<typeof ConnectorAttachmentTransfer>;\n\nexport const ConnectorAttachmentTransferEnvelope = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n version: z.literal(CONNECTOR_ATTACHMENT_TRANSFER_VERSION),\n attachments: z.array(ConnectorAttachmentTransfer).min(1).max(CONNECTOR_ATTACHMENT_MAX_COUNT),\n })\n .strict()\n .superRefine((envelope, context) => {\n const identities = new Set<string>();\n for (const [index, attachment] of envelope.attachments.entries()) {\n const identity = `${attachment.providerAttachmentId.provider}\\0${attachment.providerAttachmentId.value}`;\n if (identities.has(identity)) {\n context.addIssue({\n code: \"custom\",\n message: \"provider attachment identities must be unique\",\n path: [\"attachments\", index, \"providerAttachmentId\"],\n });\n }\n identities.add(identity);\n }\n }),\n);\nexport type ConnectorAttachmentTransferEnvelope = z.infer<\n typeof ConnectorAttachmentTransferEnvelope\n>;\n\nexport const ConnectorAttachmentSandboxPath = boundedString(\n CONNECTOR_ATTACHMENT_SANDBOX_PATH_MAX_UTF8_BYTES,\n)\n .min(1)\n .refine(\n (value) => {\n if (\n value !== value.trim() ||\n value.startsWith(\"/\") ||\n /^[A-Za-z]:[\\\\/]/u.test(value) ||\n value.includes(\"\\\\\") ||\n CONTROL_CHARACTER_PATTERN.test(value)\n ) {\n return false;\n }\n const segments = value.split(\"/\");\n if (\n segments.length !== 5 ||\n segments[0] !== \".opengeni\" ||\n segments[1] !== \"connector-attachments\" ||\n !PROVIDER_PATTERN.test(segments[2] ?? \"\") ||\n !/^[0-9a-f]{32}$/u.test(segments[3] ?? \"\") ||\n !ConnectorAttachmentFileName.safeParse(segments[4]).success\n ) {\n return false;\n }\n return segments.every(\n (segment) =>\n segment.length > 0 &&\n segment !== \".\" &&\n segment !== \"..\" &&\n !PORTABLE_FILENAME_FORBIDDEN_PATTERN.test(segment) &&\n !/[ .]$/u.test(segment) &&\n !PORTABLE_FILENAME_RESERVED_PATTERN.test(segment),\n );\n },\n { message: \"must be a confined connector attachment sandbox path\" },\n );\n\nexport const ConnectorAttachmentReceipt = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n providerAttachmentId: ConnectorAttachmentProviderIdentity,\n fileName: ConnectorAttachmentFileName,\n mediaType: ConnectorAttachmentMediaType,\n byteSize: z.number().int().min(0).max(CONNECTOR_ATTACHMENT_MAX_BYTES),\n contentSha256: ConnectorAttachmentSha256,\n sandboxPath: ConnectorAttachmentSandboxPath,\n })\n .strict()\n .superRefine((receipt, context) => {\n const segments = receipt.sandboxPath.split(\"/\");\n if (segments[2] !== receipt.providerAttachmentId.provider) {\n context.addIssue({\n code: \"custom\",\n message: \"sandbox path provider must match the provider attachment identity\",\n path: [\"sandboxPath\"],\n });\n }\n if (segments[4] !== receipt.fileName) {\n context.addIssue({\n code: \"custom\",\n message: \"sandbox path filename must match the attachment filename\",\n path: [\"sandboxPath\"],\n });\n }\n }),\n);\nexport type ConnectorAttachmentReceipt = z.infer<typeof ConnectorAttachmentReceipt>;\n\nexport const ConnectorAttachmentReceiptEnvelope = /* @__PURE__ */ defineSchema(() =>\n z\n .object({\n version: z.literal(CONNECTOR_ATTACHMENT_RECEIPT_VERSION),\n attachments: z.array(ConnectorAttachmentReceipt).min(1).max(CONNECTOR_ATTACHMENT_MAX_COUNT),\n })\n .strict(),\n);\nexport type ConnectorAttachmentReceiptEnvelope = z.infer<typeof ConnectorAttachmentReceiptEnvelope>;\n\nexport function parseConnectorAttachmentTransferEnvelope(\n value: unknown,\n options: { nowMs?: number } = {},\n): ConnectorAttachmentTransferEnvelope {\n const envelope = ConnectorAttachmentTransferEnvelope.parse(value);\n const nowMs = options.nowMs ?? Date.now();\n for (const attachment of envelope.attachments) {\n if (Date.parse(attachment.source.expiresAt) <= nowMs) {\n throw new Error(\"connector attachment source is expired\");\n }\n }\n return envelope;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import {
|
|
2
|
+
defineSchema
|
|
3
|
+
} from "./chunk-56SNIMDO.js";
|
|
4
|
+
|
|
5
|
+
// src/permissions.ts
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
var Permission = /* @__PURE__ */ defineSchema(
|
|
8
|
+
() => z.enum([
|
|
9
|
+
"account:read",
|
|
10
|
+
"account:admin",
|
|
11
|
+
"members:manage",
|
|
12
|
+
"workspace:create",
|
|
13
|
+
"billing:read",
|
|
14
|
+
"billing:manage",
|
|
15
|
+
"workspace:read",
|
|
16
|
+
"workspace:admin",
|
|
17
|
+
"sessions:create",
|
|
18
|
+
"sessions:read",
|
|
19
|
+
"sessions:control",
|
|
20
|
+
"stream:view",
|
|
21
|
+
"stream:control",
|
|
22
|
+
"stream:acknowledge",
|
|
23
|
+
"files:upload",
|
|
24
|
+
"files:read",
|
|
25
|
+
"files:write",
|
|
26
|
+
"terminal:attach",
|
|
27
|
+
"documents:manage",
|
|
28
|
+
"documents:search",
|
|
29
|
+
"scheduled_tasks:manage",
|
|
30
|
+
"scheduled_tasks:run",
|
|
31
|
+
"github:manage",
|
|
32
|
+
"github:use",
|
|
33
|
+
"api_keys:manage",
|
|
34
|
+
/** Literal organization-key authority to configure workspace usage allowances. */
|
|
35
|
+
"usage_allowances:manage",
|
|
36
|
+
"connections:read",
|
|
37
|
+
"connections:write",
|
|
38
|
+
/**
|
|
39
|
+
* Connect, use and remove one's own accounts, turn on a reviewed OAuth
|
|
40
|
+
* integration for personal accounts, and add it to one's own chats.
|
|
41
|
+
* `connections:write` includes it.
|
|
42
|
+
*/
|
|
43
|
+
"connections:personal",
|
|
44
|
+
"capabilities:manage",
|
|
45
|
+
/** @deprecated alias of secrets:write */
|
|
46
|
+
"environments:manage",
|
|
47
|
+
/** @deprecated alias of secrets:use */
|
|
48
|
+
"environments:use",
|
|
49
|
+
/** @deprecated alias of secrets:list */
|
|
50
|
+
"variable-sets:list",
|
|
51
|
+
/** @deprecated alias of secrets:list */
|
|
52
|
+
"variable-sets:read",
|
|
53
|
+
/** @deprecated alias of secrets:write */
|
|
54
|
+
"variable-sets:write",
|
|
55
|
+
/** @deprecated alias of secrets:write */
|
|
56
|
+
"variable-sets:manage",
|
|
57
|
+
/** @deprecated alias of secrets:use */
|
|
58
|
+
"variable-sets:attach",
|
|
59
|
+
/** @deprecated alias of secrets:use */
|
|
60
|
+
"variable-sets:use",
|
|
61
|
+
"secrets:list",
|
|
62
|
+
/** Literal plaintext read through a tool or API key (agents lack it by default). */
|
|
63
|
+
"secrets:read",
|
|
64
|
+
"secrets:write",
|
|
65
|
+
/** Use secrets by reference; for humans, also reveal ("use = reveal"). */
|
|
66
|
+
"secrets:use",
|
|
67
|
+
"mcp_servers:attach",
|
|
68
|
+
"codemode:call",
|
|
69
|
+
"goals:manage",
|
|
70
|
+
"enrollments:read",
|
|
71
|
+
"enrollments:manage",
|
|
72
|
+
"rigs:use",
|
|
73
|
+
"rigs:manage",
|
|
74
|
+
"artifacts:read",
|
|
75
|
+
"artifacts:publish"
|
|
76
|
+
])
|
|
77
|
+
);
|
|
78
|
+
var SECRET_PERMISSION_ALIASES = {
|
|
79
|
+
"variable-sets:list": "secrets:list",
|
|
80
|
+
"variable-sets:read": "secrets:list",
|
|
81
|
+
"variable-sets:write": "secrets:write",
|
|
82
|
+
"variable-sets:manage": "secrets:write",
|
|
83
|
+
"environments:manage": "secrets:write",
|
|
84
|
+
"variable-sets:attach": "secrets:use",
|
|
85
|
+
"variable-sets:use": "secrets:use",
|
|
86
|
+
"environments:use": "secrets:use"
|
|
87
|
+
};
|
|
88
|
+
function normalizePermission(name) {
|
|
89
|
+
return Object.hasOwn(SECRET_PERMISSION_ALIASES, name) ? SECRET_PERMISSION_ALIASES[name] : name;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export {
|
|
93
|
+
Permission,
|
|
94
|
+
SECRET_PERMISSION_ALIASES,
|
|
95
|
+
normalizePermission
|
|
96
|
+
};
|
|
97
|
+
//# sourceMappingURL=chunk-G2KJTFIC.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/permissions.ts"],"sourcesContent":["import { defineSchema } from \"./define-schema\";\nimport { z } from \"zod\";\n\n/** Canonical public permission vocabulary shared by operational and control-plane contracts. */\nexport const Permission = /* @__PURE__ */ defineSchema(() =>\n z.enum([\n \"account:read\",\n \"account:admin\",\n \"members:manage\",\n \"workspace:create\",\n \"billing:read\",\n \"billing:manage\",\n \"workspace:read\",\n \"workspace:admin\",\n \"sessions:create\",\n \"sessions:read\",\n \"sessions:control\",\n \"stream:view\",\n \"stream:control\",\n \"stream:acknowledge\",\n \"files:upload\",\n \"files:read\",\n \"files:write\",\n \"terminal:attach\",\n \"documents:manage\",\n \"documents:search\",\n \"scheduled_tasks:manage\",\n \"scheduled_tasks:run\",\n \"github:manage\",\n \"github:use\",\n \"api_keys:manage\",\n /** Literal organization-key authority to configure workspace usage allowances. */\n \"usage_allowances:manage\",\n \"connections:read\",\n \"connections:write\",\n /**\n * Connect, use and remove one's own accounts, turn on a reviewed OAuth\n * integration for personal accounts, and add it to one's own chats.\n * `connections:write` includes it.\n */\n \"connections:personal\",\n \"capabilities:manage\",\n /** @deprecated alias of secrets:write */\n \"environments:manage\",\n /** @deprecated alias of secrets:use */\n \"environments:use\",\n /** @deprecated alias of secrets:list */\n \"variable-sets:list\",\n /** @deprecated alias of secrets:list */\n \"variable-sets:read\",\n /** @deprecated alias of secrets:write */\n \"variable-sets:write\",\n /** @deprecated alias of secrets:write */\n \"variable-sets:manage\",\n /** @deprecated alias of secrets:use */\n \"variable-sets:attach\",\n /** @deprecated alias of secrets:use */\n \"variable-sets:use\",\n \"secrets:list\",\n /** Literal plaintext read through a tool or API key (agents lack it by default). */\n \"secrets:read\",\n \"secrets:write\",\n /** Use secrets by reference; for humans, also reveal (\"use = reveal\"). */\n \"secrets:use\",\n \"mcp_servers:attach\",\n \"codemode:call\",\n \"goals:manage\",\n \"enrollments:read\",\n \"enrollments:manage\",\n \"rigs:use\",\n \"rigs:manage\",\n \"artifacts:read\",\n \"artifacts:publish\",\n ]),\n);\nexport type Permission = z.infer<typeof Permission>;\n\n/**\n * Legacy permission names and their secrets equivalents (Q-16). Stored role\n * and API-key permission arrays are aliased at read time, never rewritten.\n */\nexport const SECRET_PERMISSION_ALIASES = {\n \"variable-sets:list\": \"secrets:list\",\n \"variable-sets:read\": \"secrets:list\",\n \"variable-sets:write\": \"secrets:write\",\n \"variable-sets:manage\": \"secrets:write\",\n \"environments:manage\": \"secrets:write\",\n \"variable-sets:attach\": \"secrets:use\",\n \"variable-sets:use\": \"secrets:use\",\n \"environments:use\": \"secrets:use\",\n} as const satisfies Readonly<Partial<Record<Permission, Permission>>>;\n\n/** Canonical name for a permission: legacy variable-set names map to `secrets:*`. */\nexport function normalizePermission(name: string): string {\n return Object.hasOwn(SECRET_PERMISSION_ALIASES, name)\n ? SECRET_PERMISSION_ALIASES[name as keyof typeof SECRET_PERMISSION_ALIASES]\n : name;\n}\n"],"mappings":";;;;;AACA,SAAS,SAAS;AAGX,IAAM,aAA6B;AAAA,EAAa,MACrD,EAAE,KAAK;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAMA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AACH;AAOO,IAAM,4BAA4B;AAAA,EACvC,sBAAsB;AAAA,EACtB,sBAAsB;AAAA,EACtB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,uBAAuB;AAAA,EACvB,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,oBAAoB;AACtB;AAGO,SAAS,oBAAoB,MAAsB;AACxD,SAAO,OAAO,OAAO,2BAA2B,IAAI,IAChD,0BAA0B,IAA8C,IACxE;AACN;","names":[]}
|