@agentstep/agent-sdk 0.5.11 → 0.5.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (191) hide show
  1. package/dist/auth/middleware.js +8 -8
  2. package/dist/backends/claude/args.js +6 -6
  3. package/dist/backends/claude/index.js +11 -11
  4. package/dist/backends/codex/auth.js +6 -6
  5. package/dist/backends/codex/index.js +12 -12
  6. package/dist/backends/factory/auth.js +6 -6
  7. package/dist/backends/factory/index.js +14 -14
  8. package/dist/backends/gemini/auth.js +6 -6
  9. package/dist/backends/gemini/index.js +10 -10
  10. package/dist/backends/opencode/auth.js +6 -6
  11. package/dist/backends/opencode/index.js +12 -12
  12. package/dist/backends/pi/auth.js +6 -6
  13. package/dist/backends/pi/index.js +12 -12
  14. package/dist/backends/registry.js +30 -30
  15. package/dist/{chunk-ZEDULYKX.js → chunk-2IISXUVF.js} +1 -1
  16. package/dist/{chunk-34Q6WMIT.js → chunk-2Z56TPBL.js} +3 -3
  17. package/dist/{chunk-MMB7ZTAF.js → chunk-3DRK36FB.js} +5 -5
  18. package/dist/{chunk-LXSGQ2VF.js → chunk-3NNU7TQ4.js} +8 -8
  19. package/dist/{chunk-SAA6477U.js → chunk-3UK3IF27.js} +4 -4
  20. package/dist/chunk-4ANV3AH3.js +65 -0
  21. package/dist/{chunk-RNU253MD.js → chunk-4ENK7S24.js} +21 -2
  22. package/dist/{chunk-IFZ7EXMG.js → chunk-4EVT4MFD.js} +1 -1
  23. package/dist/{chunk-7POF237O.js → chunk-4MKJB6U2.js} +1 -1
  24. package/dist/{chunk-WKPUTJGD.js → chunk-5LDBCBOR.js} +1 -1
  25. package/dist/{chunk-5KXAMBPI.js → chunk-6PIL2RJD.js} +2 -2
  26. package/dist/{chunk-KZGFT75I.js → chunk-6X3G5SAS.js} +41 -18
  27. package/dist/{chunk-WUMBZMBF.js → chunk-7ASUTNKE.js} +2 -2
  28. package/dist/{chunk-CR3UN3BC.js → chunk-7BT6V4CH.js} +20 -18
  29. package/dist/{chunk-5COWXLGO.js → chunk-7D55V4XP.js} +1 -1
  30. package/dist/{chunk-BJ3EPRZU.js → chunk-7NZ46LIO.js} +29 -28
  31. package/dist/{chunk-6FNPCZTL.js → chunk-7SO7O6RV.js} +2 -2
  32. package/dist/{chunk-4JPJ3ZIV.js → chunk-7Z6LTBYQ.js} +5 -5
  33. package/dist/{chunk-NVTDXBGV.js → chunk-APKELBCA.js} +1 -1
  34. package/dist/{chunk-RYVVSBST.js → chunk-B3UOTIOI.js} +7 -7
  35. package/dist/{chunk-4UNMDYKD.js → chunk-B5JUCPYW.js} +1 -1
  36. package/dist/{chunk-LJSD6G6K.js → chunk-BQ5MWNWN.js} +3 -3
  37. package/dist/{chunk-KB4EKC5T.js → chunk-BYJRL4IQ.js} +5 -5
  38. package/dist/{chunk-7NIUHK63.js → chunk-C3ZPWUDE.js} +2 -2
  39. package/dist/{chunk-LSXVCZN7.js → chunk-CD2FQVQR.js} +1 -1
  40. package/dist/{chunk-6BOOQV4Q.js → chunk-CFLMIJ2C.js} +3 -3
  41. package/dist/{chunk-GMIAU3CP.js → chunk-CGGGCKSK.js} +4 -4
  42. package/dist/chunk-D2GADI73.js +253 -0
  43. package/dist/{chunk-MPG77WHN.js → chunk-D3TY7PMJ.js} +5 -5
  44. package/dist/{chunk-UHPS3XNG.js → chunk-DAIEVD4O.js} +4 -4
  45. package/dist/{chunk-2U2KCTMF.js → chunk-DDF2CRA3.js} +2 -2
  46. package/dist/{chunk-WL3VMUAI.js → chunk-FCKUWBUL.js} +2 -2
  47. package/dist/{chunk-YFGBTXID.js → chunk-FV2XE3DX.js} +2 -2
  48. package/dist/{chunk-73BYGQWA.js → chunk-G7Y5YGLE.js} +1 -1
  49. package/dist/{chunk-JE5Z2GLG.js → chunk-HE3IEIKM.js} +3 -3
  50. package/dist/{chunk-WKMRBRJQ.js → chunk-HH23DOBB.js} +1 -1
  51. package/dist/{chunk-HCORTMQH.js → chunk-HHS6EHSG.js} +4 -4
  52. package/dist/{chunk-T4IPZC4G.js → chunk-ISXWS5Y4.js} +6 -6
  53. package/dist/{chunk-TCTAUIAQ.js → chunk-JK2GXKOQ.js} +5 -5
  54. package/dist/{chunk-7KSQJK2V.js → chunk-JXU6SA6S.js} +42 -1
  55. package/dist/{chunk-ALIJNBQY.js → chunk-KHICXOTH.js} +3 -3
  56. package/dist/{chunk-BUQATYS7.js → chunk-KNWM237Q.js} +2 -2
  57. package/dist/{chunk-RNDLMMKI.js → chunk-LOWHDHDD.js} +3 -3
  58. package/dist/{chunk-6SVZD3UA.js → chunk-M4OF5D4K.js} +4 -4
  59. package/dist/{chunk-VFVLRR3Z.js → chunk-M7SYXJBT.js} +1 -1
  60. package/dist/{chunk-IBO36HUU.js → chunk-MQBNN4KH.js} +1 -1
  61. package/dist/{chunk-32RP2UX6.js → chunk-MTB7SCZ5.js} +5 -5
  62. package/dist/{chunk-LEVIKSPQ.js → chunk-MTRTBT7L.js} +1 -1
  63. package/dist/{chunk-UMIIZKVX.js → chunk-N5F5OUUZ.js} +3 -3
  64. package/dist/{chunk-KGTWD46T.js → chunk-NWIMPG4M.js} +1 -1
  65. package/dist/chunk-ONEKY3CM.js +146 -0
  66. package/dist/{chunk-OMI5CR4P.js → chunk-ONS32E65.js} +28 -20
  67. package/dist/{chunk-N5C3WQWD.js → chunk-PDUQCDIO.js} +1 -1
  68. package/dist/{chunk-DSNNEER4.js → chunk-PJTGQVKB.js} +1 -1
  69. package/dist/{chunk-M2ZBXMYO.js → chunk-PLSXDJT4.js} +5 -4
  70. package/dist/{chunk-2UDGQWRA.js → chunk-PPI76YVT.js} +2 -2
  71. package/dist/{chunk-N33MOUCH.js → chunk-PRWWTLPR.js} +3 -3
  72. package/dist/{chunk-T75UYYMI.js → chunk-PVFGDKXO.js} +2 -2
  73. package/dist/{chunk-PIJJXKMK.js → chunk-PXMTLKUJ.js} +3 -3
  74. package/dist/{chunk-6ERUVF2Y.js → chunk-QB7JAMWG.js} +1 -1
  75. package/dist/{chunk-KRQRJEQY.js → chunk-QS544PN6.js} +4 -4
  76. package/dist/{chunk-4N7WVJHB.js → chunk-R5LXEIOJ.js} +9 -9
  77. package/dist/{chunk-OJUDLJOG.js → chunk-REY2YZ5X.js} +3 -3
  78. package/dist/{chunk-4IEDAORR.js → chunk-RFK4W5PZ.js} +1 -1
  79. package/dist/{chunk-NOG7ZJJA.js → chunk-RLLVP37Q.js} +1 -1
  80. package/dist/{chunk-UONJFSWM.js → chunk-S5NB47IR.js} +6 -6
  81. package/dist/{chunk-3XGUMXGR.js → chunk-SXR4HQZY.js} +2 -2
  82. package/dist/{chunk-YN2F26NN.js → chunk-T3CXZ2BE.js} +2 -2
  83. package/dist/{chunk-I7FLMXEF.js → chunk-TN34IN7S.js} +16 -13
  84. package/dist/{chunk-XUODI55L.js → chunk-U3QU5AVC.js} +1 -1
  85. package/dist/{chunk-GTHATO73.js → chunk-UB5WVCY4.js} +3 -3
  86. package/dist/{chunk-3TF3YLM2.js → chunk-UROFA6OZ.js} +2 -2
  87. package/dist/{chunk-4HFKDLD7.js → chunk-UTQRPXTL.js} +9 -8
  88. package/dist/{chunk-Y3EUEPGQ.js → chunk-UWHV7EJG.js} +2 -2
  89. package/dist/{chunk-5VL4L6BJ.js → chunk-VG2TYPZ4.js} +18 -2
  90. package/dist/{chunk-EZBJEV6F.js → chunk-VTH56ERA.js} +4 -4
  91. package/dist/{chunk-Z4DZMNDE.js → chunk-W6QYWXOZ.js} +2 -2
  92. package/dist/{chunk-3WZGFAV4.js → chunk-WKGJQIRC.js} +4 -3
  93. package/dist/{chunk-EGN4TPN5.js → chunk-WT3SEE34.js} +3 -3
  94. package/dist/{chunk-CZ4IOIWV.js → chunk-X23OAFFE.js} +4 -4
  95. package/dist/{chunk-DVDNHXCM.js → chunk-XSRIFWHR.js} +2 -2
  96. package/dist/{chunk-SS5IC3XV.js → chunk-Y6BFKPNB.js} +1 -1
  97. package/dist/{chunk-EFSLGRY2.js → chunk-YCL5RHEC.js} +2 -2
  98. package/dist/{chunk-RTLMLG3A.js → chunk-YD67W6DW.js} +7 -7
  99. package/dist/{chunk-4QRE6LZG.js → chunk-YE47YUGE.js} +6 -6
  100. package/dist/{chunk-F6DCNXO5.js → chunk-YEJFXJHR.js} +2 -2
  101. package/dist/{chunk-RJB7YG26.js → chunk-YUVQQCT4.js} +15 -15
  102. package/dist/{chunk-T64ECODW.js → chunk-YUZFNAG6.js} +21 -0
  103. package/dist/{chunk-G43CK3VC.js → chunk-YWAMRRAX.js} +9 -9
  104. package/dist/config/index.js +5 -5
  105. package/dist/containers/client.js +6 -6
  106. package/dist/containers/exec.js +6 -6
  107. package/dist/containers/lifecycle.js +42 -42
  108. package/dist/containers/setup.js +9 -8
  109. package/dist/db/agents.js +6 -6
  110. package/dist/db/api_keys.js +5 -5
  111. package/dist/db/audit.js +3 -3
  112. package/dist/db/batch.js +10 -10
  113. package/dist/db/client.js +2 -2
  114. package/dist/db/credentials.js +3 -3
  115. package/dist/db/drizzle.js +4 -4
  116. package/dist/db/environments.js +6 -6
  117. package/dist/db/events.js +5 -5
  118. package/dist/db/files.js +5 -5
  119. package/dist/db/memory.js +5 -5
  120. package/dist/db/migrations.js +1 -1
  121. package/dist/db/proxy.js +5 -5
  122. package/dist/db/schema.js +5 -3
  123. package/dist/db/session-resources.js +5 -5
  124. package/dist/db/sessions.js +8 -8
  125. package/dist/db/skills.js +5 -5
  126. package/dist/db/sync.js +5 -5
  127. package/dist/db/tenants.js +3 -3
  128. package/dist/db/threads.js +7 -7
  129. package/dist/db/traces.js +5 -5
  130. package/dist/db/upstream_keys.js +3 -3
  131. package/dist/db/vaults.js +6 -6
  132. package/dist/db/work.js +33 -0
  133. package/dist/dreaming/review.js +11 -11
  134. package/dist/handlers/agents.js +58 -58
  135. package/dist/handlers/api_keys.js +59 -59
  136. package/dist/handlers/audit.js +59 -59
  137. package/dist/handlers/batch.js +59 -59
  138. package/dist/handlers/credentials.js +59 -59
  139. package/dist/handlers/environments.js +59 -59
  140. package/dist/handlers/events.js +62 -62
  141. package/dist/handlers/files.js +59 -59
  142. package/dist/handlers/index.js +135 -114
  143. package/dist/handlers/license.js +58 -58
  144. package/dist/handlers/memory.js +60 -60
  145. package/dist/handlers/metrics.js +58 -58
  146. package/dist/handlers/models.js +59 -59
  147. package/dist/handlers/providers.js +58 -58
  148. package/dist/handlers/resources.js +58 -58
  149. package/dist/handlers/sessions.js +62 -62
  150. package/dist/handlers/settings.js +58 -58
  151. package/dist/handlers/skills-write.js +61 -59
  152. package/dist/handlers/skills.js +59 -59
  153. package/dist/handlers/stream.js +58 -58
  154. package/dist/handlers/tenants.js +59 -59
  155. package/dist/handlers/threads.js +59 -59
  156. package/dist/handlers/traces.js +59 -59
  157. package/dist/handlers/ui.d.ts +6 -0
  158. package/dist/handlers/ui.d.ts.map +1 -0
  159. package/dist/handlers/ui.js +1 -1
  160. package/dist/handlers/upstream_keys.js +61 -61
  161. package/dist/handlers/vaults.js +58 -58
  162. package/dist/handlers/whoami.js +58 -58
  163. package/dist/handlers/work.js +114 -0
  164. package/dist/http.js +57 -57
  165. package/dist/index.js +78 -67
  166. package/dist/init.js +54 -54
  167. package/dist/lib/model-registry.js +6 -6
  168. package/dist/lib/skills-cache.js +6 -6
  169. package/dist/observability/otlp.js +12 -12
  170. package/dist/observability/redactor.js +8 -8
  171. package/dist/providers/fly.js +5 -5
  172. package/dist/providers/modal.js +5 -5
  173. package/dist/providers/registry.js +15 -3
  174. package/dist/providers/resolve-secrets.js +7 -7
  175. package/dist/providers/sprites.js +7 -7
  176. package/dist/providers/upstream-keys.js +12 -12
  177. package/dist/providers/vercel.js +5 -5
  178. package/dist/proxy/forward.js +6 -6
  179. package/dist/queue/index.js +6 -6
  180. package/dist/sessions/bus.js +10 -10
  181. package/dist/sessions/driver.js +47 -47
  182. package/dist/sessions/grader.js +5 -5
  183. package/dist/sessions/secrets.js +8 -8
  184. package/dist/sessions/sweeper.js +43 -43
  185. package/dist/sessions/threads.js +48 -48
  186. package/dist/shutdown.js +44 -44
  187. package/dist/sync/anthropic.js +10 -10
  188. package/dist/sync/container-file-sync.js +6 -6
  189. package/dist/sync/file-sync.js +17 -17
  190. package/dist/workers/runner.js +85 -0
  191. package/package.json +1 -1
