@opengeni/db 0.17.1 → 0.19.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.
@@ -0,0 +1,41 @@
1
+ import type { Database } from "./index";
2
+ import { type MemoryOperationPlanInput, type MemoryRevertPlanInput } from "./memory-domain";
3
+ export declare class MemoryGovernanceAuthorityError extends Error {
4
+ readonly name = "MemoryGovernanceAuthorityError";
5
+ }
6
+ export type MemoryGovernanceDirectSubjectAuthority = {
7
+ kind: "subject";
8
+ accountId: string;
9
+ workspaceId: string;
10
+ subjectId: string;
11
+ };
12
+ export type MemoryGovernanceDirectServiceAuthority = {
13
+ kind: "service";
14
+ accountId: string;
15
+ workspaceId: string;
16
+ serviceId: string;
17
+ };
18
+ export type MemoryGovernanceAttemptAuthority = {
19
+ kind: "attempt";
20
+ accountId: string;
21
+ workspaceId: string;
22
+ sessionId: string;
23
+ turnId: string;
24
+ attemptId: string;
25
+ executionGeneration: number;
26
+ };
27
+ export type MemoryGovernanceAuthority = MemoryGovernanceDirectSubjectAuthority | MemoryGovernanceDirectServiceAuthority | MemoryGovernanceAttemptAuthority;
28
+ export declare function applyKnowledgeMemoryOperation(db: Database, input: {
29
+ authority: MemoryGovernanceAuthority;
30
+ plan: MemoryOperationPlanInput;
31
+ }): Promise<{
32
+ eventId: string;
33
+ planHash: string;
34
+ }>;
35
+ export declare function revertKnowledgeMemoryOperation(db: Database, input: {
36
+ authority: MemoryGovernanceAuthority;
37
+ plan: MemoryRevertPlanInput;
38
+ }): Promise<{
39
+ eventId: string;
40
+ planHash: string;
41
+ }>;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  provisionRoles
3
- } from "./chunk-T6RSJT6C.js";
3
+ } from "./chunk-XOXEQ7HG.js";
4
4
  import "./chunk-PZ5AY32C.js";
