@agentstep/agent-sdk 0.4.13 → 0.4.15

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 (209) hide show
  1. package/dist/auth/middleware.js +11 -6
  2. package/dist/auth/passthrough.js +9 -0
  3. package/dist/backends/claude/args.js +6 -6
  4. package/dist/backends/claude/index.js +8 -8
  5. package/dist/backends/claude/wrapper-script.js +1 -1
  6. package/dist/backends/codex/auth.js +6 -6
  7. package/dist/backends/codex/index.js +13 -13
  8. package/dist/backends/codex/setup.js +4 -4
  9. package/dist/backends/codex/wrapper-script.js +1 -1
  10. package/dist/backends/factory/auth.js +6 -6
  11. package/dist/backends/factory/index.js +14 -14
  12. package/dist/backends/factory/setup.js +4 -4
  13. package/dist/backends/factory/wrapper-script.js +1 -1
  14. package/dist/backends/gemini/auth.js +6 -6
  15. package/dist/backends/gemini/index.js +13 -13
  16. package/dist/backends/gemini/setup.js +4 -4
  17. package/dist/backends/gemini/wrapper-script.js +1 -1
  18. package/dist/backends/opencode/auth.js +6 -6
  19. package/dist/backends/opencode/index.js +11 -11
  20. package/dist/backends/opencode/setup.js +4 -4
  21. package/dist/backends/opencode/wrapper-script.js +1 -1
  22. package/dist/backends/pi/auth.js +6 -6
  23. package/dist/backends/pi/index.js +14 -14
  24. package/dist/backends/pi/setup.js +4 -4
  25. package/dist/backends/pi/wrapper-script.js +1 -1
  26. package/dist/backends/registry.js +30 -30
  27. package/dist/{chunk-5GDMWWYD.js → chunk-2BDD6OHG.js} +10 -2
  28. package/dist/{chunk-7YYEE7XR.js → chunk-2BZ2XKJU.js} +5 -5
  29. package/dist/{chunk-OHYPVKTP.js → chunk-3LG7DRJL.js} +4 -4
  30. package/dist/{chunk-ZA4JVJJE.js → chunk-3PLJHZFD.js} +1 -1
  31. package/dist/{chunk-ME6IR4T6.js → chunk-3W6KEDQE.js} +4 -4
  32. package/dist/{chunk-PMEF3X3C.js → chunk-46LBKEBE.js} +2 -2
  33. package/dist/{chunk-XLMHG3KR.js → chunk-5DHH2PGR.js} +50 -47
  34. package/dist/{chunk-6QDHS2MR.js → chunk-5GIZLWWF.js} +1 -1
  35. package/dist/{chunk-DZDWNOEY.js → chunk-5GZEX4HV.js} +1 -1
  36. package/dist/{chunk-V364DYC3.js → chunk-5XF65N7J.js} +1 -1
  37. package/dist/{chunk-6UXT3RG5.js → chunk-64ZLFLMN.js} +4 -4
  38. package/dist/{chunk-JMDS2RJJ.js → chunk-66CJ6LMV.js} +1 -1
  39. package/dist/{chunk-2FWZ247V.js → chunk-6IWTDQJN.js} +9 -4
  40. package/dist/{chunk-TQHS4W74.js → chunk-6OL43KT2.js} +1 -1
  41. package/dist/{chunk-JZ5RFO77.js → chunk-7LQN7NVU.js} +5 -5
  42. package/dist/{chunk-X3U7IVTN.js → chunk-7OAMTB47.js} +2 -2
  43. package/dist/{chunk-I3AP3LEY.js → chunk-ACKMNK3C.js} +7 -7
  44. package/dist/{chunk-IJEZAD5O.js → chunk-ADK2TYO4.js} +2 -2
  45. package/dist/{chunk-CX4VNHL6.js → chunk-AH7DAJU5.js} +74 -32
  46. package/dist/{chunk-5ZRGJTR3.js → chunk-AM7F65IC.js} +10 -10
  47. package/dist/{chunk-MXRGQRFX.js → chunk-BMPB7XJH.js} +6 -6
  48. package/dist/{chunk-V7OXXKAL.js → chunk-BZ6HFTHU.js} +1 -1
  49. package/dist/{chunk-TSYQ4XKJ.js → chunk-CDCLICKM.js} +2 -2
  50. package/dist/{chunk-FXLGGDLM.js → chunk-CE45WWNZ.js} +4 -4
  51. package/dist/{chunk-QKRWCXDU.js → chunk-CGSUJZ56.js} +1 -1
  52. package/dist/{chunk-3WJMUX5B.js → chunk-DO4WVWW7.js} +1 -1
  53. package/dist/{chunk-AKRE4OEL.js → chunk-EFOIR7R3.js} +5 -3
  54. package/dist/{chunk-M4RE42AY.js → chunk-ENOKSV57.js} +3 -3
  55. package/dist/{chunk-RTS2QUZB.js → chunk-EO5ZTIP7.js} +20 -11
  56. package/dist/{chunk-3NZQBGUJ.js → chunk-F2SDCOHG.js} +18 -18
  57. package/dist/{chunk-FB6FOIAY.js → chunk-FB4OSWM2.js} +1 -1
  58. package/dist/{chunk-2PKJSOXX.js → chunk-FCULDJQO.js} +1 -1
  59. package/dist/{chunk-Q4XYK6FF.js → chunk-GJBKDPQD.js} +5 -5
  60. package/dist/{chunk-7TW4LHPM.js → chunk-HECQRMDR.js} +2 -2
  61. package/dist/{chunk-XLVCC4IB.js → chunk-HWWCVD2R.js} +7 -7
  62. package/dist/{chunk-MBLMAWSE.js → chunk-I5ZA45YL.js} +7 -7
  63. package/dist/{chunk-X7W6S3TE.js → chunk-IU457W7Q.js} +5 -5
  64. package/dist/{chunk-HWTECG57.js → chunk-J4TYHQQG.js} +1 -1
  65. package/dist/{chunk-Y2SC7HU5.js → chunk-JDBXIJKG.js} +4 -4
  66. package/dist/{chunk-FDY5BA67.js → chunk-JDELTTHV.js} +1 -1
  67. package/dist/{chunk-BAH4JSTO.js → chunk-JEI7I3EH.js} +3 -3
  68. package/dist/{chunk-CKPGSS76.js → chunk-JK5TPJHH.js} +1 -1
  69. package/dist/{chunk-WUNJJNOV.js → chunk-JKUR5MIM.js} +4 -4
  70. package/dist/{chunk-4BYPJFC5.js → chunk-JOAEFGXZ.js} +62 -54
  71. package/dist/{chunk-NHY4Q6LS.js → chunk-JOZK6G5O.js} +14 -14
  72. package/dist/{chunk-5A6E4F5D.js → chunk-JSLEB2ED.js} +2 -1
  73. package/dist/{chunk-3KDZP45U.js → chunk-K7KLJ2UJ.js} +13 -10
  74. package/dist/{chunk-LP7AQJCU.js → chunk-KGARPQA4.js} +3 -3
  75. package/dist/{chunk-6A74MTSB.js → chunk-L6CUSDUF.js} +3 -3
  76. package/dist/{chunk-N5CUDEUJ.js → chunk-LHHBOQUR.js} +2 -2
  77. package/dist/{chunk-4FHRWC4H.js → chunk-LJF4GWPJ.js} +5 -5
  78. package/dist/{chunk-RL6XEYOD.js → chunk-MHQXDTJB.js} +1 -1
  79. package/dist/{chunk-UX6I36QR.js → chunk-NDQ6CQ7B.js} +122 -122
  80. package/dist/{chunk-7BGILLYC.js → chunk-NIOWKTIF.js} +2 -2
  81. package/dist/{chunk-KDAZ5TBL.js → chunk-NK2RCTFI.js} +8 -8
  82. package/dist/{chunk-OXREXXAQ.js → chunk-NUINUAXO.js} +2 -2
  83. package/dist/{chunk-XTZ5RQDF.js → chunk-NUO56TF7.js} +4 -4
  84. package/dist/{chunk-ZIV74JWW.js → chunk-NXRJ7Z4G.js} +2 -2
  85. package/dist/{chunk-AHHH4PYB.js → chunk-O45IQUWS.js} +3 -3
  86. package/dist/{chunk-UXZSRUXD.js → chunk-ORU5GQ4Z.js} +2 -2
  87. package/dist/{chunk-QYFD2OBI.js → chunk-OWTXN2FU.js} +1 -1
  88. package/dist/{chunk-V4P46OHG.js → chunk-P7P2NWZD.js} +5 -5
  89. package/dist/{chunk-MAW3HLIO.js → chunk-PB7LR2AG.js} +2 -2
  90. package/dist/{chunk-KEV4OMRF.js → chunk-PNYCULIF.js} +9 -9
  91. package/dist/{chunk-VVH5DQ2C.js → chunk-PWWRWR75.js} +42 -3
  92. package/dist/{chunk-G5RQN53K.js → chunk-PZWVTEL2.js} +1 -1
  93. package/dist/{chunk-OGONPLTA.js → chunk-QFUJDBET.js} +6 -6
  94. package/dist/{chunk-Q5KHBU7P.js → chunk-QH57EOKP.js} +12 -4
  95. package/dist/{chunk-6ZJ6X6H7.js → chunk-QLWA4MJ5.js} +15 -4
  96. package/dist/{chunk-2QGVGXIT.js → chunk-QQDSHL27.js} +4 -4
  97. package/dist/{chunk-J4NKW3L5.js → chunk-QYSDP6V5.js} +5 -5
  98. package/dist/{chunk-ETGRQMFJ.js → chunk-R45W644X.js} +1 -1
  99. package/dist/{chunk-LPWEFC55.js → chunk-R5OZHLAD.js} +2 -2
  100. package/dist/{chunk-DFE7VZWD.js → chunk-RMEX55EU.js} +4 -4
  101. package/dist/{chunk-TY7XTT5N.js → chunk-RZXRMPF4.js} +1 -1
  102. package/dist/{chunk-D5XOXR3A.js → chunk-S3SKODVV.js} +4 -4
  103. package/dist/{chunk-CU5GUNFW.js → chunk-S6AM7WVH.js} +2 -2
  104. package/dist/{chunk-YOFB6CO5.js → chunk-SDLNBA53.js} +7 -7
  105. package/dist/{chunk-JFY6EH24.js → chunk-SIKTYKVO.js} +15 -15
  106. package/dist/{chunk-7XFIUYFM.js → chunk-SWIP7JBQ.js} +4 -4
  107. package/dist/{chunk-XNK2KUTI.js → chunk-SXE7H3VK.js} +2 -2
  108. package/dist/{chunk-OQWHKEYE.js → chunk-TFK6TCMC.js} +3 -3
  109. package/dist/{chunk-TV2VE2LX.js → chunk-TWPTR2C2.js} +2 -2
  110. package/dist/{chunk-3MNDEAPX.js → chunk-UJDAT42X.js} +8 -8
  111. package/dist/{chunk-UN3LHCWQ.js → chunk-VIGJQU6V.js} +3 -3
  112. package/dist/{chunk-4INVRCRD.js → chunk-VO7BDPYU.js} +2 -2
  113. package/dist/{chunk-UVCPCX74.js → chunk-VS7AMAMU.js} +8 -8
  114. package/dist/chunk-W6WKXFHN.js +39 -0
  115. package/dist/{chunk-3EGA6TEL.js → chunk-WPEGSLXX.js} +1 -1
  116. package/dist/{chunk-YM2LYRYY.js → chunk-WRWTK455.js} +3 -3
  117. package/dist/{chunk-W3M3ME6B.js → chunk-XG4UIGDH.js} +5 -5
  118. package/dist/{chunk-TH54MJMX.js → chunk-XPKY3Z54.js} +1 -1
  119. package/dist/{chunk-BM34UHSS.js → chunk-Y27R572J.js} +6 -5
  120. package/dist/{chunk-6BDLNY5J.js → chunk-Y4X3QY2S.js} +2 -2
  121. package/dist/{chunk-U4F4JSME.js → chunk-Y6ZY23HE.js} +3 -3
  122. package/dist/{chunk-KZGAZPNV.js → chunk-YGAHGTVZ.js} +3 -3
  123. package/dist/{chunk-H74BPBKE.js → chunk-YSUPRYX2.js} +5 -5
  124. package/dist/{chunk-HERWBOQ7.js → chunk-ZLUBNJEO.js} +5 -5
  125. package/dist/{chunk-Y5553CX6.js → chunk-ZP5VMV5O.js} +4 -4
  126. package/dist/config/index.js +5 -5
  127. package/dist/containers/client.js +6 -6
  128. package/dist/containers/exec.js +6 -6
  129. package/dist/containers/lifecycle.js +47 -47
  130. package/dist/containers/pool.js +3 -3
  131. package/dist/containers/setup.js +9 -9
  132. package/dist/db/agents.js +6 -6
  133. package/dist/db/api_keys.js +5 -5
  134. package/dist/db/audit.js +3 -3
  135. package/dist/db/batch.js +10 -10
  136. package/dist/db/client.js +2 -2
  137. package/dist/db/credentials.js +3 -3
  138. package/dist/db/drizzle.js +4 -4
  139. package/dist/db/environments.js +6 -6
  140. package/dist/db/events.js +5 -5
  141. package/dist/db/files.js +5 -5
  142. package/dist/db/memory.js +5 -5
  143. package/dist/db/migrations.js +1 -1
  144. package/dist/db/proxy.js +5 -5
  145. package/dist/db/schema.js +1 -1
  146. package/dist/db/session-resources.js +5 -5
  147. package/dist/db/sessions.js +9 -9
  148. package/dist/db/sync.js +5 -5
  149. package/dist/db/tenants.js +3 -3
  150. package/dist/db/traces.js +5 -5
  151. package/dist/db/upstream_keys.js +3 -3
  152. package/dist/db/vaults.js +6 -6
  153. package/dist/handlers/agents.js +60 -59
  154. package/dist/handlers/api_keys.js +61 -59
  155. package/dist/handlers/audit.js +61 -59
  156. package/dist/handlers/batch.js +61 -59
  157. package/dist/handlers/credentials.js +61 -59
  158. package/dist/handlers/environments.js +61 -60
  159. package/dist/handlers/events.js +64 -63
  160. package/dist/handlers/files.js +61 -59
  161. package/dist/handlers/index.js +125 -124
  162. package/dist/handlers/license.js +60 -58
  163. package/dist/handlers/memory.js +61 -59
  164. package/dist/handlers/metrics.js +60 -58
  165. package/dist/handlers/models.js +61 -59
  166. package/dist/handlers/openapi.js +3 -3
  167. package/dist/handlers/providers.js +60 -58
  168. package/dist/handlers/resources.js +60 -58
  169. package/dist/handlers/sessions.js +63 -62
  170. package/dist/handlers/settings.js +60 -58
  171. package/dist/handlers/skills-write.js +60 -58
  172. package/dist/handlers/skills.js +61 -59
  173. package/dist/handlers/stream.js +60 -59
  174. package/dist/handlers/tenants.js +61 -59
  175. package/dist/handlers/threads.js +60 -58
  176. package/dist/handlers/traces.js +61 -59
  177. package/dist/handlers/ui.js +1 -1
  178. package/dist/handlers/upstream_keys.js +63 -61
  179. package/dist/handlers/vaults.js +60 -58
  180. package/dist/handlers/whoami.js +60 -58
  181. package/dist/http.js +59 -57
  182. package/dist/index.js +81 -78
  183. package/dist/init.js +55 -55
  184. package/dist/lib/model-registry.js +6 -6
  185. package/dist/lib/skills-cache.js +6 -6
  186. package/dist/observability/otlp.js +12 -12
  187. package/dist/observability/redactor.js +8 -8
  188. package/dist/openapi/schemas.js +1 -1
  189. package/dist/openapi/spec.js +2 -2
  190. package/dist/providers/fly.js +5 -5
  191. package/dist/providers/modal.js +5 -5
  192. package/dist/providers/registry.js +1 -1
  193. package/dist/providers/resolve-secrets.js +7 -7
  194. package/dist/providers/sprites.js +7 -7
  195. package/dist/providers/upstream-keys.js +11 -11
  196. package/dist/providers/vercel.js +5 -5
  197. package/dist/proxy/forward.js +6 -6
  198. package/dist/queue/index.js +6 -6
  199. package/dist/sessions/bus.js +10 -10
  200. package/dist/sessions/driver.js +48 -48
  201. package/dist/sessions/grader.js +5 -5
  202. package/dist/sessions/secrets.js +8 -8
  203. package/dist/sessions/sweeper.js +44 -44
  204. package/dist/sessions/threads.js +52 -52
  205. package/dist/shutdown.js +45 -45
  206. package/dist/sync/anthropic.js +10 -10
  207. package/dist/sync/container-file-sync.js +27 -15
  208. package/dist/sync/file-sync.js +19 -19
  209. package/package.json +1 -1