@@ -5,14 +5,14 @@ import {
5
5
  import {
6
6
  getDrizzle,
7
7
  init_drizzle
8
- } from "./chunk-T75UYYMI.js";
8
+ } from "./chunk-PVFGDKXO.js";
9
9
  import {
10
10
  schema_exports
11
- } from "./chunk-RNU253MD.js";
11
+ } from "./chunk-4ENK7S24.js";
12
12
  import {
13
13
  getDb,
14
14
  init_client
15
- } from "./chunk-XUODI55L.js";
15
+ } from "./chunk-U3QU5AVC.js";
16
16
 
17
17
  // src/db/sync.ts
18
18
  init_drizzle();
@@ -2,19 +2,19 @@ import {
2
2
  getSyncRow,
3
3
  getSyncedRemoteId,
4
4
  upsertSync
5
- } from "./chunk-RNDLMMKI.js";
5
+ } from "./chunk-LOWHDHDD.js";
6
6
  import {
7
7
  injectMcpAuthHeaders
8
8
  } from "./chunk-DBFPJSOY.js";
9
9
  import {
10
10
  listEntries
11
- } from "./chunk-OJUDLJOG.js";
11
+ } from "./chunk-REY2YZ5X.js";
12
12
  import {
13
13
  getEnvironment
14
- } from "./chunk-6BOOQV4Q.js";
14
+ } from "./chunk-CFLMIJ2C.js";
15
15
  import {
16
16
  getAgent
17
- } from "./chunk-EGN4TPN5.js";
17
+ } from "./chunk-WT3SEE34.js";
18
18
 
