@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.
Files changed (619) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/LICENSE +202 -0
  3. package/README.md +309 -0
  4. package/dist/bin.js +73 -0
  5. package/dist/launch.js +28617 -0
  6. package/dist/migrations/0000_init.sql +119 -0
  7. package/dist/migrations/0001_w2_resources.sql +177 -0
  8. package/dist/migrations/0002_w3_runtime_profiles.sql +34 -0
  9. package/dist/migrations/0003_steep_galactus.sql +91 -0
  10. package/dist/migrations/0004_overconfident_lake.sql +16 -0
  11. package/dist/migrations/0005_durable_sessions_run_tokens.sql +46 -0
  12. package/dist/migrations/0006_familiar_karnak.sql +2 -0
  13. package/dist/migrations/0007_fast_hannibal_king.sql +1 -0
  14. package/dist/migrations/0008_damp_nemesis.sql +31 -0
  15. package/dist/migrations/0009_special_thena.sql +2 -0
  16. package/dist/migrations/0010_little_power_pack.sql +66 -0
  17. package/dist/migrations/0011_goofy_storm.sql +14 -0
  18. package/dist/migrations/0012_legal_shatterstar.sql +14 -0
  19. package/dist/migrations/0013_secret_namora.sql +9 -0
  20. package/dist/migrations/0014_premium_vengeance.sql +16 -0
  21. package/dist/migrations/0015_amazing_screwball.sql +1 -0
  22. package/dist/migrations/0016_next_satana.sql +29 -0
  23. package/dist/migrations/0017_wild_the_executioner.sql +1 -0
  24. package/dist/migrations/0018_heavy_stone_men.sql +2 -0
  25. package/dist/migrations/0019_repair_legacy_run_accounting.sql +20 -0
  26. package/dist/migrations/0020_sparkling_nova.sql +340 -0
  27. package/dist/migrations/0021_slippery_sister_grimm.sql +1 -0
  28. package/dist/migrations/0022_warm_paibok.sql +26 -0
  29. package/dist/migrations/0023_colorful_shotgun.sql +2 -0
  30. package/dist/migrations/0024_curly_molten_man.sql +9 -0
  31. package/dist/migrations/0025_name_the_engine_in_stored_rows.sql +50 -0
  32. package/dist/migrations/0026_create_the_engine_scoped_session_state_store.sql +47 -0
  33. package/dist/migrations/0027_backfill_claude_session_state.sql +66 -0
  34. package/dist/migrations/0028_widen_the_engine_checks_to_openai_agents.sql +14 -0
  35. package/dist/migrations/0029_widen_the_engine_checks_to_pi.sql +14 -0
  36. package/dist/migrations/0030_create_the_cli_sessions_table.sql +23 -0
  37. package/dist/migrations/0031_widen_the_engine_checks_to_mastra.sql +17 -0
  38. package/dist/migrations/0032_mark_the_setup_agent.sql +7 -0
  39. package/dist/migrations/0033_create_the_agent_version_store.sql +41 -0
  40. package/dist/migrations/0034_mark_the_workspace_default_runtime_profile.sql +15 -0
  41. package/dist/migrations/0035_record_who_a_local_runtime_key_acts_for.sql +19 -0
  42. package/dist/migrations/0036_add_connector_kinds_and_the_run_tool_snapshot.sql +34 -0
  43. package/dist/migrations/0037_create_the_surface_session_keys.sql +20 -0
  44. package/dist/migrations/0038_record_feedback_on_a_run.sql +14 -0
  45. package/dist/migrations/0039_record_an_evaluation_of_a_version.sql +18 -0
  46. package/dist/migrations/0040_record_the_materialised_version.sql +23 -0
  47. package/dist/migrations/0041_pin_a_session_to_its_agent_version.sql +4 -0
  48. package/dist/migrations/0042_store_the_prompt_of_a_run.sql +1 -0
  49. package/dist/migrations/0043_record_every_pointer_move.sql +30 -0
  50. package/dist/migrations/meta/0000_snapshot.json +964 -0
  51. package/dist/migrations/meta/0001_snapshot.json +2278 -0
  52. package/dist/migrations/meta/0002_snapshot.json +2550 -0
  53. package/dist/migrations/meta/0003_snapshot.json +3295 -0
  54. package/dist/migrations/meta/0004_snapshot.json +3452 -0
  55. package/dist/migrations/meta/0005_snapshot.json +3921 -0
  56. package/dist/migrations/meta/0006_snapshot.json +3949 -0
  57. package/dist/migrations/meta/0007_snapshot.json +3956 -0
  58. package/dist/migrations/meta/0008_snapshot.json +4177 -0
  59. package/dist/migrations/meta/0009_snapshot.json +4177 -0
  60. package/dist/migrations/meta/0010_snapshot.json +3988 -0
  61. package/dist/migrations/meta/0011_snapshot.json +4491 -0
  62. package/dist/migrations/meta/0012_snapshot.json +4629 -0
  63. package/dist/migrations/meta/0013_snapshot.json +4646 -0
  64. package/dist/migrations/meta/0014_snapshot.json +4313 -0
  65. package/dist/migrations/meta/0015_snapshot.json +4775 -0
  66. package/dist/migrations/meta/0016_snapshot.json +4976 -0
  67. package/dist/migrations/meta/0017_snapshot.json +4982 -0
  68. package/dist/migrations/meta/0018_snapshot.json +4982 -0
  69. package/dist/migrations/meta/0019_snapshot.json +4990 -0
  70. package/dist/migrations/meta/0020_snapshot.json +5469 -0
  71. package/dist/migrations/meta/0021_snapshot.json +5475 -0
  72. package/dist/migrations/meta/0022_snapshot.json +5711 -0
  73. package/dist/migrations/meta/0023_snapshot.json +5722 -0
  74. package/dist/migrations/meta/0024_snapshot.json +5748 -0
  75. package/dist/migrations/meta/0025_snapshot.json +5748 -0
  76. package/dist/migrations/meta/0026_snapshot.json +6151 -0
  77. package/dist/migrations/meta/0027_snapshot.json +6151 -0
  78. package/dist/migrations/meta/0028_snapshot.json +6151 -0
  79. package/dist/migrations/meta/0029_snapshot.json +6151 -0
  80. package/dist/migrations/meta/0030_snapshot.json +6328 -0
  81. package/dist/migrations/meta/0031_snapshot.json +6328 -0
  82. package/dist/migrations/meta/0032_snapshot.json +6334 -0
  83. package/dist/migrations/meta/0033_snapshot.json +6615 -0
  84. package/dist/migrations/meta/0034_snapshot.json +6633 -0
  85. package/dist/migrations/meta/0035_snapshot.json +6662 -0
  86. package/dist/migrations/meta/0036_snapshot.json +6706 -0
  87. package/dist/migrations/meta/0037_snapshot.json +6816 -0
  88. package/dist/migrations/meta/0038_snapshot.json +6927 -0
  89. package/dist/migrations/meta/0039_snapshot.json +7073 -0
  90. package/dist/migrations/meta/0040_snapshot.json +7096 -0
  91. package/dist/migrations/meta/0041_snapshot.json +7119 -0
  92. package/dist/migrations/meta/0042_snapshot.json +7125 -0
  93. package/dist/migrations/meta/0043_snapshot.json +7292 -0
  94. package/dist/migrations/meta/_journal.json +314 -0
  95. package/dist/web/.next-embedded/BUILD_ID +1 -0
  96. package/dist/web/.next-embedded/app-path-routes-manifest.json +108 -0
  97. package/dist/web/.next-embedded/build-manifest.json +20 -0
  98. package/dist/web/.next-embedded/diagnostics/build-diagnostics.json +6 -0
  99. package/dist/web/.next-embedded/diagnostics/framework.json +1 -0
  100. package/dist/web/.next-embedded/export-marker.json +6 -0
  101. package/dist/web/.next-embedded/images-manifest.json +68 -0
  102. package/dist/web/.next-embedded/package.json +1 -0
  103. package/dist/web/.next-embedded/prerender-manifest.json +97 -0
  104. package/dist/web/.next-embedded/react-loadable-manifest.json +1 -0
  105. package/dist/web/.next-embedded/required-server-files.js +355 -0
  106. package/dist/web/.next-embedded/required-server-files.json +355 -0
  107. package/dist/web/.next-embedded/routes-manifest.json +786 -0
  108. package/dist/web/.next-embedded/server/app/(shell)/admin/api-keys/page.js +1 -0
  109. package/dist/web/.next-embedded/server/app/(shell)/admin/api-keys/page_client-reference-manifest.js +1 -0
  110. package/dist/web/.next-embedded/server/app/(shell)/admin/models/new/page.js +1 -0
  111. package/dist/web/.next-embedded/server/app/(shell)/admin/models/new/page_client-reference-manifest.js +1 -0
  112. package/dist/web/.next-embedded/server/app/(shell)/admin/models/page.js +1 -0
  113. package/dist/web/.next-embedded/server/app/(shell)/admin/models/page_client-reference-manifest.js +1 -0
  114. package/dist/web/.next-embedded/server/app/(shell)/admin/runtimes/page.js +1 -0
  115. package/dist/web/.next-embedded/server/app/(shell)/admin/runtimes/page_client-reference-manifest.js +1 -0
  116. package/dist/web/.next-embedded/server/app/(shell)/admin/settings/page.js +1 -0
  117. package/dist/web/.next-embedded/server/app/(shell)/admin/settings/page_client-reference-manifest.js +1 -0
  118. package/dist/web/.next-embedded/server/app/(shell)/admin/shares/page.js +1 -0
  119. package/dist/web/.next-embedded/server/app/(shell)/admin/shares/page_client-reference-manifest.js +1 -0
  120. package/dist/web/.next-embedded/server/app/(shell)/admin/users/page.js +1 -0
  121. package/dist/web/.next-embedded/server/app/(shell)/admin/users/page_client-reference-manifest.js +1 -0
  122. package/dist/web/.next-embedded/server/app/(shell)/agents/[id]/page.js +1 -0
  123. package/dist/web/.next-embedded/server/app/(shell)/agents/[id]/page_client-reference-manifest.js +1 -0
  124. package/dist/web/.next-embedded/server/app/(shell)/agents/new/page.js +1 -0
  125. package/dist/web/.next-embedded/server/app/(shell)/agents/new/page_client-reference-manifest.js +1 -0
  126. package/dist/web/.next-embedded/server/app/(shell)/agents/page.js +1 -0
  127. package/dist/web/.next-embedded/server/app/(shell)/agents/page_client-reference-manifest.js +1 -0
  128. package/dist/web/.next-embedded/server/app/(shell)/connectors/new/page.js +1 -0
  129. package/dist/web/.next-embedded/server/app/(shell)/connectors/new/page_client-reference-manifest.js +1 -0
  130. package/dist/web/.next-embedded/server/app/(shell)/connectors/page.js +1 -0
  131. package/dist/web/.next-embedded/server/app/(shell)/connectors/page_client-reference-manifest.js +1 -0
  132. package/dist/web/.next-embedded/server/app/(shell)/files/page.js +1 -0
  133. package/dist/web/.next-embedded/server/app/(shell)/files/page_client-reference-manifest.js +1 -0
  134. package/dist/web/.next-embedded/server/app/(shell)/page.js +1 -0
  135. package/dist/web/.next-embedded/server/app/(shell)/page_client-reference-manifest.js +1 -0
  136. package/dist/web/.next-embedded/server/app/(shell)/projects/[id]/page.js +1 -0
  137. package/dist/web/.next-embedded/server/app/(shell)/projects/[id]/page_client-reference-manifest.js +1 -0
  138. package/dist/web/.next-embedded/server/app/(shell)/projects/page.js +1 -0
  139. package/dist/web/.next-embedded/server/app/(shell)/projects/page_client-reference-manifest.js +1 -0
  140. package/dist/web/.next-embedded/server/app/(shell)/runs/page.js +1 -0
  141. package/dist/web/.next-embedded/server/app/(shell)/runs/page_client-reference-manifest.js +1 -0
  142. package/dist/web/.next-embedded/server/app/(shell)/skills/[name]/page.js +1 -0
  143. package/dist/web/.next-embedded/server/app/(shell)/skills/[name]/page_client-reference-manifest.js +1 -0
  144. package/dist/web/.next-embedded/server/app/(shell)/skills/page.js +1 -0
  145. package/dist/web/.next-embedded/server/app/(shell)/skills/page_client-reference-manifest.js +1 -0
  146. package/dist/web/.next-embedded/server/app/(shell)/workspaces/page.js +1 -0
  147. package/dist/web/.next-embedded/server/app/(shell)/workspaces/page_client-reference-manifest.js +1 -0
  148. package/dist/web/.next-embedded/server/app/_global-error/page.js +31 -0
  149. package/dist/web/.next-embedded/server/app/_global-error/page_client-reference-manifest.js +1 -0
  150. package/dist/web/.next-embedded/server/app/_global-error.html +1 -0
  151. package/dist/web/.next-embedded/server/app/_global-error.meta +27 -0
  152. package/dist/web/.next-embedded/server/app/_global-error.rsc +14 -0
  153. package/dist/web/.next-embedded/server/app/_global-error.segments/_full.segment.rsc +14 -0
  154. package/dist/web/.next-embedded/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +20 -0
  155. package/dist/web/.next-embedded/server/app/_global-error.segments/_tree.segment.rsc +1 -0
  156. package/dist/web/.next-embedded/server/app/_not-found/page.js +1 -0
  157. package/dist/web/.next-embedded/server/app/_not-found/page_client-reference-manifest.js +1 -0
  158. package/dist/web/.next-embedded/server/app/_not-found.html +1 -0
  159. package/dist/web/.next-embedded/server/app/_not-found.meta +27 -0
  160. package/dist/web/.next-embedded/server/app/_not-found.rsc +15 -0
  161. package/dist/web/.next-embedded/server/app/_not-found.segments/_full.segment.rsc +15 -0
  162. package/dist/web/.next-embedded/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +21 -0
  163. package/dist/web/.next-embedded/server/app/_not-found.segments/_tree.segment.rsc +2 -0
  164. package/dist/web/.next-embedded/server/app/api/agents/[id]/evaluations/route.js +1 -0
  165. package/dist/web/.next-embedded/server/app/api/agents/[id]/evaluations/route_client-reference-manifest.js +1 -0
  166. package/dist/web/.next-embedded/server/app/api/agents/[id]/feedback/route.js +1 -0
  167. package/dist/web/.next-embedded/server/app/api/agents/[id]/feedback/route_client-reference-manifest.js +1 -0
  168. package/dist/web/.next-embedded/server/app/api/agents/[id]/grants/route.js +1 -0
  169. package/dist/web/.next-embedded/server/app/api/agents/[id]/grants/route_client-reference-manifest.js +1 -0
  170. package/dist/web/.next-embedded/server/app/api/agents/[id]/pointers/route.js +1 -0
  171. package/dist/web/.next-embedded/server/app/api/agents/[id]/pointers/route_client-reference-manifest.js +1 -0
  172. package/dist/web/.next-embedded/server/app/api/agents/[id]/policy/route.js +1 -0
  173. package/dist/web/.next-embedded/server/app/api/agents/[id]/policy/route_client-reference-manifest.js +1 -0
  174. package/dist/web/.next-embedded/server/app/api/agents/[id]/promote/route.js +1 -0
  175. package/dist/web/.next-embedded/server/app/api/agents/[id]/promote/route_client-reference-manifest.js +1 -0
  176. package/dist/web/.next-embedded/server/app/api/agents/[id]/resources/route.js +1 -0
  177. package/dist/web/.next-embedded/server/app/api/agents/[id]/resources/route_client-reference-manifest.js +1 -0
  178. package/dist/web/.next-embedded/server/app/api/agents/[id]/rollback/route.js +1 -0
  179. package/dist/web/.next-embedded/server/app/api/agents/[id]/rollback/route_client-reference-manifest.js +1 -0
  180. package/dist/web/.next-embedded/server/app/api/agents/[id]/route.js +1 -0
  181. package/dist/web/.next-embedded/server/app/api/agents/[id]/route_client-reference-manifest.js +1 -0
  182. package/dist/web/.next-embedded/server/app/api/agents/[id]/runs/route.js +1 -0
  183. package/dist/web/.next-embedded/server/app/api/agents/[id]/runs/route_client-reference-manifest.js +1 -0
  184. package/dist/web/.next-embedded/server/app/api/agents/[id]/versions/route.js +1 -0
  185. package/dist/web/.next-embedded/server/app/api/agents/[id]/versions/route_client-reference-manifest.js +1 -0
  186. package/dist/web/.next-embedded/server/app/api/agents/route.js +1 -0
  187. package/dist/web/.next-embedded/server/app/api/agents/route_client-reference-manifest.js +1 -0
  188. package/dist/web/.next-embedded/server/app/api/api-keys/[id]/route.js +1 -0
  189. package/dist/web/.next-embedded/server/app/api/api-keys/[id]/route_client-reference-manifest.js +1 -0
  190. package/dist/web/.next-embedded/server/app/api/api-keys/route.js +1 -0
  191. package/dist/web/.next-embedded/server/app/api/api-keys/route_client-reference-manifest.js +1 -0
  192. package/dist/web/.next-embedded/server/app/api/audit-events/route.js +1 -0
  193. package/dist/web/.next-embedded/server/app/api/audit-events/route_client-reference-manifest.js +1 -0
  194. package/dist/web/.next-embedded/server/app/api/auth/callback/route.js +1 -0
  195. package/dist/web/.next-embedded/server/app/api/auth/callback/route_client-reference-manifest.js +1 -0
  196. package/dist/web/.next-embedded/server/app/api/auth/cli-device/route.js +1 -0
  197. package/dist/web/.next-embedded/server/app/api/auth/cli-device/route_client-reference-manifest.js +1 -0
  198. package/dist/web/.next-embedded/server/app/api/auth/cli-token/route.js +1 -0
  199. package/dist/web/.next-embedded/server/app/api/auth/cli-token/route_client-reference-manifest.js +1 -0
  200. package/dist/web/.next-embedded/server/app/api/auth/cli-verify/route.js +1 -0
  201. package/dist/web/.next-embedded/server/app/api/auth/cli-verify/route_client-reference-manifest.js +1 -0
  202. package/dist/web/.next-embedded/server/app/api/auth/cli-workspace/route.js +1 -0
  203. package/dist/web/.next-embedded/server/app/api/auth/cli-workspace/route_client-reference-manifest.js +1 -0
  204. package/dist/web/.next-embedded/server/app/api/auth/login/route.js +1 -0
  205. package/dist/web/.next-embedded/server/app/api/auth/login/route_client-reference-manifest.js +1 -0
  206. package/dist/web/.next-embedded/server/app/api/auth/workspace/route.js +13 -0
  207. package/dist/web/.next-embedded/server/app/api/auth/workspace/route_client-reference-manifest.js +1 -0
  208. package/dist/web/.next-embedded/server/app/api/connectors/[id]/route.js +1 -0
  209. package/dist/web/.next-embedded/server/app/api/connectors/[id]/route_client-reference-manifest.js +1 -0
  210. package/dist/web/.next-embedded/server/app/api/connectors/[id]/test-connection/route.js +1 -0
  211. package/dist/web/.next-embedded/server/app/api/connectors/[id]/test-connection/route_client-reference-manifest.js +1 -0
  212. package/dist/web/.next-embedded/server/app/api/connectors/route.js +1 -0
  213. package/dist/web/.next-embedded/server/app/api/connectors/route_client-reference-manifest.js +1 -0
  214. package/dist/web/.next-embedded/server/app/api/engines/route.js +1 -0
  215. package/dist/web/.next-embedded/server/app/api/engines/route_client-reference-manifest.js +1 -0
  216. package/dist/web/.next-embedded/server/app/api/files/[id]/route.js +1 -0
  217. package/dist/web/.next-embedded/server/app/api/files/[id]/route_client-reference-manifest.js +1 -0
  218. package/dist/web/.next-embedded/server/app/api/files/route.js +1 -0
  219. package/dist/web/.next-embedded/server/app/api/files/route_client-reference-manifest.js +1 -0
  220. package/dist/web/.next-embedded/server/app/api/invitations/[id]/accept/route.js +1 -0
  221. package/dist/web/.next-embedded/server/app/api/invitations/[id]/accept/route_client-reference-manifest.js +1 -0
  222. package/dist/web/.next-embedded/server/app/api/invitations/[id]/resend/route.js +1 -0
  223. package/dist/web/.next-embedded/server/app/api/invitations/[id]/resend/route_client-reference-manifest.js +1 -0
  224. package/dist/web/.next-embedded/server/app/api/invitations/[id]/route.js +1 -0
  225. package/dist/web/.next-embedded/server/app/api/invitations/[id]/route_client-reference-manifest.js +1 -0
  226. package/dist/web/.next-embedded/server/app/api/invitations/route.js +1 -0
  227. package/dist/web/.next-embedded/server/app/api/invitations/route_client-reference-manifest.js +1 -0
  228. package/dist/web/.next-embedded/server/app/api/me/route.js +1 -0
  229. package/dist/web/.next-embedded/server/app/api/me/route_client-reference-manifest.js +1 -0
  230. package/dist/web/.next-embedded/server/app/api/memberships/[id]/route.js +1 -0
  231. package/dist/web/.next-embedded/server/app/api/memberships/[id]/route_client-reference-manifest.js +1 -0
  232. package/dist/web/.next-embedded/server/app/api/memberships/route.js +1 -0
  233. package/dist/web/.next-embedded/server/app/api/memberships/route_client-reference-manifest.js +1 -0
  234. package/dist/web/.next-embedded/server/app/api/metrics/route.js +1 -0
  235. package/dist/web/.next-embedded/server/app/api/metrics/route_client-reference-manifest.js +1 -0
  236. package/dist/web/.next-embedded/server/app/api/model-connections/[id]/credential/route.js +1 -0
  237. package/dist/web/.next-embedded/server/app/api/model-connections/[id]/credential/route_client-reference-manifest.js +1 -0
  238. package/dist/web/.next-embedded/server/app/api/model-connections/[id]/route.js +1 -0
  239. package/dist/web/.next-embedded/server/app/api/model-connections/[id]/route_client-reference-manifest.js +1 -0
  240. package/dist/web/.next-embedded/server/app/api/model-connections/[id]/test/route.js +1 -0
  241. package/dist/web/.next-embedded/server/app/api/model-connections/[id]/test/route_client-reference-manifest.js +1 -0
  242. package/dist/web/.next-embedded/server/app/api/model-connections/route.js +1 -0
  243. package/dist/web/.next-embedded/server/app/api/model-connections/route_client-reference-manifest.js +1 -0
  244. package/dist/web/.next-embedded/server/app/api/models/route.js +1 -0
  245. package/dist/web/.next-embedded/server/app/api/models/route_client-reference-manifest.js +1 -0
  246. package/dist/web/.next-embedded/server/app/api/projects/[id]/archive/route.js +1 -0
  247. package/dist/web/.next-embedded/server/app/api/projects/[id]/archive/route_client-reference-manifest.js +1 -0
  248. package/dist/web/.next-embedded/server/app/api/projects/[id]/restore/route.js +1 -0
  249. package/dist/web/.next-embedded/server/app/api/projects/[id]/restore/route_client-reference-manifest.js +1 -0
  250. package/dist/web/.next-embedded/server/app/api/projects/[id]/route.js +1 -0
  251. package/dist/web/.next-embedded/server/app/api/projects/[id]/route_client-reference-manifest.js +1 -0
  252. package/dist/web/.next-embedded/server/app/api/projects/[id]/sessions/route.js +1 -0
  253. package/dist/web/.next-embedded/server/app/api/projects/[id]/sessions/route_client-reference-manifest.js +1 -0
  254. package/dist/web/.next-embedded/server/app/api/projects/route.js +1 -0
  255. package/dist/web/.next-embedded/server/app/api/projects/route_client-reference-manifest.js +1 -0
  256. package/dist/web/.next-embedded/server/app/api/runs/[id]/events/route.js +1 -0
  257. package/dist/web/.next-embedded/server/app/api/runs/[id]/events/route_client-reference-manifest.js +1 -0
  258. package/dist/web/.next-embedded/server/app/api/runs/[id]/feedback/route.js +1 -0
  259. package/dist/web/.next-embedded/server/app/api/runs/[id]/feedback/route_client-reference-manifest.js +1 -0
  260. package/dist/web/.next-embedded/server/app/api/runs/[id]/interrupt/route.js +1 -0
  261. package/dist/web/.next-embedded/server/app/api/runs/[id]/interrupt/route_client-reference-manifest.js +1 -0
  262. package/dist/web/.next-embedded/server/app/api/runs/[id]/revoke-tokens/route.js +1 -0
  263. package/dist/web/.next-embedded/server/app/api/runs/[id]/revoke-tokens/route_client-reference-manifest.js +1 -0
  264. package/dist/web/.next-embedded/server/app/api/runs/[id]/route.js +1 -0
  265. package/dist/web/.next-embedded/server/app/api/runs/[id]/route_client-reference-manifest.js +1 -0
  266. package/dist/web/.next-embedded/server/app/api/runs/route.js +1 -0
  267. package/dist/web/.next-embedded/server/app/api/runs/route_client-reference-manifest.js +1 -0
  268. package/dist/web/.next-embedded/server/app/api/runtime-connections/route.js +1 -0
  269. package/dist/web/.next-embedded/server/app/api/runtime-connections/route_client-reference-manifest.js +1 -0
  270. package/dist/web/.next-embedded/server/app/api/runtime-profiles/[id]/route.js +1 -0
  271. package/dist/web/.next-embedded/server/app/api/runtime-profiles/[id]/route_client-reference-manifest.js +1 -0
  272. package/dist/web/.next-embedded/server/app/api/runtime-profiles/route.js +1 -0
  273. package/dist/web/.next-embedded/server/app/api/runtime-profiles/route_client-reference-manifest.js +1 -0
  274. package/dist/web/.next-embedded/server/app/api/runtimes/[id]/route.js +1 -0
  275. package/dist/web/.next-embedded/server/app/api/runtimes/[id]/route_client-reference-manifest.js +1 -0
  276. package/dist/web/.next-embedded/server/app/api/secrets/[id]/route.js +1 -0
  277. package/dist/web/.next-embedded/server/app/api/secrets/[id]/route_client-reference-manifest.js +1 -0
  278. package/dist/web/.next-embedded/server/app/api/secrets/route.js +1 -0
  279. package/dist/web/.next-embedded/server/app/api/secrets/route_client-reference-manifest.js +1 -0
  280. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/route.js +1 -0
  281. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/route_client-reference-manifest.js +1 -0
  282. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-blobs/route.js +1 -0
  283. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-blobs/route_client-reference-manifest.js +1 -0
  284. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-entries/route.js +1 -0
  285. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-entries/route_client-reference-manifest.js +1 -0
  286. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-streams/route.js +1 -0
  287. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/state-streams/route_client-reference-manifest.js +1 -0
  288. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/subkeys/route.js +1 -0
  289. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/subkeys/route_client-reference-manifest.js +1 -0
  290. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/transcript/route.js +1 -0
  291. package/dist/web/.next-embedded/server/app/api/sessions/[engineSessionId]/transcript/route_client-reference-manifest.js +1 -0
  292. package/dist/web/.next-embedded/server/app/api/sessions/route.js +1 -0
  293. package/dist/web/.next-embedded/server/app/api/sessions/route_client-reference-manifest.js +1 -0
  294. package/dist/web/.next-embedded/server/app/api/setup/route.js +1 -0
  295. package/dist/web/.next-embedded/server/app/api/setup/route_client-reference-manifest.js +1 -0
  296. package/dist/web/.next-embedded/server/app/api/setup/runtime-detect/route.js +1 -0
  297. package/dist/web/.next-embedded/server/app/api/setup/runtime-detect/route_client-reference-manifest.js +1 -0
  298. package/dist/web/.next-embedded/server/app/api/shares/[id]/route.js +1 -0
  299. package/dist/web/.next-embedded/server/app/api/shares/[id]/route_client-reference-manifest.js +1 -0
  300. package/dist/web/.next-embedded/server/app/api/shares/route.js +1 -0
  301. package/dist/web/.next-embedded/server/app/api/shares/route_client-reference-manifest.js +1 -0
  302. package/dist/web/.next-embedded/server/app/api/sharing-policies/route.js +1 -0
  303. package/dist/web/.next-embedded/server/app/api/sharing-policies/route_client-reference-manifest.js +1 -0
  304. package/dist/web/.next-embedded/server/app/api/skills/[name]/route.js +1 -0
  305. package/dist/web/.next-embedded/server/app/api/skills/[name]/route_client-reference-manifest.js +1 -0
  306. package/dist/web/.next-embedded/server/app/api/skills/route.js +1 -0
  307. package/dist/web/.next-embedded/server/app/api/skills/route_client-reference-manifest.js +1 -0
  308. package/dist/web/.next-embedded/server/app/api/tokens/route.js +1 -0
  309. package/dist/web/.next-embedded/server/app/api/tokens/route_client-reference-manifest.js +1 -0
  310. package/dist/web/.next-embedded/server/app/api/users/route.js +1 -0
  311. package/dist/web/.next-embedded/server/app/api/users/route_client-reference-manifest.js +1 -0
  312. package/dist/web/.next-embedded/server/app/api/workspaces/[id]/route.js +1 -0
  313. package/dist/web/.next-embedded/server/app/api/workspaces/[id]/route_client-reference-manifest.js +1 -0
  314. package/dist/web/.next-embedded/server/app/api/workspaces/route.js +1 -0
  315. package/dist/web/.next-embedded/server/app/api/workspaces/route_client-reference-manifest.js +1 -0
  316. package/dist/web/.next-embedded/server/app/p/[token]/messages/route.js +1 -0
  317. package/dist/web/.next-embedded/server/app/p/[token]/messages/route_client-reference-manifest.js +1 -0
  318. package/dist/web/.next-embedded/server/app/p/[token]/page.js +1 -0
  319. package/dist/web/.next-embedded/server/app/p/[token]/page_client-reference-manifest.js +1 -0
  320. package/dist/web/.next-embedded/server/app/p/s/[name]/page.js +1 -0
  321. package/dist/web/.next-embedded/server/app/p/s/[name]/page_client-reference-manifest.js +1 -0
  322. package/dist/web/.next-embedded/server/app/p/s/[name]/sessions/route.js +1 -0
  323. package/dist/web/.next-embedded/server/app/p/s/[name]/sessions/route_client-reference-manifest.js +1 -0
  324. package/dist/web/.next-embedded/server/app/p/s/[name]/try/page.js +1 -0
  325. package/dist/web/.next-embedded/server/app/p/s/[name]/try/page_client-reference-manifest.js +1 -0
  326. package/dist/web/.next-embedded/server/app/p/s/[name]/widget.js/route.js +156 -0
  327. package/dist/web/.next-embedded/server/app/p/s/[name]/widget.js/route_client-reference-manifest.js +1 -0
  328. package/dist/web/.next-embedded/server/app/setup/page.js +1 -0
  329. package/dist/web/.next-embedded/server/app/setup/page_client-reference-manifest.js +1 -0
  330. package/dist/web/.next-embedded/server/app/setup.html +1 -0
  331. package/dist/web/.next-embedded/server/app/setup.meta +26 -0
  332. package/dist/web/.next-embedded/server/app/setup.rsc +16 -0
  333. package/dist/web/.next-embedded/server/app/setup.segments/_full.segment.rsc +16 -0
  334. package/dist/web/.next-embedded/server/app/setup.segments/_tree.segment.rsc +2 -0
  335. package/dist/web/.next-embedded/server/app/setup.segments/setup/__PAGE__.segment.rsc +22 -0
  336. package/dist/web/.next-embedded/server/app/signin/page.js +2 -0
  337. package/dist/web/.next-embedded/server/app/signin/page_client-reference-manifest.js +1 -0
  338. package/dist/web/.next-embedded/server/app-paths-manifest.json +108 -0
  339. package/dist/web/.next-embedded/server/chunks/1117.js +1 -0
  340. package/dist/web/.next-embedded/server/chunks/1173.js +1 -0
  341. package/dist/web/.next-embedded/server/chunks/1190.js +1 -0
  342. package/dist/web/.next-embedded/server/chunks/121.js +1 -0
  343. package/dist/web/.next-embedded/server/chunks/1231.js +8 -0
  344. package/dist/web/.next-embedded/server/chunks/1252.js +1 -0
  345. package/dist/web/.next-embedded/server/chunks/1328.js +1 -0
  346. package/dist/web/.next-embedded/server/chunks/1503.js +1 -0
  347. package/dist/web/.next-embedded/server/chunks/1519.js +1 -0
  348. package/dist/web/.next-embedded/server/chunks/1610.js +1 -0
  349. package/dist/web/.next-embedded/server/chunks/1614.js +1 -0
  350. package/dist/web/.next-embedded/server/chunks/1794.js +1 -0
  351. package/dist/web/.next-embedded/server/chunks/1804.js +1 -0
  352. package/dist/web/.next-embedded/server/chunks/1924.js +1 -0
  353. package/dist/web/.next-embedded/server/chunks/1947.js +1 -0
  354. package/dist/web/.next-embedded/server/chunks/1998.js +1 -0
  355. package/dist/web/.next-embedded/server/chunks/2026.js +1 -0
  356. package/dist/web/.next-embedded/server/chunks/2030.js +39 -0
  357. package/dist/web/.next-embedded/server/chunks/2049.js +12 -0
  358. package/dist/web/.next-embedded/server/chunks/2192.js +1 -0
  359. package/dist/web/.next-embedded/server/chunks/2208.js +3 -0
  360. package/dist/web/.next-embedded/server/chunks/2239.js +1 -0
  361. package/dist/web/.next-embedded/server/chunks/2250.js +1 -0
  362. package/dist/web/.next-embedded/server/chunks/2294.js +1 -0
  363. package/dist/web/.next-embedded/server/chunks/2300.js +1 -0
  364. package/dist/web/.next-embedded/server/chunks/235.js +1 -0
  365. package/dist/web/.next-embedded/server/chunks/240.js +2 -0
  366. package/dist/web/.next-embedded/server/chunks/2400.js +1 -0
  367. package/dist/web/.next-embedded/server/chunks/2438.js +2 -0
  368. package/dist/web/.next-embedded/server/chunks/2448.js +1 -0
  369. package/dist/web/.next-embedded/server/chunks/2502.js +1 -0
  370. package/dist/web/.next-embedded/server/chunks/2580.js +1 -0
  371. package/dist/web/.next-embedded/server/chunks/2587.js +1 -0
  372. package/dist/web/.next-embedded/server/chunks/2610.js +1 -0
  373. package/dist/web/.next-embedded/server/chunks/2670.js +1 -0
  374. package/dist/web/.next-embedded/server/chunks/2780.js +165 -0
  375. package/dist/web/.next-embedded/server/chunks/2792.js +1 -0
  376. package/dist/web/.next-embedded/server/chunks/2857.js +1 -0
  377. package/dist/web/.next-embedded/server/chunks/2884.js +1 -0
  378. package/dist/web/.next-embedded/server/chunks/2895.js +19 -0
  379. package/dist/web/.next-embedded/server/chunks/2961.js +1 -0
  380. package/dist/web/.next-embedded/server/chunks/3171.js +1 -0
  381. package/dist/web/.next-embedded/server/chunks/3222.js +2 -0
  382. package/dist/web/.next-embedded/server/chunks/3351.js +1 -0
  383. package/dist/web/.next-embedded/server/chunks/3381.js +1 -0
  384. package/dist/web/.next-embedded/server/chunks/3520.js +8 -0
  385. package/dist/web/.next-embedded/server/chunks/364.js +1 -0
  386. package/dist/web/.next-embedded/server/chunks/411.js +1 -0
  387. package/dist/web/.next-embedded/server/chunks/4119.js +1 -0
  388. package/dist/web/.next-embedded/server/chunks/4128.js +1 -0
  389. package/dist/web/.next-embedded/server/chunks/4191.js +1 -0
  390. package/dist/web/.next-embedded/server/chunks/4200.js +1 -0
  391. package/dist/web/.next-embedded/server/chunks/434.js +1 -0
  392. package/dist/web/.next-embedded/server/chunks/4368.js +1 -0
  393. package/dist/web/.next-embedded/server/chunks/4463.js +1 -0
  394. package/dist/web/.next-embedded/server/chunks/4467.js +1 -0
  395. package/dist/web/.next-embedded/server/chunks/4543.js +8 -0
  396. package/dist/web/.next-embedded/server/chunks/468.js +1 -0
  397. package/dist/web/.next-embedded/server/chunks/4741.js +1 -0
  398. package/dist/web/.next-embedded/server/chunks/4755.js +1 -0
  399. package/dist/web/.next-embedded/server/chunks/4758.js +21 -0
  400. package/dist/web/.next-embedded/server/chunks/4870.js +1 -0
  401. package/dist/web/.next-embedded/server/chunks/4877.js +1 -0
  402. package/dist/web/.next-embedded/server/chunks/4888.js +1 -0
  403. package/dist/web/.next-embedded/server/chunks/491.js +1 -0
  404. package/dist/web/.next-embedded/server/chunks/4911.js +1 -0
  405. package/dist/web/.next-embedded/server/chunks/5036.js +27 -0
  406. package/dist/web/.next-embedded/server/chunks/5052.js +134 -0
  407. package/dist/web/.next-embedded/server/chunks/5057.js +55 -0
  408. package/dist/web/.next-embedded/server/chunks/5126.js +8 -0
  409. package/dist/web/.next-embedded/server/chunks/5133.js +1 -0
  410. package/dist/web/.next-embedded/server/chunks/5173.js +1 -0
  411. package/dist/web/.next-embedded/server/chunks/5225.js +2 -0
  412. package/dist/web/.next-embedded/server/chunks/5277.js +324 -0
  413. package/dist/web/.next-embedded/server/chunks/5398.js +1 -0
  414. package/dist/web/.next-embedded/server/chunks/5568.js +1 -0
  415. package/dist/web/.next-embedded/server/chunks/5576.js +1 -0
  416. package/dist/web/.next-embedded/server/chunks/5634.js +19 -0
  417. package/dist/web/.next-embedded/server/chunks/5645.js +1 -0
  418. package/dist/web/.next-embedded/server/chunks/5684.js +5 -0
  419. package/dist/web/.next-embedded/server/chunks/5699.js +1 -0
  420. package/dist/web/.next-embedded/server/chunks/57.js +2 -0
  421. package/dist/web/.next-embedded/server/chunks/5734.js +1 -0
  422. package/dist/web/.next-embedded/server/chunks/5787.js +1 -0
  423. package/dist/web/.next-embedded/server/chunks/5796.js +1 -0
  424. package/dist/web/.next-embedded/server/chunks/5933.js +1 -0
  425. package/dist/web/.next-embedded/server/chunks/5945.js +1 -0
  426. package/dist/web/.next-embedded/server/chunks/5961.js +1 -0
  427. package/dist/web/.next-embedded/server/chunks/6445.js +55 -0
  428. package/dist/web/.next-embedded/server/chunks/6511.js +18 -0
  429. package/dist/web/.next-embedded/server/chunks/6518.js +1 -0
  430. package/dist/web/.next-embedded/server/chunks/6572.js +1 -0
  431. package/dist/web/.next-embedded/server/chunks/6672.js +2 -0
  432. package/dist/web/.next-embedded/server/chunks/6773.js +1 -0
  433. package/dist/web/.next-embedded/server/chunks/6821.js +1 -0
  434. package/dist/web/.next-embedded/server/chunks/6926.js +1 -0
  435. package/dist/web/.next-embedded/server/chunks/7090.js +25 -0
  436. package/dist/web/.next-embedded/server/chunks/7206.js +1 -0
  437. package/dist/web/.next-embedded/server/chunks/7269.js +1 -0
  438. package/dist/web/.next-embedded/server/chunks/7380.js +1 -0
  439. package/dist/web/.next-embedded/server/chunks/7395.js +1 -0
  440. package/dist/web/.next-embedded/server/chunks/7466.js +1 -0
  441. package/dist/web/.next-embedded/server/chunks/7571.js +1 -0
  442. package/dist/web/.next-embedded/server/chunks/769.js +1 -0
  443. package/dist/web/.next-embedded/server/chunks/784.js +1 -0
  444. package/dist/web/.next-embedded/server/chunks/7861.js +1 -0
  445. package/dist/web/.next-embedded/server/chunks/7944.js +1 -0
  446. package/dist/web/.next-embedded/server/chunks/8020.js +1 -0
  447. package/dist/web/.next-embedded/server/chunks/8061.js +2 -0
  448. package/dist/web/.next-embedded/server/chunks/822.js +1 -0
  449. package/dist/web/.next-embedded/server/chunks/8302.js +1 -0
  450. package/dist/web/.next-embedded/server/chunks/8336.js +1 -0
  451. package/dist/web/.next-embedded/server/chunks/8376.js +1 -0
  452. package/dist/web/.next-embedded/server/chunks/841.js +2 -0
  453. package/dist/web/.next-embedded/server/chunks/8430.js +1 -0
  454. package/dist/web/.next-embedded/server/chunks/8563.js +2 -0
  455. package/dist/web/.next-embedded/server/chunks/8576.js +193 -0
  456. package/dist/web/.next-embedded/server/chunks/8656.js +1 -0
  457. package/dist/web/.next-embedded/server/chunks/8726.js +1 -0
  458. package/dist/web/.next-embedded/server/chunks/8935.js +1 -0
  459. package/dist/web/.next-embedded/server/chunks/9260.js +1 -0
  460. package/dist/web/.next-embedded/server/chunks/9314.js +1 -0
  461. package/dist/web/.next-embedded/server/chunks/9332.js +1 -0
  462. package/dist/web/.next-embedded/server/chunks/9380.js +13 -0
  463. package/dist/web/.next-embedded/server/chunks/951.js +2 -0
  464. package/dist/web/.next-embedded/server/chunks/9537.js +1 -0
  465. package/dist/web/.next-embedded/server/chunks/9840.js +1 -0
  466. package/dist/web/.next-embedded/server/chunks/9913.js +1 -0
  467. package/dist/web/.next-embedded/server/functions-config-manifest.json +97 -0
  468. package/dist/web/.next-embedded/server/instrumentation.js +1 -0
  469. package/dist/web/.next-embedded/server/interception-route-rewrite-manifest.js +1 -0
  470. package/dist/web/.next-embedded/server/middleware-build-manifest.js +1 -0
  471. package/dist/web/.next-embedded/server/middleware-manifest.json +6 -0
  472. package/dist/web/.next-embedded/server/middleware-react-loadable-manifest.js +1 -0
  473. package/dist/web/.next-embedded/server/middleware.js +217 -0
  474. package/dist/web/.next-embedded/server/next-font-manifest.js +1 -0
  475. package/dist/web/.next-embedded/server/next-font-manifest.json +1 -0
  476. package/dist/web/.next-embedded/server/pages/404.html +1 -0
  477. package/dist/web/.next-embedded/server/pages/500.html +1 -0
  478. package/dist/web/.next-embedded/server/pages-manifest.json +4 -0
  479. package/dist/web/.next-embedded/server/prefetch-hints.json +44 -0
  480. package/dist/web/.next-embedded/server/server-reference-manifest.js +1 -0
  481. package/dist/web/.next-embedded/server/server-reference-manifest.json +1 -0
  482. package/dist/web/.next-embedded/server/webpack-runtime.js +1 -0
  483. package/dist/web/.next-embedded/static/DkxmcmiDAUutpm9e7G9xn/_buildManifest.js +1 -0
  484. package/dist/web/.next-embedded/static/DkxmcmiDAUutpm9e7G9xn/_ssgManifest.js +1 -0
  485. package/dist/web/.next-embedded/static/chunks/1000-501917027865ec48.js +52 -0
  486. package/dist/web/.next-embedded/static/chunks/1435-55acf1390b3a2da1.js +1 -0
  487. package/dist/web/.next-embedded/static/chunks/2349-3254a65053329135.js +1 -0
  488. package/dist/web/.next-embedded/static/chunks/2378-4ca744bf47c3dabb.js +1 -0
  489. package/dist/web/.next-embedded/static/chunks/2685-42c2a4f17fb6adb1.js +18 -0
  490. package/dist/web/.next-embedded/static/chunks/5633-9a07d4830813ece7.js +1 -0
  491. package/dist/web/.next-embedded/static/chunks/6365-04af34ae5b1497e3.js +1 -0
  492. package/dist/web/.next-embedded/static/chunks/6482-ecc9c62a178ba724.js +1 -0
  493. package/dist/web/.next-embedded/static/chunks/7413-3a721e7c495f89fb.js +55 -0
  494. package/dist/web/.next-embedded/static/chunks/9595-fea797909cd07d91.js +1 -0
  495. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/api-keys/page-5fe6d7717b0565f1.js +1 -0
  496. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/new/page-875800e6afa2dac3.js +1 -0
  497. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/models/page-7c39ee3c51034f12.js +1 -0
  498. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/runtimes/page-d51caeefc8b5ed98.js +1 -0
  499. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/settings/page-7f1874c14b33856a.js +1 -0
  500. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/shares/page-c194edfd7701dc77.js +1 -0
  501. package/dist/web/.next-embedded/static/chunks/app/(shell)/admin/users/page-463489ca2ebf664f.js +1 -0
  502. package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/[id]/page-febe3b0582c996ae.js +1 -0
  503. package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/new/page-a5ba72c5bc40b6e1.js +1 -0
  504. package/dist/web/.next-embedded/static/chunks/app/(shell)/agents/page-89d6af2961318db8.js +1 -0
  505. package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/new/page-b7ab59a7697ce004.js +1 -0
  506. package/dist/web/.next-embedded/static/chunks/app/(shell)/connectors/page-be6a19d14cc78f0f.js +1 -0
  507. package/dist/web/.next-embedded/static/chunks/app/(shell)/files/page-63febed6b4433238.js +1 -0
  508. package/dist/web/.next-embedded/static/chunks/app/(shell)/layout-4667e8f589776bbe.js +1 -0
  509. package/dist/web/.next-embedded/static/chunks/app/(shell)/page-2cd836e518729ee6.js +1 -0
  510. package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/[id]/page-e6bc2217623b8939.js +1 -0
  511. package/dist/web/.next-embedded/static/chunks/app/(shell)/projects/page-3db56f853165c53c.js +1 -0
  512. package/dist/web/.next-embedded/static/chunks/app/(shell)/runs/page-fe28919e456c3966.js +1 -0
  513. package/dist/web/.next-embedded/static/chunks/app/(shell)/skills/[name]/page-69390975e9417783.js +1 -0
  514. package/dist/web/.next-embedded/static/chunks/app/(shell)/skills/page-1e756149864de860.js +1 -0
  515. package/dist/web/.next-embedded/static/chunks/app/(shell)/workspaces/page-47afb61daed3bbb2.js +1 -0
  516. package/dist/web/.next-embedded/static/chunks/app/_global-error/page-259206b8559c1c4b.js +1 -0
  517. package/dist/web/.next-embedded/static/chunks/app/_not-found/page-1e20f0faf42b5dab.js +1 -0
  518. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/evaluations/route-259206b8559c1c4b.js +1 -0
  519. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/feedback/route-259206b8559c1c4b.js +1 -0
  520. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/grants/route-259206b8559c1c4b.js +1 -0
  521. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/pointers/route-259206b8559c1c4b.js +1 -0
  522. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/policy/route-259206b8559c1c4b.js +1 -0
  523. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/promote/route-259206b8559c1c4b.js +1 -0
  524. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/resources/route-259206b8559c1c4b.js +1 -0
  525. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/rollback/route-259206b8559c1c4b.js +1 -0
  526. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/route-259206b8559c1c4b.js +1 -0
  527. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/runs/route-259206b8559c1c4b.js +1 -0
  528. package/dist/web/.next-embedded/static/chunks/app/api/agents/[id]/versions/route-259206b8559c1c4b.js +1 -0
  529. package/dist/web/.next-embedded/static/chunks/app/api/agents/route-259206b8559c1c4b.js +1 -0
  530. package/dist/web/.next-embedded/static/chunks/app/api/api-keys/[id]/route-259206b8559c1c4b.js +1 -0
  531. package/dist/web/.next-embedded/static/chunks/app/api/api-keys/route-259206b8559c1c4b.js +1 -0
  532. package/dist/web/.next-embedded/static/chunks/app/api/audit-events/route-259206b8559c1c4b.js +1 -0
  533. package/dist/web/.next-embedded/static/chunks/app/api/auth/callback/route-259206b8559c1c4b.js +1 -0
  534. package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-device/route-259206b8559c1c4b.js +1 -0
  535. package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-token/route-259206b8559c1c4b.js +1 -0
  536. package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-verify/route-259206b8559c1c4b.js +1 -0
  537. package/dist/web/.next-embedded/static/chunks/app/api/auth/cli-workspace/route-259206b8559c1c4b.js +1 -0
  538. package/dist/web/.next-embedded/static/chunks/app/api/auth/login/route-259206b8559c1c4b.js +1 -0
  539. package/dist/web/.next-embedded/static/chunks/app/api/auth/workspace/route-259206b8559c1c4b.js +1 -0
  540. package/dist/web/.next-embedded/static/chunks/app/api/connectors/[id]/route-259206b8559c1c4b.js +1 -0
  541. package/dist/web/.next-embedded/static/chunks/app/api/connectors/[id]/test-connection/route-259206b8559c1c4b.js +1 -0
  542. package/dist/web/.next-embedded/static/chunks/app/api/connectors/route-259206b8559c1c4b.js +1 -0
  543. package/dist/web/.next-embedded/static/chunks/app/api/engines/route-259206b8559c1c4b.js +1 -0
  544. package/dist/web/.next-embedded/static/chunks/app/api/files/[id]/route-259206b8559c1c4b.js +1 -0
  545. package/dist/web/.next-embedded/static/chunks/app/api/files/route-259206b8559c1c4b.js +1 -0
  546. package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/accept/route-259206b8559c1c4b.js +1 -0
  547. package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/resend/route-259206b8559c1c4b.js +1 -0
  548. package/dist/web/.next-embedded/static/chunks/app/api/invitations/[id]/route-259206b8559c1c4b.js +1 -0
  549. package/dist/web/.next-embedded/static/chunks/app/api/invitations/route-259206b8559c1c4b.js +1 -0
  550. package/dist/web/.next-embedded/static/chunks/app/api/me/route-259206b8559c1c4b.js +1 -0
  551. package/dist/web/.next-embedded/static/chunks/app/api/memberships/[id]/route-259206b8559c1c4b.js +1 -0
  552. package/dist/web/.next-embedded/static/chunks/app/api/memberships/route-259206b8559c1c4b.js +1 -0
  553. package/dist/web/.next-embedded/static/chunks/app/api/metrics/route-259206b8559c1c4b.js +1 -0
  554. package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/credential/route-259206b8559c1c4b.js +1 -0
  555. package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/route-259206b8559c1c4b.js +1 -0
  556. package/dist/web/.next-embedded/static/chunks/app/api/model-connections/[id]/test/route-259206b8559c1c4b.js +1 -0
  557. package/dist/web/.next-embedded/static/chunks/app/api/model-connections/route-259206b8559c1c4b.js +1 -0
  558. package/dist/web/.next-embedded/static/chunks/app/api/models/route-259206b8559c1c4b.js +1 -0
  559. package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/archive/route-259206b8559c1c4b.js +1 -0
  560. package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/restore/route-259206b8559c1c4b.js +1 -0
  561. package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/route-259206b8559c1c4b.js +1 -0
  562. package/dist/web/.next-embedded/static/chunks/app/api/projects/[id]/sessions/route-259206b8559c1c4b.js +1 -0
  563. package/dist/web/.next-embedded/static/chunks/app/api/projects/route-259206b8559c1c4b.js +1 -0
  564. package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/events/route-259206b8559c1c4b.js +1 -0
  565. package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/feedback/route-259206b8559c1c4b.js +1 -0
  566. package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/interrupt/route-259206b8559c1c4b.js +1 -0
  567. package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/revoke-tokens/route-259206b8559c1c4b.js +1 -0
  568. package/dist/web/.next-embedded/static/chunks/app/api/runs/[id]/route-259206b8559c1c4b.js +1 -0
  569. package/dist/web/.next-embedded/static/chunks/app/api/runs/route-259206b8559c1c4b.js +1 -0
  570. package/dist/web/.next-embedded/static/chunks/app/api/runtime-connections/route-259206b8559c1c4b.js +1 -0
  571. package/dist/web/.next-embedded/static/chunks/app/api/runtime-profiles/[id]/route-259206b8559c1c4b.js +1 -0
  572. package/dist/web/.next-embedded/static/chunks/app/api/runtime-profiles/route-259206b8559c1c4b.js +1 -0
  573. package/dist/web/.next-embedded/static/chunks/app/api/runtimes/[id]/route-259206b8559c1c4b.js +1 -0
  574. package/dist/web/.next-embedded/static/chunks/app/api/secrets/[id]/route-259206b8559c1c4b.js +1 -0
  575. package/dist/web/.next-embedded/static/chunks/app/api/secrets/route-259206b8559c1c4b.js +1 -0
  576. package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/route-259206b8559c1c4b.js +1 -0
  577. package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-blobs/route-259206b8559c1c4b.js +1 -0
  578. package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-entries/route-259206b8559c1c4b.js +1 -0
  579. package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/state-streams/route-259206b8559c1c4b.js +1 -0
  580. package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/subkeys/route-259206b8559c1c4b.js +1 -0
  581. package/dist/web/.next-embedded/static/chunks/app/api/sessions/[engineSessionId]/transcript/route-259206b8559c1c4b.js +1 -0
  582. package/dist/web/.next-embedded/static/chunks/app/api/sessions/route-259206b8559c1c4b.js +1 -0
  583. package/dist/web/.next-embedded/static/chunks/app/api/setup/route-259206b8559c1c4b.js +1 -0
  584. package/dist/web/.next-embedded/static/chunks/app/api/setup/runtime-detect/route-259206b8559c1c4b.js +1 -0
  585. package/dist/web/.next-embedded/static/chunks/app/api/shares/[id]/route-259206b8559c1c4b.js +1 -0
  586. package/dist/web/.next-embedded/static/chunks/app/api/shares/route-259206b8559c1c4b.js +1 -0
  587. package/dist/web/.next-embedded/static/chunks/app/api/sharing-policies/route-259206b8559c1c4b.js +1 -0
  588. package/dist/web/.next-embedded/static/chunks/app/api/skills/[name]/route-259206b8559c1c4b.js +1 -0
  589. package/dist/web/.next-embedded/static/chunks/app/api/skills/route-259206b8559c1c4b.js +1 -0
  590. package/dist/web/.next-embedded/static/chunks/app/api/tokens/route-259206b8559c1c4b.js +1 -0
  591. package/dist/web/.next-embedded/static/chunks/app/api/users/route-259206b8559c1c4b.js +1 -0
  592. package/dist/web/.next-embedded/static/chunks/app/api/workspaces/[id]/route-259206b8559c1c4b.js +1 -0
  593. package/dist/web/.next-embedded/static/chunks/app/api/workspaces/route-259206b8559c1c4b.js +1 -0
  594. package/dist/web/.next-embedded/static/chunks/app/layout-2f33ac5af1408328.js +1 -0
  595. package/dist/web/.next-embedded/static/chunks/app/p/[token]/layout-259206b8559c1c4b.js +1 -0
  596. package/dist/web/.next-embedded/static/chunks/app/p/[token]/messages/route-259206b8559c1c4b.js +1 -0
  597. package/dist/web/.next-embedded/static/chunks/app/p/[token]/page-6cd5f2bd228d80dc.js +1 -0
  598. package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/page-3bbe19f3f8fa0cd8.js +1 -0
  599. package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/sessions/route-259206b8559c1c4b.js +1 -0
  600. package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/try/layout-259206b8559c1c4b.js +1 -0
  601. package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/try/page-259206b8559c1c4b.js +1 -0
  602. package/dist/web/.next-embedded/static/chunks/app/p/s/[name]/widget.js/route-259206b8559c1c4b.js +1 -0
  603. package/dist/web/.next-embedded/static/chunks/app/setup/page-1ffa2012b2226832.js +1 -0
  604. package/dist/web/.next-embedded/static/chunks/app/signin/layout-259206b8559c1c4b.js +1 -0
  605. package/dist/web/.next-embedded/static/chunks/app/signin/page-259206b8559c1c4b.js +1 -0
  606. package/dist/web/.next-embedded/static/chunks/b7e071c5-1178abcc3dcc97b7.js +1 -0
  607. package/dist/web/.next-embedded/static/chunks/framework-bd8f371b90cbf524.js +1 -0
  608. package/dist/web/.next-embedded/static/chunks/main-5f1d9db627247614.js +5 -0
  609. package/dist/web/.next-embedded/static/chunks/main-app-736eb94d950bf794.js +1 -0
  610. package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/app-error-259206b8559c1c4b.js +1 -0
  611. package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/forbidden-259206b8559c1c4b.js +1 -0
  612. package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/global-error-bcd4657bc775688d.js +1 -0
  613. package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/not-found-259206b8559c1c4b.js +1 -0
  614. package/dist/web/.next-embedded/static/chunks/next/dist/client/components/builtin/unauthorized-259206b8559c1c4b.js +1 -0
  615. package/dist/web/.next-embedded/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  616. package/dist/web/.next-embedded/static/chunks/webpack-e654bfe3f030a510.js +1 -0
  617. package/dist/web/.next-embedded/static/css/85d72f669bcd1172.css +1 -0
  618. package/dist/web/next.config.mjs +1 -0
  619. 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;