@opengeni/contracts 3.1.0-canary.2 → 3.1.2
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 +971 -0
- package/dist/agent-instruction-changes.d.ts +0 -2
- package/dist/allowance-refusal.d.ts +9 -0
- package/dist/allowance-refusal.js +50 -0
- package/dist/allowance-refusal.js.map +1 -0
- package/dist/analytics-consent-report.d.ts +19 -0
- package/dist/analytics-consent-report.js +10 -0
- package/dist/analytics-consent-report.js.map +1 -0
- package/dist/api-key-presets.d.ts +19 -0
- package/dist/artifact-catalog.d.ts +188 -0
- package/dist/artifacts.d.ts +86 -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.d.ts +1 -0
- package/dist/atlassian.js +34 -19
- package/dist/browser-storage.d.ts +5 -0
- package/dist/browser-storage.js +9 -0
- package/dist/browser-storage.js.map +1 -0
- package/dist/bundled-skills.d.ts +24 -1
- package/dist/canonical-human-identities.js +2 -1
- package/dist/chunk-2ZIHHL72.js +153 -0
- package/dist/chunk-2ZIHHL72.js.map +1 -0
- package/dist/{chunk-5LYFSZ7O.js → chunk-352X6ENP.js} +31 -31
- package/dist/chunk-4JGHSSB7.js +11 -0
- package/dist/chunk-4JGHSSB7.js.map +1 -0
- package/dist/chunk-4QO6GJUX.js +85 -0
- package/dist/chunk-4QO6GJUX.js.map +1 -0
- package/dist/chunk-4VDMHLLL.js +49 -0
- package/dist/chunk-4VDMHLLL.js.map +1 -0
- package/dist/chunk-56SNIMDO.js +9 -0
- package/dist/chunk-56SNIMDO.js.map +1 -0
- package/dist/chunk-6C2HKFTU.js +207 -0
- package/dist/chunk-6C2HKFTU.js.map +1 -0
- package/dist/chunk-6IXO76Z6.js +72 -0
- package/dist/chunk-6IXO76Z6.js.map +1 -0
- package/dist/chunk-7272KVWZ.js +60 -0
- package/dist/chunk-7272KVWZ.js.map +1 -0
- package/dist/{chunk-7ABONTXE.js → chunk-E3GGUBHS.js} +49 -5
- package/dist/chunk-E3GGUBHS.js.map +1 -0
- package/dist/chunk-EFZYKUE2.js +767 -0
- package/dist/chunk-EFZYKUE2.js.map +1 -0
- package/dist/chunk-EKWNTOG3.js +154 -0
- package/dist/chunk-EKWNTOG3.js.map +1 -0
- package/dist/chunk-HABQ7ADB.js +234 -0
- package/dist/chunk-HABQ7ADB.js.map +1 -0
- package/dist/chunk-HRRU4QPI.js +91 -0
- package/dist/chunk-HRRU4QPI.js.map +1 -0
- package/dist/{chunk-3SIZGL3O.js → chunk-IK36LXKC.js} +18 -2
- package/dist/chunk-IK36LXKC.js.map +1 -0
- package/dist/{chunk-TXTQIYCV.js → chunk-ILJ72KPO.js} +56 -3
- package/dist/chunk-ILJ72KPO.js.map +1 -0
- package/dist/chunk-J4HQ3UKY.js +93 -0
- package/dist/chunk-J4HQ3UKY.js.map +1 -0
- package/dist/chunk-KHHZTBP7.js +11 -0
- package/dist/chunk-KHHZTBP7.js.map +1 -0
- package/dist/{chunk-WYBDERIY.js → chunk-LZ2LAHIX.js} +47 -41
- package/dist/chunk-LZ2LAHIX.js.map +1 -0
- package/dist/chunk-NDZHPTCL.js +400 -0
- package/dist/chunk-NDZHPTCL.js.map +1 -0
- package/dist/chunk-OF6OKOBF.js +54793 -0
- package/dist/chunk-OF6OKOBF.js.map +1 -0
- package/dist/chunk-OL23ARTF.js +94 -0
- package/dist/chunk-OL23ARTF.js.map +1 -0
- package/dist/chunk-PUIUXIOL.js +189 -0
- package/dist/chunk-PUIUXIOL.js.map +1 -0
- package/dist/{chunk-Y3KNXVTD.js → chunk-RMWXDZEO.js} +128 -21
- package/dist/chunk-RMWXDZEO.js.map +1 -0
- package/dist/{chunk-MRWYRAS5.js → chunk-SHO4YO4B.js} +27 -35
- package/dist/chunk-SHO4YO4B.js.map +1 -0
- package/dist/chunk-SWRN2DJ3.js +153 -0
- package/dist/chunk-SWRN2DJ3.js.map +1 -0
- package/dist/chunk-TCXCRBPF.js +267 -0
- package/dist/chunk-TCXCRBPF.js.map +1 -0
- package/dist/chunk-TLU3UEMD.js +324 -0
- package/dist/chunk-TLU3UEMD.js.map +1 -0
- package/dist/chunk-TSWWZMUS.js +186 -0
- package/dist/chunk-TSWWZMUS.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-XDLAGX66.js +127 -0
- package/dist/chunk-XDLAGX66.js.map +1 -0
- package/dist/chunk-YKZ4WU4P.js +33 -0
- package/dist/chunk-YKZ4WU4P.js.map +1 -0
- package/dist/{chunk-O5LEQHDM.js → chunk-Z7WEVGCL.js} +3 -3
- package/dist/{chunk-YBW5JSA3.js → chunk-ZDCRWCGZ.js} +119 -101
- package/dist/chunk-ZDCRWCGZ.js.map +1 -0
- package/dist/claude-provider-account-authority.d.ts +18 -0
- package/dist/claude-subscription-oauth.d.ts +42 -0
- package/dist/claude-subscription-usage.d.ts +159 -0
- package/dist/client-error-report.d.ts +158 -0
- package/dist/client-error-report.js +164 -0
- package/dist/client-error-report.js.map +1 -0
- package/dist/code-search.d.ts +52 -0
- package/dist/code-search.js +40 -0
- package/dist/code-search.js.map +1 -0
- package/dist/codex-provider-account-authority.js +20 -12
- package/dist/codex-provider-account-authority.js.map +1 -1
- package/dist/company-profile.d.ts +144 -6
- package/dist/connect.d.ts +37 -0
- package/dist/connect.js +216 -159
- package/dist/connect.js.map +1 -1
- package/dist/connection-account-label.d.ts +2 -0
- package/dist/connection-account-label.js +35 -0
- package/dist/connection-account-label.js.map +1 -0
- package/dist/connection-authority.d.ts +9 -317
- package/dist/connection-authority.js +37 -42
- package/dist/connector-attachments.js +2 -1
- package/dist/connector-destinations.js +2 -1
- package/dist/connector-tool-permissions.d.ts +137 -0
- package/dist/cua-desktop-tools.d.ts +17 -0
- package/dist/define-schema.d.ts +8 -0
- package/dist/direct-model-provider.d.ts +36 -0
- package/dist/editable-artifact-codec-registry.js +5 -5
- package/dist/editable-artifact-committed-transaction.js +3 -2
- package/dist/editable-artifact-live.js +5 -5
- package/dist/editable-artifact-serialized-commit.js +6 -6
- package/dist/editable-artifact-versions.d.ts +7 -1
- package/dist/editable-artifact-versions.js +1 -1
- package/dist/editable-artifacts.js +62 -56
- package/dist/event-preview.d.ts +22 -0
- package/dist/external-identities.d.ts +138 -0
- package/dist/external-identities.js +9 -4
- package/dist/first-party-tool-authorization.d.ts +815 -0
- package/dist/github-repository-contracts.js +60 -43
- package/dist/github-repository-contracts.js.map +1 -1
- package/dist/google-drive.d.ts +2 -1
- package/dist/google-drive.js +305 -238
- package/dist/google-drive.js.map +1 -1
- package/dist/host-mcp-bindings.d.ts +5 -0
- package/dist/host-mcp-bindings.js +233 -170
- package/dist/host-mcp-bindings.js.map +1 -1
- package/dist/image-generation.d.ts +1 -0
- package/dist/index.d.ts +16761 -5946
- package/dist/index.js +1973 -260
- package/dist/insights-usage.d.ts +877 -0
- package/dist/insights-usage.js +559 -0
- package/dist/insights-usage.js.map +1 -0
- package/dist/interaction.d.ts +1176 -829
- package/dist/knowledge-entries.d.ts +81 -2
- package/dist/knowledge-preparation.d.ts +239 -0
- package/dist/managed-auth-session-sets.d.ts +7 -0
- package/dist/managed-auth-session-sets.js +198 -132
- package/dist/managed-auth-session-sets.js.map +1 -1
- package/dist/managed-sign-in-methods.d.ts +56 -0
- package/dist/managed-sign-in-methods.js +64 -0
- package/dist/managed-sign-in-methods.js.map +1 -0
- package/dist/mcp-catalog-limits.d.ts +2 -0
- package/dist/mcp-oauth.d.ts +2 -2
- package/dist/mcp-structured-content.d.ts +25 -0
- package/dist/modal-native-proof-v2.d.ts +587 -0
- package/dist/modal-native-proof-v2.js +38 -0
- package/dist/modal-native-proof-v2.js.map +1 -0
- package/dist/model-account-choice.d.ts +235 -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 +98 -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.d.ts +3 -1
- package/dist/model-picker-order.js +3 -0
- package/dist/model-picker-order.js.map +1 -1
- package/dist/organization-access.d.ts +412 -0
- package/dist/organization-access.js +39 -0
- package/dist/organization-access.js.map +1 -0
- package/dist/organization-integration-policy.d.ts +27 -0
- package/dist/organization-membership-lifecycle.d.ts +38 -0
- package/dist/organization-model-usage.d.ts +146 -0
- package/dist/organization-model-usage.js +78 -0
- package/dist/organization-model-usage.js.map +1 -0
- package/dist/organization-recovery.js +2 -1
- package/dist/organization-usage.d.ts +138 -0
- package/dist/permissions.d.ts +18 -0
- package/dist/personal-github.d.ts +1 -0
- package/dist/personal-github.js +199 -144
- package/dist/personal-github.js.map +1 -1
- package/dist/prepared-mcp-setup.d.ts +54 -0
- package/dist/prepared-mcp-setup.js +12 -0
- package/dist/prepared-mcp-setup.js.map +1 -0
- package/dist/product-analytics.d.ts +116 -0
- package/dist/product-lifecycle-facts.d.ts +73 -0
- package/dist/remember.d.ts +98 -6
- package/dist/retained-output.d.ts +8 -0
- package/dist/sandbox-file-artifacts.d.ts +1 -0
- package/dist/sandbox-provider-command.d.ts +91 -1
- package/dist/sandbox-recovery.d.ts +146 -0
- package/dist/secret-generator.d.ts +44 -0
- package/dist/secret-references.d.ts +90 -0
- package/dist/secret-resolution.d.ts +111 -0
- package/dist/secret-totp.d.ts +41 -0
- package/dist/session-final-reply.d.ts +6 -0
- package/dist/session-final-reply.js +9 -0
- package/dist/session-final-reply.js.map +1 -0
- package/dist/session-goal-reports.d.ts +21 -0
- package/dist/session-history-import.d.ts +1272 -0
- package/dist/session-list-entries.d.ts +4 -0
- package/dist/session-list-entries.js +56 -0
- package/dist/session-list-entries.js.map +1 -0
- package/dist/session-mcp-projections.d.ts +6 -0
- package/dist/session-mcp-tool-permissions.d.ts +62 -0
- package/dist/session-message-search.d.ts +68 -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 +41 -0
- package/dist/session-usage-limits.js.map +1 -0
- package/dist/signup-attribution.d.ts +39 -0
- package/dist/site-data.d.ts +286 -0
- package/dist/site-operations.d.ts +39 -0
- package/dist/site-publishing.d.ts +778 -0
- package/dist/site-session-http.d.ts +89 -4
- package/dist/site-session-http.js +25 -1
- package/dist/site-sql.d.ts +421 -0
- package/dist/skill-catalog-context.d.ts +7 -0
- package/dist/skill-files.d.ts +1 -1
- package/dist/skill-use.d.ts +61 -0
- package/dist/skills.d.ts +15 -0
- package/dist/slack-bot-scopes.d.ts +17 -12
- package/dist/slack-bot-scopes.js +10 -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 +8 -2
- package/dist/spreadsheet-artifact-query.d.ts +13 -6
- package/dist/spreadsheet-artifact-query.js +3 -3
- package/dist/subscription-account-actions.d.ts +64 -0
- package/dist/subscription-account-pools.d.ts +292 -0
- package/dist/subscription-personal-authority-v2.d.ts +28 -0
- package/dist/subscription-personal-authority-v2.js +12 -0
- package/dist/subscription-personal-authority-v2.js.map +1 -0
- package/dist/tool-action-review.d.ts +132 -0
- package/dist/tool-catalog.d.ts +408 -0
- package/dist/tool-policy.d.ts +5 -0
- package/dist/tool-review-presentation.d.ts +12 -0
- package/dist/tool-review-presentation.js +17 -0
- package/dist/tool-review-presentation.js.map +1 -0
- package/dist/transcription-recordings.d.ts +21 -0
- package/dist/turn-serving-policy.d.ts +221 -0
- package/dist/usage-allowances.d.ts +314 -0
- package/dist/usage-allowances.js +52 -0
- package/dist/usage-allowances.js.map +1 -0
- package/dist/vaults.d.ts +1286 -0
- package/dist/video-generation.d.ts +3 -0
- package/dist/video-generation.js +2 -1
- package/dist/workspace-integration-wire.d.ts +36 -0
- package/dist/workspace-integration-wire.js +23 -0
- package/dist/workspace-integration-wire.js.map +1 -0
- package/dist/workspace-integrations.d.ts +1028 -0
- package/dist/xai-provider-account-authority.js +2 -1
- package/package.json +93 -5
- package/src/agent-authored-durable-text.ts +14 -11
- package/src/agent-config.ts +1698 -0
- package/src/agent-instruction-changes.ts +91 -74
- package/src/agent-learning.ts +94 -67
- package/src/agent-topology.ts +57 -52
- package/src/allowance-refusal.ts +81 -0
- package/src/analytics-consent-report.ts +20 -0
- package/src/api-key-presets.ts +28 -0
- package/src/artifact-catalog.ts +82 -0
- package/src/artifacts.ts +299 -227
- package/src/atlassian-native-retirement.ts +33 -0
- package/src/atlassian.ts +135 -108
- package/src/browser-storage.ts +10 -0
- package/src/bundled-skills.ts +60 -17
- package/src/canonical-human-identities.ts +60 -58
- package/src/claude-provider-account-authority.ts +12 -0
- package/src/claude-subscription-oauth.ts +73 -0
- package/src/claude-subscription-usage.ts +68 -0
- package/src/client-error-report.ts +343 -0
- package/src/code-search.ts +105 -0
- package/src/codex-provider-account-authority.ts +21 -16
- package/src/company-brain-governed-writes.ts +255 -233
- package/src/company-brain.ts +164 -153
- package/src/company-profile.ts +365 -292
- package/src/connect.ts +212 -173
- package/src/connection-account-label.ts +46 -0
- package/src/connection-authority.ts +183 -364
- package/src/connector-attachments.ts +137 -122
- package/src/connector-destinations.ts +46 -42
- package/src/connector-tool-permissions.ts +117 -0
- package/src/cua-desktop-tools.gen.json +6512 -0
- package/src/cua-desktop-tools.linux.gen.json +6600 -0
- package/src/cua-desktop-tools.ts +36 -0
- package/src/cua-desktop-tools.windows.gen.json +6353 -0
- package/src/define-schema.ts +10 -0
- package/src/direct-model-provider.ts +108 -0
- package/src/editable-artifact-committed-transaction.ts +17 -0
- package/src/editable-artifact-versions.ts +7 -1
- package/src/event-preview.ts +53 -3
- package/src/external-identities.ts +249 -176
- package/src/feedback.ts +43 -30
- package/src/first-party-tool-authorization.ts +356 -0
- package/src/github-repository-contracts.ts +78 -64
- package/src/google-drive.ts +285 -234
- package/src/governed-learning-activation.ts +152 -131
- package/src/governed-learning-evaluator.ts +140 -133
- package/src/host-mcp-bindings.ts +252 -198
- package/src/image-generation.ts +104 -95
- package/src/index.ts +13235 -8687
- package/src/insights-usage.ts +727 -0
- package/src/interaction.ts +3070 -2326
- package/src/knowledge-entries.ts +361 -276
- package/src/knowledge-preparation.ts +57 -0
- package/src/knowledge.ts +246 -213
- package/src/managed-auth-session-sets.ts +220 -144
- package/src/managed-sign-in-methods.ts +52 -0
- package/src/mcp-catalog-limits.ts +2 -0
- package/src/mcp-oauth.ts +43 -34
- package/src/mcp-receipts.ts +192 -192
- package/src/mcp-structured-content.ts +81 -0
- package/src/memory-slack-delivery.ts +171 -142
- package/src/modal-native-proof-v2.ts +429 -0
- package/src/model-account-choice.ts +177 -0
- package/src/model-account-settings.ts +210 -0
- package/src/model-availability.ts +22 -0
- package/src/model-connection-access.ts +61 -14
- package/src/model-context-inspector.ts +133 -99
- package/src/model-display.ts +221 -0
- package/src/model-picker-order.ts +12 -1
- package/src/organization-access.ts +217 -0
- package/src/organization-integration-policy.ts +63 -0
- package/src/organization-membership-lifecycle.ts +528 -382
- package/src/organization-model-usage.ts +81 -0
- package/src/organization-recovery.ts +147 -135
- package/src/organization-usage.ts +94 -0
- package/src/permissions.ts +88 -52
- package/src/personal-github.ts +210 -171
- package/src/preference-registry.ts +314 -258
- package/src/prepared-mcp-setup.ts +189 -0
- package/src/product-analytics.ts +261 -0
- package/src/product-lifecycle-facts.ts +122 -0
- package/src/remember.ts +181 -167
- package/src/retained-output.ts +194 -165
- package/src/sandbox-file-artifacts.ts +60 -47
- package/src/sandbox-provider-command.ts +88 -20
- package/src/sandbox-recovery.ts +129 -0
- package/src/scoped-knowledge.ts +61 -43
- package/src/secret-generator.ts +155 -0
- package/src/secret-references.ts +414 -0
- package/src/secret-resolution.ts +274 -0
- package/src/secret-totp.ts +188 -0
- package/src/session-final-reply.ts +16 -0
- package/src/session-goal-reports.ts +64 -0
- package/src/session-history-import.ts +177 -0
- package/src/session-list-entries.ts +96 -0
- package/src/session-mcp-projections.ts +11 -0
- package/src/session-mcp-tool-permissions.ts +108 -0
- package/src/session-message-search.ts +61 -0
- package/src/session-target.ts +57 -0
- package/src/session-titles.ts +80 -10
- package/src/session-topology-primitives.ts +19 -12
- package/src/session-usage-limit-refusal.ts +101 -0
- package/src/session-usage-limits.ts +171 -0
- package/src/signup-attribution.ts +86 -0
- package/src/site-data.ts +339 -0
- package/src/site-operations.ts +154 -0
- package/src/site-publishing.ts +876 -0
- package/src/site-session-http.ts +294 -16
- package/src/site-sql.ts +1123 -0
- package/src/skill-catalog-context.ts +50 -0
- package/src/skill-files.ts +3 -3
- package/src/skill-use.ts +80 -0
- package/src/skills.ts +82 -54
- package/src/slack-bot-scopes.ts +31 -39
- package/src/slack-rest-mcp.ts +222 -0
- package/src/slack-task-policy.ts +96 -73
- package/src/spreadsheet-artifact-commands.ts +73 -2
- package/src/spreadsheet-artifact-query.ts +187 -39
- package/src/subscription-account-actions.ts +84 -0
- package/src/subscription-account-pools.ts +53 -0
- package/src/subscription-personal-authority-v2.ts +66 -0
- package/src/task-notes.ts +55 -51
- package/src/tool-action-review.ts +258 -0
- package/src/tool-catalog.ts +609 -372
- package/src/tool-policy.ts +82 -0
- package/src/tool-result-spill.ts +12 -9
- package/src/tool-review-presentation.ts +385 -0
- package/src/transcription-recordings.ts +145 -131
- package/src/turn-serving-policy.ts +166 -0
- package/src/usage-allowances.ts +248 -0
- package/src/vaults.ts +850 -0
- package/src/video-generation.ts +385 -360
- package/src/work-claims.ts +173 -149
- package/src/workspace-instruction-policies.ts +349 -276
- package/src/workspace-integration-wire.ts +101 -0
- package/src/workspace-integrations.ts +724 -0
- package/src/workspace-learning-administration.ts +57 -44
- package/src/workspace-learning-policy.ts +127 -96
- package/src/workspace-state.ts +250 -220
- package/src/xai-provider-account-authority.ts +22 -17
- package/dist/chunk-2AC63F4S.js +0 -171
- package/dist/chunk-2AC63F4S.js.map +0 -1
- package/dist/chunk-3SIZGL3O.js.map +0 -1
- package/dist/chunk-7ABONTXE.js.map +0 -1
- package/dist/chunk-BCS7WHCK.js +0 -139
- package/dist/chunk-BCS7WHCK.js.map +0 -1
- package/dist/chunk-GRG7PHWQ.js +0 -25
- package/dist/chunk-GRG7PHWQ.js.map +0 -1
- package/dist/chunk-JUFK3T4Q.js +0 -80
- package/dist/chunk-JUFK3T4Q.js.map +0 -1
- package/dist/chunk-M5ZGRVIQ.js +0 -719
- package/dist/chunk-M5ZGRVIQ.js.map +0 -1
- package/dist/chunk-MRWYRAS5.js.map +0 -1
- package/dist/chunk-OVFORMPW.js +0 -348
- package/dist/chunk-OVFORMPW.js.map +0 -1
- package/dist/chunk-P3HLDT77.js +0 -59
- package/dist/chunk-P3HLDT77.js.map +0 -1
- package/dist/chunk-QQUJ6NPW.js +0 -23093
- package/dist/chunk-QQUJ6NPW.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/host-mcp-resolvers.d.ts +0 -32
- package/dist/host-mcp-resolvers.js +0 -34
- package/dist/host-mcp-resolvers.js.map +0 -1
- package/src/host-mcp-resolvers.ts +0 -50
- /package/dist/{chunk-5LYFSZ7O.js.map → chunk-352X6ENP.js.map} +0 -0
- /package/dist/{chunk-O5LEQHDM.js.map → chunk-Z7WEVGCL.js.map} +0 -0
package/dist/chunk-2AC63F4S.js
DELETED
|
@@ -1,171 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
Permission
|
|
3
|
-
} from "./chunk-P3HLDT77.js";
|
|
4
|
-
|
|
5
|
-
// src/external-identities.ts
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
var encoder = new TextEncoder();
|
|
8
|
-
function opaqueText(maxBytes) {
|
|
9
|
-
return z.string().min(1).max(maxBytes).refine(
|
|
10
|
-
(value) => !value.includes("\0") && !/[\uD800-\uDFFF]/u.test(value) && encoder.encode(value).byteLength <= maxBytes,
|
|
11
|
-
{
|
|
12
|
-
message: `Identifier must be valid PostgreSQL Unicode text of at most ${maxBytes} UTF-8 bytes`
|
|
13
|
-
}
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
var externalId = opaqueText(1024);
|
|
17
|
-
var source = opaqueText(200);
|
|
18
|
-
var externalSubject = z.string().regex(/^external_user:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$(?![\s\S])/);
|
|
19
|
-
var nativeSubject = z.string().min(1).max(1024).regex(/^user:[^\r\n]+$(?![\s\S])/);
|
|
20
|
-
var ExternalIdentityReference = z.object({
|
|
21
|
-
externalId,
|
|
22
|
-
source: source.default("default")
|
|
23
|
-
}).strict();
|
|
24
|
-
var AddExternalWorkspaceMemberRequest = z.object({
|
|
25
|
-
identity: ExternalIdentityReference,
|
|
26
|
-
permissions: z.array(Permission).min(1).max(Permission.options.length),
|
|
27
|
-
/** Opt-in durable operation identity; unkeyed legacy requests are not cancellable. */
|
|
28
|
-
operationId: z.string().uuid().optional()
|
|
29
|
-
}).strict();
|
|
30
|
-
var ExternalIdentityLookup = z.discriminatedUnion("found", [
|
|
31
|
-
z.object({ found: z.literal(false) }).strict(),
|
|
32
|
-
z.object({
|
|
33
|
-
found: z.literal(true),
|
|
34
|
-
subjectId: externalSubject,
|
|
35
|
-
organizationMembershipId: z.string().uuid(),
|
|
36
|
-
identityStatus: z.enum(["active", "disabled", "revoked"]),
|
|
37
|
-
identityAuthorizationRevision: z.number().int().positive().safe(),
|
|
38
|
-
membershipStatus: z.enum(["provisioning", "active", "suspended", "revoked"]),
|
|
39
|
-
membershipAuthorizationRevision: z.number().int().positive().safe()
|
|
40
|
-
}).strict()
|
|
41
|
-
]);
|
|
42
|
-
var CancelExternalWorkspaceMemberGrantRequest = z.object({
|
|
43
|
-
operationId: z.string().uuid(),
|
|
44
|
-
cancelGrantOperationId: z.string().uuid()
|
|
45
|
-
}).strict().refine((value) => value.operationId !== value.cancelGrantOperationId, {
|
|
46
|
-
message: "Revocation and grant must use different operation identities"
|
|
47
|
-
});
|
|
48
|
-
var CancelExternalWorkspaceMemberGrantResponse = z.object({
|
|
49
|
-
removed: z.boolean(),
|
|
50
|
-
replay: z.boolean(),
|
|
51
|
-
fencedGrantOperationId: z.string().uuid()
|
|
52
|
-
}).strict();
|
|
53
|
-
var UpdateExternalIdentityMembershipRequest = z.object({
|
|
54
|
-
kind: z.enum(["suspend", "reactivate", "offboard"]),
|
|
55
|
-
expectedAuthorizationRevision: z.number().int().positive().safe(),
|
|
56
|
-
operationId: z.string().uuid(),
|
|
57
|
-
reason: z.string().max(512).optional()
|
|
58
|
-
}).strict();
|
|
59
|
-
var ExternalActorSelection = z.discriminatedUnion("mode", [
|
|
60
|
-
z.object({ mode: z.literal("external"), identity: ExternalIdentityReference }).strict(),
|
|
61
|
-
z.object({
|
|
62
|
-
mode: z.literal("linked_native"),
|
|
63
|
-
identity: ExternalIdentityReference,
|
|
64
|
-
linkId: z.string().uuid(),
|
|
65
|
-
expectedLinkRevision: z.number().int().positive().safe()
|
|
66
|
-
}).strict()
|
|
67
|
-
]);
|
|
68
|
-
var ExternalIdentity = z.object({
|
|
69
|
-
id: z.string().uuid(),
|
|
70
|
-
accountId: z.string().uuid(),
|
|
71
|
-
source,
|
|
72
|
-
externalId,
|
|
73
|
-
subjectId: externalSubject,
|
|
74
|
-
organizationMembershipId: z.string().uuid(),
|
|
75
|
-
personalWorkspaceId: z.string().uuid(),
|
|
76
|
-
status: z.enum(["active", "disabled", "revoked"]),
|
|
77
|
-
authorizationRevision: z.number().int().positive().safe()
|
|
78
|
-
}).strict();
|
|
79
|
-
var ExternalActorAttribution = z.object({
|
|
80
|
-
accountId: z.string().uuid(),
|
|
81
|
-
authenticatingApiKeyId: z.string().uuid(),
|
|
82
|
-
externalIdentityId: z.string().uuid(),
|
|
83
|
-
externalSubjectId: externalSubject,
|
|
84
|
-
externalAuthorizationRevision: z.number().int().positive().safe(),
|
|
85
|
-
effectiveSubjectId: z.string().min(1).max(1024),
|
|
86
|
-
actingMode: z.enum(["external", "linked_native"]),
|
|
87
|
-
linkId: z.string().uuid().optional(),
|
|
88
|
-
linkRevision: z.number().int().positive().safe().optional()
|
|
89
|
-
}).strict().superRefine((value, context) => {
|
|
90
|
-
if (value.actingMode === "external") {
|
|
91
|
-
if (value.effectiveSubjectId !== value.externalSubjectId || value.linkId !== void 0 || value.linkRevision !== void 0) {
|
|
92
|
-
context.addIssue({
|
|
93
|
-
code: "custom",
|
|
94
|
-
message: "External mode cannot delegate native identity"
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
} else if (!value.linkId || !value.linkRevision || !nativeSubject.safeParse(value.effectiveSubjectId).success) {
|
|
98
|
-
context.addIssue({
|
|
99
|
-
code: "custom",
|
|
100
|
-
message: "Linked mode requires exact native delegation provenance"
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
var ExternalActorContinuation = z.object({
|
|
105
|
-
identity: ExternalIdentityReference,
|
|
106
|
-
actor: ExternalActorAttribution
|
|
107
|
-
}).strict();
|
|
108
|
-
var ExternalIdentityLink = z.object({
|
|
109
|
-
id: z.string().uuid(),
|
|
110
|
-
accountId: z.string().uuid(),
|
|
111
|
-
externalIdentityId: z.string().uuid(),
|
|
112
|
-
externalIdentity: ExternalIdentityReference.optional(),
|
|
113
|
-
nativeSubjectId: nativeSubject.nullable(),
|
|
114
|
-
status: z.enum(["pending", "active", "revoked", "expired"]),
|
|
115
|
-
revision: z.number().int().positive().safe(),
|
|
116
|
-
permissions: z.array(Permission).max(Permission.options.length),
|
|
117
|
-
expiresAt: z.string().datetime({ offset: true }).nullable()
|
|
118
|
-
}).strict().refine(
|
|
119
|
-
(value) => value.status !== "active" || value.nativeSubjectId !== null,
|
|
120
|
-
"An active link requires a confirmed native identity"
|
|
121
|
-
);
|
|
122
|
-
var ExternalIdentityLinkPage = z.object({
|
|
123
|
-
links: z.array(ExternalIdentityLink).max(50),
|
|
124
|
-
nextCursor: z.string().uuid().nullable()
|
|
125
|
-
}).strict();
|
|
126
|
-
var BeginExternalIdentityLinkRequest = z.object({
|
|
127
|
-
permissions: z.array(Permission).min(1).max(Permission.options.length),
|
|
128
|
-
expiresAt: z.string().datetime({ offset: true }).nullable().default(null)
|
|
129
|
-
}).strict();
|
|
130
|
-
var ConfirmExternalIdentityLinkRequest = z.object({
|
|
131
|
-
challenge: z.string().regex(/^[A-Za-z0-9_-]{43}$/),
|
|
132
|
-
expectedRevision: z.number().int().positive().safe(),
|
|
133
|
-
permissions: z.array(Permission).min(1).max(Permission.options.length)
|
|
134
|
-
}).strict();
|
|
135
|
-
var BeginExternalIdentityLinkResponse = z.object({
|
|
136
|
-
link: ExternalIdentityLink,
|
|
137
|
-
challenge: z.string().regex(/^[A-Za-z0-9_-]{43}$/),
|
|
138
|
-
confirmBefore: z.string().datetime({ offset: true })
|
|
139
|
-
}).strict();
|
|
140
|
-
var ExternalIdentityLinkPreview = z.object({
|
|
141
|
-
link: ExternalIdentityLink,
|
|
142
|
-
externalIdentity: ExternalIdentityReference,
|
|
143
|
-
nativeSubjectId: nativeSubject,
|
|
144
|
-
organizationId: z.string().uuid()
|
|
145
|
-
}).strict();
|
|
146
|
-
var ExternalLinkWorkSnapshot = z.object({
|
|
147
|
-
identity: ExternalIdentityReference,
|
|
148
|
-
actor: ExternalActorAttribution.refine((value) => value.actingMode === "linked_native"),
|
|
149
|
-
permissions: z.array(Permission).max(Permission.options.length)
|
|
150
|
-
}).strict();
|
|
151
|
-
|
|
152
|
-
export {
|
|
153
|
-
ExternalIdentityReference,
|
|
154
|
-
AddExternalWorkspaceMemberRequest,
|
|
155
|
-
ExternalIdentityLookup,
|
|
156
|
-
CancelExternalWorkspaceMemberGrantRequest,
|
|
157
|
-
CancelExternalWorkspaceMemberGrantResponse,
|
|
158
|
-
UpdateExternalIdentityMembershipRequest,
|
|
159
|
-
ExternalActorSelection,
|
|
160
|
-
ExternalIdentity,
|
|
161
|
-
ExternalActorAttribution,
|
|
162
|
-
ExternalActorContinuation,
|
|
163
|
-
ExternalIdentityLink,
|
|
164
|
-
ExternalIdentityLinkPage,
|
|
165
|
-
BeginExternalIdentityLinkRequest,
|
|
166
|
-
ConfirmExternalIdentityLinkRequest,
|
|
167
|
-
BeginExternalIdentityLinkResponse,
|
|
168
|
-
ExternalIdentityLinkPreview,
|
|
169
|
-
ExternalLinkWorkSnapshot
|
|
170
|
-
};
|
|
171
|
-
//# sourceMappingURL=chunk-2AC63F4S.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/external-identities.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { Permission } from \"./permissions\";\n\n// External identifiers are opaque, case-sensitive strings. In particular a\n// native-looking identifier is still host data, never a native subject claim.\n// Bound bytes, not just JS code units: these values share a PostgreSQL B-tree\n// index entry. Never normalize/truncate an identifier to make it fit, and reject\n// text that the driver would replace or PostgreSQL cannot represent.\nconst encoder = new TextEncoder();\nfunction opaqueText(maxBytes: number) {\n return z\n .string()\n .min(1)\n .max(maxBytes)\n .refine(\n (value) =>\n !value.includes(\"\\0\") &&\n !/[\\uD800-\\uDFFF]/u.test(value) &&\n encoder.encode(value).byteLength <= maxBytes,\n {\n message: `Identifier must be valid PostgreSQL Unicode text of at most ${maxBytes} UTF-8 bytes`,\n },\n );\n}\nconst externalId = opaqueText(1024);\nconst source = opaqueText(200);\nconst externalSubject = z\n .string()\n .regex(/^external_user:[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$(?![\\s\\S])/);\nconst nativeSubject = z\n .string()\n .min(1)\n .max(1024)\n .regex(/^user:[^\\r\\n]+$(?![\\s\\S])/);\nexport const ExternalIdentityReference = z\n .object({\n externalId,\n source: source.default(\"default\"),\n })\n .strict();\nexport type ExternalIdentityReference = z.infer<typeof ExternalIdentityReference>;\n\nexport const AddExternalWorkspaceMemberRequest = z\n .object({\n identity: ExternalIdentityReference,\n permissions: z.array(Permission).min(1).max(Permission.options.length),\n /** Opt-in durable operation identity; unkeyed legacy requests are not cancellable. */\n operationId: z.string().uuid().optional(),\n })\n .strict();\nexport type AddExternalWorkspaceMemberRequest = z.infer<typeof AddExternalWorkspaceMemberRequest>;\n\n/** Content-free service lookup, including identities which can no longer act. */\nexport const ExternalIdentityLookup = z.discriminatedUnion(\"found\", [\n z.object({ found: z.literal(false) }).strict(),\n z\n .object({\n found: z.literal(true),\n subjectId: externalSubject,\n organizationMembershipId: z.string().uuid(),\n identityStatus: z.enum([\"active\", \"disabled\", \"revoked\"]),\n identityAuthorizationRevision: z.number().int().positive().safe(),\n membershipStatus: z.enum([\"provisioning\", \"active\", \"suspended\", \"revoked\"]),\n membershipAuthorizationRevision: z.number().int().positive().safe(),\n })\n .strict(),\n]);\nexport type ExternalIdentityLookup = z.infer<typeof ExternalIdentityLookup>;\n\n/** Terminal withdrawal of this external member's workspace access, also fencing\n * an exact earlier onboarding operation whether or not it has reached the API. */\nexport const CancelExternalWorkspaceMemberGrantRequest = z\n .object({\n operationId: z.string().uuid(),\n cancelGrantOperationId: z.string().uuid(),\n })\n .strict()\n .refine((value) => value.operationId !== value.cancelGrantOperationId, {\n message: \"Revocation and grant must use different operation identities\",\n });\nexport type CancelExternalWorkspaceMemberGrantRequest = z.infer<\n typeof CancelExternalWorkspaceMemberGrantRequest\n>;\nexport const CancelExternalWorkspaceMemberGrantResponse = z\n .object({\n removed: z.boolean(),\n replay: z.boolean(),\n fencedGrantOperationId: z.string().uuid(),\n })\n .strict();\nexport type CancelExternalWorkspaceMemberGrantResponse = z.infer<\n typeof CancelExternalWorkspaceMemberGrantResponse\n>;\n\n/** Uses the organization membership ID returned by lazy identity admission.\n * Reactivation restores admission only, not revoked work or workspace grants. */\nexport const UpdateExternalIdentityMembershipRequest = z\n .object({\n kind: z.enum([\"suspend\", \"reactivate\", \"offboard\"]),\n expectedAuthorizationRevision: z.number().int().positive().safe(),\n operationId: z.string().uuid(),\n reason: z.string().max(512).optional(),\n })\n .strict();\nexport type UpdateExternalIdentityMembershipRequest = z.infer<\n typeof UpdateExternalIdentityMembershipRequest\n>;\n\nexport const ExternalActorSelection = z.discriminatedUnion(\"mode\", [\n z.object({ mode: z.literal(\"external\"), identity: ExternalIdentityReference }).strict(),\n z\n .object({\n mode: z.literal(\"linked_native\"),\n identity: ExternalIdentityReference,\n linkId: z.string().uuid(),\n expectedLinkRevision: z.number().int().positive().safe(),\n })\n .strict(),\n]);\nexport type ExternalActorSelection = z.infer<typeof ExternalActorSelection>;\n\nexport const ExternalIdentity = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n source,\n externalId,\n subjectId: externalSubject,\n organizationMembershipId: z.string().uuid(),\n personalWorkspaceId: z.string().uuid(),\n status: z.enum([\"active\", \"disabled\", \"revoked\"]),\n authorizationRevision: z.number().int().positive().safe(),\n })\n .strict();\nexport type ExternalIdentity = z.infer<typeof ExternalIdentity>;\n\n// Audit attribution, not authentication. Only the canonical access resolver\n// may establish provenance; accepting this JSON from a browser proves nothing.\nexport const ExternalActorAttribution = z\n .object({\n accountId: z.string().uuid(),\n authenticatingApiKeyId: z.string().uuid(),\n externalIdentityId: z.string().uuid(),\n externalSubjectId: externalSubject,\n externalAuthorizationRevision: z.number().int().positive().safe(),\n effectiveSubjectId: z.string().min(1).max(1024),\n actingMode: z.enum([\"external\", \"linked_native\"]),\n linkId: z.string().uuid().optional(),\n linkRevision: z.number().int().positive().safe().optional(),\n })\n .strict()\n .superRefine((value, context) => {\n if (value.actingMode === \"external\") {\n if (\n value.effectiveSubjectId !== value.externalSubjectId ||\n value.linkId !== undefined ||\n value.linkRevision !== undefined\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"External mode cannot delegate native identity\",\n });\n }\n } else if (\n !value.linkId ||\n !value.linkRevision ||\n !nativeSubject.safeParse(value.effectiveSubjectId).success\n ) {\n context.addIssue({\n code: \"custom\",\n message: \"Linked mode requires exact native delegation provenance\",\n });\n }\n });\nexport type ExternalActorAttribution = z.infer<typeof ExternalActorAttribution>;\n\n/** Server-signed/encrypted continuation data, never sufficient live authority. */\nexport const ExternalActorContinuation = z\n .object({\n identity: ExternalIdentityReference,\n actor: ExternalActorAttribution,\n })\n .strict();\nexport type ExternalActorContinuation = z.infer<typeof ExternalActorContinuation>;\n\nexport const ExternalIdentityLink = z\n .object({\n id: z.string().uuid(),\n accountId: z.string().uuid(),\n externalIdentityId: z.string().uuid(),\n externalIdentity: ExternalIdentityReference.optional(),\n nativeSubjectId: nativeSubject.nullable(),\n status: z.enum([\"pending\", \"active\", \"revoked\", \"expired\"]),\n revision: z.number().int().positive().safe(),\n permissions: z.array(Permission).max(Permission.options.length),\n expiresAt: z.string().datetime({ offset: true }).nullable(),\n })\n .strict()\n .refine(\n (value) => value.status !== \"active\" || value.nativeSubjectId !== null,\n \"An active link requires a confirmed native identity\",\n );\nexport type ExternalIdentityLink = z.infer<typeof ExternalIdentityLink>;\n\nexport const ExternalIdentityLinkPage = z\n .object({\n links: z.array(ExternalIdentityLink).max(50),\n nextCursor: z.string().uuid().nullable(),\n })\n .strict();\nexport type ExternalIdentityLinkPage = z.infer<typeof ExternalIdentityLinkPage>;\n\n/** A native confirmation may narrow this request, never broaden it. The\n * challenge is delivered once to the host and is not an authentication token. */\nexport const BeginExternalIdentityLinkRequest = z\n .object({\n permissions: z.array(Permission).min(1).max(Permission.options.length),\n expiresAt: z.string().datetime({ offset: true }).nullable().default(null),\n })\n .strict();\nexport type BeginExternalIdentityLinkRequest = z.input<typeof BeginExternalIdentityLinkRequest>;\nexport const ConfirmExternalIdentityLinkRequest = z\n .object({\n challenge: z.string().regex(/^[A-Za-z0-9_-]{43}$/),\n expectedRevision: z.number().int().positive().safe(),\n permissions: z.array(Permission).min(1).max(Permission.options.length),\n })\n .strict();\nexport type ConfirmExternalIdentityLinkRequest = z.infer<typeof ConfirmExternalIdentityLinkRequest>;\nexport const BeginExternalIdentityLinkResponse = z\n .object({\n link: ExternalIdentityLink,\n challenge: z.string().regex(/^[A-Za-z0-9_-]{43}$/),\n confirmBefore: z.string().datetime({ offset: true }),\n })\n .strict();\nexport type BeginExternalIdentityLinkResponse = z.infer<typeof BeginExternalIdentityLinkResponse>;\nexport const ExternalIdentityLinkPreview = z\n .object({\n link: ExternalIdentityLink,\n externalIdentity: ExternalIdentityReference,\n nativeSubjectId: nativeSubject,\n organizationId: z.string().uuid(),\n })\n .strict();\nexport type ExternalIdentityLinkPreview = z.infer<typeof ExternalIdentityLinkPreview>;\n\n/** Immutable accepted-work restriction, not a browser credential. Original key\n * identity remains audit-only; durable use validates the live link and members. */\nexport const ExternalLinkWorkSnapshot = z\n .object({\n identity: ExternalIdentityReference,\n actor: ExternalActorAttribution.refine((value) => value.actingMode === \"linked_native\"),\n permissions: z.array(Permission).max(Permission.options.length),\n })\n .strict();\nexport type ExternalLinkWorkSnapshot = z.infer<typeof ExternalLinkWorkSnapshot>;\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/editable-artifact-committed-transaction.ts"],"sourcesContent":["/**\n * Strict, allocation-bounded inspection of canonical OGACO002 transactions.\n *\n * The Rust kernel remains the authority for applying operations. This decoder\n * validates the complete envelope and every typed operation so metadata after\n * the operation stream cannot be located by trusting attacker-controlled\n * lengths. It intentionally does not construct an editable artifact model.\n */\n\nimport { COMMITTED_TRANSACTION_PROTOCOL_VERSION } from \"./editable-artifact-versions\";\n\nexport { COMMITTED_TRANSACTION_PROTOCOL_VERSION } from \"./editable-artifact-versions\";\nexport const MAX_COMMITTED_TRANSACTION_BYTES = 8 * 1024 * 1024;\nexport const MAX_COMMITTED_TRANSACTION_OPERATIONS = 4_096;\nexport const MAX_COMMITTED_TRANSACTION_CAUSAL_REPLICAS = 100_000;\nexport const MAX_COMMITTED_TRANSACTION_CELLS = 1_000_000;\n\nconst MAGIC = new Uint8Array([0x4f, 0x47, 0x41, 0x43, 0x4f, 0x30, 0x30, 0x32]); // OGACO002\nconst HEADER_BYTES = 24;\nconst CHECKSUM_BYTES = 8;\nconst HASH_BYTES = 32;\nconst STABLE_ID_BYTES = 16;\nconst MAX_OPERATION_STRING_BYTES = 4 * 1024 * 1024;\nconst MAX_SAFE_U64_HIGH = 0x1f_ffff;\nconst U32_SIZE = 0x1_0000_0000;\nconst U32_MAX = 0xffff_ffff;\nconst MAX_DATE_MILLISECONDS = 8_640_000_000_000_000n;\nconst FNV_OFFSET_LOW = 0x8422_2325;\nconst FNV_OFFSET_HIGH = 0xcbf2_9ce4;\nconst FNV_PRIME_LOW = 0x01b3;\n\nconst HEX = Array.from({ length: 256 }, (_, value) => value.toString(16).padStart(2, \"0\"));\n\nexport type CommittedTransactionCausalEntry = Readonly<{\n replicaId: string;\n counter: number;\n}>;\n\nexport type CommittedTransactionSummary = Readonly<{\n operationProtocolVersion: typeof COMMITTED_TRANSACTION_PROTOCOL_VERSION;\n transactionId: string;\n dot: CommittedTransactionCausalEntry;\n resolvedCausalBase: readonly CommittedTransactionCausalEntry[];\n operationIds: readonly string[];\n priorStateHash: string;\n resultingCausalFrontier: readonly CommittedTransactionCausalEntry[];\n stateHash: string;\n}>;\n\n/**\n * Decodes only the metadata of one exact canonical OGACO002 byte envelope.\n *\n * This function is synchronous and never mutates or retains `bytes`. The\n * caller remains the owner of the exact canonical envelope.\n */\nexport function decodeCommittedTransactionSummary(bytes: Uint8Array): CommittedTransactionSummary {\n assertInput(bytes);\n if (bytes.byteLength > MAX_COMMITTED_TRANSACTION_BYTES) {\n throw new RangeError(\"OGACO002 envelope exceeds its byte limit\");\n }\n if (bytes.byteLength < HEADER_BYTES + CHECKSUM_BYTES) {\n throw new TypeError(\"truncated OGACO002 envelope\");\n }\n\n const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n for (let index = 0; index < MAGIC.byteLength; index += 1) {\n if (bytes[index] !== MAGIC[index]) throw new TypeError(\"invalid OGACO002 magic\");\n }\n\n const version = view.getUint16(8, true);\n if (version !== COMMITTED_TRANSACTION_PROTOCOL_VERSION) {\n throw new TypeError(`unsupported OGACO002 version: ${version}`);\n }\n if (view.getUint16(10, true) !== 0) {\n throw new TypeError(\"reserved OGACO002 header bits are set\");\n }\n\n const operationCount = view.getUint32(12, true);\n if (operationCount === 0 || operationCount > MAX_COMMITTED_TRANSACTION_OPERATIONS) {\n throw new RangeError(\"OGACO002 operation count is outside its canonical bounds\");\n }\n\n const payloadLength = safeU64At(view, 16, \"OGACO002 payload length\", false);\n const payloadEnd = checkedAdd(HEADER_BYTES, payloadLength, \"OGACO002 payload length\");\n const expectedLength = checkedAdd(payloadEnd, CHECKSUM_BYTES, \"OGACO002 envelope length\");\n if (bytes.byteLength !== expectedLength) {\n throw new TypeError(\n bytes.byteLength < expectedLength\n ? \"truncated OGACO002 payload\"\n : \"trailing bytes after OGACO002 envelope\",\n );\n }\n\n const [checksumLow, checksumHigh] = fnv1a64(bytes, payloadEnd);\n if (\n view.getUint32(payloadEnd, true) !== checksumLow ||\n view.getUint32(payloadEnd + 4, true) !== checksumHigh\n ) {\n throw new TypeError(\"OGACO002 checksum mismatch\");\n }\n\n const reader = new Reader(bytes, HEADER_BYTES, payloadEnd);\n const transactionId = reader.stableId(\"transaction id\");\n const dot = Object.freeze({\n replicaId: reader.replicaId(\"transaction dot replica\"),\n counter: reader.safeU64(\"transaction dot counter\", true),\n });\n const resolvedCausalBase = reader.frontier(\"resolved causal base\");\n const priorStateHash = reader.stateHash(\"prior state hash\");\n\n const operationIds: string[] = [];\n const seenOperationIds = new Set<string>();\n let totalCells = 0;\n for (let index = 0; index < operationCount; index += 1) {\n const operationId = reader.stableId(`operation ${index} id`);\n if (seenOperationIds.has(operationId)) {\n throw new TypeError(\"OGACO002 operation ids must be unique\");\n }\n seenOperationIds.add(operationId);\n operationIds.push(operationId);\n totalCells = reader.skipCommand(totalCells);\n }\n\n const resultingCausalFrontier = reader.frontier(\"resulting causal frontier\");\n const stateHash = reader.stateHash(\"resulting state hash\");\n reader.done();\n\n return Object.freeze({\n operationProtocolVersion: COMMITTED_TRANSACTION_PROTOCOL_VERSION,\n transactionId,\n dot,\n resolvedCausalBase,\n operationIds: Object.freeze(operationIds),\n priorStateHash,\n resultingCausalFrontier,\n stateHash,\n });\n}\n\nclass Reader {\n readonly #bytes: Uint8Array;\n readonly #view: DataView;\n readonly #end: number;\n #offset: number;\n\n constructor(bytes: Uint8Array, offset: number, end: number) {\n this.#bytes = bytes;\n this.#view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);\n this.#offset = offset;\n this.#end = end;\n }\n\n take(length: number, label: string): Uint8Array {\n const offset = this.reserve(length, label);\n return this.#bytes.subarray(offset, offset + length);\n }\n\n reserve(length: number, label: string): number {\n if (!Number.isSafeInteger(length) || length < 0) {\n throw new RangeError(`${label} has an invalid byte length`);\n }\n const offset = this.#offset;\n const end = checkedAdd(offset, length, `${label} byte range`);\n if (end > this.#end) throw new TypeError(`truncated ${label}`);\n this.#offset = end;\n return offset;\n }\n\n u8(label: string): number {\n return this.#bytes[this.reserve(1, label)]!;\n }\n\n u32(label: string): number {\n const offset = this.reserve(4, label);\n return this.#view.getUint32(offset, true);\n }\n\n safeU64(label: string, positive: boolean): number {\n const offset = this.reserve(8, label);\n const value = safeU64At(this.#view, offset, label, positive);\n return value;\n }\n\n replicaId(label: string): string {\n const offset = this.reserve(8, label);\n const low = this.#view.getUint32(offset, true);\n const high = this.#view.getUint32(offset + 4, true);\n if (low === 0 && high === 0) throw new TypeError(`${label} must be nonzero`);\n return hexU64(high, low);\n }\n\n stableId(label: string): string {\n const offset = this.reserve(STABLE_ID_BYTES, label);\n const counterLow = this.#view.getUint32(offset, true);\n const counterHigh = this.#view.getUint32(offset + 4, true);\n const namespaceLow = this.#view.getUint32(offset + 8, true);\n const namespaceHigh = this.#view.getUint32(offset + 12, true);\n if (counterLow === 0 && counterHigh === 0 && namespaceLow === 0 && namespaceHigh === 0) {\n throw new TypeError(`${label} reserves the all-zero value`);\n }\n return `${hexU64(namespaceHigh, namespaceLow)}${hexU64(counterHigh, counterLow)}`;\n }\n\n sheetObjectId(label: string): string {\n const offset = this.#offset;\n const id = this.stableId(label);\n const counterIsZero =\n this.#view.getUint32(offset, true) === 0 && this.#view.getUint32(offset + 4, true) === 0;\n const namespaceIsZero =\n this.#view.getUint32(offset + 8, true) === 0 && this.#view.getUint32(offset + 12, true) === 0;\n if (counterIsZero || namespaceIsZero) {\n throw new TypeError(`${label} requires nonzero namespace and counter`);\n }\n return id;\n }\n\n stateHash(label: string): string {\n return `sha256:${hexBytes(this.take(HASH_BYTES, label))}`;\n }\n\n frontier(label: string): readonly CommittedTransactionCausalEntry[] {\n const count = this.u32(`${label} count`);\n if (count > MAX_COMMITTED_TRANSACTION_CAUSAL_REPLICAS) {\n throw new RangeError(`${label} exceeds its replica limit`);\n }\n const entries: CommittedTransactionCausalEntry[] = [];\n let previousLow = 0;\n let previousHigh = 0;\n let hasPrevious = false;\n for (let index = 0; index < count; index += 1) {\n const replicaOffset = this.#offset;\n const replicaId = this.replicaId(`${label} replica ${index}`);\n const replicaLow = this.#view.getUint32(replicaOffset, true);\n const replicaHigh = this.#view.getUint32(replicaOffset + 4, true);\n if (\n hasPrevious &&\n (replicaHigh < previousHigh || (replicaHigh === previousHigh && replicaLow <= previousLow))\n ) {\n throw new TypeError(`${label} replicas must be unique and strictly ordered`);\n }\n const counter = this.safeU64(`${label} counter ${index}`, true);\n entries.push(Object.freeze({ replicaId, counter }));\n previousLow = replicaLow;\n previousHigh = replicaHigh;\n hasPrevious = true;\n }\n return Object.freeze(entries);\n }\n\n skipCommand(totalCells: number): number {\n const tag = this.u8(\"collaboration command tag\");\n switch (tag) {\n case 0: {\n this.sheetObjectId(\"created sheet id\");\n this.skipString(\"created sheet name\");\n const after = this.u8(\"created sheet predecessor flag\");\n if (after === 1) this.skipGeneration(\"created sheet predecessor\");\n else if (after !== 0) throw new TypeError(\"invalid created sheet predecessor flag\");\n return totalCells;\n }\n case 1:\n this.skipGeneration(\"renamed sheet generation\");\n this.skipString(\"renamed sheet name\");\n return totalCells;\n case 2:\n this.skipGeneration(\"deleted sheet generation\");\n return totalCells;\n case 3:\n return this.skipSetCells(totalCells);\n case 4: {\n this.skipGeneration(\"cleared sheet generation\");\n const startRow = this.u32(\"clear range start row\");\n const startColumn = this.u32(\"clear range start column\");\n const endRow = this.u32(\"clear range end row\");\n const endColumn = this.u32(\"clear range end column\");\n if (startRow > endRow || startColumn > endColumn) {\n throw new TypeError(\"OGACO002 clear range is not normalized\");\n }\n return totalCells;\n }\n case 5:\n this.stableId(\"selective undo target\");\n return totalCells;\n default:\n throw new TypeError(`invalid OGACO002 collaboration command tag: ${tag}`);\n }\n }\n\n skipSetCells(totalCells: number): number {\n this.skipGeneration(\"cell block sheet generation\");\n const anchorRow = this.u32(\"cell block anchor row\");\n const anchorColumn = this.u32(\"cell block anchor column\");\n const rows = this.u32(\"cell block rows\");\n const columns = this.u32(\"cell block columns\");\n if (rows === 0 || columns === 0) {\n throw new TypeError(\"OGACO002 cell block dimensions must be nonzero\");\n }\n if (anchorRow > U32_MAX - (rows - 1) || anchorColumn > U32_MAX - (columns - 1)) {\n throw new RangeError(\"OGACO002 cell block coordinates overflow u32\");\n }\n if (rows > Math.floor(MAX_COMMITTED_TRANSACTION_CELLS / columns)) {\n throw new RangeError(\"OGACO002 cell block exceeds its cell limit\");\n }\n const cellCount = rows * columns;\n const nextTotal = totalCells + cellCount;\n if (nextTotal > MAX_COMMITTED_TRANSACTION_CELLS) {\n throw new RangeError(\"OGACO002 transaction exceeds its cell limit\");\n }\n for (let index = 0; index < cellCount; index += 1) this.skipCell();\n return nextTotal;\n }\n\n skipCell(): void {\n const formulaTag = this.u8(\"cell formula tag\");\n if (formulaTag === 1) {\n if (this.skipString(\"cell formula\") === 0) {\n throw new TypeError(\"OGACO002 formula must not be empty\");\n }\n return;\n } else if (formulaTag !== 0) {\n throw new TypeError(`invalid OGACO002 cell formula tag: ${formulaTag}`);\n }\n\n const valueTag = this.u8(\"cell value tag\");\n switch (valueTag) {\n case 0:\n case 1:\n case 2:\n return;\n case 3:\n this.skipNumber();\n return;\n case 4:\n this.skipString(\"cell text\");\n return;\n case 5:\n this.skipFormulaError();\n return;\n case 6:\n this.skipDate();\n return;\n default:\n throw new TypeError(`invalid OGACO002 cell value tag: ${valueTag}`);\n }\n }\n\n skipNumber(): void {\n const offset = this.reserve(8, \"cell number\");\n const low = this.#view.getUint32(offset, true);\n const high = this.#view.getUint32(offset + 4, true);\n if (low === 0 && high === 0x8000_0000) {\n throw new TypeError(\"OGACO002 cell number uses negative zero\");\n }\n if ((high & 0x7ff0_0000) === 0x7ff0_0000) {\n throw new TypeError(\"OGACO002 cell numbers must be finite\");\n }\n }\n\n skipDate(): void {\n const offset = this.reserve(8, \"cell date\");\n const milliseconds = this.#view.getBigInt64(offset, true);\n if (milliseconds < -MAX_DATE_MILLISECONDS || milliseconds > MAX_DATE_MILLISECONDS) {\n throw new TypeError(\"OGACO002 cell date is outside the ECMAScript range\");\n }\n }\n\n skipFormulaError(): void {\n const tag = this.u8(\"formula error tag\");\n if (tag <= 8) return;\n if (tag === 9) {\n this.skipString(\"custom formula error\");\n return;\n }\n throw new TypeError(`invalid OGACO002 formula error tag: ${tag}`);\n }\n\n skipGeneration(label: string): void {\n this.sheetObjectId(`${label} sheet id`);\n this.stableId(`${label} creation operation id`);\n }\n\n skipString(label: string): number {\n const length = this.u32(`${label} length`);\n if (length > MAX_OPERATION_STRING_BYTES) {\n throw new RangeError(`${label} exceeds its byte limit`);\n }\n const value = this.take(length, label);\n assertUtf8(value, label);\n return length;\n }\n\n done(): void {\n if (this.#offset !== this.#end) throw new TypeError(\"trailing bytes in OGACO002 payload\");\n }\n}\n\nfunction assertInput(bytes: Uint8Array): void {\n if (!(bytes instanceof Uint8Array)) {\n throw new TypeError(\"OGACO002 bytes must be a Uint8Array\");\n }\n if (typeof SharedArrayBuffer !== \"undefined\" && bytes.buffer instanceof SharedArrayBuffer) {\n throw new TypeError(\"OGACO002 bytes must not use shared mutable memory\");\n }\n}\n\nfunction safeU64At(view: DataView, offset: number, label: string, positive: boolean): number {\n const low = view.getUint32(offset, true);\n const high = view.getUint32(offset + 4, true);\n if (high > MAX_SAFE_U64_HIGH)\n throw new RangeError(`${label} exceeds JavaScript safe integer range`);\n const value = high * U32_SIZE + low;\n if (positive && value === 0) throw new TypeError(`${label} must be nonzero`);\n return value;\n}\n\nfunction checkedAdd(left: number, right: number, label: string): number {\n const result = left + right;\n if (!Number.isSafeInteger(result)) throw new RangeError(`${label} exceeds safe integer range`);\n return result;\n}\n\n/** Allocation-free UTF-8 scalar validation equivalent to Rust `str::from_utf8`. */\nfunction assertUtf8(bytes: Uint8Array, label: string): void {\n for (let index = 0; index < bytes.length;) {\n const first = bytes[index]!;\n if (first <= 0x7f) {\n index += 1;\n continue;\n }\n const second = bytes[index + 1];\n if (first >= 0xc2 && first <= 0xdf && continuation(second)) {\n index += 2;\n continue;\n }\n const third = bytes[index + 2];\n if (\n ((first === 0xe0 && between(second, 0xa0, 0xbf)) ||\n (first >= 0xe1 && first <= 0xec && continuation(second)) ||\n (first === 0xed && between(second, 0x80, 0x9f)) ||\n (first >= 0xee && first <= 0xef && continuation(second))) &&\n continuation(third)\n ) {\n index += 3;\n continue;\n }\n const fourth = bytes[index + 3];\n if (\n ((first === 0xf0 && between(second, 0x90, 0xbf)) ||\n (first >= 0xf1 && first <= 0xf3 && continuation(second)) ||\n (first === 0xf4 && between(second, 0x80, 0x8f))) &&\n continuation(third) &&\n continuation(fourth)\n ) {\n index += 4;\n continue;\n }\n throw new TypeError(`${label} is not canonical UTF-8`);\n }\n}\n\nfunction continuation(value: number | undefined): boolean {\n return value !== undefined && value >= 0x80 && value <= 0xbf;\n}\n\nfunction between(value: number | undefined, minimum: number, maximum: number): boolean {\n return value !== undefined && value >= minimum && value <= maximum;\n}\n\nfunction hexU64(high: number, low: number): string {\n return `${high.toString(16).padStart(8, \"0\")}${low.toString(16).padStart(8, \"0\")}`;\n}\n\nfunction hexBytes(bytes: Uint8Array): string {\n let result = \"\";\n for (const byte of bytes) result += HEX[byte];\n return result;\n}\n\n/** FNV-1a-64 using exact 32-bit limbs; avoids a BigInt allocation per byte. */\nfunction fnv1a64(bytes: Uint8Array, end: number): readonly [low: number, high: number] {\n let low = FNV_OFFSET_LOW;\n let high = FNV_OFFSET_HIGH;\n for (let index = 0; index < end; index += 1) {\n low = (low ^ bytes[index]!) >>> 0;\n const lowProduct = low * FNV_PRIME_LOW;\n const carry = Math.floor(lowProduct / U32_SIZE);\n high = (high * FNV_PRIME_LOW + carry + low * 0x100) >>> 0;\n low = lowProduct >>> 0;\n }\n return [low, high];\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/session-titles.ts"],"sourcesContent":["/** Human-authored session titles keep the existing public API ceiling. */\nexport const SESSION_TITLE_MAX_CHARACTERS = 200;\n\n/**\n * Automatic titles are intentionally much shorter than the manual rename\n * ceiling. This is measured in grapheme clusters so emoji and combining text\n * are never split into malformed display strings.\n */\nexport const AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES = 80;\n\n/**\n * Safe durable title used until semantic generation succeeds. It contains no\n * user prompt bytes, so provider failure/offline operation cannot leak a\n * credential or leave a raw prompt prefix in navigation surfaces.\n */\nexport const AUTOMATIC_SESSION_TITLE_FALLBACK = \"New conversation\";\n\n// Session creation accepts a body far larger than a navigation label. Bound\n// the source before any replace/split/normalization so a persisted large prompt\n// cannot amplify memory or CPU on every client render.\nconst PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4_096;\n\nconst SESSION_ID_PATTERN =\n /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;\n\nlet titleSegmenter: Intl.Segmenter | null | undefined;\n\nconst KNOWN_SENSITIVE_VALUE_PATTERNS = [\n /-----BEGIN [A-Z ]*PRIVATE KEY-----/iu,\n /\\bBearer\\s+[A-Za-z0-9._~+/=-]{8,}/iu,\n /\\b(?:sk-(?:proj-)?|gh[oprsu]_|github_pat_|glpat-|xox[baprs]-)[A-Za-z0-9_-]{8,}/iu,\n /\\bAKIA[0-9A-Z]{16}\\b/u,\n /\\bAIza[0-9A-Za-z_-]{20,}\\b/u,\n /\\beyJ[A-Za-z0-9_-]+\\.eyJ[A-Za-z0-9_-]+\\.[A-Za-z0-9_-]+\\b/u,\n /[?&](?:access_token|api_key|apikey|password|secret|token)=[^\\s&#]+/iu,\n] as const;\n\nconst URI_SCHEME_CANDIDATE_PATTERN = /\\b[a-z][a-z0-9+.-]*:\\S+/giu;\nconst WINDOWS_DRIVE_PATH_PATTERN = /^[a-z]:[\\\\/](?![\\\\/])[^:]*$/iu;\n\nconst SCHEMELESS_HOST_CANDIDATE_PATTERN =\n /\\b(?:www\\.)?(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z](?:[a-z0-9-]{0,61}[a-z0-9])?(?::\\d{1,5})?(?:[/?#][^\\s]*)?/giu;\n\nconst SCHEMELESS_LOCAL_NETWORK_PATTERNS = [\n /\\blocalhost(?:(?::\\d{1,5})(?:[/?#][^\\s]*)?|[/?#][^\\s]*)/iu,\n /\\b(?:(?:25[0-5]|2[0-4]\\d|1?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1?\\d?\\d)(?:(?::\\d{1,5})(?:[/?#][^\\s]*)?|[/?#][^\\s]*)/u,\n /\\[(?=[0-9a-f:.]*:[0-9a-f:.]*\\])[0-9a-f:.]+\\](?:(?::\\d{1,5})(?:[/?#][^\\s]*)?|[/?#][^\\s]*)/iu,\n] as const;\n\nconst FILE_LIKE_HOST_SUFFIXES = new Set([\n \"css\",\n \"html\",\n \"js\",\n \"json\",\n \"jsx\",\n \"lock\",\n \"md\",\n \"sql\",\n \"toml\",\n \"ts\",\n \"tsx\",\n \"xml\",\n \"yaml\",\n \"yml\",\n]);\n\n// These authorities are established framework/namespace notation whose exact\n// casing is meaningful. Keep this exception deliberately narrow: generic\n// PascalCase or uppercase authorities remain host-like because an uppercase\n// real domain (for example MICROSOFT.COM/Admin) must not bypass the URL gate.\nconst DOTTED_TECHNOLOGY_PATH_AUTHORITIES = new Set([\n \"ASP.NET\",\n \"AWS.SDK\",\n \"Microsoft.Extensions\",\n \"System.IO\",\n]);\n\nconst SECRET_ASSIGNMENT_CANDIDATE_PATTERN =\n /(?:^|[^A-Za-z0-9])(?:(['\"])([A-Za-z][A-Za-z0-9_. -]*)\\1|([A-Za-z][A-Za-z0-9_.-]*))\\s*[=:]\\s*[^\\s,;]+/gu;\n\nconst SECRET_LABEL_ASSIGNMENT_PATTERN =\n /\\b(?:api[ _-]?key|access[ _-]?token|auth[ _-]?token|credential|credentials|password|passwd|private[ _-]?key|secret|token)\\b\\s*[=:]\\s*[^\\s,;]+/iu;\n\nconst SENSITIVE_ASSIGNMENT_KEY_SUFFIXES = new Set([\n \"credential\",\n \"credentials\",\n \"password\",\n \"passwd\",\n \"secret\",\n \"token\",\n]);\n\nconst COMPACT_SENSITIVE_ASSIGNMENT_KEY_SUFFIXES = [\n \"apikey\",\n \"accesskey\",\n \"accesskeyid\",\n \"accesstoken\",\n \"authtoken\",\n \"credential\",\n \"credentials\",\n \"password\",\n \"passwd\",\n \"privatekey\",\n \"secret\",\n \"secretkey\",\n \"token\",\n] as const;\n\nconst SENSITIVE_ASSIGNMENT_KEY_WORD_SUFFIXES = [\n [\"api\", \"key\"],\n [\"access\", \"key\"],\n [\"access\", \"key\", \"id\"],\n [\"auth\", \"key\"],\n [\"private\", \"key\"],\n [\"secret\", \"key\"],\n] as const;\n\nfunction hasWordSuffix(words: readonly string[], suffix: readonly string[]): boolean {\n if (words.length < suffix.length) return false;\n const offset = words.length - suffix.length;\n return suffix.every((word, index) => words[offset + index] === word);\n}\n\nfunction containsSensitiveAssignment(value: string): boolean {\n for (const match of value.matchAll(SECRET_ASSIGNMENT_CANDIDATE_PATTERN)) {\n const key = match[2] ?? match[3];\n if (!key) continue;\n const words = key\n .replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n .replace(/([A-Z]+)([A-Z][a-z])/g, \"$1 $2\")\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean);\n const last = words.at(-1);\n if (last && SENSITIVE_ASSIGNMENT_KEY_SUFFIXES.has(last)) return true;\n if (last && COMPACT_SENSITIVE_ASSIGNMENT_KEY_SUFFIXES.some((suffix) => last.endsWith(suffix))) {\n return true;\n }\n if (SENSITIVE_ASSIGNMENT_KEY_WORD_SUFFIXES.some((suffix) => hasWordSuffix(words, suffix))) {\n return true;\n }\n }\n return false;\n}\n\nfunction containsUriScheme(value: string): boolean {\n for (const match of value.matchAll(URI_SCHEME_CANDIDATE_PATTERN)) {\n // A Windows drive path is the one scheme-shaped token accepted here. Keep\n // the exception exact: one separator after the drive letter and no later\n // colon, so x://host and a nested scheme remain rejected.\n if (!WINDOWS_DRIVE_PATH_PATTERN.test(match[0])) return true;\n }\n return false;\n}\n\nfunction isDottedTechnologyPath(candidate: string): boolean {\n if (/[?:#]/u.test(candidate)) return false;\n const [authority, ...pathSegments] = candidate.split(\"/\");\n if (!authority || pathSegments.length === 0 || pathSegments.some((segment) => !segment)) {\n return false;\n }\n if (\n !DOTTED_TECHNOLOGY_PATH_AUTHORITIES.has(authority) ||\n pathSegments.some((segment) => !/^[A-Z][A-Za-z0-9_-]*$/u.test(segment))\n ) {\n return false;\n }\n return true;\n}\n\nfunction containsSchemelessUrl(value: string): boolean {\n if (SCHEMELESS_LOCAL_NETWORK_PATTERNS.some((pattern) => pattern.test(value))) return true;\n\n for (const match of value.matchAll(SCHEMELESS_HOST_CANDIDATE_PATTERN)) {\n const candidate = match[0];\n if (candidate.toLowerCase().startsWith(\"www.\")) return true;\n if (!/[/?#]/u.test(candidate)) continue;\n\n const authority = candidate.split(/[/?#]/u, 1)[0] ?? \"\";\n const hostname = authority.replace(/:\\d{1,5}$/u, \"\");\n const suffix = hostname.split(\".\").at(-1)?.toLowerCase();\n if (suffix && FILE_LIKE_HOST_SUFFIXES.has(suffix)) continue;\n if (isDottedTechnologyPath(candidate)) continue;\n return true;\n }\n return false;\n}\n\nconst OPAQUE_IDENTIFIER_PATTERN =\n /\\b(?=[A-Za-z0-9_-]{32,}\\b)(?=[A-Za-z0-9_-]*[A-Za-z])(?=[A-Za-z0-9_-]*\\d)[A-Za-z0-9_-]+\\b/u;\n\nconst DEFAULT_IGNORABLE_CODE_POINTS = /\\p{Default_Ignorable_Code_Point}+/gu;\nconst ESCAPED_QUOTE_DELIMITERS = /\\\\+(?=[\"'])/gu;\n\nconst TITLE_LABEL_PATTERN =\n /^(?:(?:suggested|generated|concise)\\s+)?(?:(?:session|chat|conversation|task)\\s+)?title\\s*[:\\-–—]\\s*/iu;\n\nconst LEADING_BOILERPLATE_PATTERNS = [\n /^(?:hi|hello|hey)(?:\\s+there)?\\s*[,!:.\\-–—]*\\s*/iu,\n /^(?:i\\s+(?:would\\s+like|want|need)\\s+you\\s+to|i['’]d\\s+like\\s+you\\s+to)\\s+/iu,\n /^(?:please\\s+)?(?:can|could|would|will)\\s+you\\s+/iu,\n /^(?:your|the)\\s+(?:task|job)\\s+is\\s+to\\s+/iu,\n /^(?:please\\s+)?help\\s+me\\s+(?:to\\s+)?/iu,\n /^please(?:\\s*[,!:.\\-–—]+\\s*|\\s+|$)/iu,\n] as const;\n\nfunction automaticTitleDetectionValue(value: string): string {\n // Detection uses a compatibility-normalized shadow value so fullwidth\n // punctuation/letters, invisible token splits, and serialized quote\n // delimiters cannot evade the policy.\n // The accepted title itself stays byte-for-byte in the user's language and\n // emoji form; this shadow is never returned or persisted.\n return value\n .normalize(\"NFKC\")\n .replace(DEFAULT_IGNORABLE_CODE_POINTS, \"\")\n .replace(ESCAPED_QUOTE_DELIMITERS, \"\");\n}\n\nfunction hasVisibleAutomaticTitleContent(value: string): boolean {\n return automaticTitleDetectionValue(value).trim().length > 0;\n}\n\n/**\n * Whether a bounded automatic-title candidate contains a credential, URL, or\n * opaque identifier that must stay out of navigation and other display-title\n * surfaces. Callers handling an unbounded source must bound it before invoking\n * this helper.\n */\nexport function containsSensitiveAutomaticSessionTitleValue(value: string): boolean {\n const detectionValue = automaticTitleDetectionValue(value);\n\n if (KNOWN_SENSITIVE_VALUE_PATTERNS.some((pattern) => pattern.test(detectionValue))) return true;\n if (containsUriScheme(detectionValue)) return true;\n if (containsSchemelessUrl(detectionValue)) return true;\n if (SECRET_LABEL_ASSIGNMENT_PATTERN.test(detectionValue)) return true;\n if (containsSensitiveAssignment(detectionValue)) return true;\n if (OPAQUE_IDENTIFIER_PATTERN.test(detectionValue)) return true;\n return false;\n}\n\nfunction stripAutomaticTitleBoilerplate(value: string): string {\n let title = value;\n for (let pass = 0; pass < 4; pass += 1) {\n const before = title;\n title = title\n .replace(/^(?:```[^\\n]*|[\\s#>*_`\"'“”‘’\\-–—]+)+/u, \"\")\n .replace(TITLE_LABEL_PATTERN, \"\");\n for (const pattern of LEADING_BOILERPLATE_PATTERNS) {\n title = title.replace(pattern, \"\");\n }\n title = title.trim();\n if (title === before) break;\n }\n return title;\n}\n\nfunction automaticTitleGraphemes(value: string): string[] {\n if (titleSegmenter === undefined) {\n titleSegmenter =\n typeof Intl.Segmenter === \"function\"\n ? new Intl.Segmenter(undefined, { granularity: \"grapheme\" })\n : null;\n }\n if (titleSegmenter) {\n return Array.from(titleSegmenter.segment(value), (part) => part.segment);\n }\n\n // Older embedded runtimes may not ship Intl.Segmenter. Preserve surrogate\n // pairs plus common combining/emoji sequences instead of failing module load\n // or slicing UTF-16 code units.\n const graphemes: string[] = [];\n for (const point of value) {\n const prior = graphemes.at(-1);\n if (\n prior &&\n (/^[\\p{Mark}\\u{FE0E}\\u{FE0F}\\p{Emoji_Modifier}]$/u.test(point) ||\n point === \"\\u200d\" ||\n prior.endsWith(\"\\u200d\"))\n ) {\n graphemes[graphemes.length - 1] = `${prior}${point}`;\n } else {\n graphemes.push(point);\n }\n }\n return graphemes;\n}\n\n/** Bound an already-normalized automatic-title candidate without splitting graphemes. */\nexport function boundAutomaticSessionTitle(value: string): string {\n const words = value.split(/\\s+/u);\n const wordBounded = words.length > 10 ? words.slice(0, 10).join(\" \") : value;\n const graphemes = automaticTitleGraphemes(wordBounded);\n if (graphemes.length <= AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES) return wordBounded;\n\n const prefix = graphemes.slice(0, AUTOMATIC_SESSION_TITLE_MAX_GRAPHEMES).join(\"\");\n const lastWhitespace = prefix.search(/\\s+\\S*$/u);\n return (lastWhitespace >= 16 ? prefix.slice(0, lastWhitespace) : prefix).trimEnd();\n}\n\n/**\n * Normalize a model/system-authored title before it reaches durable session\n * metadata. Human renames intentionally do not use this path.\n *\n * Returns null when the candidate is empty, only boilerplate, or appears to\n * contain a credential/opaque prompt value. Callers should retain the current\n * title (normally {@link AUTOMATIC_SESSION_TITLE_FALLBACK}) in that case.\n */\nexport function normalizeAutomaticSessionTitle(value: string): string | null {\n const firstLine = value\n .replace(/[\\u0000-\\u001f\\u007f-\\u009f]+/gu, \"\\n\")\n .split(/\\n+/u)\n .map((line) => line.trim())\n .find(Boolean);\n if (\n !firstLine ||\n !hasVisibleAutomaticTitleContent(firstLine) ||\n containsSensitiveAutomaticSessionTitleValue(firstLine)\n ) {\n return null;\n }\n\n let title = stripAutomaticTitleBoilerplate(firstLine)\n .replace(/\\s+/gu, \" \")\n .replace(/[\\s.!?,;:\\-–—]+$/u, \"\")\n .trim();\n if (\n !title ||\n !hasVisibleAutomaticTitleContent(title) ||\n containsSensitiveAutomaticSessionTitleValue(title)\n ) {\n return null;\n }\n\n title = boundAutomaticSessionTitle(title)\n .replace(/[\\s.!?,;:\\-–—]+$/u, \"\")\n .trim();\n if (!title || !hasVisibleAutomaticTitleContent(title)) return null;\n return title;\n}\n\nexport type SessionDisplayTitleInput = {\n id?: string | null | undefined;\n title?: string | null | undefined;\n titleSource?: \"user\" | \"agent\" | null | undefined;\n initialMessage?: string | null | undefined;\n metadata?: Readonly<Record<string, unknown>> | undefined;\n};\n\nexport type SessionDisplayTitleOptions = {\n /** Optional metadata fields to try before the opening-prompt preview. */\n metadataKeys?: readonly string[] | undefined;\n};\n\n/**\n * Derive a bounded, sensitive-safe preview from the opening prompt.\n *\n * Unsafe leading lines are skipped instead of forcing the whole session back\n * to a generic label. This covers prompts that begin with a pasted URL or\n * identifier followed by an ordinary natural-language request on the next\n * line, without putting the rejected value into navigation surfaces.\n */\nexport function deriveAutomaticSessionTitlePreview(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n\n const lines = value\n .slice(0, PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS)\n .replace(/[\\u0000-\\u001f\\u007f-\\u009f]+/gu, \"\\n\")\n .split(/\\n+/u);\n\n for (const candidate of lines) {\n const line = candidate.trim();\n if (!line || containsSensitiveAutomaticSessionTitleValue(line)) continue;\n\n const preview = boundAutomaticSessionTitle(line.replace(/\\s+/gu, \" \"))\n .replace(/[\\s.!?,;:\\-–—]+$/u, \"\")\n .trim();\n if (preview) return preview;\n }\n\n return null;\n}\n\nfunction automaticSessionReferenceTitle(id: unknown): string {\n const sessionId = typeof id === \"string\" ? id.trim() : \"\";\n return SESSION_ID_PATTERN.test(sessionId)\n ? `Conversation ${sessionId.slice(0, 13)}`\n : AUTOMATIC_SESSION_TITLE_FALLBACK;\n}\n\n/**\n * Whether the durable title still represents the automatic-title pending state.\n * A user-authored title always wins, even when its literal value is the marker.\n */\nexport function sessionTitleIsPending(input: SessionDisplayTitleInput): boolean {\n const title = input.title?.trim() ?? \"\";\n return input.titleSource !== \"user\" && (!title || title === AUTOMATIC_SESSION_TITLE_FALLBACK);\n}\n\n/**\n * Derive the title a human-facing client should display for a session.\n *\n * A semantic agent title or human rename wins. While automatic naming is still\n * pending, clients show a short, sensitive-safe preview of the opening prompt.\n * If no safe prompt text exists, a UUID-derived reference keeps real sessions\n * distinguishable without exposing prompt bytes. The durable pending marker is\n * therefore an internal lifecycle value rather than the ordinary visible name.\n */\nexport function deriveSessionDisplayTitle(\n input: SessionDisplayTitleInput,\n options: SessionDisplayTitleOptions = {},\n): string {\n const title = input.title?.trim() ?? \"\";\n if (input.titleSource === \"user\") {\n return title || automaticSessionReferenceTitle(input.id);\n }\n if (title && !sessionTitleIsPending(input)) {\n return title;\n }\n\n for (const key of options.metadataKeys ?? []) {\n const value = input.metadata?.[key];\n if (typeof value === \"string\" && value.trim().length > 0) {\n return value.trim();\n }\n }\n\n return (\n deriveAutomaticSessionTitlePreview(input.initialMessage) ??\n automaticSessionReferenceTitle(input.id)\n );\n}\n"],"mappings":"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","names":[]}
|
package/dist/chunk-BCS7WHCK.js
DELETED
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
// src/organization-recovery.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var Uuid = z.string().uuid();
|
|
4
|
-
var Timestamp = z.string().datetime({ offset: true });
|
|
5
|
-
var OrganizationRecoveryPolicyState = z.enum([
|
|
6
|
-
"pending_acceptance",
|
|
7
|
-
"active",
|
|
8
|
-
"degraded",
|
|
9
|
-
"superseded",
|
|
10
|
-
"disabled"
|
|
11
|
-
]);
|
|
12
|
-
var OrganizationRecoveryOperationState = z.enum([
|
|
13
|
-
"collecting",
|
|
14
|
-
"cooling",
|
|
15
|
-
"executed",
|
|
16
|
-
"cancelled",
|
|
17
|
-
"expired",
|
|
18
|
-
"superseded"
|
|
19
|
-
]);
|
|
20
|
-
var OrganizationRecoveryUnavailableReason = z.enum([
|
|
21
|
-
"no_policy",
|
|
22
|
-
"pending_acceptance",
|
|
23
|
-
"degraded",
|
|
24
|
-
"disabled",
|
|
25
|
-
"identity_unavailable"
|
|
26
|
-
]);
|
|
27
|
-
var OrganizationRecoveryMemberSummary = z.object({
|
|
28
|
-
membershipId: Uuid,
|
|
29
|
-
name: z.string().trim().min(1).max(1024).nullable(),
|
|
30
|
-
email: z.string().email().max(320).nullable()
|
|
31
|
-
}).strict();
|
|
32
|
-
var OrganizationRecoveryCustodian = OrganizationRecoveryMemberSummary.extend({
|
|
33
|
-
ordinal: z.number().int().min(1).max(3),
|
|
34
|
-
enrollmentState: z.enum(["pending_acceptance", "accepted", "ineligible"]),
|
|
35
|
-
acceptedAt: Timestamp.nullable()
|
|
36
|
-
}).strict();
|
|
37
|
-
var OrganizationRecoveryPolicy = z.object({
|
|
38
|
-
id: Uuid,
|
|
39
|
-
organizationId: Uuid,
|
|
40
|
-
revision: z.number().int().positive(),
|
|
41
|
-
state: OrganizationRecoveryPolicyState,
|
|
42
|
-
custodians: z.array(OrganizationRecoveryCustodian).length(3),
|
|
43
|
-
createdAt: Timestamp,
|
|
44
|
-
updatedAt: Timestamp
|
|
45
|
-
}).strict();
|
|
46
|
-
var OrganizationRecoveryApproval = OrganizationRecoveryMemberSummary.extend({
|
|
47
|
-
approvedAt: Timestamp
|
|
48
|
-
}).strict();
|
|
49
|
-
var OrganizationRecoveryOperation = z.object({
|
|
50
|
-
id: Uuid,
|
|
51
|
-
organizationId: Uuid,
|
|
52
|
-
policyId: Uuid,
|
|
53
|
-
policyRevision: z.number().int().positive(),
|
|
54
|
-
revision: z.number().int().positive(),
|
|
55
|
-
state: OrganizationRecoveryOperationState,
|
|
56
|
-
target: OrganizationRecoveryMemberSummary,
|
|
57
|
-
approvals: z.array(OrganizationRecoveryApproval).max(3),
|
|
58
|
-
approvalCount: z.number().int().min(0).max(3),
|
|
59
|
-
quorumAt: Timestamp.nullable(),
|
|
60
|
-
executableAt: Timestamp.nullable(),
|
|
61
|
-
expiresAt: Timestamp,
|
|
62
|
-
executedAt: Timestamp.nullable(),
|
|
63
|
-
cancelledAt: Timestamp.nullable(),
|
|
64
|
-
notificationJournaled: z.boolean(),
|
|
65
|
-
createdAt: Timestamp,
|
|
66
|
-
updatedAt: Timestamp
|
|
67
|
-
}).strict();
|
|
68
|
-
var OrganizationRecoveryCapabilities = z.object({
|
|
69
|
-
configure: z.boolean(),
|
|
70
|
-
accept: z.boolean(),
|
|
71
|
-
disable: z.boolean(),
|
|
72
|
-
start: z.boolean(),
|
|
73
|
-
approve: z.boolean(),
|
|
74
|
-
cancel: z.boolean(),
|
|
75
|
-
execute: z.boolean()
|
|
76
|
-
}).strict();
|
|
77
|
-
var OrganizationRecoveryOverview = z.object({
|
|
78
|
-
organizationId: Uuid,
|
|
79
|
-
availability: z.enum(["available", "recovery_unavailable"]),
|
|
80
|
-
unavailableReason: OrganizationRecoveryUnavailableReason.nullable(),
|
|
81
|
-
recentReauthenticationAt: Timestamp.nullable(),
|
|
82
|
-
eligibleMembers: z.array(OrganizationRecoveryMemberSummary).max(1e3),
|
|
83
|
-
policy: OrganizationRecoveryPolicy.nullable(),
|
|
84
|
-
operation: OrganizationRecoveryOperation.nullable(),
|
|
85
|
-
capabilities: OrganizationRecoveryCapabilities
|
|
86
|
-
}).strict();
|
|
87
|
-
var ExpectedPolicyRevision = z.number().int().nonnegative();
|
|
88
|
-
var ExpectedOperationRevision = z.number().int().positive();
|
|
89
|
-
var CommandOperationId = Uuid;
|
|
90
|
-
var ConfigureOrganizationRecoveryPolicyRequest = z.object({
|
|
91
|
-
custodianMembershipIds: z.tuple([Uuid, Uuid, Uuid]).superRefine((ids, context) => {
|
|
92
|
-
if (new Set(ids).size !== 3) {
|
|
93
|
-
context.addIssue({
|
|
94
|
-
code: "custom",
|
|
95
|
-
message: "recovery custodians must be three distinct memberships"
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
}),
|
|
99
|
-
expectedPolicyRevision: ExpectedPolicyRevision,
|
|
100
|
-
operationId: CommandOperationId
|
|
101
|
-
}).strict();
|
|
102
|
-
var AcceptOrganizationRecoveryCustodyRequest = z.object({
|
|
103
|
-
expectedPolicyRevision: ExpectedPolicyRevision,
|
|
104
|
-
operationId: CommandOperationId
|
|
105
|
-
}).strict();
|
|
106
|
-
var DisableOrganizationRecoveryPolicyRequest = AcceptOrganizationRecoveryCustodyRequest;
|
|
107
|
-
var StartOrganizationRecoveryOperationRequest = z.object({
|
|
108
|
-
targetMembershipId: Uuid,
|
|
109
|
-
expectedPolicyRevision: z.number().int().positive(),
|
|
110
|
-
operationId: CommandOperationId
|
|
111
|
-
}).strict();
|
|
112
|
-
var OrganizationRecoveryOperationCommandRequest = z.object({
|
|
113
|
-
expectedOperationRevision: ExpectedOperationRevision,
|
|
114
|
-
operationId: CommandOperationId
|
|
115
|
-
}).strict();
|
|
116
|
-
var OrganizationRecoveryMutationResponse = z.object({
|
|
117
|
-
replay: z.boolean(),
|
|
118
|
-
overview: OrganizationRecoveryOverview
|
|
119
|
-
}).strict();
|
|
120
|
-
|
|
121
|
-
export {
|
|
122
|
-
OrganizationRecoveryPolicyState,
|
|
123
|
-
OrganizationRecoveryOperationState,
|
|
124
|
-
OrganizationRecoveryUnavailableReason,
|
|
125
|
-
OrganizationRecoveryMemberSummary,
|
|
126
|
-
OrganizationRecoveryCustodian,
|
|
127
|
-
OrganizationRecoveryPolicy,
|
|
128
|
-
OrganizationRecoveryApproval,
|
|
129
|
-
OrganizationRecoveryOperation,
|
|
130
|
-
OrganizationRecoveryCapabilities,
|
|
131
|
-
OrganizationRecoveryOverview,
|
|
132
|
-
ConfigureOrganizationRecoveryPolicyRequest,
|
|
133
|
-
AcceptOrganizationRecoveryCustodyRequest,
|
|
134
|
-
DisableOrganizationRecoveryPolicyRequest,
|
|
135
|
-
StartOrganizationRecoveryOperationRequest,
|
|
136
|
-
OrganizationRecoveryOperationCommandRequest,
|
|
137
|
-
OrganizationRecoveryMutationResponse
|
|
138
|
-
};
|
|
139
|
-
//# sourceMappingURL=chunk-BCS7WHCK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/organization-recovery.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst Uuid = z.string().uuid();\nconst Timestamp = z.string().datetime({ offset: true });\n\nexport const OrganizationRecoveryPolicyState = z.enum([\n \"pending_acceptance\",\n \"active\",\n \"degraded\",\n \"superseded\",\n \"disabled\",\n]);\nexport type OrganizationRecoveryPolicyState = z.infer<typeof OrganizationRecoveryPolicyState>;\n\nexport const OrganizationRecoveryOperationState = z.enum([\n \"collecting\",\n \"cooling\",\n \"executed\",\n \"cancelled\",\n \"expired\",\n \"superseded\",\n]);\nexport type OrganizationRecoveryOperationState = z.infer<typeof OrganizationRecoveryOperationState>;\n\nexport const OrganizationRecoveryUnavailableReason = z.enum([\n \"no_policy\",\n \"pending_acceptance\",\n \"degraded\",\n \"disabled\",\n \"identity_unavailable\",\n]);\nexport type OrganizationRecoveryUnavailableReason = z.infer<\n typeof OrganizationRecoveryUnavailableReason\n>;\n\nexport const OrganizationRecoveryMemberSummary = z\n .object({\n membershipId: Uuid,\n name: z.string().trim().min(1).max(1024).nullable(),\n email: z.string().email().max(320).nullable(),\n })\n .strict();\nexport type OrganizationRecoveryMemberSummary = z.infer<typeof OrganizationRecoveryMemberSummary>;\n\nexport const OrganizationRecoveryCustodian = OrganizationRecoveryMemberSummary.extend({\n ordinal: z.number().int().min(1).max(3),\n enrollmentState: z.enum([\"pending_acceptance\", \"accepted\", \"ineligible\"]),\n acceptedAt: Timestamp.nullable(),\n}).strict();\nexport type OrganizationRecoveryCustodian = z.infer<typeof OrganizationRecoveryCustodian>;\n\nexport const OrganizationRecoveryPolicy = z\n .object({\n id: Uuid,\n organizationId: Uuid,\n revision: z.number().int().positive(),\n state: OrganizationRecoveryPolicyState,\n custodians: z.array(OrganizationRecoveryCustodian).length(3),\n createdAt: Timestamp,\n updatedAt: Timestamp,\n })\n .strict();\nexport type OrganizationRecoveryPolicy = z.infer<typeof OrganizationRecoveryPolicy>;\n\nexport const OrganizationRecoveryApproval = OrganizationRecoveryMemberSummary.extend({\n approvedAt: Timestamp,\n}).strict();\nexport type OrganizationRecoveryApproval = z.infer<typeof OrganizationRecoveryApproval>;\n\nexport const OrganizationRecoveryOperation = z\n .object({\n id: Uuid,\n organizationId: Uuid,\n policyId: Uuid,\n policyRevision: z.number().int().positive(),\n revision: z.number().int().positive(),\n state: OrganizationRecoveryOperationState,\n target: OrganizationRecoveryMemberSummary,\n approvals: z.array(OrganizationRecoveryApproval).max(3),\n approvalCount: z.number().int().min(0).max(3),\n quorumAt: Timestamp.nullable(),\n executableAt: Timestamp.nullable(),\n expiresAt: Timestamp,\n executedAt: Timestamp.nullable(),\n cancelledAt: Timestamp.nullable(),\n notificationJournaled: z.boolean(),\n createdAt: Timestamp,\n updatedAt: Timestamp,\n })\n .strict();\nexport type OrganizationRecoveryOperation = z.infer<typeof OrganizationRecoveryOperation>;\n\nexport const OrganizationRecoveryCapabilities = z\n .object({\n configure: z.boolean(),\n accept: z.boolean(),\n disable: z.boolean(),\n start: z.boolean(),\n approve: z.boolean(),\n cancel: z.boolean(),\n execute: z.boolean(),\n })\n .strict();\nexport type OrganizationRecoveryCapabilities = z.infer<typeof OrganizationRecoveryCapabilities>;\n\nexport const OrganizationRecoveryOverview = z\n .object({\n organizationId: Uuid,\n availability: z.enum([\"available\", \"recovery_unavailable\"]),\n unavailableReason: OrganizationRecoveryUnavailableReason.nullable(),\n recentReauthenticationAt: Timestamp.nullable(),\n eligibleMembers: z.array(OrganizationRecoveryMemberSummary).max(1000),\n policy: OrganizationRecoveryPolicy.nullable(),\n operation: OrganizationRecoveryOperation.nullable(),\n capabilities: OrganizationRecoveryCapabilities,\n })\n .strict();\nexport type OrganizationRecoveryOverview = z.infer<typeof OrganizationRecoveryOverview>;\n\nconst ExpectedPolicyRevision = z.number().int().nonnegative();\nconst ExpectedOperationRevision = z.number().int().positive();\nconst CommandOperationId = Uuid;\n\nexport const ConfigureOrganizationRecoveryPolicyRequest = z\n .object({\n custodianMembershipIds: z.tuple([Uuid, Uuid, Uuid]).superRefine((ids, context) => {\n if (new Set(ids).size !== 3) {\n context.addIssue({\n code: \"custom\",\n message: \"recovery custodians must be three distinct memberships\",\n });\n }\n }),\n expectedPolicyRevision: ExpectedPolicyRevision,\n operationId: CommandOperationId,\n })\n .strict();\nexport type ConfigureOrganizationRecoveryPolicyRequest = z.infer<\n typeof ConfigureOrganizationRecoveryPolicyRequest\n>;\n\nexport const AcceptOrganizationRecoveryCustodyRequest = z\n .object({\n expectedPolicyRevision: ExpectedPolicyRevision,\n operationId: CommandOperationId,\n })\n .strict();\nexport type AcceptOrganizationRecoveryCustodyRequest = z.infer<\n typeof AcceptOrganizationRecoveryCustodyRequest\n>;\n\nexport const DisableOrganizationRecoveryPolicyRequest = AcceptOrganizationRecoveryCustodyRequest;\nexport type DisableOrganizationRecoveryPolicyRequest = z.infer<\n typeof DisableOrganizationRecoveryPolicyRequest\n>;\n\nexport const StartOrganizationRecoveryOperationRequest = z\n .object({\n targetMembershipId: Uuid,\n expectedPolicyRevision: z.number().int().positive(),\n operationId: CommandOperationId,\n })\n .strict();\nexport type StartOrganizationRecoveryOperationRequest = z.infer<\n typeof StartOrganizationRecoveryOperationRequest\n>;\n\nexport const OrganizationRecoveryOperationCommandRequest = z\n .object({\n expectedOperationRevision: ExpectedOperationRevision,\n operationId: CommandOperationId,\n })\n .strict();\nexport type OrganizationRecoveryOperationCommandRequest = z.infer<\n typeof OrganizationRecoveryOperationCommandRequest\n>;\n\nexport const OrganizationRecoveryMutationResponse = z\n .object({\n replay: z.boolean(),\n overview: OrganizationRecoveryOverview,\n })\n .strict();\nexport type OrganizationRecoveryMutationResponse = z.infer<\n typeof OrganizationRecoveryMutationResponse\n>;\n"],"mappings":"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","names":[]}
|
package/dist/chunk-GRG7PHWQ.js
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
// src/xai-provider-account-authority.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
|
|
4
|
-
var XaiProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion("scope", [
|
|
5
|
-
z.object({ version: z.literal(1), scope: z.literal("organization") }).strict(),
|
|
6
|
-
z.object({
|
|
7
|
-
version: z.literal(1),
|
|
8
|
-
scope: z.literal("workspace")
|
|
9
|
-
}).strict(),
|
|
10
|
-
z.object({
|
|
11
|
-
version: z.literal(1),
|
|
12
|
-
scope: z.literal("user"),
|
|
13
|
-
authorityGeneration: PositiveSafeInteger
|
|
14
|
-
}).strict()
|
|
15
|
-
]);
|
|
16
|
-
var WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {
|
|
17
|
-
version: 1,
|
|
18
|
-
scope: "workspace"
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
export {
|
|
22
|
-
XaiProviderAccountAuthoritySnapshotV1,
|
|
23
|
-
WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=chunk-GRG7PHWQ.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/xai-provider-account-authority.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);\n\n/**\n * Opaque authority frozen at an xAI provider-account acceptance boundary.\n *\n * This snapshot deliberately carries no organization, membership, credential,\n * provider-account, subject, label, quota, token, or plan identity. User scope\n * becomes executable only after exact live database revalidation against the\n * separately stored causal subject and xAI subscription authority row.\n */\nexport const XaiProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion(\"scope\", [\n z.object({ version: z.literal(1), scope: z.literal(\"organization\") }).strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"workspace\"),\n })\n .strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"user\"),\n authorityGeneration: PositiveSafeInteger,\n })\n .strict(),\n]);\n\nexport type XaiProviderAccountAuthoritySnapshotV1 = z.infer<\n typeof XaiProviderAccountAuthoritySnapshotV1\n>;\n\n/** Explicit compatibility value for workspace-default accepted work. */\nexport const WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {\n version: 1,\n scope: \"workspace\",\n} as const satisfies XaiProviderAccountAuthoritySnapshotV1;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,IAAM,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,OAAO,gBAAgB;AAU5E,IAAM,wCAAwC,EAAE,mBAAmB,SAAS;AAAA,EACjF,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO;AAAA,EAC7E,EACG,OAAO;AAAA,IACN,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,WAAW;AAAA,EAC9B,CAAC,EACA,OAAO;AAAA,EACV,EACG,OAAO;AAAA,IACN,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,MAAM;AAAA,IACvB,qBAAqB;AAAA,EACvB,CAAC,EACA,OAAO;AACZ,CAAC;AAOM,IAAM,uDAAuD;AAAA,EAClE,SAAS;AAAA,EACT,OAAO;AACT;","names":[]}
|
package/dist/chunk-JUFK3T4Q.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
// src/canonical-human-identities.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var CanonicalHumanIdentityStatus = z.enum([
|
|
4
|
-
"active",
|
|
5
|
-
"recovery_required",
|
|
6
|
-
"disputed",
|
|
7
|
-
"disabled"
|
|
8
|
-
]);
|
|
9
|
-
var CanonicalHumanLoginBindingStatus = z.enum([
|
|
10
|
-
"active",
|
|
11
|
-
"recovery_pending",
|
|
12
|
-
"stale",
|
|
13
|
-
"disputed",
|
|
14
|
-
"revoked"
|
|
15
|
-
]);
|
|
16
|
-
var CanonicalHumanRecoveryState = z.enum([
|
|
17
|
-
"ready",
|
|
18
|
-
"recovery_required",
|
|
19
|
-
"lost_factor",
|
|
20
|
-
"disputed",
|
|
21
|
-
"disabled"
|
|
22
|
-
]);
|
|
23
|
-
var CanonicalHumanLoginBinding = z.object({
|
|
24
|
-
id: z.string().uuid(),
|
|
25
|
-
providerId: z.string().min(1).max(128),
|
|
26
|
-
providerAccountId: z.string().min(1).max(1024),
|
|
27
|
-
status: CanonicalHumanLoginBindingStatus,
|
|
28
|
-
revision: z.number().int().positive(),
|
|
29
|
-
verifiedAt: z.string().datetime(),
|
|
30
|
-
lastVerifiedAt: z.string().datetime(),
|
|
31
|
-
revokedAt: z.string().datetime().nullable(),
|
|
32
|
-
createdAt: z.string().datetime(),
|
|
33
|
-
updatedAt: z.string().datetime()
|
|
34
|
-
});
|
|
35
|
-
var CanonicalHumanIdentityProjection = z.object({
|
|
36
|
-
activeIdentity: z.object({
|
|
37
|
-
id: z.string().uuid(),
|
|
38
|
-
displayName: z.string().min(1).max(256),
|
|
39
|
-
status: CanonicalHumanIdentityStatus,
|
|
40
|
-
identityRevision: z.number().int().positive(),
|
|
41
|
-
authRevision: z.number().int().positive(),
|
|
42
|
-
activeLoginBindingId: z.string().uuid().nullable(),
|
|
43
|
-
recoveryState: CanonicalHumanRecoveryState,
|
|
44
|
-
createdAt: z.string().datetime(),
|
|
45
|
-
updatedAt: z.string().datetime()
|
|
46
|
-
}),
|
|
47
|
-
loginBindings: z.array(CanonicalHumanLoginBinding).max(64)
|
|
48
|
-
});
|
|
49
|
-
var OperationFields = {
|
|
50
|
-
operationId: z.string().uuid().optional(),
|
|
51
|
-
expectedIdentityRevision: z.number().int().positive(),
|
|
52
|
-
reason: z.string().trim().min(1).max(512)
|
|
53
|
-
};
|
|
54
|
-
var LinkCanonicalHumanLoginBindingRequest = z.object({
|
|
55
|
-
...OperationFields,
|
|
56
|
-
providerId: z.string().trim().min(1).max(128),
|
|
57
|
-
providerAccountId: z.string().trim().min(1).max(1024)
|
|
58
|
-
});
|
|
59
|
-
var CanonicalHumanBindingOperationRequest = z.object({
|
|
60
|
-
...OperationFields
|
|
61
|
-
});
|
|
62
|
-
var CanonicalHumanIdentityMutationOutcome = z.enum(["applied", "lost_factor", "disputed"]);
|
|
63
|
-
var CanonicalHumanIdentityMutationResponse = z.object({
|
|
64
|
-
outcome: CanonicalHumanIdentityMutationOutcome,
|
|
65
|
-
operationId: z.string().uuid(),
|
|
66
|
-
identity: CanonicalHumanIdentityProjection
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
export {
|
|
70
|
-
CanonicalHumanIdentityStatus,
|
|
71
|
-
CanonicalHumanLoginBindingStatus,
|
|
72
|
-
CanonicalHumanRecoveryState,
|
|
73
|
-
CanonicalHumanLoginBinding,
|
|
74
|
-
CanonicalHumanIdentityProjection,
|
|
75
|
-
LinkCanonicalHumanLoginBindingRequest,
|
|
76
|
-
CanonicalHumanBindingOperationRequest,
|
|
77
|
-
CanonicalHumanIdentityMutationOutcome,
|
|
78
|
-
CanonicalHumanIdentityMutationResponse
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=chunk-JUFK3T4Q.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/canonical-human-identities.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const CanonicalHumanIdentityStatus = z.enum([\n \"active\",\n \"recovery_required\",\n \"disputed\",\n \"disabled\",\n]);\nexport type CanonicalHumanIdentityStatus = z.infer<typeof CanonicalHumanIdentityStatus>;\n\nexport const CanonicalHumanLoginBindingStatus = z.enum([\n \"active\",\n \"recovery_pending\",\n \"stale\",\n \"disputed\",\n \"revoked\",\n]);\nexport type CanonicalHumanLoginBindingStatus = z.infer<typeof CanonicalHumanLoginBindingStatus>;\n\nexport const CanonicalHumanRecoveryState = z.enum([\n \"ready\",\n \"recovery_required\",\n \"lost_factor\",\n \"disputed\",\n \"disabled\",\n]);\nexport type CanonicalHumanRecoveryState = z.infer<typeof CanonicalHumanRecoveryState>;\n\nexport const CanonicalHumanLoginBinding = z.object({\n id: z.string().uuid(),\n providerId: z.string().min(1).max(128),\n providerAccountId: z.string().min(1).max(1024),\n status: CanonicalHumanLoginBindingStatus,\n revision: z.number().int().positive(),\n verifiedAt: z.string().datetime(),\n lastVerifiedAt: z.string().datetime(),\n revokedAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type CanonicalHumanLoginBinding = z.infer<typeof CanonicalHumanLoginBinding>;\n\nexport const CanonicalHumanIdentityProjection = z.object({\n activeIdentity: z.object({\n id: z.string().uuid(),\n displayName: z.string().min(1).max(256),\n status: CanonicalHumanIdentityStatus,\n identityRevision: z.number().int().positive(),\n authRevision: z.number().int().positive(),\n activeLoginBindingId: z.string().uuid().nullable(),\n recoveryState: CanonicalHumanRecoveryState,\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n }),\n loginBindings: z.array(CanonicalHumanLoginBinding).max(64),\n});\nexport type CanonicalHumanIdentityProjection = z.infer<typeof CanonicalHumanIdentityProjection>;\n\nconst OperationFields = {\n operationId: z.string().uuid().optional(),\n expectedIdentityRevision: z.number().int().positive(),\n reason: z.string().trim().min(1).max(512),\n} as const;\n\nexport const LinkCanonicalHumanLoginBindingRequest = z.object({\n ...OperationFields,\n providerId: z.string().trim().min(1).max(128),\n providerAccountId: z.string().trim().min(1).max(1024),\n});\nexport type LinkCanonicalHumanLoginBindingRequest = z.infer<\n typeof LinkCanonicalHumanLoginBindingRequest\n>;\n\nexport const CanonicalHumanBindingOperationRequest = z.object({\n ...OperationFields,\n});\nexport type CanonicalHumanBindingOperationRequest = z.infer<\n typeof CanonicalHumanBindingOperationRequest\n>;\n\nexport const CanonicalHumanIdentityMutationOutcome = z.enum([\"applied\", \"lost_factor\", \"disputed\"]);\nexport type CanonicalHumanIdentityMutationOutcome = z.infer<\n typeof CanonicalHumanIdentityMutationOutcome\n>;\n\nexport const CanonicalHumanIdentityMutationResponse = z.object({\n outcome: CanonicalHumanIdentityMutationOutcome,\n operationId: z.string().uuid(),\n identity: CanonicalHumanIdentityProjection,\n});\nexport type CanonicalHumanIdentityMutationResponse = z.infer<\n typeof CanonicalHumanIdentityMutationResponse\n>;\n"],"mappings":";AAAA,SAAS,SAAS;AAEX,IAAM,+BAA+B,EAAE,KAAK;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,mCAAmC,EAAE,KAAK;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,8BAA8B,EAAE,KAAK;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,6BAA6B,EAAE,OAAO;AAAA,EACjD,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,EACpB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACrC,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI;AAAA,EAC7C,QAAQ;AAAA,EACR,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAGM,IAAM,mCAAmC,EAAE,OAAO;AAAA,EACvD,gBAAgB,EAAE,OAAO;AAAA,IACvB,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,IACpB,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACtC,QAAQ;AAAA,IACR,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IAC5C,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACxC,sBAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,IACjD,eAAe;AAAA,IACf,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AAAA,EACD,eAAe,EAAE,MAAM,0BAA0B,EAAE,IAAI,EAAE;AAC3D,CAAC;AAGD,IAAM,kBAAkB;AAAA,EACtB,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACxC,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpD,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC1C;AAEO,IAAM,wCAAwC,EAAE,OAAO;AAAA,EAC5D,GAAG;AAAA,EACH,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC5C,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI;AACtD,CAAC;AAKM,IAAM,wCAAwC,EAAE,OAAO;AAAA,EAC5D,GAAG;AACL,CAAC;AAKM,IAAM,wCAAwC,EAAE,KAAK,CAAC,WAAW,eAAe,UAAU,CAAC;AAK3F,IAAM,yCAAyC,EAAE,OAAO;AAAA,EAC7D,SAAS;AAAA,EACT,aAAa,EAAE,OAAO,EAAE,KAAK;AAAA,EAC7B,UAAU;AACZ,CAAC;","names":[]}
|