@indx-workspace/embedded 0.0.0-bootstrap → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +72 -0
- package/LICENSE +202 -0
- package/README.md +309 -0
- package/dist/bin.js +73 -0
- package/dist/launch.js +28617 -0
- package/dist/migrations/0000_init.sql +119 -0
- package/dist/migrations/0001_w2_resources.sql +177 -0
- package/dist/migrations/0002_w3_runtime_profiles.sql +34 -0
- package/dist/migrations/0003_steep_galactus.sql +91 -0
- package/dist/migrations/0004_overconfident_lake.sql +16 -0
- package/dist/migrations/0005_durable_sessions_run_tokens.sql +46 -0
- package/dist/migrations/0006_familiar_karnak.sql +2 -0
- package/dist/migrations/0007_fast_hannibal_king.sql +1 -0
- package/dist/migrations/0008_damp_nemesis.sql +31 -0
- package/dist/migrations/0009_special_thena.sql +2 -0
- package/dist/migrations/0010_little_power_pack.sql +66 -0
- package/dist/migrations/0011_goofy_storm.sql +14 -0
- package/dist/migrations/0012_legal_shatterstar.sql +14 -0
- package/dist/migrations/0013_secret_namora.sql +9 -0
- package/dist/migrations/0014_premium_vengeance.sql +16 -0
- package/dist/migrations/0015_amazing_screwball.sql +1 -0
- package/dist/migrations/0016_next_satana.sql +29 -0
- package/dist/migrations/0017_wild_the_executioner.sql +1 -0
- package/dist/migrations/0018_heavy_stone_men.sql +2 -0
- package/dist/migrations/0019_repair_legacy_run_accounting.sql +20 -0
- package/dist/migrations/0020_sparkling_nova.sql +340 -0
- package/dist/migrations/0021_slippery_sister_grimm.sql +1 -0
- package/dist/migrations/0022_warm_paibok.sql +26 -0
- package/dist/migrations/0023_colorful_shotgun.sql +2 -0
- package/dist/migrations/0024_curly_molten_man.sql +9 -0
- package/dist/migrations/0025_name_the_engine_in_stored_rows.sql +50 -0
- package/dist/migrations/0026_create_the_engine_scoped_session_state_store.sql +47 -0
- package/dist/migrations/0027_backfill_claude_session_state.sql +66 -0
- package/dist/migrations/0028_widen_the_engine_checks_to_openai_agents.sql +14 -0
- package/dist/migrations/0029_widen_the_engine_checks_to_pi.sql +14 -0
- package/dist/migrations/0030_create_the_cli_sessions_table.sql +23 -0
- package/dist/migrations/0031_widen_the_engine_checks_to_mastra.sql +17 -0
- package/dist/migrations/0032_mark_the_setup_agent.sql +7 -0
- package/dist/migrations/0033_create_the_agent_version_store.sql +41 -0
- package/dist/migrations/0034_mark_the_workspace_default_runtime_profile.sql +15 -0
- package/dist/migrations/0035_record_who_a_local_runtime_key_acts_for.sql +19 -0
- package/dist/migrations/0036_add_connector_kinds_and_the_run_tool_snapshot.sql +34 -0
- package/dist/migrations/0037_create_the_surface_session_keys.sql +20 -0
- package/dist/migrations/0038_record_feedback_on_a_run.sql +14 -0
- package/dist/migrations/0039_record_an_evaluation_of_a_version.sql +18 -0
- package/dist/migrations/0040_record_the_materialised_version.sql +23 -0
- package/dist/migrations/0041_pin_a_session_to_its_agent_version.sql +4 -0
- package/dist/migrations/0042_store_the_prompt_of_a_run.sql +1 -0
- package/dist/migrations/0043_record_every_pointer_move.sql +30 -0
- package/dist/migrations/meta/0000_snapshot.json +964 -0
- package/dist/migrations/meta/0001_snapshot.json +2278 -0
- package/dist/migrations/meta/0002_snapshot.json +2550 -0
- package/dist/migrations/meta/0003_snapshot.json +3295 -0
- package/dist/migrations/meta/0004_snapshot.json +3452 -0
- package/dist/migrations/meta/0005_snapshot.json +3921 -0
- package/dist/migrations/meta/0006_snapshot.json +3949 -0
- package/dist/migrations/meta/0007_snapshot.json +3956 -0
- package/dist/migrations/meta/0008_snapshot.json +4177 -0
- package/dist/migrations/meta/0009_snapshot.json +4177 -0
- package/dist/migrations/meta/0010_snapshot.json +3988 -0
- package/dist/migrations/meta/0011_snapshot.json +4491 -0
- package/dist/migrations/meta/0012_snapshot.json +4629 -0
- package/dist/migrations/meta/0013_snapshot.json +4646 -0
- package/dist/migrations/meta/0014_snapshot.json +4313 -0
- package/dist/migrations/meta/0015_snapshot.json +4775 -0
- package/dist/migrations/meta/0016_snapshot.json +4976 -0
- package/dist/migrations/meta/0017_snapshot.json +4982 -0
- package/dist/migrations/meta/0018_snapshot.json +4982 -0
- package/dist/migrations/meta/0019_snapshot.json +4990 -0
- package/dist/migrations/meta/0020_snapshot.json +5469 -0
- package/dist/migrations/meta/0021_snapshot.json +5475 -0
- package/dist/migrations/meta/0022_snapshot.json +5711 -0
- package/dist/migrations/meta/0023_snapshot.json +5722 -0
- package/dist/migrations/meta/0024_snapshot.json +5748 -0
- package/dist/migrations/meta/0025_snapshot.json +5748 -0
- package/dist/migrations/meta/0026_snapshot.json +6151 -0
- package/dist/migrations/meta/0027_snapshot.json +6151 -0
- package/dist/migrations/meta/0028_snapshot.json +6151 -0
- package/dist/migrations/meta/0029_snapshot.json +6151 -0
- package/dist/migrations/meta/0030_snapshot.json +6328 -0
- package/dist/migrations/meta/0031_snapshot.json +6328 -0
- package/dist/migrations/meta/0032_snapshot.json +6334 -0
- package/dist/migrations/meta/0033_snapshot.json +6615 -0
- package/dist/migrations/meta/0034_snapshot.json +6633 -0
- package/dist/migrations/meta/0035_snapshot.json +6662 -0
- package/dist/migrations/meta/0036_snapshot.json +6706 -0
- package/dist/migrations/meta/0037_snapshot.json +6816 -0
- package/dist/migrations/meta/0038_snapshot.json +6927 -0
- package/dist/migrations/meta/0039_snapshot.json +7073 -0
- package/dist/migrations/meta/0040_snapshot.json +7096 -0
- package/dist/migrations/meta/0041_snapshot.json +7119 -0
- package/dist/migrations/meta/0042_snapshot.json +7125 -0
- package/dist/migrations/meta/0043_snapshot.json +7292 -0
- package/dist/migrations/meta/_journal.json +314 -0
- package/dist/web/.next-embedded/BUILD_ID +1 -0
- package/dist/web/.next-embedded/app-path-routes-manifest.json +108 -0
- package/dist/web/.next-embedded/build-manifest.json +20 -0
- package/dist/web/.next-embedded/diagnostics/build-diagnostics.json +6 -0
- package/dist/web/.next-embedded/diagnostics/framework.json +1 -0
- package/dist/web/.next-embedded/export-marker.json +6 -0
- package/dist/web/.next-embedded/images-manifest.json +68 -0
- package/dist/web/.next-embedded/package.json +1 -0
- package/dist/web/.next-embedded/prerender-manifest.json +97 -0
- package/dist/web/.next-embedded/react-loadable-manifest.json +1 -0
- package/dist/web/.next-embedded/required-server-files.js +355 -0
- package/dist/web/.next-embedded/required-server-files.json +355 -0
- package/dist/web/.next-embedded/routes-manifest.json +786 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/api-keys/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/api-keys/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/new/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/new/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/models/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/runtimes/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/runtimes/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/settings/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/settings/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/shares/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/shares/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/users/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/admin/users/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/[id]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/[id]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/new/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/new/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/agents/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/new/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/new/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/connectors/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/files/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/files/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/[id]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/[id]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/projects/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/runs/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/runs/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/[name]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/[name]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/skills/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/workspaces/page.js +1 -0
- package/dist/web/.next-embedded/server/app/(shell)/workspaces/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/_global-error/page.js +31 -0
- package/dist/web/.next-embedded/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/_global-error.html +1 -0
- package/dist/web/.next-embedded/server/app/_global-error.meta +27 -0
- package/dist/web/.next-embedded/server/app/_global-error.rsc +14 -0
- package/dist/web/.next-embedded/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/dist/web/.next-embedded/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +20 -0
- package/dist/web/.next-embedded/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/dist/web/.next-embedded/server/app/_not-found/page.js +1 -0
- package/dist/web/.next-embedded/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/_not-found.html +1 -0
- package/dist/web/.next-embedded/server/app/_not-found.meta +27 -0
- package/dist/web/.next-embedded/server/app/_not-found.rsc +15 -0
- package/dist/web/.next-embedded/server/app/_not-found.segments/_full.segment.rsc +15 -0
- package/dist/web/.next-embedded/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +21 -0
- package/dist/web/.next-embedded/server/app/_not-found.segments/_tree.segment.rsc +2 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/evaluations/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/evaluations/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/feedback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/feedback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/grants/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/grants/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/pointers/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/pointers/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/policy/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/policy/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/promote/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/promote/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/resources/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/resources/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/rollback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/rollback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/runs/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/runs/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/versions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/[id]/versions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/agents/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/api-keys/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/audit-events/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/audit-events/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/callback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/callback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-device/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-device/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-token/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-token/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-verify/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-verify/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-workspace/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/cli-workspace/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/login/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/login/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/auth/workspace/route.js +13 -0
- package/dist/web/.next-embedded/server/app/api/auth/workspace/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/test-connection/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/[id]/test-connection/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/connectors/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/engines/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/engines/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/files/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/accept/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/accept/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/resend/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/resend/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/invitations/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/me/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/me/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/memberships/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/metrics/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/metrics/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/credential/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/credential/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/test/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/[id]/test/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/model-connections/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/models/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/models/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/archive/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/archive/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/restore/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/restore/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/sessions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/[id]/sessions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/projects/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/events/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/events/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/feedback/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/feedback/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/interrupt/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/interrupt/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/revoke-tokens/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/revoke-tokens/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runs/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-connections/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-connections/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtime-profiles/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtimes/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/runtimes/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/secrets/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-blobs/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-blobs/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-entries/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-entries/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-streams/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-streams/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/subkeys/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/subkeys/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/transcript/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/transcript/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sessions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/runtime-detect/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/setup/runtime-detect/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/shares/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sharing-policies/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/sharing-policies/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/[name]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/[name]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/tokens/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/tokens/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/users/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/users/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/[id]/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/[id]/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/route.js +1 -0
- package/dist/web/.next-embedded/server/app/api/workspaces/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/messages/route.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/messages/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/p/[token]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/page.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/sessions/route.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/sessions/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/try/page.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/try/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/widget.js/route.js +156 -0
- package/dist/web/.next-embedded/server/app/p/s/[name]/widget.js/route_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/setup/page.js +1 -0
- package/dist/web/.next-embedded/server/app/setup/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app/setup.html +1 -0
- package/dist/web/.next-embedded/server/app/setup.meta +26 -0
- package/dist/web/.next-embedded/server/app/setup.rsc +16 -0
- package/dist/web/.next-embedded/server/app/setup.segments/_full.segment.rsc +16 -0
- package/dist/web/.next-embedded/server/app/setup.segments/_tree.segment.rsc +2 -0
- package/dist/web/.next-embedded/server/app/setup.segments/setup/__PAGE__.segment.rsc +22 -0
- package/dist/web/.next-embedded/server/app/signin/page.js +2 -0
- package/dist/web/.next-embedded/server/app/signin/page_client-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/app-paths-manifest.json +108 -0
- package/dist/web/.next-embedded/server/chunks/1117.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1173.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1190.js +1 -0
- package/dist/web/.next-embedded/server/chunks/121.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1231.js +8 -0
- package/dist/web/.next-embedded/server/chunks/1252.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1328.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1503.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1519.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1610.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1614.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1794.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1804.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1924.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1947.js +1 -0
- package/dist/web/.next-embedded/server/chunks/1998.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2026.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2030.js +39 -0
- package/dist/web/.next-embedded/server/chunks/2049.js +12 -0
- package/dist/web/.next-embedded/server/chunks/2192.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2208.js +3 -0
- package/dist/web/.next-embedded/server/chunks/2239.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2250.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2294.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2300.js +1 -0
- package/dist/web/.next-embedded/server/chunks/235.js +1 -0
- package/dist/web/.next-embedded/server/chunks/240.js +2 -0
- package/dist/web/.next-embedded/server/chunks/2400.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2438.js +2 -0
- package/dist/web/.next-embedded/server/chunks/2448.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2502.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2580.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2587.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2610.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2670.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2780.js +165 -0
- package/dist/web/.next-embedded/server/chunks/2792.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2857.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2884.js +1 -0
- package/dist/web/.next-embedded/server/chunks/2895.js +19 -0
- package/dist/web/.next-embedded/server/chunks/2961.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3171.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3222.js +2 -0
- package/dist/web/.next-embedded/server/chunks/3351.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3381.js +1 -0
- package/dist/web/.next-embedded/server/chunks/3520.js +8 -0
- package/dist/web/.next-embedded/server/chunks/364.js +1 -0
- package/dist/web/.next-embedded/server/chunks/411.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4119.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4128.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4191.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4200.js +1 -0
- package/dist/web/.next-embedded/server/chunks/434.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4368.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4463.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4467.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4543.js +8 -0
- package/dist/web/.next-embedded/server/chunks/468.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4741.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4755.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4758.js +21 -0
- package/dist/web/.next-embedded/server/chunks/4870.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4877.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4888.js +1 -0
- package/dist/web/.next-embedded/server/chunks/491.js +1 -0
- package/dist/web/.next-embedded/server/chunks/4911.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5036.js +27 -0
- package/dist/web/.next-embedded/server/chunks/5052.js +134 -0
- package/dist/web/.next-embedded/server/chunks/5057.js +55 -0
- package/dist/web/.next-embedded/server/chunks/5126.js +8 -0
- package/dist/web/.next-embedded/server/chunks/5133.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5173.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5225.js +2 -0
- package/dist/web/.next-embedded/server/chunks/5277.js +324 -0
- package/dist/web/.next-embedded/server/chunks/5398.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5568.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5576.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5634.js +19 -0
- package/dist/web/.next-embedded/server/chunks/5645.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5684.js +5 -0
- package/dist/web/.next-embedded/server/chunks/5699.js +1 -0
- package/dist/web/.next-embedded/server/chunks/57.js +2 -0
- package/dist/web/.next-embedded/server/chunks/5734.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5787.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5796.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5933.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5945.js +1 -0
- package/dist/web/.next-embedded/server/chunks/5961.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6445.js +55 -0
- package/dist/web/.next-embedded/server/chunks/6511.js +18 -0
- package/dist/web/.next-embedded/server/chunks/6518.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6572.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6672.js +2 -0
- package/dist/web/.next-embedded/server/chunks/6773.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6821.js +1 -0
- package/dist/web/.next-embedded/server/chunks/6926.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7090.js +25 -0
- package/dist/web/.next-embedded/server/chunks/7206.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7269.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7380.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7395.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7466.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7571.js +1 -0
- package/dist/web/.next-embedded/server/chunks/769.js +1 -0
- package/dist/web/.next-embedded/server/chunks/784.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7861.js +1 -0
- package/dist/web/.next-embedded/server/chunks/7944.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8020.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8061.js +2 -0
- package/dist/web/.next-embedded/server/chunks/822.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8302.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8336.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8376.js +1 -0
- package/dist/web/.next-embedded/server/chunks/841.js +2 -0
- package/dist/web/.next-embedded/server/chunks/8430.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8563.js +2 -0
- package/dist/web/.next-embedded/server/chunks/8576.js +193 -0
- package/dist/web/.next-embedded/server/chunks/8656.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8726.js +1 -0
- package/dist/web/.next-embedded/server/chunks/8935.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9260.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9314.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9332.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9380.js +13 -0
- package/dist/web/.next-embedded/server/chunks/951.js +2 -0
- package/dist/web/.next-embedded/server/chunks/9537.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9840.js +1 -0
- package/dist/web/.next-embedded/server/chunks/9913.js +1 -0
- package/dist/web/.next-embedded/server/functions-config-manifest.json +97 -0
- package/dist/web/.next-embedded/server/instrumentation.js +1 -0
- package/dist/web/.next-embedded/server/interception-route-rewrite-manifest.js +1 -0
- package/dist/web/.next-embedded/server/middleware-build-manifest.js +1 -0
- package/dist/web/.next-embedded/server/middleware-manifest.json +6 -0
- package/dist/web/.next-embedded/server/middleware-react-loadable-manifest.js +1 -0
- package/dist/web/.next-embedded/server/middleware.js +217 -0
- package/dist/web/.next-embedded/server/next-font-manifest.js +1 -0
- package/dist/web/.next-embedded/server/next-font-manifest.json +1 -0
- package/dist/web/.next-embedded/server/pages/404.html +1 -0
- package/dist/web/.next-embedded/server/pages/500.html +1 -0
- package/dist/web/.next-embedded/server/pages-manifest.json +4 -0
- package/dist/web/.next-embedded/server/prefetch-hints.json +44 -0
- package/dist/web/.next-embedded/server/server-reference-manifest.js +1 -0
- package/dist/web/.next-embedded/server/server-reference-manifest.json +1 -0
- package/dist/web/.next-embedded/server/webpack-runtime.js +1 -0
- package/dist/web/.next-embedded/static/DkxmcmiDAUutpm9e7G9xn/_buildManifest.js +1 -0
- package/dist/web/.next-embedded/static/DkxmcmiDAUutpm9e7G9xn/_ssgManifest.js +1 -0
- package/dist/web/.next-embedded/static/chunks/1000-501917027865ec48.js +52 -0
- package/dist/web/.next-embedded/static/chunks/1435-55acf1390b3a2da1.js +1 -0
- package/dist/web/.next-embedded/static/chunks/2349-3254a65053329135.js +1 -0
- package/dist/web/.next-embedded/static/chunks/2378-4ca744bf47c3dabb.js +1 -0
- package/dist/web/.next-embedded/static/chunks/2685-42c2a4f17fb6adb1.js +18 -0
- package/dist/web/.next-embedded/static/chunks/5633-9a07d4830813ece7.js +1 -0
- package/dist/web/.next-embedded/static/chunks/6365-04af34ae5b1497e3.js +1 -0
- package/dist/web/.next-embedded/static/chunks/6482-ecc9c62a178ba724.js +1 -0
- package/dist/web/.next-embedded/static/chunks/7413-3a721e7c495f89fb.js +55 -0
- package/dist/web/.next-embedded/static/chunks/9595-fea797909cd07d91.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/api-keys/page-5fe6d7717b0565f1.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/new/page-875800e6afa2dac3.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/page-7c39ee3c51034f12.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/runtimes/page-d51caeefc8b5ed98.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/settings/page-7f1874c14b33856a.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/shares/page-c194edfd7701dc77.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/users/page-463489ca2ebf664f.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/[id]/page-febe3b0582c996ae.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/new/page-a5ba72c5bc40b6e1.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/page-89d6af2961318db8.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/new/page-b7ab59a7697ce004.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/page-be6a19d14cc78f0f.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/files/page-63febed6b4433238.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/layout-4667e8f589776bbe.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/page-2cd836e518729ee6.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/[id]/page-e6bc2217623b8939.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/page-3db56f853165c53c.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/runs/page-fe28919e456c3966.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/skills/[name]/page-69390975e9417783.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/skills/page-1e756149864de860.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/(shell)/workspaces/page-47afb61daed3bbb2.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/_global-error/page-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/_not-found/page-1e20f0faf42b5dab.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/evaluations/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/feedback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/grants/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/pointers/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/policy/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/promote/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/resources/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/rollback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/runs/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/versions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/agents/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/api-keys/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/api-keys/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/audit-events/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/callback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-device/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-token/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-verify/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-workspace/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/login/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/auth/workspace/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/connectors/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/connectors/[id]/test-connection/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/connectors/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/engines/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/files/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/files/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/accept/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/resend/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/invitations/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/me/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/memberships/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/memberships/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/metrics/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/credential/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/test/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/model-connections/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/models/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/archive/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/restore/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/sessions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/projects/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/events/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/feedback/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/interrupt/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/revoke-tokens/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runs/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtime-connections/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtime-profiles/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtime-profiles/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/runtimes/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/secrets/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/secrets/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-blobs/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-entries/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-streams/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/subkeys/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/transcript/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sessions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/setup/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/setup/runtime-detect/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/shares/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/shares/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/sharing-policies/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/skills/[name]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/skills/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/tokens/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/users/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/workspaces/[id]/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/api/workspaces/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/layout-2f33ac5af1408328.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/[token]/layout-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/[token]/messages/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/[token]/page-6cd5f2bd228d80dc.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/page-3bbe19f3f8fa0cd8.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/sessions/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/try/layout-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/try/page-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/widget.js/route-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/setup/page-1ffa2012b2226832.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/signin/layout-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/app/signin/page-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/b7e071c5-1178abcc3dcc97b7.js +1 -0
- package/dist/web/.next-embedded/static/chunks/framework-bd8f371b90cbf524.js +1 -0
- package/dist/web/.next-embedded/static/chunks/main-5f1d9db627247614.js +5 -0
- package/dist/web/.next-embedded/static/chunks/main-app-736eb94d950bf794.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/app-error-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/forbidden-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/global-error-bcd4657bc775688d.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/not-found-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/unauthorized-259206b8559c1c4b.js +1 -0
- package/dist/web/.next-embedded/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/dist/web/.next-embedded/static/chunks/webpack-e654bfe3f030a510.js +1 -0
- package/dist/web/.next-embedded/static/css/85d72f669bcd1172.css +1 -0
- package/dist/web/next.config.mjs +1 -0
- package/package.json +51 -3
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
CREATE TABLE "agent_grants" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"workspace_id" uuid NOT NULL,
|
|
4
|
+
"agent_id" uuid NOT NULL,
|
|
5
|
+
"user_id" uuid NOT NULL,
|
|
6
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
7
|
+
CONSTRAINT "agent_grants_workspace_agent_user_key" UNIQUE("workspace_id","agent_id","user_id")
|
|
8
|
+
);
|
|
9
|
+
--> statement-breakpoint
|
|
10
|
+
ALTER TABLE "agents" ADD COLUMN "created_by" uuid;--> statement-breakpoint
|
|
11
|
+
ALTER TABLE "files" ADD COLUMN "created_by" uuid;--> statement-breakpoint
|
|
12
|
+
ALTER TABLE "mcp_servers" ADD COLUMN "created_by" uuid;--> statement-breakpoint
|
|
13
|
+
ALTER TABLE "skills" ADD COLUMN "created_by" uuid;--> statement-breakpoint
|
|
14
|
+
ALTER TABLE "agent_grants" ADD CONSTRAINT "agent_grants_workspace_id_workspaces_id_fk" FOREIGN KEY ("workspace_id") REFERENCES "public"."workspaces"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
15
|
+
ALTER TABLE "agent_grants" ADD CONSTRAINT "agent_grants_agent_workspace_fk" FOREIGN KEY ("agent_id","workspace_id") REFERENCES "public"."agents"("id","workspace_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
16
|
+
ALTER TABLE "agent_grants" ADD CONSTRAINT "agent_grants_member_workspace_fk" FOREIGN KEY ("workspace_id","user_id") REFERENCES "public"."memberships"("workspace_id","user_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
17
|
+
CREATE INDEX "agent_grants_agent_idx" ON "agent_grants" USING btree ("agent_id");--> statement-breakpoint
|
|
18
|
+
CREATE INDEX "agent_grants_user_idx" ON "agent_grants" USING btree ("user_id");--> statement-breakpoint
|
|
19
|
+
ALTER TABLE "agents" ADD CONSTRAINT "agents_created_by_workspace_fk" FOREIGN KEY ("workspace_id","created_by") REFERENCES "public"."memberships"("workspace_id","user_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
20
|
+
ALTER TABLE "files" ADD CONSTRAINT "files_created_by_workspace_fk" FOREIGN KEY ("workspace_id","created_by") REFERENCES "public"."memberships"("workspace_id","user_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
21
|
+
ALTER TABLE "mcp_servers" ADD CONSTRAINT "mcp_servers_created_by_workspace_fk" FOREIGN KEY ("workspace_id","created_by") REFERENCES "public"."memberships"("workspace_id","user_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
22
|
+
ALTER TABLE "skills" ADD CONSTRAINT "skills_created_by_workspace_fk" FOREIGN KEY ("workspace_id","created_by") REFERENCES "public"."memberships"("workspace_id","user_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
23
|
+
-- Backfill (docs/adr/W9-AUTH-117-ownership-columns-and-backfill.md): every existing row is
|
|
24
|
+
-- attributed to its workspace's oldest Owner membership, falling back to that workspace's oldest
|
|
25
|
+
-- membership of any role only if it somehow has no Owner. An explicit, documented owner — never
|
|
26
|
+
-- NULL, and never a guess finer-grained than "the workspace's own longest-standing member".
|
|
27
|
+
UPDATE "agents" AS t
|
|
28
|
+
SET "created_by" = owner.user_id
|
|
29
|
+
FROM (
|
|
30
|
+
SELECT DISTINCT ON (m.workspace_id) m.workspace_id, m.user_id
|
|
31
|
+
FROM "memberships" m
|
|
32
|
+
ORDER BY m.workspace_id, (m.role = 'owner') DESC, m.created_at ASC, m.id ASC
|
|
33
|
+
) AS owner
|
|
34
|
+
WHERE t.workspace_id = owner.workspace_id AND t."created_by" IS NULL;
|
|
35
|
+
--> statement-breakpoint
|
|
36
|
+
UPDATE "files" AS t
|
|
37
|
+
SET "created_by" = owner.user_id
|
|
38
|
+
FROM (
|
|
39
|
+
SELECT DISTINCT ON (m.workspace_id) m.workspace_id, m.user_id
|
|
40
|
+
FROM "memberships" m
|
|
41
|
+
ORDER BY m.workspace_id, (m.role = 'owner') DESC, m.created_at ASC, m.id ASC
|
|
42
|
+
) AS owner
|
|
43
|
+
WHERE t.workspace_id = owner.workspace_id AND t."created_by" IS NULL;
|
|
44
|
+
--> statement-breakpoint
|
|
45
|
+
UPDATE "mcp_servers" AS t
|
|
46
|
+
SET "created_by" = owner.user_id
|
|
47
|
+
FROM (
|
|
48
|
+
SELECT DISTINCT ON (m.workspace_id) m.workspace_id, m.user_id
|
|
49
|
+
FROM "memberships" m
|
|
50
|
+
ORDER BY m.workspace_id, (m.role = 'owner') DESC, m.created_at ASC, m.id ASC
|
|
51
|
+
) AS owner
|
|
52
|
+
WHERE t.workspace_id = owner.workspace_id AND t."created_by" IS NULL;
|
|
53
|
+
--> statement-breakpoint
|
|
54
|
+
UPDATE "skills" AS t
|
|
55
|
+
SET "created_by" = owner.user_id
|
|
56
|
+
FROM (
|
|
57
|
+
SELECT DISTINCT ON (m.workspace_id) m.workspace_id, m.user_id
|
|
58
|
+
FROM "memberships" m
|
|
59
|
+
ORDER BY m.workspace_id, (m.role = 'owner') DESC, m.created_at ASC, m.id ASC
|
|
60
|
+
) AS owner
|
|
61
|
+
WHERE t.workspace_id = owner.workspace_id AND t."created_by" IS NULL;
|
|
62
|
+
--> statement-breakpoint
|
|
63
|
+
ALTER TABLE "agents" ALTER COLUMN "created_by" SET NOT NULL;--> statement-breakpoint
|
|
64
|
+
ALTER TABLE "files" ALTER COLUMN "created_by" SET NOT NULL;--> statement-breakpoint
|
|
65
|
+
ALTER TABLE "mcp_servers" ALTER COLUMN "created_by" SET NOT NULL;--> statement-breakpoint
|
|
66
|
+
ALTER TABLE "skills" ALTER COLUMN "created_by" SET NOT NULL;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
CREATE TABLE "user_identities" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"issuer" text NOT NULL,
|
|
4
|
+
"subject" text NOT NULL,
|
|
5
|
+
"user_id" uuid NOT NULL,
|
|
6
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
7
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
8
|
+
CONSTRAINT "user_identities_issuer_subject_key" UNIQUE("issuer","subject"),
|
|
9
|
+
CONSTRAINT "user_identities_issuer_not_blank" CHECK (length(btrim("user_identities"."issuer")) > 0),
|
|
10
|
+
CONSTRAINT "user_identities_subject_not_blank" CHECK (length(btrim("user_identities"."subject")) > 0)
|
|
11
|
+
);
|
|
12
|
+
--> statement-breakpoint
|
|
13
|
+
ALTER TABLE "user_identities" ADD CONSTRAINT "user_identities_user_id_users_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."users"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
14
|
+
CREATE INDEX "user_identities_user_idx" ON "user_identities" USING btree ("user_id");
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
ALTER TABLE "projects" ADD COLUMN "default_model_connection_id" uuid;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "projects" ADD COLUMN "default_model" text;--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "runs" ADD COLUMN "model_connection_id" uuid;--> statement-breakpoint
|
|
4
|
+
ALTER TABLE "workspaces" ADD COLUMN "default_model_connection_id" uuid;--> statement-breakpoint
|
|
5
|
+
ALTER TABLE "workspaces" ADD COLUMN "default_model" text;--> statement-breakpoint
|
|
6
|
+
ALTER TABLE "projects" ADD CONSTRAINT "projects_default_model_connection_id_model_connections_id_fk" FOREIGN KEY ("default_model_connection_id") REFERENCES "public"."model_connections"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "projects" ADD CONSTRAINT "projects_default_model_connection_workspace_fk" FOREIGN KEY ("default_model_connection_id","workspace_id") REFERENCES "public"."model_connections"("id","workspace_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
8
|
+
ALTER TABLE "runs" ADD CONSTRAINT "runs_model_connection_id_model_connections_id_fk" FOREIGN KEY ("model_connection_id") REFERENCES "public"."model_connections"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "runs" ADD CONSTRAINT "runs_model_connection_workspace_fk" FOREIGN KEY ("model_connection_id","workspace_id") REFERENCES "public"."model_connections"("id","workspace_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
10
|
+
ALTER TABLE "workspaces" ADD CONSTRAINT "workspaces_default_model_connection_id_model_connections_id_fk" FOREIGN KEY ("default_model_connection_id") REFERENCES "public"."model_connections"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
11
|
+
ALTER TABLE "workspaces" ADD CONSTRAINT "workspaces_default_model_connection_workspace_fk" FOREIGN KEY ("default_model_connection_id","id") REFERENCES "public"."model_connections"("id","workspace_id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
12
|
+
CREATE INDEX "runs_model_connection_idx" ON "runs" USING btree ("model_connection_id");--> statement-breakpoint
|
|
13
|
+
ALTER TABLE "projects" ADD CONSTRAINT "projects_default_model_pair" CHECK (("projects"."default_model_connection_id" is null) = ("projects"."default_model" is null));--> statement-breakpoint
|
|
14
|
+
ALTER TABLE "workspaces" ADD CONSTRAINT "workspaces_default_model_pair" CHECK (("workspaces"."default_model_connection_id" is null) = ("workspaces"."default_model" is null));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
ALTER TABLE "run_usage_records" ALTER COLUMN "price_table_version" DROP NOT NULL;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "runs" ADD COLUMN "accounting_state" text DEFAULT 'pending' NOT NULL;--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "runs" ADD COLUMN "accounting_error" text;--> statement-breakpoint
|
|
4
|
+
ALTER TABLE "runs" ADD CONSTRAINT "runs_accounting_state_valid" CHECK ("runs"."accounting_state" in ('pending', 'complete', 'partial', 'failed', 'unavailable'));--> statement-breakpoint
|
|
5
|
+
-- Backfill only: at this point in the migration no row can have been inserted under the new
|
|
6
|
+
-- 'pending' default yet, so every row this UPDATE reaches predates issue #134's settlement path.
|
|
7
|
+
-- They were never durably settled by it, and defaulting them to 'complete' would be exactly the
|
|
8
|
+
-- false zero this column exists to remove — 'unavailable' says the accounting is unknown, not good.
|
|
9
|
+
UPDATE "runs" SET "accounting_state" = 'unavailable';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
CREATE TABLE "share_run_charges" (
|
|
2
|
+
"run_id" uuid PRIMARY KEY NOT NULL,
|
|
3
|
+
"workspace_id" uuid NOT NULL,
|
|
4
|
+
"share_id" uuid NOT NULL,
|
|
5
|
+
"charged_usd" numeric(14, 6) DEFAULT '0' NOT NULL,
|
|
6
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
7
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
8
|
+
CONSTRAINT "share_run_charges_nonnegative" CHECK ("share_run_charges"."charged_usd" >= 0)
|
|
9
|
+
);
|
|
10
|
+
--> statement-breakpoint
|
|
11
|
+
ALTER TABLE "shares" ALTER COLUMN "spent_usd" SET DATA TYPE numeric(14, 6);--> statement-breakpoint
|
|
12
|
+
ALTER TABLE "shares" ALTER COLUMN "spent_usd" SET DEFAULT '0';--> statement-breakpoint
|
|
13
|
+
ALTER TABLE "share_run_charges" ADD CONSTRAINT "share_run_charges_workspace_id_workspaces_id_fk" FOREIGN KEY ("workspace_id") REFERENCES "public"."workspaces"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
14
|
+
ALTER TABLE "share_run_charges" ADD CONSTRAINT "share_run_charges_share_workspace_fk" FOREIGN KEY ("share_id","workspace_id") REFERENCES "public"."shares"("id","workspace_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
15
|
+
ALTER TABLE "share_run_charges" ADD CONSTRAINT "share_run_charges_run_workspace_fk" FOREIGN KEY ("run_id","workspace_id") REFERENCES "public"."runs"("id","workspace_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
16
|
+
CREATE INDEX "share_run_charges_workspace_share_idx" ON "share_run_charges" USING btree ("workspace_id","share_id");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "workspaces" ADD COLUMN "archived_at" timestamp with time zone;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
CREATE TABLE "invitations" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"workspace_id" uuid NOT NULL,
|
|
4
|
+
"email" text NOT NULL,
|
|
5
|
+
"role" text NOT NULL,
|
|
6
|
+
"invited_by" uuid,
|
|
7
|
+
"token_hash" text NOT NULL,
|
|
8
|
+
"expires_at" timestamp with time zone NOT NULL,
|
|
9
|
+
"accepted_at" timestamp with time zone,
|
|
10
|
+
"revoked_at" timestamp with time zone,
|
|
11
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
12
|
+
"updated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
13
|
+
CONSTRAINT "invitations_role_valid" CHECK ("invitations"."role" in ('owner', 'admin', 'builder', 'viewer')),
|
|
14
|
+
CONSTRAINT "invitations_email_lowercase" CHECK ("invitations"."email" = lower("invitations"."email")),
|
|
15
|
+
CONSTRAINT "invitations_email_shape" CHECK ("invitations"."email" ~ '^[^[:space:]@]+@[^[:space:]@]+[.][^[:space:]@]+$'),
|
|
16
|
+
CONSTRAINT "invitations_token_hash_not_blank" CHECK (length(btrim("invitations"."token_hash")) > 0),
|
|
17
|
+
CONSTRAINT "invitations_expires_after_created" CHECK ("invitations"."expires_at" > "invitations"."created_at"),
|
|
18
|
+
CONSTRAINT "invitations_accepted_after_created" CHECK ("invitations"."accepted_at" is null or "invitations"."accepted_at" >= "invitations"."created_at"),
|
|
19
|
+
CONSTRAINT "invitations_revoked_after_created" CHECK ("invitations"."revoked_at" is null or "invitations"."revoked_at" >= "invitations"."created_at"),
|
|
20
|
+
CONSTRAINT "invitations_not_accepted_and_revoked" CHECK ("invitations"."accepted_at" is null or "invitations"."revoked_at" is null)
|
|
21
|
+
);
|
|
22
|
+
--> statement-breakpoint
|
|
23
|
+
ALTER TABLE "audit_events" DROP CONSTRAINT "audit_events_action_valid";--> statement-breakpoint
|
|
24
|
+
ALTER TABLE "invitations" ADD CONSTRAINT "invitations_workspace_id_workspaces_id_fk" FOREIGN KEY ("workspace_id") REFERENCES "public"."workspaces"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
25
|
+
ALTER TABLE "invitations" ADD CONSTRAINT "invitations_invited_by_users_id_fk" FOREIGN KEY ("invited_by") REFERENCES "public"."users"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
|
|
26
|
+
CREATE UNIQUE INDEX "invitations_workspace_email_pending_key" ON "invitations" USING btree ("workspace_id","email") WHERE "invitations"."accepted_at" is null and "invitations"."revoked_at" is null;--> statement-breakpoint
|
|
27
|
+
CREATE INDEX "invitations_workspace_idx" ON "invitations" USING btree ("workspace_id","created_at");--> statement-breakpoint
|
|
28
|
+
CREATE INDEX "invitations_invited_by_idx" ON "invitations" USING btree ("invited_by");--> statement-breakpoint
|
|
29
|
+
ALTER TABLE "audit_events" ADD CONSTRAINT "audit_events_action_valid" CHECK ("audit_events"."action" in ('user-created', 'user-deleted', 'agent-changed', 'provider-credential-changed', 'api-key-created', 'api-key-revoked', 'connector-changed', 'permission-changed', 'runtime-profile-changed', 'project-created', 'project-deleted', 'session-published', 'public-link-revoked', 'runnable-link-stopped', 'public-sharing-policy-changed', 'invitation-created', 'invitation-resent', 'invitation-revoked', 'invitation-accepted'));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "projects" ADD COLUMN "archived_at" timestamp with time zone;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
ALTER TABLE "audit_events" DROP CONSTRAINT "audit_events_action_valid";--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "audit_events" ADD CONSTRAINT "audit_events_action_valid" CHECK ("audit_events"."action" in ('user-created', 'user-deleted', 'agent-changed', 'provider-credential-changed', 'api-key-created', 'api-key-revoked', 'connector-changed', 'permission-changed', 'runtime-profile-changed', 'project-created', 'project-deleted', 'project-archived', 'project-restored', 'session-published', 'public-link-revoked', 'runnable-link-stopped', 'public-sharing-policy-changed', 'invitation-created', 'invitation-resent', 'invitation-revoked', 'invitation-accepted'));
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
-- Before this release, session rows existed without their SDK identity even after they had runs.
|
|
2
|
+
-- Fresh launches have always supplied the platform session UUID to Claude, so a run proves the
|
|
3
|
+
-- conversation exists under that same identity. Preserve resume behavior across the upgrade.
|
|
4
|
+
UPDATE "sessions"
|
|
5
|
+
SET "claude_session_id" = "id"
|
|
6
|
+
WHERE "claude_session_id" IS NULL
|
|
7
|
+
AND EXISTS (
|
|
8
|
+
SELECT 1
|
|
9
|
+
FROM "runs"
|
|
10
|
+
WHERE "runs"."session_id" = "sessions"."id"
|
|
11
|
+
);--> statement-breakpoint
|
|
12
|
+
-- Migration 0013 conservatively marked every pre-accounting run unavailable, including rows that
|
|
13
|
+
-- already had a real price-table version and cost. Those rows were fully priced under the old
|
|
14
|
+
-- non-null ledger contract, so restore the state their durable data proves before adding guards.
|
|
15
|
+
UPDATE "runs"
|
|
16
|
+
SET "accounting_state" = 'complete'
|
|
17
|
+
WHERE "accounting_state" = 'unavailable'
|
|
18
|
+
AND "price_table_version" IS NOT NULL;--> statement-breakpoint
|
|
19
|
+
ALTER TABLE "runs" ADD CONSTRAINT "runs_price_version_matches_accounting_state" CHECK (("runs"."accounting_state" in ('complete', 'partial')) = ("runs"."price_table_version" is not null));--> statement-breakpoint
|
|
20
|
+
ALTER TABLE "runs" ADD CONSTRAINT "runs_unpriced_cost_zero" CHECK ("runs"."accounting_state" in ('complete', 'partial') or "runs"."cost_usd" = 0);
|
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
-- RF-101 is intentionally one transactional migration because the repository's Drizzle
|
|
2
|
+
-- migrator wraps every pending statement in a single transaction. The set-based backfill below
|
|
3
|
+
-- is therefore atomic, but it is not an online/bounded-batch job: locks and WAL are retained until
|
|
4
|
+
-- commit. Deployments must rehearse production-shaped row counts and coordinate the DDL lock
|
|
5
|
+
-- window. Compatibility triggers installed below keep prior-version human writers working after
|
|
6
|
+
-- commit; CREATE INDEX CONCURRENTLY still cannot run inside this migrator transaction.
|
|
7
|
+
CREATE TABLE "workspace_principals" (
|
|
8
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
9
|
+
"workspace_id" uuid NOT NULL,
|
|
10
|
+
"kind" text NOT NULL,
|
|
11
|
+
"membership_id" uuid,
|
|
12
|
+
"api_key_id" uuid,
|
|
13
|
+
"activated_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
14
|
+
"revoked_at" timestamp with time zone,
|
|
15
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
16
|
+
CONSTRAINT "workspace_principals_workspace_id_key" UNIQUE("workspace_id","id"),
|
|
17
|
+
CONSTRAINT "workspace_principals_workspace_membership_key" UNIQUE("workspace_id","membership_id"),
|
|
18
|
+
CONSTRAINT "workspace_principals_workspace_api_key_key" UNIQUE("workspace_id","api_key_id"),
|
|
19
|
+
CONSTRAINT "workspace_principals_kind_valid" CHECK ("workspace_principals"."kind" in ('membership', 'api_key')),
|
|
20
|
+
CONSTRAINT "workspace_principals_source_xor" CHECK (("workspace_principals"."kind" = 'membership' and "workspace_principals"."membership_id" is not null and "workspace_principals"."api_key_id" is null)
|
|
21
|
+
or ("workspace_principals"."kind" = 'api_key' and "workspace_principals"."api_key_id" is not null and "workspace_principals"."membership_id" is null)),
|
|
22
|
+
CONSTRAINT "workspace_principals_revoked_after_activation" CHECK ("workspace_principals"."revoked_at" is null or "workspace_principals"."revoked_at" >= "workspace_principals"."activated_at")
|
|
23
|
+
);
|
|
24
|
+
--> statement-breakpoint
|
|
25
|
+
-- The redundant workspace/id keys are the tenant-paired FK targets. Primary keys prove global
|
|
26
|
+
-- uniqueness, while these constraints also prove that a source belongs to this workspace.
|
|
27
|
+
ALTER TABLE "api_keys" ADD CONSTRAINT "api_keys_workspace_id_key" UNIQUE("workspace_id","id");--> statement-breakpoint
|
|
28
|
+
ALTER TABLE "memberships" ADD CONSTRAINT "memberships_workspace_id_key" UNIQUE("workspace_id","id");--> statement-breakpoint
|
|
29
|
+
ALTER TABLE "workspace_principals" ADD CONSTRAINT "workspace_principals_workspace_id_workspaces_id_fk" FOREIGN KEY ("workspace_id") REFERENCES "public"."workspaces"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
30
|
+
ALTER TABLE "workspace_principals" ADD CONSTRAINT "workspace_principals_membership_workspace_fk" FOREIGN KEY ("workspace_id","membership_id") REFERENCES "public"."memberships"("workspace_id","id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
31
|
+
ALTER TABLE "workspace_principals" ADD CONSTRAINT "workspace_principals_api_key_workspace_fk" FOREIGN KEY ("workspace_id","api_key_id") REFERENCES "public"."api_keys"("workspace_id","id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
32
|
+
|
|
33
|
+
-- Every existing source receives exactly one principal. Source timestamps preserve when the
|
|
34
|
+
-- identity became active; revoked API keys remain historical principals and cannot authenticate.
|
|
35
|
+
INSERT INTO "workspace_principals" ("workspace_id", "kind", "membership_id", "activated_at")
|
|
36
|
+
SELECT m."workspace_id", 'membership', m."id", m."created_at"
|
|
37
|
+
FROM "memberships" AS m
|
|
38
|
+
ON CONFLICT ("workspace_id", "membership_id") DO NOTHING;--> statement-breakpoint
|
|
39
|
+
INSERT INTO "workspace_principals" ("workspace_id", "kind", "api_key_id", "activated_at", "revoked_at")
|
|
40
|
+
SELECT k."workspace_id", 'api_key', k."id", k."created_at", k."revoked_at"
|
|
41
|
+
FROM "api_keys" AS k
|
|
42
|
+
ON CONFLICT ("workspace_id", "api_key_id") DO NOTHING;--> statement-breakpoint
|
|
43
|
+
|
|
44
|
+
-- Compatibility columns stay available for human rows, but become nullable so a machine-owned
|
|
45
|
+
-- row is never stamped with an invented human. Principal columns are added nullable for the
|
|
46
|
+
-- backfill and tightened only after the invariant queries below succeed.
|
|
47
|
+
ALTER TABLE "agents" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
|
|
48
|
+
ALTER TABLE "files" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
|
|
49
|
+
ALTER TABLE "mcp_servers" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
|
|
50
|
+
ALTER TABLE "projects" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
|
|
51
|
+
ALTER TABLE "sessions" ALTER COLUMN "user_id" DROP NOT NULL;--> statement-breakpoint
|
|
52
|
+
ALTER TABLE "shares" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
|
|
53
|
+
ALTER TABLE "skills" ALTER COLUMN "created_by" DROP NOT NULL;--> statement-breakpoint
|
|
54
|
+
ALTER TABLE "agents" ADD COLUMN "owner_principal_id" uuid;--> statement-breakpoint
|
|
55
|
+
ALTER TABLE "audit_events" ADD COLUMN "actor_principal_id" uuid;--> statement-breakpoint
|
|
56
|
+
ALTER TABLE "files" ADD COLUMN "owner_principal_id" uuid;--> statement-breakpoint
|
|
57
|
+
ALTER TABLE "mcp_servers" ADD COLUMN "owner_principal_id" uuid;--> statement-breakpoint
|
|
58
|
+
ALTER TABLE "projects" ADD COLUMN "owner_principal_id" uuid;--> statement-breakpoint
|
|
59
|
+
ALTER TABLE "sessions" ADD COLUMN "owner_principal_id" uuid;--> statement-breakpoint
|
|
60
|
+
ALTER TABLE "shares" ADD COLUMN "publisher_principal_id" uuid;--> statement-breakpoint
|
|
61
|
+
ALTER TABLE "skills" ADD COLUMN "owner_principal_id" uuid;--> statement-breakpoint
|
|
62
|
+
|
|
63
|
+
-- Rolling compatibility. A prior-version process knows only the legacy human user columns. It
|
|
64
|
+
-- must neither fail against the new NOT NULL columns nor invent a principal. Resolve the exact
|
|
65
|
+
-- same-workspace Membership principal, creating it on demand only when the Membership itself is
|
|
66
|
+
-- real. Machine writers must continue to supply their API-key principal explicitly.
|
|
67
|
+
CREATE FUNCTION "public"."rf101_compat_membership_principal_id"("target_workspace_id" uuid, "target_user_id" uuid)
|
|
68
|
+
RETURNS uuid
|
|
69
|
+
LANGUAGE plpgsql
|
|
70
|
+
SET search_path = pg_catalog
|
|
71
|
+
AS $$
|
|
72
|
+
DECLARE
|
|
73
|
+
"resolved_principal_id" uuid;
|
|
74
|
+
BEGIN
|
|
75
|
+
IF "target_user_id" IS NULL THEN
|
|
76
|
+
RETURN NULL;
|
|
77
|
+
END IF;
|
|
78
|
+
|
|
79
|
+
SELECT principal."id" INTO "resolved_principal_id"
|
|
80
|
+
FROM "public"."memberships" AS member
|
|
81
|
+
JOIN "public"."workspace_principals" AS principal
|
|
82
|
+
ON principal."workspace_id" = member."workspace_id"
|
|
83
|
+
AND principal."membership_id" = member."id"
|
|
84
|
+
WHERE member."workspace_id" = "target_workspace_id"
|
|
85
|
+
AND member."user_id" = "target_user_id";
|
|
86
|
+
|
|
87
|
+
IF "resolved_principal_id" IS NOT NULL THEN
|
|
88
|
+
RETURN "resolved_principal_id";
|
|
89
|
+
END IF;
|
|
90
|
+
|
|
91
|
+
INSERT INTO "public"."workspace_principals" ("workspace_id", "kind", "membership_id", "activated_at")
|
|
92
|
+
SELECT member."workspace_id", 'membership', member."id", member."created_at"
|
|
93
|
+
FROM "public"."memberships" AS member
|
|
94
|
+
WHERE member."workspace_id" = "target_workspace_id"
|
|
95
|
+
AND member."user_id" = "target_user_id"
|
|
96
|
+
ON CONFLICT ("workspace_id", "membership_id") DO NOTHING;
|
|
97
|
+
|
|
98
|
+
SELECT principal."id" INTO "resolved_principal_id"
|
|
99
|
+
FROM "public"."memberships" AS member
|
|
100
|
+
JOIN "public"."workspace_principals" AS principal
|
|
101
|
+
ON principal."workspace_id" = member."workspace_id"
|
|
102
|
+
AND principal."membership_id" = member."id"
|
|
103
|
+
WHERE member."workspace_id" = "target_workspace_id"
|
|
104
|
+
AND member."user_id" = "target_user_id";
|
|
105
|
+
|
|
106
|
+
RETURN "resolved_principal_id";
|
|
107
|
+
END
|
|
108
|
+
$$;--> statement-breakpoint
|
|
109
|
+
|
|
110
|
+
CREATE FUNCTION "public"."rf101_compat_owner_from_creator"()
|
|
111
|
+
RETURNS trigger
|
|
112
|
+
LANGUAGE plpgsql
|
|
113
|
+
SET search_path = pg_catalog
|
|
114
|
+
AS $$
|
|
115
|
+
BEGIN
|
|
116
|
+
IF NEW."owner_principal_id" IS NULL THEN
|
|
117
|
+
NEW."owner_principal_id" := "public"."rf101_compat_membership_principal_id"(
|
|
118
|
+
NEW."workspace_id", NEW."created_by"
|
|
119
|
+
);
|
|
120
|
+
END IF;
|
|
121
|
+
RETURN NEW;
|
|
122
|
+
END
|
|
123
|
+
$$;--> statement-breakpoint
|
|
124
|
+
|
|
125
|
+
CREATE FUNCTION "public"."rf101_compat_session_owner"()
|
|
126
|
+
RETURNS trigger
|
|
127
|
+
LANGUAGE plpgsql
|
|
128
|
+
SET search_path = pg_catalog
|
|
129
|
+
AS $$
|
|
130
|
+
BEGIN
|
|
131
|
+
IF NEW."owner_principal_id" IS NULL THEN
|
|
132
|
+
NEW."owner_principal_id" := "public"."rf101_compat_membership_principal_id"(
|
|
133
|
+
NEW."workspace_id", NEW."user_id"
|
|
134
|
+
);
|
|
135
|
+
END IF;
|
|
136
|
+
RETURN NEW;
|
|
137
|
+
END
|
|
138
|
+
$$;--> statement-breakpoint
|
|
139
|
+
|
|
140
|
+
CREATE FUNCTION "public"."rf101_compat_share_publisher"()
|
|
141
|
+
RETURNS trigger
|
|
142
|
+
LANGUAGE plpgsql
|
|
143
|
+
SET search_path = pg_catalog
|
|
144
|
+
AS $$
|
|
145
|
+
BEGIN
|
|
146
|
+
IF NEW."publisher_principal_id" IS NULL THEN
|
|
147
|
+
NEW."publisher_principal_id" := "public"."rf101_compat_membership_principal_id"(
|
|
148
|
+
NEW."workspace_id", NEW."created_by"
|
|
149
|
+
);
|
|
150
|
+
END IF;
|
|
151
|
+
RETURN NEW;
|
|
152
|
+
END
|
|
153
|
+
$$;--> statement-breakpoint
|
|
154
|
+
|
|
155
|
+
CREATE FUNCTION "public"."rf101_compat_audit_actor"()
|
|
156
|
+
RETURNS trigger
|
|
157
|
+
LANGUAGE plpgsql
|
|
158
|
+
SET search_path = pg_catalog
|
|
159
|
+
AS $$
|
|
160
|
+
BEGIN
|
|
161
|
+
IF NEW."actor_principal_id" IS NULL THEN
|
|
162
|
+
NEW."actor_principal_id" := "public"."rf101_compat_membership_principal_id"(
|
|
163
|
+
NEW."workspace_id", NEW."actor_user_id"
|
|
164
|
+
);
|
|
165
|
+
END IF;
|
|
166
|
+
RETURN NEW;
|
|
167
|
+
END
|
|
168
|
+
$$;--> statement-breakpoint
|
|
169
|
+
|
|
170
|
+
CREATE TRIGGER "agents_rf101_compat_owner" BEFORE INSERT OR UPDATE OF "created_by" ON "public"."agents"
|
|
171
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_owner_from_creator"();--> statement-breakpoint
|
|
172
|
+
CREATE TRIGGER "files_rf101_compat_owner" BEFORE INSERT OR UPDATE OF "created_by" ON "public"."files"
|
|
173
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_owner_from_creator"();--> statement-breakpoint
|
|
174
|
+
CREATE TRIGGER "skills_rf101_compat_owner" BEFORE INSERT OR UPDATE OF "created_by" ON "public"."skills"
|
|
175
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_owner_from_creator"();--> statement-breakpoint
|
|
176
|
+
CREATE TRIGGER "mcp_servers_rf101_compat_owner" BEFORE INSERT OR UPDATE OF "created_by" ON "public"."mcp_servers"
|
|
177
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_owner_from_creator"();--> statement-breakpoint
|
|
178
|
+
CREATE TRIGGER "projects_rf101_compat_owner" BEFORE INSERT OR UPDATE OF "created_by" ON "public"."projects"
|
|
179
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_owner_from_creator"();--> statement-breakpoint
|
|
180
|
+
CREATE TRIGGER "sessions_rf101_compat_owner" BEFORE INSERT OR UPDATE OF "user_id" ON "public"."sessions"
|
|
181
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_session_owner"();--> statement-breakpoint
|
|
182
|
+
CREATE TRIGGER "shares_rf101_compat_publisher" BEFORE INSERT OR UPDATE OF "created_by" ON "public"."shares"
|
|
183
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_share_publisher"();--> statement-breakpoint
|
|
184
|
+
CREATE TRIGGER "audit_events_rf101_compat_actor" BEFORE INSERT OR UPDATE OF "actor_user_id" ON "public"."audit_events"
|
|
185
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_audit_actor"();--> statement-breakpoint
|
|
186
|
+
|
|
187
|
+
-- A prior-version writer can also create a Membership or API key without its new principal row.
|
|
188
|
+
-- Deferred source triggers let a current writer insert its chosen principal in the same
|
|
189
|
+
-- transaction; otherwise they create the exact source principal at commit.
|
|
190
|
+
CREATE FUNCTION "public"."rf101_compat_ensure_membership_principal"()
|
|
191
|
+
RETURNS trigger
|
|
192
|
+
LANGUAGE plpgsql
|
|
193
|
+
SET search_path = pg_catalog
|
|
194
|
+
AS $$
|
|
195
|
+
BEGIN
|
|
196
|
+
INSERT INTO "public"."workspace_principals" ("workspace_id", "kind", "membership_id", "activated_at")
|
|
197
|
+
VALUES (NEW."workspace_id", 'membership', NEW."id", NEW."created_at")
|
|
198
|
+
ON CONFLICT ("workspace_id", "membership_id") DO NOTHING;
|
|
199
|
+
RETURN NULL;
|
|
200
|
+
END
|
|
201
|
+
$$;--> statement-breakpoint
|
|
202
|
+
|
|
203
|
+
CREATE FUNCTION "public"."rf101_compat_ensure_api_key_principal"()
|
|
204
|
+
RETURNS trigger
|
|
205
|
+
LANGUAGE plpgsql
|
|
206
|
+
SET search_path = pg_catalog
|
|
207
|
+
AS $$
|
|
208
|
+
BEGIN
|
|
209
|
+
INSERT INTO "public"."workspace_principals" (
|
|
210
|
+
"workspace_id", "kind", "api_key_id", "activated_at", "revoked_at"
|
|
211
|
+
)
|
|
212
|
+
VALUES (NEW."workspace_id", 'api_key', NEW."id", NEW."created_at", NEW."revoked_at")
|
|
213
|
+
ON CONFLICT ("workspace_id", "api_key_id") DO NOTHING;
|
|
214
|
+
RETURN NULL;
|
|
215
|
+
END
|
|
216
|
+
$$;--> statement-breakpoint
|
|
217
|
+
|
|
218
|
+
CREATE FUNCTION "public"."rf101_compat_sync_api_key_revocation"()
|
|
219
|
+
RETURNS trigger
|
|
220
|
+
LANGUAGE plpgsql
|
|
221
|
+
SET search_path = pg_catalog
|
|
222
|
+
AS $$
|
|
223
|
+
BEGIN
|
|
224
|
+
UPDATE "public"."workspace_principals"
|
|
225
|
+
SET "revoked_at" = NEW."revoked_at"
|
|
226
|
+
WHERE "workspace_id" = NEW."workspace_id" AND "api_key_id" = NEW."id";
|
|
227
|
+
RETURN NULL;
|
|
228
|
+
END
|
|
229
|
+
$$;--> statement-breakpoint
|
|
230
|
+
|
|
231
|
+
CREATE CONSTRAINT TRIGGER "memberships_rf101_compat_principal"
|
|
232
|
+
AFTER INSERT ON "public"."memberships" DEFERRABLE INITIALLY DEFERRED
|
|
233
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_ensure_membership_principal"();--> statement-breakpoint
|
|
234
|
+
CREATE CONSTRAINT TRIGGER "api_keys_rf101_compat_principal"
|
|
235
|
+
AFTER INSERT ON "public"."api_keys" DEFERRABLE INITIALLY DEFERRED
|
|
236
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_ensure_api_key_principal"();--> statement-breakpoint
|
|
237
|
+
CREATE TRIGGER "api_keys_rf101_compat_revocation"
|
|
238
|
+
AFTER UPDATE OF "revoked_at" ON "public"."api_keys"
|
|
239
|
+
FOR EACH ROW EXECUTE FUNCTION "public"."rf101_compat_sync_api_key_revocation"();--> statement-breakpoint
|
|
240
|
+
|
|
241
|
+
-- Projects historically had only a users(id) creator FK. Refuse anomalous data rather than
|
|
242
|
+
-- guessing another person or silently creating an unapproved workspace-system principal.
|
|
243
|
+
DO $$
|
|
244
|
+
BEGIN
|
|
245
|
+
IF EXISTS (
|
|
246
|
+
SELECT 1
|
|
247
|
+
FROM "projects" AS project
|
|
248
|
+
LEFT JOIN "memberships" AS member
|
|
249
|
+
ON member."workspace_id" = project."workspace_id"
|
|
250
|
+
AND member."user_id" = project."created_by"
|
|
251
|
+
WHERE member."id" IS NULL
|
|
252
|
+
) THEN
|
|
253
|
+
RAISE EXCEPTION USING
|
|
254
|
+
ERRCODE = '23514',
|
|
255
|
+
MESSAGE = 'RF-101 cannot map one or more project creators to a same-workspace membership';
|
|
256
|
+
END IF;
|
|
257
|
+
END
|
|
258
|
+
$$;--> statement-breakpoint
|
|
259
|
+
|
|
260
|
+
UPDATE "agents" AS owned SET "owner_principal_id" = principal."id"
|
|
261
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
262
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
263
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."created_by";--> statement-breakpoint
|
|
264
|
+
UPDATE "files" AS owned SET "owner_principal_id" = principal."id"
|
|
265
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
266
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
267
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."created_by";--> statement-breakpoint
|
|
268
|
+
UPDATE "skills" AS owned SET "owner_principal_id" = principal."id"
|
|
269
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
270
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
271
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."created_by";--> statement-breakpoint
|
|
272
|
+
UPDATE "mcp_servers" AS owned SET "owner_principal_id" = principal."id"
|
|
273
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
274
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
275
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."created_by";--> statement-breakpoint
|
|
276
|
+
UPDATE "projects" AS owned SET "owner_principal_id" = principal."id"
|
|
277
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
278
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
279
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."created_by";--> statement-breakpoint
|
|
280
|
+
UPDATE "sessions" AS owned SET "owner_principal_id" = principal."id"
|
|
281
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
282
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
283
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."user_id";--> statement-breakpoint
|
|
284
|
+
UPDATE "shares" AS owned SET "publisher_principal_id" = principal."id"
|
|
285
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
286
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
287
|
+
WHERE member."workspace_id" = owned."workspace_id" AND member."user_id" = owned."created_by";--> statement-breakpoint
|
|
288
|
+
-- Actor attribution is nullable by design. Only an exact surviving same-workspace membership is
|
|
289
|
+
-- backfilled; actor_label remains the historical record when the user or membership is gone.
|
|
290
|
+
UPDATE "audit_events" AS event SET "actor_principal_id" = principal."id"
|
|
291
|
+
FROM "memberships" AS member JOIN "workspace_principals" AS principal
|
|
292
|
+
ON principal."workspace_id" = member."workspace_id" AND principal."membership_id" = member."id"
|
|
293
|
+
WHERE member."workspace_id" = event."workspace_id" AND member."user_id" = event."actor_user_id";--> statement-breakpoint
|
|
294
|
+
|
|
295
|
+
DO $$
|
|
296
|
+
BEGIN
|
|
297
|
+
IF EXISTS (SELECT 1 FROM "agents" WHERE "owner_principal_id" IS NULL)
|
|
298
|
+
OR EXISTS (SELECT 1 FROM "files" WHERE "owner_principal_id" IS NULL)
|
|
299
|
+
OR EXISTS (SELECT 1 FROM "skills" WHERE "owner_principal_id" IS NULL)
|
|
300
|
+
OR EXISTS (SELECT 1 FROM "mcp_servers" WHERE "owner_principal_id" IS NULL)
|
|
301
|
+
OR EXISTS (SELECT 1 FROM "projects" WHERE "owner_principal_id" IS NULL)
|
|
302
|
+
OR EXISTS (SELECT 1 FROM "sessions" WHERE "owner_principal_id" IS NULL)
|
|
303
|
+
OR EXISTS (SELECT 1 FROM "shares" WHERE "publisher_principal_id" IS NULL)
|
|
304
|
+
THEN
|
|
305
|
+
RAISE EXCEPTION USING
|
|
306
|
+
ERRCODE = '23514',
|
|
307
|
+
MESSAGE = 'RF-101 principal ownership backfill left one or more required rows unmapped';
|
|
308
|
+
END IF;
|
|
309
|
+
END
|
|
310
|
+
$$;--> statement-breakpoint
|
|
311
|
+
|
|
312
|
+
-- Required ownership must be complete before constraints are installed. SET NOT NULL is safe in
|
|
313
|
+
-- this drained transactional cutover only after the exact backfill above has mapped every row.
|
|
314
|
+
ALTER TABLE "agents" ALTER COLUMN "owner_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
315
|
+
ALTER TABLE "files" ALTER COLUMN "owner_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
316
|
+
ALTER TABLE "mcp_servers" ALTER COLUMN "owner_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
317
|
+
ALTER TABLE "projects" ALTER COLUMN "owner_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
318
|
+
ALTER TABLE "sessions" ALTER COLUMN "owner_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
319
|
+
ALTER TABLE "shares" ALTER COLUMN "publisher_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
320
|
+
ALTER TABLE "skills" ALTER COLUMN "owner_principal_id" SET NOT NULL;--> statement-breakpoint
|
|
321
|
+
|
|
322
|
+
CREATE INDEX "workspace_principals_workspace_revoked_idx" ON "workspace_principals" USING btree ("workspace_id","revoked_at");--> statement-breakpoint
|
|
323
|
+
CREATE INDEX "agents_owner_principal_idx" ON "agents" USING btree ("owner_principal_id");--> statement-breakpoint
|
|
324
|
+
CREATE INDEX "audit_events_actor_principal_idx" ON "audit_events" USING btree ("actor_principal_id");--> statement-breakpoint
|
|
325
|
+
CREATE INDEX "files_workspace_owner_principal_idx" ON "files" USING btree ("workspace_id","owner_principal_id");--> statement-breakpoint
|
|
326
|
+
CREATE INDEX "mcp_servers_owner_principal_idx" ON "mcp_servers" USING btree ("owner_principal_id");--> statement-breakpoint
|
|
327
|
+
CREATE INDEX "projects_owner_principal_idx" ON "projects" USING btree ("owner_principal_id");--> statement-breakpoint
|
|
328
|
+
CREATE INDEX "sessions_owner_principal_idx" ON "sessions" USING btree ("owner_principal_id");--> statement-breakpoint
|
|
329
|
+
CREATE INDEX "shares_publisher_principal_idx" ON "shares" USING btree ("publisher_principal_id");--> statement-breakpoint
|
|
330
|
+
CREATE INDEX "skills_owner_principal_idx" ON "skills" USING btree ("owner_principal_id");--> statement-breakpoint
|
|
331
|
+
ALTER TABLE "agents" ADD CONSTRAINT "agents_owner_principal_workspace_fk" FOREIGN KEY ("workspace_id","owner_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
332
|
+
-- Preserve immutable audit tenant/label history when a source principal disappears. PostgreSQL's
|
|
333
|
+
-- column-list SET NULL clears only the nullable actor id; workspace_id remains required and intact.
|
|
334
|
+
ALTER TABLE "audit_events" ADD CONSTRAINT "audit_events_actor_principal_workspace_fk" FOREIGN KEY ("workspace_id","actor_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE SET NULL ("actor_principal_id") ON UPDATE no action;--> statement-breakpoint
|
|
335
|
+
ALTER TABLE "files" ADD CONSTRAINT "files_owner_principal_workspace_fk" FOREIGN KEY ("workspace_id","owner_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
336
|
+
ALTER TABLE "mcp_servers" ADD CONSTRAINT "mcp_servers_owner_principal_workspace_fk" FOREIGN KEY ("workspace_id","owner_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
337
|
+
ALTER TABLE "projects" ADD CONSTRAINT "projects_owner_principal_workspace_fk" FOREIGN KEY ("workspace_id","owner_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
338
|
+
ALTER TABLE "sessions" ADD CONSTRAINT "sessions_owner_principal_workspace_fk" FOREIGN KEY ("workspace_id","owner_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
339
|
+
ALTER TABLE "shares" ADD CONSTRAINT "shares_publisher_principal_workspace_fk" FOREIGN KEY ("workspace_id","publisher_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
|
|
340
|
+
ALTER TABLE "skills" ADD CONSTRAINT "skills_owner_principal_workspace_fk" FOREIGN KEY ("workspace_id","owner_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE no action ON UPDATE no action;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ALTER TABLE "agents" ADD COLUMN "policy" jsonb;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
CREATE TABLE "browser_tokens" (
|
|
2
|
+
"id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
|
|
3
|
+
"workspace_id" uuid NOT NULL,
|
|
4
|
+
"minted_by_principal_id" uuid NOT NULL,
|
|
5
|
+
"scope_kind" text NOT NULL,
|
|
6
|
+
"run_id" uuid,
|
|
7
|
+
"session_id" uuid,
|
|
8
|
+
"token_hash" text NOT NULL,
|
|
9
|
+
"expires_at" timestamp with time zone NOT NULL,
|
|
10
|
+
"revoked_at" timestamp with time zone,
|
|
11
|
+
"created_at" timestamp with time zone DEFAULT now() NOT NULL,
|
|
12
|
+
CONSTRAINT "browser_tokens_scope_kind_valid" CHECK ("browser_tokens"."scope_kind" in ('run', 'session')),
|
|
13
|
+
CONSTRAINT "browser_tokens_scope_xor" CHECK (("browser_tokens"."scope_kind" = 'run' and "browser_tokens"."run_id" is not null and "browser_tokens"."session_id" is null)
|
|
14
|
+
or ("browser_tokens"."scope_kind" = 'session' and "browser_tokens"."session_id" is not null and "browser_tokens"."run_id" is null)),
|
|
15
|
+
CONSTRAINT "browser_tokens_expiry_after_created" CHECK ("browser_tokens"."expires_at" > "browser_tokens"."created_at"),
|
|
16
|
+
CONSTRAINT "browser_tokens_revoked_after_created" CHECK ("browser_tokens"."revoked_at" is null or "browser_tokens"."revoked_at" >= "browser_tokens"."created_at")
|
|
17
|
+
);
|
|
18
|
+
--> statement-breakpoint
|
|
19
|
+
ALTER TABLE "browser_tokens" ADD CONSTRAINT "browser_tokens_workspace_id_workspaces_id_fk" FOREIGN KEY ("workspace_id") REFERENCES "public"."workspaces"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
20
|
+
ALTER TABLE "browser_tokens" ADD CONSTRAINT "browser_tokens_run_workspace_fk" FOREIGN KEY ("run_id","workspace_id") REFERENCES "public"."runs"("id","workspace_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
21
|
+
ALTER TABLE "browser_tokens" ADD CONSTRAINT "browser_tokens_session_workspace_fk" FOREIGN KEY ("session_id","workspace_id") REFERENCES "public"."sessions"("id","workspace_id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
22
|
+
ALTER TABLE "browser_tokens" ADD CONSTRAINT "browser_tokens_minter_workspace_fk" FOREIGN KEY ("workspace_id","minted_by_principal_id") REFERENCES "public"."workspace_principals"("workspace_id","id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
|
|
23
|
+
CREATE UNIQUE INDEX "browser_tokens_hash_key" ON "browser_tokens" USING btree ("token_hash");--> statement-breakpoint
|
|
24
|
+
CREATE INDEX "browser_tokens_workspace_run_idx" ON "browser_tokens" USING btree ("workspace_id","run_id");--> statement-breakpoint
|
|
25
|
+
CREATE INDEX "browser_tokens_workspace_session_idx" ON "browser_tokens" USING btree ("workspace_id","session_id");--> statement-breakpoint
|
|
26
|
+
CREATE INDEX "browser_tokens_active_idx" ON "browser_tokens" USING btree ("workspace_id","revoked_at","expires_at");
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
ALTER TABLE "run_usage_records" ADD COLUMN "wire_protocol" text DEFAULT 'anthropic-messages' NOT NULL;--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "run_usage_records" ADD CONSTRAINT "run_usage_records_wire_protocol_known" CHECK ("run_usage_records"."wire_protocol" in ('anthropic-messages', 'openai-responses', 'openai-chat-completions'));
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
ALTER TABLE "sessions" RENAME COLUMN "claude_session_id" TO "engine_session_id";--> statement-breakpoint
|
|
2
|
+
DROP INDEX "sessions_workspace_claude_session_key";--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "runs" ADD COLUMN "engine" text;--> statement-breakpoint
|
|
4
|
+
ALTER TABLE "runs" ADD COLUMN "engine_version" text;--> statement-breakpoint
|
|
5
|
+
ALTER TABLE "sessions" ADD COLUMN "engine" text;--> statement-breakpoint
|
|
6
|
+
CREATE UNIQUE INDEX "sessions_workspace_engine_session_key" ON "sessions" USING btree ("workspace_id","engine_session_id");--> statement-breakpoint
|
|
7
|
+
-- Hand edit: both `NOT VALID` clauses below are not drizzle-kit output; restore them after any regeneration (ADR-0069).
|
|
8
|
+
ALTER TABLE "runs" ADD CONSTRAINT "runs_engine_valid" CHECK ("runs"."engine" in ('claude-agent-sdk')) NOT VALID;--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "sessions" ADD CONSTRAINT "sessions_engine_valid" CHECK ("sessions"."engine" in ('claude-agent-sdk')) NOT VALID;
|