@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.
- package/dist/auth/middleware.js +8 -8
- package/dist/backends/claude/args.js +6 -6
- package/dist/backends/claude/index.js +12 -12
- package/dist/backends/claude/wrapper-script.js +1 -1
- package/dist/backends/codex/auth.js +6 -6
- package/dist/backends/codex/index.js +14 -14
- package/dist/backends/codex/setup.js +2 -2
- package/dist/backends/codex/wrapper-script.js +1 -1
- package/dist/backends/factory/auth.js +6 -6
- package/dist/backends/factory/index.js +16 -16
- package/dist/backends/factory/setup.js +2 -2
- package/dist/backends/factory/wrapper-script.js +1 -1
- package/dist/backends/gemini/auth.js +6 -6
- package/dist/backends/gemini/index.js +12 -12
- package/dist/backends/gemini/setup.js +2 -2
- package/dist/backends/gemini/wrapper-script.js +1 -1
- package/dist/backends/opencode/auth.js +6 -6
- package/dist/backends/opencode/index.js +14 -14
- package/dist/backends/opencode/setup.js +2 -2
- 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 +2 -2
- package/dist/backends/pi/wrapper-script.js +1 -1
- package/dist/backends/registry.js +36 -36
- package/dist/{chunk-ZEDULYKX.js → chunk-2IISXUVF.js} +1 -1
- package/dist/{chunk-34Q6WMIT.js → chunk-2Z56TPBL.js} +3 -3
- package/dist/{chunk-WCLMAQR4.js → chunk-3DRK36FB.js} +5 -5
- package/dist/{chunk-2PTWIZX6.js → chunk-3NNU7TQ4.js} +8 -8
- package/dist/{chunk-NFGCFN57.js → chunk-3UK3IF27.js} +6 -6
- package/dist/chunk-4ANV3AH3.js +65 -0
- package/dist/{chunk-RNU253MD.js → chunk-4ENK7S24.js} +21 -2
- package/dist/{chunk-IFZ7EXMG.js → chunk-4EVT4MFD.js} +1 -1
- package/dist/{chunk-7POF237O.js → chunk-4MKJB6U2.js} +1 -1
- package/dist/{chunk-WKPUTJGD.js → chunk-5LDBCBOR.js} +1 -1
- package/dist/{chunk-ZIMK4TPI.js → chunk-6PIL2RJD.js} +2 -2
- package/dist/{chunk-6TRWB7CE.js → chunk-6X3G5SAS.js} +41 -18
- package/dist/{chunk-LVSQULRG.js → chunk-7ASUTNKE.js} +2 -2
- package/dist/{chunk-KJENLSJT.js → chunk-7BT6V4CH.js} +20 -18
- package/dist/{chunk-5COWXLGO.js → chunk-7D55V4XP.js} +1 -1
- package/dist/{chunk-KYDOZBD5.js → chunk-7NZ46LIO.js} +29 -28
- package/dist/{chunk-4QBWHZKQ.js → chunk-7SO7O6RV.js} +2 -2
- package/dist/{chunk-4JPJ3ZIV.js → chunk-7Z6LTBYQ.js} +5 -5
- package/dist/{chunk-NVTDXBGV.js → chunk-APKELBCA.js} +1 -1
- package/dist/{chunk-YSUPRYX2.js → chunk-AQHYCRTO.js} +1 -1
- package/dist/{chunk-GUD3MOP7.js → chunk-B3UOTIOI.js} +9 -9
- package/dist/{chunk-2OFGWHZB.js → chunk-B5JUCPYW.js} +1 -1
- package/dist/{chunk-LJSD6G6K.js → chunk-BQ5MWNWN.js} +3 -3
- package/dist/{chunk-SKRIZPPF.js → chunk-BYJRL4IQ.js} +6 -6
- package/dist/{chunk-56KP3SAI.js → chunk-C3ZPWUDE.js} +2 -2
- package/dist/{chunk-LSXVCZN7.js → chunk-CD2FQVQR.js} +1 -1
- package/dist/{chunk-6BOOQV4Q.js → chunk-CFLMIJ2C.js} +3 -3
- package/dist/{chunk-6BRG2NJL.js → chunk-CGGGCKSK.js} +4 -4
- package/dist/{chunk-QYSDP6V5.js → chunk-CMOU2OFW.js} +1 -1
- package/dist/chunk-D2GADI73.js +253 -0
- package/dist/{chunk-75C3KFST.js → chunk-D3TY7PMJ.js} +5 -5
- package/dist/{chunk-RTZNJDEL.js → chunk-DAIEVD4O.js} +4 -4
- package/dist/{chunk-BGNQXT4T.js → chunk-DDF2CRA3.js} +2 -2
- package/dist/{chunk-DQ5VMD3Z.js → chunk-FCKUWBUL.js} +2 -2
- package/dist/{chunk-YFGBTXID.js → chunk-FV2XE3DX.js} +2 -2
- package/dist/{chunk-73BYGQWA.js → chunk-G7Y5YGLE.js} +1 -1
- package/dist/{chunk-PXOL34HI.js → chunk-HE3IEIKM.js} +3 -3
- package/dist/{chunk-WKMRBRJQ.js → chunk-HH23DOBB.js} +1 -1
- package/dist/{chunk-HCORTMQH.js → chunk-HHS6EHSG.js} +4 -4
- package/dist/{chunk-6T4DKZYW.js → chunk-ISXWS5Y4.js} +8 -8
- package/dist/{chunk-QBJOYOVF.js → chunk-J6T3W6RY.js} +15 -0
- package/dist/{chunk-CXDNTVCM.js → chunk-JK2GXKOQ.js} +5 -5
- package/dist/{chunk-A4BGGHRC.js → chunk-JXU6SA6S.js} +42 -1
- package/dist/{chunk-37Y556D5.js → chunk-KHICXOTH.js} +3 -3
- package/dist/chunk-KJ2GJLPQ.js +39 -0
- package/dist/{chunk-BUQATYS7.js → chunk-KNWM237Q.js} +2 -2
- package/dist/{chunk-RNDLMMKI.js → chunk-LOWHDHDD.js} +3 -3
- package/dist/{chunk-6SVZD3UA.js → chunk-M4OF5D4K.js} +4 -4
- package/dist/{chunk-CZPWZ5A5.js → chunk-M7SYXJBT.js} +1 -1
- package/dist/{chunk-IBO36HUU.js → chunk-MQBNN4KH.js} +1 -1
- package/dist/{chunk-32RP2UX6.js → chunk-MTB7SCZ5.js} +5 -5
- package/dist/{chunk-LEVIKSPQ.js → chunk-MTRTBT7L.js} +1 -1
- package/dist/{chunk-TARFRZ44.js → chunk-N5F5OUUZ.js} +3 -3
- package/dist/{chunk-M2LUXIXU.js → chunk-NMZMRH3E.js} +1 -1
- package/dist/{chunk-KGTWD46T.js → chunk-NWIMPG4M.js} +1 -1
- package/dist/chunk-OGA7KDQZ.js +37 -0
- package/dist/chunk-ONEKY3CM.js +146 -0
- package/dist/{chunk-SUFGP47L.js → chunk-ONS32E65.js} +28 -20
- package/dist/{chunk-XG4UIGDH.js → chunk-PAQ2JFVD.js} +1 -1
- package/dist/{chunk-N5C3WQWD.js → chunk-PDUQCDIO.js} +1 -1
- package/dist/{chunk-DSNNEER4.js → chunk-PJTGQVKB.js} +1 -1
- package/dist/{chunk-SAUR463Z.js → chunk-PLSXDJT4.js} +6 -5
- package/dist/{chunk-NL4EKSFA.js → chunk-PPI76YVT.js} +2 -2
- package/dist/{chunk-N33MOUCH.js → chunk-PRWWTLPR.js} +3 -3
- package/dist/{chunk-T75UYYMI.js → chunk-PVFGDKXO.js} +2 -2
- package/dist/{chunk-PIJJXKMK.js → chunk-PXMTLKUJ.js} +3 -3
- package/dist/chunk-PZ5EGY64.js +37 -0
- package/dist/{chunk-6ERUVF2Y.js → chunk-QB7JAMWG.js} +1 -1
- package/dist/{chunk-IY3KO2BC.js → chunk-QS544PN6.js} +4 -4
- package/dist/{chunk-GBGXSRZX.js → chunk-R5LXEIOJ.js} +9 -9
- package/dist/{chunk-OJUDLJOG.js → chunk-REY2YZ5X.js} +3 -3
- package/dist/{chunk-4IEDAORR.js → chunk-RFK4W5PZ.js} +1 -1
- package/dist/{chunk-NOG7ZJJA.js → chunk-RLLVP37Q.js} +1 -1
- package/dist/{chunk-HV7M7UUY.js → chunk-S5NB47IR.js} +6 -6
- package/dist/{chunk-3XGUMXGR.js → chunk-SXR4HQZY.js} +2 -2
- package/dist/{chunk-YN2F26NN.js → chunk-T3CXZ2BE.js} +2 -2
- package/dist/{chunk-MF3J7WTR.js → chunk-TN34IN7S.js} +16 -13
- package/dist/{chunk-XUODI55L.js → chunk-U3QU5AVC.js} +1 -1
- package/dist/{chunk-PNJRIMKJ.js → chunk-UB5WVCY4.js} +3 -3
- package/dist/{chunk-P7P2NWZD.js → chunk-URNG7ZX2.js} +1 -1
- package/dist/{chunk-3TF3YLM2.js → chunk-UROFA6OZ.js} +2 -2
- package/dist/{chunk-T5P54I7S.js → chunk-UTQRPXTL.js} +9 -8
- package/dist/{chunk-Y3EUEPGQ.js → chunk-UWHV7EJG.js} +2 -2
- package/dist/chunk-UY3VT3HQ.js +39 -0
- package/dist/{chunk-5LXMEHQX.js → chunk-VG2TYPZ4.js} +18 -2
- package/dist/{chunk-EZBJEV6F.js → chunk-VTH56ERA.js} +4 -4
- package/dist/{chunk-Z4DZMNDE.js → chunk-W6QYWXOZ.js} +2 -2
- package/dist/{chunk-3WZGFAV4.js → chunk-WKGJQIRC.js} +4 -3
- package/dist/{chunk-EGN4TPN5.js → chunk-WT3SEE34.js} +3 -3
- package/dist/{chunk-CZ4IOIWV.js → chunk-X23OAFFE.js} +4 -4
- package/dist/{chunk-E4FQRMHV.js → chunk-XJYR5HE3.js} +18 -0
- package/dist/{chunk-X3IXLDWQ.js → chunk-XSRIFWHR.js} +2 -2
- package/dist/{chunk-SS5IC3XV.js → chunk-Y6BFKPNB.js} +1 -1
- package/dist/{chunk-EFSLGRY2.js → chunk-YCL5RHEC.js} +2 -2
- package/dist/{chunk-LGVD2IGL.js → chunk-YD67W6DW.js} +9 -9
- package/dist/{chunk-J3XIGC3L.js → chunk-YE47YUGE.js} +6 -6
- package/dist/{chunk-F6DCNXO5.js → chunk-YEJFXJHR.js} +2 -2
- package/dist/{chunk-ZV6Y5VOD.js → chunk-YUVQQCT4.js} +15 -15
- package/dist/{chunk-T64ECODW.js → chunk-YUZFNAG6.js} +21 -0
- package/dist/{chunk-OWG6UV4S.js → chunk-YWAMRRAX.js} +10 -10
- 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 +48 -48
- package/dist/containers/setup.js +10 -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 +5 -3
- package/dist/db/session-resources.js +5 -5
- package/dist/db/sessions.js +8 -8
- package/dist/db/skills.js +5 -5
- package/dist/db/sync.js +5 -5
- package/dist/db/tenants.js +3 -3
- package/dist/db/threads.js +7 -7
- package/dist/db/traces.js +5 -5
- package/dist/db/upstream_keys.js +3 -3
- package/dist/db/vaults.js +6 -6
- package/dist/db/work.js +33 -0
- package/dist/dreaming/review.js +11 -11
- package/dist/handlers/agents.js +64 -64
- package/dist/handlers/api_keys.js +65 -65
- package/dist/handlers/audit.js +65 -65
- package/dist/handlers/batch.js +65 -65
- package/dist/handlers/credentials.js +65 -65
- package/dist/handlers/environments.js +65 -65
- package/dist/handlers/events.js +68 -68
- package/dist/handlers/files.js +65 -65
- package/dist/handlers/index.js +141 -120
- package/dist/handlers/license.js +64 -64
- package/dist/handlers/memory.js +66 -66
- package/dist/handlers/metrics.js +64 -64
- package/dist/handlers/models.js +65 -65
- package/dist/handlers/providers.js +64 -64
- package/dist/handlers/resources.js +64 -64
- package/dist/handlers/sessions.js +68 -68
- package/dist/handlers/settings.js +64 -64
- package/dist/handlers/skills-write.js +67 -65
- package/dist/handlers/skills.js +65 -65
- package/dist/handlers/stream.js +64 -64
- package/dist/handlers/tenants.js +65 -65
- package/dist/handlers/threads.js +65 -65
- package/dist/handlers/traces.js +65 -65
- package/dist/handlers/ui.d.ts +6 -0
- package/dist/handlers/ui.d.ts.map +1 -0
- package/dist/handlers/ui.js +1 -1
- package/dist/handlers/upstream_keys.js +67 -67
- package/dist/handlers/vaults.js +64 -64
- package/dist/handlers/whoami.js +64 -64
- package/dist/handlers/work.js +114 -0
- package/dist/http.js +63 -63
- package/dist/index.js +84 -73
- package/dist/init.js +60 -60
- 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/providers/daytona.js +1 -1
- package/dist/providers/fly.js +7 -6
- package/dist/providers/modal.js +5 -5
- package/dist/providers/registry.js +15 -3
- package/dist/providers/resolve-secrets.js +7 -7
- package/dist/providers/sprites.js +7 -7
- package/dist/providers/upstream-keys.js +12 -12
- 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 +53 -53
- package/dist/sessions/grader.js +5 -5
- package/dist/sessions/secrets.js +8 -8
- package/dist/sessions/sweeper.js +49 -49
- package/dist/sessions/threads.js +54 -54
- package/dist/shutdown.js +50 -50
- package/dist/sync/anthropic.js +10 -10
- package/dist/sync/container-file-sync.js +6 -6
- package/dist/sync/file-sync.js +17 -17
- package/dist/workers/runner.js +85 -0
- package/package.json +1 -1
- package/dist/chunk-3W6KEDQE.js +0 -20
- package/dist/chunk-JDBXIJKG.js +0 -20
- package/dist/chunk-QQDSHL27.js +0 -22
- package/dist/chunk-SWIP7JBQ.js +0 -22
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ackWorkItem,
|
|
3
|
+
getWorkItem,
|
|
4
|
+
getWorkQueueStats,
|
|
5
|
+
heartbeatWorkItem,
|
|
6
|
+
listWorkItems,
|
|
7
|
+
pollWorkItem,
|
|
8
|
+
stopWorkItem,
|
|
9
|
+
updateWorkItemMetadata
|
|
10
|
+
} from "./chunk-D2GADI73.js";
|
|
11
|
+
import {
|
|
12
|
+
decodeCursor,
|
|
13
|
+
jsonOk,
|
|
14
|
+
paginatedOk,
|
|
15
|
+
routeWrap
|
|
16
|
+
} from "./chunk-FCKUWBUL.js";
|
|
17
|
+
import {
|
|
18
|
+
getEnvironment
|
|
19
|
+
} from "./chunk-CFLMIJ2C.js";
|
|
20
|
+
import {
|
|
21
|
+
badRequest,
|
|
22
|
+
notFound
|
|
23
|
+
} from "./chunk-EZYKRG4W.js";
|
|
24
|
+
|
|
25
|
+
// src/handlers/work.ts
|
|
26
|
+
import { z } from "zod";
|
|
27
|
+
function assertSelfHostedEnv(envId) {
|
|
28
|
+
const env = getEnvironment(envId);
|
|
29
|
+
if (!env) throw notFound(`environment not found: ${envId}`);
|
|
30
|
+
if (env.config?.type !== "self_hosted")
|
|
31
|
+
throw badRequest("work queue is only available on self_hosted environments");
|
|
32
|
+
return env;
|
|
33
|
+
}
|
|
34
|
+
function handleListWork(request, envId) {
|
|
35
|
+
return routeWrap(request, async ({ request: req }) => {
|
|
36
|
+
assertSelfHostedEnv(envId);
|
|
37
|
+
const url = new URL(req.url);
|
|
38
|
+
const requestedLimit = Number(url.searchParams.get("limit") || "20");
|
|
39
|
+
const cursor = decodeCursor(url.searchParams.get("page"));
|
|
40
|
+
const state = url.searchParams.get("state") ?? void 0;
|
|
41
|
+
const items = listWorkItems(envId, { limit: requestedLimit, cursor, state });
|
|
42
|
+
return paginatedOk(items, requestedLimit);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
function handleGetWork(request, envId, workId) {
|
|
46
|
+
return routeWrap(request, async () => {
|
|
47
|
+
assertSelfHostedEnv(envId);
|
|
48
|
+
const item = getWorkItem(workId);
|
|
49
|
+
if (!item || item.environment_id !== envId) throw notFound(`work item not found: ${workId}`);
|
|
50
|
+
return jsonOk(item);
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
var UpdateWorkSchema = z.object({
|
|
54
|
+
metadata: z.record(z.union([z.string(), z.null()]))
|
|
55
|
+
});
|
|
56
|
+
function handleUpdateWork(request, envId, workId) {
|
|
57
|
+
return routeWrap(request, async () => {
|
|
58
|
+
assertSelfHostedEnv(envId);
|
|
59
|
+
const body = await request.json();
|
|
60
|
+
const parsed = UpdateWorkSchema.safeParse(body);
|
|
61
|
+
if (!parsed.success) throw badRequest(parsed.error.message);
|
|
62
|
+
const item = updateWorkItemMetadata(workId, parsed.data.metadata);
|
|
63
|
+
if (!item || item.environment_id !== envId) throw notFound(`work item not found: ${workId}`);
|
|
64
|
+
return jsonOk(item);
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
function handlePollWork(request, envId) {
|
|
68
|
+
return routeWrap(request, async ({ request: req }) => {
|
|
69
|
+
assertSelfHostedEnv(envId);
|
|
70
|
+
const url = new URL(req.url);
|
|
71
|
+
const workerId = url.searchParams.get("worker_id") ?? void 0;
|
|
72
|
+
const item = pollWorkItem(envId, workerId);
|
|
73
|
+
if (!item) return jsonOk({ data: null });
|
|
74
|
+
return jsonOk(item);
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function handleWorkStats(request, envId) {
|
|
78
|
+
return routeWrap(request, async () => {
|
|
79
|
+
assertSelfHostedEnv(envId);
|
|
80
|
+
const stats = getWorkQueueStats(envId);
|
|
81
|
+
return jsonOk(stats);
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
var AckWorkSchema = z.object({
|
|
85
|
+
worker_id: z.string().optional()
|
|
86
|
+
}).optional();
|
|
87
|
+
function handleAckWork(request, envId, workId) {
|
|
88
|
+
return routeWrap(request, async () => {
|
|
89
|
+
assertSelfHostedEnv(envId);
|
|
90
|
+
let workerId;
|
|
91
|
+
try {
|
|
92
|
+
const body = await request.json();
|
|
93
|
+
const parsed = AckWorkSchema.safeParse(body);
|
|
94
|
+
if (parsed.success && parsed.data) {
|
|
95
|
+
workerId = parsed.data.worker_id;
|
|
96
|
+
}
|
|
97
|
+
} catch {
|
|
98
|
+
}
|
|
99
|
+
const item = ackWorkItem(workId, workerId);
|
|
100
|
+
if (!item) throw notFound(`work item not found or not in pending state: ${workId}`);
|
|
101
|
+
if (item.environment_id !== envId) throw notFound(`work item not found: ${workId}`);
|
|
102
|
+
return jsonOk(item);
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
function handleHeartbeatWork(request, envId, workId) {
|
|
106
|
+
return routeWrap(request, async () => {
|
|
107
|
+
assertSelfHostedEnv(envId);
|
|
108
|
+
const existing = getWorkItem(workId);
|
|
109
|
+
if (!existing || existing.environment_id !== envId)
|
|
110
|
+
throw notFound(`work item not found: ${workId}`);
|
|
111
|
+
const result = heartbeatWorkItem(workId);
|
|
112
|
+
if (!result) throw notFound(`work item not found: ${workId}`);
|
|
113
|
+
return jsonOk(result);
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
var StopWorkSchema = z.object({
|
|
117
|
+
force: z.boolean().optional()
|
|
118
|
+
}).optional();
|
|
119
|
+
function handleStopWork(request, envId, workId) {
|
|
120
|
+
return routeWrap(request, async () => {
|
|
121
|
+
assertSelfHostedEnv(envId);
|
|
122
|
+
let force;
|
|
123
|
+
try {
|
|
124
|
+
const body = await request.json();
|
|
125
|
+
const parsed = StopWorkSchema.safeParse(body);
|
|
126
|
+
if (parsed.success && parsed.data) {
|
|
127
|
+
force = parsed.data.force;
|
|
128
|
+
}
|
|
129
|
+
} catch {
|
|
130
|
+
}
|
|
131
|
+
const item = stopWorkItem(workId, force);
|
|
132
|
+
if (!item || item.environment_id !== envId) throw notFound(`work item not found: ${workId}`);
|
|
133
|
+
return jsonOk(item);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export {
|
|
138
|
+
handleListWork,
|
|
139
|
+
handleGetWork,
|
|
140
|
+
handleUpdateWork,
|
|
141
|
+
handlePollWork,
|
|
142
|
+
handleWorkStats,
|
|
143
|
+
handleAckWork,
|
|
144
|
+
handleHeartbeatWork,
|
|
145
|
+
handleStopWork
|
|
146
|
+
};
|
|
@@ -5,25 +5,25 @@ import {
|
|
|
5
5
|
} from "./chunk-23UKWXJH.js";
|
|
6
6
|
import {
|
|
7
7
|
kickoffEnvironmentSetup
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-PLSXDJT4.js";
|
|
9
9
|
import {
|
|
10
10
|
decodeCursor,
|
|
11
11
|
jsonOk,
|
|
12
12
|
paginatedOk,
|
|
13
13
|
routeWrap
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-FCKUWBUL.js";
|
|
15
15
|
import {
|
|
16
16
|
forwardToAnthropic
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-5LDBCBOR.js";
|
|
18
18
|
import {
|
|
19
19
|
getProxiedTenantId,
|
|
20
20
|
isProxied,
|
|
21
21
|
markProxied,
|
|
22
22
|
unmarkProxied
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-YCL5RHEC.js";
|
|
24
24
|
import {
|
|
25
25
|
resolveContainerProvider
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-JXU6SA6S.js";
|
|
27
27
|
import {
|
|
28
28
|
archiveEnvironment,
|
|
29
29
|
createEnvironment,
|
|
@@ -32,11 +32,11 @@ import {
|
|
|
32
32
|
hasSessionsAttached,
|
|
33
33
|
listEnvironments,
|
|
34
34
|
updateEnvironment
|
|
35
|
-
} from "./chunk-
|
|
35
|
+
} from "./chunk-CFLMIJ2C.js";
|
|
36
36
|
import {
|
|
37
37
|
getDb,
|
|
38
38
|
init_client
|
|
39
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-U3QU5AVC.js";
|
|
40
40
|
import {
|
|
41
41
|
badRequest,
|
|
42
42
|
conflict,
|
|
@@ -81,7 +81,7 @@ var NetworkingSchema = z.union([
|
|
|
81
81
|
})
|
|
82
82
|
]);
|
|
83
83
|
var ConfigSchema = z.object({
|
|
84
|
-
type: z.
|
|
84
|
+
type: z.enum(["cloud", "self_hosted"]),
|
|
85
85
|
provider: z.enum(["sprites", "docker", "apple-container", "apple-firecracker", "podman", "e2b", "vercel", "daytona", "fly", "modal", "mvm", "anthropic"]).optional(),
|
|
86
86
|
packages: PackagesSchema,
|
|
87
87
|
networking: NetworkingSchema.optional(),
|
|
@@ -108,6 +108,11 @@ function handleCreateEnvironment(request) {
|
|
|
108
108
|
const body = rawBody ? JSON.parse(rawBody) : null;
|
|
109
109
|
const parsed = CreateSchema.safeParse(body);
|
|
110
110
|
if (!parsed.success) throw badRequest(parsed.error.message);
|
|
111
|
+
let configData = parsed.data.config;
|
|
112
|
+
if (configData.type === "cloud" && configData.provider && configData.provider !== "anthropic") {
|
|
113
|
+
console.warn(`[compat] type: "cloud" with provider "${configData.provider}" is deprecated \u2014 use type: "self_hosted"`);
|
|
114
|
+
configData = { ...configData, type: "self_hosted" };
|
|
115
|
+
}
|
|
111
116
|
const createTenantId = resolveCreateTenant(auth, parsed.data.tenant_id);
|
|
112
117
|
if (parsed.data.backend === "anthropic") {
|
|
113
118
|
const { backend: _, ...rest } = body;
|
|
@@ -126,23 +131,26 @@ function handleCreateEnvironment(request) {
|
|
|
126
131
|
if (existingEnvs.some((e) => e.name === parsed.data.name)) {
|
|
127
132
|
throw conflict(`Environment with name "${parsed.data.name}" already exists`);
|
|
128
133
|
}
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
const configType = configData.type;
|
|
135
|
+
const providerName = configData.provider;
|
|
136
|
+
if (configType === "cloud") {
|
|
137
|
+
} else {
|
|
138
|
+
if (providerName) {
|
|
139
|
+
const CLOUD_PROVIDERS = /* @__PURE__ */ new Set(["sprites", "e2b", "vercel", "daytona", "fly", "modal", "anthropic"]);
|
|
140
|
+
if (!CLOUD_PROVIDERS.has(providerName)) {
|
|
141
|
+
const provider = await resolveContainerProvider(providerName);
|
|
142
|
+
if (provider.checkAvailability) {
|
|
143
|
+
const result = await provider.checkAvailability();
|
|
144
|
+
if (!result.available) {
|
|
145
|
+
throw badRequest(`Provider "${providerName}" is not available: ${result.message}`);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
140
148
|
}
|
|
141
149
|
}
|
|
142
150
|
}
|
|
143
151
|
const env = createEnvironment({
|
|
144
152
|
name: parsed.data.name,
|
|
145
|
-
config:
|
|
153
|
+
config: configData,
|
|
146
154
|
description: parsed.data.description ?? null,
|
|
147
155
|
metadata: parsed.data.metadata,
|
|
148
156
|
tenant_id: createTenantId
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
-
resolveContainerProvider
|
|
3
|
-
|
|
2
|
+
resolveContainerProvider,
|
|
3
|
+
resolveProvider
|
|
4
|
+
} from "./chunk-JXU6SA6S.js";
|
|
4
5
|
import {
|
|
5
6
|
getEnvironmentRow,
|
|
6
7
|
updateEnvironmentState
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-CFLMIJ2C.js";
|
|
8
9
|
import {
|
|
9
10
|
installClaudeWrapper
|
|
10
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-J6T3W6RY.js";
|
|
11
12
|
import {
|
|
12
13
|
init_ids,
|
|
13
14
|
newId
|
|
@@ -86,7 +87,7 @@ async function runEnvironmentSetup(envId) {
|
|
|
86
87
|
if (!row) throw new Error(`environment ${envId} not found`);
|
|
87
88
|
if (row.state === "ready") return;
|
|
88
89
|
const config = JSON.parse(row.config_json);
|
|
89
|
-
const provider = await
|
|
90
|
+
const provider = await resolveProvider({ envConfigProvider: config?.provider });
|
|
90
91
|
const hasPackages = config.packages && Object.values(config.packages).some((v) => v && v.length > 0);
|
|
91
92
|
if (!hasPackages) {
|
|
92
93
|
updateEnvironmentState(envId, "ready", null);
|
|
@@ -4,11 +4,11 @@ import {
|
|
|
4
4
|
getSources,
|
|
5
5
|
getStats,
|
|
6
6
|
searchSkills
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-PJTGQVKB.js";
|
|
8
8
|
import {
|
|
9
9
|
jsonOk,
|
|
10
10
|
routeWrap
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FCKUWBUL.js";
|
|
12
12
|
|
|
13
13
|
// src/handlers/skills.ts
|
|
14
14
|
async function handleGetSkillsCatalog(request) {
|
|
@@ -10,14 +10,14 @@ import {
|
|
|
10
10
|
import {
|
|
11
11
|
getDrizzle,
|
|
12
12
|
init_drizzle
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-PVFGDKXO.js";
|
|
14
14
|
import {
|
|
15
15
|
schema_exports
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-4ENK7S24.js";
|
|
17
17
|
import {
|
|
18
18
|
getDb,
|
|
19
19
|
init_client
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-U3QU5AVC.js";
|
|
21
21
|
|
|
22
22
|
// src/db/events.ts
|
|
23
23
|
init_client();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
init_schema,
|
|
3
3
|
schema_exports
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-4ENK7S24.js";
|
|
5
5
|
import {
|
|
6
6
|
getDb,
|
|
7
7
|
init_client
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-U3QU5AVC.js";
|
|
9
9
|
import {
|
|
10
10
|
__esm
|
|
11
11
|
} from "./chunk-2ESYSVXG.js";
|
|
@@ -8,13 +8,13 @@ import {
|
|
|
8
8
|
getMemoryByPath,
|
|
9
9
|
getMemoryStore,
|
|
10
10
|
listMemories
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-T3CXZ2BE.js";
|
|
12
12
|
import {
|
|
13
13
|
listSessions
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-MTB7SCZ5.js";
|
|
15
15
|
import {
|
|
16
16
|
listEvents
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PRWWTLPR.js";
|
|
18
18
|
import {
|
|
19
19
|
init_clock,
|
|
20
20
|
nowMs
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// src/backends/gemini/wrapper-script.ts
|
|
2
|
+
var GEMINI_WRAPPER_PATH = "/tmp/.gemini-wrapper";
|
|
3
|
+
var SANDBOX_WRAPPER_SCRIPT = [
|
|
4
|
+
"#!/bin/bash",
|
|
5
|
+
'while IFS= read -r line; do [ -z "$line" ] && break; export "$line"; done',
|
|
6
|
+
// Sprites keep-alive: prevent VM suspension during long agent turns.
|
|
7
|
+
'SPRITE_SOCK="/.sprite/api.sock"',
|
|
8
|
+
'HEARTBEAT_PID=""',
|
|
9
|
+
'if [ -S "$SPRITE_SOCK" ]; then',
|
|
10
|
+
' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
|
|
11
|
+
" -X POST http://sprite/v1/tasks \\",
|
|
12
|
+
' -H "Content-Type: application/json" \\',
|
|
13
|
+
` -d '{"name":"agent-turn","expire":"5m"}' >/dev/null 2>&1`,
|
|
14
|
+
" (while sleep 60; do",
|
|
15
|
+
' curl -sf --unix-socket "$SPRITE_SOCK" -H "Host: sprite" \\',
|
|
16
|
+
" -X PUT http://sprite/v1/tasks/agent-turn \\",
|
|
17
|
+
' -H "Content-Type: application/json" \\',
|
|
18
|
+
` -d '{"expire":"5m"}' >/dev/null 2>&1`,
|
|
19
|
+
" done) &",
|
|
20
|
+
" HEARTBEAT_PID=$!",
|
|
21
|
+
` 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`,
|
|
22
|
+
"fi",
|
|
23
|
+
'gemini "$@"'
|
|
24
|
+
].join("\n");
|
|
25
|
+
async function installGeminiWrapper(sandboxName, provider) {
|
|
26
|
+
const escaped = SANDBOX_WRAPPER_SCRIPT.replace(/'/g, "'\\''");
|
|
27
|
+
await provider.exec(sandboxName, [
|
|
28
|
+
"bash",
|
|
29
|
+
"-c",
|
|
30
|
+
`printf '%s' '${escaped}' > ${GEMINI_WRAPPER_PATH} && chmod +x ${GEMINI_WRAPPER_PATH}`
|
|
31
|
+
]);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export {
|
|
35
|
+
GEMINI_WRAPPER_PATH,
|
|
36
|
+
installGeminiWrapper
|
|
37
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
SUPPORTED_PROVIDERS
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-HHS6EHSG.js";
|
|
4
4
|
import {
|
|
5
5
|
addUpstreamKey,
|
|
6
6
|
deleteUpstreamKey,
|
|
@@ -8,20 +8,20 @@ import {
|
|
|
8
8
|
enableUpstreamKey,
|
|
9
9
|
getUpstreamKey,
|
|
10
10
|
listUpstreamKeys
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-G7Y5YGLE.js";
|
|
12
12
|
import {
|
|
13
13
|
requireGlobalAdmin
|
|
14
14
|
} from "./chunk-23UKWXJH.js";
|
|
15
15
|
import {
|
|
16
16
|
recordAudit
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-PDUQCDIO.js";
|
|
18
18
|
import {
|
|
19
19
|
requireFeature
|
|
20
20
|
} from "./chunk-2N2KL4KM.js";
|
|
21
21
|
import {
|
|
22
22
|
jsonOk,
|
|
23
23
|
routeWrap
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-FCKUWBUL.js";
|
|
25
25
|
import {
|
|
26
26
|
badRequest,
|
|
27
27
|
notFound
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
2
|
piBackend
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-YD67W6DW.js";
|
|
4
4
|
import {
|
|
5
5
|
opencodeBackend
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import {
|
|
8
|
-
geminiBackend
|
|
9
|
-
} from "./chunk-NFGCFN57.js";
|
|
6
|
+
} from "./chunk-ISXWS5Y4.js";
|
|
10
7
|
import {
|
|
11
8
|
factoryBackend
|
|
12
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-YWAMRRAX.js";
|
|
13
10
|
import {
|
|
14
|
-
|
|
15
|
-
} from "./chunk-
|
|
11
|
+
geminiBackend
|
|
12
|
+
} from "./chunk-3UK3IF27.js";
|
|
16
13
|
import {
|
|
17
14
|
codexBackend
|
|
18
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-B3UOTIOI.js";
|
|
16
|
+
import {
|
|
17
|
+
claudeBackend
|
|
18
|
+
} from "./chunk-BYJRL4IQ.js";
|
|
19
19
|
|
|
20
20
|
// src/backends/registry.ts
|
|
21
21
|
var BACKENDS = {
|
|
@@ -4,7 +4,7 @@ import {
|
|
|
4
4
|
} from "./chunk-AIBH32FN.js";
|
|
5
5
|
import {
|
|
6
6
|
DEFAULT_TENANT_ID
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-CD2FQVQR.js";
|
|
8
8
|
import {
|
|
9
9
|
init_ids,
|
|
10
10
|
newId
|
|
@@ -17,10 +17,10 @@ import {
|
|
|
17
17
|
import {
|
|
18
18
|
getDrizzle,
|
|
19
19
|
init_drizzle
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-PVFGDKXO.js";
|
|
21
21
|
import {
|
|
22
22
|
schema_exports
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-4ENK7S24.js";
|
|
24
24
|
|
|
25
25
|
// src/db/vaults.ts
|
|
26
26
|
init_drizzle();
|
|
@@ -8,17 +8,17 @@ import {
|
|
|
8
8
|
jsonOk,
|
|
9
9
|
paginatedOk,
|
|
10
10
|
routeWrap
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-FCKUWBUL.js";
|
|
12
12
|
import {
|
|
13
13
|
forwardToAnthropic,
|
|
14
14
|
validateAnthropicProxy
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-5LDBCBOR.js";
|
|
16
16
|
import {
|
|
17
17
|
getProxiedTenantId,
|
|
18
18
|
isProxied,
|
|
19
19
|
markProxied,
|
|
20
20
|
unmarkProxied
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-YCL5RHEC.js";
|
|
22
22
|
import {
|
|
23
23
|
archiveAgent,
|
|
24
24
|
createAgent,
|
|
@@ -26,14 +26,14 @@ import {
|
|
|
26
26
|
listAgentVersions,
|
|
27
27
|
listAgents,
|
|
28
28
|
updateAgent
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-WT3SEE34.js";
|
|
30
30
|
import {
|
|
31
31
|
resolveBackend
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-R5LXEIOJ.js";
|
|
33
33
|
import {
|
|
34
34
|
getDb,
|
|
35
35
|
init_client
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-U3QU5AVC.js";
|
|
37
37
|
import {
|
|
38
38
|
badRequest,
|
|
39
39
|
conflict,
|