19
19
  // src/sync/anthropic.ts
20
20
  import { createHash } from "crypto";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-WL3VMUAI.js";
4
+ } from "./chunk-FCKUWBUL.js";
5
5
 
6
6
  // src/handlers/whoami.ts
7
7
  function handleWhoami(request) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-3WZGFAV4.js";
3
+ } from "./chunk-WKGJQIRC.js";
4
4
 
5
5
  // src/backends/codex/auth.ts
6
6
  function buildCodexAuthEnv() {
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  init_session_resources,
3
3
  session_resources_exports
4
- } from "./chunk-3TF3YLM2.js";
4
+ } from "./chunk-UROFA6OZ.js";
5
5
  import {
6
6
  getAgent
7
- } from "./chunk-EGN4TPN5.js";
7
+ } from "./chunk-WT3SEE34.js";
8
8
  import {
9
9
  DEFAULT_TENANT_ID
10
- } from "./chunk-LSXVCZN7.js";
10
+ } from "./chunk-CD2FQVQR.js";
11
11
  import {
12
12
  init_ids,
13
13
  newId
@@ -20,10 +20,10 @@ import {
20
20
  import {
21
21
  getDrizzle,
22
22
  init_drizzle
23
- } from "./chunk-T75UYYMI.js";
23
+ } from "./chunk-PVFGDKXO.js";
24
24
  import {
25
25
  schema_exports
26
- } from "./chunk-RNU253MD.js";
26
+ } from "./chunk-4ENK7S24.js";
27
27
  import {
28
28
  __toCommonJS
29
29
  } from "./chunk-2ESYSVXG.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-3WZGFAV4.js";
