@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.
- package/dist/{chunk-TLAC622R.js → chunk-SZP6KRLC.js} +2128 -1927
- package/dist/chunk-SZP6KRLC.js.map +1 -0
- package/dist/{chunk-T6RSJT6C.js → chunk-XOXEQ7HG.js} +29 -1
- package/dist/chunk-XOXEQ7HG.js.map +1 -0
- package/dist/index.d.ts +71 -2
- package/dist/index.js +1194 -562
- package/dist/index.js.map +1 -1
- package/dist/memory-domain.d.ts +110 -1
- package/dist/memory-governance-schema.d.ts +562 -0
- package/dist/memory-governance.d.ts +41 -0
- package/dist/provision-roles.js +1 -1
- package/dist/runtime-posture.d.ts +2 -2
- package/dist/schema.d.ts +286 -2
- package/dist/schema.js +5 -1
- package/drizzle/0141_social_connection_credentials.sql +8 -0
- package/drizzle/0151_slack_delivery_backoff.sql +134 -0
- package/drizzle/0152_hierarchical_memory_foundation.sql +1589 -0
- package/package.json +3 -3
- package/src/index.ts +304 -11
- package/src/memory-domain.ts +360 -1
- package/src/memory-governance-schema.ts +162 -0
- package/src/memory-governance.ts +317 -0
- package/src/provision-roles.ts +24 -0
- package/src/runtime-posture.ts +4 -0
- package/src/schema.ts +50 -2
- package/dist/chunk-T6RSJT6C.js.map +0 -1
- package/dist/chunk-TLAC622R.js.map +0 -1
|
@@ -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
|
+
}>;
|
package/dist/provision-roles.js
CHANGED
|
@@ -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-
|
|
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;
|