@opengeni/db 0.28.9 → 0.36.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.
Files changed (225) hide show
  1. package/dist/attached-browser-devices.d.ts +42 -0
  2. package/dist/attempt-tool-catalogs.d.ts +16 -0
  3. package/dist/browser-auth.d.ts +299 -0
  4. package/dist/browser-downloads.d.ts +51 -0
  5. package/dist/browser-identities.d.ts +137 -0
  6. package/dist/browser-sessions.d.ts +354 -0
  7. package/dist/browser-state-artifacts.d.ts +91 -0
  8. package/dist/canonical-human-identities.d.ts +48 -0
  9. package/dist/canonical-human-identities.js +28 -0
  10. package/dist/canonical-human-identities.js.map +1 -0
  11. package/dist/capability-components.d.ts +37 -0
  12. package/dist/capability-integrations.d.ts +194 -0
  13. package/dist/chunk-5KTIEDX7.js +13200 -0
  14. package/dist/chunk-5KTIEDX7.js.map +1 -0
  15. package/dist/chunk-CQZ4QSP5.js +995 -0
  16. package/dist/chunk-CQZ4QSP5.js.map +1 -0
  17. package/dist/chunk-F32YT7MP.js +117 -0
  18. package/dist/chunk-F32YT7MP.js.map +1 -0
  19. package/dist/chunk-JC5QPLUM.js +666 -0
  20. package/dist/chunk-JC5QPLUM.js.map +1 -0
  21. package/dist/chunk-P3RE4D2B.js +3535 -0
  22. package/dist/chunk-P3RE4D2B.js.map +1 -0
  23. package/dist/chunk-TAUTWOS5.js +259 -0
  24. package/dist/chunk-TAUTWOS5.js.map +1 -0
  25. package/dist/chunk-VKLB2ZGI.js +2389 -0
  26. package/dist/chunk-VKLB2ZGI.js.map +1 -0
  27. package/dist/codemode-operations.d.ts +117 -0
  28. package/dist/codex-token-resolver.d.ts +2 -2
  29. package/dist/company-profile-schema.d.ts +798 -0
  30. package/dist/company-profile.d.ts +268 -0
  31. package/dist/computer-sessions.d.ts +109 -0
  32. package/dist/connection-token-resolver.d.ts +9 -4
  33. package/dist/database.d.ts +57 -3
  34. package/dist/editable-artifact-durable-export.d.ts +153 -0
  35. package/dist/editable-artifact-durable-export.js +788 -0
  36. package/dist/editable-artifact-durable-export.js.map +1 -0
  37. package/dist/editable-artifact-materialization.d.ts +123 -0
  38. package/dist/editable-artifacts-schema.d.ts +4152 -0
  39. package/dist/editable-artifacts.d.ts +610 -0
  40. package/dist/editable-artifacts.js +26 -0
  41. package/dist/editable-artifacts.js.map +1 -0
  42. package/dist/generated-images.d.ts +139 -0
  43. package/dist/index.d.ts +1122 -126
  44. package/dist/index.js +42329 -18407
  45. package/dist/index.js.map +1 -1
  46. package/dist/insights.d.ts +73 -10
  47. package/dist/integration-bindings.d.ts +70 -0
  48. package/dist/integration-facets.d.ts +99 -0
  49. package/dist/interaction-revisions.d.ts +14 -0
  50. package/dist/interaction-schema.d.ts +6036 -0
  51. package/dist/knowledge-source-sync-schema.d.ts +1679 -0
  52. package/dist/knowledge-source-sync.d.ts +274 -0
  53. package/dist/memory-governance.d.ts +2 -2
  54. package/dist/memory-slack-delivery.d.ts +101 -0
  55. package/dist/new-session-drafts.d.ts +2 -2
  56. package/dist/pack-components.d.ts +76 -0
  57. package/dist/pack-installations.d.ts +86 -0
  58. package/dist/persistence-errors.d.ts +3 -3
  59. package/dist/plugin-packages.d.ts +126 -0
  60. package/dist/preference-registry.d.ts +1 -1
  61. package/dist/provision-roles.d.ts +9 -1
  62. package/dist/provision-roles.js +1 -1
  63. package/dist/runtime-posture.d.ts +19 -6
  64. package/dist/schema.d.ts +22654 -9359
  65. package/dist/schema.js +209 -3
  66. package/dist/scoped-knowledge.d.ts +97 -1
  67. package/dist/session-control.d.ts +33 -7
  68. package/dist/session-queue-commands.d.ts +19 -11
  69. package/dist/session-realtime-context.d.ts +2 -2
  70. package/dist/session-realtime-ledger.d.ts +4 -4
  71. package/dist/session-realtime-mirror.d.ts +2 -2
  72. package/dist/session-realtime-state.d.ts +1 -1
  73. package/dist/session-realtime-terminal.d.ts +1 -1
  74. package/dist/session-realtime.d.ts +7 -7
  75. package/dist/session-tenancy.d.ts +44 -0
  76. package/dist/session-tenancy.js +16 -0
  77. package/dist/session-tenancy.js.map +1 -0
  78. package/dist/session-tool-call-settlement.d.ts +1 -1
  79. package/dist/slack-task-policy-schema.d.ts +847 -0
  80. package/dist/slack-task-policy.d.ts +65 -0
  81. package/dist/slack-user-link-access.d.ts +54 -0
  82. package/dist/task-notes-schema.d.ts +924 -0
  83. package/dist/task-notes.d.ts +85 -0
  84. package/dist/transcription-recordings.d.ts +2 -2
  85. package/dist/turn-initiator.d.ts +2 -2
  86. package/dist/video-generation.d.ts +225 -0
  87. package/dist/video-generation.js +68 -0
  88. package/dist/video-generation.js.map +1 -0
  89. package/dist/workspace-artifacts.d.ts +1 -1
  90. package/dist/workspace-instruction-policies.d.ts +1 -1
  91. package/dist/workspace-learning-policy-schema.d.ts +932 -0
  92. package/dist/workspace-learning-policy.d.ts +161 -0
  93. package/dist/xai-subscription.d.ts +326 -0
  94. package/drizzle/0183_model_call_provider_cost_estimates.sql +39 -0
  95. package/drizzle/0184_sandbox_drain_teardown_fence.sql +682 -0
  96. package/drizzle/0185_temporal_schedule_cleanup_outbox.sql +168 -0
  97. package/drizzle/0186_sandbox_capture_provider_contract.sql +400 -0
  98. package/drizzle/0187_generated_image_artifacts.sql +173 -0
  99. package/drizzle/0188_image_generation_retention_failure.sql +25 -0
  100. package/drizzle/0189_retained_session_image_formats.sql +13 -0
  101. package/drizzle/0190_timeline_annotations.sql +31 -0
  102. package/drizzle/0191_editable_artifact_engine.sql +3853 -0
  103. package/drizzle/0192_editable_artifact_live_tickets.sql +338 -0
  104. package/drizzle/0193_editable_artifact_authorization.sql +190 -0
  105. package/drizzle/0194_editable_artifact_durable_exports.sql +160 -0
  106. package/drizzle/0195_editable_artifact_import_authorization.sql +203 -0
  107. package/drizzle/0196_rig_provider_images.sql +152 -0
  108. package/drizzle/0197_knowledge_source_sync_schedules.sql +523 -0
  109. package/drizzle/0198_memory_slack_publication_delivery.sql +393 -0
  110. package/drizzle/0199_workspace_learning_policy.sql +980 -0
  111. package/drizzle/0201_company_profile_authority.sql +849 -0
  112. package/drizzle/0202_document_index_checkpoints.sql +85 -0
  113. package/drizzle/0203_durable_video_generation.sql +353 -0
  114. package/drizzle/0204_video_generation_funding.sql +44 -0
  115. package/drizzle/0205_attempt_tool_catalogs.sql +230 -0
  116. package/drizzle/0206_browser_sessions.sql +646 -0
  117. package/drizzle/0207_browser_identities.sql +379 -0
  118. package/drizzle/0208_attached_browser_devices.sql +165 -0
  119. package/drizzle/0209_computer_sessions.sql +575 -0
  120. package/drizzle/0210_browser_auth_network_interventions.sql +441 -0
  121. package/drizzle/0211_editable_artifact_session_links.sql +58 -0
  122. package/drizzle/0212_browser_state_transfer_hardening.sql +560 -0
  123. package/drizzle/0212_slack_installation_bindings.sql +348 -0
  124. package/drizzle/0213_browser_interaction_authority.sql +67 -0
  125. package/drizzle/0213_slack_user_link_access_requests.sql +177 -0
  126. package/drizzle/0214_browser_download_saves.sql +34 -0
  127. package/drizzle/0214_session_activity_commit_gate.sql +262 -0
  128. package/drizzle/0215_browser_controller_host.sql +385 -0
  129. package/drizzle/0215_capabilities_platform.sql +980 -0
  130. package/drizzle/0216_browser_auth_health_evidence.sql +137 -0
  131. package/drizzle/0216_pack_component_ownership.sql +235 -0
  132. package/drizzle/0217_capability_definition_delete_authority.sql +32 -0
  133. package/drizzle/0217_external_browser_auth_operations.sql +22 -0
  134. package/drizzle/0218_organization_tenancy_foundation.sql +299 -0
  135. package/drizzle/0219_organization_tenancy_managed_human_provisioning.sql +317 -0
  136. package/drizzle/0219_site_auth_maintenance_sessions.sql +234 -0
  137. package/drizzle/0220_memory_slack_append_only_cascade.sql +38 -0
  138. package/drizzle/0220_session_channels.sql +54 -0
  139. package/drizzle/0221_sessions_channel_index.sql +5 -0
  140. package/drizzle/0222_session_visibility_authority_epochs.sql +158 -0
  141. package/drizzle/0222_sessions_channel_fk.sql +89 -0
  142. package/drizzle/0223_pending_tool_event_output.sql +55 -0
  143. package/drizzle/0223_sessions_channel_fk_validate.sql +118 -0
  144. package/drizzle/0224_slack_post_outcome_reconciliation.sql +123 -0
  145. package/drizzle/0225_session_visibility_fork_activation.sql +1363 -0
  146. package/drizzle/0226_personal_codex_authority_foundation.sql +365 -0
  147. package/drizzle/0227_slack_native_actions.sql +145 -0
  148. package/drizzle/0228_interaction_controller_data_plane.sql +14 -0
  149. package/drizzle/0228_slack_task_policy.sql +400 -0
  150. package/drizzle/0229_slack_inbox_file_fact.sql +10 -0
  151. package/drizzle/0230_user_scoped_variable_sets_rigs.sql +84 -0
  152. package/drizzle/0231_integration_definition_identity_cutover.sql +271 -0
  153. package/drizzle/0232_integration_facet_authority_cutover.sql +610 -0
  154. package/drizzle/0233_skill_and_integration_authority_cutover.sql +1162 -0
  155. package/drizzle/0234_xai_subscription_authority.sql +1139 -0
  156. package/drizzle/0235_canonical_human_login_bindings.sql +920 -0
  157. package/drizzle/0236_browser_identity_lifecycle.sql +39 -0
  158. package/drizzle/0236_session_visibility_slack_policy.sql +72 -0
  159. package/drizzle/0237_interaction_transition_reaper.sql +263 -0
  160. package/drizzle/0238_goal_persistence_policy.sql +471 -0
  161. package/drizzle/0238_supergrok_realtime_model.sql +29 -0
  162. package/drizzle/0239_supergrok_video_funding.sql +50 -0
  163. package/drizzle/0239_task_tree_notes.sql +990 -0
  164. package/package.json +26 -5
  165. package/src/attached-browser-devices.ts +371 -0
  166. package/src/attempt-tool-catalogs.ts +131 -0
  167. package/src/browser-auth.ts +4373 -0
  168. package/src/browser-downloads.ts +517 -0
  169. package/src/browser-identities.ts +1385 -0
  170. package/src/browser-sessions.ts +2294 -0
  171. package/src/browser-state-artifacts.ts +449 -0
  172. package/src/canonical-human-identities.ts +317 -0
  173. package/src/capability-components.ts +166 -0
  174. package/src/capability-integrations.ts +1571 -0
  175. package/src/codemode-operations.ts +674 -0
  176. package/src/company-profile-schema.ts +143 -0
  177. package/src/company-profile.ts +968 -0
  178. package/src/computer-sessions.ts +1130 -0
  179. package/src/connection-token-resolver.ts +270 -25
  180. package/src/database.ts +468 -24
  181. package/src/editable-artifact-durable-export.ts +1201 -0
  182. package/src/editable-artifact-materialization.ts +893 -0
  183. package/src/editable-artifacts-schema.ts +879 -0
  184. package/src/editable-artifacts.ts +5404 -0
  185. package/src/generated-images.ts +740 -0
  186. package/src/index.ts +9963 -1465
  187. package/src/insights.ts +251 -23
  188. package/src/integration-bindings.ts +455 -0
  189. package/src/integration-facets.ts +862 -0
  190. package/src/interaction-revisions.ts +70 -0
  191. package/src/interaction-schema.ts +1606 -0
  192. package/src/knowledge-source-sync-schema.ts +192 -0
  193. package/src/knowledge-source-sync.ts +1922 -0
  194. package/src/memory-slack-delivery.ts +801 -0
  195. package/src/pack-components.ts +954 -0
  196. package/src/pack-installations.ts +886 -0
  197. package/src/persistence-errors.ts +4 -7
  198. package/src/plugin-packages.ts +1186 -0
  199. package/src/provision-roles.ts +534 -1
  200. package/src/runtime-posture-cli.ts +9 -0
  201. package/src/runtime-posture.ts +721 -5
  202. package/src/schema.ts +6270 -3159
  203. package/src/scoped-knowledge-schema.ts +1 -1
  204. package/src/scoped-knowledge.ts +655 -3
  205. package/src/session-control.ts +130 -42
  206. package/src/session-queue-commands.ts +265 -15
  207. package/src/session-realtime-context.ts +2 -2
  208. package/src/session-realtime-ledger.ts +3 -3
  209. package/src/session-realtime.ts +7 -7
  210. package/src/session-tenancy.ts +188 -0
  211. package/src/session-tool-call-settlement.ts +18 -3
  212. package/src/slack-task-policy-schema.ts +130 -0
  213. package/src/slack-task-policy.ts +341 -0
  214. package/src/slack-user-link-access.ts +702 -0
  215. package/src/task-notes-schema.ts +135 -0
  216. package/src/task-notes.ts +178 -0
  217. package/src/video-generation.ts +1530 -0
  218. package/src/workspace-artifacts.ts +1 -1
  219. package/src/workspace-learning-policy-schema.ts +139 -0
  220. package/src/workspace-learning-policy.ts +595 -0
  221. package/src/xai-subscription.ts +1887 -0
  222. package/dist/chunk-P6CUHXQZ.js +0 -7248
  223. package/dist/chunk-P6CUHXQZ.js.map +0 -1
  224. package/dist/chunk-VHBFHMPC.js +0 -1219
  225. package/dist/chunk-VHBFHMPC.js.map +0 -1
