@opengeni/contracts 0.44.1 → 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 +27 -11
- 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/canonical-human-identities.d.ts +157 -0
- package/dist/canonical-human-identities.js +23 -0
- package/dist/canonical-human-identities.js.map +1 -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-52SGB2QO.js → chunk-5IXYF6XN.js} +50 -10
- 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-GRG7PHWQ.js +25 -0
- package/dist/chunk-GRG7PHWQ.js.map +1 -0
- package/dist/chunk-JUFK3T4Q.js +80 -0
- package/dist/chunk-JUFK3T4Q.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-H5BVCZKF.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-FJBG5E4O.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/codex-provider-account-authority.d.ts +23 -0
- package/dist/codex-provider-account-authority.js +23 -0
- package/dist/codex-provider-account-authority.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 +19 -9
- 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 +48 -36
- 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 +91 -15
- 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 +27574 -5374
- package/dist/index.js +2531 -177
- 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 +1752 -13
- package/dist/knowledge-entries.d.ts +982 -0
- package/dist/knowledge-preparation.d.ts +237 -0
- package/dist/knowledge.d.ts +740 -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/slack-task-policy.d.ts +294 -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 +169 -0
- 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 +51 -0
- package/dist/video-generation.js +9 -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 +26 -0
- package/dist/xai-provider-account-authority.js +9 -0
- package/dist/xai-provider-account-authority.js.map +1 -0
- package/package.json +146 -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/canonical-human-identities.ts +93 -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/codex-provider-account-authority.ts +37 -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 +8019 -1799
- package/src/insights-usage.ts +679 -0
- package/src/interaction.ts +1102 -6
- package/src/knowledge-entries.ts +375 -0
- package/src/knowledge-preparation.ts +50 -0
- package/src/knowledge.ts +335 -0
- 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/slack-task-policy.ts +215 -0
- package/src/spreadsheet-artifact-commands.ts +12 -13
- package/src/subscription-account-pools.ts +44 -0
- package/src/task-notes.ts +105 -0
- package/src/tool-catalog.ts +155 -0
- package/src/tool-result-spill.ts +35 -0
- package/src/usage-allowances.ts +187 -0
- package/src/video-generation.ts +43 -6
- 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 +38 -0
- package/dist/chunk-52SGB2QO.js.map +0 -1
- 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-FJBG5E4O.js.map +0 -1
- package/dist/chunk-H5BVCZKF.js.map +0 -1
- package/dist/chunk-LSB7GRLG.js.map +0 -1
- package/dist/chunk-TZ6YEYN4.js.map +0 -1
- package/dist/chunk-VA22KRHS.js +0 -15177
- package/dist/chunk-VA22KRHS.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,139 @@
|
|
|
1
|
+
// src/organization-recovery.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var Uuid = z.string().uuid();
|
|
4
|
+
var Timestamp = z.string().datetime({ offset: true });
|
|
5
|
+
var OrganizationRecoveryPolicyState = z.enum([
|
|
6
|
+
"pending_acceptance",
|
|
7
|
+
"active",
|
|
8
|
+
"degraded",
|
|
9
|
+
"superseded",
|
|
10
|
+
"disabled"
|
|
11
|
+
]);
|
|
12
|
+
var OrganizationRecoveryOperationState = z.enum([
|
|
13
|
+
"collecting",
|
|
14
|
+
"cooling",
|
|
15
|
+
"executed",
|
|
16
|
+
"cancelled",
|
|
17
|
+
"expired",
|
|
18
|
+
"superseded"
|
|
19
|
+
]);
|
|
20
|
+
var OrganizationRecoveryUnavailableReason = z.enum([
|
|
21
|
+
"no_policy",
|
|
22
|
+
"pending_acceptance",
|
|
23
|
+
"degraded",
|
|
24
|
+
"disabled",
|
|
25
|
+
"identity_unavailable"
|
|
26
|
+
]);
|
|
27
|
+
var OrganizationRecoveryMemberSummary = z.object({
|
|
28
|
+
membershipId: Uuid,
|
|
29
|
+
name: z.string().trim().min(1).max(1024).nullable(),
|
|
30
|
+
email: z.string().email().max(320).nullable()
|
|
31
|
+
}).strict();
|
|
32
|
+
var OrganizationRecoveryCustodian = OrganizationRecoveryMemberSummary.extend({
|
|
33
|
+
ordinal: z.number().int().min(1).max(3),
|
|
34
|
+
enrollmentState: z.enum(["pending_acceptance", "accepted", "ineligible"]),
|
|
35
|
+
acceptedAt: Timestamp.nullable()
|
|
36
|
+
}).strict();
|
|
37
|
+
var OrganizationRecoveryPolicy = z.object({
|
|
38
|
+
id: Uuid,
|
|
39
|
+
organizationId: Uuid,
|
|
40
|
+
revision: z.number().int().positive(),
|
|
41
|
+
state: OrganizationRecoveryPolicyState,
|
|
42
|
+
custodians: z.array(OrganizationRecoveryCustodian).length(3),
|
|
43
|
+
createdAt: Timestamp,
|
|
44
|
+
updatedAt: Timestamp
|
|
45
|
+
}).strict();
|
|
46
|
+
var OrganizationRecoveryApproval = OrganizationRecoveryMemberSummary.extend({
|
|
47
|
+
approvedAt: Timestamp
|
|
48
|
+
}).strict();
|
|
49
|
+
var OrganizationRecoveryOperation = z.object({
|
|
50
|
+
id: Uuid,
|
|
51
|
+
organizationId: Uuid,
|
|
52
|
+
policyId: Uuid,
|
|
53
|
+
policyRevision: z.number().int().positive(),
|
|
54
|
+
revision: z.number().int().positive(),
|
|
55
|
+
state: OrganizationRecoveryOperationState,
|
|
56
|
+
target: OrganizationRecoveryMemberSummary,
|
|
57
|
+
approvals: z.array(OrganizationRecoveryApproval).max(3),
|
|
58
|
+
approvalCount: z.number().int().min(0).max(3),
|
|
59
|
+
quorumAt: Timestamp.nullable(),
|
|
60
|
+
executableAt: Timestamp.nullable(),
|
|
61
|
+
expiresAt: Timestamp,
|
|
62
|
+
executedAt: Timestamp.nullable(),
|
|
63
|
+
cancelledAt: Timestamp.nullable(),
|
|
64
|
+
notificationJournaled: z.boolean(),
|
|
65
|
+
createdAt: Timestamp,
|
|
66
|
+
updatedAt: Timestamp
|
|
67
|
+
}).strict();
|
|
68
|
+
var OrganizationRecoveryCapabilities = z.object({
|
|
69
|
+
configure: z.boolean(),
|
|
70
|
+
accept: z.boolean(),
|
|
71
|
+
disable: z.boolean(),
|
|
72
|
+
start: z.boolean(),
|
|
73
|
+
approve: z.boolean(),
|
|
74
|
+
cancel: z.boolean(),
|
|
75
|
+
execute: z.boolean()
|
|
76
|
+
}).strict();
|
|
77
|
+
var OrganizationRecoveryOverview = z.object({
|
|
78
|
+
organizationId: Uuid,
|
|
79
|
+
availability: z.enum(["available", "recovery_unavailable"]),
|
|
80
|
+
unavailableReason: OrganizationRecoveryUnavailableReason.nullable(),
|
|
81
|
+
recentReauthenticationAt: Timestamp.nullable(),
|
|
82
|
+
eligibleMembers: z.array(OrganizationRecoveryMemberSummary).max(1e3),
|
|
83
|
+
policy: OrganizationRecoveryPolicy.nullable(),
|
|
84
|
+
operation: OrganizationRecoveryOperation.nullable(),
|
|
85
|
+
capabilities: OrganizationRecoveryCapabilities
|
|
86
|
+
}).strict();
|
|
87
|
+
var ExpectedPolicyRevision = z.number().int().nonnegative();
|
|
88
|
+
var ExpectedOperationRevision = z.number().int().positive();
|
|
89
|
+
var CommandOperationId = Uuid;
|
|
90
|
+
var ConfigureOrganizationRecoveryPolicyRequest = z.object({
|
|
91
|
+
custodianMembershipIds: z.tuple([Uuid, Uuid, Uuid]).superRefine((ids, context) => {
|
|
92
|
+
if (new Set(ids).size !== 3) {
|
|
93
|
+
context.addIssue({
|
|
94
|
+
code: "custom",
|
|
95
|
+
message: "recovery custodians must be three distinct memberships"
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}),
|
|
99
|
+
expectedPolicyRevision: ExpectedPolicyRevision,
|
|
100
|
+
operationId: CommandOperationId
|
|
101
|
+
}).strict();
|
|
102
|
+
var AcceptOrganizationRecoveryCustodyRequest = z.object({
|
|
103
|
+
expectedPolicyRevision: ExpectedPolicyRevision,
|
|
104
|
+
operationId: CommandOperationId
|
|
105
|
+
}).strict();
|
|
106
|
+
var DisableOrganizationRecoveryPolicyRequest = AcceptOrganizationRecoveryCustodyRequest;
|
|
107
|
+
var StartOrganizationRecoveryOperationRequest = z.object({
|
|
108
|
+
targetMembershipId: Uuid,
|
|
109
|
+
expectedPolicyRevision: z.number().int().positive(),
|
|
110
|
+
operationId: CommandOperationId
|
|
111
|
+
}).strict();
|
|
112
|
+
var OrganizationRecoveryOperationCommandRequest = z.object({
|
|
113
|
+
expectedOperationRevision: ExpectedOperationRevision,
|
|
114
|
+
operationId: CommandOperationId
|
|
115
|
+
}).strict();
|
|
116
|
+
var OrganizationRecoveryMutationResponse = z.object({
|
|
117
|
+
replay: z.boolean(),
|
|
118
|
+
overview: OrganizationRecoveryOverview
|
|
119
|
+
}).strict();
|
|
120
|
+
|
|
121
|
+
export {
|
|
122
|
+
OrganizationRecoveryPolicyState,
|
|
123
|
+
OrganizationRecoveryOperationState,
|
|
124
|
+
OrganizationRecoveryUnavailableReason,
|
|
125
|
+
OrganizationRecoveryMemberSummary,
|
|
126
|
+
OrganizationRecoveryCustodian,
|
|
127
|
+
OrganizationRecoveryPolicy,
|
|
128
|
+
OrganizationRecoveryApproval,
|
|
129
|
+
OrganizationRecoveryOperation,
|
|
130
|
+
OrganizationRecoveryCapabilities,
|
|
131
|
+
OrganizationRecoveryOverview,
|
|
132
|
+
ConfigureOrganizationRecoveryPolicyRequest,
|
|
133
|
+
AcceptOrganizationRecoveryCustodyRequest,
|
|
134
|
+
DisableOrganizationRecoveryPolicyRequest,
|
|
135
|
+
StartOrganizationRecoveryOperationRequest,
|
|
136
|
+
OrganizationRecoveryOperationCommandRequest,
|
|
137
|
+
OrganizationRecoveryMutationResponse
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=chunk-BCS7WHCK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/organization-recovery.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst Uuid = z.string().uuid();\nconst Timestamp = z.string().datetime({ offset: true });\n\nexport const OrganizationRecoveryPolicyState = z.enum([\n \"pending_acceptance\",\n \"active\",\n \"degraded\",\n \"superseded\",\n \"disabled\",\n]);\nexport type OrganizationRecoveryPolicyState = z.infer<typeof OrganizationRecoveryPolicyState>;\n\nexport const OrganizationRecoveryOperationState = z.enum([\n \"collecting\",\n \"cooling\",\n \"executed\",\n \"cancelled\",\n \"expired\",\n \"superseded\",\n]);\nexport type OrganizationRecoveryOperationState = z.infer<typeof OrganizationRecoveryOperationState>;\n\nexport const OrganizationRecoveryUnavailableReason = z.enum([\n \"no_policy\",\n \"pending_acceptance\",\n \"degraded\",\n \"disabled\",\n \"identity_unavailable\",\n]);\nexport type OrganizationRecoveryUnavailableReason = z.infer<\n typeof OrganizationRecoveryUnavailableReason\n>;\n\nexport const OrganizationRecoveryMemberSummary = z\n .object({\n membershipId: Uuid,\n name: z.string().trim().min(1).max(1024).nullable(),\n email: z.string().email().max(320).nullable(),\n })\n .strict();\nexport type OrganizationRecoveryMemberSummary = z.infer<typeof OrganizationRecoveryMemberSummary>;\n\nexport const OrganizationRecoveryCustodian = OrganizationRecoveryMemberSummary.extend({\n ordinal: z.number().int().min(1).max(3),\n enrollmentState: z.enum([\"pending_acceptance\", \"accepted\", \"ineligible\"]),\n acceptedAt: Timestamp.nullable(),\n}).strict();\nexport type OrganizationRecoveryCustodian = z.infer<typeof OrganizationRecoveryCustodian>;\n\nexport const OrganizationRecoveryPolicy = z\n .object({\n id: Uuid,\n organizationId: Uuid,\n revision: z.number().int().positive(),\n state: OrganizationRecoveryPolicyState,\n custodians: z.array(OrganizationRecoveryCustodian).length(3),\n createdAt: Timestamp,\n updatedAt: Timestamp,\n })\n .strict();\nexport type OrganizationRecoveryPolicy = z.infer<typeof OrganizationRecoveryPolicy>;\n\nexport const OrganizationRecoveryApproval = OrganizationRecoveryMemberSummary.extend({\n approvedAt: Timestamp,\n}).strict();\nexport type OrganizationRecoveryApproval = z.infer<typeof OrganizationRecoveryApproval>;\n\nexport const OrganizationRecoveryOperation = z\n .object({\n id: Uuid,\n organizationId: Uuid,\n policyId: Uuid,\n policyRevision: z.number().int().positive(),\n revision: z.number().int().positive(),\n state: OrganizationRecoveryOperationState,\n target: OrganizationRecoveryMemberSummary,\n approvals: z.array(OrganizationRecoveryApproval).max(3),\n approvalCount: z.number().int().min(0).max(3),\n quorumAt: Timestamp.nullable(),\n executableAt: Timestamp.nullable(),\n expiresAt: Timestamp,\n executedAt: Timestamp.nullable(),\n cancelledAt: Timestamp.nullable(),\n notificationJournaled: z.boolean(),\n createdAt: Timestamp,\n updatedAt: Timestamp,\n })\n .strict();\nexport type OrganizationRecoveryOperation = z.infer<typeof OrganizationRecoveryOperation>;\n\nexport const OrganizationRecoveryCapabilities = z\n .object({\n configure: z.boolean(),\n accept: z.boolean(),\n disable: z.boolean(),\n start: z.boolean(),\n approve: z.boolean(),\n cancel: z.boolean(),\n execute: z.boolean(),\n })\n .strict();\nexport type OrganizationRecoveryCapabilities = z.infer<typeof OrganizationRecoveryCapabilities>;\n\nexport const OrganizationRecoveryOverview = z\n .object({\n organizationId: Uuid,\n availability: z.enum([\"available\", \"recovery_unavailable\"]),\n unavailableReason: OrganizationRecoveryUnavailableReason.nullable(),\n recentReauthenticationAt: Timestamp.nullable(),\n eligibleMembers: z.array(OrganizationRecoveryMemberSummary).max(1000),\n policy: OrganizationRecoveryPolicy.nullable(),\n operation: OrganizationRecoveryOperation.nullable(),\n capabilities: OrganizationRecoveryCapabilities,\n })\n .strict();\nexport type OrganizationRecoveryOverview = z.infer<typeof OrganizationRecoveryOverview>;\n\nconst ExpectedPolicyRevision = z.number().int().nonnegative();\nconst ExpectedOperationRevision = z.number().int().positive();\nconst CommandOperationId = Uuid;\n\nexport const ConfigureOrganizationRecoveryPolicyRequest = z\n .object({\n custodianMembershipIds: z.tuple([Uuid, Uuid, Uuid]).superRefine((ids, context) => {\n if (new Set(ids).size !== 3) {\n context.addIssue({\n code: \"custom\",\n message: \"recovery custodians must be three distinct memberships\",\n });\n }\n }),\n expectedPolicyRevision: ExpectedPolicyRevision,\n operationId: CommandOperationId,\n })\n .strict();\nexport type ConfigureOrganizationRecoveryPolicyRequest = z.infer<\n typeof ConfigureOrganizationRecoveryPolicyRequest\n>;\n\nexport const AcceptOrganizationRecoveryCustodyRequest = z\n .object({\n expectedPolicyRevision: ExpectedPolicyRevision,\n operationId: CommandOperationId,\n })\n .strict();\nexport type AcceptOrganizationRecoveryCustodyRequest = z.infer<\n typeof AcceptOrganizationRecoveryCustodyRequest\n>;\n\nexport const DisableOrganizationRecoveryPolicyRequest = AcceptOrganizationRecoveryCustodyRequest;\nexport type DisableOrganizationRecoveryPolicyRequest = z.infer<\n typeof DisableOrganizationRecoveryPolicyRequest\n>;\n\nexport const StartOrganizationRecoveryOperationRequest = z\n .object({\n targetMembershipId: Uuid,\n expectedPolicyRevision: z.number().int().positive(),\n operationId: CommandOperationId,\n })\n .strict();\nexport type StartOrganizationRecoveryOperationRequest = z.infer<\n typeof StartOrganizationRecoveryOperationRequest\n>;\n\nexport const OrganizationRecoveryOperationCommandRequest = z\n .object({\n expectedOperationRevision: ExpectedOperationRevision,\n operationId: CommandOperationId,\n })\n .strict();\nexport type OrganizationRecoveryOperationCommandRequest = z.infer<\n typeof OrganizationRecoveryOperationCommandRequest\n>;\n\nexport const OrganizationRecoveryMutationResponse = z\n .object({\n replay: z.boolean(),\n overview: OrganizationRecoveryOverview,\n })\n .strict();\nexport type OrganizationRecoveryMutationResponse = z.infer<\n typeof OrganizationRecoveryMutationResponse\n>;\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
// src/usage-allowances.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var AllowanceCredits = z.number().int().nonnegative().safe();
|
|
4
|
+
var Version = z.number().int().nonnegative().safe();
|
|
5
|
+
var Timestamp = z.string().datetime({ offset: true });
|
|
6
|
+
var OperationId = z.string().min(1).max(256).refine(
|
|
7
|
+
(value) => value.trim().length > 0 && !value.includes("\0") && !/[\uD800-\uDFFF]/u.test(value) && new TextEncoder().encode(value).byteLength <= 256
|
|
8
|
+
);
|
|
9
|
+
var SubjectId = z.string().min(1).max(1024).refine((value) => !value.includes("\0"));
|
|
10
|
+
var MemberAllowanceRule = z.union([
|
|
11
|
+
z.object({ share: z.number().finite().nonnegative() }).strict(),
|
|
12
|
+
z.object({ credits: AllowanceCredits }).strict(),
|
|
13
|
+
z.null()
|
|
14
|
+
]);
|
|
15
|
+
var MemberAllowanceDefault = z.union([
|
|
16
|
+
z.enum(["none", "equal_share"]),
|
|
17
|
+
z.object({ share: z.number().finite().nonnegative() }).strict(),
|
|
18
|
+
z.object({ credits: AllowanceCredits }).strict()
|
|
19
|
+
]);
|
|
20
|
+
var Thresholds = z.array(z.number().finite().positive().max(1)).max(16);
|
|
21
|
+
var WorkspaceAllowanceConfig = z.object({
|
|
22
|
+
includedCredits: AllowanceCredits,
|
|
23
|
+
period: z.enum(["monthly", "none"]),
|
|
24
|
+
anchorDay: z.number().int().min(1).max(31).optional(),
|
|
25
|
+
memberDefault: MemberAllowanceDefault.optional(),
|
|
26
|
+
thresholds: z.object({ workspace: Thresholds.optional(), member: Thresholds.optional() }).strict().optional()
|
|
27
|
+
}).strict();
|
|
28
|
+
var WorkspaceAllowance = WorkspaceAllowanceConfig.extend({ version: Version.min(1) });
|
|
29
|
+
var WorkspaceAllowanceState = z.object({ version: Version, config: WorkspaceAllowance.nullable() }).strict().refine((state) => state.config === null || state.config.version === state.version, {
|
|
30
|
+
message: "Allowance configuration and lifecycle versions must match",
|
|
31
|
+
path: ["config", "version"]
|
|
32
|
+
});
|
|
33
|
+
var SetWorkspaceAllowanceRequest = WorkspaceAllowanceConfig.extend({
|
|
34
|
+
expectedVersion: Version
|
|
35
|
+
});
|
|
36
|
+
var ClearWorkspaceAllowanceRequest = z.object({ expectedVersion: Version.min(1), operationId: OperationId.optional() }).strict();
|
|
37
|
+
var ClearWorkspaceAllowanceResponse = z.object({ version: Version.min(1) }).strict();
|
|
38
|
+
var GrantWorkspaceCreditsRequest = z.object({
|
|
39
|
+
operationId: OperationId,
|
|
40
|
+
credits: AllowanceCredits.positive(),
|
|
41
|
+
expiresAt: Timestamp.nullable().optional()
|
|
42
|
+
}).strict();
|
|
43
|
+
var WorkspaceCreditGrant = GrantWorkspaceCreditsRequest.extend({
|
|
44
|
+
remaining: AllowanceCredits,
|
|
45
|
+
expiresAt: Timestamp.nullable()
|
|
46
|
+
});
|
|
47
|
+
var SetMemberAllowanceRequest = z.object({
|
|
48
|
+
rule: MemberAllowanceRule,
|
|
49
|
+
expectedVersion: Version
|
|
50
|
+
}).strict();
|
|
51
|
+
var MemberAllowance = z.object({
|
|
52
|
+
subjectId: SubjectId,
|
|
53
|
+
rule: MemberAllowanceRule,
|
|
54
|
+
version: Version
|
|
55
|
+
}).strict();
|
|
56
|
+
var UsageAllowancePeriod = z.union([
|
|
57
|
+
z.literal("current"),
|
|
58
|
+
z.string().regex(/^\d{4}-(0[1-9]|1[0-2])$/)
|
|
59
|
+
]);
|
|
60
|
+
var GetUsageRequest = z.object({
|
|
61
|
+
period: UsageAllowancePeriod.optional(),
|
|
62
|
+
limit: z.number().int().min(1).max(200).optional(),
|
|
63
|
+
cursor: z.string().min(1).max(2048).optional()
|
|
64
|
+
}).strict();
|
|
65
|
+
var GetMyUsageRequest = GetUsageRequest.pick({ period: true });
|
|
66
|
+
var UsageAllowanceStatus = z.enum(["ok", "warning", "exhausted"]);
|
|
67
|
+
var UsageAllowanceWindow = z.object({
|
|
68
|
+
start: Timestamp.nullable(),
|
|
69
|
+
end: Timestamp.nullable()
|
|
70
|
+
}).strict();
|
|
71
|
+
var Usage = z.object({
|
|
72
|
+
limit: AllowanceCredits.nullable(),
|
|
73
|
+
used: AllowanceCredits,
|
|
74
|
+
remaining: z.number().int().safe().nullable(),
|
|
75
|
+
/** Display this ratio rather than raw USD micros in human-facing products. */
|
|
76
|
+
fraction: z.number().finite().nonnegative().nullable(),
|
|
77
|
+
status: UsageAllowanceStatus,
|
|
78
|
+
resetsAt: Timestamp.nullable()
|
|
79
|
+
});
|
|
80
|
+
var WorkspaceAllowanceUsage = Usage.extend({
|
|
81
|
+
includedCredits: AllowanceCredits,
|
|
82
|
+
grantsRemaining: AllowanceCredits
|
|
83
|
+
}).strict();
|
|
84
|
+
var MemberAllowanceUsage = Usage.extend({
|
|
85
|
+
subjectId: SubjectId,
|
|
86
|
+
externalIdentity: z.object({ source: z.string(), externalId: z.string() }).strict().nullable(),
|
|
87
|
+
rule: MemberAllowanceRule,
|
|
88
|
+
version: Version
|
|
89
|
+
}).strict();
|
|
90
|
+
var WorkspaceUsageResponse = z.object({
|
|
91
|
+
period: UsageAllowanceWindow,
|
|
92
|
+
workspace: WorkspaceAllowanceUsage,
|
|
93
|
+
members: z.array(MemberAllowanceUsage),
|
|
94
|
+
nextCursor: z.string().nullable()
|
|
95
|
+
}).strict();
|
|
96
|
+
var AllowanceExhaustedRefusal = z.object({
|
|
97
|
+
code: z.literal("allowance_exhausted"),
|
|
98
|
+
scope: z.enum(["workspace", "member"]),
|
|
99
|
+
resetsAt: Timestamp.nullable(),
|
|
100
|
+
subjectId: SubjectId.optional(),
|
|
101
|
+
message: z.string()
|
|
102
|
+
}).strict();
|
|
103
|
+
|
|
104
|
+
export {
|
|
105
|
+
AllowanceCredits,
|
|
106
|
+
MemberAllowanceRule,
|
|
107
|
+
MemberAllowanceDefault,
|
|
108
|
+
WorkspaceAllowanceConfig,
|
|
109
|
+
WorkspaceAllowance,
|
|
110
|
+
WorkspaceAllowanceState,
|
|
111
|
+
SetWorkspaceAllowanceRequest,
|
|
112
|
+
ClearWorkspaceAllowanceRequest,
|
|
113
|
+
ClearWorkspaceAllowanceResponse,
|
|
114
|
+
GrantWorkspaceCreditsRequest,
|
|
115
|
+
WorkspaceCreditGrant,
|
|
116
|
+
SetMemberAllowanceRequest,
|
|
117
|
+
MemberAllowance,
|
|
118
|
+
UsageAllowancePeriod,
|
|
119
|
+
GetUsageRequest,
|
|
120
|
+
GetMyUsageRequest,
|
|
121
|
+
UsageAllowanceStatus,
|
|
122
|
+
UsageAllowanceWindow,
|
|
123
|
+
WorkspaceAllowanceUsage,
|
|
124
|
+
MemberAllowanceUsage,
|
|
125
|
+
WorkspaceUsageResponse,
|
|
126
|
+
AllowanceExhaustedRefusal
|
|
127
|
+
};
|
|
128
|
+
//# sourceMappingURL=chunk-EK7NDGFR.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/usage-allowances.ts"],"sourcesContent":["import { z } from \"zod\";\n\n/** Credit amounts are integer USD micros (1 USD = 1,000,000), never floating-point dollars. */\nexport const AllowanceCredits = z.number().int().nonnegative().safe();\nconst Version = z.number().int().nonnegative().safe();\nconst Timestamp = z.string().datetime({ offset: true });\nconst OperationId = z\n .string()\n .min(1)\n .max(256)\n .refine(\n (value) =>\n value.trim().length > 0 &&\n !value.includes(\"\\0\") &&\n !/[\\uD800-\\uDFFF]/u.test(value) &&\n new TextEncoder().encode(value).byteLength <= 256,\n );\nconst SubjectId = z\n .string()\n .min(1)\n .max(1024)\n .refine((value) => !value.includes(\"\\0\"));\n\n/**\n * A share scales with the current workspace pool, including unexpired grants.\n * Shares may exceed 1 and their sum may exceed 1: they are ceilings, not reserved\n * allocations. Concurrent/in-flight calls can overshoot a ceiling; enforcement\n * happens before the next call, after actual usage is settled.\n * null removes the override and uses the workspace's memberDefault.\n */\nexport const MemberAllowanceRule = z.union([\n z.object({ share: z.number().finite().nonnegative() }).strict(),\n z.object({ credits: AllowanceCredits }).strict(),\n z.null(),\n]);\nexport type MemberAllowanceRule = z.infer<typeof MemberAllowanceRule>;\n\nexport const MemberAllowanceDefault = z.union([\n z.enum([\"none\", \"equal_share\"]),\n z.object({ share: z.number().finite().nonnegative() }).strict(),\n z.object({ credits: AllowanceCredits }).strict(),\n]);\nexport type MemberAllowanceDefault = z.infer<typeof MemberAllowanceDefault>;\n\nconst Thresholds = z.array(z.number().finite().positive().max(1)).max(16);\n/** Omitted threshold lists default to [0.8, 1]. Monthly boundaries are UTC. */\nexport const WorkspaceAllowanceConfig = z\n .object({\n includedCredits: AllowanceCredits,\n period: z.enum([\"monthly\", \"none\"]),\n anchorDay: z.number().int().min(1).max(31).optional(),\n memberDefault: MemberAllowanceDefault.optional(),\n thresholds: z\n .object({ workspace: Thresholds.optional(), member: Thresholds.optional() })\n .strict()\n .optional(),\n })\n .strict();\nexport type WorkspaceAllowanceConfig = z.infer<typeof WorkspaceAllowanceConfig>;\n\nexport const WorkspaceAllowance = WorkspaceAllowanceConfig.extend({ version: Version.min(1) });\nexport type WorkspaceAllowance = z.infer<typeof WorkspaceAllowance>;\n/**\n * Lifecycle version survives clear. version=0 means never configured; a null\n * config with a positive version is cleared. Use this version for recreation.\n * The existing nullable configuration read remains unchanged.\n */\nexport const WorkspaceAllowanceState = z\n .object({ version: Version, config: WorkspaceAllowance.nullable() })\n .strict()\n .refine((state) => state.config === null || state.config.version === state.version, {\n message: \"Allowance configuration and lifecycle versions must match\",\n path: [\"config\", \"version\"],\n });\nexport type WorkspaceAllowanceState = z.infer<typeof WorkspaceAllowanceState>;\nexport const SetWorkspaceAllowanceRequest = WorkspaceAllowanceConfig.extend({\n expectedVersion: Version,\n});\nexport type SetWorkspaceAllowanceRequest = z.infer<typeof SetWorkspaceAllowanceRequest>;\n/** Reuse operationId and the exact expectedVersion to recover a lost clear\n * receipt. A later lifecycle change conflicts; read the state before deciding\n * on a new mutation, never guess a version or change it for a retry. */\nexport const ClearWorkspaceAllowanceRequest = z\n .object({ expectedVersion: Version.min(1), operationId: OperationId.optional() })\n .strict();\nexport type ClearWorkspaceAllowanceRequest = z.infer<typeof ClearWorkspaceAllowanceRequest>;\nexport const ClearWorkspaceAllowanceResponse = z.object({ version: Version.min(1) }).strict();\nexport type ClearWorkspaceAllowanceResponse = z.infer<typeof ClearWorkspaceAllowanceResponse>;\n\n/** Reuse the operationId and exact request to recover an uncertain grant response. */\nexport const GrantWorkspaceCreditsRequest = z\n .object({\n operationId: OperationId,\n credits: AllowanceCredits.positive(),\n expiresAt: Timestamp.nullable().optional(),\n })\n .strict();\nexport type GrantWorkspaceCreditsRequest = z.infer<typeof GrantWorkspaceCreditsRequest>;\nexport const WorkspaceCreditGrant = GrantWorkspaceCreditsRequest.extend({\n remaining: AllowanceCredits,\n expiresAt: Timestamp.nullable(),\n});\nexport type WorkspaceCreditGrant = z.infer<typeof WorkspaceCreditGrant>;\n\nexport const SetMemberAllowanceRequest = z\n .object({\n rule: MemberAllowanceRule,\n expectedVersion: Version,\n })\n .strict();\nexport type SetMemberAllowanceRequest = z.infer<typeof SetMemberAllowanceRequest>;\nexport const MemberAllowance = z\n .object({\n subjectId: SubjectId,\n rule: MemberAllowanceRule,\n version: Version,\n })\n .strict();\nexport type MemberAllowance = z.infer<typeof MemberAllowance>;\n\nexport const UsageAllowancePeriod = z.union([\n z.literal(\"current\"),\n z.string().regex(/^\\d{4}-(0[1-9]|1[0-2])$/),\n]);\nexport type UsageAllowancePeriod = z.infer<typeof UsageAllowancePeriod>;\nexport const GetUsageRequest = z\n .object({\n period: UsageAllowancePeriod.optional(),\n limit: z.number().int().min(1).max(200).optional(),\n cursor: z.string().min(1).max(2048).optional(),\n })\n .strict();\nexport type GetUsageRequest = z.infer<typeof GetUsageRequest>;\nexport const GetMyUsageRequest = GetUsageRequest.pick({ period: true });\nexport type GetMyUsageRequest = z.infer<typeof GetMyUsageRequest>;\n\nexport const UsageAllowanceStatus = z.enum([\"ok\", \"warning\", \"exhausted\"]);\nexport type UsageAllowanceStatus = z.infer<typeof UsageAllowanceStatus>;\nexport const UsageAllowanceWindow = z\n .object({\n start: Timestamp.nullable(),\n end: Timestamp.nullable(),\n })\n .strict();\nexport type UsageAllowanceWindow = z.infer<typeof UsageAllowanceWindow>;\nconst Usage = z.object({\n limit: AllowanceCredits.nullable(),\n used: AllowanceCredits,\n remaining: z.number().int().safe().nullable(),\n /** Display this ratio rather than raw USD micros in human-facing products. */\n fraction: z.number().finite().nonnegative().nullable(),\n status: UsageAllowanceStatus,\n resetsAt: Timestamp.nullable(),\n});\nexport const WorkspaceAllowanceUsage = Usage.extend({\n includedCredits: AllowanceCredits,\n grantsRemaining: AllowanceCredits,\n}).strict();\nexport type WorkspaceAllowanceUsage = z.infer<typeof WorkspaceAllowanceUsage>;\nexport const MemberAllowanceUsage = Usage.extend({\n subjectId: SubjectId,\n externalIdentity: z.object({ source: z.string(), externalId: z.string() }).strict().nullable(),\n rule: MemberAllowanceRule,\n version: Version,\n}).strict();\nexport type MemberAllowanceUsage = z.infer<typeof MemberAllowanceUsage>;\n/** /usage/me returns only the authenticated subject's member row, never the roster. */\nexport const WorkspaceUsageResponse = z\n .object({\n period: UsageAllowanceWindow,\n workspace: WorkspaceAllowanceUsage,\n members: z.array(MemberAllowanceUsage),\n nextCursor: z.string().nullable(),\n })\n .strict();\nexport type WorkspaceUsageResponse = z.infer<typeof WorkspaceUsageResponse>;\n\nexport const AllowanceExhaustedRefusal = z\n .object({\n code: z.literal(\"allowance_exhausted\"),\n scope: z.enum([\"workspace\", \"member\"]),\n resetsAt: Timestamp.nullable(),\n subjectId: SubjectId.optional(),\n message: z.string(),\n })\n .strict();\nexport type AllowanceExhaustedRefusal = z.infer<typeof AllowanceExhaustedRefusal>;\n"],"mappings":";AAAA,SAAS,SAAS;AAGX,IAAM,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK;AACpE,IAAM,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK;AACpD,IAAM,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,KAAK,CAAC;AACtD,IAAM,cAAc,EACjB,OAAO,EACP,IAAI,CAAC,EACL,IAAI,GAAG,EACP;AAAA,EACC,CAAC,UACC,MAAM,KAAK,EAAE,SAAS,KACtB,CAAC,MAAM,SAAS,IAAI,KACpB,CAAC,mBAAmB,KAAK,KAAK,KAC9B,IAAI,YAAY,EAAE,OAAO,KAAK,EAAE,cAAc;AAClD;AACF,IAAM,YAAY,EACf,OAAO,EACP,IAAI,CAAC,EACL,IAAI,IAAI,EACR,OAAO,CAAC,UAAU,CAAC,MAAM,SAAS,IAAI,CAAC;AASnC,IAAM,sBAAsB,EAAE,MAAM;AAAA,EACzC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO;AAAA,EAC9D,EAAE,OAAO,EAAE,SAAS,iBAAiB,CAAC,EAAE,OAAO;AAAA,EAC/C,EAAE,KAAK;AACT,CAAC;AAGM,IAAM,yBAAyB,EAAE,MAAM;AAAA,EAC5C,EAAE,KAAK,CAAC,QAAQ,aAAa,CAAC;AAAA,EAC9B,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO;AAAA,EAC9D,EAAE,OAAO,EAAE,SAAS,iBAAiB,CAAC,EAAE,OAAO;AACjD,CAAC;AAGD,IAAM,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE;AAEjE,IAAM,2BAA2B,EACrC,OAAO;AAAA,EACN,iBAAiB;AAAA,EACjB,QAAQ,EAAE,KAAK,CAAC,WAAW,MAAM,CAAC;AAAA,EAClC,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS;AAAA,EACpD,eAAe,uBAAuB,SAAS;AAAA,EAC/C,YAAY,EACT,OAAO,EAAE,WAAW,WAAW,SAAS,GAAG,QAAQ,WAAW,SAAS,EAAE,CAAC,EAC1E,OAAO,EACP,SAAS;AACd,CAAC,EACA,OAAO;AAGH,IAAM,qBAAqB,yBAAyB,OAAO,EAAE,SAAS,QAAQ,IAAI,CAAC,EAAE,CAAC;AAOtF,IAAM,0BAA0B,EACpC,OAAO,EAAE,SAAS,SAAS,QAAQ,mBAAmB,SAAS,EAAE,CAAC,EAClE,OAAO,EACP,OAAO,CAAC,UAAU,MAAM,WAAW,QAAQ,MAAM,OAAO,YAAY,MAAM,SAAS;AAAA,EAClF,SAAS;AAAA,EACT,MAAM,CAAC,UAAU,SAAS;AAC5B,CAAC;AAEI,IAAM,+BAA+B,yBAAyB,OAAO;AAAA,EAC1E,iBAAiB;AACnB,CAAC;AAKM,IAAM,iCAAiC,EAC3C,OAAO,EAAE,iBAAiB,QAAQ,IAAI,CAAC,GAAG,aAAa,YAAY,SAAS,EAAE,CAAC,EAC/E,OAAO;AAEH,IAAM,kCAAkC,EAAE,OAAO,EAAE,SAAS,QAAQ,IAAI,CAAC,EAAE,CAAC,EAAE,OAAO;AAIrF,IAAM,+BAA+B,EACzC,OAAO;AAAA,EACN,aAAa;AAAA,EACb,SAAS,iBAAiB,SAAS;AAAA,EACnC,WAAW,UAAU,SAAS,EAAE,SAAS;AAC3C,CAAC,EACA,OAAO;AAEH,IAAM,uBAAuB,6BAA6B,OAAO;AAAA,EACtE,WAAW;AAAA,EACX,WAAW,UAAU,SAAS;AAChC,CAAC;AAGM,IAAM,4BAA4B,EACtC,OAAO;AAAA,EACN,MAAM;AAAA,EACN,iBAAiB;AACnB,CAAC,EACA,OAAO;AAEH,IAAM,kBAAkB,EAC5B,OAAO;AAAA,EACN,WAAW;AAAA,EACX,MAAM;AAAA,EACN,SAAS;AACX,CAAC,EACA,OAAO;AAGH,IAAM,uBAAuB,EAAE,MAAM;AAAA,EAC1C,EAAE,QAAQ,SAAS;AAAA,EACnB,EAAE,OAAO,EAAE,MAAM,yBAAyB;AAC5C,CAAC;AAEM,IAAM,kBAAkB,EAC5B,OAAO;AAAA,EACN,QAAQ,qBAAqB,SAAS;AAAA,EACtC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG,EAAE,SAAS;AAAA,EACjD,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,SAAS;AAC/C,CAAC,EACA,OAAO;AAEH,IAAM,oBAAoB,gBAAgB,KAAK,EAAE,QAAQ,KAAK,CAAC;AAG/D,IAAM,uBAAuB,EAAE,KAAK,CAAC,MAAM,WAAW,WAAW,CAAC;AAElE,IAAM,uBAAuB,EACjC,OAAO;AAAA,EACN,OAAO,UAAU,SAAS;AAAA,EAC1B,KAAK,UAAU,SAAS;AAC1B,CAAC,EACA,OAAO;AAEV,IAAM,QAAQ,EAAE,OAAO;AAAA,EACrB,OAAO,iBAAiB,SAAS;AAAA,EACjC,MAAM;AAAA,EACN,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS;AAAA;AAAA,EAE5C,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS;AAAA,EACrD,QAAQ;AAAA,EACR,UAAU,UAAU,SAAS;AAC/B,CAAC;AACM,IAAM,0BAA0B,MAAM,OAAO;AAAA,EAClD,iBAAiB;AAAA,EACjB,iBAAiB;AACnB,CAAC,EAAE,OAAO;AAEH,IAAM,uBAAuB,MAAM,OAAO;AAAA,EAC/C,WAAW;AAAA,EACX,kBAAkB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,GAAG,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS;AAAA,EAC7F,MAAM;AAAA,EACN,SAAS;AACX,CAAC,EAAE,OAAO;AAGH,IAAM,yBAAyB,EACnC,OAAO;AAAA,EACN,QAAQ;AAAA,EACR,WAAW;AAAA,EACX,SAAS,EAAE,MAAM,oBAAoB;AAAA,EACrC,YAAY,EAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA,OAAO;AAGH,IAAM,4BAA4B,EACtC,OAAO;AAAA,EACN,MAAM,EAAE,QAAQ,qBAAqB;AAAA,EACrC,OAAO,EAAE,KAAK,CAAC,aAAa,QAAQ,CAAC;AAAA,EACrC,UAAU,UAAU,SAAS;AAAA,EAC7B,WAAW,UAAU,SAAS;AAAA,EAC9B,SAAS,EAAE,OAAO;AACpB,CAAC,EACA,OAAO;","names":[]}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import {
|
|
2
|
+
OPENGENI_SLACK_REST_USER_SCOPES
|
|
3
|
+
} from "./chunk-MZLBPKFE.js";
|
|
4
|
+
|
|
1
5
|
// src/slack-bot-scopes.ts
|
|
2
6
|
var OPENGENI_SLACK_BOT_REQUIRED_SCOPES = [
|
|
3
7
|
"app_mentions:read",
|
|
@@ -17,11 +21,25 @@ var OPENGENI_SLACK_BOT_REQUIRED_SCOPES = [
|
|
|
17
21
|
"users:read"
|
|
18
22
|
];
|
|
19
23
|
var OPENGENI_SLACK_REACTION_REQUIRED_SCOPE = "reactions:read";
|
|
24
|
+
var OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE = "files:write";
|
|
25
|
+
var OPENGENI_SLACK_BOT_SEARCH_SCOPES = [
|
|
26
|
+
"search:read.public",
|
|
27
|
+
"search:read.files",
|
|
28
|
+
"search:read.users"
|
|
29
|
+
];
|
|
20
30
|
var OPENGENI_SLACK_BOT_REQUESTED_SCOPES = [
|
|
21
31
|
...OPENGENI_SLACK_BOT_REQUIRED_SCOPES,
|
|
22
|
-
OPENGENI_SLACK_REACTION_REQUIRED_SCOPE
|
|
32
|
+
OPENGENI_SLACK_REACTION_REQUIRED_SCOPE,
|
|
33
|
+
OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE
|
|
23
34
|
];
|
|
35
|
+
function openGeniSlackBotRequestedScopes(mode = "limited") {
|
|
36
|
+
return [
|
|
37
|
+
...OPENGENI_SLACK_BOT_REQUESTED_SCOPES,
|
|
38
|
+
...mode === "full" ? OPENGENI_SLACK_BOT_SEARCH_SCOPES : []
|
|
39
|
+
];
|
|
40
|
+
}
|
|
24
41
|
var OPENGENI_SLACK_BOT_EVENTS = [
|
|
42
|
+
"app_home_opened",
|
|
25
43
|
"app_mention",
|
|
26
44
|
"message.channels",
|
|
27
45
|
"message.groups",
|
|
@@ -29,34 +47,24 @@ var OPENGENI_SLACK_BOT_EVENTS = [
|
|
|
29
47
|
"message.mpim",
|
|
30
48
|
"reaction_added"
|
|
31
49
|
];
|
|
32
|
-
var OPENGENI_SLACK_MCP_USER_SCOPES =
|
|
33
|
-
"search:read.public",
|
|
34
|
-
"search:read.private",
|
|
35
|
-
"search:read.mpim",
|
|
36
|
-
"search:read.im",
|
|
37
|
-
"search:read.files",
|
|
38
|
-
"files:read",
|
|
39
|
-
"emoji:read",
|
|
40
|
-
"search:read.users",
|
|
41
|
-
"chat:write",
|
|
42
|
-
"channels:history",
|
|
43
|
-
"groups:history",
|
|
44
|
-
"mpim:history",
|
|
45
|
-
"im:history",
|
|
46
|
-
"channels:write",
|
|
47
|
-
"groups:write",
|
|
48
|
-
"im:write",
|
|
49
|
-
"mpim:write",
|
|
50
|
-
"reactions:write",
|
|
51
|
-
"canvases:read",
|
|
52
|
-
"canvases:write",
|
|
53
|
-
"users:read",
|
|
54
|
-
"users:read.email",
|
|
55
|
-
"channels:read",
|
|
56
|
-
"groups:read",
|
|
57
|
-
"mpim:read"
|
|
58
|
-
];
|
|
50
|
+
var OPENGENI_SLACK_MCP_USER_SCOPES = OPENGENI_SLACK_REST_USER_SCOPES;
|
|
59
51
|
var OPENGENI_MANAGED_PUBLIC_BASE_URL = "https://app.opengeni.ai";
|
|
52
|
+
function normalizedSlackManifestText(value, fallback, label, maxLength) {
|
|
53
|
+
const normalized = value?.trim() || fallback;
|
|
54
|
+
if (normalized.length > maxLength || /[\r\n\0]/u.test(normalized)) {
|
|
55
|
+
throw new Error(`Slack bot manifest ${label} must be at most ${maxLength} plain characters`);
|
|
56
|
+
}
|
|
57
|
+
return normalized;
|
|
58
|
+
}
|
|
59
|
+
function normalizedSlackCommand(value) {
|
|
60
|
+
const command = value?.trim() || "/opengeni";
|
|
61
|
+
if (!/^\/[a-z0-9_-]{1,31}$/u.test(command)) {
|
|
62
|
+
throw new Error(
|
|
63
|
+
"Slack bot manifest slash command must start with / and contain at most 31 lowercase letters, digits, hyphens, or underscores"
|
|
64
|
+
);
|
|
65
|
+
}
|
|
66
|
+
return command;
|
|
67
|
+
}
|
|
60
68
|
function normalizedSlackManifestBaseUrl(publicBaseUrl) {
|
|
61
69
|
const parsed = new URL(publicBaseUrl);
|
|
62
70
|
if (parsed.protocol !== "https:" || parsed.username || parsed.password) {
|
|
@@ -67,16 +75,35 @@ function normalizedSlackManifestBaseUrl(publicBaseUrl) {
|
|
|
67
75
|
parsed.pathname = parsed.pathname.replace(/\/+$/, "");
|
|
68
76
|
return parsed.toString().replace(/\/$/, "");
|
|
69
77
|
}
|
|
70
|
-
function buildOpenGeniSlackBotManifest(publicBaseUrl) {
|
|
78
|
+
function buildOpenGeniSlackBotManifest(publicBaseUrl, options = {}) {
|
|
71
79
|
const baseUrl = normalizedSlackManifestBaseUrl(publicBaseUrl);
|
|
80
|
+
const appName = normalizedSlackManifestText(options.appName, "OpenGeni", "app name", 35);
|
|
81
|
+
const botDisplayName = normalizedSlackManifestText(
|
|
82
|
+
options.botDisplayName,
|
|
83
|
+
"OpenGeni",
|
|
84
|
+
"bot display name",
|
|
85
|
+
80
|
|
86
|
+
);
|
|
87
|
+
const slashCommand = normalizedSlackCommand(options.slashCommand);
|
|
88
|
+
const shortcutName = normalizedSlackManifestText(
|
|
89
|
+
options.shortcutName,
|
|
90
|
+
"Open in Opengeni",
|
|
91
|
+
"shortcut name",
|
|
92
|
+
35
|
|
93
|
+
);
|
|
72
94
|
return {
|
|
73
|
-
display_information: { name:
|
|
95
|
+
display_information: { name: appName },
|
|
74
96
|
features: {
|
|
75
|
-
|
|
97
|
+
app_home: {
|
|
98
|
+
home_tab_enabled: true,
|
|
99
|
+
messages_tab_enabled: true,
|
|
100
|
+
messages_tab_read_only_enabled: false
|
|
101
|
+
},
|
|
102
|
+
bot_user: { display_name: botDisplayName, always_online: false },
|
|
76
103
|
slash_commands: [
|
|
77
104
|
{
|
|
78
|
-
command:
|
|
79
|
-
description: "Start an
|
|
105
|
+
command: slashCommand,
|
|
106
|
+
description: "Start an Opengeni task in this channel",
|
|
80
107
|
should_escape: false,
|
|
81
108
|
url: `${baseUrl}/v1/integrations/slack/commands`
|
|
82
109
|
}
|
|
@@ -84,8 +111,8 @@ function buildOpenGeniSlackBotManifest(publicBaseUrl) {
|
|
|
84
111
|
shortcuts: [
|
|
85
112
|
{
|
|
86
113
|
callback_id: "opengeni_message",
|
|
87
|
-
description: "Start an
|
|
88
|
-
name:
|
|
114
|
+
description: "Start an Opengeni task from this Slack message",
|
|
115
|
+
name: shortcutName,
|
|
89
116
|
type: "message"
|
|
90
117
|
}
|
|
91
118
|
]
|
|
@@ -96,7 +123,7 @@ function buildOpenGeniSlackBotManifest(publicBaseUrl) {
|
|
|
96
123
|
`${baseUrl}/v1/integrations/slack/callback`
|
|
97
124
|
],
|
|
98
125
|
scopes: {
|
|
99
|
-
bot:
|
|
126
|
+
bot: openGeniSlackBotRequestedScopes(options.accessMode),
|
|
100
127
|
user: [...OPENGENI_SLACK_MCP_USER_SCOPES]
|
|
101
128
|
}
|
|
102
129
|
},
|
|
@@ -118,8 +145,16 @@ function buildOpenGeniSlackBotManifest(publicBaseUrl) {
|
|
|
118
145
|
}
|
|
119
146
|
var OPENGENI_SLACK_BOT_SAFE_OPTIONAL_SCOPES = [
|
|
120
147
|
"team:read",
|
|
121
|
-
OPENGENI_SLACK_REACTION_REQUIRED_SCOPE
|
|
148
|
+
OPENGENI_SLACK_REACTION_REQUIRED_SCOPE,
|
|
149
|
+
OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE,
|
|
150
|
+
...OPENGENI_SLACK_BOT_SEARCH_SCOPES
|
|
122
151
|
];
|
|
152
|
+
function hasOpenGeniSlackFileUploadScope(grantedScopes) {
|
|
153
|
+
return grantedScopes.includes(OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE);
|
|
154
|
+
}
|
|
155
|
+
function hasOpenGeniSlackBotSearchScopes(grantedScopes) {
|
|
156
|
+
return OPENGENI_SLACK_BOT_SEARCH_SCOPES.every((scope) => grantedScopes.includes(scope));
|
|
157
|
+
}
|
|
123
158
|
var OPENGENI_SLACK_BOT_FORBIDDEN_SCOPES = ["channels:join", "chat:write.public"];
|
|
124
159
|
function isOpenGeniSlackBotScopeAllowed(scope) {
|
|
125
160
|
return OPENGENI_SLACK_BOT_REQUIRED_SCOPES.includes(scope) || OPENGENI_SLACK_BOT_SAFE_OPTIONAL_SCOPES.includes(scope);
|
|
@@ -144,15 +179,20 @@ function evaluateOpenGeniSlackBotScopes(grantedScopes) {
|
|
|
144
179
|
export {
|
|
145
180
|
OPENGENI_SLACK_BOT_REQUIRED_SCOPES,
|
|
146
181
|
OPENGENI_SLACK_REACTION_REQUIRED_SCOPE,
|
|
182
|
+
OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE,
|
|
183
|
+
OPENGENI_SLACK_BOT_SEARCH_SCOPES,
|
|
147
184
|
OPENGENI_SLACK_BOT_REQUESTED_SCOPES,
|
|
185
|
+
openGeniSlackBotRequestedScopes,
|
|
148
186
|
OPENGENI_SLACK_BOT_EVENTS,
|
|
149
187
|
OPENGENI_SLACK_MCP_USER_SCOPES,
|
|
150
188
|
OPENGENI_MANAGED_PUBLIC_BASE_URL,
|
|
151
189
|
buildOpenGeniSlackBotManifest,
|
|
152
190
|
OPENGENI_SLACK_BOT_SAFE_OPTIONAL_SCOPES,
|
|
191
|
+
hasOpenGeniSlackFileUploadScope,
|
|
192
|
+
hasOpenGeniSlackBotSearchScopes,
|
|
153
193
|
OPENGENI_SLACK_BOT_FORBIDDEN_SCOPES,
|
|
154
194
|
areOpenGeniSlackBotScopesAccepted,
|
|
155
195
|
hasOpenGeniSlackReactionScope,
|
|
156
196
|
evaluateOpenGeniSlackBotScopes
|
|
157
197
|
};
|
|
158
|
-
//# sourceMappingURL=chunk-
|
|
198
|
+
//# sourceMappingURL=chunk-FZ6BXQHL.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/slack-bot-scopes.ts"],"sourcesContent":["import { OPENGENI_SLACK_REST_USER_SCOPES } from \"./slack-rest-mcp\";\n\nexport const OPENGENI_SLACK_BOT_REQUIRED_SCOPES = [\n \"app_mentions:read\",\n \"canvases:read\",\n \"channels:history\",\n \"channels:read\",\n \"chat:write\",\n \"commands\",\n \"files:read\",\n \"groups:history\",\n \"groups:read\",\n \"im:history\",\n \"im:read\",\n \"im:write\",\n \"mpim:history\",\n \"mpim:read\",\n \"users:read\",\n] as const;\n\n/** Read-only scope needed only for the optional emoji-reaction summon surface. */\nexport const OPENGENI_SLACK_REACTION_REQUIRED_SCOPE = \"reactions:read\" as const;\n\n/** Optional grant for explicit retained-file delivery to a task's Slack thread. */\nexport const OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE = \"files:write\" as const;\n\n/**\n * Bot-token search scopes for Slack's Real-time Search API\n * (`assistant.search.context`). Slack accepts these as BOT scopes, so\n * workspace-wide public search runs under the bot identity and never needs a\n * human proxy token. Private-channel, DM, and MPIM search remain user-token\n * only and belong exclusively to the personal hosted-MCP grant.\n */\nexport const OPENGENI_SLACK_BOT_SEARCH_SCOPES = [\n \"search:read.public\",\n \"search:read.files\",\n \"search:read.users\",\n] as const;\n\n/**\n * Scopes requested by the managed and generated self-hosted manifests.\n *\n * `reactions:read`, `files:write`, and the bot search scopes are not part of the\n * base eligibility contract: legacy installations may continue using existing\n * Slack interactions and tools while the reaction setting stays disabled, bot\n * search and file delivery stay unavailable, and the tools ask an admin to reinstall.\n */\nexport const OPENGENI_SLACK_BOT_REQUESTED_SCOPES = [\n ...OPENGENI_SLACK_BOT_REQUIRED_SCOPES,\n OPENGENI_SLACK_REACTION_REQUIRED_SCOPE,\n OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE,\n] as const;\n\nexport function openGeniSlackBotRequestedScopes(mode: \"limited\" | \"full\" = \"limited\"): string[] {\n return [\n ...OPENGENI_SLACK_BOT_REQUESTED_SCOPES,\n ...(mode === \"full\" ? OPENGENI_SLACK_BOT_SEARCH_SCOPES : []),\n ];\n}\n\nexport const OPENGENI_SLACK_BOT_EVENTS = [\n \"app_home_opened\",\n \"app_mention\",\n \"message.channels\",\n \"message.groups\",\n \"message.im\",\n \"message.mpim\",\n \"reaction_added\",\n] as const;\n\n/** User grants required by the reviewed Slack API MCP tools. */\nexport const OPENGENI_SLACK_MCP_USER_SCOPES = OPENGENI_SLACK_REST_USER_SCOPES;\n\nexport const OPENGENI_MANAGED_PUBLIC_BASE_URL = \"https://app.opengeni.ai\" as const;\n\nexport type OpenGeniSlackBotManifestOptions = Readonly<{\n appName?: string;\n botDisplayName?: string;\n slashCommand?: string;\n shortcutName?: string;\n accessMode?: \"limited\" | \"full\";\n}>;\n\nfunction normalizedSlackManifestText(\n value: string | undefined,\n fallback: string,\n label: string,\n maxLength: number,\n): string {\n const normalized = value?.trim() || fallback;\n if (normalized.length > maxLength || /[\\r\\n\\0]/u.test(normalized)) {\n throw new Error(`Slack bot manifest ${label} must be at most ${maxLength} plain characters`);\n }\n return normalized;\n}\n\nfunction normalizedSlackCommand(value: string | undefined): string {\n const command = value?.trim() || \"/opengeni\";\n if (!/^\\/[a-z0-9_-]{1,31}$/u.test(command)) {\n throw new Error(\n \"Slack bot manifest slash command must start with / and contain at most 31 lowercase letters, digits, hyphens, or underscores\",\n );\n }\n return command;\n}\n\nfunction normalizedSlackManifestBaseUrl(publicBaseUrl: string): string {\n const parsed = new URL(publicBaseUrl);\n if (parsed.protocol !== \"https:\" || parsed.username || parsed.password) {\n throw new Error(\"Slack bot manifest public base URL must be credential-free HTTPS\");\n }\n parsed.hash = \"\";\n parsed.search = \"\";\n parsed.pathname = parsed.pathname.replace(/\\/+$/, \"\");\n return parsed.toString().replace(/\\/$/, \"\");\n}\n\n/** Canonical managed/self-hosted Slack app manifest. Slack accepts JSON manifests. */\nexport function buildOpenGeniSlackBotManifest(\n publicBaseUrl: string,\n options: OpenGeniSlackBotManifestOptions = {},\n) {\n const baseUrl = normalizedSlackManifestBaseUrl(publicBaseUrl);\n const appName = normalizedSlackManifestText(options.appName, \"OpenGeni\", \"app name\", 35);\n const botDisplayName = normalizedSlackManifestText(\n options.botDisplayName,\n \"OpenGeni\",\n \"bot display name\",\n 80,\n );\n const slashCommand = normalizedSlackCommand(options.slashCommand);\n const shortcutName = normalizedSlackManifestText(\n options.shortcutName,\n \"Open in Opengeni\",\n \"shortcut name\",\n 35,\n );\n return {\n display_information: { name: appName },\n features: {\n app_home: {\n home_tab_enabled: true,\n messages_tab_enabled: true,\n messages_tab_read_only_enabled: false,\n },\n bot_user: { display_name: botDisplayName, always_online: false },\n slash_commands: [\n {\n command: slashCommand,\n description: \"Start an Opengeni task in this channel\",\n should_escape: false,\n url: `${baseUrl}/v1/integrations/slack/commands`,\n },\n ],\n shortcuts: [\n {\n callback_id: \"opengeni_message\",\n description: \"Start an Opengeni task from this Slack message\",\n name: shortcutName,\n type: \"message\",\n },\n ],\n },\n oauth_config: {\n redirect_urls: [\n `${baseUrl}/v1/integrations/oauth/callback`,\n `${baseUrl}/v1/integrations/slack/callback`,\n ],\n scopes: {\n bot: openGeniSlackBotRequestedScopes(options.accessMode),\n user: [...OPENGENI_SLACK_MCP_USER_SCOPES],\n },\n },\n settings: {\n event_subscriptions: {\n bot_events: [...OPENGENI_SLACK_BOT_EVENTS],\n request_url: `${baseUrl}/v1/integrations/slack/events`,\n },\n interactivity: {\n is_enabled: true,\n request_url: `${baseUrl}/v1/integrations/slack/interactions`,\n },\n is_mcp_enabled: true,\n org_deploy_enabled: false,\n socket_mode_enabled: false,\n token_rotation_enabled: false,\n },\n } as const;\n}\n\n/**\n * Optional bot grants used by the shipped read/identity and task-file-delivery\n * surfaces. Every other unrequired scope fails closed, including unknown future\n * Slack scopes, so verification, core routing, and UI eligibility cannot drift.\n */\nexport const OPENGENI_SLACK_BOT_SAFE_OPTIONAL_SCOPES = [\n \"team:read\",\n OPENGENI_SLACK_REACTION_REQUIRED_SCOPE,\n OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE,\n ...OPENGENI_SLACK_BOT_SEARCH_SCOPES,\n] as const;\n\nexport function hasOpenGeniSlackFileUploadScope(grantedScopes: readonly string[]): boolean {\n return grantedScopes.includes(OPENGENI_SLACK_FILE_UPLOAD_REQUIRED_SCOPE);\n}\n\nexport function hasOpenGeniSlackBotSearchScopes(grantedScopes: readonly string[]): boolean {\n return OPENGENI_SLACK_BOT_SEARCH_SCOPES.every((scope) => grantedScopes.includes(scope));\n}\n\n/** @deprecated Use evaluateOpenGeniSlackBotScopes; an allowlist is the policy. */\nexport const OPENGENI_SLACK_BOT_FORBIDDEN_SCOPES = [\"channels:join\", \"chat:write.public\"] as const;\n\nexport type OpenGeniSlackBotScopePolicy = {\n accepted: boolean;\n missingRequired: string[];\n unsupported: string[];\n};\n\nfunction isOpenGeniSlackBotScopeAllowed(scope: string): boolean {\n return (\n (OPENGENI_SLACK_BOT_REQUIRED_SCOPES as readonly string[]).includes(scope) ||\n (OPENGENI_SLACK_BOT_SAFE_OPTIONAL_SCOPES as readonly string[]).includes(scope)\n );\n}\n\nexport function areOpenGeniSlackBotScopesAccepted(grantedScopes: readonly string[]): boolean {\n return (\n OPENGENI_SLACK_BOT_REQUIRED_SCOPES.every((scope) => grantedScopes.includes(scope)) &&\n grantedScopes.every(isOpenGeniSlackBotScopeAllowed)\n );\n}\n\nexport function hasOpenGeniSlackReactionScope(grantedScopes: readonly string[]): boolean {\n return grantedScopes.includes(OPENGENI_SLACK_REACTION_REQUIRED_SCOPE);\n}\n\nexport function evaluateOpenGeniSlackBotScopes(\n grantedScopes: readonly string[],\n): OpenGeniSlackBotScopePolicy {\n const granted = new Set(grantedScopes);\n const missingRequired = OPENGENI_SLACK_BOT_REQUIRED_SCOPES.filter((scope) => !granted.has(scope));\n const unsupported = [...granted].filter((scope) => !isOpenGeniSlackBotScopeAllowed(scope)).sort();\n return {\n accepted: areOpenGeniSlackBotScopesAccepted(grantedScopes),\n missingRequired,\n unsupported,\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
// src/xai-provider-account-authority.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
|
|
4
|
+
var XaiProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion("scope", [
|
|
5
|
+
z.object({ version: z.literal(1), scope: z.literal("organization") }).strict(),
|
|
6
|
+
z.object({
|
|
7
|
+
version: z.literal(1),
|
|
8
|
+
scope: z.literal("workspace")
|
|
9
|
+
}).strict(),
|
|
10
|
+
z.object({
|
|
11
|
+
version: z.literal(1),
|
|
12
|
+
scope: z.literal("user"),
|
|
13
|
+
authorityGeneration: PositiveSafeInteger
|
|
14
|
+
}).strict()
|
|
15
|
+
]);
|
|
16
|
+
var WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {
|
|
17
|
+
version: 1,
|
|
18
|
+
scope: "workspace"
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
XaiProviderAccountAuthoritySnapshotV1,
|
|
23
|
+
WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=chunk-GRG7PHWQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/xai-provider-account-authority.ts"],"sourcesContent":["import { z } from \"zod\";\n\nconst PositiveSafeInteger = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);\n\n/**\n * Opaque authority frozen at an xAI provider-account acceptance boundary.\n *\n * This snapshot deliberately carries no organization, membership, credential,\n * provider-account, subject, label, quota, token, or plan identity. User scope\n * becomes executable only after exact live database revalidation against the\n * separately stored causal subject and xAI subscription authority row.\n */\nexport const XaiProviderAccountAuthoritySnapshotV1 = z.discriminatedUnion(\"scope\", [\n z.object({ version: z.literal(1), scope: z.literal(\"organization\") }).strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"workspace\"),\n })\n .strict(),\n z\n .object({\n version: z.literal(1),\n scope: z.literal(\"user\"),\n authorityGeneration: PositiveSafeInteger,\n })\n .strict(),\n]);\n\nexport type XaiProviderAccountAuthoritySnapshotV1 = z.infer<\n typeof XaiProviderAccountAuthoritySnapshotV1\n>;\n\n/** Explicit compatibility value for workspace-default accepted work. */\nexport const WORKSPACE_XAI_PROVIDER_ACCOUNT_AUTHORITY_SNAPSHOT_V1 = {\n version: 1,\n scope: \"workspace\",\n} as const satisfies XaiProviderAccountAuthoritySnapshotV1;\n"],"mappings":";AAAA,SAAS,SAAS;AAElB,IAAM,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,OAAO,gBAAgB;AAU5E,IAAM,wCAAwC,EAAE,mBAAmB,SAAS;AAAA,EACjF,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,OAAO,EAAE,QAAQ,cAAc,EAAE,CAAC,EAAE,OAAO;AAAA,EAC7E,EACG,OAAO;AAAA,IACN,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,WAAW;AAAA,EAC9B,CAAC,EACA,OAAO;AAAA,EACV,EACG,OAAO;AAAA,IACN,SAAS,EAAE,QAAQ,CAAC;AAAA,IACpB,OAAO,EAAE,QAAQ,MAAM;AAAA,IACvB,qBAAqB;AAAA,EACvB,CAAC,EACA,OAAO;AACZ,CAAC;AAOM,IAAM,uDAAuD;AAAA,EAClE,SAAS;AAAA,EACT,OAAO;AACT;","names":[]}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
// src/canonical-human-identities.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var CanonicalHumanIdentityStatus = z.enum([
|
|
4
|
+
"active",
|
|
5
|
+
"recovery_required",
|
|
6
|
+
"disputed",
|
|
7
|
+
"disabled"
|
|
8
|
+
]);
|
|
9
|
+
var CanonicalHumanLoginBindingStatus = z.enum([
|
|
10
|
+
"active",
|
|
11
|
+
"recovery_pending",
|
|
12
|
+
"stale",
|
|
13
|
+
"disputed",
|
|
14
|
+
"revoked"
|
|
15
|
+
]);
|
|
16
|
+
var CanonicalHumanRecoveryState = z.enum([
|
|
17
|
+
"ready",
|
|
18
|
+
"recovery_required",
|
|
19
|
+
"lost_factor",
|
|
20
|
+
"disputed",
|
|
21
|
+
"disabled"
|
|
22
|
+
]);
|
|
23
|
+
var CanonicalHumanLoginBinding = z.object({
|
|
24
|
+
id: z.string().uuid(),
|
|
25
|
+
providerId: z.string().min(1).max(128),
|
|
26
|
+
providerAccountId: z.string().min(1).max(1024),
|
|
27
|
+
status: CanonicalHumanLoginBindingStatus,
|
|
28
|
+
revision: z.number().int().positive(),
|
|
29
|
+
verifiedAt: z.string().datetime(),
|
|
30
|
+
lastVerifiedAt: z.string().datetime(),
|
|
31
|
+
revokedAt: z.string().datetime().nullable(),
|
|
32
|
+
createdAt: z.string().datetime(),
|
|
33
|
+
updatedAt: z.string().datetime()
|
|
34
|
+
});
|
|
35
|
+
var CanonicalHumanIdentityProjection = z.object({
|
|
36
|
+
activeIdentity: z.object({
|
|
37
|
+
id: z.string().uuid(),
|
|
38
|
+
displayName: z.string().min(1).max(256),
|
|
39
|
+
status: CanonicalHumanIdentityStatus,
|
|
40
|
+
identityRevision: z.number().int().positive(),
|
|
41
|
+
authRevision: z.number().int().positive(),
|
|
42
|
+
activeLoginBindingId: z.string().uuid().nullable(),
|
|
43
|
+
recoveryState: CanonicalHumanRecoveryState,
|
|
44
|
+
createdAt: z.string().datetime(),
|
|
45
|
+
updatedAt: z.string().datetime()
|
|
46
|
+
}),
|
|
47
|
+
loginBindings: z.array(CanonicalHumanLoginBinding).max(64)
|
|
48
|
+
});
|
|
49
|
+
var OperationFields = {
|
|
50
|
+
operationId: z.string().uuid().optional(),
|
|
51
|
+
expectedIdentityRevision: z.number().int().positive(),
|
|
52
|
+
reason: z.string().trim().min(1).max(512)
|
|
53
|
+
};
|
|
54
|
+
var LinkCanonicalHumanLoginBindingRequest = z.object({
|
|
55
|
+
...OperationFields,
|
|
56
|
+
providerId: z.string().trim().min(1).max(128),
|
|
57
|
+
providerAccountId: z.string().trim().min(1).max(1024)
|
|
58
|
+
});
|
|
59
|
+
var CanonicalHumanBindingOperationRequest = z.object({
|
|
60
|
+
...OperationFields
|
|
61
|
+
});
|
|
62
|
+
var CanonicalHumanIdentityMutationOutcome = z.enum(["applied", "lost_factor", "disputed"]);
|
|
63
|
+
var CanonicalHumanIdentityMutationResponse = z.object({
|
|
64
|
+
outcome: CanonicalHumanIdentityMutationOutcome,
|
|
65
|
+
operationId: z.string().uuid(),
|
|
66
|
+
identity: CanonicalHumanIdentityProjection
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
export {
|
|
70
|
+
CanonicalHumanIdentityStatus,
|
|
71
|
+
CanonicalHumanLoginBindingStatus,
|
|
72
|
+
CanonicalHumanRecoveryState,
|
|
73
|
+
CanonicalHumanLoginBinding,
|
|
74
|
+
CanonicalHumanIdentityProjection,
|
|
75
|
+
LinkCanonicalHumanLoginBindingRequest,
|
|
76
|
+
CanonicalHumanBindingOperationRequest,
|
|
77
|
+
CanonicalHumanIdentityMutationOutcome,
|
|
78
|
+
CanonicalHumanIdentityMutationResponse
|
|
79
|
+
};
|
|
80
|
+
//# sourceMappingURL=chunk-JUFK3T4Q.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/canonical-human-identities.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport const CanonicalHumanIdentityStatus = z.enum([\n \"active\",\n \"recovery_required\",\n \"disputed\",\n \"disabled\",\n]);\nexport type CanonicalHumanIdentityStatus = z.infer<typeof CanonicalHumanIdentityStatus>;\n\nexport const CanonicalHumanLoginBindingStatus = z.enum([\n \"active\",\n \"recovery_pending\",\n \"stale\",\n \"disputed\",\n \"revoked\",\n]);\nexport type CanonicalHumanLoginBindingStatus = z.infer<typeof CanonicalHumanLoginBindingStatus>;\n\nexport const CanonicalHumanRecoveryState = z.enum([\n \"ready\",\n \"recovery_required\",\n \"lost_factor\",\n \"disputed\",\n \"disabled\",\n]);\nexport type CanonicalHumanRecoveryState = z.infer<typeof CanonicalHumanRecoveryState>;\n\nexport const CanonicalHumanLoginBinding = z.object({\n id: z.string().uuid(),\n providerId: z.string().min(1).max(128),\n providerAccountId: z.string().min(1).max(1024),\n status: CanonicalHumanLoginBindingStatus,\n revision: z.number().int().positive(),\n verifiedAt: z.string().datetime(),\n lastVerifiedAt: z.string().datetime(),\n revokedAt: z.string().datetime().nullable(),\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n});\nexport type CanonicalHumanLoginBinding = z.infer<typeof CanonicalHumanLoginBinding>;\n\nexport const CanonicalHumanIdentityProjection = z.object({\n activeIdentity: z.object({\n id: z.string().uuid(),\n displayName: z.string().min(1).max(256),\n status: CanonicalHumanIdentityStatus,\n identityRevision: z.number().int().positive(),\n authRevision: z.number().int().positive(),\n activeLoginBindingId: z.string().uuid().nullable(),\n recoveryState: CanonicalHumanRecoveryState,\n createdAt: z.string().datetime(),\n updatedAt: z.string().datetime(),\n }),\n loginBindings: z.array(CanonicalHumanLoginBinding).max(64),\n});\nexport type CanonicalHumanIdentityProjection = z.infer<typeof CanonicalHumanIdentityProjection>;\n\nconst OperationFields = {\n operationId: z.string().uuid().optional(),\n expectedIdentityRevision: z.number().int().positive(),\n reason: z.string().trim().min(1).max(512),\n} as const;\n\nexport const LinkCanonicalHumanLoginBindingRequest = z.object({\n ...OperationFields,\n providerId: z.string().trim().min(1).max(128),\n providerAccountId: z.string().trim().min(1).max(1024),\n});\nexport type LinkCanonicalHumanLoginBindingRequest = z.infer<\n typeof LinkCanonicalHumanLoginBindingRequest\n>;\n\nexport const CanonicalHumanBindingOperationRequest = z.object({\n ...OperationFields,\n});\nexport type CanonicalHumanBindingOperationRequest = z.infer<\n typeof CanonicalHumanBindingOperationRequest\n>;\n\nexport const CanonicalHumanIdentityMutationOutcome = z.enum([\"applied\", \"lost_factor\", \"disputed\"]);\nexport type CanonicalHumanIdentityMutationOutcome = z.infer<\n typeof CanonicalHumanIdentityMutationOutcome\n>;\n\nexport const CanonicalHumanIdentityMutationResponse = z.object({\n outcome: CanonicalHumanIdentityMutationOutcome,\n operationId: z.string().uuid(),\n identity: CanonicalHumanIdentityProjection,\n});\nexport type CanonicalHumanIdentityMutationResponse = z.infer<\n typeof CanonicalHumanIdentityMutationResponse\n>;\n"],"mappings":";AAAA,SAAS,SAAS;AAEX,IAAM,+BAA+B,EAAE,KAAK;AAAA,EACjD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,mCAAmC,EAAE,KAAK;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,8BAA8B,EAAE,KAAK;AAAA,EAChD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAGM,IAAM,6BAA6B,EAAE,OAAO;AAAA,EACjD,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,EACpB,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EACrC,mBAAmB,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI;AAAA,EAC7C,QAAQ;AAAA,EACR,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAChC,gBAAgB,EAAE,OAAO,EAAE,SAAS;AAAA,EACpC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EAC1C,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AACjC,CAAC;AAGM,IAAM,mCAAmC,EAAE,OAAO;AAAA,EACvD,gBAAgB,EAAE,OAAO;AAAA,IACvB,IAAI,EAAE,OAAO,EAAE,KAAK;AAAA,IACpB,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,IACtC,QAAQ;AAAA,IACR,kBAAkB,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IAC5C,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,IACxC,sBAAsB,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,IACjD,eAAe;AAAA,IACf,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,IAC/B,WAAW,EAAE,OAAO,EAAE,SAAS;AAAA,EACjC,CAAC;AAAA,EACD,eAAe,EAAE,MAAM,0BAA0B,EAAE,IAAI,EAAE;AAC3D,CAAC;AAGD,IAAM,kBAAkB;AAAA,EACtB,aAAa,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS;AAAA,EACxC,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS;AAAA,EACpD,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAC1C;AAEO,IAAM,wCAAwC,EAAE,OAAO;AAAA,EAC5D,GAAG;AAAA,EACH,YAAY,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,GAAG;AAAA,EAC5C,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,IAAI;AACtD,CAAC;AAKM,IAAM,wCAAwC,EAAE,OAAO;AAAA,EAC5D,GAAG;AACL,CAAC;AAKM,IAAM,wCAAwC,EAAE,KAAK,CAAC,WAAW,eAAe,UAAU,CAAC;AAK3F,IAAM,yCAAyC,EAAE,OAAO;AAAA,EAC7D,SAAS;AAAA,EACT,aAAa,EAAE,OAAO,EAAE,KAAK;AAAA,EAC7B,UAAU;AACZ,CAAC;","names":[]}
|