@agentstep/agent-sdk 0.4.31 → 0.4.33

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 (164) hide show
  1. package/dist/auth/middleware.js +5 -5
  2. package/dist/backends/claude/args.js +3 -3
  3. package/dist/backends/claude/index.js +4 -4
  4. package/dist/backends/codex/auth.js +3 -3
  5. package/dist/backends/codex/index.js +7 -7
  6. package/dist/backends/factory/auth.js +3 -3
  7. package/dist/backends/factory/index.js +4 -4
  8. package/dist/backends/gemini/auth.js +3 -3
  9. package/dist/backends/gemini/index.js +7 -7
  10. package/dist/backends/opencode/auth.js +3 -3
  11. package/dist/backends/opencode/index.js +7 -7
  12. package/dist/backends/pi/auth.js +3 -3
  13. package/dist/backends/pi/index.js +4 -4
  14. package/dist/backends/registry.js +21 -21
  15. package/dist/{chunk-O3XR457F.js → chunk-25D47TYW.js} +2 -2
  16. package/dist/{chunk-KRLVSKID.js → chunk-2FTX45HM.js} +4 -4
  17. package/dist/{chunk-TGEDOUUD.js → chunk-2GIX4HAT.js} +1 -1
  18. package/dist/{chunk-JIURGVRG.js → chunk-2I35VGHX.js} +4 -4
  19. package/dist/{chunk-ULS4X3UQ.js → chunk-2PPB644A.js} +1 -1
  20. package/dist/{chunk-FOOPNRHA.js → chunk-2Q46G6VW.js} +2 -2
  21. package/dist/{chunk-UCOSSYKZ.js → chunk-2ZVFMBAA.js} +8 -7
  22. package/dist/{chunk-KFORPY7J.js → chunk-3NK6YTA5.js} +17 -10
  23. package/dist/{chunk-W63RBT7H.js → chunk-3SZ42O5O.js} +181 -15
  24. package/dist/chunk-4XXQAVKE.js +34 -0
  25. package/dist/{chunk-O5B7GRUK.js → chunk-5EQJOUWM.js} +1 -1
  26. package/dist/{chunk-PTYMGYNJ.js → chunk-5F5SHXHX.js} +1 -1
  27. package/dist/{chunk-AJPZY6EJ.js → chunk-5IGBMS2U.js} +1 -1
  28. package/dist/{chunk-A7CS7RTM.js → chunk-5YBJAYIH.js} +3 -3
  29. package/dist/{chunk-IN5KO2L2.js → chunk-6IYCBW4J.js} +1 -1
  30. package/dist/{chunk-BQRKJAOP.js → chunk-6RH4KQJJ.js} +1 -1
  31. package/dist/{chunk-UW4T4TG3.js → chunk-76DKCO5N.js} +1 -1
  32. package/dist/{chunk-TLH4JLC7.js → chunk-7CD4QT5R.js} +2 -2
  33. package/dist/{chunk-Y2VQ65PM.js → chunk-7GG3FEK2.js} +3 -3
  34. package/dist/{chunk-UZQLLGX4.js → chunk-A75T7PVY.js} +12 -12
  35. package/dist/{chunk-33OBMYKV.js → chunk-B3I4ELID.js} +1 -1
  36. package/dist/{chunk-XVK7YFZP.js → chunk-C46UG6GQ.js} +1 -1
  37. package/dist/{chunk-I2SLDKCN.js → chunk-C6AXM3M7.js} +2 -2
  38. package/dist/{chunk-OLF7H564.js → chunk-CDD7O43R.js} +5 -5
  39. package/dist/{chunk-NJ4JTJJM.js → chunk-CREPPDHX.js} +1 -1
  40. package/dist/{chunk-55SVTKOM.js → chunk-EOCBMN5V.js} +2 -2
  41. package/dist/{chunk-YS5UPMTH.js → chunk-EUIR2ADY.js} +8 -8
  42. package/dist/{chunk-G6JKWW2S.js → chunk-FESFSQMR.js} +1 -1
  43. package/dist/{chunk-RCF2SVUO.js → chunk-FWQSTFNW.js} +20 -16
  44. package/dist/{chunk-Q3DOTREK.js → chunk-FXLUSECC.js} +1 -1
  45. package/dist/chunk-G7KUVNDY.js +80 -0
  46. package/dist/{chunk-OZJG5G7V.js → chunk-GQCMR7WS.js} +3 -3
  47. package/dist/{chunk-NIW3B4V2.js → chunk-GVPJL3XS.js} +5 -5
  48. package/dist/{chunk-ZG7FD2KD.js → chunk-IDQZ2AOM.js} +2 -2
  49. package/dist/{chunk-MHL3EXDR.js → chunk-JCW3ZRES.js} +1 -1
  50. package/dist/{chunk-BNXUV6NZ.js → chunk-JFUEQ6ED.js} +3 -3
  51. package/dist/{chunk-RKL2NK3V.js → chunk-JZL4L54R.js} +4 -4
  52. package/dist/{chunk-WU52LOGJ.js → chunk-KEQXISSM.js} +1 -1
  53. package/dist/{chunk-MVC2FD32.js → chunk-MHBLVGRF.js} +3 -3
  54. package/dist/{chunk-ZOWT6X6Y.js → chunk-MQQ44IGX.js} +4 -4
  55. package/dist/{chunk-UBFEHVPY.js → chunk-MX53KOBD.js} +2 -2
  56. package/dist/{chunk-GNHRAWOX.js → chunk-N3QIXC2B.js} +2 -2
  57. package/dist/{chunk-V5XH43NK.js → chunk-OB5IFO65.js} +7 -7
  58. package/dist/{chunk-JWSR5TZ3.js → chunk-OGJUSGF7.js} +1 -1
  59. package/dist/{chunk-KLFJTFDB.js → chunk-P26WOAA3.js} +1 -1
  60. package/dist/{chunk-LHQD4KLV.js → chunk-P3PHXVMA.js} +1 -1
  61. package/dist/{chunk-UZHSDRAK.js → chunk-PIJKJNGB.js} +3 -3
  62. package/dist/{chunk-M7W3PCFS.js → chunk-PNXHXIX6.js} +1 -1
  63. package/dist/{chunk-CGKRD37R.js → chunk-PXVLLMKV.js} +2 -2
  64. package/dist/{chunk-FEXR57M4.js → chunk-R6V363NP.js} +4 -4
  65. package/dist/{chunk-S4AYCMMB.js → chunk-RVR6C22M.js} +1 -1
  66. package/dist/{chunk-WORPHTCS.js → chunk-S6FREUL2.js} +33 -4
  67. package/dist/{chunk-JJGAQMPS.js → chunk-S7W3KJYH.js} +1 -1
  68. package/dist/{chunk-4MDF5N2L.js → chunk-T4YKZUL6.js} +2 -2
  69. package/dist/{chunk-ZKHUJB7A.js → chunk-TPPLYCJF.js} +1 -1
  70. package/dist/{chunk-5H2CQ6L4.js → chunk-UKXYPXIB.js} +2 -2
  71. package/dist/{chunk-4LKSYF4M.js → chunk-V2R7RWVY.js} +1 -1
  72. package/dist/{chunk-6YZ5WTLB.js → chunk-V7MTIMPB.js} +7 -5
  73. package/dist/{chunk-PVITAFPJ.js → chunk-VYDO52CO.js} +2 -2
  74. package/dist/{chunk-CIUFOD65.js → chunk-WQARLGBG.js} +3 -3
  75. package/dist/{chunk-DKBNLGZO.js → chunk-XT3TAZB7.js} +11 -11
  76. package/dist/{chunk-7RJNOZLB.js → chunk-Y3LYQJHC.js} +14 -14
  77. package/dist/{chunk-R3Q62FVO.js → chunk-YT2JWLSK.js} +2 -2
  78. package/dist/{chunk-TLEGXMX7.js → chunk-YXVKDLMN.js} +3 -3
  79. package/dist/config/index.js +2 -2
  80. package/dist/containers/client.js +3 -3
  81. package/dist/containers/exec.js +3 -3
  82. package/dist/containers/lifecycle.js +38 -33
  83. package/dist/containers/setup.js +4 -4
  84. package/dist/containers/warm-pool.js +21 -0
  85. package/dist/db/agents.js +2 -2
  86. package/dist/db/api_keys.js +2 -2
  87. package/dist/db/batch.js +6 -6
  88. package/dist/db/environments.js +2 -2
  89. package/dist/db/events.js +2 -2
  90. package/dist/db/files.js +2 -2
  91. package/dist/db/memory.js +2 -2
  92. package/dist/db/proxy.js +2 -2
  93. package/dist/db/session-resources.js +2 -2
  94. package/dist/db/sessions.js +3 -3
  95. package/dist/db/sync.js +2 -2
  96. package/dist/db/vaults.js +2 -2
  97. package/dist/handlers/agents.js +48 -47
  98. package/dist/handlers/api_keys.js +48 -47
  99. package/dist/handlers/audit.js +48 -47
  100. package/dist/handlers/batch.js +49 -48
  101. package/dist/handlers/credentials.js +49 -48
  102. package/dist/handlers/environments.js +49 -48
  103. package/dist/handlers/events.js +51 -50
  104. package/dist/handlers/files.js +49 -48
  105. package/dist/handlers/index.js +96 -95
  106. package/dist/handlers/license.js +48 -47
  107. package/dist/handlers/memory.js +49 -48
  108. package/dist/handlers/metrics.js +48 -47
  109. package/dist/handlers/models.js +49 -48
  110. package/dist/handlers/providers.js +48 -47
  111. package/dist/handlers/resources.js +48 -47
  112. package/dist/handlers/sessions.js +51 -50
  113. package/dist/handlers/settings.js +48 -47
  114. package/dist/handlers/skills-write.js +48 -47
  115. package/dist/handlers/skills.js +49 -48
  116. package/dist/handlers/stream.js +48 -47
  117. package/dist/handlers/tenants.js +48 -47
  118. package/dist/handlers/threads.js +48 -47
  119. package/dist/handlers/traces.js +48 -47
  120. package/dist/handlers/upstream_keys.js +49 -48
  121. package/dist/handlers/vaults.js +48 -47
  122. package/dist/handlers/whoami.js +48 -47
  123. package/dist/http.js +47 -46
  124. package/dist/index.js +60 -59
  125. package/dist/init.js +44 -43
  126. package/dist/lib/model-registry.js +3 -3
  127. package/dist/lib/skills-cache.js +3 -3
  128. package/dist/observability/otlp.js +8 -8
  129. package/dist/observability/redactor.js +4 -4
  130. package/dist/providers/apple-container.js +2 -2
  131. package/dist/providers/docker.js +1 -1
  132. package/dist/providers/fly.js +2 -2
  133. package/dist/providers/modal.js +2 -2
  134. package/dist/providers/podman.js +24 -21
  135. package/dist/providers/registry.js +1 -1
  136. package/dist/providers/resolve-secrets.js +3 -3
  137. package/dist/providers/sprites.js +5 -4
  138. package/dist/providers/upstream-keys.js +6 -6
  139. package/dist/providers/vercel.js +2 -2
  140. package/dist/proxy/forward.js +3 -3
  141. package/dist/queue/index.js +3 -3
  142. package/dist/sessions/bus.js +6 -6
  143. package/dist/sessions/driver.js +37 -36
  144. package/dist/sessions/grader.js +2 -2
  145. package/dist/sessions/secrets.js +3 -3
  146. package/dist/sessions/sweeper.js +35 -34
  147. package/dist/sessions/threads.js +38 -37
  148. package/dist/shutdown.js +36 -35
  149. package/dist/sync/anthropic.js +6 -6
  150. package/dist/sync/container-file-sync.js +3 -3
  151. package/dist/sync/file-sync.js +12 -12
  152. package/package.json +1 -1
  153. package/dist/chunk-RMZRSYIJ.js +0 -31
  154. package/dist/{chunk-2COVNKOK.js → chunk-5EKQBD2H.js} +5 -5
  155. package/dist/{chunk-WNHJTUPW.js → chunk-A3KHFT7I.js} +5 -5
  156. package/dist/{chunk-VND46TDY.js → chunk-E7DD7F7J.js} +4 -4
  157. package/dist/{chunk-BCUBVYE3.js → chunk-L2RX552S.js} +4 -4
  158. package/dist/{chunk-LASUEMN6.js → chunk-SUGSHXND.js} +5 -5
  159. package/dist/{chunk-NDVC4J3H.js → chunk-TH7WJLZC.js} +5 -5
  160. package/dist/{chunk-XTZWBXAO.js → chunk-USYY3L7G.js} +4 -4
  161. package/dist/{chunk-C4II4GGZ.js → chunk-WPK4ZPMG.js} +0 -0
  162. package/dist/{chunk-QVFRPABA.js → chunk-X6IQ57SC.js} +5 -5
  163. package/dist/{chunk-P2IGNOJI.js → chunk-ZTH5JRZG.js} +5 -5
  164. package/dist/{chunk-J37F7PXJ.js → chunk-ZVXIZ2JD.js} +5 -5
