@opengeni/db 0.36.1 → 3.1.0-canary.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 (274) hide show
  1. package/dist/attached-browser-devices.d.ts +7 -0
  2. package/dist/automations.d.ts +154 -0
  3. package/dist/canonical-human-identities.js +3 -3
  4. package/dist/capability-integrations.d.ts +13 -0
  5. package/dist/child-lifecycle-notices.d.ts +68 -0
  6. package/dist/{chunk-GYO7ED2Q.js → chunk-EULAN2NP.js} +2 -2
  7. package/dist/{chunk-VTPRIXKG.js → chunk-NJVZPWXY.js} +3 -3
  8. package/dist/{chunk-HSOWSYOX.js → chunk-NMUBV7Z5.js} +19 -11
  9. package/dist/chunk-NMUBV7Z5.js.map +1 -0
  10. package/dist/chunk-OF5OBB76.js +4457 -0
  11. package/dist/chunk-OF5OBB76.js.map +1 -0
  12. package/dist/{chunk-5KTIEDX7.js → chunk-PR2WMLOQ.js} +7714 -4443
  13. package/dist/chunk-PR2WMLOQ.js.map +1 -0
  14. package/dist/{chunk-Z7VYMNPZ.js → chunk-SCPUJS53.js} +41 -4
  15. package/dist/chunk-SCPUJS53.js.map +1 -0
  16. package/dist/{chunk-SK7YYHBI.js → chunk-SIBYBA2D.js} +46 -1
  17. package/dist/chunk-SIBYBA2D.js.map +1 -0
  18. package/dist/chunk-TIKF3KTI.js +383 -0
  19. package/dist/chunk-TIKF3KTI.js.map +1 -0
  20. package/dist/chunk-ZZ5LJEFX.js +516 -0
  21. package/dist/chunk-ZZ5LJEFX.js.map +1 -0
  22. package/dist/codemode-operations.d.ts +1 -6
  23. package/dist/company-brain-context-selection-schema.d.ts +705 -0
  24. package/dist/company-brain-context-selection.d.ts +94 -0
  25. package/dist/company-brain-governed-writes.d.ts +24 -0
  26. package/dist/company-brain.d.ts +55 -0
  27. package/dist/company-profile-agent-admin.d.ts +15 -0
  28. package/dist/company-profile-schema.d.ts +619 -2
  29. package/dist/company-profile.d.ts +9 -4
  30. package/dist/connection-authority.d.ts +95 -0
  31. package/dist/connection-scopes.d.ts +8 -0
  32. package/dist/connection-tenancy-backfill.d.ts +41 -0
  33. package/dist/connection-token-resolver.d.ts +30 -1
  34. package/dist/database.d.ts +19 -0
  35. package/dist/editable-artifact-durable-export.d.ts +10 -0
  36. package/dist/editable-artifact-durable-export.js +18 -3
  37. package/dist/editable-artifact-durable-export.js.map +1 -1
  38. package/dist/editable-artifacts.d.ts +2 -2
  39. package/dist/editable-artifacts.js +3 -3
  40. package/dist/governed-learning-activation-schema.d.ts +984 -0
  41. package/dist/governed-learning-activation.d.ts +98 -0
  42. package/dist/governed-learning-evaluator-schema.d.ts +633 -0
  43. package/dist/governed-learning-evaluator.d.ts +28 -0
  44. package/dist/index.d.ts +1633 -87
  45. package/dist/index.js +22004 -8109
  46. package/dist/index.js.map +1 -1
  47. package/dist/insights.d.ts +18 -0
  48. package/dist/integration-bindings.d.ts +1 -0
  49. package/dist/integration-facets.d.ts +30 -0
  50. package/dist/interaction-placement-loss.d.ts +22 -0
  51. package/dist/knowledge-source-sync-schema.d.ts +730 -0
  52. package/dist/knowledge-source-sync.d.ts +60 -0
  53. package/dist/managed-human-provisioning.d.ts +25 -0
  54. package/dist/memory-domain.d.ts +3 -3
  55. package/dist/migrate.d.ts +11 -1
  56. package/dist/migrate.js +1 -1
  57. package/dist/new-session-drafts.d.ts +43 -5
  58. package/dist/organization-membership-backfill.d.ts +174 -0
  59. package/dist/organization-membership-lifecycle.d.ts +162 -0
  60. package/dist/pr-review.d.ts +107 -0
  61. package/dist/preference-registry-schema.d.ts +2 -0
  62. package/dist/preference-registry.d.ts +2 -0
  63. package/dist/provision-roles.js +1 -1
  64. package/dist/runtime-posture.d.ts +23 -9
  65. package/dist/schema.d.ts +24925 -13697
  66. package/dist/schema.js +103 -1
  67. package/dist/scoped-knowledge-schema.d.ts +52 -1
  68. package/dist/session-background-commands.d.ts +125 -0
  69. package/dist/session-background-commands.js +34 -0
  70. package/dist/session-background-commands.js.map +1 -0
  71. package/dist/session-control.d.ts +156 -3
  72. package/dist/session-goal-pacing.d.ts +68 -0
  73. package/dist/session-queue-commands.d.ts +42 -5
  74. package/dist/session-realtime-ledger.d.ts +3 -0
  75. package/dist/session-tenancy.d.ts +71 -1
  76. package/dist/session-tenancy.js +25 -3
  77. package/dist/session-tool-call-settlement.d.ts +9 -4
  78. package/dist/slack-routing-personal-workspace.d.ts +23 -0
  79. package/dist/slack-routing.d.ts +153 -0
  80. package/dist/slack-task-policy-schema.d.ts +34 -0
  81. package/dist/slack-task-policy.d.ts +8 -0
  82. package/dist/slack-user-link-access.d.ts +1 -0
  83. package/dist/task-notes-schema.d.ts +594 -0
  84. package/dist/task-notes.d.ts +39 -0
  85. package/dist/turn-initiator.d.ts +2 -0
  86. package/dist/user-resource-authority.d.ts +109 -0
  87. package/dist/video-generation.js +3 -3
  88. package/dist/workspace-authority.d.ts +81 -0
  89. package/dist/workspace-instruction-policies-schema.d.ts +279 -0
  90. package/dist/workspace-instruction-policies.d.ts +62 -0
  91. package/dist/workspace-learning-policy.d.ts +1 -0
  92. package/dist/workspace-membership-permissions.d.ts +2 -0
  93. package/drizzle/0240_enrollment_connection_authority.sql +39 -0
  94. package/drizzle/0240_model_context_user_messages.sql +204 -0
  95. package/drizzle/0241_atomic_personal_resource_delegation.sql +1000 -0
  96. package/drizzle/0241_enrollment_agent_runtime.sql +70 -0
  97. package/drizzle/0243_google_drive_object_acl_authority.sql +554 -0
  98. package/drizzle/0244_slack_app_home_refresh_queue.sql +120 -0
  99. package/drizzle/0245_model_context_contribution_facts.sql +88 -0
  100. package/drizzle/0246_integration_personal_instance_authority.sql +70 -0
  101. package/drizzle/0247_terraform_stacks_provenance_repair.sql +428 -0
  102. package/drizzle/0248_terraform_stacks_component_resolution_fence.sql +83 -0
  103. package/drizzle/0249_personal_resource_delegation_authority_correction.sql +662 -0
  104. package/drizzle/0250_direct_retained_process_owner_liveness.sql +199 -0
  105. package/drizzle/0251_connected_machine_operation_policy.sql +45 -0
  106. package/drizzle/0252_scheduled_personal_resource_delegation.sql +1867 -0
  107. package/drizzle/0253_common_user_resource_authority_lifecycle.sql +1555 -0
  108. package/drizzle/0254_scoped_variable_set_authority.sql +1255 -0
  109. package/drizzle/0255_company_brain_governed_write_proposals.sql +524 -0
  110. package/drizzle/0256_connection_authority_delegation.sql +703 -0
  111. package/drizzle/0257_goal_revision_decisions_and_root_constraints.sql +436 -0
  112. package/drizzle/0258_three_scope_document_knowledge_authority.sql +1273 -0
  113. package/drizzle/0259_company_brain_context_selection_receipts.sql +869 -0
  114. package/drizzle/0260_task_note_knowledge_promotion.sql +820 -0
  115. package/drizzle/0261_preference_knowledge_proposal_actor_binding.sql +471 -0
  116. package/drizzle/0262_scoped_connected_machines_and_rigs.sql +1700 -0
  117. package/drizzle/0263_organization_membership_lifecycle.sql +3284 -0
  118. package/drizzle/0264_connection_authority_runtime_activation.sql +1084 -0
  119. package/drizzle/0266_company_brain_context_receipt_inspection.sql +156 -0
  120. package/drizzle/0268_governed_learning_decision_receipts.sql +825 -0
  121. package/drizzle/0269_governed_learning_activation_controller.sql +1874 -0
  122. package/drizzle/0270_governed_learning_history_inspection.sql +170 -0
  123. package/drizzle/0271_company_brain_retrieval_only_default.sql +524 -0
  124. package/drizzle/0272_human_confirmed_learning_activation.sql +591 -0
  125. package/drizzle/0273_scheduled_variable_set_materialization.sql +268 -0
  126. package/drizzle/0274_human_confirmed_knowledge_review.sql +310 -0
  127. package/drizzle/0275_scheduled_connection_authority.sql +5527 -0
  128. package/drizzle/0276_onboarding_proposal_initiating_human_guc.sql +198 -0
  129. package/drizzle/0277_workspace_writer_authority_attribution.sql +393 -0
  130. package/drizzle/0278_workspace_membership_removal_fencing.sql +1174 -0
  131. package/drizzle/0279_workspace_connection_use_lane.sql +343 -0
  132. package/drizzle/0280_connection_and_variable_set_audit_attribution.sql +773 -0
  133. package/drizzle/0281_viewer_holder_authority_claims.sql +52 -0
  134. package/drizzle/0282_variable_set_session_attach_attribution.sql +178 -0
  135. package/drizzle/0283_editable_spreadsheet_authored_state.sql +82 -0
  136. package/drizzle/0284_truthful_human_confirmed_review_reason.sql +930 -0
  137. package/drizzle/0285_organization_tenancy_inventory.sql +329 -0
  138. package/drizzle/0286_widen_task_note_expiry_ceiling.sql +391 -0
  139. package/drizzle/0287_open_suffix_pending_tool_calls.sql +18 -0
  140. package/drizzle/0288_attached_browser_reenrollment.sql +64 -0
  141. package/drizzle/0289_session_composer_policy_authority.sql +597 -0
  142. package/drizzle/0290_organization_membership_backfill.sql +268 -0
  143. package/drizzle/0291_resource_authority_classification_assertion.sql +371 -0
  144. package/drizzle/0292_truthful_tenancy_inventory_counters.sql +291 -0
  145. package/drizzle/0293_confirm_time_rule_rebaseline.sql +615 -0
  146. package/drizzle/0294_preference_activation_authority.sql +237 -0
  147. package/drizzle/0295_retire_legacy_standing_memory_mode.sql +476 -0
  148. package/drizzle/0296_force_rls_backfill_noop_repair.sql +215 -0
  149. package/drizzle/0297_session_ownership_classification_and_backfill.sql +752 -0
  150. package/drizzle/0298_organization_tenancy_parity.sql +609 -0
  151. package/drizzle/0299_organization_membership_lock_order.sql +291 -0
  152. package/drizzle/0300_tenancy_backfill_ledger.sql +459 -0
  153. package/drizzle/0301_session_snapshot_and_pin_visibility.sql +181 -0
  154. package/drizzle/0302_personal_workspace_session_ownership.sql +303 -0
  155. package/drizzle/0303_session_tenancy_product_activation.sql +919 -0
  156. package/drizzle/0304_personal_workspace_private_session_reads.sql +97 -0
  157. package/drizzle/0305_personal_resource_grant_management.sql +584 -0
  158. package/drizzle/0306_atomic_personal_resource_attachments.sql +1374 -0
  159. package/drizzle/0307_session_attention_state.sql +51 -0
  160. package/drizzle/0308_session_archives.sql +35 -0
  161. package/drizzle/0309_channel_project_pins.sql +6 -0
  162. package/drizzle/0310_channel_project_order.sql +27 -0
  163. package/drizzle/0311_company_scope_and_private_session_create.sql +656 -0
  164. package/drizzle/0312_quiescent_session_tree_deletion.sql +39 -0
  165. package/drizzle/0313_private_child_session_authority.sql +365 -0
  166. package/drizzle/0314_unregistered_organization_invitations.sql +606 -0
  167. package/drizzle/0315_personal_github_repository_selection.sql +624 -0
  168. package/drizzle/0316_human_confirmed_activation_resumed_generation.sql +869 -0
  169. package/drizzle/0317_session_goal_continuation_hold.sql +64 -0
  170. package/drizzle/0318_session_turn_startup_milestones.sql +115 -0
  171. package/drizzle/0319_event_triggered_automations.sql +254 -0
  172. package/drizzle/0320_pr_review_pack.sql +113 -0
  173. package/drizzle/0321_slack_bot_environment_display_name.sql +15 -0
  174. package/drizzle/0322_session_turns_unclaimed_prompt_trigger_index.sql +5 -0
  175. package/drizzle/0323_organization_private_session_enablement.sql +489 -0
  176. package/drizzle/0324_human_confirmed_company_profile_agent_admin.sql +856 -0
  177. package/drizzle/0325_child_lifecycle_notices.sql +44 -0
  178. package/drizzle/0326_interaction_operation_error_codes.sql +62 -0
  179. package/drizzle/0327_slack_first_task_hint.sql +29 -0
  180. package/drizzle/0328_session_background_commands.sql +590 -0
  181. package/drizzle/0329_slack_orchestration_delivery_events.sql +91 -0
  182. package/drizzle/0330_api_key_descriptions.sql +20 -0
  183. package/drizzle/0331_managed_organization_creation.sql +163 -0
  184. package/drizzle/0332_organization_shared_workspace_control_plane.sql +539 -0
  185. package/drizzle/0333_session_turn_prompt_routing.sql +45 -0
  186. package/drizzle/0334_connected_machine_workspace_root.sql +99 -0
  187. package/drizzle/0335_slack_workspace_routing.sql +460 -0
  188. package/drizzle/0336_atomic_session_fork_visibility.sql +667 -0
  189. package/drizzle/0337_slack_routed_action_handles.sql +189 -0
  190. package/drizzle/0338_atomic_connected_machine_attachments.sql +410 -0
  191. package/drizzle/0339_document_authority_reclassification.sql +1153 -0
  192. package/drizzle/0340_tenancy_backfill_activation_evidence.sql +1347 -0
  193. package/drizzle/0341_slack_routing_probe_organization_fence.sql +109 -0
  194. package/package.json +10 -6
  195. package/src/attached-browser-devices.ts +233 -5
  196. package/src/automations.ts +911 -0
  197. package/src/browser-sessions.ts +10 -0
  198. package/src/capability-integrations.ts +175 -1
  199. package/src/child-lifecycle-notices.ts +241 -0
  200. package/src/codemode-operations.ts +1 -35
  201. package/src/company-brain-context-selection-schema.ts +100 -0
  202. package/src/company-brain-context-selection.ts +359 -0
  203. package/src/company-brain-governed-writes.ts +1170 -0
  204. package/src/company-brain.ts +309 -0
  205. package/src/company-profile-agent-admin.ts +225 -0
  206. package/src/company-profile-schema.ts +121 -1
  207. package/src/company-profile.ts +21 -0
  208. package/src/computer-sessions.ts +10 -1
  209. package/src/connection-authority.ts +290 -0
  210. package/src/connection-scopes.ts +20 -0
  211. package/src/connection-tenancy-backfill.ts +81 -0
  212. package/src/connection-token-resolver.ts +263 -31
  213. package/src/database.ts +75 -2
  214. package/src/editable-artifact-durable-export.ts +27 -0
  215. package/src/editable-artifacts-schema.ts +10 -5
  216. package/src/editable-artifacts.ts +21 -11
  217. package/src/governed-learning-activation-schema.ts +121 -0
  218. package/src/governed-learning-activation.ts +588 -0
  219. package/src/governed-learning-evaluator-schema.ts +72 -0
  220. package/src/governed-learning-evaluator.ts +217 -0
  221. package/src/index.ts +12001 -1699
  222. package/src/insights.ts +107 -0
  223. package/src/integration-bindings.ts +88 -6
  224. package/src/integration-facets.ts +287 -84
  225. package/src/interaction-placement-loss.ts +234 -0
  226. package/src/knowledge-source-sync-schema.ts +83 -0
  227. package/src/knowledge-source-sync.ts +530 -0
  228. package/src/managed-human-provisioning.ts +116 -0
  229. package/src/memory-domain.ts +27 -32
  230. package/src/migrate.ts +77 -1
  231. package/src/new-session-drafts.ts +229 -35
  232. package/src/organization-membership-backfill.ts +735 -0
  233. package/src/organization-membership-lifecycle.ts +985 -0
  234. package/src/pr-review.ts +890 -0
  235. package/src/preference-registry.ts +31 -1
  236. package/src/provision-roles.ts +931 -24
  237. package/src/runtime-posture-cli.ts +2 -0
  238. package/src/runtime-posture.ts +1315 -52
  239. package/src/schema.ts +3336 -438
  240. package/src/scoped-knowledge-schema.ts +16 -8
  241. package/src/scoped-knowledge.ts +1 -1
  242. package/src/session-background-commands.ts +759 -0
  243. package/src/session-control.ts +640 -74
  244. package/src/session-goal-pacing.ts +126 -0
  245. package/src/session-queue-commands.ts +450 -98
  246. package/src/session-realtime-context.ts +19 -3
  247. package/src/session-realtime-ledger.ts +75 -12
  248. package/src/session-realtime-mirror.ts +1 -1
  249. package/src/session-tenancy.ts +403 -49
  250. package/src/session-tool-call-settlement.ts +38 -29
  251. package/src/slack-routing-personal-workspace.ts +67 -0
  252. package/src/slack-routing.ts +469 -0
  253. package/src/slack-task-policy-schema.ts +5 -0
  254. package/src/slack-task-policy.ts +18 -0
  255. package/src/slack-user-link-access.ts +17 -1
  256. package/src/task-notes-schema.ts +74 -0
  257. package/src/task-notes.ts +124 -2
  258. package/src/turn-initiator.ts +8 -0
  259. package/src/user-resource-authority.ts +377 -0
  260. package/src/workspace-authority.ts +160 -0
  261. package/src/workspace-instruction-policies-schema.ts +53 -1
  262. package/src/workspace-instruction-policies.ts +528 -77
  263. package/src/workspace-learning-policy.ts +21 -5
  264. package/src/workspace-membership-permissions.ts +9 -0
  265. package/dist/chunk-5KTIEDX7.js.map +0 -1
  266. package/dist/chunk-FPVAD4CO.js +0 -117
  267. package/dist/chunk-FPVAD4CO.js.map +0 -1
  268. package/dist/chunk-HSOWSYOX.js.map +0 -1
  269. package/dist/chunk-SK7YYHBI.js.map +0 -1
  270. package/dist/chunk-VKLB2ZGI.js +0 -2389
  271. package/dist/chunk-VKLB2ZGI.js.map +0 -1
  272. package/dist/chunk-Z7VYMNPZ.js.map +0 -1
  273. /package/dist/{chunk-GYO7ED2Q.js.map → chunk-EULAN2NP.js.map} +0 -0
  274. /package/dist/{chunk-VTPRIXKG.js.map → chunk-NJVZPWXY.js.map} +0 -0
