@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,199 @@
1
+ -- deployment-mode: rolling
2
+ -- A direct Channel-A request may retain a provider process while it is still
3
+ -- polling that process itself. Reconciliation may start only after the exact
4
+ -- direct holder is released (normal return) or TTL-reaped (owner death).
5
+
6
+ DO $privileged_functions$
7
+ DECLARE data_schema text := current_schema();
8
+ BEGIN
9
+ EXECUTE format($create$
10
+ CREATE OR REPLACE FUNCTION opengeni_private.claim_terminal_retained_processes(
11
+ p_claim_id uuid,
12
+ p_limit integer,
13
+ p_claim_ttl_ms bigint
14
+ )
15
+ RETURNS TABLE (
16
+ account_id uuid,
17
+ workspace_id uuid,
18
+ session_id uuid,
19
+ process_id uuid,
20
+ claim_id uuid,
21
+ owner_state text,
22
+ owner_attempt_outcome text
23
+ )
24
+ LANGUAGE plpgsql
25
+ SECURITY DEFINER
26
+ SET search_path = pg_catalog
27
+ AS $function$
28
+ BEGIN
29
+ IF p_limit < 1 OR p_limit > 100 THEN
30
+ RAISE EXCEPTION 'retained-process reconciliation limit must be between 1 and 100'
31
+ USING ERRCODE = '22023';
32
+ END IF;
33
+ IF p_claim_ttl_ms < 0 OR p_claim_ttl_ms > 3600000 THEN
34
+ RAISE EXCEPTION 'retained-process reconciliation claim TTL is invalid'
35
+ USING ERRCODE = '22023';
36
+ END IF;
37
+
38
+ PERFORM pg_catalog.set_config('opengeni.sandbox_recovery_protocol_v2', '1', true);
39
+
40
+ RETURN QUERY
41
+ WITH candidate_window AS MATERIALIZED (
42
+ SELECT process.id,
43
+ process.workspace_id,
44
+ process.parent_admission_id,
45
+ process.owner_actor_kind,
46
+ process.owner_turn_id,
47
+ process.owner_attempt_id,
48
+ process.reconcile_after AS due_at,
49
+ process.started_at
50
+ FROM %1$I.sandbox_retained_processes process
51
+ WHERE process.state = 'active'
52
+ AND process.reconcile_after <= pg_catalog.now()
53
+ ORDER BY process.reconcile_after, process.started_at, process.id
54
+ FOR UPDATE OF process SKIP LOCKED
55
+ LIMIT p_limit
56
+ ), classified AS MATERIALIZED (
57
+ SELECT candidate.id,
58
+ candidate.due_at,
59
+ candidate.started_at,
60
+ CASE
61
+ WHEN candidate.owner_actor_kind = 'direct' THEN direct_owner.live IS NULL
62
+ ELSE attempt.state = 'closed'
63
+ END AS eligible,
64
+ CASE
65
+ WHEN candidate.owner_actor_kind = 'direct' THEN 'direct'
66
+ ELSE COALESCE(turn_row.status, 'missing')
67
+ END AS owner_state,
68
+ attempt.outcome AS owner_attempt_outcome
69
+ FROM candidate_window candidate
70
+ LEFT JOIN LATERAL (
71
+ SELECT true AS live
72
+ FROM %1$I.sandbox_workspace_mutation_admissions admission
73
+ JOIN %1$I.sandbox_lease_holders holder
74
+ ON holder.lease_id = admission.lease_id
75
+ AND holder.account_id = admission.account_id
76
+ AND holder.workspace_id = admission.workspace_id
77
+ AND holder.kind = 'direct'
78
+ AND holder.holder_id = admission.holder_id
79
+ AND holder.subject_id = admission.session_id
80
+ WHERE candidate.owner_actor_kind = 'direct'
81
+ AND admission.id = candidate.parent_admission_id
82
+ AND admission.actor_kind = 'direct'
83
+ LIMIT 1
84
+ ) direct_owner ON true
85
+ LEFT JOIN LATERAL (
86
+ SELECT source_turn.status
87
+ FROM %1$I.session_turns source_turn
88
+ WHERE source_turn.workspace_id = candidate.workspace_id
89
+ AND source_turn.id = candidate.owner_turn_id
90
+ LIMIT 1
91
+ ) turn_row ON true
92
+ LEFT JOIN LATERAL (
93
+ SELECT source_attempt.state, source_attempt.outcome
94
+ FROM %1$I.session_turn_attempts source_attempt
95
+ WHERE source_attempt.workspace_id = candidate.workspace_id
96
+ AND source_attempt.id = candidate.owner_attempt_id
97
+ LIMIT 1
98
+ ) attempt ON true
99
+ ), inspected AS (
100
+ UPDATE %1$I.sandbox_retained_processes process SET
101
+ reconcile_after = CASE
102
+ WHEN classified.eligible THEN pg_catalog.now()
103
+ + pg_catalog.make_interval(secs => p_claim_ttl_ms / 1000.0)
104
+ ELSE pg_catalog.now() + interval '30 seconds'
105
+ END,
106
+ reconcile_claim_id = CASE WHEN classified.eligible THEN p_claim_id ELSE NULL END,
107
+ reconcile_claimed_at = CASE
108
+ WHEN classified.eligible THEN pg_catalog.now() ELSE NULL
109
+ END,
110
+ reconcile_attempts = process.reconcile_attempts
111
+ + CASE WHEN classified.eligible THEN 1 ELSE 0 END,
112
+ last_reconcile_outcome = CASE
113
+ WHEN classified.eligible THEN 'claimed' ELSE 'owner_active'
114
+ END
115
+ FROM classified
116
+ WHERE process.id = classified.id
117
+ AND process.state = 'active'
118
+ RETURNING process.account_id,
119
+ process.workspace_id,
120
+ process.session_id,
121
+ process.id,
122
+ process.reconcile_claim_id,
123
+ classified.due_at,
124
+ classified.started_at,
125
+ classified.eligible,
126
+ classified.owner_state,
127
+ classified.owner_attempt_outcome
128
+ )
129
+ SELECT inspected.account_id,
130
+ inspected.workspace_id,
131
+ inspected.session_id,
132
+ inspected.id,
133
+ inspected.reconcile_claim_id,
134
+ inspected.owner_state,
135
+ inspected.owner_attempt_outcome
136
+ FROM inspected
137
+ WHERE inspected.eligible
138
+ ORDER BY inspected.due_at, inspected.started_at, inspected.id;
139
+
140
+ SET CONSTRAINTS %1$I.sandbox_retained_processes_identity_v2 IMMEDIATE;
141
+ SET CONSTRAINTS %1$I.sandbox_retained_processes_identity_v2 DEFERRED;
142
+ END;
143
+ $function$;
144
+ $create$, data_schema);
145
+
146
+ EXECUTE format($create$
147
+ CREATE OR REPLACE FUNCTION opengeni_private.count_active_retained_processes_by_owner_state()
148
+ RETURNS TABLE (owner_state text, active_count bigint, terminal_owner_count bigint)
149
+ LANGUAGE sql
150
+ SECURITY DEFINER
151
+ SET search_path = pg_catalog
152
+ AS $function$
153
+ SELECT inventory.owner_state,
154
+ pg_catalog.count(*)::bigint AS active_count,
155
+ pg_catalog.count(*) FILTER (WHERE inventory.terminal_owner)::bigint
156
+ AS terminal_owner_count
157
+ FROM (
158
+ SELECT 'direct'::text AS owner_state,
159
+ NOT EXISTS (
160
+ SELECT 1
161
+ FROM %1$I.sandbox_workspace_mutation_admissions admission
162
+ JOIN %1$I.sandbox_lease_holders holder
163
+ ON holder.lease_id = admission.lease_id
164
+ AND holder.account_id = admission.account_id
165
+ AND holder.workspace_id = admission.workspace_id
166
+ AND holder.kind = 'direct'
167
+ AND holder.holder_id = admission.holder_id
168
+ AND holder.subject_id = admission.session_id
169
+ WHERE admission.id = process.parent_admission_id
170
+ AND admission.actor_kind = 'direct'
171
+ ) AS terminal_owner
172
+ FROM %1$I.sandbox_retained_processes process
173
+ WHERE process.state = 'active'
174
+ AND process.owner_actor_kind = 'direct'
175
+ UNION ALL
176
+ SELECT COALESCE(turn_row.status, 'missing') AS owner_state,
177
+ attempt.state = 'closed' AS terminal_owner
178
+ FROM %1$I.sandbox_retained_processes process
179
+ LEFT JOIN LATERAL (
180
+ SELECT source_turn.status
181
+ FROM %1$I.session_turns source_turn
182
+ WHERE source_turn.workspace_id = process.workspace_id
183
+ AND source_turn.id = process.owner_turn_id
184
+ LIMIT 1
185
+ ) turn_row ON true
186
+ LEFT JOIN LATERAL (
187
+ SELECT source_attempt.state
188
+ FROM %1$I.session_turn_attempts source_attempt
189
+ WHERE source_attempt.workspace_id = process.workspace_id
190
+ AND source_attempt.id = process.owner_attempt_id
191
+ LIMIT 1
192
+ ) attempt ON true
193
+ WHERE process.state = 'active'
194
+ AND process.owner_actor_kind = 'turn'
195
+ ) inventory
196
+ GROUP BY inventory.owner_state;
197
+ $function$;
198
+ $create$, data_schema);
199
+ END $privileged_functions$;
@@ -0,0 +1,45 @@
1
+ -- deployment-mode: maintenance
2
+ -- Add an optional, revision-fenced command resource policy to each Connected
3
+ -- Machine enrollment. NULL remains the unrestricted product default. New
4
+ -- control planes may write the policy while old runners are still present;
5
+ -- runtime capability gating fails commands closed until an enforcing runner is
6
+ -- authoritative. Pre-feature control-plane workers must not overlap this release:
7
+ -- they do not read the desired columns and could dispatch a command without them.
8
+ -- Rollback to one of those binaries requires every desired limit to be cleared
9
+ -- under the same maintenance fence first.
10
+
11
+ SET LOCAL lock_timeout = '5s';
12
+ SET LOCAL statement_timeout = '30min';
13
+
14
+ ALTER TABLE enrollments
15
+ ADD COLUMN operation_memory_max_bytes bigint,
16
+ ADD COLUMN operation_memory_high_bytes bigint,
17
+ ADD COLUMN operation_cpu_max_millicores bigint,
18
+ ADD COLUMN operation_policy_revision integer NOT NULL DEFAULT 0,
19
+ ADD COLUMN operation_policy_updated_at timestamptz,
20
+ ADD CONSTRAINT enrollments_operation_memory_max_shape_chk CHECK (
21
+ operation_memory_max_bytes IS NULL OR (
22
+ operation_memory_max_bytes > 0
23
+ AND operation_memory_max_bytes <= 9007199254740991
24
+ )
25
+ ),
26
+ ADD CONSTRAINT enrollments_operation_memory_high_shape_chk CHECK (
27
+ operation_memory_high_bytes IS NULL OR (
28
+ operation_memory_high_bytes > 0
29
+ AND operation_memory_high_bytes <= 9007199254740991
30
+ )
31
+ ),
32
+ ADD CONSTRAINT enrollments_operation_memory_order_chk CHECK (
33
+ operation_memory_max_bytes IS NULL
34
+ OR operation_memory_high_bytes IS NULL
35
+ OR operation_memory_high_bytes <= operation_memory_max_bytes
36
+ ),
37
+ -- Positive uint32 millicores. The runner chooses a cgroup-v2 period within the
38
+ -- kernel ABI that represents every accepted value exactly (no silent rounding).
39
+ ADD CONSTRAINT enrollments_operation_cpu_shape_chk CHECK (
40
+ operation_cpu_max_millicores IS NULL
41
+ OR operation_cpu_max_millicores BETWEEN 1 AND 4294967295
42
+ ),
43
+ ADD CONSTRAINT enrollments_operation_policy_revision_chk CHECK (
44
+ operation_policy_revision >= 0
45
+ );