@aiden-ade/sandbox-agent 0.1.60 → 0.1.62

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 +465 -342
  2. package/package.json +1 -1
  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,396 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from "vitest";
2
- const mocks = vi.hoisted(() => ({
3
- coreAgentConstructor: vi.fn(),
4
- agentRun: vi.fn(),
5
- wsClientConstructor: vi.fn(),
6
- ensureAlanMcpRegistered: vi.fn(),
7
- verifyAlanMcpRegistered: vi.fn(),
8
- prepareAlanMcpForRun: vi.fn(),
9
- presenterOnError: vi.fn(),
10
- presenterOnApplicationError: vi.fn(),
11
- presenterOnComplete: vi.fn(),
12
- callbacks: undefined,
13
- }));
14
- const runAlanMcp = {
15
- url: "https://api.alan.test/mcp",
16
- headers: { "x-alan-run-reference": "run-reference" },
17
- requiredTools: ["create_plan", "create_document_artifact"],
18
- contractVersion: 1,
19
- };
20
- vi.mock("../core-agent.js", () => ({
21
- CoreAgent: mocks.coreAgentConstructor,
22
- }));
23
- vi.mock("../ws-client.js", () => ({
24
- WSClient: mocks.wsClientConstructor,
25
- }));
26
- vi.mock("../web-presenter.js", () => ({
27
- WebPresenter: class {
28
- onLog() { }
29
- onError(...args) {
30
- mocks.presenterOnError(...args);
31
- }
32
- onApplicationError(...args) {
33
- mocks.presenterOnApplicationError(...args);
34
- }
35
- onComplete(...args) {
36
- mocks.presenterOnComplete(...args);
37
- }
38
- setSuppressSessionLifecycle() { }
39
- },
40
- }));
41
- vi.mock("../mcp-registration.js", () => ({
42
- ensureAlanMcpRegistered: mocks.ensureAlanMcpRegistered,
43
- verifyAlanMcpRegistered: mocks.verifyAlanMcpRegistered,
44
- }));
45
- vi.mock("../mcp-readiness.js", () => ({
46
- prepareAlanMcpForRun: mocks.prepareAlanMcpForRun,
47
- }));
48
- describe("runSandbox workflow context", () => {
49
- beforeEach(() => {
50
- vi.clearAllMocks();
51
- mocks.callbacks = undefined;
52
- mocks.ensureAlanMcpRegistered.mockResolvedValue({ ok: true, paths: [] });
53
- mocks.verifyAlanMcpRegistered.mockResolvedValue({ ok: true, missing: [] });
54
- mocks.prepareAlanMcpForRun.mockResolvedValue({
55
- ok: true,
56
- paths: [],
57
- verification: "enforced",
58
- });
59
- mocks.coreAgentConstructor.mockImplementation(function MockCoreAgent() {
60
- return {
61
- run: mocks.agentRun,
62
- kill: vi.fn(),
63
- abort: vi.fn(),
64
- };
65
- });
66
- mocks.wsClientConstructor.mockImplementation(function MockWSClient(_wsUrl, _sessionId, _taskId, _sessionToken, callbacks) {
67
- mocks.callbacks = callbacks;
68
- return {
69
- waitForConnection: vi.fn().mockResolvedValue(undefined),
70
- setLifecycleContext: vi.fn(),
71
- setCurrentRunId: vi.fn(),
72
- emitEvent: vi.fn(),
73
- close: vi.fn(),
74
- };
75
- });
76
- mocks.agentRun.mockImplementation(async () => {
77
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
78
- return { success: true, filesModified: [], planFilesCreated: [], iterations: 1 };
79
- });
80
- });
81
- it("forwards workflow identifiers into CoreAgent.run for workflow sandboxes", async () => {
82
- const { runSandbox } = await import("../sandbox.js");
83
- await runSandbox({
84
- wsUrl: "ws://example.test",
85
- sessionId: "conversation-id",
86
- taskId: "machine-id",
87
- teamId: "team-id",
88
- sessionToken: "token",
89
- task: "create a workflow artifact",
90
- projectPath: "/workspace/repo",
91
- workflowId: "workflow-id",
92
- workflowExecutionId: "execution-id",
93
- maxIterations: 3,
94
- });
95
- expect(mocks.agentRun).toHaveBeenCalledWith(expect.objectContaining({
96
- taskId: "machine-id",
97
- conversationId: "conversation-id",
98
- teamId: "team-id",
99
- workflowId: "workflow-id",
100
- workflowExecutionId: "execution-id",
101
- }));
102
- });
103
- it("does not spawn a cloud agent when required Alan MCP config is missing", async () => {
104
- mocks.verifyAlanMcpRegistered.mockResolvedValue({
105
- ok: false,
106
- missing: ["/workspace/.claude.json"],
107
- });
108
- const { runSandbox } = await import("../sandbox.js");
109
- const runPromise = runSandbox({
110
- wsUrl: "ws://example.test",
111
- sessionId: "conversation-id",
112
- taskId: "task-id",
113
- sessionToken: "token",
114
- task: "run with required tools",
115
- projectPath: "/workspace/repo",
116
- backendKind: "claude_cli",
117
- });
118
- await vi.waitFor(() => expect(mocks.callbacks).toBeDefined());
119
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
120
- await runPromise;
121
- expect(mocks.agentRun).not.toHaveBeenCalled();
122
- expect(mocks.presenterOnApplicationError).toHaveBeenCalledWith({
123
- code: "app.mcp.config_invalid",
124
- message: "Alan could not prepare the required tools for this run. Repair tools and try again.",
125
- });
126
- expect(mocks.presenterOnComplete).toHaveBeenCalledWith(expect.objectContaining({ success: false, iterations: 0 }));
127
- });
128
- it("finalizes an unexpected accepted-run exception exactly once as an application failure", async () => {
129
- mocks.agentRun.mockImplementation(async () => {
130
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
131
- throw new Error("orchestration exploded");
132
- });
133
- const { runSandbox } = await import("../sandbox.js");
134
- await runSandbox({
135
- wsUrl: "ws://example.test",
136
- sessionId: "conversation-id",
137
- taskId: "task-id",
138
- sessionToken: "token",
139
- task: "accepted work",
140
- projectPath: "/workspace/repo",
141
- });
142
- expect(mocks.presenterOnError).toHaveBeenCalledTimes(1);
143
- expect(mocks.presenterOnError).toHaveBeenCalledWith("orchestration exploded", false);
144
- expect(mocks.presenterOnComplete).toHaveBeenCalledTimes(1);
145
- expect(mocks.presenterOnComplete).toHaveBeenCalledWith(expect.objectContaining({
146
- success: false,
147
- error: "orchestration exploded",
148
- }));
149
- });
150
- it("queues a user message that arrives before the loop starts waiting", async () => {
151
- let runCount = 0;
152
- mocks.agentRun.mockImplementation(async () => {
153
- runCount += 1;
154
- if (runCount === 1) {
155
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
156
- }
157
- return { success: true, filesModified: [], planFilesCreated: [], iterations: 1 };
158
- });
159
- const { runSandbox } = await import("../sandbox.js");
160
- const runPromise = runSandbox({
161
- wsUrl: "ws://example.test",
162
- sessionId: "conversation-id",
163
- taskId: "task-id",
164
- sessionToken: "token",
165
- task: " ",
166
- projectPath: "/workspace/repo",
167
- });
168
- await vi.waitFor(() => expect(mocks.callbacks).toBeDefined());
169
- mocks.callbacks?.onUserMessage({ text: "real first message" });
170
- await runPromise;
171
- expect(mocks.agentRun).toHaveBeenCalledTimes(1);
172
- expect(mocks.agentRun).toHaveBeenCalledWith(expect.objectContaining({ task: "real first message" }));
173
- });
174
- it("logs lifecycle records with payload run correlation", async () => {
175
- const info = vi.spyOn(console, "info").mockImplementation(() => { });
176
- let runCount = 0;
177
- mocks.agentRun.mockImplementation(async () => {
178
- runCount += 1;
179
- if (runCount === 1) {
180
- setTimeout(() => mocks.callbacks?.onUserMessage({
181
- text: "follow-up",
182
- runId: "run-from-ws",
183
- taskId: "task-from-ws",
184
- conversationId: "conversation-from-ws",
185
- backendKind: "codex_app_server",
186
- alanMcp: runAlanMcp,
187
- }), 0);
188
- }
189
- else {
190
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
191
- }
192
- return { success: true, filesModified: [], planFilesCreated: [], iterations: 1 };
193
- });
194
- const { runSandbox } = await import("../sandbox.js");
195
- const runPromise = runSandbox({
196
- wsUrl: "ws://example.test",
197
- sessionId: "conversation-id",
198
- taskId: "task-id",
199
- sessionToken: "token",
200
- task: " ",
201
- projectPath: "/workspace/repo",
202
- backendKind: "claude_cli",
203
- runId: "initial-run",
204
- sandboxId: "sandbox-id",
205
- provider: "daytona",
206
- });
207
- await vi.waitFor(() => expect(mocks.callbacks).toBeDefined());
208
- mocks.callbacks?.onUserMessage({
209
- text: "first",
210
- runId: "initial-run",
211
- taskId: "task-id",
212
- conversationId: "conversation-id",
213
- backendKind: "claude_cli",
214
- alanMcp: runAlanMcp,
215
- });
216
- await runPromise;
217
- const records = info.mock.calls
218
- .map((call) => String(call[0]))
219
- .filter((line) => line.trim().startsWith("{"))
220
- .map((line) => JSON.parse(line))
221
- .filter((record) => record.component === "agent-manager");
222
- expect(records).toEqual(expect.arrayContaining([
223
- expect.objectContaining({
224
- event: "sandbox_agent_run_start",
225
- runId: "initial-run",
226
- sandboxId: "sandbox-id",
227
- provider: "daytona",
228
- }),
229
- expect.objectContaining({
230
- event: "sandbox_agent_user_message_received",
231
- runId: "run-from-ws",
232
- taskId: "task-from-ws",
233
- conversationId: "conversation-from-ws",
234
- backendKind: "codex_app_server",
235
- }),
236
- ]));
237
- info.mockRestore();
238
- });
239
- it("rejects a run-bound websocket turn that omits its MCP contract", async () => {
240
- const { runSandbox } = await import("../sandbox.js");
241
- const runPromise = runSandbox({
242
- wsUrl: "ws://example.test",
243
- sessionId: "conversation-id",
244
- taskId: "task-id",
245
- sessionToken: "token",
246
- task: " ",
247
- projectPath: "/workspace/repo",
248
- backendKind: "claude_cli",
249
- runId: "run-without-contract",
250
- });
251
- await vi.waitFor(() => expect(mocks.callbacks).toBeDefined());
252
- mocks.callbacks?.onUserMessage({
253
- text: "run without a contract",
254
- runId: "run-without-contract",
255
- taskId: "task-id",
256
- conversationId: "conversation-id",
257
- backendKind: "claude_cli",
258
- });
259
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 20);
260
- await runPromise;
261
- expect(mocks.agentRun).not.toHaveBeenCalled();
262
- expect(mocks.presenterOnApplicationError).toHaveBeenCalledWith({
263
- code: "app.mcp.config_invalid",
264
- message: "Alan did not receive the run-scoped tools contract. Start a new run and try again.",
265
- });
266
- expect(mocks.prepareAlanMcpForRun).not.toHaveBeenCalled();
267
- expect(mocks.verifyAlanMcpRegistered).not.toHaveBeenCalled();
268
- });
269
- it("does not reuse the previous run's MCP contract when a later turn omits one", async () => {
270
- mocks.agentRun.mockImplementationOnce(async () => {
271
- setTimeout(() => mocks.callbacks?.onUserMessage({
272
- text: "second run without a contract",
273
- runId: "run-two",
274
- taskId: "task-id",
275
- conversationId: "conversation-id",
276
- backendKind: "claude_cli",
277
- }), 0);
278
- return { success: true, filesModified: [], planFilesCreated: [], iterations: 1 };
279
- });
280
- mocks.presenterOnApplicationError.mockImplementationOnce(() => {
281
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
282
- });
283
- const { runSandbox } = await import("../sandbox.js");
284
- const runPromise = runSandbox({
285
- wsUrl: "ws://example.test",
286
- sessionId: "conversation-id",
287
- taskId: "task-id",
288
- sessionToken: "token",
289
- task: " ",
290
- projectPath: "/workspace/repo",
291
- backendKind: "claude_cli",
292
- });
293
- await vi.waitFor(() => expect(mocks.callbacks).toBeDefined());
294
- mocks.callbacks?.onUserMessage({
295
- text: "first run",
296
- runId: "run-one",
297
- taskId: "task-id",
298
- conversationId: "conversation-id",
299
- backendKind: "claude_cli",
300
- alanMcp: runAlanMcp,
301
- });
302
- await runPromise;
303
- expect(mocks.agentRun).toHaveBeenCalledTimes(1);
304
- expect(mocks.prepareAlanMcpForRun).toHaveBeenCalledTimes(1);
305
- expect(mocks.presenterOnApplicationError).toHaveBeenCalledWith({
306
- code: "app.mcp.config_invalid",
307
- message: "Alan did not receive the run-scoped tools contract. Start a new run and try again.",
308
- });
309
- });
310
- describe("resume fallback context", () => {
311
- it("passes launch-time context to the resume turn only, then clears it", async () => {
312
- const RESUME_CONTEXT = "<resume_context>\nUser: earlier ask\nAssistant: earlier reply\n</resume_context>";
313
- let runCount = 0;
314
- mocks.agentRun.mockImplementation(async () => {
315
- runCount += 1;
316
- if (runCount === 1) {
317
- // A normal follow-up (which carries no fallback context) drives turn 2.
318
- setTimeout(() => mocks.callbacks?.onUserMessage({ text: "follow-up" }), 0);
319
- }
320
- else {
321
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
322
- }
323
- return { success: true, filesModified: [], planFilesCreated: [], iterations: 1 };
324
- });
325
- const { runSandbox } = await import("../sandbox.js");
326
- await runSandbox({
327
- wsUrl: "ws://example.test",
328
- sessionId: "conversation-id",
329
- taskId: "task-id",
330
- sessionToken: "token",
331
- task: "resume and continue",
332
- projectPath: "/workspace/repo",
333
- backendKind: "claude_cli",
334
- providerSessionId: "provider-session-abc",
335
- resumeFallbackContext: RESUME_CONTEXT,
336
- });
337
- expect(mocks.agentRun).toHaveBeenCalledTimes(2);
338
- // The resume-triggered first turn carries the fallback transcript so a failed
339
- // native resume rehydrates with context instead of amnesiac.
340
- expect(mocks.agentRun.mock.calls[0]?.[0]).toMatchObject({
341
- task: "resume and continue",
342
- providerSessionId: "provider-session-abc",
343
- resumeFallbackContext: RESUME_CONTEXT,
344
- });
345
- // The second turn (a fresh user message that mints its own session) must not
346
- // re-inject the now-stale transcript.
347
- expect(mocks.agentRun.mock.calls[1]?.[0]?.resumeFallbackContext).toBeUndefined();
348
- });
349
- it("forwards a fresh fallback transcript on an interactive resume turn", async () => {
350
- // Cloud multi-turn resume: the server re-dispatches a follow-up as a
351
- // provider-session resume (providerSessionId set) and recomputes a fresh
352
- // recent-transcript fallback for THAT turn. The run loop must carry it into
353
- // CoreAgent.run so a native resume miss on the follow-up rehydrates with
354
- // context instead of amnesiac — mirroring the launch-time behaviour.
355
- const TURN2_CONTEXT = "<resume_context>\nUser: turn-1 ask\nAssistant: turn-1 reply\n</resume_context>";
356
- let runCount = 0;
357
- mocks.agentRun.mockImplementation(async () => {
358
- runCount += 1;
359
- if (runCount === 1) {
360
- // Interactive follow-up that IS a resume: carries both a providerSessionId
361
- // and the freshly-computed fallback transcript for this turn.
362
- setTimeout(() => mocks.callbacks?.onUserMessage({
363
- text: "continue the work",
364
- providerSessionId: "provider-session-turn2",
365
- resumeFallbackContext: TURN2_CONTEXT,
366
- }), 0);
367
- }
368
- else {
369
- setTimeout(() => mocks.callbacks?.onUserMessage(null), 0);
370
- }
371
- return { success: true, filesModified: [], planFilesCreated: [], iterations: 1 };
372
- });
373
- const { runSandbox } = await import("../sandbox.js");
374
- await runSandbox({
375
- wsUrl: "ws://example.test",
376
- sessionId: "conversation-id",
377
- taskId: "task-id",
378
- sessionToken: "token",
379
- task: "initial turn",
380
- projectPath: "/workspace/repo",
381
- backendKind: "claude_cli",
382
- });
383
- expect(mocks.agentRun).toHaveBeenCalledTimes(2);
384
- // Turn 1 launched fresh (no resume) — no fallback context.
385
- expect(mocks.agentRun.mock.calls[0]?.[0]?.resumeFallbackContext).toBeUndefined();
386
- // Turn 2 is the interactive resume — the fresh fallback transcript is carried
387
- // alongside its providerSessionId.
388
- expect(mocks.agentRun.mock.calls[1]?.[0]).toMatchObject({
389
- task: "continue the work",
390
- providerSessionId: "provider-session-turn2",
391
- resumeFallbackContext: TURN2_CONTEXT,
392
- });
393
- });
394
- });
395
- });
396
- //# sourceMappingURL=sandbox-workflow-context.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sandbox-workflow-context.test.js","sourceRoot":"","sources":["../../src/__tests__/sandbox-workflow-context.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=service-manager.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-manager.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/service-manager.test.ts"],"names":[],"mappings":""}
@@ -1,50 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { buildDaemonServicePlan } from "../service-manager.js";
3
- const baseInput = {
4
- homeDir: "/Users/Test Person",
5
- nodeExecutable: "/opt/node bin/node",
6
- cliEntry: "/opt/alan agent/index.cjs",
7
- profile: "production",
8
- userId: 501,
9
- };
10
- describe("buildDaemonServicePlan", () => {
11
- it("creates a restartable launchd user agent", () => {
12
- const plan = buildDaemonServicePlan({ ...baseInput, platform: "darwin" });
13
- expect(plan.manifestPath).toBe("/Users/Test Person/Library/LaunchAgents/ai.tryalan.agent.plist");
14
- expect(plan.manifest).toContain("<key>KeepAlive</key>");
15
- expect(plan.manifest).toContain("<key>ThrottleInterval</key>");
16
- expect(plan.manifest).toContain("/opt/node bin/node");
17
- expect(plan.installCommands.at(-1)).toEqual({
18
- command: "launchctl",
19
- args: ["kickstart", "-k", "gui/501/ai.tryalan.agent"],
20
- tolerateFailure: false,
21
- });
22
- });
23
- it("creates a restartable systemd user service", () => {
24
- const plan = buildDaemonServicePlan({ ...baseInput, platform: "linux" });
25
- expect(plan.manifestPath).toBe("/Users/Test Person/.config/systemd/user/alan-agent.service");
26
- expect(plan.manifest).toContain("Restart=on-failure");
27
- expect(plan.manifest).toContain("RestartSec=5");
28
- expect(plan.manifest).toContain('ExecStart="/opt/node bin/node" "/opt/alan agent/index.cjs" "daemon" "--profile" "production"');
29
- expect(plan.installCommands).toContainEqual({
30
- command: "systemctl",
31
- args: ["--user", "enable", "--now", "alan-agent.service"],
32
- tolerateFailure: false,
33
- });
34
- });
35
- it("creates a restartable per-user Windows scheduled task", () => {
36
- const plan = buildDaemonServicePlan({
37
- ...baseInput,
38
- platform: "win32",
39
- homeDir: "C:\\Users\\Test Person",
40
- nodeExecutable: "C:\\Program Files\\nodejs\\node.exe",
41
- cliEntry: "C:\\Users\\Test Person\\alan-agent\\index.cjs",
42
- });
43
- expect(plan.manifestPath).toBeNull();
44
- expect(plan.installCommands).toHaveLength(1);
45
- expect(plan.installCommands[0]?.command).toBe("powershell.exe");
46
- expect(plan.installCommands[0]?.args.join(" ")).toContain("RestartCount 3");
47
- expect(plan.installCommands[0]?.args.join(" ")).toContain("Register-ScheduledTask");
48
- });
49
- });
50
- //# sourceMappingURL=service-manager.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"service-manager.test.js","sourceRoot":"","sources":["../../src/__tests__/service-manager.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sleep-inhibitor.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sleep-inhibitor.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/sleep-inhibitor.test.ts"],"names":[],"mappings":""}