@@ -1,59 +1,60 @@
1
- import {
2
- enqueueTurn
3
- } from "./chunk-ULS4X3UQ.js";
4
1
  import {
5
2
  runTurn
6
- } from "./chunk-UZQLLGX4.js";
3
+ } from "./chunk-A75T7PVY.js";
4
+ import {
5
+ enqueueTurn
6
+ } from "./chunk-2PPB644A.js";
7
7
  import {
8
8
  installOtlpExporter
9
- } from "./chunk-NIW3B4V2.js";
9
+ } from "./chunk-GVPJL3XS.js";
10
10
  import {
11
11
  redactAppendInput
12
- } from "./chunk-GNHRAWOX.js";
12
+ } from "./chunk-N3QIXC2B.js";
13
13
  import {
14
14
  createApiKey,
15
15
  listApiKeys
16
- } from "./chunk-XTZWBXAO.js";
16
+ } from "./chunk-USYY3L7G.js";
17
17
  import {
18
18
  initSentry
19
19
  } from "./chunk-3MQ2FWXS.js";
20
20
  import {
21
21
  installShutdownHandlers
22
- } from "./chunk-BQRKJAOP.js";
22
+ } from "./chunk-6RH4KQJJ.js";
23
23
  import {
24
24
  runSweep
25
- } from "./chunk-WORPHTCS.js";
25
+ } from "./chunk-S6FREUL2.js";
26
26
  import {
27
+ fillWarmPools,
27
28
  reconcileDockerOrphanSandboxes,
28
29
  reconcileOrphanSandboxes
29
- } from "./chunk-W63RBT7H.js";
30
+ } from "./chunk-3SZ42O5O.js";
30
31
  import {
31
32
  appendEvent,
32
33
  installPayloadRedactor
33
- } from "./chunk-MVC2FD32.js";
34
+ } from "./chunk-MHBLVGRF.js";
34
35
  import {
35
36
  setSessionSandbox
36
- } from "./chunk-KFORPY7J.js";
37
+ } from "./chunk-3NK6YTA5.js";
37
38
  import {
38
39
  readEnvValue,
39
40
  upsertEnvLine
40
41
  } from "./chunk-YPXI7Q2M.js";
