@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,440 +0,0 @@
1
- import { createCipheriv, createDecipheriv, createHash, randomBytes, randomUUID } from "node:crypto";
2
- import { chmodSync, existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
3
- import { dirname } from "node:path";
4
- const OUTBOX_VERSION = 1;
5
- const MAX_INTERMEDIATE_EVENTS_PER_RUN = 200;
6
- const MAX_ENCRYPTED_OUTBOX_BYTES = 64 * 1024 * 1024;
7
- const ACK_TIMEOUT_MS = 10_000;
8
- const RETRY_DELAY_MS = 1_000;
9
- const CONDENSATION_NOTICE = "Some detailed output was condensed while this computer was offline; the run result is preserved.";
10
- const TERMINAL_EVENT_TYPES = new Set([
11
- "agent_run_finished",
12
- "query_complete",
13
- "session_complete",
14
- "session_error",
15
- "complete",
16
- ]);
17
- function decodeKey(encodedKey) {
18
- const key = Buffer.from(encodedKey, "base64url");
19
- if (key.length !== 32) {
20
- throw new Error("event outbox encryption key must contain exactly 32 bytes");
21
- }
22
- return key;
23
- }
24
- function isTerminal(event) {
25
- return TERMINAL_EVENT_TYPES.has(event.type);
26
- }
27
- /**
28
- * background_work heartbeats (BaseMachineAgent.runBackendWithActivityHeartbeat,
29
- * ~every 10s for the life of a quiet tool call) prove daemon liveness to a
30
- * currently-connected backend only — they carry no transcript content. They
31
- * must never be allowed to evict real events (including `start`) from the
32
- * durable outbox, so callers can drop them outright while disconnected and
33
- * the outbox always evicts them first if any do get enqueued.
34
- */
35
- export function isBackgroundHeartbeat(event) {
36
- return event.type === "activity" && event.status === "background_work";
37
- }
38
- function truncateUtf8(value, maxBytes) {
39
- const encoded = Buffer.from(value, "utf8");
40
- if (encoded.length <= maxBytes)
41
- return value;
42
- return `${encoded
43
- .subarray(0, maxBytes)
44
- .toString("utf8")
45
- .replace(/\uFFFD$/u, "")}…`;
46
- }
47
- function terminalFingerprint(event) {
48
- return createHash("sha256").update(JSON.stringify(event)).digest("hex").slice(0, 16);
49
- }
50
- function condenseTerminalEvent(event) {
51
- const fingerprint = terminalFingerprint(event);
52
- const note = ` [Offline terminal detail condensed; fingerprint ${fingerprint}.]`;
53
- if (event.type === "session_error") {
54
- return {
55
- type: "session_error",
56
- error: `${truncateUtf8(event.error, 512)}${note}`,
57
- };
58
- }
59
- if (event.type === "session_complete" && !event.result)
60
- return event;
61
- if (event.type !== "query_complete" &&
62
- event.type !== "agent_run_finished" &&
63
- event.type !== "complete" &&
64
- event.type !== "session_complete") {
65
- return event;
66
- }
67
- const result = event.result;
68
- if (!result)
69
- return event;
70
- const compactResult = {
71
- success: result.success,
72
- summary: `${truncateUtf8(result.summary ?? "", 512)}${note}`,
73
- filesModified: (result.filesModified ?? []).slice(0, 4).map((file) => truncateUtf8(file, 128)),
74
- planFilesCreated: (result.planFilesCreated ?? [])
75
- .slice(0, 2)
76
- .map((file) => truncateUtf8(file, 128)),
77
- iterations: result.iterations,
78
- ...(result.error ? { error: truncateUtf8(result.error, 512) } : {}),
79
- ...(result.providerSessionId
80
- ? { providerSessionId: truncateUtf8(result.providerSessionId, 256) }
81
- : {}),
82
- ...(result.runtimeSessionId
83
- ? { runtimeSessionId: truncateUtf8(result.runtimeSessionId, 256) }
84
- : {}),
85
- ...(result.backendKind ? { backendKind: result.backendKind } : {}),
86
- ...(result.supportTier ? { supportTier: result.supportTier } : {}),
87
- ...(result.usage ? { usage: result.usage } : {}),
88
- ...(result.problem ? { problem: result.problem } : {}),
89
- };
90
- if (event.type === "agent_run_finished") {
91
- return {
92
- type: "agent_run_finished",
93
- result: compactResult,
94
- ...(event.failureDomain ? { failureDomain: event.failureDomain } : {}),
95
- ...(event.causeProblemId ? { causeProblemId: event.causeProblemId } : {}),
96
- };
97
- }
98
- if (event.type === "query_complete") {
99
- return { type: "query_complete", result: compactResult, ts: event.ts };
100
- }
101
- if (event.type === "session_complete") {
102
- return { type: "session_complete", result: compactResult, ts: event.ts };
103
- }
104
- return { type: "complete", result: compactResult };
105
- }
106
- function base64UrlLength(byteLength) {
107
- return Math.ceil((byteLength * 4) / 3);
108
- }
109
- function encryptedFileSize(entries) {
110
- const plaintextBytes = Buffer.byteLength(JSON.stringify({ entries }), "utf8");
111
- const emptyEnvelopeBytes = Buffer.byteLength(JSON.stringify({
112
- version: OUTBOX_VERSION,
113
- iv: "a".repeat(16),
114
- authTag: "a".repeat(22),
115
- ciphertext: "",
116
- }), "utf8");
117
- return emptyEnvelopeBytes + base64UrlLength(plaintextBytes);
118
- }
119
- /**
120
- * Durable, encrypted, at-least-once event delivery for daemon-to-backend agent events.
121
- * Entries are written before send and removed only after an explicit backend ACK.
122
- */
123
- export class EncryptedEventOutbox {
124
- path;
125
- pushLog;
126
- entries;
127
- inFlightEventId = null;
128
- ackTimer = null;
129
- retryTimer = null;
130
- /** Latch so a persistent disk failure logs once per streak, not per event. */
131
- persistFailureLogged = false;
132
- /**
133
- * Signature of the entries last durably written, so a `persist()` whose entries
134
- * are byte-identical to what is already on disk skips the AES-GCM re-encrypt +
135
- * temp-file write + rename entirely. Under link flapping the spool is persisted
136
- * on every enqueue/ack; this collapses redundant writes (e.g. a reconnect that
137
- * replays from head without mutating the queue) to O(delta), not O(spool). Set
138
- * to null on any write failure so the next persist retries rather than skips.
139
- */
140
- lastPersistedSignature = null;
141
- /** Sentinel signature for the empty (no-entries) on-disk state. */
142
- static EMPTY_SIGNATURE = "empty";
143
- constructor(path, encodedKey, pushLog = () => { }, options = {}) {
144
- this.path = path;
145
- this.pushLog = pushLog;
146
- this.key = decodeKey(encodedKey);
147
- this.maxEncryptedBytes = options.maxEncryptedBytes ?? MAX_ENCRYPTED_OUTBOX_BYTES;
148
- this.maxIntermediateEventsPerRun =
149
- options.maxIntermediateEventsPerRun ?? MAX_INTERMEDIATE_EVENTS_PER_RUN;
150
- if (!Number.isSafeInteger(this.maxEncryptedBytes) || this.maxEncryptedBytes <= 0) {
151
- throw new Error("event outbox maxEncryptedBytes must be a positive integer");
152
- }
153
- if (!Number.isSafeInteger(this.maxIntermediateEventsPerRun) ||
154
- this.maxIntermediateEventsPerRun < 0) {
155
- throw new Error("event outbox maxIntermediateEventsPerRun must be a non-negative integer");
156
- }
157
- this.entries = this.read();
158
- // Seed the persisted-signature baseline from what is already on disk so the
159
- // constructor's persist() below skips a redundant full re-encrypt whenever
160
- // enforceCaps() changes nothing — i.e. the common case of a daemon restart
161
- // reading a healthy spool. read() already threw on a corrupt/absent-key file,
162
- // so reaching here means the on-disk copy matches `this.entries`.
163
- if (!existsSync(this.path)) {
164
- this.lastPersistedSignature = EncryptedEventOutbox.EMPTY_SIGNATURE;
165
- }
166
- else if (this.entries.length > 0) {
167
- this.lastPersistedSignature = this.serializeForPersist().signature;
168
- }
169
- this.enforceCaps();
170
- this.persist();
171
- }
172
- key;
173
- maxEncryptedBytes;
174
- maxIntermediateEventsPerRun;
175
- enqueue(conversationId, runId, event) {
176
- const entry = {
177
- eventId: randomUUID(),
178
- conversationId,
179
- runId,
180
- event,
181
- createdAtMs: Date.now(),
182
- };
183
- this.entries.push(entry);
184
- this.enforceCaps(runId);
185
- this.persist();
186
- return entry.eventId;
187
- }
188
- hasTerminalEvent(runId) {
189
- return this.entries.some((entry) => entry.runId === runId && isTerminal(entry.event));
190
- }
191
- pendingCount() {
192
- return this.entries.length;
193
- }
194
- disconnect() {
195
- this.clearAckTimer();
196
- this.clearRetryTimer();
197
- this.inFlightEventId = null;
198
- }
199
- flush(socket) {
200
- if (!socket.connected || this.inFlightEventId || this.entries.length === 0)
201
- return;
202
- const entry = this.entries[0];
203
- if (!entry)
204
- return;
205
- this.inFlightEventId = entry.eventId;
206
- let settled = false;
207
- const settle = (result) => {
208
- if (settled || this.inFlightEventId !== entry.eventId)
209
- return;
210
- settled = true;
211
- this.clearAckTimer();
212
- this.inFlightEventId = null;
213
- if (result?.ok) {
214
- if (this.entries[0]?.eventId === entry.eventId) {
215
- this.entries.shift();
216
- }
217
- else {
218
- this.entries = this.entries.filter((candidate) => candidate.eventId !== entry.eventId);
219
- }
220
- this.persist();
221
- queueMicrotask(() => this.flush(socket));
222
- return;
223
- }
224
- this.scheduleRetry(socket);
225
- };
226
- this.ackTimer = setTimeout(() => settle({ ok: false, retryable: true }), ACK_TIMEOUT_MS);
227
- this.ackTimer.unref?.();
228
- socket.emit("agent.event", {
229
- eventId: entry.eventId,
230
- conversationId: entry.conversationId,
231
- runId: entry.runId,
232
- event: entry.event,
233
- }, settle);
234
- }
235
- isDroppable(entry) {
236
- return (entry.eventId !== this.inFlightEventId &&
237
- entry.kind !== "condensation_marker" &&
238
- !isTerminal(entry.event));
239
- }
240
- /**
241
- * Pick the next droppable entry to evict. Heartbeats are always evicted
242
- * first (oldest heartbeat first) since they carry no transcript content;
243
- * only once none remain do we fall back to the oldest droppable entry of
244
- * any kind. Without this, oldest-first eviction treats a background_work
245
- * heartbeat exactly like real transcript content, so a long offline stretch
246
- * (heartbeats every 10s, never removed by an ack since nothing is
247
- * connected) evicts genuine early events — including `start` — ahead of
248
- * the heartbeats that caused the overflow.
249
- */
250
- pickDropCandidate(matches) {
251
- const heartbeat = this.entries.find((entry) => matches(entry) && this.isDroppable(entry) && isBackgroundHeartbeat(entry.event));
252
- if (heartbeat)
253
- return heartbeat;
254
- return this.entries.find((entry) => matches(entry) && this.isDroppable(entry));
255
- }
256
- ensureCondensationMarker(runId, conversationId) {
257
- if (this.entries.some((entry) => entry.runId === runId && entry.kind === "condensation_marker")) {
258
- return;
259
- }
260
- const runEntry = this.entries.find((entry) => entry.runId === runId);
261
- const markerConversationId = runEntry?.conversationId ?? conversationId;
262
- if (!markerConversationId)
263
- return;
264
- const marker = {
265
- eventId: randomUUID(),
266
- conversationId: markerConversationId,
267
- runId,
268
- event: { type: "text", text: CONDENSATION_NOTICE, ts: Date.now() },
269
- createdAtMs: Date.now(),
270
- kind: "condensation_marker",
271
- };
272
- const terminalIndex = this.entries.findIndex((entry) => entry.runId === runId && isTerminal(entry.event));
273
- this.entries.splice(terminalIndex === -1 ? this.entries.length : terminalIndex, 0, marker);
274
- }
275
- enforceCaps(preferredRunId) {
276
- const lossCountByRunId = new Map();
277
- const lossConversationByRunId = new Map();
278
- const terminalCondensedRunIds = new Set();
279
- const runIds = preferredRunId
280
- ? [preferredRunId]
281
- : [...new Set(this.entries.map((entry) => entry.runId))];
282
- for (const runId of runIds) {
283
- while (this.entries.filter((entry) => entry.runId === runId && this.isDroppable(entry)).length >
284
- this.maxIntermediateEventsPerRun) {
285
- const drop = this.pickDropCandidate((entry) => entry.runId === runId);
286
- if (!drop)
287
- break;
288
- this.entries = this.entries.filter((entry) => entry.eventId !== drop.eventId);
289
- lossCountByRunId.set(runId, (lossCountByRunId.get(runId) ?? 0) + 1);
290
- lossConversationByRunId.set(runId, drop.conversationId);
291
- }
292
- }
293
- while (encryptedFileSize(this.entries) > this.maxEncryptedBytes) {
294
- const drop = this.pickDropCandidate(() => true);
295
- if (drop) {
296
- this.entries = this.entries.filter((entry) => entry.eventId !== drop.eventId);
297
- lossCountByRunId.set(drop.runId, (lossCountByRunId.get(drop.runId) ?? 0) + 1);
298
- lossConversationByRunId.set(drop.runId, drop.conversationId);
299
- continue;
300
- }
301
- const terminal = this.entries.find((entry) => entry.eventId !== this.inFlightEventId &&
302
- isTerminal(entry.event) &&
303
- !entry.terminalCondensed);
304
- if (!terminal)
305
- break;
306
- terminal.event = condenseTerminalEvent(terminal.event);
307
- terminal.terminalCondensed = true;
308
- terminalCondensedRunIds.add(terminal.runId);
309
- }
310
- for (const runId of new Set([...lossCountByRunId.keys(), ...terminalCondensedRunIds])) {
311
- this.ensureCondensationMarker(runId, lossConversationByRunId.get(runId));
312
- }
313
- while (encryptedFileSize(this.entries) > this.maxEncryptedBytes) {
314
- const drop = this.pickDropCandidate(() => true);
315
- if (!drop)
316
- break;
317
- this.entries = this.entries.filter((entry) => entry.eventId !== drop.eventId);
318
- lossCountByRunId.set(drop.runId, (lossCountByRunId.get(drop.runId) ?? 0) + 1);
319
- lossConversationByRunId.set(drop.runId, drop.conversationId);
320
- this.ensureCondensationMarker(drop.runId, drop.conversationId);
321
- }
322
- for (const [runId, count] of lossCountByRunId) {
323
- this.pushLog(`event_outbox_quota run=${runId} dropped_nonessential=${count} max_encrypted_bytes=${this.maxEncryptedBytes}`);
324
- }
325
- for (const runId of terminalCondensedRunIds) {
326
- this.pushLog(`event_outbox_terminal_condensed run=${runId} max_encrypted_bytes=${this.maxEncryptedBytes}`);
327
- }
328
- if (encryptedFileSize(this.entries) > this.maxEncryptedBytes) {
329
- this.pushLog(`event_outbox_terminal_reserve_exceeded bytes=${encryptedFileSize(this.entries)} max_encrypted_bytes=${this.maxEncryptedBytes}`);
330
- }
331
- }
332
- scheduleRetry(socket) {
333
- if (!socket.connected || this.retryTimer)
334
- return;
335
- this.retryTimer = setTimeout(() => {
336
- this.retryTimer = null;
337
- this.flush(socket);
338
- }, RETRY_DELAY_MS);
339
- this.retryTimer.unref?.();
340
- }
341
- clearAckTimer() {
342
- if (this.ackTimer)
343
- clearTimeout(this.ackTimer);
344
- this.ackTimer = null;
345
- }
346
- clearRetryTimer() {
347
- if (this.retryTimer)
348
- clearTimeout(this.retryTimer);
349
- this.retryTimer = null;
350
- }
351
- read() {
352
- if (!existsSync(this.path))
353
- return [];
354
- let envelope;
355
- try {
356
- envelope = JSON.parse(readFileSync(this.path, "utf8"));
357
- if (envelope.version !== OUTBOX_VERSION) {
358
- throw new Error(`unsupported event outbox version ${String(envelope.version)}`);
359
- }
360
- const decipher = createDecipheriv("aes-256-gcm", this.key, Buffer.from(envelope.iv, "base64url"));
361
- decipher.setAuthTag(Buffer.from(envelope.authTag, "base64url"));
362
- const plaintext = Buffer.concat([
363
- decipher.update(Buffer.from(envelope.ciphertext, "base64url")),
364
- decipher.final(),
365
- ]).toString("utf8");
366
- const parsed = JSON.parse(plaintext);
367
- if (!Array.isArray(parsed.entries))
368
- throw new Error("event outbox entries are malformed");
369
- return parsed.entries;
370
- }
371
- catch (error) {
372
- const detail = error instanceof Error ? error.message : String(error);
373
- throw new Error(`unable to decrypt durable event outbox: ${detail}`);
374
- }
375
- }
376
- /** Serialize the current entries to their plaintext + content signature (once). */
377
- serializeForPersist() {
378
- if (this.entries.length === 0) {
379
- return { plaintext: "", signature: EncryptedEventOutbox.EMPTY_SIGNATURE };
380
- }
381
- const plaintext = JSON.stringify({ entries: this.entries });
382
- return { plaintext, signature: createHash("sha256").update(plaintext).digest("base64url") };
383
- }
384
- persist() {
385
- // Build the plaintext once (also reused for encryption below) and derive a
386
- // signature. When it matches the last durable write the on-disk copy is
387
- // already correct, so skip the re-encrypt + write entirely (P3: no full-spool
388
- // re-encrypt when entries did not change — the link-flap churn fix).
389
- const { plaintext, signature } = this.serializeForPersist();
390
- if (signature === this.lastPersistedSignature)
391
- return;
392
- try {
393
- if (this.entries.length === 0) {
394
- rmSync(this.path, { force: true });
395
- this.lastPersistedSignature = signature;
396
- this.persistFailureLogged = false;
397
- return;
398
- }
399
- mkdirSync(dirname(this.path), { recursive: true, mode: 0o700 });
400
- const iv = randomBytes(12);
401
- const cipher = createCipheriv("aes-256-gcm", this.key, iv);
402
- const ciphertext = Buffer.concat([cipher.update(plaintext, "utf8"), cipher.final()]);
403
- const envelope = {
404
- version: OUTBOX_VERSION,
405
- iv: iv.toString("base64url"),
406
- authTag: cipher.getAuthTag().toString("base64url"),
407
- ciphertext: ciphertext.toString("base64url"),
408
- };
409
- const pendingPath = `${this.path}.pending-${process.pid}-${randomBytes(6).toString("hex")}`;
410
- try {
411
- writeFileSync(pendingPath, JSON.stringify(envelope), { mode: 0o600 });
412
- chmodSync(pendingPath, 0o600);
413
- renameSync(pendingPath, this.path);
414
- }
415
- finally {
416
- rmSync(pendingPath, { force: true });
417
- }
418
- // Durable write succeeded — remember the signature and reset the latch.
419
- this.lastPersistedSignature = signature;
420
- this.persistFailureLogged = false;
421
- }
422
- catch (error) {
423
- // A failed write leaves the on-disk copy stale relative to memory — forget
424
- // the signature so the next persist() retries the write instead of skipping.
425
- this.lastPersistedSignature = null;
426
- // Disk-full / permission / IO failure while writing the durable outbox.
427
- // The in-memory queue is authoritative and left untouched here, so we must
428
- // never throw into the emit hot path (enqueue → persist) — a dropped write
429
- // would otherwise take down the whole event emission. The next persist()
430
- // (driven by the next enqueue or ack) retries the write naturally once the
431
- // condition clears; log once per failure streak to avoid flooding the log.
432
- if (!this.persistFailureLogged) {
433
- this.persistFailureLogged = true;
434
- const detail = error instanceof Error ? error.message : String(error);
435
- this.pushLog(`event_outbox_persist_failed error=${detail} pending_entries=${this.entries.length}`);
436
- }
437
- }
438
- }
439
- }
440
- //# sourceMappingURL=event-outbox.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"event-outbox.js","sourceRoot":"","sources":["../src/event-outbox.ts"],"names":[],"mappings":"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"}
@@ -1,13 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Fake provider CLI for deterministic daemon lifecycle tests.
4
- *
5
- * Modes (via FAKE_PROVIDER_MODE env or first arg):
6
- * - success: exit 0 after optional delay
7
- * - crash-before-start: exit 1 immediately
8
- * - start-then-hang: sleep until SIGTERM
9
- * - ignore-sigterm: ignore SIGTERM and keep running
10
- * - late-complete: emit start event then complete after delay
11
- */
12
- export {};
13
- //# sourceMappingURL=fake-provider-cli.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fake-provider-cli.d.ts","sourceRoot":"","sources":["../src/fake-provider-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG"}
@@ -1,53 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * Fake provider CLI for deterministic daemon lifecycle tests.
4
- *
5
- * Modes (via FAKE_PROVIDER_MODE env or first arg):
6
- * - success: exit 0 after optional delay
7
- * - crash-before-start: exit 1 immediately
8
- * - start-then-hang: sleep until SIGTERM
9
- * - ignore-sigterm: ignore SIGTERM and keep running
10
- * - late-complete: emit start event then complete after delay
11
- */
12
- const mode = process.env.FAKE_PROVIDER_MODE ?? process.argv[2] ?? "success";
13
- const delayMs = Number.parseInt(process.env.FAKE_PROVIDER_DELAY_MS ?? "0", 10);
14
- function emit(line) {
15
- process.stdout.write(`${JSON.stringify(line)}\n`);
16
- }
17
- function sleep(ms) {
18
- return new Promise((resolve) => setTimeout(resolve, ms));
19
- }
20
- async function main() {
21
- if (mode === "crash-before-start") {
22
- process.exit(1);
23
- }
24
- if (mode === "ignore-sigterm") {
25
- process.on("SIGTERM", () => {
26
- // Deliberately ignore termination for recovery tests.
27
- });
28
- await sleep(Number.POSITIVE_INFINITY);
29
- return;
30
- }
31
- if (mode === "start-then-hang") {
32
- emit({ type: "start", ts: Date.now() });
33
- await sleep(Number.POSITIVE_INFINITY);
34
- return;
35
- }
36
- if (mode === "late-complete") {
37
- emit({ type: "start", ts: Date.now() });
38
- await sleep(delayMs > 0 ? delayMs : 2_000);
39
- emit({ type: "complete", success: true, ts: Date.now() });
40
- process.exit(0);
41
- return;
42
- }
43
- if (delayMs > 0)
44
- await sleep(delayMs);
45
- emit({ type: "complete", success: true, ts: Date.now() });
46
- process.exit(0);
47
- }
48
- void main().catch((error) => {
49
- console.error(error);
50
- process.exit(1);
51
- });
52
- export {};
53
- //# sourceMappingURL=fake-provider-cli.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fake-provider-cli.js","sourceRoot":"","sources":["../src/fake-provider-cli.ts"],"names":[],"mappings":";AACA;;;;;;;;;GASG;AAEH,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;AAC5E,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;AAE/E,SAAS,IAAI,CAAC,IAA6B;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,IAAI,KAAK,oBAAoB,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;YACzB,sDAAsD;QACxD,CAAC,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,KAAK,iBAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7B,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxC,MAAM,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,OAAO;IACT,CAAC;IAED,IAAI,OAAO,GAAG,CAAC;QAAE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IAC1B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export { extractBrowserMediaPathHints, extractGeneratedImagesFromToolResult, extractSessionMediaFromToolResult, type MediaExtractionOptions, shouldExtractGeneratedImagesFromToolResult, } from "@alan-ai/agent-core";
2
- //# sourceMappingURL=generated-images.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generated-images.d.ts","sourceRoot":"","sources":["../src/generated-images.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,oCAAoC,EACpC,iCAAiC,EACjC,KAAK,sBAAsB,EAC3B,0CAA0C,GAC3C,MAAM,qBAAqB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { extractBrowserMediaPathHints, extractGeneratedImagesFromToolResult, extractSessionMediaFromToolResult, shouldExtractGeneratedImagesFromToolResult, } from "@alan-ai/agent-core";
2
- //# sourceMappingURL=generated-images.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generated-images.js","sourceRoot":"","sources":["../src/generated-images.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,oCAAoC,EACpC,iCAAiC,EAEjC,0CAA0C,GAC3C,MAAM,qBAAqB,CAAC"}
package/dist/index.d.ts DELETED
@@ -1,6 +0,0 @@
1
- /**
2
- * Alan Sandbox Agent
3
- * Runs inside E2B sandbox, connects to WS server, executes CoreAgent.
4
- */
5
- export {};
6
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}