@aiden-ade/sandbox-agent 0.1.60 → 0.1.61

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 (342) hide show
  1. package/dist/index.cjs +436 -335
  2. package/package.json +3 -3
  3. package/dist/__tests__/binding-switch-git.test.d.ts +0 -2
  4. package/dist/__tests__/binding-switch-git.test.d.ts.map +0 -1
  5. package/dist/__tests__/binding-switch-git.test.js +0 -610
  6. package/dist/__tests__/binding-switch-git.test.js.map +0 -1
  7. package/dist/__tests__/cli-ensure-install.test.d.ts +0 -2
  8. package/dist/__tests__/cli-ensure-install.test.d.ts.map +0 -1
  9. package/dist/__tests__/cli-ensure-install.test.js +0 -109
  10. package/dist/__tests__/cli-ensure-install.test.js.map +0 -1
  11. package/dist/__tests__/cli-executable.test.d.ts +0 -2
  12. package/dist/__tests__/cli-executable.test.d.ts.map +0 -1
  13. package/dist/__tests__/cli-executable.test.js +0 -129
  14. package/dist/__tests__/cli-executable.test.js.map +0 -1
  15. package/dist/__tests__/cli-help.test.d.ts +0 -2
  16. package/dist/__tests__/cli-help.test.d.ts.map +0 -1
  17. package/dist/__tests__/cli-help.test.js +0 -34
  18. package/dist/__tests__/cli-help.test.js.map +0 -1
  19. package/dist/__tests__/computer-readiness.test.d.ts +0 -2
  20. package/dist/__tests__/computer-readiness.test.d.ts.map +0 -1
  21. package/dist/__tests__/computer-readiness.test.js +0 -63
  22. package/dist/__tests__/computer-readiness.test.js.map +0 -1
  23. package/dist/__tests__/core-agent-workflow-context.test.d.ts +0 -2
  24. package/dist/__tests__/core-agent-workflow-context.test.d.ts.map +0 -1
  25. package/dist/__tests__/core-agent-workflow-context.test.js +0 -139
  26. package/dist/__tests__/core-agent-workflow-context.test.js.map +0 -1
  27. package/dist/__tests__/daemon-reconcile-ask.test.d.ts +0 -2
  28. package/dist/__tests__/daemon-reconcile-ask.test.d.ts.map +0 -1
  29. package/dist/__tests__/daemon-reconcile-ask.test.js +0 -86
  30. package/dist/__tests__/daemon-reconcile-ask.test.js.map +0 -1
  31. package/dist/__tests__/daemon-socket.integration.test.d.ts +0 -2
  32. package/dist/__tests__/daemon-socket.integration.test.d.ts.map +0 -1
  33. package/dist/__tests__/daemon-socket.integration.test.js +0 -450
  34. package/dist/__tests__/daemon-socket.integration.test.js.map +0 -1
  35. package/dist/__tests__/daemon.test.d.ts +0 -2
  36. package/dist/__tests__/daemon.test.d.ts.map +0 -1
  37. package/dist/__tests__/daemon.test.js +0 -3975
  38. package/dist/__tests__/daemon.test.js.map +0 -1
  39. package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts +0 -2
  40. package/dist/__tests__/ensure-shared-checkout-branch.test.d.ts.map +0 -1
  41. package/dist/__tests__/ensure-shared-checkout-branch.test.js +0 -129
  42. package/dist/__tests__/ensure-shared-checkout-branch.test.js.map +0 -1
  43. package/dist/__tests__/event-outbox-persist-failure.test.d.ts +0 -2
  44. package/dist/__tests__/event-outbox-persist-failure.test.d.ts.map +0 -1
  45. package/dist/__tests__/event-outbox-persist-failure.test.js +0 -84
  46. package/dist/__tests__/event-outbox-persist-failure.test.js.map +0 -1
  47. package/dist/__tests__/event-outbox.test.d.ts +0 -2
  48. package/dist/__tests__/event-outbox.test.d.ts.map +0 -1
  49. package/dist/__tests__/event-outbox.test.js +0 -256
  50. package/dist/__tests__/event-outbox.test.js.map +0 -1
  51. package/dist/__tests__/fake-provider-cli.test.d.ts +0 -2
  52. package/dist/__tests__/fake-provider-cli.test.d.ts.map +0 -1
  53. package/dist/__tests__/fake-provider-cli.test.js +0 -46
  54. package/dist/__tests__/fake-provider-cli.test.js.map +0 -1
  55. package/dist/__tests__/generated-images.test.d.ts +0 -2
  56. package/dist/__tests__/generated-images.test.d.ts.map +0 -1
  57. package/dist/__tests__/generated-images.test.js +0 -132
  58. package/dist/__tests__/generated-images.test.js.map +0 -1
  59. package/dist/__tests__/lifecycle-logger.test.d.ts +0 -2
  60. package/dist/__tests__/lifecycle-logger.test.d.ts.map +0 -1
  61. package/dist/__tests__/lifecycle-logger.test.js +0 -49
  62. package/dist/__tests__/lifecycle-logger.test.js.map +0 -1
  63. package/dist/__tests__/local-skill-scan.test.d.ts +0 -2
  64. package/dist/__tests__/local-skill-scan.test.d.ts.map +0 -1
  65. package/dist/__tests__/local-skill-scan.test.js +0 -91
  66. package/dist/__tests__/local-skill-scan.test.js.map +0 -1
  67. package/dist/__tests__/local-workspace-migration.test.d.ts +0 -2
  68. package/dist/__tests__/local-workspace-migration.test.d.ts.map +0 -1
  69. package/dist/__tests__/local-workspace-migration.test.js +0 -195
  70. package/dist/__tests__/local-workspace-migration.test.js.map +0 -1
  71. package/dist/__tests__/mcp-inspect-timeout.test.d.ts +0 -2
  72. package/dist/__tests__/mcp-inspect-timeout.test.d.ts.map +0 -1
  73. package/dist/__tests__/mcp-inspect-timeout.test.js +0 -97
  74. package/dist/__tests__/mcp-inspect-timeout.test.js.map +0 -1
  75. package/dist/__tests__/mcp-readiness.test.d.ts +0 -2
  76. package/dist/__tests__/mcp-readiness.test.d.ts.map +0 -1
  77. package/dist/__tests__/mcp-readiness.test.js +0 -267
  78. package/dist/__tests__/mcp-readiness.test.js.map +0 -1
  79. package/dist/__tests__/mcp-registration-cli.test.d.ts +0 -2
  80. package/dist/__tests__/mcp-registration-cli.test.d.ts.map +0 -1
  81. package/dist/__tests__/mcp-registration-cli.test.js +0 -71
  82. package/dist/__tests__/mcp-registration-cli.test.js.map +0 -1
  83. package/dist/__tests__/mcp-registration.test.d.ts +0 -2
  84. package/dist/__tests__/mcp-registration.test.d.ts.map +0 -1
  85. package/dist/__tests__/mcp-registration.test.js +0 -426
  86. package/dist/__tests__/mcp-registration.test.js.map +0 -1
  87. package/dist/__tests__/model-scan-runner.test.d.ts +0 -2
  88. package/dist/__tests__/model-scan-runner.test.d.ts.map +0 -1
  89. package/dist/__tests__/model-scan-runner.test.js +0 -67
  90. package/dist/__tests__/model-scan-runner.test.js.map +0 -1
  91. package/dist/__tests__/network-diagnostics.test.d.ts +0 -2
  92. package/dist/__tests__/network-diagnostics.test.d.ts.map +0 -1
  93. package/dist/__tests__/network-diagnostics.test.js +0 -26
  94. package/dist/__tests__/network-diagnostics.test.js.map +0 -1
  95. package/dist/__tests__/observable-map.test.d.ts +0 -2
  96. package/dist/__tests__/observable-map.test.d.ts.map +0 -1
  97. package/dist/__tests__/observable-map.test.js +0 -54
  98. package/dist/__tests__/observable-map.test.js.map +0 -1
  99. package/dist/__tests__/provider-auth-preflight.test.d.ts +0 -2
  100. package/dist/__tests__/provider-auth-preflight.test.d.ts.map +0 -1
  101. package/dist/__tests__/provider-auth-preflight.test.js +0 -123
  102. package/dist/__tests__/provider-auth-preflight.test.js.map +0 -1
  103. package/dist/__tests__/provider-model-discovery.test.d.ts +0 -2
  104. package/dist/__tests__/provider-model-discovery.test.d.ts.map +0 -1
  105. package/dist/__tests__/provider-model-discovery.test.js +0 -472
  106. package/dist/__tests__/provider-model-discovery.test.js.map +0 -1
  107. package/dist/__tests__/remove-worktrees-if-clean.test.d.ts +0 -2
  108. package/dist/__tests__/remove-worktrees-if-clean.test.d.ts.map +0 -1
  109. package/dist/__tests__/remove-worktrees-if-clean.test.js +0 -221
  110. package/dist/__tests__/remove-worktrees-if-clean.test.js.map +0 -1
  111. package/dist/__tests__/resume-fallback-env.test.d.ts +0 -2
  112. package/dist/__tests__/resume-fallback-env.test.d.ts.map +0 -1
  113. package/dist/__tests__/resume-fallback-env.test.js +0 -28
  114. package/dist/__tests__/resume-fallback-env.test.js.map +0 -1
  115. package/dist/__tests__/run-journal.test.d.ts +0 -2
  116. package/dist/__tests__/run-journal.test.d.ts.map +0 -1
  117. package/dist/__tests__/run-journal.test.js +0 -121
  118. package/dist/__tests__/run-journal.test.js.map +0 -1
  119. package/dist/__tests__/run-start-gate.test.d.ts +0 -2
  120. package/dist/__tests__/run-start-gate.test.d.ts.map +0 -1
  121. package/dist/__tests__/run-start-gate.test.js +0 -29
  122. package/dist/__tests__/run-start-gate.test.js.map +0 -1
  123. package/dist/__tests__/runtime-capabilities-sync.test.d.ts +0 -2
  124. package/dist/__tests__/runtime-capabilities-sync.test.d.ts.map +0 -1
  125. package/dist/__tests__/runtime-capabilities-sync.test.js +0 -66
  126. package/dist/__tests__/runtime-capabilities-sync.test.js.map +0 -1
  127. package/dist/__tests__/runtime-config.test.d.ts +0 -2
  128. package/dist/__tests__/runtime-config.test.d.ts.map +0 -1
  129. package/dist/__tests__/runtime-config.test.js +0 -102
  130. package/dist/__tests__/runtime-config.test.js.map +0 -1
  131. package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts +0 -2
  132. package/dist/__tests__/runtime-presenter-heartbeat.test.d.ts.map +0 -1
  133. package/dist/__tests__/runtime-presenter-heartbeat.test.js +0 -159
  134. package/dist/__tests__/runtime-presenter-heartbeat.test.js.map +0 -1
  135. package/dist/__tests__/sandbox-outbox.test.d.ts +0 -2
  136. package/dist/__tests__/sandbox-outbox.test.d.ts.map +0 -1
  137. package/dist/__tests__/sandbox-outbox.test.js +0 -214
  138. package/dist/__tests__/sandbox-outbox.test.js.map +0 -1
  139. package/dist/__tests__/sandbox-workflow-context.test.d.ts +0 -2
  140. package/dist/__tests__/sandbox-workflow-context.test.d.ts.map +0 -1
  141. package/dist/__tests__/sandbox-workflow-context.test.js +0 -396
  142. package/dist/__tests__/sandbox-workflow-context.test.js.map +0 -1
  143. package/dist/__tests__/service-manager.test.d.ts +0 -2
  144. package/dist/__tests__/service-manager.test.d.ts.map +0 -1
  145. package/dist/__tests__/service-manager.test.js +0 -50
  146. package/dist/__tests__/service-manager.test.js.map +0 -1
  147. package/dist/__tests__/sleep-inhibitor.test.d.ts +0 -2
  148. package/dist/__tests__/sleep-inhibitor.test.d.ts.map +0 -1
  149. package/dist/__tests__/sleep-inhibitor.test.js +0 -236
  150. package/dist/__tests__/sleep-inhibitor.test.js.map +0 -1
  151. package/dist/__tests__/status-local-workspace.test.d.ts +0 -2
  152. package/dist/__tests__/status-local-workspace.test.d.ts.map +0 -1
  153. package/dist/__tests__/status-local-workspace.test.js +0 -121
  154. package/dist/__tests__/status-local-workspace.test.js.map +0 -1
  155. package/dist/__tests__/suspension-detector.test.d.ts +0 -2
  156. package/dist/__tests__/suspension-detector.test.d.ts.map +0 -1
  157. package/dist/__tests__/suspension-detector.test.js +0 -112
  158. package/dist/__tests__/suspension-detector.test.js.map +0 -1
  159. package/dist/__tests__/web-presenter-parent-events.test.d.ts +0 -2
  160. package/dist/__tests__/web-presenter-parent-events.test.d.ts.map +0 -1
  161. package/dist/__tests__/web-presenter-parent-events.test.js +0 -130
  162. package/dist/__tests__/web-presenter-parent-events.test.js.map +0 -1
  163. package/dist/__tests__/workspace-relocation.test.d.ts +0 -2
  164. package/dist/__tests__/workspace-relocation.test.d.ts.map +0 -1
  165. package/dist/__tests__/workspace-relocation.test.js +0 -66
  166. package/dist/__tests__/workspace-relocation.test.js.map +0 -1
  167. package/dist/__tests__/workspace-run-lease.test.d.ts +0 -2
  168. package/dist/__tests__/workspace-run-lease.test.d.ts.map +0 -1
  169. package/dist/__tests__/workspace-run-lease.test.js +0 -230
  170. package/dist/__tests__/workspace-run-lease.test.js.map +0 -1
  171. package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts +0 -2
  172. package/dist/__tests__/ws-client-heartbeat-volatile.test.d.ts.map +0 -1
  173. package/dist/__tests__/ws-client-heartbeat-volatile.test.js +0 -61
  174. package/dist/__tests__/ws-client-heartbeat-volatile.test.js.map +0 -1
  175. package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts +0 -2
  176. package/dist/__tests__/ws-client-heartbeat.integration.test.d.ts.map +0 -1
  177. package/dist/__tests__/ws-client-heartbeat.integration.test.js +0 -109
  178. package/dist/__tests__/ws-client-heartbeat.integration.test.js.map +0 -1
  179. package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts +0 -2
  180. package/dist/__tests__/ws-client-user-message-ack.integration.test.d.ts.map +0 -1
  181. package/dist/__tests__/ws-client-user-message-ack.integration.test.js +0 -167
  182. package/dist/__tests__/ws-client-user-message-ack.integration.test.js.map +0 -1
  183. package/dist/aiden-system-prompt.d.ts +0 -6
  184. package/dist/aiden-system-prompt.d.ts.map +0 -1
  185. package/dist/aiden-system-prompt.js +0 -6
  186. package/dist/aiden-system-prompt.js.map +0 -1
  187. package/dist/binding-switch-git.d.ts +0 -26
  188. package/dist/binding-switch-git.d.ts.map +0 -1
  189. package/dist/binding-switch-git.js +0 -973
  190. package/dist/binding-switch-git.js.map +0 -1
  191. package/dist/cli-ensure-install.d.ts +0 -39
  192. package/dist/cli-ensure-install.d.ts.map +0 -1
  193. package/dist/cli-ensure-install.js +0 -133
  194. package/dist/cli-ensure-install.js.map +0 -1
  195. package/dist/cli-executable.d.ts +0 -97
  196. package/dist/cli-executable.d.ts.map +0 -1
  197. package/dist/cli-executable.js +0 -432
  198. package/dist/cli-executable.js.map +0 -1
  199. package/dist/cli-help.d.ts +0 -7
  200. package/dist/cli-help.d.ts.map +0 -1
  201. package/dist/cli-help.js +0 -49
  202. package/dist/cli-help.js.map +0 -1
  203. package/dist/computer-readiness.d.ts +0 -42
  204. package/dist/computer-readiness.d.ts.map +0 -1
  205. package/dist/computer-readiness.js +0 -191
  206. package/dist/computer-readiness.js.map +0 -1
  207. package/dist/core-agent.d.ts +0 -47
  208. package/dist/core-agent.d.ts.map +0 -1
  209. package/dist/core-agent.js +0 -364
  210. package/dist/core-agent.js.map +0 -1
  211. package/dist/daemon.d.ts +0 -392
  212. package/dist/daemon.d.ts.map +0 -1
  213. package/dist/daemon.js +0 -4711
  214. package/dist/daemon.js.map +0 -1
  215. package/dist/event-outbox.d.ts +0 -83
  216. package/dist/event-outbox.d.ts.map +0 -1
  217. package/dist/event-outbox.js +0 -440
  218. package/dist/event-outbox.js.map +0 -1
  219. package/dist/fake-provider-cli.d.ts +0 -13
  220. package/dist/fake-provider-cli.d.ts.map +0 -1
  221. package/dist/fake-provider-cli.js +0 -53
  222. package/dist/fake-provider-cli.js.map +0 -1
  223. package/dist/generated-images.d.ts +0 -2
  224. package/dist/generated-images.d.ts.map +0 -1
  225. package/dist/generated-images.js +0 -2
  226. package/dist/generated-images.js.map +0 -1
  227. package/dist/index.d.ts +0 -6
  228. package/dist/index.d.ts.map +0 -1
  229. package/dist/index.js +0 -209
  230. package/dist/index.js.map +0 -1
  231. package/dist/lifecycle-logger.d.ts +0 -25
  232. package/dist/lifecycle-logger.d.ts.map +0 -1
  233. package/dist/lifecycle-logger.js +0 -73
  234. package/dist/lifecycle-logger.js.map +0 -1
  235. package/dist/local-skill-scan.d.ts +0 -21
  236. package/dist/local-skill-scan.d.ts.map +0 -1
  237. package/dist/local-skill-scan.js +0 -109
  238. package/dist/local-skill-scan.js.map +0 -1
  239. package/dist/local-workspace-migration.d.ts +0 -68
  240. package/dist/local-workspace-migration.d.ts.map +0 -1
  241. package/dist/local-workspace-migration.js +0 -157
  242. package/dist/local-workspace-migration.js.map +0 -1
  243. package/dist/mcp-readiness.d.ts +0 -59
  244. package/dist/mcp-readiness.d.ts.map +0 -1
  245. package/dist/mcp-readiness.js +0 -202
  246. package/dist/mcp-readiness.js.map +0 -1
  247. package/dist/mcp-registration.d.ts +0 -75
  248. package/dist/mcp-registration.d.ts.map +0 -1
  249. package/dist/mcp-registration.js +0 -563
  250. package/dist/mcp-registration.js.map +0 -1
  251. package/dist/model-scan-runner.d.ts +0 -15
  252. package/dist/model-scan-runner.d.ts.map +0 -1
  253. package/dist/model-scan-runner.js +0 -51
  254. package/dist/model-scan-runner.js.map +0 -1
  255. package/dist/network-diagnostics.d.ts +0 -8
  256. package/dist/network-diagnostics.d.ts.map +0 -1
  257. package/dist/network-diagnostics.js +0 -56
  258. package/dist/network-diagnostics.js.map +0 -1
  259. package/dist/observable-map.d.ts +0 -25
  260. package/dist/observable-map.d.ts.map +0 -1
  261. package/dist/observable-map.js +0 -42
  262. package/dist/observable-map.js.map +0 -1
  263. package/dist/provider-auth-preflight.d.ts +0 -22
  264. package/dist/provider-auth-preflight.d.ts.map +0 -1
  265. package/dist/provider-auth-preflight.js +0 -110
  266. package/dist/provider-auth-preflight.js.map +0 -1
  267. package/dist/provider-model-discovery.d.ts +0 -38
  268. package/dist/provider-model-discovery.d.ts.map +0 -1
  269. package/dist/provider-model-discovery.js +0 -519
  270. package/dist/provider-model-discovery.js.map +0 -1
  271. package/dist/resume-fallback-env.d.ts +0 -20
  272. package/dist/resume-fallback-env.d.ts.map +0 -1
  273. package/dist/resume-fallback-env.js +0 -30
  274. package/dist/resume-fallback-env.js.map +0 -1
  275. package/dist/run-journal.d.ts +0 -53
  276. package/dist/run-journal.d.ts.map +0 -1
  277. package/dist/run-journal.js +0 -193
  278. package/dist/run-journal.js.map +0 -1
  279. package/dist/run-start-gate.d.ts +0 -9
  280. package/dist/run-start-gate.d.ts.map +0 -1
  281. package/dist/run-start-gate.js +0 -24
  282. package/dist/run-start-gate.js.map +0 -1
  283. package/dist/runtime-backends.d.ts +0 -2
  284. package/dist/runtime-backends.d.ts.map +0 -1
  285. package/dist/runtime-backends.js +0 -2
  286. package/dist/runtime-backends.js.map +0 -1
  287. package/dist/runtime-capabilities-sync.d.ts +0 -33
  288. package/dist/runtime-capabilities-sync.d.ts.map +0 -1
  289. package/dist/runtime-capabilities-sync.js +0 -56
  290. package/dist/runtime-capabilities-sync.js.map +0 -1
  291. package/dist/runtime-config.d.ts +0 -24
  292. package/dist/runtime-config.d.ts.map +0 -1
  293. package/dist/runtime-config.js +0 -124
  294. package/dist/runtime-config.js.map +0 -1
  295. package/dist/sandbox-outbox.d.ts +0 -122
  296. package/dist/sandbox-outbox.d.ts.map +0 -1
  297. package/dist/sandbox-outbox.js +0 -180
  298. package/dist/sandbox-outbox.js.map +0 -1
  299. package/dist/sandbox.d.ts +0 -44
  300. package/dist/sandbox.d.ts.map +0 -1
  301. package/dist/sandbox.js +0 -438
  302. package/dist/sandbox.js.map +0 -1
  303. package/dist/service-manager.d.ts +0 -28
  304. package/dist/service-manager.d.ts.map +0 -1
  305. package/dist/service-manager.js +0 -259
  306. package/dist/service-manager.js.map +0 -1
  307. package/dist/sleep-inhibitor.d.ts +0 -111
  308. package/dist/sleep-inhibitor.d.ts.map +0 -1
  309. package/dist/sleep-inhibitor.js +0 -412
  310. package/dist/sleep-inhibitor.js.map +0 -1
  311. package/dist/suspension-detector.d.ts +0 -48
  312. package/dist/suspension-detector.d.ts.map +0 -1
  313. package/dist/suspension-detector.js +0 -89
  314. package/dist/suspension-detector.js.map +0 -1
  315. package/dist/types.d.ts +0 -6
  316. package/dist/types.d.ts.map +0 -1
  317. package/dist/types.js +0 -6
  318. package/dist/types.js.map +0 -1
  319. package/dist/updater.d.ts +0 -15
  320. package/dist/updater.d.ts.map +0 -1
  321. package/dist/updater.js +0 -50
  322. package/dist/updater.js.map +0 -1
  323. package/dist/version.d.ts +0 -2
  324. package/dist/version.d.ts.map +0 -1
  325. package/dist/version.js +0 -2
  326. package/dist/version.js.map +0 -1
  327. package/dist/web-presenter.d.ts +0 -55
  328. package/dist/web-presenter.d.ts.map +0 -1
  329. package/dist/web-presenter.js +0 -265
  330. package/dist/web-presenter.js.map +0 -1
  331. package/dist/workspace-relocation.d.ts +0 -22
  332. package/dist/workspace-relocation.d.ts.map +0 -1
  333. package/dist/workspace-relocation.js +0 -90
  334. package/dist/workspace-relocation.js.map +0 -1
  335. package/dist/workspace-run-lease.d.ts +0 -97
  336. package/dist/workspace-run-lease.d.ts.map +0 -1
  337. package/dist/workspace-run-lease.js +0 -241
  338. package/dist/workspace-run-lease.js.map +0 -1
  339. package/dist/ws-client.d.ts +0 -194
  340. package/dist/ws-client.d.ts.map +0 -1
  341. package/dist/ws-client.js +0 -282
  342. package/dist/ws-client.js.map +0 -1