@@ -0,0 +1,95 @@
1
+ import { ConnectionAuthoritySummary, ConnectionUseAttribution, ConnectionUseAuthorizationResult, type IssueConnectionUseGrantRequest, type ConnectionUseDenialReason as ConnectionUseDenialReasonValue } from "@opengeni/contracts/connection-authority";
2
+ import { type ConnectionKind as ConnectionKindValue, type UserResourceDelegation } from "@opengeni/contracts";
3
+ import { type Database } from "./database.js";
4
+ export declare function listSelfConnectionAuthorities(db: Database, input: {
5
+ accountId: string;
6
+ workspaceId: string;
7
+ subjectId: string;
8
+ }): Promise<ConnectionAuthoritySummary[]>;
9
+ export declare function issueSelfConnectionUseGrant(db: Database, input: {
10
+ accountId: string;
11
+ workspaceId: string;
12
+ subjectId: string;
13
+ authorityId: string;
14
+ request: IssueConnectionUseGrantRequest;
15
+ }): Promise<{
16
+ grantId: string;
17
+ targetWorkspaceId: string;
18
+ targetSessionId: string | null;
19
+ mode: "always" | "once" | "session";
20
+ context: "user_private" | "workspace_shared";
21
+ authorityEpoch: number | null;
22
+ generation: number;
23
+ status: "active" | "consumed" | "expired" | "revoked";
24
+ expiresAt: string | null;
25
+ delegation: {
26
+ authorityId: string;
27
+ grantId: string;
28
+ organizationId: string;
29
+ workspaceId: string;
30
+ sessionId: string | null;
31
+ action: string;
32
+ mode: "always" | "once" | "session";
33
+ context: "user_private" | "workspace_shared";
34
+ authorityEpoch: number | null;
35
+ authorityGeneration: number;
36
+ grantGeneration: number;
37
+ resourceVersionId?: string | null | undefined;
38
+ };
39
+ action: "connection.use";
40
+ }>;
41
+ export declare function revokeSelfConnectionUseGrant(db: Database, input: {
42
+ accountId: string;
43
+ workspaceId: string;
44
+ subjectId: string;
45
+ grantId: string;
46
+ }): Promise<{
47
+ grantId: string;
48
+ generation: number;
49
+ status: "revoked";
50
+ revokedAt: string;
51
+ }>;
52
+ /**
53
+ * Resolves the immutable physical origin for one explicit common-user
54
+ * connection selection. The SECURITY DEFINER database boundary proves the
55
+ * owning human, active organization membership, target-workspace access, and
56
+ * exact authority/grant generations without exposing credentials or allowing
57
+ * an ambient cross-workspace inventory.
58
+ */
59
+ export declare function resolvePersonalConnectionAuthoritySelectionOrigin(db: Database, input: {
60
+ accountId: string;
61
+ targetWorkspaceId: string;
62
+ subjectId: string;
63
+ connectionId: string;
64
+ delegation: UserResourceDelegation;
65
+ }): Promise<string | null>;
66
+ export declare function resolveConnectionUseAuthority(db: Database, input: {
67
+ snapshot: unknown;
68
+ }): Promise<ConnectionUseAuthorizationResult>;
69
+ export type AcceptedConnectionUseContext = {
70
+ accountId: string;
71
+ workspaceId: string;
72
+ sessionId: string;
73
+ turnId: string;
74
+ attemptId: string;
75
+ executionGeneration: number;
76
+ physicalRequestId: string;
77
+ usePhase: "credential_resolution" | "provider_request";
78
+ };
79
+ export type AcceptedConnectionUseResolution = {
80
+ status: "denied";
81
+ reason: ConnectionUseDenialReasonValue;
82
+ } | {
83
+ status: "authorized";
84
+ originWorkspaceId: string;
85
+ connectionKind: ConnectionKindValue;
86
+ attribution: ConnectionUseAttribution;
87
+ };
88
+ export declare function resolveAcceptedConnectionUse(db: Database, input: AcceptedConnectionUseContext & {
89
+ serverId: string;
90
+ connectionId?: string;
91
+ providerDomain: string;
92
+ connectionKind?: ConnectionKindValue;
93
+ subjectScope?: "workspace" | "subject";
94
+ ownerSubjectId?: string;
95
+ }): Promise<AcceptedConnectionUseResolution>;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Canonical comparison key for provider-reported OAuth scopes.
3
+ *
4
+ * Google may return the canonical userinfo scope URLs after the application
5
+ * requested the standard `email` / `profile` aliases. Microsoft scope names
6
+ * are case-insensitive. All other providers retain exact comparison.
7
+ */
8
+ export declare function connectionScopeKey(providerDomain: string, value: string): string;
@@ -0,0 +1,41 @@
1
+ import { type Database } from "./database.js";
2
+ export type ConnectionAuthorityClassificationReport = {
3
+ schemaVersion: 1;
4
+ organizationId: string;
5
+ runKey: string | null;
6
+ rewroteConnectionRows: false;
7
+ receiptId?: string;
8
+ connections: {
9
+ total: number;
10
+ workspaceOwned: number;
11
+ userOwned: number;
12
+ deterministicRepairPending: number;
13
+ unresolved: number;
14
+ };
15
+ };
16
+ export type ConnectionAuthorityBackfillReport = {
17
+ schemaVersion: 1;
18
+ organizationId: string;
19
+ dryRun: boolean;
20
+ limit: number;
21
+ candidates: number;
22
+ upgraded: number;
23
+ moreLikely: boolean;
24
+ };
25
+ /**
26
+ * Full-population connection authority classification. Supplying a fresh run
27
+ * key writes one immutable migration-0300 receipt and exact unresolved rows.
28
+ */
29
+ export declare function classifyOrganizationConnectionAuthority(db: Database, input: {
30
+ organizationId: string;
31
+ runKey?: string | null;
32
+ }): Promise<ConnectionAuthorityClassificationReport>;
33
+ /**
34
+ * One bounded, resumable legacy_user -> user upgrade batch. Dry-run is the
35
+ * default; candidates are claimed with SKIP LOCKED when applying.
36
+ */
37
+ export declare function backfillOrganizationConnectionAuthority(db: Database, input: {
38
+ organizationId: string;
39
+ limit?: number;
40
+ dryRun?: boolean;
41
+ }): Promise<ConnectionAuthorityBackfillReport>;
@@ -1,9 +1,11 @@
1
1
  import { environmentsEncryptionKeyBytes, type McpServerConnectionRef, type Settings } from "@opengeni/config";