41
42
  import {
42
43
  getLastUnprocessedUserMessage
43
- } from "./chunk-NDVC4J3H.js";
44
+ } from "./chunk-TH7WJLZC.js";
44
45
  import {
45
46
  getBySession,
46
47
  register
47
48
  } from "./chunk-EFOIR7R3.js";
48
49
  import {
49
50
  resolveContainerProvider
50
- } from "./chunk-C4II4GGZ.js";
51
+ } from "./chunk-WPK4ZPMG.js";
51
52
  import {
52
53
  getEnvironment
53
- } from "./chunk-QVFRPABA.js";
54
+ } from "./chunk-X6IQ57SC.js";
54
55
  import {
55
56
  getConfig
56
- } from "./chunk-6YZ5WTLB.js";
57
+ } from "./chunk-V7MTIMPB.js";
57
58
  import {
58
59
  init_clock,
59
60
  nowMs
@@ -130,6 +131,9 @@ async function doInit() {
130
131
  });
131
132
  import("./lib/model-registry.js").then((m) => m.getModels().catch(() => {
132
133
  }));
134
+ fillWarmPools().catch((err) => {
135
+ console.warn("[init] warm pool fill failed:", err);
136
+ });
133
137
  if (!g.__caSweeperHandle) {
134
138
  const intervalMs = getConfig().sweeperIntervalMs;
135
139
  g.__caSweeperHandle = setInterval(() => {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -0,0 +1,80 @@
1
+ // src/containers/warm-pool.ts
2
+ var g = globalThis;
3
+ function state() {
4
+ if (!g.__caWarmPool) {
5
+ g.__caWarmPool = { byEnv: /* @__PURE__ */ new Map(), inflight: /* @__PURE__ */ new Map() };
6
+ }
7
+ return g.__caWarmPool;
8
+ }
9
+ function addWarm(entry) {
10
+ const s = state();
11
+ const list = s.byEnv.get(entry.envId) ?? [];
12
+ list.push(entry);
13
+ s.byEnv.set(entry.envId, list);
14
+ }
15
+ function claimWarm(envId, engine, provider) {
16
+ const s = state();
17
+ const list = s.byEnv.get(envId);
18
+ if (!list || list.length === 0) return null;
19
+ const idx = list.findIndex(
20
+ (e) => e.engine === engine && e.provider === provider
21
+ );
22
+ if (idx === -1) return null;
23
+ const [entry] = list.splice(idx, 1);
24
+ if (list.length === 0) s.byEnv.delete(envId);
25
+ return entry;
26
+ }
27
+ function expireWarm(now = Date.now()) {
28
+ const s = state();
29
+ const expired = [];
30
+ for (const [envId, list] of s.byEnv) {
31
+ const keep = [];
32
+ for (const entry of list) {
33
+ if (entry.expiresAt <= now) {
34
+ expired.push(entry);
35
+ } else {
36
+ keep.push(entry);
37
+ }
38
+ }
39
+ if (keep.length === 0) {
40
+ s.byEnv.delete(envId);
41
+ } else {
42
+ s.byEnv.set(envId, keep);
43
+ }
44
+ }
45
+ return expired;
46
+ }
47
+ function countWarm(envId) {
48
+ return state().byEnv.get(envId)?.length ?? 0;
49
+ }
50
+ function countInflight(envId) {
51
+ return state().inflight.get(envId) ?? 0;
52
+ }
53
+ function incrementInflight(envId) {
54
+ const s = state();
55
+ s.inflight.set(envId, (s.inflight.get(envId) ?? 0) + 1);
56
+ }
57
+ function decrementInflight(envId) {
58
+ const s = state();
59
+ const cur = s.inflight.get(envId) ?? 0;
60
+ const next = cur - 1;
61
+ if (next <= 0) {
62
+ s.inflight.delete(envId);
63
+ } else {
64
+ s.inflight.set(envId, next);
65
+ }
66
+ }
67
+ function __resetWarmPool() {
68
+ g.__caWarmPool = { byEnv: /* @__PURE__ */ new Map(), inflight: /* @__PURE__ */ new Map() };
69
+ }
70
+
71
+ export {
72
+ addWarm,
73
+ claimWarm,
74
+ expireWarm,
75
+ countWarm,
76
+ countInflight,
77
+ incrementInflight,
78
+ decrementInflight,
79
+ __resetWarmPool
80
+ };
@@ -4,14 +4,14 @@ import {
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-4MDF5N2L.js";
7
+ } from "./chunk-T4YKZUL6.js";
8
8
  import {
9
9
  exportTrace
10
- } from "./chunk-NIW3B4V2.js";
10
+ } from "./chunk-GVPJL3XS.js";
11
11
  import {
12
12
  listEventsByTrace,
13
13
  rowToManagedEvent
14
- } from "./chunk-NDVC4J3H.js";
14
+ } from "./chunk-TH7WJLZC.js";
15
15
  import {
16
16
  badRequest,
17
17
  notFound
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  onAfterCommit
3
- } from "./chunk-MVC2FD32.js";
3
+ } from "./chunk-MHBLVGRF.js";
4
4
  import {
5
5
  getSessionRow
6
- } from "./chunk-KFORPY7J.js";
6
+ } from "./chunk-3NK6YTA5.js";
7
7
  import {
8
8
  listEventsByTrace
9
- } from "./chunk-NDVC4J3H.js";
9
+ } from "./chunk-TH7WJLZC.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-P2IGNOJI.js";
12
+ } from "./chunk-ZTH5JRZG.js";
13
13
  import {
14
14
  getConfig
15
- } from "./chunk-6YZ5WTLB.js";
15
+ } from "./chunk-V7MTIMPB.js";
16
16
 