@@ -1,241 +0,0 @@
1
- import { spawnSync } from "node:child_process";
2
- import { existsSync, realpathSync, statSync } from "node:fs";
3
- import { isAbsolute, resolve } from "node:path";
4
- import { getDaemonCliEnvironment } from "./cli-executable.js";
5
- import { normalizeRepositoryIdentity } from "./workspace-relocation.js";
6
- export const WORKSPACE_LEASE_CHECK_INTERVAL_MS = 1_000;
7
- /**
8
- * Git probe timeout. A single `git rev-parse` can overrun a tight 2s window under
9
- * OS timer coalescing (backgrounded app / App Nap) or disk-IO contention even
10
- * though the checkout is perfectly healthy, which the monitor would misread as a
11
- * vanished workspace. Kept configurable; the consecutive-failure gate in the
12
- * daemon monitor is the primary defense against a single slow probe.
13
- */
14
- function parsePositiveMs(value, fallback) {
15
- const parsed = value ? Number(value) : Number.NaN;
16
- return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
17
- }
18
- export const WORKSPACE_LEASE_GIT_TIMEOUT_MS = parsePositiveMs(process.env.ALAN_WORKSPACE_LEASE_GIT_TIMEOUT_MS, 2_000);
19
- function gitValue(cwd, args) {
20
- const result = spawnSync("git", ["-C", cwd, ...args], {
21
- encoding: "utf8",
22
- env: getDaemonCliEnvironment(),
23
- timeout: WORKSPACE_LEASE_GIT_TIMEOUT_MS,
24
- });
25
- if (result.status !== 0)
26
- return null;
27
- return result.stdout.trim() || null;
28
- }
29
- function filesystemIdentity(path) {
30
- const canonicalPath = realpathSync.native(path);
31
- const stat = statSync(canonicalPath);
32
- return `${canonicalPath}:${stat.dev}:${stat.ino}`;
33
- }
34
- function resolveGitPath(workspacePath, value) {
35
- return isAbsolute(value) ? value : resolve(workspacePath, value);
36
- }
37
- const DEFAULT_PROBE = {
38
- snapshot: (workspacePath) => {
39
- try {
40
- const canonicalWorkspacePath = realpathSync.native(resolve(workspacePath));
41
- const repositoryRoot = gitValue(canonicalWorkspacePath, ["rev-parse", "--show-toplevel"]);
42
- const gitDirectory = gitValue(canonicalWorkspacePath, ["rev-parse", "--git-dir"]);
43
- const commonDirectory = gitValue(canonicalWorkspacePath, ["rev-parse", "--git-common-dir"]);
44
- const branch = gitValue(canonicalWorkspacePath, ["rev-parse", "--abbrev-ref", "HEAD"]);
45
- if (!repositoryRoot || !gitDirectory || !commonDirectory || !branch)
46
- return null;
47
- const remote = gitValue(canonicalWorkspacePath, ["config", "--get", "remote.origin.url"]);
48
- const remoteIdentity = remote ? normalizeRepositoryIdentity(remote) : null;
49
- return {
50
- workspacePath: resolve(workspacePath),
51
- workspaceIdentity: filesystemIdentity(canonicalWorkspacePath),
52
- repositoryIdentity: `${filesystemIdentity(resolveGitPath(canonicalWorkspacePath, commonDirectory))}:${remoteIdentity ?? "local"}`,
53
- worktreeIdentity: filesystemIdentity(resolveGitPath(canonicalWorkspacePath, gitDirectory)),
54
- branch,
55
- };
56
- }
57
- catch {
58
- return null;
59
- }
60
- },
61
- pathExists: (workspacePath) => {
62
- try {
63
- return existsSync(resolve(workspacePath));
64
- }
65
- catch {
66
- // A permission/IO error while stat-ing is not proof the path is gone —
67
- // treat as "present" (unknown) so it is classified retryable, not fatal.
68
- return true;
69
- }
70
- },
71
- };
72
- function unavailableFailure(target) {
73
- return {
74
- code: "workspace_lease_unavailable",
75
- message: "The workspace or Git checkout became unavailable while the run was active. Restore it and start a new run.",
76
- workspacePath: target.workspacePath,
77
- expectedBranch: target.expectedBranch,
78
- };
79
- }
80
- function branchFailure(target, expectedBranch, actualBranch) {
81
- return {
82
- code: "workspace_lease_branch_changed",
83
- message: `The workspace branch changed from ${expectedBranch} to ${actualBranch} while the run was active. Restore ${expectedBranch} and start a new run.`,
84
- workspacePath: target.workspacePath,
85
- expectedBranch,
86
- actualBranch,
87
- };
88
- }
89
- export class WorkspaceRunLease {
90
- captured;
91
- probe;
92
- constructor(captured, probe) {
93
- this.captured = captured;
94
- this.probe = probe;
95
- }
96
- static capture(targets, probe = DEFAULT_PROBE) {
97
- const captured = [];
98
- for (const target of targets) {
99
- const normalizedTarget = { ...target, workspacePath: resolve(target.workspacePath) };
100
- const identity = probe.snapshot(normalizedTarget.workspacePath);
101
- if (!identity)
102
- return { lease: null, failure: unavailableFailure(normalizedTarget) };
103
- if (normalizedTarget.expectedBranch && identity.branch !== normalizedTarget.expectedBranch) {
104
- return {
105
- lease: null,
106
- failure: branchFailure(normalizedTarget, normalizedTarget.expectedBranch, identity.branch),
107
- };
108
- }
109
- captured.push({ target: normalizedTarget, identity });
110
- }
111
- return {
112
- lease: captured.length > 0 ? new WorkspaceRunLease(captured, probe) : null,
113
- failure: null,
114
- };
115
- }
116
- /**
117
- * Classify the lease state for the run monitor.
118
- *
119
- * - `transient: true` — a null snapshot while the workspace path still exists:
120
- * the git probe timed out or failed transiently (OS throttling / IO
121
- * contention), NOT a vanished checkout. The monitor should retry (require N
122
- * consecutive transient failures) before declaring the workspace lost.
123
- * - `transient: false` — a definitive change: the path is genuinely missing
124
- * (ENOENT), or the workspace/repository/worktree/branch identity changed.
125
- * These are real and fail fast.
126
- */
127
- verifyDetailed() {
128
- for (const captured of this.captured) {
129
- const current = this.probe.snapshot(captured.target.workspacePath);
130
- if (!current) {
131
- const pathGone = this.probe.pathExists?.(captured.target.workspacePath) === false;
132
- return { failure: unavailableFailure(captured.target), transient: !pathGone };
133
- }
134
- if (current.workspaceIdentity !== captured.identity.workspaceIdentity) {
135
- return {
136
- failure: {
137
- code: "workspace_lease_path_changed",
138
- message: "The selected workspace folder changed while the run was active. The run stopped before continuing; choose the correct folder and start a new run.",
139
- workspacePath: captured.target.workspacePath,
140
- expectedBranch: captured.identity.branch,
141
- actualBranch: current.branch,
142
- },
143
- transient: false,
144
- };
145
- }
146
- if (current.repositoryIdentity !== captured.identity.repositoryIdentity ||
147
- current.worktreeIdentity !== captured.identity.worktreeIdentity) {
148
- return {
149
- failure: {
150
- code: "workspace_lease_repository_changed",
151
- message: "The workspace now points to a different repository or worktree. The run stopped before continuing; restore the original checkout and start a new run.",
152
- workspacePath: captured.target.workspacePath,
153
- expectedBranch: captured.identity.branch,
154
- actualBranch: current.branch,
155
- },
156
- transient: false,
157
- };
158
- }
159
- if (current.branch !== captured.identity.branch) {
160
- return {
161
- failure: branchFailure(captured.target, captured.identity.branch, current.branch),
162
- transient: false,
163
- };
164
- }
165
- }
166
- return { failure: null, transient: false };
167
- }
168
- verify() {
169
- for (const captured of this.captured) {
170
- const current = this.probe.snapshot(captured.target.workspacePath);
171
- if (!current)
172
- return unavailableFailure(captured.target);
173
- if (current.workspaceIdentity !== captured.identity.workspaceIdentity) {
174
- return {
175
- code: "workspace_lease_path_changed",
176
- message: "The selected workspace folder changed while the run was active. The run stopped before continuing; choose the correct folder and start a new run.",
177
- workspacePath: captured.target.workspacePath,
178
- expectedBranch: captured.identity.branch,
179
- actualBranch: current.branch,
180
- };
181
- }
182
- if (current.repositoryIdentity !== captured.identity.repositoryIdentity ||
183
- current.worktreeIdentity !== captured.identity.worktreeIdentity) {
184
- return {
185
- code: "workspace_lease_repository_changed",
186
- message: "The workspace now points to a different repository or worktree. The run stopped before continuing; restore the original checkout and start a new run.",
187
- workspacePath: captured.target.workspacePath,
188
- expectedBranch: captured.identity.branch,
189
- actualBranch: current.branch,
190
- };
191
- }
192
- if (current.branch !== captured.identity.branch) {
193
- return branchFailure(captured.target, captured.identity.branch, current.branch);
194
- }
195
- }
196
- return null;
197
- }
198
- }
199
- export const FRESH_LEASE_MONITOR_STATE = {
200
- transientStreak: 0,
201
- nextCheckAtMs: 0,
202
- };
203
- /** Whether the monitor should probe this tick, or is still inside a backoff window. */
204
- export function isLeaseCheckDue(state, nowMs) {
205
- return nowMs >= state.nextCheckAtMs;
206
- }
207
- /**
208
- * Fold a `verifyDetailed()` result into the monitor state.
209
- *
210
- * - No failure → reset the streak, resume the normal cadence (`ok`).
211
- * - Definitive failure → `fail` immediately (path/repo/branch changed, path gone).
212
- * - Transient failure below the streak cap → `transient`: keep the run alive, bump
213
- * the streak, and back the next probe off exponentially (capped). This is what
214
- * stops a single slow/coalesced `git` probe from false-failing a healthy run.
215
- * - Transient failure reaching the cap → `fail` (the workspace really is gone).
216
- */
217
- export function applyLeaseCheckResult(input) {
218
- const { detailed, nowMs, policy } = input;
219
- if (!detailed.failure) {
220
- return { action: "ok", state: { ...FRESH_LEASE_MONITOR_STATE } };
221
- }
222
- if (!detailed.transient) {
223
- return { action: "fail", state: input.state, failure: detailed.failure };
224
- }
225
- const transientStreak = input.state.transientStreak + 1;
226
- if (transientStreak >= policy.maxTransientFailures) {
227
- return {
228
- action: "fail",
229
- state: { transientStreak, nextCheckAtMs: input.state.nextCheckAtMs },
230
- failure: detailed.failure,
231
- };
232
- }
233
- const backoffMs = Math.min(policy.backoffBaseMs * 2 ** (transientStreak - 1), policy.backoffMaxMs);
234
- return {
235
- action: "transient",
236
- state: { transientStreak, nextCheckAtMs: nowMs + backoffMs },
237
- failure: detailed.failure,
238
- backoffMs,
239
- };
240
- }
241
- //# sourceMappingURL=workspace-run-lease.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace-run-lease.js","sourceRoot":"","sources":["../src/workspace-run-lease.ts"],"names":[],"mappings":"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"}
@@ -1,194 +0,0 @@
1
- import type { AlanMcpRegistration, TerminalRef, TerminalSnapshot } from "@alan-ai/shared/agent";
2
- import { type AgentRunState } from "@alan-ai/shared/agent-liveness";
3
- import type { AgentLifecycleContext, AgentLifecycleLogger } from "./lifecycle-logger.js";
4
- import type { AgentEvent } from "./types.js";
5
- export interface ResolvedImage {
6
- id: string;
7
- data: string;
8
- mimeType: string;
9
- filename: string;
10
- }
11
- export interface ResolvedFileAttachment {
12
- id: string;
13
- data: string;
14
- mimeType: string;
15
- filename: string;
16
- size: number;
17
- label: string;
18
- }
19
- export interface UserMessagePayload {
20
- text: string;
21
- images?: ResolvedImage[];
22
- files?: ResolvedFileAttachment[];
23
- providerSessionId?: string;
24
- /**
25
- * Compact recent transcript the runner injects when a `providerSessionId`
26
- * resume fails on this turn (provider session store lost/corrupt on the
27
- * machine). Server-computed per resume dispatch (buildSharedAgentPayload);
28
- * carried here so interactive multi-turn resumes rehydrate with context
29
- * instead of amnesiac. Only meaningful alongside `providerSessionId`.
30
- */
31
- resumeFallbackContext?: string;
32
- backendKind?: string;
33
- agentId?: string;
34
- agentPrompt?: string;
35
- selectedModel?: string;
36
- selectedContextWindow?: string | null;
37
- selectedEffortLevel?: string | null;
38
- mode?: string;
39
- /** Structured task metadata for system prompt injection. */
40
- taskMeta?: {
41
- id: string;
42
- title: string;
43
- description: string | null;
44
- status: string;
45
- priority: string;
46
- labels: string[] | null;
47
- assignees: Array<{
48
- name: string | null;
49
- email: string;
50
- }>;
51
- descriptionAttachmentIds?: Array<{
52
- id: string;
53
- filename: string;
54
- }>;
55
- linkedResources?: Array<{
56
- id: string;
57
- type: "document" | "whiteboard" | "url";
58
- title: string;
59
- url?: string;
60
- }>;
61
- };
62
- /** Structured pull-request metadata for PR Review Agent sessions. */
63
- prMeta?: {
64
- prNumber: number;
65
- owner: string;
66
- repo: string;
67
- title: string;
68
- body?: string;
69
- baseBranch: string;
70
- headBranch: string;
71
- author?: string;
72
- state: "open" | "closed" | "merged";
73
- mergeable?: boolean | null;
74
- labels: string[];
75
- changedFilesCount?: number;
76
- additions?: number;
77
- deletions?: number;
78
- changedFiles?: Array<{
79
- path: string;
80
- status: string;
81
- additions: number;
82
- deletions: number;
83
- }>;
84
- linkedTaskReadableId?: string | null;
85
- linkedTaskId?: string | null;
86
- linkedTaskNumber?: number | null;
87
- htmlUrl?: string;
88
- };
89
- /** Workflow tool allowlist (present when triggered from a workflow). */
90
- workflowTools?: Array<{
91
- type: string;
92
- id: string;
93
- }>;
94
- /**
95
- * Per-run Alan MCP registration (fresh PAT + run-scoped headers). When present
96
- * the sandbox agent writes/refreshes the backend's MCP config before spawning
97
- * the CLI instead of relying solely on provision-time injection.
98
- */
99
- alanMcp?: AlanMcpRegistration;
100
- /** Agent run ID for status tracking. */
101
- runId?: string;
102
- /** Message ID that triggered this run. */
103
- messageId?: string;
104
- /** Maximum number of agent iterations. */
105
- maxIterations?: number;
106
- /** Task ID for MCP artifact creation. */
107
- taskId?: string;
108
- /** Cloud environment ID for telemetry correlation. */
109
- cloudEnvironmentId?: string;
110
- /** Conversation ID for MCP artifact creation. */
111
- conversationId?: string;
112
- /** Role attached to this conversation. */
113
- /** Team ID of the active team context — injected into system prompt for MCP calls. */
114
- teamId?: string;
115
- /** User who initiated the run. */
116
- currentUser?: {
117
- id: string;
118
- name: string | null;
119
- email: string;
120
- };
121
- terminalContextRefs?: TerminalRef[];
122
- terminalSnapshots?: TerminalSnapshot[];
123
- }
124
- export interface WSClientCallbacks {
125
- /**
126
- * Handle an incoming user message. May be synchronous or return a promise —
127
- * either way, the `user_message` socket.io ack is held until this settles
128
- * (see the handler in `setupListeners`), so the server only sees `ok:true`
129
- * once the message is durably handed off (e.g. enqueued on the run loop),
130
- * not merely received. Throwing or rejecting acks `{ ok: false }` so the
131
- * server's delivery-failure handling treats the send as undelivered instead
132
- * of silently dropping it.
133
- */
134
- onUserMessage: (payload: UserMessagePayload) => void | Promise<void>;
135
- onStop: () => void;
136
- onToolResponse?: (toolId: string, response: string) => void;
137
- onConnect?: () => void;
138
- onDisconnect?: (reason: string) => void;
139
- /**
140
- * Current run state for the liveness heartbeat. When omitted the agent is
141
- * reported as idle. Called on every hello/heartbeat/probe.
142
- */
143
- getRunState?: () => AgentRunState;
144
- }
145
- export declare class WSClient {
146
- private readonly lifecycle?;
147
- private socket;
148
- /** Stable id for this agent process; fences stale heartbeats server-side. */
149
- private readonly agentSessionId;
150
- /** Monotonic heartbeat sequence — advances on every hello + heartbeat. */
151
- private heartbeatSeq;
152
- private heartbeatTimer;
153
- private readonly agentVersion;
154
- private getRunState?;
155
- /**
156
- * Durable at-least-once delivery for stream events. Active only when
157
- * `ALAN_EVENT_OUTBOX_ENABLED === "true"`; otherwise events are fired-and-
158
- * forgotten exactly as before (see {@link SandboxEventDispatcher}).
159
- */
160
- private readonly eventDispatcher;
161
- /**
162
- * Bounded record of `messageId`s whose handoff to `onUserMessage` already
163
- * completed successfully. A redelivered `user_message` for one of these ids
164
- * (e.g. the original `ok:true` ack was lost in transit and the server's
165
- * ≤5-attempt redelivery re-armed the run) is re-acked `{ ok: true }`
166
- * without invoking the handler again, so the message is never processed
167
- * twice. A `Set`'s insertion order doubles as recency, so eviction is just
168
- * "drop the oldest key" — a minimal LRU without extra bookkeeping.
169
- */
170
- private readonly acceptedMessageIds;
171
- constructor(wsUrl: string, sessionId: string, // conversationId
172
- taskId: string, token: string, // sandboxSessionToken
173
- callbacks: WSClientCallbacks, agentVersion?: string, lifecycle?: AgentLifecycleLogger | undefined);
174
- /** Record a successfully-handed-off messageId, evicting the oldest entry past the cap. */
175
- private rememberAcceptedMessageId;
176
- /**
177
- * Record the run id for events emitted from here on, so the durable outbox can
178
- * bucket per-run caps and terminal-event condensation correctly. No-op when the
179
- * outbox is disabled.
180
- */
181
- setCurrentRunId(runId: string | undefined): void;
182
- private currentRunState;
183
- private buildHeartbeat;
184
- /** Emit `agent.hello` on (re)connect and (re)start the heartbeat interval. */
185
- private startHeartbeat;
186
- private stopHeartbeat;
187
- emitEvent(event: AgentEvent): void;
188
- waitForConnection(timeoutMs?: number): Promise<void>;
189
- get connected(): boolean;
190
- setLifecycleContext(context: AgentLifecycleContext): void;
191
- close(): void;
192
- private setupListeners;
193
- }
194
- //# sourceMappingURL=ws-client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ws-client.d.ts","sourceRoot":"","sources":["../src/ws-client.ts"],"names":[],"mappings":"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"}