@agentstep/agent-sdk 0.5.10 → 0.5.12

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 (218) hide show
  1. package/dist/auth/middleware.js +8 -8
  2. package/dist/backends/claude/args.js +6 -6
  3. package/dist/backends/claude/index.js +12 -12
  4. package/dist/backends/claude/wrapper-script.js +1 -1
  5. package/dist/backends/codex/auth.js +6 -6
  6. package/dist/backends/codex/index.js +14 -14
  7. package/dist/backends/codex/setup.js +2 -2
  8. package/dist/backends/codex/wrapper-script.js +1 -1
  9. package/dist/backends/factory/auth.js +6 -6
  10. package/dist/backends/factory/index.js +16 -16
  11. package/dist/backends/factory/setup.js +2 -2
  12. package/dist/backends/factory/wrapper-script.js +1 -1
  13. package/dist/backends/gemini/auth.js +6 -6
  14. package/dist/backends/gemini/index.js +12 -12
  15. package/dist/backends/gemini/setup.js +2 -2
  16. package/dist/backends/gemini/wrapper-script.js +1 -1
  17. package/dist/backends/opencode/auth.js +6 -6
  18. package/dist/backends/opencode/index.js +14 -14
  19. package/dist/backends/opencode/setup.js +2 -2
  20. package/dist/backends/opencode/wrapper-script.js +1 -1
  21. package/dist/backends/pi/auth.js +6 -6
  22. package/dist/backends/pi/index.js +14 -14
  23. package/dist/backends/pi/setup.js +2 -2
  24. package/dist/backends/pi/wrapper-script.js +1 -1
  25. package/dist/backends/registry.js +36 -36
  26. package/dist/{chunk-ZEDULYKX.js → chunk-2IISXUVF.js} +1 -1
  27. package/dist/{chunk-34Q6WMIT.js → chunk-2Z56TPBL.js} +3 -3
  28. package/dist/{chunk-WCLMAQR4.js → chunk-3DRK36FB.js} +5 -5
  29. package/dist/{chunk-2PTWIZX6.js → chunk-3NNU7TQ4.js} +8 -8
  30. package/dist/{chunk-NFGCFN57.js → chunk-3UK3IF27.js} +6 -6
  31. package/dist/chunk-4ANV3AH3.js +65 -0
  32. package/dist/{chunk-RNU253MD.js → chunk-4ENK7S24.js} +21 -2
  33. package/dist/{chunk-IFZ7EXMG.js → chunk-4EVT4MFD.js} +1 -1
  34. package/dist/{chunk-7POF237O.js → chunk-4MKJB6U2.js} +1 -1
  35. package/dist/{chunk-WKPUTJGD.js → chunk-5LDBCBOR.js} +1 -1
  36. package/dist/{chunk-ZIMK4TPI.js → chunk-6PIL2RJD.js} +2 -2
  37. package/dist/{chunk-6TRWB7CE.js → chunk-6X3G5SAS.js} +41 -18
  38. package/dist/{chunk-LVSQULRG.js → chunk-7ASUTNKE.js} +2 -2
  39. package/dist/{chunk-KJENLSJT.js → chunk-7BT6V4CH.js} +20 -18
  40. package/dist/{chunk-5COWXLGO.js → chunk-7D55V4XP.js} +1 -1
  41. package/dist/{chunk-KYDOZBD5.js → chunk-7NZ46LIO.js} +29 -28
  42. package/dist/{chunk-4QBWHZKQ.js → chunk-7SO7O6RV.js} +2 -2
  43. package/dist/{chunk-4JPJ3ZIV.js → chunk-7Z6LTBYQ.js} +5 -5
  44. package/dist/{chunk-NVTDXBGV.js → chunk-APKELBCA.js} +1 -1
  45. package/dist/{chunk-YSUPRYX2.js → chunk-AQHYCRTO.js} +1 -1
  46. package/dist/{chunk-GUD3MOP7.js → chunk-B3UOTIOI.js} +9 -9
  47. package/dist/{chunk-2OFGWHZB.js → chunk-B5JUCPYW.js} +1 -1
  48. package/dist/{chunk-LJSD6G6K.js → chunk-BQ5MWNWN.js} +3 -3
  49. package/dist/{chunk-SKRIZPPF.js → chunk-BYJRL4IQ.js} +6 -6
  50. package/dist/{chunk-56KP3SAI.js → chunk-C3ZPWUDE.js} +2 -2
  51. package/dist/{chunk-LSXVCZN7.js → chunk-CD2FQVQR.js} +1 -1
  52. package/dist/{chunk-6BOOQV4Q.js → chunk-CFLMIJ2C.js} +3 -3
  53. package/dist/{chunk-6BRG2NJL.js → chunk-CGGGCKSK.js} +4 -4
  54. package/dist/{chunk-QYSDP6V5.js → chunk-CMOU2OFW.js} +1 -1
  55. package/dist/chunk-D2GADI73.js +253 -0
  56. package/dist/{chunk-75C3KFST.js → chunk-D3TY7PMJ.js} +5 -5
  57. package/dist/{chunk-RTZNJDEL.js → chunk-DAIEVD4O.js} +4 -4
  58. package/dist/{chunk-BGNQXT4T.js → chunk-DDF2CRA3.js} +2 -2
  59. package/dist/{chunk-DQ5VMD3Z.js → chunk-FCKUWBUL.js} +2 -2
  60. package/dist/{chunk-YFGBTXID.js → chunk-FV2XE3DX.js} +2 -2
  61. package/dist/{chunk-73BYGQWA.js → chunk-G7Y5YGLE.js} +1 -1
  62. package/dist/{chunk-PXOL34HI.js → chunk-HE3IEIKM.js} +3 -3
  63. package/dist/{chunk-WKMRBRJQ.js → chunk-HH23DOBB.js} +1 -1
  64. package/dist/{chunk-HCORTMQH.js → chunk-HHS6EHSG.js} +4 -4
  65. package/dist/{chunk-6T4DKZYW.js → chunk-ISXWS5Y4.js} +8 -8
  66. package/dist/{chunk-QBJOYOVF.js → chunk-J6T3W6RY.js} +15 -0
  67. package/dist/{chunk-CXDNTVCM.js → chunk-JK2GXKOQ.js} +5 -5
  68. package/dist/{chunk-A4BGGHRC.js → chunk-JXU6SA6S.js} +42 -1
  69. package/dist/{chunk-37Y556D5.js → chunk-KHICXOTH.js} +3 -3
  70. package/dist/chunk-KJ2GJLPQ.js +39 -0
  71. package/dist/{chunk-BUQATYS7.js → chunk-KNWM237Q.js} +2 -2
  72. package/dist/{chunk-RNDLMMKI.js → chunk-LOWHDHDD.js} +3 -3
  73. package/dist/{chunk-6SVZD3UA.js → chunk-M4OF5D4K.js} +4 -4
  74. package/dist/{chunk-CZPWZ5A5.js → chunk-M7SYXJBT.js} +1 -1
  75. package/dist/{chunk-IBO36HUU.js → chunk-MQBNN4KH.js} +1 -1
  76. package/dist/{chunk-32RP2UX6.js → chunk-MTB7SCZ5.js} +5 -5
  77. package/dist/{chunk-LEVIKSPQ.js → chunk-MTRTBT7L.js} +1 -1
  78. package/dist/{chunk-TARFRZ44.js → chunk-N5F5OUUZ.js} +3 -3
  79. package/dist/{chunk-M2LUXIXU.js → chunk-NMZMRH3E.js} +1 -1
  80. package/dist/{chunk-KGTWD46T.js → chunk-NWIMPG4M.js} +1 -1
  81. package/dist/chunk-OGA7KDQZ.js +37 -0
  82. package/dist/chunk-ONEKY3CM.js +146 -0
  83. package/dist/{chunk-SUFGP47L.js → chunk-ONS32E65.js} +28 -20
  84. package/dist/{chunk-XG4UIGDH.js → chunk-PAQ2JFVD.js} +1 -1
  85. package/dist/{chunk-N5C3WQWD.js → chunk-PDUQCDIO.js} +1 -1
  86. package/dist/{chunk-DSNNEER4.js → chunk-PJTGQVKB.js} +1 -1
  87. package/dist/{chunk-SAUR463Z.js → chunk-PLSXDJT4.js} +6 -5
  88. package/dist/{chunk-NL4EKSFA.js → chunk-PPI76YVT.js} +2 -2
  89. package/dist/{chunk-N33MOUCH.js → chunk-PRWWTLPR.js} +3 -3
  90. package/dist/{chunk-T75UYYMI.js → chunk-PVFGDKXO.js} +2 -2
  91. package/dist/{chunk-PIJJXKMK.js → chunk-PXMTLKUJ.js} +3 -3
  92. package/dist/chunk-PZ5EGY64.js +37 -0
  93. package/dist/{chunk-6ERUVF2Y.js → chunk-QB7JAMWG.js} +1 -1
  94. package/dist/{chunk-IY3KO2BC.js → chunk-QS544PN6.js} +4 -4
  95. package/dist/{chunk-GBGXSRZX.js → chunk-R5LXEIOJ.js} +9 -9
  96. package/dist/{chunk-OJUDLJOG.js → chunk-REY2YZ5X.js} +3 -3
  97. package/dist/{chunk-4IEDAORR.js → chunk-RFK4W5PZ.js} +1 -1
  98. package/dist/{chunk-NOG7ZJJA.js → chunk-RLLVP37Q.js} +1 -1
  99. package/dist/{chunk-HV7M7UUY.js → chunk-S5NB47IR.js} +6 -6
  100. package/dist/{chunk-3XGUMXGR.js → chunk-SXR4HQZY.js} +2 -2
  101. package/dist/{chunk-YN2F26NN.js → chunk-T3CXZ2BE.js} +2 -2
  102. package/dist/{chunk-MF3J7WTR.js → chunk-TN34IN7S.js} +16 -13
  103. package/dist/{chunk-XUODI55L.js → chunk-U3QU5AVC.js} +1 -1
  104. package/dist/{chunk-PNJRIMKJ.js → chunk-UB5WVCY4.js} +3 -3
  105. package/dist/{chunk-P7P2NWZD.js → chunk-URNG7ZX2.js} +1 -1
  106. package/dist/{chunk-3TF3YLM2.js → chunk-UROFA6OZ.js} +2 -2
  107. package/dist/{chunk-T5P54I7S.js → chunk-UTQRPXTL.js} +9 -8
  108. package/dist/{chunk-Y3EUEPGQ.js → chunk-UWHV7EJG.js} +2 -2
  109. package/dist/chunk-UY3VT3HQ.js +39 -0
  110. package/dist/{chunk-5LXMEHQX.js → chunk-VG2TYPZ4.js} +18 -2
  111. package/dist/{chunk-EZBJEV6F.js → chunk-VTH56ERA.js} +4 -4
  112. package/dist/{chunk-Z4DZMNDE.js → chunk-W6QYWXOZ.js} +2 -2
  113. package/dist/{chunk-3WZGFAV4.js → chunk-WKGJQIRC.js} +4 -3
  114. package/dist/{chunk-EGN4TPN5.js → chunk-WT3SEE34.js} +3 -3
  115. package/dist/{chunk-CZ4IOIWV.js → chunk-X23OAFFE.js} +4 -4
  116. package/dist/{chunk-E4FQRMHV.js → chunk-XJYR5HE3.js} +18 -0
  117. package/dist/{chunk-X3IXLDWQ.js → chunk-XSRIFWHR.js} +2 -2
  118. package/dist/{chunk-SS5IC3XV.js → chunk-Y6BFKPNB.js} +1 -1
  119. package/dist/{chunk-EFSLGRY2.js → chunk-YCL5RHEC.js} +2 -2
  120. package/dist/{chunk-LGVD2IGL.js → chunk-YD67W6DW.js} +9 -9
  121. package/dist/{chunk-J3XIGC3L.js → chunk-YE47YUGE.js} +6 -6
  122. package/dist/{chunk-F6DCNXO5.js → chunk-YEJFXJHR.js} +2 -2
  123. package/dist/{chunk-ZV6Y5VOD.js → chunk-YUVQQCT4.js} +15 -15
  124. package/dist/{chunk-T64ECODW.js → chunk-YUZFNAG6.js} +21 -0
  125. package/dist/{chunk-OWG6UV4S.js → chunk-YWAMRRAX.js} +10 -10
  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 +48 -48
  130. package/dist/containers/setup.js +10 -9
  131. package/dist/db/agents.js +6 -6
  132. package/dist/db/api_keys.js +5 -5
  133. package/dist/db/audit.js +3 -3
  134. package/dist/db/batch.js +10 -10
  135. package/dist/db/client.js +2 -2
  136. package/dist/db/credentials.js +3 -3
  137. package/dist/db/drizzle.js +4 -4
  138. package/dist/db/environments.js +6 -6
  139. package/dist/db/events.js +5 -5
  140. package/dist/db/files.js +5 -5
  141. package/dist/db/memory.js +5 -5
  142. package/dist/db/migrations.js +1 -1
  143. package/dist/db/proxy.js +5 -5
  144. package/dist/db/schema.js +5 -3
  145. package/dist/db/session-resources.js +5 -5
  146. package/dist/db/sessions.js +8 -8
  147. package/dist/db/skills.js +5 -5
  148. package/dist/db/sync.js +5 -5
  149. package/dist/db/tenants.js +3 -3
  150. package/dist/db/threads.js +7 -7
  151. package/dist/db/traces.js +5 -5
  152. package/dist/db/upstream_keys.js +3 -3
  153. package/dist/db/vaults.js +6 -6
  154. package/dist/db/work.js +33 -0
  155. package/dist/dreaming/review.js +11 -11
  156. package/dist/handlers/agents.js +64 -64
  157. package/dist/handlers/api_keys.js +65 -65
  158. package/dist/handlers/audit.js +65 -65
  159. package/dist/handlers/batch.js +65 -65
  160. package/dist/handlers/credentials.js +65 -65
  161. package/dist/handlers/environments.js +65 -65
  162. package/dist/handlers/events.js +68 -68
  163. package/dist/handlers/files.js +65 -65
  164. package/dist/handlers/index.js +141 -120
  165. package/dist/handlers/license.js +64 -64
  166. package/dist/handlers/memory.js +66 -66
  167. package/dist/handlers/metrics.js +64 -64
  168. package/dist/handlers/models.js +65 -65
  169. package/dist/handlers/providers.js +64 -64
  170. package/dist/handlers/resources.js +64 -64
  171. package/dist/handlers/sessions.js +68 -68
  172. package/dist/handlers/settings.js +64 -64
  173. package/dist/handlers/skills-write.js +67 -65
  174. package/dist/handlers/skills.js +65 -65
  175. package/dist/handlers/stream.js +64 -64
  176. package/dist/handlers/tenants.js +65 -65
  177. package/dist/handlers/threads.js +65 -65
  178. package/dist/handlers/traces.js +65 -65
  179. package/dist/handlers/ui.d.ts +6 -0
  180. package/dist/handlers/ui.d.ts.map +1 -0
  181. package/dist/handlers/ui.js +1 -1
  182. package/dist/handlers/upstream_keys.js +67 -67
  183. package/dist/handlers/vaults.js +64 -64
  184. package/dist/handlers/whoami.js +64 -64
  185. package/dist/handlers/work.js +114 -0
  186. package/dist/http.js +63 -63
  187. package/dist/index.js +84 -73
  188. package/dist/init.js +60 -60
  189. package/dist/lib/model-registry.js +6 -6
  190. package/dist/lib/skills-cache.js +6 -6
  191. package/dist/observability/otlp.js +12 -12
  192. package/dist/observability/redactor.js +8 -8
  193. package/dist/providers/daytona.js +1 -1
  194. package/dist/providers/fly.js +7 -6
  195. package/dist/providers/modal.js +5 -5
  196. package/dist/providers/registry.js +15 -3
  197. package/dist/providers/resolve-secrets.js +7 -7
  198. package/dist/providers/sprites.js +7 -7
  199. package/dist/providers/upstream-keys.js +12 -12
  200. package/dist/providers/vercel.js +5 -5
  201. package/dist/proxy/forward.js +6 -6
  202. package/dist/queue/index.js +6 -6
  203. package/dist/sessions/bus.js +10 -10
  204. package/dist/sessions/driver.js +53 -53
  205. package/dist/sessions/grader.js +5 -5
  206. package/dist/sessions/secrets.js +8 -8
  207. package/dist/sessions/sweeper.js +49 -49
  208. package/dist/sessions/threads.js +54 -54
  209. package/dist/shutdown.js +50 -50
  210. package/dist/sync/anthropic.js +10 -10
  211. package/dist/sync/container-file-sync.js +6 -6
  212. package/dist/sync/file-sync.js +17 -17
  213. package/dist/workers/runner.js +85 -0
  214. package/package.json +1 -1
  215. package/dist/chunk-3W6KEDQE.js +0 -20
  216. package/dist/chunk-JDBXIJKG.js +0 -20
  217. package/dist/chunk-QQDSHL27.js +0 -22
  218. package/dist/chunk-SWIP7JBQ.js +0 -22