@@ -1,58 +1,59 @@
1
1
  import {
2
2
  enqueueTurn
3
- } from "./chunk-7TW4LHPM.js";
3
+ } from "./chunk-HECQRMDR.js";
4
4
  import {
5
5
  runTurn
6
- } from "./chunk-XLMHG3KR.js";
6
+ } from "./chunk-5DHH2PGR.js";
7
7
  import {
8
8
  installOtlpExporter
9
- } from "./chunk-I3AP3LEY.js";
9
+ } from "./chunk-ACKMNK3C.js";
10
10
  import {
11
11
  redactAppendInput
12
- } from "./chunk-TV2VE2LX.js";
12
+ } from "./chunk-TWPTR2C2.js";
13
13
  import {
14
14
  createApiKey,
15
15
  listApiKeys
16
- } from "./chunk-IJEZAD5O.js";
16
+ } from "./chunk-ADK2TYO4.js";
17
17
  import {
18
18
  initSentry
19
19
  } from "./chunk-3MQ2FWXS.js";
20
20
  import {
21
21
  installShutdownHandlers
22
- } from "./chunk-CU5GUNFW.js";
22
+ } from "./chunk-S6AM7WVH.js";
23
23
  import {
24
24
  runSweep
25
- } from "./chunk-KEV4OMRF.js";
25
+ } from "./chunk-PNYCULIF.js";
26
26
  import {
27
- reconcileDockerOrphans,
28
- reconcileOrphans
29
- } from "./chunk-4BYPJFC5.js";
27
+ reconcileDockerOrphanSandboxes,
28
+ reconcileOrphanSandboxes
29
+ } from "./chunk-JOAEFGXZ.js";
30
30
  import {
31
31
  appendEvent,
32
32
  installPayloadRedactor
33
- } from "./chunk-MXRGQRFX.js";
33
+ } from "./chunk-BMPB7XJH.js";
34
+ import {
35
+ setSessionSandbox
36
+ } from "./chunk-I5ZA45YL.js";
34
37
  import {
35
38
  readEnvValue,
36
39
  upsertEnvLine
37
40
  } from "./chunk-YPXI7Q2M.js";