17
17
  // src/observability/otlp.ts
18
18
  import { createHash } from "crypto";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-4MDF5N2L.js";
4
+ } from "./chunk-T4YKZUL6.js";
5
5
  import {
6
6
  readSetting,
7
7
  writeSetting
8
- } from "./chunk-6YZ5WTLB.js";
8
+ } from "./chunk-V7MTIMPB.js";
9
9
  import {
10
10
  badRequest
11
11
  } from "./chunk-EZYKRG4W.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  jsonOk,
8
8
  routeWrap
9
- } from "./chunk-4MDF5N2L.js";
9
+ } from "./chunk-T4YKZUL6.js";
10
10
  import {
11
11
  createVault,
12
12
  deleteEntry,
@@ -16,10 +16,10 @@ import {
16
16
  listEntries,
17
17
  listVaults,
18
18
  setEntry
19
- } from "./chunk-J37F7PXJ.js";
19
+ } from "./chunk-ZVXIZ2JD.js";
20
20
  import {
21
21
  getAgent
22
- } from "./chunk-P2IGNOJI.js";
22
+ } from "./chunk-ZTH5JRZG.js";
23
23
  import {
24
24
  getDb,
25
25
  init_client
@@ -1,19 +1,19 @@
1
+ import {
2
+ createGeminiTranslator
3
+ } from "./chunk-S3JRZFF5.js";
1
4
  import {
2
5
  buildGeminiArgs
3
6
  } from "./chunk-JHGJG2Z2.js";
4
7
  import {
5
8
  buildGeminiAuthEnv,
6
9
  validateGeminiRuntime
7
- } from "./chunk-4LKSYF4M.js";
10
+ } from "./chunk-V2R7RWVY.js";
8
11
  import {
9
12
  prepareGeminiOnSandbox
10
13
  } from "./chunk-XG4UIGDH.js";