2
2
  import type { ConnectionCredentialPlacement, ConnectionKind, ConnectionCredentialsPort, ConnectionStatus, McpConnectionResourceScope, McpCredentialAuthNeededReason, McpCredentialsRequest, TurnInitiator, TurnInitiatorContext } from "@opengeni/contracts";
3
+ import { type ConnectionUseAttribution, type ConnectionUseAuthorizationResult } from "@opengeni/contracts/connection-authority";
3
4
  import { type DnsLookup, type FetchLike } from "@opengeni/network";
4
5
  export { isPrivateAddress } from "@opengeni/network";
5
6
  import { encryptEnvironmentValue } from "./environment-crypto.js";
6
7
  import type { Database } from "./database.js";
8
+ import type { AcceptedConnectionUseContext, AcceptedConnectionUseResolution } from "./connection-authority.js";
7
9
  export type ConnectionCredentialForBroker = {
8
10
  id: string;
9
11
  accountId: string;
@@ -17,6 +19,8 @@ export type ConnectionCredentialForBroker = {
17
19
  expiresAt: Date | null;
18
20
  lastRefreshAt: Date | null;
19
21
  version: number;
22
+ /** Immutable execution authority generation; distinct from token refresh version. */
23
+ authorityGeneration?: number;
20
24
  metadata: Record<string, unknown>;
21
25
  };
22
26
  export type ConnectionCredentialLookupInput = {
@@ -26,6 +30,7 @@ export type ConnectionCredentialLookupInput = {
26
30
  kind?: ConnectionKind;
27
31
  subjectId?: string | null;
28
32
  allowSubjectOwned?: boolean;
33
+ expectedAuthorityGeneration?: number;
29
34
  };
30
35
  export type ConnectionTokenRefreshInput = {
31
36
  id: string;
@@ -34,6 +39,7 @@ export type ConnectionTokenRefreshInput = {
34
39
  credentialEncrypted: string;
35
40
  expiresAt: Date | null;
36
41
  grantedScopes?: string[];
42
+ metadata?: Record<string, unknown>;
37
43
  lastRefreshAt: Date;
38
44
  subjectId?: string | null;
39
45
  };
@@ -50,6 +56,14 @@ export type ResolveConnectionCredentialResult = {
50
56
  connectionId: string;
51
57
  /** Exact durable version when the credential came from the local connection store. */
52
58
  connectionVersion?: number;
59
+ /** Metadata-only owner attribution from the immediate pre-use fence. */
60
+ connectionUseAttribution?: ConnectionUseAttribution;
61
+ /**
62
+ * Revalidate the exact accepted attempt immediately before one target
63
+ * provider request. Credential lookup/refresh is a separate audited
64
+ * boundary and must not manufacture a provider-request fact by itself.
65
+ */
66
+ authorizeProviderRequest?: () => Promise<boolean>;
53
67
  expiresAt?: Date | null;
54
68
  } | {
55
69
  status: "auth_needed";
@@ -75,6 +89,10 @@ export type ResolveConnectionCredentialInput = {
75
89
  /** Defaults to header-only MCP transport. */
76
90
  credentialTarget?: "mcp" | "http_api";
77
91
  forceRefresh?: boolean;
92
+ /** Exact immutable accepted-work authority; never credential-bearing. */
93
+ connectionUseAuthority?: unknown;
94
+ /** Exact accepted attempt plus one stable physical-provider request id. */
95
+ connectionUseContext?: AcceptedConnectionUseContext;
78
96
  };
79
97
  export type HostMcpCredentialResolverContext = {
80
98
  accountId: string;
@@ -87,7 +105,6 @@ export type HostMcpCredentialResolverContext = {
87
105
  initiator: TurnInitiator;
88
106
  initiatorContext: TurnInitiatorContext;
89
107
  surface: McpCredentialsRequest["surface"];
90
- allowOfficialGmailRestDestination?: boolean;
91
108
  };
92
109
  export declare class HostMcpCredentialScopeError extends Error {
93
110
  constructor(field: "accountId" | "workspaceId" | "sessionId");
@@ -111,6 +128,17 @@ export type ConnectionBrokerDeps = {
111
128
  encrypt: typeof encryptEnvironmentValue;
112
129
  keyBytes: typeof environmentsEncryptionKeyBytes;
113
130
  now: () => Date;
131
+ authorizeUse?: (db: Database, input: {
132
+ snapshot: unknown;
133
+ }) => Promise<ConnectionUseAuthorizationResult>;
134
+ authorizeAcceptedUse?: (db: Database, input: AcceptedConnectionUseContext & {
135
+ serverId: string;
136
+ connectionId?: string;
137
+ providerDomain: string;
138
+ connectionKind?: ConnectionKind;
139
+ subjectScope?: "workspace" | "subject";
140
+ ownerSubjectId?: string;
141
+ }) => Promise<AcceptedConnectionUseResolution>;
114
142
  };
115
143
  export type PermanentConnectionRefreshFailure = {
116
144
  workspaceId: string;
@@ -152,4 +180,5 @@ export declare function refreshOAuthConnectionCredential(cred: ConnectionCredent
152
180
  credential: Record<string, unknown>;
153
181
  expiresAt: Date | null;
154
182
  grantedScopes?: string[];
183
+ metadata?: Record<string, unknown>;
155
184
  }>;
@@ -57,6 +57,13 @@ export type RlsStrategy = "force" | "scoped";
57
57
  * `auth_users` directly. Returns the user id, or null when no such user exists.
58
58
  */
59
59
  export type UserLookup = (db: Database, email: string) => Promise<string | null>;
60
+ export type ManagedUserProfile = {
61
+ id: string;
62
+ name: string | null;
63
+ email: string;
64
+ };
65
+ /** Host identity projection used by organization administration rosters. */
66
+ export type UserProfileLookup = (db: Database, userIds: readonly string[]) => Promise<ManagedUserProfile[]>;
60
67
  export type CreateDbOptions = {
61
68
  /**
62
69
  * The Postgres `search_path` for this connection (Step I, §7.8 runtime half).
@@ -74,6 +81,8 @@ export type CreateDbOptions = {
74
81
  rlsStrategy?: RlsStrategy;
75
82
  /** Host-provided user-by-email resolver; unset → today's raw `auth_users` query. */
76
83
  userLookup?: UserLookup;
84
+ /** Host-provided user profile projection; unset → standalone `auth_users`. */
85
+ userProfileLookup?: UserProfileLookup;
77
86
  /** postgres-js pool size; defaults to today's `10`. */
78
87
  max?: number;
79
88
  /**
@@ -94,6 +103,7 @@ export type CreateDbOptions = {
94
103
  type DbBinding = {
95
104
  rlsStrategy: RlsStrategy;
96
105
  userLookup?: UserLookup;
106
+ userProfileLookup?: UserProfileLookup;
97
107
  };
98
108
  /** The strategy bound to a handle (or the `"force"` default). */
99
109
  export declare function rlsStrategyFor(db: Database): RlsStrategy;
@@ -144,6 +154,7 @@ export declare function createDb(databaseUrl: string, options?: CreateDbOptions)
144
154
  export declare function registerDbBinding(db: Database, binding: {
145
155
  rlsStrategy?: RlsStrategy;
146
156
  userLookup?: UserLookup;
157
+ userProfileLookup?: UserProfileLookup;
147
158
  }): void;
148
159
  export declare function setRlsContext(db: Database, context: RlsContext): Promise<void>;
149
160
  export declare function withRlsContext<T>(db: Database, context: RlsContext, fn: (db: Database) => Promise<T>, transactionConfig?: PgTransactionConfig): Promise<T>;
@@ -166,6 +177,14 @@ export declare function withSessionActivityRlsContext<T>(db: Database, context:
166
177
  workspaceId: string;
167
178
  }, fn: (db: SessionActivityDatabase) => Promise<T>, transactionConfig?: PgTransactionConfig): Promise<T>;
168
179
  export declare function withWorkspaceSessionActivityRls<T>(db: Database, workspaceId: string, fn: (db: SessionActivityDatabase) => Promise<T>, transactionConfig?: PgTransactionConfig): Promise<T>;
180
+ /**
181
+ * Run one of several ordered workspace activity scopes inside a caller-owned
182
+ * transaction. Each scope is fully finalized before restoring the caller's
183
+ * gate GUCs, so the next workspace can reuse the same outer transaction.
184
+ */
185
+ export declare function withRestoredSessionActivityRlsContext<T>(db: Database, context: RlsContext & {
186
+ workspaceId: string;
187
+ }, fn: (db: SessionActivityDatabase) => Promise<T>): Promise<T>;
169
188
  /**
170
189
  * Open one nested savepoint without losing the gate brand. Drizzle correctly
171
190
  * preserves the backend-local gate GUCs, but its structural transaction type
@@ -76,6 +76,9 @@ export type PersistedEditableArtifactMaterializationJob = Readonly<{
76
76
  completedAt: string | null;
77
77
  result: PersistedEditableArtifactMaterializationResult | null;
78
78
  }>;
79
+ export type ReadAuthorizedEditableArtifactMaterializationRequest = ExportContext & Readonly<{
80
+ jobId: string;
81
+ }>;
79
82
  export type PersistedEditableArtifactExportSnapshot = Readonly<{
80
83
  modality: PersistedEditableArtifactExportModality;
81
84
  snapshotId: string;
@@ -150,4 +153,11 @@ export declare class PostgresEditableArtifactDurableExportStore {
150
153
  objectReference: string | null;
151
154
  }>>>;
152
155
  }
156
+ /**
157
+ * Reads one canonical materialization through the same exact actor authority
158
+ * used by editable-artifact export. This is intentionally narrower than the
159
+ * general store API: publication may verify an already-returned immutable
160
+ * receipt, but it cannot manufacture or widen artifact authority.
161
+ */
162
+ export declare function readAuthorizedEditableArtifactMaterialization(db: Database, input: ReadAuthorizedEditableArtifactMaterializationRequest): Promise<PersistedEditableArtifactMaterializationJob | null>;
153
163
  export {};
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  rawRows,
3
3
  withRlsContext
4
- } from "./chunk-Z7VYMNPZ.js";
5
- import "./chunk-5KTIEDX7.js";
4
+ } from "./chunk-SCPUJS53.js";
5
+ import "./chunk-PR2WMLOQ.js";
6
6
  import "./chunk-PZ5AY32C.js";
7
7
 
8
8
  // src/editable-artifact-durable-export.ts
@@ -232,6 +232,20 @@ var PostgresEditableArtifactDurableExportStore = class {
232
232
  });
233
233
  }
234
234
  };
235
+ async function readAuthorizedEditableArtifactMaterialization(db, input) {
236
+ const context = validateContext(input);
237
+ const jobId = stableId(input.jobId, "job id");
238
+ return await withRlsContext(db, context.scope, async (tx) => {
239
+ const artifact = await lockArtifact(tx, context.scope, context.artifactId);
240
+ if (!artifact) return null;
241
+ const authorization = await authorize(tx, context);
242
+ if (!authorization.allowed || authorization.revision !== artifact.authorizationRevision) {
243
+ return null;
244
+ }
245
+ const loaded = await loadJob(tx, context.scope, context.artifactId, jobId, false);
246
+ return loaded?.job ?? null;
247
+ });
248
+ }
235
249
  async function authorize(tx, request) {
236
250
  const actor = request.actor;
237
251
  const rows = await rawRows(
@@ -783,6 +797,7 @@ function contractViolation(message) {
783
797
  }
784
798
  export {
785
799
  EditableArtifactDurableExportPersistenceError,
786
- PostgresEditableArtifactDurableExportStore
800
+ PostgresEditableArtifactDurableExportStore,
801
+ readAuthorizedEditableArtifactMaterialization
787
802
  };
788
803
  //# sourceMappingURL=editable-artifact-durable-export.js.map