agent-relay 1.2.0 → 1.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 (668) hide show
  1. package/.gitattributes +3 -0
  2. package/.nvmrc +1 -0
  3. package/.trajectories/agent-relay-322-324.md +17 -0
  4. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.json +49 -0
  5. package/.trajectories/completed/2026-01/traj_03zupyv1s7b9.md +31 -0
  6. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.json +125 -0
  7. package/.trajectories/completed/2026-01/traj_0zacdjl1g4ht.md +62 -0
  8. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
  9. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
  10. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
  11. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
  12. package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
  13. package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
  14. package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
  15. package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
  16. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
  17. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
  18. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.json +49 -0
  19. package/.trajectories/completed/2026-01/traj_33iuy72sezbk.md +31 -0
  20. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
  21. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
  22. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
  23. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
  24. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
  25. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
  26. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.json +77 -0
  27. package/.trajectories/completed/2026-01/traj_5ammh5qtvklq.md +42 -0
  28. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
  29. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
  30. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
  31. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
  32. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
  33. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
  34. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.json +77 -0
  35. package/.trajectories/completed/2026-01/traj_6mieijqyvaag.md +42 -0
  36. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.json +77 -0
  37. package/.trajectories/completed/2026-01/traj_78ffm31jn3uk.md +42 -0
  38. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
  39. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
  40. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.json +66 -0
  41. package/.trajectories/completed/2026-01/traj_94gnp3k30goq.md +36 -0
  42. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
  43. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
  44. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
  45. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
  46. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.json +40 -0
  47. package/.trajectories/completed/2026-01/traj_avqeghu6pz5a.md +22 -0
  48. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
  49. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
  50. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
  51. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
  52. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
  53. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
  54. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.json +121 -0
  55. package/.trajectories/completed/2026-01/traj_dcsp9s8y01ra.md +29 -0
  56. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
  57. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
  58. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.json +53 -0
  59. package/.trajectories/completed/2026-01/traj_fhx9irlckht6.md +32 -0
  60. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.json +101 -0
  61. package/.trajectories/completed/2026-01/traj_fqduidx3xbtp.md +52 -0
  62. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
  63. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
  64. package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
  65. package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
  66. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
  67. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
  68. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
  69. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
  70. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.json +49 -0
  71. package/.trajectories/completed/2026-01/traj_hf81ey93uz6t.md +31 -0
  72. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.json +65 -0
  73. package/.trajectories/completed/2026-01/traj_hfmki2jr9d4r.md +37 -0
  74. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
  75. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
  76. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
  77. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
  78. package/.trajectories/completed/2026-01/traj_lq450ly148uw.json +49 -0
  79. package/.trajectories/completed/2026-01/traj_lq450ly148uw.md +31 -0
  80. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
  81. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
  82. package/.trajectories/completed/2026-01/traj_multi_server_arch.md +101 -0
  83. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
  84. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
  85. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
  86. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
  87. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
  88. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
  89. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
  90. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
  91. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.json +27 -0
  92. package/.trajectories/completed/2026-01/traj_psd9ob0j2ru3.md +14 -0
  93. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
  94. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
  95. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
  96. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
  97. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
  98. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
  99. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
  100. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
  101. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
  102. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
  103. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
  104. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
  105. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
  106. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
  107. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
  108. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
  109. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
  110. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
  111. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.json +53 -0
  112. package/.trajectories/completed/2026-01/traj_ub8csuv3lcv4.md +32 -0
  113. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.json +186 -0
  114. package/.trajectories/completed/2026-01/traj_uc29tlso8i9s.md +86 -0
  115. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.json +77 -0
  116. package/.trajectories/completed/2026-01/traj_ui9b4tqxoa7j.md +42 -0
  117. package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
  118. package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
  119. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.json +89 -0
  120. package/.trajectories/completed/2026-01/traj_v9dkdoxylyid.md +47 -0
  121. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
  122. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
  123. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
  124. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
  125. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
  126. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
  127. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.json +65 -0
  128. package/.trajectories/completed/2026-01/traj_xy9vifpqet80.md +37 -0
  129. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.json +49 -0
  130. package/.trajectories/completed/2026-01/traj_y7aiwijyfmmv.md +31 -0
  131. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
  132. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
  133. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
  134. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
  135. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
  136. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
  137. package/.trajectories/consolidate-settings-panel.md +24 -0
  138. package/.trajectories/gh-cli-user-token.md +26 -0
  139. package/.trajectories/index.json +468 -0
  140. package/ARCHITECTURE.md +1245 -0
  141. package/TESTING.md +278 -0
  142. package/deploy/init-db.sql +5 -0
  143. package/deploy/scripts/setup-fly-workspaces.sh +69 -0
  144. package/deploy/scripts/setup-railway.sh +75 -0
  145. package/deploy/workspace/codex.config.toml +15 -0
  146. package/deploy/workspace/entrypoint-browser.sh +118 -0
  147. package/deploy/workspace/entrypoint.sh +508 -0
  148. package/deploy/workspace/git-credential-relay +126 -0
  149. package/dist/bridge/spawner.d.ts +7 -0
  150. package/dist/bridge/spawner.js +40 -9
  151. package/dist/bridge/types.d.ts +2 -0
  152. package/dist/cli/index.js +260 -1
  153. package/dist/cloud/api/admin.d.ts +8 -0
  154. package/dist/cloud/api/admin.js +212 -0
  155. package/dist/cloud/api/auth.js +8 -0
  156. package/dist/cloud/api/billing.d.ts +0 -10
  157. package/dist/cloud/api/billing.js +278 -67
  158. package/dist/cloud/api/codex-auth-helper.d.ts +21 -0
  159. package/dist/cloud/api/codex-auth-helper.js +307 -0
  160. package/dist/cloud/api/coordinators.js +402 -0
  161. package/dist/cloud/api/daemons.js +15 -11
  162. package/dist/cloud/api/git.js +127 -19
  163. package/dist/cloud/api/github-app.js +42 -8
  164. package/dist/cloud/api/nango-auth.js +297 -16
  165. package/dist/cloud/api/onboarding.js +112 -35
  166. package/dist/cloud/api/providers.js +12 -16
  167. package/dist/cloud/api/repos.d.ts +1 -0
  168. package/dist/cloud/api/repos.js +311 -49
  169. package/dist/cloud/api/test-helpers.js +40 -0
  170. package/dist/cloud/api/usage.js +13 -0
  171. package/dist/cloud/api/webhooks.d.ts +1 -0
  172. package/dist/cloud/api/webhooks.js +149 -0
  173. package/dist/cloud/api/workspaces.d.ts +18 -0
  174. package/dist/cloud/api/workspaces.js +1042 -21
  175. package/dist/cloud/billing/plans.js +19 -19
  176. package/dist/cloud/config.d.ts +8 -0
  177. package/dist/cloud/config.js +15 -0
  178. package/dist/cloud/db/drizzle.d.ts +5 -2
  179. package/dist/cloud/db/drizzle.js +27 -20
  180. package/dist/cloud/db/schema.d.ts +19 -51
  181. package/dist/cloud/db/schema.js +5 -4
  182. package/dist/cloud/index.d.ts +0 -1
  183. package/dist/cloud/index.js +0 -1
  184. package/dist/cloud/provisioner/index.d.ts +125 -1
  185. package/dist/cloud/provisioner/index.js +939 -53
  186. package/dist/cloud/server.js +161 -16
  187. package/dist/cloud/services/compute-enforcement.d.ts +57 -0
  188. package/dist/cloud/services/compute-enforcement.js +175 -0
  189. package/dist/cloud/services/index.d.ts +2 -0
  190. package/dist/cloud/services/index.js +4 -0
  191. package/dist/cloud/services/intro-expiration.d.ts +55 -0
  192. package/dist/cloud/services/intro-expiration.js +211 -0
  193. package/dist/cloud/services/nango.d.ts +74 -0
  194. package/dist/cloud/services/nango.js +218 -5
  195. package/dist/cloud/services/planLimits.d.ts +22 -0
  196. package/dist/cloud/services/planLimits.js +58 -5
  197. package/dist/cloud/services/ssh-security.d.ts +31 -0
  198. package/dist/cloud/services/ssh-security.js +63 -0
  199. package/dist/continuity/manager.d.ts +5 -0
  200. package/dist/continuity/manager.js +56 -2
  201. package/dist/daemon/api.d.ts +2 -0
  202. package/dist/daemon/api.js +214 -5
  203. package/dist/daemon/cli-auth.d.ts +13 -1
  204. package/dist/daemon/cli-auth.js +166 -47
  205. package/dist/daemon/connection.d.ts +7 -1
  206. package/dist/daemon/connection.js +15 -0
  207. package/dist/daemon/orchestrator.d.ts +2 -0
  208. package/dist/daemon/orchestrator.js +26 -0
  209. package/dist/daemon/repo-manager.d.ts +116 -0
  210. package/dist/daemon/repo-manager.js +384 -0
  211. package/dist/daemon/router.d.ts +60 -1
  212. package/dist/daemon/router.js +281 -20
  213. package/dist/daemon/user-directory.d.ts +111 -0
  214. package/dist/daemon/user-directory.js +233 -0
  215. package/dist/dashboard/out/404.html +1 -1
  216. package/dist/dashboard/out/_next/static/T1tgCqVWHFIkV7ClEtzD7/_ssgManifest.js +1 -0
  217. package/dist/dashboard/out/_next/static/chunks/532-bace199897eeab37.js +9 -0
  218. package/dist/dashboard/out/_next/static/chunks/766-b54f0853794b78c3.js +1 -0
  219. package/dist/dashboard/out/_next/static/chunks/83-b51836037078006c.js +1 -0
  220. package/dist/dashboard/out/_next/static/chunks/891-6cd50de1224f70bb.js +1 -0
  221. package/dist/dashboard/out/_next/static/chunks/899-bb19a9b3d9b39ea6.js +1 -0
  222. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-8939b0fc700f7eca.js +1 -0
  223. package/dist/dashboard/out/_next/static/chunks/app/app/page-5af1b6b439858aa6.js +1 -0
  224. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-ac39dc0cc3c26fa7.js +1 -0
  225. package/dist/dashboard/out/_next/static/chunks/app/{page-daf87e86f783f980.js → page-4a5938c18a11a654.js} +1 -1
  226. package/dist/dashboard/out/_next/static/chunks/app/providers/page-ac3a6ac433fd6001.js +1 -0
  227. package/dist/dashboard/out/_next/static/chunks/app/providers/setup/[provider]/page-09f9caae98a18c09.js +1 -0
  228. package/dist/dashboard/out/_next/static/chunks/{main-97850e03d723ea8c.js → main-2ee6beb2ae96d210.js} +1 -1
  229. package/dist/dashboard/out/_next/static/css/85d2af9c7ac74d62.css +1 -0
  230. package/dist/dashboard/out/_next/static/css/fe4b28883eeff359.css +1 -0
  231. package/dist/dashboard/out/app/onboarding.html +1 -0
  232. package/dist/dashboard/out/app/onboarding.txt +7 -0
  233. package/dist/dashboard/out/app.html +1 -1
  234. package/dist/dashboard/out/app.txt +3 -3
  235. package/dist/dashboard/out/apple-icon.png +0 -0
  236. package/dist/dashboard/out/connect-repos.html +1 -1
  237. package/dist/dashboard/out/connect-repos.txt +3 -3
  238. package/dist/dashboard/out/history.html +1 -1
  239. package/dist/dashboard/out/history.txt +3 -3
  240. package/dist/dashboard/out/index.html +1 -1
  241. package/dist/dashboard/out/index.txt +3 -3
  242. package/dist/dashboard/out/login.html +2 -2
  243. package/dist/dashboard/out/login.txt +3 -3
  244. package/dist/dashboard/out/metrics.html +1 -1
  245. package/dist/dashboard/out/metrics.txt +3 -3
  246. package/dist/dashboard/out/pricing.html +3 -3
  247. package/dist/dashboard/out/pricing.txt +3 -3
  248. package/dist/dashboard/out/providers/setup/claude.html +1 -0
  249. package/dist/dashboard/out/providers/setup/claude.txt +8 -0
  250. package/dist/dashboard/out/providers/setup/codex.html +1 -0
  251. package/dist/dashboard/out/providers/setup/codex.txt +8 -0
  252. package/dist/dashboard/out/providers.html +1 -1
  253. package/dist/dashboard/out/providers.txt +3 -3
  254. package/dist/dashboard/out/signup.html +2 -2
  255. package/dist/dashboard/out/signup.txt +3 -3
  256. package/dist/dashboard-server/server.js +316 -12
  257. package/dist/dashboard-server/user-bridge.d.ts +103 -0
  258. package/dist/dashboard-server/user-bridge.js +189 -0
  259. package/dist/protocol/channels.d.ts +205 -0
  260. package/dist/protocol/channels.js +154 -0
  261. package/dist/protocol/types.d.ts +13 -1
  262. package/dist/resiliency/provider-context.js +2 -0
  263. package/dist/shared/cli-auth-config.d.ts +19 -0
  264. package/dist/shared/cli-auth-config.js +58 -2
  265. package/dist/utils/agent-config.js +1 -1
  266. package/dist/wrapper/auth-detection.d.ts +49 -0
  267. package/dist/wrapper/auth-detection.js +192 -0
  268. package/dist/wrapper/base-wrapper.d.ts +153 -0
  269. package/dist/wrapper/base-wrapper.js +393 -0
  270. package/dist/wrapper/client.d.ts +7 -1
  271. package/dist/wrapper/client.js +3 -0
  272. package/dist/wrapper/index.d.ts +1 -0
  273. package/dist/wrapper/index.js +4 -3
  274. package/dist/wrapper/pty-wrapper.d.ts +62 -84
  275. package/dist/wrapper/pty-wrapper.js +154 -180
  276. package/dist/wrapper/tmux-wrapper.d.ts +41 -66
  277. package/dist/wrapper/tmux-wrapper.js +90 -134
  278. package/package.json +5 -12
  279. package/scripts/postinstall.js +11 -155
  280. package/scripts/test-interactive-terminal.sh +248 -0
  281. package/test-push.txt +1 -0
  282. package/bin/tmux +0 -0
  283. package/dist/bridge/config.d.ts.map +0 -1
  284. package/dist/bridge/config.js.map +0 -1
  285. package/dist/bridge/index.d.ts.map +0 -1
  286. package/dist/bridge/index.js.map +0 -1
  287. package/dist/bridge/multi-project-client.d.ts.map +0 -1
  288. package/dist/bridge/multi-project-client.js.map +0 -1
  289. package/dist/bridge/shadow-cli.d.ts.map +0 -1
  290. package/dist/bridge/shadow-cli.js.map +0 -1
  291. package/dist/bridge/shadow-config.d.ts.map +0 -1
  292. package/dist/bridge/shadow-config.js.map +0 -1
  293. package/dist/bridge/spawner.d.ts.map +0 -1
  294. package/dist/bridge/spawner.js.map +0 -1
  295. package/dist/bridge/teams-config.d.ts.map +0 -1
  296. package/dist/bridge/teams-config.js.map +0 -1
  297. package/dist/bridge/types.d.ts.map +0 -1
  298. package/dist/bridge/types.js.map +0 -1
  299. package/dist/bridge/utils.d.ts.map +0 -1
  300. package/dist/bridge/utils.js.map +0 -1
  301. package/dist/cli/index.d.ts.map +0 -1
  302. package/dist/cli/index.js.map +0 -1
  303. package/dist/cloud/api/auth.d.ts.map +0 -1
  304. package/dist/cloud/api/auth.js.map +0 -1
  305. package/dist/cloud/api/billing.d.ts.map +0 -1
  306. package/dist/cloud/api/billing.js.map +0 -1
  307. package/dist/cloud/api/cli-pty-runner.d.ts.map +0 -1
  308. package/dist/cloud/api/cli-pty-runner.js.map +0 -1
  309. package/dist/cloud/api/coordinators.d.ts.map +0 -1
  310. package/dist/cloud/api/coordinators.js.map +0 -1
  311. package/dist/cloud/api/daemons.d.ts.map +0 -1
  312. package/dist/cloud/api/daemons.js.map +0 -1
  313. package/dist/cloud/api/generic-webhooks.d.ts.map +0 -1
  314. package/dist/cloud/api/generic-webhooks.js.map +0 -1
  315. package/dist/cloud/api/git.d.ts.map +0 -1
  316. package/dist/cloud/api/git.js.map +0 -1
  317. package/dist/cloud/api/github-app.d.ts.map +0 -1
  318. package/dist/cloud/api/github-app.js.map +0 -1
  319. package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
  320. package/dist/cloud/api/middleware/planLimits.js.map +0 -1
  321. package/dist/cloud/api/monitoring.d.ts.map +0 -1
  322. package/dist/cloud/api/monitoring.js.map +0 -1
  323. package/dist/cloud/api/nango-auth.d.ts.map +0 -1
  324. package/dist/cloud/api/nango-auth.js.map +0 -1
  325. package/dist/cloud/api/onboarding.d.ts.map +0 -1
  326. package/dist/cloud/api/onboarding.js.map +0 -1
  327. package/dist/cloud/api/policy.d.ts.map +0 -1
  328. package/dist/cloud/api/policy.js.map +0 -1
  329. package/dist/cloud/api/providers.d.ts.map +0 -1
  330. package/dist/cloud/api/providers.js.map +0 -1
  331. package/dist/cloud/api/repos.d.ts.map +0 -1
  332. package/dist/cloud/api/repos.js.map +0 -1
  333. package/dist/cloud/api/teams.d.ts.map +0 -1
  334. package/dist/cloud/api/teams.js.map +0 -1
  335. package/dist/cloud/api/test-helpers.d.ts.map +0 -1
  336. package/dist/cloud/api/test-helpers.js.map +0 -1
  337. package/dist/cloud/api/usage.d.ts.map +0 -1
  338. package/dist/cloud/api/usage.js.map +0 -1
  339. package/dist/cloud/api/webhooks.d.ts.map +0 -1
  340. package/dist/cloud/api/webhooks.js.map +0 -1
  341. package/dist/cloud/api/workspaces.d.ts.map +0 -1
  342. package/dist/cloud/api/workspaces.js.map +0 -1
  343. package/dist/cloud/billing/index.d.ts.map +0 -1
  344. package/dist/cloud/billing/index.js.map +0 -1
  345. package/dist/cloud/billing/plans.d.ts.map +0 -1
  346. package/dist/cloud/billing/plans.js.map +0 -1
  347. package/dist/cloud/billing/service.d.ts.map +0 -1
  348. package/dist/cloud/billing/service.js.map +0 -1
  349. package/dist/cloud/billing/types.d.ts.map +0 -1
  350. package/dist/cloud/billing/types.js.map +0 -1
  351. package/dist/cloud/config.d.ts.map +0 -1
  352. package/dist/cloud/config.js.map +0 -1
  353. package/dist/cloud/db/drizzle.d.ts.map +0 -1
  354. package/dist/cloud/db/drizzle.js.map +0 -1
  355. package/dist/cloud/db/index.d.ts.map +0 -1
  356. package/dist/cloud/db/index.js.map +0 -1
  357. package/dist/cloud/db/schema.d.ts.map +0 -1
  358. package/dist/cloud/db/schema.js.map +0 -1
  359. package/dist/cloud/index.d.ts.map +0 -1
  360. package/dist/cloud/index.js.map +0 -1
  361. package/dist/cloud/provisioner/index.d.ts.map +0 -1
  362. package/dist/cloud/provisioner/index.js.map +0 -1
  363. package/dist/cloud/server.d.ts.map +0 -1
  364. package/dist/cloud/server.js.map +0 -1
  365. package/dist/cloud/services/auto-scaler.d.ts.map +0 -1
  366. package/dist/cloud/services/auto-scaler.js.map +0 -1
  367. package/dist/cloud/services/capacity-manager.d.ts.map +0 -1
  368. package/dist/cloud/services/capacity-manager.js.map +0 -1
  369. package/dist/cloud/services/ci-agent-spawner.d.ts.map +0 -1
  370. package/dist/cloud/services/ci-agent-spawner.js.map +0 -1
  371. package/dist/cloud/services/coordinator.d.ts.map +0 -1
  372. package/dist/cloud/services/coordinator.js.map +0 -1
  373. package/dist/cloud/services/index.d.ts.map +0 -1
  374. package/dist/cloud/services/index.js.map +0 -1
  375. package/dist/cloud/services/mention-handler.d.ts.map +0 -1
  376. package/dist/cloud/services/mention-handler.js.map +0 -1
  377. package/dist/cloud/services/nango.d.ts.map +0 -1
  378. package/dist/cloud/services/nango.js.map +0 -1
  379. package/dist/cloud/services/persistence.d.ts.map +0 -1
  380. package/dist/cloud/services/persistence.js.map +0 -1
  381. package/dist/cloud/services/planLimits.d.ts.map +0 -1
  382. package/dist/cloud/services/planLimits.js.map +0 -1
  383. package/dist/cloud/services/scaling-orchestrator.d.ts.map +0 -1
  384. package/dist/cloud/services/scaling-orchestrator.js.map +0 -1
  385. package/dist/cloud/services/scaling-policy.d.ts.map +0 -1
  386. package/dist/cloud/services/scaling-policy.js.map +0 -1
  387. package/dist/cloud/vault/index.d.ts +0 -76
  388. package/dist/cloud/vault/index.d.ts.map +0 -1
  389. package/dist/cloud/vault/index.js +0 -219
  390. package/dist/cloud/vault/index.js.map +0 -1
  391. package/dist/cloud/webhooks/index.d.ts.map +0 -1
  392. package/dist/cloud/webhooks/index.js.map +0 -1
  393. package/dist/cloud/webhooks/parsers/github.d.ts.map +0 -1
  394. package/dist/cloud/webhooks/parsers/github.js.map +0 -1
  395. package/dist/cloud/webhooks/parsers/index.d.ts.map +0 -1
  396. package/dist/cloud/webhooks/parsers/index.js.map +0 -1
  397. package/dist/cloud/webhooks/parsers/linear.d.ts.map +0 -1
  398. package/dist/cloud/webhooks/parsers/linear.js.map +0 -1
  399. package/dist/cloud/webhooks/parsers/slack.d.ts.map +0 -1
  400. package/dist/cloud/webhooks/parsers/slack.js.map +0 -1
  401. package/dist/cloud/webhooks/responders/github.d.ts.map +0 -1
  402. package/dist/cloud/webhooks/responders/github.js.map +0 -1
  403. package/dist/cloud/webhooks/responders/index.d.ts.map +0 -1
  404. package/dist/cloud/webhooks/responders/index.js.map +0 -1
  405. package/dist/cloud/webhooks/responders/linear.d.ts.map +0 -1
  406. package/dist/cloud/webhooks/responders/linear.js.map +0 -1
  407. package/dist/cloud/webhooks/responders/slack.d.ts.map +0 -1
  408. package/dist/cloud/webhooks/responders/slack.js.map +0 -1
  409. package/dist/cloud/webhooks/router.d.ts.map +0 -1
  410. package/dist/cloud/webhooks/router.js.map +0 -1
  411. package/dist/cloud/webhooks/rules-engine.d.ts.map +0 -1
  412. package/dist/cloud/webhooks/rules-engine.js.map +0 -1
  413. package/dist/cloud/webhooks/types.d.ts.map +0 -1
  414. package/dist/cloud/webhooks/types.js.map +0 -1
  415. package/dist/continuity/formatter.d.ts.map +0 -1
  416. package/dist/continuity/formatter.js.map +0 -1
  417. package/dist/continuity/handoff-store.d.ts.map +0 -1
  418. package/dist/continuity/handoff-store.js.map +0 -1
  419. package/dist/continuity/index.d.ts.map +0 -1
  420. package/dist/continuity/index.js.map +0 -1
  421. package/dist/continuity/ledger-store.d.ts.map +0 -1
  422. package/dist/continuity/ledger-store.js.map +0 -1
  423. package/dist/continuity/manager.d.ts.map +0 -1
  424. package/dist/continuity/manager.js.map +0 -1
  425. package/dist/continuity/parser.d.ts.map +0 -1
  426. package/dist/continuity/parser.js.map +0 -1
  427. package/dist/continuity/types.d.ts.map +0 -1
  428. package/dist/continuity/types.js.map +0 -1
  429. package/dist/daemon/agent-manager.d.ts.map +0 -1
  430. package/dist/daemon/agent-manager.js.map +0 -1
  431. package/dist/daemon/agent-registry.d.ts.map +0 -1
  432. package/dist/daemon/agent-registry.js.map +0 -1
  433. package/dist/daemon/api.d.ts.map +0 -1
  434. package/dist/daemon/api.js.map +0 -1
  435. package/dist/daemon/auth.d.ts.map +0 -1
  436. package/dist/daemon/auth.js.map +0 -1
  437. package/dist/daemon/cli-auth.d.ts.map +0 -1
  438. package/dist/daemon/cli-auth.js.map +0 -1
  439. package/dist/daemon/cloud-sync.d.ts.map +0 -1
  440. package/dist/daemon/cloud-sync.js.map +0 -1
  441. package/dist/daemon/connection.d.ts.map +0 -1
  442. package/dist/daemon/connection.js.map +0 -1
  443. package/dist/daemon/index.d.ts.map +0 -1
  444. package/dist/daemon/index.js.map +0 -1
  445. package/dist/daemon/orchestrator.d.ts.map +0 -1
  446. package/dist/daemon/orchestrator.js.map +0 -1
  447. package/dist/daemon/registry.d.ts.map +0 -1
  448. package/dist/daemon/registry.js.map +0 -1
  449. package/dist/daemon/router.d.ts.map +0 -1
  450. package/dist/daemon/router.js.map +0 -1
  451. package/dist/daemon/server.d.ts.map +0 -1
  452. package/dist/daemon/server.js.map +0 -1
  453. package/dist/daemon/services/browser-testing.d.ts.map +0 -1
  454. package/dist/daemon/services/browser-testing.js.map +0 -1
  455. package/dist/daemon/services/container-spawner.d.ts.map +0 -1
  456. package/dist/daemon/services/container-spawner.js.map +0 -1
  457. package/dist/daemon/types.d.ts.map +0 -1
  458. package/dist/daemon/types.js.map +0 -1
  459. package/dist/daemon/workspace-manager.d.ts.map +0 -1
  460. package/dist/daemon/workspace-manager.js.map +0 -1
  461. package/dist/dashboard/out/_next/static/H5aWG0udPB4iOUIl_gytz/_ssgManifest.js +0 -1
  462. package/dist/dashboard/out/_next/static/chunks/480-2d4111711d4e473c.js +0 -1
  463. package/dist/dashboard/out/_next/static/chunks/724-73c1ee5f60abe860.js +0 -9
  464. package/dist/dashboard/out/_next/static/chunks/766-c3a14283c88d815b.js +0 -1
  465. package/dist/dashboard/out/_next/static/chunks/app/app/page-7120be68bea622f3.js +0 -1
  466. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-1081dd190a331a91.js +0 -1
  467. package/dist/dashboard/out/_next/static/chunks/app/providers/page-b68a681526eb145e.js +0 -1
  468. package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +0 -1
  469. package/dist/dashboard/out/_next/static/css/411ce23ffeae9f76.css +0 -1
  470. package/dist/dashboard-server/metrics.d.ts.map +0 -1
  471. package/dist/dashboard-server/metrics.js.map +0 -1
  472. package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
  473. package/dist/dashboard-server/needs-attention.js.map +0 -1
  474. package/dist/dashboard-server/server.d.ts.map +0 -1
  475. package/dist/dashboard-server/server.js.map +0 -1
  476. package/dist/dashboard-server/start.d.ts.map +0 -1
  477. package/dist/dashboard-server/start.js.map +0 -1
  478. package/dist/hooks/emitter.d.ts.map +0 -1
  479. package/dist/hooks/emitter.js.map +0 -1
  480. package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
  481. package/dist/hooks/inbox-check/hook.js.map +0 -1
  482. package/dist/hooks/inbox-check/index.d.ts.map +0 -1
  483. package/dist/hooks/inbox-check/index.js.map +0 -1
  484. package/dist/hooks/inbox-check/types.d.ts.map +0 -1
  485. package/dist/hooks/inbox-check/types.js.map +0 -1
  486. package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
  487. package/dist/hooks/inbox-check/utils.js.map +0 -1
  488. package/dist/hooks/index.d.ts.map +0 -1
  489. package/dist/hooks/index.js.map +0 -1
  490. package/dist/hooks/registry.d.ts.map +0 -1
  491. package/dist/hooks/registry.js.map +0 -1
  492. package/dist/hooks/trajectory-hooks.d.ts.map +0 -1
  493. package/dist/hooks/trajectory-hooks.js.map +0 -1
  494. package/dist/hooks/types.d.ts.map +0 -1
  495. package/dist/hooks/types.js.map +0 -1
  496. package/dist/index.d.ts.map +0 -1
  497. package/dist/index.js.map +0 -1
  498. package/dist/memory/adapters/index.d.ts.map +0 -1
  499. package/dist/memory/adapters/index.js.map +0 -1
  500. package/dist/memory/adapters/inmemory.d.ts.map +0 -1
  501. package/dist/memory/adapters/inmemory.js.map +0 -1
  502. package/dist/memory/adapters/supermemory.d.ts.map +0 -1
  503. package/dist/memory/adapters/supermemory.js.map +0 -1
  504. package/dist/memory/factory.d.ts.map +0 -1
  505. package/dist/memory/factory.js.map +0 -1
  506. package/dist/memory/index.d.ts.map +0 -1
  507. package/dist/memory/index.js.map +0 -1
  508. package/dist/memory/memory-hooks.d.ts.map +0 -1
  509. package/dist/memory/memory-hooks.js.map +0 -1
  510. package/dist/memory/service.d.ts.map +0 -1
  511. package/dist/memory/service.js.map +0 -1
  512. package/dist/memory/types.d.ts.map +0 -1
  513. package/dist/memory/types.js.map +0 -1
  514. package/dist/policy/agent-policy.d.ts.map +0 -1
  515. package/dist/policy/agent-policy.js.map +0 -1
  516. package/dist/policy/cloud-policy-fetcher.d.ts.map +0 -1
  517. package/dist/policy/cloud-policy-fetcher.js.map +0 -1
  518. package/dist/protocol/framing.d.ts.map +0 -1
  519. package/dist/protocol/framing.js.map +0 -1
  520. package/dist/protocol/index.d.ts.map +0 -1
  521. package/dist/protocol/index.js.map +0 -1
  522. package/dist/protocol/types.d.ts.map +0 -1
  523. package/dist/protocol/types.js.map +0 -1
  524. package/dist/resiliency/context-persistence.d.ts.map +0 -1
  525. package/dist/resiliency/context-persistence.js.map +0 -1
  526. package/dist/resiliency/crash-insights.d.ts.map +0 -1
  527. package/dist/resiliency/crash-insights.js.map +0 -1
  528. package/dist/resiliency/gossip-health.d.ts.map +0 -1
  529. package/dist/resiliency/gossip-health.js.map +0 -1
  530. package/dist/resiliency/health-monitor.d.ts.map +0 -1
  531. package/dist/resiliency/health-monitor.js.map +0 -1
  532. package/dist/resiliency/index.d.ts.map +0 -1
  533. package/dist/resiliency/index.js.map +0 -1
  534. package/dist/resiliency/leader-watchdog.d.ts.map +0 -1
  535. package/dist/resiliency/leader-watchdog.js.map +0 -1
  536. package/dist/resiliency/logger.d.ts.map +0 -1
  537. package/dist/resiliency/logger.js.map +0 -1
  538. package/dist/resiliency/memory-monitor.d.ts.map +0 -1
  539. package/dist/resiliency/memory-monitor.js.map +0 -1
  540. package/dist/resiliency/metrics.d.ts.map +0 -1
  541. package/dist/resiliency/metrics.js.map +0 -1
  542. package/dist/resiliency/provider-context.d.ts.map +0 -1
  543. package/dist/resiliency/provider-context.js.map +0 -1
  544. package/dist/resiliency/stateless-lead.d.ts.map +0 -1
  545. package/dist/resiliency/stateless-lead.js.map +0 -1
  546. package/dist/resiliency/supervisor.d.ts.map +0 -1
  547. package/dist/resiliency/supervisor.js.map +0 -1
  548. package/dist/shared/cli-auth-config.d.ts.map +0 -1
  549. package/dist/shared/cli-auth-config.js.map +0 -1
  550. package/dist/state/agent-state.d.ts.map +0 -1
  551. package/dist/state/agent-state.js.map +0 -1
  552. package/dist/storage/adapter.d.ts.map +0 -1
  553. package/dist/storage/adapter.js.map +0 -1
  554. package/dist/storage/sqlite-adapter.d.ts.map +0 -1
  555. package/dist/storage/sqlite-adapter.js.map +0 -1
  556. package/dist/trajectory/config.d.ts.map +0 -1
  557. package/dist/trajectory/config.js.map +0 -1
  558. package/dist/trajectory/index.d.ts.map +0 -1
  559. package/dist/trajectory/index.js.map +0 -1
  560. package/dist/trajectory/integration.d.ts.map +0 -1
  561. package/dist/trajectory/integration.js.map +0 -1
  562. package/dist/utils/agent-config.d.ts.map +0 -1
  563. package/dist/utils/agent-config.js.map +0 -1
  564. package/dist/utils/command-resolver.d.ts.map +0 -1
  565. package/dist/utils/command-resolver.js.map +0 -1
  566. package/dist/utils/index.d.ts.map +0 -1
  567. package/dist/utils/index.js.map +0 -1
  568. package/dist/utils/logger.d.ts.map +0 -1
  569. package/dist/utils/logger.js.map +0 -1
  570. package/dist/utils/name-generator.d.ts.map +0 -1
  571. package/dist/utils/name-generator.js.map +0 -1
  572. package/dist/utils/project-namespace.d.ts.map +0 -1
  573. package/dist/utils/project-namespace.js.map +0 -1
  574. package/dist/utils/tmux-resolver.d.ts.map +0 -1
  575. package/dist/utils/tmux-resolver.js.map +0 -1
  576. package/dist/utils/update-checker.d.ts.map +0 -1
  577. package/dist/utils/update-checker.js.map +0 -1
  578. package/dist/wrapper/client.d.ts.map +0 -1
  579. package/dist/wrapper/client.js.map +0 -1
  580. package/dist/wrapper/inbox.d.ts.map +0 -1
  581. package/dist/wrapper/inbox.js.map +0 -1
  582. package/dist/wrapper/index.d.ts.map +0 -1
  583. package/dist/wrapper/index.js.map +0 -1
  584. package/dist/wrapper/parser.d.ts.map +0 -1
  585. package/dist/wrapper/parser.js.map +0 -1
  586. package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
  587. package/dist/wrapper/pty-wrapper.js.map +0 -1
  588. package/dist/wrapper/shared.d.ts.map +0 -1
  589. package/dist/wrapper/shared.js.map +0 -1
  590. package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
  591. package/dist/wrapper/tmux-wrapper.js.map +0 -1
  592. package/docs/AGENTS.md +0 -513
  593. package/docs/ARCHITECTURE_DECISIONS.md +0 -175
  594. package/docs/CLOUD-ARCHITECTURE.md +0 -804
  595. package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
  596. package/docs/CONTRIBUTING.md +0 -151
  597. package/docs/HOOKS_API.md +0 -394
  598. package/docs/INTEGRATION-GUIDE.md +0 -926
  599. package/docs/PROTOCOL.md +0 -325
  600. package/docs/WRAPPER_EVENTS.md +0 -358
  601. package/docs/agent-policy-snippet.md +0 -40
  602. package/docs/agent-relay-protocol.md +0 -238
  603. package/docs/agent-relay-snippet.md +0 -174
  604. package/docs/archive/CHANGELOG.md +0 -11
  605. package/docs/archive/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
  606. package/docs/archive/DESIGN_BRIDGE_STAFFING.md +0 -878
  607. package/docs/archive/DESIGN_V2.md +0 -1079
  608. package/docs/archive/EXECUTIVE_SUMMARY.md +0 -358
  609. package/docs/archive/MONETIZATION.md +0 -1679
  610. package/docs/archive/PROPOSAL-trajectories.md +0 -1582
  611. package/docs/archive/ROADMAP.md +0 -329
  612. package/docs/archive/SCALING_ANALYSIS.md +0 -280
  613. package/docs/archive/TESTING_PRESENCE_FEATURES.md +0 -327
  614. package/docs/archive/TMUX_IMPLEMENTATION_NOTES.md +0 -364
  615. package/docs/archive/TMUX_IMPROVEMENTS.md +0 -968
  616. package/docs/archive/dashboard-v2-plan.md +0 -179
  617. package/docs/archive/removable-code-analysis.md +0 -24
  618. package/docs/competitive/GASTOWN.md +0 -451
  619. package/docs/competitive/MCP_AGENT_MAIL.md +0 -389
  620. package/docs/competitive/OVERVIEW.md +0 -898
  621. package/docs/competitive/README.md +0 -34
  622. package/docs/competitive/TMUX_ORCHESTRATOR.md +0 -605
  623. package/docs/dashboard.png +0 -0
  624. package/docs/design/ci-failure-webhooks.md +0 -812
  625. package/docs/design/comprehensive-integrations.md +0 -238
  626. package/docs/design/e2b-sandbox-integration.md +0 -504
  627. package/docs/design/github-app-permissions.md +0 -264
  628. package/docs/guides/CLOUD.md +0 -236
  629. package/docs/guides/LOCAL.md +0 -535
  630. package/docs/guides/SELF-HOSTED.md +0 -494
  631. package/docs/local-testing.md +0 -428
  632. package/docs/proposals/continuous-claude-integration.md +0 -622
  633. package/docs/proposals/custom-commands.md +0 -368
  634. package/docs/proposals/shadow-as-subagent.md +0 -765
  635. package/docs/proposals/slack-bot-integration.md +0 -1457
  636. package/docs/tasks/global-skills-system.tasks.md +0 -230
  637. package/docs/tasks/webhook-integrations.tasks.md +0 -184
  638. package/docs/tasks/workspace-capabilities.tasks.md +0 -121
  639. package/docs/testing/RESILIENCY-TEST-PLAN-2026-01-01.md +0 -366
  640. package/scripts/cloud-setup.sh +0 -96
  641. package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
  642. package/scripts/dev/dev-team-setup.sh +0 -431
  643. package/scripts/e2e-test.sh +0 -119
  644. package/scripts/games/game-protocol.md +0 -79
  645. package/scripts/games/hearts-setup.sh +0 -264
  646. package/scripts/manual-qa.sh +0 -293
  647. package/scripts/run-cloud-qa.sh +0 -220
  648. package/scripts/test-cli-auth/Dockerfile +0 -44
  649. package/scripts/test-cli-auth/Dockerfile.real +0 -79
  650. package/scripts/test-cli-auth/README.md +0 -286
  651. package/scripts/test-cli-auth/ci-test-real-clis.ts +0 -251
  652. package/scripts/test-cli-auth/ci-test-runner.ts +0 -263
  653. package/scripts/test-cli-auth/mock-cli.sh +0 -147
  654. package/scripts/test-cli-auth/package.json +0 -14
  655. package/scripts/test-cli-auth/test-oauth-flow.ts +0 -220
  656. package/scripts/test-pty-input-auto.js +0 -222
  657. package/scripts/test-pty-input.js +0 -150
  658. package/scripts/tictactoe-setup.sh +0 -181
  659. /package/dist/dashboard/out/_next/static/{H5aWG0udPB4iOUIl_gytz → T1tgCqVWHFIkV7ClEtzD7}/_buildManifest.js +0 -0
  660. /package/dist/dashboard/out/_next/static/chunks/{117-b100311aff8d5c61.js → 117-f7b8ab0809342e77.js} +0 -0
  661. /package/dist/dashboard/out/_next/static/chunks/{648-a13d3c2b1be45466.js → 648-5cc6e1921389a58a.js} +0 -0
  662. /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-a4973f3e3c82fb67.js → page-53b8a69f76db17d0.js} +0 -0
  663. /package/dist/dashboard/out/_next/static/chunks/app/connect-repos/{page-dc2e3a1a22478efc.js → page-f45ecbc3e06134fc.js} +0 -0
  664. /package/dist/dashboard/out/_next/static/chunks/app/history/{page-56a8b4616a90dc43.js → page-8c8bed33beb2bf1c.js} +0 -0
  665. /package/dist/dashboard/out/_next/static/chunks/app/login/{page-3eac37ea6f5dd153.js → page-16f3b49e55b1e0ed.js} +0 -0
  666. /package/dist/dashboard/out/_next/static/chunks/app/pricing/{page-4d72d5a5d8a9b618.js → page-982a7000fee44014.js} +0 -0
  667. /package/dist/dashboard/out/_next/static/chunks/app/signup/{page-fee4ed1709070bcd.js → page-547dd0ca55ecd0ba.js} +0 -0
  668. /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