11
14
  import {
12
15
  GEMINI_WRAPPER_PATH
13
16
  } from "./chunk-3W6KEDQE.js";
14
- import {
15
- createGeminiTranslator
16
- } from "./chunk-S3JRZFF5.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
19
  } from "./chunk-FVBDEOTZ.js";
@@ -8,7 +8,7 @@ import {
8
8
  import {
9
9
  jsonOk,
10
10
  routeWrap
11
- } from "./chunk-4MDF5N2L.js";
11
+ } from "./chunk-T4YKZUL6.js";
12
12
  import {
13
13
  badRequest
14
14
  } from "./chunk-EZYKRG4W.js";
@@ -1,15 +1,15 @@
1
1
  import {
2
2
  getSession
3
- } from "./chunk-KFORPY7J.js";
3
+ } from "./chunk-3NK6YTA5.js";
4
4
  import {
5
5
  appendEvent,
6
6
  appendEventsBatch,
7
7
  listEvents,
8
8
  rowToManagedEvent
9
- } from "./chunk-NDVC4J3H.js";
9
+ } from "./chunk-TH7WJLZC.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-P2IGNOJI.js";
12
+ } from "./chunk-ZTH5JRZG.js";
13
13
  import {
14
14
  getDb,
15
15
  init_client
@@ -4,19 +4,19 @@ import {
4
4
  import {
5
5
  buildOpencodeAuthEnv,
6
6
  validateOpencodeRuntime
7
- } from "./chunk-JWSR5TZ3.js";
7
+ } from "./chunk-OGJUSGF7.js";
8
8
  import {
9
9
  buildOpencodeConfigEnv
10
10
  } from "./chunk-Z25I7DRV.js";
11
11
  import {
12
12
  prepareOpencodeOnSandbox
13
13
  } from "./chunk-P7P2NWZD.js";
14
- import {
15
- createOpencodeTranslator
16
- } from "./chunk-ETWGCBIQ.js";
17
14
  import {
18
15
  OPENCODE_WRAPPER_PATH
19
16
  } from "./chunk-SWIP7JBQ.js";
17
+ import {
18
+ createOpencodeTranslator
19
+ } from "./chunk-ETWGCBIQ.js";
20
20
  import {
21
21
  wrapPromptWithSystem
22
22
  } from "./chunk-FVBDEOTZ.js";
@@ -11,14 +11,14 @@ import {
11
11
  getFileRecord,
12
12
  listFiles,
13
13
  updateFileStoragePath
14
- } from "./chunk-WNHJTUPW.js";
14
+ } from "./chunk-A3KHFT7I.js";
15
15
  import {
16
16
  assertResourceTenant
17
17
  } from "./chunk-23UKWXJH.js";
