@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,354 @@
1
+ import { BrowserSession, InteractionControllerBinding, type BrowserSessionCapabilities as BrowserSessionCapabilitiesValue, type BrowserRevisionMaterialization as BrowserRevisionMaterializationValue, type BrowserSessionListResponse as BrowserSessionListResponseValue, type BrowserSessionMutationResponse as BrowserSessionMutationResponseValue, type InteractionError as InteractionErrorValue, type InteractionLifecycleOperationKind, type InteractionLifecycleOperationReceipt as InteractionLifecycleOperationReceiptValue, type InteractionPlacement, type NetworkRouteConfiguration as NetworkRouteConfigurationValue, type NetworkRouteConsistency as NetworkRouteConsistencyValue } from "@opengeni/contracts";
2
+ import { type Database } from "./database.js";
3
+ import { type BrowserStateArtifactCommitInput } from "./browser-state-artifacts.js";
4
+ import * as schema from "./schema.js";
5
+ type BrowserSessionRow = typeof schema.browserSessions.$inferSelect;
6
+ type InteractionOperationRow = typeof schema.interactionOperations.$inferSelect;
7
+ export declare const MANAGED_BROWSER_SESSION_CAPABILITIES: {
8
+ semanticObservation: boolean;
9
+ screenshots: boolean;
10
+ liveFrames: boolean;
11
+ humanInput: boolean;
12
+ tabs: boolean;
13
+ downloads: boolean;
14
+ uploads: boolean;
15
+ clipboard: boolean;
16
+ permissions: boolean;
17
+ diagnostics: boolean;
18
+ rawCdp: boolean;
19
+ linkedComputer: boolean;
20
+ privateCheckpoint: boolean;
21
+ identityPublication: boolean;
22
+ parallelTargets: boolean;
23
+ };
24
+ export declare const ATTACHED_BROWSER_SESSION_CAPABILITIES: {
25
+ semanticObservation: boolean;
26
+ screenshots: boolean;
27
+ liveFrames: boolean;
28
+ humanInput: boolean;
29
+ tabs: boolean;
30
+ downloads: boolean;
31
+ uploads: boolean;
32
+ clipboard: boolean;
33
+ permissions: boolean;
34
+ diagnostics: boolean;
35
+ rawCdp: boolean;
36
+ linkedComputer: boolean;
37
+ privateCheckpoint: boolean;
38
+ identityPublication: boolean;
39
+ parallelTargets: boolean;
40
+ };
41
+ /** Remote Chromium controlled through the same native CDP driver. Files and
42
+ * portable profile state remain false because their bytes live on another host. */
43
+ export declare const EXTERNAL_BROWSER_SESSION_CAPABILITIES: {
44
+ semanticObservation: boolean;
45
+ screenshots: boolean;
46
+ liveFrames: boolean;
47
+ humanInput: boolean;
48
+ tabs: boolean;
49
+ downloads: boolean;
50
+ uploads: boolean;
51
+ clipboard: boolean;
52
+ permissions: boolean;
53
+ diagnostics: boolean;
54
+ rawCdp: boolean;
55
+ linkedComputer: boolean;
56
+ privateCheckpoint: boolean;
57
+ identityPublication: boolean;
58
+ parallelTargets: boolean;
59
+ };
60
+ /** Measured against Lightpanda 0.3.5. Unsupported Chromium-only affordances
61
+ * remain false instead of being emulated or silently routed elsewhere. */
62
+ export declare const LIGHTPANDA_BROWSER_SESSION_CAPABILITIES: {
63
+ semanticObservation: boolean;
64
+ screenshots: boolean;
65
+ liveFrames: boolean;
66
+ humanInput: boolean;
67
+ tabs: boolean;
68
+ downloads: boolean;
69
+ uploads: boolean;
70
+ clipboard: boolean;
71
+ permissions: boolean;
72
+ diagnostics: boolean;
73
+ rawCdp: boolean;
74
+ linkedComputer: boolean;
75
+ privateCheckpoint: boolean;
76
+ identityPublication: boolean;
77
+ parallelTargets: boolean;
78
+ };
79
+ export declare class BrowserSessionNotFoundError extends Error {
80
+ readonly name = "BrowserSessionNotFoundError";
81
+ }
82
+ export declare class BrowserSessionOperationConflictError extends Error {
83
+ readonly name = "BrowserSessionOperationConflictError";
84
+ }
85
+ export declare class BrowserSessionStateError extends Error {
86
+ readonly name = "BrowserSessionStateError";
87
+ }
88
+ export type PrepareBrowserSessionCreateInput = {
89
+ accountId: string;
90
+ workspaceId: string;
91
+ operationId: string;
92
+ associatedSessionId: string;
93
+ actorSubjectId: string;
94
+ name: string;
95
+ initialUrl: string | null;
96
+ placement: InteractionPlacement;
97
+ driverId: string;
98
+ engine: BrowserSessionRow["engine"];
99
+ headless: boolean;
100
+ identityId: string | null;
101
+ baseRevisionId: string | null;
102
+ networkRouteId?: string | null;
103
+ linkedComputerSessionId?: string | null;
104
+ resolveDefaultRevision?: boolean;
105
+ capabilities?: BrowserSessionCapabilitiesValue;
106
+ };
107
+ export type PrepareBrowserSessionEndInput = {
108
+ accountId: string;
109
+ workspaceId: string;
110
+ browserSessionId: string;
111
+ operationId: string;
112
+ actorSubjectId: string;
113
+ };
114
+ export type PrepareBrowserSessionLifecycleInput = PrepareBrowserSessionEndInput;
115
+ export type BrowserPrivateCheckpointAuthority = {
116
+ artifactId: string;
117
+ sourceBrowserSessionId: string;
118
+ objectKey: string;
119
+ encryptedDataKey: string;
120
+ format: string;
121
+ artifactDigest: string;
122
+ contentDigest: string;
123
+ manifestDigest: string;
124
+ sizeBytes: number;
125
+ materialization: BrowserRevisionMaterializationValue;
126
+ };
127
+ /** Internal executor view of one BrowserSession. Plaintext controller
128
+ * credentials are deliberately absent; callers derive them from this fenced
129
+ * durable state. */
130
+ export type BrowserSessionControlRecord = {
131
+ session: BrowserSession;
132
+ tokenGeneration: number;
133
+ sourceSessionId: string;
134
+ /** Placement hosting browserd. It equals the logical sandbox placement for
135
+ * managed browsers and remains the source home sandbox for remote browsers. */
136
+ controllerHostSandboxGroupId: string | null;
137
+ createOperationId: string;
138
+ networkRouteAuthority: BrowserSessionNetworkRouteAuthority | null;
139
+ operation: null | {
140
+ operationId: string;
141
+ kind: InteractionLifecycleOperationKind;
142
+ state: InteractionOperationRow["state"];
143
+ controllerGeneration: string | null;
144
+ actorSubjectId: string;
145
+ };
146
+ };
147
+ export type BrowserSessionNetworkRouteAuthority = {
148
+ routeId: string;
149
+ routeVersion: number;
150
+ credentialVersion: number | null;
151
+ authorityDigest: string | null;
152
+ configuration: NetworkRouteConfigurationValue;
153
+ consistency: NetworkRouteConsistencyValue;
154
+ };
155
+ export declare function browserSessionCreateRequestDigest(input: PrepareBrowserSessionCreateInput): string;
156
+ export declare function listBrowserSessions(db: Database, input: {
157
+ accountId: string;
158
+ workspaceId: string;
159
+ }): Promise<BrowserSessionListResponseValue>;
160
+ export declare function getBrowserSession(db: Database, input: {
161
+ accountId: string;
162
+ workspaceId: string;
163
+ browserSessionId: string;
164
+ }): Promise<{
165
+ id: string;
166
+ accountId: string;
167
+ workspaceId: string;
168
+ name: string;
169
+ lifecycle: "active" | "ended" | "ending" | "failed" | "lost" | "repair_required" | "restoring" | "starting" | "suspended" | "suspending";
170
+ placement: {
171
+ kind: "sandbox_group";
172
+ sandboxGroupId: string;
173
+ } | {
174
+ kind: "connected_machine";
175
+ sandboxId: string;
176
+ } | {
177
+ kind: "attached_device";
178
+ deviceId: string;
179
+ } | {
180
+ kind: "external_provider";
181
+ providerId: string;
182
+ placementId: string;
183
+ };
184
+ controller: {
185
+ controllerId: string;
186
+ controllerGeneration: string;
187
+ placementInstanceId: string;
188
+ } | null;
189
+ driverId: string;
190
+ engine: "chrome" | "chromium" | "external" | "firefox" | "lightpanda" | "webkit";
191
+ engineVersion: string | null;
192
+ headless: boolean;
193
+ identityId: string | null;
194
+ baseRevisionId: string | null;
195
+ networkRouteId: string | null;
196
+ linkedComputerSessionId: string | null;
197
+ capabilities: {
198
+ semanticObservation: boolean;
199
+ screenshots: boolean;
200
+ liveFrames: boolean;
201
+ humanInput: boolean;
202
+ tabs: boolean;
203
+ downloads: boolean;
204
+ uploads: boolean;
205
+ clipboard: boolean;
206
+ permissions: boolean;
207
+ diagnostics: boolean;
208
+ rawCdp: boolean;
209
+ linkedComputer: boolean;
210
+ privateCheckpoint: boolean;
211
+ identityPublication: boolean;
212
+ parallelTargets: boolean;
213
+ };
214
+ associations: {
215
+ sessionId: string;
216
+ turnId: string | null;
217
+ attemptId: string | null;
218
+ relationship: "created" | "observing" | "related" | "using";
219
+ actorSubjectId: string;
220
+ lastUsedAt: string;
221
+ }[];
222
+ createdBySubjectId: string;
223
+ createdAt: string;
224
+ lastUsedAt: string;
225
+ failureCode: string | null;
226
+ }>;
227
+ export declare function getBrowserSessionControlRecord(db: Database, input: {
228
+ accountId: string;
229
+ workspaceId: string;
230
+ browserSessionId: string;
231
+ operationId?: string;
232
+ }): Promise<BrowserSessionControlRecord>;
233
+ export declare function getBrowserPrivateCheckpointAuthority(db: Database, input: {
234
+ accountId: string;
235
+ workspaceId: string;
236
+ browserSessionId: string;
237
+ }): Promise<BrowserPrivateCheckpointAuthority | null>;
238
+ /** Resolve an idempotency key before inspecting mutable placement. This keeps
239
+ * a retried create bound to its original BrowserSession even if the source
240
+ * session's active sandbox pointer has since changed. */
241
+ export declare function findBrowserSessionControlRecordByOperation(db: Database, input: {
242
+ accountId: string;
243
+ workspaceId: string;
244
+ operationId: string;
245
+ }): Promise<BrowserSessionControlRecord | null>;
246
+ export declare function prepareBrowserSessionCreate(db: Database, input: PrepareBrowserSessionCreateInput): Promise<BrowserSessionMutationResponseValue>;
247
+ /**
248
+ * Bind the broker-resolved, secret-free launch authority before controller
249
+ * dispatch. A prepared operation may refresh this binding while no physical
250
+ * controller owns it; after dispatch it is immutable and replay-fenced.
251
+ */
252
+ export declare function bindBrowserSessionNetworkRouteAuthority(db: Database, input: {
253
+ accountId: string;
254
+ workspaceId: string;
255
+ browserSessionId: string;
256
+ operationId: string;
257
+ routeVersion: number;
258
+ credentialVersion: number | null;
259
+ authorityDigest: string;
260
+ }): Promise<BrowserSessionNetworkRouteAuthority>;
261
+ export declare function dispatchBrowserSessionOperation(db: Database, input: {
262
+ accountId: string;
263
+ workspaceId: string;
264
+ operationId: string;
265
+ browserSessionId: string;
266
+ controllerGeneration: string;
267
+ controller?: InteractionControllerBinding;
268
+ stateUpload?: {
269
+ objectKey: string;
270
+ cleanupAfter: Date;
271
+ };
272
+ }): Promise<InteractionLifecycleOperationReceiptValue>;
273
+ /** Pulse one exact dispatched lifecycle operation while its controller mutation
274
+ * is still in flight. This is not viewer or resource activity: it exists only
275
+ * so the global reaper can distinguish a long profile transfer from an API
276
+ * caller that disappeared after dispatch. */
277
+ export declare function touchInteractionOperation(db: Database, input: {
278
+ accountId: string;
279
+ workspaceId: string;
280
+ operationId: string;
281
+ resourceId: string;
282
+ controllerGeneration: string;
283
+ }): Promise<boolean>;
284
+ export declare function activateBrowserSession(db: Database, input: {
285
+ accountId: string;
286
+ workspaceId: string;
287
+ operationId: string;
288
+ browserSessionId: string;
289
+ controller: InteractionControllerBinding;
290
+ engineVersion: string | null;
291
+ }): Promise<BrowserSessionMutationResponseValue>;
292
+ export declare function failBrowserSessionOperation(db: Database, input: {
293
+ accountId: string;
294
+ workspaceId: string;
295
+ operationId: string;
296
+ browserSessionId: string;
297
+ state?: "failed" | "outcome_unknown";
298
+ error: InteractionErrorValue;
299
+ }): Promise<BrowserSessionMutationResponseValue>;
300
+ export declare function prepareBrowserSessionSuspend(db: Database, input: PrepareBrowserSessionLifecycleInput): Promise<BrowserSessionMutationResponseValue>;
301
+ export declare function prepareBrowserSessionResume(db: Database, input: PrepareBrowserSessionLifecycleInput): Promise<BrowserSessionMutationResponseValue>;
302
+ export declare function commitBrowserSessionSuspension(db: Database, input: {
303
+ accountId: string;
304
+ workspaceId: string;
305
+ operationId: string;
306
+ browserSessionId: string;
307
+ controllerGeneration: string;
308
+ artifact: BrowserStateArtifactCommitInput;
309
+ }): Promise<BrowserSessionMutationResponseValue>;
310
+ export declare function clearSuspendedBrowserSessionController(db: Database, input: {
311
+ accountId: string;
312
+ workspaceId: string;
313
+ browserSessionId: string;
314
+ expectedControllerGeneration: string;
315
+ }): Promise<boolean>;
316
+ export declare function failBrowserSessionSuspension(db: Database, input: {
317
+ accountId: string;
318
+ workspaceId: string;
319
+ operationId: string;
320
+ browserSessionId: string;
321
+ controllerGeneration: string;
322
+ state?: "failed" | "outcome_unknown";
323
+ error: InteractionErrorValue;
324
+ }): Promise<BrowserSessionMutationResponseValue>;
325
+ export declare function failBrowserSessionResume(db: Database, input: {
326
+ accountId: string;
327
+ workspaceId: string;
328
+ operationId: string;
329
+ browserSessionId: string;
330
+ controllerGeneration: string;
331
+ error: InteractionErrorValue;
332
+ }): Promise<BrowserSessionMutationResponseValue>;
333
+ export declare function failBrowserSessionResumePreparation(db: Database, input: {
334
+ accountId: string;
335
+ workspaceId: string;
336
+ operationId: string;
337
+ browserSessionId: string;
338
+ error: InteractionErrorValue;
339
+ }): Promise<BrowserSessionMutationResponseValue>;
340
+ export declare function prepareBrowserSessionEnd(db: Database, input: PrepareBrowserSessionEndInput): Promise<BrowserSessionMutationResponseValue>;
341
+ export declare function completeBrowserSessionEnd(db: Database, input: {
342
+ accountId: string;
343
+ workspaceId: string;
344
+ operationId: string;
345
+ browserSessionId: string;
346
+ expectedControllerGeneration: string | null;
347
+ }): Promise<BrowserSessionMutationResponseValue>;
348
+ export declare function touchBrowserSessionController(db: Database, input: {
349
+ accountId: string;
350
+ workspaceId: string;
351
+ browserSessionId: string;
352
+ controllerGeneration: string;
353
+ }): Promise<boolean>;
354
+ export {};
@@ -0,0 +1,91 @@
1
+ import { type BrowserRevisionMaterialization as BrowserRevisionMaterializationValue } from "@opengeni/contracts";
2
+ import { type Database } from "./database.js";
3
+ import * as schema from "./schema.js";
4
+ type BrowserStateArtifactRow = typeof schema.browserStateArtifacts.$inferSelect;
5
+ type BrowserStateUploadRow = typeof schema.browserStateUploads.$inferSelect;
6
+ export type BrowserStateArtifactCommitInput = {
7
+ kind: BrowserStateArtifactRow["kind"];
8
+ format: string;
9
+ artifactDigest: string;
10
+ contentDigest: string;
11
+ manifestDigest: string;
12
+ objectKey: string;
13
+ encryptedDataKey: string;
14
+ sizeBytes: number;
15
+ materialization: BrowserRevisionMaterializationValue;
16
+ };
17
+ export type BrowserStateArtifactCleanupClaim = {
18
+ claimId: string;
19
+ artifactId: string;
20
+ accountId: string;
21
+ workspaceId: string;
22
+ objectKey: string;
23
+ };
24
+ export type BrowserStateUploadPurpose = BrowserStateUploadRow["purpose"];
25
+ export type BrowserStateUploadCleanupClaim = {
26
+ claimId: string;
27
+ uploadId: string;
28
+ accountId: string;
29
+ workspaceId: string;
30
+ objectKey: string;
31
+ };
32
+ export declare class BrowserStateUploadStateError extends Error {
33
+ readonly name = "BrowserStateUploadStateError";
34
+ }
35
+ export type BrowserStateUploadPreparationInput = {
36
+ accountId: string;
37
+ workspaceId: string;
38
+ operationId: string;
39
+ sourceBrowserSessionId: string;
40
+ purpose: BrowserStateUploadPurpose;
41
+ objectKey: string;
42
+ cleanupAfter: Date;
43
+ };
44
+ /** Validate storage authority before it can become durable state. */
45
+ export declare function validateBrowserStateArtifactCommitInput(workspaceId: string, value: BrowserStateArtifactCommitInput): BrowserStateArtifactCommitInput;
46
+ /** Establish durable cleanup authority before a controller receives a PUT URL. */
47
+ export declare function prepareBrowserStateUpload(db: Database, input: BrowserStateUploadPreparationInput): Promise<{
48
+ uploadId: string;
49
+ state: BrowserStateUploadRow["state"];
50
+ }>;
51
+ /** Compose upload authority with operation dispatch in one transaction. */
52
+ export declare function prepareBrowserStateUploadInTransaction(db: Database, input: BrowserStateUploadPreparationInput): Promise<{
53
+ uploadId: string;
54
+ state: BrowserStateUploadRow["state"];
55
+ }>;
56
+ /** Queue every uncommitted object owned by a terminal capture operation. */
57
+ export declare function markBrowserStateUploadsDeletePendingInTransaction(db: Database, input: {
58
+ workspaceId: string;
59
+ operationId: string;
60
+ }): Promise<void>;
61
+ /** Atomically turn one pre-upload authority into the exact artifact root. */
62
+ export declare function commitBrowserStateUploadInTransaction(db: Database, input: {
63
+ workspaceId: string;
64
+ operationId: string;
65
+ sourceBrowserSessionId: string;
66
+ purpose: BrowserStateUploadPurpose;
67
+ objectKey: string;
68
+ artifactId: string;
69
+ }): Promise<void>;
70
+ /**
71
+ * Claim a bounded cross-workspace batch of retired private checkpoints. The
72
+ * privileged SQL function is the only FORCE-RLS bypass; stale claims are
73
+ * reclaimable and published revision components are structurally ineligible.
74
+ */
75
+ export declare function claimBrowserStateArtifactCleanup(db: Database, input: {
76
+ claimTimeoutMs: number;
77
+ limit: number;
78
+ }): Promise<BrowserStateArtifactCleanupClaim[]>;
79
+ /**
80
+ * Settle one exact claim only after its provider object was deleted. Completion
81
+ * is idempotent after a lost response and erases the wrapped data key.
82
+ */
83
+ export declare function completeBrowserStateArtifactCleanup(db: Database, input: BrowserStateArtifactCleanupClaim): Promise<boolean>;
84
+ /** Claim orphan/failed upload objects after their safety horizon. */
85
+ export declare function claimBrowserStateUploadCleanup(db: Database, input: {
86
+ claimTimeoutMs: number;
87
+ limit: number;
88
+ }): Promise<BrowserStateUploadCleanupClaim[]>;
89
+ /** Tombstone one exact orphan upload after its provider object is absent. */
90
+ export declare function completeBrowserStateUploadCleanup(db: Database, input: BrowserStateUploadCleanupClaim): Promise<boolean>;
91
+ export {};
@@ -0,0 +1,48 @@
1
+ import { type CanonicalHumanIdentityMutationResponse as CanonicalHumanIdentityMutationResponseType, type CanonicalHumanIdentityProjection as CanonicalHumanIdentityProjectionType } from "@opengeni/contracts/canonical-human-identities";
2
+ import type { Database } from "./database.js";
3
+ export type CanonicalHumanSessionAuthority = {
4
+ identityId: string;
5
+ identityRevision: number;
6
+ authRevision: number;
7
+ identityStatus: "active" | "recovery_required" | "disputed" | "disabled";
8
+ };
9
+ export declare class CanonicalHumanIdentityConflictError extends Error {
10
+ readonly name = "CanonicalHumanIdentityConflictError";
11
+ readonly code = "CANONICAL_HUMAN_IDENTITY_CONFLICT";
12
+ constructor();
13
+ }
14
+ export declare class CanonicalHumanIdentityOperationReuseError extends Error {
15
+ readonly name = "CanonicalHumanIdentityOperationReuseError";
16
+ readonly code = "CANONICAL_HUMAN_IDENTITY_OPERATION_REUSED";
17
+ constructor();
18
+ }
19
+ export declare class CanonicalHumanIdentityNotFoundError extends Error {
20
+ readonly name = "CanonicalHumanIdentityNotFoundError";
21
+ constructor(message?: string);
22
+ }
23
+ export declare class CanonicalHumanIdentityAuthorityError extends Error {
24
+ readonly name = "CanonicalHumanIdentityAuthorityError";
25
+ }
26
+ export declare function ensureCanonicalHumanIdentity(db: Database, input: {
27
+ authUserId: string;
28
+ displayName: string;
29
+ }): Promise<CanonicalHumanSessionAuthority>;
30
+ export declare function ensureCanonicalHumanIdentityForAuthUser(db: Database, authUserId: string): Promise<CanonicalHumanSessionAuthority>;
31
+ export declare function synchronizeCanonicalHumanLoginBindings(db: Database, authUserId: string): Promise<CanonicalHumanSessionAuthority>;
32
+ export declare function validateCanonicalHumanSession(db: Database, input: {
33
+ authSessionId: string;
34
+ authUserId: string;
35
+ allowRecovery?: boolean;
36
+ }): Promise<boolean>;
37
+ export declare function getCanonicalHumanIdentityProjection(db: Database, authUserId: string): Promise<CanonicalHumanIdentityProjectionType>;
38
+ export type ApplyCanonicalHumanIdentityOperationInput = {
39
+ operationId: string;
40
+ authUserId: string;
41
+ expectedIdentityRevision: number;
42
+ operationType: "link" | "unlink" | "begin_recovery" | "recover";
43
+ bindingId?: string | null;
44
+ providerId?: string | null;
45
+ providerAccountId?: string | null;
46
+ reason: string;
47
+ };
48
+ export declare function applyCanonicalHumanIdentityOperation(db: Database, input: ApplyCanonicalHumanIdentityOperationInput): Promise<CanonicalHumanIdentityMutationResponseType>;
@@ -0,0 +1,28 @@
1
+ import {
2
+ CanonicalHumanIdentityAuthorityError,
3
+ CanonicalHumanIdentityConflictError,
4
+ CanonicalHumanIdentityNotFoundError,
5
+ CanonicalHumanIdentityOperationReuseError,
6
+ applyCanonicalHumanIdentityOperation,
7
+ ensureCanonicalHumanIdentity,
8
+ ensureCanonicalHumanIdentityForAuthUser,
9
+ getCanonicalHumanIdentityProjection,
10
+ synchronizeCanonicalHumanLoginBindings,
11
+ validateCanonicalHumanSession
12
+ } from "./chunk-TAUTWOS5.js";
13
+ import "./chunk-JC5QPLUM.js";
14
+ import "./chunk-5KTIEDX7.js";
15
+ import "./chunk-PZ5AY32C.js";
16
+ export {
17
+ CanonicalHumanIdentityAuthorityError,
18
+ CanonicalHumanIdentityConflictError,
19
+ CanonicalHumanIdentityNotFoundError,
20
+ CanonicalHumanIdentityOperationReuseError,
21
+ applyCanonicalHumanIdentityOperation,
22
+ ensureCanonicalHumanIdentity,
23
+ ensureCanonicalHumanIdentityForAuthUser,
24
+ getCanonicalHumanIdentityProjection,
25
+ synchronizeCanonicalHumanLoginBindings,
26
+ validateCanonicalHumanSession
27
+ };
28
+ //# sourceMappingURL=canonical-human-identities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,37 @@
1
+ import { sql, type SQLWrapper } from "drizzle-orm";
2
+ import type { Database } from "./database.js";
3
+ export type CapabilityComponentOwnerIdentity = {
4
+ kind: "direct" | "plugin" | "pack" | "migration";
5
+ id: string;
6
+ };
7
+ export declare class CapabilityComponentVersionConflictError extends Error {
8
+ readonly pluginKey: string;
9
+ readonly name = "CapabilityComponentVersionConflictError";
10
+ constructor(pluginKey: string);
11
+ }
12
+ /**
13
+ * An owner row is runtime-effective only while its lifecycle-owning Plugin or
14
+ * v2 Pack installation is active. Direct, migration, and legacy textual Pack
15
+ * ownership is intrinsic so the rolling migration does not hide pre-v2 shared
16
+ * components before those Packs are reinstalled into the normalized ledger.
17
+ */
18
+ export declare function effectiveCapabilityOwnerSql(ownerKind: SQLWrapper, ownerId: SQLWrapper): ReturnType<typeof sql>;
19
+ /** Serialize one workspace-local component identity across direct, Plugin, and Pack installers. */
20
+ export declare function lockCapabilityComponentIdentity(db: Database, workspaceId: string, pluginKey: string): Promise<void>;
21
+ /**
22
+ * A child installation selects exactly one immutable Plugin version. Changing
23
+ * that version is safe only when every retained facet owner is the caller.
24
+ */
25
+ export declare function assertCapabilityComponentVersionCanChange(db: Database, input: {
26
+ workspaceId: string;
27
+ pluginKey: string;
28
+ pluginInstallationId: string;
29
+ owner: CapabilityComponentOwnerIdentity;
30
+ }): Promise<void>;
31
+ /**
32
+ * Delete physically ownerless facet installations and disable now-empty child
33
+ * components. Inactive lifecycle owners still preserve storage: a Pack may
34
+ * have claimed a component while its installation is pending or repairing,
35
+ * even though that owner is intentionally hidden from runtime reads.
36
+ */
37
+ export declare function cleanupOrphanedCapabilityComponents(db: Database, workspaceId: string, facetInstallationIds: string[]): Promise<void>;