@@ -10,15 +10,15 @@ export const BILLING_PLANS = {
10
10
  free: {
11
11
  id: 'free',
12
12
  name: 'Free',
13
- description: 'For individuals exploring AI agent workflows',
13
+ description: 'Try AI agent workflows with limited access',
14
14
  priceMonthly: 0,
15
15
  priceYearly: 0,
16
16
  limits: {
17
- maxWorkspaces: 2,
18
- maxAgentsPerWorkspace: 3,
17
+ maxWorkspaces: 1,
18
+ maxAgentsPerWorkspace: 2,
19
19
  maxTeamMembers: 1,
20
20
  maxStorageGB: 1,
21
- maxComputeHoursPerMonth: 10,
21
+ maxComputeHoursPerMonth: 5, // Limited to 5 hours/month
22
22
  customDomains: false,
23
23
  prioritySupport: false,
24
24
  sla: false,
@@ -27,27 +27,27 @@ export const BILLING_PLANS = {
27
27
  sessionPersistence: false,
28
28
  },
29
29
  features: [
30
- 'Up to 2 workspaces',
31
- 'Up to 3 agents per workspace',
32
- '10 compute hours/month',
33
- '1 GB storage',
30
+ '1 workspace',
31
+ 'Up to 2 agents',
32
+ '5 compute hours/month',
33
+ 'Shared CPU (may throttle)',
34
34
  'Community support',
35
35
  ],
36
36
  },
37
37
  pro: {
38
38
  id: 'pro',
39
39
  name: 'Pro',
40
- description: 'For professional developers and small teams',
41
- priceMonthly: 2900, // $29/month
42
- priceYearly: 29000, // $290/year (2 months free)
40
+ description: 'For professional developers building with AI agents',
41
+ priceMonthly: 4900, // $49/month
42
+ priceYearly: 47000, // $470/year (2 months free)
43
43
  stripePriceIdMonthly: process.env.STRIPE_PRO_MONTHLY_PRICE_ID,
44
44
  stripePriceIdYearly: process.env.STRIPE_PRO_YEARLY_PRICE_ID,
45
45
  limits: {
46
- maxWorkspaces: 10,
47
- maxAgentsPerWorkspace: 10,
48
- maxTeamMembers: 5,
46
+ maxWorkspaces: 5,
47
+ maxAgentsPerWorkspace: 5,
48
+ maxTeamMembers: 3,
49
49
  maxStorageGB: 10,
50
- maxComputeHoursPerMonth: 100,
50
+ maxComputeHoursPerMonth: 50,
51
51
  customDomains: true,
52
52
  prioritySupport: false,
53
53
  sla: false,
@@ -56,11 +56,11 @@ export const BILLING_PLANS = {
56
56
  sessionPersistence: true,
57
57
  },
58
58
  features: [
59
- 'Up to 10 workspaces',
60
- 'Up to 10 agents per workspace',
61
- '100 compute hours/month',
59
+ 'Up to 5 workspaces',
60
+ 'Up to 5 agents per workspace',
61
+ '50 compute hours/month',
62
62
  '10 GB storage',
63
- '5 team members',
63
+ '3 team members',
64
64
  'Custom domains',
65
65
  'Session persistence',
66
66
  'Email support',
@@ -4,6 +4,7 @@
4
4
  export interface CloudConfig {
5
5
  port: number;
6
6
  publicUrl: string;
7
+ appUrl: string;
7
8
  sessionSecret: string;
8
9
  databaseUrl: string;
9
10
  redisUrl: string;
@@ -38,6 +39,8 @@ export interface CloudConfig {
38
39
  username: string;
39
40
  password: string;
40
41
  };
42
+ snapshotRetentionDays?: number;
43
+ volumeSizeGb?: number;
41
44
  };
42
45
  railway?: {
43
46
  apiToken: string;
@@ -60,7 +63,12 @@ export interface CloudConfig {
60
63
  enterpriseYearly?: string;
61
64
  };
62
65
  };
66
+ adminUsers: string[];
63
67
  }
64
68
  export declare function loadConfig(): CloudConfig;
69
+ /**
70
+ * Check if a GitHub username is an admin user
71
+ */
72
+ export declare function isAdminUser(githubUsername: string): boolean;
65
73
  export declare function getConfig(): CloudConfig;
66
74
  //# sourceMappingURL=config.d.ts.map
@@ -15,6 +15,7 @@ export function loadConfig() {
15
15
  return {
16
16
  port: parseInt(process.env.PORT || '4567', 10),
17
17
  publicUrl: process.env.PUBLIC_URL || 'http://localhost:4567',
18
+ appUrl: process.env.APP_URL || process.env.PUBLIC_URL || 'http://localhost:4567',
18
19
  sessionSecret: requireEnv('SESSION_SECRET'),
19
20
  databaseUrl: requireEnv('DATABASE_URL'),
20
21
  redisUrl: process.env.REDIS_URL || 'redis://localhost:6379',
@@ -54,6 +55,8 @@ export function loadConfig() {
54
55
  password: optionalEnv('GHCR_TOKEN'),
55
56
  }
56
57
  : undefined,
58
+ snapshotRetentionDays: parseInt(optionalEnv('FLY_SNAPSHOT_RETENTION_DAYS') || '14', 10),
59
+ volumeSizeGb: parseInt(optionalEnv('FLY_VOLUME_SIZE_GB') || '10', 10),
57
60
  }
58
61
  : undefined,
59
62
  railway: optionalEnv('RAILWAY_API_TOKEN')
@@ -79,8 +82,20 @@ export function loadConfig() {
79
82
  enterpriseYearly: optionalEnv('STRIPE_ENTERPRISE_YEARLY_PRICE_ID'),
80
83
  },
81
84
  },
85
+ // Admin users - comma-separated GitHub usernames (e.g., "khaliqgant,admin2")
86
+ adminUsers: (optionalEnv('ADMIN_USERS') || '')
87
+ .split(',')
88
+ .map((u) => u.trim().toLowerCase())
89
+ .filter(Boolean),
82
90
  };
83
91
  }
92
+ /**
93
+ * Check if a GitHub username is an admin user
94
+ */
95
+ export function isAdminUser(githubUsername) {
96
+ const config = getConfig();
97
+ return config.adminUsers.includes(githubUsername.toLowerCase());
98
+ }
84
99
  // Singleton config instance
85
100
  let _config = null;
86
101
  export function getConfig() {
@@ -18,6 +18,7 @@ export interface UserQueries {
18
18
  findByEmail(email: string): Promise<schema.User | null>;
19
19
  findByNangoConnectionId(connectionId: string): Promise<schema.User | null>;
20
20
  findByIncomingConnectionId(connectionId: string): Promise<schema.User | null>;
21
+ findByPlan(plan: string): Promise<schema.User[]>;
21
22
  upsert(data: schema.NewUser): Promise<schema.User>;
22
23
  update(id: string, data: Partial<Omit<schema.User, 'id' | 'createdAt'>>): Promise<void>;
23
24
  completeOnboarding(userId: string): Promise<void>;
@@ -43,7 +44,6 @@ export interface CredentialQueries {
43
44
  findByUserId(userId: string): Promise<schema.Credential[]>;
44
45
  findByUserAndProvider(userId: string, provider: string): Promise<schema.Credential | null>;
45
46
  upsert(data: schema.NewCredential): Promise<schema.Credential>;
46
- updateTokens(userId: string, provider: string, accessToken: string, refreshToken?: string, expiresAt?: Date): Promise<void>;
47
47
  delete(userId: string, provider: string): Promise<void>;
48
48
  }
49
49
  export declare const credentialQueries: CredentialQueries;
@@ -51,7 +51,9 @@ export interface WorkspaceQueries {
51
51
  findById(id: string): Promise<schema.Workspace | null>;
52
52
  findByUserId(userId: string): Promise<schema.Workspace[]>;
53
53
  findByCustomDomain(domain: string): Promise<schema.Workspace | null>;
54
+ findAll(): Promise<schema.Workspace[]>;
54
55
  create(data: schema.NewWorkspace): Promise<schema.Workspace>;
56
+ update(id: string, data: Partial<Pick<schema.Workspace, 'name' | 'config'>>): Promise<void>;
55
57
  updateStatus(id: string, status: string, options?: {
56
58
  computeId?: string;
57
59
  publicUrl?: string;
@@ -137,11 +139,12 @@ export declare const projectGroupQueries: ProjectGroupQueries;
137
139
  export interface RepositoryQueries {
138
140
  findById(id: string): Promise<schema.Repository | null>;
139
141
  findByFullName(fullName: string): Promise<schema.Repository | null>;
142
+ findByGithubFullName(fullName: string): Promise<schema.Repository[]>;
140
143
  findByUserId(userId: string): Promise<schema.Repository[]>;
141
144
  findByWorkspaceId(workspaceId: string): Promise<schema.Repository[]>;
142
145
  findByProjectGroupId(projectGroupId: string): Promise<schema.Repository[]>;
143
146
  upsert(data: schema.NewRepository): Promise<schema.Repository>;
144
- assignToWorkspace(repoId: string, workspaceId: string): Promise<void>;
147
+ assignToWorkspace(repoId: string, workspaceId: string | null): Promise<void>;
145
148
  assignToGroup(repoId: string, projectGroupId: string | null): Promise<void>;
146
149
  updateProjectAgent(id: string, config: schema.ProjectAgentConfig): Promise<void>;
147
150
  updateSyncStatus(id: string, status: string, lastSyncedAt?: Date): Promise<void>;
@@ -61,6 +61,11 @@ export const userQueries = {
61
61
  const result = await db.select().from(schema.users).where(eq(schema.users.incomingConnectionId, connectionId));
62
62
  return result[0] ?? null;
63
63
  },
64
+ async findByPlan(plan) {
65
+ const db = getDb();
66
+ const result = await db.select().from(schema.users).where(eq(schema.users.plan, plan));
67
+ return result;
68
+ },
64
69
  async upsert(data) {
65
70
  const db = getDb();
66
71
  const result = await db
@@ -214,9 +219,6 @@ export const credentialQueries = {
214
219
  .onConflictDoUpdate({
215
220
  target: [schema.credentials.userId, schema.credentials.provider],
216
221
  set: {
217
- accessToken: data.accessToken,
218
- refreshToken: data.refreshToken ?? sql `credentials.refresh_token`,
219
- tokenExpiresAt: data.tokenExpiresAt,
220
222
  scopes: data.scopes,
221
223
  providerAccountId: data.providerAccountId,
222
224
  providerAccountEmail: data.providerAccountEmail,
@@ -226,23 +228,6 @@ export const credentialQueries = {
226
228
  .returning();
227
229
  return result[0];
228
230
  },
229
- async updateTokens(userId, provider, accessToken, refreshToken, expiresAt) {
230
- const db = getDb();
231
- const updates = {
232
- accessToken,
233
- updatedAt: new Date(),
234
- };
235
- if (refreshToken !== undefined) {
236
- updates.refreshToken = refreshToken;
237
- }
238
- if (expiresAt !== undefined) {
239
- updates.tokenExpiresAt = expiresAt;
240
- }
241
- await db
242
- .update(schema.credentials)
243
- .set(updates)
244
- .where(and(eq(schema.credentials.userId, userId), eq(schema.credentials.provider, provider)));
245
- },
246
231
  async delete(userId, provider) {
247
232
  const db = getDb();
248
233
  await db
@@ -272,11 +257,25 @@ export const workspaceQueries = {
272
257
  .where(eq(schema.workspaces.customDomain, domain));
273
258
  return result[0] ?? null;
274
259
  },
260
+ async findAll() {
261
+ const db = getDb();
262
+ return db
263
+ .select()
264
+ .from(schema.workspaces)
265
+ .orderBy(desc(schema.workspaces.createdAt));
266
+ },
275
267
  async create(data) {
276
268
  const db = getDb();
277
269
  const result = await db.insert(schema.workspaces).values(data).returning();
278
270
  return result[0];
279
271
  },
272
+ async update(id, data) {
273
+ const db = getDb();
274
+ await db
275
+ .update(schema.workspaces)
276
+ .set({ ...data, updatedAt: new Date() })
277
+ .where(eq(schema.workspaces.id, id));
278
+ },
280
279
  async updateStatus(id, status, options) {
281
280
  const db = getDb();
282
281
  await db
@@ -652,6 +651,14 @@ export const repositoryQueries = {
652
651
  .where(eq(schema.repositories.githubFullName, fullName));
653
652
  return result[0] ?? null;
654
653
  },
654
+ async findByGithubFullName(fullName) {
655
+ const db = getDb();
656
+ // Use case-insensitive match since GitHub repo names are case-insensitive
657
+ return db
658
+ .select()
659
+ .from(schema.repositories)
660
+ .where(sql `LOWER(${schema.repositories.githubFullName}) = LOWER(${fullName})`);
661
+ },
655
662
  async findByUserId(userId) {
656
663
  const db = getDb();
657
664
  return db
@@ -121,6 +121,25 @@ export declare const users: import("drizzle-orm/pg-core").PgTableWithColumns<{
121
121
  }, {}, {
122
122
  length: 50;
123
123
  }>;
124
+ stripeCustomerId: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "stripe_customer_id";
126
+ tableName: "users";
127
+ dataType: "string";
128
+ columnType: "PgVarchar";
129
+ data: string;
130
+ driverParam: string;
131
+ notNull: false;
132
+ hasDefault: false;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: [string, ...string[]];
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {
141
+ length: 255;
142
+ }>;
124
143
  nangoConnectionId: import("drizzle-orm/pg-core").PgColumn<{
125
144
  name: "nango_connection_id";
126
145
  tableName: "users";
@@ -565,57 +584,6 @@ export declare const credentials: import("drizzle-orm/pg-core").PgTableWithColum
565
584
  }, {}, {
566
585
  length: 50;
567
586
  }>;
568
- accessToken: import("drizzle-orm/pg-core").PgColumn<{
569
- name: "access_token";
570
- tableName: "credentials";
571
- dataType: "string";
572
- columnType: "PgText";
573
- data: string;
574
- driverParam: string;
575
- notNull: true;
576
- hasDefault: false;
577
- isPrimaryKey: false;
578
- isAutoincrement: false;
579
- hasRuntimeDefault: false;
580
- enumValues: [string, ...string[]];
581
- baseColumn: never;
582
- identity: undefined;
583
- generated: undefined;
584
- }, {}, {}>;
585
- refreshToken: import("drizzle-orm/pg-core").PgColumn<{
586
- name: "refresh_token";
587
- tableName: "credentials";
588
- dataType: "string";
589
- columnType: "PgText";
590
- data: string;
591
- driverParam: string;
592
- notNull: false;
593
- hasDefault: false;
594
- isPrimaryKey: false;
595
- isAutoincrement: false;
596
- hasRuntimeDefault: false;
597
- enumValues: [string, ...string[]];
598
- baseColumn: never;
599
- identity: undefined;
600
- generated: undefined;
601
- }, {}, {}>;
602
- tokenExpiresAt: import("drizzle-orm/pg-core").PgColumn<{
603
- name: "token_expires_at";
604
- tableName: "credentials";
605
- dataType: "date";
606
- columnType: "PgTimestamp";
607
- data: Date;
608
- driverParam: string;
609
- notNull: false;
610
- hasDefault: false;
611
- isPrimaryKey: false;
612
- isAutoincrement: false;
613
- hasRuntimeDefault: false;
614
- enumValues: undefined;
615
- baseColumn: never;
616
- identity: undefined;
617
- generated: undefined;
618
- }, {}, {}>;
619
587
  scopes: import("drizzle-orm/pg-core").PgColumn<{
620
588
  name: "scopes";
621
589
  tableName: "credentials";
@@ -17,6 +17,8 @@ export const users = pgTable('users', {
17
17
  email: varchar('email', { length: 255 }),
18
18
  avatarUrl: varchar('avatar_url', { length: 512 }),
19
19
  plan: varchar('plan', { length: 50 }).notNull().default('free'),
20
+ // Stripe billing
21
+ stripeCustomerId: varchar('stripe_customer_id', { length: 255 }),
20
22
  // Nango OAuth connections
21
23
  nangoConnectionId: varchar('nango_connection_id', { length: 255 }), // Permanent login connection
22
24
  incomingConnectionId: varchar('incoming_connection_id', { length: 255 }), // Temp polling connection
@@ -68,15 +70,14 @@ export const githubInstallationsRelations = relations(githubInstallations, ({ on
68
70
  repositories: many(repositories),
69
71
  }));
70
72
  // ============================================================================
71
- // Credentials (provider tokens)
73
+ // Credentials (connected provider registry - no token storage)
74
+ // Note: Tokens are not stored centrally. CLI tools authenticate directly
75
+ // on workspace instances. This table tracks which providers a user has connected.
72
76
  // ============================================================================
73
77
  export const credentials = pgTable('credentials', {
74
78
  id: uuid('id').primaryKey().defaultRandom(),
75
79
  userId: uuid('user_id').notNull().references(() => users.id, { onDelete: 'cascade' }),
76
80
  provider: varchar('provider', { length: 50 }).notNull(),
77
- accessToken: text('access_token').notNull(),
78
- refreshToken: text('refresh_token'),
79
- tokenExpiresAt: timestamp('token_expires_at'),
80
81
  scopes: text('scopes').array(),
81
82
  providerAccountId: varchar('provider_account_id', { length: 255 }),
82
83
  providerAccountEmail: varchar('provider_account_email', { length: 255 }),
@@ -5,7 +5,6 @@
5
5
  */
6
6
  export { createServer } from './server.js';
7
7
  export { getConfig, loadConfig, CloudConfig } from './config.js';
8
- export { CredentialVault } from './vault/index.js';
9
8
  export { WorkspaceProvisioner, ProvisionConfig, Workspace, WorkspaceStatus } from './provisioner/index.js';
10
9
  export { ScalingPolicyService, ScalingThresholds, ScalingPolicy, ScalingDecision, WorkspaceMetrics, getScalingPolicyService, AutoScaler, ScalingOperation, getAutoScaler, createAutoScaler, CapacityManager, WorkspaceCapacity, PlacementRecommendation, CapacityForecast, getCapacityManager, createCapacityManager, ScalingOrchestrator, ScalingEvent, getScalingOrchestrator, createScalingOrchestrator, } from './services/index.js';
11
10
  export * from './billing/index.js';
@@ -7,7 +7,6 @@ import { fileURLToPath } from 'node:url';
7
7
  export { createServer } from './server.js';
8
8
  export { getConfig, loadConfig } from './config.js';
9
9
  // Services
10
- export { CredentialVault } from './vault/index.js';
11
10
  export { WorkspaceProvisioner } from './provisioner/index.js';
12
11
  // Scaling infrastructure
13
12
  export { ScalingPolicyService, getScalingPolicyService, AutoScaler, getAutoScaler, createAutoScaler, CapacityManager, getCapacityManager, createCapacityManager, ScalingOrchestrator, getScalingOrchestrator, createScalingOrchestrator, } from './services/index.js';
@@ -4,6 +4,16 @@
4
4
  * One-click provisioning for compute resources (Fly.io, Railway, Docker).
5
5
  */
6
6
  import { Workspace } from '../db/index.js';
7
+ export type ProvisioningStage = 'creating' | 'networking' | 'secrets' | 'machine' | 'booting' | 'health' | 'complete';
8
+ interface ProvisioningProgress {
9
+ stage: ProvisioningStage;
10
+ startedAt: number;
11
+ updatedAt: number;
12
+ }
13
+ /**
14
+ * Get the current provisioning stage for a workspace
15
+ */
16
+ export declare function getProvisioningStage(workspaceId: string): ProvisioningProgress | null;
7
17
  export interface ProvisionConfig {
8
18
  userId: string;
9
19
  name: string;
@@ -30,6 +40,7 @@ export interface ResourceTier {
30
40
  cpuCores: number;
31
41
  memoryMb: number;
32
42
  maxAgents: number;
43
+ cpuKind: 'shared' | 'performance';
33
44
  }
34
45
  export declare const RESOURCE_TIERS: Record<string, ResourceTier>;
35
46
  /**
@@ -40,8 +51,13 @@ export declare class WorkspaceProvisioner {
40
51
  constructor();
41
52
  /**
42
53
  * Provision a new workspace (one-click)
54
+ * Returns immediately with 'provisioning' status and runs actual provisioning in background
43
55
  */
44
56
  provision(config: ProvisionConfig): Promise<ProvisionResult>;
57
+ /**
58
+ * Run the actual provisioning work asynchronously
59
+ */
60
+ private runProvisioningAsync;
45
61
  /**
46
62
  * Deprovision a workspace
47
63
  */
@@ -60,8 +76,9 @@ export declare class WorkspaceProvisioner {
60
76
  stop(workspaceId: string): Promise<void>;
61
77
  /**
62
78
  * Resize a workspace (vertical scaling)
79
+ * @param skipRestart - If true, config is saved but machine won't restart (changes apply on next start)
63
80
  */
64
- resize(workspaceId: string, tier: ResourceTier): Promise<void>;
81
+ resize(workspaceId: string, tier: ResourceTier, skipRestart?: boolean): Promise<void>;
65
82
  /**
66
83
  * Update the max agent limit for a workspace
67
84
  */
@@ -70,6 +87,113 @@ export declare class WorkspaceProvisioner {
70
87
  * Get current resource tier for a workspace
71
88
  */
72
89
  getCurrentTier(workspaceId: string): Promise<ResourceTier>;
90
+ /**
91
+ * Get recommended tier based on agent count
92
+ * Uses 1.5-2GB per agent as baseline for Claude Code
93
+ */
94
+ getRecommendedTier(agentCount: number): ResourceTier;
95
+ /**
96
+ * Auto-scale workspace based on current agent count
97
+ * Respects plan limits - free tier cannot scale, others have max tier limits
98
+ * Returns { scaled: boolean, reason?: string }
99
+ */
100
+ autoScale(workspaceId: string, currentAgentCount: number): Promise<{
101
+ scaled: boolean;
102
+ reason?: string;
103
+ currentTier?: string;
104
+ targetTier?: string;
105
+ }>;
106
+ /**
107
+ * Create an on-demand snapshot of a workspace's volume
108
+ * Use before risky operations (e.g., major refactors, untrusted code execution)
109
+ */
110
+ createSnapshot(workspaceId: string): Promise<{
111
+ snapshotId: string;
112
+ } | null>;
113
+ /**
114
+ * List available snapshots for a workspace
115
+ * Includes both automatic daily snapshots and on-demand snapshots
116
+ */
117
+ listSnapshots(workspaceId: string): Promise<Array<{
118
+ id: string;
119
+ createdAt: string;
120
+ sizeBytes: number;
121
+ }>>;
122
+ /**
123
+ * Get the volume ID for a workspace (needed for restore operations)
124
+ */
125
+ getVolumeId(workspaceId: string): Promise<string | null>;
126
+ /**
127
+ * Result of a graceful update attempt
128
+ */
129
+ static readonly UpdateResult: {
130
+ readonly UPDATED: "updated";
131
+ readonly UPDATED_PENDING_RESTART: "updated_pending_restart";
132
+ readonly SKIPPED_ACTIVE_AGENTS: "skipped_active_agents";
133
+ readonly SKIPPED_NOT_RUNNING: "skipped_not_running";
134
+ readonly NOT_SUPPORTED: "not_supported";
135
+ readonly ERROR: "error";
136
+ };
137
+ /**
138
+ * Gracefully update a single workspace's image
139
+ *
140
+ * Behavior:
141
+ * - If workspace is stopped: Update config, will use new image on next wake
142
+ * - If workspace is running with no agents: Update config and restart
143
+ * - If workspace is running with active agents: Skip (or force if specified)
144
+ *
145
+ * @param workspaceId - Workspace to update
146
+ * @param newImage - New Docker image to use
147
+ * @param options - Update options
148
+ * @returns Update result with details
149
+ */
150
+ gracefulUpdateImage(workspaceId: string, newImage: string, options?: {
151
+ force?: boolean;
152
+ skipRestart?: boolean;
153
+ }): Promise<{
154
+ result: string;
155
+ workspaceId: string;
156
+ machineState?: string;
157
+ agentCount?: number;
158
+ agents?: Array<{
159
+ name: string;
160
+ status: string;
161
+ }>;
162
+ error?: string;
163
+ }>;
164
+ /**
165
+ * Gracefully update all workspaces to a new image
166
+ *
167
+ * Processes workspaces in batches, respecting active agents unless forced.
168
+ * Returns detailed results for each workspace.
169
+ *
170
+ * @param newImage - New Docker image to use
171
+ * @param options - Update options
172
+ * @returns Summary and per-workspace results
173
+ */
174
+ gracefulUpdateAllImages(newImage: string, options?: {
175
+ force?: boolean;
176
+ skipRestart?: boolean;
177
+ batchSize?: number;
178
+ userIds?: string[];
179
+ workspaceIds?: string[];
180
+ }): Promise<{
181
+ summary: {
182
+ total: number;
183
+ updated: number;
184
+ pendingRestart: number;
185
+ skippedActiveAgents: number;
186
+ skippedNotRunning: number;
187
+ errors: number;
188
+ };
189
+ results: Array<{
190
+ result: string;
191
+ workspaceId: string;
192
+ machineState?: string;
193
+ agentCount?: number;
194
+ error?: string;
195
+ }>;
196
+ }>;
73
197
  }
74
198
  export declare function getProvisioner(): WorkspaceProvisioner;
75
199
  //# sourceMappingURL=index.d.ts.map