@@ -0,0 +1,161 @@
1
+ import { WorkspaceLearningPolicySnapshot, type WorkspaceLearningPolicyActivationEvent, type WorkspaceLearningPolicyActivationType, type WorkspaceLearningPolicyHead, type WorkspaceLearningPolicyRevision, type WorkspaceLearningSourceOverrideInput } from "@opengeni/contracts";
2
+ import type { Database } from "./database.js";
3
+ export declare class WorkspaceLearningPolicyConflictError extends Error {
4
+ readonly currentHead: WorkspaceLearningPolicyHead | null;
5
+ readonly name = "WorkspaceLearningPolicyConflictError";
6
+ readonly code = "WORKSPACE_LEARNING_POLICY_CONFLICT";
7
+ constructor(currentHead: WorkspaceLearningPolicyHead | null);
8
+ }
9
+ export declare class WorkspaceLearningPolicyOperationReuseError extends Error {
10
+ readonly name = "WorkspaceLearningPolicyOperationReuseError";
11
+ readonly code = "WORKSPACE_LEARNING_POLICY_OPERATION_REUSED";
12
+ constructor();
13
+ }
14
+ export declare class WorkspaceLearningPolicyNotFoundError extends Error {
15
+ readonly name = "WorkspaceLearningPolicyNotFoundError";
16
+ constructor(message?: string);
17
+ }
18
+ export declare class WorkspaceLearningPolicyInvalidOperationError extends Error {
19
+ readonly name = "WorkspaceLearningPolicyInvalidOperationError";
20
+ }
21
+ export declare class WorkspaceLearningPolicyAuthorityError extends Error {
22
+ readonly name = "WorkspaceLearningPolicyAuthorityError";
23
+ }
24
+ export type WorkspaceLearningPolicyAttemptClaims = {
25
+ accountId: string;
26
+ workspaceId: string;
27
+ sessionId: string;
28
+ turnId: string;
29
+ attemptId: string;
30
+ executionGeneration: number;
31
+ };
32
+ export declare function createWorkspaceLearningPolicyRevision(db: Database, input: {
33
+ operationId?: string;
34
+ accountId: string;
35
+ workspaceId: string;
36
+ workspaceMode: "off" | "suggest" | "automatic";
37
+ sourceOverrides?: WorkspaceLearningSourceOverrideInput[];
38
+ supersedesRevisionId?: string | null;
39
+ actorSubjectId: string;
40
+ principalKind: string | undefined;
41
+ }): Promise<WorkspaceLearningPolicyRevision>;
42
+ declare function changeActiveWorkspaceLearningPolicy(db: Database, input: {
43
+ operationId?: string;
44
+ accountId: string;
45
+ workspaceId: string;
46
+ targetRevisionId: string;
47
+ expectedCurrentRevisionId: string | null;
48
+ expectedActivationVersion: number;
49
+ actorSubjectId: string;
50
+ principalKind: string | undefined;
51
+ reason: string;
52
+ type: WorkspaceLearningPolicyActivationType;
53
+ }): Promise<{
54
+ head: {
55
+ accountId: string;
56
+ workspaceId: string;
57
+ revisionId: string;
58
+ revision: number;
59
+ policyHash: string;
60
+ activationVersion: number;
61
+ activatedAt: string;
62
+ };
63
+ event: {
64
+ id: string;
65
+ operationId: string;
66
+ accountId: string;
67
+ workspaceId: string;
68
+ type: "activate" | "rollback";
69
+ activationVersion: number;
70
+ oldRevision: {
71
+ id: string;
72
+ revision: number;
73
+ policyHash: string;
74
+ } | null;
75
+ newRevision: {
76
+ id: string;
77
+ revision: number;
78
+ policyHash: string;
79
+ };
80
+ actorSubjectId: string;
81
+ reason: string;
82
+ createdAt: string;
83
+ };
84
+ }>;
85
+ export declare function activateWorkspaceLearningPolicyRevision(db: Database, input: Omit<Parameters<typeof changeActiveWorkspaceLearningPolicy>[1], "type" | "targetRevisionId"> & {
86
+ revisionId: string;
87
+ }): Promise<{
88
+ head: {
89
+ accountId: string;
90
+ workspaceId: string;
91
+ revisionId: string;
92
+ revision: number;
93
+ policyHash: string;
94
+ activationVersion: number;
95
+ activatedAt: string;
96
+ };
97
+ event: {
98
+ id: string;
99
+ operationId: string;
100
+ accountId: string;
101
+ workspaceId: string;
102
+ type: "activate" | "rollback";
103
+ activationVersion: number;
104
+ oldRevision: {
105
+ id: string;
106
+ revision: number;
107
+ policyHash: string;
108
+ } | null;
109
+ newRevision: {
110
+ id: string;
111
+ revision: number;
112
+ policyHash: string;
113
+ };
114
+ actorSubjectId: string;
115
+ reason: string;
116
+ createdAt: string;
117
+ };
118
+ }>;
119
+ export declare function rollbackWorkspaceLearningPolicyRevision(db: Database, input: Omit<Parameters<typeof changeActiveWorkspaceLearningPolicy>[1], "type">): Promise<{
120
+ head: {
121
+ accountId: string;
122
+ workspaceId: string;
123
+ revisionId: string;
124
+ revision: number;
125
+ policyHash: string;
126
+ activationVersion: number;
127
+ activatedAt: string;
128
+ };
129
+ event: {
130
+ id: string;
131
+ operationId: string;
132
+ accountId: string;
133
+ workspaceId: string;
134
+ type: "activate" | "rollback";
135
+ activationVersion: number;
136
+ oldRevision: {
137
+ id: string;
138
+ revision: number;
139
+ policyHash: string;
140
+ } | null;
141
+ newRevision: {
142
+ id: string;
143
+ revision: number;
144
+ policyHash: string;
145
+ };
146
+ actorSubjectId: string;
147
+ reason: string;
148
+ createdAt: string;
149
+ };
150
+ }>;
151
+ export declare function listWorkspaceLearningPolicyHistory(db: Database, input: {
152
+ accountId: string;
153
+ workspaceId: string;
154
+ limit?: number;
155
+ }): Promise<{
156
+ head: WorkspaceLearningPolicyHead | null;
157
+ revisions: WorkspaceLearningPolicyRevision[];
158
+ events: WorkspaceLearningPolicyActivationEvent[];
159
+ }>;
160
+ export declare function getOrCreateWorkspaceLearningPolicySnapshot(db: Database, claims: WorkspaceLearningPolicyAttemptClaims): Promise<WorkspaceLearningPolicySnapshot>;
161
+ export {};
@@ -0,0 +1,326 @@
1
+ import { type XaiProviderAccountAuthoritySnapshotV1 as XaiAuthoritySnapshot } from "@opengeni/contracts";
2
+ import type { Database } from "./database.js";
3
+ import * as schema from "./schema.js";
4
+ export type XaiAccountAuthorityScope = "workspace" | "user";
5
+ export type XaiCredentialStatus = "active" | "needs_relogin" | "error" | "disabled";
6
+ export type XaiCredentialSecretV1 = {
7
+ version: 1;
8
+ accessToken?: string;
9
+ refreshToken?: string;
10
+ sessionToken?: string;
11
+ cookie?: string;
12
+ };
13
+ export type XaiSubscriptionAccountMetadata = {
14
+ id: string;
15
+ scope: XaiAccountAuthorityScope;
16
+ providerAccountId: string | null;
17
+ label: string | null;
18
+ accountEmail: string | null;
19
+ planType: string | null;
20
+ status: XaiCredentialStatus;
21
+ allocatorEnabled: boolean;
22
+ version: number;
23
+ allocatorVersion: number;
24
+ allocatorUpdatedAt: Date | null;
25
+ expiresAt: Date | null;
26
+ lastRefreshAt: Date | null;
27
+ lastError: string | null;
28
+ quotaUsedPercent: number | null;
29
+ quotaResetAt: Date | null;
30
+ quotaCheckedAt: Date | null;
31
+ exhaustedUntil: Date | null;
32
+ selectionCount: number;
33
+ lastSelectedAt: Date | null;
34
+ connectedBySubjectId: string | null;
35
+ };
36
+ export type XaiCredentialForRun = XaiSubscriptionAccountMetadata & {
37
+ secret: XaiCredentialSecretV1;
38
+ authoritySnapshot: XaiAuthoritySnapshot;
39
+ };
40
+ export type XaiCredentialLeaseResult = {
41
+ credentialId: string | null;
42
+ rotationEnabled: boolean;
43
+ reused: boolean;
44
+ holderId: string | null;
45
+ generation: number | null;
46
+ leasedUntil: Date | null;
47
+ accounts: XaiSubscriptionAccountMetadata[];
48
+ };
49
+ export declare const XAI_CREDENTIAL_LEASE_TTL_MS: number;
50
+ /** Stable session sharding, matching Codex's cache-affinity contract. */
51
+ export declare function xaiCredentialShardIndex(sessionId: string, candidateCount: number): number;
52
+ export declare function createXaiSubscriptionCredential(db: Database, input: {
53
+ accountId: string;
54
+ workspaceId: string;
55
+ subjectId: string;
56
+ scope?: XaiAccountAuthorityScope;
57
+ encryptionKey: Uint8Array;
58
+ secret: XaiCredentialSecretV1;
59
+ providerAccountId?: string | null;
60
+ label?: string | null;
61
+ accountEmail?: string | null;
62
+ planType?: string | null;
63
+ expiresAt?: Date | null;
64
+ }): Promise<{
65
+ account: XaiSubscriptionAccountMetadata;
66
+ authoritySnapshot: XaiAuthoritySnapshot;
67
+ }>;
68
+ export declare function upsertXaiSubscriptionCredential(db: Database, input: {
69
+ accountId: string;
70
+ workspaceId: string;
71
+ subjectId: string;
72
+ credentialId?: string | null;
73
+ authoritySnapshot?: XaiAuthoritySnapshot;
74
+ scope?: XaiAccountAuthorityScope;
75
+ encryptionKey: Uint8Array;
76
+ secret: XaiCredentialSecretV1;
77
+ providerAccountId?: string | null;
78
+ label?: string | null;
79
+ accountEmail?: string | null;
80
+ planType?: string | null;
81
+ expiresAt?: Date | null;
82
+ }): Promise<{
83
+ account: XaiSubscriptionAccountMetadata;
84
+ authoritySnapshot: XaiAuthoritySnapshot;
85
+ }>;
86
+ export declare function listXaiSubscriptionAccountsMetadata(db: Database, input: {
87
+ workspaceId: string;
88
+ subjectId: string;
89
+ }): Promise<XaiSubscriptionAccountMetadata[]>;
90
+ /**
91
+ * Metadata-only readiness check for the SuperGrok model catalog.
92
+ *
93
+ * Like Codex, allocator eligibility is runtime scheduling state, not connection
94
+ * readiness. With rotation enabled any healthy account makes the rail ready;
95
+ * with rotation disabled the explicit active account is authoritative.
96
+ */
97
+ export declare function workspaceXaiSubscriptionActive(db: Database, settings: {
98
+ readonly supergrokSubscriptionEnabled: boolean;
99
+ }, workspaceId: string, subjectId: string): Promise<boolean>;
100
+ export declare function getXaiSubscriptionAccountMetadata(db: Database, input: {
101
+ workspaceId: string;
102
+ subjectId: string;
103
+ credentialId: string;
104
+ }): Promise<XaiSubscriptionAccountMetadata | null>;
105
+ export declare function getXaiSubscriptionAccountAuthoritySnapshot(db: Database, input: {
106
+ workspaceId: string;
107
+ subjectId: string;
108
+ credentialId: string;
109
+ }): Promise<XaiAuthoritySnapshot | null>;
110
+ /**
111
+ * Resolve the provider-account authority frozen on a newly accepted human turn.
112
+ * Workspace authority is the default. A caller's private pool becomes effective
113
+ * only after that exact pool has an active credential pointer, which is set by
114
+ * the caller's explicit private connection/activation action.
115
+ */
116
+ export declare function resolveXaiProviderAccountAuthoritySnapshotForAcceptance(db: Database, input: {
117
+ workspaceId: string;
118
+ subjectId: string;
119
+ }): Promise<XaiAuthoritySnapshot>;
120
+ /** Transaction-local acceptance resolver. The caller must already have set the
121
+ * exact authenticated subject GUC on this same transaction. */
122
+ export declare function resolveXaiProviderAccountAuthoritySnapshotForAcceptanceInTransaction(db: Database, input: {
123
+ workspaceId: string;
124
+ }): Promise<XaiAuthoritySnapshot>;
125
+ export declare function updateXaiSubscriptionAccountSettings(db: Database, input: {
126
+ workspaceId: string;
127
+ subjectId: string;
128
+ credentialId: string;
129
+ expectedVersion: number;
130
+ label?: string | null;
131
+ allocatorEnabled?: boolean;
132
+ }): Promise<XaiSubscriptionAccountMetadata>;
133
+ export type XaiAllocatorUpdateResult = {
134
+ kind: "updated" | "unchanged" | "conflict";
135
+ allocatorEnabled: boolean;
136
+ allocatorVersion: number;
137
+ allocatorUpdatedAt: Date | null;
138
+ } | {
139
+ kind: "not_found";
140
+ };
141
+ export declare function updateXaiAllocatorEligibility(db: Database, input: {
142
+ workspaceId: string;
143
+ subjectId: string;
144
+ credentialId: string;
145
+ enabled: boolean;
146
+ expectedVersion: number;
147
+ }): Promise<XaiAllocatorUpdateResult>;
148
+ export declare function renameXaiSubscriptionAccount(db: Database, input: {
149
+ workspaceId: string;
150
+ subjectId: string;
151
+ credentialId: string;
152
+ label: string | null;
153
+ }): Promise<XaiSubscriptionAccountMetadata | null>;
154
+ export declare function disconnectXaiSubscriptionCredential(db: Database, input: {
155
+ accountId: string;
156
+ workspaceId: string;
157
+ subjectId: string;
158
+ credentialId: string;
159
+ authoritySnapshot: XaiAuthoritySnapshot;
160
+ }): Promise<boolean>;
161
+ export declare function materializeXaiCredentialForRun(db: Database, input: {
162
+ workspaceId: string;
163
+ subjectId: string;
164
+ credentialId: string;
165
+ authoritySnapshot: XaiAuthoritySnapshot;
166
+ encryptionKey: Uint8Array;
167
+ }): Promise<XaiCredentialForRun>;
168
+ export type XaiSerializedCredentialRefreshResult = {
169
+ credential: XaiCredentialForRun;
170
+ refreshed: boolean;
171
+ };
172
+ /**
173
+ * Refresh one connected xAI account under a database row lock.
174
+ *
175
+ * OAuth refresh tokens may rotate. Multiple sessions are allowed to share the
176
+ * same account, so an unlocked read-refresh-write sequence can make one
177
+ * successful refresh invalidate every other in-flight refresh. This operation
178
+ * re-reads the secret after acquiring the lock and skips the provider call when
179
+ * another request already installed a newer token pair.
180
+ */
181
+ export declare function refreshXaiSubscriptionCredentialSerialized(db: Database, input: {
182
+ accountId: string;
183
+ workspaceId: string;
184
+ subjectId: string;
185
+ credentialId: string;
186
+ authoritySnapshot: XaiAuthoritySnapshot;
187
+ encryptionKey: Uint8Array;
188
+ observedAccessToken: string | undefined;
189
+ observedRefreshToken: string | undefined;
190
+ refresh: (current: XaiCredentialForRun) => Promise<{
191
+ secret: XaiCredentialSecretV1;
192
+ expiresAt: Date | null;
193
+ }>;
194
+ }): Promise<XaiSerializedCredentialRefreshResult>;
195
+ export declare function acquireXaiCredentialLease(db: Database, input: {
196
+ accountId: string;
197
+ workspaceId: string;
198
+ subjectId: string;
199
+ sessionId: string;
200
+ turnId: string;
201
+ holderId: string;
202
+ authoritySnapshot: XaiAuthoritySnapshot;
203
+ pinnedCredentialId?: string | null;
204
+ pinSource?: "manual" | "policy" | null;
205
+ now?: Date;
206
+ leaseTtlMs?: number;
207
+ }): Promise<XaiCredentialLeaseResult>;
208
+ /**
209
+ * Select an authorized connected account for a non-turn operation (voice,
210
+ * transcription, media). Rotation uses the same stable session/request shard
211
+ * as turns, but does not create a capacity lease: one account may serve many
212
+ * concurrent upstream sessions just like Codex subscriptions.
213
+ */
214
+ export declare function selectXaiCredentialForUse(db: Database, input: {
215
+ accountId: string;
216
+ workspaceId: string;
217
+ subjectId: string;
218
+ authoritySnapshot: XaiAuthoritySnapshot;
219
+ shardKey: string;
220
+ pinnedCredentialId?: string | null;
221
+ pinSource?: "manual" | "policy" | null;
222
+ now?: Date;
223
+ }): Promise<{
224
+ credentialId: string | null;
225
+ rotationEnabled: boolean;
226
+ accounts: XaiSubscriptionAccountMetadata[];
227
+ }>;
228
+ export declare function releaseXaiCredentialLease(db: Database, input: {
229
+ workspaceId: string;
230
+ subjectId: string;
231
+ turnId: string;
232
+ holderId: string;
233
+ generation: number;
234
+ }): Promise<boolean>;
235
+ export declare function heartbeatXaiCredentialLeaseUntil(db: Database, input: {
236
+ workspaceId: string;
237
+ subjectId: string;
238
+ turnId: string;
239
+ holderId: string;
240
+ generation: number;
241
+ leaseTtlMs?: number;
242
+ now?: Date;
243
+ }): Promise<Date | null>;
244
+ export declare function getXaiRotationSettings(db: Database, input: {
245
+ workspaceId: string;
246
+ subjectId: string;
247
+ authoritySnapshot: XaiAuthoritySnapshot;
248
+ }): Promise<typeof schema.xaiRotationSettings.$inferSelect | null>;
249
+ export declare function ensureXaiRotationSettings(db: Database, input: {
250
+ accountId: string;
251
+ workspaceId: string;
252
+ subjectId: string;
253
+ authoritySnapshot: XaiAuthoritySnapshot;
254
+ }): Promise<typeof schema.xaiRotationSettings.$inferSelect>;
255
+ export declare function setActiveXaiCredential(db: Database, input: {
256
+ accountId: string;
257
+ workspaceId: string;
258
+ subjectId: string;
259
+ authoritySnapshot: XaiAuthoritySnapshot;
260
+ credentialId: string;
261
+ }): Promise<boolean>;
262
+ export declare function setInitialActiveXaiCredential(db: Database, input: {
263
+ accountId: string;
264
+ workspaceId: string;
265
+ subjectId: string;
266
+ authoritySnapshot: XaiAuthoritySnapshot;
267
+ credentialId: string;
268
+ }): Promise<boolean>;
269
+ export declare function disconnectXaiSubscriptionCredentialAndRepick(db: Database, input: {
270
+ accountId: string;
271
+ workspaceId: string;
272
+ subjectId: string;
273
+ credentialId: string;
274
+ authoritySnapshot: XaiAuthoritySnapshot;
275
+ }): Promise<{
276
+ disconnected: boolean;
277
+ newActiveCredentialId: string | null;
278
+ }>;
279
+ export declare function updateXaiRotationSettings(db: Database, input: {
280
+ workspaceId: string;
281
+ subjectId: string;
282
+ authoritySnapshot: XaiAuthoritySnapshot;
283
+ expectedVersion: number;
284
+ rotationEnabled: boolean;
285
+ }): Promise<typeof schema.xaiRotationSettings.$inferSelect>;
286
+ export declare function setXaiSessionAccountPin(db: Database, input: {
287
+ accountId: string;
288
+ workspaceId: string;
289
+ subjectId: string;
290
+ sessionId: string;
291
+ authoritySnapshot: XaiAuthoritySnapshot;
292
+ credentialId: string | null;
293
+ pinSource: "manual" | "policy" | null;
294
+ /** undefined = unconditional human write; null = row must not exist. */
295
+ expectedVersion?: number | null;
296
+ }): Promise<typeof schema.xaiSessionAccountPins.$inferSelect>;
297
+ export declare function getXaiSessionAccountPin(db: Database, input: {
298
+ workspaceId: string;
299
+ subjectId: string;
300
+ sessionId: string;
301
+ authoritySnapshot: XaiAuthoritySnapshot;
302
+ }): Promise<typeof schema.xaiSessionAccountPins.$inferSelect | null>;
303
+ export declare function recordXaiSessionLastAccount(db: Database, input: {
304
+ accountId: string;
305
+ workspaceId: string;
306
+ subjectId: string;
307
+ sessionId: string;
308
+ authoritySnapshot: XaiAuthoritySnapshot;
309
+ credentialId: string;
310
+ }): Promise<typeof schema.xaiSessionAccountPins.$inferSelect>;
311
+ export declare function updateXaiQuotaMetadata(db: Database, input: {
312
+ workspaceId: string;
313
+ subjectId: string;
314
+ credentialId: string;
315
+ quotaUsedPercent: number | null;
316
+ quotaResetAt: Date | null;
317
+ quotaCheckedAt: Date;
318
+ exhaustedUntil: Date | null;
319
+ }): Promise<boolean>;
320
+ export declare function wakeXaiCapacityWaiters(db: Database, input: {
321
+ workspaceId: string;
322
+ subjectId: string;
323
+ authoritySnapshot: XaiAuthoritySnapshot;
324
+ reason: string;
325
+ now?: Date;
326
+ }): Promise<number>;
@@ -0,0 +1,39 @@
1
+ -- deployment-mode: rolling
2
+ -- Preserve the captured provider-rate comparison separately from the OpenGeni
3
+ -- credit price. Existing facts remain unknown rather than being rewritten with
4
+ -- today's rates or incorrectly treating credit markup as provider cost.
5
+
6
+ SET LOCAL lock_timeout = '5s';
7
+ SET LOCAL statement_timeout = '5min';
8
+
9
+ ALTER TABLE "model_call_facts"
10
+ ADD COLUMN IF NOT EXISTS "estimated_provider_cost_micros" bigint,
11
+ ADD COLUMN IF NOT EXISTS "pricing_source" text;
12
+
13
+ ALTER TABLE "model_call_facts"
14
+ DROP CONSTRAINT IF EXISTS "model_call_facts_estimated_provider_cost_check",
15
+ ADD CONSTRAINT "model_call_facts_estimated_provider_cost_check"
16
+ CHECK (
17
+ "estimated_provider_cost_micros" IS NULL
18
+ OR "estimated_provider_cost_micros" >= 0
19
+ ) NOT VALID;
20
+
21
+ ALTER TABLE "model_call_facts"
22
+ VALIDATE CONSTRAINT "model_call_facts_estimated_provider_cost_check";
23
+
24
+ ALTER TABLE "model_call_facts"
25
+ DROP CONSTRAINT IF EXISTS "model_call_facts_pricing_source_check",
26
+ ADD CONSTRAINT "model_call_facts_pricing_source_check"
27
+ CHECK (
28
+ ("estimated_provider_cost_micros" IS NULL AND "pricing_source" IS NULL)
29
+ OR (
30
+ "estimated_provider_cost_micros" IS NOT NULL
31
+ AND "pricing_source" IN ('configured_list_price', 'gateway_reported')
32
+ )
33
+ ) NOT VALID;
34
+
35
+ ALTER TABLE "model_call_facts"
36
+ VALIDATE CONSTRAINT "model_call_facts_pricing_source_check";
37
+
38
+ RESET statement_timeout;
39
+ RESET lock_timeout;