5
5
  export {
6
6
  provisionRoles
@@ -4,7 +4,7 @@ import type { Database, RlsStrategy } from "./index";
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", "connections", "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_memories", "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_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_revisions", "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_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "composer_drafts", "connections", "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_memories", "knowledge_memory_lifecycle_events", "knowledge_memory_relationships", "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_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_revisions", "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
@@ -18,7 +18,7 @@ export declare const NON_RLS_RUNTIME_TABLES: readonly ["auth_identities", "auth_
18
18
  */
19
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", "connections", "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_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
- export declare const RUNTIME_READ_ONLY_TABLES: readonly ["nested_agent_depth_configuration", "preference_registry_events", "preference_registry_snapshots"];
21
+ export declare const RUNTIME_READ_ONLY_TABLES: readonly ["knowledge_memory_lifecycle_events", "knowledge_memory_relationships", "nested_agent_depth_configuration", "preference_registry_events", "preference_registry_snapshots"];
22
22
  /** Append-only evidence/revision tables are insertable and queryable, never mutable. */
23
23
  export declare const RUNTIME_READ_INSERT_TABLES: readonly ["preference_registry_preferences", "preference_registry_revisions", "session_spawn_denials", "workspace_artifact_events", "workspace_artifact_versions", "workspace_instruction_policy_activation_events", "workspace_instruction_policy_revisions"];
24
24
  /**
package/dist/schema.d.ts CHANGED
@@ -3834,6 +3834,23 @@ export declare const slackInteractionInbox: import("drizzle-orm/pg-core").PgTabl
3834
3834
  identity: undefined;
3835
3835
  generated: undefined;
3836
3836
  }, {}, {}>;
3837
+ retryAt: import("drizzle-orm/pg-core").PgColumn<{
3838
+ name: "retry_at";
3839
+ tableName: "slack_interaction_inbox";
3840
+ dataType: "date";
3841
+ columnType: "PgTimestamp";
3842
+ data: Date;
3843
+ driverParam: string;
3844
+ notNull: false;
3845
+ hasDefault: false;
3846
+ isPrimaryKey: false;
3847
+ isAutoincrement: false;
3848
+ hasRuntimeDefault: false;
3849
+ enumValues: undefined;
3850
+ baseColumn: never;
3851
+ identity: undefined;
3852
+ generated: undefined;
3853
+ }, {}, {}>;
3837
3854
  lastErrorCode: import("drizzle-orm/pg-core").PgColumn<{
3838
3855
  name: "last_error_code";
3839
3856
  tableName: "slack_interaction_inbox";
@@ -4183,6 +4200,57 @@ export declare const slackInteractions: import("drizzle-orm/pg-core").PgTableWit
4183
4200
  identity: undefined;
4184
4201
  generated: undefined;
4185
4202
  }, {}, {}>;
4203
+ deliveryAttemptCount: import("drizzle-orm/pg-core").PgColumn<{
4204
+ name: "delivery_attempt_count";
4205
+ tableName: "slack_interactions";
4206
+ dataType: "number";
4207
+ columnType: "PgInteger";
4208
+ data: number;
4209
+ driverParam: string | number;
4210
+ notNull: true;
4211
+ hasDefault: true;
4212
+ isPrimaryKey: false;
4213
+ isAutoincrement: false;
4214
+ hasRuntimeDefault: false;
4215
+ enumValues: undefined;
4216
+ baseColumn: never;
4217
+ identity: undefined;
4218
+ generated: undefined;
4219
+ }, {}, {}>;
4220
+ deliveryRetryAt: import("drizzle-orm/pg-core").PgColumn<{
4221
+ name: "delivery_retry_at";
4222
+ tableName: "slack_interactions";
4223
+ dataType: "date";
4224
+ columnType: "PgTimestamp";
4225
+ data: Date;
4226
+ driverParam: string;
4227
+ notNull: false;
4228
+ hasDefault: false;
4229
+ isPrimaryKey: false;
4230
+ isAutoincrement: false;
4231
+ hasRuntimeDefault: false;
4232
+ enumValues: undefined;
4233
+ baseColumn: never;
4234
+ identity: undefined;
4235
+ generated: undefined;
4236
+ }, {}, {}>;
4237
+ deliveryLastErrorCode: import("drizzle-orm/pg-core").PgColumn<{
4238
+ name: "delivery_last_error_code";
4239
+ tableName: "slack_interactions";
4240
+ dataType: "string";
4241
+ columnType: "PgText";
4242
+ data: string;
4243
+ driverParam: string;
4244
+ notNull: false;
4245
+ hasDefault: false;
4246
+ isPrimaryKey: false;
4247
+ isAutoincrement: false;
4248
+ hasRuntimeDefault: false;
4249
+ enumValues: [string, ...string[]];
4250
+ baseColumn: never;
4251
+ identity: undefined;
4252
+ generated: undefined;
4253
+ }, {}, {}>;
4186
4254
  ackSlackMessageTs: import("drizzle-orm/pg-core").PgColumn<{
4187
4255
  name: "ack_slack_message_ts";
4188
4256
  tableName: "slack_interactions";
@@ -6401,7 +6469,7 @@ export declare const sessions: import("drizzle-orm/pg-core").PgTableWithColumns<
6401
6469
  tableName: "sessions";
6402
6470
  dataType: "json";
6403
6471
  columnType: "PgJsonb";
6404
- 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_posts_recent" | "variable_set_list" | "variable_set_set_variable")[];
6472
+ 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")[];
6405
6473
  driverParam: unknown;
6406
6474
  notNull: true;
6407
6475
  hasDefault: false;
@@ -6413,7 +6481,7 @@ export declare const sessions: import("drizzle-orm/pg-core").PgTableWithColumns<
6413
6481
  identity: undefined;
6414
6482
  generated: undefined;
6415
6483
  }, {}, {
6416
- $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_posts_recent" | "variable_set_list" | "variable_set_set_variable")[];
6484
+ $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")[];
6417
6485
  }>;
6418
6486
  toolPolicy: import("drizzle-orm/pg-core").PgColumn<{
6419
6487
  name: "tool_policy";
@@ -9474,6 +9542,204 @@ export declare const knowledgeMemories: import("drizzle-orm/pg-core").PgTableWit
9474
9542
  identity: undefined;
9475
9543
  generated: undefined;
9476
9544
  }, {}, {}>;
9545
+ scopeType: import("drizzle-orm/pg-core").PgColumn<{
9546
+ name: "scope_type";
9547
+ tableName: "knowledge_memories";
9548
+ dataType: "string";
9549
+ columnType: "PgText";
9550
+ data: string;
9551
+ driverParam: string;
9552
+ notNull: true;
9553
+ hasDefault: true;
9554
+ isPrimaryKey: false;
9555
+ isAutoincrement: false;
9556
+ hasRuntimeDefault: false;
9557
+ enumValues: [string, ...string[]];
9558
+ baseColumn: never;
9559
+ identity: undefined;
9560
+ generated: undefined;
9561
+ }, {}, {}>;
9562
+ scopeSubjectId: import("drizzle-orm/pg-core").PgColumn<{
9563
+ name: "scope_subject_id";
9564
+ tableName: "knowledge_memories";
9565
+ dataType: "string";
9566
+ columnType: "PgText";
9567
+ data: string;
9568
+ driverParam: string;
9569
+ notNull: false;
9570
+ hasDefault: false;
9571
+ isPrimaryKey: false;
9572
+ isAutoincrement: false;
9573
+ hasRuntimeDefault: false;
9574
+ enumValues: [string, ...string[]];
9575
+ baseColumn: never;
9576
+ identity: undefined;
9577
+ generated: undefined;
9578
+ }, {}, {}>;
9579
+ scopeRoleKey: import("drizzle-orm/pg-core").PgColumn<{
9580
+ name: "scope_role_key";
9581
+ tableName: "knowledge_memories";
9582
+ dataType: "string";
9583
+ columnType: "PgText";
9584
+ data: string;
9585
+ driverParam: string;
9586
+ notNull: false;
9587
+ hasDefault: false;
9588
+ isPrimaryKey: false;
9589
+ isAutoincrement: false;
9590
+ hasRuntimeDefault: false;
9591
+ enumValues: [string, ...string[]];
9592
+ baseColumn: never;
9593
+ identity: undefined;
9594
+ generated: undefined;
9595
+ }, {}, {}>;
9596
+ scopeSessionId: import("drizzle-orm/pg-core").PgColumn<{
9597
+ name: "scope_session_id";
9598
+ tableName: "knowledge_memories";
9599
+ dataType: "string";
9600
+ columnType: "PgUUID";
9601
+ data: string;
9602
+ driverParam: string;
9603
+ notNull: false;
9604
+ hasDefault: false;
9605
+ isPrimaryKey: false;
9606
+ isAutoincrement: false;
9607
+ hasRuntimeDefault: false;
9608
+ enumValues: undefined;
9609
+ baseColumn: never;
9610
+ identity: undefined;
9611
+ generated: undefined;
9612
+ }, {}, {}>;
9613
+ namespace: import("drizzle-orm/pg-core").PgColumn<{
9614
+ name: "namespace_key";
9615
+ tableName: "knowledge_memories";
9616
+ dataType: "string";
9617
+ columnType: "PgText";
9618
+ data: string;
9619
+ driverParam: string;
9620
+ notNull: true;
9621
+ hasDefault: true;
9622
+ isPrimaryKey: false;
9623
+ isAutoincrement: false;
9624
+ hasRuntimeDefault: false;
9625
+ enumValues: [string, ...string[]];
9626
+ baseColumn: never;
9627
+ identity: undefined;
9628
+ generated: undefined;
9629
+ }, {}, {}>;
9630
+ labels: import("drizzle-orm/pg-core").PgColumn<{
9631
+ name: "labels";
9632
+ tableName: "knowledge_memories";
9633
+ dataType: "array";
9634
+ columnType: "PgArray";
9635
+ data: string[];
9636
+ driverParam: string | string[];
9637
+ notNull: true;
9638
+ hasDefault: true;
9639
+ isPrimaryKey: false;
9640
+ isAutoincrement: false;
9641
+ hasRuntimeDefault: false;
9642
+ enumValues: [string, ...string[]];
9643
+ baseColumn: import("drizzle-orm").Column<{
9644
+ name: "labels";
9645
+ tableName: "knowledge_memories";
9646
+ dataType: "string";
9647
+ columnType: "PgText";
9648
+ data: string;
9649
+ driverParam: string;
9650
+ notNull: false;
9651
+ hasDefault: false;
9652
+ isPrimaryKey: false;
9653
+ isAutoincrement: false;
9654
+ hasRuntimeDefault: false;
9655
+ enumValues: [string, ...string[]];
9656
+ baseColumn: never;
9657
+ identity: undefined;
9658
+ generated: undefined;
9659
+ }, {}, {}>;
9660
+ identity: undefined;
9661
+ generated: undefined;
9662
+ }, {}, {
9663
+ baseBuilder: import("drizzle-orm/pg-core").PgColumnBuilder<{
9664
+ name: "labels";
9665
+ dataType: 'string';
9666
+ columnType: 'PgText';
9667
+ data: string;
9668
+ enumValues: [string, ...string[]];
9669
+ driverParam: string;
9670
+ }, {}, {}, import("drizzle-orm").ColumnBuilderExtraConfig>;
9671
+ size: undefined;
9672
+ }>;
9673
+ memoryVersion: import("drizzle-orm/pg-core").PgColumn<{
9674
+ name: "memory_version";
9675
+ tableName: "knowledge_memories";
9676
+ dataType: "number";
9677
+ columnType: "PgInteger";
9678
+ data: number;
9679
+ driverParam: string | number;
9680
+ notNull: true;
9681
+ hasDefault: true;
9682
+ isPrimaryKey: false;
9683
+ isAutoincrement: false;
9684
+ hasRuntimeDefault: false;
9685
+ enumValues: undefined;
9686
+ baseColumn: never;
9687
+ identity: undefined;
9688
+ generated: undefined;
9689
+ }, {}, {}>;
9690
+ createdByKind: import("drizzle-orm/pg-core").PgColumn<{
9691
+ name: "created_by_kind";
9692
+ tableName: "knowledge_memories";
9693
+ dataType: "string";
9694
+ columnType: "PgText";
9695
+ data: string;
9696
+ driverParam: string;
9697
+ notNull: true;
9698
+ hasDefault: true;
9699
+ isPrimaryKey: false;
9700
+ isAutoincrement: false;
9701
+ hasRuntimeDefault: false;
9702
+ enumValues: [string, ...string[]];
9703
+ baseColumn: never;
9704
+ identity: undefined;
9705
+ generated: undefined;
9706
+ }, {}, {}>;
9707
+ createdBySubjectId: import("drizzle-orm/pg-core").PgColumn<{
9708
+ name: "created_by_subject_id";
9709
+ tableName: "knowledge_memories";
9710
+ dataType: "string";
9711
+ columnType: "PgText";
9712
+ data: string;
9713
+ driverParam: string;
9714
+ notNull: true;
9715
+ hasDefault: true;
9716
+ isPrimaryKey: false;
9717
+ isAutoincrement: false;
9718
+ hasRuntimeDefault: false;
9719
+ enumValues: [string, ...string[]];
9720
+ baseColumn: never;
9721
+ identity: undefined;
9722
+ generated: undefined;
9723
+ }, {}, {}>;
9724
+ createdByContext: import("drizzle-orm/pg-core").PgColumn<{
9725
+ name: "created_by_context";
9726
+ tableName: "knowledge_memories";
9727
+ dataType: "json";
9728
+ columnType: "PgJsonb";
9729
+ data: Record<string, unknown>;
9730
+ driverParam: unknown;
9731
+ notNull: true;
9732
+ hasDefault: true;
9733
+ isPrimaryKey: false;
9734
+ isAutoincrement: false;
9735
+ hasRuntimeDefault: false;
9736
+ enumValues: undefined;
9737
+ baseColumn: never;
9738
+ identity: undefined;
9739
+ generated: undefined;
9740
+ }, {}, {
9741
+ $type: Record<string, unknown>;
9742
+ }>;
9477
9743
  textHash: import("drizzle-orm/pg-core").PgColumn<{
9478
9744
  name: "text_hash";
9479
9745
  tableName: "knowledge_memories";
@@ -24387,6 +24653,23 @@ export declare const socialConnections: import("drizzle-orm/pg-core").PgTableWit
24387
24653
  identity: undefined;
24388
24654
  generated: undefined;
24389
24655
  }, {}, {}>;
24656
+ credentialEncrypted: import("drizzle-orm/pg-core").PgColumn<{
24657
+ name: "credential_encrypted";
24658
+ tableName: "social_connections";
24659
+ dataType: "string";
24660
+ columnType: "PgText";
24661
+ data: string;
24662
+ driverParam: string;
24663
+ notNull: false;
24664
+ hasDefault: false;
24665
+ isPrimaryKey: false;
24666
+ isAutoincrement: false;
24667
+ hasRuntimeDefault: false;
24668
+ enumValues: [string, ...string[]];
24669
+ baseColumn: never;
24670
+ identity: undefined;
24671
+ generated: undefined;
24672
+ }, {}, {}>;
24390
24673
  tokenMetadata: import("drizzle-orm/pg-core").PgColumn<{
24391
24674
  name: "token_metadata";
24392
24675
  tableName: "social_connections";
@@ -25328,3 +25611,4 @@ export declare const rigChanges: import("drizzle-orm/pg-core").PgTableWithColumn
25328
25611
  }>;
25329
25612
  export * from "./workspace-instruction-policies-schema";
25330
25613
  export * from "./preference-registry-schema";
25614
+ export * from "./memory-governance-schema";
package/dist/schema.js CHANGED
@@ -35,6 +35,8 @@ import {
35
35
  integrationOauthClients,
36
36
  integrationOauthStateNonces,
37
37
  knowledgeMemories,
38
+ knowledgeMemoryLifecycleEvents,
39
+ knowledgeMemoryRelationships,
38
40
  machineMetricsLatest,
39
41
  machineMetricsSeries,
40
42
  managedAccounts,
@@ -112,7 +114,7 @@ import {
112
114
  workspaceVariableSetVariables,
113
115
  workspaceVariableSets,
114
116
  workspaces
115
- } from "./chunk-TLAC622R.js";
117
+ } from "./chunk-SZP6KRLC.js";
116
118
  import "./chunk-PZ5AY32C.js";
117
119
  export {
118
120
  agentRunStates,
@@ -151,6 +153,8 @@ export {
151
153
  integrationOauthClients,
152
154
  integrationOauthStateNonces,
153
155
  knowledgeMemories,
156
+ knowledgeMemoryLifecycleEvents,
157
+ knowledgeMemoryRelationships,
154
158
  machineMetricsLatest,
155
159
  machineMetricsSeries,
156
160
  managedAccounts,
@@ -0,0 +1,8 @@
1
+ -- deployment-mode: rolling
2
+ -- First-party social connectors (X / Reddit): OAuth token storage.
3
+ -- credential_encrypted holds the AES-256-GCM envelope (environment-crypto v1
4
+ -- format) with the provider token bundle {access_token, refresh_token, ...}.
5
+ -- It is deliberately separate from credential_ref (a free-text external
6
+ -- reference) and never surfaced by the SocialConnection contract mapper.
7
+
8
+ ALTER TABLE "social_connections" ADD COLUMN IF NOT EXISTS "credential_encrypted" text;
@@ -0,0 +1,134 @@
1
+ -- deployment-mode: rolling
2
+ SET lock_timeout = '5s';
3
+ SET statement_timeout = '30s';
4
+
5
+ ALTER TABLE slack_interactions
6
+ ADD COLUMN delivery_attempt_count integer NOT NULL DEFAULT 0,
7
+ ADD COLUMN delivery_retry_at timestamptz,
8
+ ADD COLUMN delivery_last_error_code text;
9
+
10
+ ALTER TABLE slack_interactions
11
+ ADD CONSTRAINT slack_interactions_delivery_attempt_check
12
+ CHECK (delivery_attempt_count >= 0),
13
+ ADD CONSTRAINT slack_interactions_delivery_error_check
14
+ CHECK (
15
+ delivery_last_error_code IS NULL
16
+ OR octet_length(delivery_last_error_code) BETWEEN 1 AND 128
17
+ );
18
+
19
+ ALTER TABLE slack_interaction_inbox
20
+ ADD COLUMN retry_at timestamptz;
21
+
22
+ DROP INDEX slack_interaction_inbox_pending_idx;
23
+ CREATE INDEX slack_interaction_inbox_pending_idx
24
+ ON slack_interaction_inbox (status, retry_at, created_at, id)
25
+ WHERE status IN ('pending', 'processing');
26
+
27
+ DROP INDEX slack_interactions_delivery_idx;
28
+ CREATE INDEX slack_interactions_delivery_idx
29
+ ON slack_interactions (terminal_delivery_state, delivery_retry_at, updated_at, id)
30
+ WHERE session_id IS NOT NULL AND terminal_delivery_state = 'open';
31
+
32
+ DO $privileged_functions$
33
+ DECLARE data_schema text := current_schema();
34
+ BEGIN
35
+ EXECUTE format($ddl$
36
+ CREATE OR REPLACE FUNCTION opengeni_private.claim_slack_interaction_inbox(
37
+ p_holder uuid,
38
+ p_lease_ms integer
39
+ )
40
+ RETURNS SETOF %1$I.slack_interaction_inbox
41
+ LANGUAGE plpgsql
42
+ SECURITY DEFINER
43
+ SET search_path = pg_catalog
44
+ AS $function$
45
+ BEGIN
46
+ IF p_lease_ms < 1000 OR p_lease_ms > 300000 THEN
47
+ RAISE EXCEPTION 'invalid Slack inbox claim lease';
48
+ END IF;
49
+ RETURN QUERY
50
+ WITH candidate AS (
51
+ SELECT I.id
52
+ FROM %1$I.slack_interaction_inbox I
53
+ WHERE (
54
+ I.status = 'pending'
55
+ AND (I.retry_at IS NULL OR I.retry_at <= now())
56
+ ) OR (
57
+ I.status = 'processing'
58
+ AND I.claim_expires_at <= now()
59
+ )
60
+ ORDER BY I.retry_at NULLS FIRST, I.created_at, I.id
61
+ FOR UPDATE SKIP LOCKED
62
+ LIMIT 1
63
+ )
64
+ UPDATE %1$I.slack_interaction_inbox I
65
+ SET status = 'processing',
66
+ claim_holder_id = p_holder,
67
+ claim_expires_at = now() + make_interval(secs => p_lease_ms::double precision / 1000),
68
+ retry_at = NULL,
69
+ attempt_count = I.attempt_count + 1,
70
+ updated_at = now()
71
+ FROM candidate C
72
+ WHERE I.id = C.id
73
+ RETURNING I.*;
74
+ END
75
+ $function$
76
+ $ddl$, data_schema);
77
+
78
+ EXECUTE format($ddl$
79
+ CREATE OR REPLACE FUNCTION opengeni_private.claim_slack_interaction_delivery(
80
+ p_holder uuid,
81
+ p_lease_ms integer
82
+ )
83
+ RETURNS SETOF %1$I.slack_interactions
84
+ LANGUAGE plpgsql
85
+ SECURITY DEFINER
86
+ SET search_path = pg_catalog
87
+ AS $function$
88
+ BEGIN
89
+ IF p_lease_ms < 1000 OR p_lease_ms > 300000 THEN
90
+ RAISE EXCEPTION 'invalid Slack delivery claim lease';
91
+ END IF;
92
+ RETURN QUERY
93
+ WITH candidate AS (
94
+ SELECT I.id
95
+ FROM %1$I.slack_interactions I
96
+ WHERE I.session_id IS NOT NULL
97
+ AND I.terminal_delivery_state = 'open'
98
+ AND (I.delivery_retry_at IS NULL OR I.delivery_retry_at <= now())
99
+ AND (I.delivery_claim_holder_id IS NULL OR I.delivery_claim_expires_at <= now())
100
+ AND EXISTS (
101
+ SELECT 1
102
+ FROM %1$I.session_events E
103
+ WHERE E.workspace_id = I.workspace_id
104
+ AND E.session_id = I.session_id
105
+ AND E.sequence > I.last_delivered_session_event_sequence
106
+ AND E.type IN (
107
+ 'agent.message.completed',
108
+ 'session.humanInput.requested',
109
+ 'turn.completed',
110
+ 'turn.failed',
111
+ 'turn.cancelled',
112
+ 'session.status.changed'
113
+ )
114
+ )
115
+ ORDER BY I.delivery_retry_at NULLS FIRST, I.updated_at, I.id
116
+ FOR UPDATE SKIP LOCKED
117
+ LIMIT 1
118
+ )
119
+ UPDATE %1$I.slack_interactions I
120
+ SET delivery_claim_holder_id = p_holder,
121
+ delivery_claim_expires_at = now() + make_interval(secs => p_lease_ms::double precision / 1000),
122
+ delivery_attempt_count = I.delivery_attempt_count + 1,
123
+ updated_at = now()
124
+ FROM candidate C
125
+ WHERE I.id = C.id
126
+ RETURNING I.*;
127
+ END
128
+ $function$
129
+ $ddl$, data_schema);
130
+ END
131
+ $privileged_functions$;
132
+
133
+ RESET statement_timeout;
134
+ RESET lock_timeout;