38
41
  import {
39
42
  getLastUnprocessedUserMessage
40
- } from "./chunk-AHHH4PYB.js";
43
+ } from "./chunk-O45IQUWS.js";
41
44
  import {
45
+ getBySession,
42
46
  register
43
- } from "./chunk-AKRE4OEL.js";
47
+ } from "./chunk-EFOIR7R3.js";
44
48
  import {
45
49
  resolveContainerProvider
46
- } from "./chunk-5A6E4F5D.js";
47
- import {
48
- setSessionSprite
49
- } from "./chunk-MBLMAWSE.js";
50
+ } from "./chunk-JSLEB2ED.js";
50
51
  import {
51
52
  getEnvironment
52
- } from "./chunk-XTZ5RQDF.js";
53
+ } from "./chunk-NUO56TF7.js";
53
54
  import {
54
55
  getConfig
55
- } from "./chunk-Q5KHBU7P.js";
56
+ } from "./chunk-QH57EOKP.js";
56
57
  import {
57
58
  init_clock,
58
59
  nowMs
@@ -60,7 +61,7 @@ import {
60
61
  import {
61
62
  getDb,
62
63
  init_client
63
- } from "./chunk-DZDWNOEY.js";
64
+ } from "./chunk-5GZEX4HV.js";
64
65
  import {
65
66
  getRuntime
66
67
  } from "./chunk-UYTSKFGK.js";
@@ -105,17 +106,22 @@ async function doInit() {
105
106
  } catch (err) {
106
107
  console.error("[init] stale session recovery failed:", err);
107
108
  }
109
+ try {
110
+ await rebuildContainerPool();
111
+ } catch (err) {
112
+ console.error("[init] container pool rebuild failed:", err);
113
+ }
108
114
  const cfg = getConfig();
109
115
  if (cfg.spriteToken) {
110
- reconcileOrphans().then((r) => {
116
+ reconcileOrphanSandboxes().then((r) => {
111
117
  if (r.deleted > 0) {
112
- console.log(`[init] reconciled ${r.deleted} orphan sprites, kept ${r.kept}`);
118
+ console.log(`[init] reconciled ${r.deleted} orphan sandboxes, kept ${r.kept}`);
113
119
  }
114
120
  }).catch((err) => {
115
- console.warn("[init] orphan reconcile (sprites) failed:", err);
121
+ console.warn("[init] orphan reconcile (sandboxes) failed:", err);
116
122
  });
117
123
  }
118
- reconcileDockerOrphans().then((r) => {
124
+ reconcileDockerOrphanSandboxes().then((r) => {
119
125
  if (r.deleted > 0) {
120
126
  console.log(`[init] reconciled ${r.deleted} orphan docker containers, kept ${r.kept}`);
121
127
  }
@@ -172,26 +178,26 @@ async function recoverStaleSessions() {
172
178
  try {
173
179
  const lastMsg = getLastUnprocessedUserMessage(row.id);
174
180
  if (lastMsg) {
175
- if (row.sprite_name) {
181
+ if (row.sandbox_name) {
176
182
  const envObj = getEnvironment(row.environment_id);
177
183
  const provider = await resolveContainerProvider(envObj?.config?.provider);
178
184
  try {
179
- const containers = await provider.list({ prefix: row.sprite_name });
180
- const alive = containers.some((c) => c.name === row.sprite_name);
185
+ const containers = await provider.list({ prefix: row.sandbox_name });
186
+ const alive = containers.some((c) => c.name === row.sandbox_name);
181
187
  if (!alive) {
182
- console.warn(`[init] sprite ${row.sprite_name} for session ${row.id} no longer exists, clearing`);
183
- setSessionSprite(row.id, null);
188
+ console.warn(`[init] sandbox ${row.sandbox_name} for session ${row.id} no longer exists, clearing`);
189
+ setSessionSandbox(row.id, null);
184
190
  } else {
185
191
  register({
186
- spriteName: row.sprite_name,
192
+ sandboxName: row.sandbox_name,
187
193
  envId: row.environment_id,
188
194
  sessionId: row.id,
189
195
  createdAt: nowMs()
190
196
  });
191
197
  }
192
198
  } catch (err) {
193
- console.warn(`[init] container health check failed for ${row.sprite_name}, clearing:`, err);
194
- setSessionSprite(row.id, null);
199
+ console.warn(`[init] container health check failed for ${row.sandbox_name}, clearing:`, err);
200
+ setSessionSandbox(row.id, null);
195
201
  }
196
202
  }
197
203
  appendEvent(row.id, {
@@ -245,6 +251,42 @@ async function recoverStaleSessions() {
245
251
  }
246
252
  }
247
253
  }
254
+ async function rebuildContainerPool() {
255
+ const db = getDb();
256
+ const rows = db.prepare(
257
+ `SELECT * FROM sessions WHERE sandbox_name IS NOT NULL AND status != 'running' AND archived_at IS NULL`
258
+ ).all();
259
+ if (rows.length === 0) return;
260
+ let recovered = 0;
261
+ let cleared = 0;
262
+ for (const row of rows) {
263
+ if (getBySession(row.id)) continue;
264
+ try {
265
+ const envObj = getEnvironment(row.environment_id);
266
+ const provider = await resolveContainerProvider(envObj?.config?.provider);
267
+ const containers = await provider.list({ prefix: row.sandbox_name });
268
+ const alive = containers.some((c) => c.name === row.sandbox_name);
269
+ if (alive) {
270
+ register({
271
+ sandboxName: row.sandbox_name,
272
+ envId: row.environment_id,
273
+ sessionId: row.id,
274
+ createdAt: nowMs()
275
+ });
276
+ recovered++;
277
+ } else {
278
+ setSessionSandbox(row.id, null);
279
+ cleared++;
280
+ }
281
+ } catch {
282
+ setSessionSandbox(row.id, null);
283
+ cleared++;
284
+ }
285
+ }
286
+ if (recovered > 0 || cleared > 0) {
287
+ console.log(`[init] pool rebuild: ${recovered} containers recovered, ${cleared} stale references cleared`);
288
+ }
289
+ }
248
290
 
249
291
  export {
250
292
  ensureInitialized,
@@ -3,34 +3,34 @@ import {
3
3
  resolveCreateTenant,
4
4
  tenantFilter
5
5
  } from "./chunk-23UKWXJH.js";
6
- import {
7
- forwardToAnthropic,
8
- validateAnthropicProxy
9
- } from "./chunk-6ZJ6X6H7.js";
10
6
  import {
11
7
  jsonOk,
12
8
  routeWrap
13
- } from "./chunk-2FWZ247V.js";
9
+ } from "./chunk-6IWTDQJN.js";
10
+ import {
11
+ forwardToAnthropic,
12
+ validateAnthropicProxy
13
+ } from "./chunk-QLWA4MJ5.js";
14
14
  import {
15
15
  getProxiedTenantId,
16
16
  isProxied,
17
17
  markProxied,
18
18
  unmarkProxied
19
- } from "./chunk-7BGILLYC.js";
19
+ } from "./chunk-NIOWKTIF.js";
20
20
  import {
21
21
  archiveAgent,
22
22
  createAgent,
23
23
  getAgent,
24
24
  listAgents,
25
25
  updateAgent
26
- } from "./chunk-BAH4JSTO.js";
26
+ } from "./chunk-JEI7I3EH.js";
27
27
  import {
28
28
  resolveBackend
29
- } from "./chunk-OGONPLTA.js";
29
+ } from "./chunk-QFUJDBET.js";
30
30
  import {
31
31
  getDb,
32
32
  init_client
33
- } from "./chunk-DZDWNOEY.js";
33
+ } from "./chunk-5GZEX4HV.js";
34
34
  import {
35
35
  badRequest,
36
36
  conflict,
@@ -190,7 +190,7 @@ function handleCreateAgent(request) {
190
190
  name: parsed.data.name,
191
191
  model: parsed.data.model,
192
192
  system: parsed.data.system ?? null,
193
- tools: parsed.data.tools ?? [],
193
+ tools: parsed.data.tools ?? [{ type: "agent_toolset_20260401" }],
194
194
  mcp_servers: parsed.data.mcp_servers ?? {},
195
195
  backend: backendName,
196
196
  webhook_url: parsed.data.webhook_url ?? null,
@@ -1,19 +1,19 @@
1
+ import {
2
+ getSession
3
+ } from "./chunk-I5ZA45YL.js";
1
4
  import {
2
5
  appendEvent,
3
6
  appendEventsBatch,
4
7
  listEvents,
5
8
  rowToManagedEvent
6
- } from "./chunk-AHHH4PYB.js";
7
- import {
8
- getSession
9
- } from "./chunk-MBLMAWSE.js";
9
+ } from "./chunk-O45IQUWS.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-BAH4JSTO.js";
12
+ } from "./chunk-JEI7I3EH.js";
13
13
  import {
14
14
  getDb,
15
15
  init_client
16
- } from "./chunk-DZDWNOEY.js";
16
+ } from "./chunk-5GZEX4HV.js";
17
17
 
18
18
  // src/sessions/bus.ts
19
19
  import { EventEmitter } from "events";
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  getDb,
15
15
  init_client
16
- } from "./chunk-DZDWNOEY.js";
16
+ } from "./chunk-5GZEX4HV.js";
17
17
 
18
18
  // src/db/upstream_keys.ts
19
19
  init_client();
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  BatchError,
3
3
  executeBatch
4
- } from "./chunk-D5XOXR3A.js";
4
+ } from "./chunk-S3SKODVV.js";
5
5
  import {
6
6
  jsonOk,
7
7
  routeWrap
8
- } from "./chunk-2FWZ247V.js";
8
+ } from "./chunk-6IWTDQJN.js";
9
9
  import {
10
10
  badRequest
11
11
  } from "./chunk-EZYKRG4W.js";
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  listTraces
3
- } from "./chunk-CKPGSS76.js";
3
+ } from "./chunk-JK5TPJHH.js";
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-2FWZ247V.js";
7
+ } from "./chunk-6IWTDQJN.js";
8
8
  import {
9
9
  exportTrace
10
- } from "./chunk-I3AP3LEY.js";
10
+ } from "./chunk-ACKMNK3C.js";
11
11
  import {
12
12
  listEventsByTrace,
13
13
  rowToManagedEvent
14
- } from "./chunk-AHHH4PYB.js";
14
+ } from "./chunk-O45IQUWS.js";
15
15
  import {
16
16
  badRequest,
17
17
  notFound
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  routeWrap
3
- } from "./chunk-2FWZ247V.js";
3
+ } from "./chunk-6IWTDQJN.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listEntries
3
- } from "./chunk-UN3LHCWQ.js";
3
+ } from "./chunk-VIGJQU6V.js";
4
4
 