@@ -10,10 +10,10 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-T75UYYMI.js";
13
+ } from "./chunk-PVFGDKXO.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-RNU253MD.js";
16
+ } from "./chunk-4ENK7S24.js";
17
17
 
18
18
  // src/db/memory.ts
19
19
  init_drizzle();
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  resolveVaultSecrets
3
- } from "./chunk-6ERUVF2Y.js";
3
+ } from "./chunk-QB7JAMWG.js";
4
4
  import {
5
5
  dockerProvider
6
6
  } from "./chunk-4XXQAVKE.js";
7
7
  import {
8
8
  appendEvent
9
- } from "./chunk-CZ4IOIWV.js";
9
+ } from "./chunk-X23OAFFE.js";
10
10
  import {
11
11
  getSession,
12
12
  getSessionRow,
13
13
  setSessionSandbox
14
- } from "./chunk-32RP2UX6.js";
14
+ } from "./chunk-MTB7SCZ5.js";
15
15
  import {
16
16
  deleteSprite,
17
17
  listSprites
18
- } from "./chunk-NVTDXBGV.js";
18
+ } from "./chunk-APKELBCA.js";
19
19
  import {
20
20
  allSessionSandboxes,
21
21
  countInEnv,
@@ -23,13 +23,14 @@ import {
23
23
  unregister
24
24
  } from "./chunk-EFOIR7R3.js";
25
25
  import {
26
- resolveContainerProvider
27
- } from "./chunk-A4BGGHRC.js";
26
+ resolveProvider,
27
+ tryResolveProvider
28
+ } from "./chunk-JXU6SA6S.js";
28
29
  import {
29
30
  getEnvironment,
30
31
  getEnvironmentRow,
31
32
  listEnvironments
32
- } from "./chunk-6BOOQV4Q.js";
33
+ } from "./chunk-CFLMIJ2C.js";
33
34
  import {
34
35
  addWarm,
35
36
  claimWarm,
@@ -40,13 +41,13 @@ import {
40
41
  } from "./chunk-G7KUVNDY.js";
41
42
  import {
42
43
  getAgent
43
- } from "./chunk-EGN4TPN5.js";
44
+ } from "./chunk-WT3SEE34.js";
44
45
  import {
45
46
  resolveBackend
46
- } from "./chunk-GBGXSRZX.js";
47
+ } from "./chunk-R5LXEIOJ.js";
47
48
  import {
48
49
  getConfig
49
- } from "./chunk-3WZGFAV4.js";
50
+ } from "./chunk-WKGJQIRC.js";
50
51
  import {
51
52
  init_clock,
52
53
  nowMs
@@ -152,7 +153,7 @@ async function acquireForFirstTurn(sessionId) {
152
153
  throw new ApiError(404, "not_found_error", "agent not found for session");
153
154
  }
154
155
  const backend = resolveBackend(agent.engine);
155
- const provider = await resolveContainerProvider(envObj?.config?.provider);
156
+ const provider = await resolveProvider({ envConfigProvider: envObj?.config?.provider });
156
157
  const sessionForSecrets = getSession(sessionId);
157
158
  const secrets = sessionForSecrets?.vault_ids?.length ? resolveVaultSecrets(sessionForSecrets.vault_ids) : {};
158
159
  if (provider.checkAvailability) {
@@ -413,7 +414,8 @@ async function fillOneEnv(env) {
413
414
  const target = effectiveWarmPoolSize(env.id);
414
415
  if (target <= 0) return;
415
416
  try {
416
- const provider = await resolveContainerProvider(env.config?.provider);
417
+ const provider = await tryResolveProvider({ envConfigProvider: env.config?.provider });
418
+ if (!provider) return;
417
419
  if (!provider.supportsWarmPool) return;
418
420
  const engine = env.config?.default_engine ?? "claude";
419
421
  const backend = resolveBackend(engine);
@@ -574,7 +576,8 @@ async function releaseSession(sessionId) {
574
576
  const name = entry?.sandboxName ?? row?.sandbox_name ?? null;
575
577
  if (name) {
576
578
  const envObj = row ? getEnvironment(row.environment_id) : null;
577
- const provider = await resolveContainerProvider(envObj?.config?.provider);
579
+ const provider = await tryResolveProvider({ envConfigProvider: envObj?.config?.provider });
580
+ if (!provider) return;
578
581
  await provider.delete(name, entry?.vaultSecrets).catch((err) => {
579
582
  console.warn(`releaseSession: failed to delete container ${name}:`, err);
580
583
  });
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_migrations,
3
3
  runMigrations
4
- } from "./chunk-T64ECODW.js";
4
+ } from "./chunk-YUZFNAG6.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./chunk-2ESYSVXG.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  loadVaultForCaller
3
- } from "./chunk-6BRG2NJL.js";
3
+ } from "./chunk-CGGGCKSK.js";
4
4
  import {
5
5
  jsonOk,
6
6
  paginatedOk,
7
7
  routeWrap
8
- } from "./chunk-DQ5VMD3Z.js";
8
+ } from "./chunk-FCKUWBUL.js";
9
9
  import {
10
10
  archiveCredential,
11
11
  createCredential,
@@ -13,7 +13,7 @@ import {
13
13
  getCredential,
14
14
  listCredentials,
15
15
  updateCredential
16
- } from "./chunk-5COWXLGO.js";
16
+ } from "./chunk-7D55V4XP.js";
17
17
  import {
18
18
  badRequest,
19
19
  conflict,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  installOpencodeWrapper
3
- } from "./chunk-SWIP7JBQ.js";
3
+ } from "./chunk-UY3VT3HQ.js";
4
4
 
