@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/src/site-session-http.ts
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
|
+
import { matchSiteOperation, type SiteOperation } from "./site-operations";
|
|
2
|
+
|
|
1
3
|
const SITE_WORKSPACE_PREFIX = "/v1/workspaces/site-host";
|
|
4
|
+
/** Site Data and Site SQL routes under any published Site: `<prefix>/published-artifacts/<id>/data|files|sql`. */
|
|
5
|
+
const SITE_DATA_PATH =
|
|
6
|
+
/^\/v1\/workspaces\/site-host\/published-artifacts\/([^/]+)\/(?:data|files|sql)(?:\/|$)/u;
|
|
7
|
+
/** The list filter a frame without a published Site gets: it names no Site, so lists nothing. */
|
|
8
|
+
export const SITE_NO_ORIGIN_ID = "00000000-0000-0000-0000-000000000000";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The header a host sets on every request it forwards from a Site frame. The
|
|
12
|
+
* value names the host: `1` for the console bridge, `preview` for a Codemode
|
|
13
|
+
* local preview. The API treats a request carrying it (or the pinned Site id)
|
|
14
|
+
* as Site code: only `SITE_OPERATIONS`, only the frame's own sessions.
|
|
15
|
+
*/
|
|
16
|
+
export const SITE_FRAME_HEADER = "x-opengeni-site-frame";
|
|
17
|
+
/** SITE_FRAME_HEADER value a Codemode local preview sets. */
|
|
18
|
+
export const SITE_PREVIEW_FRAME = "preview";
|
|
19
|
+
/**
|
|
20
|
+
* A random id the host mints per mounted frame. A frame without a published
|
|
21
|
+
* Site (inline HTML, previews) records it on the sessions it starts and may
|
|
22
|
+
* reach only those sessions afterwards.
|
|
23
|
+
*/
|
|
24
|
+
export const SITE_FRAME_ID_HEADER = "x-opengeni-site-frame-id";
|
|
25
|
+
/** The published Site (artifact id) a host pinned the frame to. */
|
|
26
|
+
export const SITE_ID_HEADER = "x-opengeni-site-id";
|
|
27
|
+
/** The exact Site version the pinned frame runs. */
|
|
28
|
+
export const SITE_VERSION_HEADER = "x-opengeni-site-version";
|
|
2
29
|
|
|
3
30
|
/** A Site/Codemode SDK request named a route outside the proxied surface. */
|
|
4
31
|
export class SiteSessionPathError extends Error {
|
|
@@ -10,39 +37,157 @@ export class SiteSessionPathError extends Error {
|
|
|
10
37
|
}
|
|
11
38
|
}
|
|
12
39
|
|
|
13
|
-
/**
|
|
14
|
-
|
|
15
|
-
|
|
40
|
+
/** The host serves no Site Data: it is not bound to a published Site (inline HTML, previews). */
|
|
41
|
+
export class SiteDataUnsupportedError extends Error {
|
|
42
|
+
readonly code = "site_data_unsupported";
|
|
43
|
+
|
|
44
|
+
constructor() {
|
|
45
|
+
super("This Site host does not provide Site Data");
|
|
46
|
+
this.name = "SiteDataUnsupportedError";
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function unsafePathname(pathname: string): boolean {
|
|
51
|
+
return (
|
|
52
|
+
/[%\\#\u0000-\u0020\u007f]/u.test(pathname) ||
|
|
53
|
+
pathname.split("/").some((part) => part === "." || part === "..")
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function hostWorkspacePath(path: string, workspaceId: string): string {
|
|
58
|
+
return path.replace("/workspaces/site-host", `/workspaces/${encodeURIComponent(workspaceId)}`);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/** Site Data: a Site reaches only its own data, as `current`, through a host bound to a published Site. */
|
|
62
|
+
function siteDataPath(path: string, rewritten: string, workspaceId: string, siteId?: string) {
|
|
63
|
+
// Inside the Site the alias stays unresolved; the host resolves it.
|
|
64
|
+
if (workspaceId === "site-host") return path;
|
|
65
|
+
// Only a host bound to a published Site serves its data.
|
|
66
|
+
if (!siteId) throw new SiteDataUnsupportedError();
|
|
67
|
+
return rewritten.replace(
|
|
68
|
+
"/published-artifacts/current/",
|
|
69
|
+
`/published-artifacts/${encodeURIComponent(siteId)}/`,
|
|
70
|
+
);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Route a request from Site code (the in-Site SDK, the console bridge, a
|
|
75
|
+
* Codemode preview) to the host workspace. This is the `SITE_OPERATIONS`
|
|
76
|
+
* allowlist: anything else is refused with SiteSessionPathError before any
|
|
77
|
+
* request is made. Ordinary API handlers still authorize every allowed
|
|
78
|
+
* operation with the viewer's own authority, and the API independently
|
|
79
|
+
* refuses frame requests outside the allowlist or to another Site's sessions.
|
|
80
|
+
*
|
|
81
|
+
* `workspaceId` `site-host` checks a path inside the Site without rewriting
|
|
82
|
+
* it. A session list must name `originSiteId=current`; the host binds it to
|
|
83
|
+
* its pinned Site, or to no Site at all when the frame has none.
|
|
84
|
+
*/
|
|
16
85
|
export function siteSessionPath(
|
|
17
86
|
path: string,
|
|
18
87
|
workspaceId: string,
|
|
19
|
-
|
|
88
|
+
method = "GET",
|
|
20
89
|
siteId?: string,
|
|
21
90
|
): string {
|
|
91
|
+
const pathname = path.split("?")[0]!;
|
|
92
|
+
const match = matchSiteOperation(method, pathname);
|
|
93
|
+
if (!match) throw new SiteSessionPathError();
|
|
94
|
+
const rewritten = hostWorkspacePath(path, workspaceId);
|
|
95
|
+
if (SITE_DATA_PATH.test(pathname)) return siteDataPath(path, rewritten, workspaceId, siteId);
|
|
96
|
+
if (match.operation.id !== "sessions.list") return rewritten;
|
|
97
|
+
// A Site lists only its own conversations. Never widen a Site list to the workspace.
|
|
98
|
+
const url = new URL(rewritten, "http://site.invalid");
|
|
99
|
+
const origins = url.searchParams.getAll("originSiteId");
|
|
100
|
+
if (origins.length !== 1 || origins[0] !== "current") throw new SiteSessionPathError();
|
|
101
|
+
if (workspaceId === "site-host") return path;
|
|
102
|
+
url.searchParams.set("originSiteId", siteId ?? SITE_NO_ORIGIN_ID);
|
|
103
|
+
return url.pathname + url.search;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Route an agent's own SDK request through the Codemode SDK proxy to its
|
|
108
|
+
* workspace. Unlike `siteSessionPath` this is a URL prefix boundary, not an
|
|
109
|
+
* operation allowlist: the proxy signs a short-lived credential bounded by
|
|
110
|
+
* the agent's own permission ceiling and ordinary handlers authorize every
|
|
111
|
+
* operation. Site Data is not served here (an agent uses its tools).
|
|
112
|
+
* Requests a Codemode preview forwards from Site code carry the frame marker
|
|
113
|
+
* and use `siteSessionPath` instead.
|
|
114
|
+
*/
|
|
115
|
+
export function siteHostWorkspacePath(path: string, workspaceId: string): string {
|
|
22
116
|
const pathname = path.split("?")[0]!;
|
|
23
117
|
const workspace =
|
|
24
118
|
pathname === SITE_WORKSPACE_PREFIX || pathname.startsWith(`${SITE_WORKSPACE_PREFIX}/`);
|
|
25
|
-
|
|
26
|
-
if (
|
|
27
|
-
(!workspace && !context) ||
|
|
28
|
-
/[%\\#\u0000-\u0020\u007f]/u.test(pathname) ||
|
|
29
|
-
pathname.split("/").some((p) => p === "." || p === "..")
|
|
30
|
-
) {
|
|
119
|
+
if ((!workspace && pathname !== "/v1/config/client") || unsafePathname(pathname))
|
|
31
120
|
throw new SiteSessionPathError();
|
|
121
|
+
const rewritten = hostWorkspacePath(path, workspaceId);
|
|
122
|
+
const data = SITE_DATA_PATH.exec(pathname);
|
|
123
|
+
if (data) {
|
|
124
|
+
if (data[1] !== "current") throw new SiteSessionPathError();
|
|
125
|
+
return siteDataPath(path, rewritten, workspaceId);
|
|
32
126
|
}
|
|
33
|
-
const rewritten = path.replace(
|
|
34
|
-
"/workspaces/site-host",
|
|
35
|
-
`/workspaces/${encodeURIComponent(workspaceId)}`,
|
|
36
|
-
);
|
|
37
|
-
// Preview has no published Site identity. Never widen a Site-only list to the workspace.
|
|
38
127
|
const url = new URL(rewritten, "http://site.invalid");
|
|
39
128
|
if (url.searchParams.get("originSiteId") === "current" && workspaceId !== "site-host") {
|
|
40
|
-
url.searchParams.set("originSiteId",
|
|
129
|
+
url.searchParams.set("originSiteId", SITE_NO_ORIGIN_ID);
|
|
41
130
|
return url.pathname + url.search;
|
|
42
131
|
}
|
|
43
132
|
return rewritten;
|
|
44
133
|
}
|
|
45
134
|
|
|
135
|
+
/** The Site identity a host attached to a request, from its host-set headers. */
|
|
136
|
+
export type SiteFrameHeaders = {
|
|
137
|
+
/** The pinned published Site id, or null for a frame without one. */
|
|
138
|
+
siteId: string | null;
|
|
139
|
+
versionId: string | null;
|
|
140
|
+
/** The host's frame marker value (`1`, `preview`), or null when only the Site id was set. */
|
|
141
|
+
marker: string | null;
|
|
142
|
+
frameId: string | null;
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/** Read the host-set frame headers. Null when the request did not come from a Site frame. */
|
|
146
|
+
export function siteFrameFromHeaders(
|
|
147
|
+
header: (name: string) => string | null | undefined,
|
|
148
|
+
): SiteFrameHeaders | null {
|
|
149
|
+
const value = (name: string) => header(name) ?? null;
|
|
150
|
+
const marker = value(SITE_FRAME_HEADER);
|
|
151
|
+
const siteId = value(SITE_ID_HEADER);
|
|
152
|
+
const versionId = value(SITE_VERSION_HEADER);
|
|
153
|
+
const frameId = value(SITE_FRAME_ID_HEADER);
|
|
154
|
+
if (marker === null && siteId === null && versionId === null && frameId === null) return null;
|
|
155
|
+
return { siteId: siteId || null, versionId: versionId || null, marker, frameId: frameId || null };
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* Match a request that reached a workspace route from a Site frame against
|
|
160
|
+
* `SITE_OPERATIONS`. `pathname` is the raw request path
|
|
161
|
+
* (`/v1/workspaces/<id>/...` or `/v1/config/client`). The frame's own pinned
|
|
162
|
+
* Site id maps back to `current`; any other Site id does not match.
|
|
163
|
+
*/
|
|
164
|
+
export function siteFrameOperation(
|
|
165
|
+
method: string,
|
|
166
|
+
pathname: string,
|
|
167
|
+
workspaceId: string,
|
|
168
|
+
frameSiteId: string | null,
|
|
169
|
+
): { operation: SiteOperation; suffix: string; sessionId: string | null } | null {
|
|
170
|
+
if (unsafePathname(pathname)) return null;
|
|
171
|
+
let sitePath = pathname;
|
|
172
|
+
if (pathname !== "/v1/config/client") {
|
|
173
|
+
const prefix = `/v1/workspaces/${workspaceId}`;
|
|
174
|
+
if (pathname !== prefix && !pathname.startsWith(`${prefix}/`)) return null;
|
|
175
|
+
sitePath = `${SITE_WORKSPACE_PREFIX}${pathname.slice(prefix.length)}`;
|
|
176
|
+
const data = /^\/v1\/workspaces\/site-host\/published-artifacts\/([^/]+)\//u.exec(sitePath);
|
|
177
|
+
if (data) {
|
|
178
|
+
if (!frameSiteId || data[1] !== frameSiteId) return null;
|
|
179
|
+
sitePath = sitePath.replace(
|
|
180
|
+
`/published-artifacts/${frameSiteId}/`,
|
|
181
|
+
"/published-artifacts/current/",
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const match = matchSiteOperation(method, sitePath);
|
|
186
|
+
if (!match) return null;
|
|
187
|
+
const session = /^\/sessions\/([^/]+)(?:\/|$)/u.exec(match.suffix);
|
|
188
|
+
return { ...match, sessionId: session ? session[1]! : null };
|
|
189
|
+
}
|
|
190
|
+
|
|
46
191
|
/** Preserve SDK request semantics while the host supplies identity and transport headers. */
|
|
47
192
|
export function siteRequestHeaders(input: HeadersInit): Headers {
|
|
48
193
|
const headers = new Headers(input);
|
|
@@ -61,3 +206,136 @@ export function siteRequestHeaders(input: HeadersInit): Headers {
|
|
|
61
206
|
}
|
|
62
207
|
return headers;
|
|
63
208
|
}
|
|
209
|
+
|
|
210
|
+
// ---------------------------------------------------------------------------
|
|
211
|
+
// What a Site frame may put in a request body
|
|
212
|
+
// ---------------------------------------------------------------------------
|
|
213
|
+
|
|
214
|
+
/** Message fields a Site page may set: the text and how the model answers it. */
|
|
215
|
+
const SITE_FRAME_MESSAGE_FIELDS = [
|
|
216
|
+
"text",
|
|
217
|
+
"annotations",
|
|
218
|
+
"model",
|
|
219
|
+
"reasoningEffort",
|
|
220
|
+
"latencyMode",
|
|
221
|
+
"controlEtag",
|
|
222
|
+
"expectedDraftRevision",
|
|
223
|
+
] as const;
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Body fields a Site frame may send per operation. Anything else with a
|
|
227
|
+
* value (resources, personal resource attachments, MCP credential updates,
|
|
228
|
+
* connection accounts, model context, approval decisions, human-input
|
|
229
|
+
* answers) is the person's to give in the console, never a Site page's.
|
|
230
|
+
*/
|
|
231
|
+
const SITE_FRAME_BODY_FIELDS: Readonly<Record<string, readonly string[]>> = Object.freeze({
|
|
232
|
+
"sessions.send": ["type", "payload", "clientEventId"],
|
|
233
|
+
"sessions.steer": [...SITE_FRAME_MESSAGE_FIELDS, "clientEventId"],
|
|
234
|
+
"sessions.control": ["action", "reason", "clientEventId", "expectedControlEtag"],
|
|
235
|
+
"sessions.composerDraft.put": [
|
|
236
|
+
"text",
|
|
237
|
+
"annotations",
|
|
238
|
+
"resources",
|
|
239
|
+
"model",
|
|
240
|
+
"reasoningEffort",
|
|
241
|
+
"latencyMode",
|
|
242
|
+
"expectedRevision",
|
|
243
|
+
],
|
|
244
|
+
"sessions.composerDraft.submit": [
|
|
245
|
+
...SITE_FRAME_MESSAGE_FIELDS,
|
|
246
|
+
"resources",
|
|
247
|
+
"connectionAccounts",
|
|
248
|
+
"clientEventId",
|
|
249
|
+
"delivery",
|
|
250
|
+
],
|
|
251
|
+
"sessions.queue.move": ["clientEventId", "expectedQueueVersion", "beforeTurnId"],
|
|
252
|
+
"sessions.queue.edit": [
|
|
253
|
+
"clientEventId",
|
|
254
|
+
"expectedTurnVersion",
|
|
255
|
+
"expectedDraftRevision",
|
|
256
|
+
"replaceDraft",
|
|
257
|
+
],
|
|
258
|
+
"sessions.queue.steer": ["clientEventId", "expectedTurnVersion", "controlEtag"],
|
|
259
|
+
"sessions.queue.delete": ["clientEventId", "expectedTurnVersion", "reason"],
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
/** Fields allowed above only while empty: a draft carries no resources or accounts. */
|
|
263
|
+
const SITE_FRAME_EMPTY_ONLY_FIELDS = new Set(["resources", "connectionAccounts"]);
|
|
264
|
+
|
|
265
|
+
/**
|
|
266
|
+
* Session create fields a Site frame may send. The API starts the session
|
|
267
|
+
* with a minimal Site profile: no tools, servers, connections, permissions,
|
|
268
|
+
* vaults, sandbox or environment choice, resources, Skills, agent overrides,
|
|
269
|
+
* hidden model context, learning overrides, goals, channels, visibility,
|
|
270
|
+
* usage limits or nesting. Metadata keeps only keys outside `_opengeni`.
|
|
271
|
+
*/
|
|
272
|
+
export const SITE_FRAME_SESSION_CREATE_FIELDS: readonly string[] = Object.freeze([
|
|
273
|
+
"initialMessage",
|
|
274
|
+
"requestedSessionId",
|
|
275
|
+
"idempotencyKey",
|
|
276
|
+
"clientEventId",
|
|
277
|
+
"model",
|
|
278
|
+
"reasoningEffort",
|
|
279
|
+
"latencyMode",
|
|
280
|
+
"startMode",
|
|
281
|
+
"metadata",
|
|
282
|
+
]);
|
|
283
|
+
|
|
284
|
+
function bodyRecord(value: unknown): Record<string, unknown> | null {
|
|
285
|
+
return value && typeof value === "object" && !Array.isArray(value)
|
|
286
|
+
? (value as Record<string, unknown>)
|
|
287
|
+
: null;
|
|
288
|
+
}
|
|
289
|
+
|
|
290
|
+
/** Absent, null, an empty list or an empty object asks for nothing. */
|
|
291
|
+
function emptyBodyValue(value: unknown): boolean {
|
|
292
|
+
if (value === undefined || value === null) return true;
|
|
293
|
+
if (Array.isArray(value)) return value.length === 0;
|
|
294
|
+
if (typeof value === "object") return Object.keys(value).length === 0;
|
|
295
|
+
return false;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
function refusedField(
|
|
299
|
+
body: Record<string, unknown>,
|
|
300
|
+
allowed: readonly string[],
|
|
301
|
+
prefix = "",
|
|
302
|
+
): string | null {
|
|
303
|
+
for (const [name, value] of Object.entries(body)) {
|
|
304
|
+
if (emptyBodyValue(value)) continue;
|
|
305
|
+
if (!allowed.includes(name) || SITE_FRAME_EMPTY_ONLY_FIELDS.has(name))
|
|
306
|
+
return `${prefix}${name}`;
|
|
307
|
+
}
|
|
308
|
+
return null;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* The first body field a Site frame may not send for this operation (for
|
|
313
|
+
* example `payload.resources` or `type`), or null when the body is allowed.
|
|
314
|
+
* `suffix` is the operation's site-host suffix (from `siteFrameOperation` or
|
|
315
|
+
* `matchSiteOperation`). A body that is not a JSON object is left to the
|
|
316
|
+
* route, which refuses it. Only `user.message` events are allowed:
|
|
317
|
+
* approvals and answers to questions happen in the console.
|
|
318
|
+
*/
|
|
319
|
+
export function siteFrameBodyRefusal(
|
|
320
|
+
operationId: string,
|
|
321
|
+
suffix: string,
|
|
322
|
+
body: unknown,
|
|
323
|
+
): string | null {
|
|
324
|
+
const record = bodyRecord(body);
|
|
325
|
+
if (!record) return null;
|
|
326
|
+
if (operationId === "sessions.create")
|
|
327
|
+
return refusedField(record, SITE_FRAME_SESSION_CREATE_FIELDS);
|
|
328
|
+
const action =
|
|
329
|
+
operationId === "sessions.queue.item"
|
|
330
|
+
? /\/queue\/[^/]+\/(move|edit|steer|delete)$/u.exec(suffix)?.[1]
|
|
331
|
+
: undefined;
|
|
332
|
+
const key = action ? `sessions.queue.${action}` : operationId;
|
|
333
|
+
const allowed = SITE_FRAME_BODY_FIELDS[key];
|
|
334
|
+
if (!allowed) return null;
|
|
335
|
+
const refused = refusedField(record, allowed);
|
|
336
|
+
if (refused) return refused;
|
|
337
|
+
if (operationId !== "sessions.send") return null;
|
|
338
|
+
if (record.type !== "user.message") return "type";
|
|
339
|
+
const payload = bodyRecord(record.payload);
|
|
340
|
+
return payload ? refusedField(payload, SITE_FRAME_MESSAGE_FIELDS, "payload.") : null;
|
|
341
|
+
}
|