5
5
  // src/providers/resolve-secrets.ts
6
6
  var BLOCKED_ENV_KEYS = /* @__PURE__ */ new Set([
@@ -9,7 +9,9 @@ function state() {
9
9
  function register(entry) {
10
10
  const s = state();
11
11
  const list = s.byEnv.get(entry.envId) ?? [];
12
- list.push(entry);
12
+ if (!list.some((e) => e.sessionId === entry.sessionId)) {
13
+ list.push(entry);
14
+ }
13
15
  s.byEnv.set(entry.envId, list);
14
16
  s.bySession.set(entry.sessionId, entry);
15
17
  }
@@ -32,7 +34,7 @@ function unregister(sessionId) {
32
34
  }
33
35
  return entry;
34
36
  }
35
- function allSessionSprites() {
37
+ function allSessionSandboxes() {
36
38
  return Array.from(state().bySession.values());
37
39
  }
38
40
 
@@ -41,5 +43,5 @@ export {
41
43
  getBySession,
42
44
  countInEnv,
43
45
  unregister,
44
- allSessionSprites
46
+ allSessionSandboxes
45
47
  };
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-2FWZ247V.js";
4
+ } from "./chunk-6IWTDQJN.js";
5
5
  import {
6
6
  resolveContainerProvider
7
- } from "./chunk-5A6E4F5D.js";
7
+ } from "./chunk-JSLEB2ED.js";
8
8
  import {
9
9
  getConfig
10
- } from "./chunk-Q5KHBU7P.js";
10
+ } from "./chunk-QH57EOKP.js";
11
11
 