3
+ } from "./chunk-WKGJQIRC.js";
4
4
  import {
5
5
  serverBusy
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-WL3VMUAI.js";
4
+ } from "./chunk-FCKUWBUL.js";
5
5
  import {
6
6
  resolveContainerProvider
7
- } from "./chunk-7KSQJK2V.js";
7
+ } from "./chunk-JXU6SA6S.js";
8
8
  import {
9
9
  getConfig
10
- } from "./chunk-3WZGFAV4.js";
10
+ } from "./chunk-WKGJQIRC.js";
11
11
 
12
12
  // src/handlers/providers.ts
13
13
  var LOCAL_PROVIDERS = ["docker", "apple-container", "podman"];
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getConfig,
6
6
  readSetting
7
- } from "./chunk-3WZGFAV4.js";
7
+ } from "./chunk-WKGJQIRC.js";
8
8
  import {
9
9
  __commonJS
10
10
  } from "./chunk-2ESYSVXG.js";
@@ -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-M2ZBXMYO.js";
8
+ } from "./chunk-PLSXDJT4.js";
9
9
  import {
10
10
  decodeCursor,
11
11
  jsonOk,
12
12
  paginatedOk,
13
13
  routeWrap
14
- } from "./chunk-WL3VMUAI.js";
14
+ } from "./chunk-FCKUWBUL.js";
15
15
  import {
16
16
  forwardToAnthropic
17
- } from "./chunk-WKPUTJGD.js";
17
+ } from "./chunk-5LDBCBOR.js";
18
18
  import {
19
19
  getProxiedTenantId,
20
20
  isProxied,
21
21
  markProxied,
22
22
  unmarkProxied
23
- } from "./chunk-EFSLGRY2.js";
23
+ } from "./chunk-YCL5RHEC.js";
24
24
  import {
25
25
  resolveContainerProvider
26
- } from "./chunk-7KSQJK2V.js";
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-6BOOQV4Q.js";
35
+ } from "./chunk-CFLMIJ2C.js";
36
36
  import {
37
37
  getDb,
38
38
  init_client
39
- } from "./chunk-XUODI55L.js";
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.literal("cloud"),
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 providerName = parsed.data.config.provider;
130
- if (!providerName) {
131
- throw badRequest("config.provider is required \u2014 specify a sandbox provider (e.g. docker, apple-container)");
132
- }
133
- const CLOUD_PROVIDERS = /* @__PURE__ */ new Set(["sprites", "e2b", "vercel", "daytona", "fly", "modal", "anthropic"]);
134
- if (!CLOUD_PROVIDERS.has(providerName)) {
135
- const provider = await resolveContainerProvider(providerName);
136
- if (provider.checkAvailability) {
137
- const result = await provider.checkAvailability();
138
- if (!result.available) {
139
- throw badRequest(`Provider "${providerName}" is not available: ${result.message}`);
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: parsed.data.config,
153
+ config: configData,
146
154
  description: parsed.data.description ?? null,
147
155
  metadata: parsed.data.metadata,
148
156
  tenant_id: createTenantId
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  getDb,
16
16
  init_client
17
- } from "./chunk-XUODI55L.js";
17
+ } from "./chunk-U3QU5AVC.js";
18
18
 
19
19
  // src/db/audit.ts
20
20
  init_client();
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  readSetting
3
- } from "./chunk-3WZGFAV4.js";
3
+ } from "./chunk-WKGJQIRC.js";
4
4
 