18
18
  import {
19
19
  jsonOk,
20
20
  routeWrap
21
- } from "./chunk-4MDF5N2L.js";
21
+ } from "./chunk-T4YKZUL6.js";
22
22
  import {
23
23
  getDb,
24
24
  init_client
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  listEntries
3
- } from "./chunk-J37F7PXJ.js";
3
+ } from "./chunk-ZVXIZ2JD.js";
4
4
  import {
5
5
  getConfig
6
- } from "./chunk-6YZ5WTLB.js";
6
+ } from "./chunk-V7MTIMPB.js";
7
7
 
8
8
  // src/observability/redactor.ts
9
9
  var REDACTED = "[REDACTED]";
@@ -1,28 +1,28 @@
1
1
  import {
2
2
  resolveRemoteSessionId
3
- } from "./chunk-BCUBVYE3.js";
3
+ } from "./chunk-L2RX552S.js";
4
4
  import {
5
5
  assertResourceTenant
6
6
  } from "./chunk-23UKWXJH.js";
7
7
  import {
8
8
  authenticateAndIntercept
9
- } from "./chunk-CIUFOD65.js";
9
+ } from "./chunk-WQARLGBG.js";
10
10
  import {
11
11
  forwardToAnthropic
12
- } from "./chunk-MHL3EXDR.js";
12
+ } from "./chunk-JCW3ZRES.js";
13
13
  import {
14
14
  ensureInitialized
15
- } from "./chunk-RCF2SVUO.js";
15
+ } from "./chunk-FWQSTFNW.js";
16
16
  import {
17
17
  getProxiedTenantId,
18
18
  isProxied
19
- } from "./chunk-VND46TDY.js";
19
+ } from "./chunk-E7DD7F7J.js";
20
20
  import {
21
21
  subscribe
22
- } from "./chunk-MVC2FD32.js";
22
+ } from "./chunk-MHBLVGRF.js";
23
23
  import {
24
24
  getSession
25
- } from "./chunk-KFORPY7J.js";
25
+ } from "./chunk-3NK6YTA5.js";
26
26
  import {
27
27
  getDb,
28
28
  init_client
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
 
5
5
  // src/backends/opencode/auth.ts
6
6
  function buildOpencodeAuthEnv() {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readSetting
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
 
5
5
  // src/lib/skills-cache.ts
6
6
  var DEFAULT_FEED_URL = "https://www.agentstep.com/v1/skills/feed";
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-H7UKW666.js";
5
5
  import {
6
6
  listEntries
7
- } from "./chunk-J37F7PXJ.js";
7
+ } from "./chunk-ZVXIZ2JD.js";
8
8
  import {
9
9
  getSession
10
- } from "./chunk-KFORPY7J.js";
10
+ } from "./chunk-3NK6YTA5.js";
11
11
  import {
12
12
  getConfig
13
- } from "./chunk-6YZ5WTLB.js";
13
+ } from "./chunk-V7MTIMPB.js";
14
14
 