5
5
  // src/backends/opencode/setup.ts
6
6
  var SENTINEL_NAME = ".claude-agents-opencode-installed";
@@ -10,10 +10,10 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-T75UYYMI.js";
13
+ } from "./chunk-PVFGDKXO.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-RNU253MD.js";
16
+ } from "./chunk-4ENK7S24.js";
17
17
  import {
18
18
  __esm,
19
19
  __export
@@ -6,29 +6,29 @@ import {
6
6
  reconcileDockerOrphanSandboxes,
7
7
  reconcileOrphanSandboxes,
8
8
  releaseSession
9
- } from "./chunk-MF3J7WTR.js";
9
+ } from "./chunk-TN34IN7S.js";
10
10
  import {
11
11
  appendEvent,
12
12
  dropEmitter
13
- } from "./chunk-CZ4IOIWV.js";
13
+ } from "./chunk-X23OAFFE.js";
14
14
  import {
15
15
  archiveSession,
16
16
  getSessionRow,
17
17
  listIdleSessions,
18
18
  updateSessionStatus
19
- } from "./chunk-32RP2UX6.js";
19
+ } from "./chunk-MTB7SCZ5.js";
20
20
  import {
21
- resolveContainerProvider
22
- } from "./chunk-A4BGGHRC.js";
21
+ tryResolveProvider
22
+ } from "./chunk-JXU6SA6S.js";
23
23
  import {
24
24
  getEnvironment
25
- } from "./chunk-6BOOQV4Q.js";
25
+ } from "./chunk-CFLMIJ2C.js";
26
26
  import {
27
27
  expireWarm
28
28
  } from "./chunk-G7KUVNDY.js";