5
5
  // src/lib/skills-cache.ts
6
6
  var DEFAULT_FEED_URL = "https://www.agentstep.com/v1/skills/feed";
@@ -1,10 +1,11 @@
1
1
  import {
2
- resolveContainerProvider
3
- } from "./chunk-7KSQJK2V.js";
2
+ resolveContainerProvider,
3
+ resolveProvider
4
+ } from "./chunk-JXU6SA6S.js";
4
5
  import {
5
6
  getEnvironmentRow,
6
7
  updateEnvironmentState
7
- } from "./chunk-6BOOQV4Q.js";
8
+ } from "./chunk-CFLMIJ2C.js";
8
9
  import {
9
10
  installClaudeWrapper
10
11
  } from "./chunk-J6T3W6RY.js";
@@ -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 resolveContainerProvider(config.provider);
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-DSNNEER4.js";
7
+ } from "./chunk-PJTGQVKB.js";
8
8
  import {
9
9
  jsonOk,
10
10
  routeWrap
11
- } from "./chunk-WL3VMUAI.js";
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-T75UYYMI.js";
13
+ } from "./chunk-PVFGDKXO.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-RNU253MD.js";
16
+ } from "./chunk-4ENK7S24.js";
17
17
  import {
18
18
  getDb,
19
19
  init_client
20
- } from "./chunk-XUODI55L.js";
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-RNU253MD.js";
4
+ } from "./chunk-4ENK7S24.js";
5
5
  import {
6
6
  getDb,
7
7
  init_client
8
- } from "./chunk-XUODI55L.js";
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-YN2F26NN.js";
11
+ } from "./chunk-T3CXZ2BE.js";
12
12
  import {
13
13
  listSessions
14
- } from "./chunk-32RP2UX6.js";
14
+ } from "./chunk-MTB7SCZ5.js";
15
15
  import {
16
16
  listEvents
17
- } from "./chunk-N33MOUCH.js";
17
+ } from "./chunk-PRWWTLPR.js";
18
18
  import {
19
19
  init_clock,
20
20
  nowMs
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  listEntries
3
- } from "./chunk-OJUDLJOG.js";
3
+ } from "./chunk-REY2YZ5X.js";
4
4
 
