@opengeni/db 0.36.1 → 1.0.1
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/canonical-human-identities.js +3 -3
- package/dist/{chunk-HSOWSYOX.js → chunk-4SR4HKKA.js} +2 -2
- package/dist/{chunk-5KTIEDX7.js → chunk-6ZYKCRFO.js} +124 -16
- package/dist/chunk-6ZYKCRFO.js.map +1 -0
- package/dist/{chunk-VTPRIXKG.js → chunk-CUPM3FGB.js} +3 -3
- package/dist/{chunk-GYO7ED2Q.js → chunk-LTG3S6ZY.js} +2 -2
- package/dist/{chunk-VKLB2ZGI.js → chunk-NXAFLCQX.js} +81 -2
- package/dist/chunk-NXAFLCQX.js.map +1 -0
- package/dist/{chunk-FPVAD4CO.js → chunk-WD5ROSLL.js} +2 -2
- package/dist/{chunk-Z7VYMNPZ.js → chunk-ZWREYEWA.js} +2 -2
- package/dist/editable-artifact-durable-export.d.ts +10 -0
- package/dist/editable-artifact-durable-export.js +18 -3
- package/dist/editable-artifact-durable-export.js.map +1 -1
- package/dist/editable-artifacts.js +3 -3
- package/dist/index.d.ts +40 -8
- package/dist/index.js +509 -59
- package/dist/index.js.map +1 -1
- package/dist/knowledge-source-sync-schema.d.ts +730 -0
- package/dist/knowledge-source-sync.d.ts +60 -0
- package/dist/provision-roles.js +1 -1
- package/dist/runtime-posture.d.ts +3 -3
- package/dist/schema.d.ts +21 -4
- package/dist/schema.js +5 -1
- package/dist/session-queue-commands.d.ts +1 -1
- package/dist/session-realtime-ledger.d.ts +1 -0
- package/dist/session-tenancy.js +3 -3
- package/dist/video-generation.js +3 -3
- package/drizzle/0240_model_context_user_messages.sql +204 -0
- package/drizzle/0243_google_drive_object_acl_authority.sql +554 -0
- package/package.json +4 -4
- package/src/editable-artifact-durable-export.ts +27 -0
- package/src/index.ts +212 -13
- package/src/knowledge-source-sync-schema.ts +83 -0
- package/src/knowledge-source-sync.ts +530 -0
- package/src/provision-roles.ts +36 -0
- package/src/runtime-posture.ts +49 -1
- package/src/schema.ts +30 -7
- package/src/session-queue-commands.ts +13 -14
- package/src/session-realtime-context.ts +16 -0
- package/src/session-realtime-ledger.ts +53 -1
- package/dist/chunk-5KTIEDX7.js.map +0 -1
- package/dist/chunk-VKLB2ZGI.js.map +0 -1
- /package/dist/{chunk-HSOWSYOX.js.map → chunk-4SR4HKKA.js.map} +0 -0
- /package/dist/{chunk-VTPRIXKG.js.map → chunk-CUPM3FGB.js.map} +0 -0
- /package/dist/{chunk-GYO7ED2Q.js.map → chunk-LTG3S6ZY.js.map} +0 -0
- /package/dist/{chunk-FPVAD4CO.js.map → chunk-WD5ROSLL.js.map} +0 -0
- /package/dist/{chunk-Z7VYMNPZ.js.map → chunk-ZWREYEWA.js.map} +0 -0
|
@@ -30,6 +30,38 @@ export type KnowledgeSourceSyncObservationFence = {
|
|
|
30
30
|
executionCheckpointGeneration: number;
|
|
31
31
|
observations: KnowledgeSourceSyncObservationFloor[];
|
|
32
32
|
};
|
|
33
|
+
export type GoogleDriveObjectAclPrincipal = {
|
|
34
|
+
type: "user" | "group" | "domain" | "anyone";
|
|
35
|
+
permissionId?: string | null;
|
|
36
|
+
emailAddress?: string | null;
|
|
37
|
+
domain?: string | null;
|
|
38
|
+
role: "owner" | "organizer" | "fileOrganizer" | "writer" | "commenter" | "reader";
|
|
39
|
+
inherited?: boolean;
|
|
40
|
+
allowFileDiscovery?: boolean | null;
|
|
41
|
+
expirationTime?: string | null;
|
|
42
|
+
};
|
|
43
|
+
export type GoogleDriveObjectAclEvidenceInput = {
|
|
44
|
+
accountId: string;
|
|
45
|
+
workspaceId: string;
|
|
46
|
+
obligationId: string;
|
|
47
|
+
connectionId: string;
|
|
48
|
+
connectionVersion: number;
|
|
49
|
+
sourceGooglePermissionId: string;
|
|
50
|
+
sourceSyncGeneration: number;
|
|
51
|
+
sourceConfigGeneration: number;
|
|
52
|
+
sourceLifecycleGeneration: number;
|
|
53
|
+
objectLifecycleGeneration: number;
|
|
54
|
+
objectVersionGeneration: number;
|
|
55
|
+
providerRevision: string | null;
|
|
56
|
+
driveId: string | null;
|
|
57
|
+
aclRevision: string;
|
|
58
|
+
eligibility: "eligible" | "denied";
|
|
59
|
+
observedAt: string;
|
|
60
|
+
expiresAt: string;
|
|
61
|
+
citationLocator: Record<string, unknown>;
|
|
62
|
+
operationId: string;
|
|
63
|
+
principals: GoogleDriveObjectAclPrincipal[];
|
|
64
|
+
};
|
|
33
65
|
export type KnowledgeSourceSyncObjectObservationResult = KnowledgeSourceSyncObservationFloor & {
|
|
34
66
|
disposition: "accepted" | "replayed" | "stale" | "conflict";
|
|
35
67
|
currentVersion: {
|
|
@@ -241,6 +273,34 @@ export declare function recordKnowledgeSourceSyncAclEvidence(db: Database, input
|
|
|
241
273
|
eligibility: "eligible" | "denied";
|
|
242
274
|
evidence: Record<string, unknown>;
|
|
243
275
|
}): Promise<void>;
|
|
276
|
+
/**
|
|
277
|
+
* Persist one append-only Google Drive object ACL observation and atomically
|
|
278
|
+
* make it the current authorization pointer for the exact index obligation.
|
|
279
|
+
* Raw provider principals never enter storage: only domain-separated hashes
|
|
280
|
+
* are retained. Denial deletes chunks in the same transaction so stale vector
|
|
281
|
+
* or keyword rows cannot survive permission loss.
|
|
282
|
+
*/
|
|
283
|
+
export declare function recordGoogleDriveObjectAclEvidence(db: Database, input: GoogleDriveObjectAclEvidenceInput): Promise<{
|
|
284
|
+
evidenceId: string;
|
|
285
|
+
aclHash: string;
|
|
286
|
+
}>;
|
|
287
|
+
/**
|
|
288
|
+
* Clear the current Drive authorization pointer before provider I/O without
|
|
289
|
+
* destroying an otherwise valid index. All read surfaces immediately deny
|
|
290
|
+
* because agent_access is false and the current evidence pointer is null. A
|
|
291
|
+
* successful refresh can restore access without re-embedding; a final denied
|
|
292
|
+
* observation uses recordGoogleDriveObjectAclEvidence and deletes chunks.
|
|
293
|
+
*/
|
|
294
|
+
export declare function beginGoogleDriveObjectAclRefresh(db: Database, input: {
|
|
295
|
+
accountId: string;
|
|
296
|
+
workspaceId: string;
|
|
297
|
+
obligationId: string;
|
|
298
|
+
sourceSyncGeneration: number;
|
|
299
|
+
sourceConfigGeneration: number;
|
|
300
|
+
sourceLifecycleGeneration: number;
|
|
301
|
+
objectLifecycleGeneration: number;
|
|
302
|
+
objectVersionGeneration: number;
|
|
303
|
+
}): Promise<void>;
|
|
244
304
|
/** Bounded retention hook. Callers choose policy and cadence; pending index or
|
|
245
305
|
* ACL obligations are never deleted by age alone. */
|
|
246
306
|
export declare function pruneKnowledgeSourceSyncEvidence(db: Database, input: {
|
package/dist/provision-roles.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { Database, RlsStrategy } from "./database.js";
|
|
2
|
-
export declare const RUNTIME_TARGET_SCHEMA_CAPABILITY_ROUTINES: readonly ["fork_session_content(uuid, uuid, uuid, text, uuid, text, text, text)", "xai_subscription_authority_live(uuid, uuid, text, uuid, text, uuid, uuid, bigint)", "create_xai_subscription_credential(uuid, uuid, text, text, text, text, text, text, text, timestamp with time zone)", "disconnect_xai_subscription_credential(uuid, uuid, text, uuid, jsonb)", "knowledge_source_sync_lock_authority(uuid, uuid, uuid)", "ensure_managed_human_personal_workspace(uuid, text, uuid)", "ensure_canonical_human_identity(text, text)", "validate_canonical_human_session(text, text, boolean)", "get_canonical_human_identity_projection(text)", "apply_canonical_human_identity_operation(uuid, text, bigint, text, uuid, text, text, text)", "session_private_actor_visible(uuid, uuid, uuid, text)", "session_reference_visible(uuid, uuid, uuid)", "transition_session_visibility(uuid, uuid, uuid, text, text, integer, text, text)", "xai_subscription_pool_visible(uuid, uuid, text, text, uuid)", "resolve_xai_authority_pool(uuid, uuid, text, jsonb)", "revalidate_xai_subscription_authority(uuid, text, uuid, jsonb)", "xai_provider_account_authority_snapshot_v1_valid(jsonb)"];
|
|
2
|
+
export declare const RUNTIME_TARGET_SCHEMA_CAPABILITY_ROUTINES: readonly ["fork_session_content(uuid, uuid, uuid, text, uuid, text, text, text)", "xai_subscription_authority_live(uuid, uuid, text, uuid, text, uuid, uuid, bigint)", "create_xai_subscription_credential(uuid, uuid, text, text, text, text, text, text, text, timestamp with time zone)", "disconnect_xai_subscription_credential(uuid, uuid, text, uuid, jsonb)", "google_drive_document_citation(uuid, uuid, text, uuid, uuid)", "google_drive_file_authorized(uuid, uuid, text, uuid)", "knowledge_source_sync_lock_authority(uuid, uuid, uuid)", "ensure_managed_human_personal_workspace(uuid, text, uuid)", "ensure_canonical_human_identity(text, text)", "validate_canonical_human_session(text, text, boolean)", "get_canonical_human_identity_projection(text)", "apply_canonical_human_identity_operation(uuid, text, bigint, text, uuid, text, text, text)", "session_private_actor_visible(uuid, uuid, uuid, text)", "session_reference_visible(uuid, uuid, uuid)", "transition_session_visibility(uuid, uuid, uuid, text, text, integer, text, text)", "xai_subscription_pool_visible(uuid, uuid, text, text, uuid)", "resolve_xai_authority_pool(uuid, uuid, text, jsonb)", "revalidate_xai_subscription_authority(uuid, text, uuid, jsonb)", "xai_provider_account_authority_snapshot_v1_valid(jsonb)"];
|
|
3
3
|
export declare const RUNTIME_TARGET_SCHEMA_INVOKER_ROUTINES: readonly ["session_reference_visible(uuid, uuid, uuid)", "xai_provider_account_authority_snapshot_v1_valid(jsonb)"];
|
|
4
4
|
/**
|
|
5
5
|
* The complete standalone tenant-table contract. Adding or removing a
|
|
6
6
|
* FORCE-RLS table is an architectural change: update this list in the same
|
|
7
7
|
* commit as the migration so startup cannot silently accept an unreviewed gap.
|
|
8
8
|
*/
|
|
9
|
-
export declare const FORCE_RLS_TABLES: readonly ["agent_run_states", "api_keys", "attached_browser_devices", "attached_browser_inventories", "audit_events", "auth_runs", "billing_customers", "browser_identities", "browser_revision_components", "browser_revisions", "browser_session_associations", "browser_sessions", "browser_state_artifacts", "browser_state_uploads", "canonical_human_identities", "canonical_human_identity_operations", "canonical_human_identity_subjects", "canonical_human_login_bindings", "capability_api_facets", "capability_catalog_items", "capability_component_owners", "capability_facet_installations", "capability_facets", "capability_installations", "capability_integration_facets", "capability_mcp_facets", "capability_operations", "capability_plugin_installations", "capability_plugin_versions", "capability_plugins", "capability_skill_facets", "capability_skill_files", "channels", "codex_apps_settings", "codex_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "company_profile_activation_events", "company_profile_heads", "company_profile_revisions", "company_profile_snapshots", "composer_drafts", "computer_session_associations", "computer_sessions", "connection_disconnect_operations", "connections", "connector_action_policies", "connector_action_requests", "credit_ledger_entries", "device_enrollment_requests", "document_bases", "document_chunks", "documents", "editable_artifact_blob_refs", "editable_artifact_idempotency_receipts", "editable_artifact_live_outbox", "editable_artifact_live_tickets", "editable_artifact_materialization_jobs", "editable_artifact_materialization_results", "editable_artifact_operations", "editable_artifact_replica_leases", "editable_artifact_scope_authorization_heads", "editable_artifact_sequence_checkpoints", "editable_artifact_session_links", "editable_artifact_snapshots", "editable_artifact_transactions", "editable_artifact_undo_claims", "editable_artifact_versions", "editable_artifacts", "enrollments", "file_uploads", "files", "generated_image_artifacts", "generated_video_artifacts", "github_installation_repositories", "github_installations", "host_export_config", "host_export_consumers", "host_export_cursor_state", "host_export_dead_letters", "host_export_outbox", "image_generation_operations", "import_batches", "integration_facet_binding_owners", "integration_facet_bindings", "integration_facet_definitions", "integration_oauth_state_nonces", "integration_spec_revisions", "integration_tools", "interaction_interventions", "interaction_operations", "interaction_resource_operations", "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_source_sync_index_obligations", "knowledge_source_sync_item_outcomes", "knowledge_source_sync_object_observations", "knowledge_source_sync_states", "knowledge_source_sync_wakes", "knowledge_sources", "knowledge_sync_runs", "machine_metrics_latest", "machine_metrics_series", "machine_removal_operations", "memory_slack_publication_configurations", "memory_slack_publication_receipts", "memory_slack_publications", "model_call_facts", "network_routes", "new_session_drafts", "organization_memberships", "organization_user_resource_authorities", "organization_user_resource_grants", "organization_user_retention_policies", "pack_installation_components", "pack_installations", "preference_registry_events", "preference_registry_preferences", "preference_registry_revisions", "preference_registry_snapshots", "retained_screenshot_artifacts", "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_codemode_calls", "session_attempt_interruptions", "session_attempt_tool_catalogs", "session_command_receipts", "session_events", "session_goal_revisions", "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_visibility_write_capabilities", "session_workflow_wake_outbox", "sessions", "site_auth_connections", "slack_bot_delete_operations", "slack_bot_post_operations", "slack_bot_update_operations", "slack_bot_user_links", "slack_installation_bindings", "slack_interaction_action_handles", "slack_interaction_inbox", "slack_interaction_progress_deliveries", "slack_interactions", "slack_shared_task_origins", "slack_task_policy_activation_events", "slack_task_policy_heads", "slack_task_policy_revisions", "slack_user_link_access_request_operations", "slack_user_link_access_requests", "social_connections", "social_posts", "task_note_events", "task_note_write_capabilities", "task_notes", "temporal_schedule_cleanup_outbox", "transcription_recording_chunks", "transcription_recording_objects", "transcription_recording_segments", "transcription_recordings", "usage_events", "video_generation_operations", "video_generation_references", "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_interaction_revisions", "workspace_learning_policy_activation_events", "workspace_learning_policy_heads", "workspace_learning_policy_revisions", "workspace_learning_policy_snapshots", "workspace_model_policies", "workspace_packs", "workspace_screenshot_quotas", "workspace_session_activity_revisions", "workspace_variable_set_variables", "workspace_variable_sets", "workspace_video_generation_policies", "workspace_video_generation_quotas", "xai_capacity_waiters", "xai_credential_leases", "xai_rotation_settings", "xai_session_account_pins", "xai_subscription_credentials"];
|
|
9
|
+
export declare const FORCE_RLS_TABLES: readonly ["agent_run_states", "api_keys", "attached_browser_devices", "attached_browser_inventories", "audit_events", "auth_runs", "billing_customers", "browser_identities", "browser_revision_components", "browser_revisions", "browser_session_associations", "browser_sessions", "browser_state_artifacts", "browser_state_uploads", "canonical_human_identities", "canonical_human_identity_operations", "canonical_human_identity_subjects", "canonical_human_login_bindings", "capability_api_facets", "capability_catalog_items", "capability_component_owners", "capability_facet_installations", "capability_facets", "capability_installations", "capability_integration_facets", "capability_mcp_facets", "capability_operations", "capability_plugin_installations", "capability_plugin_versions", "capability_plugins", "capability_skill_facets", "capability_skill_files", "channels", "codex_apps_settings", "codex_capacity_waiters", "codex_credential_leases", "codex_reset_redemption_attempts", "codex_rotation_settings", "codex_subscription_credentials", "company_profile_activation_events", "company_profile_heads", "company_profile_revisions", "company_profile_snapshots", "composer_drafts", "computer_session_associations", "computer_sessions", "connection_disconnect_operations", "connections", "connector_action_policies", "connector_action_requests", "credit_ledger_entries", "device_enrollment_requests", "document_bases", "document_chunks", "documents", "editable_artifact_blob_refs", "editable_artifact_idempotency_receipts", "editable_artifact_live_outbox", "editable_artifact_live_tickets", "editable_artifact_materialization_jobs", "editable_artifact_materialization_results", "editable_artifact_operations", "editable_artifact_replica_leases", "editable_artifact_scope_authorization_heads", "editable_artifact_sequence_checkpoints", "editable_artifact_session_links", "editable_artifact_snapshots", "editable_artifact_transactions", "editable_artifact_undo_claims", "editable_artifact_versions", "editable_artifacts", "enrollments", "file_uploads", "files", "generated_image_artifacts", "generated_video_artifacts", "github_installation_repositories", "github_installations", "google_drive_object_acl_evidence", "google_drive_object_acl_principals", "host_export_config", "host_export_consumers", "host_export_cursor_state", "host_export_dead_letters", "host_export_outbox", "image_generation_operations", "import_batches", "integration_facet_binding_owners", "integration_facet_bindings", "integration_facet_definitions", "integration_oauth_state_nonces", "integration_spec_revisions", "integration_tools", "interaction_interventions", "interaction_operations", "interaction_resource_operations", "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_source_sync_index_obligations", "knowledge_source_sync_item_outcomes", "knowledge_source_sync_object_observations", "knowledge_source_sync_states", "knowledge_source_sync_wakes", "knowledge_sources", "knowledge_sync_runs", "machine_metrics_latest", "machine_metrics_series", "machine_removal_operations", "memory_slack_publication_configurations", "memory_slack_publication_receipts", "memory_slack_publications", "model_call_facts", "network_routes", "new_session_drafts", "organization_memberships", "organization_user_resource_authorities", "organization_user_resource_grants", "organization_user_retention_policies", "pack_installation_components", "pack_installations", "preference_registry_events", "preference_registry_preferences", "preference_registry_revisions", "preference_registry_snapshots", "retained_screenshot_artifacts", "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_codemode_calls", "session_attempt_interruptions", "session_attempt_tool_catalogs", "session_command_receipts", "session_events", "session_goal_revisions", "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_visibility_write_capabilities", "session_workflow_wake_outbox", "sessions", "site_auth_connections", "slack_bot_delete_operations", "slack_bot_post_operations", "slack_bot_update_operations", "slack_bot_user_links", "slack_installation_bindings", "slack_interaction_action_handles", "slack_interaction_inbox", "slack_interaction_progress_deliveries", "slack_interactions", "slack_shared_task_origins", "slack_task_policy_activation_events", "slack_task_policy_heads", "slack_task_policy_revisions", "slack_user_link_access_request_operations", "slack_user_link_access_requests", "social_connections", "social_posts", "task_note_events", "task_note_write_capabilities", "task_notes", "temporal_schedule_cleanup_outbox", "transcription_recording_chunks", "transcription_recording_objects", "transcription_recording_segments", "transcription_recordings", "usage_events", "video_generation_operations", "video_generation_references", "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_interaction_revisions", "workspace_learning_policy_activation_events", "workspace_learning_policy_heads", "workspace_learning_policy_revisions", "workspace_learning_policy_snapshots", "workspace_model_policies", "workspace_packs", "workspace_screenshot_quotas", "workspace_session_activity_revisions", "workspace_variable_set_variables", "workspace_variable_sets", "workspace_video_generation_policies", "workspace_video_generation_quotas", "xai_capacity_waiters", "xai_credential_leases", "xai_rotation_settings", "xai_session_account_pins", "xai_subscription_credentials"];
|
|
10
10
|
/**
|
|
11
11
|
* Deployment-global and authentication tables used by ordinary API/worker
|
|
12
12
|
* traffic. They intentionally do not carry workspace RLS: their access model
|
|
@@ -24,7 +24,7 @@ export declare const RUNTIME_READ_ONLY_TABLES: readonly ["company_profile_activa
|
|
|
24
24
|
/** Existing runtime authorities that may be observed and advanced, never created or deleted. */
|
|
25
25
|
export declare const RUNTIME_READ_UPDATE_TABLES: readonly ["workspace_session_activity_revisions"];
|
|
26
26
|
/** Append-only evidence/revision tables are insertable and queryable, never mutable. */
|
|
27
|
-
export declare const RUNTIME_READ_INSERT_TABLES: readonly ["browser_revision_components", "browser_revisions", "company_profile_revisions", "editable_artifact_blob_refs", "editable_artifact_idempotency_receipts", "editable_artifact_live_outbox", "editable_artifact_materialization_jobs", "editable_artifact_materialization_results", "editable_artifact_operations", "editable_artifact_sequence_checkpoints", "editable_artifact_snapshots", "editable_artifact_transactions", "editable_artifact_undo_claims", "editable_artifact_versions", "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_operation_receipts", "knowledge_providers", "knowledge_source_acl_versions", "knowledge_source_objects", "knowledge_sources", "knowledge_sync_runs", "preference_registry_preferences", "preference_registry_revisions", "session_attempt_tool_catalogs", "session_goal_revisions", "session_spawn_denials", "slack_shared_task_origins", "slack_user_link_access_request_operations", "temporal_schedule_cleanup_outbox", "workspace_artifact_events", "workspace_artifact_versions", "workspace_instruction_policy_activation_events", "workspace_instruction_policy_onboarding_proposals", "workspace_instruction_policy_revisions", "workspace_learning_policy_revisions"];
|
|
27
|
+
export declare const RUNTIME_READ_INSERT_TABLES: readonly ["browser_revision_components", "browser_revisions", "company_profile_revisions", "editable_artifact_blob_refs", "editable_artifact_idempotency_receipts", "editable_artifact_live_outbox", "editable_artifact_materialization_jobs", "editable_artifact_materialization_results", "editable_artifact_operations", "editable_artifact_sequence_checkpoints", "editable_artifact_snapshots", "editable_artifact_transactions", "editable_artifact_undo_claims", "editable_artifact_versions", "google_drive_object_acl_evidence", "google_drive_object_acl_principals", "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_operation_receipts", "knowledge_providers", "knowledge_source_acl_versions", "knowledge_source_objects", "knowledge_sources", "knowledge_sync_runs", "preference_registry_preferences", "preference_registry_revisions", "session_attempt_tool_catalogs", "session_goal_revisions", "session_spawn_denials", "slack_shared_task_origins", "slack_user_link_access_request_operations", "temporal_schedule_cleanup_outbox", "workspace_artifact_events", "workspace_artifact_versions", "workspace_instruction_policy_activation_events", "workspace_instruction_policy_onboarding_proposals", "workspace_instruction_policy_revisions", "workspace_learning_policy_revisions"];
|
|
28
28
|
/** Durable operation journals are append/read plus claim/settle updates, never deletes. */
|
|
29
29
|
export declare const RUNTIME_READ_INSERT_UPDATE_TABLES: readonly ["attached_browser_devices", "attached_browser_inventories", "auth_runs", "browser_identities", "browser_sessions", "browser_state_artifacts", "browser_state_uploads", "capability_api_facets", "capability_facets", "capability_integration_facets", "capability_mcp_facets", "capability_plugin_versions", "capability_plugins", "capability_skill_facets", "capability_skill_files", "computer_sessions", "editable_artifact_session_links", "editable_artifacts", "integration_facet_definitions", "integration_spec_revisions", "integration_tools", "interaction_interventions", "interaction_operations", "interaction_resource_operations", "network_routes", "session_attempt_codemode_calls", "site_auth_connections", "slack_user_link_access_requests", "workspace_interaction_revisions"];
|
|
30
30
|
/**
|
package/dist/schema.d.ts
CHANGED
|
@@ -10929,8 +10929,8 @@ export declare const sessions: import("drizzle-orm/pg-core").PgTableWithColumns<
|
|
|
10929
10929
|
identity: undefined;
|
|
10930
10930
|
generated: undefined;
|
|
10931
10931
|
}, {}, {}>;
|
|
10932
|
-
|
|
10933
|
-
name: "
|
|
10932
|
+
initialModelContext: import("drizzle-orm/pg-core").PgColumn<{
|
|
10933
|
+
name: "initial_model_context";
|
|
10934
10934
|
tableName: "sessions";
|
|
10935
10935
|
dataType: "string";
|
|
10936
10936
|
columnType: "PgText";
|
|
@@ -13498,6 +13498,23 @@ export declare const sessionRealtimeEntries: import("drizzle-orm/pg-core").PgTab
|
|
|
13498
13498
|
identity: undefined;
|
|
13499
13499
|
generated: undefined;
|
|
13500
13500
|
}, {}, {}>;
|
|
13501
|
+
modelContext: import("drizzle-orm/pg-core").PgColumn<{
|
|
13502
|
+
name: "model_context";
|
|
13503
|
+
tableName: "session_realtime_entries";
|
|
13504
|
+
dataType: "string";
|
|
13505
|
+
columnType: "PgText";
|
|
13506
|
+
data: string;
|
|
13507
|
+
driverParam: string;
|
|
13508
|
+
notNull: false;
|
|
13509
|
+
hasDefault: false;
|
|
13510
|
+
isPrimaryKey: false;
|
|
13511
|
+
isAutoincrement: false;
|
|
13512
|
+
hasRuntimeDefault: false;
|
|
13513
|
+
enumValues: [string, ...string[]];
|
|
13514
|
+
baseColumn: never;
|
|
13515
|
+
identity: undefined;
|
|
13516
|
+
generated: undefined;
|
|
13517
|
+
}, {}, {}>;
|
|
13501
13518
|
clientAckedAt: import("drizzle-orm/pg-core").PgColumn<{
|
|
13502
13519
|
name: "client_acked_at";
|
|
13503
13520
|
tableName: "session_realtime_entries";
|
|
@@ -19703,8 +19720,8 @@ export declare const sessionTurns: import("drizzle-orm/pg-core").PgTableWithColu
|
|
|
19703
19720
|
ordinal: number;
|
|
19704
19721
|
}[];
|
|
19705
19722
|
}>;
|
|
19706
|
-
|
|
19707
|
-
name: "
|
|
19723
|
+
modelContext: import("drizzle-orm/pg-core").PgColumn<{
|
|
19724
|
+
name: "model_context";
|
|
19708
19725
|
tableName: "session_turns";
|
|
19709
19726
|
dataType: "string";
|
|
19710
19727
|
columnType: "PgText";
|
package/dist/schema.js
CHANGED
|
@@ -76,6 +76,8 @@ import {
|
|
|
76
76
|
generatedVideoArtifacts,
|
|
77
77
|
githubInstallationRepositories,
|
|
78
78
|
githubInstallations,
|
|
79
|
+
googleDriveObjectAclEvidence,
|
|
80
|
+
googleDriveObjectAclPrincipals,
|
|
79
81
|
hostExportConfig,
|
|
80
82
|
hostExportConsumers,
|
|
81
83
|
hostExportCursorState,
|
|
@@ -255,7 +257,7 @@ import {
|
|
|
255
257
|
xaiRotationSettings,
|
|
256
258
|
xaiSessionAccountPins,
|
|
257
259
|
xaiSubscriptionCredentials
|
|
258
|
-
} from "./chunk-
|
|
260
|
+
} from "./chunk-6ZYKCRFO.js";
|
|
259
261
|
import "./chunk-PZ5AY32C.js";
|
|
260
262
|
export {
|
|
261
263
|
agentRunStates,
|
|
@@ -335,6 +337,8 @@ export {
|
|
|
335
337
|
generatedVideoArtifacts,
|
|
336
338
|
githubInstallationRepositories,
|
|
337
339
|
githubInstallations,
|
|
340
|
+
googleDriveObjectAclEvidence,
|
|
341
|
+
googleDriveObjectAclPrincipals,
|
|
338
342
|
hostExportConfig,
|
|
339
343
|
hostExportConsumers,
|
|
340
344
|
hostExportCursorState,
|
|
@@ -155,7 +155,7 @@ export declare function submitHumanPromptInTransaction(db: SessionActivityDataba
|
|
|
155
155
|
expectedDraftRevision?: number | null;
|
|
156
156
|
text: string;
|
|
157
157
|
annotations?: TimelineAnnotation[];
|
|
158
|
-
|
|
158
|
+
modelContext?: string | null;
|
|
159
159
|
resources: ResourceRef[];
|
|
160
160
|
model?: string | null;
|
|
161
161
|
reasoningEffort?: ReasoningEffort | null;
|
|
@@ -102,6 +102,7 @@ export type SessionRealtimeInboundEntryInput = {
|
|
|
102
102
|
delegationItemId?: string | null | undefined;
|
|
103
103
|
text?: string | null | undefined;
|
|
104
104
|
payload?: Record<string, unknown> | undefined;
|
|
105
|
+
modelContext?: string | undefined;
|
|
105
106
|
};
|
|
106
107
|
export type SyncSessionRealtimeLedgerInput = AssertSessionRealtimeOwnerInput & {
|
|
107
108
|
connectionId: string;
|
package/dist/session-tenancy.js
CHANGED
|
@@ -3,9 +3,9 @@ import {
|
|
|
3
3
|
canonicalSessionVisibilityTransitionHash,
|
|
4
4
|
forkSessionContent,
|
|
5
5
|
transitionSessionVisibility
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-WD5ROSLL.js";
|
|
7
|
+
import "./chunk-ZWREYEWA.js";
|
|
8
|
+
import "./chunk-6ZYKCRFO.js";
|
|
9
9
|
import "./chunk-PZ5AY32C.js";
|
|
10
10
|
export {
|
|
11
11
|
canonicalSessionForkHash,
|
package/dist/video-generation.js
CHANGED
|
@@ -29,9 +29,9 @@ import {
|
|
|
29
29
|
settleVideoGenerationFailure,
|
|
30
30
|
settleVideoGenerationReady,
|
|
31
31
|
updateWorkspaceVideoGenerationPolicy
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
32
|
+
} from "./chunk-CUPM3FGB.js";
|
|
33
|
+
import "./chunk-ZWREYEWA.js";
|
|
34
|
+
import "./chunk-6ZYKCRFO.js";
|
|
35
35
|
import "./chunk-PZ5AY32C.js";
|
|
36
36
|
export {
|
|
37
37
|
ACTIVE_VIDEO_GENERATION_STATUSES,
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
-- deployment-mode: maintenance
|
|
2
|
+
-- One-way semantic cutover: application-provided per-message context becomes
|
|
3
|
+
-- ordinary user-role model content. Renaming the legacy columns hard-fences old
|
|
4
|
+
-- workers, which would otherwise continue mutating the persistent instruction
|
|
5
|
+
-- prefix and defeat prompt caching.
|
|
6
|
+
|
|
7
|
+
SET LOCAL lock_timeout = '5s';
|
|
8
|
+
SET LOCAL statement_timeout = '10min';
|
|
9
|
+
|
|
10
|
+
-- Reject mixed-version writers before locking, then repeat after the locks to
|
|
11
|
+
-- close the connect-before-lock race. Keep API and workers stopped until the new
|
|
12
|
+
-- application version is active.
|
|
13
|
+
DO $model_context_writer_drain_before_lock$
|
|
14
|
+
BEGIN
|
|
15
|
+
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app')
|
|
16
|
+
AND EXISTS (
|
|
17
|
+
SELECT 1
|
|
18
|
+
FROM pg_stat_activity
|
|
19
|
+
WHERE datname = current_database()
|
|
20
|
+
AND usename = 'opengeni_app'
|
|
21
|
+
AND pid <> pg_backend_pid()
|
|
22
|
+
)
|
|
23
|
+
THEN
|
|
24
|
+
RAISE EXCEPTION
|
|
25
|
+
'model-context user-message activation requires all opengeni_app sessions to be stopped'
|
|
26
|
+
USING ERRCODE = '55000';
|
|
27
|
+
END IF;
|
|
28
|
+
END
|
|
29
|
+
$model_context_writer_drain_before_lock$;
|
|
30
|
+
|
|
31
|
+
LOCK TABLE "sessions" IN ACCESS EXCLUSIVE MODE;
|
|
32
|
+
LOCK TABLE "session_turns" IN ACCESS EXCLUSIVE MODE;
|
|
33
|
+
LOCK TABLE "session_realtime_entries" IN ACCESS EXCLUSIVE MODE;
|
|
34
|
+
LOCK TABLE "slack_interactions" IN ACCESS EXCLUSIVE MODE;
|
|
35
|
+
|
|
36
|
+
DO $model_context_writer_drain_after_lock$
|
|
37
|
+
BEGIN
|
|
38
|
+
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app')
|
|
39
|
+
AND EXISTS (
|
|
40
|
+
SELECT 1
|
|
41
|
+
FROM pg_stat_activity
|
|
42
|
+
WHERE datname = current_database()
|
|
43
|
+
AND usename = 'opengeni_app'
|
|
44
|
+
AND pid <> pg_backend_pid()
|
|
45
|
+
)
|
|
46
|
+
THEN
|
|
47
|
+
RAISE EXCEPTION
|
|
48
|
+
'model-context user-message activation requires all opengeni_app sessions to be stopped'
|
|
49
|
+
USING ERRCODE = '55000';
|
|
50
|
+
END IF;
|
|
51
|
+
END
|
|
52
|
+
$model_context_writer_drain_after_lock$;
|
|
53
|
+
|
|
54
|
+
-- A queued turn has not entered model history yet, so the new worker can append
|
|
55
|
+
-- its context correctly when it claims the turn. A live/resumable turn may have
|
|
56
|
+
-- already shown the context only through the removed instruction-prefix path;
|
|
57
|
+
-- fail rather than silently resume it with different model-visible history.
|
|
58
|
+
DO $model_context_live_turn_guard$
|
|
59
|
+
BEGIN
|
|
60
|
+
IF EXISTS (
|
|
61
|
+
SELECT 1
|
|
62
|
+
FROM "session_turns"
|
|
63
|
+
WHERE "turn_instructions" IS NOT NULL
|
|
64
|
+
AND "status" IN ('running', 'requires_action', 'recovering', 'waiting_capacity')
|
|
65
|
+
)
|
|
66
|
+
THEN
|
|
67
|
+
RAISE EXCEPTION
|
|
68
|
+
'model-context user-message activation requires legacy context-bearing live turns to settle or be superseded'
|
|
69
|
+
USING ERRCODE = '55000';
|
|
70
|
+
END IF;
|
|
71
|
+
END
|
|
72
|
+
$model_context_live_turn_guard$;
|
|
73
|
+
|
|
74
|
+
-- Completed historical turns retain their original conversation truth: their
|
|
75
|
+
-- context was model-visible only through the legacy exact-turn prefix and must
|
|
76
|
+
-- not be rewritten into later persistent history. Only queued turns cross the
|
|
77
|
+
-- cutover into the new same-message semantics; live/resumable turns are rejected
|
|
78
|
+
-- above so no attempt can straddle both representations.
|
|
79
|
+
|
|
80
|
+
-- Slack safety restrictions formerly rode the same legacy per-turn prefix. Move
|
|
81
|
+
-- them to durable session-level authority before that prefix is removed. Match
|
|
82
|
+
-- the reservation identity as well as bound routes so a create-before-bind crash
|
|
83
|
+
-- cannot strand an existing Slack session without its safety policy. Preserve any
|
|
84
|
+
-- pre-existing session persona exactly, and fail rather than truncate it.
|
|
85
|
+
DO $model_context_slack_session_policy$
|
|
86
|
+
DECLARE
|
|
87
|
+
slack_policy CONSTANT text := $slack_policy$This session is an OpenGeni Slack task surface. Treat Slack message and thread context as task-local unless a separate explicit authorized user action says otherwise. Execute direct, safe, sufficiently specified requests immediately. Ask one concise clarifying question only when materially required information is missing or the requested action is risky, irreversible, or authorization-sensitive. Do not write Slack context to Documents, Knowledge, Memory, preferences, Workspace Charter, instructions, or policy unless a separate explicit authorized user action requests it. Never expose private reasoning, credentials, secrets, raw logs, or unbounded output. Keep user-visible output concise, bounded, and safe to send back to Slack.$slack_policy$;
|
|
88
|
+
BEGIN
|
|
89
|
+
IF EXISTS (
|
|
90
|
+
SELECT 1
|
|
91
|
+
FROM "sessions" session_row
|
|
92
|
+
WHERE EXISTS (
|
|
93
|
+
SELECT 1
|
|
94
|
+
FROM "slack_interactions" interaction
|
|
95
|
+
WHERE interaction."session_reservation_id" = session_row."id"
|
|
96
|
+
)
|
|
97
|
+
AND NULLIF(btrim(session_row."instructions"), '') IS NOT NULL
|
|
98
|
+
AND position(slack_policy in session_row."instructions") = 0
|
|
99
|
+
AND char_length(session_row."instructions") + 2 + char_length(slack_policy) > 32768
|
|
100
|
+
)
|
|
101
|
+
THEN
|
|
102
|
+
RAISE EXCEPTION
|
|
103
|
+
'model-context activation cannot append Slack session safety instructions within the session instruction bound'
|
|
104
|
+
USING ERRCODE = '22001';
|
|
105
|
+
END IF;
|
|
106
|
+
|
|
107
|
+
UPDATE "sessions" session_row
|
|
108
|
+
SET "instructions" = CASE
|
|
109
|
+
WHEN NULLIF(btrim(session_row."instructions"), '') IS NULL THEN slack_policy
|
|
110
|
+
WHEN position(slack_policy in session_row."instructions") > 0 THEN session_row."instructions"
|
|
111
|
+
ELSE session_row."instructions" || E'\n\n' || slack_policy
|
|
112
|
+
END
|
|
113
|
+
WHERE EXISTS (
|
|
114
|
+
SELECT 1
|
|
115
|
+
FROM "slack_interactions" interaction
|
|
116
|
+
WHERE interaction."session_reservation_id" = session_row."id"
|
|
117
|
+
);
|
|
118
|
+
END
|
|
119
|
+
$model_context_slack_session_policy$;
|
|
120
|
+
|
|
121
|
+
ALTER TABLE "sessions"
|
|
122
|
+
RENAME COLUMN "initial_turn_instructions" TO "initial_model_context";
|
|
123
|
+
|
|
124
|
+
ALTER TABLE "session_turns"
|
|
125
|
+
RENAME COLUMN "turn_instructions" TO "model_context";
|
|
126
|
+
|
|
127
|
+
-- Match JavaScript String.prototype.trim() plus UTF-16 .length for every
|
|
128
|
+
-- PostgreSQL-representable string. PostgreSQL text excludes lone surrogates,
|
|
129
|
+
-- while astral code points count as two JavaScript code units.
|
|
130
|
+
CREATE OR REPLACE FUNCTION opengeni_private.model_context_value_valid(value text)
|
|
131
|
+
RETURNS boolean
|
|
132
|
+
LANGUAGE plpgsql
|
|
133
|
+
IMMUTABLE
|
|
134
|
+
STRICT
|
|
135
|
+
SET search_path = pg_catalog, pg_temp
|
|
136
|
+
AS $body$
|
|
137
|
+
DECLARE code_units integer;
|
|
138
|
+
BEGIN
|
|
139
|
+
IF value = '' OR value <> btrim(
|
|
140
|
+
value,
|
|
141
|
+
U&'\0009\000A\000B\000C\000D\0020\00A0\1680\2000\2001\2002\2003\2004\2005\2006\2007\2008\2009\200A\2028\2029\202F\205F\3000\FEFF'
|
|
142
|
+
)
|
|
143
|
+
THEN
|
|
144
|
+
RETURN false;
|
|
145
|
+
END IF;
|
|
146
|
+
SELECT sum(CASE WHEN ascii(character) > 65535 THEN 2 ELSE 1 END)::integer
|
|
147
|
+
INTO code_units
|
|
148
|
+
FROM unnest(string_to_array(value, NULL)) AS characters(character);
|
|
149
|
+
RETURN code_units BETWEEN 1 AND 32768;
|
|
150
|
+
EXCEPTION WHEN others THEN
|
|
151
|
+
RETURN false;
|
|
152
|
+
END;
|
|
153
|
+
$body$;
|
|
154
|
+
|
|
155
|
+
REVOKE ALL ON FUNCTION opengeni_private.model_context_value_valid(text) FROM PUBLIC;
|
|
156
|
+
DO $model_context_function_grant$
|
|
157
|
+
BEGIN
|
|
158
|
+
IF EXISTS (SELECT 1 FROM pg_roles WHERE rolname = 'opengeni_app') THEN
|
|
159
|
+
GRANT EXECUTE ON FUNCTION opengeni_private.model_context_value_valid(text)
|
|
160
|
+
TO opengeni_app;
|
|
161
|
+
END IF;
|
|
162
|
+
END
|
|
163
|
+
$model_context_function_grant$;
|
|
164
|
+
|
|
165
|
+
ALTER TABLE "sessions"
|
|
166
|
+
ADD CONSTRAINT "sessions_initial_model_context_check"
|
|
167
|
+
CHECK (
|
|
168
|
+
"initial_model_context" IS NULL
|
|
169
|
+
OR opengeni_private.model_context_value_valid("initial_model_context")
|
|
170
|
+
) NOT VALID;
|
|
171
|
+
|
|
172
|
+
ALTER TABLE "session_turns"
|
|
173
|
+
ADD CONSTRAINT "session_turns_model_context_check"
|
|
174
|
+
CHECK (
|
|
175
|
+
"model_context" IS NULL
|
|
176
|
+
OR opengeni_private.model_context_value_valid("model_context")
|
|
177
|
+
) NOT VALID;
|
|
178
|
+
|
|
179
|
+
ALTER TABLE "session_realtime_entries"
|
|
180
|
+
ADD COLUMN "model_context" text;
|
|
181
|
+
|
|
182
|
+
ALTER TABLE "sessions" VALIDATE CONSTRAINT "sessions_initial_model_context_check";
|
|
183
|
+
ALTER TABLE "session_turns" VALIDATE CONSTRAINT "session_turns_model_context_check";
|
|
184
|
+
|
|
185
|
+
ALTER TABLE "session_realtime_entries"
|
|
186
|
+
ADD CONSTRAINT "session_realtime_entries_model_context_check"
|
|
187
|
+
CHECK (
|
|
188
|
+
"model_context" IS NULL
|
|
189
|
+
OR (
|
|
190
|
+
"direction" = 'provider_in'
|
|
191
|
+
AND "kind" IN ('delegation_call', 'user_transcript', 'assistant_transcript')
|
|
192
|
+
AND opengeni_private.model_context_value_valid("model_context")
|
|
193
|
+
)
|
|
194
|
+
) NOT VALID;
|
|
195
|
+
|
|
196
|
+
ALTER TABLE "session_realtime_entries"
|
|
197
|
+
VALIDATE CONSTRAINT "session_realtime_entries_model_context_check";
|
|
198
|
+
|
|
199
|
+
COMMENT ON COLUMN "sessions"."initial_model_context" IS
|
|
200
|
+
'Application context frozen with the winning initial user message; ordinary model-visible user-role content, omitted by standard timeline rendering.';
|
|
201
|
+
COMMENT ON COLUMN "session_turns"."model_context" IS
|
|
202
|
+
'Application context for the exact accepted user message; copied into canonical model history at first claim.';
|
|
203
|
+
COMMENT ON COLUMN "session_realtime_entries"."model_context" IS
|
|
204
|
+
'Application context attached to an exact provider-in delegation or finalized transcript and materialized as ordinary user-role content.';
|