@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.
- package/dist/auth/middleware.js +11 -6
- package/dist/auth/passthrough.js +9 -0
- 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 +13 -13
- 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 +14 -14
- 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 +13 -13
- 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 +14 -14
- package/dist/backends/pi/setup.js +4 -4
- package/dist/backends/pi/wrapper-script.js +1 -1
- package/dist/backends/registry.js +30 -30
- package/dist/{chunk-5GDMWWYD.js → chunk-2BDD6OHG.js} +10 -2
- package/dist/{chunk-7YYEE7XR.js → chunk-2BZ2XKJU.js} +5 -5
- package/dist/{chunk-OHYPVKTP.js → chunk-3LG7DRJL.js} +4 -4
- package/dist/{chunk-ZA4JVJJE.js → chunk-3PLJHZFD.js} +1 -1
- package/dist/{chunk-ME6IR4T6.js → chunk-3W6KEDQE.js} +4 -4
- package/dist/{chunk-PMEF3X3C.js → chunk-46LBKEBE.js} +2 -2
- package/dist/{chunk-XLMHG3KR.js → chunk-5DHH2PGR.js} +50 -47
- package/dist/{chunk-6QDHS2MR.js → chunk-5GIZLWWF.js} +1 -1
- package/dist/{chunk-DZDWNOEY.js → chunk-5GZEX4HV.js} +1 -1
- package/dist/{chunk-V364DYC3.js → chunk-5XF65N7J.js} +1 -1
- package/dist/{chunk-6UXT3RG5.js → chunk-64ZLFLMN.js} +4 -4
- package/dist/{chunk-JMDS2RJJ.js → chunk-66CJ6LMV.js} +1 -1
- package/dist/{chunk-2FWZ247V.js → chunk-6IWTDQJN.js} +9 -4
- package/dist/{chunk-TQHS4W74.js → chunk-6OL43KT2.js} +1 -1
- package/dist/{chunk-JZ5RFO77.js → chunk-7LQN7NVU.js} +5 -5
- package/dist/{chunk-X3U7IVTN.js → chunk-7OAMTB47.js} +2 -2
- package/dist/{chunk-I3AP3LEY.js → chunk-ACKMNK3C.js} +7 -7
- package/dist/{chunk-IJEZAD5O.js → chunk-ADK2TYO4.js} +2 -2
- package/dist/{chunk-CX4VNHL6.js → chunk-AH7DAJU5.js} +74 -32
- package/dist/{chunk-5ZRGJTR3.js → chunk-AM7F65IC.js} +10 -10
- package/dist/{chunk-MXRGQRFX.js → chunk-BMPB7XJH.js} +6 -6
- package/dist/{chunk-V7OXXKAL.js → chunk-BZ6HFTHU.js} +1 -1
- package/dist/{chunk-TSYQ4XKJ.js → chunk-CDCLICKM.js} +2 -2
- package/dist/{chunk-FXLGGDLM.js → chunk-CE45WWNZ.js} +4 -4
- package/dist/{chunk-QKRWCXDU.js → chunk-CGSUJZ56.js} +1 -1
- package/dist/{chunk-3WJMUX5B.js → chunk-DO4WVWW7.js} +1 -1
- package/dist/{chunk-AKRE4OEL.js → chunk-EFOIR7R3.js} +5 -3
- package/dist/{chunk-M4RE42AY.js → chunk-ENOKSV57.js} +3 -3
- package/dist/{chunk-RTS2QUZB.js → chunk-EO5ZTIP7.js} +20 -11
- package/dist/{chunk-3NZQBGUJ.js → chunk-F2SDCOHG.js} +18 -18
- package/dist/{chunk-FB6FOIAY.js → chunk-FB4OSWM2.js} +1 -1
- package/dist/{chunk-2PKJSOXX.js → chunk-FCULDJQO.js} +1 -1
- package/dist/{chunk-Q4XYK6FF.js → chunk-GJBKDPQD.js} +5 -5
- package/dist/{chunk-7TW4LHPM.js → chunk-HECQRMDR.js} +2 -2
- package/dist/{chunk-XLVCC4IB.js → chunk-HWWCVD2R.js} +7 -7
- package/dist/{chunk-MBLMAWSE.js → chunk-I5ZA45YL.js} +7 -7
- 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-WUNJJNOV.js → chunk-JKUR5MIM.js} +4 -4
- package/dist/{chunk-4BYPJFC5.js → chunk-JOAEFGXZ.js} +62 -54
- package/dist/{chunk-NHY4Q6LS.js → chunk-JOZK6G5O.js} +14 -14
- package/dist/{chunk-5A6E4F5D.js → chunk-JSLEB2ED.js} +2 -1
- package/dist/{chunk-3KDZP45U.js → chunk-K7KLJ2UJ.js} +13 -10
- package/dist/{chunk-LP7AQJCU.js → chunk-KGARPQA4.js} +3 -3
- package/dist/{chunk-6A74MTSB.js → chunk-L6CUSDUF.js} +3 -3
- package/dist/{chunk-N5CUDEUJ.js → chunk-LHHBOQUR.js} +2 -2
- package/dist/{chunk-4FHRWC4H.js → chunk-LJF4GWPJ.js} +5 -5
- package/dist/{chunk-RL6XEYOD.js → chunk-MHQXDTJB.js} +1 -1
- package/dist/{chunk-UX6I36QR.js → chunk-NDQ6CQ7B.js} +122 -122
- package/dist/{chunk-7BGILLYC.js → chunk-NIOWKTIF.js} +2 -2
- package/dist/{chunk-KDAZ5TBL.js → chunk-NK2RCTFI.js} +8 -8
- 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-UXZSRUXD.js → chunk-ORU5GQ4Z.js} +2 -2
- package/dist/{chunk-QYFD2OBI.js → chunk-OWTXN2FU.js} +1 -1
- package/dist/{chunk-V4P46OHG.js → chunk-P7P2NWZD.js} +5 -5
- package/dist/{chunk-MAW3HLIO.js → chunk-PB7LR2AG.js} +2 -2
- package/dist/{chunk-KEV4OMRF.js → chunk-PNYCULIF.js} +9 -9
- package/dist/{chunk-VVH5DQ2C.js → chunk-PWWRWR75.js} +42 -3
- package/dist/{chunk-G5RQN53K.js → chunk-PZWVTEL2.js} +1 -1
- package/dist/{chunk-OGONPLTA.js → chunk-QFUJDBET.js} +6 -6
- package/dist/{chunk-Q5KHBU7P.js → chunk-QH57EOKP.js} +12 -4
- package/dist/{chunk-6ZJ6X6H7.js → chunk-QLWA4MJ5.js} +15 -4
- package/dist/{chunk-2QGVGXIT.js → chunk-QQDSHL27.js} +4 -4
- package/dist/{chunk-J4NKW3L5.js → chunk-QYSDP6V5.js} +5 -5
- package/dist/{chunk-ETGRQMFJ.js → chunk-R45W644X.js} +1 -1
- package/dist/{chunk-LPWEFC55.js → chunk-R5OZHLAD.js} +2 -2
- package/dist/{chunk-DFE7VZWD.js → chunk-RMEX55EU.js} +4 -4
- package/dist/{chunk-TY7XTT5N.js → chunk-RZXRMPF4.js} +1 -1
- package/dist/{chunk-D5XOXR3A.js → chunk-S3SKODVV.js} +4 -4
- package/dist/{chunk-CU5GUNFW.js → chunk-S6AM7WVH.js} +2 -2
- package/dist/{chunk-YOFB6CO5.js → chunk-SDLNBA53.js} +7 -7
- package/dist/{chunk-JFY6EH24.js → chunk-SIKTYKVO.js} +15 -15
- package/dist/{chunk-7XFIUYFM.js → chunk-SWIP7JBQ.js} +4 -4
- package/dist/{chunk-XNK2KUTI.js → chunk-SXE7H3VK.js} +2 -2
- package/dist/{chunk-OQWHKEYE.js → chunk-TFK6TCMC.js} +3 -3
- package/dist/{chunk-TV2VE2LX.js → chunk-TWPTR2C2.js} +2 -2
- package/dist/{chunk-3MNDEAPX.js → chunk-UJDAT42X.js} +8 -8
- package/dist/{chunk-UN3LHCWQ.js → chunk-VIGJQU6V.js} +3 -3
- package/dist/{chunk-4INVRCRD.js → chunk-VO7BDPYU.js} +2 -2
- package/dist/{chunk-UVCPCX74.js → chunk-VS7AMAMU.js} +8 -8
- package/dist/chunk-W6WKXFHN.js +39 -0
- package/dist/{chunk-3EGA6TEL.js → chunk-WPEGSLXX.js} +1 -1
- package/dist/{chunk-YM2LYRYY.js → chunk-WRWTK455.js} +3 -3
- package/dist/{chunk-W3M3ME6B.js → chunk-XG4UIGDH.js} +5 -5
- package/dist/{chunk-TH54MJMX.js → chunk-XPKY3Z54.js} +1 -1
- package/dist/{chunk-BM34UHSS.js → chunk-Y27R572J.js} +6 -5
- package/dist/{chunk-6BDLNY5J.js → chunk-Y4X3QY2S.js} +2 -2
- package/dist/{chunk-U4F4JSME.js → chunk-Y6ZY23HE.js} +3 -3
- package/dist/{chunk-KZGAZPNV.js → chunk-YGAHGTVZ.js} +3 -3
- package/dist/{chunk-H74BPBKE.js → chunk-YSUPRYX2.js} +5 -5
- package/dist/{chunk-HERWBOQ7.js → chunk-ZLUBNJEO.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 +47 -47
- 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 +60 -59
- package/dist/handlers/api_keys.js +61 -59
- package/dist/handlers/audit.js +61 -59
- package/dist/handlers/batch.js +61 -59
- package/dist/handlers/credentials.js +61 -59
- package/dist/handlers/environments.js +61 -60
- package/dist/handlers/events.js +64 -63
- package/dist/handlers/files.js +61 -59
- package/dist/handlers/index.js +125 -124
- package/dist/handlers/license.js +60 -58
- package/dist/handlers/memory.js +61 -59
- package/dist/handlers/metrics.js +60 -58
- package/dist/handlers/models.js +61 -59
- package/dist/handlers/openapi.js +3 -3
- package/dist/handlers/providers.js +60 -58
- package/dist/handlers/resources.js +60 -58
- package/dist/handlers/sessions.js +63 -62
- package/dist/handlers/settings.js +60 -58
- package/dist/handlers/skills-write.js +60 -58
- package/dist/handlers/skills.js +61 -59
- package/dist/handlers/stream.js +60 -59
- package/dist/handlers/tenants.js +61 -59
- package/dist/handlers/threads.js +60 -58
- package/dist/handlers/traces.js +61 -59
- package/dist/handlers/ui.js +1 -1
- package/dist/handlers/upstream_keys.js +63 -61
- package/dist/handlers/vaults.js +60 -58
- package/dist/handlers/whoami.js +60 -58
- package/dist/http.js +59 -57
- package/dist/index.js +81 -78
- package/dist/init.js +55 -55
- 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 +48 -48
- package/dist/sessions/grader.js +5 -5
- package/dist/sessions/secrets.js +8 -8
- package/dist/sessions/sweeper.js +44 -44
- package/dist/sessions/threads.js +52 -52
- package/dist/shutdown.js +45 -45
- package/dist/sync/anthropic.js +10 -10
- package/dist/sync/container-file-sync.js +27 -15
- package/dist/sync/file-sync.js +19 -19
- package/package.json +1 -1
|
@@ -1,58 +1,59 @@
|
|
|
1
1
|
import {
|
|
2
2
|
enqueueTurn
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HECQRMDR.js";
|
|
4
4
|
import {
|
|
5
5
|
runTurn
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-5DHH2PGR.js";
|
|
7
7
|
import {
|
|
8
8
|
installOtlpExporter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-ACKMNK3C.js";
|
|
10
10
|
import {
|
|
11
11
|
redactAppendInput
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-TWPTR2C2.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-S6AM7WVH.js";
|
|
23
23
|
import {
|
|
24
24
|
runSweep
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-PNYCULIF.js";
|
|
26
26
|
import {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
} from "./chunk-
|
|
27
|
+
reconcileDockerOrphanSandboxes,
|
|
28
|
+
reconcileOrphanSandboxes
|
|
29
|
+
} from "./chunk-JOAEFGXZ.js";
|
|
30
30
|
import {
|
|
31
31
|
appendEvent,
|
|
32
32
|
installPayloadRedactor
|
|
33
|
-
} from "./chunk-
|
|
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-
|
|
43
|
+
} from "./chunk-O45IQUWS.js";
|
|
41
44
|
import {
|
|
45
|
+
getBySession,
|
|
42
46
|
register
|
|
43
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-EFOIR7R3.js";
|
|
44
48
|
import {
|
|
45
49
|
resolveContainerProvider
|
|
46
|
-
} from "./chunk-
|
|
47
|
-
import {
|
|
48
|
-
setSessionSprite
|
|
49
|
-
} from "./chunk-MBLMAWSE.js";
|
|
50
|
+
} from "./chunk-JSLEB2ED.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-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-
|
|
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,
|
|
@@ -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-
|
|
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-
|
|
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-
|
|
26
|
+
} from "./chunk-JEI7I3EH.js";
|
|
27
27
|
import {
|
|
28
28
|
resolveBackend
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-QFUJDBET.js";
|
|
30
30
|
import {
|
|
31
31
|
getDb,
|
|
32
32
|
init_client
|
|
33
|
-
} from "./chunk-
|
|
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-
|
|
7
|
-
import {
|
|
8
|
-
getSession
|
|
9
|
-
} from "./chunk-MBLMAWSE.js";
|
|
9
|
+
} from "./chunk-O45IQUWS.js";
|
|
10
10
|
import {
|
|
11
11
|
getAgent
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-JEI7I3EH.js";
|
|
13
13
|
import {
|
|
14
14
|
getDb,
|
|
15
15
|
init_client
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-5GZEX4HV.js";
|
|
17
17
|
|
|
18
18
|
// src/sessions/bus.ts
|
|
19
19
|
import { EventEmitter } from "events";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
BatchError,
|
|
3
3
|
executeBatch
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-S3SKODVV.js";
|
|
5
5
|
import {
|
|
6
6
|
jsonOk,
|
|
7
7
|
routeWrap
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
3
|
+
} from "./chunk-JK5TPJHH.js";
|
|
4
4
|
import {
|
|
5
5
|
jsonOk,
|
|
6
6
|
routeWrap
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-6IWTDQJN.js";
|
|
8
8
|
import {
|
|
9
9
|
exportTrace
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-ACKMNK3C.js";
|
|
11
11
|
import {
|
|
12
12
|
listEventsByTrace,
|
|
13
13
|
rowToManagedEvent
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-O45IQUWS.js";
|
|
15
15
|
import {
|
|
16
16
|
badRequest,
|
|
17
17
|
notFound
|
|
@@ -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.
|
|
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
|
|
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
|
-
|
|
46
|
+
allSessionSandboxes
|
|
45
47
|
};
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
jsonOk,
|
|
3
3
|
routeWrap
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-6IWTDQJN.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveContainerProvider
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-JSLEB2ED.js";
|
|
8
8
|
import {
|
|
9
9
|
getConfig
|
|
10
|
-
} from "./chunk-
|
|
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-
|
|
3
|
+
} from "./chunk-YGAHGTVZ.js";
|
|
4
4
|
import {
|
|
5
5
|
assertResourceTenant
|
|
6
6
|
} from "./chunk-23UKWXJH.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
} from "./chunk-
|
|
8
|
+
authenticateAndIntercept
|
|
9
|
+
} from "./chunk-PWWRWR75.js";
|
|
10
10
|
import {
|
|
11
|
-
|
|
12
|
-
} from "./chunk-
|
|
11
|
+
forwardToAnthropic
|
|
12
|
+
} from "./chunk-QLWA4MJ5.js";
|
|
13
13
|
import {
|
|
14
14
|
ensureInitialized
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-AH7DAJU5.js";
|
|
16
16
|
import {
|
|
17
17
|
getProxiedTenantId,
|
|
18
18
|
isProxied
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-NIOWKTIF.js";
|
|
20
20
|
import {
|
|
21
21
|
subscribe
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-BMPB7XJH.js";
|
|
23
23
|
import {
|
|
24
24
|
getSession
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-I5ZA45YL.js";
|
|
26
26
|
import {
|
|
27
27
|
getDb,
|
|
28
28
|
init_client
|
|
29
|
-
} from "./chunk-
|
|
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
|
|
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-
|
|
5
|
+
} from "./chunk-3LG7DRJL.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveRemoteSessionId
|
|
8
|
-
} from "./chunk-
|
|
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-
|
|
23
|
+
} from "./chunk-NUINUAXO.js";
|
|
27
24
|
import {
|
|
28
25
|
jsonOk,
|
|
29
26
|
routeWrap
|
|
30
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-6IWTDQJN.js";
|
|
28
|
+
import {
|
|
29
|
+
forwardToAnthropic
|
|
30
|
+
} from "./chunk-QLWA4MJ5.js";
|
|
31
31
|
import {
|
|
32
32
|
enqueueTurn
|
|
33
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-HECQRMDR.js";
|
|
34
34
|
import {
|
|
35
35
|
runTurn,
|
|
36
36
|
writePermissionResponse
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-5DHH2PGR.js";
|
|
38
38
|
import {
|
|
39
39
|
getProxiedTenantId,
|
|
40
40
|
isProxied
|
|
41
|
-
} from "./chunk-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
69
|
+
} from "./chunk-5GZEX4HV.js";
|
|
70
70
|
import {
|
|
71
71
|
badRequest,
|
|
72
72
|
notFound
|
|
@@ -4,19 +4,19 @@ import {
|
|
|
4
4
|
import {
|
|
5
5
|
buildOpencodeAuthEnv,
|
|
6
6
|
validateOpencodeRuntime
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-3PLJHZFD.js";
|
|
8
8
|
import {
|
|
9
9
|
buildOpencodeConfigEnv
|
|
10
10
|
} from "./chunk-Z25I7DRV.js";
|
|
11
11
|
import {
|
|
12
|
-
|
|
13
|
-
} from "./chunk-
|
|
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-
|
|
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
|
-
|
|
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-
|
|
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.
|
|
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-
|
|
7
|
+
} from "./chunk-RZXRMPF4.js";
|
|
8
8
|
import {
|
|
9
|
-
|
|
10
|
-
} from "./chunk-
|
|
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
|
-
|
|
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-
|
|
4
|
+
} from "./chunk-R5OZHLAD.js";
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_TENANT_ID
|
|
7
|
-
} from "./chunk-
|
|
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-
|
|
15
|
+
} from "./chunk-SXE7H3VK.js";
|
|
16
16
|
import {
|
|
17
17
|
schema_exports
|
|
18
|
-
} from "./chunk-
|
|
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
|
|
139
|
+
function setSessionSandbox(id, sandboxName) {
|
|
140
140
|
const db = getDrizzle();
|
|
141
|
-
db.update(schema_exports.sessions).set({
|
|
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
|
-
|
|
254
|
+
setSessionSandbox,
|
|
255
255
|
setBackendSessionId,
|
|
256
256
|
setSessionProvider,
|
|
257
257
|
setIdleSince,
|