5
5
  // src/providers/resolve-secrets.ts
6
6
  var BLOCKED_ENV_KEYS = /* @__PURE__ */ new Set([
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SUPPORTED_PROVIDERS
3
- } from "./chunk-HCORTMQH.js";
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-73BYGQWA.js";
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-N5C3WQWD.js";
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-WL3VMUAI.js";
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-RTLMLG3A.js";
3
+ } from "./chunk-YD67W6DW.js";
4
4
  import {
5
5
  opencodeBackend
6
- } from "./chunk-T4IPZC4G.js";
7
- import {
8
- geminiBackend
9
- } from "./chunk-SAA6477U.js";
6
+ } from "./chunk-ISXWS5Y4.js";
10
7
  import {
11
8
  factoryBackend
12
- } from "./chunk-G43CK3VC.js";
9
+ } from "./chunk-YWAMRRAX.js";
13
10
  import {
14
- claudeBackend
15
- } from "./chunk-KB4EKC5T.js";
11
+ geminiBackend
12
+ } from "./chunk-3UK3IF27.js";
16
13
  import {
17
14
  codexBackend
18
- } from "./chunk-RYVVSBST.js";
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-LSXVCZN7.js";
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-T75UYYMI.js";
20
+ } from "./chunk-PVFGDKXO.js";
21
21
  import {
22
22
  schema_exports
23
- } from "./chunk-RNU253MD.js";
23
+ } from "./chunk-4ENK7S24.js";
24
24
 