15
15
  // src/providers/upstream-keys.ts
16
16
  var CONSECUTIVE_FAIL_THRESHOLD = 3;
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-4MDF5N2L.js";
7
+ } from "./chunk-T4YKZUL6.js";
8
8
 
9
9
  // src/handlers/license.ts
10
10
  function handleGetLicense(request) {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  BatchError,
3
3
  executeBatch
4
- } from "./chunk-Y2VQ65PM.js";
4
+ } from "./chunk-7GG3FEK2.js";
5
5
  import {
6
6
  jsonOk,
7
7
  routeWrap
8
- } from "./chunk-4MDF5N2L.js";
8
+ } from "./chunk-T4YKZUL6.js";
9
9
  import {
10
10
  badRequest
11
11
  } from "./chunk-EZYKRG4W.js";
@@ -2,19 +2,19 @@ import {
2
2
  getSyncRow,
3
3
  getSyncedRemoteId,
4
4
  upsertSync
5
- } from "./chunk-BCUBVYE3.js";
5
+ } from "./chunk-L2RX552S.js";
6
6
  import {
7
7
  injectMcpAuthHeaders
8
8
  } from "./chunk-SV2B3P6B.js";
9
9
  import {
10
10
  listEntries
11
- } from "./chunk-J37F7PXJ.js";
11
+ } from "./chunk-ZVXIZ2JD.js";
12
12
  import {
13
13
  getEnvironment
14
- } from "./chunk-QVFRPABA.js";
14
+ } from "./chunk-X6IQ57SC.js";
15
15
  import {
16
16
  getAgent
17
- } from "./chunk-P2IGNOJI.js";
17
+ } from "./chunk-ZTH5JRZG.js";
18
18
 
19
19
  // src/sync/anthropic.ts
20
20
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
 
5
5
  // src/backends/pi/auth.ts
6
6
  function buildPiAuthEnv() {
@@ -6,20 +6,29 @@ import {
6
6
  reconcileDockerOrphanSandboxes,
7
7
  reconcileOrphanSandboxes,
8
8
  releaseSession
9
- } from "./chunk-W63RBT7H.js";
9
+ } from "./chunk-3SZ42O5O.js";
10
10
  import {
11
11
  appendEvent,
12
12
  dropEmitter
13
- } from "./chunk-MVC2FD32.js";
13
+ } from "./chunk-MHBLVGRF.js";
14
14
  import {
15
15
  archiveSession,
16
16
  getSessionRow,
17
17
  listIdleSessions,
18
18
  updateSessionStatus
19
- } from "./chunk-KFORPY7J.js";
19
+ } from "./chunk-3NK6YTA5.js";
20
+ import {
21
+ resolveContainerProvider
22
+ } from "./chunk-WPK4ZPMG.js";
23
+ import {
24
+ getEnvironment
25
+ } from "./chunk-X6IQ57SC.js";
26
+ import {
27
+ expireWarm
28
+ } from "./chunk-G7KUVNDY.js";
20
29
  import {
21
30
  getConfig
22
- } from "./chunk-6YZ5WTLB.js";
31
+ } from "./chunk-V7MTIMPB.js";
23
32
  import {
24
33
  init_clock,
25
34
  nowMs
@@ -63,10 +72,30 @@ async function runSweep() {
63
72
  console.warn("[sweeper] reconcile docker failed:", e);
64
73
  }
65
74
  }
