@opengeni/db 0.27.9 → 0.27.11

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.
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  provisionRoles
3
- } from "./chunk-2JFRTKTG.js";
3
+ } from "./chunk-RPHPNVWW.js";
4
4
  import "./chunk-PZ5AY32C.js";
5
5
  export {
6
6
  provisionRoles
@@ -4,7 +4,7 @@ import type { Database, RlsStrategy } from "./database";
4
4
  * FORCE-RLS table is an architectural change: update this list in the same
5
5
  * commit as the migration so startup cannot silently accept an unreviewed gap.
6
6
  */
7
- export declare const FORCE_RLS_TABLES: readonly ["agent_run_states", "api_keys", "audit_events", "billing_customers", "capability_catalog_items", "capability_installations", "codex_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "composer_drafts", "connection_disconnect_operations", "connections", "connector_action_policies", "connector_action_requests", "credit_ledger_entries", "device_enrollment_requests", "document_bases", "document_chunks", "documents", "enrollments", "file_uploads", "files", "github_installation_repositories", "github_installations", "host_export_config", "host_export_consumers", "host_export_cursor_state", "host_export_dead_letters", "host_export_outbox", "import_batches", "integration_oauth_state_nonces", "knowledge_change_proposals", "knowledge_claim_evidence", "knowledge_claim_relations", "knowledge_claim_reviews", "knowledge_claims", "knowledge_document_versions", "knowledge_entities", "knowledge_entity_aliases", "knowledge_facts", "knowledge_lifecycle_events", "knowledge_memories", "knowledge_memory_lifecycle_events", "knowledge_memory_relationships", "knowledge_operation_receipts", "knowledge_providers", "knowledge_source_acl_versions", "knowledge_source_objects", "knowledge_sources", "knowledge_sync_runs", "machine_metrics_latest", "machine_metrics_series", "model_call_facts", "new_session_drafts", "pack_installations", "preference_registry_events", "preference_registry_preferences", "preference_registry_revisions", "preference_registry_snapshots", "rig_changes", "rig_versions", "rigs", "sandbox_checkpoint_artifacts", "sandbox_lease_holders", "sandbox_leases", "sandbox_pty_sessions", "sandbox_retained_processes", "sandbox_session_envelopes", "sandbox_workspace_mutation_admissions", "sandboxes", "scheduled_task_runs", "scheduled_tasks", "session_attempt_interruptions", "session_command_receipts", "session_events", "session_goals", "session_history_items", "session_human_input_requests", "session_list_snapshots", "session_mcp_servers", "session_pending_tool_calls", "session_pins", "session_realtime_connections", "session_realtime_context_projections", "session_realtime_entries", "session_realtime_modes", "session_recordings", "session_spawn_denials", "session_stream_acknowledgments", "session_system_update_outbox", "session_system_updates", "session_turn_attempts", "session_turns", "session_workflow_wake_outbox", "sessions", "slack_bot_delete_operations", "slack_bot_post_operations", "slack_bot_user_links", "slack_interaction_inbox", "slack_interaction_progress_deliveries", "slack_interactions", "social_connections", "social_posts", "usage_events", "workspace_artifact_events", "workspace_artifact_versions", "workspace_artifacts", "workspace_captures", "workspace_control_events", "workspace_inference_controls", "workspace_instruction_policy_activation_events", "workspace_instruction_policy_heads", "workspace_instruction_policy_onboarding_proposals", "workspace_instruction_policy_revisions", "workspace_instruction_policy_snapshots", "workspace_model_policies", "workspace_packs", "workspace_session_activity_revisions", "workspace_variable_set_variables", "workspace_variable_sets"];
7
+ export declare const FORCE_RLS_TABLES: readonly ["agent_run_states", "api_keys", "audit_events", "billing_customers", "capability_catalog_items", "capability_installations", "codex_apps_settings", "codex_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "composer_drafts", "connection_disconnect_operations", "connections", "connector_action_policies", "connector_action_requests", "credit_ledger_entries", "device_enrollment_requests", "document_bases", "document_chunks", "documents", "enrollments", "file_uploads", "files", "github_installation_repositories", "github_installations", "host_export_config", "host_export_consumers", "host_export_cursor_state", "host_export_dead_letters", "host_export_outbox", "import_batches", "integration_oauth_state_nonces", "knowledge_change_proposals", "knowledge_claim_evidence", "knowledge_claim_relations", "knowledge_claim_reviews", "knowledge_claims", "knowledge_document_versions", "knowledge_entities", "knowledge_entity_aliases", "knowledge_facts", "knowledge_lifecycle_events", "knowledge_memories", "knowledge_memory_lifecycle_events", "knowledge_memory_relationships", "knowledge_operation_receipts", "knowledge_providers", "knowledge_source_acl_versions", "knowledge_source_objects", "knowledge_sources", "knowledge_sync_runs", "machine_metrics_latest", "machine_metrics_series", "model_call_facts", "new_session_drafts", "pack_installations", "preference_registry_events", "preference_registry_preferences", "preference_registry_revisions", "preference_registry_snapshots", "rig_changes", "rig_versions", "rigs", "sandbox_checkpoint_artifacts", "sandbox_lease_holders", "sandbox_leases", "sandbox_pty_sessions", "sandbox_retained_processes", "sandbox_session_envelopes", "sandbox_workspace_mutation_admissions", "sandboxes", "scheduled_task_runs", "scheduled_tasks", "session_attempt_interruptions", "session_command_receipts", "session_events", "session_goals", "session_history_items", "session_human_input_requests", "session_list_snapshots", "session_mcp_servers", "session_pending_tool_calls", "session_pins", "session_realtime_connections", "session_realtime_context_projections", "session_realtime_entries", "session_realtime_modes", "session_recordings", "session_spawn_denials", "session_stream_acknowledgments", "session_system_update_outbox", "session_system_updates", "session_turn_attempts", "session_turns", "session_workflow_wake_outbox", "sessions", "slack_bot_delete_operations", "slack_bot_post_operations", "slack_bot_user_links", "slack_interaction_inbox", "slack_interaction_progress_deliveries", "slack_interactions", "social_connections", "social_posts", "usage_events", "workspace_artifact_events", "workspace_artifact_versions", "workspace_artifacts", "workspace_captures", "workspace_control_events", "workspace_inference_controls", "workspace_instruction_policy_activation_events", "workspace_instruction_policy_heads", "workspace_instruction_policy_onboarding_proposals", "workspace_instruction_policy_revisions", "workspace_instruction_policy_snapshots", "workspace_model_policies", "workspace_packs", "workspace_session_activity_revisions", "workspace_variable_set_variables", "workspace_variable_sets"];
8
8
  /**
9
9
  * Deployment-global and authentication tables used by ordinary API/worker
10
10
  * traffic. They intentionally do not carry workspace RLS: their access model
@@ -16,7 +16,7 @@ export declare const NON_RLS_RUNTIME_TABLES: readonly ["auth_identities", "auth_
16
16
  * explicit instead of being derived from FORCE_RLS_TABLES: adding a protected
17
17
  * table must not silently grant it broader DML than its migration intended.
18
18
  */
19
- export declare const RUNTIME_FULL_DML_TABLES: readonly ["agent_run_states", "api_keys", "audit_events", "auth_identities", "auth_rate_limits", "auth_sessions", "auth_users", "auth_verifications", "billing_customers", "capability_catalog_items", "capability_installations", "codex_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "composer_drafts", "connection_disconnect_operations", "connections", "connector_action_policies", "connector_action_requests", "credit_ledger_entries", "device_enrollment_requests", "document_bases", "document_chunks", "documents", "enrollments", "file_uploads", "files", "github_installation_repositories", "github_installations", "import_batches", "integration_oauth_clients", "integration_oauth_state_nonces", "knowledge_memories", "machine_metrics_latest", "machine_metrics_series", "managed_accounts", "model_call_facts", "new_session_drafts", "pack_installations", "rig_changes", "rig_versions", "rigs", "sandbox_checkpoint_artifacts", "sandbox_lease_holders", "sandbox_leases", "sandbox_pty_sessions", "sandbox_retained_processes", "sandbox_session_envelopes", "sandbox_workspace_mutation_admissions", "sandboxes", "scheduled_task_runs", "scheduled_tasks", "session_attempt_interruptions", "session_command_receipts", "session_events", "session_goals", "session_history_items", "session_human_input_requests", "session_list_snapshots", "session_mcp_servers", "session_pending_tool_calls", "session_pins", "session_realtime_connections", "session_realtime_context_projections", "session_realtime_entries", "session_realtime_modes", "session_recordings", "session_stream_acknowledgments", "session_system_update_outbox", "session_system_updates", "session_turn_attempts", "session_turns", "session_workflow_wake_outbox", "sessions", "slack_bot_delete_operations", "slack_bot_post_operations", "slack_bot_user_links", "slack_interaction_inbox", "slack_interaction_progress_deliveries", "slack_interactions", "social_connections", "social_posts", "stripe_webhook_events", "usage_events", "workspace_artifacts", "workspace_captures", "workspace_control_events", "workspace_inference_controls", "workspace_instruction_policy_heads", "workspace_memberships", "workspace_model_policies", "workspace_packs", "workspace_session_activity_revisions", "workspace_variable_set_variables", "workspace_variable_sets", "workspaces"];
19
+ export declare const RUNTIME_FULL_DML_TABLES: readonly ["agent_run_states", "api_keys", "audit_events", "auth_identities", "auth_rate_limits", "auth_sessions", "auth_users", "auth_verifications", "billing_customers", "capability_catalog_items", "capability_installations", "codex_apps_settings", "codex_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "composer_drafts", "connection_disconnect_operations", "connections", "connector_action_policies", "connector_action_requests", "credit_ledger_entries", "device_enrollment_requests", "document_bases", "document_chunks", "documents", "enrollments", "file_uploads", "files", "github_installation_repositories", "github_installations", "import_batches", "integration_oauth_clients", "integration_oauth_state_nonces", "knowledge_memories", "machine_metrics_latest", "machine_metrics_series", "managed_accounts", "model_call_facts", "new_session_drafts", "pack_installations", "rig_changes", "rig_versions", "rigs", "sandbox_checkpoint_artifacts", "sandbox_lease_holders", "sandbox_leases", "sandbox_pty_sessions", "sandbox_retained_processes", "sandbox_session_envelopes", "sandbox_workspace_mutation_admissions", "sandboxes", "scheduled_task_runs", "scheduled_tasks", "session_attempt_interruptions", "session_command_receipts", "session_events", "session_goals", "session_history_items", "session_human_input_requests", "session_list_snapshots", "session_mcp_servers", "session_pending_tool_calls", "session_pins", "session_realtime_connections", "session_realtime_context_projections", "session_realtime_entries", "session_realtime_modes", "session_recordings", "session_stream_acknowledgments", "session_system_update_outbox", "session_system_updates", "session_turn_attempts", "session_turns", "session_workflow_wake_outbox", "sessions", "slack_bot_delete_operations", "slack_bot_post_operations", "slack_bot_user_links", "slack_interaction_inbox", "slack_interaction_progress_deliveries", "slack_interactions", "social_connections", "social_posts", "stripe_webhook_events", "usage_events", "workspace_artifacts", "workspace_captures", "workspace_control_events", "workspace_inference_controls", "workspace_instruction_policy_heads", "workspace_memberships", "workspace_model_policies", "workspace_packs", "workspace_session_activity_revisions", "workspace_variable_set_variables", "workspace_variable_sets", "workspaces"];
20
20
  /** Configuration and lifecycle-owned audit rows are read-only at runtime. */
21
21
  export declare const RUNTIME_READ_ONLY_TABLES: readonly ["knowledge_lifecycle_events", "knowledge_memory_lifecycle_events", "knowledge_memory_relationships", "nested_agent_depth_configuration", "preference_registry_events", "preference_registry_snapshots", "workspace_instruction_policy_snapshots"];
22
22
  /** Append-only evidence/revision tables are insertable and queryable, never mutable. */
package/dist/schema.d.ts CHANGED
@@ -2422,66 +2422,6 @@ export declare const codexSubscriptionCredentials: import("drizzle-orm/pg-core")
2422
2422
  identity: undefined;
2423
2423
  generated: undefined;
2424
2424
  }, {}, {}>;
2425
- connectorNamespaces: import("drizzle-orm/pg-core").PgColumn<{
2426
- name: "connector_namespaces";
2427
- tableName: "codex_subscription_credentials";
2428
- dataType: "array";
2429
- columnType: "PgArray";
2430
- data: string[];
2431
- driverParam: string | string[];
2432
- notNull: false;
2433
- hasDefault: false;
2434
- isPrimaryKey: false;
2435
- isAutoincrement: false;
2436
- hasRuntimeDefault: false;
2437
- enumValues: [string, ...string[]];
2438
- baseColumn: import("drizzle-orm").Column<{
2439
- name: "connector_namespaces";
2440
- tableName: "codex_subscription_credentials";
2441
- dataType: "string";
2442
- columnType: "PgText";
2443
- data: string;
2444
- driverParam: string;
2445
- notNull: false;
2446
- hasDefault: false;
2447
- isPrimaryKey: false;
2448
- isAutoincrement: false;
2449
- hasRuntimeDefault: false;
2450
- enumValues: [string, ...string[]];
2451
- baseColumn: never;
2452
- identity: undefined;
2453
- generated: undefined;
2454
- }, {}, {}>;
2455
- identity: undefined;
2456
- generated: undefined;
2457
- }, {}, {
2458
- baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
2459
- name: "connector_namespaces";
2460
- dataType: 'string';
2461
- columnType: 'PgText';
2462
- data: string;
2463
- enumValues: [string, ...string[]];
2464
- driverParam: string;
2465
- }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
2466
- size: undefined;
2467
- }>;
2468
- connectorsCheckedAt: import("drizzle-orm/pg-core").PgColumn<{
2469
- name: "connectors_checked_at";
2470
- tableName: "codex_subscription_credentials";
2471
- dataType: "date";
2472
- columnType: "PgTimestamp";
2473
- data: Date;
2474
- driverParam: string;
2475
- notNull: false;
2476
- hasDefault: false;
2477
- isPrimaryKey: false;
2478
- isAutoincrement: false;
2479
- hasRuntimeDefault: false;
2480
- enumValues: undefined;
2481
- baseColumn: never;
2482
- identity: undefined;
2483
- generated: undefined;
2484
- }, {}, {}>;
2485
2425
  allocatorEnabled: import("drizzle-orm/pg-core").PgColumn<{
2486
2426
  name: "allocator_enabled";
2487
2427
  tableName: "codex_subscription_credentials";
@@ -2672,6 +2612,132 @@ export declare const codexSubscriptionCredentials: import("drizzle-orm/pg-core")
2672
2612
  };
2673
2613
  dialect: 'pg';
2674
2614
  }>;
2615
+ export declare const codexAppsSettings: import("drizzle-orm/pg-core").PgTableWithColumns<{
2616
+ name: "codex_apps_settings";
2617
+ schema: undefined;
2618
+ columns: {
2619
+ id: import("drizzle-orm/pg-core").PgColumn<{
2620
+ name: "id";
2621
+ tableName: "codex_apps_settings";
2622
+ dataType: "string";
2623
+ columnType: "PgUUID";
2624
+ data: string;
2625
+ driverParam: string;
2626
+ notNull: true;
2627
+ hasDefault: true;
2628
+ isPrimaryKey: true;
2629
+ isAutoincrement: false;
2630
+ hasRuntimeDefault: false;
2631
+ enumValues: undefined;
2632
+ baseColumn: never;
2633
+ identity: undefined;
2634
+ generated: undefined;
2635
+ }, {}, {}>;
2636
+ accountId: import("drizzle-orm/pg-core").PgColumn<{
2637
+ name: "account_id";
2638
+ tableName: "codex_apps_settings";
2639
+ dataType: "string";
2640
+ columnType: "PgUUID";
2641
+ data: string;
2642
+ driverParam: string;
2643
+ notNull: true;
2644
+ hasDefault: false;
2645
+ isPrimaryKey: false;
2646
+ isAutoincrement: false;
2647
+ hasRuntimeDefault: false;
2648
+ enumValues: undefined;
2649
+ baseColumn: never;
2650
+ identity: undefined;
2651
+ generated: undefined;
2652
+ }, {}, {}>;
2653
+ workspaceId: import("drizzle-orm/pg-core").PgColumn<{
2654
+ name: "workspace_id";
2655
+ tableName: "codex_apps_settings";
2656
+ dataType: "string";
2657
+ columnType: "PgUUID";
2658
+ data: string;
2659
+ driverParam: string;
2660
+ notNull: true;
2661
+ hasDefault: false;
2662
+ isPrimaryKey: false;
2663
+ isAutoincrement: false;
2664
+ hasRuntimeDefault: false;
2665
+ enumValues: undefined;
2666
+ baseColumn: never;
2667
+ identity: undefined;
2668
+ generated: undefined;
2669
+ }, {}, {}>;
2670
+ credentialId: import("drizzle-orm/pg-core").PgColumn<{
2671
+ name: "credential_id";
2672
+ tableName: "codex_apps_settings";
2673
+ dataType: "string";
2674
+ columnType: "PgUUID";
2675
+ data: string;
2676
+ driverParam: string;
2677
+ notNull: false;
2678
+ hasDefault: false;
2679
+ isPrimaryKey: false;
2680
+ isAutoincrement: false;
2681
+ hasRuntimeDefault: false;
2682
+ enumValues: undefined;
2683
+ baseColumn: never;
2684
+ identity: undefined;
2685
+ generated: undefined;
2686
+ }, {}, {}>;
2687
+ version: import("drizzle-orm/pg-core").PgColumn<{
2688
+ name: "version";
2689
+ tableName: "codex_apps_settings";
2690
+ dataType: "number";
2691
+ columnType: "PgInteger";
2692
+ data: number;
2693
+ driverParam: string | number;
2694
+ notNull: true;
2695
+ hasDefault: true;
2696
+ isPrimaryKey: false;
2697
+ isAutoincrement: false;
2698
+ hasRuntimeDefault: false;
2699
+ enumValues: undefined;
2700
+ baseColumn: never;
2701
+ identity: undefined;
2702
+ generated: undefined;
2703
+ }, {}, {}>;
2704
+ designatedAt: import("drizzle-orm/pg-core").PgColumn<{
2705
+ name: "designated_at";
2706
+ tableName: "codex_apps_settings";
2707
+ dataType: "date";
2708
+ columnType: "PgTimestamp";
2709
+ data: Date;
2710
+ driverParam: string;
2711
+ notNull: false;
2712
+ hasDefault: false;
2713
+ isPrimaryKey: false;
2714
+ isAutoincrement: false;
2715
+ hasRuntimeDefault: false;
2716
+ enumValues: undefined;
2717
+ baseColumn: never;
2718
+ identity: undefined;
2719
+ generated: undefined;
2720
+ }, {}, {}>;
2721
+ updatedAt: import("drizzle-orm/pg-core").PgColumn<{
2722
+ name: "updated_at";
2723
+ tableName: "codex_apps_settings";
2724
+ dataType: "date";
2725
+ columnType: "PgTimestamp";
2726
+ data: Date;
2727
+ driverParam: string;
2728
+ notNull: true;
2729
+ hasDefault: true;
2730
+ isPrimaryKey: false;
2731
+ isAutoincrement: false;
2732
+ hasRuntimeDefault: false;
2733
+ enumValues: undefined;
2734
+ baseColumn: never;
2735
+ identity: undefined;
2736
+ generated: undefined;
2737
+ }, {}, {}>;
2738
+ };
2739
+ dialect: 'pg';
2740
+ }>;
2675
2741
  export declare const codexResetRedemptionAttempts: import("drizzle-orm/pg-core").PgTableWithColumns<{
2676
2742
  name: "codex_reset_redemption_attempts";
2677
2743
  schema: undefined;
@@ -6905,7 +6971,7 @@ export declare const sessions: import("drizzle-orm/pg-core").PgTableWithColumns<
6905
6971
  tableName: "sessions";
6906
6972
  dataType: "json";
6907
6973
  columnType: "PgJsonb";
6908
- data: ("artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_publish" | "artifacts_rollback" | "environment_list" | "environment_set_variable" | "github_connect_link" | "github_repositories_list" | "github_token" | "goal_complete" | "goal_pause" | "goal_set" | "goal_update" | "memory_correct" | "memory_save" | "memory_search" | "preference_registry_get" | "preference_registry_summary" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_pause" | "session_resume" | "session_send_message" | "session_steer" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "variable_set_list" | "variable_set_set_variable")[];
6974
+ data: ("artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_publish" | "artifacts_rollback" | "environment_list" | "environment_set_variable" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_set" | "goal_update" | "memory_correct" | "memory_save" | "memory_search" | "preference_registry_get" | "preference_registry_summary" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_pause" | "session_resume" | "session_send_message" | "session_steer" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "variable_set_list" | "variable_set_set_variable")[];
6909
6975
  driverParam: unknown;
6910
6976
  notNull: true;
6911
6977
  hasDefault: false;
@@ -6917,7 +6983,7 @@ export declare const sessions: import("drizzle-orm/pg-core").PgTableWithColumns<
6917
6983
  identity: undefined;
6918
6984
  generated: undefined;
6919
6985
  }, {}, {
6920
- $type: ("artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_publish" | "artifacts_rollback" | "environment_list" | "environment_set_variable" | "github_connect_link" | "github_repositories_list" | "github_token" | "goal_complete" | "goal_pause" | "goal_set" | "goal_update" | "memory_correct" | "memory_save" | "memory_search" | "preference_registry_get" | "preference_registry_summary" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_pause" | "session_resume" | "session_send_message" | "session_steer" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "variable_set_list" | "variable_set_set_variable")[];
6986
+ $type: ("artifacts_create" | "artifacts_get_source" | "artifacts_list" | "artifacts_publish" | "artifacts_rollback" | "environment_list" | "environment_set_variable" | "github_connect_link" | "github_repositories_list" | "goal_complete" | "goal_pause" | "goal_set" | "goal_update" | "memory_correct" | "memory_save" | "memory_search" | "preference_registry_get" | "preference_registry_summary" | "rig_get" | "rig_list" | "rig_promote" | "rig_propose_change" | "rig_verify" | "run_on" | "sandbox_attach" | "sandbox_provision" | "sandbox_swap" | "sandboxes_list" | "scheduled_task_runs_list" | "scheduled_tasks_create" | "scheduled_tasks_delete" | "scheduled_tasks_get" | "scheduled_tasks_list" | "scheduled_tasks_pause" | "scheduled_tasks_resume" | "scheduled_tasks_trigger" | "scheduled_tasks_update" | "session_create" | "session_events" | "session_get" | "session_pause" | "session_resume" | "session_send_message" | "session_steer" | "sessions_list" | "set_other_session_title" | "set_session_title" | "slack_bot_channel_history" | "slack_bot_delete_message" | "slack_bot_file_content" | "slack_bot_file_info" | "slack_bot_list_channels" | "slack_bot_list_files" | "slack_bot_list_users" | "slack_bot_post_message" | "slack_bot_thread_replies" | "social_connections_list" | "social_daily_analysis_context" | "social_mentions_live" | "social_post_reply" | "social_posts_recent" | "social_posts_sync" | "social_search_live" | "social_thread_fetch" | "variable_set_list" | "variable_set_set_variable")[];
6921
6987
  }>;
6922
6988
  initialPersonalConnectionDelegations: import("drizzle-orm/pg-core").PgColumn<{
6923
6989
  name: "initial_personal_connection_delegations";
@@ -16693,23 +16759,6 @@ export declare const agentRunStates: import("drizzle-orm/pg-core").PgTableWithCo
16693
16759
  }, {}, {
16694
16760
  $type: unknown[];
16695
16761
  }>;
16696
- frozenCodexCredentialId: import("drizzle-orm/pg-core").PgColumn<{
16697
- name: "frozen_codex_credential_id";
16698
- tableName: "agent_run_states";
16699
- dataType: "string";
16700
- columnType: "PgUUID";
16701
- data: string;
16702
- driverParam: string;
16703
- notNull: false;
16704
- hasDefault: false;
16705
- isPrimaryKey: false;
16706
- isAutoincrement: false;
16707
- hasRuntimeDefault: false;
16708
- enumValues: undefined;
16709
- baseColumn: never;
16710
- identity: undefined;
16711
- generated: undefined;
16712
- }, {}, {}>;
16713
16762
  providerArtifactInvalidatedAt: import("drizzle-orm/pg-core").PgColumn<{
16714
16763
  name: "provider_artifact_invalidated_at";
16715
16764
  tableName: "agent_run_states";
@@ -17283,23 +17332,6 @@ export declare const sessionHistoryItems: import("drizzle-orm/pg-core").PgTableW
17283
17332
  identity: undefined;
17284
17333
  generated: undefined;
17285
17334
  }, {}, {}>;
17286
- producerCodexCredentialId: import("drizzle-orm/pg-core").PgColumn<{
17287
- name: "producer_codex_credential_id";
17288
- tableName: "session_history_items";
17289
- dataType: "string";
17290
- columnType: "PgUUID";
17291
- data: string;
17292
- driverParam: string;
17293
- notNull: false;
17294
- hasDefault: false;
17295
- isPrimaryKey: false;
17296
- isAutoincrement: false;
17297
- hasRuntimeDefault: false;
17298
- enumValues: undefined;
17299
- baseColumn: never;
17300
- identity: undefined;
17301
- generated: undefined;
17302
- }, {}, {}>;
17303
17335
  providerArtifactInvalidatedAt: import("drizzle-orm/pg-core").PgColumn<{
17304
17336
  name: "provider_artifact_invalidated_at";
17305
17337
  tableName: "session_history_items";
package/dist/schema.js CHANGED
@@ -5,6 +5,7 @@ import {
5
5
  billingCustomers,
6
6
  capabilityCatalogItems,
7
7
  capabilityInstallations,
8
+ codexAppsSettings,
8
9
  codexCapacityWaiters,
9
10
  codexCredentialLeases,
10
11
  codexResetRedemptionAttempts,
@@ -139,7 +140,7 @@ import {
139
140
  workspaceVariableSetVariables,
140
141
  workspaceVariableSets,
141
142
  workspaces
142
- } from "./chunk-NX2JNJJP.js";
143
+ } from "./chunk-JYQPJ6Y5.js";
143
144
  import "./chunk-PZ5AY32C.js";
144
145
  export {
145
146
  agentRunStates,
@@ -148,6 +149,7 @@ export {
148
149
  billingCustomers,
149
150
  capabilityCatalogItems,
150
151
  capabilityInstallations,
152
+ codexAppsSettings,
151
153
  codexCapacityWaiters,
152
154
  codexCredentialLeases,
153
155
  codexResetRedemptionAttempts,
@@ -0,0 +1,86 @@
1
+ -- deployment-mode: maintenance
2
+ -- GitHub App installation credentials are host-owned run material. Retire the
3
+ -- model-visible github_token MCP tool from every durable session selection and
4
+ -- prevent an old writer from reintroducing it after the coordinated cutover.
5
+
6
+ UPDATE "sessions"
7
+ SET "first_party_mcp_tools" = "first_party_mcp_tools" - 'github_token'
8
+ WHERE "first_party_mcp_tools" ? 'github_token';
9
+
10
+ ALTER TABLE "sessions"
11
+ ALTER COLUMN "first_party_mcp_tools"
12
+ SET DEFAULT '[
13
+ "set_session_title",
14
+ "goal_set",
15
+ "goal_update",
16
+ "goal_complete",
17
+ "goal_pause",
18
+ "memory_search",
19
+ "memory_save",
20
+ "memory_correct",
21
+ "preference_registry_summary",
22
+ "preference_registry_get",
23
+ "sandboxes_list",
24
+ "sandbox_attach",
25
+ "sandbox_swap",
26
+ "run_on",
27
+ "sandbox_provision",
28
+ "rig_list",
29
+ "rig_get",
30
+ "rig_propose_change",
31
+ "rig_verify",
32
+ "rig_promote",
33
+ "sessions_list",
34
+ "session_get",
35
+ "session_events",
36
+ "session_create",
37
+ "session_send_message",
38
+ "session_pause",
39
+ "session_resume",
40
+ "session_steer",
41
+ "set_other_session_title",
42
+ "variable_set_list",
43
+ "environment_list",
44
+ "variable_set_set_variable",
45
+ "environment_set_variable",
46
+ "github_connect_link",
47
+ "github_repositories_list",
48
+ "social_connections_list",
49
+ "social_posts_recent",
50
+ "social_daily_analysis_context",
51
+ "social_search_live",
52
+ "social_mentions_live",
53
+ "social_thread_fetch",
54
+ "social_posts_sync",
55
+ "social_post_reply",
56
+ "scheduled_tasks_list",
57
+ "scheduled_tasks_get",
58
+ "scheduled_tasks_create",
59
+ "scheduled_tasks_update",
60
+ "scheduled_tasks_pause",
61
+ "scheduled_tasks_resume",
62
+ "scheduled_tasks_trigger",
63
+ "scheduled_tasks_delete",
64
+ "scheduled_task_runs_list",
65
+ "slack_bot_list_channels",
66
+ "slack_bot_channel_history",
67
+ "slack_bot_thread_replies",
68
+ "slack_bot_list_users",
69
+ "slack_bot_list_files",
70
+ "slack_bot_file_info",
71
+ "slack_bot_file_content",
72
+ "slack_bot_post_message",
73
+ "slack_bot_delete_message",
74
+ "artifacts_list",
75
+ "artifacts_get_source",
76
+ "artifacts_create",
77
+ "artifacts_publish",
78
+ "artifacts_rollback"
79
+ ]'::jsonb;
80
+
81
+ ALTER TABLE "sessions"
82
+ DROP CONSTRAINT IF EXISTS "sessions_first_party_mcp_tools_no_model_credentials_chk";
83
+
84
+ ALTER TABLE "sessions"
85
+ ADD CONSTRAINT "sessions_first_party_mcp_tools_no_model_credentials_chk"
86
+ CHECK (NOT ("first_party_mcp_tools" @> '["github_token"]'::jsonb));
@@ -0,0 +1,107 @@
1
+ -- deployment-mode: maintenance
2
+
3
+ SET LOCAL lock_timeout = '5s';
4
+ SET LOCAL statement_timeout = '10min';
5
+
6
+ -- Reject mixed-version writers before locking, then repeat after the locks to
7
+ -- close the connect-before-lock race. The deployment must keep API and workers
8
+ -- stopped until the new application version is active.
9
+ DO $codex_boundaries_writer_drain_before_lock$
10
+ BEGIN
11
+ IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app')
12
+ AND EXISTS (
13
+ SELECT 1
14
+ FROM pg_stat_activity
15
+ WHERE datname = current_database()
16
+ AND usename = 'opengeni_app'
17
+ AND pid <> pg_backend_pid()
18
+ )
19
+ THEN
20
+ RAISE EXCEPTION
21
+ 'Codex authentication boundaries activation requires all opengeni_app sessions to be stopped'
22
+ USING ERRCODE = '55000';
23
+ END IF;
24
+ END
25
+ $codex_boundaries_writer_drain_before_lock$;
26
+
27
+ LOCK TABLE "codex_subscription_credentials" IN ACCESS EXCLUSIVE MODE;
28
+ LOCK TABLE "session_history_items" IN ACCESS EXCLUSIVE MODE;
29
+ LOCK TABLE "agent_run_states" IN ACCESS EXCLUSIVE MODE;
30
+
31
+ DO $codex_boundaries_writer_drain_after_lock$
32
+ BEGIN
33
+ IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app')
34
+ AND EXISTS (
35
+ SELECT 1
36
+ FROM pg_stat_activity
37
+ WHERE datname = current_database()
38
+ AND usename = 'opengeni_app'
39
+ AND pid <> pg_backend_pid()
40
+ )
41
+ THEN
42
+ RAISE EXCEPTION
43
+ 'Codex authentication boundaries activation requires all opengeni_app sessions to be stopped'
44
+ USING ERRCODE = '55000';
45
+ END IF;
46
+ END
47
+ $codex_boundaries_writer_drain_after_lock$;
48
+
49
+ -- One optional workspace credential for ChatGPT connected Apps. This pointer is
50
+ -- intentionally separate from inference rotation and starts unset.
51
+ CREATE UNIQUE INDEX "codex_subscription_credentials_workspace_account_id_idx"
52
+ ON "codex_subscription_credentials" ("workspace_id", "account_id", "id");
53
+
54
+ CREATE TABLE "codex_apps_settings" (
55
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid(),
56
+ "account_id" uuid NOT NULL REFERENCES "managed_accounts"("id") ON DELETE CASCADE,
57
+ "workspace_id" uuid NOT NULL REFERENCES "workspaces"("id") ON DELETE CASCADE,
58
+ "credential_id" uuid,
59
+ "version" integer NOT NULL DEFAULT 1,
60
+ "designated_at" timestamptz,
61
+ "updated_at" timestamptz NOT NULL DEFAULT now(),
62
+ CONSTRAINT "codex_apps_settings_workspace_account_fk"
63
+ FOREIGN KEY ("workspace_id", "account_id")
64
+ REFERENCES "workspaces"("id", "account_id") ON DELETE CASCADE,
65
+ CONSTRAINT "codex_apps_settings_credential_scope_fk"
66
+ FOREIGN KEY ("workspace_id", "account_id", "credential_id")
67
+ REFERENCES "codex_subscription_credentials"("workspace_id", "account_id", "id")
68
+ ON DELETE CASCADE,
69
+ CONSTRAINT "codex_apps_settings_designation_shape_chk" CHECK (
70
+ "version" > 0 AND (
71
+ ("credential_id" IS NULL AND "designated_at" IS NULL)
72
+ OR
73
+ ("credential_id" IS NOT NULL AND "designated_at" IS NOT NULL)
74
+ )
75
+ )
76
+ );
77
+
78
+ CREATE UNIQUE INDEX "codex_apps_settings_workspace_idx"
79
+ ON "codex_apps_settings" ("workspace_id");
80
+
81
+ ALTER TABLE "codex_apps_settings" ENABLE ROW LEVEL SECURITY;
82
+ ALTER TABLE "codex_apps_settings" FORCE ROW LEVEL SECURITY;
83
+ CREATE POLICY workspace_isolation ON "codex_apps_settings"
84
+ USING (opengeni_private.workspace_rls_visible(account_id, workspace_id))
85
+ WITH CHECK (opengeni_private.workspace_rls_visible(account_id, workspace_id));
86
+
87
+ -- Remove the false credential/history relation and the obsolete
88
+ -- connector-aware inference cache. Provider rejection receipts remain.
89
+ ALTER TABLE "session_history_items"
90
+ DROP COLUMN "producer_codex_credential_id";
91
+ ALTER TABLE "agent_run_states"
92
+ DROP COLUMN "frozen_codex_credential_id";
93
+ ALTER TABLE "codex_subscription_credentials"
94
+ DROP COLUMN "connector_namespaces",
95
+ DROP COLUMN "connectors_checked_at";
96
+
97
+ DO $$
98
+ DECLARE
99
+ target_schema text := current_schema();
100
+ BEGIN
101
+ IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app') THEN
102
+ EXECUTE format(
103
+ 'GRANT SELECT, INSERT, UPDATE, DELETE ON TABLE %I.codex_apps_settings TO opengeni_app',
104
+ target_schema
105
+ );
106
+ END IF;
107
+ END $$;
@@ -0,0 +1,80 @@
1
+ -- deployment-mode: rolling
2
+ -- Historical, fully quiesced interruptions are audit evidence, not live control work.
3
+
4
+ SET lock_timeout = '5s';
5
+ SET statement_timeout = '10min';
6
+
7
+ DROP FUNCTION opengeni_private.claim_session_workflow_wakes(integer);
8
+
9
+ DO $migration$
10
+ DECLARE target_schema text := current_schema();
11
+ BEGIN
12
+ EXECUTE format($create$
13
+ CREATE FUNCTION opengeni_private.claim_session_workflow_wakes(p_limit integer)
14
+ RETURNS TABLE (
15
+ account_id uuid,
16
+ workspace_id uuid,
17
+ session_id uuid,
18
+ temporal_workflow_id text,
19
+ wake_revision bigint,
20
+ interruption_requested boolean
21
+ )
22
+ LANGUAGE plpgsql
23
+ SECURITY DEFINER
24
+ SET search_path = pg_catalog
25
+ AS $function$
26
+ BEGIN
27
+ RETURN QUERY
28
+ WITH due AS (
29
+ SELECT o.session_id
30
+ FROM %1$I.session_workflow_wake_outbox o
31
+ WHERE o.wake_revision > o.delivered_revision
32
+ AND o.next_attempt_at <= now()
33
+ ORDER BY o.next_attempt_at, o.updated_at, o.session_id
34
+ FOR UPDATE SKIP LOCKED
35
+ LIMIT greatest(1, least(coalesce(p_limit, 100), 1000))
36
+ )
37
+ UPDATE %1$I.session_workflow_wake_outbox o
38
+ SET attempts = o.attempts + 1,
39
+ next_attempt_at = now() + make_interval(
40
+ secs => least(300, greatest(1, power(2, least(o.attempts, 8))::integer))
41
+ ),
42
+ updated_at = now()
43
+ FROM due
44
+ WHERE o.session_id = due.session_id
45
+ RETURNING o.account_id, o.workspace_id, o.session_id,
46
+ o.temporal_workflow_id, o.wake_revision,
47
+ o.control_revision > o.delivered_revision
48
+ OR EXISTS (
49
+ SELECT 1
50
+ FROM %1$I.session_attempt_interruptions interruption
51
+ JOIN %1$I.session_turn_attempts attempt
52
+ ON attempt.workspace_id = interruption.workspace_id
53
+ AND attempt.session_id = interruption.session_id
54
+ AND attempt.id = interruption.attempt_id
55
+ WHERE interruption.workspace_id = o.workspace_id
56
+ AND interruption.session_id = o.session_id
57
+ AND (
58
+ interruption.state IN ('pending', 'delivered', 'acknowledged')
59
+ OR (
60
+ interruption.state IN ('settled', 'rejected_stale')
61
+ AND attempt.quiesced_at IS NULL
62
+ )
63
+ )
64
+ ) AS interruption_requested;
65
+ END $function$;
66
+ $create$, target_schema);
67
+ END $migration$;
68
+
69
+ REVOKE ALL ON FUNCTION opengeni_private.claim_session_workflow_wakes(integer) FROM PUBLIC;
70
+
71
+ DO $$
72
+ BEGIN
73
+ IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app') THEN
74
+ GRANT EXECUTE ON FUNCTION opengeni_private.claim_session_workflow_wakes(integer)
75
+ TO opengeni_app;
76
+ END IF;
77
+ END $$;
78
+
79
+ RESET statement_timeout;
80
+ RESET lock_timeout;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opengeni/db",
3
- "version": "0.27.9",
3
+ "version": "0.27.11",
4
4
  "description": "OpenGeni persistence: Drizzle schema, RLS-scoped query layer, the SQL migration runner, and role provisioning.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -50,9 +50,9 @@
50
50
  "prepublishOnly": "bash ../../scripts/prepublish-guard"
51
51
  },
52
52
  "dependencies": {
53
- "@opengeni/codex": "^0.2.10",
54
- "@opengeni/config": "^0.10.12",
55
- "@opengeni/contracts": "^0.38.2",
53
+ "@opengeni/codex": "^0.2.11",
54
+ "@opengeni/config": "^0.10.14",
55
+ "@opengeni/contracts": "^0.38.3",
56
56
  "@opengeni/network": "^0.2.0",
57
57
  "drizzle-orm": "^0.45.2",
58
58
  "postgres": "^3.4.7"