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
@@ -4,55 +4,42 @@
4
4
  * Unlike TmuxWrapper which provides interactive terminal access,
5
5
  * PtyWrapper runs agents headlessly with output capture for logs.
6
6
  * Used for spawned workers that don't need direct user interaction.
7
+ *
8
+ * Extends BaseWrapper for shared message handling, spawn/release,
9
+ * and continuity integration.
7
10
  */
8
11
  import * as pty from 'node-pty';
9
12
  import fs from 'node:fs';
10
13
  import path from 'node:path';
11
- import { EventEmitter } from 'node:events';
12
- import { RelayClient } from './client.js';
14
+ import { BaseWrapper } from './base-wrapper.js';
13
15
  import { parseSummaryWithDetails, parseSessionEndFromOutput, isPlaceholderTarget } from './parser.js';
14
16
  import { getProjectPaths } from '../utils/project-namespace.js';
15
17
  import { getTrailEnvVars } from '../trajectory/integration.js';
16
18
  import { findAgentConfig } from '../utils/agent-config.js';
17
19
  import { HookRegistry, createTrajectoryHooks } from '../hooks/index.js';
18
- import { getContinuityManager, parseContinuityCommand, hasContinuityCommand } from '../continuity/index.js';
19
- import { INJECTION_CONSTANTS, stripAnsi, sleep, buildInjectionString, injectWithRetry as sharedInjectWithRetry, calculateSuccessRate, createInjectionMetrics, getDefaultRelayPrefix, detectCliType, CLI_QUIRKS, } from './shared.js';
20
+ import { parseContinuityCommand, hasContinuityCommand } from '../continuity/index.js';
21
+ import { INJECTION_CONSTANTS, stripAnsi, sleep, buildInjectionString, injectWithRetry as sharedInjectWithRetry, CLI_QUIRKS, } from './shared.js';
22
+ import { detectProviderAuthRevocation } from './auth-detection.js';
20
23
  /** Maximum lines to keep in output buffer */
21
24
  const MAX_BUFFER_LINES = 10000;
