@opengeni/contracts 5.5.0 → 5.5.2-canary.40656248492001
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent-authored-durable-text.d.ts +9 -9
- package/dist/agent-config.d.ts +148 -37
- package/dist/api-key-presets.d.ts +19 -0
- package/dist/app-action-catalog-types.d.ts +32 -0
- package/dist/app-action-catalog.gen.d.ts +2 -0
- package/dist/app-actions.d.ts +91 -0
- package/dist/app-actions.js +10130 -0
- package/dist/app-actions.js.map +1 -0
- package/dist/app-shot.d.ts +55 -0
- package/dist/artifact-catalog.d.ts +33 -0
- package/dist/artifacts.d.ts +166 -0
- package/dist/atlassian-native-retirement.d.ts +16 -0
- package/dist/atlassian-native-retirement.js +30 -0
- package/dist/atlassian-native-retirement.js.map +1 -0
- package/dist/atlassian.js +48 -23
- package/dist/automation-templates.d.ts +434 -0
- package/dist/automation-templates.js +31 -0
- package/dist/automation-templates.js.map +1 -0
- package/dist/billing-subscriptions.d.ts +61 -0
- package/dist/bots.d.ts +583 -0
- package/dist/bundled-skills.d.ts +58 -2
- package/dist/canonical-human-identities.js +3 -1
- package/dist/child-lifecycle-notice-protocol.d.ts +45 -0
- package/dist/chunk-2QKIEAGY.js +396 -0
- package/dist/chunk-2QKIEAGY.js.map +1 -0
- package/dist/chunk-2WOWEWXV.js +426 -0
- package/dist/chunk-2WOWEWXV.js.map +1 -0
- package/dist/chunk-2ZIHHL72.js +153 -0
- package/dist/chunk-2ZIHHL72.js.map +1 -0
- package/dist/chunk-32U6NKQQ.js +389 -0
- package/dist/chunk-32U6NKQQ.js.map +1 -0
- package/dist/chunk-4YDDHSO2.js +799 -0
- package/dist/chunk-4YDDHSO2.js.map +1 -0
- package/dist/chunk-56SNIMDO.js +9 -0
- package/dist/chunk-56SNIMDO.js.map +1 -0
- package/dist/chunk-5RWB6QVL.js +101 -0
- package/dist/chunk-5RWB6QVL.js.map +1 -0
- package/dist/chunk-5UGUOT3L.js +243 -0
- package/dist/chunk-5UGUOT3L.js.map +1 -0
- package/dist/chunk-6LAT33BH.js +130 -0
- package/dist/chunk-6LAT33BH.js.map +1 -0
- package/dist/chunk-7272KVWZ.js +60 -0
- package/dist/chunk-7272KVWZ.js.map +1 -0
- package/dist/chunk-72QC2GTL.js +36 -0
- package/dist/chunk-72QC2GTL.js.map +1 -0
- package/dist/chunk-7EQGGZBY.js +105 -0
- package/dist/chunk-7EQGGZBY.js.map +1 -0
- package/dist/chunk-A3LXWVYU.js +382 -0
- package/dist/chunk-A3LXWVYU.js.map +1 -0
- package/dist/chunk-AQYDZUJV.js +34 -0
- package/dist/chunk-AQYDZUJV.js.map +1 -0
- package/dist/chunk-BHCEVVUP.js +93 -0
- package/dist/chunk-BHCEVVUP.js.map +1 -0
- package/dist/chunk-BMUTAZX5.js +486 -0
- package/dist/chunk-BMUTAZX5.js.map +1 -0
- package/dist/chunk-DGG6IBBK.js +150 -0
- package/dist/chunk-DGG6IBBK.js.map +1 -0
- package/dist/{chunk-YBW5JSA3.js → chunk-FBCTUMHI.js} +123 -102
- package/dist/chunk-FBCTUMHI.js.map +1 -0
- package/dist/chunk-G2KJTFIC.js +97 -0
- package/dist/chunk-G2KJTFIC.js.map +1 -0
- package/dist/chunk-G4RKARXZ.js +1167 -0
- package/dist/chunk-G4RKARXZ.js.map +1 -0
- package/dist/chunk-H6UJJIUM.js +350 -0
- package/dist/chunk-H6UJJIUM.js.map +1 -0
- package/dist/chunk-JOTHDW4H.js +18 -0
- package/dist/chunk-JOTHDW4H.js.map +1 -0
- package/dist/chunk-L4GUEP7K.js +56480 -0
- package/dist/chunk-L4GUEP7K.js.map +1 -0
- package/dist/{chunk-SIOU2K4U.js → chunk-LJH2EYGT.js} +23 -23
- package/dist/chunk-MTJKSIGA.js +161 -0
- package/dist/chunk-MTJKSIGA.js.map +1 -0
- package/dist/chunk-MYHMB6GZ.js +202 -0
- package/dist/chunk-MYHMB6GZ.js.map +1 -0
- package/dist/chunk-PI5VIKJY.js +660 -0
- package/dist/chunk-PI5VIKJY.js.map +1 -0
- package/dist/{chunk-RIY7GYQS.js → chunk-PTSROVDG.js} +2 -2
- package/dist/chunk-PUIUXIOL.js +189 -0
- package/dist/chunk-PUIUXIOL.js.map +1 -0
- package/dist/chunk-R6VXJIMB.js +19 -0
- package/dist/chunk-R6VXJIMB.js.map +1 -0
- package/dist/chunk-RLJUNVAM.js +15 -0
- package/dist/chunk-RLJUNVAM.js.map +1 -0
- package/dist/chunk-RR6APCBK.js +213 -0
- package/dist/chunk-RR6APCBK.js.map +1 -0
- package/dist/{chunk-TXTQIYCV.js → chunk-RUQ4I6DO.js} +59 -13
- package/dist/chunk-RUQ4I6DO.js.map +1 -0
- package/dist/{chunk-WYBDERIY.js → chunk-RWEEUDHD.js} +53 -42
- package/dist/chunk-RWEEUDHD.js.map +1 -0
- package/dist/chunk-S7MSQQL6.js +158 -0
- package/dist/chunk-S7MSQQL6.js.map +1 -0
- package/dist/{chunk-5Q54VCCH.js → chunk-SHO4YO4B.js} +20 -36
- package/dist/chunk-SHO4YO4B.js.map +1 -0
- package/dist/{chunk-HHZSZYYF.js → chunk-T3HSWMA5.js} +20 -4
- package/dist/chunk-T3HSWMA5.js.map +1 -0
- package/dist/{chunk-YRKRZ6OF.js → chunk-TOOJIBJC.js} +2 -2
- package/dist/chunk-UCUOTRS6.js +431 -0
- package/dist/chunk-UCUOTRS6.js.map +1 -0
- package/dist/chunk-UH4K7GP7.js +424 -0
- package/dist/chunk-UH4K7GP7.js.map +1 -0
- package/dist/chunk-UIZWGPHV.js +120 -0
- package/dist/chunk-UIZWGPHV.js.map +1 -0
- package/dist/chunk-VLUKBV6Y.js +1170 -0
- package/dist/chunk-VLUKBV6Y.js.map +1 -0
- package/dist/chunk-W2QQ5Y6K.js +55 -0
- package/dist/chunk-W2QQ5Y6K.js.map +1 -0
- package/dist/{chunk-Y3KNXVTD.js → chunk-W3NBPR4E.js} +131 -31
- package/dist/chunk-W3NBPR4E.js.map +1 -0
- package/dist/{chunk-NRMCVHAU.js → chunk-WMGO4HJU.js} +11 -9
- package/dist/chunk-WMGO4HJU.js.map +1 -0
- package/dist/{chunk-MYBZRDTY.js → chunk-WQI7VNN4.js} +19 -9
- package/dist/chunk-WQI7VNN4.js.map +1 -0
- package/dist/{chunk-PX3VCKAU.js → chunk-WVCFSOUZ.js} +1 -1
- package/dist/{chunk-PX3VCKAU.js.map → chunk-WVCFSOUZ.js.map} +1 -1
- package/dist/chunk-XB6GQLBH.js +76 -0
- package/dist/chunk-XB6GQLBH.js.map +1 -0
- package/dist/{chunk-D2HKF2EF.js → chunk-XP5M3IKT.js} +2 -2
- package/dist/{chunk-O77VSFYZ.js → chunk-ZMPU5BWE.js} +12 -2
- package/dist/chunk-ZMPU5BWE.js.map +1 -0
- package/dist/{chunk-3SIZGL3O.js → chunk-ZYVEJFNU.js} +22 -18
- package/dist/chunk-ZYVEJFNU.js.map +1 -0
- package/dist/claude-provider-account-authority.d.ts +18 -0
- package/dist/claude-subscription-oauth.d.ts +25 -0
- package/dist/claude-subscription-usage.d.ts +95 -1
- package/dist/client-error-report.d.ts +154 -8
- package/dist/client-error-report.js +157 -2
- package/dist/client-error-report.js.map +1 -1
- package/dist/code-search.d.ts +1 -1
- package/dist/code-search.js.map +1 -1
- package/dist/codex-provider-account-authority.js +23 -12
- package/dist/codex-provider-account-authority.js.map +1 -1
- package/dist/company-profile.d.ts +144 -0
- package/dist/connect.d.ts +38 -0
- package/dist/connect.js +244 -164
- package/dist/connect.js.map +1 -1
- package/dist/connection-account-label.d.ts +2 -0
- package/dist/connection-account-label.js +34 -0
- package/dist/connection-account-label.js.map +1 -0
- package/dist/connection-authority.js +49 -24
- package/dist/connector-attachments.js +3 -1
- package/dist/connector-destinations.js +3 -1
- package/dist/connector-tool-permissions.d.ts +68 -4
- package/dist/credential-profiles.d.ts +166 -0
- package/dist/cua-desktop-tools.d.ts +19 -0
- package/dist/define-schema.d.ts +8 -0
- package/dist/desktop-app.d.ts +28 -0
- package/dist/direct-model-provider.d.ts +38 -0
- package/dist/document-artifact-commands.js +2 -2
- package/dist/document-artifact-query.js +2 -2
- package/dist/editable-artifact-binary.d.ts +7 -0
- package/dist/editable-artifact-causal-frontier.js +2 -2
- package/dist/editable-artifact-codec-registry.js +7 -7
- package/dist/editable-artifact-committed-transaction.js +4 -2
- package/dist/editable-artifact-live.js +8 -8
- package/dist/editable-artifact-serialized-commit.js +9 -9
- package/dist/editable-artifact-versions.d.ts +7 -1
- package/dist/editable-artifact-versions.js +1 -1
- package/dist/editable-artifacts.js +49 -43
- package/dist/event-preview.d.ts +22 -0
- package/dist/event-triggers.d.ts +1253 -0
- package/dist/event-triggers.js +148 -0
- package/dist/event-triggers.js.map +1 -0
- package/dist/external-identities.d.ts +34 -0
- package/dist/external-identities.js +4 -2
- package/dist/feedback.d.ts +181 -0
- package/dist/file-access.d.ts +23 -0
- package/dist/first-party-tool-authorization.d.ts +852 -0
- package/dist/github-repository-contracts.js +64 -43
- package/dist/github-repository-contracts.js.map +1 -1
- package/dist/google-drive-native-retirement.d.ts +12 -0
- package/dist/google-drive-native-retirement.js +20 -0
- package/dist/google-drive-native-retirement.js.map +1 -0
- package/dist/google-drive.d.ts +1 -1
- package/dist/google-drive.js +323 -239
- package/dist/google-drive.js.map +1 -1
- package/dist/host-mcp-bindings.js +250 -198
- package/dist/host-mcp-bindings.js.map +1 -1
- package/dist/index.d.ts +29072 -20593
- package/dist/index.js +2432 -366
- package/dist/inference-residency.d.ts +22 -0
- package/dist/insights-usage.d.ts +948 -0
- package/dist/insights-usage.js +608 -0
- package/dist/insights-usage.js.map +1 -0
- package/dist/integration-capability-id.d.ts +8 -0
- package/dist/interaction-action-deadline.d.ts +48 -0
- package/dist/interaction-driver-diagnostic.d.ts +28 -0
- package/dist/interaction.d.ts +2126 -881
- package/dist/knowledge-entries.d.ts +38 -0
- package/dist/knowledge-preparation.d.ts +4 -0
- package/dist/learning-refusal.d.ts +43 -0
- package/dist/learning-refusal.js +49 -0
- package/dist/learning-refusal.js.map +1 -0
- package/dist/managed-auth-session-sets.d.ts +1 -0
- package/dist/managed-auth-session-sets.js +207 -146
- package/dist/managed-auth-session-sets.js.map +1 -1
- package/dist/managed-sign-in-methods.d.ts +96 -0
- package/dist/managed-sign-in-methods.js +157 -35
- package/dist/managed-sign-in-methods.js.map +1 -1
- package/dist/mcp-structured-content.d.ts +25 -0
- package/dist/message-time-zone.d.ts +38 -0
- package/dist/message-time-zone.js +19 -0
- package/dist/message-time-zone.js.map +1 -0
- package/dist/modal-native-proof-v2.d.ts +587 -0
- package/dist/modal-native-proof-v2.js +39 -0
- package/dist/modal-native-proof-v2.js.map +1 -0
- package/dist/model-account-choice.d.ts +237 -0
- package/dist/model-account-settings.d.ts +422 -0
- package/dist/model-availability.d.ts +15 -0
- package/dist/model-connection-access.d.ts +13 -0
- package/dist/model-context-inspector.d.ts +8 -0
- package/dist/model-display.d.ts +43 -0
- package/dist/model-display.js +17 -0
- package/dist/model-display.js.map +1 -0
- package/dist/model-picker-order.js.map +1 -1
- package/dist/model-residency.d.ts +304 -0
- package/dist/organization-access.d.ts +416 -0
- package/dist/organization-access.js +40 -0
- package/dist/organization-access.js.map +1 -0
- package/dist/organization-integration-policy.d.ts +18 -0
- package/dist/organization-membership-lifecycle.d.ts +66 -0
- package/dist/organization-model-usage.d.ts +146 -0
- package/dist/organization-model-usage.js +87 -0
- package/dist/organization-model-usage.js.map +1 -0
- package/dist/organization-recovery.js +3 -1
- package/dist/organization-usage.d.ts +12 -0
- package/dist/passkey-only-account.d.ts +14 -0
- package/dist/passkey-only-account.js +13 -0
- package/dist/passkey-only-account.js.map +1 -0
- package/dist/permissions.d.ts +19 -0
- package/dist/personal-github.js +220 -148
- package/dist/personal-github.js.map +1 -1
- package/dist/personal-integration-setup.d.ts +81 -0
- package/dist/personal-integration-setup.js +42 -0
- package/dist/personal-integration-setup.js.map +1 -0
- package/dist/prepared-mcp-setup.d.ts +54 -0
- package/dist/prepared-mcp-setup.js +13 -0
- package/dist/prepared-mcp-setup.js.map +1 -0
- package/dist/presentation-artifact-commands.js +2 -2
- package/dist/presentation-artifact-query.js +2 -2
- package/dist/primitives.d.ts +18 -0
- package/dist/product-analytics.d.ts +27 -10
- package/dist/product-lifecycle-facts.d.ts +26 -3
- package/dist/prompt-cache-diagnostics.d.ts +92 -0
- package/dist/recordings.d.ts +1371 -0
- package/dist/remember.d.ts +98 -2
- package/dist/retained-output.d.ts +4 -2
- package/dist/sandbox-file-artifacts.d.ts +19 -2
- package/dist/sandbox-provider-command.d.ts +5 -44
- package/dist/sandbox-recovery.d.ts +139 -8
- package/dist/secret-generator.d.ts +44 -0
- package/dist/secret-mask-strings.d.ts +32 -0
- package/dist/secret-references.d.ts +90 -0
- package/dist/secret-resolution.d.ts +143 -0
- package/dist/secret-shape-masking.d.ts +52 -0
- package/dist/secret-shape-masking.js +19 -0
- package/dist/secret-shape-masking.js.map +1 -0
- package/dist/secret-totp.d.ts +41 -0
- package/dist/secret-use-approval-question.d.ts +11 -0
- package/dist/secret-use-approval-question.js +11 -0
- package/dist/secret-use-approval-question.js.map +1 -0
- package/dist/secret-use-approvals.d.ts +106 -0
- package/dist/secret-value-masking.d.ts +299 -0
- package/dist/secret-value-masking.js +62 -0
- package/dist/secret-value-masking.js.map +1 -0
- package/dist/secret-value.d.ts +19 -0
- package/dist/session-history-import.d.ts +444 -8
- package/dist/session-history.d.ts +111 -0
- package/dist/session-history.js +35 -0
- package/dist/session-history.js.map +1 -0
- package/dist/session-list-entries.d.ts +8 -0
- package/dist/session-list-entries.js +61 -0
- package/dist/session-list-entries.js.map +1 -0
- package/dist/session-mcp-projections.d.ts +13 -1
- package/dist/session-mcp-tool-permissions.d.ts +62 -0
- package/dist/session-target.d.ts +18 -0
- package/dist/session-titles.d.ts +8 -0
- package/dist/session-titles.js +5 -1
- package/dist/session-usage-limit-refusal.d.ts +34 -0
- package/dist/session-usage-limit-refusal.js +15 -0
- package/dist/session-usage-limit-refusal.js.map +1 -0
- package/dist/session-usage-limits.d.ts +127 -0
- package/dist/session-usage-limits.js +43 -0
- package/dist/session-usage-limits.js.map +1 -0
- package/dist/site-data.d.ts +286 -0
- package/dist/site-operations.d.ts +39 -0
- package/dist/site-publishing.d.ts +813 -0
- package/dist/site-session-http.d.ts +103 -4
- package/dist/site-session-http.js +27 -1
- package/dist/site-sql.d.ts +425 -0
- package/dist/skills.d.ts +38 -0
- package/dist/slack-bot-scopes.d.ts +9 -7
- package/dist/slack-bot-scopes.js +6 -3
- package/dist/slack-rest-mcp.d.ts +36 -0
- package/dist/slack-rest-mcp.js +25 -0
- package/dist/slack-rest-mcp.js.map +1 -0
- package/dist/spreadsheet-artifact-commands.d.ts +14 -1
- package/dist/spreadsheet-artifact-commands.js +9 -2
- package/dist/spreadsheet-artifact-query.d.ts +13 -6
- package/dist/spreadsheet-artifact-query.js +4 -3
- package/dist/subscription-account-actions.d.ts +83 -0
- package/dist/subscription-account-pools.d.ts +326 -0
- package/dist/subscription-personal-authority-v2.d.ts +28 -0
- package/dist/subscription-personal-authority-v2.js +13 -0
- package/dist/subscription-personal-authority-v2.js.map +1 -0
- package/dist/subscription-plans.d.ts +38 -0
- package/dist/subscription-usage-pool.d.ts +89 -0
- package/dist/tool-action-review.d.ts +141 -0
- package/dist/tool-catalog.d.ts +479 -0
- package/dist/tool-policy.d.ts +5 -0
- package/dist/tool-review-presentation.d.ts +29 -0
- package/dist/tool-review-presentation.js +21 -0
- package/dist/tool-review-presentation.js.map +1 -0
- package/dist/turn-serving-policy.d.ts +223 -0
- package/dist/usage-allowances.d.ts +30 -0
- package/dist/usage-allowances.js +5 -1
- package/dist/values.d.ts +11 -0
- package/dist/values.js +19 -0
- package/dist/values.js.map +1 -0
- package/dist/vault-provider-wire.d.ts +907 -0
- package/dist/vault-provider-wire.js +74 -0
- package/dist/vault-provider-wire.js.map +1 -0
- package/dist/vaults.d.ts +2185 -0
- package/dist/video-generation.d.ts +75 -0
- package/dist/video-generation.js +8 -1
- package/dist/workspace-control-event.d.ts +18 -0
- package/dist/workspace-control-event.js +18 -0
- package/dist/workspace-control-event.js.map +1 -0
- package/dist/workspace-governance-context.d.ts +18 -0
- package/dist/workspace-integration-wire.d.ts +1 -1
- package/dist/workspace-integration-wire.js +1 -1
- package/dist/workspace-integrations.d.ts +212 -12
- package/dist/xai-provider-account-authority.js +3 -1
- package/package.json +121 -4
- package/src/agent-authored-durable-text.ts +14 -11
- package/src/agent-config.ts +382 -203
- package/src/agent-instruction-changes.ts +94 -74
- package/src/agent-learning.ts +94 -66
- package/src/agent-topology.ts +58 -52
- package/src/api-key-presets.ts +28 -0
- package/src/app-action-catalog-types.ts +32 -0
- package/src/app-action-catalog.gen.ts +9905 -0
- package/src/app-actions.ts +365 -0
- package/src/app-shot.ts +176 -0
- package/src/artifact-catalog.ts +81 -46
- package/src/artifacts.ts +360 -227
- package/src/atlassian-native-retirement.ts +33 -0
- package/src/atlassian.ts +136 -108
- package/src/automation-templates.ts +201 -0
- package/src/billing-subscriptions.ts +48 -0
- package/src/bots.ts +238 -0
- package/src/bundled-skills.ts +79 -22
- package/src/canonical-human-identities.ts +65 -62
- package/src/child-lifecycle-notice-protocol.gen.json +1310 -0
- package/src/child-lifecycle-notice-protocol.ts +224 -0
- package/src/claude-provider-account-authority.ts +12 -0
- package/src/claude-subscription-oauth.ts +61 -19
- package/src/claude-subscription-usage.ts +64 -35
- package/src/client-error-report.ts +344 -9
- package/src/code-search.ts +1 -1
- package/src/codex-provider-account-authority.ts +22 -16
- package/src/company-brain-governed-writes.ts +265 -244
- package/src/company-brain.ts +165 -154
- package/src/company-profile.ts +362 -297
- package/src/connect.ts +222 -173
- package/src/connection-account-label.ts +45 -0
- package/src/connection-authority.ts +172 -152
- package/src/connector-attachments.ts +139 -123
- package/src/connector-destinations.ts +48 -43
- package/src/connector-tool-permissions.ts +104 -46
- package/src/credential-profiles.ts +161 -0
- package/src/cua-desktop-tools.gen.json +6722 -0
- package/src/cua-desktop-tools.linux.gen.json +6798 -0
- package/src/cua-desktop-tools.ts +42 -0
- package/src/cua-desktop-tools.windows.gen.json +6739 -0
- package/src/define-schema.ts +10 -0
- package/src/desktop-app.ts +50 -0
- package/src/direct-model-provider.ts +112 -0
- package/src/editable-artifact-binary.ts +29 -8
- package/src/editable-artifact-committed-transaction.ts +19 -18
- package/src/editable-artifact-serialized-commit.ts +8 -2
- package/src/editable-artifact-versions.ts +7 -1
- package/src/event-preview.ts +53 -3
- package/src/event-triggers.ts +891 -0
- package/src/external-identities.ts +239 -195
- package/src/feedback.ts +125 -30
- package/src/file-access.ts +26 -0
- package/src/first-party-tool-authorization.ts +383 -0
- package/src/github-repository-contracts.ts +78 -64
- package/src/google-drive-native-retirement.ts +20 -0
- package/src/google-drive.ts +286 -234
- package/src/governed-learning-activation.ts +159 -137
- package/src/governed-learning-evaluator.ts +141 -133
- package/src/host-mcp-bindings.ts +244 -221
- package/src/image-generation.ts +105 -95
- package/src/index.ts +13928 -9899
- package/src/inference-residency.ts +36 -0
- package/src/insights-usage.ts +774 -0
- package/src/integration-capability-id.ts +16 -0
- package/src/interaction-action-deadline.ts +143 -0
- package/src/interaction-driver-diagnostic.ts +89 -0
- package/src/interaction.ts +3527 -2427
- package/src/knowledge-entries.ts +386 -299
- package/src/knowledge-preparation.ts +49 -41
- package/src/knowledge.ts +242 -213
- package/src/learning-refusal.ts +90 -0
- package/src/managed-auth-session-sets.ts +180 -133
- package/src/managed-sign-in-methods.ts +156 -34
- package/src/mcp-oauth.ts +58 -46
- package/src/mcp-receipts.ts +199 -194
- package/src/mcp-structured-content.ts +81 -0
- package/src/memory-slack-delivery.ts +172 -142
- package/src/message-time-zone.ts +109 -0
- package/src/modal-native-proof-v2.ts +430 -0
- package/src/model-account-choice.ts +178 -0
- package/src/model-account-settings.ts +210 -0
- package/src/model-availability.ts +22 -0
- package/src/model-connection-access.ts +62 -14
- package/src/model-context-inspector.ts +130 -109
- package/src/model-display.ts +221 -0
- package/src/model-picker-order.ts +1 -1
- package/src/model-residency.ts +535 -0
- package/src/organization-access.ts +216 -0
- package/src/organization-integration-policy.ts +47 -28
- package/src/organization-membership-lifecycle.ts +558 -384
- package/src/organization-model-usage.ts +82 -0
- package/src/organization-recovery.ts +148 -135
- package/src/organization-usage.ts +84 -52
- package/src/passkey-only-account.ts +29 -0
- package/src/permissions.ts +94 -52
- package/src/personal-github.ts +211 -171
- package/src/personal-integration-setup.ts +150 -0
- package/src/preference-registry.ts +319 -263
- package/src/prepared-mcp-setup.ts +190 -0
- package/src/primitives.ts +22 -0
- package/src/product-analytics.ts +40 -15
- package/src/product-lifecycle-facts.ts +50 -20
- package/src/prompt-cache-diagnostics.ts +212 -0
- package/src/recordings.ts +1153 -0
- package/src/remember.ts +184 -172
- package/src/retained-output.ts +181 -168
- package/src/sandbox-file-artifacts.ts +78 -57
- package/src/sandbox-provider-command.ts +55 -72
- package/src/sandbox-recovery.ts +163 -77
- package/src/scoped-knowledge.ts +62 -43
- package/src/secret-generator.ts +156 -0
- package/src/secret-mask-strings.ts +175 -0
- package/src/secret-references.ts +414 -0
- package/src/secret-resolution.ts +322 -0
- package/src/secret-shape-masking.ts +573 -0
- package/src/secret-totp.ts +188 -0
- package/src/secret-use-approval-question.ts +22 -0
- package/src/secret-use-approvals.ts +219 -0
- package/src/secret-value-masking.ts +1283 -0
- package/src/secret-value.ts +22 -0
- package/src/session-goal-reports.ts +55 -49
- package/src/session-history-import.ts +84 -68
- package/src/session-history.ts +197 -0
- package/src/session-list-entries.ts +106 -0
- package/src/session-mcp-projections.ts +21 -3
- package/src/session-mcp-tool-permissions.ts +109 -0
- package/src/session-message-search.ts +46 -38
- package/src/session-target.ts +58 -0
- package/src/session-titles.ts +40 -4
- package/src/session-topology-primitives.ts +20 -12
- package/src/session-usage-limit-refusal.ts +101 -0
- package/src/session-usage-limits.ts +169 -0
- package/src/signup-attribution.ts +20 -15
- package/src/site-data.ts +337 -0
- package/src/site-operations.ts +154 -0
- package/src/site-publishing.ts +903 -0
- package/src/site-session-http.ts +344 -16
- package/src/site-sql.ts +1120 -0
- package/src/skill-use.ts +18 -17
- package/src/skills.ts +105 -50
- package/src/slack-bot-scopes.ts +18 -35
- package/src/slack-rest-mcp.ts +222 -0
- package/src/slack-task-policy.ts +97 -73
- package/src/spreadsheet-artifact-commands.ts +74 -13
- package/src/spreadsheet-artifact-query.ts +188 -50
- package/src/subscription-account-actions.ts +103 -0
- package/src/subscription-account-pools.ts +74 -0
- package/src/subscription-personal-authority-v2.ts +69 -0
- package/src/subscription-plans.ts +51 -0
- package/src/subscription-usage-pool.ts +44 -0
- package/src/task-notes.ts +70 -68
- package/src/tool-action-review.ts +271 -0
- package/src/tool-catalog.ts +694 -379
- package/src/tool-policy.ts +82 -0
- package/src/tool-result-spill.ts +13 -9
- package/src/tool-review-presentation.ts +643 -0
- package/src/turn-serving-policy.ts +167 -0
- package/src/usage-allowances.ts +212 -136
- package/src/values.ts +25 -0
- package/src/vault-provider-wire.ts +580 -0
- package/src/vaults.ts +1296 -0
- package/src/video-generation.ts +430 -361
- package/src/work-claims.ts +183 -166
- package/src/workspace-control-event.ts +134 -0
- package/src/workspace-governance-context.ts +63 -0
- package/src/workspace-instruction-policies.ts +346 -279
- package/src/workspace-integration-wire.ts +10 -0
- package/src/workspace-integrations.ts +488 -398
- package/src/workspace-learning-administration.ts +58 -44
- package/src/workspace-learning-policy.ts +126 -99
- package/src/workspace-state.ts +239 -220
- package/src/xai-provider-account-authority.ts +23 -17
- package/dist/chunk-3SIZGL3O.js.map +0 -1
- package/dist/chunk-566IFOVP.js +0 -26133
- package/dist/chunk-566IFOVP.js.map +0 -1
- package/dist/chunk-5IXYF6XN.js +0 -728
- package/dist/chunk-5IXYF6XN.js.map +0 -1
- package/dist/chunk-5Q54VCCH.js.map +0 -1
- package/dist/chunk-BCS7WHCK.js +0 -139
- package/dist/chunk-BCS7WHCK.js.map +0 -1
- package/dist/chunk-EK7NDGFR.js +0 -128
- package/dist/chunk-EK7NDGFR.js.map +0 -1
- package/dist/chunk-GRG7PHWQ.js +0 -25
- package/dist/chunk-GRG7PHWQ.js.map +0 -1
- package/dist/chunk-HHZSZYYF.js.map +0 -1
- package/dist/chunk-ICDZGUX2.js +0 -186
- package/dist/chunk-ICDZGUX2.js.map +0 -1
- package/dist/chunk-JUFK3T4Q.js +0 -80
- package/dist/chunk-JUFK3T4Q.js.map +0 -1
- package/dist/chunk-MYBZRDTY.js.map +0 -1
- package/dist/chunk-NRMCVHAU.js.map +0 -1
- package/dist/chunk-O77VSFYZ.js.map +0 -1
- package/dist/chunk-P3HLDT77.js +0 -59
- package/dist/chunk-P3HLDT77.js.map +0 -1
- package/dist/chunk-TXTQIYCV.js.map +0 -1
- package/dist/chunk-WYBDERIY.js.map +0 -1
- package/dist/chunk-Y3KNXVTD.js.map +0 -1
- package/dist/chunk-YBW5JSA3.js.map +0 -1
- package/dist/chunk-YRXAWWCU.js +0 -45
- package/dist/chunk-YRXAWWCU.js.map +0 -1
- package/dist/chunk-YWMOIZ6A.js +0 -185
- package/dist/chunk-YWMOIZ6A.js.map +0 -1
- package/dist/site-request-headers.test.d.ts +0 -1
- package/dist/transcription-recordings.d.ts +0 -300
- package/src/transcription-recordings.ts +0 -169
- /package/dist/{chunk-SIOU2K4U.js.map → chunk-LJH2EYGT.js.map} +0 -0
- /package/dist/{chunk-RIY7GYQS.js.map → chunk-PTSROVDG.js.map} +0 -0
- /package/dist/{chunk-YRKRZ6OF.js.map → chunk-TOOJIBJC.js.map} +0 -0
- /package/dist/{chunk-D2HKF2EF.js.map → chunk-XP5M3IKT.js.map} +0 -0
|
@@ -2,6 +2,13 @@ import type { SessionGoalStatus, SessionStatus } from "./session-topology-primit
|
|
|
2
2
|
import type { WorkDiscoveryProjection } from "./work-claims";
|
|
3
3
|
import type { Session, SessionQueueSnapshot } from "./index";
|
|
4
4
|
|
|
5
|
+
/** Counts used by compact monitoring; full queue previews remain a separate read. */
|
|
6
|
+
export type SessionMcpQueueSummary = {
|
|
7
|
+
queuedTurns: number;
|
|
8
|
+
pendingInputs: number;
|
|
9
|
+
stoppingPreviousAttempt: boolean;
|
|
10
|
+
};
|
|
11
|
+
|
|
5
12
|
/** MCP-only presentation choice. REST/SDK session shapes keep their own defaults. */
|
|
6
13
|
export type SessionMcpDetail = "compact" | "full";
|
|
7
14
|
|
|
@@ -176,7 +183,7 @@ export type SessionMcpMonitoringSource = {
|
|
|
176
183
|
export function compactSessionMcpDetail(
|
|
177
184
|
session: Session,
|
|
178
185
|
monitoring: SessionMcpMonitoringSource,
|
|
179
|
-
queue: SessionQueueSnapshot | null,
|
|
186
|
+
queue: SessionQueueSnapshot | SessionMcpQueueSummary | null,
|
|
180
187
|
) {
|
|
181
188
|
const title = boundSessionMcpText(session.title, 200);
|
|
182
189
|
const pause = compactSessionMcpPause(session.effectiveControl);
|
|
@@ -209,6 +216,17 @@ export function compactSessionMcpDetail(
|
|
|
209
216
|
...(session.parentSessionId ? { parentSessionId: session.parentSessionId } : {}),
|
|
210
217
|
...(session.activeTurnId ? { activeTurnId: session.activeTurnId } : {}),
|
|
211
218
|
lastSequence: session.lastSequence,
|
|
219
|
+
// Archived sessions keep a readable timeline but accept no new work.
|
|
220
|
+
...(session.retention?.archive
|
|
221
|
+
? {
|
|
222
|
+
archive: {
|
|
223
|
+
state: session.retention.archive.state,
|
|
224
|
+
archivedAt: session.retention.archive.archivedAt,
|
|
225
|
+
readOnly: true,
|
|
226
|
+
},
|
|
227
|
+
}
|
|
228
|
+
: {}),
|
|
229
|
+
...(session.retention?.keepLive ? { keepLive: true } : {}),
|
|
212
230
|
...(goal
|
|
213
231
|
? {
|
|
214
232
|
goal: {
|
|
@@ -244,8 +262,8 @@ export function compactSessionMcpDetail(
|
|
|
244
262
|
...(queue
|
|
245
263
|
? {
|
|
246
264
|
queue: {
|
|
247
|
-
queuedTurns: queue.items.length,
|
|
248
|
-
pendingInputs: queue.pendingInputs.length,
|
|
265
|
+
queuedTurns: "items" in queue ? queue.items.length : queue.queuedTurns,
|
|
266
|
+
pendingInputs: "items" in queue ? queue.pendingInputs.length : queue.pendingInputs,
|
|
249
267
|
...(queue.stoppingPreviousAttempt ? { stoppingPreviousAttempt: true } : {}),
|
|
250
268
|
},
|
|
251
269
|
}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import * as primitives from "./primitives";
|
|
2
|
+
import { defineSchema } from "./define-schema";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
import { ConnectorToolPermission } from "./connector-tool-permissions";
|
|
5
|
+
import { MCP_MAX_CATALOG_TOOL_ENTRIES } from "./mcp-catalog-limits";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Tool `_meta` key an MCP server sets in `tools/list` to recommend a default
|
|
9
|
+
* permission for that tool: `"ask"` or `"allow"`. Like `requireApproval`, it
|
|
10
|
+
* applies only when the workspace has no saved choice for the tool and no
|
|
11
|
+
* server default. The tool asks when either this or `requireApproval` says so.
|
|
12
|
+
*/
|
|
13
|
+
export const MCP_TOOL_RECOMMENDED_PERMISSION_META_KEY = "opengeni/recommendedPermission" as const;
|
|
14
|
+
|
|
15
|
+
/** True when a listed MCP tool recommends Ask through its `_meta`. */
|
|
16
|
+
export function mcpToolRecommendsApproval(tool: object): boolean {
|
|
17
|
+
const meta = (tool as { _meta?: unknown })._meta;
|
|
18
|
+
return (
|
|
19
|
+
typeof meta === "object" &&
|
|
20
|
+
meta !== null &&
|
|
21
|
+
(meta as Record<string, unknown>)[MCP_TOOL_RECOMMENDED_PERMISSION_META_KEY] === "ask"
|
|
22
|
+
);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Host-attached session MCP servers have no catalog capability. Their tool
|
|
26
|
+
// permissions are keyed by the same secret-free identity the runtime derives:
|
|
27
|
+
// `session-mcp:<serverId>:<sha256(exact url)>`. The host names the server and
|
|
28
|
+
// the exact URL it attaches to sessions; Opengeni stores and enforces the rules.
|
|
29
|
+
const sessionMcpServerId = /* @__PURE__ */ defineSchema(() =>
|
|
30
|
+
z
|
|
31
|
+
.string()
|
|
32
|
+
.min(1)
|
|
33
|
+
.max(200)
|
|
34
|
+
.regex(/^[A-Za-z0-9_-]+$/),
|
|
35
|
+
);
|
|
36
|
+
const sessionMcpServerUrl = /* @__PURE__ */ defineSchema(() =>
|
|
37
|
+
z
|
|
38
|
+
.string()
|
|
39
|
+
.min(1)
|
|
40
|
+
.max(2048)
|
|
41
|
+
.refine(
|
|
42
|
+
(value) => {
|
|
43
|
+
try {
|
|
44
|
+
const url = new URL(value);
|
|
45
|
+
return url.protocol === "https:" || url.protocol === "http:";
|
|
46
|
+
} catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
{ message: "url must be the exact http(s) URL attached to sessions" },
|
|
51
|
+
),
|
|
52
|
+
);
|
|
53
|
+
const exactToolName = /* @__PURE__ */ defineSchema(() =>
|
|
54
|
+
z
|
|
55
|
+
.string()
|
|
56
|
+
.min(1)
|
|
57
|
+
.max(512)
|
|
58
|
+
.refine((name) => name !== "*" && name === name.trim(), {
|
|
59
|
+
message: "Tool names must be exact and cannot use the server-default wildcard.",
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
62
|
+
|
|
63
|
+
export const SessionMcpToolPermissionsQuery = /* @__PURE__ */ defineSchema(() =>
|
|
64
|
+
z.object({ serverId: sessionMcpServerId, url: sessionMcpServerUrl }).strict(),
|
|
65
|
+
);
|
|
66
|
+
export type SessionMcpToolPermissionsQuery = z.infer<typeof SessionMcpToolPermissionsQuery>;
|
|
67
|
+
|
|
68
|
+
/** Saved choices only. Tools without a rule follow `defaultPermission`, then
|
|
69
|
+
* the server's recommendation (the tool's `opengeni/recommendedPermission`
|
|
70
|
+
* `_meta`, or the attaching session's `requireApproval`), then Allow. */
|
|
71
|
+
export const SessionMcpToolPermissionsResponse = /* @__PURE__ */ defineSchema(() =>
|
|
72
|
+
z.object({
|
|
73
|
+
connectionId: primitives.string,
|
|
74
|
+
serverId: primitives.string,
|
|
75
|
+
defaultPermission: ConnectorToolPermission.nullable(),
|
|
76
|
+
tools: z.array(z.object({ toolName: primitives.string, permission: ConnectorToolPermission })),
|
|
77
|
+
revision: primitives.string,
|
|
78
|
+
canManage: primitives.boolean,
|
|
79
|
+
appliesTo: z.literal("next_attempt"),
|
|
80
|
+
}),
|
|
81
|
+
);
|
|
82
|
+
export type SessionMcpToolPermissionsResponse = z.infer<typeof SessionMcpToolPermissionsResponse>;
|
|
83
|
+
|
|
84
|
+
export const UpdateSessionMcpToolPermissionsRequest = /* @__PURE__ */ defineSchema(() =>
|
|
85
|
+
z.discriminatedUnion("target", [
|
|
86
|
+
z
|
|
87
|
+
.object({
|
|
88
|
+
serverId: sessionMcpServerId,
|
|
89
|
+
url: sessionMcpServerUrl,
|
|
90
|
+
target: z.literal("default"),
|
|
91
|
+
permission: ConnectorToolPermission.nullable(),
|
|
92
|
+
expectedRevision: z.string().optional(),
|
|
93
|
+
})
|
|
94
|
+
.strict(),
|
|
95
|
+
z
|
|
96
|
+
.object({
|
|
97
|
+
serverId: sessionMcpServerId,
|
|
98
|
+
url: sessionMcpServerUrl,
|
|
99
|
+
target: z.literal("tools"),
|
|
100
|
+
toolNames: z.array(exactToolName).min(1).max(MCP_MAX_CATALOG_TOOL_ENTRIES),
|
|
101
|
+
permission: ConnectorToolPermission.nullable(),
|
|
102
|
+
expectedRevision: z.string().optional(),
|
|
103
|
+
})
|
|
104
|
+
.strict(),
|
|
105
|
+
]),
|
|
106
|
+
);
|
|
107
|
+
export type UpdateSessionMcpToolPermissionsRequest = z.infer<
|
|
108
|
+
typeof UpdateSessionMcpToolPermissionsRequest
|
|
109
|
+
>;
|
|
@@ -1,38 +1,44 @@
|
|
|
1
|
+
import * as primitives from "./primitives";
|
|
2
|
+
import { defineSchema } from "./define-schema";
|
|
1
3
|
import { z } from "zod";
|
|
2
4
|
|
|
3
5
|
/** Literal Unicode case-insensitive search, without trimming or normalization. */
|
|
4
|
-
export const SessionMessageSearchRequest =
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
6
|
+
export const SessionMessageSearchRequest = /* @__PURE__ */ defineSchema(() =>
|
|
7
|
+
z
|
|
8
|
+
.object({
|
|
9
|
+
query: z.string().min(1).max(200),
|
|
10
|
+
sessionId: primitives.optionalUuid,
|
|
11
|
+
groupBy: z.literal("session").optional(),
|
|
12
|
+
archiveStatus: z.enum(["active", "archived", "all"]).optional(),
|
|
13
|
+
limit: z.number().int().min(1).max(50).optional(),
|
|
14
|
+
cursor: z.string().min(1).max(4096).optional(),
|
|
15
|
+
})
|
|
16
|
+
.strict()
|
|
17
|
+
.refine((request) => !request.groupBy || !request.sessionId, {
|
|
18
|
+
message: "groupBy=session is only supported for workspace search without sessionId",
|
|
19
|
+
path: ["groupBy"],
|
|
20
|
+
}),
|
|
21
|
+
);
|
|
18
22
|
export type SessionMessageSearchRequest = z.infer<typeof SessionMessageSearchRequest>;
|
|
19
23
|
|
|
20
|
-
export const SessionMessageSearchMatch =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
export const SessionMessageSearchMatch = /* @__PURE__ */ defineSchema(() =>
|
|
25
|
+
z.object({
|
|
26
|
+
sessionId: primitives.uuid,
|
|
27
|
+
sessionTitle: primitives.nullableString,
|
|
28
|
+
eventId: primitives.uuid,
|
|
29
|
+
sequence: primitives.positiveInteger,
|
|
30
|
+
turnId: primitives.nullableUuid,
|
|
31
|
+
role: z.enum(["user", "assistant"]),
|
|
32
|
+
messageId: primitives.nullableString,
|
|
33
|
+
/** All offsets are zero-based UTF-16 code units; ends are exclusive. */
|
|
34
|
+
messageMatchOffset: primitives.nonnegativeInteger,
|
|
35
|
+
snippet: z.object({
|
|
36
|
+
text: primitives.string,
|
|
37
|
+
matchStart: primitives.nonnegativeInteger,
|
|
38
|
+
matchEnd: primitives.nonnegativeInteger,
|
|
39
|
+
}),
|
|
34
40
|
}),
|
|
35
|
-
|
|
41
|
+
);
|
|
36
42
|
export type SessionMessageSearchMatch = z.infer<typeof SessionMessageSearchMatch>;
|
|
37
43
|
|
|
38
44
|
/** A bounded scan page, not necessarily a full page of matches. Continue even
|
|
@@ -42,13 +48,15 @@ export type SessionMessageSearchMatch = z.infer<typeof SessionMessageSearchMatch
|
|
|
42
48
|
* With groupBy=session, matches and both matched counts describe one first-hit
|
|
43
49
|
* representative per matching session, not full message/occurrence totals.
|
|
44
50
|
*/
|
|
45
|
-
export const SessionMessageSearchResponse =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
51
|
+
export const SessionMessageSearchResponse = /* @__PURE__ */ defineSchema(() =>
|
|
52
|
+
z.object({
|
|
53
|
+
matches: z.array(SessionMessageSearchMatch).max(50),
|
|
54
|
+
nextCursor: primitives.nullableString,
|
|
55
|
+
hasMore: primitives.boolean,
|
|
56
|
+
scannedMessages: primitives.nonnegativeInteger,
|
|
57
|
+
matchedMessageCount: primitives.nonnegativeInteger,
|
|
58
|
+
matchedOccurrenceCount: primitives.nonnegativeInteger,
|
|
59
|
+
countIsExact: primitives.boolean,
|
|
60
|
+
}),
|
|
61
|
+
);
|
|
54
62
|
export type SessionMessageSearchResponse = z.infer<typeof SessionMessageSearchResponse>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as primitives from "./primitives";
|
|
2
|
+
import { defineSchema } from "./define-schema";
|
|
3
|
+
import { z } from "zod";
|
|
4
|
+
|
|
5
|
+
/** Conversational context only. Never an authority or an implicit dispatch destination. */
|
|
6
|
+
export const SessionTargetContext = /* @__PURE__ */ defineSchema(() =>
|
|
7
|
+
z
|
|
8
|
+
.object({
|
|
9
|
+
version: primitives.nonnegativeInteger,
|
|
10
|
+
sessionId: primitives.nullableUuid,
|
|
11
|
+
operationId: primitives.nullableUuid,
|
|
12
|
+
})
|
|
13
|
+
.strict(),
|
|
14
|
+
);
|
|
15
|
+
export type SessionTargetContext = z.infer<typeof SessionTargetContext>;
|
|
16
|
+
|
|
17
|
+
export const SetSessionTargetRequest = /* @__PURE__ */ defineSchema(() =>
|
|
18
|
+
z
|
|
19
|
+
.object({
|
|
20
|
+
sessionId: primitives.nullableUuid,
|
|
21
|
+
expectedVersion: primitives.nonnegativeInteger,
|
|
22
|
+
operationId: primitives.uuid,
|
|
23
|
+
})
|
|
24
|
+
.strict(),
|
|
25
|
+
);
|
|
26
|
+
export type SetSessionTargetRequest = z.infer<typeof SetSessionTargetRequest>;
|
|
27
|
+
|
|
28
|
+
export const SESSION_TARGET_CONTEXT_KEY = "conversationTargetV1";
|
|
29
|
+
|
|
30
|
+
export function sessionTargetContext(metadata: Record<string, unknown>): SessionTargetContext {
|
|
31
|
+
return SessionTargetContext.parse(
|
|
32
|
+
metadata[SESSION_TARGET_CONTEXT_KEY] ?? {
|
|
33
|
+
version: 0,
|
|
34
|
+
sessionId: null,
|
|
35
|
+
operationId: null,
|
|
36
|
+
},
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** CAS plus exact retry replay; an old retry cannot restore a subsequently cleared target. */
|
|
41
|
+
export function nextSessionTargetContext(
|
|
42
|
+
current: SessionTargetContext,
|
|
43
|
+
request: SetSessionTargetRequest,
|
|
44
|
+
): SessionTargetContext {
|
|
45
|
+
SetSessionTargetRequest.parse(request);
|
|
46
|
+
if (current.operationId === request.operationId) {
|
|
47
|
+
if (current.sessionId !== request.sessionId || current.version !== request.expectedVersion + 1)
|
|
48
|
+
throw new Error("Session target operation was reused with different input");
|
|
49
|
+
return current;
|
|
50
|
+
}
|
|
51
|
+
if (current.version !== request.expectedVersion)
|
|
52
|
+
throw new Error("Session target changed; read it again");
|
|
53
|
+
return {
|
|
54
|
+
version: current.version + 1,
|
|
55
|
+
sessionId: request.sessionId,
|
|
56
|
+
operationId: request.operationId,
|
|
57
|
+
};
|
|
58
|
+
}
|
package/src/session-titles.ts
CHANGED
|
@@ -18,7 +18,7 @@ export const AUTOMATIC_SESSION_TITLE_FALLBACK = "New conversation";
|
|
|
18
18
|
// Session creation accepts a body far larger than a navigation label. Bound
|
|
19
19
|
// the source before any replace/split/normalization so a persisted large prompt
|
|
20
20
|
// cannot amplify memory or CPU on every client render.
|
|
21
|
-
const PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4_096;
|
|
21
|
+
export const PROMPT_PREVIEW_SCAN_MAX_CODE_UNITS = 4_096;
|
|
22
22
|
|
|
23
23
|
const SESSION_ID_PATTERN =
|
|
24
24
|
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/iu;
|
|
@@ -196,7 +196,9 @@ const TITLE_LABEL_PATTERN =
|
|
|
196
196
|
/^(?:(?:suggested|generated|concise)\s+)?(?:(?:session|chat|conversation|task)\s+)?title\s*[:\-–—]\s*/iu;
|
|
197
197
|
|
|
198
198
|
const LEADING_BOILERPLATE_PATTERNS = [
|
|
199
|
-
|
|
199
|
+
// Require a real separator, not ASCII-only \b: History, HelloWorld and
|
|
200
|
+
// Unicode word continuations are title content, as is "thereabouts" after Hi.
|
|
201
|
+
/^(?:hi|hello|hey)(?:\s+there)?(?=$|[\s,!:.\-–—])\s*[,!:.\-–—]*\s*/iu,
|
|
200
202
|
/^(?:i\s+(?:would\s+like|want|need)\s+you\s+to|i['’]d\s+like\s+you\s+to)\s+/iu,
|
|
201
203
|
/^(?:please\s+)?(?:can|could|would|will)\s+you\s+/iu,
|
|
202
204
|
/^(?:your|the)\s+(?:task|job)\s+is\s+to\s+/iu,
|
|
@@ -324,6 +326,39 @@ function automaticTitleGraphemes(value: string): string[] {
|
|
|
324
326
|
return graphemes;
|
|
325
327
|
}
|
|
326
328
|
|
|
329
|
+
/**
|
|
330
|
+
* Model control tokens such as `<|fim_suffix|>`, `<|im_end|>` or `<|end▁of▁sentence|>`
|
|
331
|
+
* sometimes leak into generated text. They are never title content: each one
|
|
332
|
+
* becomes a line break, so a title keeps only its first real segment.
|
|
333
|
+
*/
|
|
334
|
+
const MODEL_CONTROL_TOKEN = /<[||][^<>||\s]{1,64}[||]>/gu;
|
|
335
|
+
|
|
336
|
+
function withoutModelControlTokens(value: string): string {
|
|
337
|
+
return value.replace(MODEL_CONTROL_TOKEN, "\n");
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Read-side cleanup for a durable title. Automatic titles written before
|
|
342
|
+
* control-token stripping can still hold a token ("Release plan<|fim_suffix|>");
|
|
343
|
+
* those keep only their first real segment, and a token-only title reads as no
|
|
344
|
+
* title. Human renames and titles without a token are returned unchanged.
|
|
345
|
+
*/
|
|
346
|
+
export function cleanStoredSessionTitle(
|
|
347
|
+
title: string | null | undefined,
|
|
348
|
+
titleSource: string | null | undefined,
|
|
349
|
+
): string | null {
|
|
350
|
+
if (title === null || title === undefined) return null;
|
|
351
|
+
if (titleSource === "user") return title;
|
|
352
|
+
const stripped = withoutModelControlTokens(title);
|
|
353
|
+
if (stripped === title) return title;
|
|
354
|
+
return (
|
|
355
|
+
stripped
|
|
356
|
+
.split("\n")
|
|
357
|
+
.map((part) => part.trim())
|
|
358
|
+
.find(Boolean) ?? null
|
|
359
|
+
);
|
|
360
|
+
}
|
|
361
|
+
|
|
327
362
|
/** Bound an already-normalized automatic-title candidate without splitting graphemes. */
|
|
328
363
|
export function boundAutomaticSessionTitle(value: string): string {
|
|
329
364
|
const words = value.split(/\s+/u);
|
|
@@ -345,7 +380,7 @@ export function boundAutomaticSessionTitle(value: string): string {
|
|
|
345
380
|
* title (normally {@link AUTOMATIC_SESSION_TITLE_FALLBACK}) in that case.
|
|
346
381
|
*/
|
|
347
382
|
export function normalizeAutomaticSessionTitle(value: string): string | null {
|
|
348
|
-
const firstLine = value
|
|
383
|
+
const firstLine = withoutModelControlTokens(value)
|
|
349
384
|
.replace(/[\u0000-\u001f\u007f-\u009f]+/gu, "\n")
|
|
350
385
|
.split(/\n+/u)
|
|
351
386
|
.map((line) => line.trim())
|
|
@@ -450,7 +485,8 @@ export function deriveSessionDisplayTitle(
|
|
|
450
485
|
return title || automaticSessionReferenceTitle(input.id);
|
|
451
486
|
}
|
|
452
487
|
if (title && !sessionTitleIsPending(input)) {
|
|
453
|
-
|
|
488
|
+
const clean = cleanStoredSessionTitle(title, input.titleSource)?.trim();
|
|
489
|
+
if (clean) return clean;
|
|
454
490
|
}
|
|
455
491
|
|
|
456
492
|
for (const key of options.metadataKeys ?? []) {
|
|
@@ -1,21 +1,29 @@
|
|
|
1
|
+
import * as primitives from "./primitives";
|
|
2
|
+
import { defineSchema } from "./define-schema";
|
|
1
3
|
import { z } from "zod";
|
|
2
4
|
|
|
3
|
-
export const SessionStatus =
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
export const SessionStatus = /* @__PURE__ */ defineSchema(() =>
|
|
6
|
+
z.enum([
|
|
7
|
+
"queued",
|
|
8
|
+
"running",
|
|
9
|
+
"idle",
|
|
10
|
+
"requires_action",
|
|
11
|
+
"recovering",
|
|
12
|
+
"waiting_capacity",
|
|
13
|
+
"failed",
|
|
14
|
+
"cancelled",
|
|
15
|
+
]),
|
|
16
|
+
);
|
|
13
17
|
export type SessionStatus = z.infer<typeof SessionStatus>;
|
|
14
18
|
|
|
15
|
-
export const SessionGoalStatus =
|
|
19
|
+
export const SessionGoalStatus = /* @__PURE__ */ defineSchema(() =>
|
|
20
|
+
z.enum(["active", "paused", "completed"]),
|
|
21
|
+
);
|
|
16
22
|
export type SessionGoalStatus = z.infer<typeof SessionGoalStatus>;
|
|
17
23
|
|
|
18
24
|
/** Physical ceiling of the PostgreSQL integer columns that persist depth policy. */
|
|
19
25
|
export const MAX_NESTED_AGENT_DEPTH = 2_147_483_647;
|
|
20
|
-
export const NestedAgentDepthValue =
|
|
26
|
+
export const NestedAgentDepthValue = /* @__PURE__ */ defineSchema(() =>
|
|
27
|
+
primitives.nonnegativeInteger.max(MAX_NESTED_AGENT_DEPTH),
|
|
28
|
+
);
|
|
21
29
|
export type NestedAgentDepthValue = z.infer<typeof NestedAgentDepthValue>;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser/React Native-safe session usage limit helpers. Deliberately free of
|
|
3
|
+
* the zod runtime so synchronous timeline projection can use it; contract
|
|
4
|
+
* parity tests keep it aligned with `session-usage-limits.ts`.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** `turn.completed.segmentLimit` for a stop caused by a task usage limit. */
|
|
8
|
+
export const SESSION_USAGE_LIMIT_SEGMENT = "session_usage_limit" as const;
|
|
9
|
+
/** `SessionGoal.pausedReason` for a goal paused by a task usage limit. */
|
|
10
|
+
export const SESSION_USAGE_LIMIT_GOAL_PAUSED_REASON = "session_usage_limit" as const;
|
|
11
|
+
|
|
12
|
+
const BASIS = "model_api_equivalent_v1";
|
|
13
|
+
const MAX_LIMIT_MICROS = 10_000_000 * 1_000_000;
|
|
14
|
+
const MESSAGE_MAX_UTF8_BYTES = 1_024;
|
|
15
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
16
|
+
|
|
17
|
+
export type ParsedSessionUsageLimitReachedRefusal = {
|
|
18
|
+
code: "session_usage_limit_reached";
|
|
19
|
+
basis: "model_api_equivalent_v1";
|
|
20
|
+
rootSessionId: string;
|
|
21
|
+
limitMicros: number;
|
|
22
|
+
usedMicros: number;
|
|
23
|
+
message: string;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
function record(value: unknown): Record<string, unknown> | null {
|
|
27
|
+
return value !== null && typeof value === "object" && !Array.isArray(value)
|
|
28
|
+
? (value as Record<string, unknown>)
|
|
29
|
+
: null;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function micros(value: unknown, max = Number.MAX_SAFE_INTEGER): value is number {
|
|
33
|
+
return typeof value === "number" && Number.isSafeInteger(value) && value >= 0 && value <= max;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
function boundedMessage(value: string): string {
|
|
37
|
+
const normalized = value
|
|
38
|
+
.slice(0, MESSAGE_MAX_UTF8_BYTES * 2)
|
|
39
|
+
.replace(/[\u0000-\u001f\u007f]+/g, " ")
|
|
40
|
+
.trim();
|
|
41
|
+
const bytes = new TextEncoder().encode(normalized);
|
|
42
|
+
let end = Math.min(bytes.length, MESSAGE_MAX_UTF8_BYTES);
|
|
43
|
+
while (end > 0 && end < bytes.length && (bytes[end]! & 0xc0) === 0x80) end -= 1;
|
|
44
|
+
return new TextDecoder().decode(bytes.slice(0, end)).trim();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Select only the public refusal fields from an API error body (fields may sit
|
|
49
|
+
* in `details`), a `turn.completed` payload's `sessionUsageLimit` record, or a
|
|
50
|
+
* refusal object. Anything malformed returns null instead of a guessed amount.
|
|
51
|
+
*/
|
|
52
|
+
export function parseSessionUsageLimitReachedRefusal(
|
|
53
|
+
value: unknown,
|
|
54
|
+
): ParsedSessionUsageLimitReachedRefusal | null {
|
|
55
|
+
const outer = record(value);
|
|
56
|
+
if (!outer) return null;
|
|
57
|
+
const source = record(outer.sessionUsageLimit) ?? outer;
|
|
58
|
+
if (source.code !== "session_usage_limit_reached") return null;
|
|
59
|
+
const fields = record(source.details) ?? source;
|
|
60
|
+
if (
|
|
61
|
+
fields.basis !== BASIS ||
|
|
62
|
+
typeof fields.rootSessionId !== "string" ||
|
|
63
|
+
!UUID.test(fields.rootSessionId) ||
|
|
64
|
+
!micros(fields.limitMicros, MAX_LIMIT_MICROS) ||
|
|
65
|
+
!micros(fields.usedMicros)
|
|
66
|
+
) {
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
const refusal = {
|
|
70
|
+
code: "session_usage_limit_reached" as const,
|
|
71
|
+
basis: BASIS as "model_api_equivalent_v1",
|
|
72
|
+
rootSessionId: fields.rootSessionId.toLowerCase(),
|
|
73
|
+
limitMicros: fields.limitMicros,
|
|
74
|
+
usedMicros: fields.usedMicros,
|
|
75
|
+
message: "",
|
|
76
|
+
};
|
|
77
|
+
const message = typeof source.message === "string" ? boundedMessage(source.message) : "";
|
|
78
|
+
return { ...refusal, message: message || sessionUsageLimitReachedMessage(refusal) };
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* "$12.34" for known amounts, "<$0.01" for a positive amount under a cent.
|
|
83
|
+
* Callers must not pass unknown usage: render "Preparing usage" or
|
|
84
|
+
* "Usage unavailable" instead of a dollar figure.
|
|
85
|
+
*/
|
|
86
|
+
export function formatSessionUsageMicros(value: number): string {
|
|
87
|
+
if (value > 0 && value < 10_000) return "<$0.01";
|
|
88
|
+
const dollars = value / 1_000_000;
|
|
89
|
+
return `$${dollars.toLocaleString("en-US", {
|
|
90
|
+
minimumFractionDigits: 2,
|
|
91
|
+
maximumFractionDigits: 2,
|
|
92
|
+
})}`;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** Fixed, bounded wording: no reset date, purchase remedy or invoice claim. */
|
|
96
|
+
export function sessionUsageLimitReachedMessage(refusal: {
|
|
97
|
+
limitMicros: number;
|
|
98
|
+
usedMicros: number;
|
|
99
|
+
}): string {
|
|
100
|
+
return `This task's usage limit is reached (${formatSessionUsageMicros(refusal.usedMicros)} of ${formatSessionUsageMicros(refusal.limitMicros)} API-equivalent model usage). A person can raise or remove the limit to continue.`;
|
|
101
|
+
}
|