From 313fb265db78646b1eae18532a008d959843b758 Mon Sep 17 00:00:00 2001 From: Nicky Leach Date: Mon, 19 Oct 2026 12:49:11 -0700 Subject: [PATCH] feat(plugins): invalidate runtimes when connector access changes (#16605) ## Thinking Path > - Paperclip is the open source app people use to manage AI agents for work. > - Runtime preparation depends on access and credential state as well as tool definitions. > - Grant, membership, secret, and endpoint changes need committed invalidation. > - Their writers must acquire locks before journal fanout can lock agent rows. > - This pull request adds access hooks with the corresponding transaction guards. > - Plugins can refresh preparation immediately while task-time authorization remains authoritative. ## Linked Issues or Issue Description **What happened?** Grant changes, credential rotation and revocation, company access changes, and connector endpoint configuration do not request runtime synchronization. Journal fanout exposes lock inversions between credential persistence, access cleanup, and connection assignment writers. **Expected behavior** Committed access changes request runtime preparation without polling or credential values in the journal. Agent-specific secret bindings and new personal delegations affect their target agent. Company access changes remain conservative. Provider bookkeeping does not create preparation work. **Steps to reproduce** 1. Change an audience, delegation, membership permission, referenced credential, vault configuration, or endpoint instruction. 2. Expect a committed runtime event in the correct company and scope. 3. Run reconnect, credential refresh, SSH setup, or membership cleanup concurrently with related writes. 4. Expect both operations to preserve access checks and finish without a lock-order cycle. **Additional context** Final feature extraction from #16503. The earlier slices, #16604, and the separate delivery-test correction #16871 are merged. This PR is now the active change against master. The rebase preserves the merged assignment and definition recipient rules, Unicode selector semantics, and profile/reference transaction guards. ## What Changed - Add migration 0356 for grants, audiences, delegation, membership/permissions, secret bindings, referenced credentials and vaults, and chat/email endpoint configuration. - Keep events content-free. Ignore health, delivery, publication, Vercel verification, and GitHub webhook bookkeeping while retaining credential and repository-access changes. - Target agent secret bindings and all personal delegation changes to their old and new target agents. Coalesce delegation changes per transaction. - Lock existing grants before connections and credential persistence in OAuth and cleanup writers. - Reject superseded refresh leases before rotating stored credentials. Ignore lease acquisition and release when access metadata is unchanged. - Serialize audience replacement, validate membership, and preserve unchanged audiences. - Lock membership before permission-only saves and grant before Railway SSH setup. Individual delegation revocation locks its grant and target. Whole-grant and membership cleanup lock company recipients before deleting scoped delegations. - Lock grants and connection inputs before static-key reconnect writes. Lock company agents before cascading secret deletion; use a nonblocking secret lock and bounded retries to avoid a new cycle with credential writers. - Add PostgreSQL concurrency coverage for access writers and endpoint publication/configuration behavior. - Preserve the owner lock for plugin instance-secret removal; these secrets cannot use ordinary bindings. - Align Slack search refresh, callbacks, and disconnect with grant-before-connection locking. Recheck newly discovered grants without waiting before provider work. - Retry complete membership transactions when a credential deletion candidate is busy. Cover all four cleanup entry points and process company access in ID order. - Document final invalidation coverage and task-time authorization boundaries. ## Verification - Current head: `78aace55bef7f52bc5742b131e0b3961eb5c0f11`. All 1,061 tests across 23 affected suites pass. The named Slack authorization integration scenario also passes; it exercises authorization, refresh, disconnect, and rejection of a late callback. Server/database typechecks, migration safety and numbering, five-snapshot retention, feature maps, and diff checks pass. The complete PR diff was reviewed for secrets and personal data before push. Final acceptance: [CI run 39308303837, attempt 2](https://github.com/paperclipai/paperclip/actions/runs/39308303837) is green, with 55 successful checks and two optional Storybook skips. The current-head Greptile reassessment returned **Apex 5/5** at 19:16 UTC on 2026-10-19. Its full summary reports no actionable issues. Security passed, all threads are resolved, and GitHub reports no merge conflicts. The reassessment was requested as a standard review after the fixes; Greptile retained the Apex tier. - On this head, [CI run 39308303837](https://github.com/paperclipai/paperclip/actions/runs/39308303837) failed the unchanged adapter-utils HTTP/2 fixture with `EADDRINUSE` before READY. Its closed probe left a port handoff race. That test and its gateway are byte-identical on master. No upstream fix was found. The deterministic fixture correction is isolated in #16888; no adapter test changes are included here. The failed jobs recovered on retry without a feature source change. The original failure remains documented here, and #16888 carries the fixture correction separately. That retry demonstrates recovery; the held-probe negative control establishes the port handoff race. - Rebased onto master `194fc11406`, including merged #16604 and #16871. Replayed only the access-hook commit. Resolved OAuth, test, and documentation conflicts while retaining both sets of tests. Migration 0356 preserves the merged assignment/definition recipient rules, Unicode selector semantics, and profile/reference guards. - Apex returned 3/5 on `0fb65bc27`. Negative controls reproduce its Slack delegation and member-cleanup deadlocks (`40P01`) and unwanted Vercel/GitHub bookkeeping events. Slack grant writers now take their locks before the connection. A separate late-grant control reproduces `40P01` without the post-lock recheck; the complete guard passes. All four membership cleanup commands retry from a fresh transaction when the credential is busy. Tests verify successful cleanup and no journal rows from failed attempts. Credential IDs and repository-access changes still notify runtimes. - Earlier review corrections remain covered: static-key reconnect and cascading secret removal each reproduce `40P01` without their guards. Grant lease acquisition/release is ignored. Secret removal releases agent locks when a credential writer is busy. Instance-secret removal retains the owner lock and passes its public plugin API contention regression. Delegation updates and revocations target old/new agents; unrelated-peer, coalescing, unchanged-update, and rollback cases pass. Three negative controls verify the required whole-grant and membership cleanup guards after narrowing delegation scope. - Preserve prior acceptance failures: the first rebased 20-suite run passed 1,025/1,026; its only failure was a draft uninstall fixture blocking a random peer. Blocking the assigned agent corrected that assumption, and all 44 access/assignment tests passed. Later, all 1,044 tests across 21 suites, [CI run 39302185527](https://github.com/paperclipai/paperclip/actions/runs/39302185527), standard Greptile 5/5, and security passed on `0fb65bc27`. That did not clear the later Apex findings described above. Draft run 38975428081 failed a server shard; its cause was not re-investigated. A later green run does not establish that earlier cause. - Local fixture corrections are recorded separately from product failures: an assignment filename filter initially matched no file; the actual suite was included in full runs. A delegation fixture omitted its required creator, and a guard run omitted a query import. The new global-access cleanup fixture now uses its own user to avoid earlier fixtures' memberships. All were corrected before publishing their final iterations. - Local checks target affected services and real PostgreSQL boundaries. A full local build and repository-wide test run were not performed. Hosted CI supplies broader verification. Provider responses in tests are controlled; live provider behavior was not qualified. ## Risks Migration 0356 adds triggers without changing table schema. Apply it through the normal migration flow. Most access changes retain synchronous company-wide invalidation. Company fanout takes O(eligible company agents) locks and journal rows, without a fanout ceiling or mutation quota. Agent secret bindings and individual delegation changes retain narrower recipients. Events contain no credentials. Physical removal of non-instance secrets takes ordered locks on all company agents before cascading into bindings. This costs O(company agents) locks even for an otherwise unreferenced secret. Instance secrets cannot use ordinary bindings and retain their owner lock. A busy secret lock releases the transaction guards and retries up to three times. Continued contention returns a retryable conflict. Provider deletion stays outside that transaction; a retry resumes removal of an already disabled secret. Membership cleanup uses nonblocking credential guards and retries the full membership transaction. Slack search adds two grant queries, scoped to the subject and connection. Its retries occur before provider work or credential persistence. Each retry loop is limited to three attempts. Invalidation requests preparation; task-time authorization and provider session activation remain authoritative. Provider calls use fixtures; no live provider qualification is claimed. ## Model Used OpenAI Codex, GPT-6, with reasoning, repository inspection, code execution, and testing. The exact deployment model ID and context window are not exposed in this session. ## Checklist - [x] I have included a thinking path that traces from project context to this change - [x] I have specified the model used (with version and capability details) - [x] I have checked ROADMAP.md and confirmed this PR does not duplicate planned core work - [x] I have searched GitHub for duplicate or related PRs and linked them above - [x] I have either (a) linked existing issues with `Fixes: #` / `Closes #` / `Refs #` OR (b) described the issue in-PR following the relevant issue template - [x] I have not referenced internal/instance-local Paperclip issues or links (only public GitHub `#NNN` / `github.com/paperclipai/paperclip` URLs) - [x] My branch name describes the change (e.g. `docs/...`, `fix/...`) and contains no internal Paperclip ticket id or instance-derived details - [x] I have run tests locally and they pass - [x] I have added or updated tests where applicable - [x] I have updated relevant documentation to reflect my changes - [x] I have considered and documented any risks above - [x] All Paperclip CI gates are green - [x] Greptile is 5/5 with no open P2s, recommendations, or follow-ups - [x] I will address all Greptile and reviewer comments before requesting merge --------- Co-authored-by: Paperclip --- doc/DATABASE.md | 6 + doc/plugins/AGENT_RUNTIME_SYNC.md | 56 +- maps/feature-map/app-permissions.md | 7 + .../0356_agent_connector_access_hooks.sql | 175 + ...{0351_snapshot.json => 0356_snapshot.json} | 9273 +++++++++-------- packages/db/src/migrations/meta/_journal.json | 7 + .../__tests__/agent-instance-secrets.test.ts | 46 +- .../agent-runtime-connector-access.test.ts | 734 ++ .../src/__tests__/railway-connection.test.ts | 40 +- .../src/__tests__/tool-access-service.test.ts | 235 + server/src/services/access.ts | 54 +- .../chat-teams-file-publication.test.ts | 15 +- server/src/services/connection-intents.ts | 4 + .../services/connectors/slack-search-oauth.ts | 59 +- server/src/services/secrets.ts | 19 +- server/src/services/tool-access.ts | 113 +- 16 files changed, 6149 insertions(+), 4694 deletions(-) create mode 100644 packages/db/src/migrations/0356_agent_connector_access_hooks.sql rename packages/db/src/migrations/meta/{0351_snapshot.json => 0356_snapshot.json} (93%) create mode 100644 server/src/__tests__/agent-runtime-connector-access.test.ts diff --git a/doc/DATABASE.md b/doc/DATABASE.md index 245062da3c3..74e4126ade7 100644 --- a/doc/DATABASE.md +++ b/doc/DATABASE.md @@ -1034,6 +1034,12 @@ an agent's runtime; its assignment does. Entry changes resolve standing profile bindings; policies resolve old and new agent selectors. Both retain scoped recipients. Credential-only fields remain outside this migration's coverage. +Migration 0356 adds access, referenced credentials and vaults, and chat/email +endpoint configuration to connector runtime invalidation. Grant and membership +changes retain company scope. Agent secret bindings and new personal delegations +use agent scope. Credential values remain outside the journal. Endpoint activity, +vault health, and other bookkeeping fields remain excluded. + ## Retired Pipelines storage The Pipelines experiment has been removed from the application, API, CLI, and diff --git a/doc/plugins/AGENT_RUNTIME_SYNC.md b/doc/plugins/AGENT_RUNTIME_SYNC.md index ca1429b433b..1a6e28e5007 100644 --- a/doc/plugins/AGENT_RUNTIME_SYNC.md +++ b/doc/plugins/AGENT_RUNTIME_SYNC.md @@ -161,6 +161,56 @@ the same transaction. The bounded assignment snapshot remains the API described above. An invalidation can advance its revision without changing its assignment fields. Consumers must use their existing authorized readers for tool definitions and configuration. -Credential-only changes, grants, secrets, and endpoint configuration still need -the access hooks supplied by a later migration before consumers can rely on -their immediate synchronization. + +## Access, credentials, and endpoints + +Migration 0356 adds connection grants, grant audiences and delegations, company +membership and permissions, secret bindings, chat/email endpoint configuration, +and referenced credential rotation or revocation. Vault configuration and status +changes invalidate companies whose connector credentials reference that vault. +Vault health checks, OAuth grant refresh leases, Vercel verification timestamps, +GitHub webhook health, and endpoint publication timestamps do not request work. +Credential identifiers, expiry, and repository access changes remain covered. +Events contain no credential values, phone numbers, or provider payloads. + +Access changes conservatively invalidate eligible company agents because +responsible-user and task-time access can vary across runs. Agent secret bindings +instead invalidate their owning agent. Personal delegation creation, reassignment, and revocation invalidate only +their old and new target agents. Whole-grant revocation and membership cleanup +retain company invalidation. Unchanged grant audiences preserve their rows after +membership validation. + +OAuth persistence and membership cleanup lock affected grants before connection +inputs and credential mutations. Each affected set is locked in ID order. Task +completion locks existing grants before assignment inputs. Permission-only saves +lock membership before replacing permissions, as role and status saves do. +Slack search refresh, callbacks, and disconnect lock only the subject's grants +before their connection. After locking the connection, they recheck the grants +without waiting. A newly discovered busy grant rolls back and retries before +provider work or credential persistence. Three failed attempts return a retryable +conflict. Each operation adds two grant queries, bounded to the subject and +connection. The existing connection lock still serializes provider refresh work. + +Membership cleanup locks credential deletion candidates without waiting before +company agent locks. A busy credential rolls back the complete membership +transaction, including its membership and grant locks. All four cleanup entry +points re-read their state on retry, with at most three attempts. Company-access +changes process companies in ID order. + +Personal delegation creation locks its grant, connection reference, and target +agent before insertion. Delegation revocation locks its grant and target before +deletion. Whole-grant and membership cleanup lock eligible company agents in ID +order before deleting scoped delegations. Static-key reconnect locks grants and connection inputs +before credential writes. Secret removal locks company agents in ID order before +cascading into bindings. Plugin instance secrets cannot use ordinary bindings, +so their removal retains its owner lock without a company sweep. It tries the secret lock without waiting, releases its +transaction locks if that lock is busy, and retries up to three times. Continued +contention returns a retryable conflict. Provider deletion stays outside that +transaction; retrying resumes removal of the already disabled secret. These +guards accompany the hooks that require them. + +The runtime snapshot still excludes credentials and arbitrary configuration. +Task-scoped profile bindings, responsible-user consent, gateway sessions, +automatic connector skill overlays, and connection instructions remain in the +existing run preparation path. Invalidation does not create a run identity or +activate a provider session. Transport consumers must preserve those boundaries. diff --git a/maps/feature-map/app-permissions.md b/maps/feature-map/app-permissions.md index b1858f3c6b4..8352134b25f 100644 --- a/maps/feature-map/app-permissions.md +++ b/maps/feature-map/app-permissions.md @@ -48,6 +48,13 @@ bookkeeping, profile-entry edits concurrent with setup finalization, and profile replacement concurrent with application deletion using PostgreSQL. They do not qualify live provider access. +[Connector access runtime tests](../../server/src/__tests__/agent-runtime-connector-access.test.ts) +cover grants, delegation, membership cleanup, referenced vault changes, and +agent-scoped secret bindings. OAuth and Railway tests exercise the corresponding +credential lock order. Slack search and membership cleanup tests cover lock +contention and complete transaction retries. Provider calls use fixtures; no live credentials are +qualified by this coverage. + Manual: Grant one agent access, leave another excluded, and exercise off, ask, and allowed states for a harmless action. Reload between changes. Verify actual denied calls stay denied and ask-first creates a decision rather than executing early. ### `test-and-maintain` diff --git a/packages/db/src/migrations/0356_agent_connector_access_hooks.sql b/packages/db/src/migrations/0356_agent_connector_access_hooks.sql new file mode 100644 index 00000000000..14794cf3f2c --- /dev/null +++ b/packages/db/src/migrations/0356_agent_connector_access_hooks.sql @@ -0,0 +1,175 @@ +CREATE OR REPLACE FUNCTION paperclip_connector_runtime_changed() RETURNS trigger +LANGUAGE plpgsql SET search_path = public, pg_temp AS $$ +DECLARE company uuid; query text; target record; binding record; candidate uuid; + old_projection text := '(to_jsonb(o) - $1)'; new_projection text := '(to_jsonb(n) - $1)'; + ignored text[] := ARRAY['updated_at', 'created_at', 'last_used_at', 'last_resolved_at', 'last_health_at', + 'health_status', 'health_checked_at', 'health_message', 'last_catalog_refresh_at', 'last_seen_at', 'last_error', 'last_event_at', 'last_publication_at', + 'last_sync_at', 'sync_checkpoint', 'activation_at', 'lease_token', 'lease_expires_at']; +BEGIN + IF TG_TABLE_NAME = 'tool_profiles' AND TG_OP = 'INSERT' THEN RETURN NULL; END IF; + IF TG_TABLE_NAME = 'connection_grant_delegations' THEN + IF TG_OP = 'INSERT' THEN query := 'SELECT DISTINCT company_id, agent_id FROM new_rows ORDER BY company_id, agent_id'; + ELSIF TG_OP = 'DELETE' THEN query := 'SELECT DISTINCT company_id, agent_id FROM old_rows ORDER BY company_id, agent_id'; + ELSE query := 'WITH changed AS ( + SELECT to_jsonb(o) AS previous, to_jsonb(n) AS current FROM old_rows o FULL JOIN new_rows n ON o.id = n.id + WHERE (to_jsonb(o) - $1) IS DISTINCT FROM (to_jsonb(n) - $1)), targets AS ( + SELECT previous AS target FROM changed UNION SELECT current FROM changed) + SELECT DISTINCT (target->>''company_id'')::uuid AS company_id, (target->>''agent_id'')::uuid AS agent_id + FROM targets WHERE target IS NOT NULL ORDER BY company_id, agent_id'; + END IF; + FOR binding IN EXECUTE query USING ignored LOOP + PERFORM paperclip_invalidate_connector_agent(binding.company_id, binding.agent_id); + END LOOP; + RETURN NULL; + END IF; + IF TG_TABLE_NAME = 'company_secret_bindings' THEN + IF TG_OP = 'INSERT' THEN query := 'SELECT DISTINCT company_id, target_type, target_id FROM new_rows ORDER BY company_id, target_id'; + ELSIF TG_OP = 'DELETE' THEN query := 'SELECT DISTINCT company_id, target_type, target_id FROM old_rows ORDER BY company_id, target_id'; + ELSE query := 'WITH changed AS ( + SELECT to_jsonb(o) AS previous, to_jsonb(n) AS current FROM old_rows o FULL JOIN new_rows n ON o.id = n.id + WHERE (to_jsonb(o) - $1) IS DISTINCT FROM (to_jsonb(n) - $1)), targets AS ( + SELECT previous AS target FROM changed UNION SELECT current FROM changed) + SELECT DISTINCT (target->>''company_id'')::uuid AS company_id, target->>''target_type'' AS target_type, target->>''target_id'' AS target_id + FROM targets WHERE target IS NOT NULL ORDER BY company_id, target_id'; + END IF; + FOR binding IN EXECUTE query USING ignored LOOP + IF binding.target_type = 'agent' THEN + SELECT id INTO candidate FROM agents WHERE company_id = binding.company_id AND id::text = binding.target_id; + IF FOUND THEN PERFORM paperclip_record_agent_runtime(binding.company_id, candidate); END IF; + ELSE PERFORM paperclip_invalidate_connector_company(binding.company_id); + END IF; + END LOOP; + RETURN NULL; + END IF; + IF TG_TABLE_NAME = 'connection_grants' THEN + old_projection := old_projection || ' #- ''{provider_tenant,oauth,refreshLease}'' #- ''{external_credential,lastVerifiedAt}'' #- ''{provider_tenant,github,lastWebhookAt}'' #- ''{provider_tenant,github,webhookHealth}'''; + new_projection := new_projection || ' #- ''{provider_tenant,oauth,refreshLease}'' #- ''{external_credential,lastVerifiedAt}'' #- ''{provider_tenant,github,lastWebhookAt}'' #- ''{provider_tenant,github,webhookHealth}'''; + END IF; + IF TG_TABLE_NAME = 'tool_policies' THEN + old_projection := old_projection || ' #- ''{config,trustRule,hitCount}'' #- ''{config,trustRule,lastHitAt}'''; + new_projection := new_projection || ' #- ''{config,trustRule,hitCount}'' #- ''{config,trustRule,lastHitAt}'''; + END IF; + IF TG_TABLE_NAME IN ('tool_profile_bindings', 'tool_connection_installs', 'tool_profile_entries', 'tool_policies') THEN + IF TG_TABLE_NAME IN ('tool_profile_entries', 'tool_policies') THEN + IF TG_OP = 'INSERT' THEN query := 'SELECT to_jsonb(n) AS row_data FROM new_rows n'; + ELSIF TG_OP = 'DELETE' THEN query := 'SELECT to_jsonb(o) AS row_data FROM old_rows o'; + ELSE query := format('WITH changed AS ( + SELECT to_jsonb(o) AS previous, to_jsonb(n) AS current FROM old_rows o FULL JOIN new_rows n ON o.%I = n.%I + WHERE %s IS DISTINCT FROM %s) + SELECT previous AS row_data FROM changed WHERE previous IS NOT NULL UNION + SELECT current AS row_data FROM changed WHERE current IS NOT NULL', TG_ARGV[0], TG_ARGV[0], old_projection, new_projection); + END IF; + IF TG_TABLE_NAME = 'tool_profile_entries' THEN + query := 'SELECT b.company_id, b.target_type, b.target_id FROM (' || query || ') changed + JOIN tool_profile_bindings b ON b.company_id = (row_data->>''company_id'')::uuid + AND b.profile_id = (row_data->>''profile_id'')::uuid'; + ELSE + query := 'SELECT (row_data->>''company_id'')::uuid AS company_id, t.target_type, t.target_id + FROM (' || query || ') changed CROSS JOIN LATERAL + paperclip_connector_policy_targets((row_data->>''company_id'')::uuid, row_data->''selectors'') t'; + END IF; + ELSIF TG_OP = 'INSERT' THEN query := 'SELECT company_id, target_type, target_id FROM new_rows'; + ELSIF TG_OP = 'DELETE' THEN query := 'SELECT company_id, target_type, target_id FROM old_rows'; + ELSE query := format('WITH changed AS ( + SELECT o.company_id AS old_company, o.target_type AS old_type, o.target_id AS old_target, + n.company_id AS new_company, n.target_type AS new_type, n.target_id AS new_target + FROM old_rows o FULL JOIN new_rows n ON o.%I = n.%I WHERE %s IS DISTINCT FROM %s) + SELECT old_company AS company_id, old_type AS target_type, old_target AS target_id FROM changed WHERE old_company IS NOT NULL UNION + SELECT new_company AS company_id, new_type AS target_type, new_target AS target_id FROM changed WHERE new_company IS NOT NULL', + TG_ARGV[0], TG_ARGV[0], old_projection, new_projection); + END IF; + FOR target IN EXECUTE 'SELECT DISTINCT company_id, target_type, target_id FROM (' || query || ') targets + WHERE target_type IN (''agent'', ''company'') + ORDER BY company_id, target_type DESC, target_id' USING ignored LOOP + IF target.target_type = 'company' AND target.target_id = target.company_id::text THEN + PERFORM paperclip_invalidate_connector_company(target.company_id); + ELSIF target.target_type = 'agent' AND target.target_id ~ '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$' THEN + SELECT id INTO candidate FROM agents WHERE company_id = target.company_id AND id = target.target_id::uuid; + IF FOUND THEN PERFORM paperclip_invalidate_connector_agent(target.company_id, candidate); END IF; + END IF; + END LOOP; + RETURN NULL; + END IF; + IF TG_OP = 'INSERT' THEN query := 'SELECT DISTINCT company_id FROM new_rows ORDER BY company_id'; + ELSIF TG_OP = 'DELETE' THEN query := 'SELECT DISTINCT company_id FROM old_rows ORDER BY company_id'; + ELSE query := format('WITH changed AS ( + SELECT o.company_id AS old_company, n.company_id AS new_company FROM old_rows o FULL JOIN new_rows n ON o.%I = n.%I + WHERE %s IS DISTINCT FROM %s) + SELECT old_company AS company_id FROM changed WHERE old_company IS NOT NULL UNION + SELECT new_company AS company_id FROM changed WHERE new_company IS NOT NULL ORDER BY company_id', TG_ARGV[0], TG_ARGV[0], old_projection, new_projection); + END IF; + FOR company IN EXECUTE query USING ignored LOOP + PERFORM paperclip_invalidate_connector_company(company); + END LOOP; + RETURN NULL; +END; +$$; +--> statement-breakpoint +DO $$ +DECLARE relation text; key_column text; +BEGIN + FOREACH relation IN ARRAY ARRAY['tool_applications', 'tool_connections', 'connection_grants', 'connection_grant_members', + 'connection_grant_delegations', 'tool_connection_installs', 'tool_catalog_entries', 'tool_profiles', 'tool_profile_entries', + 'tool_profile_bindings', 'tool_policies', 'tool_mcp_gateways', 'company_memberships', 'principal_permission_grants', + 'company_secret_bindings', 'chat_endpoints', 'chat_endpoint_resources', 'chat_agent_routes', 'chat_identity_links', + 'chat_voice_callbacks', 'email_endpoints'] LOOP + key_column := CASE WHEN relation = 'email_endpoints' THEN 'endpoint_id' ELSE 'id' END; + EXECUTE format('DROP TRIGGER IF EXISTS paperclip_connector_runtime_insert ON %I', relation); + EXECUTE format('DROP TRIGGER IF EXISTS paperclip_connector_runtime_update ON %I', relation); + EXECUTE format('DROP TRIGGER IF EXISTS paperclip_connector_runtime_delete ON %I', relation); + EXECUTE format('CREATE TRIGGER paperclip_connector_runtime_insert AFTER INSERT ON %I REFERENCING NEW TABLE AS new_rows FOR EACH STATEMENT EXECUTE FUNCTION paperclip_connector_runtime_changed(%L)', relation, key_column); + EXECUTE format('CREATE TRIGGER paperclip_connector_runtime_update AFTER UPDATE ON %I REFERENCING OLD TABLE AS old_rows NEW TABLE AS new_rows FOR EACH STATEMENT EXECUTE FUNCTION paperclip_connector_runtime_changed(%L)', relation, key_column); + EXECUTE format('CREATE TRIGGER paperclip_connector_runtime_delete AFTER DELETE ON %I REFERENCING OLD TABLE AS old_rows FOR EACH STATEMENT EXECUTE FUNCTION paperclip_connector_runtime_changed(%L)', relation, key_column); + END LOOP; +END; +$$; +--> statement-breakpoint +CREATE OR REPLACE FUNCTION paperclip_connector_uses_secret(p_company uuid, p_secret uuid) RETURNS boolean +LANGUAGE sql STABLE SET search_path = public, pg_temp AS $$ + SELECT EXISTS (SELECT 1 FROM tool_connections WHERE company_id = p_company AND ( + credential_refs @> jsonb_build_array(jsonb_build_object('secretId', p_secret::text)) OR + credential_secret_refs @> jsonb_build_array(jsonb_build_object('secretId', p_secret::text)))) OR + EXISTS (SELECT 1 FROM connection_grants WHERE company_id = p_company AND + credential_secret_refs @> jsonb_build_array(jsonb_build_object('secretId', p_secret::text))); +$$; +--> statement-breakpoint +CREATE OR REPLACE FUNCTION paperclip_connector_secret_changed() RETURNS trigger +LANGUAGE plpgsql SET search_path = public, pg_temp AS $$ +DECLARE secret uuid; company uuid; +BEGIN + IF TG_OP = 'UPDATE' AND jsonb_build_array(OLD.status, OLD.latest_version, OLD.deleted_at, OLD.external_ref, OLD.provider_config_id, OLD.provider_metadata) + IS NOT DISTINCT FROM jsonb_build_array(NEW.status, NEW.latest_version, NEW.deleted_at, NEW.external_ref, NEW.provider_config_id, NEW.provider_metadata) THEN RETURN NEW; END IF; + IF TG_OP = 'DELETE' THEN secret := OLD.id; company := OLD.company_id; + ELSE secret := NEW.id; company := NEW.company_id; END IF; + IF paperclip_connector_uses_secret(company, secret) THEN + PERFORM paperclip_invalidate_connector_company(company); + END IF; + IF TG_OP = 'DELETE' THEN RETURN OLD; END IF; + RETURN NEW; +END; +$$; +--> statement-breakpoint +DROP TRIGGER IF EXISTS paperclip_connector_secret_changed ON company_secrets; +CREATE TRIGGER paperclip_connector_secret_changed AFTER UPDATE OR DELETE ON company_secrets + FOR EACH ROW EXECUTE FUNCTION paperclip_connector_secret_changed(); +--> statement-breakpoint +CREATE OR REPLACE FUNCTION paperclip_connector_vault_changed() RETURNS trigger +LANGUAGE plpgsql SET search_path = public, pg_temp AS $$ +DECLARE vault uuid; company uuid; +BEGIN + IF TG_OP = 'UPDATE' AND jsonb_build_array(OLD.provider, OLD.status, OLD.config, OLD.is_default, OLD.disabled_at) + IS NOT DISTINCT FROM jsonb_build_array(NEW.provider, NEW.status, NEW.config, NEW.is_default, NEW.disabled_at) THEN RETURN NEW; END IF; + IF TG_OP = 'DELETE' THEN vault := OLD.id; ELSE vault := NEW.id; END IF; + FOR company IN SELECT DISTINCT s.company_id FROM company_secrets s WHERE s.provider_config_id = vault + AND paperclip_connector_uses_secret(s.company_id, s.id) ORDER BY s.company_id LOOP + PERFORM paperclip_invalidate_connector_company(company); + END LOOP; + IF TG_OP = 'DELETE' THEN RETURN OLD; END IF; + RETURN NEW; +END; +$$; +--> statement-breakpoint +DROP TRIGGER IF EXISTS paperclip_connector_vault_changed ON company_secret_provider_configs; +CREATE TRIGGER paperclip_connector_vault_changed AFTER INSERT OR UPDATE OR DELETE ON company_secret_provider_configs + FOR EACH ROW EXECUTE FUNCTION paperclip_connector_vault_changed(); +--> statement-breakpoint diff --git a/packages/db/src/migrations/meta/0351_snapshot.json b/packages/db/src/migrations/meta/0356_snapshot.json similarity index 93% rename from packages/db/src/migrations/meta/0351_snapshot.json rename to packages/db/src/migrations/meta/0356_snapshot.json index 9ec9ec8eaef..3fb8074350c 100644 --- a/packages/db/src/migrations/meta/0351_snapshot.json +++ b/packages/db/src/migrations/meta/0356_snapshot.json @@ -1,6 +1,6 @@ { - "id": "c88ec89d-ff6e-4b78-8b80-068d3375a6d0", - "prevId": "4839b071-2dd1-4d71-ba1a-19b040d8d33f", + "id": "043fa318-32fd-4ed6-955f-bf5437ace611", + "prevId": "cdc3c40b-07fc-4ccf-896d-4ece518c4826", "version": "7", "dialect": "postgresql", "tables": { @@ -64,37 +64,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "accounting_runtime_baselines_agent_id_agents_id_fk": { "name": "accounting_runtime_baselines_agent_id_agents_id_fk", "tableFrom": "accounting_runtime_baselines", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "accounting_runtime_baselines_company_id_companies_id_fk": { "name": "accounting_runtime_baselines_company_id_companies_id_fk", "tableFrom": "accounting_runtime_baselines", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -200,9 +200,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "billing_invoice_lines_company_idx": { "name": "billing_invoice_lines_company_idx", @@ -221,50 +221,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "billing_invoice_lines_company_id_companies_id_fk": { "name": "billing_invoice_lines_company_id_companies_id_fk", "tableFrom": "billing_invoice_lines", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "billing_invoice_lines_invoice_id_billing_invoices_id_fk": { "name": "billing_invoice_lines_invoice_id_billing_invoices_id_fk", "tableFrom": "billing_invoice_lines", - "tableTo": "billing_invoices", "columnsFrom": [ "invoice_id" ], + "tableTo": "billing_invoices", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "billing_invoice_lines_cost_event_id_cost_events_id_fk": { "name": "billing_invoice_lines_cost_event_id_cost_events_id_fk", "tableFrom": "billing_invoice_lines", - "tableTo": "cost_events", "columnsFrom": [ "cost_event_id" ], + "tableTo": "cost_events", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -361,24 +361,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "billing_invoices_company_id_companies_id_fk": { "name": "billing_invoices_company_id_companies_id_fk", "tableFrom": "billing_invoices", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -485,9 +485,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_reservations_decision_idx": { "name": "budget_reservations_decision_idx", @@ -506,9 +506,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_reservations_run_idx": { "name": "budget_reservations_run_idx", @@ -527,9 +527,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_reservations_active_idx": { "name": "budget_reservations_active_idx", @@ -554,51 +554,51 @@ } ], "isUnique": false, - "where": "\"budget_reservations\".\"state\" = 'held'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"budget_reservations\".\"state\" = 'held'", + "concurrently": false } }, "foreignKeys": { "budget_reservations_company_id_companies_id_fk": { "name": "budget_reservations_company_id_companies_id_fk", "tableFrom": "budget_reservations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "budget_reservations_run_id_heartbeat_runs_id_fk": { "name": "budget_reservations_run_id_heartbeat_runs_id_fk", "tableFrom": "budget_reservations", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "budget_reservations_agent_id_agents_id_fk": { "name": "budget_reservations_agent_id_agents_id_fk", "tableFrom": "budget_reservations", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -731,9 +731,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_adjustments_event_idx": { "name": "cost_adjustments_event_idx", @@ -758,9 +758,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_adjustments_invoice_line_idx": { "name": "cost_adjustments_invoice_line_idx", @@ -779,50 +779,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "cost_adjustments_company_id_companies_id_fk": { "name": "cost_adjustments_company_id_companies_id_fk", "tableFrom": "cost_adjustments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "cost_adjustments_cost_event_id_cost_events_id_fk": { "name": "cost_adjustments_cost_event_id_cost_events_id_fk", "tableFrom": "cost_adjustments", - "tableTo": "cost_events", "columnsFrom": [ "cost_event_id" ], + "tableTo": "cost_events", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "cost_adjustments_invoice_line_id_billing_invoice_lines_id_fk": { "name": "cost_adjustments_invoice_line_id_billing_invoice_lines_id_fk", "tableFrom": "cost_adjustments", - "tableTo": "billing_invoice_lines", "columnsFrom": [ "invoice_line_id" ], + "tableTo": "billing_invoice_lines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -934,24 +934,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "provider_billing_snapshots_company_id_companies_id_fk": { "name": "provider_billing_snapshots_company_id_companies_id_fk", "tableFrom": "provider_billing_snapshots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -1061,9 +1061,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "run_usage_receipts_run_latest_idx": { "name": "run_usage_receipts_run_latest_idx", @@ -1088,37 +1088,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "run_usage_receipts_company_id_companies_id_fk": { "name": "run_usage_receipts_company_id_companies_id_fk", "tableFrom": "run_usage_receipts", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "run_usage_receipts_run_id_heartbeat_runs_id_fk": { "name": "run_usage_receipts_run_id_heartbeat_runs_id_fk", "tableFrom": "run_usage_receipts", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -1230,9 +1230,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "activity_log_company_agent_created_idx": { "name": "activity_log_company_agent_created_idx", @@ -1257,9 +1257,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "activity_log_company_responsible_user_created_idx": { "name": "activity_log_company_responsible_user_created_idx", @@ -1284,9 +1284,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "activity_log_run_id_idx": { "name": "activity_log_run_id_idx", @@ -1299,9 +1299,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "activity_log_entity_type_id_idx": { "name": "activity_log_entity_type_id_idx", @@ -1320,50 +1320,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "activity_log_company_id_companies_id_fk": { "name": "activity_log_company_id_companies_id_fk", "tableFrom": "activity_log", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "activity_log_agent_id_agents_id_fk": { "name": "activity_log_agent_id_agents_id_fk", "tableFrom": "activity_log", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "activity_log_run_id_heartbeat_runs_id_fk": { "name": "activity_log_run_id_heartbeat_runs_id_fk", "tableFrom": "activity_log", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -1519,9 +1519,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "adapter_auth_sessions_company_owner_adapter_active_uq": { "name": "adapter_auth_sessions_company_owner_adapter_active_uq", @@ -1546,10 +1546,10 @@ } ], "isUnique": true, - "where": "\"adapter_auth_sessions\".\"status\" IN ('starting', 'waiting_for_user', 'promoting', 'awaiting_code', 'submitting')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"adapter_auth_sessions\".\"status\" IN ('starting', 'waiting_for_user', 'promoting', 'awaiting_code', 'submitting')", + "concurrently": false }, "adapter_auth_sessions_public_session_id_uq": { "name": "adapter_auth_sessions_public_session_id_uq", @@ -1562,9 +1562,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "adapter_auth_sessions_environment_idx": { "name": "adapter_auth_sessions_environment_idx", @@ -1577,9 +1577,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "adapter_auth_sessions_expires_idx": { "name": "adapter_auth_sessions_expires_idx", @@ -1592,9 +1592,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "adapter_auth_sessions_provider_lease_idx": { "name": "adapter_auth_sessions_provider_lease_idx", @@ -1607,37 +1607,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "adapter_auth_sessions_company_id_companies_id_fk": { "name": "adapter_auth_sessions_company_id_companies_id_fk", "tableFrom": "adapter_auth_sessions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "adapter_auth_sessions_environment_id_environments_id_fk": { "name": "adapter_auth_sessions_environment_id_environments_id_fk", "tableFrom": "adapter_auth_sessions", - "tableTo": "environments", "columnsFrom": [ "environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -1725,9 +1725,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_api_keys_company_agent_idx": { "name": "agent_api_keys_company_agent_idx", @@ -1746,37 +1746,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_api_keys_agent_id_agents_id_fk": { "name": "agent_api_keys_agent_id_agents_id_fk", "tableFrom": "agent_api_keys", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_api_keys_company_id_companies_id_fk": { "name": "agent_api_keys_company_id_companies_id_fk", "tableFrom": "agent_api_keys", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -1876,9 +1876,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_commentary_company_kind_created_idx": { "name": "agent_commentary_company_kind_created_idx", @@ -1903,63 +1903,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_commentary_company_id_companies_id_fk": { "name": "agent_commentary_company_id_companies_id_fk", "tableFrom": "agent_commentary", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "agent_commentary_agent_id_agents_id_fk": { "name": "agent_commentary_agent_id_agents_id_fk", "tableFrom": "agent_commentary", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "agent_commentary_run_id_heartbeat_runs_id_fk": { "name": "agent_commentary_run_id_heartbeat_runs_id_fk", "tableFrom": "agent_commentary", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "agent_commentary_issue_id_issues_id_fk": { "name": "agent_commentary_issue_id_issues_id_fk", "tableFrom": "agent_commentary", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -2072,9 +2072,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_config_revisions_agent_created_idx": { "name": "agent_config_revisions_agent_created_idx", @@ -2093,50 +2093,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_config_revisions_company_id_companies_id_fk": { "name": "agent_config_revisions_company_id_companies_id_fk", "tableFrom": "agent_config_revisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_config_revisions_agent_id_agents_id_fk": { "name": "agent_config_revisions_agent_id_agents_id_fk", "tableFrom": "agent_config_revisions", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "agent_config_revisions_created_by_agent_id_agents_id_fk": { "name": "agent_config_revisions_created_by_agent_id_agents_id_fk", "tableFrom": "agent_config_revisions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -2198,17 +2198,17 @@ "agent_identity_keys_owner_fk": { "name": "agent_identity_keys_owner_fk", "tableFrom": "agent_identity_keys", - "tableTo": "agents", "columnsFrom": [ "company_id", "agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -2263,33 +2263,33 @@ "agent_instruction_heads_company_id_agent_id_entry_file_revision_id_agent_instruction_revisions_company_id_agent_id_entry_file_id_fk": { "name": "agent_instruction_heads_company_id_agent_id_entry_file_revision_id_agent_instruction_revisions_company_id_agent_id_entry_file_id_fk", "tableFrom": "agent_instruction_heads", - "tableTo": "agent_instruction_revisions", "columnsFrom": [ "company_id", "agent_id", "entry_file", "revision_id" ], + "tableTo": "agent_instruction_revisions", "columnsTo": [ "company_id", "agent_id", "entry_file", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "agent_instruction_heads_identity_uq": { "name": "agent_instruction_heads_identity_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "agent_id", "entry_file" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -2435,39 +2435,39 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_instruction_revisions_company_id_agent_id_agents_company_id_id_fk": { "name": "agent_instruction_revisions_company_id_agent_id_agents_company_id_id_fk", "tableFrom": "agent_instruction_revisions", - "tableTo": "agents", "columnsFrom": [ "company_id", "agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "agent_instruction_revisions_identity_uq": { "name": "agent_instruction_revisions_identity_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "agent_id", "entry_file", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -2627,9 +2627,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_instruction_copies_agent_idx": { "name": "agent_instruction_copies_agent_idx", @@ -2654,39 +2654,39 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_instruction_working_copies_run_id_heartbeat_runs_id_fk": { "name": "agent_instruction_working_copies_run_id_heartbeat_runs_id_fk", "tableFrom": "agent_instruction_working_copies", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "agent_instruction_working_copies_company_id_agent_id_agents_company_id_id_fk": { "name": "agent_instruction_working_copies_company_id_agent_id_agents_company_id_id_fk", "tableFrom": "agent_instruction_working_copies", - "tableTo": "agents", "columnsFrom": [ "company_id", "agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -2770,9 +2770,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_memberships_company_user_starred_idx": { "name": "agent_memberships_company_user_starred_idx", @@ -2797,9 +2797,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_memberships_agent_idx": { "name": "agent_memberships_agent_idx", @@ -2812,9 +2812,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_memberships_company_user_agent_uq": { "name": "agent_memberships_company_user_agent_uq", @@ -2839,37 +2839,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_memberships_company_id_companies_id_fk": { "name": "agent_memberships_company_id_companies_id_fk", "tableFrom": "agent_memberships", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "agent_memberships_agent_id_agents_id_fk": { "name": "agent_memberships_agent_id_agents_id_fk", "tableFrom": "agent_memberships", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -2992,9 +2992,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_runtime_state_company_updated_idx": { "name": "agent_runtime_state_company_updated_idx", @@ -3013,37 +3013,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_runtime_state_agent_id_agents_id_fk": { "name": "agent_runtime_state_agent_id_agents_id_fk", "tableFrom": "agent_runtime_state", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_runtime_state_company_id_companies_id_fk": { "name": "agent_runtime_state_company_id_companies_id_fk", "tableFrom": "agent_runtime_state", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -3157,9 +3157,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_session_goal_actions_company_status_created_idx": { "name": "agent_session_goal_actions_company_status_created_idx", @@ -3184,9 +3184,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_session_goal_actions_session_created_idx": { "name": "agent_session_goal_actions_session_created_idx", @@ -3205,37 +3205,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_session_goal_actions_company_id_companies_id_fk": { "name": "agent_session_goal_actions_company_id_companies_id_fk", "tableFrom": "agent_session_goal_actions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_session_goal_actions_session_id_agent_task_sessions_id_fk": { "name": "agent_session_goal_actions_session_id_agent_task_sessions_id_fk", "tableFrom": "agent_session_goal_actions", - "tableTo": "agent_task_sessions", "columnsFrom": [ "session_id" ], + "tableTo": "agent_task_sessions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -3397,9 +3397,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_task_sessions_company_agent_updated_idx": { "name": "agent_task_sessions_company_agent_updated_idx", @@ -3424,9 +3424,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_task_sessions_company_task_updated_idx": { "name": "agent_task_sessions_company_task_updated_idx", @@ -3451,50 +3451,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_task_sessions_company_id_companies_id_fk": { "name": "agent_task_sessions_company_id_companies_id_fk", "tableFrom": "agent_task_sessions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_task_sessions_agent_id_agents_id_fk": { "name": "agent_task_sessions_agent_id_agents_id_fk", "tableFrom": "agent_task_sessions", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_task_sessions_last_run_id_heartbeat_runs_id_fk": { "name": "agent_task_sessions_last_run_id_heartbeat_runs_id_fk", "tableFrom": "agent_task_sessions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "last_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -3652,9 +3652,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_wakeup_requests_company_requested_idx": { "name": "agent_wakeup_requests_company_requested_idx", @@ -3673,9 +3673,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_wakeup_requests_agent_requested_idx": { "name": "agent_wakeup_requests_agent_requested_idx", @@ -3694,9 +3694,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agent_wakeup_requests_review_path_recovery_idempotency_uq": { "name": "agent_wakeup_requests_review_path_recovery_idempotency_uq", @@ -3715,10 +3715,10 @@ } ], "isUnique": true, - "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'issue_review_path_lost:%' AND \"agent_wakeup_requests\".\"status\" <> 'skipped'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'issue_review_path_lost:%' AND \"agent_wakeup_requests\".\"status\" <> 'skipped'", + "concurrently": false }, "agent_wakeup_requests_disposition_repair_idempotency_uq": { "name": "agent_wakeup_requests_disposition_repair_idempotency_uq", @@ -3737,10 +3737,10 @@ } ], "isUnique": true, - "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'issue_disposition_repair:%' AND \"agent_wakeup_requests\".\"status\" <> 'skipped'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'issue_disposition_repair:%' AND \"agent_wakeup_requests\".\"status\" <> 'skipped'", + "concurrently": false }, "agent_wakeup_requests_question_response_delivery_idempotency_uq": { "name": "agent_wakeup_requests_question_response_delivery_idempotency_uq", @@ -3759,10 +3759,10 @@ } ], "isUnique": true, - "where": "(\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'question-response:%' OR \"agent_wakeup_requests\".\"idempotency_key\" LIKE 'interaction:%') AND \"agent_wakeup_requests\".\"status\" NOT IN ('skipped', 'failed', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "(\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'question-response:%' OR \"agent_wakeup_requests\".\"idempotency_key\" LIKE 'interaction:%') AND \"agent_wakeup_requests\".\"status\" NOT IN ('skipped', 'failed', 'cancelled')", + "concurrently": false }, "agent_wakeup_requests_question_response_history_idx": { "name": "agent_wakeup_requests_question_response_history_idx", @@ -3781,10 +3781,10 @@ } ], "isUnique": false, - "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'question-response:%'", - "concurrently": true, + "with": {}, "method": "btree", - "with": {} + "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'question-response:%'", + "concurrently": true }, "agent_wakeup_requests_connection_intent_delivery_idempotency_uq": { "name": "agent_wakeup_requests_connection_intent_delivery_idempotency_uq", @@ -3803,10 +3803,10 @@ } ], "isUnique": true, - "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'connection-intent:%' AND \"agent_wakeup_requests\".\"status\" NOT IN ('skipped', 'failed', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'connection-intent:%' AND \"agent_wakeup_requests\".\"status\" NOT IN ('skipped', 'failed', 'cancelled')", + "concurrently": false }, "agent_wakeup_requests_tool_action_delivery_uq": { "name": "agent_wakeup_requests_tool_action_delivery_uq", @@ -3825,10 +3825,10 @@ } ], "isUnique": true, - "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'tool-action-response:%' AND \"agent_wakeup_requests\".\"status\" NOT IN ('skipped', 'failed', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'tool-action-response:%' AND \"agent_wakeup_requests\".\"status\" NOT IN ('skipped', 'failed', 'cancelled')", + "concurrently": false }, "agent_wakeup_requests_chat_completion_uq": { "name": "agent_wakeup_requests_chat_completion_uq", @@ -3847,10 +3847,10 @@ } ], "isUnique": true, - "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'chat-completion:%'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"agent_wakeup_requests\".\"idempotency_key\" LIKE 'chat-completion:%'", + "concurrently": false }, "agent_wakeup_requests_company_payload_issue_idx": { "name": "agent_wakeup_requests_company_payload_issue_idx", @@ -3863,43 +3863,43 @@ }, { "expression": "(\"payload\" ->> 'issueId')", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agent_wakeup_requests_company_id_companies_id_fk": { "name": "agent_wakeup_requests_company_id_companies_id_fk", "tableFrom": "agent_wakeup_requests", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agent_wakeup_requests_agent_id_agents_id_fk": { "name": "agent_wakeup_requests_agent_id_agents_id_fk", "tableFrom": "agent_wakeup_requests", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -4143,9 +4143,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agents_company_status_idx": { "name": "agents_company_status_idx", @@ -4164,9 +4164,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agents_company_reports_to_idx": { "name": "agents_company_reports_to_idx", @@ -4185,9 +4185,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "agents_company_default_environment_idx": { "name": "agents_company_default_environment_idx", @@ -4206,61 +4206,61 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "agents_company_id_companies_id_fk": { "name": "agents_company_id_companies_id_fk", "tableFrom": "agents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agents_reports_to_agents_id_fk": { "name": "agents_reports_to_agents_id_fk", "tableFrom": "agents", - "tableTo": "agents", "columnsFrom": [ "reports_to" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "agents_default_environment_id_environments_id_fk": { "name": "agents_default_environment_id_environments_id_fk", "tableFrom": "agents", - "tableTo": "environments", "columnsFrom": [ "default_environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "agents_company_id_uq": { "name": "agents_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -4346,39 +4346,39 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "ai_connection_defaults_company_id_companies_id_fk": { "name": "ai_connection_defaults_company_id_companies_id_fk", "tableFrom": "ai_connection_defaults", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_defaults_company_grant_fk": { "name": "ai_connection_defaults_company_grant_fk", "tableFrom": "ai_connection_defaults", - "tableTo": "connection_grants", "columnsFrom": [ "company_id", "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -4451,54 +4451,54 @@ "ai_connection_pools_id_tool_connections_id_fk": { "name": "ai_connection_pools_id_tool_connections_id_fk", "tableFrom": "ai_connection_pools", - "tableTo": "tool_connections", "columnsFrom": [ "id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_pools_company_id_companies_id_fk": { "name": "ai_connection_pools_company_id_companies_id_fk", "tableFrom": "ai_connection_pools", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_pools_company_connection_fk": { "name": "ai_connection_pools_company_connection_fk", "tableFrom": "ai_connection_pools", - "tableTo": "tool_connections", "columnsFrom": [ "company_id", "id" ], + "tableTo": "tool_connections", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "ai_connection_pools_company_id_uq": { "name": "ai_connection_pools_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -4540,43 +4540,43 @@ "ai_connection_router_cursors_pool_id_ai_connection_pools_id_fk": { "name": "ai_connection_router_cursors_pool_id_ai_connection_pools_id_fk", "tableFrom": "ai_connection_router_cursors", - "tableTo": "ai_connection_pools", "columnsFrom": [ "pool_id" ], + "tableTo": "ai_connection_pools", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_router_cursors_company_id_companies_id_fk": { "name": "ai_connection_router_cursors_company_id_companies_id_fk", "tableFrom": "ai_connection_router_cursors", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_router_cursors_company_pool_fk": { "name": "ai_connection_router_cursors_company_pool_fk", "tableFrom": "ai_connection_router_cursors", - "tableTo": "ai_connection_pools", "columnsFrom": [ "company_id", "pool_id" ], + "tableTo": "ai_connection_pools", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -4670,80 +4670,80 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "ai_connection_task_pins_company_id_companies_id_fk": { "name": "ai_connection_task_pins_company_id_companies_id_fk", "tableFrom": "ai_connection_task_pins", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_task_pins_pool_id_ai_connection_pools_id_fk": { "name": "ai_connection_task_pins_pool_id_ai_connection_pools_id_fk", "tableFrom": "ai_connection_task_pins", - "tableTo": "ai_connection_pools", "columnsFrom": [ "pool_id" ], + "tableTo": "ai_connection_pools", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_task_pins_agent_id_agents_id_fk": { "name": "ai_connection_task_pins_agent_id_agents_id_fk", "tableFrom": "ai_connection_task_pins", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_task_pins_company_pool_fk": { "name": "ai_connection_task_pins_company_pool_fk", "tableFrom": "ai_connection_task_pins", - "tableTo": "ai_connection_pools", "columnsFrom": [ "company_id", "pool_id" ], + "tableTo": "ai_connection_pools", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_connection_task_pins_company_agent_fk": { "name": "ai_connection_task_pins_company_agent_fk", "tableFrom": "ai_connection_task_pins", - "tableTo": "agents", "columnsFrom": [ "company_id", "agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -4819,39 +4819,39 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "ai_provider_defaults_company_id_companies_id_fk": { "name": "ai_provider_defaults_company_id_companies_id_fk", "tableFrom": "ai_provider_defaults", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_provider_defaults_company_grant_fk": { "name": "ai_provider_defaults_company_grant_fk", "tableFrom": "ai_provider_defaults", - "tableTo": "connection_grants", "columnsFrom": [ "company_id", "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -4925,9 +4925,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "ai_subscription_connections_credential_idx": { "name": "ai_subscription_connections_credential_idx", @@ -4946,9 +4946,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "ai_subscription_connections_account_idx": { "name": "ai_subscription_connections_account_idx", @@ -4967,63 +4967,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "ai_subscription_connections_company_id_companies_id_fk": { "name": "ai_subscription_connections_company_id_companies_id_fk", "tableFrom": "ai_subscription_connections", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_subscription_connections_connection_id_tool_connections_id_fk": { "name": "ai_subscription_connections_connection_id_tool_connections_id_fk", "tableFrom": "ai_subscription_connections", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_subscription_connections_grant_id_connection_grants_id_fk": { "name": "ai_subscription_connections_grant_id_connection_grants_id_fk", "tableFrom": "ai_subscription_connections", - "tableTo": "connection_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_subscription_connections_subscription_id_ai_subscriptions_id_fk": { "name": "ai_subscription_connections_subscription_id_ai_subscriptions_id_fk", "tableFrom": "ai_subscription_connections", - "tableTo": "ai_subscriptions", "columnsFrom": [ "subscription_id" ], + "tableTo": "ai_subscriptions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -5132,9 +5132,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "ai_subscription_prices_company_idx": { "name": "ai_subscription_prices_company_idx", @@ -5147,37 +5147,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "ai_subscription_prices_company_id_companies_id_fk": { "name": "ai_subscription_prices_company_id_companies_id_fk", "tableFrom": "ai_subscription_prices", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_subscription_prices_subscription_id_ai_subscriptions_id_fk": { "name": "ai_subscription_prices_subscription_id_ai_subscriptions_id_fk", "tableFrom": "ai_subscription_prices", - "tableTo": "ai_subscriptions", "columnsFrom": [ "subscription_id" ], + "tableTo": "ai_subscriptions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -5316,9 +5316,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "ai_subscriptions_company_idx": { "name": "ai_subscriptions_company_idx", @@ -5331,37 +5331,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "ai_subscriptions_company_id_companies_id_fk": { "name": "ai_subscriptions_company_id_companies_id_fk", "tableFrom": "ai_subscriptions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "ai_subscriptions_merged_into_id_ai_subscriptions_id_fk": { "name": "ai_subscriptions_merged_into_id_ai_subscriptions_id_fk", "tableFrom": "ai_subscriptions", - "tableTo": "ai_subscriptions", "columnsFrom": [ "merged_into_id" ], + "tableTo": "ai_subscriptions", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -5502,9 +5502,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "approval_comments_approval_idx": { "name": "approval_comments_approval_idx", @@ -5517,9 +5517,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "approval_comments_approval_created_idx": { "name": "approval_comments_approval_created_idx", @@ -5538,50 +5538,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "approval_comments_company_id_companies_id_fk": { "name": "approval_comments_company_id_companies_id_fk", "tableFrom": "approval_comments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "approval_comments_approval_id_approvals_id_fk": { "name": "approval_comments_approval_id_approvals_id_fk", "tableFrom": "approval_comments", - "tableTo": "approvals", "columnsFrom": [ "approval_id" ], + "tableTo": "approvals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "approval_comments_author_agent_id_agents_id_fk": { "name": "approval_comments_author_agent_id_agents_id_fk", "tableFrom": "approval_comments", - "tableTo": "agents", "columnsFrom": [ "author_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -5695,37 +5695,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "approvals_company_id_companies_id_fk": { "name": "approvals_company_id_companies_id_fk", "tableFrom": "approvals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "approvals_requested_by_agent_id_agents_id_fk": { "name": "approvals_requested_by_agent_id_agents_id_fk", "tableFrom": "approvals", - "tableTo": "agents", "columnsFrom": [ "requested_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -5832,9 +5832,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "assets_company_provider_idx": { "name": "assets_company_provider_idx", @@ -5853,9 +5853,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "assets_company_object_key_uq": { "name": "assets_company_object_key_uq", @@ -5874,37 +5874,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "assets_company_id_companies_id_fk": { "name": "assets_company_id_companies_id_fk", "tableFrom": "assets", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "assets_created_by_agent_id_agents_id_fk": { "name": "assets_created_by_agent_id_agents_id_fk", "tableFrom": "assets", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -6020,24 +6020,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "account_user_id_user_id_fk": { "name": "account_user_id_user_id_fk", "tableFrom": "account", - "tableTo": "user", "columnsFrom": [ "user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -6104,15 +6104,15 @@ "session_user_id_user_id_fk": { "name": "session_user_id_user_id_fk", "tableFrom": "session", - "tableTo": "user", "columnsFrom": [ "user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -6293,9 +6293,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "board_api_keys_user_idx": { "name": "board_api_keys_user_idx", @@ -6308,24 +6308,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "board_api_keys_user_id_user_id_fk": { "name": "board_api_keys_user_id_user_id_fk", "tableFrom": "board_api_keys", - "tableTo": "user", "columnsFrom": [ "user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -6396,9 +6396,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "browser_use_browsers_session_idx": { "name": "browser_use_browsers_session_idx", @@ -6411,37 +6411,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "browser_use_browsers_company_id_companies_id_fk": { "name": "browser_use_browsers_company_id_companies_id_fk", "tableFrom": "browser_use_browsers", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_browsers_session_id_browser_use_sessions_id_fk": { "name": "browser_use_browsers_session_id_browser_use_sessions_id_fk", "tableFrom": "browser_use_browsers", - "tableTo": "browser_use_sessions", "columnsFrom": [ "session_id" ], + "tableTo": "browser_use_sessions", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -6563,9 +6563,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "browser_use_runs_provider_uq": { "name": "browser_use_runs_provider_uq", @@ -6578,9 +6578,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "browser_use_runs_session_idx": { "name": "browser_use_runs_session_idx", @@ -6593,50 +6593,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "browser_use_runs_company_id_companies_id_fk": { "name": "browser_use_runs_company_id_companies_id_fk", "tableFrom": "browser_use_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_runs_session_id_browser_use_sessions_id_fk": { "name": "browser_use_runs_session_id_browser_use_sessions_id_fk", "tableFrom": "browser_use_runs", - "tableTo": "browser_use_sessions", "columnsFrom": [ "session_id" ], + "tableTo": "browser_use_sessions", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_runs_heartbeat_run_id_heartbeat_runs_id_fk": { "name": "browser_use_runs_heartbeat_run_id_heartbeat_runs_id_fk", "tableFrom": "browser_use_runs", - "tableTo": "heartbeat_runs", "columnsFrom": [ "heartbeat_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -6769,9 +6769,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "browser_use_sessions_provider_uq": { "name": "browser_use_sessions_provider_uq", @@ -6784,76 +6784,76 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "browser_use_sessions_company_id_companies_id_fk": { "name": "browser_use_sessions_company_id_companies_id_fk", "tableFrom": "browser_use_sessions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_sessions_issue_id_issues_id_fk": { "name": "browser_use_sessions_issue_id_issues_id_fk", "tableFrom": "browser_use_sessions", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_sessions_agent_id_agents_id_fk": { "name": "browser_use_sessions_agent_id_agents_id_fk", "tableFrom": "browser_use_sessions", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_sessions_connection_id_tool_connections_id_fk": { "name": "browser_use_sessions_connection_id_tool_connections_id_fk", "tableFrom": "browser_use_sessions", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_sessions_grant_id_connection_grants_id_fk": { "name": "browser_use_sessions_grant_id_connection_grants_id_fk", "tableFrom": "browser_use_sessions", - "tableTo": "connection_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -6897,28 +6897,28 @@ "browser_use_settings_grant_id_connection_grants_id_fk": { "name": "browser_use_settings_grant_id_connection_grants_id_fk", "tableFrom": "browser_use_settings", - "tableTo": "connection_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "browser_use_settings_company_id_companies_id_fk": { "name": "browser_use_settings_company_id_companies_id_fk", "tableFrom": "browser_use_settings", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -7056,9 +7056,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_incidents_company_scope_idx": { "name": "budget_incidents_company_scope_idx", @@ -7089,9 +7089,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_incidents_policy_window_threshold_idx": { "name": "budget_incidents_policy_window_threshold_idx", @@ -7116,51 +7116,51 @@ } ], "isUnique": true, - "where": "\"budget_incidents\".\"status\" = 'open'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"budget_incidents\".\"status\" = 'open'", + "concurrently": false } }, "foreignKeys": { "budget_incidents_company_id_companies_id_fk": { "name": "budget_incidents_company_id_companies_id_fk", "tableFrom": "budget_incidents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "budget_incidents_policy_id_budget_policies_id_fk": { "name": "budget_incidents_policy_id_budget_policies_id_fk", "tableFrom": "budget_incidents", - "tableTo": "budget_policies", "columnsFrom": [ "policy_id" ], + "tableTo": "budget_policies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "budget_incidents_approval_id_approvals_id_fk": { "name": "budget_incidents_approval_id_approvals_id_fk", "tableFrom": "budget_incidents", - "tableTo": "approvals", "columnsFrom": [ "approval_id" ], + "tableTo": "approvals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -7331,9 +7331,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_policies_company_window_idx": { "name": "budget_policies_company_window_idx", @@ -7358,9 +7358,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "budget_policies_company_scope_metric_unique_idx": { "name": "budget_policies_company_scope_metric_unique_idx", @@ -7397,24 +7397,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "budget_policies_company_id_companies_id_fk": { "name": "budget_policies_company_id_companies_id_fk", "tableFrom": "budget_policies", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -7515,9 +7515,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "built_in_managed_resources_resource_idx": { "name": "built_in_managed_resources_resource_idx", @@ -7536,9 +7536,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "built_in_managed_resources_company_bundle_resource_uq": { "name": "built_in_managed_resources_company_bundle_resource_uq", @@ -7569,24 +7569,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "built_in_managed_resources_company_id_companies_id_fk": { "name": "built_in_managed_resources_company_id_companies_id_fk", "tableFrom": "built_in_managed_resources", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -7657,9 +7657,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_attachments_asset_uq": { "name": "case_attachments_asset_uq", @@ -7672,50 +7672,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "case_attachments_company_id_companies_id_fk": { "name": "case_attachments_company_id_companies_id_fk", "tableFrom": "case_attachments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_attachments_case_id_cases_id_fk": { "name": "case_attachments_case_id_cases_id_fk", "tableFrom": "case_attachments", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_attachments_asset_id_assets_id_fk": { "name": "case_attachments_asset_id_assets_id_fk", "tableFrom": "case_attachments", - "tableTo": "assets", "columnsFrom": [ "asset_id" ], + "tableTo": "assets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -7798,9 +7798,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_documents_document_uq": { "name": "case_documents_document_uq", @@ -7813,9 +7813,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_documents_company_case_updated_idx": { "name": "case_documents_company_case_updated_idx", @@ -7840,50 +7840,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "case_documents_company_id_companies_id_fk": { "name": "case_documents_company_id_companies_id_fk", "tableFrom": "case_documents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_documents_case_id_cases_id_fk": { "name": "case_documents_case_id_cases_id_fk", "tableFrom": "case_documents", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_documents_document_id_documents_id_fk": { "name": "case_documents_document_id_documents_id_fk", "tableFrom": "case_documents", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -7985,9 +7985,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_events_company_case_idx": { "name": "case_events_company_case_idx", @@ -8006,50 +8006,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "case_events_company_id_companies_id_fk": { "name": "case_events_company_id_companies_id_fk", "tableFrom": "case_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_events_case_id_cases_id_fk": { "name": "case_events_case_id_cases_id_fk", "tableFrom": "case_events", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_events_actor_agent_id_agents_id_fk": { "name": "case_events_actor_agent_id_agents_id_fk", "tableFrom": "case_events", - "tableTo": "agents", "columnsFrom": [ "actor_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -8141,9 +8141,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_issue_links_company_case_idx": { "name": "case_issue_links_company_case_idx", @@ -8162,9 +8162,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_issue_links_issue_idx": { "name": "case_issue_links_issue_idx", @@ -8177,50 +8177,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "case_issue_links_company_id_companies_id_fk": { "name": "case_issue_links_company_id_companies_id_fk", "tableFrom": "case_issue_links", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_issue_links_case_id_cases_id_fk": { "name": "case_issue_links_case_id_cases_id_fk", "tableFrom": "case_issue_links", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_issue_links_issue_id_issues_id_fk": { "name": "case_issue_links_issue_id_issues_id_fk", "tableFrom": "case_issue_links", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -8296,9 +8296,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_labels_company_case_idx": { "name": "case_labels_company_case_idx", @@ -8317,9 +8317,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "case_labels_label_idx": { "name": "case_labels_label_idx", @@ -8332,50 +8332,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "case_labels_company_id_companies_id_fk": { "name": "case_labels_company_id_companies_id_fk", "tableFrom": "case_labels", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_labels_case_id_cases_id_fk": { "name": "case_labels_case_id_cases_id_fk", "tableFrom": "case_labels", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "case_labels_label_id_labels_id_fk": { "name": "case_labels_label_id_labels_id_fk", "tableFrom": "case_labels", - "tableTo": "labels", "columnsFrom": [ "label_id" ], + "tableTo": "labels", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -8514,9 +8514,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_identifier_uq": { "name": "cases_identifier_uq", @@ -8529,9 +8529,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_company_type_key_uq": { "name": "cases_company_type_key_uq", @@ -8556,9 +8556,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_company_status_idx": { "name": "cases_company_status_idx", @@ -8577,9 +8577,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_company_type_idx": { "name": "cases_company_type_idx", @@ -8598,9 +8598,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_company_project_idx": { "name": "cases_company_project_idx", @@ -8619,9 +8619,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_parent_idx": { "name": "cases_parent_idx", @@ -8634,9 +8634,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cases_title_search_idx": { "name": "cases_title_search_idx", @@ -8650,9 +8650,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "cases_identifier_search_idx": { "name": "cases_identifier_search_idx", @@ -8666,9 +8666,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "cases_summary_search_idx": { "name": "cases_summary_search_idx", @@ -8682,63 +8682,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false } }, "foreignKeys": { "cases_company_id_companies_id_fk": { "name": "cases_company_id_companies_id_fk", "tableFrom": "cases", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "cases_project_id_projects_id_fk": { "name": "cases_project_id_projects_id_fk", "tableFrom": "cases", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "cases_parent_case_id_cases_id_fk": { "name": "cases_parent_case_id_cases_id_fk", "tableFrom": "cases", - "tableTo": "cases", "columnsFrom": [ "parent_case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "cases_created_by_agent_id_agents_id_fk": { "name": "cases_created_by_agent_id_agents_id_fk", "tableFrom": "cases", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -8858,97 +8858,97 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_actions_company_id_companies_id_fk": { "name": "chat_actions_company_id_companies_id_fk", "tableFrom": "chat_actions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_actions_delivery_id_chat_deliveries_id_fk": { "name": "chat_actions_delivery_id_chat_deliveries_id_fk", "tableFrom": "chat_actions", - "tableTo": "chat_deliveries", "columnsFrom": [ "delivery_id" ], + "tableTo": "chat_deliveries", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_actions_company_delivery_fk": { "name": "chat_actions_company_delivery_fk", "tableFrom": "chat_actions", - "tableTo": "chat_deliveries", "columnsFrom": [ "company_id", "delivery_id" ], + "tableTo": "chat_deliveries", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_actions_company_conversation_fk": { "name": "chat_actions_company_conversation_fk", "tableFrom": "chat_actions", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_actions_company_principal_fk": { "name": "chat_actions_company_principal_fk", "tableFrom": "chat_actions", - "tableTo": "chat_external_principals", "columnsFrom": [ "company_id", "principal_id" ], + "tableTo": "chat_external_principals", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_actions_company_endpoint_fk": { "name": "chat_actions_company_endpoint_fk", "tableFrom": "chat_actions", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -9046,54 +9046,54 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_agent_routes_company_id_companies_id_fk": { "name": "chat_agent_routes_company_id_companies_id_fk", "tableFrom": "chat_agent_routes", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_agent_routes_company_source_fk": { "name": "chat_agent_routes_company_source_fk", "tableFrom": "chat_agent_routes", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "source_endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_agent_routes_company_destination_fk": { "name": "chat_agent_routes_company_destination_fk", "tableFrom": "chat_agent_routes", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "destination_endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -9233,9 +9233,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_conversations_thread_uq": { "name": "chat_conversations_thread_uq", @@ -9266,106 +9266,106 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_conversations_company_id_companies_id_fk": { "name": "chat_conversations_company_id_companies_id_fk", "tableFrom": "chat_conversations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_conversations_resource_id_chat_endpoint_resources_id_fk": { "name": "chat_conversations_resource_id_chat_endpoint_resources_id_fk", "tableFrom": "chat_conversations", - "tableTo": "chat_endpoint_resources", "columnsFrom": [ "resource_id" ], + "tableTo": "chat_endpoint_resources", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_conversations_issue_id_issues_id_fk": { "name": "chat_conversations_issue_id_issues_id_fk", "tableFrom": "chat_conversations", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "chat_conversations_company_issue_fk": { "name": "chat_conversations_company_issue_fk", "tableFrom": "chat_conversations", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_conversations_company_endpoint_fk": { "name": "chat_conversations_company_endpoint_fk", "tableFrom": "chat_conversations", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_conversations_company_resource_fk": { "name": "chat_conversations_company_resource_fk", "tableFrom": "chat_conversations", - "tableTo": "chat_endpoint_resources", "columnsFrom": [ "company_id", "resource_id" ], + "tableTo": "chat_endpoint_resources", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_conversations_company_id_uq": { "name": "chat_conversations_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -9508,9 +9508,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_deliveries_event_uq": { "name": "chat_deliveries_event_uq", @@ -9529,9 +9529,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_deliveries_dedupe_uq": { "name": "chat_deliveries_dedupe_uq", @@ -9550,106 +9550,106 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_deliveries_company_id_companies_id_fk": { "name": "chat_deliveries_company_id_companies_id_fk", "tableFrom": "chat_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_deliveries_conversation_id_chat_conversations_id_fk": { "name": "chat_deliveries_conversation_id_chat_conversations_id_fk", "tableFrom": "chat_deliveries", - "tableTo": "chat_conversations", "columnsFrom": [ "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_deliveries_principal_id_chat_external_principals_id_fk": { "name": "chat_deliveries_principal_id_chat_external_principals_id_fk", "tableFrom": "chat_deliveries", - "tableTo": "chat_external_principals", "columnsFrom": [ "principal_id" ], + "tableTo": "chat_external_principals", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_deliveries_company_endpoint_fk": { "name": "chat_deliveries_company_endpoint_fk", "tableFrom": "chat_deliveries", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_deliveries_company_conversation_fk": { "name": "chat_deliveries_company_conversation_fk", "tableFrom": "chat_deliveries", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_deliveries_company_principal_fk": { "name": "chat_deliveries_company_principal_fk", "tableFrom": "chat_deliveries", - "tableTo": "chat_external_principals", "columnsFrom": [ "company_id", "principal_id" ], + "tableTo": "chat_external_principals", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_deliveries_company_id_uq": { "name": "chat_deliveries_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -9735,9 +9735,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoint_leases_expiry_idx": { "name": "chat_endpoint_leases_expiry_idx", @@ -9750,39 +9750,39 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_endpoint_leases_company_id_companies_id_fk": { "name": "chat_endpoint_leases_company_id_companies_id_fk", "tableFrom": "chat_endpoint_leases", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_endpoint_leases_company_endpoint_fk": { "name": "chat_endpoint_leases_company_endpoint_fk", "tableFrom": "chat_endpoint_leases", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -9910,9 +9910,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoint_resources_external_uq": { "name": "chat_endpoint_resources_external_uq", @@ -9937,50 +9937,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_endpoint_resources_company_id_companies_id_fk": { "name": "chat_endpoint_resources_company_id_companies_id_fk", "tableFrom": "chat_endpoint_resources", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_endpoint_resources_company_endpoint_fk": { "name": "chat_endpoint_resources_company_endpoint_fk", "tableFrom": "chat_endpoint_resources", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_endpoint_resources_company_id_uq": { "name": "chat_endpoint_resources_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -10228,9 +10228,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoints_agent_idx": { "name": "chat_endpoints_agent_idx", @@ -10249,9 +10249,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoints_status_idx": { "name": "chat_endpoints_status_idx", @@ -10270,9 +10270,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoints_public_id_uq": { "name": "chat_endpoints_public_id_uq", @@ -10285,9 +10285,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoints_agentmail_inbox_uq": { "name": "chat_endpoints_agentmail_inbox_uq", @@ -10300,10 +10300,10 @@ } ], "isUnique": true, - "where": "\"chat_endpoints\".\"provider\" = 'agentmail' and \"chat_endpoints\".\"status\" != 'archived' and \"chat_endpoints\".\"bot_external_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_endpoints\".\"provider\" = 'agentmail' and \"chat_endpoints\".\"status\" != 'archived' and \"chat_endpoints\".\"bot_external_id\" is not null", + "concurrently": false }, "chat_endpoints_connection_uq": { "name": "chat_endpoints_connection_uq", @@ -10316,9 +10316,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_endpoints_live_bot_external_uq": { "name": "chat_endpoints_live_bot_external_uq", @@ -10343,10 +10343,10 @@ } ], "isUnique": true, - "where": "\"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"provider_account_id\" is not null\n and \"chat_endpoints\".\"bot_external_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"provider_account_id\" is not null\n and \"chat_endpoints\".\"bot_external_id\" is not null", + "concurrently": false }, "chat_endpoints_photon_number_uq": { "name": "chat_endpoints_photon_number_uq", @@ -10359,10 +10359,10 @@ } ], "isUnique": true, - "where": "\"chat_endpoints\".\"provider\" = 'imessage-photon' and \"chat_endpoints\".\"status\" <> 'archived' and \"chat_endpoints\".\"bot_external_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_endpoints\".\"provider\" = 'imessage-photon' and \"chat_endpoints\".\"status\" <> 'archived' and \"chat_endpoints\".\"bot_external_id\" is not null", + "concurrently": false }, "chat_endpoints_live_discord_bot_external_uq": { "name": "chat_endpoints_live_discord_bot_external_uq", @@ -10381,10 +10381,10 @@ } ], "isUnique": true, - "where": "\"chat_endpoints\".\"provider\" = 'discord'\n and \"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"bot_external_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_endpoints\".\"provider\" = 'discord'\n and \"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"bot_external_id\" is not null", + "concurrently": false }, "chat_endpoints_live_global_app_bot_external_uq": { "name": "chat_endpoints_live_global_app_bot_external_uq", @@ -10403,10 +10403,10 @@ } ], "isUnique": true, - "where": "\"chat_endpoints\".\"provider\" in ('github', 'microsoft-teams')\n and \"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"bot_external_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_endpoints\".\"provider\" in ('github', 'microsoft-teams')\n and \"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"bot_external_id\" is not null", + "concurrently": false }, "chat_endpoints_live_bot_username_uq": { "name": "chat_endpoints_live_bot_username_uq", @@ -10431,79 +10431,79 @@ } ], "isUnique": true, - "where": "\"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"provider_account_id\" is not null\n and \"chat_endpoints\".\"bot_username\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_endpoints\".\"status\" in ('verifying', 'active', 'paused', 'attention')\n and \"chat_endpoints\".\"provider_account_id\" is not null\n and \"chat_endpoints\".\"bot_username\" is not null", + "concurrently": false } }, "foreignKeys": { "chat_endpoints_company_id_companies_id_fk": { "name": "chat_endpoints_company_id_companies_id_fk", "tableFrom": "chat_endpoints", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_endpoints_assigned_agent_id_agents_id_fk": { "name": "chat_endpoints_assigned_agent_id_agents_id_fk", "tableFrom": "chat_endpoints", - "tableTo": "agents", "columnsFrom": [ "assigned_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "chat_endpoints_company_agent_fk": { "name": "chat_endpoints_company_agent_fk", "tableFrom": "chat_endpoints", - "tableTo": "agents", "columnsFrom": [ "company_id", "assigned_agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_endpoints_company_connection_fk": { "name": "chat_endpoints_company_connection_fk", "tableFrom": "chat_endpoints", - "tableTo": "tool_connections", "columnsFrom": [ "company_id", "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_endpoints_company_id_uq": { "name": "chat_endpoints_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -10639,9 +10639,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_external_principals_external_uq": { "name": "chat_external_principals_external_uq", @@ -10672,35 +10672,35 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_external_principals_company_id_companies_id_fk": { "name": "chat_external_principals_company_id_companies_id_fk", "tableFrom": "chat_external_principals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_external_principals_company_id_uq": { "name": "chat_external_principals_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -10815,9 +10815,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_identity_links_endpoint_principal_uq": { "name": "chat_identity_links_endpoint_principal_uq", @@ -10836,54 +10836,54 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_identity_links_company_id_companies_id_fk": { "name": "chat_identity_links_company_id_companies_id_fk", "tableFrom": "chat_identity_links", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_identity_links_company_endpoint_fk": { "name": "chat_identity_links_company_endpoint_fk", "tableFrom": "chat_identity_links", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_identity_links_company_principal_fk": { "name": "chat_identity_links_company_principal_fk", "tableFrom": "chat_identity_links", - "tableTo": "chat_external_principals", "columnsFrom": [ "company_id", "principal_id" ], + "tableTo": "chat_external_principals", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -10988,138 +10988,138 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_message_links_company_id_companies_id_fk": { "name": "chat_message_links_company_id_companies_id_fk", "tableFrom": "chat_message_links", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_message_links_delivery_id_chat_deliveries_id_fk": { "name": "chat_message_links_delivery_id_chat_deliveries_id_fk", "tableFrom": "chat_message_links", - "tableTo": "chat_deliveries", "columnsFrom": [ "delivery_id" ], + "tableTo": "chat_deliveries", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_message_links_publication_id_chat_publications_id_fk": { "name": "chat_message_links_publication_id_chat_publications_id_fk", "tableFrom": "chat_message_links", - "tableTo": "chat_publications", "columnsFrom": [ "publication_id" ], + "tableTo": "chat_publications", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_message_links_comment_id_issue_comments_id_fk": { "name": "chat_message_links_comment_id_issue_comments_id_fk", "tableFrom": "chat_message_links", - "tableTo": "issue_comments", "columnsFrom": [ "comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_message_links_company_endpoint_fk": { "name": "chat_message_links_company_endpoint_fk", "tableFrom": "chat_message_links", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_message_links_company_delivery_fk": { "name": "chat_message_links_company_delivery_fk", "tableFrom": "chat_message_links", - "tableTo": "chat_deliveries", "columnsFrom": [ "company_id", "delivery_id" ], + "tableTo": "chat_deliveries", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_message_links_company_publication_fk": { "name": "chat_message_links_company_publication_fk", "tableFrom": "chat_message_links", - "tableTo": "chat_publications", "columnsFrom": [ "company_id", "publication_id" ], + "tableTo": "chat_publications", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_message_links_company_comment_fk": { "name": "chat_message_links_company_comment_fk", "tableFrom": "chat_message_links", - "tableTo": "issue_comments", "columnsFrom": [ "company_id", "comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_message_links_company_conversation_fk": { "name": "chat_message_links_company_conversation_fk", "tableFrom": "chat_message_links", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -11263,9 +11263,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_publications_work_idx": { "name": "chat_publications_work_idx", @@ -11284,9 +11284,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_publications_idempotency_uq": { "name": "chat_publications_idempotency_uq", @@ -11305,110 +11305,110 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_publications_company_id_companies_id_fk": { "name": "chat_publications_company_id_companies_id_fk", "tableFrom": "chat_publications", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_publications_issue_id_issues_id_fk": { "name": "chat_publications_issue_id_issues_id_fk", "tableFrom": "chat_publications", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "chat_publications_comment_id_issue_comments_id_fk": { "name": "chat_publications_comment_id_issue_comments_id_fk", "tableFrom": "chat_publications", - "tableTo": "issue_comments", "columnsFrom": [ "comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_publications_company_issue_fk": { "name": "chat_publications_company_issue_fk", "tableFrom": "chat_publications", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_publications_company_comment_fk": { "name": "chat_publications_company_comment_fk", "tableFrom": "chat_publications", - "tableTo": "issue_comments", "columnsFrom": [ "company_id", "comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_publications_company_endpoint_fk": { "name": "chat_publications_company_endpoint_fk", "tableFrom": "chat_publications", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_publications_company_conversation_fk": { "name": "chat_publications_company_conversation_fk", "tableFrom": "chat_publications", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -11503,9 +11503,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_sdk_state_expiry_idx": { "name": "chat_sdk_state_expiry_idx", @@ -11518,39 +11518,39 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_sdk_state_company_id_companies_id_fk": { "name": "chat_sdk_state_company_id_companies_id_fk", "tableFrom": "chat_sdk_state", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_sdk_state_company_endpoint_fk": { "name": "chat_sdk_state_company_endpoint_fk", "tableFrom": "chat_sdk_state", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -11653,9 +11653,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_completion_deliveries_pending_idx": { "name": "chat_completion_deliveries_pending_idx", @@ -11674,63 +11674,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_completion_deliveries_company_id_companies_id_fk": { "name": "chat_completion_deliveries_company_id_companies_id_fk", "tableFrom": "chat_completion_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_completion_deliveries_task_id_chat_task_handoffs_task_id_fk": { "name": "chat_completion_deliveries_task_id_chat_task_handoffs_task_id_fk", "tableFrom": "chat_completion_deliveries", - "tableTo": "chat_task_handoffs", "columnsFrom": [ "task_id" ], + "tableTo": "chat_task_handoffs", "columnsTo": [ "task_id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_completion_deliveries_target_run_id_heartbeat_runs_id_fk": { "name": "chat_completion_deliveries_target_run_id_heartbeat_runs_id_fk", "tableFrom": "chat_completion_deliveries", - "tableTo": "heartbeat_runs", "columnsFrom": [ "target_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_completion_deliveries_response_comment_id_issue_comments_id_fk": { "name": "chat_completion_deliveries_response_comment_id_issue_comments_id_fk", "tableFrom": "chat_completion_deliveries", - "tableTo": "issue_comments", "columnsFrom": [ "response_comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -11799,63 +11799,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_task_handoffs_task_id_issues_id_fk": { "name": "chat_task_handoffs_task_id_issues_id_fk", "tableFrom": "chat_task_handoffs", - "tableTo": "issues", "columnsFrom": [ "task_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_task_handoffs_company_id_companies_id_fk": { "name": "chat_task_handoffs_company_id_companies_id_fk", "tableFrom": "chat_task_handoffs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_task_handoffs_conversation_id_issues_id_fk": { "name": "chat_task_handoffs_conversation_id_issues_id_fk", "tableFrom": "chat_task_handoffs", - "tableTo": "issues", "columnsFrom": [ "conversation_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_task_handoffs_agent_id_agents_id_fk": { "name": "chat_task_handoffs_agent_id_agents_id_fk", "tableFrom": "chat_task_handoffs", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -11968,17 +11968,17 @@ "chat_github_configurations_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "chat_github_configurations_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "chat_github_configurations", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -12097,9 +12097,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_github_registration_endpoint_idx": { "name": "chat_github_registration_endpoint_idx", @@ -12118,26 +12118,26 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_github_registrations_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "chat_github_registrations_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "chat_github_registrations", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -12317,9 +12317,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_github_reviews_pull_idx": { "name": "chat_github_reviews_pull_idx", @@ -12350,9 +12350,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_github_reviews_task_idx": { "name": "chat_github_reviews_task_idx", @@ -12377,65 +12377,65 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_github_reviews_run_id_heartbeat_runs_id_fk": { "name": "chat_github_reviews_run_id_heartbeat_runs_id_fk", "tableFrom": "chat_github_reviews", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "chat_github_reviews_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "chat_github_reviews_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "chat_github_reviews", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_github_reviews_company_id_issue_id_issues_company_id_id_fk": { "name": "chat_github_reviews_company_id_issue_id_issues_company_id_id_fk", "tableFrom": "chat_github_reviews", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_github_reviews_company_id_uq": { "name": "chat_github_reviews_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -12570,9 +12570,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_slack_manager_grants_owner_idx": { "name": "chat_slack_manager_grants_owner_idx", @@ -12603,24 +12603,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_slack_manager_grants_company_id_companies_id_fk": { "name": "chat_slack_manager_grants_company_id_companies_id_fk", "tableFrom": "chat_slack_manager_grants", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -12749,32 +12749,32 @@ "chat_slack_registrations_company_id_manager_grant_id_chat_slack_manager_grants_company_id_id_fk": { "name": "chat_slack_registrations_company_id_manager_grant_id_chat_slack_manager_grants_company_id_id_fk", "tableFrom": "chat_slack_registrations", - "tableTo": "chat_slack_manager_grants", "columnsFrom": [ "company_id", "manager_grant_id" ], + "tableTo": "chat_slack_manager_grants", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_slack_registrations_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "chat_slack_registrations_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "chat_slack_registrations", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -13038,9 +13038,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_teams_file_transfers_token_uq": { "name": "chat_teams_file_transfers_token_uq", @@ -13059,9 +13059,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_teams_file_transfers_work_idx": { "name": "chat_teams_file_transfers_work_idx", @@ -13086,97 +13086,97 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_teams_file_transfers_company_id_companies_id_fk": { "name": "chat_teams_file_transfers_company_id_companies_id_fk", "tableFrom": "chat_teams_file_transfers", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_teams_file_transfers_issue_id_issues_id_fk": { "name": "chat_teams_file_transfers_issue_id_issues_id_fk", "tableFrom": "chat_teams_file_transfers", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "chat_teams_file_transfers_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "chat_teams_file_transfers_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "chat_teams_file_transfers", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_teams_file_transfers_company_id_publication_id_chat_publications_company_id_id_fk": { "name": "chat_teams_file_transfers_company_id_publication_id_chat_publications_company_id_id_fk", "tableFrom": "chat_teams_file_transfers", - "tableTo": "chat_publications", "columnsFrom": [ "company_id", "publication_id" ], + "tableTo": "chat_publications", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_teams_file_transfers_company_id_conversation_id_chat_conversations_company_id_id_fk": { "name": "chat_teams_file_transfers_company_id_conversation_id_chat_conversations_company_id_id_fk", "tableFrom": "chat_teams_file_transfers", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_teams_file_transfers_company_id_principal_id_chat_external_principals_company_id_id_fk": { "name": "chat_teams_file_transfers_company_id_principal_id_chat_external_principals_company_id_id_fk", "tableFrom": "chat_teams_file_transfers", - "tableTo": "chat_external_principals", "columnsFrom": [ "company_id", "principal_id" ], + "tableTo": "chat_external_principals", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -13276,26 +13276,26 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_voice_callbacks_endpoint_fk": { "name": "chat_voice_callbacks_endpoint_fk", "tableFrom": "chat_voice_callbacks", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -13444,81 +13444,81 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_voice_inbound_endpoint_fk": { "name": "chat_voice_inbound_endpoint_fk", "tableFrom": "chat_voice_inbound_calls", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_voice_inbound_session_fk": { "name": "chat_voice_inbound_session_fk", "tableFrom": "chat_voice_inbound_calls", - "tableTo": "chat_voice_sessions", "columnsFrom": [ "company_id", "session_id" ], + "tableTo": "chat_voice_sessions", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_inbound_intake_fk": { "name": "chat_voice_inbound_intake_fk", "tableFrom": "chat_voice_inbound_calls", - "tableTo": "issues", "columnsFrom": [ "company_id", "intake_issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_inbound_requested_issue_fk": { "name": "chat_voice_inbound_requested_issue_fk", "tableFrom": "chat_voice_inbound_calls", - "tableTo": "issues", "columnsFrom": [ "company_id", "requested_issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_voice_inbound_provider_uq": { "name": "chat_voice_inbound_provider_uq", - "nullsNotDistinct": false, "columns": [ "provider_session_id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -13603,40 +13603,40 @@ "chat_voice_phone_lines_low_trust_environment_id_environments_id_fk": { "name": "chat_voice_phone_lines_low_trust_environment_id_environments_id_fk", "tableFrom": "chat_voice_phone_lines", - "tableTo": "environments", "columnsFrom": [ "low_trust_environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_phone_lines_endpoint_fk": { "name": "chat_voice_phone_lines_endpoint_fk", "tableFrom": "chat_voice_phone_lines", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_voice_phone_lines_number_uq": { "name": "chat_voice_phone_lines_number_uq", - "nullsNotDistinct": false, "columns": [ "provider_number_id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -13736,26 +13736,26 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_voice_reports_session_fk": { "name": "chat_voice_reports_session_fk", "tableFrom": "chat_voice_reports", - "tableTo": "chat_voice_sessions", "columnsFrom": [ "company_id", "session_id" ], + "tableTo": "chat_voice_sessions", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -13854,9 +13854,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_voice_replies_cursor_uq": { "name": "chat_voice_replies_cursor_uq", @@ -13875,54 +13875,54 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_voice_replies_company_id_companies_id_fk": { "name": "chat_voice_replies_company_id_companies_id_fk", "tableFrom": "chat_voice_replies", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_voice_replies_session_fk": { "name": "chat_voice_replies_session_fk", "tableFrom": "chat_voice_replies", - "tableTo": "chat_voice_sessions", "columnsFrom": [ "company_id", "session_id" ], + "tableTo": "chat_voice_sessions", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_replies_publication_fk": { "name": "chat_voice_replies_publication_fk", "tableFrom": "chat_voice_replies", - "tableTo": "chat_publications", "columnsFrom": [ "company_id", "publication_id" ], + "tableTo": "chat_publications", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -14100,9 +14100,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_voice_sessions_request_uq": { "name": "chat_voice_sessions_request_uq", @@ -14127,9 +14127,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_voice_sessions_live_caller_task_uq": { "name": "chat_voice_sessions_live_caller_task_uq", @@ -14154,10 +14154,10 @@ } ], "isUnique": true, - "where": "\"chat_voice_sessions\".\"state\" not in ('ended', 'failed', 'expired')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"chat_voice_sessions\".\"state\" not in ('ended', 'failed', 'expired')", + "concurrently": false }, "chat_voice_sessions_expiry_idx": { "name": "chat_voice_sessions_expiry_idx", @@ -14176,95 +14176,95 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_voice_sessions_company_id_companies_id_fk": { "name": "chat_voice_sessions_company_id_companies_id_fk", "tableFrom": "chat_voice_sessions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_voice_sessions_endpoint_fk": { "name": "chat_voice_sessions_endpoint_fk", "tableFrom": "chat_voice_sessions", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_sessions_conversation_fk": { "name": "chat_voice_sessions_conversation_fk", "tableFrom": "chat_voice_sessions", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_sessions_issue_fk": { "name": "chat_voice_sessions_issue_fk", "tableFrom": "chat_voice_sessions", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_sessions_agent_fk": { "name": "chat_voice_sessions_agent_fk", "tableFrom": "chat_voice_sessions", - "tableTo": "agents", "columnsFrom": [ "company_id", "assigned_agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "chat_voice_sessions_company_id_uq": { "name": "chat_voice_sessions_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -14381,9 +14381,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "chat_voice_tool_calls_webhook_uq": { "name": "chat_voice_tool_calls_webhook_uq", @@ -14402,54 +14402,54 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "chat_voice_tool_calls_company_id_companies_id_fk": { "name": "chat_voice_tool_calls_company_id_companies_id_fk", "tableFrom": "chat_voice_tool_calls", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "chat_voice_tool_calls_session_fk": { "name": "chat_voice_tool_calls_session_fk", "tableFrom": "chat_voice_tool_calls", - "tableTo": "chat_voice_sessions", "columnsFrom": [ "company_id", "session_id" ], + "tableTo": "chat_voice_sessions", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "chat_voice_tool_calls_delivery_fk": { "name": "chat_voice_tool_calls_delivery_fk", "tableFrom": "chat_voice_tool_calls", - "tableTo": "chat_deliveries", "columnsFrom": [ "company_id", "delivery_id" ], + "tableTo": "chat_deliveries", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -14574,9 +14574,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cli_auth_challenges_approved_by_idx": { "name": "cli_auth_challenges_approved_by_idx", @@ -14589,9 +14589,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cli_auth_challenges_requested_company_idx": { "name": "cli_auth_challenges_requested_company_idx", @@ -14604,50 +14604,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "cli_auth_challenges_requested_company_id_companies_id_fk": { "name": "cli_auth_challenges_requested_company_id_companies_id_fk", "tableFrom": "cli_auth_challenges", - "tableTo": "companies", "columnsFrom": [ "requested_company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "cli_auth_challenges_approved_by_user_id_user_id_fk": { "name": "cli_auth_challenges_approved_by_user_id_user_id_fk", "tableFrom": "cli_auth_challenges", - "tableTo": "user", "columnsFrom": [ "approved_by_user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "cli_auth_challenges_board_api_key_id_board_api_keys_id_fk": { "name": "cli_auth_challenges_board_api_key_id_board_api_keys_id_fk", "tableFrom": "cli_auth_challenges", - "tableTo": "board_api_keys", "columnsFrom": [ "board_api_key_id" ], + "tableTo": "board_api_keys", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -14804,9 +14804,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": {}, @@ -14866,9 +14866,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_logos_asset_uq": { "name": "company_logos_asset_uq", @@ -14881,37 +14881,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_logos_company_id_companies_id_fk": { "name": "company_logos_company_id_companies_id_fk", "tableFrom": "company_logos", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_logos_asset_id_assets_id_fk": { "name": "company_logos_asset_id_assets_id_fk", "tableFrom": "company_logos", - "tableTo": "assets", "columnsFrom": [ "asset_id" ], + "tableTo": "assets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -15001,9 +15001,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_memberships_principal_status_idx": { "name": "company_memberships_principal_status_idx", @@ -15028,9 +15028,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_memberships_company_status_idx": { "name": "company_memberships_company_status_idx", @@ -15049,24 +15049,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_memberships_company_id_companies_id_fk": { "name": "company_memberships_company_id_companies_id_fk", "tableFrom": "company_memberships", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -15180,63 +15180,63 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_onboarding_seeds_company_id_companies_id_fk": { "name": "company_onboarding_seeds_company_id_companies_id_fk", "tableFrom": "company_onboarding_seeds", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_onboarding_seeds_goal_id_goals_id_fk": { "name": "company_onboarding_seeds_goal_id_goals_id_fk", "tableFrom": "company_onboarding_seeds", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_onboarding_seeds_agent_id_agents_id_fk": { "name": "company_onboarding_seeds_agent_id_agents_id_fk", "tableFrom": "company_onboarding_seeds", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_onboarding_seeds_issue_id_issues_id_fk": { "name": "company_onboarding_seeds_issue_id_issues_id_fk", "tableFrom": "company_onboarding_seeds", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -15346,9 +15346,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_bindings_secret_idx": { "name": "company_secret_bindings_secret_idx", @@ -15361,9 +15361,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_bindings_target_idx": { "name": "company_secret_bindings_target_idx", @@ -15388,9 +15388,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_bindings_target_path_uq": { "name": "company_secret_bindings_target_path_uq", @@ -15421,37 +15421,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_secret_bindings_company_id_companies_id_fk": { "name": "company_secret_bindings_company_id_companies_id_fk", "tableFrom": "company_secret_bindings", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "company_secret_bindings_secret_id_company_secrets_id_fk": { "name": "company_secret_bindings_secret_id_company_secrets_id_fk", "tableFrom": "company_secret_bindings", - "tableTo": "company_secrets", "columnsFrom": [ "secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -15686,9 +15686,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_proposals_proposer_status_idx": { "name": "company_secret_proposals_proposer_status_idx", @@ -15707,9 +15707,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_proposals_expiry_idx": { "name": "company_secret_proposals_expiry_idx", @@ -15728,9 +15728,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_proposals_secret_proposal_idx": { "name": "company_secret_proposals_secret_proposal_idx", @@ -15743,9 +15743,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_proposals_interaction_idx": { "name": "company_secret_proposals_interaction_idx", @@ -15758,128 +15758,128 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_secret_proposals_company_id_companies_id_fk": { "name": "company_secret_proposals_company_id_companies_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "company_secret_proposals_secret_id_company_secrets_id_fk": { "name": "company_secret_proposals_secret_id_company_secrets_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "company_secrets", "columnsFrom": [ "secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_secret_proposals_secret_proposal_id_company_secret_proposals_id_fk": { "name": "company_secret_proposals_secret_proposal_id_company_secret_proposals_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "company_secret_proposals", "columnsFrom": [ "secret_proposal_id" ], + "tableTo": "company_secret_proposals", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secret_proposals_target_id_agents_id_fk": { "name": "company_secret_proposals_target_id_agents_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "agents", "columnsFrom": [ "target_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secret_proposals_proposed_by_agent_id_agents_id_fk": { "name": "company_secret_proposals_proposed_by_agent_id_agents_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "agents", "columnsFrom": [ "proposed_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secret_proposals_origin_issue_id_issues_id_fk": { "name": "company_secret_proposals_origin_issue_id_issues_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "issues", "columnsFrom": [ "origin_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_secret_proposals_origin_run_id_heartbeat_runs_id_fk": { "name": "company_secret_proposals_origin_run_id_heartbeat_runs_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "heartbeat_runs", "columnsFrom": [ "origin_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secret_proposals_interaction_id_issue_thread_interactions_id_fk": { "name": "company_secret_proposals_interaction_id_issue_thread_interactions_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "issue_thread_interactions", "columnsFrom": [ "interaction_id" ], + "tableTo": "issue_thread_interactions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_secret_proposals_created_secret_id_company_secrets_id_fk": { "name": "company_secret_proposals_created_secret_id_company_secrets_id_fk", "tableFrom": "company_secret_proposals", - "tableTo": "company_secrets", "columnsFrom": [ "created_secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -16024,9 +16024,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_provider_configs_company_provider_idx": { "name": "company_secret_provider_configs_company_provider_idx", @@ -16045,9 +16045,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_provider_configs_default_uq": { "name": "company_secret_provider_configs_default_uq", @@ -16066,38 +16066,38 @@ } ], "isUnique": true, - "where": "\"company_secret_provider_configs\".\"is_default\" = true", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_secret_provider_configs\".\"is_default\" = true", + "concurrently": false } }, "foreignKeys": { "company_secret_provider_configs_company_id_companies_id_fk": { "name": "company_secret_provider_configs_company_id_companies_id_fk", "tableFrom": "company_secret_provider_configs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secret_provider_configs_created_by_agent_id_agents_id_fk": { "name": "company_secret_provider_configs_created_by_agent_id_agents_id_fk", "tableFrom": "company_secret_provider_configs", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -16210,9 +16210,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_versions_value_sha256_idx": { "name": "company_secret_versions_value_sha256_idx", @@ -16225,9 +16225,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_versions_fingerprint_idx": { "name": "company_secret_versions_fingerprint_idx", @@ -16240,9 +16240,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secret_versions_secret_version_uq": { "name": "company_secret_versions_secret_version_uq", @@ -16261,37 +16261,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_secret_versions_secret_id_company_secrets_id_fk": { "name": "company_secret_versions_secret_id_company_secrets_id_fk", "tableFrom": "company_secret_versions", - "tableTo": "company_secrets", "columnsFrom": [ "secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secret_versions_created_by_agent_id_agents_id_fk": { "name": "company_secret_versions_created_by_agent_id_agents_id_fk", "tableFrom": "company_secret_versions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -16476,9 +16476,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secrets_company_scope_idx": { "name": "company_secrets_company_scope_idx", @@ -16497,9 +16497,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secrets_company_owner_idx": { "name": "company_secrets_company_owner_idx", @@ -16518,9 +16518,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secrets_user_definition_owner_idx": { "name": "company_secrets_user_definition_owner_idx", @@ -16545,9 +16545,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secrets_company_provider_idx": { "name": "company_secrets_company_provider_idx", @@ -16566,9 +16566,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secrets_instance_owner_key_uq": { "name": "company_secrets_instance_owner_key_uq", @@ -16599,10 +16599,10 @@ } ], "isUnique": true, - "where": "\"company_secrets\".\"scope\" = 'instance' and \"company_secrets\".\"deleted_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_secrets\".\"scope\" = 'instance' and \"company_secrets\".\"deleted_at\" is null", + "concurrently": false }, "company_secrets_provider_config_idx": { "name": "company_secrets_provider_config_idx", @@ -16615,9 +16615,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_secrets_company_name_uq": { "name": "company_secrets_company_name_uq", @@ -16636,10 +16636,10 @@ } ], "isUnique": true, - "where": "\"company_secrets\".\"scope\" = 'company' and \"company_secrets\".\"deleted_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_secrets\".\"scope\" = 'company' and \"company_secrets\".\"deleted_at\" is null", + "concurrently": false }, "company_secrets_company_key_uq": { "name": "company_secrets_company_key_uq", @@ -16658,10 +16658,10 @@ } ], "isUnique": true, - "where": "\"company_secrets\".\"scope\" = 'company' and \"company_secrets\".\"deleted_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_secrets\".\"scope\" = 'company' and \"company_secrets\".\"deleted_at\" is null", + "concurrently": false }, "company_secrets_user_definition_owner_uq": { "name": "company_secrets_user_definition_owner_uq", @@ -16686,92 +16686,92 @@ } ], "isUnique": true, - "where": "\"company_secrets\".\"scope\" = 'user' and \"company_secrets\".\"deleted_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_secrets\".\"scope\" = 'user' and \"company_secrets\".\"deleted_at\" is null", + "concurrently": false } }, "foreignKeys": { "company_secrets_company_id_companies_id_fk": { "name": "company_secrets_company_id_companies_id_fk", "tableFrom": "company_secrets", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "company_secrets_owner_plugin_id_plugins_id_fk": { "name": "company_secrets_owner_plugin_id_plugins_id_fk", "tableFrom": "company_secrets", - "tableTo": "plugins", "columnsFrom": [ "owner_plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_secrets_user_secret_definition_id_user_secret_definitions_id_fk": { "name": "company_secrets_user_secret_definition_id_user_secret_definitions_id_fk", "tableFrom": "company_secrets", - "tableTo": "user_secret_definitions", "columnsFrom": [ "user_secret_definition_id" ], + "tableTo": "user_secret_definitions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_secrets_provider_config_id_company_secret_provider_configs_id_fk": { "name": "company_secrets_provider_config_id_company_secret_provider_configs_id_fk", "tableFrom": "company_secrets", - "tableTo": "company_secret_provider_configs", "columnsFrom": [ "provider_config_id" ], + "tableTo": "company_secret_provider_configs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_secrets_created_by_agent_id_agents_id_fk": { "name": "company_secrets_created_by_agent_id_agents_id_fk", "tableFrom": "company_secrets", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_secrets_company_id_owner_agent_id_agents_company_id_id_fk": { "name": "company_secrets_company_id_owner_agent_id_agents_company_id_id_fk", "tableFrom": "company_secrets", - "tableTo": "agents", "columnsFrom": [ "company_id", "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -16841,15 +16841,15 @@ "company_skill_policies_company_id_companies_id_fk": { "name": "company_skill_policies_company_id_companies_id_fk", "tableFrom": "company_skill_policies", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -16888,15 +16888,15 @@ "company_skill_import_budgets_company_id_companies_id_fk": { "name": "company_skill_import_budgets_company_id_companies_id_fk", "tableFrom": "company_skill_import_budgets", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -16997,9 +16997,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_source_entries_company_skill_idx": { "name": "company_skill_source_entries_company_skill_idx", @@ -17018,50 +17018,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_source_entries_company_id_companies_id_fk": { "name": "company_skill_source_entries_company_id_companies_id_fk", "tableFrom": "company_skill_source_entries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_source_entries_source_id_company_skill_sources_id_fk": { "name": "company_skill_source_entries_source_id_company_skill_sources_id_fk", "tableFrom": "company_skill_source_entries", - "tableTo": "company_skill_sources", "columnsFrom": [ "source_id" ], + "tableTo": "company_skill_sources", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_source_entries_skill_id_company_skills_id_fk": { "name": "company_skill_source_entries_skill_id_company_skills_id_fk", "tableFrom": "company_skill_source_entries", - "tableTo": "company_skills", "columnsFrom": [ "skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -17305,10 +17305,10 @@ } ], "isUnique": true, - "where": "\"company_skill_sources\".\"removed_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_skill_sources\".\"removed_at\" is null", + "concurrently": false }, "company_skill_sources_identity_ref_idx": { "name": "company_skill_sources_identity_ref_idx", @@ -17333,25 +17333,25 @@ } ], "isUnique": true, - "where": "\"company_skill_sources\".\"removed_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_skill_sources\".\"removed_at\" is null", + "concurrently": false } }, "foreignKeys": { "company_skill_sources_company_id_companies_id_fk": { "name": "company_skill_sources_company_id_companies_id_fk", "tableFrom": "company_skill_sources", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -17516,9 +17516,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_skill_sources_source_project_idx": { "name": "project_skill_sources_source_project_idx", @@ -17543,9 +17543,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_skill_sources_sync_idx": { "name": "project_skill_sources_sync_idx", @@ -17570,63 +17570,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "project_skill_sources_company_id_companies_id_fk": { "name": "project_skill_sources_company_id_companies_id_fk", "tableFrom": "project_skill_sources", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "project_skill_sources_project_id_projects_id_fk": { "name": "project_skill_sources_project_id_projects_id_fk", "tableFrom": "project_skill_sources", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "project_skill_sources_workspace_id_project_workspaces_id_fk": { "name": "project_skill_sources_workspace_id_project_workspaces_id_fk", "tableFrom": "project_skill_sources", - "tableTo": "project_workspaces", "columnsFrom": [ "workspace_id" ], + "tableTo": "project_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "project_skill_sources_source_id_company_skill_sources_id_fk": { "name": "project_skill_sources_source_id_company_skill_sources_id_fk", "tableFrom": "project_skill_sources", - "tableTo": "company_skill_sources", "columnsFrom": [ "source_id" ], + "tableTo": "company_skill_sources", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -17727,9 +17727,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_comments_parent_idx": { "name": "company_skill_comments_parent_idx", @@ -17742,63 +17742,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_comments_company_id_companies_id_fk": { "name": "company_skill_comments_company_id_companies_id_fk", "tableFrom": "company_skill_comments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_comments_company_skill_id_company_skills_id_fk": { "name": "company_skill_comments_company_skill_id_company_skills_id_fk", "tableFrom": "company_skill_comments", - "tableTo": "company_skills", "columnsFrom": [ "company_skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_comments_parent_comment_id_company_skill_comments_id_fk": { "name": "company_skill_comments_parent_comment_id_company_skill_comments_id_fk", "tableFrom": "company_skill_comments", - "tableTo": "company_skill_comments", "columnsFrom": [ "parent_comment_id" ], + "tableTo": "company_skill_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_skill_comments_author_agent_id_agents_id_fk": { "name": "company_skill_comments_author_agent_id_agents_id_fk", "tableFrom": "company_skill_comments", - "tableTo": "agents", "columnsFrom": [ "author_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -17862,24 +17862,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_repository_snapshots_company_id_companies_id_fk": { "name": "company_skill_repository_snapshots_company_id_companies_id_fk", "tableFrom": "company_skill_repository_snapshots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -17949,9 +17949,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_stars_skill_user_idx": { "name": "company_skill_stars_skill_user_idx", @@ -17970,9 +17970,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_stars_company_skill_created_idx": { "name": "company_skill_stars_company_skill_created_idx", @@ -17997,50 +17997,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_stars_company_id_companies_id_fk": { "name": "company_skill_stars_company_id_companies_id_fk", "tableFrom": "company_skill_stars", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_stars_company_skill_id_company_skills_id_fk": { "name": "company_skill_stars_company_skill_id_company_skills_id_fk", "tableFrom": "company_skill_stars", - "tableTo": "company_skills", "columnsFrom": [ "company_skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_stars_agent_id_agents_id_fk": { "name": "company_skill_stars_agent_id_agents_id_fk", "tableFrom": "company_skill_stars", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -18135,9 +18135,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_test_inputs_company_skill_active_idx": { "name": "company_skill_test_inputs_company_skill_active_idx", @@ -18162,37 +18162,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_test_inputs_company_id_companies_id_fk": { "name": "company_skill_test_inputs_company_id_companies_id_fk", "tableFrom": "company_skill_test_inputs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_test_inputs_skill_id_company_skills_id_fk": { "name": "company_skill_test_inputs_skill_id_company_skills_id_fk", "tableFrom": "company_skill_test_inputs", - "tableTo": "company_skills", "columnsFrom": [ "skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -18305,50 +18305,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_test_run_templates_company_id_companies_id_fk": { "name": "company_skill_test_run_templates_company_id_companies_id_fk", "tableFrom": "company_skill_test_run_templates", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_test_run_templates_created_by_agent_id_agents_id_fk": { "name": "company_skill_test_run_templates_created_by_agent_id_agents_id_fk", "tableFrom": "company_skill_test_run_templates", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_skill_test_run_templates_updated_by_agent_id_agents_id_fk": { "name": "company_skill_test_run_templates_updated_by_agent_id_agents_id_fk", "tableFrom": "company_skill_test_run_templates", - "tableTo": "agents", "columnsFrom": [ "updated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -18538,9 +18538,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_test_runs_company_issue_idx": { "name": "company_skill_test_runs_company_issue_idx", @@ -18559,9 +18559,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_test_runs_company_input_created_idx": { "name": "company_skill_test_runs_company_input_created_idx", @@ -18586,9 +18586,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_test_runs_company_status_idx": { "name": "company_skill_test_runs_company_status_idx", @@ -18607,9 +18607,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_test_runs_company_harness_expires_idx": { "name": "company_skill_test_runs_company_harness_expires_idx", @@ -18628,89 +18628,89 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_test_runs_company_id_companies_id_fk": { "name": "company_skill_test_runs_company_id_companies_id_fk", "tableFrom": "company_skill_test_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_test_runs_skill_id_company_skills_id_fk": { "name": "company_skill_test_runs_skill_id_company_skills_id_fk", "tableFrom": "company_skill_test_runs", - "tableTo": "company_skills", "columnsFrom": [ "skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_test_runs_input_id_company_skill_test_inputs_id_fk": { "name": "company_skill_test_runs_input_id_company_skill_test_inputs_id_fk", "tableFrom": "company_skill_test_runs", - "tableTo": "company_skill_test_inputs", "columnsFrom": [ "input_id" ], + "tableTo": "company_skill_test_inputs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_skill_test_runs_skill_version_id_company_skill_versions_id_fk": { "name": "company_skill_test_runs_skill_version_id_company_skill_versions_id_fk", "tableFrom": "company_skill_test_runs", - "tableTo": "company_skill_versions", "columnsFrom": [ "skill_version_id" ], + "tableTo": "company_skill_versions", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "company_skill_test_runs_agent_id_agents_id_fk": { "name": "company_skill_test_runs_agent_id_agents_id_fk", "tableFrom": "company_skill_test_runs", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "company_skill_test_runs_issue_id_issues_id_fk": { "name": "company_skill_test_runs_issue_id_issues_id_fk", "tableFrom": "company_skill_test_runs", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" } }, "compositePrimaryKeys": {}, @@ -18829,9 +18829,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skill_versions_skill_release_idx": { "name": "company_skill_versions_skill_release_idx", @@ -18850,10 +18850,10 @@ } ], "isUnique": true, - "where": "\"company_skill_versions\".\"release_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"company_skill_versions\".\"release_id\" is not null", + "concurrently": false }, "company_skill_versions_company_skill_created_idx": { "name": "company_skill_versions_company_skill_created_idx", @@ -18878,63 +18878,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skill_versions_company_id_companies_id_fk": { "name": "company_skill_versions_company_id_companies_id_fk", "tableFrom": "company_skill_versions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_versions_company_skill_id_company_skills_id_fk": { "name": "company_skill_versions_company_skill_id_company_skills_id_fk", "tableFrom": "company_skill_versions", - "tableTo": "company_skills", "columnsFrom": [ "company_skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "company_skill_versions_repository_snapshot_id_company_skill_repository_snapshots_id_fk": { "name": "company_skill_versions_repository_snapshot_id_company_skill_repository_snapshots_id_fk", "tableFrom": "company_skill_versions", - "tableTo": "company_skill_repository_snapshots", "columnsFrom": [ "repository_snapshot_id" ], + "tableTo": "company_skill_repository_snapshots", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "company_skill_versions_author_agent_id_agents_id_fk": { "name": "company_skill_versions_author_agent_id_agents_id_fk", "tableFrom": "company_skill_versions", - "tableTo": "agents", "columnsFrom": [ "author_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -19170,9 +19170,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skills_company_name_idx": { "name": "company_skills_company_name_idx", @@ -19191,9 +19191,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skills_company_folder_idx": { "name": "company_skills_company_folder_idx", @@ -19212,9 +19212,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skills_company_categories_idx": { "name": "company_skills_company_categories_idx", @@ -19227,9 +19227,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "company_skills_company_sharing_scope_idx": { "name": "company_skills_company_sharing_scope_idx", @@ -19248,9 +19248,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skills_company_current_version_idx": { "name": "company_skills_company_current_version_idx", @@ -19269,9 +19269,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_skills_company_forked_from_idx": { "name": "company_skills_company_forked_from_idx", @@ -19290,76 +19290,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_skills_company_id_companies_id_fk": { "name": "company_skills_company_id_companies_id_fk", "tableFrom": "company_skills", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "company_skills_folder_id_folders_id_fk": { "name": "company_skills_folder_id_folders_id_fk", "tableFrom": "company_skills", - "tableTo": "folders", "columnsFrom": [ "folder_id" ], + "tableTo": "folders", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_skills_forked_from_skill_id_company_skills_id_fk": { "name": "company_skills_forked_from_skill_id_company_skills_id_fk", "tableFrom": "company_skills", - "tableTo": "company_skills", "columnsFrom": [ "forked_from_skill_id" ], + "tableTo": "company_skills", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_skills_forked_from_company_id_companies_id_fk": { "name": "company_skills_forked_from_company_id_companies_id_fk", "tableFrom": "company_skills", - "tableTo": "companies", "columnsFrom": [ "forked_from_company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "company_skills_current_version_id_company_skill_versions_id_fk": { "name": "company_skills_current_version_id_company_skill_versions_id_fk", "tableFrom": "company_skills", - "tableTo": "company_skill_versions", "columnsFrom": [ "current_version_id" ], + "tableTo": "company_skill_versions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -19494,9 +19494,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_transfer_runs_idempotency_direction_idx": { "name": "company_transfer_runs_idempotency_direction_idx", @@ -19515,9 +19515,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_transfer_runs_actor_status_idx": { "name": "company_transfer_runs_actor_status_idx", @@ -19536,24 +19536,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_transfer_runs_company_id_companies_id_fk": { "name": "company_transfer_runs_company_id_companies_id_fk", "tableFrom": "company_transfer_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -19619,9 +19619,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_user_sidebar_preferences_user_idx": { "name": "company_user_sidebar_preferences_user_idx", @@ -19634,9 +19634,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "company_user_sidebar_preferences_company_user_uq": { "name": "company_user_sidebar_preferences_company_user_uq", @@ -19655,24 +19655,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "company_user_sidebar_preferences_company_id_companies_id_fk": { "name": "company_user_sidebar_preferences_company_id_companies_id_fk", "tableFrom": "company_user_sidebar_preferences", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -19796,9 +19796,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "completion_contracts_issue_hash_uq": { "name": "completion_contracts_issue_hash_uq", @@ -19817,68 +19817,68 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "completion_contracts_company_id_companies_id_fk": { "name": "completion_contracts_company_id_companies_id_fk", "tableFrom": "completion_contracts", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "completion_contracts_issue_company_fk": { "name": "completion_contracts_issue_company_fk", "tableFrom": "completion_contracts", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "completion_contracts_supersedes_owner_fk": { "name": "completion_contracts_supersedes_owner_fk", "tableFrom": "completion_contracts", - "tableTo": "completion_contracts", "columnsFrom": [ "company_id", "issue_id", "supersedes_contract_id" ], + "tableTo": "completion_contracts", "columnsTo": [ "company_id", "issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "completion_contracts_company_issue_id_uq": { "name": "completion_contracts_company_issue_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "issue_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -20016,9 +20016,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_event_deliveries_company_status_idx": { "name": "connection_event_deliveries_company_status_idx", @@ -20043,24 +20043,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "connection_event_deliveries_company_id_companies_id_fk": { "name": "connection_event_deliveries_company_id_companies_id_fk", "tableFrom": "connection_event_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -20124,37 +20124,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "connection_intent_deliveries_interaction_id_issue_thread_interactions_id_fk": { "name": "connection_intent_deliveries_interaction_id_issue_thread_interactions_id_fk", "tableFrom": "connection_intent_deliveries", - "tableTo": "issue_thread_interactions", "columnsFrom": [ "interaction_id" ], + "tableTo": "issue_thread_interactions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_intent_deliveries_company_id_companies_id_fk": { "name": "connection_intent_deliveries_company_id_companies_id_fk", "tableFrom": "connection_intent_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -20357,9 +20357,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_provider_request_idx": { "name": "cost_events_provider_request_idx", @@ -20384,9 +20384,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_company_project_occurred_idx": { "name": "cost_events_company_project_occurred_idx", @@ -20411,9 +20411,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_unpriced_idx": { "name": "cost_events_unpriced_idx", @@ -20438,10 +20438,10 @@ } ], "isUnique": false, - "where": "\"cost_events\".\"cost_status\" = 'unpriced' and \"cost_events\".\"billing_type\" <> 'subscription_included'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"cost_events\".\"cost_status\" = 'unpriced' and \"cost_events\".\"billing_type\" <> 'subscription_included'", + "concurrently": false }, "cost_events_data_quality_idx": { "name": "cost_events_data_quality_idx", @@ -20466,10 +20466,10 @@ } ], "isUnique": false, - "where": "\"cost_events\".\"billing_type\" = 'unknown' or (\"cost_events\".\"cost_status\" = 'unpriced' and \"cost_events\".\"billing_type\" <> 'subscription_included')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"cost_events\".\"billing_type\" = 'unknown' or (\"cost_events\".\"cost_status\" = 'unpriced' and \"cost_events\".\"billing_type\" <> 'subscription_included')", + "concurrently": false }, "cost_events_company_occurred_idx": { "name": "cost_events_company_occurred_idx", @@ -20488,9 +20488,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_company_subscription_occurred_idx": { "name": "cost_events_company_subscription_occurred_idx", @@ -20515,9 +20515,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_company_agent_occurred_idx": { "name": "cost_events_company_agent_occurred_idx", @@ -20542,9 +20542,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_company_provider_occurred_idx": { "name": "cost_events_company_provider_occurred_idx", @@ -20569,9 +20569,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_company_biller_occurred_idx": { "name": "cost_events_company_biller_occurred_idx", @@ -20596,9 +20596,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "cost_events_company_heartbeat_run_idx": { "name": "cost_events_company_heartbeat_run_idx", @@ -20617,102 +20617,102 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "cost_events_company_id_companies_id_fk": { "name": "cost_events_company_id_companies_id_fk", "tableFrom": "cost_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "cost_events_agent_id_agents_id_fk": { "name": "cost_events_agent_id_agents_id_fk", "tableFrom": "cost_events", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "cost_events_issue_id_issues_id_fk": { "name": "cost_events_issue_id_issues_id_fk", "tableFrom": "cost_events", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "cost_events_project_id_projects_id_fk": { "name": "cost_events_project_id_projects_id_fk", "tableFrom": "cost_events", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "cost_events_goal_id_goals_id_fk": { "name": "cost_events_goal_id_goals_id_fk", "tableFrom": "cost_events", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "cost_events_heartbeat_run_id_heartbeat_runs_id_fk": { "name": "cost_events_heartbeat_run_id_heartbeat_runs_id_fk", "tableFrom": "cost_events", - "tableTo": "heartbeat_runs", "columnsFrom": [ "heartbeat_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "cost_events_subscription_id_ai_subscriptions_id_fk": { "name": "cost_events_subscription_id_ai_subscriptions_id_fk", "tableFrom": "cost_events", - "tableTo": "ai_subscriptions", "columnsFrom": [ "subscription_id" ], + "tableTo": "ai_subscriptions", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -20791,15 +20791,15 @@ "company_decision_models_company_id_companies_id_fk": { "name": "company_decision_models_company_id_companies_id_fk", "tableFrom": "company_decision_models", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -20995,9 +20995,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_invocations_pending_idx": { "name": "decision_invocations_pending_idx", @@ -21010,10 +21010,10 @@ } ], "isUnique": false, - "where": "\"decision_invocations\".\"status\" = 'running'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"decision_invocations\".\"status\" = 'running'", + "concurrently": false }, "decision_invocations_cost_idx": { "name": "decision_invocations_cost_idx", @@ -21026,37 +21026,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_invocations_company_id_companies_id_fk": { "name": "decision_invocations_company_id_companies_id_fk", "tableFrom": "decision_invocations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_invocations_cost_event_id_cost_events_id_fk": { "name": "decision_invocations_cost_event_id_cost_events_id_fk", "tableFrom": "decision_invocations", - "tableTo": "cost_events", "columnsFrom": [ "cost_event_id" ], + "tableTo": "cost_events", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -21194,9 +21194,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_archive_notification_outbox_pending_idx": { "name": "decision_archive_notification_outbox_pending_idx", @@ -21215,37 +21215,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_archive_notification_outbox_company_id_companies_id_fk": { "name": "decision_archive_notification_outbox_company_id_companies_id_fk", "tableFrom": "decision_archive_notification_outbox", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_archive_notification_outbox_origin_agent_id_agents_id_fk": { "name": "decision_archive_notification_outbox_origin_agent_id_agents_id_fk", "tableFrom": "decision_archive_notification_outbox", - "tableTo": "agents", "columnsFrom": [ "origin_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -21362,9 +21362,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_queue_items_company_source_idx": { "name": "decision_queue_items_company_source_idx", @@ -21389,78 +21389,78 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_queue_items_company_id_companies_id_fk": { "name": "decision_queue_items_company_id_companies_id_fk", "tableFrom": "decision_queue_items", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_queue_items_added_by_agent_id_agents_id_fk": { "name": "decision_queue_items_added_by_agent_id_agents_id_fk", "tableFrom": "decision_queue_items", - "tableTo": "agents", "columnsFrom": [ "added_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_queue_items_added_by_run_id_heartbeat_runs_id_fk": { "name": "decision_queue_items_added_by_run_id_heartbeat_runs_id_fk", "tableFrom": "decision_queue_items", - "tableTo": "heartbeat_runs", "columnsFrom": [ "added_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_queue_items_added_by_agent_api_key_id_agent_api_keys_id_fk": { "name": "decision_queue_items_added_by_agent_api_key_id_agent_api_keys_id_fk", "tableFrom": "decision_queue_items", - "tableTo": "agent_api_keys", "columnsFrom": [ "added_by_agent_api_key_id" ], + "tableTo": "agent_api_keys", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_queue_items_queue_company_fk": { "name": "decision_queue_items_queue_company_fk", "tableFrom": "decision_queue_items", - "tableTo": "decision_queues", "columnsFrom": [ "queue_id", "company_id" ], + "tableTo": "decision_queues", "columnsTo": [ "id", "company_id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -21592,9 +21592,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_queues_company_updated_idx": { "name": "decision_queues_company_updated_idx", @@ -21613,74 +21613,74 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_queues_company_id_companies_id_fk": { "name": "decision_queues_company_id_companies_id_fk", "tableFrom": "decision_queues", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_queues_created_by_agent_id_agents_id_fk": { "name": "decision_queues_created_by_agent_id_agents_id_fk", "tableFrom": "decision_queues", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_queues_created_by_run_id_heartbeat_runs_id_fk": { "name": "decision_queues_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "decision_queues", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_queues_created_by_agent_api_key_id_agent_api_keys_id_fk": { "name": "decision_queues_created_by_agent_api_key_id_agent_api_keys_id_fk", "tableFrom": "decision_queues", - "tableTo": "agent_api_keys", "columnsFrom": [ "created_by_agent_api_key_id" ], + "tableTo": "agent_api_keys", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "decision_queues_id_company_uq": { "name": "decision_queues_id_company_uq", - "nullsNotDistinct": false, "columns": [ "id", "company_id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -21827,9 +21827,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_retention_company_archived_idx": { "name": "decision_retention_company_archived_idx", @@ -21848,50 +21848,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_retention_company_id_companies_id_fk": { "name": "decision_retention_company_id_companies_id_fk", "tableFrom": "decision_retention", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_retention_archived_by_agent_id_agents_id_fk": { "name": "decision_retention_archived_by_agent_id_agents_id_fk", "tableFrom": "decision_retention", - "tableTo": "agents", "columnsFrom": [ "archived_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_retention_archived_by_run_id_heartbeat_runs_id_fk": { "name": "decision_retention_archived_by_run_id_heartbeat_runs_id_fk", "tableFrom": "decision_retention", - "tableTo": "heartbeat_runs", "columnsFrom": [ "archived_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -22034,9 +22034,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_triage_company_decide_by_idx": { "name": "decision_triage_company_decide_by_idx", @@ -22055,63 +22055,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_triage_company_id_companies_id_fk": { "name": "decision_triage_company_id_companies_id_fk", "tableFrom": "decision_triage", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_triage_set_by_agent_id_agents_id_fk": { "name": "decision_triage_set_by_agent_id_agents_id_fk", "tableFrom": "decision_triage", - "tableTo": "agents", "columnsFrom": [ "set_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_triage_set_by_run_id_heartbeat_runs_id_fk": { "name": "decision_triage_set_by_run_id_heartbeat_runs_id_fk", "tableFrom": "decision_triage", - "tableTo": "heartbeat_runs", "columnsFrom": [ "set_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_triage_set_by_agent_api_key_id_agent_api_keys_id_fk": { "name": "decision_triage_set_by_agent_api_key_id_agent_api_keys_id_fk", "tableFrom": "decision_triage", - "tableTo": "agent_api_keys", "columnsFrom": [ "set_by_agent_api_key_id" ], + "tableTo": "agent_api_keys", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -22251,9 +22251,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_triage_events_queue_created_idx": { "name": "decision_triage_events_queue_created_idx", @@ -22272,76 +22272,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_triage_events_company_id_companies_id_fk": { "name": "decision_triage_events_company_id_companies_id_fk", "tableFrom": "decision_triage_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_triage_events_queue_id_decision_queues_id_fk": { "name": "decision_triage_events_queue_id_decision_queues_id_fk", "tableFrom": "decision_triage_events", - "tableTo": "decision_queues", "columnsFrom": [ "queue_id" ], + "tableTo": "decision_queues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_triage_events_actor_agent_id_agents_id_fk": { "name": "decision_triage_events_actor_agent_id_agents_id_fk", "tableFrom": "decision_triage_events", - "tableTo": "agents", "columnsFrom": [ "actor_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_triage_events_actor_run_id_heartbeat_runs_id_fk": { "name": "decision_triage_events_actor_run_id_heartbeat_runs_id_fk", "tableFrom": "decision_triage_events", - "tableTo": "heartbeat_runs", "columnsFrom": [ "actor_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_triage_events_agent_api_key_id_agent_api_keys_id_fk": { "name": "decision_triage_events_agent_api_key_id_agent_api_keys_id_fk", "tableFrom": "decision_triage_events", - "tableTo": "agent_api_keys", "columnsFrom": [ "agent_api_key_id" ], + "tableTo": "agent_api_keys", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -22468,9 +22468,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_training_examples_issue_idx": { "name": "decision_training_examples_issue_idx", @@ -22483,9 +22483,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_training_examples_source_author_uq": { "name": "decision_training_examples_source_author_uq", @@ -22510,37 +22510,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_training_examples_company_id_companies_id_fk": { "name": "decision_training_examples_company_id_companies_id_fk", "tableFrom": "decision_training_examples", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_training_examples_issue_id_issues_id_fk": { "name": "decision_training_examples_issue_id_issues_id_fk", "tableFrom": "decision_training_examples", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -22622,63 +22622,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_bundles_company_id_companies_id_fk": { "name": "decision_bundles_company_id_companies_id_fk", "tableFrom": "decision_bundles", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_bundles_origin_agent_id_agents_id_fk": { "name": "decision_bundles_origin_agent_id_agents_id_fk", "tableFrom": "decision_bundles", - "tableTo": "agents", "columnsFrom": [ "origin_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_bundles_origin_issue_id_issues_id_fk": { "name": "decision_bundles_origin_issue_id_issues_id_fk", "tableFrom": "decision_bundles", - "tableTo": "issues", "columnsFrom": [ "origin_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_bundles_origin_run_id_heartbeat_runs_id_fk": { "name": "decision_bundles_origin_run_id_heartbeat_runs_id_fk", "tableFrom": "decision_bundles", - "tableTo": "heartbeat_runs", "columnsFrom": [ "origin_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -22772,9 +22772,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_effect_executions_target_issue_idx": { "name": "decision_effect_executions_target_issue_idx", @@ -22787,50 +22787,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_effect_executions_decision_id_decisions_id_fk": { "name": "decision_effect_executions_decision_id_decisions_id_fk", "tableFrom": "decision_effect_executions", - "tableTo": "decisions", "columnsFrom": [ "decision_id" ], + "tableTo": "decisions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_effect_executions_target_issue_id_issues_id_fk": { "name": "decision_effect_executions_target_issue_id_issues_id_fk", "tableFrom": "decision_effect_executions", - "tableTo": "issues", "columnsFrom": [ "target_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decision_effect_executions_activity_log_id_activity_log_id_fk": { "name": "decision_effect_executions_activity_log_id_activity_log_id_fk", "tableFrom": "decision_effect_executions", - "tableTo": "activity_log", "columnsFrom": [ "activity_log_id" ], + "tableTo": "activity_log", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -22874,9 +22874,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decision_target_issues_issue_idx": { "name": "decision_target_issues_issue_idx", @@ -22889,50 +22889,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "decision_target_issues_decision_id_decisions_id_fk": { "name": "decision_target_issues_decision_id_decisions_id_fk", "tableFrom": "decision_target_issues", - "tableTo": "decisions", "columnsFrom": [ "decision_id" ], + "tableTo": "decisions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_target_issues_issue_id_issues_id_fk": { "name": "decision_target_issues_issue_id_issues_id_fk", "tableFrom": "decision_target_issues", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "decision_target_issues_company_id_companies_id_fk": { "name": "decision_target_issues_company_id_companies_id_fk", "tableFrom": "decision_target_issues", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": { @@ -23134,9 +23134,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decisions_bundle_idx": { "name": "decisions_bundle_idx", @@ -23149,9 +23149,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decisions_origin_issue_idx": { "name": "decisions_origin_issue_idx", @@ -23164,9 +23164,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "decisions_company_idempotency_uq": { "name": "decisions_company_idempotency_uq", @@ -23185,77 +23185,77 @@ } ], "isUnique": true, - "where": "\"decisions\".\"idempotency_key\" IS NOT NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"decisions\".\"idempotency_key\" IS NOT NULL", + "concurrently": false } }, "foreignKeys": { "decisions_company_id_companies_id_fk": { "name": "decisions_company_id_companies_id_fk", "tableFrom": "decisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decisions_bundle_id_decision_bundles_id_fk": { "name": "decisions_bundle_id_decision_bundles_id_fk", "tableFrom": "decisions", - "tableTo": "decision_bundles", "columnsFrom": [ "bundle_id" ], + "tableTo": "decision_bundles", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "decisions_origin_agent_id_agents_id_fk": { "name": "decisions_origin_agent_id_agents_id_fk", "tableFrom": "decisions", - "tableTo": "agents", "columnsFrom": [ "origin_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decisions_origin_issue_id_issues_id_fk": { "name": "decisions_origin_issue_id_issues_id_fk", "tableFrom": "decisions", - "tableTo": "issues", "columnsFrom": [ "origin_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "decisions_origin_run_id_heartbeat_runs_id_fk": { "name": "decisions_origin_run_id_heartbeat_runs_id_fk", "tableFrom": "decisions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "origin_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -23379,9 +23379,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_anchor_snapshots_company_document_revision_idx": { "name": "document_annotation_anchor_snapshots_company_document_revision_idx", @@ -23406,76 +23406,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "document_annotation_anchor_snapshots_company_id_companies_id_fk": { "name": "document_annotation_anchor_snapshots_company_id_companies_id_fk", "tableFrom": "document_annotation_anchor_snapshots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "document_annotation_anchor_snapshots_thread_id_document_annotation_threads_id_fk": { "name": "document_annotation_anchor_snapshots_thread_id_document_annotation_threads_id_fk", "tableFrom": "document_annotation_anchor_snapshots", - "tableTo": "document_annotation_threads", "columnsFrom": [ "thread_id" ], + "tableTo": "document_annotation_threads", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_anchor_snapshots_document_id_documents_id_fk": { "name": "document_annotation_anchor_snapshots_document_id_documents_id_fk", "tableFrom": "document_annotation_anchor_snapshots", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_anchor_snapshots_from_revision_id_document_revisions_id_fk": { "name": "document_annotation_anchor_snapshots_from_revision_id_document_revisions_id_fk", "tableFrom": "document_annotation_anchor_snapshots", - "tableTo": "document_revisions", "columnsFrom": [ "from_revision_id" ], + "tableTo": "document_revisions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_annotation_anchor_snapshots_to_revision_id_document_revisions_id_fk": { "name": "document_annotation_anchor_snapshots_to_revision_id_document_revisions_id_fk", "tableFrom": "document_annotation_anchor_snapshots", - "tableTo": "document_revisions", "columnsFrom": [ "to_revision_id" ], + "tableTo": "document_revisions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -23612,9 +23612,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_comments_company_issue_created_at_idx": { "name": "document_annotation_comments_company_issue_created_at_idx", @@ -23639,9 +23639,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_comments_company_routine_created_at_idx": { "name": "document_annotation_comments_company_routine_created_at_idx", @@ -23666,9 +23666,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_comments_company_case_created_at_idx": { "name": "document_annotation_comments_company_case_created_at_idx", @@ -23693,9 +23693,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_comments_company_document_created_at_idx": { "name": "document_annotation_comments_company_document_created_at_idx", @@ -23720,9 +23720,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_comments_issue_comment_idx": { "name": "document_annotation_comments_issue_comment_idx", @@ -23735,9 +23735,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_comments_body_search_idx": { "name": "document_annotation_comments_body_search_idx", @@ -23751,128 +23751,128 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false } }, "foreignKeys": { "document_annotation_comments_company_id_companies_id_fk": { "name": "document_annotation_comments_company_id_companies_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "document_annotation_comments_thread_id_document_annotation_threads_id_fk": { "name": "document_annotation_comments_thread_id_document_annotation_threads_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "document_annotation_threads", "columnsFrom": [ "thread_id" ], + "tableTo": "document_annotation_threads", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_comments_issue_id_issues_id_fk": { "name": "document_annotation_comments_issue_id_issues_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_comments_routine_id_routines_id_fk": { "name": "document_annotation_comments_routine_id_routines_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_comments_case_id_cases_id_fk": { "name": "document_annotation_comments_case_id_cases_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_comments_document_id_documents_id_fk": { "name": "document_annotation_comments_document_id_documents_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_comments_author_agent_id_agents_id_fk": { "name": "document_annotation_comments_author_agent_id_agents_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "agents", "columnsFrom": [ "author_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_annotation_comments_created_by_run_id_heartbeat_runs_id_fk": { "name": "document_annotation_comments_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_annotation_comments_issue_comment_id_issue_comments_id_fk": { "name": "document_annotation_comments_issue_comment_id_issue_comments_id_fk", "tableFrom": "document_annotation_comments", - "tableTo": "issue_comments", "columnsFrom": [ "issue_comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -24097,9 +24097,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_threads_company_issue_status_idx": { "name": "document_annotation_threads_company_issue_status_idx", @@ -24124,9 +24124,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_threads_company_routine_status_idx": { "name": "document_annotation_threads_company_routine_status_idx", @@ -24151,9 +24151,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_threads_company_case_status_idx": { "name": "document_annotation_threads_company_case_status_idx", @@ -24178,9 +24178,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_threads_company_current_revision_open_idx": { "name": "document_annotation_threads_company_current_revision_open_idx", @@ -24211,9 +24211,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_annotation_threads_company_anchor_state_idx": { "name": "document_annotation_threads_company_anchor_state_idx", @@ -24232,128 +24232,128 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "document_annotation_threads_company_id_companies_id_fk": { "name": "document_annotation_threads_company_id_companies_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "document_annotation_threads_issue_id_issues_id_fk": { "name": "document_annotation_threads_issue_id_issues_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_threads_routine_id_routines_id_fk": { "name": "document_annotation_threads_routine_id_routines_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_threads_case_id_cases_id_fk": { "name": "document_annotation_threads_case_id_cases_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "cases", "columnsFrom": [ "case_id" ], + "tableTo": "cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_threads_document_id_documents_id_fk": { "name": "document_annotation_threads_document_id_documents_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_annotation_threads_original_revision_id_document_revisions_id_fk": { "name": "document_annotation_threads_original_revision_id_document_revisions_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "document_revisions", "columnsFrom": [ "original_revision_id" ], + "tableTo": "document_revisions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_annotation_threads_current_revision_id_document_revisions_id_fk": { "name": "document_annotation_threads_current_revision_id_document_revisions_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "document_revisions", "columnsFrom": [ "current_revision_id" ], + "tableTo": "document_revisions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_annotation_threads_created_by_agent_id_agents_id_fk": { "name": "document_annotation_threads_created_by_agent_id_agents_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_annotation_threads_resolved_by_agent_id_agents_id_fk": { "name": "document_annotation_threads_resolved_by_agent_id_agents_id_fk", "tableFrom": "document_annotation_threads", - "tableTo": "agents", "columnsFrom": [ "resolved_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -24441,9 +24441,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_memberships_company_user_document_uq": { "name": "document_memberships_company_user_document_uq", @@ -24468,37 +24468,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "document_memberships_company_id_companies_id_fk": { "name": "document_memberships_company_id_companies_id_fk", "tableFrom": "document_memberships", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_memberships_document_id_documents_id_fk": { "name": "document_memberships_document_id_documents_id_fk", "tableFrom": "document_memberships", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -24605,9 +24605,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "document_revisions_company_document_created_idx": { "name": "document_revisions_company_document_created_idx", @@ -24632,63 +24632,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "document_revisions_company_id_companies_id_fk": { "name": "document_revisions_company_id_companies_id_fk", "tableFrom": "document_revisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_revisions_document_id_documents_id_fk": { "name": "document_revisions_document_id_documents_id_fk", "tableFrom": "document_revisions", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "document_revisions_created_by_agent_id_agents_id_fk": { "name": "document_revisions_created_by_agent_id_agents_id_fk", "tableFrom": "document_revisions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "document_revisions_created_by_run_id_heartbeat_runs_id_fk": { "name": "document_revisions_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "document_revisions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -24827,9 +24827,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "documents_company_created_idx": { "name": "documents_company_created_idx", @@ -24848,9 +24848,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "documents_title_search_idx": { "name": "documents_title_search_idx", @@ -24864,9 +24864,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "documents_latest_body_search_idx": { "name": "documents_latest_body_search_idx", @@ -24880,63 +24880,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false } }, "foreignKeys": { "documents_company_id_companies_id_fk": { "name": "documents_company_id_companies_id_fk", "tableFrom": "documents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "documents_created_by_agent_id_agents_id_fk": { "name": "documents_created_by_agent_id_agents_id_fk", "tableFrom": "documents", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "documents_updated_by_agent_id_agents_id_fk": { "name": "documents_updated_by_agent_id_agents_id_fk", "tableFrom": "documents", - "tableTo": "agents", "columnsFrom": [ "updated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "documents_locked_by_agent_id_agents_id_fk": { "name": "documents_locked_by_agent_id_agents_id_fk", "tableFrom": "documents", - "tableTo": "agents", "columnsFrom": [ "locked_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -25076,10 +25076,10 @@ } ], "isUnique": true, - "where": "\"dot_agent_bindings\".\"revoked_at\" IS NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"dot_agent_bindings\".\"revoked_at\" IS NULL", + "concurrently": false }, "dot_bindings_active_grant_uq": { "name": "dot_bindings_active_grant_uq", @@ -25092,10 +25092,10 @@ } ], "isUnique": true, - "where": "\"dot_agent_bindings\".\"revoked_at\" IS NULL AND \"dot_agent_bindings\".\"grant_id\" IS NOT NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"dot_agent_bindings\".\"revoked_at\" IS NULL AND \"dot_agent_bindings\".\"grant_id\" IS NOT NULL", + "concurrently": false }, "dot_bindings_pairing_code_uq": { "name": "dot_bindings_pairing_code_uq", @@ -25108,50 +25108,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "dot_agent_bindings_company_id_companies_id_fk": { "name": "dot_agent_bindings_company_id_companies_id_fk", "tableFrom": "dot_agent_bindings", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_agent_bindings_agent_id_agents_id_fk": { "name": "dot_agent_bindings_agent_id_agents_id_fk", "tableFrom": "dot_agent_bindings", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_agent_bindings_grant_id_mcp_oauth_grants_id_fk": { "name": "dot_agent_bindings_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "dot_agent_bindings", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -25244,9 +25244,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "dot_mailbox_binding_cursor_idx": { "name": "dot_mailbox_binding_cursor_idx", @@ -25271,50 +25271,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "dot_mailbox_items_company_id_companies_id_fk": { "name": "dot_mailbox_items_company_id_companies_id_fk", "tableFrom": "dot_mailbox_items", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_mailbox_items_binding_id_dot_agent_bindings_id_fk": { "name": "dot_mailbox_items_binding_id_dot_agent_bindings_id_fk", "tableFrom": "dot_mailbox_items", - "tableTo": "dot_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "dot_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_mailbox_items_assignment_id_dot_runner_assignments_id_fk": { "name": "dot_mailbox_items_assignment_id_dot_runner_assignments_id_fk", "tableFrom": "dot_mailbox_items", - "tableTo": "dot_runner_assignments", "columnsFrom": [ "assignment_id" ], + "tableTo": "dot_runner_assignments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -25464,9 +25464,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "dot_assignments_active_binding_uq": { "name": "dot_assignments_active_binding_uq", @@ -25479,10 +25479,10 @@ } ], "isUnique": true, - "where": "\"dot_runner_assignments\".\"status\" IN ('offered', 'accepted')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"dot_runner_assignments\".\"status\" IN ('offered', 'accepted')", + "concurrently": false }, "dot_assignments_company_idx": { "name": "dot_assignments_company_idx", @@ -25495,63 +25495,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "dot_runner_assignments_company_id_companies_id_fk": { "name": "dot_runner_assignments_company_id_companies_id_fk", "tableFrom": "dot_runner_assignments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_runner_assignments_binding_id_dot_agent_bindings_id_fk": { "name": "dot_runner_assignments_binding_id_dot_agent_bindings_id_fk", "tableFrom": "dot_runner_assignments", - "tableTo": "dot_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "dot_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_runner_assignments_run_id_heartbeat_runs_id_fk": { "name": "dot_runner_assignments_run_id_heartbeat_runs_id_fk", "tableFrom": "dot_runner_assignments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_runner_assignments_agent_id_agents_id_fk": { "name": "dot_runner_assignments_agent_id_agents_id_fk", "tableFrom": "dot_runner_assignments", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -25665,37 +25665,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "dot_runner_operations_company_id_companies_id_fk": { "name": "dot_runner_operations_company_id_companies_id_fk", "tableFrom": "dot_runner_operations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "dot_runner_operations_assignment_id_dot_runner_assignments_id_fk": { "name": "dot_runner_operations_assignment_id_dot_runner_assignments_id_fk", "tableFrom": "dot_runner_operations", - "tableTo": "dot_runner_assignments", "columnsFrom": [ "assignment_id" ], + "tableTo": "dot_runner_assignments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -25762,17 +25762,17 @@ "email_endpoints_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "email_endpoints_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "email_endpoints", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -25885,9 +25885,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "email_messages_conversation_idx": { "name": "email_messages_conversation_idx", @@ -25912,41 +25912,41 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "email_messages_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "email_messages_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "email_messages", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "email_messages_company_id_conversation_id_chat_conversations_company_id_id_fk": { "name": "email_messages_company_id_conversation_id_chat_conversations_company_id_id_fk", "tableFrom": "email_messages", - "tableTo": "chat_conversations", "columnsFrom": [ "company_id", "conversation_id" ], + "tableTo": "chat_conversations", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -26032,42 +26032,42 @@ } ], "isUnique": false, - "where": "\"email_sends\".\"outcome\" in ('queued', 'uncertain')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"email_sends\".\"outcome\" in ('queued', 'uncertain')", + "concurrently": false } }, "foreignKeys": { "email_sends_company_id_endpoint_id_chat_endpoints_company_id_id_fk": { "name": "email_sends_company_id_endpoint_id_chat_endpoints_company_id_id_fk", "tableFrom": "email_sends", - "tableTo": "chat_endpoints", "columnsFrom": [ "company_id", "endpoint_id" ], + "tableTo": "chat_endpoints", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "email_sends_company_id_publication_id_chat_publications_company_id_id_fk": { "name": "email_sends_company_id_publication_id_chat_publications_company_id_id_fk", "tableFrom": "email_sends", - "tableTo": "chat_publications", "columnsFrom": [ "company_id", "publication_id" ], + "tableTo": "chat_publications", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -26222,9 +26222,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_setup_sessions_environment_active_uq": { "name": "environment_custom_image_setup_sessions_environment_active_uq", @@ -26237,10 +26237,10 @@ } ], "isUnique": true, - "where": "\"environment_custom_image_setup_sessions\".\"status\" IN ('starting', 'waiting_for_user', 'capturing')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"environment_custom_image_setup_sessions\".\"status\" IN ('starting', 'waiting_for_user', 'capturing')", + "concurrently": false }, "environment_custom_image_setup_sessions_template_idx": { "name": "environment_custom_image_setup_sessions_template_idx", @@ -26253,9 +26253,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_setup_sessions_promoted_template_idx": { "name": "environment_custom_image_setup_sessions_promoted_template_idx", @@ -26268,9 +26268,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_setup_sessions_expires_idx": { "name": "environment_custom_image_setup_sessions_expires_idx", @@ -26283,9 +26283,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_setup_sessions_provider_lease_idx": { "name": "environment_custom_image_setup_sessions_provider_lease_idx", @@ -26304,76 +26304,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "environment_custom_image_setup_sessions_environment_id_environments_id_fk": { "name": "environment_custom_image_setup_sessions_environment_id_environments_id_fk", "tableFrom": "environment_custom_image_setup_sessions", - "tableTo": "environments", "columnsFrom": [ "environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "environment_custom_image_setup_sessions_template_id_environment_custom_image_templates_id_fk": { "name": "environment_custom_image_setup_sessions_template_id_environment_custom_image_templates_id_fk", "tableFrom": "environment_custom_image_setup_sessions", - "tableTo": "environment_custom_image_templates", "columnsFrom": [ "template_id" ], + "tableTo": "environment_custom_image_templates", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_custom_image_setup_sessions_promoted_template_id_environment_custom_image_templates_id_fk": { "name": "environment_custom_image_setup_sessions_promoted_template_id_environment_custom_image_templates_id_fk", "tableFrom": "environment_custom_image_setup_sessions", - "tableTo": "environment_custom_image_templates", "columnsFrom": [ "promoted_template_id" ], + "tableTo": "environment_custom_image_templates", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_custom_image_setup_sessions_environment_lease_id_environment_leases_id_fk": { "name": "environment_custom_image_setup_sessions_environment_lease_id_environment_leases_id_fk", "tableFrom": "environment_custom_image_setup_sessions", - "tableTo": "environment_leases", "columnsFrom": [ "environment_lease_id" ], + "tableTo": "environment_leases", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_custom_image_setup_sessions_started_by_agent_id_agents_id_fk": { "name": "environment_custom_image_setup_sessions_started_by_agent_id_agents_id_fk", "tableFrom": "environment_custom_image_setup_sessions", - "tableTo": "agents", "columnsFrom": [ "started_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -26506,9 +26506,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_templates_environment_provider_status_idx": { "name": "environment_custom_image_templates_environment_provider_status_idx", @@ -26533,9 +26533,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_templates_environment_active_uq": { "name": "environment_custom_image_templates_environment_active_uq", @@ -26548,10 +26548,10 @@ } ], "isUnique": true, - "where": "\"environment_custom_image_templates\".\"status\" = 'active'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"environment_custom_image_templates\".\"status\" = 'active'", + "concurrently": false }, "environment_custom_image_templates_superseded_by_idx": { "name": "environment_custom_image_templates_superseded_by_idx", @@ -26564,9 +26564,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_custom_image_templates_last_used_idx": { "name": "environment_custom_image_templates_last_used_idx", @@ -26579,50 +26579,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "environment_custom_image_templates_environment_id_environments_id_fk": { "name": "environment_custom_image_templates_environment_id_environments_id_fk", "tableFrom": "environment_custom_image_templates", - "tableTo": "environments", "columnsFrom": [ "environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "environment_custom_image_templates_created_by_agent_id_agents_id_fk": { "name": "environment_custom_image_templates_created_by_agent_id_agents_id_fk", "tableFrom": "environment_custom_image_templates", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_custom_image_templates_superseded_by_template_id_environment_custom_image_templates_id_fk": { "name": "environment_custom_image_templates_superseded_by_template_id_environment_custom_image_templates_id_fk", "tableFrom": "environment_custom_image_templates", - "tableTo": "environment_custom_image_templates", "columnsFrom": [ "superseded_by_template_id" ], + "tableTo": "environment_custom_image_templates", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -26781,9 +26781,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_leases_company_execution_workspace_idx": { "name": "environment_leases_company_execution_workspace_idx", @@ -26802,9 +26802,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_leases_company_issue_idx": { "name": "environment_leases_company_issue_idx", @@ -26823,9 +26823,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_leases_heartbeat_run_idx": { "name": "environment_leases_heartbeat_run_idx", @@ -26838,9 +26838,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_leases_company_last_used_idx": { "name": "environment_leases_company_last_used_idx", @@ -26859,9 +26859,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environment_leases_provider_lease_idx": { "name": "environment_leases_provider_lease_idx", @@ -26874,76 +26874,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "environment_leases_company_id_companies_id_fk": { "name": "environment_leases_company_id_companies_id_fk", "tableFrom": "environment_leases", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "environment_leases_environment_id_environments_id_fk": { "name": "environment_leases_environment_id_environments_id_fk", "tableFrom": "environment_leases", - "tableTo": "environments", "columnsFrom": [ "environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_leases_execution_workspace_id_execution_workspaces_id_fk": { "name": "environment_leases_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "environment_leases", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_leases_issue_id_issues_id_fk": { "name": "environment_leases_issue_id_issues_id_fk", "tableFrom": "environment_leases", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "environment_leases_heartbeat_run_id_heartbeat_runs_id_fk": { "name": "environment_leases_heartbeat_run_id_heartbeat_runs_id_fk", "tableFrom": "environment_leases", - "tableTo": "heartbeat_runs", "columnsFrom": [ "heartbeat_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -27036,9 +27036,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "environments_local_driver_idx": { "name": "environments_local_driver_idx", @@ -27051,10 +27051,10 @@ } ], "isUnique": true, - "where": "\"environments\".\"driver\" = 'local'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"environments\".\"driver\" = 'local'", + "concurrently": false }, "environments_managed_sandbox_idx": { "name": "environments_managed_sandbox_idx", @@ -27067,10 +27067,10 @@ } ], "isUnique": true, - "where": "\"environments\".\"driver\" = 'sandbox' AND (\"environments\".\"metadata\" ->> 'managedByPaperclip')::boolean = true", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"environments\".\"driver\" = 'sandbox' AND (\"environments\".\"metadata\" ->> 'managedByPaperclip')::boolean = true", + "concurrently": false }, "environments_name_idx": { "name": "environments_name_idx", @@ -27083,9 +27083,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": {}, @@ -27226,9 +27226,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspace_repositories_path_idx": { "name": "execution_workspace_repositories_path_idx", @@ -27247,9 +27247,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspace_repositories_request_idx": { "name": "execution_workspace_repositories_request_idx", @@ -27268,9 +27268,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspace_repositories_company_workspace_idx": { "name": "execution_workspace_repositories_company_workspace_idx", @@ -27289,50 +27289,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "execution_workspace_repositories_company_id_companies_id_fk": { "name": "execution_workspace_repositories_company_id_companies_id_fk", "tableFrom": "execution_workspace_repositories", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "execution_workspace_repositories_execution_workspace_id_execution_workspaces_id_fk": { "name": "execution_workspace_repositories_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "execution_workspace_repositories", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "execution_workspace_repositories_requested_by_issue_id_issues_id_fk": { "name": "execution_workspace_repositories_requested_by_issue_id_issues_id_fk", "tableFrom": "execution_workspace_repositories", - "tableTo": "issues", "columnsFrom": [ "requested_by_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -27445,24 +27445,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "execution_workspace_repository_access_company_id_companies_id_fk": { "name": "execution_workspace_repository_access_company_id_companies_id_fk", "tableFrom": "execution_workspace_repository_access", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -27539,24 +27539,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "execution_workspace_repository_roots_company_id_companies_id_fk": { "name": "execution_workspace_repository_roots_company_id_companies_id_fk", "tableFrom": "execution_workspace_repository_roots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -27677,9 +27677,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspace_runtime_leases_company_owner_idx": { "name": "execution_workspace_runtime_leases_company_owner_idx", @@ -27698,9 +27698,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspace_runtime_leases_expires_at_idx": { "name": "execution_workspace_runtime_leases_expires_at_idx", @@ -27713,86 +27713,86 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "execution_workspace_runtime_leases_company_id_companies_id_fk": { "name": "execution_workspace_runtime_leases_company_id_companies_id_fk", "tableFrom": "execution_workspace_runtime_leases", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "execution_workspace_runtime_leases_execution_workspace_id_execution_workspaces_id_fk": { "name": "execution_workspace_runtime_leases_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "execution_workspace_runtime_leases", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "execution_workspace_runtime_leases_owner_issue_id_issues_id_fk": { "name": "execution_workspace_runtime_leases_owner_issue_id_issues_id_fk", "tableFrom": "execution_workspace_runtime_leases", - "tableTo": "issues", "columnsFrom": [ "owner_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "execution_workspace_runtime_leases_owner_run_id_heartbeat_runs_id_fk": { "name": "execution_workspace_runtime_leases_owner_run_id_heartbeat_runs_id_fk", "tableFrom": "execution_workspace_runtime_leases", - "tableTo": "heartbeat_runs", "columnsFrom": [ "owner_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "execution_workspace_runtime_leases_owner_agent_id_agents_id_fk": { "name": "execution_workspace_runtime_leases_owner_agent_id_agents_id_fk", "tableFrom": "execution_workspace_runtime_leases", - "tableTo": "agents", "columnsFrom": [ "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "execution_workspace_runtime_leases_execution_workspace_id_unique": { "name": "execution_workspace_runtime_leases_execution_workspace_id_unique", - "nullsNotDistinct": false, "columns": [ "execution_workspace_id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -27979,9 +27979,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspaces_company_project_workspace_status_idx": { "name": "execution_workspaces_company_project_workspace_status_idx", @@ -28006,9 +28006,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspaces_company_source_issue_idx": { "name": "execution_workspaces_company_source_issue_idx", @@ -28027,9 +28027,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspaces_company_last_used_idx": { "name": "execution_workspaces_company_last_used_idx", @@ -28048,9 +28048,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "execution_workspaces_company_branch_idx": { "name": "execution_workspaces_company_branch_idx", @@ -28069,76 +28069,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "execution_workspaces_company_id_companies_id_fk": { "name": "execution_workspaces_company_id_companies_id_fk", "tableFrom": "execution_workspaces", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "execution_workspaces_project_id_projects_id_fk": { "name": "execution_workspaces_project_id_projects_id_fk", "tableFrom": "execution_workspaces", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "execution_workspaces_project_workspace_id_project_workspaces_id_fk": { "name": "execution_workspaces_project_workspace_id_project_workspaces_id_fk", "tableFrom": "execution_workspaces", - "tableTo": "project_workspaces", "columnsFrom": [ "project_workspace_id" ], + "tableTo": "project_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "execution_workspaces_source_issue_id_issues_id_fk": { "name": "execution_workspaces_source_issue_id_issues_id_fk", "tableFrom": "execution_workspaces", - "tableTo": "issues", "columnsFrom": [ "source_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "execution_workspaces_derived_from_execution_workspace_id_execution_workspaces_id_fk": { "name": "execution_workspaces_derived_from_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "execution_workspaces", - "tableTo": "execution_workspaces", "columnsFrom": [ "derived_from_execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -28288,9 +28288,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_object_mentions_company_object_idx": { "name": "external_object_mentions_company_object_idx", @@ -28309,9 +28309,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_object_mentions_company_provider_idx": { "name": "external_object_mentions_company_provider_idx", @@ -28336,9 +28336,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_object_mentions_company_source_record_uq": { "name": "external_object_mentions_company_source_record_uq", @@ -28387,10 +28387,10 @@ } ], "isUnique": true, - "where": "\"external_object_mentions\".\"source_record_id\" is not null and \"external_object_mentions\".\"canonical_identity_hash\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"external_object_mentions\".\"source_record_id\" is not null and \"external_object_mentions\".\"canonical_identity_hash\" is not null", + "concurrently": false }, "external_object_mentions_company_source_null_record_uq": { "name": "external_object_mentions_company_source_null_record_uq", @@ -28433,64 +28433,64 @@ } ], "isUnique": true, - "where": "\"external_object_mentions\".\"source_record_id\" is null and \"external_object_mentions\".\"canonical_identity_hash\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"external_object_mentions\".\"source_record_id\" is null and \"external_object_mentions\".\"canonical_identity_hash\" is not null", + "concurrently": false } }, "foreignKeys": { "external_object_mentions_company_id_companies_id_fk": { "name": "external_object_mentions_company_id_companies_id_fk", "tableFrom": "external_object_mentions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "external_object_mentions_source_issue_id_issues_id_fk": { "name": "external_object_mentions_source_issue_id_issues_id_fk", "tableFrom": "external_object_mentions", - "tableTo": "issues", "columnsFrom": [ "source_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "external_object_mentions_object_id_external_objects_id_fk": { "name": "external_object_mentions_object_id_external_objects_id_fk", "tableFrom": "external_object_mentions", - "tableTo": "external_objects", "columnsFrom": [ "object_id" ], + "tableTo": "external_objects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "external_object_mentions_created_by_plugin_id_plugins_id_fk": { "name": "external_object_mentions_created_by_plugin_id_plugins_id_fk", "tableFrom": "external_object_mentions", - "tableTo": "plugins", "columnsFrom": [ "created_by_plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -28722,9 +28722,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_objects_company_provider_status_idx": { "name": "external_objects_company_provider_status_idx", @@ -28749,9 +28749,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_objects_company_refresh_idx": { "name": "external_objects_company_refresh_idx", @@ -28770,9 +28770,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_objects_company_external_id_uq": { "name": "external_objects_company_external_id_uq", @@ -28803,9 +28803,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_objects_company_identity_uq": { "name": "external_objects_company_identity_uq", @@ -28836,37 +28836,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "external_objects_company_id_companies_id_fk": { "name": "external_objects_company_id_companies_id_fk", "tableFrom": "external_objects", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "external_objects_plugin_id_plugins_id_fk": { "name": "external_objects_plugin_id_plugins_id_fk", "tableFrom": "external_objects", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -28936,15 +28936,15 @@ "company_fast_responses_company_id_companies_id_fk": { "name": "company_fast_responses_company_id_companies_id_fk", "tableFrom": "company_fast_responses", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -29166,9 +29166,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "fast_response_requests_history_idx": { "name": "fast_response_requests_history_idx", @@ -29187,9 +29187,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "fast_response_requests_work_idx": { "name": "fast_response_requests_work_idx", @@ -29202,38 +29202,38 @@ } ], "isUnique": false, - "where": "\"fast_response_requests\".\"status\" in ('pending', 'running')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"fast_response_requests\".\"status\" in ('pending', 'running')", + "concurrently": false } }, "foreignKeys": { "fast_response_requests_company_id_companies_id_fk": { "name": "fast_response_requests_company_id_companies_id_fk", "tableFrom": "fast_response_requests", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "fast_response_requests_cost_event_id_cost_events_id_fk": { "name": "fast_response_requests_cost_event_id_cost_events_id_fk", "tableFrom": "fast_response_requests", - "tableTo": "cost_events", "columnsFrom": [ "cost_event_id" ], + "tableTo": "cost_events", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -29428,9 +29428,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_exports_company_created_idx": { "name": "feedback_exports_company_created_idx", @@ -29449,9 +29449,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_exports_company_status_idx": { "name": "feedback_exports_company_status_idx", @@ -29476,9 +29476,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_exports_company_issue_idx": { "name": "feedback_exports_company_issue_idx", @@ -29503,9 +29503,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_exports_company_project_idx": { "name": "feedback_exports_company_project_idx", @@ -29530,9 +29530,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_exports_company_author_idx": { "name": "feedback_exports_company_author_idx", @@ -29557,63 +29557,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "feedback_exports_company_id_companies_id_fk": { "name": "feedback_exports_company_id_companies_id_fk", "tableFrom": "feedback_exports", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "feedback_exports_feedback_vote_id_feedback_votes_id_fk": { "name": "feedback_exports_feedback_vote_id_feedback_votes_id_fk", "tableFrom": "feedback_exports", - "tableTo": "feedback_votes", "columnsFrom": [ "feedback_vote_id" ], + "tableTo": "feedback_votes", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "feedback_exports_issue_id_issues_id_fk": { "name": "feedback_exports_issue_id_issues_id_fk", "tableFrom": "feedback_exports", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "feedback_exports_project_id_projects_id_fk": { "name": "feedback_exports_project_id_projects_id_fk", "tableFrom": "feedback_exports", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -29733,9 +29733,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_votes_issue_target_idx": { "name": "feedback_votes_issue_target_idx", @@ -29760,9 +29760,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_votes_author_idx": { "name": "feedback_votes_author_idx", @@ -29781,9 +29781,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "feedback_votes_company_target_author_idx": { "name": "feedback_votes_company_target_author_idx", @@ -29814,37 +29814,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "feedback_votes_company_id_companies_id_fk": { "name": "feedback_votes_company_id_companies_id_fk", "tableFrom": "feedback_votes", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "feedback_votes_issue_id_issues_id_fk": { "name": "feedback_votes_issue_id_issues_id_fk", "tableFrom": "feedback_votes", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -30055,9 +30055,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "finance_events_company_occurred_idx": { "name": "finance_events_company_occurred_idx", @@ -30076,9 +30076,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "finance_events_company_biller_occurred_idx": { "name": "finance_events_company_biller_occurred_idx", @@ -30103,9 +30103,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "finance_events_company_kind_occurred_idx": { "name": "finance_events_company_kind_occurred_idx", @@ -30130,9 +30130,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "finance_events_company_direction_occurred_idx": { "name": "finance_events_company_direction_occurred_idx", @@ -30157,9 +30157,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "finance_events_company_heartbeat_run_idx": { "name": "finance_events_company_heartbeat_run_idx", @@ -30178,9 +30178,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "finance_events_company_cost_event_idx": { "name": "finance_events_company_cost_event_idx", @@ -30199,102 +30199,102 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "finance_events_company_id_companies_id_fk": { "name": "finance_events_company_id_companies_id_fk", "tableFrom": "finance_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "finance_events_agent_id_agents_id_fk": { "name": "finance_events_agent_id_agents_id_fk", "tableFrom": "finance_events", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "finance_events_issue_id_issues_id_fk": { "name": "finance_events_issue_id_issues_id_fk", "tableFrom": "finance_events", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "finance_events_project_id_projects_id_fk": { "name": "finance_events_project_id_projects_id_fk", "tableFrom": "finance_events", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "finance_events_goal_id_goals_id_fk": { "name": "finance_events_goal_id_goals_id_fk", "tableFrom": "finance_events", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "finance_events_heartbeat_run_id_heartbeat_runs_id_fk": { "name": "finance_events_heartbeat_run_id_heartbeat_runs_id_fk", "tableFrom": "finance_events", - "tableTo": "heartbeat_runs", "columnsFrom": [ "heartbeat_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "finance_events_cost_event_id_cost_events_id_fk": { "name": "finance_events_cost_event_id_cost_events_id_fk", "tableFrom": "finance_events", - "tableTo": "cost_events", "columnsFrom": [ "cost_event_id" ], + "tableTo": "cost_events", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -30408,9 +30408,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "folders_company_kind_root_slug_uq": { "name": "folders_company_kind_root_slug_uq", @@ -30435,10 +30435,10 @@ } ], "isUnique": true, - "where": "\"folders\".\"parent_id\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"folders\".\"parent_id\" is null", + "concurrently": false }, "folders_company_kind_parent_slug_uq": { "name": "folders_company_kind_parent_slug_uq", @@ -30469,10 +30469,10 @@ } ], "isUnique": true, - "where": "\"folders\".\"parent_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"folders\".\"parent_id\" is not null", + "concurrently": false }, "folders_company_kind_system_key_uq": { "name": "folders_company_kind_system_key_uq", @@ -30497,10 +30497,10 @@ } ], "isUnique": true, - "where": "\"folders\".\"system_key\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"folders\".\"system_key\" is not null", + "concurrently": false }, "folders_company_kind_parent_position_idx": { "name": "folders_company_kind_parent_position_idx", @@ -30537,37 +30537,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "folders_company_id_companies_id_fk": { "name": "folders_company_id_companies_id_fk", "tableFrom": "folders", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "folders_parent_id_folders_id_fk": { "name": "folders_parent_id_folders_id_fk", "tableFrom": "folders", - "tableTo": "folders", "columnsFrom": [ "parent_id" ], + "tableTo": "folders", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" } }, "compositePrimaryKeys": {}, @@ -30658,50 +30658,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "goals_company_id_companies_id_fk": { "name": "goals_company_id_companies_id_fk", "tableFrom": "goals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "goals_parent_id_goals_id_fk": { "name": "goals_parent_id_goals_id_fk", "tableFrom": "goals", - "tableTo": "goals", "columnsFrom": [ "parent_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "goals_owner_agent_id_agents_id_fk": { "name": "goals_owner_agent_id_agents_id_fk", "tableFrom": "goals", - "tableTo": "agents", "columnsFrom": [ "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -30863,9 +30863,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "grok_dispatch_company_status_idx": { "name": "grok_dispatch_company_status_idx", @@ -30884,9 +30884,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "grok_dispatch_assignment_kind_idx": { "name": "grok_dispatch_assignment_kind_idx", @@ -30905,76 +30905,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "grok_bot_dispatches_company_id_companies_id_fk": { "name": "grok_bot_dispatches_company_id_companies_id_fk", "tableFrom": "grok_bot_dispatches", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_dispatches_routine_id_grok_bot_routines_id_fk": { "name": "grok_bot_dispatches_routine_id_grok_bot_routines_id_fk", "tableFrom": "grok_bot_dispatches", - "tableTo": "grok_bot_routines", "columnsFrom": [ "routine_id" ], + "tableTo": "grok_bot_routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_dispatches_binding_id_dot_agent_bindings_id_fk": { "name": "grok_bot_dispatches_binding_id_dot_agent_bindings_id_fk", "tableFrom": "grok_bot_dispatches", - "tableTo": "dot_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "dot_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_dispatches_grant_id_mcp_oauth_grants_id_fk": { "name": "grok_bot_dispatches_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "grok_bot_dispatches", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_dispatches_assignment_id_dot_runner_assignments_id_fk": { "name": "grok_bot_dispatches_assignment_id_dot_runner_assignments_id_fk", "tableFrom": "grok_bot_dispatches", - "tableTo": "dot_runner_assignments", "columnsFrom": [ "assignment_id" ], + "tableTo": "dot_runner_assignments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -31100,9 +31100,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "grok_routines_company_agent_idx": { "name": "grok_routines_company_agent_idx", @@ -31121,76 +31121,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "grok_bot_routines_company_id_companies_id_fk": { "name": "grok_bot_routines_company_id_companies_id_fk", "tableFrom": "grok_bot_routines", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_routines_agent_id_agents_id_fk": { "name": "grok_bot_routines_agent_id_agents_id_fk", "tableFrom": "grok_bot_routines", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_routines_binding_id_dot_agent_bindings_id_fk": { "name": "grok_bot_routines_binding_id_dot_agent_bindings_id_fk", "tableFrom": "grok_bot_routines", - "tableTo": "dot_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "dot_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "grok_bot_routines_secret_id_company_secrets_id_fk": { "name": "grok_bot_routines_secret_id_company_secrets_id_fk", "tableFrom": "grok_bot_routines", - "tableTo": "company_secrets", "columnsFrom": [ "secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "grok_bot_routines_verified_grant_id_mcp_oauth_grants_id_fk": { "name": "grok_bot_routines_verified_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "grok_bot_routines", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "verified_grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -31325,9 +31325,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_run_events_run_source_event_uq": { "name": "heartbeat_run_events_run_source_event_uq", @@ -31346,10 +31346,10 @@ } ], "isUnique": true, - "where": "\"heartbeat_run_events\".\"source_event_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_run_events\".\"source_event_id\" is not null", + "concurrently": false }, "heartbeat_run_events_run_source_seq_uq": { "name": "heartbeat_run_events_run_source_seq_uq", @@ -31374,10 +31374,10 @@ } ], "isUnique": true, - "where": "\"heartbeat_run_events\".\"source_instance_id\" is not null and \"heartbeat_run_events\".\"source_seq\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_run_events\".\"source_instance_id\" is not null and \"heartbeat_run_events\".\"source_seq\" is not null", + "concurrently": false }, "heartbeat_run_events_company_run_idx": { "name": "heartbeat_run_events_company_run_idx", @@ -31396,9 +31396,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_run_events_company_created_idx": { "name": "heartbeat_run_events_company_created_idx", @@ -31417,50 +31417,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "heartbeat_run_events_company_id_companies_id_fk": { "name": "heartbeat_run_events_company_id_companies_id_fk", "tableFrom": "heartbeat_run_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "heartbeat_run_events_run_id_heartbeat_runs_id_fk": { "name": "heartbeat_run_events_run_id_heartbeat_runs_id_fk", "tableFrom": "heartbeat_run_events", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "heartbeat_run_events_agent_id_agents_id_fk": { "name": "heartbeat_run_events_agent_id_agents_id_fk", "tableFrom": "heartbeat_run_events", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -31566,9 +31566,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_run_watchdog_decisions_company_run_snooze_idx": { "name": "heartbeat_run_watchdog_decisions_company_run_snooze_idx", @@ -31593,76 +31593,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "heartbeat_run_watchdog_decisions_company_id_companies_id_fk": { "name": "heartbeat_run_watchdog_decisions_company_id_companies_id_fk", "tableFrom": "heartbeat_run_watchdog_decisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "heartbeat_run_watchdog_decisions_run_id_heartbeat_runs_id_fk": { "name": "heartbeat_run_watchdog_decisions_run_id_heartbeat_runs_id_fk", "tableFrom": "heartbeat_run_watchdog_decisions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "heartbeat_run_watchdog_decisions_evaluation_issue_id_issues_id_fk": { "name": "heartbeat_run_watchdog_decisions_evaluation_issue_id_issues_id_fk", "tableFrom": "heartbeat_run_watchdog_decisions", - "tableTo": "issues", "columnsFrom": [ "evaluation_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "heartbeat_run_watchdog_decisions_created_by_agent_id_agents_id_fk": { "name": "heartbeat_run_watchdog_decisions_created_by_agent_id_agents_id_fk", "tableFrom": "heartbeat_run_watchdog_decisions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "heartbeat_run_watchdog_decisions_created_by_run_id_heartbeat_runs_id_fk": { "name": "heartbeat_run_watchdog_decisions_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "heartbeat_run_watchdog_decisions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -32178,10 +32178,10 @@ } ], "isUnique": false, - "where": "\"heartbeat_runs\".\"cost_accounting_pending\" = true", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_runs\".\"cost_accounting_pending\" = true", + "concurrently": false }, "heartbeat_runs_cost_data_quality_idx": { "name": "heartbeat_runs_cost_data_quality_idx", @@ -32194,8 +32194,8 @@ }, { "expression": "coalesce(\"finished_at\", \"created_at\") desc", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" }, { @@ -32206,10 +32206,10 @@ } ], "isUnique": false, - "where": "\"heartbeat_runs\".\"cost_accounting_pending\" = true and \"heartbeat_runs\".\"status\" in ('succeeded','failed','timed_out','cancelled','interrupted')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_runs\".\"cost_accounting_pending\" = true and \"heartbeat_runs\".\"status\" in ('succeeded','failed','timed_out','cancelled','interrupted')", + "concurrently": false }, "heartbeat_runs_execution_status_delivery_idx": { "name": "heartbeat_runs_execution_status_delivery_idx", @@ -32222,10 +32222,10 @@ } ], "isUnique": false, - "where": "\"heartbeat_runs\".\"execution_status_delivery_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_runs\".\"execution_status_delivery_id\" is not null", + "concurrently": false }, "heartbeat_runs_execution_control_deadline_idx": { "name": "heartbeat_runs_execution_control_deadline_idx", @@ -32238,10 +32238,10 @@ } ], "isUnique": false, - "where": "\"heartbeat_runs\".\"execution_control_deadline_at\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_runs\".\"execution_control_deadline_at\" is not null", + "concurrently": false }, "heartbeat_runs_native_replacement_predecessor_uq": { "name": "heartbeat_runs_native_replacement_predecessor_uq", @@ -32260,10 +32260,10 @@ } ], "isUnique": true, - "where": "\"heartbeat_runs\".\"scheduled_retry_reason\" = 'native_safe_replacement'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"heartbeat_runs\".\"scheduled_retry_reason\" = 'native_safe_replacement'", + "concurrently": false }, "heartbeat_runs_company_agent_started_idx": { "name": "heartbeat_runs_company_agent_started_idx", @@ -32288,9 +32288,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_issue_created_idx": { "name": "heartbeat_runs_company_issue_created_idx", @@ -32315,9 +32315,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_responsible_user_idx": { "name": "heartbeat_runs_company_responsible_user_idx", @@ -32342,9 +32342,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_liveness_idx": { "name": "heartbeat_runs_company_liveness_idx", @@ -32369,9 +32369,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_status_last_output_idx": { "name": "heartbeat_runs_company_status_last_output_idx", @@ -32396,9 +32396,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_status_process_started_idx": { "name": "heartbeat_runs_company_status_process_started_idx", @@ -32423,9 +32423,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_created_at_desc_idx": { "name": "heartbeat_runs_company_created_at_desc_idx", @@ -32444,9 +32444,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_ctx_issue_created_idx": { "name": "heartbeat_runs_company_ctx_issue_created_idx", @@ -32459,8 +32459,8 @@ }, { "expression": "(\"context_snapshot\" ->> 'issueId')", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" }, { @@ -32471,9 +32471,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_ctx_task_created_idx": { "name": "heartbeat_runs_company_ctx_task_created_idx", @@ -32486,8 +32486,8 @@ }, { "expression": "(\"context_snapshot\" ->> 'taskId')", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" }, { @@ -32498,9 +32498,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_ctx_taskkey_created_idx": { "name": "heartbeat_runs_company_ctx_taskkey_created_idx", @@ -32513,8 +32513,8 @@ }, { "expression": "(\"context_snapshot\" ->> 'taskKey')", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" }, { @@ -32525,9 +32525,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "heartbeat_runs_company_ctx_paperclip_issue_created_idx": { "name": "heartbeat_runs_company_ctx_paperclip_issue_created_idx", @@ -32540,8 +32540,8 @@ }, { "expression": "(\"context_snapshot\" -> 'paperclipIssue' ->> 'id')", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" }, { @@ -32552,9 +32552,9 @@ } ], "isUnique": false, - "concurrently": true, + "with": {}, "method": "btree", - "with": {} + "concurrently": true }, "heartbeat_runs_company_origin_issue_idx": { "name": "heartbeat_runs_company_origin_issue_idx", @@ -32567,104 +32567,104 @@ }, { "expression": "coalesce(\n \"native_issue_id\"::text,\n nullif(\"context_snapshot\"->>'issueId', ''),\n nullif(\"context_snapshot\"->>'taskId', ''),\n nullif(\"context_snapshot\"->>'taskKey', '')\n )", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" } ], "isUnique": false, - "concurrently": true, + "with": {}, "method": "btree", - "with": {} + "concurrently": true } }, "foreignKeys": { "heartbeat_runs_company_id_companies_id_fk": { "name": "heartbeat_runs_company_id_companies_id_fk", "tableFrom": "heartbeat_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "heartbeat_runs_agent_id_agents_id_fk": { "name": "heartbeat_runs_agent_id_agents_id_fk", "tableFrom": "heartbeat_runs", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "heartbeat_runs_issue_id_issues_id_fk": { "name": "heartbeat_runs_issue_id_issues_id_fk", "tableFrom": "heartbeat_runs", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "heartbeat_runs_wakeup_request_id_agent_wakeup_requests_id_fk": { "name": "heartbeat_runs_wakeup_request_id_agent_wakeup_requests_id_fk", "tableFrom": "heartbeat_runs", - "tableTo": "agent_wakeup_requests", "columnsFrom": [ "wakeup_request_id" ], + "tableTo": "agent_wakeup_requests", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "heartbeat_runs_retry_of_run_id_heartbeat_runs_id_fk": { "name": "heartbeat_runs_retry_of_run_id_heartbeat_runs_id_fk", "tableFrom": "heartbeat_runs", - "tableTo": "heartbeat_runs", "columnsFrom": [ "retry_of_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "heartbeat_runs_company_native_issue_id_uq": { "name": "heartbeat_runs_company_native_issue_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "native_issue_id", "id" - ] + ], + "nullsNotDistinct": false }, "heartbeat_runs_company_native_issue_contract_id_uq": { "name": "heartbeat_runs_company_native_issue_contract_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "native_issue_id", "id", "completion_contract_id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -32758,9 +32758,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "inbox_dismissals_company_item_idx": { "name": "inbox_dismissals_company_item_idx", @@ -32779,9 +32779,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "inbox_dismissals_company_user_item_idx": { "name": "inbox_dismissals_company_user_item_idx", @@ -32806,24 +32806,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "inbox_dismissals_company_id_companies_id_fk": { "name": "inbox_dismissals_company_id_companies_id_fk", "tableFrom": "inbox_dismissals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -32893,9 +32893,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grant_delegations_grant_agent_uq": { "name": "connection_grant_delegations_grant_agent_uq", @@ -32914,52 +32914,52 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "connection_grant_delegations_company_id_companies_id_fk": { "name": "connection_grant_delegations_company_id_companies_id_fk", "tableFrom": "connection_grant_delegations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_grant_delegations_agent_id_agents_id_fk": { "name": "connection_grant_delegations_agent_id_agents_id_fk", "tableFrom": "connection_grant_delegations", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_grant_delegations_company_grant_fk": { "name": "connection_grant_delegations_company_grant_fk", "tableFrom": "connection_grant_delegations", - "tableTo": "connection_grants", "columnsFrom": [ "company_id", "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -33035,9 +33035,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grant_members_grant_subject_uq": { "name": "connection_grant_members_grant_subject_uq", @@ -33062,39 +33062,39 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "connection_grant_members_company_id_companies_id_fk": { "name": "connection_grant_members_company_id_companies_id_fk", "tableFrom": "connection_grant_members", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_grant_members_company_grant_fk": { "name": "connection_grant_members_company_grant_fk", "tableFrom": "connection_grant_members", - "tableTo": "connection_grants", "columnsFrom": [ "company_id", "grant_id" ], + "tableTo": "connection_grants", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -33251,9 +33251,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grants_subject_user_idx": { "name": "connection_grants_subject_user_idx", @@ -33272,9 +33272,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grants_subject_agent_idx": { "name": "connection_grants_subject_agent_idx", @@ -33293,9 +33293,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grants_user_uq": { "name": "connection_grants_user_uq", @@ -33314,9 +33314,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grants_agent_uq": { "name": "connection_grants_agent_uq", @@ -33335,9 +33335,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_grants_default_uq": { "name": "connection_grants_default_uq", @@ -33350,90 +33350,90 @@ } ], "isUnique": true, - "where": "\"connection_grants\".\"is_default\" = true and \"connection_grants\".\"kind\" = 'organization'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"connection_grants\".\"is_default\" = true and \"connection_grants\".\"kind\" = 'organization'", + "concurrently": false } }, "foreignKeys": { "connection_grants_company_id_companies_id_fk": { "name": "connection_grants_company_id_companies_id_fk", "tableFrom": "connection_grants", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_grants_subject_agent_id_agents_id_fk": { "name": "connection_grants_subject_agent_id_agents_id_fk", "tableFrom": "connection_grants", - "tableTo": "agents", "columnsFrom": [ "subject_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_grants_created_by_agent_id_agents_id_fk": { "name": "connection_grants_created_by_agent_id_agents_id_fk", "tableFrom": "connection_grants", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "connection_grants_revoked_by_agent_id_agents_id_fk": { "name": "connection_grants_revoked_by_agent_id_agents_id_fk", "tableFrom": "connection_grants", - "tableTo": "agents", "columnsFrom": [ "revoked_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "connection_grants_company_connection_fk": { "name": "connection_grants_company_connection_fk", "tableFrom": "connection_grants", - "tableTo": "tool_connections", "columnsFrom": [ "company_id", "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "connection_grants_company_id_uq": { "name": "connection_grants_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -33603,9 +33603,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_token_issuances_connection_created_idx": { "name": "connection_token_issuances_connection_created_idx", @@ -33630,9 +33630,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_token_issuances_agent_connection_idx": { "name": "connection_token_issuances_agent_connection_idx", @@ -33663,9 +33663,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "connection_token_issuances_run_idx": { "name": "connection_token_issuances_run_idx", @@ -33684,102 +33684,102 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "connection_token_issuances_company_id_companies_id_fk": { "name": "connection_token_issuances_company_id_companies_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_token_issuances_application_id_tool_applications_id_fk": { "name": "connection_token_issuances_application_id_tool_applications_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "connection_token_issuances_connection_id_tool_connections_id_fk": { "name": "connection_token_issuances_connection_id_tool_connections_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_token_issuances_agent_id_agents_id_fk": { "name": "connection_token_issuances_agent_id_agents_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "connection_token_issuances_run_id_heartbeat_runs_id_fk": { "name": "connection_token_issuances_run_id_heartbeat_runs_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "connection_token_issuances_issue_id_issues_id_fk": { "name": "connection_token_issuances_issue_id_issues_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "connection_token_issuances_project_id_projects_id_fk": { "name": "connection_token_issuances_project_id_projects_id_fk", "tableFrom": "connection_token_issuances", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -33853,24 +33853,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "instance_settings_default_environment_id_environments_id_fk": { "name": "instance_settings_default_environment_id_environments_id_fk", "tableFrom": "instance_settings", - "tableTo": "environments", "columnsFrom": [ "default_environment_id" ], + "tableTo": "environments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -33936,9 +33936,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "instance_user_roles_role_idx": { "name": "instance_user_roles_role_idx", @@ -33951,9 +33951,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": {}, @@ -34057,9 +34057,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "invites_company_invite_state_idx": { "name": "invites_company_invite_state_idx", @@ -34090,24 +34090,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "invites_company_id_companies_id_fk": { "name": "invites_company_id_companies_id_fk", "tableFrom": "invites", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -34207,9 +34207,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_access_grants_issue_idx": { "name": "issue_access_grants_issue_idx", @@ -34228,37 +34228,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_access_grants_issue_id_issues_id_fk": { "name": "issue_access_grants_issue_id_issues_id_fk", "tableFrom": "issue_access_grants", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_access_grants_granted_by_agent_id_agents_id_fk": { "name": "issue_access_grants_granted_by_agent_id_agents_id_fk", "tableFrom": "issue_access_grants", - "tableTo": "agents", "columnsFrom": [ "granted_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -34330,9 +34330,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_approvals_approval_idx": { "name": "issue_approvals_approval_idx", @@ -34345,9 +34345,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_approvals_company_idx": { "name": "issue_approvals_company_idx", @@ -34360,63 +34360,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_approvals_company_id_companies_id_fk": { "name": "issue_approvals_company_id_companies_id_fk", "tableFrom": "issue_approvals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_approvals_issue_id_issues_id_fk": { "name": "issue_approvals_issue_id_issues_id_fk", "tableFrom": "issue_approvals", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_approvals_approval_id_approvals_id_fk": { "name": "issue_approvals_approval_id_approvals_id_fk", "tableFrom": "issue_approvals", - "tableTo": "approvals", "columnsFrom": [ "approval_id" ], + "tableTo": "approvals", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_approvals_linked_by_agent_id_agents_id_fk": { "name": "issue_approvals_linked_by_agent_id_agents_id_fk", "tableFrom": "issue_approvals", - "tableTo": "agents", "columnsFrom": [ "linked_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": { @@ -34507,9 +34507,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_attachments_issue_comment_idx": { "name": "issue_attachments_issue_comment_idx", @@ -34522,9 +34522,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_attachments_originating_run_idx": { "name": "issue_attachments_originating_run_idx", @@ -34537,9 +34537,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_attachments_asset_uq": { "name": "issue_attachments_asset_uq", @@ -34552,76 +34552,76 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_attachments_company_id_companies_id_fk": { "name": "issue_attachments_company_id_companies_id_fk", "tableFrom": "issue_attachments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_attachments_issue_id_issues_id_fk": { "name": "issue_attachments_issue_id_issues_id_fk", "tableFrom": "issue_attachments", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_attachments_asset_id_assets_id_fk": { "name": "issue_attachments_asset_id_assets_id_fk", "tableFrom": "issue_attachments", - "tableTo": "assets", "columnsFrom": [ "asset_id" ], + "tableTo": "assets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_attachments_issue_comment_id_issue_comments_id_fk": { "name": "issue_attachments_issue_comment_id_issue_comments_id_fk", "tableFrom": "issue_attachments", - "tableTo": "issue_comments", "columnsFrom": [ "issue_comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_attachments_originating_run_id_heartbeat_runs_id_fk": { "name": "issue_attachments_originating_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_attachments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "originating_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -34807,9 +34807,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_comments_company_idx": { "name": "issue_comments_company_idx", @@ -34822,9 +34822,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_comments_company_issue_created_at_idx": { "name": "issue_comments_company_issue_created_at_idx", @@ -34849,9 +34849,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_comments_company_author_issue_created_at_idx": { "name": "issue_comments_company_author_issue_created_at_idx", @@ -34882,9 +34882,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_comments_body_search_idx": { "name": "issue_comments_body_search_idx", @@ -34898,148 +34898,148 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_comments_company_id_companies_id_fk": { "name": "issue_comments_company_id_companies_id_fk", "tableFrom": "issue_comments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_comments_issue_id_issues_id_fk": { "name": "issue_comments_issue_id_issues_id_fk", "tableFrom": "issue_comments", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_comments_author_agent_id_agents_id_fk": { "name": "issue_comments_author_agent_id_agents_id_fk", "tableFrom": "issue_comments", - "tableTo": "agents", "columnsFrom": [ "author_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_comments_on_behalf_of_user_id_user_id_fk": { "name": "issue_comments_on_behalf_of_user_id_user_id_fk", "tableFrom": "issue_comments", - "tableTo": "user", "columnsFrom": [ "on_behalf_of_user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_comments_created_by_run_id_heartbeat_runs_id_fk": { "name": "issue_comments_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_comments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_comments_derived_author_agent_id_agents_id_fk": { "name": "issue_comments_derived_author_agent_id_agents_id_fk", "tableFrom": "issue_comments", - "tableTo": "agents", "columnsFrom": [ "derived_author_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_comments_derived_created_by_run_id_heartbeat_runs_id_fk": { "name": "issue_comments_derived_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_comments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "derived_created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_comments_deleted_by_agent_id_agents_id_fk": { "name": "issue_comments_deleted_by_agent_id_agents_id_fk", "tableFrom": "issue_comments", - "tableTo": "agents", "columnsFrom": [ "deleted_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_comments_deleted_by_run_id_heartbeat_runs_id_fk": { "name": "issue_comments_deleted_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_comments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "deleted_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "issue_comments_client_request_uq": { "name": "issue_comments_client_request_uq", - "nullsNotDistinct": false, "columns": [ "issue_id", "author_user_id", "client_request_id" - ] + ], + "nullsNotDistinct": false }, "issue_comments_company_id_uq": { "name": "issue_comments_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -35101,9 +35101,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_create_idempotency_keys_issue_idx": { "name": "issue_create_idempotency_keys_issue_idx", @@ -35116,9 +35116,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_create_idempotency_keys_company_created_at_idx": { "name": "issue_create_idempotency_keys_company_created_at_idx", @@ -35137,37 +35137,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_create_idempotency_keys_company_id_companies_id_fk": { "name": "issue_create_idempotency_keys_company_id_companies_id_fk", "tableFrom": "issue_create_idempotency_keys", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_create_idempotency_keys_issue_id_issues_id_fk": { "name": "issue_create_idempotency_keys_issue_id_issues_id_fk", "tableFrom": "issue_create_idempotency_keys", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -35250,9 +35250,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_documents_document_uq": { "name": "issue_documents_document_uq", @@ -35265,9 +35265,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_documents_company_issue_updated_idx": { "name": "issue_documents_company_issue_updated_idx", @@ -35292,50 +35292,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_documents_company_id_companies_id_fk": { "name": "issue_documents_company_id_companies_id_fk", "tableFrom": "issue_documents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_documents_issue_id_issues_id_fk": { "name": "issue_documents_issue_id_issues_id_fk", "tableFrom": "issue_documents", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_documents_document_id_documents_id_fk": { "name": "issue_documents_document_id_documents_id_fk", "tableFrom": "issue_documents", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -35442,9 +35442,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_execution_decisions_stage_idx": { "name": "issue_execution_decisions_stage_idx", @@ -35469,63 +35469,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_execution_decisions_company_id_companies_id_fk": { "name": "issue_execution_decisions_company_id_companies_id_fk", "tableFrom": "issue_execution_decisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_execution_decisions_issue_id_issues_id_fk": { "name": "issue_execution_decisions_issue_id_issues_id_fk", "tableFrom": "issue_execution_decisions", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_execution_decisions_actor_agent_id_agents_id_fk": { "name": "issue_execution_decisions_actor_agent_id_agents_id_fk", "tableFrom": "issue_execution_decisions", - "tableTo": "agents", "columnsFrom": [ "actor_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_execution_decisions_created_by_run_id_heartbeat_runs_id_fk": { "name": "issue_execution_decisions_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_execution_decisions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -35622,9 +35622,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_inbox_archives_company_user_idx": { "name": "issue_inbox_archives_company_user_idx", @@ -35643,9 +35643,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_inbox_archives_company_issue_user_idx": { "name": "issue_inbox_archives_company_issue_user_idx", @@ -35670,63 +35670,63 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_inbox_archives_company_id_companies_id_fk": { "name": "issue_inbox_archives_company_id_companies_id_fk", "tableFrom": "issue_inbox_archives", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_inbox_archives_issue_id_issues_id_fk": { "name": "issue_inbox_archives_issue_id_issues_id_fk", "tableFrom": "issue_inbox_archives", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_inbox_archives_archived_by_agent_id_agents_id_fk": { "name": "issue_inbox_archives_archived_by_agent_id_agents_id_fk", "tableFrom": "issue_inbox_archives", - "tableTo": "agents", "columnsFrom": [ "archived_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_inbox_archives_archived_by_run_id_heartbeat_runs_id_fk": { "name": "issue_inbox_archives_archived_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_inbox_archives", - "tableTo": "heartbeat_runs", "columnsFrom": [ "archived_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -35782,9 +35782,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_labels_label_idx": { "name": "issue_labels_label_idx", @@ -35797,9 +35797,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_labels_company_idx": { "name": "issue_labels_company_idx", @@ -35812,50 +35812,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_labels_issue_id_issues_id_fk": { "name": "issue_labels_issue_id_issues_id_fk", "tableFrom": "issue_labels", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_labels_label_id_labels_id_fk": { "name": "issue_labels_label_id_labels_id_fk", "tableFrom": "issue_labels", - "tableTo": "labels", "columnsFrom": [ "label_id" ], + "tableTo": "labels", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_labels_company_id_companies_id_fk": { "name": "issue_labels_company_id_companies_id_fk", "tableFrom": "issue_labels", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": { @@ -36004,9 +36004,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_plan_decompositions_active_owner_idx": { "name": "issue_plan_decompositions_active_owner_idx", @@ -36025,10 +36025,10 @@ } ], "isUnique": false, - "where": "\"issue_plan_decompositions\".\"status\" = 'in_flight'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_plan_decompositions\".\"status\" = 'in_flight'", + "concurrently": false }, "issue_plan_decompositions_source_revision_uq": { "name": "issue_plan_decompositions_source_revision_uq", @@ -36053,89 +36053,89 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_plan_decompositions_company_id_companies_id_fk": { "name": "issue_plan_decompositions_company_id_companies_id_fk", "tableFrom": "issue_plan_decompositions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_plan_decompositions_source_issue_id_issues_id_fk": { "name": "issue_plan_decompositions_source_issue_id_issues_id_fk", "tableFrom": "issue_plan_decompositions", - "tableTo": "issues", "columnsFrom": [ "source_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_plan_decompositions_accepted_plan_revision_id_document_revisions_id_fk": { "name": "issue_plan_decompositions_accepted_plan_revision_id_document_revisions_id_fk", "tableFrom": "issue_plan_decompositions", - "tableTo": "document_revisions", "columnsFrom": [ "accepted_plan_revision_id" ], + "tableTo": "document_revisions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_plan_decompositions_accepted_interaction_id_issue_thread_interactions_id_fk": { "name": "issue_plan_decompositions_accepted_interaction_id_issue_thread_interactions_id_fk", "tableFrom": "issue_plan_decompositions", - "tableTo": "issue_thread_interactions", "columnsFrom": [ "accepted_interaction_id" ], + "tableTo": "issue_thread_interactions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_plan_decompositions_owner_agent_id_agents_id_fk": { "name": "issue_plan_decompositions_owner_agent_id_agents_id_fk", "tableFrom": "issue_plan_decompositions", - "tableTo": "agents", "columnsFrom": [ "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_plan_decompositions_owner_run_id_heartbeat_runs_id_fk": { "name": "issue_plan_decompositions_owner_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_plan_decompositions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "owner_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -36275,9 +36275,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_question_response_deliveries_correlation_uq": { "name": "issue_question_response_deliveries_correlation_uq", @@ -36290,9 +36290,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_question_response_deliveries_pending_idx": { "name": "issue_question_response_deliveries_pending_idx", @@ -36311,9 +36311,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_question_response_deliveries_company_issue_idx": { "name": "issue_question_response_deliveries_company_issue_idx", @@ -36338,76 +36338,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_question_response_deliveries_company_id_companies_id_fk": { "name": "issue_question_response_deliveries_company_id_companies_id_fk", "tableFrom": "issue_question_response_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_question_response_deliveries_issue_id_issues_id_fk": { "name": "issue_question_response_deliveries_issue_id_issues_id_fk", "tableFrom": "issue_question_response_deliveries", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_question_response_deliveries_interaction_id_issue_thread_interactions_id_fk": { "name": "issue_question_response_deliveries_interaction_id_issue_thread_interactions_id_fk", "tableFrom": "issue_question_response_deliveries", - "tableTo": "issue_thread_interactions", "columnsFrom": [ "interaction_id" ], + "tableTo": "issue_thread_interactions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_question_response_deliveries_source_run_id_heartbeat_runs_id_fk": { "name": "issue_question_response_deliveries_source_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_question_response_deliveries", - "tableTo": "heartbeat_runs", "columnsFrom": [ "source_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_question_response_deliveries_target_run_id_heartbeat_runs_id_fk": { "name": "issue_question_response_deliveries_target_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_question_response_deliveries", - "tableTo": "heartbeat_runs", "columnsFrom": [ "target_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -36494,9 +36494,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_read_states_company_user_idx": { "name": "issue_read_states_company_user_idx", @@ -36515,9 +36515,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_read_states_company_issue_user_idx": { "name": "issue_read_states_company_issue_user_idx", @@ -36542,37 +36542,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_read_states_company_id_companies_id_fk": { "name": "issue_read_states_company_id_companies_id_fk", "tableFrom": "issue_read_states", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_read_states_issue_id_issues_id_fk": { "name": "issue_read_states_issue_id_issues_id_fk", "tableFrom": "issue_read_states", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -36773,9 +36773,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_recovery_actions_company_owner_status_idx": { "name": "issue_recovery_actions_company_owner_status_idx", @@ -36800,9 +36800,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_recovery_actions_company_recovery_issue_idx": { "name": "issue_recovery_actions_company_recovery_issue_idx", @@ -36821,9 +36821,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_recovery_actions_active_source_uq": { "name": "issue_recovery_actions_active_source_uq", @@ -36842,10 +36842,10 @@ } ], "isUnique": true, - "where": "\"issue_recovery_actions\".\"status\" in ('active', 'escalated')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_recovery_actions\".\"status\" in ('active', 'escalated')", + "concurrently": false }, "issue_recovery_actions_active_fingerprint_uq": { "name": "issue_recovery_actions_active_fingerprint_uq", @@ -36876,90 +36876,90 @@ } ], "isUnique": true, - "where": "\"issue_recovery_actions\".\"status\" in ('active', 'escalated')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_recovery_actions\".\"status\" in ('active', 'escalated')", + "concurrently": false } }, "foreignKeys": { "issue_recovery_actions_company_id_companies_id_fk": { "name": "issue_recovery_actions_company_id_companies_id_fk", "tableFrom": "issue_recovery_actions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_recovery_actions_source_issue_id_issues_id_fk": { "name": "issue_recovery_actions_source_issue_id_issues_id_fk", "tableFrom": "issue_recovery_actions", - "tableTo": "issues", "columnsFrom": [ "source_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_recovery_actions_recovery_issue_id_issues_id_fk": { "name": "issue_recovery_actions_recovery_issue_id_issues_id_fk", "tableFrom": "issue_recovery_actions", - "tableTo": "issues", "columnsFrom": [ "recovery_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_recovery_actions_owner_agent_id_agents_id_fk": { "name": "issue_recovery_actions_owner_agent_id_agents_id_fk", "tableFrom": "issue_recovery_actions", - "tableTo": "agents", "columnsFrom": [ "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_recovery_actions_previous_owner_agent_id_agents_id_fk": { "name": "issue_recovery_actions_previous_owner_agent_id_agents_id_fk", "tableFrom": "issue_recovery_actions", - "tableTo": "agents", "columnsFrom": [ "previous_owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_recovery_actions_return_owner_agent_id_agents_id_fk": { "name": "issue_recovery_actions_return_owner_agent_id_agents_id_fk", "tableFrom": "issue_recovery_actions", - "tableTo": "agents", "columnsFrom": [ "return_owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -37054,9 +37054,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_reference_mentions_company_target_issue_idx": { "name": "issue_reference_mentions_company_target_issue_idx", @@ -37075,9 +37075,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_reference_mentions_company_issue_pair_idx": { "name": "issue_reference_mentions_company_issue_pair_idx", @@ -37102,9 +37102,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_reference_mentions_company_source_mention_record_uq": { "name": "issue_reference_mentions_company_source_mention_record_uq", @@ -37141,10 +37141,10 @@ } ], "isUnique": true, - "where": "\"issue_reference_mentions\".\"source_record_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_reference_mentions\".\"source_record_id\" is not null", + "concurrently": false }, "issue_reference_mentions_company_source_mention_null_record_uq": { "name": "issue_reference_mentions_company_source_mention_null_record_uq", @@ -37175,51 +37175,51 @@ } ], "isUnique": true, - "where": "\"issue_reference_mentions\".\"source_record_id\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_reference_mentions\".\"source_record_id\" is null", + "concurrently": false } }, "foreignKeys": { "issue_reference_mentions_company_id_companies_id_fk": { "name": "issue_reference_mentions_company_id_companies_id_fk", "tableFrom": "issue_reference_mentions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_reference_mentions_source_issue_id_issues_id_fk": { "name": "issue_reference_mentions_source_issue_id_issues_id_fk", "tableFrom": "issue_reference_mentions", - "tableTo": "issues", "columnsFrom": [ "source_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_reference_mentions_target_issue_id_issues_id_fk": { "name": "issue_reference_mentions_target_issue_id_issues_id_fk", "tableFrom": "issue_reference_mentions", - "tableTo": "issues", "columnsFrom": [ "target_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -37308,9 +37308,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_relations_company_related_issue_idx": { "name": "issue_relations_company_related_issue_idx", @@ -37329,9 +37329,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_relations_company_type_idx": { "name": "issue_relations_company_type_idx", @@ -37350,9 +37350,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_relations_company_edge_uq": { "name": "issue_relations_company_edge_uq", @@ -37383,63 +37383,63 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_relations_company_id_companies_id_fk": { "name": "issue_relations_company_id_companies_id_fk", "tableFrom": "issue_relations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_relations_issue_id_issues_id_fk": { "name": "issue_relations_issue_id_issues_id_fk", "tableFrom": "issue_relations", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_relations_related_issue_id_issues_id_fk": { "name": "issue_relations_related_issue_id_issues_id_fk", "tableFrom": "issue_relations", - "tableTo": "issues", "columnsFrom": [ "related_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_relations_created_by_agent_id_agents_id_fk": { "name": "issue_relations_created_by_agent_id_agents_id_fk", "tableFrom": "issue_relations", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -37649,9 +37649,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_thread_interactions_company_issue_created_at_idx": { "name": "issue_thread_interactions_company_issue_created_at_idx", @@ -37676,9 +37676,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_thread_interactions_company_issue_status_idx": { "name": "issue_thread_interactions_company_issue_status_idx", @@ -37703,9 +37703,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_thread_interactions_company_issue_idempotency_uq": { "name": "issue_thread_interactions_company_issue_idempotency_uq", @@ -37730,10 +37730,10 @@ } ], "isUnique": true, - "where": "\"issue_thread_interactions\".\"idempotency_key\" IS NOT NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_thread_interactions\".\"idempotency_key\" IS NOT NULL", + "concurrently": false }, "issue_thread_interactions_source_comment_idx": { "name": "issue_thread_interactions_source_comment_idx", @@ -37746,9 +37746,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_thread_interactions_addressee_agent_idx": { "name": "issue_thread_interactions_addressee_agent_idx", @@ -37761,9 +37761,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_thread_interactions_addressee_user_idx": { "name": "issue_thread_interactions_addressee_user_idx", @@ -37776,115 +37776,115 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_thread_interactions_company_id_companies_id_fk": { "name": "issue_thread_interactions_company_id_companies_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_thread_interactions_issue_id_issues_id_fk": { "name": "issue_thread_interactions_issue_id_issues_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_thread_interactions_source_comment_id_issue_comments_id_fk": { "name": "issue_thread_interactions_source_comment_id_issue_comments_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "issue_comments", "columnsFrom": [ "source_comment_id" ], + "tableTo": "issue_comments", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_thread_interactions_source_run_id_heartbeat_runs_id_fk": { "name": "issue_thread_interactions_source_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "source_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_thread_interactions_created_by_agent_id_agents_id_fk": { "name": "issue_thread_interactions_created_by_agent_id_agents_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_thread_interactions_addressee_agent_id_agents_id_fk": { "name": "issue_thread_interactions_addressee_agent_id_agents_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "agents", "columnsFrom": [ "addressee_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_thread_interactions_resolved_by_agent_id_agents_id_fk": { "name": "issue_thread_interactions_resolved_by_agent_id_agents_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "agents", "columnsFrom": [ "resolved_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_thread_interactions_resolved_by_run_id_heartbeat_runs_id_fk": { "name": "issue_thread_interactions_resolved_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_thread_interactions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "resolved_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -38016,9 +38016,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_tree_hold_members_company_issue_idx": { "name": "issue_tree_hold_members_company_issue_idx", @@ -38037,9 +38037,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_tree_hold_members_hold_depth_idx": { "name": "issue_tree_hold_members_hold_depth_idx", @@ -38058,89 +38058,89 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_tree_hold_members_company_id_companies_id_fk": { "name": "issue_tree_hold_members_company_id_companies_id_fk", "tableFrom": "issue_tree_hold_members", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_tree_hold_members_hold_id_issue_tree_holds_id_fk": { "name": "issue_tree_hold_members_hold_id_issue_tree_holds_id_fk", "tableFrom": "issue_tree_hold_members", - "tableTo": "issue_tree_holds", "columnsFrom": [ "hold_id" ], + "tableTo": "issue_tree_holds", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_tree_hold_members_issue_id_issues_id_fk": { "name": "issue_tree_hold_members_issue_id_issues_id_fk", "tableFrom": "issue_tree_hold_members", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_tree_hold_members_parent_issue_id_issues_id_fk": { "name": "issue_tree_hold_members_parent_issue_id_issues_id_fk", "tableFrom": "issue_tree_hold_members", - "tableTo": "issues", "columnsFrom": [ "parent_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_tree_hold_members_assignee_agent_id_agents_id_fk": { "name": "issue_tree_hold_members_assignee_agent_id_agents_id_fk", "tableFrom": "issue_tree_hold_members", - "tableTo": "agents", "columnsFrom": [ "assignee_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_tree_hold_members_active_run_id_heartbeat_runs_id_fk": { "name": "issue_tree_hold_members_active_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_tree_hold_members", - "tableTo": "heartbeat_runs", "columnsFrom": [ "active_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -38303,9 +38303,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_tree_holds_company_status_mode_idx": { "name": "issue_tree_holds_company_status_mode_idx", @@ -38330,89 +38330,89 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_tree_holds_company_id_companies_id_fk": { "name": "issue_tree_holds_company_id_companies_id_fk", "tableFrom": "issue_tree_holds", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_tree_holds_root_issue_id_issues_id_fk": { "name": "issue_tree_holds_root_issue_id_issues_id_fk", "tableFrom": "issue_tree_holds", - "tableTo": "issues", "columnsFrom": [ "root_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_tree_holds_created_by_agent_id_agents_id_fk": { "name": "issue_tree_holds_created_by_agent_id_agents_id_fk", "tableFrom": "issue_tree_holds", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_tree_holds_created_by_run_id_heartbeat_runs_id_fk": { "name": "issue_tree_holds_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_tree_holds", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_tree_holds_released_by_agent_id_agents_id_fk": { "name": "issue_tree_holds_released_by_agent_id_agents_id_fk", "tableFrom": "issue_tree_holds", - "tableTo": "agents", "columnsFrom": [ "released_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_tree_holds_released_by_run_id_heartbeat_runs_id_fk": { "name": "issue_tree_holds_released_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_tree_holds", - "tableTo": "heartbeat_runs", "columnsFrom": [ "released_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -38581,9 +38581,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_watchdogs_company_status_idx": { "name": "issue_watchdogs_company_status_idx", @@ -38602,9 +38602,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_watchdogs_company_agent_idx": { "name": "issue_watchdogs_company_agent_idx", @@ -38623,9 +38623,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_watchdogs_company_watchdog_issue_uq": { "name": "issue_watchdogs_company_watchdog_issue_uq", @@ -38644,116 +38644,116 @@ } ], "isUnique": true, - "where": "\"issue_watchdogs\".\"watchdog_issue_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issue_watchdogs\".\"watchdog_issue_id\" is not null", + "concurrently": false } }, "foreignKeys": { "issue_watchdogs_company_id_companies_id_fk": { "name": "issue_watchdogs_company_id_companies_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_watchdogs_issue_id_issues_id_fk": { "name": "issue_watchdogs_issue_id_issues_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_watchdogs_watchdog_agent_id_agents_id_fk": { "name": "issue_watchdogs_watchdog_agent_id_agents_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "agents", "columnsFrom": [ "watchdog_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_watchdogs_watchdog_issue_id_issues_id_fk": { "name": "issue_watchdogs_watchdog_issue_id_issues_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "issues", "columnsFrom": [ "watchdog_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_watchdogs_created_by_agent_id_agents_id_fk": { "name": "issue_watchdogs_created_by_agent_id_agents_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_watchdogs_created_by_run_id_heartbeat_runs_id_fk": { "name": "issue_watchdogs_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_watchdogs_updated_by_agent_id_agents_id_fk": { "name": "issue_watchdogs_updated_by_agent_id_agents_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "agents", "columnsFrom": [ "updated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_watchdogs_updated_by_run_id_heartbeat_runs_id_fk": { "name": "issue_watchdogs_updated_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_watchdogs", - "tableTo": "heartbeat_runs", "columnsFrom": [ "updated_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -38923,9 +38923,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_work_products_company_execution_workspace_type_idx": { "name": "issue_work_products_company_execution_workspace_type_idx", @@ -38950,9 +38950,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_work_products_company_provider_external_id_idx": { "name": "issue_work_products_company_provider_external_id_idx", @@ -38977,9 +38977,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issue_work_products_company_updated_idx": { "name": "issue_work_products_company_updated_idx", @@ -38998,89 +38998,89 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "issue_work_products_company_id_companies_id_fk": { "name": "issue_work_products_company_id_companies_id_fk", "tableFrom": "issue_work_products", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issue_work_products_project_id_projects_id_fk": { "name": "issue_work_products_project_id_projects_id_fk", "tableFrom": "issue_work_products", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_work_products_issue_id_issues_id_fk": { "name": "issue_work_products_issue_id_issues_id_fk", "tableFrom": "issue_work_products", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "issue_work_products_execution_workspace_id_execution_workspaces_id_fk": { "name": "issue_work_products_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "issue_work_products", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_work_products_runtime_service_id_workspace_runtime_services_id_fk": { "name": "issue_work_products_runtime_service_id_workspace_runtime_services_id_fk", "tableFrom": "issue_work_products", - "tableTo": "workspace_runtime_services", "columnsFrom": [ "runtime_service_id" ], + "tableTo": "workspace_runtime_services", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issue_work_products_created_by_run_id_heartbeat_runs_id_fk": { "name": "issue_work_products_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "issue_work_products", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -39541,9 +39541,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_status_idx": { "name": "issues_company_status_idx", @@ -39562,9 +39562,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_harness_kind_idx": { "name": "issues_company_harness_kind_idx", @@ -39583,9 +39583,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_assignee_status_idx": { "name": "issues_company_assignee_status_idx", @@ -39610,9 +39610,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_assignee_user_status_idx": { "name": "issues_company_assignee_user_status_idx", @@ -39637,9 +39637,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_responsible_user_idx": { "name": "issues_company_responsible_user_idx", @@ -39658,9 +39658,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_parent_idx": { "name": "issues_company_parent_idx", @@ -39679,9 +39679,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_privacy_parent_idx": { "name": "issues_company_privacy_parent_idx", @@ -39700,9 +39700,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_privacy_root_idx": { "name": "issues_company_privacy_root_idx", @@ -39721,9 +39721,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_project_idx": { "name": "issues_company_project_idx", @@ -39742,9 +39742,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_origin_idx": { "name": "issues_company_origin_idx", @@ -39769,9 +39769,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_project_workspace_idx": { "name": "issues_company_project_workspace_idx", @@ -39790,9 +39790,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_execution_workspace_idx": { "name": "issues_company_execution_workspace_idx", @@ -39811,9 +39811,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_monitor_due_idx": { "name": "issues_company_monitor_due_idx", @@ -39832,9 +39832,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_updated_idx": { "name": "issues_company_updated_idx", @@ -39853,9 +39853,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_company_created_idx": { "name": "issues_company_created_idx", @@ -39874,9 +39874,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_open_normalized_title_created_idx": { "name": "issues_open_normalized_title_created_idx", @@ -39895,8 +39895,8 @@ }, { "expression": "lower(regexp_replace(btrim(\"title\"), '\\s+', ' ', 'g'))", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" }, { @@ -39907,10 +39907,10 @@ } ], "isUnique": false, - "where": "\"issues\".\"hidden_at\" is null and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"hidden_at\" is null and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_company_priority_idx": { "name": "issues_company_priority_idx", @@ -39929,9 +39929,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_identifier_idx": { "name": "issues_identifier_idx", @@ -39944,9 +39944,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "issues_title_search_idx": { "name": "issues_title_search_idx", @@ -39960,9 +39960,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "issues_identifier_search_idx": { "name": "issues_identifier_search_idx", @@ -39976,9 +39976,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "issues_description_search_idx": { "name": "issues_description_search_idx", @@ -39992,9 +39992,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false }, "issues_open_routine_execution_uq": { "name": "issues_open_routine_execution_uq", @@ -40025,10 +40025,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'routine_execution'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"execution_run_id\" is not null\n and \"issues\".\"status\" in ('backlog', 'todo', 'in_progress', 'in_review', 'blocked')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'routine_execution'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"execution_run_id\" is not null\n and \"issues\".\"status\" in ('backlog', 'todo', 'in_progress', 'in_review', 'blocked')", + "concurrently": false }, "issues_active_liveness_recovery_incident_uq": { "name": "issues_active_liveness_recovery_incident_uq", @@ -40053,10 +40053,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'harness_liveness_escalation'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'harness_liveness_escalation'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_active_liveness_recovery_leaf_uq": { "name": "issues_active_liveness_recovery_leaf_uq", @@ -40081,10 +40081,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'harness_liveness_escalation'\n and \"issues\".\"origin_fingerprint\" <> 'default'\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'harness_liveness_escalation'\n and \"issues\".\"origin_fingerprint\" <> 'default'\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_active_stale_run_evaluation_uq": { "name": "issues_active_stale_run_evaluation_uq", @@ -40109,10 +40109,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'stale_active_run_evaluation'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'stale_active_run_evaluation'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_active_task_watchdog_uq": { "name": "issues_active_task_watchdog_uq", @@ -40137,10 +40137,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'task_watchdog'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'task_watchdog'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_active_productivity_review_uq": { "name": "issues_active_productivity_review_uq", @@ -40165,10 +40165,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'issue_productivity_review'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'issue_productivity_review'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_active_stranded_issue_recovery_uq": { "name": "issues_active_stranded_issue_recovery_uq", @@ -40193,10 +40193,10 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'stranded_issue_recovery'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'stranded_issue_recovery'\n and \"issues\".\"origin_id\" is not null\n and \"issues\".\"hidden_at\" is null\n and \"issues\".\"status\" not in ('done', 'cancelled')", + "concurrently": false }, "issues_onboarding_first_task_uq": { "name": "issues_onboarding_first_task_uq", @@ -40209,192 +40209,192 @@ } ], "isUnique": true, - "where": "\"issues\".\"origin_kind\" = 'onboarding_first_task'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"issues\".\"origin_kind\" = 'onboarding_first_task'", + "concurrently": false } }, "foreignKeys": { "issues_company_id_companies_id_fk": { "name": "issues_company_id_companies_id_fk", "tableFrom": "issues", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_conversation_agent_id_agents_id_fk": { "name": "issues_conversation_agent_id_agents_id_fk", "tableFrom": "issues", - "tableTo": "agents", "columnsFrom": [ "conversation_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_project_id_projects_id_fk": { "name": "issues_project_id_projects_id_fk", "tableFrom": "issues", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_project_workspace_id_project_workspaces_id_fk": { "name": "issues_project_workspace_id_project_workspaces_id_fk", "tableFrom": "issues", - "tableTo": "project_workspaces", "columnsFrom": [ "project_workspace_id" ], + "tableTo": "project_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issues_goal_id_goals_id_fk": { "name": "issues_goal_id_goals_id_fk", "tableFrom": "issues", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_parent_id_issues_id_fk": { "name": "issues_parent_id_issues_id_fk", "tableFrom": "issues", - "tableTo": "issues", "columnsFrom": [ "parent_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_privacy_root_issue_id_issues_id_fk": { "name": "issues_privacy_root_issue_id_issues_id_fk", "tableFrom": "issues", - "tableTo": "issues", "columnsFrom": [ "privacy_root_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_privacy_parent_issue_id_issues_id_fk": { "name": "issues_privacy_parent_issue_id_issues_id_fk", "tableFrom": "issues", - "tableTo": "issues", "columnsFrom": [ "privacy_parent_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issues_assignee_agent_id_agents_id_fk": { "name": "issues_assignee_agent_id_agents_id_fk", "tableFrom": "issues", - "tableTo": "agents", "columnsFrom": [ "assignee_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_checkout_run_id_heartbeat_runs_id_fk": { "name": "issues_checkout_run_id_heartbeat_runs_id_fk", "tableFrom": "issues", - "tableTo": "heartbeat_runs", "columnsFrom": [ "checkout_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issues_execution_run_id_heartbeat_runs_id_fk": { "name": "issues_execution_run_id_heartbeat_runs_id_fk", "tableFrom": "issues", - "tableTo": "heartbeat_runs", "columnsFrom": [ "execution_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "issues_created_by_agent_id_agents_id_fk": { "name": "issues_created_by_agent_id_agents_id_fk", "tableFrom": "issues", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "issues_execution_workspace_id_execution_workspaces_id_fk": { "name": "issues_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "issues", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "issues_company_id_uq": { "name": "issues_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -40563,9 +40563,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "join_requests_company_status_type_created_idx": { "name": "join_requests_company_status_type_created_idx", @@ -40596,9 +40596,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "join_requests_pending_human_user_uq": { "name": "join_requests_pending_human_user_uq", @@ -40617,10 +40617,10 @@ } ], "isUnique": true, - "where": "\"join_requests\".\"request_type\" = 'human' AND \"join_requests\".\"status\" = 'pending_approval' AND \"join_requests\".\"requesting_user_id\" IS NOT NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"join_requests\".\"request_type\" = 'human' AND \"join_requests\".\"status\" = 'pending_approval' AND \"join_requests\".\"requesting_user_id\" IS NOT NULL", + "concurrently": false }, "join_requests_pending_human_email_uq": { "name": "join_requests_pending_human_email_uq", @@ -40633,57 +40633,57 @@ }, { "expression": "lower(\"request_email_snapshot\")", - "asc": true, "isExpression": true, + "asc": true, "nulls": "last" } ], "isUnique": true, - "where": "\"join_requests\".\"request_type\" = 'human' AND \"join_requests\".\"status\" = 'pending_approval' AND \"join_requests\".\"request_email_snapshot\" IS NOT NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"join_requests\".\"request_type\" = 'human' AND \"join_requests\".\"status\" = 'pending_approval' AND \"join_requests\".\"request_email_snapshot\" IS NOT NULL", + "concurrently": false } }, "foreignKeys": { "join_requests_invite_id_invites_id_fk": { "name": "join_requests_invite_id_invites_id_fk", "tableFrom": "join_requests", - "tableTo": "invites", "columnsFrom": [ "invite_id" ], + "tableTo": "invites", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "join_requests_company_id_companies_id_fk": { "name": "join_requests_company_id_companies_id_fk", "tableFrom": "join_requests", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "join_requests_created_agent_id_agents_id_fk": { "name": "join_requests_created_agent_id_agents_id_fk", "tableFrom": "join_requests", - "tableTo": "agents", "columnsFrom": [ "created_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -40748,9 +40748,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "labels_company_name_idx": { "name": "labels_company_name_idx", @@ -40769,24 +40769,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "labels_company_id_companies_id_fk": { "name": "labels_company_id_companies_id_fk", "tableFrom": "labels", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -40936,9 +40936,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "managed_agent_profiles_company_key_uq": { "name": "managed_agent_profiles_company_key_uq", @@ -40957,9 +40957,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "managed_agent_profiles_company_resource_uq": { "name": "managed_agent_profiles_company_resource_uq", @@ -40990,37 +40990,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "managed_agent_profiles_company_id_companies_id_fk": { "name": "managed_agent_profiles_company_id_companies_id_fk", "tableFrom": "managed_agent_profiles", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "managed_agent_profiles_api_key_secret_id_company_secrets_id_fk": { "name": "managed_agent_profiles_api_key_secret_id_company_secrets_id_fk", "tableFrom": "managed_agent_profiles", - "tableTo": "company_secrets", "columnsFrom": [ "api_key_secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" } }, "compositePrimaryKeys": {}, @@ -41206,100 +41206,99 @@ } ], "isUnique": false, - "where": "\"native_run_finalizations\".\"control_deadline_at\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"native_run_finalizations\".\"control_deadline_at\" is not null", + "concurrently": false } }, "foreignKeys": { "native_run_finalizations_company_id_companies_id_fk": { "name": "native_run_finalizations_company_id_companies_id_fk", "tableFrom": "native_run_finalizations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_finalizations_issue_company_fk": { "name": "native_run_finalizations_issue_company_fk", "tableFrom": "native_run_finalizations", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_finalizations_run_owner_fk": { "name": "native_run_finalizations_run_owner_fk", "tableFrom": "native_run_finalizations", - "tableTo": "heartbeat_runs", "columnsFrom": [ "company_id", "issue_id", "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "company_id", "native_issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_finalizations_result_owner_fk": { "name": "native_run_finalizations_result_owner_fk", "tableFrom": "native_run_finalizations", - "tableTo": "native_run_results", "columnsFrom": [ "company_id", "issue_id", "run_id", "result_id" ], + "tableTo": "native_run_results", "columnsTo": [ "company_id", "issue_id", "run_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_finalizations_assessment_owner_fk": { "name": "native_run_finalizations_assessment_owner_fk", "tableFrom": "native_run_finalizations", - "tableTo": "work_assessments", "columnsFrom": [ "company_id", "issue_id", "run_id", "assessment_id" ], + "tableTo": "work_assessments", "columnsTo": [ "company_id", "issue_id", "run_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_finalizations_decision_owner_fk": { "name": "native_run_finalizations_decision_owner_fk", "tableFrom": "native_run_finalizations", - "tableTo": "status_decisions", "columnsFrom": [ "company_id", "issue_id", @@ -41307,6 +41306,7 @@ "assessment_id", "decision_id" ], + "tableTo": "status_decisions", "columnsTo": [ "company_id", "issue_id", @@ -41314,8 +41314,8 @@ "assessment_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -41442,9 +41442,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "native_run_results_run_caller_result_uq": { "name": "native_run_results_run_caller_result_uq", @@ -41463,9 +41463,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "native_run_results_run_caller_dedupe_uq": { "name": "native_run_results_run_caller_dedupe_uq", @@ -41484,88 +41484,88 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "native_run_results_company_id_companies_id_fk": { "name": "native_run_results_company_id_companies_id_fk", "tableFrom": "native_run_results", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_results_issue_company_fk": { "name": "native_run_results_issue_company_fk", "tableFrom": "native_run_results", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_results_run_contract_owner_fk": { "name": "native_run_results_run_contract_owner_fk", "tableFrom": "native_run_results", - "tableTo": "heartbeat_runs", "columnsFrom": [ "company_id", "issue_id", "run_id", "completion_contract_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "company_id", "native_issue_id", "id", "completion_contract_id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "native_run_results_completion_contract_owner_fk": { "name": "native_run_results_completion_contract_owner_fk", "tableFrom": "native_run_results", - "tableTo": "completion_contracts", "columnsFrom": [ "company_id", "issue_id", "completion_contract_id" ], + "tableTo": "completion_contracts", "columnsTo": [ "company_id", "issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "native_run_results_company_issue_run_id_uq": { "name": "native_run_results_company_issue_run_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "issue_id", "run_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -41683,9 +41683,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_automation_executions_company_case_idx": { "name": "pipeline_automation_executions_company_case_idx", @@ -41704,9 +41704,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_automation_executions_routine_idx": { "name": "pipeline_automation_executions_routine_idx", @@ -41719,9 +41719,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_automation_executions_execution_issue_idx": { "name": "pipeline_automation_executions_execution_issue_idx", @@ -41734,9 +41734,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_automation_executions_retry_of_execution_idx": { "name": "pipeline_automation_executions_retry_of_execution_idx", @@ -41749,63 +41749,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_automation_executions_company_id_companies_id_fk": { "name": "pipeline_automation_executions_company_id_companies_id_fk", "tableFrom": "pipeline_automation_executions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_automation_executions_case_id_pipeline_cases_id_fk": { "name": "pipeline_automation_executions_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_automation_executions", - "tableTo": "pipeline_cases", "columnsFrom": [ "case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_automation_executions_routine_id_routines_id_fk": { "name": "pipeline_automation_executions_routine_id_routines_id_fk", "tableFrom": "pipeline_automation_executions", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_automation_executions_execution_issue_id_issues_id_fk": { "name": "pipeline_automation_executions_execution_issue_id_issues_id_fk", "tableFrom": "pipeline_automation_executions", - "tableTo": "issues", "columnsFrom": [ "execution_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -41881,9 +41881,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_blockers_blocked_by_idx": { "name": "pipeline_case_blockers_blocked_by_idx", @@ -41896,9 +41896,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_blockers_company_case_idx": { "name": "pipeline_case_blockers_company_case_idx", @@ -41917,50 +41917,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_case_blockers_company_id_companies_id_fk": { "name": "pipeline_case_blockers_company_id_companies_id_fk", "tableFrom": "pipeline_case_blockers", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_blockers_case_id_pipeline_cases_id_fk": { "name": "pipeline_case_blockers_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_case_blockers", - "tableTo": "pipeline_cases", "columnsFrom": [ "case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_blockers_blocked_by_case_id_pipeline_cases_id_fk": { "name": "pipeline_case_blockers_blocked_by_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_case_blockers", - "tableTo": "pipeline_cases", "columnsFrom": [ "blocked_by_case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -42048,9 +42048,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_documents_document_uq": { "name": "pipeline_case_documents_document_uq", @@ -42063,9 +42063,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_documents_company_case_updated_idx": { "name": "pipeline_case_documents_company_case_updated_idx", @@ -42090,50 +42090,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_case_documents_company_id_companies_id_fk": { "name": "pipeline_case_documents_company_id_companies_id_fk", "tableFrom": "pipeline_case_documents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_documents_case_id_pipeline_cases_id_fk": { "name": "pipeline_case_documents_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_case_documents", - "tableTo": "pipeline_cases", "columnsFrom": [ "case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_documents_document_id_documents_id_fk": { "name": "pipeline_case_documents_document_id_documents_id_fk", "tableFrom": "pipeline_case_documents", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -42247,9 +42247,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_events_company_case_idx": { "name": "pipeline_case_events_company_case_idx", @@ -42268,76 +42268,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_case_events_company_id_companies_id_fk": { "name": "pipeline_case_events_company_id_companies_id_fk", "tableFrom": "pipeline_case_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_events_case_id_pipeline_cases_id_fk": { "name": "pipeline_case_events_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_case_events", - "tableTo": "pipeline_cases", "columnsFrom": [ "case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_events_actor_agent_id_agents_id_fk": { "name": "pipeline_case_events_actor_agent_id_agents_id_fk", "tableFrom": "pipeline_case_events", - "tableTo": "agents", "columnsFrom": [ "actor_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "pipeline_case_events_from_stage_id_pipeline_stages_id_fk": { "name": "pipeline_case_events_from_stage_id_pipeline_stages_id_fk", "tableFrom": "pipeline_case_events", - "tableTo": "pipeline_stages", "columnsFrom": [ "from_stage_id" ], + "tableTo": "pipeline_stages", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "pipeline_case_events_to_stage_id_pipeline_stages_id_fk": { "name": "pipeline_case_events_to_stage_id_pipeline_stages_id_fk", "tableFrom": "pipeline_case_events", - "tableTo": "pipeline_stages", "columnsFrom": [ "to_stage_id" ], + "tableTo": "pipeline_stages", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -42457,9 +42457,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_issue_links_issue_idx": { "name": "pipeline_case_issue_links_issue_idx", @@ -42472,9 +42472,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_issue_links_company_case_idx": { "name": "pipeline_case_issue_links_company_case_idx", @@ -42493,9 +42493,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_case_issue_links_automation_attempt_idx": { "name": "pipeline_case_issue_links_automation_attempt_idx", @@ -42508,50 +42508,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_case_issue_links_company_id_companies_id_fk": { "name": "pipeline_case_issue_links_company_id_companies_id_fk", "tableFrom": "pipeline_case_issue_links", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_issue_links_case_id_pipeline_cases_id_fk": { "name": "pipeline_case_issue_links_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_case_issue_links", - "tableTo": "pipeline_cases", "columnsFrom": [ "case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_case_issue_links_issue_id_issues_id_fk": { "name": "pipeline_case_issue_links_issue_id_issues_id_fk", "tableFrom": "pipeline_case_issue_links", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -42793,9 +42793,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_cases_parent_request_key_uq": { "name": "pipeline_cases_parent_request_key_uq", @@ -42814,10 +42814,10 @@ } ], "isUnique": true, - "where": "\"pipeline_cases\".\"request_key\" is not null and \"pipeline_cases\".\"retired_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"pipeline_cases\".\"request_key\" is not null and \"pipeline_cases\".\"retired_at\" is null", + "concurrently": false }, "pipeline_cases_company_idx": { "name": "pipeline_cases_company_idx", @@ -42830,9 +42830,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_cases_pipeline_stage_idx": { "name": "pipeline_cases_pipeline_stage_idx", @@ -42851,9 +42851,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_cases_parent_idx": { "name": "pipeline_cases_parent_idx", @@ -42866,9 +42866,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_cases_automation_attempt_idx": { "name": "pipeline_cases_automation_attempt_idx", @@ -42881,9 +42881,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_cases_retired_idx": { "name": "pipeline_cases_retired_idx", @@ -42902,9 +42902,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_cases_lease_expires_idx": { "name": "pipeline_cases_lease_expires_idx", @@ -42917,90 +42917,90 @@ } ], "isUnique": false, - "where": "\"pipeline_cases\".\"lease_expires_at\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"pipeline_cases\".\"lease_expires_at\" is not null", + "concurrently": false } }, "foreignKeys": { "pipeline_cases_company_id_companies_id_fk": { "name": "pipeline_cases_company_id_companies_id_fk", "tableFrom": "pipeline_cases", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_cases_pipeline_id_pipelines_id_fk": { "name": "pipeline_cases_pipeline_id_pipelines_id_fk", "tableFrom": "pipeline_cases", - "tableTo": "pipelines", "columnsFrom": [ "pipeline_id" ], + "tableTo": "pipelines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_cases_stage_id_pipeline_stages_id_fk": { "name": "pipeline_cases_stage_id_pipeline_stages_id_fk", "tableFrom": "pipeline_cases", - "tableTo": "pipeline_stages", "columnsFrom": [ "stage_id" ], + "tableTo": "pipeline_stages", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "pipeline_cases_parent_case_id_pipeline_cases_id_fk": { "name": "pipeline_cases_parent_case_id_pipeline_cases_id_fk", "tableFrom": "pipeline_cases", - "tableTo": "pipeline_cases", "columnsFrom": [ "parent_case_id" ], + "tableTo": "pipeline_cases", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "pipeline_cases_lease_agent_id_agents_id_fk": { "name": "pipeline_cases_lease_agent_id_agents_id_fk", "tableFrom": "pipeline_cases", - "tableTo": "agents", "columnsFrom": [ "lease_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "pipeline_cases_created_by_agent_id_agents_id_fk": { "name": "pipeline_cases_created_by_agent_id_agents_id_fk", "tableFrom": "pipeline_cases", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -43092,9 +43092,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_documents_document_uq": { "name": "pipeline_documents_document_uq", @@ -43107,9 +43107,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_documents_company_pipeline_updated_idx": { "name": "pipeline_documents_company_pipeline_updated_idx", @@ -43134,50 +43134,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_documents_company_id_companies_id_fk": { "name": "pipeline_documents_company_id_companies_id_fk", "tableFrom": "pipeline_documents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_documents_pipeline_id_pipelines_id_fk": { "name": "pipeline_documents_pipeline_id_pipelines_id_fk", "tableFrom": "pipeline_documents", - "tableTo": "pipelines", "columnsFrom": [ "pipeline_id" ], + "tableTo": "pipelines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_documents_document_id_documents_id_fk": { "name": "pipeline_documents_document_id_documents_id_fk", "tableFrom": "pipeline_documents", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -43267,9 +43267,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_stages_pipeline_position_idx": { "name": "pipeline_stages_pipeline_position_idx", @@ -43288,24 +43288,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_stages_pipeline_id_pipelines_id_fk": { "name": "pipeline_stages_pipeline_id_pipelines_id_fk", "tableFrom": "pipeline_stages", - "tableTo": "pipelines", "columnsFrom": [ "pipeline_id" ], + "tableTo": "pipelines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -43393,9 +43393,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_transitions_pipeline_from_idx": { "name": "pipeline_transitions_pipeline_from_idx", @@ -43414,9 +43414,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipeline_transitions_pipeline_to_idx": { "name": "pipeline_transitions_pipeline_to_idx", @@ -43435,50 +43435,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipeline_transitions_pipeline_id_pipelines_id_fk": { "name": "pipeline_transitions_pipeline_id_pipelines_id_fk", "tableFrom": "pipeline_transitions", - "tableTo": "pipelines", "columnsFrom": [ "pipeline_id" ], + "tableTo": "pipelines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_transitions_from_stage_id_pipeline_stages_id_fk": { "name": "pipeline_transitions_from_stage_id_pipeline_stages_id_fk", "tableFrom": "pipeline_transitions", - "tableTo": "pipeline_stages", "columnsFrom": [ "from_stage_id" ], + "tableTo": "pipeline_stages", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipeline_transitions_to_stage_id_pipeline_stages_id_fk": { "name": "pipeline_transitions_to_stage_id_pipeline_stages_id_fk", "tableFrom": "pipeline_transitions", - "tableTo": "pipeline_stages", "columnsFrom": [ "to_stage_id" ], + "tableTo": "pipeline_stages", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -43586,9 +43586,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipelines_company_idx": { "name": "pipelines_company_idx", @@ -43601,9 +43601,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "pipelines_company_project_idx": { "name": "pipelines_company_project_idx", @@ -43622,50 +43622,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "pipelines_company_id_companies_id_fk": { "name": "pipelines_company_id_companies_id_fk", "tableFrom": "pipelines", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "pipelines_project_id_projects_id_fk": { "name": "pipelines_project_id_projects_id_fk", "tableFrom": "pipelines", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "pipelines_created_by_agent_id_agents_id_fk": { "name": "pipelines_created_by_agent_id_agents_id_fk", "tableFrom": "pipelines", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -43744,9 +43744,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_company_settings_plugin_idx": { "name": "plugin_company_settings_plugin_idx", @@ -43759,9 +43759,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_company_settings_company_plugin_uq": { "name": "plugin_company_settings_company_plugin_uq", @@ -43780,37 +43780,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_company_settings_company_id_companies_id_fk": { "name": "plugin_company_settings_company_id_companies_id_fk", "tableFrom": "plugin_company_settings", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_company_settings_plugin_id_plugins_id_fk": { "name": "plugin_company_settings_plugin_id_plugins_id_fk", "tableFrom": "plugin_company_settings", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -43888,37 +43888,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_config_plugin_id_plugins_id_fk": { "name": "plugin_config_plugin_id_plugins_id_fk", "tableFrom": "plugin_config", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_config_company_id_companies_id_fk": { "name": "plugin_config_company_id_companies_id_fk", "tableFrom": "plugin_config", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -43997,9 +43997,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_database_namespaces_namespace_idx": { "name": "plugin_database_namespaces_namespace_idx", @@ -44012,9 +44012,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_database_namespaces_status_idx": { "name": "plugin_database_namespaces_status_idx", @@ -44027,24 +44027,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_database_namespaces_plugin_id_plugins_id_fk": { "name": "plugin_database_namespaces_plugin_id_plugins_id_fk", "tableFrom": "plugin_database_namespaces", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -44146,9 +44146,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_entities_company_idx": { "name": "plugin_entities_company_idx", @@ -44161,9 +44161,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_entities_type_idx": { "name": "plugin_entities_type_idx", @@ -44176,9 +44176,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_entities_scope_idx": { "name": "plugin_entities_scope_idx", @@ -44197,50 +44197,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_entities_plugin_id_plugins_id_fk": { "name": "plugin_entities_plugin_id_plugins_id_fk", "tableFrom": "plugin_entities", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_entities_company_id_companies_id_fk": { "name": "plugin_entities_company_id_companies_id_fk", "tableFrom": "plugin_entities", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "plugin_entities_external_idx": { "name": "plugin_entities_external_idx", - "nullsNotDistinct": true, "columns": [ "company_id", "plugin_id", "entity_type", "external_id" - ] + ], + "nullsNotDistinct": true } }, "policies": {}, @@ -44340,9 +44340,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_job_runs_plugin_idx": { "name": "plugin_job_runs_plugin_idx", @@ -44355,9 +44355,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_job_runs_company_idx": { "name": "plugin_job_runs_company_idx", @@ -44370,9 +44370,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_job_runs_status_idx": { "name": "plugin_job_runs_status_idx", @@ -44385,50 +44385,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_job_runs_job_id_plugin_jobs_id_fk": { "name": "plugin_job_runs_job_id_plugin_jobs_id_fk", "tableFrom": "plugin_job_runs", - "tableTo": "plugin_jobs", "columnsFrom": [ "job_id" ], + "tableTo": "plugin_jobs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_job_runs_plugin_id_plugins_id_fk": { "name": "plugin_job_runs_plugin_id_plugins_id_fk", "tableFrom": "plugin_job_runs", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_job_runs_company_id_companies_id_fk": { "name": "plugin_job_runs_company_id_companies_id_fk", "tableFrom": "plugin_job_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -44512,9 +44512,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_jobs_next_run_idx": { "name": "plugin_jobs_next_run_idx", @@ -44527,9 +44527,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_jobs_unique_idx": { "name": "plugin_jobs_unique_idx", @@ -44548,24 +44548,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_jobs_plugin_id_plugins_id_fk": { "name": "plugin_jobs_plugin_id_plugins_id_fk", "tableFrom": "plugin_jobs", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -44610,37 +44610,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_lifecycle_acknowledgments_plugin_id_plugins_id_fk": { "name": "plugin_lifecycle_acknowledgments_plugin_id_plugins_id_fk", "tableFrom": "plugin_lifecycle_acknowledgments", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_lifecycle_acknowledgments_event_id_resource_lifecycle_events_id_fk": { "name": "plugin_lifecycle_acknowledgments_event_id_resource_lifecycle_events_id_fk", "tableFrom": "plugin_lifecycle_acknowledgments", - "tableTo": "resource_lifecycle_events", "columnsFrom": [ "event_id" ], + "tableTo": "resource_lifecycle_events", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": { @@ -44725,9 +44725,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_logs_company_idx": { "name": "plugin_logs_company_idx", @@ -44740,9 +44740,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_logs_level_idx": { "name": "plugin_logs_level_idx", @@ -44755,37 +44755,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_logs_plugin_id_plugins_id_fk": { "name": "plugin_logs_plugin_id_plugins_id_fk", "tableFrom": "plugin_logs", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_logs_company_id_companies_id_fk": { "name": "plugin_logs_company_id_companies_id_fk", "tableFrom": "plugin_logs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -44875,9 +44875,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_managed_resources_plugin_idx": { "name": "plugin_managed_resources_plugin_idx", @@ -44890,9 +44890,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_managed_resources_resource_idx": { "name": "plugin_managed_resources_resource_idx", @@ -44911,9 +44911,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_managed_resources_company_plugin_resource_uq": { "name": "plugin_managed_resources_company_plugin_resource_uq", @@ -44944,37 +44944,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_managed_resources_company_id_companies_id_fk": { "name": "plugin_managed_resources_company_id_companies_id_fk", "tableFrom": "plugin_managed_resources", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_managed_resources_plugin_id_plugins_id_fk": { "name": "plugin_managed_resources_plugin_id_plugins_id_fk", "tableFrom": "plugin_managed_resources", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -45074,9 +45074,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_migrations_plugin_idx": { "name": "plugin_migrations_plugin_idx", @@ -45089,9 +45089,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_migrations_status_idx": { "name": "plugin_migrations_status_idx", @@ -45104,24 +45104,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_migrations_plugin_id_plugins_id_fk": { "name": "plugin_migrations_plugin_id_plugins_id_fk", "tableFrom": "plugin_migrations", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -45204,38 +45204,38 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_state_plugin_id_plugins_id_fk": { "name": "plugin_state_plugin_id_plugins_id_fk", "tableFrom": "plugin_state", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "plugin_state_unique_entry_idx": { "name": "plugin_state_unique_entry_idx", - "nullsNotDistinct": true, "columns": [ "plugin_id", "scope_kind", "scope_id", "namespace", "state_key" - ] + ], + "nullsNotDistinct": true } }, "policies": {}, @@ -45341,9 +45341,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_webhook_deliveries_company_idx": { "name": "plugin_webhook_deliveries_company_idx", @@ -45356,9 +45356,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_webhook_deliveries_status_idx": { "name": "plugin_webhook_deliveries_status_idx", @@ -45371,9 +45371,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugin_webhook_deliveries_key_idx": { "name": "plugin_webhook_deliveries_key_idx", @@ -45386,37 +45386,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "plugin_webhook_deliveries_plugin_id_plugins_id_fk": { "name": "plugin_webhook_deliveries_plugin_id_plugins_id_fk", "tableFrom": "plugin_webhook_deliveries", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "plugin_webhook_deliveries_company_id_companies_id_fk": { "name": "plugin_webhook_deliveries_company_id_companies_id_fk", "tableFrom": "plugin_webhook_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -45526,9 +45526,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "plugins_status_idx": { "name": "plugins_status_idx", @@ -45541,9 +45541,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": {}, @@ -45645,9 +45645,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "principal_permission_grants_company_permission_idx": { "name": "principal_permission_grants_company_permission_idx", @@ -45666,24 +45666,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "principal_permission_grants_company_id_companies_id_fk": { "name": "principal_permission_grants_company_id_companies_id_fk", "tableFrom": "principal_permission_grants", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -45759,9 +45759,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_access_members_subject_lookup_idx": { "name": "project_access_members_subject_lookup_idx", @@ -45792,37 +45792,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "project_access_members_company_id_companies_id_fk": { "name": "project_access_members_company_id_companies_id_fk", "tableFrom": "project_access_members", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "project_access_members_project_id_projects_id_fk": { "name": "project_access_members_project_id_projects_id_fk", "tableFrom": "project_access_members", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -45885,9 +45885,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_goals_goal_idx": { "name": "project_goals_goal_idx", @@ -45900,9 +45900,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_goals_company_idx": { "name": "project_goals_company_idx", @@ -45915,50 +45915,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "project_goals_project_id_projects_id_fk": { "name": "project_goals_project_id_projects_id_fk", "tableFrom": "project_goals", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "project_goals_goal_id_goals_id_fk": { "name": "project_goals_goal_id_goals_id_fk", "tableFrom": "project_goals", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "project_goals_company_id_companies_id_fk": { "name": "project_goals_company_id_companies_id_fk", "tableFrom": "project_goals", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": { @@ -46050,9 +46050,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_memberships_company_user_starred_idx": { "name": "project_memberships_company_user_starred_idx", @@ -46077,9 +46077,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_memberships_project_idx": { "name": "project_memberships_project_idx", @@ -46092,9 +46092,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_memberships_company_user_project_uq": { "name": "project_memberships_company_user_project_uq", @@ -46119,37 +46119,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "project_memberships_company_id_companies_id_fk": { "name": "project_memberships_company_id_companies_id_fk", "tableFrom": "project_memberships", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "project_memberships_project_id_projects_id_fk": { "name": "project_memberships_project_id_projects_id_fk", "tableFrom": "project_memberships", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -46301,9 +46301,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_workspaces_project_primary_idx": { "name": "project_workspaces_project_primary_idx", @@ -46322,9 +46322,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_workspaces_project_source_type_idx": { "name": "project_workspaces_project_source_type_idx", @@ -46343,9 +46343,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_workspaces_company_shared_key_idx": { "name": "project_workspaces_company_shared_key_idx", @@ -46364,9 +46364,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "project_workspaces_project_remote_ref_idx": { "name": "project_workspaces_project_remote_ref_idx", @@ -46391,37 +46391,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "project_workspaces_company_id_companies_id_fk": { "name": "project_workspaces_company_id_companies_id_fk", "tableFrom": "project_workspaces", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "project_workspaces_project_id_projects_id_fk": { "name": "project_workspaces_project_id_projects_id_fk", "tableFrom": "project_workspaces", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -46572,9 +46572,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "projects_company_personal_owner_uq": { "name": "projects_company_personal_owner_uq", @@ -46593,51 +46593,51 @@ } ], "isUnique": true, - "where": "\"projects\".\"personal_owner_user_id\" is not null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"projects\".\"personal_owner_user_id\" is not null", + "concurrently": false } }, "foreignKeys": { "projects_company_id_companies_id_fk": { "name": "projects_company_id_companies_id_fk", "tableFrom": "projects", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "projects_goal_id_goals_id_fk": { "name": "projects_goal_id_goals_id_fk", "tableFrom": "projects", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "projects_lead_agent_id_agents_id_fk": { "name": "projects_lead_agent_id_agents_id_fk", "tableFrom": "projects", - "tableTo": "agents", "columnsFrom": [ "lead_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -46764,9 +46764,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "provider_trace_records_expiry_idx": { "name": "provider_trace_records_expiry_idx", @@ -46785,9 +46785,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "provider_trace_records_company_created_idx": { "name": "provider_trace_records_company_created_idx", @@ -46806,37 +46806,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "provider_trace_records_company_id_companies_id_fk": { "name": "provider_trace_records_company_id_companies_id_fk", "tableFrom": "provider_trace_records", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "provider_trace_records_run_id_heartbeat_runs_id_fk": { "name": "provider_trace_records_run_id_heartbeat_runs_id_fk", "tableFrom": "provider_trace_records", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -46947,9 +46947,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "remote_agent_profiles_company_key_uq": { "name": "remote_agent_profiles_company_key_uq", @@ -46968,24 +46968,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "remote_agent_profiles_company_id_companies_id_fk": { "name": "remote_agent_profiles_company_id_companies_id_fk", "tableFrom": "remote_agent_profiles", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -47013,15 +47013,15 @@ "primaryKey": true, "notNull": true, "identity": { - "type": "always", "name": "resource_lifecycle_events_id_seq", - "schema": "public", "increment": "1", - "startWith": "1", "minValue": "1", "maxValue": "9223372036854775807", + "startWith": "1", "cache": "1", - "cycle": false + "cycle": false, + "schema": "public", + "type": "always" } }, "company_id": { @@ -47080,10 +47080,10 @@ } ], "isUnique": true, - "where": "\"resource_lifecycle_events\".\"action\" = 'create'", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"resource_lifecycle_events\".\"action\" = 'create'", + "concurrently": false }, "resource_lifecycle_events_company_idx": { "name": "resource_lifecycle_events_company_idx", @@ -47102,9 +47102,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "resource_lifecycle_events_resource_order_idx": { "name": "resource_lifecycle_events_resource_order_idx", @@ -47135,24 +47135,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "resource_lifecycle_events_company_id_companies_id_fk": { "name": "resource_lifecycle_events_company_id_companies_id_fk", "tableFrom": "resource_lifecycle_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -47244,9 +47244,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_documents_document_uq": { "name": "routine_documents_document_uq", @@ -47259,9 +47259,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_documents_company_routine_updated_idx": { "name": "routine_documents_company_routine_updated_idx", @@ -47286,50 +47286,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "routine_documents_company_id_companies_id_fk": { "name": "routine_documents_company_id_companies_id_fk", "tableFrom": "routine_documents", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "routine_documents_routine_id_routines_id_fk": { "name": "routine_documents_routine_id_routines_id_fk", "tableFrom": "routine_documents", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_documents_document_id_documents_id_fk": { "name": "routine_documents_document_id_documents_id_fk", "tableFrom": "routine_documents", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -47447,9 +47447,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_revisions_company_routine_created_idx": { "name": "routine_revisions_company_routine_created_idx", @@ -47474,9 +47474,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_revisions_company_responsible_user_idx": { "name": "routine_revisions_company_responsible_user_idx", @@ -47501,76 +47501,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "routine_revisions_company_id_companies_id_fk": { "name": "routine_revisions_company_id_companies_id_fk", "tableFrom": "routine_revisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_revisions_routine_id_routines_id_fk": { "name": "routine_revisions_routine_id_routines_id_fk", "tableFrom": "routine_revisions", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_revisions_restored_from_revision_id_routine_revisions_id_fk": { "name": "routine_revisions_restored_from_revision_id_routine_revisions_id_fk", "tableFrom": "routine_revisions", - "tableTo": "routine_revisions", "columnsFrom": [ "restored_from_revision_id" ], + "tableTo": "routine_revisions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routine_revisions_created_by_agent_id_agents_id_fk": { "name": "routine_revisions_created_by_agent_id_agents_id_fk", "tableFrom": "routine_revisions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routine_revisions_created_by_run_id_heartbeat_runs_id_fk": { "name": "routine_revisions_created_by_run_id_heartbeat_runs_id_fk", "tableFrom": "routine_revisions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "created_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -47721,9 +47721,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_runs_revision_idx": { "name": "routine_runs_revision_idx", @@ -47736,9 +47736,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_runs_company_responsible_user_idx": { "name": "routine_runs_company_responsible_user_idx", @@ -47763,9 +47763,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_runs_trigger_idx": { "name": "routine_runs_trigger_idx", @@ -47784,9 +47784,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_runs_dispatch_fingerprint_idx": { "name": "routine_runs_dispatch_fingerprint_idx", @@ -47805,9 +47805,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_runs_linked_issue_idx": { "name": "routine_runs_linked_issue_idx", @@ -47820,9 +47820,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_runs_trigger_idempotency_idx": { "name": "routine_runs_trigger_idempotency_idx", @@ -47841,76 +47841,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "routine_runs_company_id_companies_id_fk": { "name": "routine_runs_company_id_companies_id_fk", "tableFrom": "routine_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_runs_routine_id_routines_id_fk": { "name": "routine_runs_routine_id_routines_id_fk", "tableFrom": "routine_runs", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_runs_trigger_id_routine_triggers_id_fk": { "name": "routine_runs_trigger_id_routine_triggers_id_fk", "tableFrom": "routine_runs", - "tableTo": "routine_triggers", "columnsFrom": [ "trigger_id" ], + "tableTo": "routine_triggers", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routine_runs_routine_revision_id_routine_revisions_id_fk": { "name": "routine_runs_routine_revision_id_routine_revisions_id_fk", "tableFrom": "routine_runs", - "tableTo": "routine_revisions", "columnsFrom": [ "routine_revision_id" ], + "tableTo": "routine_revisions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routine_runs_linked_issue_id_issues_id_fk": { "name": "routine_runs_linked_issue_id_issues_id_fk", "tableFrom": "routine_runs", - "tableTo": "issues", "columnsFrom": [ "linked_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -48098,9 +48098,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_triggers_company_kind_idx": { "name": "routine_triggers_company_kind_idx", @@ -48119,9 +48119,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_triggers_next_run_idx": { "name": "routine_triggers_next_run_idx", @@ -48134,9 +48134,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_triggers_public_id_idx": { "name": "routine_triggers_public_id_idx", @@ -48149,9 +48149,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routine_triggers_public_id_uq": { "name": "routine_triggers_public_id_uq", @@ -48164,76 +48164,76 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "routine_triggers_company_id_companies_id_fk": { "name": "routine_triggers_company_id_companies_id_fk", "tableFrom": "routine_triggers", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_triggers_routine_id_routines_id_fk": { "name": "routine_triggers_routine_id_routines_id_fk", "tableFrom": "routine_triggers", - "tableTo": "routines", "columnsFrom": [ "routine_id" ], + "tableTo": "routines", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_triggers_secret_id_company_secrets_id_fk": { "name": "routine_triggers_secret_id_company_secrets_id_fk", "tableFrom": "routine_triggers", - "tableTo": "company_secrets", "columnsFrom": [ "secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routine_triggers_created_by_agent_id_agents_id_fk": { "name": "routine_triggers_created_by_agent_id_agents_id_fk", "tableFrom": "routine_triggers", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routine_triggers_updated_by_agent_id_agents_id_fk": { "name": "routine_triggers_updated_by_agent_id_agents_id_fk", "tableFrom": "routine_triggers", - "tableTo": "agents", "columnsFrom": [ "updated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -48297,37 +48297,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "routine_webhook_test_receipts_company_id_companies_id_fk": { "name": "routine_webhook_test_receipts_company_id_companies_id_fk", "tableFrom": "routine_webhook_test_receipts", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routine_webhook_test_receipts_trigger_id_routine_triggers_id_fk": { "name": "routine_webhook_test_receipts_trigger_id_routine_triggers_id_fk", "tableFrom": "routine_webhook_test_receipts", - "tableTo": "routine_triggers", "columnsFrom": [ "trigger_id" ], + "tableTo": "routine_triggers", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -48551,9 +48551,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routines_company_assignee_idx": { "name": "routines_company_assignee_idx", @@ -48572,9 +48572,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routines_company_project_idx": { "name": "routines_company_project_idx", @@ -48593,9 +48593,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routines_company_folder_idx": { "name": "routines_company_folder_idx", @@ -48614,9 +48614,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routines_company_responsible_user_idx": { "name": "routines_company_responsible_user_idx", @@ -48635,9 +48635,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "routines_company_origin_idx": { "name": "routines_company_origin_idx", @@ -48662,115 +48662,115 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "routines_company_id_companies_id_fk": { "name": "routines_company_id_companies_id_fk", "tableFrom": "routines", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routines_project_id_projects_id_fk": { "name": "routines_project_id_projects_id_fk", "tableFrom": "routines", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "routines_folder_id_folders_id_fk": { "name": "routines_folder_id_folders_id_fk", "tableFrom": "routines", - "tableTo": "folders", "columnsFrom": [ "folder_id" ], + "tableTo": "folders", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routines_goal_id_goals_id_fk": { "name": "routines_goal_id_goals_id_fk", "tableFrom": "routines", - "tableTo": "goals", "columnsFrom": [ "goal_id" ], + "tableTo": "goals", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routines_parent_issue_id_issues_id_fk": { "name": "routines_parent_issue_id_issues_id_fk", "tableFrom": "routines", - "tableTo": "issues", "columnsFrom": [ "parent_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routines_assignee_agent_id_agents_id_fk": { "name": "routines_assignee_agent_id_agents_id_fk", "tableFrom": "routines", - "tableTo": "agents", "columnsFrom": [ "assignee_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "routines_created_by_agent_id_agents_id_fk": { "name": "routines_created_by_agent_id_agents_id_fk", "tableFrom": "routines", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "routines_updated_by_agent_id_agents_id_fk": { "name": "routines_updated_by_agent_id_agents_id_fk", "tableFrom": "routines", - "tableTo": "agents", "columnsFrom": [ "updated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -48883,9 +48883,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "run_identity_contexts_run_correlation_idx": { "name": "run_identity_contexts_run_correlation_idx", @@ -48904,9 +48904,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "run_identity_contexts_company_run_idx": { "name": "run_identity_contexts_company_run_idx", @@ -48925,24 +48925,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "run_identity_contexts_company_id_companies_id_fk": { "name": "run_identity_contexts_company_id_companies_id_fk", "tableFrom": "run_identity_contexts", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -49006,50 +49006,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "runner_api_response_reservations_company_id_companies_id_fk": { "name": "runner_api_response_reservations_company_id_companies_id_fk", "tableFrom": "runner_api_response_reservations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "runner_api_response_reservations_run_id_heartbeat_runs_id_fk": { "name": "runner_api_response_reservations_run_id_heartbeat_runs_id_fk", "tableFrom": "runner_api_response_reservations", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "runner_api_response_reservations_asset_id_assets_id_fk": { "name": "runner_api_response_reservations_asset_id_assets_id_fk", "tableFrom": "runner_api_response_reservations", - "tableTo": "assets", "columnsFrom": [ "asset_id" ], + "tableTo": "assets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -49216,9 +49216,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "secret_access_events_secret_created_idx": { "name": "secret_access_events_secret_created_idx", @@ -49237,9 +49237,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "secret_access_events_user_definition_created_idx": { "name": "secret_access_events_user_definition_created_idx", @@ -49258,9 +49258,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "secret_access_events_company_credential_owner_idx": { "name": "secret_access_events_company_credential_owner_idx", @@ -49285,9 +49285,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "secret_access_events_consumer_idx": { "name": "secret_access_events_consumer_idx", @@ -49312,9 +49312,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "secret_access_events_run_idx": { "name": "secret_access_events_run_idx", @@ -49327,89 +49327,89 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "secret_access_events_company_id_companies_id_fk": { "name": "secret_access_events_company_id_companies_id_fk", "tableFrom": "secret_access_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "secret_access_events_secret_id_company_secrets_id_fk": { "name": "secret_access_events_secret_id_company_secrets_id_fk", "tableFrom": "secret_access_events", - "tableTo": "company_secrets", "columnsFrom": [ "secret_id" ], + "tableTo": "company_secrets", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "secret_access_events_user_secret_definition_id_user_secret_definitions_id_fk": { "name": "secret_access_events_user_secret_definition_id_user_secret_definitions_id_fk", "tableFrom": "secret_access_events", - "tableTo": "user_secret_definitions", "columnsFrom": [ "user_secret_definition_id" ], + "tableTo": "user_secret_definitions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "secret_access_events_issue_id_issues_id_fk": { "name": "secret_access_events_issue_id_issues_id_fk", "tableFrom": "secret_access_events", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "secret_access_events_heartbeat_run_id_heartbeat_runs_id_fk": { "name": "secret_access_events_heartbeat_run_id_heartbeat_runs_id_fk", "tableFrom": "secret_access_events", - "tableTo": "heartbeat_runs", "columnsFrom": [ "heartbeat_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "secret_access_events_plugin_id_plugins_id_fk": { "name": "secret_access_events_plugin_id_plugins_id_fk", "tableFrom": "secret_access_events", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -49510,9 +49510,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "smoke_run_steps_company_path_idx": { "name": "smoke_run_steps_company_path_idx", @@ -49531,37 +49531,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "smoke_run_steps_company_id_companies_id_fk": { "name": "smoke_run_steps_company_id_companies_id_fk", "tableFrom": "smoke_run_steps", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "smoke_run_steps_run_id_smoke_runs_id_fk": { "name": "smoke_run_steps_run_id_smoke_runs_id_fk", "tableFrom": "smoke_run_steps", - "tableTo": "smoke_runs", "columnsFrom": [ "run_id" ], + "tableTo": "smoke_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -49653,9 +49653,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "smoke_runs_company_status_idx": { "name": "smoke_runs_company_status_idx", @@ -49674,24 +49674,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "smoke_runs_company_id_companies_id_fk": { "name": "smoke_runs_company_id_companies_id_fk", "tableFrom": "smoke_runs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -49831,9 +49831,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "status_card_updates_generation_issue_idx": { "name": "status_card_updates_generation_issue_idx", @@ -49846,50 +49846,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "status_card_updates_card_id_status_cards_id_fk": { "name": "status_card_updates_card_id_status_cards_id_fk", "tableFrom": "status_card_updates", - "tableTo": "status_cards", "columnsFrom": [ "card_id" ], + "tableTo": "status_cards", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "status_card_updates_generation_issue_id_issues_id_fk": { "name": "status_card_updates_generation_issue_id_issues_id_fk", "tableFrom": "status_card_updates", - "tableTo": "issues", "columnsFrom": [ "generation_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "status_card_updates_run_id_heartbeat_runs_id_fk": { "name": "status_card_updates_run_id_heartbeat_runs_id_fk", "tableFrom": "status_card_updates", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -50122,9 +50122,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "status_cards_company_next_eval_idx": { "name": "status_cards_company_next_eval_idx", @@ -50143,102 +50143,102 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "status_cards_company_id_companies_id_fk": { "name": "status_cards_company_id_companies_id_fk", "tableFrom": "status_cards", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "status_cards_created_by_agent_id_agents_id_fk": { "name": "status_cards_created_by_agent_id_agents_id_fk", "tableFrom": "status_cards", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "status_cards_query_compiled_by_agent_id_agents_id_fk": { "name": "status_cards_query_compiled_by_agent_id_agents_id_fk", "tableFrom": "status_cards", - "tableTo": "agents", "columnsFrom": [ "query_compiled_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "status_cards_agent_id_agents_id_fk": { "name": "status_cards_agent_id_agents_id_fk", "tableFrom": "status_cards", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "status_cards_document_id_documents_id_fk": { "name": "status_cards_document_id_documents_id_fk", "tableFrom": "status_cards", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "status_cards_generating_issue_id_issues_id_fk": { "name": "status_cards_generating_issue_id_issues_id_fk", "tableFrom": "status_cards", - "tableTo": "issues", "columnsFrom": [ "generating_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "status_cards_archived_by_agent_id_agents_id_fk": { "name": "status_cards_archived_by_agent_id_agents_id_fk", "tableFrom": "status_cards", - "tableTo": "agents", "columnsFrom": [ "archived_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -50377,9 +50377,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "status_decision_effects_company_idempotency_uq": { "name": "status_decision_effects_company_idempotency_uq", @@ -50398,56 +50398,56 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "status_decision_effects_company_id_companies_id_fk": { "name": "status_decision_effects_company_id_companies_id_fk", "tableFrom": "status_decision_effects", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "status_decision_effects_issue_company_fk": { "name": "status_decision_effects_issue_company_fk", "tableFrom": "status_decision_effects", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "status_decision_effects_decision_owner_fk": { "name": "status_decision_effects_decision_owner_fk", "tableFrom": "status_decision_effects", - "tableTo": "status_decisions", "columnsFrom": [ "company_id", "issue_id", "decision_id" ], + "tableTo": "status_decisions", "columnsTo": [ "company_id", "issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, @@ -50584,9 +50584,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "status_decisions_company_assessment_uq": { "name": "status_decisions_company_assessment_uq", @@ -50605,9 +50605,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "status_decisions_company_issue_digest_uq": { "name": "status_decisions_company_issue_digest_uq", @@ -50632,98 +50632,98 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "status_decisions_company_id_companies_id_fk": { "name": "status_decisions_company_id_companies_id_fk", "tableFrom": "status_decisions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "status_decisions_issue_company_fk": { "name": "status_decisions_issue_company_fk", "tableFrom": "status_decisions", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "status_decisions_assessment_owner_fk": { "name": "status_decisions_assessment_owner_fk", "tableFrom": "status_decisions", - "tableTo": "work_assessments", "columnsFrom": [ "company_id", "issue_id", "run_id", "assessment_id" ], + "tableTo": "work_assessments", "columnsTo": [ "company_id", "issue_id", "run_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "status_decisions_supersedes_owner_fk": { "name": "status_decisions_supersedes_owner_fk", "tableFrom": "status_decisions", - "tableTo": "status_decisions", "columnsFrom": [ "company_id", "issue_id", "supersedes_decision_id" ], + "tableTo": "status_decisions", "columnsTo": [ "company_id", "issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "status_decisions_company_issue_id_uq": { "name": "status_decisions_company_issue_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "issue_id", "id" - ] + ], + "nullsNotDistinct": false }, "status_decisions_company_issue_run_assessment_id_uq": { "name": "status_decisions_company_issue_run_assessment_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "issue_id", "run_id", "assessment_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -50835,9 +50835,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "summary_slots_company_scope_idx": { "name": "summary_slots_company_scope_idx", @@ -50862,9 +50862,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "summary_slots_company_generating_issue_idx": { "name": "summary_slots_company_generating_issue_idx", @@ -50883,9 +50883,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "summary_slots_company_updated_idx": { "name": "summary_slots_company_updated_idx", @@ -50904,76 +50904,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "summary_slots_company_id_companies_id_fk": { "name": "summary_slots_company_id_companies_id_fk", "tableFrom": "summary_slots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "summary_slots_document_id_documents_id_fk": { "name": "summary_slots_document_id_documents_id_fk", "tableFrom": "summary_slots", - "tableTo": "documents", "columnsFrom": [ "document_id" ], + "tableTo": "documents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "summary_slots_generating_issue_id_issues_id_fk": { "name": "summary_slots_generating_issue_id_issues_id_fk", "tableFrom": "summary_slots", - "tableTo": "issues", "columnsFrom": [ "generating_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "summary_slots_last_generated_by_agent_id_agents_id_fk": { "name": "summary_slots_last_generated_by_agent_id_agents_id_fk", "tableFrom": "summary_slots", - "tableTo": "agents", "columnsFrom": [ "last_generated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "summary_slots_company_scope_slot_uq": { "name": "summary_slots_company_scope_slot_uq", - "nullsNotDistinct": true, "columns": [ "company_id", "scope_kind", "scope_id", "slot_key" - ] + ], + "nullsNotDistinct": true } }, "policies": {}, @@ -51103,9 +51103,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_access_audit_connection_idx": { "name": "tool_access_audit_connection_idx", @@ -51118,9 +51118,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_access_audit_gateway_idx": { "name": "tool_access_audit_gateway_idx", @@ -51139,76 +51139,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_access_audit_events_company_id_companies_id_fk": { "name": "tool_access_audit_events_company_id_companies_id_fk", "tableFrom": "tool_access_audit_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_access_audit_events_gateway_id_tool_mcp_gateways_id_fk": { "name": "tool_access_audit_events_gateway_id_tool_mcp_gateways_id_fk", "tableFrom": "tool_access_audit_events", - "tableTo": "tool_mcp_gateways", "columnsFrom": [ "gateway_id" ], + "tableTo": "tool_mcp_gateways", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_access_audit_events_gateway_token_id_tool_mcp_gateway_tokens_id_fk": { "name": "tool_access_audit_events_gateway_token_id_tool_mcp_gateway_tokens_id_fk", "tableFrom": "tool_access_audit_events", - "tableTo": "tool_mcp_gateway_tokens", "columnsFrom": [ "gateway_token_id" ], + "tableTo": "tool_mcp_gateway_tokens", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_access_audit_events_connection_id_tool_connections_id_fk": { "name": "tool_access_audit_events_connection_id_tool_connections_id_fk", "tableFrom": "tool_access_audit_events", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_access_audit_events_catalog_entry_id_tool_catalog_entries_id_fk": { "name": "tool_access_audit_events_catalog_entry_id_tool_catalog_entries_id_fk", "tableFrom": "tool_access_audit_events", - "tableTo": "tool_catalog_entries", "columnsFrom": [ "catalog_entry_id" ], + "tableTo": "tool_catalog_entries", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -51277,63 +51277,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_action_deliveries_action_request_id_tool_action_requests_id_fk": { "name": "tool_action_deliveries_action_request_id_tool_action_requests_id_fk", "tableFrom": "tool_action_deliveries", - "tableTo": "tool_action_requests", "columnsFrom": [ "action_request_id" ], + "tableTo": "tool_action_requests", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_action_deliveries_company_id_companies_id_fk": { "name": "tool_action_deliveries_company_id_companies_id_fk", "tableFrom": "tool_action_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_action_deliveries_issue_id_issues_id_fk": { "name": "tool_action_deliveries_issue_id_issues_id_fk", "tableFrom": "tool_action_deliveries", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_action_deliveries_interaction_id_issue_thread_interactions_id_fk": { "name": "tool_action_deliveries_interaction_id_issue_thread_interactions_id_fk", "tableFrom": "tool_action_deliveries", - "tableTo": "issue_thread_interactions", "columnsFrom": [ "interaction_id" ], + "tableTo": "issue_thread_interactions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -51501,9 +51501,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_action_requests_invocation_idx": { "name": "tool_action_requests_invocation_idx", @@ -51516,9 +51516,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_action_requests_issue_idx": { "name": "tool_action_requests_issue_idx", @@ -51537,115 +51537,115 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_action_requests_company_id_companies_id_fk": { "name": "tool_action_requests_company_id_companies_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_action_requests_invocation_id_tool_invocations_id_fk": { "name": "tool_action_requests_invocation_id_tool_invocations_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "tool_invocations", "columnsFrom": [ "invocation_id" ], + "tableTo": "tool_invocations", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_action_requests_issue_id_issues_id_fk": { "name": "tool_action_requests_issue_id_issues_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_action_requests_interaction_id_issue_thread_interactions_id_fk": { "name": "tool_action_requests_interaction_id_issue_thread_interactions_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "issue_thread_interactions", "columnsFrom": [ "interaction_id" ], + "tableTo": "issue_thread_interactions", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_action_requests_approval_id_approvals_id_fk": { "name": "tool_action_requests_approval_id_approvals_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "approvals", "columnsFrom": [ "approval_id" ], + "tableTo": "approvals", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_action_requests_requested_by_agent_id_agents_id_fk": { "name": "tool_action_requests_requested_by_agent_id_agents_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "agents", "columnsFrom": [ "requested_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_action_requests_resolved_by_agent_id_agents_id_fk": { "name": "tool_action_requests_resolved_by_agent_id_agents_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "agents", "columnsFrom": [ "resolved_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_action_requests_decided_by_agent_id_agents_id_fk": { "name": "tool_action_requests_decided_by_agent_id_agents_id_fk", "tableFrom": "tool_action_requests", - "tableTo": "agents", "columnsFrom": [ "decided_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -51760,9 +51760,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_applications_company_status_idx": { "name": "tool_applications_company_status_idx", @@ -51781,9 +51781,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_applications_company_name_uq": { "name": "tool_applications_company_name_uq", @@ -51802,9 +51802,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_applications_company_key_uq": { "name": "tool_applications_company_key_uq", @@ -51823,50 +51823,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_applications_company_id_companies_id_fk": { "name": "tool_applications_company_id_companies_id_fk", "tableFrom": "tool_applications", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_applications_plugin_id_plugins_id_fk": { "name": "tool_applications_plugin_id_plugins_id_fk", "tableFrom": "tool_applications", - "tableTo": "plugins", "columnsFrom": [ "plugin_id" ], + "tableTo": "plugins", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_applications_owner_agent_id_agents_id_fk": { "name": "tool_applications_owner_agent_id_agents_id_fk", "tableFrom": "tool_applications", - "tableTo": "agents", "columnsFrom": [ "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -52161,9 +52161,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_call_events_run_idx": { "name": "tool_call_events_run_idx", @@ -52182,9 +52182,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_call_events_issue_idx": { "name": "tool_call_events_issue_idx", @@ -52203,9 +52203,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_call_events_invocation_idx": { "name": "tool_call_events_invocation_idx", @@ -52218,9 +52218,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_call_events_gateway_idx": { "name": "tool_call_events_gateway_idx", @@ -52239,167 +52239,167 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_call_events_company_id_companies_id_fk": { "name": "tool_call_events_company_id_companies_id_fk", "tableFrom": "tool_call_events", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_call_events_agent_id_agents_id_fk": { "name": "tool_call_events_agent_id_agents_id_fk", "tableFrom": "tool_call_events", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_run_id_heartbeat_runs_id_fk": { "name": "tool_call_events_run_id_heartbeat_runs_id_fk", "tableFrom": "tool_call_events", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_issue_id_issues_id_fk": { "name": "tool_call_events_issue_id_issues_id_fk", "tableFrom": "tool_call_events", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_gateway_id_tool_mcp_gateways_id_fk": { "name": "tool_call_events_gateway_id_tool_mcp_gateways_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_mcp_gateways", "columnsFrom": [ "gateway_id" ], + "tableTo": "tool_mcp_gateways", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_gateway_token_id_tool_mcp_gateway_tokens_id_fk": { "name": "tool_call_events_gateway_token_id_tool_mcp_gateway_tokens_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_mcp_gateway_tokens", "columnsFrom": [ "gateway_token_id" ], + "tableTo": "tool_mcp_gateway_tokens", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_application_id_tool_applications_id_fk": { "name": "tool_call_events_application_id_tool_applications_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_connection_id_tool_connections_id_fk": { "name": "tool_call_events_connection_id_tool_connections_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_catalog_entry_id_tool_catalog_entries_id_fk": { "name": "tool_call_events_catalog_entry_id_tool_catalog_entries_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_catalog_entries", "columnsFrom": [ "catalog_entry_id" ], + "tableTo": "tool_catalog_entries", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_invocation_id_tool_invocations_id_fk": { "name": "tool_call_events_invocation_id_tool_invocations_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_invocations", "columnsFrom": [ "invocation_id" ], + "tableTo": "tool_invocations", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_action_request_id_tool_action_requests_id_fk": { "name": "tool_call_events_action_request_id_tool_action_requests_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_action_requests", "columnsFrom": [ "action_request_id" ], + "tableTo": "tool_action_requests", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_call_events_runtime_slot_id_tool_runtime_slots_id_fk": { "name": "tool_call_events_runtime_slot_id_tool_runtime_slots_id_fk", "tableFrom": "tool_call_events", - "tableTo": "tool_runtime_slots", "columnsFrom": [ "runtime_slot_id" ], + "tableTo": "tool_runtime_slots", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -52612,9 +52612,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_catalog_entries_application_idx": { "name": "tool_catalog_entries_application_idx", @@ -52627,9 +52627,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_catalog_entries_connection_idx": { "name": "tool_catalog_entries_connection_idx", @@ -52642,9 +52642,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_catalog_entries_company_status_idx": { "name": "tool_catalog_entries_company_status_idx", @@ -52663,9 +52663,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_catalog_entries_connection_name_uq": { "name": "tool_catalog_entries_connection_name_uq", @@ -52684,63 +52684,63 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_catalog_entries_company_id_companies_id_fk": { "name": "tool_catalog_entries_company_id_companies_id_fk", "tableFrom": "tool_catalog_entries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_catalog_entries_application_id_tool_applications_id_fk": { "name": "tool_catalog_entries_application_id_tool_applications_id_fk", "tableFrom": "tool_catalog_entries", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_catalog_entries_connection_id_tool_connections_id_fk": { "name": "tool_catalog_entries_connection_id_tool_connections_id_fk", "tableFrom": "tool_catalog_entries", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_catalog_entries_reviewed_by_agent_id_agents_id_fk": { "name": "tool_catalog_entries_reviewed_by_agent_id_agents_id_fk", "tableFrom": "tool_catalog_entries", - "tableTo": "agents", "columnsFrom": [ "reviewed_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -52847,39 +52847,39 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_connection_app_snapshots_company_id_companies_id_fk": { "name": "tool_connection_app_snapshots_company_id_companies_id_fk", "tableFrom": "tool_connection_app_snapshots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_connection_app_snapshots_company_connection_fk": { "name": "tool_connection_app_snapshots_company_connection_fk", "tableFrom": "tool_connection_app_snapshots", - "tableTo": "tool_connections", "columnsFrom": [ "company_id", "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -53000,39 +53000,39 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_connection_app_syncs_company_id_companies_id_fk": { "name": "tool_connection_app_syncs_company_id_companies_id_fk", "tableFrom": "tool_connection_app_syncs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_connection_app_syncs_company_connection_fk": { "name": "tool_connection_app_syncs_company_connection_fk", "tableFrom": "tool_connection_app_syncs", - "tableTo": "tool_connections", "columnsFrom": [ "company_id", "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "company_id", "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -53120,9 +53120,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_connection_installs_connection_idx": { "name": "tool_connection_installs_connection_idx", @@ -53141,9 +53141,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_connection_installs_target_uq": { "name": "tool_connection_installs_target_uq", @@ -53174,50 +53174,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_connection_installs_company_id_companies_id_fk": { "name": "tool_connection_installs_company_id_companies_id_fk", "tableFrom": "tool_connection_installs", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_connection_installs_connection_id_tool_connections_id_fk": { "name": "tool_connection_installs_connection_id_tool_connections_id_fk", "tableFrom": "tool_connection_installs", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_connection_installs_created_by_agent_id_agents_id_fk": { "name": "tool_connection_installs_created_by_agent_id_agents_id_fk", "tableFrom": "tool_connection_installs", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -53444,9 +53444,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_connections_application_idx": { "name": "tool_connections_application_idx", @@ -53459,9 +53459,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_connections_company_enabled_idx": { "name": "tool_connections_company_enabled_idx", @@ -53480,9 +53480,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_connections_company_uid_uq": { "name": "tool_connections_company_uid_uq", @@ -53501,61 +53501,61 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_connections_company_id_companies_id_fk": { "name": "tool_connections_company_id_companies_id_fk", "tableFrom": "tool_connections", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_connections_application_id_tool_applications_id_fk": { "name": "tool_connections_application_id_tool_applications_id_fk", "tableFrom": "tool_connections", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "tool_connections_created_by_agent_id_agents_id_fk": { "name": "tool_connections_created_by_agent_id_agents_id_fk", "tableFrom": "tool_connections", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "tool_connections_company_id_uq": { "name": "tool_connections_company_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -53676,9 +53676,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_gateway_rate_limit_counters_window_uq": { "name": "tool_gateway_rate_limit_counters_window_uq", @@ -53703,24 +53703,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_gateway_rate_limit_counters_company_id_companies_id_fk": { "name": "tool_gateway_rate_limit_counters_company_id_companies_id_fk", "tableFrom": "tool_gateway_rate_limit_counters", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -53869,9 +53869,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_gateway_sessions_company_agent_idx": { "name": "tool_gateway_sessions_company_agent_idx", @@ -53890,9 +53890,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_gateway_sessions_company_expires_idx": { "name": "tool_gateway_sessions_company_expires_idx", @@ -53911,9 +53911,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_gateway_sessions_run_idx": { "name": "tool_gateway_sessions_run_idx", @@ -53932,9 +53932,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_gateway_sessions_issue_idx": { "name": "tool_gateway_sessions_issue_idx", @@ -53953,9 +53953,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_gateway_sessions_gateway_idx": { "name": "tool_gateway_sessions_gateway_idx", @@ -53974,102 +53974,102 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_gateway_sessions_company_id_companies_id_fk": { "name": "tool_gateway_sessions_company_id_companies_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_gateway_sessions_agent_id_agents_id_fk": { "name": "tool_gateway_sessions_agent_id_agents_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_gateway_sessions_run_id_heartbeat_runs_id_fk": { "name": "tool_gateway_sessions_run_id_heartbeat_runs_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_gateway_sessions_issue_id_issues_id_fk": { "name": "tool_gateway_sessions_issue_id_issues_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_gateway_sessions_project_id_projects_id_fk": { "name": "tool_gateway_sessions_project_id_projects_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_gateway_sessions_gateway_id_tool_mcp_gateways_id_fk": { "name": "tool_gateway_sessions_gateway_id_tool_mcp_gateways_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "tool_mcp_gateways", "columnsFrom": [ "gateway_id" ], + "tableTo": "tool_mcp_gateways", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_gateway_sessions_gateway_token_id_tool_mcp_gateway_tokens_id_fk": { "name": "tool_gateway_sessions_gateway_token_id_tool_mcp_gateway_tokens_id_fk", "tableFrom": "tool_gateway_sessions", - "tableTo": "tool_mcp_gateway_tokens", "columnsFrom": [ "gateway_token_id" ], + "tableTo": "tool_mcp_gateway_tokens", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -54384,9 +54384,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_invocations_run_idx": { "name": "tool_invocations_run_idx", @@ -54405,9 +54405,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_invocations_issue_idx": { "name": "tool_invocations_issue_idx", @@ -54426,9 +54426,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_invocations_gateway_idx": { "name": "tool_invocations_gateway_idx", @@ -54447,9 +54447,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_invocations_company_idempotency_uq": { "name": "tool_invocations_company_idempotency_uq", @@ -54468,128 +54468,128 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_invocations_company_id_companies_id_fk": { "name": "tool_invocations_company_id_companies_id_fk", "tableFrom": "tool_invocations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_invocations_agent_id_agents_id_fk": { "name": "tool_invocations_agent_id_agents_id_fk", "tableFrom": "tool_invocations", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_issue_id_issues_id_fk": { "name": "tool_invocations_issue_id_issues_id_fk", "tableFrom": "tool_invocations", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_run_id_heartbeat_runs_id_fk": { "name": "tool_invocations_run_id_heartbeat_runs_id_fk", "tableFrom": "tool_invocations", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_gateway_id_tool_mcp_gateways_id_fk": { "name": "tool_invocations_gateway_id_tool_mcp_gateways_id_fk", "tableFrom": "tool_invocations", - "tableTo": "tool_mcp_gateways", "columnsFrom": [ "gateway_id" ], + "tableTo": "tool_mcp_gateways", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_gateway_token_id_tool_mcp_gateway_tokens_id_fk": { "name": "tool_invocations_gateway_token_id_tool_mcp_gateway_tokens_id_fk", "tableFrom": "tool_invocations", - "tableTo": "tool_mcp_gateway_tokens", "columnsFrom": [ "gateway_token_id" ], + "tableTo": "tool_mcp_gateway_tokens", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_application_id_tool_applications_id_fk": { "name": "tool_invocations_application_id_tool_applications_id_fk", "tableFrom": "tool_invocations", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_connection_id_tool_connections_id_fk": { "name": "tool_invocations_connection_id_tool_connections_id_fk", "tableFrom": "tool_invocations", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_invocations_catalog_entry_id_tool_catalog_entries_id_fk": { "name": "tool_invocations_catalog_entry_id_tool_catalog_entries_id_fk", "tableFrom": "tool_invocations", - "tableTo": "tool_catalog_entries", "columnsFrom": [ "catalog_entry_id" ], + "tableTo": "tool_catalog_entries", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -54755,9 +54755,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateway_tokens_expiry_idx": { "name": "tool_mcp_gateway_tokens_expiry_idx", @@ -54776,9 +54776,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateway_tokens_gateway_idx": { "name": "tool_mcp_gateway_tokens_gateway_idx", @@ -54797,9 +54797,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateway_tokens_subject_idx": { "name": "tool_mcp_gateway_tokens_subject_idx", @@ -54824,9 +54824,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateway_tokens_company_expires_idx": { "name": "tool_mcp_gateway_tokens_company_expires_idx", @@ -54845,63 +54845,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_mcp_gateway_tokens_company_id_companies_id_fk": { "name": "tool_mcp_gateway_tokens_company_id_companies_id_fk", "tableFrom": "tool_mcp_gateway_tokens", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_mcp_gateway_tokens_gateway_id_tool_mcp_gateways_id_fk": { "name": "tool_mcp_gateway_tokens_gateway_id_tool_mcp_gateways_id_fk", "tableFrom": "tool_mcp_gateway_tokens", - "tableTo": "tool_mcp_gateways", "columnsFrom": [ "gateway_id" ], + "tableTo": "tool_mcp_gateways", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_mcp_gateway_tokens_expiry_override_by_agent_id_agents_id_fk": { "name": "tool_mcp_gateway_tokens_expiry_override_by_agent_id_agents_id_fk", "tableFrom": "tool_mcp_gateway_tokens", - "tableTo": "agents", "columnsFrom": [ "expiry_override_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_mcp_gateway_tokens_created_by_agent_id_agents_id_fk": { "name": "tool_mcp_gateway_tokens_created_by_agent_id_agents_id_fk", "tableFrom": "tool_mcp_gateway_tokens", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -55096,9 +55096,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateways_company_status_idx": { "name": "tool_mcp_gateways_company_status_idx", @@ -55117,9 +55117,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateways_profile_idx": { "name": "tool_mcp_gateways_profile_idx", @@ -55138,9 +55138,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateways_public_id_uq": { "name": "tool_mcp_gateways_public_id_uq", @@ -55153,9 +55153,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateways_company_slug_uq": { "name": "tool_mcp_gateways_company_slug_uq", @@ -55174,9 +55174,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_mcp_gateways_company_name_uq": { "name": "tool_mcp_gateways_company_name_uq", @@ -55195,102 +55195,102 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_mcp_gateways_company_id_companies_id_fk": { "name": "tool_mcp_gateways_company_id_companies_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_mcp_gateways_profile_id_tool_profiles_id_fk": { "name": "tool_mcp_gateways_profile_id_tool_profiles_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "tool_profiles", "columnsFrom": [ "profile_id" ], + "tableTo": "tool_profiles", "columnsTo": [ "id" ], - "onDelete": "restrict", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "restrict" }, "tool_mcp_gateways_agent_id_agents_id_fk": { "name": "tool_mcp_gateways_agent_id_agents_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_mcp_gateways_project_id_projects_id_fk": { "name": "tool_mcp_gateways_project_id_projects_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_mcp_gateways_issue_id_issues_id_fk": { "name": "tool_mcp_gateways_issue_id_issues_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_mcp_gateways_approval_issue_id_issues_id_fk": { "name": "tool_mcp_gateways_approval_issue_id_issues_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "issues", "columnsFrom": [ "approval_issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_mcp_gateways_created_by_agent_id_agents_id_fk": { "name": "tool_mcp_gateways_created_by_agent_id_agents_id_fk", "tableFrom": "tool_mcp_gateways", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -55407,9 +55407,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_oauth_states_connection_idx": { "name": "tool_oauth_states_connection_idx", @@ -55422,9 +55422,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_oauth_states_actor_idx": { "name": "tool_oauth_states_actor_idx", @@ -55443,9 +55443,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_oauth_states_subject_agent_idx": { "name": "tool_oauth_states_subject_agent_idx", @@ -55464,9 +55464,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_oauth_states_expires_at_idx": { "name": "tool_oauth_states_expires_at_idx", @@ -55479,50 +55479,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_oauth_states_company_id_companies_id_fk": { "name": "tool_oauth_states_company_id_companies_id_fk", "tableFrom": "tool_oauth_states", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_oauth_states_connection_id_tool_connections_id_fk": { "name": "tool_oauth_states_connection_id_tool_connections_id_fk", "tableFrom": "tool_oauth_states", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_oauth_states_subject_agent_id_agents_id_fk": { "name": "tool_oauth_states_subject_agent_id_agents_id_fk", "tableFrom": "tool_oauth_states", - "tableTo": "agents", "columnsFrom": [ "subject_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -55644,9 +55644,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_policies_company_type_idx": { "name": "tool_policies_company_type_idx", @@ -55665,9 +55665,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_policies_company_name_uq": { "name": "tool_policies_company_name_uq", @@ -55686,37 +55686,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_policies_company_id_companies_id_fk": { "name": "tool_policies_company_id_companies_id_fk", "tableFrom": "tool_policies", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_policies_created_by_agent_id_agents_id_fk": { "name": "tool_policies_created_by_agent_id_agents_id_fk", "tableFrom": "tool_policies", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -55825,9 +55825,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_profile_bindings_target_profile_uq": { "name": "tool_profile_bindings_target_profile_uq", @@ -55858,50 +55858,50 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_profile_bindings_company_id_companies_id_fk": { "name": "tool_profile_bindings_company_id_companies_id_fk", "tableFrom": "tool_profile_bindings", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_profile_bindings_profile_id_tool_profiles_id_fk": { "name": "tool_profile_bindings_profile_id_tool_profiles_id_fk", "tableFrom": "tool_profile_bindings", - "tableTo": "tool_profiles", "columnsFrom": [ "profile_id" ], + "tableTo": "tool_profiles", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_profile_bindings_created_by_agent_id_agents_id_fk": { "name": "tool_profile_bindings_created_by_agent_id_agents_id_fk", "tableFrom": "tool_profile_bindings", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -56015,9 +56015,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_profile_entries_application_idx": { "name": "tool_profile_entries_application_idx", @@ -56036,9 +56036,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_profile_entries_connection_idx": { "name": "tool_profile_entries_connection_idx", @@ -56057,9 +56057,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_profile_entries_catalog_entry_idx": { "name": "tool_profile_entries_catalog_entry_idx", @@ -56078,76 +56078,76 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_profile_entries_company_id_companies_id_fk": { "name": "tool_profile_entries_company_id_companies_id_fk", "tableFrom": "tool_profile_entries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_profile_entries_profile_id_tool_profiles_id_fk": { "name": "tool_profile_entries_profile_id_tool_profiles_id_fk", "tableFrom": "tool_profile_entries", - "tableTo": "tool_profiles", "columnsFrom": [ "profile_id" ], + "tableTo": "tool_profiles", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_profile_entries_application_id_tool_applications_id_fk": { "name": "tool_profile_entries_application_id_tool_applications_id_fk", "tableFrom": "tool_profile_entries", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_profile_entries_connection_id_tool_connections_id_fk": { "name": "tool_profile_entries_connection_id_tool_connections_id_fk", "tableFrom": "tool_profile_entries", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_profile_entries_catalog_entry_id_tool_catalog_entries_id_fk": { "name": "tool_profile_entries_catalog_entry_id_tool_catalog_entries_id_fk", "tableFrom": "tool_profile_entries", - "tableTo": "tool_catalog_entries", "columnsFrom": [ "catalog_entry_id" ], + "tableTo": "tool_catalog_entries", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -56251,9 +56251,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_profiles_company_key_uq": { "name": "tool_profiles_company_key_uq", @@ -56272,9 +56272,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_profiles_company_name_uq": { "name": "tool_profiles_company_name_uq", @@ -56293,24 +56293,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_profiles_company_id_companies_id_fk": { "name": "tool_profiles_company_id_companies_id_fk", "tableFrom": "tool_profiles", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -56417,9 +56417,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_rate_limit_counters_window_uq": { "name": "tool_rate_limit_counters_window_uq", @@ -56456,37 +56456,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_rate_limit_counters_company_id_companies_id_fk": { "name": "tool_rate_limit_counters_company_id_companies_id_fk", "tableFrom": "tool_rate_limit_counters", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_rate_limit_counters_policy_id_tool_policies_id_fk": { "name": "tool_rate_limit_counters_policy_id_tool_policies_id_fk", "tableFrom": "tool_rate_limit_counters", - "tableTo": "tool_policies", "columnsFrom": [ "policy_id" ], + "tableTo": "tool_policies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -56570,9 +56570,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_runtime_metric_counters_bucket_uq": { "name": "tool_runtime_metric_counters_bucket_uq", @@ -56597,24 +56597,24 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_runtime_metric_counters_company_id_companies_id_fk": { "name": "tool_runtime_metric_counters_company_id_companies_id_fk", "tableFrom": "tool_runtime_metric_counters", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -56840,9 +56840,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_runtime_slots_connection_idx": { "name": "tool_runtime_slots_connection_idx", @@ -56855,9 +56855,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_runtime_slots_execution_workspace_idx": { "name": "tool_runtime_slots_execution_workspace_idx", @@ -56876,9 +56876,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_runtime_slots_slot_key_uq": { "name": "tool_runtime_slots_slot_key_uq", @@ -56897,89 +56897,89 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_runtime_slots_company_id_companies_id_fk": { "name": "tool_runtime_slots_company_id_companies_id_fk", "tableFrom": "tool_runtime_slots", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_runtime_slots_application_id_tool_applications_id_fk": { "name": "tool_runtime_slots_application_id_tool_applications_id_fk", "tableFrom": "tool_runtime_slots", - "tableTo": "tool_applications", "columnsFrom": [ "application_id" ], + "tableTo": "tool_applications", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_runtime_slots_connection_id_tool_connections_id_fk": { "name": "tool_runtime_slots_connection_id_tool_connections_id_fk", "tableFrom": "tool_runtime_slots", - "tableTo": "tool_connections", "columnsFrom": [ "connection_id" ], + "tableTo": "tool_connections", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_runtime_slots_project_workspace_id_project_workspaces_id_fk": { "name": "tool_runtime_slots_project_workspace_id_project_workspaces_id_fk", "tableFrom": "tool_runtime_slots", - "tableTo": "project_workspaces", "columnsFrom": [ "project_workspace_id" ], + "tableTo": "project_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_runtime_slots_execution_workspace_id_execution_workspaces_id_fk": { "name": "tool_runtime_slots_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "tool_runtime_slots", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "tool_runtime_slots_issue_id_issues_id_fk": { "name": "tool_runtime_slots_issue_id_issues_id_fk", "tableFrom": "tool_runtime_slots", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -57102,9 +57102,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_stdio_command_templates_company_status_idx": { "name": "tool_stdio_command_templates_company_status_idx", @@ -57123,9 +57123,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "tool_stdio_command_templates_company_key_uq": { "name": "tool_stdio_command_templates_company_key_uq", @@ -57144,37 +57144,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "tool_stdio_command_templates_company_id_companies_id_fk": { "name": "tool_stdio_command_templates_company_id_companies_id_fk", "tableFrom": "tool_stdio_command_templates", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "tool_stdio_command_templates_created_by_agent_id_agents_id_fk": { "name": "tool_stdio_command_templates_created_by_agent_id_agents_id_fk", "tableFrom": "tool_stdio_command_templates", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -57252,9 +57252,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_company_preferences_primary_agent_idx": { "name": "user_company_preferences_primary_agent_idx", @@ -57267,37 +57267,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "user_company_preferences_company_id_companies_id_fk": { "name": "user_company_preferences_company_id_companies_id_fk", "tableFrom": "user_company_preferences", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "user_company_preferences_primary_agent_id_agents_id_fk": { "name": "user_company_preferences_primary_agent_id_agents_id_fk", "tableFrom": "user_company_preferences", - "tableTo": "agents", "columnsFrom": [ "primary_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -57376,9 +57376,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_inbox_agent_policies_allowed_agent_ids_idx": { "name": "user_inbox_agent_policies_allowed_agent_ids_idx", @@ -57391,24 +57391,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "gin", - "with": {} + "concurrently": false } }, "foreignKeys": { "user_inbox_agent_policies_company_id_companies_id_fk": { "name": "user_inbox_agent_policies_company_id_companies_id_fk", "tableFrom": "user_inbox_agent_policies", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -57523,9 +57523,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_declarations_definition_idx": { "name": "user_secret_declarations_definition_idx", @@ -57538,9 +57538,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_declarations_target_idx": { "name": "user_secret_declarations_target_idx", @@ -57565,9 +57565,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_declarations_company_required_idx": { "name": "user_secret_declarations_company_required_idx", @@ -57586,9 +57586,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_declarations_target_path_uq": { "name": "user_secret_declarations_target_path_uq", @@ -57619,9 +57619,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_declarations_required_override_idx": { "name": "user_secret_declarations_required_override_idx", @@ -57640,38 +57640,38 @@ } ], "isUnique": false, - "where": "\"user_secret_declarations\".\"allow_missing_override\" = true", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"user_secret_declarations\".\"allow_missing_override\" = true", + "concurrently": false } }, "foreignKeys": { "user_secret_declarations_company_id_companies_id_fk": { "name": "user_secret_declarations_company_id_companies_id_fk", "tableFrom": "user_secret_declarations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "user_secret_declarations_user_secret_definition_id_user_secret_definitions_id_fk": { "name": "user_secret_declarations_user_secret_definition_id_user_secret_definitions_id_fk", "tableFrom": "user_secret_declarations", - "tableTo": "user_secret_definitions", "columnsFrom": [ "user_secret_definition_id" ], + "tableTo": "user_secret_definitions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -57817,9 +57817,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_definitions_company_provider_idx": { "name": "user_secret_definitions_company_provider_idx", @@ -57838,9 +57838,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_definitions_provider_config_idx": { "name": "user_secret_definitions_provider_config_idx", @@ -57853,9 +57853,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "user_secret_definitions_company_key_uq": { "name": "user_secret_definitions_company_key_uq", @@ -57874,64 +57874,64 @@ } ], "isUnique": true, - "where": "\"user_secret_definitions\".\"deleted_at\" is null", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"user_secret_definitions\".\"deleted_at\" is null", + "concurrently": false } }, "foreignKeys": { "user_secret_definitions_company_id_companies_id_fk": { "name": "user_secret_definitions_company_id_companies_id_fk", "tableFrom": "user_secret_definitions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "user_secret_definitions_provider_config_id_company_secret_provider_configs_id_fk": { "name": "user_secret_definitions_provider_config_id_company_secret_provider_configs_id_fk", "tableFrom": "user_secret_definitions", - "tableTo": "company_secret_provider_configs", "columnsFrom": [ "provider_config_id" ], + "tableTo": "company_secret_provider_configs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "user_secret_definitions_created_by_agent_id_agents_id_fk": { "name": "user_secret_definitions_created_by_agent_id_agents_id_fk", "tableFrom": "user_secret_definitions", - "tableTo": "agents", "columnsFrom": [ "created_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "user_secret_definitions_updated_by_agent_id_agents_id_fk": { "name": "user_secret_definitions_updated_by_agent_id_agents_id_fk", "tableFrom": "user_secret_definitions", - "tableTo": "agents", "columnsFrom": [ "updated_by_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -57991,9 +57991,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": {}, @@ -58148,137 +58148,137 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "work_assessments_company_id_companies_id_fk": { "name": "work_assessments_company_id_companies_id_fk", "tableFrom": "work_assessments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "work_assessments_trigger_actor_company_id_companies_id_fk": { "name": "work_assessments_trigger_actor_company_id_companies_id_fk", "tableFrom": "work_assessments", - "tableTo": "companies", "columnsFrom": [ "trigger_actor_company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "work_assessments_issue_company_fk": { "name": "work_assessments_issue_company_fk", "tableFrom": "work_assessments", - "tableTo": "issues", "columnsFrom": [ "company_id", "issue_id" ], + "tableTo": "issues", "columnsTo": [ "company_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "work_assessments_run_owner_fk": { "name": "work_assessments_run_owner_fk", "tableFrom": "work_assessments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "company_id", "issue_id", "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "company_id", "native_issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "work_assessments_contract_owner_fk": { "name": "work_assessments_contract_owner_fk", "tableFrom": "work_assessments", - "tableTo": "completion_contracts", "columnsFrom": [ "company_id", "issue_id", "contract_id" ], + "tableTo": "completion_contracts", "columnsTo": [ "company_id", "issue_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "work_assessments_result_owner_fk": { "name": "work_assessments_result_owner_fk", "tableFrom": "work_assessments", - "tableTo": "native_run_results", "columnsFrom": [ "company_id", "issue_id", "run_id", "result_id" ], + "tableTo": "native_run_results", "columnsTo": [ "company_id", "issue_id", "run_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "work_assessments_supersedes_owner_fk": { "name": "work_assessments_supersedes_owner_fk", "tableFrom": "work_assessments", - "tableTo": "work_assessments", "columnsFrom": [ "company_id", "issue_id", "run_id", "supersedes_assessment_id" ], + "tableTo": "work_assessments", "columnsTo": [ "company_id", "issue_id", "run_id", "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" } }, "compositePrimaryKeys": {}, "uniqueConstraints": { "work_assessments_company_issue_run_id_uq": { "name": "work_assessments_company_issue_run_id_uq", - "nullsNotDistinct": false, "columns": [ "company_id", "issue_id", "run_id", "id" - ] + ], + "nullsNotDistinct": false } }, "policies": {}, @@ -58457,9 +58457,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "workspace_operations_company_workspace_started_idx": { "name": "workspace_operations_company_workspace_started_idx", @@ -58484,9 +58484,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "workspace_operations_company_workspace_issue_started_idx": { "name": "workspace_operations_company_workspace_issue_started_idx", @@ -58517,63 +58517,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "workspace_operations_company_id_companies_id_fk": { "name": "workspace_operations_company_id_companies_id_fk", "tableFrom": "workspace_operations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "workspace_operations_execution_workspace_id_execution_workspaces_id_fk": { "name": "workspace_operations_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "workspace_operations", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_operations_heartbeat_run_id_heartbeat_runs_id_fk": { "name": "workspace_operations_heartbeat_run_id_heartbeat_runs_id_fk", "tableFrom": "workspace_operations", - "tableTo": "heartbeat_runs", "columnsFrom": [ "heartbeat_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_operations_issue_id_issues_id_fk": { "name": "workspace_operations_issue_id_issues_id_fk", "tableFrom": "workspace_operations", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -58796,9 +58796,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "workspace_runtime_services_company_execution_workspace_status_idx": { "name": "workspace_runtime_services_company_execution_workspace_status_idx", @@ -58823,9 +58823,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "workspace_runtime_services_company_project_status_idx": { "name": "workspace_runtime_services_company_project_status_idx", @@ -58850,9 +58850,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "workspace_runtime_services_run_idx": { "name": "workspace_runtime_services_run_idx", @@ -58865,9 +58865,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "workspace_runtime_services_company_updated_idx": { "name": "workspace_runtime_services_company_updated_idx", @@ -58886,102 +58886,102 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "workspace_runtime_services_company_id_companies_id_fk": { "name": "workspace_runtime_services_company_id_companies_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "no action", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "no action" }, "workspace_runtime_services_project_id_projects_id_fk": { "name": "workspace_runtime_services_project_id_projects_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "projects", "columnsFrom": [ "project_id" ], + "tableTo": "projects", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_runtime_services_project_workspace_id_project_workspaces_id_fk": { "name": "workspace_runtime_services_project_workspace_id_project_workspaces_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "project_workspaces", "columnsFrom": [ "project_workspace_id" ], + "tableTo": "project_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_runtime_services_execution_workspace_id_execution_workspaces_id_fk": { "name": "workspace_runtime_services_execution_workspace_id_execution_workspaces_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "execution_workspaces", "columnsFrom": [ "execution_workspace_id" ], + "tableTo": "execution_workspaces", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_runtime_services_issue_id_issues_id_fk": { "name": "workspace_runtime_services_issue_id_issues_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "issues", "columnsFrom": [ "issue_id" ], + "tableTo": "issues", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_runtime_services_owner_agent_id_agents_id_fk": { "name": "workspace_runtime_services_owner_agent_id_agents_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "agents", "columnsFrom": [ "owner_agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" }, "workspace_runtime_services_started_by_run_id_heartbeat_runs_id_fk": { "name": "workspace_runtime_services_started_by_run_id_heartbeat_runs_id_fk", "tableFrom": "workspace_runtime_services", - "tableTo": "heartbeat_runs", "columnsFrom": [ "started_by_run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "set null", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -59129,9 +59129,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_attachment_upload_expiry_idx": { "name": "mcp_attachment_upload_expiry_idx", @@ -59144,50 +59144,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_attachment_uploads_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_attachment_uploads_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_attachment_uploads", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_attachment_uploads_company_id_companies_id_fk": { "name": "mcp_attachment_uploads_company_id_companies_id_fk", "tableFrom": "mcp_attachment_uploads", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_attachment_uploads_user_id_user_id_fk": { "name": "mcp_attachment_uploads_user_id_user_id_fk", "tableFrom": "mcp_attachment_uploads", - "tableTo": "user", "columnsFrom": [ "user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -59263,9 +59263,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_event_admissions_grant_idx": { "name": "mcp_event_admissions_grant_idx", @@ -59278,9 +59278,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_event_admissions_company_idx": { "name": "mcp_event_admissions_company_idx", @@ -59293,37 +59293,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_event_admissions_company_id_companies_id_fk": { "name": "mcp_event_admissions_company_id_companies_id_fk", "tableFrom": "mcp_event_admissions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_event_admissions_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_event_admissions_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_event_admissions", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -59412,9 +59412,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_event_deliveries_activity_uq": { "name": "mcp_event_deliveries_activity_uq", @@ -59433,9 +59433,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_event_deliveries_due_idx": { "name": "mcp_event_deliveries_due_idx", @@ -59448,24 +59448,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_event_deliveries_subscription_id_mcp_event_subscriptions_id_fk": { "name": "mcp_event_deliveries_subscription_id_mcp_event_subscriptions_id_fk", "tableFrom": "mcp_event_deliveries", - "tableTo": "mcp_event_subscriptions", "columnsFrom": [ "subscription_id" ], + "tableTo": "mcp_event_subscriptions", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -59576,9 +59576,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_event_subscriptions_company_idx": { "name": "mcp_event_subscriptions_company_idx", @@ -59591,37 +59591,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_event_subscriptions_company_id_companies_id_fk": { "name": "mcp_event_subscriptions_company_id_companies_id_fk", "tableFrom": "mcp_event_subscriptions", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_event_subscriptions_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_event_subscriptions_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_event_subscriptions", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -59701,9 +59701,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_file_ticket_grant_idx": { "name": "mcp_file_ticket_grant_idx", @@ -59716,50 +59716,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_file_tickets_company_id_companies_id_fk": { "name": "mcp_file_tickets_company_id_companies_id_fk", "tableFrom": "mcp_file_tickets", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_file_tickets_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_file_tickets_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_file_tickets", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_file_tickets_upload_id_mcp_attachment_uploads_id_fk": { "name": "mcp_file_tickets_upload_id_mcp_attachment_uploads_id_fk", "tableFrom": "mcp_file_tickets", - "tableTo": "mcp_attachment_uploads", "columnsFrom": [ "upload_id" ], + "tableTo": "mcp_attachment_uploads", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -59866,9 +59866,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_mutation_receipts_company_idx": { "name": "mcp_mutation_receipts_company_idx", @@ -59881,50 +59881,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_mutation_receipts_company_id_companies_id_fk": { "name": "mcp_mutation_receipts_company_id_companies_id_fk", "tableFrom": "mcp_mutation_receipts", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_mutation_receipts_user_id_user_id_fk": { "name": "mcp_mutation_receipts_user_id_user_id_fk", "tableFrom": "mcp_mutation_receipts", - "tableTo": "user", "columnsFrom": [ "user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_mutation_receipts_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_mutation_receipts_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_mutation_receipts", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -60090,9 +60090,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_oauth_user_code_uq": { "name": "mcp_oauth_user_code_uq", @@ -60105,9 +60105,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_oauth_device_expiry_idx": { "name": "mcp_oauth_device_expiry_idx", @@ -60120,37 +60120,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_oauth_device_requests_client_id_mcp_oauth_clients_id_fk": { "name": "mcp_oauth_device_requests_client_id_mcp_oauth_clients_id_fk", "tableFrom": "mcp_oauth_device_requests", - "tableTo": "mcp_oauth_clients", "columnsFrom": [ "client_id" ], + "tableTo": "mcp_oauth_clients", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_oauth_device_requests_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_oauth_device_requests_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_oauth_device_requests", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -60245,63 +60245,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_oauth_grants_company_id_companies_id_fk": { "name": "mcp_oauth_grants_company_id_companies_id_fk", "tableFrom": "mcp_oauth_grants", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_oauth_grants_user_id_user_id_fk": { "name": "mcp_oauth_grants_user_id_user_id_fk", "tableFrom": "mcp_oauth_grants", - "tableTo": "user", "columnsFrom": [ "user_id" ], + "tableTo": "user", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_oauth_grants_client_id_mcp_oauth_clients_id_fk": { "name": "mcp_oauth_grants_client_id_mcp_oauth_clients_id_fk", "tableFrom": "mcp_oauth_grants", - "tableTo": "mcp_oauth_clients", "columnsFrom": [ "client_id" ], + "tableTo": "mcp_oauth_clients", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_oauth_grants_agent_id_agents_id_fk": { "name": "mcp_oauth_grants_agent_id_agents_id_fk", "tableFrom": "mcp_oauth_grants", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -60346,9 +60346,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": {}, @@ -60460,9 +60460,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_oauth_requests_expiry_idx": { "name": "mcp_oauth_requests_expiry_idx", @@ -60475,37 +60475,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_oauth_requests_client_id_mcp_oauth_clients_id_fk": { "name": "mcp_oauth_requests_client_id_mcp_oauth_clients_id_fk", "tableFrom": "mcp_oauth_requests", - "tableTo": "mcp_oauth_clients", "columnsFrom": [ "client_id" ], + "tableTo": "mcp_oauth_clients", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "mcp_oauth_requests_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_oauth_requests_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_oauth_requests", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -60575,9 +60575,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_oauth_tokens_grant_idx": { "name": "mcp_oauth_tokens_grant_idx", @@ -60590,9 +60590,9 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "mcp_oauth_tokens_expiry_idx": { "name": "mcp_oauth_tokens_expiry_idx", @@ -60605,24 +60605,24 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "mcp_oauth_tokens_grant_id_mcp_oauth_grants_id_fk": { "name": "mcp_oauth_tokens_grant_id_mcp_oauth_grants_id_fk", "tableFrom": "mcp_oauth_tokens", - "tableTo": "mcp_oauth_grants", "columnsFrom": [ "grant_id" ], + "tableTo": "mcp_oauth_grants", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -60755,9 +60755,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "external_holds_agent_idx": { "name": "external_holds_agent_idx", @@ -60776,37 +60776,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "external_agent_holds_company_id_companies_id_fk": { "name": "external_agent_holds_company_id_companies_id_fk", "tableFrom": "external_agent_holds", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "external_agent_holds_agent_id_agents_id_fk": { "name": "external_agent_holds_agent_id_agents_id_fk", "tableFrom": "external_agent_holds", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -60844,6 +60844,12 @@ "primaryKey": false, "notNull": true }, + "grant_id": { + "name": "grant_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, "generation": { "name": "generation", "type": "integer", @@ -61013,10 +61019,10 @@ } ], "isUnique": true, - "where": "\"muse_agent_bindings\".\"revoked_at\" IS NULL", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"muse_agent_bindings\".\"revoked_at\" IS NULL", + "concurrently": false }, "muse_bindings_ticket_uq": { "name": "muse_bindings_ticket_uq", @@ -61029,37 +61035,66 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false + }, + "muse_bindings_active_grant_uq": { + "name": "muse_bindings_active_grant_uq", + "columns": [ + { + "expression": "grant_id", + "isExpression": false, + "asc": true, + "nulls": "last" + } + ], + "isUnique": true, + "with": {}, + "method": "btree", + "where": "\"muse_agent_bindings\".\"revoked_at\" IS NULL AND \"muse_agent_bindings\".\"grant_id\" IS NOT NULL", + "concurrently": false } }, "foreignKeys": { "muse_agent_bindings_company_id_companies_id_fk": { "name": "muse_agent_bindings_company_id_companies_id_fk", "tableFrom": "muse_agent_bindings", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_agent_bindings_agent_id_agents_id_fk": { "name": "muse_agent_bindings_agent_id_agents_id_fk", "tableFrom": "muse_agent_bindings", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" + }, + "muse_agent_bindings_grant_id_mcp_oauth_grants_id_fk": { + "name": "muse_agent_bindings_grant_id_mcp_oauth_grants_id_fk", + "tableFrom": "muse_agent_bindings", + "columnsFrom": [ + "grant_id" + ], + "tableTo": "mcp_oauth_grants", + "columnsTo": [ + "id" + ], + "onUpdate": "no action", + "onDelete": "set null" } }, "compositePrimaryKeys": {}, @@ -61153,9 +61188,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "muse_credentials_binding_idx": { "name": "muse_credentials_binding_idx", @@ -61174,37 +61209,37 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_credentials_company_id_companies_id_fk": { "name": "muse_credentials_company_id_companies_id_fk", "tableFrom": "muse_credentials", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_credentials_binding_id_muse_agent_bindings_id_fk": { "name": "muse_credentials_binding_id_muse_agent_bindings_id_fk", "tableFrom": "muse_credentials", - "tableTo": "muse_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "muse_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -61292,37 +61327,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_idle_receipts_company_id_companies_id_fk": { "name": "muse_idle_receipts_company_id_companies_id_fk", "tableFrom": "muse_idle_receipts", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_idle_receipts_binding_id_muse_agent_bindings_id_fk": { "name": "muse_idle_receipts_binding_id_muse_agent_bindings_id_fk", "tableFrom": "muse_idle_receipts", - "tableTo": "muse_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "muse_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -61422,9 +61457,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "muse_input_source_uq": { "name": "muse_input_source_uq", @@ -61443,37 +61478,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_input_deliveries_company_id_companies_id_fk": { "name": "muse_input_deliveries_company_id_companies_id_fk", "tableFrom": "muse_input_deliveries", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_input_deliveries_assignment_id_muse_runner_assignments_id_fk": { "name": "muse_input_deliveries_assignment_id_muse_runner_assignments_id_fk", "tableFrom": "muse_input_deliveries", - "tableTo": "muse_runner_assignments", "columnsFrom": [ "assignment_id" ], + "tableTo": "muse_runner_assignments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -61579,9 +61614,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "muse_mailbox_cursor_idx": { "name": "muse_mailbox_cursor_idx", @@ -61606,50 +61641,50 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_mailbox_items_company_id_companies_id_fk": { "name": "muse_mailbox_items_company_id_companies_id_fk", "tableFrom": "muse_mailbox_items", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_mailbox_items_binding_id_muse_agent_bindings_id_fk": { "name": "muse_mailbox_items_binding_id_muse_agent_bindings_id_fk", "tableFrom": "muse_mailbox_items", - "tableTo": "muse_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "muse_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_mailbox_items_assignment_id_muse_runner_assignments_id_fk": { "name": "muse_mailbox_items_assignment_id_muse_runner_assignments_id_fk", "tableFrom": "muse_mailbox_items", - "tableTo": "muse_runner_assignments", "columnsFrom": [ "assignment_id" ], + "tableTo": "muse_runner_assignments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -61781,37 +61816,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_receiver_contact_buckets_company_id_companies_id_fk": { "name": "muse_receiver_contact_buckets_company_id_companies_id_fk", "tableFrom": "muse_receiver_contact_buckets", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_receiver_contact_buckets_binding_id_muse_agent_bindings_id_fk": { "name": "muse_receiver_contact_buckets_binding_id_muse_agent_bindings_id_fk", "tableFrom": "muse_receiver_contact_buckets", - "tableTo": "muse_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "muse_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -61980,9 +62015,9 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false }, "muse_assignments_live_binding_uq": { "name": "muse_assignments_live_binding_uq", @@ -61995,10 +62030,10 @@ } ], "isUnique": true, - "where": "\"muse_runner_assignments\".\"status\" IN ('offered','claimed','accepted')", - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "where": "\"muse_runner_assignments\".\"status\" IN ('offered','claimed','accepted')", + "concurrently": false }, "muse_assignments_company_idx": { "name": "muse_assignments_company_idx", @@ -62011,63 +62046,63 @@ } ], "isUnique": false, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_runner_assignments_company_id_companies_id_fk": { "name": "muse_runner_assignments_company_id_companies_id_fk", "tableFrom": "muse_runner_assignments", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_runner_assignments_binding_id_muse_agent_bindings_id_fk": { "name": "muse_runner_assignments_binding_id_muse_agent_bindings_id_fk", "tableFrom": "muse_runner_assignments", - "tableTo": "muse_agent_bindings", "columnsFrom": [ "binding_id" ], + "tableTo": "muse_agent_bindings", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_runner_assignments_run_id_heartbeat_runs_id_fk": { "name": "muse_runner_assignments_run_id_heartbeat_runs_id_fk", "tableFrom": "muse_runner_assignments", - "tableTo": "heartbeat_runs", "columnsFrom": [ "run_id" ], + "tableTo": "heartbeat_runs", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_runner_assignments_agent_id_agents_id_fk": { "name": "muse_runner_assignments_agent_id_agents_id_fk", "tableFrom": "muse_runner_assignments", - "tableTo": "agents", "columnsFrom": [ "agent_id" ], + "tableTo": "agents", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -62105,6 +62140,12 @@ "primaryKey": false, "notNull": true }, + "continuation_receipt_id": { + "name": "continuation_receipt_id", + "type": "uuid", + "primaryKey": false, + "notNull": false + }, "digest": { "name": "digest", "type": "text", @@ -62169,37 +62210,37 @@ } ], "isUnique": true, - "concurrently": false, + "with": {}, "method": "btree", - "with": {} + "concurrently": false } }, "foreignKeys": { "muse_runner_operations_company_id_companies_id_fk": { "name": "muse_runner_operations_company_id_companies_id_fk", "tableFrom": "muse_runner_operations", - "tableTo": "companies", "columnsFrom": [ "company_id" ], + "tableTo": "companies", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" }, "muse_runner_operations_assignment_id_muse_runner_assignments_id_fk": { "name": "muse_runner_operations_assignment_id_muse_runner_assignments_id_fk", "tableFrom": "muse_runner_operations", - "tableTo": "muse_runner_assignments", "columnsFrom": [ "assignment_id" ], + "tableTo": "muse_runner_assignments", "columnsTo": [ "id" ], - "onDelete": "cascade", - "onUpdate": "no action" + "onUpdate": "no action", + "onDelete": "cascade" } }, "compositePrimaryKeys": {}, @@ -62211,21 +62252,21 @@ }, "enums": {}, "schemas": {}, + "views": {}, "sequences": { "public.chat_telegram_draft_ids": { "name": "chat_telegram_draft_ids", - "schema": "public", "increment": "1", - "startWith": "1", "minValue": "1", "maxValue": "2147483647", + "startWith": "1", "cache": "1", - "cycle": false + "cycle": false, + "schema": "public" } }, "roles": {}, "policies": {}, - "views": {}, "_meta": { "columns": {}, "schemas": {}, diff --git a/packages/db/src/migrations/meta/_journal.json b/packages/db/src/migrations/meta/_journal.json index 315ff5cc391..0cc413c89e4 100644 --- a/packages/db/src/migrations/meta/_journal.json +++ b/packages/db/src/migrations/meta/_journal.json @@ -2479,6 +2479,13 @@ "when": 1792188236099, "tag": "0355_agent_tool_definition_hooks", "breakpoints": true + }, + { + "idx": 356, + "version": "7", + "when": 1792188583719, + "tag": "0356_agent_connector_access_hooks", + "breakpoints": true } ] } \ No newline at end of file diff --git a/server/src/__tests__/agent-instance-secrets.test.ts b/server/src/__tests__/agent-instance-secrets.test.ts index 7cd3af24911..65478eeabd9 100644 --- a/server/src/__tests__/agent-instance-secrets.test.ts +++ b/server/src/__tests__/agent-instance-secrets.test.ts @@ -1,7 +1,7 @@ import { randomBytes, randomUUID } from "node:crypto"; import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; -import { eq } from "drizzle-orm"; -import { agents, companies, companySecrets, companySecretVersions, activityLog, plugins, createDb, type Db } from "@paperclipai/db"; +import { eq, sql } from "drizzle-orm"; +import { agents, companies, companySecrets, companySecretVersions, activityLog, plugins, toolApplications, toolConnections, createDb, type Db } from "@paperclipai/db"; import type { AgentLifecycleRequest } from "@paperclipai/shared"; import { getEmbeddedPostgresTestSupport, startEmbeddedPostgresTestDatabase } from "./helpers/embedded-postgres.js"; import { agentInstanceSecretService } from "../services/agent-instance-secrets.js"; @@ -32,11 +32,11 @@ const support = await getEmbeddedPostgresTestSupport(); manifestJson: { agentLifecycle: true, capabilities: ["agents.lifecycle.manage"] } as never }); }, 90_000); afterAll(async () => { await database?.cleanup(); vi.unstubAllEnvs(); }); - async function fixture(ownerPluginId = pluginId) { + async function fixture(ownerPluginId = pluginId, agentId = randomUUID()) { const operationId = randomUUID(); const owner = randomUUID(); const now = new Date(); - const [agent] = await db.insert(agents).values({ companyId, name: "Secret owner", lifecycleState: "preparing", lifecycleVersion: 1, + const [agent] = await db.insert(agents).values({ id: agentId, companyId, name: "Secret owner", lifecycleState: "preparing", lifecycleVersion: 1, lifecycleRequiredPluginIds: [ownerPluginId], lifecycleOperation: { id: operationId, hostComplete: true, completedPluginIds: [], attempts: 0, leaseOwner: owner, leaseUntil: new Date(now.getTime() + 120_000).toISOString() } }).returning(); const request: AgentLifecycleRequest = { companyId, agentId: agent.id, operationId, version: 1, phase: "preparing" }; @@ -66,6 +66,44 @@ const support = await getEmbeddedPostgresTestSupport(); expect(JSON.stringify(await db.select().from(activityLog).where(eq(activityLog.entityId, f.agent.id)))).not.toContain(replacement); }); + it("removes a plugin instance secret while a company connection save waits for its owner", async () => { + const [lower, higher] = [randomUUID(), randomUUID()].sort(); + await db.insert(agents).values({ id: lower, companyId, name: "Unrelated lower agent" }); + const f = await fixture(pluginId, higher); + await f.service.apply(f.request, pluginId, { runtime }); + const [application] = await db.insert(toolApplications).values({ companyId, name: "Instance removal fixture", type: "mcp_http" }).returning(); + const [connection] = await db.insert(toolConnections).values({ companyId, applicationId: application.id, name: "Instance removal fixture", uid: randomUUID(), transport: "mcp_remote", authKind: "none", status: "active" }).returning(); + let paused!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { paused = resolve; }); + const mayRemove = new Promise(resolve => { resume = resolve; }); + const settingsStarted = new Promise(resolve => { started = resolve; }); + const removeProvider = localEncryptedProvider.deleteOrArchive.bind(localEncryptedProvider); + const providerSpy = vi.spyOn(localEncryptedProvider, "deleteOrArchive").mockImplementation(async input => { + paused(); await mayRemove; + return removeProvider(input); + }); + const removal = f.service.apply(f.request, pluginId, { runtime: null }); + await held; + const settings = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + await tx.update(toolConnections).set({ name: "Saved during instance removal" }).where(eq(toolConnections.id, connection.id)); + }); + const completed = Promise.allSettled([removal, settings]); + try { + const pid = await settingsStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); await completed; providerSpy.mockRestore(); } + const results = await completed; + for (const result of results) if (result.status === "rejected") throw result.reason; + expect(await f.service.read(f.scope)).toEqual({}); + expect((await db.select().from(toolConnections).where(eq(toolConnections.id, connection.id)))[0].name).toBe("Saved during instance removal"); + }, 15000); + it("excludes instance secrets from company catalogs, ordinary resolution, bindings and agent access", async () => { const f = await fixture(); await f.service.apply(f.request, pluginId, { runtime }); const [stored] = await db.select().from(companySecrets).where(eq(companySecrets.ownerAgentId, f.agent.id)); diff --git a/server/src/__tests__/agent-runtime-connector-access.test.ts b/server/src/__tests__/agent-runtime-connector-access.test.ts new file mode 100644 index 00000000000..3194e9bf1b3 --- /dev/null +++ b/server/src/__tests__/agent-runtime-connector-access.test.ts @@ -0,0 +1,734 @@ +import { randomUUID } from "node:crypto"; +import { and, eq, sql } from "drizzle-orm"; +import { agents, chatEndpoints, authUsers, heartbeatRuns, issues, companies, companyMemberships, principalPermissionGrants, companySecrets, companySecretBindings, companySecretProviderConfigs, connectionGrants, connectionGrantMembers, connectionGrantDelegations, userSecretDefinitions, createDb, plugins, toolApplications, toolConnections, toolCatalogEntries, toolConnectionInstalls, toolProfiles, toolProfileBindings, resourceLifecycleEvents, type Db } from "@paperclipai/db"; +import { afterAll, afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import { getEmbeddedPostgresTestSupport, startEmbeddedPostgresTestDatabase } from "./helpers/embedded-postgres.js"; +import { toolAccessService } from "../services/tool-access.js"; +import { updateAgentConfigurationInTransaction } from "../services/agent-configuration-transaction.js"; +import { connectionIntentService } from "../services/connection-intents.js"; +import { emailConnectionService } from "../services/email-connections.js"; +import { accessService } from "../services/access.js"; +import { secretService } from "../services/secrets.js"; +import { slackSearchOAuthService } from "../services/connectors/slack-search-oauth.js"; + +const support = await getEmbeddedPostgresTestSupport(); +const describeDatabase = support.supported ? describe : describe.skip; + +describeDatabase("connector access runtime synchronization", () => { + let database: Awaited>; + let db: Db; + let companyId: string; + let agentId: string; + let peerId: string; + let pluginId: string; + let applicationId: string; + let connectionId: string; + beforeAll(async () => { database = await startEmbeddedPostgresTestDatabase("paperclip-runtime-access-"); db = createDb(database.connectionString); }, 90_000); + afterAll(async () => { await database?.cleanup(); }); + afterEach(() => vi.unstubAllEnvs()); + beforeEach(async () => { + companyId = randomUUID(); agentId = randomUUID(); peerId = randomUUID(); pluginId = randomUUID(); + await db.insert(companies).values({ id: companyId, name: "Connector runtime fixture", issuePrefix: `C${companyId.slice(0, 6)}` }); + await db.insert(plugins).values({ id: pluginId, pluginKey: pluginId, packageName: "runtime-fixture", version: "1.0.0", status: "ready", manifestJson: { resourceLifecycle: ["agent_runtime"], capabilities: ["events.subscribe", "agents.lifecycle.manage"] } as never }); + await db.insert(agents).values([agentId, peerId].map(id => ({ id, companyId, name: id, adapterType: "paperclip_runner", lifecycleRequiredPluginIds: [pluginId] }))); + const [application] = await db.insert(toolApplications).values({ companyId, name: "Fixture MCP", type: "mcp_http" }).returning(); applicationId = application.id; + const [connection] = await db.insert(toolConnections).values({ companyId, applicationId, name: "Fixture connection", uid: randomUUID(), transport: "mcp_remote", authKind: "none", enabled: true, status: "active" }).returning(); connectionId = connection.id; + }); + const events = () => db.select().from(resourceLifecycleEvents).where(and(eq(resourceLifecycleEvents.companyId, companyId), eq(resourceLifecycleEvents.resourceType, "agent_runtime"))).orderBy(resourceLifecycleEvents.id); + + it("captures referenced vault configuration and disablement through the real provider service", async () => { + const [vault] = await db.insert(companySecretProviderConfigs).values({ companyId, provider: "aws_secrets_manager", displayName: "Fixture vault", config: { region: "us-east-1" } }).returning(); + const [secret] = await db.insert(companySecrets).values({ companyId, provider: "aws_secrets_manager", providerConfigId: vault.id, key: "vault", name: "Vault fixture" }).returning(); + await db.update(toolConnections).set({ credentialSecretRefs: [{ secretId: secret.id, configPath: "token" }] }).where(eq(toolConnections.id, connectionId)); + const before = (await events()).length; + await db.update(companySecretProviderConfigs).set({ healthStatus: "ok", healthCheckedAt: new Date(), healthDetails: { fixture: true } }).where(eq(companySecretProviderConfigs.id, vault.id)); + expect(await events()).toHaveLength(before); + await secretService(db).updateProviderConfig(vault.id, { config: { region: "us-west-2" } }); + expect(await events()).toHaveLength(before + 2); + await secretService(db).disableProviderConfig(vault.id); + expect(await events()).toHaveLength(before + 4); + const [unrelated] = await db.insert(companySecretProviderConfigs).values({ companyId, provider: "local_encrypted", displayName: "Unreferenced vault" }).returning(); + await secretService(db).disableProviderConfig(unrelated.id); + expect(await events()).toHaveLength(before + 4); + }); + it("skips unchanged grant audiences and coalesces replacements to one company refresh per transaction", async () => { + await db.insert(companyMemberships).values(["alice", "bob"].map(principalId => ({ companyId, principalType: "user", principalId, status: "active" }))); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "organization" }).returning(); + const service = toolAccessService(db); + await service.replaceConnectionGrantMembers(connectionId, grant.id, ["alice"]); + const before = (await events()).length; + expect((await service.replaceConnectionGrantMembers(connectionId, grant.id, ["alice", "alice"])).members).toHaveLength(1); + expect(await events()).toHaveLength(before); + await service.replaceConnectionGrantMembers(connectionId, grant.id, ["bob"]); + expect(await events()).toHaveLength(before + 2); + await service.replaceConnectionGrantMembers(connectionId, grant.id, []); + expect(await events()).toHaveLength(before + 4); + await service.replaceConnectionGrantMembers(connectionId, grant.id, []); + expect(await events()).toHaveLength(before + 4); + }); + it.each(["uninstall", "permission save"] as const)("serializes %s with finalization or role changes before runtime locks", async change => { + let first: (client: Db) => Promise; + let second: (client: Db) => Promise; + let memberId: string | undefined; + if (change === "uninstall") { + await toolAccessService(db).putConnectionInstalls(connectionId, { installs: [{ targetType: "agent", targetId: agentId }] }); + expect((await toolAccessService(db).getConnection(connectionId, companyId)).config.mcpAgentAccessConfigured).toBe(true); + first = client => toolAccessService(client).putConnectionInstalls(connectionId, { installs: [] }); + second = client => toolAccessService(client).finishGalleryAppConnection(companyId, connectionId, { enabledCatalogEntryIds: [], askFirstCatalogEntryIds: [], access: "all_agents" }); + } else { + const [member] = await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", status: "active", membershipRole: "member" }).returning(); + memberId = member.id; + await db.insert(principalPermissionGrants).values({ companyId, principalType: "user", principalId: "alice", permissionKey: "agents:create" }); + first = client => accessService(client).updateMemberAndPermissions(companyId, member.id, { membershipRole: "admin", grants: [{ permissionKey: "agents:create" }] }, null); + second = client => accessService(client).setMemberPermissions(companyId, member.id, [{ permissionKey: "issues:create" }], null); + } + let locked!: () => void; let release!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const resume = new Promise(resolve => { release = resolve; }); + const blocker = db.transaction(async tx => { + await tx.select().from(agents).where(eq(agents.id, agentId)).for("no key update"); + locked(); await resume; + }); + await held; + const pids: number[] = []; + const run = (work: (client: Db) => Promise) => db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + pids.push(Number(row.pid)); + return work(tx as unknown as Db); + }); + const waitForLock = (index: number) => vi.waitFor(async () => { + expect(pids.length).toBeGreaterThan(index); + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pids[index]}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + const initial = run(first); + let concurrent: Promise | undefined; + try { + await waitForLock(0); + concurrent = run(second); + await waitForLock(1); + } finally { release(); await blocker; } + const results = await Promise.allSettled([initial, concurrent]); + for (const result of results) if (result.status === "rejected") throw result.reason; + expect(results.map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + if (change === "uninstall") { + expect(await db.select().from(toolConnectionInstalls).where(eq(toolConnectionInstalls.connectionId, connectionId))).toHaveLength(0); + const bindings = await db.select().from(toolProfileBindings).where(eq(toolProfileBindings.companyId, companyId)); + expect(bindings.some(binding => binding.metadata?.source === "tool_connection_install")).toBe(false); + } else { + expect(await accessService(db).getMemberById(companyId, memberId!)).toMatchObject({ membershipRole: "admin" }); + expect(await db.select().from(principalPermissionGrants).where(eq(principalPermissionGrants.companyId, companyId))).toEqual([expect.objectContaining({ permissionKey: "issues:create" })]); + } + }, 15000); + it.each(["email allowAgent", "connection intent"] as const)("orders outer %s with direct install saves", async caller => { + let outer: (client: Db) => Promise; + if (caller === "email allowAgent") { + await db.update(toolConnections).set({ config: { provider: "agentmail", mcpAgentAccessConfigured: true } }).where(eq(toolConnections.id, connectionId)); + outer = client => emailConnectionService(client).allowAgent(companyId, connectionId, agentId, { localImplicit: true }, "fixture-setup"); + } else { + const userId = randomUUID(), issueId = randomUUID(), runId = randomUUID(); + await db.insert(authUsers).values({ id: userId, name: "Fixture user", email: `${userId}@example.test`, createdAt: new Date(), updatedAt: new Date() }); + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: userId, status: "active", membershipRole: "member" }); + await db.insert(issues).values({ id: issueId, companyId, title: "Use Notion", status: "in_progress", assigneeAgentId: agentId }); + await db.insert(heartbeatRuns).values({ id: runId, companyId, agentId, status: "running", responsibleUserId: userId, contextSnapshot: { issueId } }); + const pending = await connectionIntentService(db).request({ sub: agentId, company_id: companyId, run_id: runId, responsible_user_id: userId, scope: "connection_intents", iat: 1, exp: 2, instance_id: "test" }, "notion"); + expect(pending.interactionId).toEqual(expect.any(String)); + await db.update(toolConnections).set({ healthStatus: "ok", config: { sourceTemplateKey: "notion", mcpAgentAccessConfigured: true } }).where(eq(toolConnections.id, connectionId)); + await db.insert(connectionGrants).values({ companyId, connectionId, kind: "organization", status: "active", isDefault: true }); + await db.insert(toolCatalogEntries).values({ companyId, applicationId, connectionId, name: "read", toolName: "read", versionHash: "fixture", riskLevel: "read", isReadOnly: true }); + outer = client => connectionIntentService(client).complete(pending.interactionId!, connectionId, userId, { canManageOrganizationGrant: true }); + } + const [profile] = await db.insert(toolProfiles).values({ companyId, profileKey: `app:${connectionId}`, name: "Shared fixture profile", defaultAction: "allow" }).returning(); + await db.insert(toolProfileBindings).values({ companyId, profileId: profile.id, targetType: "company", targetId: companyId }); + let locked!: () => void; let release!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const resume = new Promise(resolve => { release = resolve; }); + const blocker = db.transaction(async tx => { + await tx.select().from(toolApplications).where(eq(toolApplications.id, applicationId)).for("update"); + locked(); await resume; + }); + await held; + const pids: number[] = []; + const run = (work: (client: Db) => Promise) => db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + pids.push(Number(row.pid)); + return work(tx as unknown as Db); + }); + const waitForLock = (index: number) => vi.waitFor(async () => { + expect(pids.length).toBeGreaterThan(index); + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pids[index]}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + const direct = run(client => toolAccessService(client).putConnectionInstalls(connectionId, { installs: [{ targetType: "agent", targetId: peerId }] })); + let nested: Promise | undefined; + try { + await waitForLock(0); + nested = run(outer); + await waitForLock(1); + } finally { release(); await blocker; } + const results = await Promise.allSettled([direct, nested]); + for (const result of results) if (result.status === "rejected") throw result.reason; + expect(results.map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect((await toolAccessService(db).listConnectionInstalls(connectionId, companyId)).map(install => install.targetId).sort()).toEqual([agentId, peerId].sort()); + if (caller === "connection intent") expect((results[1] as PromiseFulfilledResult<{ status: string }>).value.status).toBe("accepted"); + }, 15000); + it("orders Slack search disconnect with concurrent personal delegation creation", async () => { + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", status: "active" }); + await db.update(toolConnections).set({ connectionPurpose: "channel", transport: "chat_sdk", config: { provider: "slack" } }).where(eq(toolConnections.id, connectionId)); + const [endpoint] = await db.insert(chatEndpoints).values({ companyId, connectionId, provider: "slack", publicId: randomUUID(), assignedAgentId: agentId, status: "active", providerAccountId: "T-FIXTURE" }).returning(); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice", providerTenant: { slackSearch: { endpointId: endpoint.id, workspaceId: "T-FIXTURE", slackUserId: "U-FIXTURE", clientRevision: "fixture" } } }).returning(); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayDelegate = new Promise(resolve => { resume = resolve; }); + const disconnectStarted = new Promise(resolve => { started = resolve; }); + const creation = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + locked(); await mayDelegate; + return toolAccessService(tx as unknown as Db).createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + }); + await held; + const disconnect = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return slackSearchOAuthService(tx as unknown as Db, "https://paperclip.example").disconnect(companyId, endpoint.id, "alice"); + }); + const completed = Promise.allSettled([creation, disconnect]); + try { + const pid = await disconnectStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); await completed; } + for (const result of await completed) if (result.status === "rejected") throw result.reason; + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("revoked"); + }, 15000); + it("retries Slack disconnect when a grant appears while waiting for the connection", async () => { + await db.update(toolConnections).set({ connectionPurpose: "channel", transport: "chat_sdk", config: { provider: "slack" } }).where(eq(toolConnections.id, connectionId)); + const [endpoint] = await db.insert(chatEndpoints).values({ companyId, connectionId, provider: "slack", publicId: randomUUID(), assignedAgentId: agentId, status: "active" }).returning(); + let connectionLocked!: () => void; let releaseConnection!: () => void; + const held = new Promise(resolve => { connectionLocked = resolve; }); + const mayUnlock = new Promise(resolve => { releaseConnection = resolve; }); + const blocker = db.transaction(async tx => { + await tx.select().from(toolConnections).where(eq(toolConnections.id, connectionId)).for("no key update"); + connectionLocked(); await mayUnlock; + }); + await held; + let retries = 0; let disconnectPid: number | undefined; let writer: Promise | undefined; + let writerLocked!: () => void; let resumeWriter!: () => void; + const grantHeld = new Promise(resolve => { writerLocked = resolve; }); + const mayWrite = new Promise(resolve => { resumeWriter = resolve; }); + const transaction = db.transaction.bind(db); + const spy = vi.spyOn(db, "transaction").mockImplementation((async (operation, config) => { + try { return await transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + disconnectPid ??= Number(row.pid); + return operation(tx); + }, config); } + catch (error) { + const failure = error as { code?: string; cause?: { code?: string } }; + if ((failure.cause?.code ?? failure.code) === "55P03") { retries++; resumeWriter(); await writer; } + throw error; + } + }) as typeof db.transaction); + const disconnect = slackSearchOAuthService(db, "https://paperclip.example").disconnect(companyId, endpoint.id, "alice"); + const disconnectResult = Promise.allSettled([disconnect]); + try { + await vi.waitFor(async () => { + expect(disconnectPid).toBeDefined(); + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${disconnectPid!}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + writer = db.transaction(async tx => { + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + writerLocked(); await mayWrite; + await tx.update(toolConnections).set({ name: "Saved during grant discovery" }).where(eq(toolConnections.id, connectionId)); + }); + await grantHeld; + releaseConnection(); await blocker; + await vi.waitFor(() => expect(retries).toBe(1), { timeout: 5000 }); + await writer; + const [result] = await disconnectResult; + if (result.status === "rejected") throw result.reason; + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("revoked"); + } finally { releaseConnection(); resumeWriter(); await blocker; await writer; await disconnectResult; spy.mockRestore(); } + }, 15000); + it("journals a personal grant delegation only for its target agent", async () => { + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", status: "active" }); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + const before = await events(); + await toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + expect((await events()).slice(before.length).map(event => event.resourceId)).toEqual([agentId]); + }); + it("keeps repeated delegation creation and revocation independent of an unrelated agent lock", async () => { + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", status: "active" }); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + const before = await events(); + let locked!: () => void; let resume!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayFinish = new Promise(resolve => { resume = resolve; }); + const blocker = db.transaction(async tx => { + await tx.select().from(agents).where(eq(agents.id, peerId)).for("no key update"); + locked(); await mayFinish; + }); + await held; + try { + for (let index = 0; index < 2; index++) { + const delegation = await toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + await db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '2s'`); + await toolAccessService(tx as unknown as Db).revokeConnectionGrantDelegation(connectionId, grant.id, delegation.id); + }); + } + expect((await events()).slice(before.length).map(row => row.resourceId)).toEqual([agentId, agentId, agentId, agentId]); + await db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '2s'`); + const service = toolAccessService(tx as unknown as Db); + const delegation = await service.createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + await service.revokeConnectionGrantDelegation(connectionId, grant.id, delegation.id); + }); + expect((await events()).slice(before.length).map(row => row.resourceId)).toEqual(Array(5).fill(agentId)); + } finally { resume(); await blocker; } + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.grantId, grant.id))).toEqual([]); + }, 15000); + it("invalidates both delegation targets on reassignment and ignores unchanged updates or rollback", async () => { + await db.insert(agents).values({ companyId, name: "Unrelated delegation peer", adapterType: "paperclip_runner" }); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + const [delegation] = await db.insert(connectionGrantDelegations).values({ companyId, grantId: grant.id, agentId, createdByUserId: "alice" }).returning(); + const before = await events(); + await db.update(connectionGrantDelegations).set({ agentId: peerId }).where(eq(connectionGrantDelegations.id, delegation.id)); + const reassigned = await events(); + expect(reassigned.slice(before.length).map(row => row.resourceId).sort()).toEqual([agentId, peerId].sort()); + await db.update(connectionGrantDelegations).set({ agentId: peerId }).where(eq(connectionGrantDelegations.id, delegation.id)); + expect(await events()).toEqual(reassigned); + await expect(db.transaction(async tx => { + await tx.delete(connectionGrantDelegations).where(eq(connectionGrantDelegations.id, delegation.id)); + throw new Error("rollback delegation revocation"); + })).rejects.toThrow("rollback delegation revocation"); + expect(await events()).toEqual(reassigned); + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.id, delegation.id))).toEqual([expect.objectContaining({ agentId: peerId })]); + }); + it("limits delegation creation to its target without waiting on unrelated agents", async () => { + await db.insert(companyMemberships).values(["alice", "bob"].map(principalId => ({ companyId, principalType: "user", principalId, status: "active" }))); + const grants = await db.insert(connectionGrants).values(["alice", "bob"].map(subjectUserId => ({ companyId, connectionId, kind: "user", subjectUserId }))).returning(); + const baseline = await events(); + const [lower, higher] = [agentId, peerId].sort(); + let locked!: () => void; let release!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const resume = new Promise(resolve => { release = resolve; }); + const blocker = db.transaction(async tx => { + await tx.select().from(agents).where(eq(agents.id, lower)).for("no key update"); + locked(); await resume; + }); + await held; + const pids: number[] = []; + const saves = grants.map((grant, index) => db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + pids[index] = Number(row.pid); + return toolAccessService(tx as unknown as Db).createConnectionGrantDelegation(connectionId, grant.id, index === 0 ? higher : lower, grant.subjectUserId!); + })); + const completed = Promise.allSettled(saves); + try { + await expect(saves[0]).resolves.toMatchObject({ agentId: higher }); + expect((await events()).slice(baseline.length).map(event => event.resourceId)).toEqual([higher]); + await vi.waitFor(async () => { + expect(pids).toHaveLength(2); + const rows = await db.execute(sql`SELECT pid FROM pg_stat_activity WHERE pid = ${pids[1]} AND wait_event_type = 'Lock'`); + expect(rows).toHaveLength(1); + }, { timeout: 5000 }); + } finally { release(); await blocker; } + expect((await completed).map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.companyId, companyId))).toHaveLength(2); + const before = await events(); + expect(before.slice(baseline.length).map(event => event.resourceId).sort()).toEqual([lower, higher]); + await toolAccessService(db).createConnectionGrantDelegation(connectionId, grants[0].id, higher, grants[0].subjectUserId!); + expect(await events()).toEqual(before); + }, 15000); + it.each(["grant revocation", "membership suspension"] as const)("orders company locks before delegation cleanup during %s", async change => { + const [lower, higher] = [agentId, peerId].sort(); + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "owner", membershipRole: "owner", status: "active" }); + const [member] = await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", membershipRole: "member", status: "active" }).returning(); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + await toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, higher, "alice"); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const maySave = new Promise(resolve => { resume = resolve; }); + const cleanupStarted = new Promise(resolve => { started = resolve; }); + const settings = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(agents).where(eq(agents.id, lower)).for("no key update"); + locked(); await maySave; + return toolAccessService(tx as unknown as Db).updateApplication(applicationId, { name: "Concurrent delegation settings" }); + }); + await held; + const cleanup = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return change === "grant revocation" ? toolAccessService(tx as unknown as Db).revokeConnectionGrant(connectionId, grant.id) + : accessService(tx as unknown as Db).updateMember(companyId, member.id, { status: "suspended" }); + }); + const completed = Promise.allSettled([settings, cleanup]); + try { + const pid = await cleanupStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + const results = await completed; + for (const result of results) if (result.status === "rejected") throw result.reason; + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("revoked"); + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.grantId, grant.id))).toEqual([]); + }, 15000); + it("orders a personal delegation revocation behind whole-grant cleanup", async () => { + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", status: "active" }); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + const delegation = await toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayRevoke = new Promise(resolve => { resume = resolve; }); + const personalStarted = new Promise(resolve => { started = resolve; }); + const whole = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + await tx.select().from(agents).where(eq(agents.companyId, companyId)).orderBy(agents.id).for("no key update"); + locked(); await mayRevoke; + return toolAccessService(tx as unknown as Db).revokeConnectionGrant(connectionId, grant.id); + }); + await held; + const personal = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return toolAccessService(tx as unknown as Db).revokeConnectionGrantDelegation(connectionId, grant.id, delegation.id); + }); + const completed = Promise.allSettled([whole, personal]); + try { + const pid = await personalStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + const [wholeResult, personalResult] = await completed; + if (wholeResult.status === "rejected") throw wholeResult.reason; + expect(personalResult).toMatchObject({ status: "rejected", reason: { status: 404 } }); + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.grantId, grant.id))).toEqual([]); + }, 15000); + it("orders grant revocation with a concurrent delegation creation", async () => { + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", status: "active" }); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice" }).returning(); + await toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayCreate = new Promise(resolve => { resume = resolve; }); + const revokerStarted = new Promise(resolve => { started = resolve; }); + const creation = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + locked(); await mayCreate; + return toolAccessService(tx as unknown as Db).createConnectionGrantDelegation(connectionId, grant.id, peerId, "alice"); + }); + await held; + const revocation = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return toolAccessService(tx as unknown as Db).revokeConnectionGrant(connectionId, grant.id); + }); + const completed = Promise.allSettled([creation, revocation]); + try { + const pid = await revokerStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + expect((await completed).map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("revoked"); + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.grantId, grant.id))).toEqual([]); + await expect(toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, peerId, "alice")).rejects.toThrow("Only the active personal grant owner"); + }, 15000); + it.each(["updateMember", "updateMemberAndPermissions", "archiveMember", "setUserCompanyAccess"] as const)("retries %s secret cleanup as a complete transaction", async command => { + const userId = `cleanup-${randomUUID()}`; + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "owner", membershipRole: "owner", status: "active" }); + const [member] = await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: userId, membershipRole: "member", status: "active" }).returning(); + const [definition] = await db.insert(userSecretDefinitions).values({ companyId, key: "legacy-cleanup", name: "Legacy cleanup fixture" }).returning(); + const [secret] = await db.insert(companySecrets).values({ companyId, key: "legacy-cleanup", name: "Legacy cleanup fixture", scope: "user", ownerUserId: userId, userSecretDefinitionId: definition.id }).returning(); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: userId, credentialSecretRefs: [{ secretId: secret.id, configPath: "oauth.access_token" }] }).returning(); + const before = await events(); + let locked!: () => void; let resume!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayDisable = new Promise(resolve => { resume = resolve; }); + const writer = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(companySecrets).where(eq(companySecrets.id, secret.id)).for("no key update"); + locked(); await mayDisable; + return secretService(tx as unknown as Db).update(secret.id, { status: "disabled" }); + }); + await held; + let retries = 0; + let cleanupPid: number | undefined; + const transaction = db.transaction.bind(db); + const spy = vi.spyOn(db, "transaction").mockImplementation((async (operation, config) => { + try { return await transaction(async tx => { + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + cleanupPid = Number(row.pid); + return operation(tx); + }, config); } + catch (error) { + const failure = error as { code?: string; cause?: { code?: string } }; + if ((failure.cause?.code ?? failure.code) === "55P03") { retries++; resume(); await writer; } + throw error; + } + }) as typeof db.transaction); + const service = accessService(db); + const cleanup = command === "updateMember" ? service.updateMember(companyId, member.id, { status: "suspended" }) + : command === "updateMemberAndPermissions" ? service.updateMemberAndPermissions(companyId, member.id, { status: "suspended", grants: [] }, "owner") + : command === "archiveMember" ? service.archiveMember(companyId, member.id) + : service.setUserCompanyAccess(userId, [], { actorUserId: "owner" }); + const completed = Promise.allSettled([writer, cleanup]); + try { + await vi.waitFor(async () => { + if (retries === 1) return; + expect(cleanupPid).toBeDefined(); + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${cleanupPid!}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); await completed; spy.mockRestore(); } + for (const result of await completed) if (result.status === "rejected") throw result.reason; + expect(retries).toBe(1); + expect((await db.select().from(companyMemberships).where(eq(companyMemberships.id, member.id)))[0].status).toBe(command === "archiveMember" || command === "setUserCompanyAccess" ? "archived" : "suspended"); + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("revoked"); + expect(await db.select().from(companySecrets).where(eq(companySecrets.id, secret.id))).toEqual([]); + expect(await events()).toHaveLength(before.length + 4); + }, 15000); + it.each((["suspended", "archived"] as const).flatMap(status => (["revocation", "settings"] as const).map(writer => ({ status, writer }))))("orders membership $status cleanup with concurrent $writer", async ({ status, writer }) => { + await db.update(toolConnections).set({ config: { url: "https://mcp.example.test/mcp" } }).where(eq(toolConnections.id, connectionId)); + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "owner", membershipRole: "owner", status: "active" }); + const [member] = await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "alice", membershipRole: "member", status: "active" }).returning(); + const [definition] = await db.insert(userSecretDefinitions).values({ companyId, key: "cleanup", name: "Cleanup fixture" }).returning(); + const [secret] = await db.insert(companySecrets).values({ companyId, key: "cleanup", name: "Cleanup fixture", scope: "user", ownerUserId: "alice", userSecretDefinitionId: definition.id }).returning(); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice", credentialSecretRefs: [{ secretId: secret.id, configPath: "oauth.access_token" }] }).returning(); + await toolAccessService(db).createConnectionGrantDelegation(connectionId, grant.id, agentId, "alice"); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayRevoke = new Promise(resolve => { resume = resolve; }); + const cleanupStarted = new Promise(resolve => { started = resolve; }); + const revocation = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + if (writer === "revocation") await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + else await tx.select().from(toolConnections).where(eq(toolConnections.id, connectionId)).for("update"); + locked(); await mayRevoke; + const service = toolAccessService(tx as unknown as Db, { remoteHttpEndpointLookup: async () => [{ address: "8.8.8.8", family: 4 }] }); + return writer === "revocation" ? service.revokeConnectionGrant(connectionId, grant.id) : service.updateConnection(connectionId, { name: "Concurrent settings" }); + }); + await held; + const cleanup = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + const service = accessService(tx as unknown as Db); + return status === "suspended" ? service.updateMember(companyId, member.id, { status }) : service.archiveMember(companyId, member.id); + }); + const completed = Promise.allSettled([revocation, cleanup]); + try { + const pid = await cleanupStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + expect((await completed).map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect((await db.select().from(companyMemberships).where(eq(companyMemberships.id, member.id)))[0].status).toBe(status); + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("revoked"); + expect(await db.select().from(connectionGrantDelegations).where(eq(connectionGrantDelegations.grantId, grant.id))).toEqual([]); + expect(await db.select().from(companySecrets).where(eq(companySecrets.id, secret.id))).toEqual([]); + if (writer === "settings") expect((await db.select().from(toolConnections).where(eq(toolConnections.id, connectionId)))[0].name).toBe("Concurrent settings"); + }, 15000); + it("orders audience replacement after membership cleanup without reversing grant locks", async () => { + await db.insert(companyMemberships).values({ companyId, principalType: "user", principalId: "owner", membershipRole: "owner", status: "active" }); + const members = await db.insert(companyMemberships).values(["alice", "bob"].map(principalId => ({ companyId, principalType: "user", principalId, membershipRole: "member", status: "active" }))).returning(); + const member = members.find(row => row.principalId === "alice")!; + const [definition] = await db.insert(userSecretDefinitions).values({ companyId, key: "audience", name: "Audience fixture" }).returning(); + const [secret] = await db.insert(companySecrets).values({ companyId, key: "audience", name: "Audience fixture", scope: "user", userSecretDefinitionId: definition.id, ownerUserId: "alice" }).returning(); + await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice", credentialSecretRefs: [{ secretId: secret.id, configPath: "oauth.access_token" }] }); + const [organization] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "organization", isDefault: true }).returning(); + await db.insert(connectionGrantMembers).values({ companyId, grantId: organization.id, subjectType: "user", subjectId: "alice" }); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const maySuspend = new Promise(resolve => { resume = resolve; }); + const audienceStarted = new Promise(resolve => { started = resolve; }); + const cleanup = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(companyMemberships).where(eq(companyMemberships.id, member.id)).for("update"); + locked(); await maySuspend; + return accessService(tx as unknown as Db).updateMember(companyId, member.id, { status: "suspended" }); + }); + await held; + const replacement = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return toolAccessService(tx as unknown as Db).replaceConnectionGrantMembers(connectionId, organization.id, ["bob"]); + }); + const completed = Promise.allSettled([cleanup, replacement]); + try { + const pid = await audienceStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + expect((await completed).map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect((await db.select().from(companyMemberships).where(eq(companyMemberships.id, member.id)))[0].status).toBe("suspended"); + expect((await db.select().from(connectionGrantMembers).where(eq(connectionGrantMembers.grantId, organization.id))).map(row => row.subjectId)).toEqual(["bob"]); + }, 15000); + it("invalidates only the owner of an agent secret binding", async () => { + const [secret] = await db.insert(companySecrets).values({ companyId, key: "binding", name: "Binding fixture" }).returning(); + const before = (await events()).length; + const [binding] = await db.insert(companySecretBindings).values({ companyId, secretId: secret.id, targetType: "agent", targetId: agentId, configPath: "env.FIXTURE" }).returning(); + await db.update(companySecretBindings).set({ versionSelector: "2" }).where(eq(companySecretBindings.id, binding.id)); + await db.delete(companySecretBindings).where(eq(companySecretBindings.id, binding.id)); + expect((await events()).slice(before).map(event => event.resourceId)).toEqual([agentId, agentId, agentId]); + }); + it("allows an agent configuration save to finish while a connector refresh waits on that agent", async () => { + const higher = [agentId, peerId].sort().at(-1)!; + const [secret] = await db.insert(companySecrets).values({ companyId, key: "concurrent", name: "Concurrent fixture" }).returning(); + await db.insert(companySecretBindings).values({ companyId, secretId: secret.id, targetType: "agent", targetId: higher, configPath: "env.FIXTURE" }); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const agentLocked = new Promise(resolve => { locked = resolve; }); + const maySave = new Promise(resolve => { resume = resolve; }); + const connectorStarted = new Promise(resolve => { started = resolve; }); + const save = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(agents).where(eq(agents.id, higher)).for("update"); + locked(); await maySave; + await updateAgentConfigurationInTransaction(tx as unknown as Db, higher, { adapterConfig: { env: {} } }); + }); + await agentLocked; + const connector = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + await tx.update(toolConnections).set({ enabled: false }).where(eq(toolConnections.id, connectionId)); + }); + try { + const pid = await connectorStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); await Promise.all([save, connector]); } + expect(await db.select().from(companySecretBindings).where(eq(companySecretBindings.targetId, higher))).toEqual([]); + expect((await db.select().from(toolConnections).where(eq(toolConnections.id, connectionId)))[0].enabled).toBe(false); + }, 15000); + it("ignores Vercel verification timestamps while retaining credential changes", async () => { + const credential = { provider: "vercel_connect" as const, subjectType: "user" as const, subjectId: "alice", tokenId: "fixture-token", expiresAt: "2099-01-01T00:00:00.000Z", lastVerifiedAt: "2000-01-01T00:00:00.000Z" }; + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice", externalCredential: credential }).returning(); + const before = await events(); + await db.update(connectionGrants).set({ externalCredential: { ...credential, lastVerifiedAt: "2000-01-02T00:00:00.000Z" } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toEqual(before); + await db.update(connectionGrants).set({ externalCredential: { ...credential, tokenId: "rotated-fixture-token" } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toHaveLength(before.length + 2); + }); + it("ignores GitHub webhook health while retaining repository access changes", async () => { + const github = { userId: "fixture-user", login: "fixture", installationCount: 1, repositoryCount: 1, repositorySelection: "selected" as const, installationIds: ["1"], installationOwnerLogins: ["fixture"], accessRevision: "initial", lastWebhookAt: "2000-01-01T00:00:00.000Z", webhookHealth: "pending" as const }; + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "user", subjectUserId: "alice", providerTenant: { github } }).returning(); + const before = await events(); + await db.update(connectionGrants).set({ providerTenant: { github: { ...github, lastWebhookAt: "2000-01-02T00:00:00.000Z", webhookHealth: "healthy" } } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toEqual(before); + await db.update(connectionGrants).set({ providerTenant: { github: { ...github, accessRevision: "changed", repositoryCount: 0, repositorySelection: "none", installationIds: [] } } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toHaveLength(before.length + 2); + }); + it("ignores OAuth grant lease acquisition and release while retaining access changes", async () => { + const oauth = { scopes: ["read"], tokenEndpoint: "https://oauth.example.test/token" }; + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "organization", providerTenant: { oauth } }).returning(); + const before = await events(); + await db.update(connectionGrants).set({ providerTenant: { oauth: { ...oauth, refreshLease: { id: "fixture-lease", expiresAt: "2099-01-01T00:00:00.000Z" } } } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toEqual(before); + await db.update(connectionGrants).set({ providerTenant: { oauth } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toEqual(before); + await db.update(connectionGrants).set({ providerTenant: { oauth: { ...oauth, scopes: ["read", "write"] } } }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toHaveLength(before.length + 2); + }); + it("releases removal agent locks when a concurrent credential writer holds the secret", async () => { + const [secret] = await db.insert(companySecrets).values({ companyId, key: "busy-delete", name: "Busy deletion fixture", status: "deleted" }).returning(); + await db.update(toolConnections).set({ credentialSecretRefs: [{ secretId: secret.id, configPath: "token" }] }).where(eq(toolConnections.id, connectionId)); + let locked!: () => void; let resume!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayWrite = new Promise(resolve => { resume = resolve; }); + const writer = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(companySecrets).where(eq(companySecrets.id, secret.id)).for("no key update"); + locked(); await mayWrite; + await tx.update(companySecrets).set({ latestVersion: 2 }).where(eq(companySecrets.id, secret.id)); + }); + await held; + let result: PromiseSettledResult | undefined; + const removal = Promise.allSettled([secretService(db).remove(secret.id)]).then(rows => { result = rows[0]; }); + try { + await vi.waitFor(() => expect(result).toBeDefined(), { timeout: 5000 }); + expect(result).toMatchObject({ status: "rejected", reason: { status: 409, details: { retryable: true } } }); + } finally { resume(); await writer; await removal; } + const [remaining] = await db.select().from(companySecrets).where(eq(companySecrets.id, secret.id)); + expect(remaining.latestVersion).toBe(2); + await expect(secretService(db).remove(secret.id)).resolves.toMatchObject({ id: secret.id }); + }, 15000); + it("orders secret deletion before cascading bindings against agent configuration saves", async () => { + const [secret] = await db.insert(companySecrets).values({ companyId, key: "delete-bound", name: "Deletion fixture" }).returning(); + await db.insert(companySecretBindings).values({ companyId, secretId: secret.id, targetType: "agent", targetId: agentId, configPath: "env.FIXTURE" }); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const maySave = new Promise(resolve => { resume = resolve; }); + const deletionStarted = new Promise(resolve => { started = resolve; }); + const save = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(agents).where(eq(agents.id, agentId)).for("no key update"); + locked(); await maySave; + return updateAgentConfigurationInTransaction(tx as unknown as Db, agentId, { adapterConfig: { env: {} } }); + }); + await held; + const deletion = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return secretService(tx as unknown as Db).remove(secret.id); + }); + const completed = Promise.allSettled([save, deletion]); + try { + const pid = await deletionStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + const results = await completed; + for (const result of results) if (result.status === "rejected") throw result.reason; + expect(await db.select().from(companySecrets).where(eq(companySecrets.id, secret.id))).toEqual([]); + expect(await db.select().from(companySecretBindings).where(eq(companySecretBindings.secretId, secret.id))).toEqual([]); + }, 15000); + it("captures grant revocation and referenced credential rotation without storing credentials in events", async () => { + const [secret] = await db.insert(companySecrets).values({ companyId, key: "fixture", name: "Fixture secret" }).returning(); + const [grant] = await db.insert(connectionGrants).values({ companyId, connectionId, kind: "organization", credentialSecretRefs: [{ secretId: secret.id, configPath: "token" }] }).returning(); + const before = (await events()).length; + await db.update(companySecrets).set({ latestVersion: 2 }).where(eq(companySecrets.id, secret.id)); + expect(await events()).toHaveLength(before + 2); + await db.update(connectionGrants).set({ status: "revoked", revokedAt: new Date() }).where(eq(connectionGrants.id, grant.id)); + expect(await events()).toHaveLength(before + 4); + expect(Object.keys((await events()).at(-1)!).sort()).toEqual(["action", "companyId", "createdAt", "id", "resourceId", "resourceType"]); + const unrelated = await db.insert(companySecrets).values({ companyId, key: "unrelated", name: "Unrelated" }).returning(); + const unchanged = (await events()).length; + await db.update(companySecrets).set({ latestVersion: 2 }).where(eq(companySecrets.id, unrelated[0].id)); + expect(await events()).toHaveLength(unchanged); + }); + +}); diff --git a/server/src/__tests__/railway-connection.test.ts b/server/src/__tests__/railway-connection.test.ts index a2834338497..ad12c96b316 100644 --- a/server/src/__tests__/railway-connection.test.ts +++ b/server/src/__tests__/railway-connection.test.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import { and, eq } from "drizzle-orm"; +import { and, eq, sql } from "drizzle-orm"; import { afterAll, beforeAll, describe, expect, it, vi } from "vitest"; import { agents, approvals, companies, companyMemberships, companySecrets, connectionGrants, createDb, heartbeatRuns, issues, toolCatalogEntries, toolActionRequests, toolConnections, toolPolicies, toolProfileBindings, toolProfiles, toolAccessAuditEvents } from "@paperclipai/db"; import { toolAccessService } from "../services/tool-access.js"; @@ -132,6 +132,44 @@ const initialTools = [ expect(retired.every((entry) => entry.status === "disabled")).toBe(true); }); + it("orders concurrent Railway reconnect and SSH setup without any company agents", async () => { + const f = await fixture(); + const [grant] = await db.select().from(connectionGrants).where(eq(connectionGrants.connectionId, f.connectionId)); + const start = await f.service.startOAuth(f.company.id, f.connectionId, { redirectUri, actor }); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayReconnect = new Promise(resolve => { resume = resolve; }); + const sshStarted = new Promise(resolve => { started = resolve; }); + const service = (database: typeof db) => toolAccessService(database, { remoteHttpRequest: f.request, remoteHttpEndpointLookup: async () => [{ address: "8.8.8.8", family: 4 }] }); + const callback = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + locked(); await mayReconnect; + return service(tx as unknown as typeof db).completeOAuthCallback({ state: new URL(start.authorizationUrl).searchParams.get("state")!, code: "concurrent-reconnect", iss: railwayAuthorizationMetadata.issuer, redirectUri, actor }); + }); + await held; + const ssh = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return service(tx as unknown as typeof db).configureRailwaySsh(f.connectionId, f.company.id, { action: "prepare", grantId: grant.id }, actor); + }); + const completed = Promise.allSettled([callback, ssh]); + try { + const pid = await sshStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + const results = await completed; + for (const result of results) if (result.status === "rejected") throw result.reason; + expect(results.map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect((await f.service.getConnection(f.connectionId)).config.railwaySsh).toMatchObject({ grantId: grant.id, publicKey: expect.stringMatching(/^ssh-ed25519 /), enabled: false }); + const [updated] = await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)); + expect(updated.credentialSecretRefs.map(ref => ref.configPath)).toEqual(expect.arrayContaining(["oauth.access_token", "oauth.refresh_token", "railway.ssh_private_key"])); + }, 20000); + it("preserves the dedicated SSH grant key on reconnect and removes it while disconnected", async () => { const f = await fixture(); const [grant] = await db.select().from(connectionGrants).where(eq(connectionGrants.connectionId, f.connectionId)); diff --git a/server/src/__tests__/tool-access-service.test.ts b/server/src/__tests__/tool-access-service.test.ts index 7ed7118cc13..f2213242972 100644 --- a/server/src/__tests__/tool-access-service.test.ts +++ b/server/src/__tests__/tool-access-service.test.ts @@ -9376,6 +9376,69 @@ describeEmbeddedPostgres("tool access service", () => { } }); + it("orders managed reconnect with refresh and rejects superseded secret writes", async () => { + const company = await createCompany(db); + await createAgent(db, company.id); + const userId = `managed-refresh-${randomUUID()}`; + await grantBoardUser(db, company.id, userId, [], "owner"); + const actor = { actorType: "user" as const, actorId: userId }; + const connector = fakeGmailConnector(company.id, userId); + const refreshDb = createDb(tempDb!.connectionString, { maxConnections: 1 }); + const service = createTestToolAccessService(db, { paperclipCloudConnector: connector }); + const definition = getConnectableAppDefinition("gmail")!; + const availability = definition.ownershipAvailability; + definition.ownershipAvailability = { ...availability, platform_shared: true }; + mockToolsList([]); + let allowRefresh!: () => void; let allowReconnect!: () => void; + try { + const connected = await service.connectGalleryApp(company.id, { galleryKey: "gmail", connectionMethodKey: "paperclip-draft", grantKind: "user", name: "Managed concurrent refresh" }, actor); + const start = () => service.startOAuth(company.id, connected.connectionId, { redirectUri: "https://paperclip.example/api/tools/oauth/cloud-connector/callback", actor }); + const initial = await start(); + await service.completePaperclipCloudConnectorCallback({ state: new URL(initial.authorizationUrl).searchParams.get("state")!, claimId: "initial", actor }); + const [grant] = await db.select().from(connectionGrants).where(and(eq(connectionGrants.connectionId, connected.connectionId), eq(connectionGrants.subjectUserId, userId))); + const accessId = grant.credentialSecretRefs.find(ref => ref.configPath === "oauth.access_token")!.secretId; + const [before] = await db.select().from(companySecrets).where(eq(companySecrets.id, accessId)); + const reconnect = await start(); + const credentials = await connector.refresh({ subject: userId, companyId: company.id, profile: "gmail.draft", refreshToken: "fixture" }); + let refreshing!: () => void; + const providerCalled = new Promise(resolve => { refreshing = resolve; }); + const mayRefresh = new Promise(resolve => { allowRefresh = resolve; }); + vi.mocked(connector.refresh).mockImplementation(async () => { refreshing(); await mayRefresh; return credentials; }); + const [backend] = await refreshDb.execute(sql`SELECT pg_backend_pid() AS pid`); + const refresh = createTestToolAccessService(refreshDb, { paperclipCloudConnector: connector }).refreshOAuthGrantCredentials({ companyId: company.id, connectionId: connected.connectionId, grantId: grant.id, forceRefresh: true, actor }); + const refreshResult = Promise.allSettled([refresh]); + await providerCalled; + let locked!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayReconnect = new Promise(resolve => { allowReconnect = resolve; }); + const callback = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + locked(); await mayReconnect; + return createTestToolAccessService(tx as unknown as Db, { paperclipCloudConnector: connector }).completePaperclipCloudConnectorCallback({ state: new URL(reconnect.authorizationUrl).searchParams.get("state")!, claimId: "reconnect", actor }); + }); + const callbackResult = Promise.allSettled([callback]); + await held; + allowRefresh(); + try { + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${Number(backend.pid)}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { allowReconnect(); } + const [completion] = await callbackResult; + if (completion.status === "rejected") throw completion.reason; + const [refreshCompletion] = await refreshResult; + expect(refreshCompletion).toMatchObject({ status: "rejected", reason: { status: 409, details: { code: "oauth_refresh_superseded", retryable: true } } }); + expect((await db.select().from(companySecrets).where(eq(companySecrets.id, accessId)))[0].latestVersion).toBe(before.latestVersion + 1); + expect((await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)))[0].status).toBe("active"); + } finally { + allowRefresh?.(); allowReconnect?.(); + definition.ownershipAvailability = availability; + await refreshDb.$client.end({ timeout: 0 }).catch(() => undefined); + } + }, 20000); + it("keeps brokered OAuth state retryable until credentials are durably stored", async () => { const company = await createCompany(db); const userId = `gmail-retry-${randomUUID()}`; @@ -10617,6 +10680,133 @@ describeEmbeddedPostgres("tool access service", () => { } }, 20000); + it.each(["sharing", "settings", "application"] as const)("orders personal OAuth reconnect credential rotation with concurrent %s", async change => { + vi.stubEnv("PAPERCLIP_TOOL_OAUTH_SLACK_CLIENT_ID", "slack-client-id"); + vi.stubEnv("PAPERCLIP_TOOL_OAUTH_SLACK_CLIENT_SECRET", "slack-client-secret"); + const company = await createCompany(db); + await createAgent(db, company.id); + const userId = `oauth-sharer-${randomUUID()}`; + await grantBoardUser(db, company.id, userId, [], "owner"); + const service = createTestToolAccessService(db); + const actor = { actorType: "user" as const, actorId: userId }; + const connected = await service.connectGalleryApp(company.id, { galleryKey: "slack", name: "Concurrent sharing", grantKind: "user" }, actor); + const connection = await service.getConnection(connected.connectionId, company.id); + const redirectUri = "https://paperclip.example/api/tools/oauth/callback"; + vi.spyOn(globalThis, "fetch").mockImplementation(async url => { + const href = String(url); + if (href === "https://slack.com/api/oauth.v2.access") return mcpHttpResponse(oauthToken("fixture-access-token", "fixture-refresh-token")); + if (href === "https://mcp.slack.com/mcp") return mcpHttpResponse(catalogResponse([{ name: "search_messages", annotations: { readOnlyHint: true } }])); + throw new Error(`unexpected fetch ${href}`); + }); + const start = () => service.startOAuth(company.id, connected.connectionId, { redirectUri, actor, subjectUserId: userId }); + const initial = await start(); + await service.completeOAuthCallback({ state: new URL(initial.authorizationUrl).searchParams.get("state")!, code: "initial", redirectUri, actor }); + const [grant] = await db.select().from(connectionGrants).where(and(eq(connectionGrants.connectionId, connected.connectionId), eq(connectionGrants.subjectUserId, userId))); + const reconnect = await start(); + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayShare = new Promise(resolve => { resume = resolve; }); + const reconnectStarted = new Promise(resolve => { started = resolve; }); + const sharing = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + if (change === "sharing") await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + else if (change === "application") await tx.select().from(toolApplications).where(eq(toolApplications.id, connection.applicationId)).for("update"); + else await tx.select().from(toolConnections).where(eq(toolConnections.id, connected.connectionId)).for("update"); + locked(); await mayShare; + const writer = createTestToolAccessService(tx as unknown as Db); + return change === "sharing" + ? writer.finalizeOAuthAccess(company.id, connected.connectionId, { grantKind: "organization" }, actor) + : change === "application" + ? writer.updateApplication(connection.applicationId, { name: "Application saved concurrently" }) + : writer.updateConnection(connected.connectionId, { name: "Settings saved concurrently" }); + }); + await held; + const callback = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return createTestToolAccessService(tx as unknown as Db).completeOAuthCallback({ state: new URL(reconnect.authorizationUrl).searchParams.get("state")!, code: "reconnect", redirectUri, actor }); + }); + const completed = Promise.allSettled([sharing, callback]); + try { + const pid = await reconnectStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + const results = await completed; + for (const result of results) if (result.status === "rejected") throw result.reason; + expect(results.map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect(await service.getConnection(connected.connectionId, company.id)).toMatchObject({ credentialPolicy: "per_user", status: "active" }); + if (change === "sharing") expect((await service.listConnectionGrants(connected.connectionId, company.id)).grants).toEqual(expect.arrayContaining([expect.objectContaining({ kind: "organization", status: "active" })])); + else if (change === "application") { + const [application] = await db.select().from(toolApplications).where(eq(toolApplications.id, connection.applicationId)); + expect(application.name).toBe("Application saved concurrently"); + } else expect((await service.getConnection(connected.connectionId, company.id)).name).toBe("Settings saved concurrently"); + }, 15000); + + it.each(["app finishing", "new tool discovery"] as const)("orders %s with OAuth reconnect before either locks the connection", async change => { + vi.stubEnv("PAPERCLIP_TOOL_OAUTH_SLACK_CLIENT_ID", "slack-client-id"); + vi.stubEnv("PAPERCLIP_TOOL_OAUTH_SLACK_CLIENT_SECRET", "slack-client-secret"); + const company = await createCompany(db); + const userId = `oauth-sharer-${randomUUID()}`; + await grantBoardUser(db, company.id, userId, [], "owner"); + const service = createTestToolAccessService(db); + const actor = { actorType: "user" as const, actorId: userId }; + const connected = await service.connectGalleryApp(company.id, { galleryKey: "slack", name: "Concurrent sharing", grantKind: "user" }, actor); + const connection = await service.getConnection(connected.connectionId, company.id); + const redirectUri = "https://paperclip.example/api/tools/oauth/callback"; + let discoverNewTool = false; + vi.spyOn(globalThis, "fetch").mockImplementation(async url => { + const href = String(url); + if (href === "https://slack.com/api/oauth.v2.access") return mcpHttpResponse(oauthToken("fixture-access-token", "fixture-refresh-token")); + if (href === "https://mcp.slack.com/mcp") return mcpHttpResponse(catalogResponse([{ name: "search_messages", annotations: { readOnlyHint: true } }, ...(discoverNewTool ? [{ name: "new_search", annotations: { readOnlyHint: true } }] : [])])); + throw new Error(`unexpected fetch ${href}`); + }); + const start = () => service.startOAuth(company.id, connected.connectionId, { redirectUri, actor, subjectUserId: userId }); + const initial = await start(); + await service.completeOAuthCallback({ state: new URL(initial.authorizationUrl).searchParams.get("state")!, code: "initial", redirectUri, actor }); + const reconnect = await start(); + discoverNewTool = change === "new tool discovery"; + let locked!: () => void; let release!: () => void; + const held = new Promise(resolve => { locked = resolve; }); + const resume = new Promise(resolve => { release = resolve; }); + const blocker = db.transaction(async tx => { + await tx.select().from(toolApplications).where(eq(toolApplications.id, connection.applicationId)).for("update"); + locked(); await resume; + }); + await held; + const pids: number[] = []; + const transaction = db.transaction.bind(db); + const transactionSpy = vi.spyOn(db, "transaction").mockImplementation((async (operation, config) => transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + pids.push(Number(row.pid)); + return operation(tx); + }, config)) as typeof db.transaction); + const run = (work: (service: ReturnType) => Promise) => work(createTestToolAccessService(db)); + const waitForLock = (index: number) => vi.waitFor(async () => { + expect(pids.length).toBeGreaterThan(index); + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pids[index]}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + const callback = run(writer => writer.completeOAuthCallback({ state: new URL(reconnect.authorizationUrl).searchParams.get("state")!, code: "reconnect", redirectUri, actor })); + let finishing: Promise | undefined; + try { + await waitForLock(0); + finishing = run(writer => change === "new tool discovery" ? writer.refreshCatalog(connected.connectionId) : writer.finishGalleryAppConnection(company.id, connected.connectionId, { enabledCatalogEntryIds: [], askFirstCatalogEntryIds: [], access: "all_agents" }, actor)); + await waitForLock(1); + } finally { release(); await blocker; } + const results = await Promise.allSettled([callback, finishing]); + for (const result of results) if (result.status === "rejected") throw result.reason; + transactionSpy.mockRestore(); + expect(results.map(result => result.status)).toEqual(["fulfilled", "fulfilled"]); + expect(await service.getConnection(connected.connectionId, company.id)).toMatchObject({ credentialPolicy: "per_user", status: "active" }); + if (change === "new tool discovery") expect(await db.select().from(toolCatalogEntries).where(eq(toolCatalogEntries.connectionId, connected.connectionId))).toEqual(expect.arrayContaining([expect.objectContaining({ toolName: "new_search" })])); + else expect(await db.select().from(toolProfiles).where(and(eq(toolProfiles.companyId, company.id), eq(toolProfiles.profileKey, `app:${connected.connectionId}`)))).toHaveLength(1); + }, 15000); + it("promotes a personal OAuth identity only after Everyone in the company is chosen", async () => { vi.stubEnv("PAPERCLIP_TOOL_OAUTH_SLACK_CLIENT_ID", "slack-client-id"); vi.stubEnv( @@ -17583,6 +17773,51 @@ describeEmbeddedPostgres("tool access service", () => { ]); }); + it("orders static-key reconnect with concurrent personal grant revocation", async () => { + const company = await createCompany(db); + await createAgent(db, company.id); + const userId = `key-reconnect-${randomUUID()}`; + const actor = { actorType: "user" as const, actorId: userId }; + const service = createTestToolAccessService(db); + mockToolsList([readTool("list_zaps", "List")]); + await withGalleryServerUrl("github", PUBLIC_MCP_FIXTURE_URL, async () => { + const connected = await service.connectGalleryApp(company.id, { galleryKey: "github", connectionMethodKey: "mcp-key", name: "Key reconnect fixture", grantKind: "user", credentialValues: { "credentials.authorization": "fixture-old-key" } }, actor); + const { grants } = await service.listConnectionGrants(connected.connectionId, company.id); + const grant = grants.find(row => row.kind === "user")!; + let locked!: () => void; let resume!: () => void; let started!: (pid: number) => void; + const held = new Promise(resolve => { locked = resolve; }); + const mayRevoke = new Promise(resolve => { resume = resolve; }); + const reconnectStarted = new Promise(resolve => { started = resolve; }); + const revocation = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + await tx.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)).for("update"); + locked(); await mayRevoke; + return createTestToolAccessService(tx as unknown as Db).revokeConnectionGrant(connected.connectionId, grant.id, actor); + }); + await held; + const reconnect = db.transaction(async tx => { + await tx.execute(sql`SET LOCAL lock_timeout = '8s'`); + const [row] = await tx.execute(sql`SELECT pg_backend_pid() AS pid`); + started(Number(row.pid)); + return createTestToolAccessService(tx as unknown as Db).reconnectGalleryApp(connected.connectionId, company.id, { credentialValues: { "credentials.authorization": "fixture-new-key" } }, actor); + }); + const completed = Promise.allSettled([revocation, reconnect]); + try { + const pid = await reconnectStarted; + await vi.waitFor(async () => { + const [row] = await db.execute(sql`SELECT wait_event_type FROM pg_stat_activity WHERE pid = ${pid}`); + expect(row.wait_event_type).toBe("Lock"); + }, { timeout: 5000 }); + } finally { resume(); } + const results = await completed; + for (const result of results) if (result.status === "rejected") throw result.reason; + const [updatedGrant] = await db.select().from(connectionGrants).where(eq(connectionGrants.id, grant.id)); + expect(updatedGrant.status).toBe("active"); + const [secret] = await db.select().from(companySecrets).where(eq(companySecrets.id, grant.credentialSecretRefs[0]!.secretId)); + expect(secret.latestVersion).toBe(2); + }); + }, 15000); + it("reconnects a personal key on the existing user grant without creating an organization credential", async () => { const company = await createCompany(db); const service = createTestToolAccessService(db); diff --git a/server/src/services/access.ts b/server/src/services/access.ts index 7cecb4cdf5e..fced6f2c698 100644 --- a/server/src/services/access.ts +++ b/server/src/services/access.ts @@ -1,6 +1,7 @@ import { and, eq, inArray, ne, notInArray, sql } from "drizzle-orm"; import type { Db } from "@paperclipai/db"; import { + agents, companyMemberships, companySecretBindings, companySecrets, @@ -36,6 +37,17 @@ type MemberArchiveInput = { export function accessService(db: Db) { const authorization = authorizationService(db); + async function memberAccessTransaction(operation: (tx: Parameters[0]>[0]) => Promise): Promise { + for (let attempt = 0; ; attempt++) { + try { return await db.transaction(operation); } + catch (error) { + const failure = error as { code?: string; cause?: { code?: string } }; + if ((failure?.cause?.code ?? failure?.code) !== "55P03") throw error; + if (attempt >= 2) throw conflict("Member access changed during cleanup. Try again.", { retryable: true }); + } + } + } + async function sweepMemberConnectionAccess( tx: Parameters[0]>[0], companyId: string, @@ -229,6 +241,27 @@ export function accessService(db: Db) { const connectionSecretIdsToRemove = new Set( ownedSecretIds.filter((secretId) => !sharedConnectionSecretIds.has(secretId)), ); + const affectedGrantIds = [...new Set([...grantIds, ...grantRefs + .filter(grant => affectedConnections.has(grant.connectionId)) + .map(grant => grant.id)])]; + if (affectedGrantIds.length > 0) { + await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.companyId, companyId), inArray(connectionGrants.id, affectedGrantIds))) + .orderBy(connectionGrants.id).for("update"); + } + if (affectedConnectionIds.length > 0) { + await tx.select({ id: toolConnections.id }).from(toolConnections) + .where(and(eq(toolConnections.companyId, companyId), inArray(toolConnections.id, affectedConnectionIds))) + .orderBy(toolConnections.id).for("update"); + } + if (secretIdsToDelete.length > 0) { + await tx.select({ id: companySecrets.id }).from(companySecrets) + .where(and(eq(companySecrets.companyId, companyId), inArray(companySecrets.id, secretIdsToDelete))) + .orderBy(companySecrets.id).for("update", { noWait: true }); + } + await tx.select({ id: agents.id }).from(agents) + .where(and(eq(agents.companyId, companyId), notInArray(agents.status, ["pending_approval", "terminated"]))) + .orderBy(agents.id).for("no key update"); const removedDelegations = grantIds.length === 0 ? [] : await tx .delete(connectionGrantDelegations) .where(and( @@ -448,10 +481,11 @@ export function accessService(db: Db) { grants: GrantInput[], grantedByUserId: string | null, ) { - const member = await getMemberById(companyId, memberId); - if (!member) return null; - - await db.transaction(async (tx) => { + return db.transaction(async (tx) => { + const member = await tx.select().from(companyMemberships) + .where(and(eq(companyMemberships.companyId, companyId), eq(companyMemberships.id, memberId))) + .for("update").then(rows => rows[0] ?? null); + if (!member) return null; await tx .delete(principalPermissionGrants) .where( @@ -475,9 +509,8 @@ export function accessService(db: Db) { })), ); } + return member; }); - - return member; } async function updateMemberAndPermissions( @@ -490,7 +523,7 @@ export function accessService(db: Db) { }, grantedByUserId: string | null, ) { - return db.transaction(async (tx) => { + return memberAccessTransaction(async (tx) => { await tx.execute(sql` select ${companyMemberships.id} from ${companyMemberships} @@ -643,7 +676,7 @@ export function accessService(db: Db) { } async function archiveMember(companyId: string, memberId: string, input: MemberArchiveInput = {}) { - return db.transaction(async (tx) => { + return memberAccessTransaction(async (tx) => { await tx.execute(sql` select ${companyMemberships.id} from ${companyMemberships} @@ -777,13 +810,14 @@ export function accessService(db: Db) { ) { const target = new Set(companyIds); - await db.transaction(async (tx) => { + await memberAccessTransaction(async (tx) => { // Serialize every company-access removal/reactivation with personal OAuth // completion, which locks the same membership row before writing secrets. const existing = await tx .select() .from(companyMemberships) .where(and(eq(companyMemberships.principalType, "user"), eq(companyMemberships.principalId, userId))) + .orderBy(companyMemberships.companyId, companyMemberships.id) .for("update"); const existingByCompany = new Map(existing.map((row) => [row.companyId, row])); const toArchive = existing.filter((row) => !target.has(row.companyId) && row.status !== "archived"); @@ -1057,7 +1091,7 @@ export function accessService(db: Db) { status?: "pending" | "active" | "suspended"; }, ) { - return db.transaction(async (tx) => { + return memberAccessTransaction(async (tx) => { await tx.execute(sql` select ${companyMemberships.id} from ${companyMemberships} diff --git a/server/src/services/chat-teams-file-publication.test.ts b/server/src/services/chat-teams-file-publication.test.ts index 72f48c6f93e..bab8917acd7 100644 --- a/server/src/services/chat-teams-file-publication.test.ts +++ b/server/src/services/chat-teams-file-publication.test.ts @@ -1,6 +1,6 @@ import { randomUUID } from "node:crypto"; import { afterAll, beforeAll, describe, expect, it } from "vitest"; -import { eq } from "drizzle-orm"; +import { and, eq } from "drizzle-orm"; import { agents, assets, @@ -17,6 +17,7 @@ import { issueAttachments, issueComments, issues, + resourceLifecycleEvents, startEmbeddedPostgresTestDatabase, toolApplications, toolConnections, @@ -289,6 +290,18 @@ suite("Teams same-transaction publication projection (real PostgreSQL)", () => { }; } + it("ignores file-publication bookkeeping and journals endpoint instruction changes", async () => { + const f = await fixture("delivered"); + const events = () => db.select().from(resourceLifecycleEvents).where(and(eq(resourceLifecycleEvents.companyId, f.companyId), eq(resourceLifecycleEvents.resourceType, "agent_runtime"))).orderBy(resourceLifecycleEvents.id); + const before = await events(); + await f.project(); + expect((await f.endpoint()).lastPublicationAt).not.toBeNull(); + expect(await events()).toEqual(before); + await db.update(chatEndpoints).set({ communicationInstructions: "Use fixture replies" }) + .where(eq(chatEndpoints.id, (await f.endpoint()).id)); + expect(await events()).toHaveLength(before.length + 1); + }); + it.each([ ["consent_pending", "pending"], ["consent_sending", "streaming"], diff --git a/server/src/services/connection-intents.ts b/server/src/services/connection-intents.ts index d02b27c4e87..bca005ab898 100644 --- a/server/src/services/connection-intents.ts +++ b/server/src/services/connection-intents.ts @@ -15,6 +15,7 @@ import { aiConnectionTaskPins, companies, toolConnections, + connectionGrants, toolCatalogEntries, toolProfiles, toolProfileEntries, @@ -994,6 +995,9 @@ export function connectionIntentService(db: Db) { if (payload.accessRequest.connectionId !== connectionId) throw conflict("Use the connection named in this access request"); throw forbidden("Granting agent tool access requires connection-management authority"); } + await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.connectionId, connectionId), eq(connectionGrants.companyId, loaded.issue.companyId))) + .orderBy(connectionGrants.id).for("update"); await lockToolConnectionRuntimeInputs(tx, loaded.issue.companyId, connectionId); let selectedConnection = await txAccess.getConnection(connectionId, loaded.issue.companyId); const selectedApplication = await txAccess.getApplication( diff --git a/server/src/services/connectors/slack-search-oauth.ts b/server/src/services/connectors/slack-search-oauth.ts index 934977dda1b..a08363d0b18 100644 --- a/server/src/services/connectors/slack-search-oauth.ts +++ b/server/src/services/connectors/slack-search-oauth.ts @@ -16,6 +16,7 @@ import { import { z } from "zod"; import { badRequest, + conflict, forbidden, notFound, unprocessable, @@ -43,6 +44,28 @@ export function slackSearchOAuthService( ) { const secrets = secretService(db); const vault = toolAccessService(db); + async function searchConnectionTransaction(companyId: string, connectionId: string, userId: string, + operation: (tx: Parameters[0]>[0]) => Promise): Promise { + for (let attempt = 0; ; attempt++) { + let guarded = false; + try { + return await db.transaction(async tx => { + const grantScope = and(eq(connectionGrants.companyId, companyId), eq(connectionGrants.connectionId, connectionId), + eq(connectionGrants.kind, "user"), eq(connectionGrants.subjectUserId, userId)); + await tx.select({ id: connectionGrants.id }).from(connectionGrants).where(grantScope).orderBy(connectionGrants.id).for("update"); + await tx.select({ id: toolConnections.id }).from(toolConnections) + .where(and(eq(toolConnections.id, connectionId), eq(toolConnections.companyId, companyId))).for("update"); + await tx.select({ id: connectionGrants.id }).from(connectionGrants).where(grantScope).orderBy(connectionGrants.id).for("update", { noWait: true }); + guarded = true; + return operation(tx); + }); + } catch (error) { + const failure = error as { code?: string; cause?: { code?: string } }; + if (guarded || (failure?.cause?.code ?? failure?.code) !== "55P03") throw error; + if (attempt >= 2) throw conflict("Slack search authorization changed. Try again.", { retryable: true }); + } + } + } const redirectUri = () => { if (!publicBaseUrl) throw badRequest( @@ -199,17 +222,7 @@ export function slackSearchOAuthService( /** Search-only credential acquisition; no caller may use this token for writes. */ async accessToken(companyId: string, endpointId: string, userId: string) { const initial = await linked(companyId, endpointId, userId); - return db.transaction(async (tx) => { - await tx - .select({ id: toolConnections.id }) - .from(toolConnections) - .where( - and( - eq(toolConnections.id, initial.connection.id), - eq(toolConnections.companyId, companyId), - ), - ) - .for("update"); + return searchConnectionTransaction(companyId, initial.connection.id, userId, async (tx) => { const [connection] = await tx .select() .from(toolConnections) @@ -559,19 +572,9 @@ export function slackSearchOAuthService( throw forbidden( "Slack token identity does not match the linked account", ); - return db.transaction(async (tx) => { + return searchConnectionTransaction(pending.companyId, row.connection.id, userId, async (tx) => { // Disconnect deletes pending and in-flight states. Consume under the same // connection lock as configuration/refresh so a late callback cannot revive access. - await tx - .select({ id: toolConnections.id }) - .from(toolConnections) - .where( - and( - eq(toolConnections.id, row.connection.id), - eq(toolConnections.companyId, pending.companyId), - ), - ) - .for("update"); const [liveConnection] = await tx .select() .from(toolConnections) @@ -699,17 +702,7 @@ export function slackSearchOAuthService( }, async disconnect(companyId: string, endpointId: string, userId: string) { const row = await endpoint(companyId, endpointId); - await db.transaction(async (tx) => { - await tx - .select({ id: toolConnections.id }) - .from(toolConnections) - .where( - and( - eq(toolConnections.id, row.connection.id), - eq(toolConnections.companyId, companyId), - ), - ) - .for("update"); + await searchConnectionTransaction(companyId, row.connection.id, userId, async (tx) => { await tx .update(connectionGrants) .set({ diff --git a/server/src/services/secrets.ts b/server/src/services/secrets.ts index 8a6718bf1af..6ce96c19739 100644 --- a/server/src/services/secrets.ts +++ b/server/src/services/secrets.ts @@ -3432,7 +3432,24 @@ export function secretService(db: Db | DbTransaction) { } } } - await db.delete(companySecrets).where(eq(companySecrets.id, secretId)); + for (let attempt = 0; ; attempt++) { + try { + await db.transaction(async tx => { + if (secret.scope !== "instance") { + await tx.select({ id: agents.id }).from(agents) + .where(eq(agents.companyId, secret.companyId)).orderBy(agents.id).for("no key update"); + } + await tx.select({ id: companySecrets.id }).from(companySecrets) + .where(eq(companySecrets.id, secretId)).for("update", { noWait: true }); + await tx.delete(companySecrets).where(eq(companySecrets.id, secretId)); + }); + break; + } catch (error) { + const failure = error as { code?: string; cause?: { code?: string } }; + if ((failure?.cause?.code ?? failure?.code) !== "55P03") throw error; + if (attempt >= 2) throw conflict("Secret changed during removal. Retry removal.", { retryable: true }); + } + } return secret; } diff --git a/server/src/services/tool-access.ts b/server/src/services/tool-access.ts index 283519ad9f0..c89cac4c3cc 100644 --- a/server/src/services/tool-access.ts +++ b/server/src/services/tool-access.ts @@ -46,6 +46,7 @@ import { lte, max, ne, + notInArray, or, sql, } from "drizzle-orm"; @@ -11637,6 +11638,14 @@ export function toolAccessService( }, }; const updated = await db.transaction(async (tx) => { + const [current] = await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.id, grant.id), eq(connectionGrants.companyId, grant.companyId), + eq(connectionGrants.status, "active"), + sql`${connectionGrants.providerTenant} -> 'oauth' -> 'refreshLease' ->> 'id' = ${lease.leaseId}`)) + .for("update"); + if (!current) throw conflict("OAuth credentials changed while refresh was in progress", { + code: "oauth_refresh_superseded", retryable: true, + }); const txSecrets = secretService(tx); await txSecrets.rotate( accessRef.secretId, @@ -13724,6 +13733,9 @@ export function toolAccessService( const attemptedConnection = connectionRow; try { await db.transaction(async (tx) => { + if (revivedGrantMutation) await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.id, revivedGrantMutation.current.id), eq(connectionGrants.companyId, companyId))) + .for("update"); const [latestConnection] = await tx .select() .from(toolConnections) @@ -14611,6 +14623,15 @@ export function toolAccessService( ]; const updated = await db.transaction(async (tx) => { + await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.companyId, companyId), eq(connectionGrants.connectionId, connection.id))) + .orderBy(connectionGrants.id).for("update"); + await tx.select({ id: toolApplications.id }).from(toolApplications) + .where(and(eq(toolApplications.id, connection.applicationId), eq(toolApplications.companyId, companyId))) + .for("update"); + await tx.select({ id: toolConnections.id }).from(toolConnections) + .where(and(eq(toolConnections.id, connection.id), eq(toolConnections.companyId, companyId))) + .for("update"); for (const field of providedFields) { const value = input.credentialValues[field.configPath]!.trim(); if (field.placement === "url" && !remoteUrlCredentialMatchesPublicUrl(String(connection.config.url ?? ""), value)) { @@ -15801,7 +15822,8 @@ export function toolAccessService( : eq(connectionGrants.isDefault, true), ), ) - .limit(1); + .limit(1) + .for("update"); await tx.select({ id: toolApplications.id }).from(toolApplications) .where(and(eq(toolApplications.id, connection.applicationId), eq(toolApplications.companyId, connection.companyId))) .for("update"); @@ -16435,7 +16457,8 @@ export function toolAccessService( eq(connectionGrants.subjectUserId, stateRow.subjectUserId!), ), ) - .limit(1); + .limit(1) + .for("update"); await tx.select({ id: toolApplications.id }).from(toolApplications) .where(and(eq(toolApplications.id, connection.applicationId), eq(toolApplications.companyId, connection.companyId))) .for("update"); @@ -16755,6 +16778,10 @@ export function toolAccessService( "Only a company owner, admin, or member with connection-manager permission can share credentials with the organization.", ); } + await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.companyId, connection.companyId), eq(connectionGrants.connectionId, connection.id), + eq(connectionGrants.kind, "organization"), eq(connectionGrants.isDefault, true))) + .for("update"); await tx.select({ id: toolApplications.id }).from(toolApplications) .where(and(eq(toolApplications.id, connection.applicationId), eq(toolApplications.companyId, connection.companyId))) .for("update"); @@ -17148,6 +17175,16 @@ export function toolAccessService( ]; const nowAt = new Date(); await db.transaction(async (tx) => { + await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.companyId, companyId), eq(connectionGrants.connectionId, connection.id), + or(eq(connectionGrants.id, personalGrant.id), and(eq(connectionGrants.kind, "organization"), eq(connectionGrants.isDefault, true))))) + .orderBy(connectionGrants.id).for("update"); + await tx.select({ id: toolApplications.id }).from(toolApplications) + .where(and(eq(toolApplications.id, connection.applicationId), eq(toolApplications.companyId, companyId))) + .for("update"); + await tx.select({ id: toolConnections.id }).from(toolConnections) + .where(and(eq(toolConnections.id, connection.id), eq(toolConnections.companyId, companyId))) + .for("update"); const [existingOrganizationGrant] = await tx .select() .from(connectionGrants) @@ -18489,19 +18526,9 @@ export function toolAccessService( // Serialize replacements before taking the current audience snapshot. // Otherwise a second replacement could read the old rows, wait behind // an in-flight replacement, and then miss locking a newly-added member. - await tx - .select({ id: connectionGrants.id }) - .from(connectionGrants) - .where( - and( - eq(connectionGrants.id, grant.id), - eq(connectionGrants.companyId, connection.companyId), - eq(connectionGrants.connectionId, connection.id), - ), - ) - .for("update"); + await tx.execute(sql`SELECT pg_advisory_xact_lock(hashtextextended(${"paperclip.connection_grant_audience:" + grant.id}, 0))`); const existingAudience = await tx - .select({ subjectId: connectionGrantMembers.subjectId }) + .select() .from(connectionGrantMembers) .where( and( @@ -18564,6 +18591,19 @@ export function toolAccessService( ); } } + await tx + .select({ id: connectionGrants.id }) + .from(connectionGrants) + .where( + and( + eq(connectionGrants.id, grant.id), + eq(connectionGrants.companyId, connection.companyId), + eq(connectionGrants.connectionId, connection.id), + ), + ) + .for("update"); + const existingUserSet = new Set(existingUserIds); + if (requested.length === existingUserSet.size && requested.every(id => existingUserSet.has(id))) return existingAudience; await tx .delete(connectionGrantMembers) .where( @@ -18656,11 +18696,14 @@ export function toolAccessService( eq(connectionGrants.status, "active"), ), ) + .for("update") .limit(1); if (!grant) throw forbidden( "Only the active personal grant owner can create a delegation", ); + await tx.select({ id: toolConnections.id }).from(toolConnections) + .where(eq(toolConnections.id, connection.id)).for("key share"); const [targetAgent] = await tx .select({ id: agents.id }) .from(agents) @@ -18670,6 +18713,7 @@ export function toolAccessService( eq(agents.companyId, connection.companyId), ), ) + .for("no key update") .limit(1); if (!targetAgent) throw notFound("Agent not found"); const [existing] = await tx @@ -18713,16 +18757,28 @@ export function toolAccessService( actor?: ActorInfo, ) => { const connection = await getConnectionRow(idOrUid); - const [delegation] = await db - .delete(connectionGrantDelegations) - .where( - and( - eq(connectionGrantDelegations.id, delegationId), - eq(connectionGrantDelegations.companyId, connection.companyId), - eq(connectionGrantDelegations.grantId, grantId), - ), - ) - .returning(); + const delegation = await db.transaction(async tx => { + const [grant] = await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.id, grantId), eq(connectionGrants.companyId, connection.companyId), eq(connectionGrants.connectionId, connection.id))) + .for("update"); + if (!grant) return undefined; + const [target] = await tx.select({ agentId: connectionGrantDelegations.agentId }).from(connectionGrantDelegations) + .where(and(eq(connectionGrantDelegations.id, delegationId), eq(connectionGrantDelegations.companyId, connection.companyId), eq(connectionGrantDelegations.grantId, grantId))); + if (!target) return undefined; + await tx.select({ id: agents.id }).from(agents) + .where(and(eq(agents.companyId, connection.companyId), eq(agents.id, target.agentId))).for("no key update"); + const [removed] = await tx + .delete(connectionGrantDelegations) + .where( + and( + eq(connectionGrantDelegations.id, delegationId), + eq(connectionGrantDelegations.companyId, connection.companyId), + eq(connectionGrantDelegations.grantId, grantId), + ), + ) + .returning(); + return removed; + }); if (!delegation) throw notFound("Connection grant delegation not found"); const binding = actorBinding(actor); await db.insert(toolAccessAuditEvents).values({ @@ -18852,6 +18908,13 @@ export function toolAccessService( providerRevocation = "local_only_shared_client"; } const grant = await db.transaction(async (tx) => { + const [lockedGrant] = await tx.select({ id: connectionGrants.id }).from(connectionGrants) + .where(and(eq(connectionGrants.id, grantId), eq(connectionGrants.companyId, connection.companyId), eq(connectionGrants.connectionId, connection.id))) + .for("update"); + if (!lockedGrant) throw notFound("Connection grant not found"); + await tx.select({ id: agents.id }).from(agents) + .where(and(eq(agents.companyId, connection.companyId), notInArray(agents.status, ["pending_approval", "terminated"]))) + .orderBy(agents.id).for("no key update"); const removedDelegations = await tx .delete(connectionGrantDelegations) .where( @@ -19274,9 +19337,9 @@ export function toolAccessService( configureRailwaySsh: async (connectionId: string, companyId: string, input: ConfigureRailwaySsh, actor: ActorInfo): Promise => { const knownHosts = input.action === "enable" ? validateRailwayKnownHosts(input.knownHosts) : ""; const setup = await db.transaction(async (tx) => { + const [grant] = await tx.select().from(connectionGrants).where(and(eq(connectionGrants.id, input.grantId), eq(connectionGrants.connectionId, connectionId), eq(connectionGrants.companyId, companyId))).for("update"); const [connection] = await tx.select().from(toolConnections).where(and(eq(toolConnections.id, connectionId), eq(toolConnections.companyId, companyId))).for("update"); if (!connection || !isRailwayConnection(connection) || (connection.status !== "active" && input.action !== "remove")) throw unprocessable("Connect Railway before configuring container access."); - const [grant] = await tx.select().from(connectionGrants).where(and(eq(connectionGrants.id, input.grantId), eq(connectionGrants.connectionId, connectionId), eq(connectionGrants.companyId, companyId))).for("update"); if (!grant || (grant.status !== "active" && input.action !== "remove")) throw unprocessable("Select an active Railway authorization."); if (grant.kind === "user" && (actor.actorType !== "user" || actor.actorId !== grant.subjectUserId)) throw forbidden("Only this authorization's owner can configure its SSH key."); const existing = asRecord(connection.config.railwaySsh);