29
29
  import {
30
30
  getConfig
31
- } from "./chunk-3WZGFAV4.js";
31
+ } from "./chunk-WKGJQIRC.js";
32
32
  import {
33
33
  init_clock,
34
34
  nowMs
@@ -88,7 +88,8 @@ async function evictExpiredWarmContainers() {
88
88
  for (const entry of expired) {
89
89
  try {
90
90
  const envObj = getEnvironment(entry.envId);
91
- const provider = await resolveContainerProvider(envObj?.config?.provider);
91
+ const provider = await tryResolveProvider({ envConfigProvider: envObj?.config?.provider });
92
+ if (!provider) continue;
92
93
  await provider.delete(entry.sandboxName, entry.vaultSecrets);
93
94
  console.log(`[sweeper] deleted expired warm container: ${entry.sandboxName}`);
94
95
  } catch (err) {
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  listCredentialsWithTokens
3
- } from "./chunk-5COWXLGO.js";
3
+ } from "./chunk-7D55V4XP.js";
4
4
  import {
5
5
  listEntries
6
- } from "./chunk-OJUDLJOG.js";
6
+ } from "./chunk-REY2YZ5X.js";
7
7
 
8
8
  // src/sessions/secrets.ts
9
9
  function loadSessionSecrets(vaultIds) {
@@ -0,0 +1,39 @@
1
+ // src/backends/opencode/wrapper-script.ts
2
+ var OPENCODE_WRAPPER_PATH = "/tmp/.opencode-wrapper";
3
+ var SANDBOX_WRAPPER_SCRIPT = [
4
+ "#!/bin/bash",
5
+ "set -e",
6
+ 'while IFS= read -r line; do [ -z "$line" ] && break; export "$line"; done',
7
+ "PROMPT=$(cat)",
8
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
9
+ 'SPRITE_SOCK="/.sprite/api.sock"',
10
+ 'HEARTBEAT_PID=""',
11
+ 'if [ -S "$SPRITE_SOCK" ]; then',
12
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
13
+ " -X POST http://sprite/v1/tasks \\",
14
+ ' -H "Content-Type: application/json" \\',
15
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
16
+ " (while sleep 60; do",
17
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
18
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
19
+ ' -H "Content-Type: application/json" \\',
20
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
21
+ " done) &",
22
+ " HEARTBEAT_PID=$!",
23
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
24
+ "fi",
25
+ 'opencode "$@" "$PROMPT"'
26
+ ].join("\n");
27
+ async function installOpencodeWrapper(sandboxName, provider) {
28
+ const escaped = SANDBOX_WRAPPER_SCRIPT.replace(/'/g, "'\\''");
29
+ await provider.exec(sandboxName, [
30
+ "bash",
31
+ "-c",
32
+ `printf '%s' '${escaped}' > ${OPENCODE_WRAPPER_PATH} && chmod +x ${OPENCODE_WRAPPER_PATH}`
33
+ ]);
34
+ }
35
+
36
+ export {
37
+ OPENCODE_WRAPPER_PATH,
38
+ installOpencodeWrapper
39
+ };
@@ -6,7 +6,7 @@ import {
6
6
  getSkill,
7
7
  getSkillVersion,
8
8
  listSkillVersions
9
- } from "./chunk-F6DCNXO5.js";
9
+ } from "./chunk-YEJFXJHR.js";
10
10
  import {
11
11
  resolveCreateTenant
12
12
  } from "./chunk-23UKWXJH.js";
@@ -15,7 +15,7 @@ import {
15
15
  jsonOk,
16
16
  paginatedOk,
17
17
  routeWrap
18
- } from "./chunk-DQ5VMD3Z.js";
18
+ } from "./chunk-FCKUWBUL.js";
19
19
  import {
20
20
  badRequest,
21
21
  notFound
@@ -226,6 +226,21 @@ function handleGetSkillVersion(request, skillId, version) {
226
226
  return jsonOk(sv);
227
227
  });
228
228
  }