12
12
  // src/handlers/providers.ts
13
13
  var LOCAL_PROVIDERS = ["docker", "apple-container", "podman"];
@@ -1,32 +1,32 @@
1
1
  import {
2
2
  resolveRemoteSessionId
3
- } from "./chunk-KZGAZPNV.js";
3
+ } from "./chunk-YGAHGTVZ.js";
4
4
  import {
5
5
  assertResourceTenant
6
6
  } from "./chunk-23UKWXJH.js";
7
7
  import {
8
- forwardToAnthropic
9
- } from "./chunk-6ZJ6X6H7.js";
8
+ authenticateAndIntercept
9
+ } from "./chunk-PWWRWR75.js";
10
10
  import {
11
- authenticate
12
- } from "./chunk-VVH5DQ2C.js";
11
+ forwardToAnthropic
12
+ } from "./chunk-QLWA4MJ5.js";
13
13
  import {
14
14
  ensureInitialized
15
- } from "./chunk-CX4VNHL6.js";
15
+ } from "./chunk-AH7DAJU5.js";
16
16
  import {
17
17
  getProxiedTenantId,
18
18
  isProxied
19
- } from "./chunk-7BGILLYC.js";
19
+ } from "./chunk-NIOWKTIF.js";
20
20
  import {
21
21
  subscribe
22
- } from "./chunk-MXRGQRFX.js";
22
+ } from "./chunk-BMPB7XJH.js";
23
23
  import {
24
24
  getSession
25
- } from "./chunk-MBLMAWSE.js";
25
+ } from "./chunk-I5ZA45YL.js";
26
26
  import {
27
27
  getDb,
28
28
  init_client
29
- } from "./chunk-DZDWNOEY.js";
29
+ } from "./chunk-5GZEX4HV.js";
30
30
  import {
31
31
  notFound,
32
32
  toResponse
@@ -37,7 +37,16 @@ init_client();
37
37
  async function prepareSessionStream(request, sessionId) {
38
38
  try {
39
39
  await ensureInitialized();
40
- const auth = await authenticate(request);
40
+ const result = await authenticateAndIntercept(request);
41
+ if (result.kind === "response") {
42
+ const headers = new Headers(result.response.headers);
43
+ headers.set("X-Accel-Buffering", "no");
44
+ return new Response(result.response.body, {
45
+ status: result.response.status,
46
+ headers
47
+ });
48
+ }
49
+ const auth = result.auth;
41
50
  const tenantRow = getDb().prepare(`SELECT tenant_id FROM sessions WHERE id = ?`).get(sessionId);
42
51
  if (tenantRow) {
43
52
  assertResourceTenant(auth, tenantRow.tenant_id, `session ${sessionId} not found`);
@@ -2,19 +2,16 @@ import {
2
2
  reportUpstreamFailure,
3
3
  reportUpstreamSuccess,
4
4
  resolveAnthropicKey
5
- } from "./chunk-OHYPVKTP.js";
5
+ } from "./chunk-3LG7DRJL.js";
6
6
  import {
7
7
  resolveRemoteSessionId
8
- } from "./chunk-KZGAZPNV.js";
8
+ } from "./chunk-YGAHGTVZ.js";
9
9
  import {
10
10
  assertResourceTenant
11
11
  } from "./chunk-23UKWXJH.js";
12
12
  import {
13
13
  interruptSession
14
14
  } from "./chunk-DC2UMEQH.js";
15
- import {
16
- forwardToAnthropic
17
- } from "./chunk-6ZJ6X6H7.js";
18
15
  import {
19
16
  createOrUpsertMemory,
20
17
  deleteMemory,
@@ -23,42 +20,45 @@ import {
23
20
  listMemoryStores,
24
21
  searchMemories,
25
22
  updateMemory
26
- } from "./chunk-OXREXXAQ.js";
23
+ } from "./chunk-NUINUAXO.js";
27
24
  import {
28
25
  jsonOk,
29
26
  routeWrap
30
- } from "./chunk-2FWZ247V.js";
27
+ } from "./chunk-6IWTDQJN.js";
28
+ import {
29
+ forwardToAnthropic
30
+ } from "./chunk-QLWA4MJ5.js";
31
31
  import {
32
32
  enqueueTurn
33
- } from "./chunk-7TW4LHPM.js";
33
+ } from "./chunk-HECQRMDR.js";
34
34
  import {
35
35
  runTurn,
36
36
  writePermissionResponse
37
- } from "./chunk-XLMHG3KR.js";
37
+ } from "./chunk-5DHH2PGR.js";
38
38
  import {
39
39
  getProxiedTenantId,
40
40
  isProxied
41
- } from "./chunk-7BGILLYC.js";
41
+ } from "./chunk-NIOWKTIF.js";
42
42
  import {
43
43
  getActor
44
44
  } from "./chunk-LAWTTG2E.js";