75
+ try {
76
+ await evictExpiredWarmContainers();
77
+ } catch (e) {
78
+ console.warn("[sweeper] warm pool eviction failed:", e);
79
+ }
66
80
  } finally {
67
81
  sweeping = false;
68
82
  }
69
83
  }
84
+ async function evictExpiredWarmContainers() {
85
+ const expired = expireWarm(nowMs());
86
+ if (expired.length === 0) return;
87
+ console.log(`[sweeper] evicting ${expired.length} expired warm container(s)`);
88
+ for (const entry of expired) {
89
+ try {
90
+ const envObj = getEnvironment(entry.envId);
91
+ const provider = await resolveContainerProvider(envObj?.config?.provider);
92
+ await provider.delete(entry.sandboxName, entry.vaultSecrets);
93
+ console.log(`[sweeper] deleted expired warm container: ${entry.sandboxName}`);
94
+ } catch (err) {
95
+ console.warn(`[sweeper] failed to delete warm container ${entry.sandboxName}:`, err);
96
+ }
97
+ }
98
+ }
70
99
  async function evictIdleSessions() {
71
100
  if (stopping) return;
72
101
  const cfg = getConfig();
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-XBHDQK4Z.js";
7
7
  import {
8
8
  getConfig
9
- } from "./chunk-6YZ5WTLB.js";
9
+ } from "./chunk-V7MTIMPB.js";
10
10
 
11
11
  // src/backends/claude/args.ts
12
12
  function buildClaudeArgs(input) {
@@ -4,13 +4,13 @@ import {
4
4
  } from "./chunk-D2XITRN6.js";
5
5
  import {
6
6
  authenticateAndIntercept
7
- } from "./chunk-CIUFOD65.js";
7
+ } from "./chunk-WQARLGBG.js";
8
8
  import {
9
9
  checkAndBump
10
10
  } from "./chunk-HVUWXUUI.js";
11
11
  import {
12
12
  ensureInitialized
13
- } from "./chunk-RCF2SVUO.js";
13
+ } from "./chunk-FWQSTFNW.js";
14
14
  import {
15
15
  captureException
16
16
  } from "./chunk-3MQ2FWXS.js";
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-L5RW66H5.js";
4
4
  import {
5
5
  listEntries
6
- } from "./chunk-J37F7PXJ.js";
6
+ } from "./chunk-ZVXIZ2JD.js";
7
7
 
8
8
  // src/sessions/secrets.ts
9
9
  function loadSessionSecrets(vaultIds) {
@@ -4,11 +4,11 @@ import {
4
4
  getSources,
5
5
  getStats,
6
6
  searchSkills
7
- } from "./chunk-LHQD4KLV.js";
7
+ } from "./chunk-P3PHXVMA.js";
8
8
  import {
9
9
  jsonOk,
10
10
  routeWrap
11
- } from "./chunk-4MDF5N2L.js";
11
+ } from "./chunk-T4YKZUL6.js";
12
12
 
13
13
  // src/handlers/skills.ts
14
14
  async function handleGetSkillsCatalog(request) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-6YZ5WTLB.js";
3
+ } from "./chunk-V7MTIMPB.js";
4
4
 
5
5
  // src/backends/gemini/auth.ts
6
6
  function buildGeminiAuthEnv() {
@@ -1,3 +1,7 @@
1
+ import {
2
+ init_clock,
3
+ nowMs
4
+ } from "./chunk-HFDLUBWN.js";
1
5
  import {
2
6
  getDrizzle,
3
7
  init_drizzle
@@ -5,10 +9,6 @@ import {
5
9
  import {
6
10
  schema_exports
7
11
  } from "./chunk-ZMJ4EP4C.js";
8
- import {
9
- init_clock,
10
- nowMs
11
- } from "./chunk-HFDLUBWN.js";
12
12
 
13
13
  // src/config/index.ts
14
14
  init_drizzle();
@@ -53,7 +53,9 @@ function loadConfig() {
53
53
  ollamaUrl: process.env.OLLAMA_URL || readSetting("ollama_url") || "http://localhost:11434",
54
54
  anthropicPassthroughEnabled: parseBool(
55
55
  process.env.ANTHROPIC_PASSTHROUGH_ENABLED ?? readSetting("anthropic_passthrough_enabled")
56
- )
56
+ ),
57
+ warmPoolSize: num(process.env.WARM_POOL_SIZE, 0),
58
+ warmPoolTtlMs: num(process.env.WARM_POOL_TTL_MS, 3e5)
57
59
  };
58
60
  }
59
61
  function parseBool(v) {