229
+ function handleGetSkillVersionContent(request, skillId, version) {
230
+ return routeWrap(request, async () => {
231
+ const skill = getSkill(skillId);
232
+ if (!skill) throw notFound("skill not found");
233
+ const sv = getSkillVersion(skillId, version);
234
+ if (!sv) throw notFound("skill version not found");
235
+ return new Response(sv.content, {
236
+ headers: {
237
+ "Content-Type": "text/markdown",
238
+ "Content-Disposition": `attachment; filename="${skill.name}-${version}.md"`,
239
+ "Content-Length": String(Buffer.byteLength(sv.content, "utf-8"))
240
+ }
241
+ });
242
+ });
243
+ }
229
244
  function handleDeleteSkillVersion(request, skillId, version) {
230
245
  return routeWrap(request, async () => {
231
246
  const result = deleteSkillVersion(skillId, version);
@@ -246,5 +261,6 @@ export {
246
261
  handleCreateSkillVersion,
247
262
  handleListSkillVersions,
248
263
  handleGetSkillVersion,
264
+ handleGetSkillVersionContent,
249
265
  handleDeleteSkillVersion
250
266
  };
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  createSession
3
- } from "./chunk-32RP2UX6.js";
3
+ } from "./chunk-MTB7SCZ5.js";
4
4
  import {
5
5
  createEnvironment,
6
6
  deleteEnvironment,
7
7
  getEnvironment
8
- } from "./chunk-6BOOQV4Q.js";
8
+ } from "./chunk-CFLMIJ2C.js";
9
9
  import {
10
10
  archiveAgent,
11
11
  createAgent,
12
12
  getAgent
13
- } from "./chunk-EGN4TPN5.js";
13
+ } from "./chunk-WT3SEE34.js";
14
14
  import {
15
15
  getDrizzle,
16
16
  init_drizzle
17
- } from "./chunk-T75UYYMI.js";
17
+ } from "./chunk-PVFGDKXO.js";
18
18
 