25
25
  // src/db/vaults.ts
26
26
  init_drizzle();
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-3WZGFAV4.js";
3
+ } from "./chunk-WKGJQIRC.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-3WZGFAV4.js";
3
+ } from "./chunk-WKGJQIRC.js";
4
4
 
5
5
  // src/backends/gemini/auth.ts
6
6
  function buildGeminiAuthEnv() {
@@ -8,17 +8,17 @@ import {
8
8
  jsonOk,
9
9
  paginatedOk,
10
10
  routeWrap
11
- } from "./chunk-WL3VMUAI.js";
11
+ } from "./chunk-FCKUWBUL.js";
12
12
  import {
13
13
  forwardToAnthropic,
14
14
  validateAnthropicProxy
15
- } from "./chunk-WKPUTJGD.js";
15
+ } from "./chunk-5LDBCBOR.js";
16
16
  import {
17
17
  getProxiedTenantId,
18
18
  isProxied,
19
19
  markProxied,
20
20
  unmarkProxied
21
- } from "./chunk-EFSLGRY2.js";
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-EGN4TPN5.js";
29
+ } from "./chunk-WT3SEE34.js";
30
30
  import {
31
31
  resolveBackend
32
- } from "./chunk-4N7WVJHB.js";
32
+ } from "./chunk-R5LXEIOJ.js";
33
33
  import {
34
34
  getDb,
35
35
  init_client
36
- } from "./chunk-XUODI55L.js";
36
+ } from "./chunk-U3QU5AVC.js";
37
37
  import {
38
38
  badRequest,
39
39
  conflict,