45
45
  import {
46
46
  appendEvent
47
- } from "./chunk-MXRGQRFX.js";
48
- import {
49
- listEvents,
50
- rowToManagedEvent
51
- } from "./chunk-AHHH4PYB.js";
47
+ } from "./chunk-BMPB7XJH.js";
52
48
  import {
53
49
  bumpSessionStats,
54
50
  getSession,
55
51
  getSessionRow,
56
52
  setOutcomeCriteria,
57
53
  updateSessionMutable
58
- } from "./chunk-MBLMAWSE.js";
54
+ } from "./chunk-I5ZA45YL.js";
55
+ import {
56
+ listEvents,
57
+ rowToManagedEvent
58
+ } from "./chunk-O45IQUWS.js";
59
59
  import {
60
60
  getAgent
61
- } from "./chunk-BAH4JSTO.js";
61
+ } from "./chunk-JEI7I3EH.js";
62
62
  import {
63
63
  init_clock,
64
64
  nowMs
@@ -66,7 +66,7 @@ import {
66
66
  import {
67
67
  getDb,
68
68
  init_client
69
- } from "./chunk-DZDWNOEY.js";
69
+ } from "./chunk-5GZEX4HV.js";
70
70
  import {
71
71
  badRequest,
72
72
  notFound
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readSetting
3
- } from "./chunk-Q5KHBU7P.js";
3
+ } from "./chunk-QH57EOKP.js";
4
4
 