19
19
  // src/db/batch.ts
20
20
  init_drizzle();
@@ -9,10 +9,10 @@ import {
9
9
  import {
10
10
  getDrizzle,
11
11
  init_drizzle
12
- } from "./chunk-T75UYYMI.js";
12
+ } from "./chunk-PVFGDKXO.js";
13
13
  import {
14
14
  schema_exports
15
- } from "./chunk-RNU253MD.js";
15
+ } from "./chunk-4ENK7S24.js";
16
16
 
17
17
  // src/db/api_keys.ts
18
18
  init_drizzle();
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  getDrizzle,
7
7
  init_drizzle
8
- } from "./chunk-T75UYYMI.js";
8
+ } from "./chunk-PVFGDKXO.js";
9
9
  import {
10
10
  schema_exports
11
- } from "./chunk-RNU253MD.js";
11
+ } from "./chunk-4ENK7S24.js";
12
12
 
13
13
  // src/config/index.ts
14
14
  init_drizzle();
@@ -55,7 +55,8 @@ function loadConfig() {
55
55
  process.env.ANTHROPIC_PASSTHROUGH_ENABLED ?? readSetting("anthropic_passthrough_enabled")
56
56
  ),
57
57
  warmPoolSize: num(process.env.WARM_POOL_SIZE, 0),
58
- warmPoolTtlMs: num(process.env.WARM_POOL_TTL_MS, 3e5)
58
+ warmPoolTtlMs: num(process.env.WARM_POOL_TTL_MS, 3e5),
59
+ defaultProvider: process.env.DEFAULT_PROVIDER || readSetting("default_provider") || void 0
59
60
  };
60
61
  }
61
62
  function parseBool(v) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_TENANT_ID
3
- } from "./chunk-LSXVCZN7.js";
3
+ } from "./chunk-CD2FQVQR.js";
4
4
  import {
5
5
  init_ids,
6
6
  newId
@@ -13,10 +13,10 @@ import {
13
13
  import {
14
14
  getDrizzle,
15
15
  init_drizzle
16
- } from "./chunk-T75UYYMI.js";
16
+ } from "./chunk-PVFGDKXO.js";
17
17
  import {
18
18
  schema_exports
19
- } from "./chunk-RNU253MD.js";
19
+ } from "./chunk-4ENK7S24.js";
20
20
 
