@animalabs/agent-framework 0.23.2 → 0.24.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (338) hide show
  1. package/README.md +212 -42
  2. package/dist/src/agent.d.ts +60 -9
  3. package/dist/src/agent.d.ts.map +1 -1
  4. package/dist/src/agent.js +92 -12
  5. package/dist/src/agent.js.map +1 -1
  6. package/dist/src/api/server.d.ts.map +1 -1
  7. package/dist/src/api/server.js +14 -12
  8. package/dist/src/api/server.js.map +1 -1
  9. package/dist/src/code-execution/engine.d.ts +177 -0
  10. package/dist/src/code-execution/engine.d.ts.map +1 -0
  11. package/dist/src/code-execution/engine.js +494 -0
  12. package/dist/src/code-execution/engine.js.map +1 -0
  13. package/dist/src/code-execution/index.d.ts +5 -10
  14. package/dist/src/code-execution/index.d.ts.map +1 -1
  15. package/dist/src/code-execution/index.js +5 -9
  16. package/dist/src/code-execution/index.js.map +1 -1
  17. package/dist/src/code-execution/isolate/calls.d.ts +114 -0
  18. package/dist/src/code-execution/isolate/calls.d.ts.map +1 -0
  19. package/dist/src/code-execution/isolate/calls.js +145 -0
  20. package/dist/src/code-execution/isolate/calls.js.map +1 -0
  21. package/dist/src/code-execution/isolate/child-entry.d.ts +2 -0
  22. package/dist/src/code-execution/isolate/child-entry.d.ts.map +1 -0
  23. package/dist/src/code-execution/isolate/child-entry.js +5 -0
  24. package/dist/src/code-execution/isolate/child-entry.js.map +1 -0
  25. package/dist/src/code-execution/isolate/child-main.d.ts +26 -0
  26. package/dist/src/code-execution/isolate/child-main.d.ts.map +1 -0
  27. package/dist/src/code-execution/isolate/child-main.js +132 -0
  28. package/dist/src/code-execution/isolate/child-main.js.map +1 -0
  29. package/dist/src/code-execution/isolate/child.d.ts +44 -0
  30. package/dist/src/code-execution/isolate/child.d.ts.map +1 -0
  31. package/dist/src/code-execution/isolate/child.js +315 -0
  32. package/dist/src/code-execution/isolate/child.js.map +1 -0
  33. package/dist/src/code-execution/isolate/frames.d.ts +80 -0
  34. package/dist/src/code-execution/isolate/frames.d.ts.map +1 -0
  35. package/dist/src/code-execution/isolate/frames.js +210 -0
  36. package/dist/src/code-execution/isolate/frames.js.map +1 -0
  37. package/dist/src/code-execution/isolate/output.d.ts +68 -0
  38. package/dist/src/code-execution/isolate/output.d.ts.map +1 -0
  39. package/dist/src/code-execution/isolate/output.js +143 -0
  40. package/dist/src/code-execution/isolate/output.js.map +1 -0
  41. package/dist/src/code-execution/isolate/prelude.d.ts +109 -0
  42. package/dist/src/code-execution/isolate/prelude.d.ts.map +1 -0
  43. package/dist/src/code-execution/isolate/prelude.js +401 -0
  44. package/dist/src/code-execution/isolate/prelude.js.map +1 -0
  45. package/dist/src/code-execution/isolate/protocol.d.ts +151 -0
  46. package/dist/src/code-execution/isolate/protocol.d.ts.map +1 -0
  47. package/dist/src/code-execution/isolate/protocol.js +150 -0
  48. package/dist/src/code-execution/isolate/protocol.js.map +1 -0
  49. package/dist/src/code-execution/isolate/render.d.ts +57 -0
  50. package/dist/src/code-execution/isolate/render.d.ts.map +1 -0
  51. package/dist/src/code-execution/isolate/render.js +214 -0
  52. package/dist/src/code-execution/isolate/render.js.map +1 -0
  53. package/dist/src/code-execution/isolate/runner.d.ts +250 -0
  54. package/dist/src/code-execution/isolate/runner.d.ts.map +1 -0
  55. package/dist/src/code-execution/isolate/runner.js +854 -0
  56. package/dist/src/code-execution/isolate/runner.js.map +1 -0
  57. package/dist/src/code-execution/isolate/scripts.d.ts +175 -0
  58. package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -0
  59. package/dist/src/code-execution/isolate/scripts.js +357 -0
  60. package/dist/src/code-execution/isolate/scripts.js.map +1 -0
  61. package/dist/src/code-execution/quickjs.wasm +0 -0
  62. package/dist/src/code-execution/tool-definition.d.ts +93 -43
  63. package/dist/src/code-execution/tool-definition.d.ts.map +1 -1
  64. package/dist/src/code-execution/tool-definition.js +176 -142
  65. package/dist/src/code-execution/tool-definition.js.map +1 -1
  66. package/dist/src/deadline-timer.d.ts +3 -0
  67. package/dist/src/deadline-timer.d.ts.map +1 -1
  68. package/dist/src/deadline-timer.js +1 -1
  69. package/dist/src/deadline-timer.js.map +1 -1
  70. package/dist/src/framework.d.ts +1027 -440
  71. package/dist/src/framework.d.ts.map +1 -1
  72. package/dist/src/framework.js +4093 -2238
  73. package/dist/src/framework.js.map +1 -1
  74. package/dist/src/gate/event-gate.d.ts +28 -1
  75. package/dist/src/gate/event-gate.d.ts.map +1 -1
  76. package/dist/src/gate/event-gate.js +88 -10
  77. package/dist/src/gate/event-gate.js.map +1 -1
  78. package/dist/src/held-writes.d.ts +16 -3
  79. package/dist/src/held-writes.d.ts.map +1 -1
  80. package/dist/src/held-writes.js +16 -3
  81. package/dist/src/held-writes.js.map +1 -1
  82. package/dist/src/index.d.ts +6 -6
  83. package/dist/src/index.d.ts.map +1 -1
  84. package/dist/src/index.js +9 -8
  85. package/dist/src/index.js.map +1 -1
  86. package/dist/src/mcpl/channel-registry.d.ts +471 -75
  87. package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
  88. package/dist/src/mcpl/channel-registry.js +1673 -337
  89. package/dist/src/mcpl/channel-registry.js.map +1 -1
  90. package/dist/src/mcpl/conversation-router.d.ts +12 -7
  91. package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
  92. package/dist/src/mcpl/conversation-router.js +12 -7
  93. package/dist/src/mcpl/conversation-router.js.map +1 -1
  94. package/dist/src/mcpl/convert-block.d.ts.map +1 -1
  95. package/dist/src/mcpl/convert-block.js +9 -5
  96. package/dist/src/mcpl/convert-block.js.map +1 -1
  97. package/dist/src/mcpl/inbound-source.d.ts +50 -0
  98. package/dist/src/mcpl/inbound-source.d.ts.map +1 -1
  99. package/dist/src/mcpl/inbound-source.js +130 -0
  100. package/dist/src/mcpl/inbound-source.js.map +1 -1
  101. package/dist/src/mcpl/index.d.ts +2 -1
  102. package/dist/src/mcpl/index.d.ts.map +1 -1
  103. package/dist/src/mcpl/index.js +3 -2
  104. package/dist/src/mcpl/index.js.map +1 -1
  105. package/dist/src/mcpl/log-value.d.ts +6 -0
  106. package/dist/src/mcpl/log-value.d.ts.map +1 -1
  107. package/dist/src/mcpl/log-value.js +8 -0
  108. package/dist/src/mcpl/log-value.js.map +1 -1
  109. package/dist/src/mcpl/modern-connection.d.ts +15 -6
  110. package/dist/src/mcpl/modern-connection.d.ts.map +1 -1
  111. package/dist/src/mcpl/modern-connection.js +168 -53
  112. package/dist/src/mcpl/modern-connection.js.map +1 -1
  113. package/dist/src/mcpl/prose-grammar.d.ts +4 -5
  114. package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
  115. package/dist/src/mcpl/prose-grammar.js +4 -5
  116. package/dist/src/mcpl/prose-grammar.js.map +1 -1
  117. package/dist/src/mcpl/protocol-family.d.ts +97 -10
  118. package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
  119. package/dist/src/mcpl/protocol-family.js +173 -16
  120. package/dist/src/mcpl/protocol-family.js.map +1 -1
  121. package/dist/src/mcpl/push-coalescer.d.ts +132 -14
  122. package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
  123. package/dist/src/mcpl/push-coalescer.js +227 -50
  124. package/dist/src/mcpl/push-coalescer.js.map +1 -1
  125. package/dist/src/mcpl/push-handler.d.ts +6 -1
  126. package/dist/src/mcpl/push-handler.d.ts.map +1 -1
  127. package/dist/src/mcpl/push-handler.js +4 -1
  128. package/dist/src/mcpl/push-handler.js.map +1 -1
  129. package/dist/src/mcpl/reference-fetcher.d.ts +2 -2
  130. package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
  131. package/dist/src/mcpl/reference-fetcher.js +4 -4
  132. package/dist/src/mcpl/reference-fetcher.js.map +1 -1
  133. package/dist/src/mcpl/server-connection.d.ts +50 -21
  134. package/dist/src/mcpl/server-connection.d.ts.map +1 -1
  135. package/dist/src/mcpl/server-connection.js +158 -74
  136. package/dist/src/mcpl/server-connection.js.map +1 -1
  137. package/dist/src/mcpl/tags.d.ts +24 -0
  138. package/dist/src/mcpl/tags.d.ts.map +1 -1
  139. package/dist/src/mcpl/tags.js +33 -0
  140. package/dist/src/mcpl/tags.js.map +1 -1
  141. package/dist/src/mcpl/tool-result-normalize.d.ts +2 -1
  142. package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
  143. package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
  144. package/dist/src/mcpl/transport.d.ts +55 -7
  145. package/dist/src/mcpl/transport.d.ts.map +1 -1
  146. package/dist/src/mcpl/transport.js +163 -34
  147. package/dist/src/mcpl/transport.js.map +1 -1
  148. package/dist/src/mcpl/types.d.ts +22 -6
  149. package/dist/src/mcpl/types.d.ts.map +1 -1
  150. package/dist/src/mcpl/types.js.map +1 -1
  151. package/dist/src/module-registry.d.ts +4 -2
  152. package/dist/src/module-registry.d.ts.map +1 -1
  153. package/dist/src/module-registry.js +100 -13
  154. package/dist/src/module-registry.js.map +1 -1
  155. package/dist/src/modules/discord/index.d.ts.map +1 -1
  156. package/dist/src/modules/discord/index.js +8 -13
  157. package/dist/src/modules/discord/index.js.map +1 -1
  158. package/dist/src/modules/history/index.d.ts.map +1 -1
  159. package/dist/src/modules/history/index.js +27 -4
  160. package/dist/src/modules/history/index.js.map +1 -1
  161. package/dist/src/modules/history/semantic.d.ts +15 -3
  162. package/dist/src/modules/history/semantic.d.ts.map +1 -1
  163. package/dist/src/modules/history/semantic.js +27 -5
  164. package/dist/src/modules/history/semantic.js.map +1 -1
  165. package/dist/src/modules/index.d.ts +1 -1
  166. package/dist/src/modules/index.d.ts.map +1 -1
  167. package/dist/src/modules/index.js.map +1 -1
  168. package/dist/src/modules/unknown-tool.d.ts +4 -1
  169. package/dist/src/modules/unknown-tool.d.ts.map +1 -1
  170. package/dist/src/modules/unknown-tool.js +4 -1
  171. package/dist/src/modules/unknown-tool.js.map +1 -1
  172. package/dist/src/modules/workspace/branch-intent.d.ts +3 -1
  173. package/dist/src/modules/workspace/branch-intent.d.ts.map +1 -1
  174. package/dist/src/modules/workspace/branch-intent.js +3 -1
  175. package/dist/src/modules/workspace/branch-intent.js.map +1 -1
  176. package/dist/src/modules/workspace/edit-plan.d.ts +265 -0
  177. package/dist/src/modules/workspace/edit-plan.d.ts.map +1 -0
  178. package/dist/src/modules/workspace/edit-plan.js +794 -0
  179. package/dist/src/modules/workspace/edit-plan.js.map +1 -0
  180. package/dist/src/modules/workspace/edit-text.d.ts +117 -0
  181. package/dist/src/modules/workspace/edit-text.d.ts.map +1 -0
  182. package/dist/src/modules/workspace/edit-text.js +584 -0
  183. package/dist/src/modules/workspace/edit-text.js.map +1 -0
  184. package/dist/src/modules/workspace/effects.d.ts +5 -4
  185. package/dist/src/modules/workspace/effects.d.ts.map +1 -1
  186. package/dist/src/modules/workspace/effects.js +78 -25
  187. package/dist/src/modules/workspace/effects.js.map +1 -1
  188. package/dist/src/modules/workspace/index.d.ts +484 -61
  189. package/dist/src/modules/workspace/index.d.ts.map +1 -1
  190. package/dist/src/modules/workspace/index.js +2173 -645
  191. package/dist/src/modules/workspace/index.js.map +1 -1
  192. package/dist/src/modules/workspace/observe.d.ts +213 -38
  193. package/dist/src/modules/workspace/observe.d.ts.map +1 -1
  194. package/dist/src/modules/workspace/observe.js +416 -36
  195. package/dist/src/modules/workspace/observe.js.map +1 -1
  196. package/dist/src/modules/workspace/reconcile.d.ts.map +1 -1
  197. package/dist/src/modules/workspace/reconcile.js +15 -8
  198. package/dist/src/modules/workspace/reconcile.js.map +1 -1
  199. package/dist/src/modules/workspace/text.d.ts +32 -0
  200. package/dist/src/modules/workspace/text.d.ts.map +1 -0
  201. package/dist/src/modules/workspace/text.js +67 -0
  202. package/dist/src/modules/workspace/text.js.map +1 -0
  203. package/dist/src/modules/workspace/types.d.ts +210 -6
  204. package/dist/src/modules/workspace/types.d.ts.map +1 -1
  205. package/dist/src/modules/workspace/types.js.map +1 -1
  206. package/dist/src/modules/workspace/watcher.d.ts +3 -2
  207. package/dist/src/modules/workspace/watcher.d.ts.map +1 -1
  208. package/dist/src/modules/workspace/watcher.js.map +1 -1
  209. package/dist/src/operator-log.d.ts +52 -24
  210. package/dist/src/operator-log.d.ts.map +1 -1
  211. package/dist/src/operator-log.js.map +1 -1
  212. package/dist/src/recovery/discord-awareness-outbox.d.ts +496 -72
  213. package/dist/src/recovery/discord-awareness-outbox.d.ts.map +1 -1
  214. package/dist/src/recovery/discord-awareness-outbox.js +1196 -289
  215. package/dist/src/recovery/discord-awareness-outbox.js.map +1 -1
  216. package/dist/src/recovery/offline-branch.d.ts +26 -1
  217. package/dist/src/recovery/offline-branch.d.ts.map +1 -1
  218. package/dist/src/recovery/offline-branch.js +164 -39
  219. package/dist/src/recovery/offline-branch.js.map +1 -1
  220. package/dist/src/recovery/recover-cli.js +23 -4
  221. package/dist/src/recovery/recover-cli.js.map +1 -1
  222. package/dist/src/send-tools.d.ts +11 -0
  223. package/dist/src/send-tools.d.ts.map +1 -0
  224. package/dist/src/send-tools.js +11 -0
  225. package/dist/src/send-tools.js.map +1 -0
  226. package/dist/src/tool-result-guard.d.ts +4 -3
  227. package/dist/src/tool-result-guard.d.ts.map +1 -1
  228. package/dist/src/tool-result-guard.js +5 -4
  229. package/dist/src/tool-result-guard.js.map +1 -1
  230. package/dist/src/tool-result-history.d.ts +1 -1
  231. package/dist/src/tool-result-history.js +1 -1
  232. package/dist/src/tune-out/coordinator.d.ts +21 -0
  233. package/dist/src/tune-out/coordinator.d.ts.map +1 -1
  234. package/dist/src/tune-out/coordinator.js +139 -37
  235. package/dist/src/tune-out/coordinator.js.map +1 -1
  236. package/dist/src/types/agent.d.ts +4 -0
  237. package/dist/src/types/agent.d.ts.map +1 -1
  238. package/dist/src/types/events.d.ts +62 -9
  239. package/dist/src/types/events.d.ts.map +1 -1
  240. package/dist/src/types/framework.d.ts +62 -58
  241. package/dist/src/types/framework.d.ts.map +1 -1
  242. package/dist/src/types/module.d.ts +40 -8
  243. package/dist/src/types/module.d.ts.map +1 -1
  244. package/dist/src/types/trace.d.ts +111 -10
  245. package/dist/src/types/trace.d.ts.map +1 -1
  246. package/dist/src/usage/types.d.ts +16 -0
  247. package/dist/src/usage/types.d.ts.map +1 -1
  248. package/dist/src/usage/usage-tracker.d.ts +14 -1
  249. package/dist/src/usage/usage-tracker.d.ts.map +1 -1
  250. package/dist/src/usage/usage-tracker.js +81 -41
  251. package/dist/src/usage/usage-tracker.js.map +1 -1
  252. package/package.json +6 -5
  253. package/src/agent.ts +93 -12
  254. package/src/api/server.ts +14 -12
  255. package/src/code-execution/engine.ts +595 -0
  256. package/src/code-execution/index.ts +5 -17
  257. package/src/code-execution/isolate/calls.ts +199 -0
  258. package/src/code-execution/isolate/child-entry.ts +5 -0
  259. package/src/code-execution/isolate/child-main.ts +132 -0
  260. package/src/code-execution/isolate/child.ts +327 -0
  261. package/src/code-execution/isolate/frames.ts +209 -0
  262. package/src/code-execution/isolate/output.ts +161 -0
  263. package/src/code-execution/isolate/prelude.ts +409 -0
  264. package/src/code-execution/isolate/protocol.ts +240 -0
  265. package/src/code-execution/isolate/render.ts +230 -0
  266. package/src/code-execution/isolate/runner.ts +911 -0
  267. package/src/code-execution/isolate/scripts.ts +479 -0
  268. package/src/code-execution/quickjs.wasm +0 -0
  269. package/src/code-execution/quickjs.wasm.LICENSES +149 -0
  270. package/src/code-execution/tool-definition.ts +236 -167
  271. package/src/deadline-timer.ts +1 -1
  272. package/src/framework.ts +4468 -2418
  273. package/src/gate/event-gate.ts +78 -11
  274. package/src/held-writes.ts +17 -3
  275. package/src/index.ts +30 -22
  276. package/src/mcpl/channel-registry.ts +1825 -368
  277. package/src/mcpl/conversation-router.ts +12 -7
  278. package/src/mcpl/convert-block.ts +9 -5
  279. package/src/mcpl/inbound-source.ts +131 -0
  280. package/src/mcpl/index.ts +4 -2
  281. package/src/mcpl/log-value.ts +9 -0
  282. package/src/mcpl/modern-connection.ts +162 -53
  283. package/src/mcpl/prose-grammar.ts +4 -5
  284. package/src/mcpl/protocol-family.ts +199 -21
  285. package/src/mcpl/push-coalescer.ts +306 -62
  286. package/src/mcpl/push-handler.ts +10 -2
  287. package/src/mcpl/reference-fetcher.ts +4 -4
  288. package/src/mcpl/server-connection.ts +180 -79
  289. package/src/mcpl/tags.ts +36 -0
  290. package/src/mcpl/tool-result-normalize.ts +2 -1
  291. package/src/mcpl/transport.ts +162 -33
  292. package/src/mcpl/types.ts +23 -6
  293. package/src/module-registry.ts +92 -13
  294. package/src/modules/discord/index.ts +8 -13
  295. package/src/modules/history/index.ts +25 -3
  296. package/src/modules/history/semantic.ts +29 -6
  297. package/src/modules/index.ts +1 -0
  298. package/src/modules/unknown-tool.ts +4 -1
  299. package/src/modules/workspace/branch-intent.ts +3 -1
  300. package/src/modules/workspace/edit-plan.ts +954 -0
  301. package/src/modules/workspace/edit-text.ts +618 -0
  302. package/src/modules/workspace/effects.ts +70 -19
  303. package/src/modules/workspace/index.ts +2247 -642
  304. package/src/modules/workspace/observe.ts +465 -56
  305. package/src/modules/workspace/reconcile.ts +14 -7
  306. package/src/modules/workspace/text.ts +68 -0
  307. package/src/modules/workspace/types.ts +211 -6
  308. package/src/modules/workspace/watcher.ts +3 -2
  309. package/src/operator-log.ts +47 -19
  310. package/src/recovery/discord-awareness-outbox.ts +1500 -356
  311. package/src/recovery/offline-branch.ts +189 -55
  312. package/src/recovery/recover-cli.ts +25 -4
  313. package/src/send-tools.ts +11 -0
  314. package/src/tool-result-guard.ts +6 -5
  315. package/src/tool-result-history.ts +1 -1
  316. package/src/tune-out/coordinator.ts +163 -42
  317. package/src/types/agent.ts +4 -0
  318. package/src/types/events.ts +62 -9
  319. package/src/types/framework.ts +62 -58
  320. package/src/types/module.ts +40 -8
  321. package/src/types/trace.ts +121 -15
  322. package/src/usage/types.ts +16 -0
  323. package/src/usage/usage-tracker.ts +86 -43
  324. package/dist/src/code-execution/py-runner.d.ts +0 -191
  325. package/dist/src/code-execution/py-runner.d.ts.map +0 -1
  326. package/dist/src/code-execution/py-runner.js +0 -655
  327. package/dist/src/code-execution/py-runner.js.map +0 -1
  328. package/dist/src/code-execution/runtime-py.d.ts +0 -50
  329. package/dist/src/code-execution/runtime-py.d.ts.map +0 -1
  330. package/dist/src/code-execution/runtime-py.js +0 -677
  331. package/dist/src/code-execution/runtime-py.js.map +0 -1
  332. package/dist/src/mcpl/prose-stream-router.d.ts +0 -88
  333. package/dist/src/mcpl/prose-stream-router.d.ts.map +0 -1
  334. package/dist/src/mcpl/prose-stream-router.js +0 -291
  335. package/dist/src/mcpl/prose-stream-router.js.map +0 -1
  336. package/src/code-execution/py-runner.ts +0 -791
  337. package/src/code-execution/runtime-py.ts +0 -677
  338. package/src/mcpl/prose-stream-router.ts +0 -268
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../../src/code-execution/isolate/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ /**
2
+ * Every agent's scripts: one kind of script, which runs in its agent's turn
3
+ * and, past its bound, yields with its output so far and keeps running. The
4
+ * agent then waits on it, stops it, or leaves it.
5
+ *
6
+ * - A left script that finishes cleanly, or that its agent stopped, says
7
+ * nothing; its result waits for a `wait` or a `list`, kept for the agent's
8
+ * newest ended scripts. One that fails, crashes or is stopped at its limit
9
+ * wakes its agent with its ending.
10
+ * - Only the primary agent's scripts outlive a turn (any agent's, when no
11
+ * primary agent is named). Another agent's yield says so, and at its turn's
12
+ * end its running scripts are stopped, as "stopped at its limit". That stop
13
+ * wakes no one, since the agent was told at the yield.
14
+ * - A turn that ends abnormally (a stream cancelled, an error, a quiesce)
15
+ * while a call still watches its script stops the script quietly if it
16
+ * hasn't returned yet; a wait it abandons leaves its script running, so a
17
+ * later failure still wakes the agent. A return made just before such an
18
+ * end counts as made, though its result is lost with the turn's.
19
+ * - An agent has at most `maxRunning` scripts running, and the host at most
20
+ * its capacity of children.
21
+ * - `wake_agent()` keeps today's spacing and cap: an early wake waits for its
22
+ * turn rather than being dropped, and past the cap it's refused. A wake
23
+ * still waiting for its turn when its script ends is never sent.
24
+ *
25
+ * The framework supplies what this can't know: the agent's tools now, the
26
+ * dispatcher a script's calls go through, and how to wake an agent.
27
+ */
28
+ import { ChildCapacity, type Ending, type ToolAnswer } from './runner.js';
29
+ import type { CallSummary } from './calls.js';
30
+ import type { OutputBounds, OutputWindow } from './output.js';
31
+ import type { PreludeTool } from './prelude.js';
32
+ /** The run or wait call watching a script: its turn, which the script's calls carry, and whether one of them ended that turn. */
33
+ export interface ScriptWatch {
34
+ turnId?: number;
35
+ endTurn: boolean;
36
+ }
37
+ /** What the framework keeps with a script, handed back with each of its calls. */
38
+ export interface ScriptCallContext {
39
+ /** RFC-007: what the script's calls are attributed to, its run call's origin. */
40
+ origin?: unknown;
41
+ /** The call watching the script when this call reached the host (`host.dispatch`), if one was: the call carries its turn. One the script made while watched that waited, with 16 of its calls already out, takes the watch as it stood when it went out, not when the script made it. */
42
+ watch?: ScriptWatch;
43
+ /** The call watching the script now, if one is: a result that ends the turn ends it at that call's return. Without it, `watch`. */
44
+ watching?(): ScriptWatch | undefined;
45
+ }
46
+ export interface ScriptsHost {
47
+ /** The tools a script of this agent may call now, without code_execution itself. */
48
+ tools(agentName: string): PreludeTool[];
49
+ /** The bridge: dispatch one of the script's calls as its agent's, through the ordinary dispatcher. Never rejects. */
50
+ dispatch(agentName: string, toolName: string, argsJson: string, context: ScriptCallContext): Promise<ToolAnswer>;
51
+ /** Wake the agent with this text: a script's wake_agent() payload, or a left script's ending. `label` names this wake, for a spilled copy. */
52
+ wake(agentName: string, scriptId: string, text: string, label: string): Promise<void>;
53
+ /** Whether this agent's scripts may outlive its turn. */
54
+ outlivesTurn(agentName: string): boolean;
55
+ }
56
+ export interface ScriptsConfig {
57
+ childEntry: string;
58
+ execPath?: string;
59
+ memoryMaxBytes: number;
60
+ maxStackBytes?: number;
61
+ output: OutputBounds;
62
+ flushMs: number;
63
+ /** The bound a run or wait yields at by default, and the most an agent may ask. */
64
+ yieldMs: number;
65
+ maxYieldMs: number;
66
+ /** A script's limit. */
67
+ lifetimeMs: number;
68
+ toolCallTimeoutMs: number;
69
+ stopGraceMs: number;
70
+ /** Scripts one agent may have running at once, yielded ones included. */
71
+ maxRunning: number;
72
+ /** Ended scripts kept per agent for a later wait or list. */
73
+ keepEnded: number;
74
+ wakeMinIntervalMs: number;
75
+ maxWakesPerScript: number;
76
+ }
77
+ /** What one run, wait or stop returns. */
78
+ export interface ScriptReturn {
79
+ scriptId: string;
80
+ /** Still running past the bound, or ended. */
81
+ running: boolean;
82
+ /** The output since this script's previous return. */
83
+ output: OutputWindow;
84
+ /** True for the script's first return. */
85
+ first: boolean;
86
+ calls: CallSummary;
87
+ ending: Ending | null;
88
+ /** True when this agent's script will be stopped at the end of its turn unless it waits for it. */
89
+ stopsAtTurnEnd: boolean;
90
+ }
91
+ /** One script in a listing. */
92
+ export interface ScriptListing {
93
+ scriptId: string;
94
+ running: boolean;
95
+ ending: Ending | null;
96
+ startedAt: number;
97
+ endedAt: number | null;
98
+ /** The wakes the host delivered for it. */
99
+ wakes: number;
100
+ }
101
+ /** Why a run, wait or stop couldn't be done: nothing was run or changed. */
102
+ export declare class ScriptRefusal extends Error {
103
+ constructor(message: string);
104
+ }
105
+ /** The endings that wake a left script's agent: it didn't do its work, and not by its agent's choice. */
106
+ export declare function endingWakes(ending: Ending): boolean;
107
+ export declare class AgentScripts {
108
+ private readonly host;
109
+ private readonly config;
110
+ private readonly capacity;
111
+ private readonly scripts;
112
+ /**
113
+ * Marks this host's script ids, so an id from before a restart, still in an
114
+ * agent's history, almost surely names no script of this one: four base-36
115
+ * characters, so about one restart in 1.7 million draws the tag of the host
116
+ * before it, and an old id could then name a new script of the same agent.
117
+ */
118
+ private readonly idTag;
119
+ /** Every run whose child process hasn't exited, kept or not: dispose() ends any still alive. */
120
+ private readonly live;
121
+ private counter;
122
+ private endedCounter;
123
+ constructor(host: ScriptsHost, config: ScriptsConfig, capacity: ChildCapacity);
124
+ /** The bound for this call: the agent's ask, capped, or the default. */
125
+ bound(askedMs: number | undefined): number;
126
+ run(agentName: string, code: string, askedMs?: number, options?: {
127
+ origin?: unknown;
128
+ watch?: ScriptWatch;
129
+ }): Promise<ScriptReturn>;
130
+ wait(agentName: string, scriptId: string, askedMs?: number, watch?: ScriptWatch): Promise<ScriptReturn>;
131
+ stop(agentName: string, scriptId: string, watch?: ScriptWatch): Promise<ScriptReturn>;
132
+ /** The code of this agent's script by that id, as a wait or a stop would find the script; undefined when the agent has none by it. */
133
+ codeOf(agentName: string, scriptId: string): string | undefined;
134
+ list(agentName: string): ScriptListing[];
135
+ /**
136
+ * An agent's turn ended: `turn.id`, with `turn.live` the agent's turns still
137
+ * live (its open turn, and the turn of the stream that holds the agent), or
138
+ * `'every'` when all its turns end at once (the host stopping, or a quiesce
139
+ * that names no turn of its own).
140
+ * Turns can overlap, a silent one beside an open one, so each script goes by
141
+ * its own turn, the one its run call was made in. A turn that ended without
142
+ * its calls' answers (`abandoned`) leaves its calls watching scripts with no
143
+ * one to answer, whatever the agent: a script that hasn't returned yet is
144
+ * stopped, and one that has is let go. An agent whose scripts don't outlive
145
+ * a turn has stopped every script whose turn isn't live, and every one
146
+ * started in no turn: a script lives while the turn that started it does.
147
+ */
148
+ turnEnded(agentName: string, turn: {
149
+ id: number;
150
+ live: readonly number[];
151
+ } | 'every', abandoned: boolean, reason?: string): void;
152
+ /**
153
+ * An agent that has gone, such as an ephemeral one whose run ended: its
154
+ * scripts are stopped, and each leaves the map once it has ended, since no
155
+ * later run of the agent will trim them.
156
+ */
157
+ agentGone(agentName: string): void;
158
+ /** Stop every running script, as the framework stops, and end any child process still alive after its script's ending. */
159
+ dispose(): Promise<void>;
160
+ /** Running scripts of this agent, yielded ones included; not those of an earlier agent of its name that has gone, which the host's count still holds. */
161
+ running(agentName: string): number;
162
+ /** Running scripts that no call is watching: those acting outside any turn. */
163
+ leftRunning(): number;
164
+ private stopQuietly;
165
+ private own;
166
+ /** A script no other call is watching now: one watching it gets its output and its ending. */
167
+ private unwatched;
168
+ private observe;
169
+ private ended;
170
+ /** Send the script's `n`th wake, whose turn the run has waited for. */
171
+ private wake;
172
+ /** Keep only the agent's newest ended scripts, newest by the order their endings came in. */
173
+ private trimEnded;
174
+ }
175
+ //# sourceMappingURL=scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.d.ts","sourceRoot":"","sources":["../../../../src/code-execution/isolate/scripts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,357 @@
1
+ /**
2
+ * Every agent's scripts: one kind of script, which runs in its agent's turn
3
+ * and, past its bound, yields with its output so far and keeps running. The
4
+ * agent then waits on it, stops it, or leaves it.
5
+ *
6
+ * - A left script that finishes cleanly, or that its agent stopped, says
7
+ * nothing; its result waits for a `wait` or a `list`, kept for the agent's
8
+ * newest ended scripts. One that fails, crashes or is stopped at its limit
9
+ * wakes its agent with its ending.
10
+ * - Only the primary agent's scripts outlive a turn (any agent's, when no
11
+ * primary agent is named). Another agent's yield says so, and at its turn's
12
+ * end its running scripts are stopped, as "stopped at its limit". That stop
13
+ * wakes no one, since the agent was told at the yield.
14
+ * - A turn that ends abnormally (a stream cancelled, an error, a quiesce)
15
+ * while a call still watches its script stops the script quietly if it
16
+ * hasn't returned yet; a wait it abandons leaves its script running, so a
17
+ * later failure still wakes the agent. A return made just before such an
18
+ * end counts as made, though its result is lost with the turn's.
19
+ * - An agent has at most `maxRunning` scripts running, and the host at most
20
+ * its capacity of children.
21
+ * - `wake_agent()` keeps today's spacing and cap: an early wake waits for its
22
+ * turn rather than being dropped, and past the cap it's refused. A wake
23
+ * still waiting for its turn when its script ends is never sent.
24
+ *
25
+ * The framework supplies what this can't know: the agent's tools now, the
26
+ * dispatcher a script's calls go through, and how to wake an agent.
27
+ */
28
+ import { ScriptRun } from './runner.js';
29
+ import { glimpse } from './render.js';
30
+ /** Why a run, wait or stop couldn't be done: nothing was run or changed. */
31
+ export class ScriptRefusal extends Error {
32
+ constructor(message) {
33
+ super(message);
34
+ this.name = 'ScriptRefusal';
35
+ }
36
+ }
37
+ /** The endings that wake a left script's agent: it didn't do its work, and not by its agent's choice. */
38
+ export function endingWakes(ending) {
39
+ return ending.how === 'failed' || ending.how === 'crashed' || (ending.how === 'stopped' && ending.reason === 'limit');
40
+ }
41
+ export class AgentScripts {
42
+ host;
43
+ config;
44
+ capacity;
45
+ scripts = new Map();
46
+ /**
47
+ * Marks this host's script ids, so an id from before a restart, still in an
48
+ * agent's history, almost surely names no script of this one: four base-36
49
+ * characters, so about one restart in 1.7 million draws the tag of the host
50
+ * before it, and an old id could then name a new script of the same agent.
51
+ */
52
+ idTag = Math.random().toString(36).slice(2, 6).padEnd(4, '0');
53
+ /** Every run whose child process hasn't exited, kept or not: dispose() ends any still alive. */
54
+ live = new Set();
55
+ counter = 0;
56
+ endedCounter = 0;
57
+ constructor(host, config, capacity) {
58
+ this.host = host;
59
+ this.config = config;
60
+ this.capacity = capacity;
61
+ }
62
+ /** The bound for this call: the agent's ask, capped, or the default. */
63
+ bound(askedMs) {
64
+ return askedMs === undefined ? this.config.yieldMs : Math.min(askedMs, this.config.maxYieldMs);
65
+ }
66
+ async run(agentName, code, askedMs, options = {}) {
67
+ // Listed first, so a module whose tool list throws refuses the run with nothing taken.
68
+ let tools;
69
+ try {
70
+ tools = this.host.tools(agentName);
71
+ }
72
+ catch (err) {
73
+ throw new ScriptRefusal(`The script's tools couldn't be listed: ${err instanceof Error ? err.message : String(err)}. Nothing was run.`);
74
+ }
75
+ const running = this.running(agentName);
76
+ if (running >= this.config.maxRunning) {
77
+ throw new ScriptRefusal(`You have ${running} scripts running, your most. Wait for one, stop one, or let one end before you start another. Nothing was run.`);
78
+ }
79
+ if (!this.capacity.take()) {
80
+ throw new ScriptRefusal(`This host is running ${this.capacity.running} scripts, its most. Try again once one has ended. Nothing was run.`);
81
+ }
82
+ const id = `s${++this.counter}-${this.idTag}`;
83
+ const script = {
84
+ id,
85
+ agentName,
86
+ code,
87
+ run: null,
88
+ context: options.origin === undefined ? {} : { origin: options.origin },
89
+ turnId: options.watch?.turnId,
90
+ startedAt: Date.now(),
91
+ endedAt: null,
92
+ endedSeq: 0,
93
+ delivering: null,
94
+ watch: options.watch ?? { endTurn: false },
95
+ quietEnd: false,
96
+ gone: false,
97
+ returns: 0,
98
+ endingReturned: false,
99
+ };
100
+ const runOptions = {
101
+ childEntry: this.config.childEntry,
102
+ ...(this.config.execPath ? { execPath: this.config.execPath } : {}),
103
+ memoryMaxBytes: this.config.memoryMaxBytes,
104
+ ...(this.config.maxStackBytes === undefined ? {} : { maxStackBytes: this.config.maxStackBytes }),
105
+ output: this.config.output,
106
+ flushMs: this.config.flushMs,
107
+ lifetimeMs: this.config.lifetimeMs,
108
+ toolCallTimeoutMs: this.config.toolCallTimeoutMs,
109
+ stopGraceMs: this.config.stopGraceMs,
110
+ wakeMinIntervalMs: this.config.wakeMinIntervalMs,
111
+ maxWakes: this.config.maxWakesPerScript,
112
+ onToolCall: (name, args) => this.host.dispatch(agentName, name, args, {
113
+ ...script.context,
114
+ ...(script.watch ? { watch: script.watch } : {}),
115
+ watching: () => script.watch ?? undefined,
116
+ }),
117
+ onWake: (payload, n) => this.wake(script, payload, n),
118
+ onEnd: (ending) => this.ended(script, ending),
119
+ };
120
+ script.run = new ScriptRun(runOptions);
121
+ const run = script.run;
122
+ this.live.add(run);
123
+ void run.exited.then(() => {
124
+ this.live.delete(run);
125
+ this.capacity.release();
126
+ });
127
+ try {
128
+ script.run.start(code, tools);
129
+ }
130
+ catch (err) {
131
+ // Nothing was spawned, and `exited` has resolved, which frees the place.
132
+ throw new ScriptRefusal(`The script's process could not start: ${err instanceof Error ? err.message : String(err)}. Nothing was run.`);
133
+ }
134
+ this.scripts.set(id, script);
135
+ // A script that ended at its start, before it was in the map, trimmed
136
+ // without itself: the trim is taken again with it there.
137
+ this.trimEnded(agentName);
138
+ return this.observe(script, this.bound(askedMs), script.watch);
139
+ }
140
+ async wait(agentName, scriptId, askedMs, watch = { endTurn: false }) {
141
+ const script = this.unwatched(this.own(agentName, scriptId));
142
+ script.watch = watch;
143
+ return this.observe(script, this.bound(askedMs), watch);
144
+ }
145
+ async stop(agentName, scriptId, watch = { endTurn: false }) {
146
+ const script = this.unwatched(this.own(agentName, scriptId));
147
+ script.watch = watch;
148
+ // A run that has ended returns its ending to this stop: marked before the
149
+ // stop yields, as observe marks a wait's, so a notice whose turn comes
150
+ // first doesn't repeat it.
151
+ if (script.run.ended)
152
+ script.endingReturned = true;
153
+ await script.run.stop('agent');
154
+ return this.observe(script, 0, watch);
155
+ }
156
+ /** The code of this agent's script by that id, as a wait or a stop would find the script; undefined when the agent has none by it. */
157
+ codeOf(agentName, scriptId) {
158
+ const script = this.scripts.get(scriptId);
159
+ return script && script.agentName === agentName && !script.gone ? script.code : undefined;
160
+ }
161
+ list(agentName) {
162
+ return [...this.scripts.values()]
163
+ .filter((s) => s.agentName === agentName && !s.gone)
164
+ .map((s) => ({
165
+ scriptId: s.id,
166
+ running: !s.run.ended,
167
+ ending: s.run.snapshot().ending,
168
+ startedAt: s.startedAt,
169
+ endedAt: s.endedAt,
170
+ wakes: s.run.wakesDelivered,
171
+ }));
172
+ }
173
+ /**
174
+ * An agent's turn ended: `turn.id`, with `turn.live` the agent's turns still
175
+ * live (its open turn, and the turn of the stream that holds the agent), or
176
+ * `'every'` when all its turns end at once (the host stopping, or a quiesce
177
+ * that names no turn of its own).
178
+ * Turns can overlap, a silent one beside an open one, so each script goes by
179
+ * its own turn, the one its run call was made in. A turn that ended without
180
+ * its calls' answers (`abandoned`) leaves its calls watching scripts with no
181
+ * one to answer, whatever the agent: a script that hasn't returned yet is
182
+ * stopped, and one that has is let go. An agent whose scripts don't outlive
183
+ * a turn has stopped every script whose turn isn't live, and every one
184
+ * started in no turn: a script lives while the turn that started it does.
185
+ */
186
+ turnEnded(agentName, turn, abandoned, reason) {
187
+ const outlives = this.host.outlivesTurn(agentName);
188
+ for (const script of this.scripts.values()) {
189
+ if (script.agentName !== agentName || script.gone || script.run.ended)
190
+ continue;
191
+ if (abandoned && script.watch && (turn === 'every' || script.watch.turnId === turn.id)) {
192
+ if (script.returns === 0) {
193
+ this.stopQuietly(script, `its turn ended before the script returned${reason ? ` (${reason})` : ''}`);
194
+ continue;
195
+ }
196
+ script.watch = null;
197
+ }
198
+ if (outlives)
199
+ continue;
200
+ if (turn !== 'every' && script.turnId !== undefined && turn.live.includes(script.turnId))
201
+ continue;
202
+ this.stopQuietly(script, "its agent's turn ended, and only the primary agent's scripts outlive a turn");
203
+ }
204
+ }
205
+ /**
206
+ * An agent that has gone, such as an ephemeral one whose run ended: its
207
+ * scripts are stopped, and each leaves the map once it has ended, since no
208
+ * later run of the agent will trim them.
209
+ */
210
+ agentGone(agentName) {
211
+ for (const script of [...this.scripts.values()]) {
212
+ if (script.agentName !== agentName || script.gone)
213
+ continue;
214
+ if (script.run.ended) {
215
+ this.scripts.delete(script.id);
216
+ continue;
217
+ }
218
+ script.gone = true;
219
+ this.stopQuietly(script, 'its agent ended');
220
+ }
221
+ }
222
+ /** Stop every running script, as the framework stops, and end any child process still alive after its script's ending. */
223
+ async dispose() {
224
+ const running = [...this.scripts.values()].filter((s) => !s.run.ended);
225
+ for (const script of running)
226
+ script.quietEnd = true;
227
+ await Promise.all(running.map((s) => s.run.stop('limit', 'the host stopped')));
228
+ await Promise.all([...this.live].map((run) => run.kill()));
229
+ }
230
+ /** Running scripts of this agent, yielded ones included; not those of an earlier agent of its name that has gone, which the host's count still holds. */
231
+ running(agentName) {
232
+ return [...this.scripts.values()].filter((s) => s.agentName === agentName && !s.gone && !s.run.ended).length;
233
+ }
234
+ /** Running scripts that no call is watching: those acting outside any turn. */
235
+ leftRunning() {
236
+ return [...this.scripts.values()].filter((s) => !s.run.ended && s.watch === null).length;
237
+ }
238
+ stopQuietly(script, why) {
239
+ script.quietEnd = true;
240
+ script.watch = null;
241
+ void script.run.stop('limit', why);
242
+ }
243
+ own(agentName, scriptId) {
244
+ const script = this.scripts.get(scriptId);
245
+ if (!script || script.agentName !== agentName || script.gone) {
246
+ throw new ScriptRefusal(`You have no script ${JSON.stringify(scriptId)}: it isn't one of yours, it ran before this host restarted, ` +
247
+ `or it ended and was dropped: only your ${this.config.keepEnded} newest ended scripts are kept, and none of an earlier agent of your name that has gone. Nothing was changed.`);
248
+ }
249
+ return script;
250
+ }
251
+ /** A script no other call is watching now: one watching it gets its output and its ending. */
252
+ unwatched(script) {
253
+ if (script.watch !== null) {
254
+ throw new ScriptRefusal(`Another of your calls is waiting on ${script.id} now, and its result will show how the script stands. Nothing was changed.`);
255
+ }
256
+ return script;
257
+ }
258
+ async observe(script, ms, watch) {
259
+ // A run that has ended returns its ending at once: marked now, so a notice
260
+ // whose turn comes before this return does doesn't repeat it. One that ends
261
+ // while this call watches it gives no notice at all (ended), so this and a
262
+ // stop's own, made before its stop yields, are the only marks a returned
263
+ // ending needs.
264
+ if (script.run.ended && script.watch === watch)
265
+ script.endingReturned = true;
266
+ const snap = await script.run.wait(ms);
267
+ // A call whose turn was abandoned no longer watches the script: its
268
+ // return reaches no one, so it takes none of the output from the next.
269
+ const current = script.watch === watch;
270
+ if (current)
271
+ script.watch = null;
272
+ if (current)
273
+ script.returns += 1;
274
+ return {
275
+ scriptId: script.id,
276
+ running: snap.ending === null,
277
+ output: current ? script.run.takeOutput() : script.run.outputWindow(),
278
+ first: script.returns <= 1,
279
+ calls: snap.calls,
280
+ ending: snap.ending,
281
+ stopsAtTurnEnd: snap.ending === null && !this.host.outlivesTurn(script.agentName),
282
+ };
283
+ }
284
+ ended(script, ending) {
285
+ script.endedAt = Date.now();
286
+ script.endedSeq = ++this.endedCounter;
287
+ if (script.gone)
288
+ this.scripts.delete(script.id);
289
+ else
290
+ this.trimEnded(script.agentName);
291
+ // A watched script's ending goes to the call watching it. A left one says
292
+ // nothing when it finished or its agent stopped it, and wakes its agent
293
+ // otherwise, after any wake it sent that is still being delivered: the
294
+ // ending is the script's last word.
295
+ if (script.watch || script.quietEnd || !endingWakes(ending))
296
+ return;
297
+ const send = () => {
298
+ // A wait or stop that took the ending while the notice waited has already given it.
299
+ if (script.endingReturned)
300
+ return;
301
+ void this.host.wake(script.agentName, script.id, leftEndingText(script.id, ending), `${script.id}-ended`).catch(() => { });
302
+ };
303
+ if (script.delivering)
304
+ void script.delivering.then(send);
305
+ else
306
+ send();
307
+ }
308
+ /** Send the script's `n`th wake, whose turn the run has waited for. */
309
+ async wake(script, payloadJson, n) {
310
+ let delivery;
311
+ try {
312
+ delivery = Promise.resolve(this.host.wake(script.agentName, script.id, wakeText(script.id, payloadJson, n, this.config.maxWakesPerScript, Date.now() - script.startedAt), `${script.id}-wake${n}`));
313
+ }
314
+ catch (err) {
315
+ delivery = Promise.reject(err);
316
+ }
317
+ const done = delivery.then(() => { }, () => { });
318
+ script.delivering = done;
319
+ void done.then(() => {
320
+ if (script.delivering === done)
321
+ script.delivering = null;
322
+ });
323
+ try {
324
+ await delivery;
325
+ return { ok: true, json: 'null' };
326
+ }
327
+ catch (err) {
328
+ return {
329
+ ok: false,
330
+ json: JSON.stringify({ name: 'WakeRefused', message: `the wake couldn't be delivered: ${err instanceof Error ? err.message : String(err)}` }),
331
+ };
332
+ }
333
+ }
334
+ /** Keep only the agent's newest ended scripts, newest by the order their endings came in. */
335
+ trimEnded(agentName) {
336
+ const ended = [...this.scripts.values()]
337
+ .filter((s) => s.agentName === agentName && s.run.ended)
338
+ .sort((a, b) => a.endedSeq - b.endedSeq);
339
+ for (const s of ended.slice(0, Math.max(0, ended.length - this.config.keepEnded)))
340
+ this.scripts.delete(s.id);
341
+ }
342
+ }
343
+ function leftEndingText(scriptId, ending) {
344
+ const how = ending.how === 'failed'
345
+ ? `failed: ${ending.error.name ? `${ending.error.name}: ` : ''}${glimpse(ending.error.message, 300)}`
346
+ : ending.how === 'crashed'
347
+ ? `crashed: ${ending.detail}`
348
+ : ending.how === 'stopped'
349
+ ? ending.why ? `was stopped: ${ending.why}` : 'was stopped at its limit'
350
+ : 'ended';
351
+ return `[script ${scriptId}] Your script ${how}. {"action": "wait", "script_id": "${scriptId}"} gives its result.`;
352
+ }
353
+ function wakeText(scriptId, payloadJson, n, max, ageMs) {
354
+ const minutes = Math.round(ageMs / 60_000);
355
+ return `[script ${scriptId}] Woke you with wake_agent(), ${minutes} min after it started (wake ${n} of ${max}): ${payloadJson}`;
356
+ }
357
+ //# sourceMappingURL=scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scripts.js","sourceRoot":"","sources":["../../../../src/code-execution/isolate/scripts.ts"],"names":[],"mappings":"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"}