5
5
  // src/lib/skills-cache.ts
6
6
  var DEFAULT_FEED_URL = "https://www.agentstep.com/v1/skills/feed";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-Q5KHBU7P.js";
3
+ } from "./chunk-QH57EOKP.js";
4
4
 
5
5
  // src/backends/factory/auth.ts
6
6
  function buildFactoryAuthEnv() {
@@ -4,19 +4,19 @@ import {
4
4
  import {
5
5
  buildOpencodeAuthEnv,
6
6
  validateOpencodeRuntime
7
- } from "./chunk-ZA4JVJJE.js";
7
+ } from "./chunk-3PLJHZFD.js";
8
8
  import {
9
9
  buildOpencodeConfigEnv
10
10
  } from "./chunk-Z25I7DRV.js";
11
11
  import {
12
- prepareOpencodeOnSprite
13
- } from "./chunk-V4P46OHG.js";
12
+ prepareOpencodeOnSandbox
13
+ } from "./chunk-P7P2NWZD.js";
14
14
  import {
15
15
  createOpencodeTranslator
16
16
  } from "./chunk-ETWGCBIQ.js";
17
17
  import {
18
18
  OPENCODE_WRAPPER_PATH
19
- } from "./chunk-7XFIUYFM.js";
19
+ } from "./chunk-SWIP7JBQ.js";
20
20
  import {
21
21
  wrapPromptWithSystem
22
22
  } from "./chunk-DAT55TX2.js";