21
21
  // src/db/agents.ts
22
22
  init_drizzle();
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  getSession
3
- } from "./chunk-32RP2UX6.js";
3
+ } from "./chunk-MTB7SCZ5.js";
4
4
  import {
5
5
  appendEvent,
6
6
  appendEventsBatch,
7
7
  listEvents,
8
8
  rowToManagedEvent
9
- } from "./chunk-N33MOUCH.js";
9
+ } from "./chunk-PRWWTLPR.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-EGN4TPN5.js";
12
+ } from "./chunk-WT3SEE34.js";
13
13
  import {
14
14
  getDb,
15
15
  init_client
16
- } from "./chunk-XUODI55L.js";
16
+ } from "./chunk-U3QU5AVC.js";
17
17
 
18
18
  // src/sessions/bus.ts
19
19
  import { EventEmitter } from "events";
@@ -8,6 +8,24 @@ var SANDBOX_WRAPPER_SCRIPT = [
8
8
  // issues when exec replaces the process, matching the claude wrapper pattern.
9
9
  "PROMPT_FILE=$(mktemp)",
10
10
  'cat > "$PROMPT_FILE"',
11
+ // Sprites keep-alive: prevent VM suspension during long agent turns.
12
+ // Only activates if the sprites management socket exists (sprites containers only).
13
+ 'SPRITE_SOCK="/.sprite/api.sock"',
14
+ 'HEARTBEAT_PID=""',
15
+ 'if [ -S "$SPRITE_SOCK" ]; then',
16
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
17
+ " -X POST http://sprite/v1/tasks \\",
18
+ ' -H "Content-Type: application/json" \\',
19
+ ` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
20
+ " (while sleep 60; do",
21
+ ' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
22
+ " -X PUT http://sprite/v1/tasks/agent-turn \\",
23
+ ' -H "Content-Type: application/json" \\',
24
+ ` -d '{"expire":"5m"}' >/dev/null 2>&1`,
25
+ " done) &",
26
+ " HEARTBEAT_PID=$!",
27
+ ` trap 'curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" -X DELETE http://sprite/v1/tasks/agent-turn >/dev/null 2>&1; [ -n "$HEARTBEAT_PID" ] && kill $HEARTBEAT_PID 2>/dev/null' EXIT`,
28
+ "fi",
11
29
  // Set CWD to the first cloned repo if available, otherwise the user's home.
12
30
  // Without bwrap (--sandbox none), codex inherits the container exec CWD
13
31
  // which may be / or /root with no project context.
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  markStopping
3
- } from "./chunk-T5P54I7S.js";
3
+ } from "./chunk-UTQRPXTL.js";
4
4
  import {
5
5
  closeDb,
6
6
  init_client,
7
7
  syncDb
8
- } from "./chunk-XUODI55L.js";
8
+ } from "./chunk-U3QU5AVC.js";
9
9
  import {
10
10
  getRuntime
11
11
  } from "./chunk-UYTSKFGK.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-FX2AEKOV.js";
7
7
  import {
8
8
  getConfig
9
- } from "./chunk-3WZGFAV4.js";
9
+ } from "./chunk-WKGJQIRC.js";
10
10
 
11
11
  // src/backends/claude/args.ts
12
12
  function buildClaudeArgs(input) {
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  getDrizzle,
7
7
  init_drizzle
8
- } from "./chunk-T75UYYMI.js";
8
+ } from "./chunk-PVFGDKXO.js";
9
9
  import {
10
10
  schema_exports
11
- } from "./chunk-RNU253MD.js";
11
+ } from "./chunk-4ENK7S24.js";
12
12
 
13
13
  // src/db/proxy.ts
14
14
  init_drizzle();
@@ -1,19 +1,19 @@
1
+ import {
2
+ buildPiArgs
3
+ } from "./chunk-6KWJASEO.js";
4
+ import {
5
+ buildPiAuthEnv,
6
+ validatePiRuntime
7
+ } from "./chunk-2IISXUVF.js";
1
8
  import {
2
9
  preparePiOnSandbox
3
- } from "./chunk-QYSDP6V5.js";
10
+ } from "./chunk-CMOU2OFW.js";
4
11
  import {
5
12
  createPiTranslator
6
13
  } from "./chunk-B6E6BVNK.js";
7
14
  import {
8
15
  PI_WRAPPER_PATH
9
- } from "./chunk-JDBXIJKG.js";
10
- import {
11
- buildPiArgs
12
- } from "./chunk-6KWJASEO.js";
13
- import {
14
- buildPiAuthEnv,
15
- validatePiRuntime
16
- } from "./chunk-ZEDULYKX.js";
16
+ } from "./chunk-OGA7KDQZ.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
19
  } from "./chunk-YE2RMJY7.js";
@@ -2,7 +2,7 @@ import {
2
2
  archiveThread,
3
3
  getThread,
4
4
  listThreads
5
- } from "./chunk-34Q6WMIT.js";
5
+ } from "./chunk-2Z56TPBL.js";
6
6
  import {
7
7
  assertResourceTenant
8
8
  } from "./chunk-23UKWXJH.js";
@@ -10,21 +10,21 @@ import {
10
10
  jsonOk,
11
11
  paginatedOk,
12
12
  routeWrap
13
- } from "./chunk-DQ5VMD3Z.js";
13
+ } from "./chunk-FCKUWBUL.js";
14
14
  import {
15
15
  subscribe
16
- } from "./chunk-CZ4IOIWV.js";
16
+ } from "./chunk-X23OAFFE.js";
17
17
  import {
18
18
  getSession
19
- } from "./chunk-32RP2UX6.js";
19
+ } from "./chunk-MTB7SCZ5.js";
20
20
  import {
21
21
  listEvents,
22
22
  rowToManagedEvent
23
- } from "./chunk-N33MOUCH.js";
23
+ } from "./chunk-PRWWTLPR.js";
24
24
  import {
25
25
  getDb,
26
26
  init_client
27
- } from "./chunk-XUODI55L.js";
27
+ } from "./chunk-U3QU5AVC.js";
28
28
  import {
29
29
  badRequest,
30
30
  notFound
@@ -10,10 +10,10 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-T75UYYMI.js";
13
+ } from "./chunk-PVFGDKXO.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-RNU253MD.js";
16
+ } from "./chunk-4ENK7S24.js";
17
17
 
18
18
  // src/db/skills.ts
19
19
  init_drizzle();
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  syncAndCreateSession
3
- } from "./chunk-6SVZD3UA.js";
3
+ } from "./chunk-M4OF5D4K.js";
4
4
  import {
5
5
  resolveRemoteSessionId,
6
6
  upsertSync
7
- } from "./chunk-RNDLMMKI.js";
7
+ } from "./chunk-LOWHDHDD.js";
8
8
  import {
9
9
  assertResourceTenant,
10
10
  tenantFilter
@@ -14,19 +14,19 @@ import {
14
14
  } from "./chunk-DC2UMEQH.js";
15
15
  import {
16
16
  getMemoryStore
17
- } from "./chunk-YN2F26NN.js";
17
+ } from "./chunk-T3CXZ2BE.js";
18
18
  import {
19
19
  kickoffEnvironmentSetup
20
- } from "./chunk-SAUR463Z.js";
20
+ } from "./chunk-PLSXDJT4.js";
21
21
  import {
22
22
  decodeCursor,
23
23
  jsonOk,
24
24
  paginatedOk,
25
25
  routeWrap
26
- } from "./chunk-DQ5VMD3Z.js";
26
+ } from "./chunk-FCKUWBUL.js";
27
27
  import {
28
28
  forwardToAnthropic
29
- } from "./chunk-WKPUTJGD.js";
29
+ } from "./chunk-5LDBCBOR.js";
30
30
  import {
31
31
  errors_exports,
32
32
  init_errors
@@ -36,18 +36,18 @@ import {
36
36
  isProxied,
37
37
  markProxied,
38
38
  unmarkProxied
39
- } from "./chunk-EFSLGRY2.js";
39
+ } from "./chunk-YCL5RHEC.js";
40
40
  import {
41
41
  dropActor,
42
42
  getActor
43
43
  } from "./chunk-LAWTTG2E.js";
44
44
  import {
45
45
  releaseSession
46
- } from "./chunk-MF3J7WTR.js";
46
+ } from "./chunk-TN34IN7S.js";
47
47
  import {
48
48
  appendEvent,
49
49
  dropEmitter
50
- } from "./chunk-CZ4IOIWV.js";
50
+ } from "./chunk-X23OAFFE.js";
51
51
  import {
52
52
  archiveSession,
53
53
  createSession,
@@ -55,13 +55,13 @@ import {
55
55
  listSessions,
56
56
  updateSessionMutable,
57
57
  updateSessionStatus
58
- } from "./chunk-32RP2UX6.js";
58
+ } from "./chunk-MTB7SCZ5.js";
59
59
  import {
60
60
  getEnvironment
61
- } from "./chunk-6BOOQV4Q.js";
61
+ } from "./chunk-CFLMIJ2C.js";
62
62
  import {
63
63
  getAgent
64
- } from "./chunk-EGN4TPN5.js";
64
+ } from "./chunk-WT3SEE34.js";
65
65
  import {
66
66
  init_clock,
67
67
  nowMs
@@ -69,7 +69,7 @@ import {
69
69
  import {
70
70
  getDb,
71
71
  init_client
72
- } from "./chunk-XUODI55L.js";
72
+ } from "./chunk-U3QU5AVC.js";
73
73
  import {
74
74
  badRequest,
75
75
  notFound
@@ -233,7 +233,7 @@ function handleCreateSession(request) {
233
233
  env: env.id,
234
234
  vaults: data.vault_ids
235
235
  });
236
- if (env.config?.provider === "anthropic" && agent.engine !== "claude") {
236
+ if ((env.config?.type === "cloud" || env.config?.provider === "anthropic") && agent.engine !== "claude") {
237
237
  throw badRequest(
238
238
  `${agent.engine} engine cannot run on the anthropic provider \u2014 Anthropic's managed agents API only supports Claude models. Use a container provider (docker, e2b, fly, etc.) instead.`
239
239
  );
@@ -264,7 +264,7 @@ function handleCreateSession(request) {
264
264
  if (store.archived_at) throw badRequest(`memory store ${r.memory_store_id} is archived`);
265
265
  }
266
266
  }
267
- if (env.config?.provider === "anthropic") {
267
+ if (env.config?.type === "cloud" || env.config?.provider === "anthropic") {
268
268
  const { resolveAnthropicKey } = await import("./providers/upstream-keys.js");
269
269
  const resolved = resolveAnthropicKey({ vaultIds: data.vault_ids ?? void 0 });
270
270
  if (!resolved) {