@agentstep/agent-sdk 0.4.13 → 0.4.14
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.
- package/dist/auth/middleware.js +6 -6
- package/dist/backends/claude/args.js +6 -6
- package/dist/backends/claude/index.js +8 -8
- package/dist/backends/claude/wrapper-script.js +1 -1
- package/dist/backends/codex/auth.js +6 -6
- package/dist/backends/codex/index.js +11 -11
- package/dist/backends/codex/setup.js +4 -4
- package/dist/backends/codex/wrapper-script.js +1 -1
- package/dist/backends/factory/auth.js +6 -6
- package/dist/backends/factory/index.js +11 -11
- package/dist/backends/factory/setup.js +4 -4
- package/dist/backends/factory/wrapper-script.js +1 -1
- package/dist/backends/gemini/auth.js +6 -6
- package/dist/backends/gemini/index.js +11 -11
- package/dist/backends/gemini/setup.js +4 -4
- package/dist/backends/gemini/wrapper-script.js +1 -1
- package/dist/backends/opencode/auth.js +6 -6
- package/dist/backends/opencode/index.js +11 -11
- package/dist/backends/opencode/setup.js +4 -4
- package/dist/backends/opencode/wrapper-script.js +1 -1
- package/dist/backends/pi/auth.js +6 -6
- package/dist/backends/pi/index.js +11 -11
- package/dist/backends/pi/setup.js +4 -4
- package/dist/backends/pi/wrapper-script.js +1 -1
- package/dist/backends/registry.js +29 -29
- package/dist/{chunk-7YYEE7XR.js → chunk-24NL6GPL.js} +5 -5
- package/dist/{chunk-5GDMWWYD.js → chunk-2BDD6OHG.js} +10 -2
- package/dist/{chunk-XLVCC4IB.js → chunk-374KGHBM.js} +5 -5
- package/dist/{chunk-ME6IR4T6.js → chunk-3W6KEDQE.js} +4 -4
- package/dist/{chunk-4INVRCRD.js → chunk-42O6EBUN.js} +2 -2
- package/dist/{chunk-LP7AQJCU.js → chunk-4MHPOB7A.js} +3 -3
- package/dist/{chunk-DZDWNOEY.js → chunk-5GZEX4HV.js} +1 -1
- package/dist/{chunk-MAW3HLIO.js → chunk-6NZPNYHA.js} +2 -2
- package/dist/{chunk-3KDZP45U.js → chunk-6QQKTF55.js} +11 -8
- package/dist/{chunk-U4F4JSME.js → chunk-7GPKEOAO.js} +3 -3
- package/dist/{chunk-JZ5RFO77.js → chunk-7LQN7NVU.js} +5 -5
- package/dist/{chunk-X3U7IVTN.js → chunk-7OAMTB47.js} +2 -2
- package/dist/{chunk-JFY6EH24.js → chunk-A7MX6RSQ.js} +15 -15
- package/dist/{chunk-IJEZAD5O.js → chunk-ADK2TYO4.js} +2 -2
- package/dist/{chunk-PMEF3X3C.js → chunk-B47IDF63.js} +2 -2
- package/dist/{chunk-RTS2QUZB.js → chunk-B6LPLXPB.js} +8 -8
- package/dist/{chunk-V7OXXKAL.js → chunk-BZ6HFTHU.js} +1 -1
- package/dist/{chunk-I3AP3LEY.js → chunk-CDK25PRU.js} +5 -5
- package/dist/{chunk-TSYQ4XKJ.js → chunk-CSNIN5YZ.js} +2 -2
- package/dist/{chunk-3WJMUX5B.js → chunk-DO4WVWW7.js} +1 -1
- package/dist/{chunk-4FHRWC4H.js → chunk-EDRLRJNT.js} +5 -5
- package/dist/{chunk-AKRE4OEL.js → chunk-EFOIR7R3.js} +5 -3
- package/dist/{chunk-MXRGQRFX.js → chunk-EOFJ2MWJ.js} +4 -4
- package/dist/{chunk-TV2VE2LX.js → chunk-F6M4RLDQ.js} +2 -2
- package/dist/{chunk-NHY4Q6LS.js → chunk-F7DOI3B5.js} +12 -12
- package/dist/{chunk-6BDLNY5J.js → chunk-FVFMYO5W.js} +2 -2
- package/dist/{chunk-KDAZ5TBL.js → chunk-G37JVAOI.js} +5 -5
- package/dist/{chunk-OQWHKEYE.js → chunk-GAFFXICQ.js} +3 -3
- package/dist/{chunk-VVH5DQ2C.js → chunk-GCMYVWZ6.js} +1 -1
- package/dist/{chunk-TQHS4W74.js → chunk-GGYTAWW6.js} +1 -1
- package/dist/{chunk-3NZQBGUJ.js → chunk-GHDY4DVK.js} +13 -13
- package/dist/{chunk-UVCPCX74.js → chunk-GR4QPRB7.js} +5 -5
- package/dist/{chunk-OHYPVKTP.js → chunk-GSODOHNB.js} +4 -4
- package/dist/{chunk-Q4XYK6FF.js → chunk-HE7EOIPA.js} +5 -5
- package/dist/{chunk-KEV4OMRF.js → chunk-HIDFQDFP.js} +9 -9
- package/dist/{chunk-ZA4JVJJE.js → chunk-HOPCVGWL.js} +1 -1
- package/dist/{chunk-3MNDEAPX.js → chunk-HR5YA24J.js} +5 -5
- package/dist/{chunk-MBLMAWSE.js → chunk-I5ZA45YL.js} +7 -7
- package/dist/{chunk-TH54MJMX.js → chunk-IEG5LIX7.js} +1 -1
- package/dist/{chunk-X7W6S3TE.js → chunk-IU457W7Q.js} +5 -5
- package/dist/{chunk-HWTECG57.js → chunk-J4TYHQQG.js} +1 -1
- package/dist/{chunk-Y2SC7HU5.js → chunk-JDBXIJKG.js} +4 -4
- package/dist/{chunk-FDY5BA67.js → chunk-JDELTTHV.js} +1 -1
- package/dist/{chunk-BAH4JSTO.js → chunk-JEI7I3EH.js} +3 -3
- package/dist/{chunk-CKPGSS76.js → chunk-JK5TPJHH.js} +1 -1
- package/dist/{chunk-CX4VNHL6.js → chunk-K2ITIAVJ.js} +73 -31
- package/dist/{chunk-UX6I36QR.js → chunk-LDKZ2SMC.js} +122 -122
- package/dist/{chunk-N5CUDEUJ.js → chunk-LHHBOQUR.js} +2 -2
- package/dist/{chunk-6QDHS2MR.js → chunk-LUQP36Y3.js} +1 -1
- package/dist/{chunk-ETGRQMFJ.js → chunk-M5QX5E5Z.js} +1 -1
- package/dist/{chunk-QKRWCXDU.js → chunk-M674W5NT.js} +1 -1
- package/dist/{chunk-UXZSRUXD.js → chunk-MEEY7BYC.js} +2 -2
- package/dist/{chunk-FXLGGDLM.js → chunk-MFEOQ26S.js} +4 -4
- package/dist/{chunk-RL6XEYOD.js → chunk-MHQXDTJB.js} +1 -1
- package/dist/{chunk-YOFB6CO5.js → chunk-MOLWE2ZY.js} +7 -7
- package/dist/{chunk-6UXT3RG5.js → chunk-MRJMXGCG.js} +4 -4
- package/dist/{chunk-5A6E4F5D.js → chunk-N2RHTKW7.js} +2 -1
- package/dist/{chunk-YM2LYRYY.js → chunk-NCUIEBQY.js} +3 -3
- package/dist/{chunk-7BGILLYC.js → chunk-NIOWKTIF.js} +2 -2
- package/dist/{chunk-OXREXXAQ.js → chunk-NUINUAXO.js} +2 -2
- package/dist/{chunk-XTZ5RQDF.js → chunk-NUO56TF7.js} +4 -4
- package/dist/{chunk-ZIV74JWW.js → chunk-NXRJ7Z4G.js} +2 -2
- package/dist/{chunk-AHHH4PYB.js → chunk-O45IQUWS.js} +3 -3
- package/dist/{chunk-QYFD2OBI.js → chunk-OWTXN2FU.js} +1 -1
- package/dist/{chunk-V4P46OHG.js → chunk-P7P2NWZD.js} +5 -5
- package/dist/{chunk-FB6FOIAY.js → chunk-PCKFMALU.js} +1 -1
- package/dist/{chunk-2FWZ247V.js → chunk-PFLR7INE.js} +2 -2
- package/dist/{chunk-M4RE42AY.js → chunk-PGSOOOB4.js} +3 -3
- package/dist/{chunk-2PKJSOXX.js → chunk-PTGANYUM.js} +1 -1
- package/dist/{chunk-WUNJJNOV.js → chunk-Q3CV35V6.js} +4 -4
- package/dist/{chunk-6A74MTSB.js → chunk-QICG4KW4.js} +3 -3
- package/dist/{chunk-2QGVGXIT.js → chunk-QQDSHL27.js} +4 -4
- package/dist/{chunk-3EGA6TEL.js → chunk-QSYXHYQU.js} +1 -1
- package/dist/{chunk-J4NKW3L5.js → chunk-QYSDP6V5.js} +5 -5
- package/dist/{chunk-LPWEFC55.js → chunk-R5OZHLAD.js} +2 -2
- package/dist/{chunk-CU5GUNFW.js → chunk-R6X47I23.js} +2 -2
- package/dist/{chunk-XLMHG3KR.js → chunk-R7PAZ5OA.js} +38 -35
- package/dist/{chunk-DFE7VZWD.js → chunk-RMEX55EU.js} +4 -4
- package/dist/{chunk-D5XOXR3A.js → chunk-S3SKODVV.js} +4 -4
- package/dist/{chunk-OGONPLTA.js → chunk-SHKBQQ7W.js} +6 -6
- package/dist/{chunk-5ZRGJTR3.js → chunk-SNZ4PDVT.js} +6 -6
- package/dist/{chunk-JMDS2RJJ.js → chunk-SS2EEKNM.js} +1 -1
- package/dist/{chunk-7XFIUYFM.js → chunk-SWIP7JBQ.js} +4 -4
- package/dist/{chunk-XNK2KUTI.js → chunk-SXE7H3VK.js} +2 -2
- package/dist/{chunk-G5RQN53K.js → chunk-TBSWWUJS.js} +1 -1
- package/dist/{chunk-TY7XTT5N.js → chunk-TJA3RHWR.js} +1 -1
- package/dist/{chunk-4BYPJFC5.js → chunk-UF25F3MH.js} +56 -48
- package/dist/{chunk-V364DYC3.js → chunk-UVUSSZ74.js} +1 -1
- package/dist/{chunk-HERWBOQ7.js → chunk-V7WEALLX.js} +5 -5
- package/dist/{chunk-UN3LHCWQ.js → chunk-VIGJQU6V.js} +3 -3
- package/dist/{chunk-7TW4LHPM.js → chunk-X37MWWUA.js} +2 -2
- package/dist/{chunk-W3M3ME6B.js → chunk-XG4UIGDH.js} +5 -5
- package/dist/{chunk-Q5KHBU7P.js → chunk-YEUALILD.js} +3 -3
- package/dist/{chunk-KZGAZPNV.js → chunk-YGAHGTVZ.js} +3 -3
- package/dist/{chunk-6ZJ6X6H7.js → chunk-YIYEPKVQ.js} +1 -1
- package/dist/{chunk-BM34UHSS.js → chunk-YJPQFLY3.js} +4 -4
- package/dist/{chunk-H74BPBKE.js → chunk-YSUPRYX2.js} +5 -5
- package/dist/{chunk-Y5553CX6.js → chunk-ZP5VMV5O.js} +4 -4
- package/dist/config/index.js +5 -5
- package/dist/containers/client.js +6 -6
- package/dist/containers/exec.js +6 -6
- package/dist/containers/lifecycle.js +46 -46
- package/dist/containers/pool.js +3 -3
- package/dist/containers/setup.js +9 -9
- package/dist/db/agents.js +6 -6
- package/dist/db/api_keys.js +5 -5
- package/dist/db/audit.js +3 -3
- package/dist/db/batch.js +10 -10
- package/dist/db/client.js +2 -2
- package/dist/db/credentials.js +3 -3
- package/dist/db/drizzle.js +4 -4
- package/dist/db/environments.js +6 -6
- package/dist/db/events.js +5 -5
- package/dist/db/files.js +5 -5
- package/dist/db/memory.js +5 -5
- package/dist/db/migrations.js +1 -1
- package/dist/db/proxy.js +5 -5
- package/dist/db/schema.js +1 -1
- package/dist/db/session-resources.js +5 -5
- package/dist/db/sessions.js +9 -9
- package/dist/db/sync.js +5 -5
- package/dist/db/tenants.js +3 -3
- package/dist/db/traces.js +5 -5
- package/dist/db/upstream_keys.js +3 -3
- package/dist/db/vaults.js +6 -6
- package/dist/handlers/agents.js +57 -57
- package/dist/handlers/api_keys.js +57 -57
- package/dist/handlers/audit.js +57 -57
- package/dist/handlers/batch.js +57 -57
- package/dist/handlers/credentials.js +57 -57
- package/dist/handlers/environments.js +58 -58
- package/dist/handlers/events.js +61 -61
- package/dist/handlers/files.js +57 -57
- package/dist/handlers/index.js +97 -97
- package/dist/handlers/license.js +56 -56
- package/dist/handlers/memory.js +57 -57
- package/dist/handlers/metrics.js +56 -56
- package/dist/handlers/models.js +57 -57
- package/dist/handlers/openapi.js +3 -3
- package/dist/handlers/providers.js +56 -56
- package/dist/handlers/resources.js +56 -56
- package/dist/handlers/sessions.js +60 -60
- package/dist/handlers/settings.js +56 -56
- package/dist/handlers/skills-write.js +56 -56
- package/dist/handlers/skills.js +57 -57
- package/dist/handlers/stream.js +57 -57
- package/dist/handlers/tenants.js +57 -57
- package/dist/handlers/threads.js +56 -56
- package/dist/handlers/traces.js +57 -57
- package/dist/handlers/ui.js +1 -1
- package/dist/handlers/upstream_keys.js +59 -59
- package/dist/handlers/vaults.js +56 -56
- package/dist/handlers/whoami.js +56 -56
- package/dist/http.js +55 -55
- package/dist/index.js +62 -62
- package/dist/init.js +53 -53
- package/dist/lib/model-registry.js +6 -6
- package/dist/lib/skills-cache.js +6 -6
- package/dist/observability/otlp.js +12 -12
- package/dist/observability/redactor.js +8 -8
- package/dist/openapi/schemas.js +1 -1
- package/dist/openapi/spec.js +2 -2
- package/dist/providers/fly.js +5 -5
- package/dist/providers/modal.js +5 -5
- package/dist/providers/registry.js +1 -1
- package/dist/providers/resolve-secrets.js +7 -7
- package/dist/providers/sprites.js +7 -7
- package/dist/providers/upstream-keys.js +11 -11
- package/dist/providers/vercel.js +5 -5
- package/dist/proxy/forward.js +6 -6
- package/dist/queue/index.js +6 -6
- package/dist/sessions/bus.js +10 -10
- package/dist/sessions/driver.js +46 -46
- package/dist/sessions/grader.js +5 -5
- package/dist/sessions/secrets.js +8 -8
- package/dist/sessions/sweeper.js +43 -43
- package/dist/sessions/threads.js +46 -46
- package/dist/shutdown.js +44 -44
- package/dist/sync/anthropic.js +10 -10
- package/dist/sync/container-file-sync.js +27 -15
- package/dist/sync/file-sync.js +17 -17
- package/package.json +1 -1
|
@@ -1,58 +1,59 @@
|
|
|
1
1
|
import {
|
|
2
2
|
enqueueTurn
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-X37MWWUA.js";
|
|
4
4
|
import {
|
|
5
5
|
runTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-R7PAZ5OA.js";
|
|
7
7
|
import {
|
|
8
8
|
installOtlpExporter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-CDK25PRU.js";
|
|
10
10
|
import {
|
|
11
11
|
redactAppendInput
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-F6M4RLDQ.js";
|
|
13
13
|
import {
|
|
14
14
|
createApiKey,
|
|
15
15
|
listApiKeys
|
|
16
|
-
} from "./chunk-
|
|
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-
|
|
22
|
+
} from "./chunk-R6X47I23.js";
|
|
23
23
|
import {
|
|
24
24
|
runSweep
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-HIDFQDFP.js";
|
|
26
26
|
import {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
} from "./chunk-
|
|
27
|
+
reconcileDockerOrphanSandboxes,
|
|
28
|
+
reconcileOrphanSandboxes
|
|
29
|
+
} from "./chunk-UF25F3MH.js";
|
|
30
30
|
import {
|
|
31
31
|
appendEvent,
|
|
32
32
|
installPayloadRedactor
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-EOFJ2MWJ.js";
|
|
34
34
|
import {
|
|
35
35
|
readEnvValue,
|
|
36
36
|
upsertEnvLine
|
|
37
37
|
} from "./chunk-YPXI7Q2M.js";
|
|
38
38
|
import {
|
|
39
39
|
getLastUnprocessedUserMessage
|
|
40
|
-
} from "./chunk-
|
|
40
|
+
} from "./chunk-O45IQUWS.js";
|
|
41
41
|
import {
|
|
42
|
+
getBySession,
|
|
42
43
|
register
|
|
43
|
-
} from "./chunk-
|
|
44
|
+
} from "./chunk-EFOIR7R3.js";
|
|
44
45
|
import {
|
|
45
46
|
resolveContainerProvider
|
|
46
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-N2RHTKW7.js";
|
|
47
48
|
import {
|
|
48
|
-
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
setSessionSandbox
|
|
50
|
+
} from "./chunk-I5ZA45YL.js";
|
|
50
51
|
import {
|
|
51
52
|
getEnvironment
|
|
52
|
-
} from "./chunk-
|
|
53
|
+
} from "./chunk-NUO56TF7.js";
|
|
53
54
|
import {
|
|
54
55
|
getConfig
|
|
55
|
-
} from "./chunk-
|
|
56
|
+
} from "./chunk-YEUALILD.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-
|
|
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
|
-
|
|
116
|
+
reconcileOrphanSandboxes().then((r) => {
|
|
111
117
|
if (r.deleted > 0) {
|
|
112
|
-
console.log(`[init] reconciled ${r.deleted} orphan
|
|
118
|
+
console.log(`[init] reconciled ${r.deleted} orphan sandboxes, kept ${r.kept}`);
|
|
113
119
|
}
|
|
114
120
|
}).catch((err) => {
|
|
115
|
-
console.warn("[init] orphan reconcile (
|
|
121
|
+
console.warn("[init] orphan reconcile (sandboxes) failed:", err);
|
|
116
122
|
});
|
|
117
123
|
}
|
|
118
|
-
|
|
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.
|
|
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.
|
|
180
|
-
const alive = containers.some((c) => c.name === row.
|
|
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]
|
|
183
|
-
|
|
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
|
-
|
|
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.
|
|
194
|
-
|
|
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,
|