@@ -47,7 +47,7 @@ var opencodeBackend = {
47
47
  wrapperPath: OPENCODE_WRAPPER_PATH,
48
48
  buildTurn,
49
49
  createTranslator: (opts) => createOpencodeTranslator(opts),
50
- prepareOnSprite: (name, provider) => prepareOpencodeOnSprite(name, provider),
50
+ prepareOnSandbox: (name, provider) => prepareOpencodeOnSandbox(name, provider),
51
51
  validateRuntime: validateOpencodeRuntime
52
52
  };
53
53
 
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-Q5KHBU7P.js";
3
+ } from "./chunk-QH57EOKP.js";
4
4
  import {
5
5
  serverBusy
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -40,7 +40,7 @@ function enqueueTurn(envId, run) {
40
40
  if (st.activeGlobal >= c.concurrency) break;
41
41
  const job = st.queue[i];
42
42
  const envActive = st.activeByEnv.get(job.envId) ?? 0;
43
- if (envActive >= c.maxSpritesPerEnv) continue;
43
+ if (envActive >= c.maxSandboxesPerEnv) continue;
44
44
  st.queue.splice(i, 1);
45
45
  i--;
46
46
  st.activeGlobal++;
@@ -4,16 +4,16 @@ import {
4
4
  import {
5
5
  buildGeminiAuthEnv,
6
6
  validateGeminiRuntime
7
- } from "./chunk-TY7XTT5N.js";
7
+ } from "./chunk-RZXRMPF4.js";
8
8
  import {
9
- prepareGeminiOnSprite
10
- } from "./chunk-W3M3ME6B.js";
9
+ prepareGeminiOnSandbox
10
+ } from "./chunk-XG4UIGDH.js";
11
+ import {
12
+ GEMINI_WRAPPER_PATH
13
+ } from "./chunk-3W6KEDQE.js";
11
14
  import {
12
15
  createGeminiTranslator
13
16
  } from "./chunk-S3JRZFF5.js";
14
- import {
15
- GEMINI_WRAPPER_PATH
16
- } from "./chunk-ME6IR4T6.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
19
  } from "./chunk-DAT55TX2.js";
@@ -41,7 +41,7 @@ var geminiBackend = {
41
41
  wrapperPath: GEMINI_WRAPPER_PATH,
42
42
  buildTurn,
43
43
  createTranslator: (opts) => createGeminiTranslator(opts),
44
- prepareOnSprite: (name, provider) => prepareGeminiOnSprite(name, provider),
44
+ prepareOnSandbox: (name, provider) => prepareGeminiOnSandbox(name, provider),
45
45
  validateRuntime: validateGeminiRuntime
46
46
  };
47
47
 
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  init_session_resources,
3
3
  session_resources_exports
4
- } from "./chunk-LPWEFC55.js";
4
+ } from "./chunk-R5OZHLAD.js";
5
5
  import {
6
6
  DEFAULT_TENANT_ID
7
- } from "./chunk-FDY5BA67.js";
7
+ } from "./chunk-JDELTTHV.js";
8
8
  import {
9
9
  init_ids,
10
10
  newId
@@ -12,10 +12,10 @@ import {
12
12
  import {
13
13
  getDrizzle,
14
14
  init_drizzle
15
- } from "./chunk-XNK2KUTI.js";
15
+ } from "./chunk-SXE7H3VK.js";
16
16
  import {
17
17
  schema_exports
18
- } from "./chunk-N5CUDEUJ.js";
18
+ } from "./chunk-LHHBOQUR.js";
19
19
  import {
20
20
  init_clock,
21
21
  nowMs,
@@ -136,9 +136,9 @@ function updateSessionStatus(id, status, stopReason) {
136
136
  const db = getDrizzle();
137
137
  db.update(schema_exports.sessions).set({ status, stop_reason: stopReason ?? null, updated_at: nowMs() }).where(eq(schema_exports.sessions.id, id)).run();
138
138
  }
139
- function setSessionSprite(id, spriteName) {
139
+ function setSessionSandbox(id, sandboxName) {
140
140
  const db = getDrizzle();
141
- db.update(schema_exports.sessions).set({ sprite_name: spriteName, updated_at: nowMs() }).where(eq(schema_exports.sessions.id, id)).run();
141
+ db.update(schema_exports.sessions).set({ sandbox_name: sandboxName, updated_at: nowMs() }).where(eq(schema_exports.sessions.id, id)).run();
142
142
  }
143
143
  function setBackendSessionId(id, backendSessionId) {
144
144
  const db = getDrizzle();
@@ -251,7 +251,7 @@ export {
251
251
  getSession,
252
252
  getSessionRow,
253
253
  updateSessionStatus,
254
- setSessionSprite,
254
+ setSessionSandbox,
255
255
  setBackendSessionId,
256
256
  setSessionProvider,
257
257
  setIdleSince,