22
- export class PtyWrapper extends EventEmitter {
25
+ export class PtyWrapper extends BaseWrapper {
26
+ // Override config with PtyWrapper-specific type
23
27
  config;
28
+ // PTY-specific state
24
29
  ptyProcess;
25
- client;
26
- running = false;
27
30
  outputBuffer = [];
28
31
  rawBuffer = '';
29
- relayPrefix;
30
- cliType;
31
- sentMessageHashes = new Set();
32
- receivedMessageIds = new Set(); // Dedup incoming messages
33
- processedSpawnCommands = new Set();
34
- processedReleaseCommands = new Set();
35
- pendingFencedSpawn = null;
36
- messageQueue = [];
37
- isInjecting = false;
38
32
  readyForMessages = false;
39
33
  lastOutputTime = 0;
40
- injectionMetrics = createInjectionMetrics();
41
34
  logFilePath;
42
35
  logStream;
43
36
  acceptedPrompts = new Set(); // Track which prompts have been accepted
44
37
  hookRegistry;
45
38
  sessionStartTime = Date.now();
46
- continuity;
47
- agentId;
48
- processedContinuityCommands = new Set();
49
- lastSummaryRawContent = ''; // Dedup summary event emissions
50
- sessionEndProcessed = false; // Track if we've already emitted session-end
51
39
  inThinkingBlock = false; // Track if inside <thinking>...</thinking>
52
40
  lastSummaryTime = Date.now(); // Track when last summary was output
53
41
  outputsSinceSummary = 0; // Count outputs since last summary
54
42
  detectedTask; // Auto-detected task from agent config
55
- sessionEndData; // Store SESSION_END data for handoff
56
43
  instructionsInjected = false; // Track if init instructions have been injected
57
44
  continuityInjected = false; // Track if continuity context has been injected
58
45
  recentLogChunks = new Map(); // Dedup log streaming (hash -> timestamp)
@@ -60,12 +47,13 @@ export class PtyWrapper extends EventEmitter {
60
47
  static LOG_DEDUP_MAX_SIZE = 100; // Max entries in dedup map
61
48
  lastParsedLength = 0; // Track last parsed position to avoid re-parsing entire buffer
62
49
  lastContinuityParsedLength = 0; // Same for continuity commands
50
+ // Auth revocation detection state
51
+ authRevoked = false;
52
+ lastAuthCheck = 0;
53
+ AUTH_CHECK_INTERVAL = 5000; // Check every 5 seconds max
63
54
  constructor(config) {
64
- super();
55
+ super(config);
65
56
  this.config = config;
66
- this.relayPrefix = config.relayPrefix ?? getDefaultRelayPrefix();
67
- // Detect CLI type from command for special handling
68
- this.cliType = config.cliType ?? detectCliType(config.command);
69
57
  // Auto-detect agent role from .claude/agents/ or .openagents/ if task not provided
70
58
  let detectedTask = config.task;
71
59
  if (!detectedTask) {
@@ -78,15 +66,7 @@ export class PtyWrapper extends EventEmitter {
78
66
  }
79
67
  // Store detected task for use in hook registry
80
68
  this.detectedTask = detectedTask;
81
- this.client = new RelayClient({
82
- agentName: config.name,
83
- socketPath: config.socketPath,
84
- cli: this.cliType,
85
- task: detectedTask,
86
- workingDirectory: config.cwd ?? process.cwd(),
87
- quiet: true,
88
- });
89
- // Initialize hook registry
69
+ // Initialize hook registry (PTY-specific)
90
70
  const projectPaths = getProjectPaths();
91
71
  this.hookRegistry = new HookRegistry({
92
72
  agentName: config.name,
@@ -112,13 +92,29 @@ export class PtyWrapper extends EventEmitter {
112
92
  if (config.hooks) {
113
93
  this.hookRegistry.registerLifecycleHooks(config.hooks);
114
94
  }
115
- // Initialize continuity manager
116
- this.continuity = getContinuityManager({ defaultCli: 'spawned' });
117
- // Handle incoming messages
118
- this.client.onMessage = (from, payload, messageId, meta, originalTo) => {
119
- this.handleIncomingMessage(from, payload, messageId, meta, originalTo);
120
- };
121
95
  }
96
+ // =========================================================================
97
+ // Abstract method implementations (required by BaseWrapper)
98
+ // =========================================================================
99
+ /**
100
+ * Inject content into the PTY process.
101
+ * Used by BaseWrapper for message injection.
102
+ */
103
+ async performInjection(content) {
104
+ if (this.ptyProcess && this.running) {
105
+ this.ptyProcess.write(content);
106
+ }
107
+ }
108
+ /**
109
+ * Get cleaned output buffer for command parsing.
110
+ * Strips ANSI codes and returns raw buffer content.
111
+ */
112
+ getCleanOutput() {
113
+ return stripAnsi(this.rawBuffer);
114
+ }
115
+ // =========================================================================
116
+ // Lifecycle methods
117
+ // =========================================================================
122
118
  /**
123
119
  * Start the agent process
124
120
  */
@@ -188,16 +184,19 @@ export class PtyWrapper extends EventEmitter {
188
184
  }
189
185
  this.running = true;
190
186
  this.sessionStartTime = Date.now();
191
- // Dispatch session start hook (handles trajectory initialization)
192
- this.hookRegistry.dispatchSessionStart().catch(err => {
193
- console.error(`[pty:${this.config.name}] Session start hook error:`, err);
194
- });
195
- // Initialize continuity and get agentId, then inject context
196
- this.initializeAgentId()
197
- .then(() => this.injectContinuityContext())
198
- .catch(err => {
199
- console.error(`[pty:${this.config.name}] Agent ID/continuity initialization error:`, err);
200
- });
187
+ // Skip hooks and continuity in interactive mode - user handles all prompts directly
188
+ if (!this.config.interactive) {
189
+ // Dispatch session start hook (handles trajectory initialization)
190
+ this.hookRegistry.dispatchSessionStart().catch(err => {
191
+ console.error(`[pty:${this.config.name}] Session start hook error:`, err);
192
+ });
193
+ // Initialize continuity and get agentId, then inject context
194
+ this.initializeAgentId()
195
+ .then(() => this.injectContinuityContext())
196
+ .catch(err => {
197
+ console.error(`[pty:${this.config.name}] Agent ID/continuity initialization error:`, err);
198
+ });
199
+ }
201
200
  // Capture output
202
201
  this.ptyProcess.onData((data) => {
203
202
  this.handleOutput(data);
@@ -210,48 +209,19 @@ export class PtyWrapper extends EventEmitter {
210
209
  this.client.destroy();
211
210
  });
212
211
  // Inject initial instructions after a delay, then mark ready for messages
212
+ // Skip in interactive mode - user handles all prompts directly
213
213
  setTimeout(() => {
214
- this.injectInstructions();
215
- this.readyForMessages = true;
216
- // Process any messages that arrived while waiting
217
- this.processMessageQueue();
218
- }, 2000);
219
- }
220
- /**
221
- * Initialize agent ID for continuity/resume functionality
222
- */
223
- async initializeAgentId() {
224
- if (!this.continuity)
225
- return;
226
- try {
227
- let ledger;
228
- // If resuming from a previous agent ID, try to find that ledger
229
- if (this.config.resumeAgentId) {
230
- ledger = await this.continuity.findLedgerByAgentId(this.config.resumeAgentId);
231
- if (ledger) {
232
- console.log(`[pty:${this.config.name}] Resuming agent ID: ${ledger.agentId} (from previous session)`);
233
- }
234
- else {
235
- console.error(`[pty:${this.config.name}] Resume agent ID ${this.config.resumeAgentId} not found, creating new`);
236
- }
214
+ if (!this.config.interactive) {
215
+ this.injectInstructions();
237
216
  }
238
- // If not resuming or resume ID not found, get or create ledger
239
- if (!ledger) {
240
- ledger = await this.continuity.getOrCreateLedger(this.config.name, 'spawned');
241
- console.log(`[pty:${this.config.name}] Agent ID: ${ledger.agentId} (use this to resume if agent dies)`);
217
+ this.readyForMessages = true;
218
+ // Process any messages that arrived while waiting (skip in interactive mode)
219
+ if (!this.config.interactive) {
220
+ this.processMessageQueue();
242
221
  }
243
- this.agentId = ledger.agentId;
244
- }
245
- catch (err) {
246
- console.error(`[pty:${this.config.name}] Failed to initialize agent ID: ${err.message}`);
247
- }
248
- }
249
- /**
250
- * Get the current agent ID
251
- */
252
- getAgentId() {
253
- return this.agentId;
222
+ }, 2000);
254
223
  }
224
+ // Note: initializeAgentId() and getAgentId() are inherited from BaseWrapper
255
225
  /**
256
226
  * Inject continuity context from previous session.
257
227
  * Called after agent ID initialization to restore state from ledger.
@@ -310,6 +280,10 @@ export class PtyWrapper extends EventEmitter {
310
280
  * ->continuity:uncertain "..." - Mark item as uncertain
311
281
  * ->continuity:handoff <<<...>>> - Create explicit handoff
312
282
  */
283
+ /**
284
+ * Parse continuity commands from output.
285
+ * Overrides BaseWrapper to use client.sendMessage instead of queuing.
286
+ */
313
287
  async parseContinuityCommands(content) {
314
288
  if (!this.continuity)
315
289
  return;
@@ -334,9 +308,7 @@ export class PtyWrapper extends EventEmitter {
334
308
  const response = await this.continuity.handleCommand(this.config.name, command);
335
309
  if (response) {
336
310
  // Inject response via relay message to self
337
- this.client.sendMessage(this.config.name, response, 'message', {
338
- thread: 'continuity-response',
339
- });
311
+ this.client.sendMessage(this.config.name, response, 'message', undefined, 'continuity-response');
340
312
  console.log(`[pty:${this.config.name}] Continuity command handled: ${command.type}`);
341
313
  }
342
314
  }
@@ -386,23 +358,31 @@ export class PtyWrapper extends EventEmitter {
386
358
  // Parse for relay commands
387
359
  this.parseRelayCommands();
388
360
  // Dispatch output hook (handles phase detection, etc.)
361
+ // Skip in interactive mode - no hooks should inject content
389
362
  const cleanData = stripAnsi(data);
390
- this.hookRegistry.dispatchOutput(cleanData, data).catch(err => {
391
- console.error(`[pty:${this.config.name}] Output hook error:`, err);
392
- });
363
+ if (!this.config.interactive) {
364
+ this.hookRegistry.dispatchOutput(cleanData, data).catch(err => {
365
+ console.error(`[pty:${this.config.name}] Output hook error:`, err);
366
+ });
367
+ }
393
368
  // Check for [[SUMMARY]] and [[SESSION_END]] blocks and emit events
394
369
  // This allows cloud services to handle persistence without hardcoding storage
395
370
  const cleanContent = stripAnsi(this.rawBuffer);
396
371
  this.checkForSummaryAndEmit(cleanContent);
397
372
  this.checkForSessionEndAndEmit(cleanContent);
373
+ // Check for auth revocation patterns
374
+ this.checkAuthRevocation(cleanContent);
398
375
  // Parse for continuity commands (->continuity:save, ->continuity:load, etc.)
399
376
  // Use rawBuffer (accumulated content) not immediate chunk, since multi-line
400
377
  // fenced commands like ->continuity:save <<<...>>> span multiple output events
401
378
  // Optimization: Only parse new content with lookback for incomplete fenced commands
402
- if (cleanContent.length > this.lastContinuityParsedLength) {
379
+ // Skip in interactive mode - no continuity features needed
380
+ if (!this.config.interactive && cleanContent.length > this.lastContinuityParsedLength) {
403
381
  const lookbackStart = Math.max(0, this.lastContinuityParsedLength - 500);
404
382
  const contentToParse = cleanContent.substring(lookbackStart);
405
- this.parseContinuityCommands(contentToParse).catch(err => {
383
+ // Join continuation lines for multi-line fenced commands
384
+ const joinedContent = this.joinContinuationLines(contentToParse);
385
+ this.parseContinuityCommands(joinedContent).catch(err => {
406
386
  console.error(`[pty:${this.config.name}] Continuity command parsing error:`, err);
407
387
  });
408
388
  this.lastContinuityParsedLength = cleanContent.length;
@@ -506,6 +486,9 @@ export class PtyWrapper extends EventEmitter {
506
486
  handleAutoAcceptPrompts(data) {
507
487
  if (!this.ptyProcess || !this.running)
508
488
  return;
489
+ // Skip auto-accept in interactive mode - user responds to prompts directly
490
+ if (this.config.interactive)
491
+ return;
509
492
  const cleanData = stripAnsi(data);
510
493
  // Check for the permission acceptance prompt (--dangerously-skip-permissions)
511
494
  // Pattern: "2. Yes, I accept" in the output
@@ -744,23 +727,17 @@ export class PtyWrapper extends EventEmitter {
744
727
  }
745
728
  }
746
729
  /**
747
- * Send relay command to daemon
730
+ * Send relay command to daemon.
731
+ * Extends BaseWrapper to add PTY-specific logging and hook dispatch.
748
732
  */
749
733
  sendRelayCommand(cmd) {
750
- const msgHash = `${cmd.to}:${cmd.body}`;
751
- if (this.sentMessageHashes.has(msgHash)) {
752
- console.log(`[pty:${this.config.name}] Skipping duplicate message to ${cmd.to}`);
753
- return;
754
- }
755
- if (this.client.state !== 'READY') {
756
- console.log(`[pty:${this.config.name}] Cannot send to ${cmd.to} - relay not ready (state: ${this.client.state})`);
757
- return;
758
- }
759
- const success = this.client.sendMessage(cmd.to, cmd.body, cmd.kind, cmd.data, cmd.thread);
760
- console.log(`[pty:${this.config.name}] Sent message to ${cmd.to}: ${success ? 'success' : 'failed'}`);
761
- if (success) {
762
- this.sentMessageHashes.add(msgHash);
763
- // Dispatch message sent hook
734
+ // Check if this message would be sent (before BaseWrapper deduplicates)
735
+ const msgHash = `${cmd.to}:${cmd.body.substring(0, 100)}`;
736
+ const wouldSend = !this.sentMessageHashes.has(msgHash) && this.client.state === 'READY';
737
+ // Call base class to handle deduplication and actual send
738
+ super.sendRelayCommand(cmd);
739
+ // PTY-specific: Dispatch message sent hook if the message was sent
740
+ if (wouldSend && this.sentMessageHashes.has(msgHash)) {
764
741
  this.hookRegistry.dispatchMessageSent(cmd.to, cmd.body, cmd.thread).catch(err => {
765
742
  console.error(`[pty:${this.config.name}] Message sent hook error:`, err);
766
743
  });
@@ -794,6 +771,8 @@ export class PtyWrapper extends EventEmitter {
794
771
  * - Command must be at start of line (after whitespace)
795
772
  * - Agent name must be PascalCase (e.g., Backend, Frontend, Worker1)
796
773
  * - CLI must be a known type (claude, codex, gemini, etc.)
774
+ *
775
+ * Overrides BaseWrapper to add PTY-specific validation and logging.
797
776
  */
798
777
  parseSpawnReleaseCommands(content) {
799
778
  // Need either API port or callbacks to handle spawn/release
@@ -968,7 +947,8 @@ export class PtyWrapper extends EventEmitter {
968
947
  }
969
948
  }
970
949
  /**
971
- * Execute spawn via API or callback
950
+ * Execute spawn via API or callback.
951
+ * Overrides BaseWrapper to add PTY-specific logging and API path.
972
952
  */
973
953
  async executeSpawn(name, cli, task) {
974
954
  console.log(`[pty:${this.config.name}] [SPAWN-DEBUG] executeSpawn called: name=${name}, cli=${cli}, task="${task.substring(0, 50)}..."`);
@@ -1004,7 +984,8 @@ export class PtyWrapper extends EventEmitter {
1004
984
  }
1005
985
  }
1006
986
  /**
1007
- * Execute release via API or callback
987
+ * Execute release via API or callback.
988
+ * Overrides BaseWrapper to add PTY-specific logging and API path.
1008
989
  */
1009
990
  async executeRelease(name) {
1010
991
  if (this.config.dashboardPort) {
@@ -1036,25 +1017,15 @@ export class PtyWrapper extends EventEmitter {
1036
1017
  }
1037
1018
  }
1038
1019
  /**
1039
- * Handle incoming message from relay
1040
- * @param originalTo - The original 'to' field from sender. '*' indicates this was a broadcast message.
1020
+ * Handle incoming message from relay.
1021
+ * Extends BaseWrapper to add PTY-specific behavior.
1041
1022
  */
1042
1023
  handleIncomingMessage(from, payload, messageId, meta, originalTo) {
1043
- // Deduplicate: skip if we've already received this message
1044
- if (this.receivedMessageIds.has(messageId)) {
1045
- console.log(`[pty:${this.config.name}] Skipping duplicate message: ${messageId.substring(0, 8)}`);
1046
- return;
1047
- }
1048
- this.receivedMessageIds.add(messageId);
1049
- // Limit dedup set size to prevent memory leak
1050
- if (this.receivedMessageIds.size > 1000) {
1051
- const oldest = this.receivedMessageIds.values().next().value;
1052
- if (oldest)
1053
- this.receivedMessageIds.delete(oldest);
1054
- }
1055
- this.messageQueue.push({ from, body: payload.body, messageId, thread: payload.thread, importance: meta?.importance, data: payload.data, originalTo });
1024
+ // Call base class to handle deduplication and queuing
1025
+ super.handleIncomingMessage(from, payload, messageId, meta, originalTo);
1026
+ // PTY-specific: Process the message queue immediately
1056
1027
  this.processMessageQueue();
1057
- // Dispatch message received hook
1028
+ // PTY-specific: Dispatch message received hook
1058
1029
  this.hookRegistry.dispatchMessageReceived(from, payload.body, messageId).catch(err => {
1059
1030
  console.error(`[pty:${this.config.name}] Message received hook error:`, err);
1060
1031
  });
@@ -1323,12 +1294,6 @@ export class PtyWrapper extends EventEmitter {
1323
1294
  this.logStream = undefined;
1324
1295
  }
1325
1296
  }
1326
- get isRunning() {
1327
- return this.running;
1328
- }
1329
- get name() {
1330
- return this.config.name;
1331
- }
1332
1297
  get pid() {
1333
1298
  return this.ptyProcess?.pid;
1334
1299
  }
@@ -1340,6 +1305,9 @@ export class PtyWrapper extends EventEmitter {
1340
1305
  * Works with any CLI (Claude, Gemini, Codex, etc.)
1341
1306
  */
1342
1307
  trackOutputAndRemind(data) {
1308
+ // Skip in interactive mode - user handles all prompts directly
1309
+ if (this.config.interactive)
1310
+ return;
1343
1311
  // Disabled if config.summaryReminder === false or env RELAY_SUMMARY_REMINDER_ENABLED=false
1344
1312
  if (this.config.summaryReminder === false)
1345
1313
  return;
@@ -1417,34 +1385,7 @@ export class PtyWrapper extends EventEmitter {
1417
1385
  summary,
1418
1386
  });
1419
1387
  }
1420
- /**
1421
- * Save a parsed summary to the continuity ledger.
1422
- * Maps summary fields to ledger fields for session recovery.
1423
- */
1424
- async saveSummaryToLedger(summary) {
1425
- if (!this.continuity)
1426
- return;
1427
- const updates = {};
1428
- // Map summary fields to ledger fields
1429
- if (summary.currentTask) {
1430
- updates.currentTask = summary.currentTask;
1431
- }
1432
- if (summary.completedTasks && summary.completedTasks.length > 0) {
1433
- updates.completed = summary.completedTasks;
1434
- }
1435
- if (summary.context) {
1436
- // Store context in inProgress as "next steps" hint
1437
- updates.inProgress = [summary.context];
1438
- }
1439
- if (summary.files && summary.files.length > 0) {
1440
- updates.fileContext = summary.files.map((f) => ({ path: f }));
1441
- }
1442
- // Only save if we have meaningful updates
1443
- if (Object.keys(updates).length > 0) {
1444
- await this.continuity.saveLedger(this.config.name, updates);
1445
- console.log(`[pty:${this.config.name}] Saved summary to continuity ledger`);
1446
- }
1447
- }
1388
+ // Note: saveSummaryToLedger() is inherited from BaseWrapper
1448
1389
  /**
1449
1390
  * Check for [[SESSION_END]] blocks and emit 'session-end' event.
1450
1391
  * Allows cloud services to handle session closure without hardcoding storage.
@@ -1466,28 +1407,61 @@ export class PtyWrapper extends EventEmitter {
1466
1407
  });
1467
1408
  }
1468
1409
  /**
1469
- * Reset session-specific state for wrapper reuse.
1470
- * Call this when starting a new session with the same wrapper instance.
1410
+ * Check for auth revocation patterns in output.
1411
+ * Detects when the CLI's OAuth session has been revoked (e.g., user logged in elsewhere).
1412
+ * Emits 'auth_revoked' event and sends notification to relay daemon.
1471
1413
  */
1472
- resetSessionState() {
1473
- this.sessionEndProcessed = false;
1474
- this.lastSummaryRawContent = '';
1475
- this.sessionEndData = undefined;
1414
+ checkAuthRevocation(output) {
1415
+ // Only check once - auth revocation is a terminal state
1416
+ if (this.authRevoked)
1417
+ return;
1418
+ // Throttle checks to avoid performance impact
1419
+ const now = Date.now();
1420
+ if (now - this.lastAuthCheck < this.AUTH_CHECK_INTERVAL)
1421
+ return;
1422
+ this.lastAuthCheck = now;
1423
+ // Determine provider from config
1424
+ const provider = this.config.command || this.cliType || 'claude';
1425
+ // Check for auth revocation patterns
1426
+ const result = detectProviderAuthRevocation(output, provider);
1427
+ if (result.detected && result.confidence !== 'low') {
1428
+ this.authRevoked = true;
1429
+ console.error(`[pty:${this.config.name}] Auth revocation detected: ` +
1430
+ `pattern="${result.pattern}" confidence=${result.confidence} ` +
1431
+ `message="${result.message}"`);
1432
+ // Send notification to relay daemon via system channel
1433
+ if (this.client.state === 'READY') {
1434
+ const authPayload = JSON.stringify({
1435
+ type: 'auth_revoked',
1436
+ agent: this.config.name,
1437
+ provider,
1438
+ message: result.message,
1439
+ confidence: result.confidence,
1440
+ timestamp: new Date().toISOString(),
1441
+ });
1442
+ this.client.sendMessage('#system', authPayload, 'message');
1443
+ }
1444
+ // Emit event for external handlers (cloud services, dashboard)
1445
+ this.emit('auth_revoked', {
1446
+ agentName: this.config.name,
1447
+ provider,
1448
+ message: result.message,
1449
+ confidence: result.confidence,
1450
+ });
1451
+ }
1476
1452
  }
1477
1453
  /**
1478
- * Get injection reliability metrics
1454
+ * Reset auth state (e.g., after re-authentication)
1479
1455
  */
1480
- getInjectionMetrics() {
1481
- return {
1482
- ...this.injectionMetrics,
1483
- successRate: calculateSuccessRate(this.injectionMetrics),
1484
- };
1456
+ resetAuthState() {
1457
+ this.authRevoked = false;
1458
+ this.lastAuthCheck = 0;
1485
1459
  }
1486
1460
  /**
1487
- * Get count of pending messages in queue
1461
+ * Check if auth has been revoked
1488
1462
  */
1489
- get pendingMessageCount() {
1490
- return this.messageQueue.length;
1463
+ isAuthRevoked() {
1464
+ return this.authRevoked;
1491
1465
  }
1492
1466
  }
1493
1467
  //# sourceMappingURL=pty-wrapper.js.map