@opengeni/contracts 0.50.0 → 1.0.0
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 +70 -0
- package/dist/agent-config.d.ts +869 -0
- package/dist/agent-instruction-changes.d.ts +110 -0
- package/dist/agent-learning.d.ts +243 -0
- package/dist/agent-topology.d.ts +292 -0
- 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 +161 -0
- package/dist/artifacts.d.ts +135 -11
- 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 +2 -0
- package/dist/atlassian.js +26 -12
- 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 +40 -0
- package/dist/chunk-2ACYHZFB.js +292 -0
- package/dist/chunk-2ACYHZFB.js.map +1 -0
- package/dist/chunk-2VORLN2R.js +353 -0
- package/dist/chunk-2VORLN2R.js.map +1 -0
- package/dist/{chunk-Y3MLSLB4.js → chunk-3SIZGL3O.js} +42 -30
- package/dist/chunk-3SIZGL3O.js.map +1 -0
- package/dist/chunk-46KLD2UH.js +186 -0
- package/dist/chunk-46KLD2UH.js.map +1 -0
- package/dist/chunk-4JGHSSB7.js +11 -0
- package/dist/chunk-4JGHSSB7.js.map +1 -0
- package/dist/{chunk-M5ZGRVIQ.js → chunk-5IXYF6XN.js} +14 -5
- package/dist/chunk-5IXYF6XN.js.map +1 -0
- package/dist/chunk-BCS7WHCK.js +139 -0
- package/dist/chunk-BCS7WHCK.js.map +1 -0
- package/dist/chunk-EK7NDGFR.js +128 -0
- package/dist/chunk-EK7NDGFR.js.map +1 -0
- package/dist/{chunk-5UDNP7AO.js → chunk-FZ6BXQHL.js} +78 -38
- package/dist/chunk-FZ6BXQHL.js.map +1 -0
- package/dist/{chunk-CM6BMECR.js → chunk-GRG7PHWQ.js} +2 -1
- package/dist/chunk-GRG7PHWQ.js.map +1 -0
- package/dist/chunk-KHHZTBP7.js +11 -0
- package/dist/chunk-KHHZTBP7.js.map +1 -0
- package/dist/chunk-KR2V42UZ.js +187 -0
- package/dist/chunk-KR2V42UZ.js.map +1 -0
- package/dist/chunk-MZLBPKFE.js +168 -0
- package/dist/chunk-MZLBPKFE.js.map +1 -0
- package/dist/{chunk-LW7OH6CS.js → chunk-NRMCVHAU.js} +6 -5
- package/dist/chunk-NRMCVHAU.js.map +1 -0
- package/dist/{chunk-TZ6YEYN4.js → chunk-NVJMJWLL.js} +3 -1
- package/dist/chunk-NVJMJWLL.js.map +1 -0
- package/dist/chunk-O77VSFYZ.js +70 -0
- package/dist/chunk-O77VSFYZ.js.map +1 -0
- package/dist/chunk-PX3VCKAU.js +29 -0
- package/dist/chunk-PX3VCKAU.js.map +1 -0
- package/dist/chunk-QR5D2IQC.js +61 -0
- package/dist/chunk-QR5D2IQC.js.map +1 -0
- package/dist/chunk-RJ76DRPO.js +117 -0
- package/dist/chunk-RJ76DRPO.js.map +1 -0
- package/dist/chunk-RKX3NQYS.js +28 -0
- package/dist/chunk-RKX3NQYS.js.map +1 -0
- package/dist/{chunk-JBCIY7QD.js → chunk-SIOU2K4U.js} +45 -22
- package/dist/chunk-SIOU2K4U.js.map +1 -0
- package/dist/chunk-TSCDAGET.js +75 -0
- package/dist/chunk-TSCDAGET.js.map +1 -0
- package/dist/{chunk-LSB7GRLG.js → chunk-TXTQIYCV.js} +15 -11
- package/dist/chunk-TXTQIYCV.js.map +1 -0
- package/dist/chunk-X7ETVO4P.js +26544 -0
- package/dist/chunk-X7ETVO4P.js.map +1 -0
- package/dist/{chunk-CADSX6UN.js → chunk-Y3KNXVTD.js} +2 -2
- package/dist/chunk-YBW5JSA3.js +251 -0
- package/dist/chunk-YBW5JSA3.js.map +1 -0
- package/dist/chunk-YRXAWWCU.js +45 -0
- package/dist/chunk-YRXAWWCU.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 +109 -0
- package/dist/client-error-report.js +87 -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/company-brain-governed-writes.d.ts +475 -0
- package/dist/company-brain.d.ts +336 -0
- package/dist/company-profile.d.ts +566 -0
- package/dist/connect.d.ts +325 -0
- package/dist/connect.js +191 -0
- package/dist/connect.js.map +1 -0
- 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 +193 -0
- package/dist/connection-authority.js +50 -0
- package/dist/connection-authority.js.map +1 -0
- package/dist/connector-attachments.d.ts +95 -0
- package/dist/connector-attachments.js +51 -0
- package/dist/connector-attachments.js.map +1 -0
- package/dist/connector-tool-permissions.d.ts +73 -0
- package/dist/direct-model-provider.d.ts +36 -0
- package/dist/editable-artifact-codec-registry.d.ts +16 -7
- package/dist/editable-artifact-codec-registry.js +18 -8
- package/dist/editable-artifact-committed-transaction.d.ts +2 -2
- package/dist/editable-artifact-committed-transaction.js +2 -2
- package/dist/editable-artifact-live.d.ts +11 -12
- package/dist/editable-artifact-live.js +110 -45
- package/dist/editable-artifact-live.js.map +1 -1
- package/dist/editable-artifact-serialized-commit.d.ts +2 -1
- package/dist/editable-artifact-serialized-commit.js +8 -7
- package/dist/editable-artifact-versions.d.ts +20 -5
- package/dist/editable-artifact-versions.js +23 -5
- package/dist/editable-artifacts.d.ts +2 -0
- package/dist/editable-artifacts.js +47 -35
- package/dist/external-identities.d.ts +784 -0
- package/dist/external-identities.js +44 -0
- package/dist/external-identities.js.map +1 -0
- package/dist/feedback.d.ts +51 -0
- package/dist/github-repository-contracts.d.ts +36 -0
- package/dist/github-repository-contracts.js +59 -0
- package/dist/github-repository-contracts.js.map +1 -0
- package/dist/github-repository.d.ts +14 -0
- package/dist/github-repository.js +36 -0
- package/dist/github-repository.js.map +1 -0
- package/dist/google-drive.d.ts +90 -1
- package/dist/google-drive.js +90 -16
- package/dist/google-drive.js.map +1 -1
- package/dist/governed-learning-activation.d.ts +154 -0
- package/dist/governed-learning-evaluator.d.ts +152 -0
- package/dist/host-mcp-bindings.d.ts +326 -0
- package/dist/host-mcp-bindings.js +252 -0
- package/dist/host-mcp-bindings.js.map +1 -0
- package/dist/image-generation.d.ts +1 -0
- package/dist/index.d.ts +32396 -11386
- package/dist/index.js +2198 -164
- package/dist/insights-usage.d.ts +877 -0
- package/dist/insights-usage.js +509 -0
- package/dist/insights-usage.js.map +1 -0
- package/dist/interaction.d.ts +344 -0
- package/dist/knowledge-entries.d.ts +982 -0
- package/dist/knowledge-preparation.d.ts +237 -0
- package/dist/knowledge.d.ts +197 -0
- package/dist/managed-auth-session-sets.d.ts +241 -0
- package/dist/managed-auth-session-sets.js +191 -0
- package/dist/managed-auth-session-sets.js.map +1 -0
- package/dist/managed-sign-in-methods.d.ts +56 -0
- package/dist/managed-sign-in-methods.js +46 -0
- package/dist/managed-sign-in-methods.js.map +1 -0
- package/dist/mcp-catalog-limits.d.ts +2 -0
- package/dist/mcp-endpoint.d.ts +7 -0
- package/dist/mcp-endpoint.js +9 -0
- package/dist/mcp-endpoint.js.map +1 -0
- package/dist/mcp-oauth.d.ts +71 -0
- package/dist/modal-native-proof-v2.d.ts +587 -0
- package/dist/modal-native-proof-v2.js +37 -0
- package/dist/modal-native-proof-v2.js.map +1 -0
- package/dist/model-availability.d.ts +15 -0
- package/dist/model-connection-access.d.ts +24 -0
- package/dist/model-context-inspector.d.ts +329 -0
- package/dist/model-display.d.ts +38 -0
- package/dist/model-display.js +134 -0
- package/dist/model-display.js.map +1 -0
- package/dist/model-picker-order.d.ts +25 -0
- package/dist/model-picker-order.js +42 -0
- package/dist/model-picker-order.js.map +1 -0
- package/dist/organization-access.d.ts +231 -0
- package/dist/organization-access.js +34 -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 +1022 -0
- package/dist/organization-model-usage.d.ts +146 -0
- package/dist/organization-model-usage.js +67 -0
- package/dist/organization-model-usage.js.map +1 -0
- package/dist/organization-recovery.d.ts +337 -0
- package/dist/organization-recovery.js +37 -0
- package/dist/organization-recovery.js.map +1 -0
- package/dist/organization-usage.d.ts +138 -0
- package/dist/permissions.d.ts +54 -0
- package/dist/personal-github.d.ts +320 -0
- package/dist/personal-github.js +222 -0
- package/dist/personal-github.js.map +1 -0
- package/dist/plugin-discovery.d.ts +35 -0
- package/dist/plugin-discovery.js +7 -0
- package/dist/plugin-discovery.js.map +1 -0
- package/dist/preference-registry.d.ts +44 -1
- package/dist/product-analytics.d.ts +113 -0
- package/dist/product-lifecycle-facts.d.ts +73 -0
- package/dist/remember.d.ts +350 -0
- package/dist/retained-output.d.ts +8 -0
- package/dist/sandbox-file-artifacts.d.ts +57 -0
- package/dist/sandbox-provider-command.d.ts +113 -0
- package/dist/sandbox-recovery.d.ts +146 -0
- package/dist/sandbox-snapshots.d.ts +39 -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 +947 -0
- package/dist/session-list-entries.d.ts +4 -0
- package/dist/session-list-entries.js +51 -0
- package/dist/session-list-entries.js.map +1 -0
- package/dist/session-mcp-projections.d.ts +215 -0
- package/dist/session-message-search.d.ts +68 -0
- package/dist/session-titles.d.ts +68 -0
- package/dist/session-titles.js +25 -0
- package/dist/session-titles.js.map +1 -0
- package/dist/session-topology-primitives.d.ts +22 -0
- package/dist/signup-attribution.d.ts +39 -0
- package/dist/site-request-headers.test.d.ts +1 -0
- package/dist/site-session-http.d.ts +11 -0
- package/dist/site-session-http.js +11 -0
- package/dist/site-session-http.js.map +1 -0
- package/dist/skill-catalog-context.d.ts +7 -0
- package/dist/skill-files.d.ts +12 -0
- package/dist/skill-metadata.d.ts +9 -0
- package/dist/skill-use.d.ts +61 -0
- package/dist/skills.d.ts +185 -0
- package/dist/slack-bot-scopes.d.ts +46 -21
- package/dist/slack-bot-scopes.js +14 -3
- package/dist/slack-rest-mcp.d.ts +31 -0
- package/dist/slack-rest-mcp.js +19 -0
- package/dist/slack-rest-mcp.js.map +1 -0
- package/dist/spreadsheet-artifact-commands.d.ts +2 -3
- package/dist/spreadsheet-artifact-commands.js +4 -2
- package/dist/spreadsheet-artifact-query.js +3 -2
- package/dist/subscription-account-pools.d.ts +292 -0
- package/dist/task-notes.d.ts +42 -1
- package/dist/tool-catalog.d.ts +286 -0
- package/dist/tool-result-spill.d.ts +16 -0
- package/dist/usage-allowances.d.ts +285 -0
- package/dist/usage-allowances.js +49 -0
- package/dist/usage-allowances.js.map +1 -0
- package/dist/video-generation.d.ts +3 -0
- package/dist/video-generation.js +1 -1
- package/dist/work-claims.d.ts +411 -0
- package/dist/workspace-instruction-policies.d.ts +94 -0
- 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 +948 -0
- package/dist/workspace-learning-administration.d.ts +289 -0
- package/dist/workspace-learning-policy.d.ts +1 -1
- package/dist/workspace-state.d.ts +85 -416
- package/dist/xai-provider-account-authority.d.ts +3 -0
- package/dist/xai-provider-account-authority.js +1 -1
- package/package.json +134 -1
- package/src/agent-authored-durable-text.ts +116 -0
- package/src/agent-config.ts +1527 -0
- package/src/agent-instruction-changes.ts +98 -0
- package/src/agent-learning.ts +161 -0
- package/src/agent-topology.ts +69 -0
- package/src/allowance-refusal.ts +81 -0
- package/src/analytics-consent-report.ts +20 -0
- package/src/api-key-presets.ts +25 -0
- package/src/artifact-catalog.ts +60 -0
- package/src/artifacts.ts +146 -18
- package/src/atlassian-native-retirement.ts +33 -0
- package/src/browser-storage.ts +10 -0
- package/src/bundled-skills.ts +73 -0
- package/src/claude-provider-account-authority.ts +12 -0
- package/src/claude-subscription-oauth.ts +62 -0
- package/src/claude-subscription-usage.ts +59 -0
- package/src/client-error-report.ts +184 -0
- package/src/code-search.ts +105 -0
- package/src/company-brain-governed-writes.ts +356 -0
- package/src/company-brain.ts +201 -0
- package/src/company-profile.ts +167 -1
- package/src/connect.ts +202 -0
- package/src/connection-account-label.ts +46 -0
- package/src/connection-authority.ts +213 -0
- package/src/connector-attachments.ts +327 -0
- package/src/connector-tool-permissions.ts +60 -0
- package/src/direct-model-provider.ts +98 -0
- package/src/editable-artifact-codec-registry.ts +55 -17
- package/src/editable-artifact-committed-transaction.ts +44 -31
- package/src/editable-artifact-live.ts +123 -57
- package/src/editable-artifact-serialized-commit.ts +2 -1
- package/src/editable-artifact-versions.ts +26 -5
- package/src/editable-artifacts.ts +2 -0
- package/src/external-identities.ts +285 -0
- package/src/feedback.ts +39 -0
- package/src/github-repository-contracts.ts +85 -0
- package/src/github-repository.ts +59 -0
- package/src/google-drive.ts +76 -4
- package/src/governed-learning-activation.ts +191 -0
- package/src/governed-learning-evaluator.ts +176 -0
- package/src/host-mcp-bindings.ts +298 -0
- package/src/image-generation.ts +8 -2
- package/src/index.ts +7093 -1466
- package/src/insights-usage.ts +679 -0
- package/src/interaction.ts +220 -5
- package/src/knowledge-entries.ts +375 -0
- package/src/knowledge-preparation.ts +50 -0
- package/src/knowledge.ts +134 -6
- package/src/managed-auth-session-sets.ts +253 -0
- package/src/managed-sign-in-methods.ts +37 -0
- package/src/mcp-catalog-limits.ts +2 -0
- package/src/mcp-endpoint.ts +30 -0
- package/src/mcp-oauth.ts +66 -0
- package/src/modal-native-proof-v2.ts +398 -0
- package/src/model-availability.ts +22 -0
- package/src/model-connection-access.ts +17 -0
- package/src/model-context-inspector.ts +139 -0
- package/src/model-display.ts +195 -0
- package/src/model-picker-order.ts +97 -0
- package/src/organization-access.ts +176 -0
- package/src/organization-integration-policy.ts +54 -0
- package/src/organization-membership-lifecycle.ts +559 -0
- package/src/organization-model-usage.ts +72 -0
- package/src/organization-recovery.ts +186 -0
- package/src/organization-usage.ts +79 -0
- package/src/permissions.ts +58 -0
- package/src/personal-github.ts +267 -0
- package/src/plugin-discovery.ts +33 -0
- package/src/preference-registry.ts +20 -1
- package/src/product-analytics.ts +253 -0
- package/src/product-lifecycle-facts.ts +121 -0
- package/src/remember.ts +243 -0
- package/src/retained-output.ts +20 -3
- package/src/sandbox-file-artifacts.ts +73 -0
- package/src/sandbox-provider-command.ts +82 -0
- package/src/sandbox-recovery.ts +116 -0
- package/src/sandbox-snapshots.ts +142 -0
- package/src/session-final-reply.ts +16 -0
- package/src/session-goal-reports.ts +55 -0
- package/src/session-history-import.ts +159 -0
- package/src/session-list-entries.ts +91 -0
- package/src/session-mcp-projections.ts +273 -0
- package/src/session-message-search.ts +54 -0
- package/src/session-titles.ts +467 -0
- package/src/session-topology-primitives.ts +21 -0
- package/src/signup-attribution.ts +81 -0
- package/src/site-request-headers.test.ts +28 -0
- package/src/site-session-http.ts +63 -0
- package/src/skill-catalog-context.ts +50 -0
- package/src/skill-files.ts +52 -0
- package/src/skill-metadata.ts +40 -0
- package/src/skill-use.ts +77 -0
- package/src/skills.ts +136 -0
- package/src/slack-bot-scopes.ts +106 -42
- package/src/slack-rest-mcp.ts +194 -0
- package/src/spreadsheet-artifact-commands.ts +12 -13
- package/src/subscription-account-pools.ts +44 -0
- package/src/task-notes.ts +14 -1
- package/src/tool-catalog.ts +155 -0
- package/src/tool-result-spill.ts +35 -0
- package/src/usage-allowances.ts +187 -0
- package/src/work-claims.ts +266 -0
- package/src/workspace-instruction-policies.ts +31 -0
- package/src/workspace-integration-wire.ts +99 -0
- package/src/workspace-integrations.ts +640 -0
- package/src/workspace-learning-administration.ts +88 -0
- package/src/workspace-learning-policy.ts +4 -3
- package/src/workspace-state.ts +16 -126
- package/src/xai-provider-account-authority.ts +1 -0
- package/dist/chunk-5UDNP7AO.js.map +0 -1
- package/dist/chunk-BVGIYW7D.js +0 -11
- package/dist/chunk-BVGIYW7D.js.map +0 -1
- package/dist/chunk-CM6BMECR.js.map +0 -1
- package/dist/chunk-JBCIY7QD.js.map +0 -1
- package/dist/chunk-LSB7GRLG.js.map +0 -1
- package/dist/chunk-LW7OH6CS.js.map +0 -1
- package/dist/chunk-M5ZGRVIQ.js.map +0 -1
- package/dist/chunk-Q6A7XT2N.js +0 -16734
- package/dist/chunk-Q6A7XT2N.js.map +0 -1
- package/dist/chunk-TZ6YEYN4.js.map +0 -1
- package/dist/chunk-Y3MLSLB4.js.map +0 -1
- /package/dist/{chunk-CADSX6UN.js.map → chunk-Y3KNXVTD.js.map} +0 -0
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const MANAGED_AUTH_SESSION_SET_MAX_SLOTS = 8 as const;
|
|
4
|
+
export const MANAGED_AUTH_TRANSACTION_TTL_SECONDS = 600 as const;
|
|
5
|
+
export const MANAGED_AUTH_RETURN_INTENT_MAX_BYTES = 2_048 as const;
|
|
6
|
+
export const MANAGED_AUTH_SESSION_SET_API_CONTRACT_HEADER = "x-opengeni-api-contract" as const;
|
|
7
|
+
export const MANAGED_AUTH_SESSION_SET_API_CONTRACT_REVISION =
|
|
8
|
+
"2026-08-personal-only-organization-setup-v1" as const;
|
|
9
|
+
|
|
10
|
+
export const ManagedAuthSessionSetMode = z.enum(["legacy", "dual", "broker"]);
|
|
11
|
+
export type ManagedAuthSessionSetMode = z.infer<typeof ManagedAuthSessionSetMode>;
|
|
12
|
+
|
|
13
|
+
export const ManagedAuthLoginSlotState = z.enum(["active", "reauth_required"]);
|
|
14
|
+
export type ManagedAuthLoginSlotState = z.infer<typeof ManagedAuthLoginSlotState>;
|
|
15
|
+
|
|
16
|
+
export const ManagedAuthVerifiedClaim = z.object({
|
|
17
|
+
kind: z.literal("email"),
|
|
18
|
+
value: z.string().email().max(320),
|
|
19
|
+
});
|
|
20
|
+
export type ManagedAuthVerifiedClaim = z.infer<typeof ManagedAuthVerifiedClaim>;
|
|
21
|
+
|
|
22
|
+
/** Secret-free, browser-safe summary. Provider session ids and tokens never enter this shape. */
|
|
23
|
+
export const ManagedAuthLoginSlot = z.object({
|
|
24
|
+
id: z.string().uuid(),
|
|
25
|
+
displayName: z.string().min(1).max(256),
|
|
26
|
+
verifiedClaim: ManagedAuthVerifiedClaim,
|
|
27
|
+
state: ManagedAuthLoginSlotState,
|
|
28
|
+
});
|
|
29
|
+
export type ManagedAuthLoginSlot = z.infer<typeof ManagedAuthLoginSlot>;
|
|
30
|
+
|
|
31
|
+
export const ManagedAuthSessionSetState = z.enum(["ready", "actor_change_required"]);
|
|
32
|
+
export type ManagedAuthSessionSetState = z.infer<typeof ManagedAuthSessionSetState>;
|
|
33
|
+
|
|
34
|
+
export const ManagedAuthSessionSetProjection = z.object({
|
|
35
|
+
mode: ManagedAuthSessionSetMode,
|
|
36
|
+
generation: z.string().regex(/^[1-9][0-9]*$/),
|
|
37
|
+
actorEpoch: z.string().regex(/^[1-9][0-9]*$/),
|
|
38
|
+
csrfToken: z.string().min(32).max(512),
|
|
39
|
+
selectedSlotId: z.string().uuid().nullable(),
|
|
40
|
+
state: ManagedAuthSessionSetState,
|
|
41
|
+
slots: z.array(ManagedAuthLoginSlot).max(MANAGED_AUTH_SESSION_SET_MAX_SLOTS),
|
|
42
|
+
});
|
|
43
|
+
export type ManagedAuthSessionSetProjection = z.infer<typeof ManagedAuthSessionSetProjection>;
|
|
44
|
+
|
|
45
|
+
export const ManagedAuthOperationIdentity = z.object({
|
|
46
|
+
operationId: z.string().uuid(),
|
|
47
|
+
expectedGeneration: z.string().regex(/^[1-9][0-9]*$/),
|
|
48
|
+
});
|
|
49
|
+
export type ManagedAuthOperationIdentity = z.infer<typeof ManagedAuthOperationIdentity>;
|
|
50
|
+
|
|
51
|
+
export const BootstrapManagedAuthSessionSetRequest = ManagedAuthOperationIdentity;
|
|
52
|
+
export type BootstrapManagedAuthSessionSetRequest = z.infer<
|
|
53
|
+
typeof BootstrapManagedAuthSessionSetRequest
|
|
54
|
+
>;
|
|
55
|
+
|
|
56
|
+
export const ManagedAuthReturnIntent = z
|
|
57
|
+
.string()
|
|
58
|
+
.min(1)
|
|
59
|
+
.superRefine((value, context) => {
|
|
60
|
+
if (new TextEncoder().encode(value).byteLength > MANAGED_AUTH_RETURN_INTENT_MAX_BYTES) {
|
|
61
|
+
context.addIssue({ code: "custom", message: "return intent exceeds its UTF-8 byte limit" });
|
|
62
|
+
}
|
|
63
|
+
if (
|
|
64
|
+
!value.startsWith("/") ||
|
|
65
|
+
value.startsWith("//") ||
|
|
66
|
+
value.includes("?") ||
|
|
67
|
+
value.includes("#") ||
|
|
68
|
+
/[\u0000-\u001f\u007f\\]/.test(value)
|
|
69
|
+
) {
|
|
70
|
+
context.addIssue({
|
|
71
|
+
code: "custom",
|
|
72
|
+
message: "return intent must be a safe same-origin path",
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
try {
|
|
77
|
+
const parsed = new URL(value, "https://opengeni.invalid");
|
|
78
|
+
const uuid = "[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}";
|
|
79
|
+
const supportedPath = new RegExp(
|
|
80
|
+
`^/(?:sessions/${uuid}|workspaces/${uuid}(?:/sessions(?:/${uuid})?)?)$`,
|
|
81
|
+
"i",
|
|
82
|
+
);
|
|
83
|
+
if (
|
|
84
|
+
parsed.origin !== "https://opengeni.invalid" ||
|
|
85
|
+
parsed.username ||
|
|
86
|
+
parsed.password ||
|
|
87
|
+
parsed.search ||
|
|
88
|
+
parsed.hash ||
|
|
89
|
+
!supportedPath.test(value) ||
|
|
90
|
+
parsed.pathname !== value
|
|
91
|
+
) {
|
|
92
|
+
context.addIssue({
|
|
93
|
+
code: "custom",
|
|
94
|
+
message: "return intent contains unsafe authority data",
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
} catch {
|
|
98
|
+
context.addIssue({
|
|
99
|
+
code: "custom",
|
|
100
|
+
message: "return intent is not a valid same-origin path",
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
export const BeginManagedAuthLoginTransactionRequest = ManagedAuthOperationIdentity.extend({
|
|
106
|
+
kind: z.enum(["add", "reauth"]),
|
|
107
|
+
slotId: z.string().uuid().optional(),
|
|
108
|
+
returnIntent: ManagedAuthReturnIntent.optional(),
|
|
109
|
+
}).superRefine((value, context) => {
|
|
110
|
+
if ((value.kind === "reauth") !== Boolean(value.slotId)) {
|
|
111
|
+
context.addIssue({
|
|
112
|
+
code: "custom",
|
|
113
|
+
path: ["slotId"],
|
|
114
|
+
message: "reauth requires exactly one slot id and add forbids one",
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
export type BeginManagedAuthLoginTransactionRequest = z.infer<
|
|
119
|
+
typeof BeginManagedAuthLoginTransactionRequest
|
|
120
|
+
>;
|
|
121
|
+
|
|
122
|
+
export const ManagedAuthLoginTransaction = z.object({
|
|
123
|
+
id: z.string().uuid(),
|
|
124
|
+
kind: z.enum(["add", "reauth"]),
|
|
125
|
+
expiresAt: z.string().datetime(),
|
|
126
|
+
returnIntentId: z.string().uuid().nullable(),
|
|
127
|
+
});
|
|
128
|
+
export type ManagedAuthLoginTransaction = z.infer<typeof ManagedAuthLoginTransaction>;
|
|
129
|
+
|
|
130
|
+
export const ManagedAuthSocialProvider = z.enum(["google", "github"]);
|
|
131
|
+
export type ManagedAuthSocialProvider = z.infer<typeof ManagedAuthSocialProvider>;
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Mirrors `SignupAttribution` from `./signup-attribution` (a contract test pins
|
|
135
|
+
* them together). Declared here, not imported, so the browser session-set
|
|
136
|
+
* client does not pull the attribution module into a new shared web chunk.
|
|
137
|
+
*/
|
|
138
|
+
const SocialStartAttributionValue = z
|
|
139
|
+
.string()
|
|
140
|
+
.trim()
|
|
141
|
+
.min(1)
|
|
142
|
+
.max(100)
|
|
143
|
+
.regex(/^[A-Za-z0-9._~+-]+$/);
|
|
144
|
+
const SocialStartAttribution = z
|
|
145
|
+
.object({
|
|
146
|
+
utmSource: SocialStartAttributionValue.optional(),
|
|
147
|
+
utmMedium: SocialStartAttributionValue.optional(),
|
|
148
|
+
utmCampaign: SocialStartAttributionValue.optional(),
|
|
149
|
+
utmContent: SocialStartAttributionValue.optional(),
|
|
150
|
+
ref: SocialStartAttributionValue.optional(),
|
|
151
|
+
})
|
|
152
|
+
.strict();
|
|
153
|
+
|
|
154
|
+
export const StartManagedAuthSocialTransactionRequest = ManagedAuthOperationIdentity.extend({
|
|
155
|
+
transactionId: z.string().uuid(),
|
|
156
|
+
provider: ManagedAuthSocialProvider,
|
|
157
|
+
/**
|
|
158
|
+
* Optional untrusted first-touch campaign tokens, used only by the
|
|
159
|
+
* content-free sign-up acquisition counter when this start creates a new
|
|
160
|
+
* account. Invalid attribution is dropped rather than failing the sign-in.
|
|
161
|
+
*/
|
|
162
|
+
attribution: SocialStartAttribution.optional().catch(undefined),
|
|
163
|
+
});
|
|
164
|
+
export type StartManagedAuthSocialTransactionRequest = z.infer<
|
|
165
|
+
typeof StartManagedAuthSocialTransactionRequest
|
|
166
|
+
>;
|
|
167
|
+
|
|
168
|
+
export const StartManagedAuthSocialTransactionResponse = z.object({
|
|
169
|
+
url: z.string().url().max(4_096),
|
|
170
|
+
});
|
|
171
|
+
export type StartManagedAuthSocialTransactionResponse = z.infer<
|
|
172
|
+
typeof StartManagedAuthSocialTransactionResponse
|
|
173
|
+
>;
|
|
174
|
+
|
|
175
|
+
export const CompleteManagedAuthEmailPasswordTransactionRequest =
|
|
176
|
+
ManagedAuthOperationIdentity.extend({
|
|
177
|
+
transactionId: z.string().uuid(),
|
|
178
|
+
email: z.string().email().max(320),
|
|
179
|
+
password: z.string().min(1).max(1_024),
|
|
180
|
+
});
|
|
181
|
+
export type CompleteManagedAuthEmailPasswordTransactionRequest = z.infer<
|
|
182
|
+
typeof CompleteManagedAuthEmailPasswordTransactionRequest
|
|
183
|
+
>;
|
|
184
|
+
|
|
185
|
+
export const CompleteManagedAuthLoginTransactionResponse = z.object({
|
|
186
|
+
projection: ManagedAuthSessionSetProjection,
|
|
187
|
+
returnIntent: ManagedAuthReturnIntent.nullable(),
|
|
188
|
+
});
|
|
189
|
+
export type CompleteManagedAuthLoginTransactionResponse = z.infer<
|
|
190
|
+
typeof CompleteManagedAuthLoginTransactionResponse
|
|
191
|
+
>;
|
|
192
|
+
|
|
193
|
+
export const CancelManagedAuthLoginTransactionRequest = ManagedAuthOperationIdentity.extend({
|
|
194
|
+
transactionId: z.string().uuid(),
|
|
195
|
+
});
|
|
196
|
+
export type CancelManagedAuthLoginTransactionRequest = z.infer<
|
|
197
|
+
typeof CancelManagedAuthLoginTransactionRequest
|
|
198
|
+
>;
|
|
199
|
+
|
|
200
|
+
export const SelectManagedAuthLoginSlotRequest = ManagedAuthOperationIdentity.extend({
|
|
201
|
+
slotId: z.string().uuid(),
|
|
202
|
+
});
|
|
203
|
+
export type SelectManagedAuthLoginSlotRequest = z.infer<typeof SelectManagedAuthLoginSlotRequest>;
|
|
204
|
+
|
|
205
|
+
export const LogoutManagedAuthLoginSlotRequest = ManagedAuthOperationIdentity.extend({
|
|
206
|
+
slotId: z.string().uuid(),
|
|
207
|
+
replacementSlotId: z.string().uuid().nullable(),
|
|
208
|
+
});
|
|
209
|
+
export type LogoutManagedAuthLoginSlotRequest = z.infer<typeof LogoutManagedAuthLoginSlotRequest>;
|
|
210
|
+
|
|
211
|
+
export const LogoutManagedAuthSessionSetRequest = ManagedAuthOperationIdentity;
|
|
212
|
+
export type LogoutManagedAuthSessionSetRequest = z.infer<typeof LogoutManagedAuthSessionSetRequest>;
|
|
213
|
+
|
|
214
|
+
export const ManagedAuthLogoutAllReceipt = z.object({
|
|
215
|
+
generation: z.string().regex(/^[1-9][0-9]*$/),
|
|
216
|
+
actorEpoch: z.string().regex(/^[1-9][0-9]*$/),
|
|
217
|
+
state: z.literal("logged_out"),
|
|
218
|
+
});
|
|
219
|
+
export type ManagedAuthLogoutAllReceipt = z.infer<typeof ManagedAuthLogoutAllReceipt>;
|
|
220
|
+
|
|
221
|
+
export const ResolveManagedAuthDeepLinkRequest = z.object({
|
|
222
|
+
path: ManagedAuthReturnIntent,
|
|
223
|
+
});
|
|
224
|
+
export type ResolveManagedAuthDeepLinkRequest = z.infer<typeof ResolveManagedAuthDeepLinkRequest>;
|
|
225
|
+
|
|
226
|
+
export const ManagedAuthDeepLinkResolution = z.discriminatedUnion("kind", [
|
|
227
|
+
z.object({ kind: z.literal("current") }),
|
|
228
|
+
z.object({ kind: z.literal("switch_required"), slot: ManagedAuthLoginSlot }),
|
|
229
|
+
z.object({ kind: z.literal("unavailable") }),
|
|
230
|
+
]);
|
|
231
|
+
export type ManagedAuthDeepLinkResolution = z.infer<typeof ManagedAuthDeepLinkResolution>;
|
|
232
|
+
|
|
233
|
+
export const ManagedAuthSessionSetErrorCode = z.enum([
|
|
234
|
+
"actor_change_required",
|
|
235
|
+
"actor_mutation_in_flight",
|
|
236
|
+
"api_contract_changed",
|
|
237
|
+
"browser_session_set_required",
|
|
238
|
+
"browser_session_set_unavailable",
|
|
239
|
+
"generation_conflict",
|
|
240
|
+
"invalid_browser_session_set_request",
|
|
241
|
+
"invalid_transaction",
|
|
242
|
+
"managed_authentication_required",
|
|
243
|
+
"managed_authentication_unavailable",
|
|
244
|
+
"operation_outcome_unknown",
|
|
245
|
+
"operation_reused",
|
|
246
|
+
"origin_rejected",
|
|
247
|
+
"login_transaction_rate_limited",
|
|
248
|
+
"provider_route_blocked",
|
|
249
|
+
"slot_limit_reached",
|
|
250
|
+
"slot_already_exists",
|
|
251
|
+
"slot_unavailable",
|
|
252
|
+
]);
|
|
253
|
+
export type ManagedAuthSessionSetErrorCode = z.infer<typeof ManagedAuthSessionSetErrorCode>;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const ManagedSignInProvider = z.enum(["google", "github"]);
|
|
4
|
+
export const ManagedSignInMethods = z.object({
|
|
5
|
+
identityId: z.string().uuid(),
|
|
6
|
+
email: z.string().email(),
|
|
7
|
+
emailVerified: z.boolean(),
|
|
8
|
+
identityRevision: z.number().int().positive(),
|
|
9
|
+
freshAuthenticationRequired: z.boolean(),
|
|
10
|
+
methods: z.array(
|
|
11
|
+
z.object({
|
|
12
|
+
provider: z.enum(["credential", "google", "github"]),
|
|
13
|
+
connected: z.boolean(),
|
|
14
|
+
available: z.boolean(),
|
|
15
|
+
canDisconnect: z.boolean(),
|
|
16
|
+
implicitRelinkingSuppressed: z.boolean(),
|
|
17
|
+
}),
|
|
18
|
+
),
|
|
19
|
+
});
|
|
20
|
+
export type ManagedSignInMethods = z.infer<typeof ManagedSignInMethods>;
|
|
21
|
+
export const ManagedSignInMutation = z.object({
|
|
22
|
+
expectedIdentityId: z.string().uuid(),
|
|
23
|
+
operationId: z.string().uuid(),
|
|
24
|
+
expectedIdentityRevision: z.number().int().positive(),
|
|
25
|
+
});
|
|
26
|
+
export const ManagedSignInProviderMutation = ManagedSignInMutation.extend({
|
|
27
|
+
provider: ManagedSignInProvider,
|
|
28
|
+
}).strict();
|
|
29
|
+
export const ManagedSignInPasswordMutation = ManagedSignInMutation.extend({
|
|
30
|
+
newPassword: z.string().min(8).max(128),
|
|
31
|
+
currentPassword: z.string().min(1).max(1024).optional(),
|
|
32
|
+
}).strict();
|
|
33
|
+
export const ManagedSignInMutationResponse = z.object({
|
|
34
|
+
reauthenticationRequired: z.literal(true),
|
|
35
|
+
notification: z.enum(["sent", "failed", "outcome_unknown"]),
|
|
36
|
+
});
|
|
37
|
+
export const ManagedSignInConnectResponse = z.object({ url: z.string().url() });
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Exact endpoint identity: normalize URL syntax, preserve paths and query parameters. */
|
|
2
|
+
export function mcpEndpointIdentity(value: string | null | undefined): string | null {
|
|
3
|
+
if (!value) return null;
|
|
4
|
+
try {
|
|
5
|
+
const url = new URL(value);
|
|
6
|
+
if (!["https:", "http:"].includes(url.protocol) || url.username || url.password) return null;
|
|
7
|
+
url.hash = "";
|
|
8
|
+
return url.href;
|
|
9
|
+
} catch {
|
|
10
|
+
return null;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export function pluginMcpUnavailableReason(server: {
|
|
15
|
+
endpoint: string | null;
|
|
16
|
+
transport?: string;
|
|
17
|
+
requiresConfiguration?: boolean;
|
|
18
|
+
}): string | null {
|
|
19
|
+
if (server.transport === "stdio" || !server.endpoint) return "Requires a local runtime";
|
|
20
|
+
if (
|
|
21
|
+
server.transport &&
|
|
22
|
+
!["http", "streamable-http", "streamable_http"].includes(server.transport)
|
|
23
|
+
)
|
|
24
|
+
return "Unsupported transport: " + server.transport;
|
|
25
|
+
if (server.requiresConfiguration || server.endpoint.includes("{"))
|
|
26
|
+
return "Requires custom connection configuration";
|
|
27
|
+
const endpoint = mcpEndpointIdentity(server.endpoint);
|
|
28
|
+
if (!endpoint?.startsWith("https://")) return "Requires a valid HTTPS endpoint";
|
|
29
|
+
return null;
|
|
30
|
+
}
|
package/src/mcp-oauth.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
|
|
3
|
+
export const MCP_OAUTH_SCOPE = "mcp:access" as const;
|
|
4
|
+
export const MCP_OAUTH_ACCESS_TOKEN_TTL_SECONDS = 15 * 60;
|
|
5
|
+
export const MCP_OAUTH_REFRESH_TOKEN_TTL_SECONDS = 30 * 24 * 60 * 60;
|
|
6
|
+
export const MCP_OAUTH_AUTHORIZATION_CODE_TTL_SECONDS = 5 * 60;
|
|
7
|
+
export const MCP_OAUTH_CONSENT_TTL_SECONDS = 10 * 60;
|
|
8
|
+
|
|
9
|
+
const RedirectUri = z.string().url().max(2_048);
|
|
10
|
+
|
|
11
|
+
export const McpOAuthClientRegistrationRequest = z.object({
|
|
12
|
+
redirect_uris: z.array(RedirectUri).min(1).max(16),
|
|
13
|
+
client_name: z.string().trim().min(1).max(200).optional(),
|
|
14
|
+
application_type: z.enum(["native", "web"]).optional(),
|
|
15
|
+
token_endpoint_auth_method: z.literal("none").default("none"),
|
|
16
|
+
scope: z.literal(MCP_OAUTH_SCOPE).optional(),
|
|
17
|
+
grant_types: z
|
|
18
|
+
.array(z.enum(["authorization_code", "refresh_token"]))
|
|
19
|
+
.min(1)
|
|
20
|
+
.max(2)
|
|
21
|
+
.refine((grantTypes) => grantTypes.includes("authorization_code"), {
|
|
22
|
+
message: "authorization_code grant is required",
|
|
23
|
+
})
|
|
24
|
+
.default(["authorization_code", "refresh_token"]),
|
|
25
|
+
response_types: z.array(z.literal("code")).min(1).max(1).default(["code"]),
|
|
26
|
+
});
|
|
27
|
+
export type McpOAuthClientRegistrationRequest = z.infer<typeof McpOAuthClientRegistrationRequest>;
|
|
28
|
+
|
|
29
|
+
export const McpOAuthClientRegistrationResponse = McpOAuthClientRegistrationRequest.extend({
|
|
30
|
+
client_id: z.string().min(1).max(256),
|
|
31
|
+
client_id_issued_at: z.number().int().nonnegative(),
|
|
32
|
+
});
|
|
33
|
+
export type McpOAuthClientRegistrationResponse = z.infer<typeof McpOAuthClientRegistrationResponse>;
|
|
34
|
+
|
|
35
|
+
export const McpOAuthTokenResponse = z.object({
|
|
36
|
+
access_token: z.string().min(1),
|
|
37
|
+
token_type: z.literal("Bearer"),
|
|
38
|
+
expires_in: z.number().int().positive(),
|
|
39
|
+
refresh_token: z.string().min(1).optional(),
|
|
40
|
+
scope: z.literal(MCP_OAUTH_SCOPE),
|
|
41
|
+
});
|
|
42
|
+
export type McpOAuthTokenResponse = z.infer<typeof McpOAuthTokenResponse>;
|
|
43
|
+
|
|
44
|
+
export const McpOAuthProtectedResourceMetadata = z.object({
|
|
45
|
+
resource: z.string().url(),
|
|
46
|
+
authorization_servers: z.array(z.string().url()).min(1).max(1),
|
|
47
|
+
scopes_supported: z.array(z.literal(MCP_OAUTH_SCOPE)).length(1),
|
|
48
|
+
bearer_methods_supported: z.array(z.literal("header")).length(1),
|
|
49
|
+
});
|
|
50
|
+
export type McpOAuthProtectedResourceMetadata = z.infer<typeof McpOAuthProtectedResourceMetadata>;
|
|
51
|
+
|
|
52
|
+
export const McpOAuthAuthorizationServerMetadata = z.object({
|
|
53
|
+
issuer: z.string().url(),
|
|
54
|
+
authorization_endpoint: z.string().url(),
|
|
55
|
+
token_endpoint: z.string().url(),
|
|
56
|
+
registration_endpoint: z.string().url(),
|
|
57
|
+
response_types_supported: z.array(z.literal("code")).length(1),
|
|
58
|
+
grant_types_supported: z.array(z.enum(["authorization_code", "refresh_token"])).length(2),
|
|
59
|
+
code_challenge_methods_supported: z.array(z.literal("S256")).length(1),
|
|
60
|
+
token_endpoint_auth_methods_supported: z.array(z.literal("none")).length(1),
|
|
61
|
+
scopes_supported: z.array(z.literal(MCP_OAUTH_SCOPE)).length(1),
|
|
62
|
+
authorization_response_iss_parameter_supported: z.literal(true),
|
|
63
|
+
});
|
|
64
|
+
export type McpOAuthAuthorizationServerMetadata = z.infer<
|
|
65
|
+
typeof McpOAuthAuthorizationServerMetadata
|
|
66
|
+
>;
|