@agentstep/agent-sdk 0.4.29 → 0.4.31

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 (176) 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 +7 -7
  4. package/dist/backends/codex/auth.js +6 -6
  5. package/dist/backends/codex/index.js +7 -7
  6. package/dist/backends/factory/auth.js +6 -6
  7. package/dist/backends/factory/index.js +7 -7
  8. package/dist/backends/gemini/auth.js +6 -6
  9. package/dist/backends/gemini/index.js +7 -7
  10. package/dist/backends/opencode/auth.js +6 -6
  11. package/dist/backends/opencode/index.js +7 -7
  12. package/dist/backends/pi/auth.js +6 -6
  13. package/dist/backends/pi/index.js +7 -7
  14. package/dist/backends/registry.js +18 -18
  15. package/dist/{chunk-R5OZHLAD.js → chunk-2COVNKOK.js} +2 -2
  16. package/dist/{chunk-2NAUMCWE.js → chunk-33OBMYKV.js} +1 -1
  17. package/dist/{chunk-MJ5J57UJ.js → chunk-4LKSYF4M.js} +1 -1
  18. package/dist/{chunk-ESXH27JB.js → chunk-4MDF5N2L.js} +2 -2
  19. package/dist/{chunk-GQFC44YI.js → chunk-55SVTKOM.js} +8 -5
  20. package/dist/{chunk-YIVJ3JTW.js → chunk-5H2CQ6L4.js} +2 -2
  21. package/dist/{chunk-JK5TPJHH.js → chunk-6GP5IKXE.js} +1 -1
  22. package/dist/{chunk-5GZEX4HV.js → chunk-6POQAFEC.js} +1 -1
  23. package/dist/{chunk-EF5QCTEQ.js → chunk-6YZ5WTLB.js} +2 -2
  24. package/dist/{chunk-BFXQ3IOS.js → chunk-7RJNOZLB.js} +18 -15
  25. package/dist/{chunk-4DTL7OKD.js → chunk-A7CS7RTM.js} +5 -5
  26. package/dist/{chunk-DO4WVWW7.js → chunk-AJPZY6EJ.js} +1 -1
  27. package/dist/{chunk-JDELTTHV.js → chunk-AR2TM7CR.js} +1 -1
  28. package/dist/{chunk-YGAHGTVZ.js → chunk-BCUBVYE3.js} +3 -3
  29. package/dist/{chunk-LLYP77OL.js → chunk-BNXUV6NZ.js} +11 -5
  30. package/dist/{chunk-NX6SIEN6.js → chunk-BQRKJAOP.js} +2 -2
  31. package/dist/{chunk-4GC7D5GD.js → chunk-CGKRD37R.js} +2 -2
  32. package/dist/{chunk-ZMMDLKR3.js → chunk-CIUFOD65.js} +3 -3
  33. package/dist/{chunk-HMBJOI5F.js → chunk-DKBNLGZO.js} +23 -14
  34. package/dist/{chunk-ZP5VMV5O.js → chunk-FEXR57M4.js} +4 -4
  35. package/dist/{chunk-OONL25NZ.js → chunk-FOOPNRHA.js} +2 -2
  36. package/dist/{chunk-EGCAA6KI.js → chunk-G6JKWW2S.js} +2 -2
  37. package/dist/{chunk-UXMCHRGA.js → chunk-GNHRAWOX.js} +2 -2
  38. package/dist/{chunk-BZ6HFTHU.js → chunk-H7UKW666.js} +1 -1
  39. package/dist/{chunk-HLNTWWAZ.js → chunk-I2SLDKCN.js} +2 -2
  40. package/dist/{chunk-NWW4246M.js → chunk-IN5KO2L2.js} +1 -1
  41. package/dist/{chunk-VIGJQU6V.js → chunk-J37F7PXJ.js} +4 -4
  42. package/dist/{chunk-X2CAT5MN.js → chunk-JIURGVRG.js} +1 -1
  43. package/dist/{chunk-WFIMX3HG.js → chunk-JJGAQMPS.js} +1 -1
  44. package/dist/{chunk-B2JLKTBJ.js → chunk-JWSR5TZ3.js} +1 -1
  45. package/dist/{chunk-I5ZA45YL.js → chunk-KFORPY7J.js} +9 -5
  46. package/dist/{chunk-4RNCKCDV.js → chunk-KLFJTFDB.js} +1 -1
  47. package/dist/{chunk-MHQXDTJB.js → chunk-KLN6HPYM.js} +1 -1
  48. package/dist/{chunk-RK3QBYXO.js → chunk-KRLVSKID.js} +5 -5
  49. package/dist/{chunk-ZQGJKPPY.js → chunk-L5RW66H5.js} +31 -6
  50. package/dist/{chunk-NUINUAXO.js → chunk-LASUEMN6.js} +3 -3
  51. package/dist/{chunk-AMWWPUSK.js → chunk-LHQD4KLV.js} +1 -1
  52. package/dist/{chunk-UIVEK3MD.js → chunk-M7W3PCFS.js} +1 -1
  53. package/dist/{chunk-T45NOW43.js → chunk-MHL3EXDR.js} +1 -1
  54. package/dist/{chunk-BMPB7XJH.js → chunk-MVC2FD32.js} +4 -4
  55. package/dist/{chunk-O45IQUWS.js → chunk-NDVC4J3H.js} +3 -3
  56. package/dist/{chunk-Y2KDIPCT.js → chunk-NIW3B4V2.js} +5 -5
  57. package/dist/{chunk-OWP537VU.js → chunk-NJ4JTJJM.js} +1 -1
  58. package/dist/{chunk-ZNQD65DN.js → chunk-O3XR457F.js} +4 -4
  59. package/dist/{chunk-I44FSUBC.js → chunk-O5B7GRUK.js} +1 -1
  60. package/dist/{chunk-OC2RYYTW.js → chunk-OLF7H564.js} +11 -8
  61. package/dist/{chunk-OTLXV4RO.js → chunk-OZJG5G7V.js} +4 -4
  62. package/dist/{chunk-JEI7I3EH.js → chunk-P2IGNOJI.js} +3 -3
  63. package/dist/{chunk-LYTHR3HC.js → chunk-PTYMGYNJ.js} +1 -1
  64. package/dist/chunk-PVITAFPJ.js +212 -0
  65. package/dist/{chunk-YCXELHKG.js → chunk-Q3DOTREK.js} +1 -1
  66. package/dist/{chunk-NUO56TF7.js → chunk-QVFRPABA.js} +3 -3
  67. package/dist/{chunk-HGZ6R6ST.js → chunk-R3Q62FVO.js} +19 -6
  68. package/dist/{chunk-SXE7H3VK.js → chunk-R5T4LJSK.js} +2 -2
  69. package/dist/{chunk-DT57EZQB.js → chunk-RCF2SVUO.js} +15 -15
  70. package/dist/{chunk-EHCGLMPC.js → chunk-RKL2NK3V.js} +1 -1
  71. package/dist/{chunk-TY3HD5I5.js → chunk-S4AYCMMB.js} +1 -1
  72. package/dist/{chunk-5D5P37FY.js → chunk-TGEDOUUD.js} +1 -1
  73. package/dist/{chunk-W26HCKWX.js → chunk-TLEGXMX7.js} +3 -3
  74. package/dist/{chunk-RZKUB4JQ.js → chunk-TLH4JLC7.js} +2 -2
  75. package/dist/{chunk-OA3CLTYY.js → chunk-UBFEHVPY.js} +3 -3
  76. package/dist/{chunk-WHASPTF3.js → chunk-UCOSSYKZ.js} +12 -9
  77. package/dist/{chunk-AQXCXWAZ.js → chunk-ULS4X3UQ.js} +1 -1
  78. package/dist/{chunk-XZOBOKL6.js → chunk-UW4T4TG3.js} +3 -3
  79. package/dist/{chunk-ATTHVKNE.js → chunk-UZHSDRAK.js} +4 -4
  80. package/dist/{chunk-KZ4AECAK.js → chunk-UZQLLGX4.js} +43 -16
  81. package/dist/{chunk-JURAGCGR.js → chunk-V5XH43NK.js} +8 -8
  82. package/dist/{chunk-NIOWKTIF.js → chunk-VND46TDY.js} +2 -2
  83. package/dist/{chunk-XGUSWFDD.js → chunk-W63RBT7H.js} +9 -9
  84. package/dist/{chunk-2BDD6OHG.js → chunk-WCDWL6ED.js} +14 -0
  85. package/dist/{chunk-NXRJ7Z4G.js → chunk-WNHJTUPW.js} +2 -2
  86. package/dist/{chunk-FJAWIVSD.js → chunk-WORPHTCS.js} +4 -4
  87. package/dist/{chunk-O3Z7JWR7.js → chunk-WU52LOGJ.js} +7 -4
  88. package/dist/{chunk-ADK2TYO4.js → chunk-XTZWBXAO.js} +2 -2
  89. package/dist/{chunk-4WMYJM36.js → chunk-XVK7YFZP.js} +1 -1
  90. package/dist/{chunk-S3SKODVV.js → chunk-Y2VQ65PM.js} +4 -4
  91. package/dist/{chunk-KOGG7CSN.js → chunk-YS5UPMTH.js} +6 -6
  92. package/dist/{chunk-LMHXLYUV.js → chunk-ZG7FD2KD.js} +2 -2
  93. package/dist/{chunk-M4CTE7EH.js → chunk-ZKHUJB7A.js} +2 -2
  94. package/dist/{chunk-LHHBOQUR.js → chunk-ZMJ4EP4C.js} +2 -0
  95. package/dist/{chunk-DNGLD7VN.js → chunk-ZOWT6X6Y.js} +1 -1
  96. package/dist/config/index.js +5 -5
  97. package/dist/containers/client.js +6 -6
  98. package/dist/containers/exec.js +6 -6
  99. package/dist/containers/lifecycle.js +30 -30
  100. package/dist/containers/setup.js +8 -8
  101. package/dist/db/agents.js +6 -6
  102. package/dist/db/api_keys.js +5 -5
  103. package/dist/db/audit.js +3 -3
  104. package/dist/db/batch.js +10 -10
  105. package/dist/db/client.js +2 -2
  106. package/dist/db/credentials.js +3 -3
  107. package/dist/db/drizzle.js +4 -4
  108. package/dist/db/environments.js +6 -6
  109. package/dist/db/events.js +5 -5
  110. package/dist/db/files.js +5 -5
  111. package/dist/db/memory.js +5 -5
  112. package/dist/db/migrations.js +1 -1
  113. package/dist/db/proxy.js +5 -5
  114. package/dist/db/schema.js +1 -1
  115. package/dist/db/session-resources.js +5 -5
  116. package/dist/db/sessions.js +7 -7
  117. package/dist/db/sync.js +5 -5
  118. package/dist/db/tenants.js +3 -3
  119. package/dist/db/traces.js +5 -5
  120. package/dist/db/upstream_keys.js +3 -3
  121. package/dist/db/vaults.js +6 -6
  122. package/dist/handlers/agents.js +45 -45
  123. package/dist/handlers/api_keys.js +46 -46
  124. package/dist/handlers/audit.js +46 -46
  125. package/dist/handlers/batch.js +46 -46
  126. package/dist/handlers/credentials.js +46 -46
  127. package/dist/handlers/environments.js +46 -46
  128. package/dist/handlers/events.js +49 -49
  129. package/dist/handlers/files.js +46 -46
  130. package/dist/handlers/index.js +81 -81
  131. package/dist/handlers/license.js +45 -45
  132. package/dist/handlers/memory.js +46 -46
  133. package/dist/handlers/metrics.js +45 -45
  134. package/dist/handlers/models.js +46 -46
  135. package/dist/handlers/providers.js +45 -45
  136. package/dist/handlers/resources.js +45 -45
  137. package/dist/handlers/sessions.js +48 -48
  138. package/dist/handlers/settings.js +45 -45
  139. package/dist/handlers/skills-write.js +45 -45
  140. package/dist/handlers/skills.js +46 -46
  141. package/dist/handlers/stream.js +45 -45
  142. package/dist/handlers/tenants.js +46 -46
  143. package/dist/handlers/threads.js +45 -45
  144. package/dist/handlers/traces.js +46 -46
  145. package/dist/handlers/upstream_keys.js +48 -48
  146. package/dist/handlers/vaults.js +45 -45
  147. package/dist/handlers/whoami.js +45 -45
  148. package/dist/http.js +44 -44
  149. package/dist/index.js +48 -48
  150. package/dist/init.js +41 -41
  151. package/dist/lib/model-registry.js +6 -6
  152. package/dist/lib/skills-cache.js +6 -6
  153. package/dist/observability/otlp.js +12 -12
  154. package/dist/observability/redactor.js +8 -8
  155. package/dist/providers/fly.js +5 -5
  156. package/dist/providers/modal.js +5 -5
  157. package/dist/providers/registry.js +1 -1
  158. package/dist/providers/resolve-secrets.js +7 -7
  159. package/dist/providers/sprites.js +7 -7
  160. package/dist/providers/upstream-keys.js +11 -11
  161. package/dist/providers/vercel.js +5 -5
  162. package/dist/proxy/forward.js +6 -6
  163. package/dist/queue/index.js +6 -6
  164. package/dist/sessions/bus.js +10 -10
  165. package/dist/sessions/driver.js +34 -34
  166. package/dist/sessions/grader.js +5 -5
  167. package/dist/sessions/secrets.js +8 -8
  168. package/dist/sessions/sweeper.js +31 -31
  169. package/dist/sessions/threads.js +34 -34
  170. package/dist/shutdown.js +32 -32
  171. package/dist/sync/anthropic.js +10 -10
  172. package/dist/sync/container-file-sync.js +6 -6
  173. package/dist/sync/file-sync.js +17 -17
  174. package/package.json +1 -1
  175. package/dist/chunk-AE5JQORN.js +0 -131
  176. /package/dist/{chunk-QUJNG4RA.js → chunk-C4II4GGZ.js} +0 -0
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-ESXH27JB.js";
7
+ } from "./chunk-4MDF5N2L.js";
8
8
 
9
9
  // src/handlers/license.ts
10
10
  function handleGetLicense(request) {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-EF5QCTEQ.js";
3
+ } from "./chunk-6YZ5WTLB.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  getSession
3
- } from "./chunk-I5ZA45YL.js";
3
+ } from "./chunk-KFORPY7J.js";
4
4
  import {
5
5
  appendEvent,
6
6
  appendEventsBatch,
7
7
  listEvents,
8
8
  rowToManagedEvent
9
- } from "./chunk-O45IQUWS.js";
9
+ } from "./chunk-NDVC4J3H.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-JEI7I3EH.js";
12
+ } from "./chunk-P2IGNOJI.js";
13
13
  import {
14
14
  getDb,
15
15
  init_client
16
- } from "./chunk-5GZEX4HV.js";
16
+ } from "./chunk-6POQAFEC.js";
17
17
 
18
18
  // src/sessions/bus.ts
19
19
  import { EventEmitter } from "events";
@@ -5,10 +5,10 @@ import {
5
5
  import {
6
6
  getDrizzle,
7
7
  init_drizzle
8
- } from "./chunk-SXE7H3VK.js";
8
+ } from "./chunk-R5T4LJSK.js";
9
9
  import {
10
10
  schema_exports
11
- } from "./chunk-LHHBOQUR.js";
11
+ } from "./chunk-ZMJ4EP4C.js";
12
12
  import {
13
13
  init_clock,
14
14
  nowMs,
@@ -17,7 +17,7 @@ import {
17
17
  import {
18
18
  getDb,
19
19
  init_client
20
- } from "./chunk-5GZEX4HV.js";
20
+ } from "./chunk-6POQAFEC.js";
21
21
 
22
22
  // src/db/events.ts
23
23
  init_client();
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  onAfterCommit
3
- } from "./chunk-BMPB7XJH.js";
3
+ } from "./chunk-MVC2FD32.js";
4
4
  import {
5
5
  getSessionRow
6
- } from "./chunk-I5ZA45YL.js";
6
+ } from "./chunk-KFORPY7J.js";
7
7
  import {
8
8
  listEventsByTrace
9
- } from "./chunk-O45IQUWS.js";
9
+ } from "./chunk-NDVC4J3H.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-JEI7I3EH.js";
12
+ } from "./chunk-P2IGNOJI.js";
13
13
  import {
14
14
  getConfig
15
- } from "./chunk-EF5QCTEQ.js";
15
+ } from "./chunk-6YZ5WTLB.js";
16
16
 
17
17
  // src/observability/otlp.ts
18
18
  import { createHash } from "crypto";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-EF5QCTEQ.js";
3
+ } from "./chunk-6YZ5WTLB.js";
4
4
 
5
5
  // src/backends/factory/auth.ts
6
6
  function buildFactoryAuthEnv() {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SUPPORTED_PROVIDERS
3
- } from "./chunk-ATTHVKNE.js";
3
+ } from "./chunk-UZHSDRAK.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-BZ6HFTHU.js";
11
+ } from "./chunk-H7UKW666.js";
12
12
  import {
13
13
  requireGlobalAdmin
14
14
  } from "./chunk-23UKWXJH.js";
15
15
  import {
16
16
  recordAudit
17
- } from "./chunk-MHQXDTJB.js";
17
+ } from "./chunk-KLN6HPYM.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-ESXH27JB.js";
24
+ } from "./chunk-4MDF5N2L.js";
25
25
  import {
26
26
  badRequest,
27
27
  notFound
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  buildPiAuthEnv,
6
6
  validatePiRuntime
7
- } from "./chunk-TY3HD5I5.js";
7
+ } from "./chunk-S4AYCMMB.js";
8
8
  import {
9
9
  preparePiOnSandbox
10
10
  } from "./chunk-QYSDP6V5.js";
@@ -6,31 +6,31 @@ import {
6
6
  import {
7
7
  jsonOk,
8
8
  routeWrap
9
- } from "./chunk-ESXH27JB.js";
9
+ } from "./chunk-4MDF5N2L.js";
10
10
  import {
11
11
  forwardToAnthropic,
12
12
  validateAnthropicProxy
13
- } from "./chunk-T45NOW43.js";
13
+ } from "./chunk-MHL3EXDR.js";
14
14
  import {
15
15
  getProxiedTenantId,
16
16
  isProxied,
17
17
  markProxied,
18
18
  unmarkProxied
19
- } from "./chunk-NIOWKTIF.js";
19
+ } from "./chunk-VND46TDY.js";
20
20
  import {
21
21
  archiveAgent,
22
22
  createAgent,
23
23
  getAgent,
24
24
  listAgents,
25
25
  updateAgent
26
- } from "./chunk-JEI7I3EH.js";
26
+ } from "./chunk-P2IGNOJI.js";
27
27
  import {
28
28
  resolveBackend
29
- } from "./chunk-KOGG7CSN.js";
29
+ } from "./chunk-YS5UPMTH.js";
30
30
  import {
31
31
  getDb,
32
32
  init_client
33
- } from "./chunk-5GZEX4HV.js";
33
+ } from "./chunk-6POQAFEC.js";
34
34
  import {
35
35
  badRequest,
36
36
  conflict,
@@ -216,8 +216,9 @@ function handleListAgents(request) {
216
216
  const order = url.searchParams.get("order");
217
217
  const includeArchived = url.searchParams.get("include_archived") === "true";
218
218
  const cursor = url.searchParams.get("page") ?? void 0;
219
+ const requestedLimit = limit ? Number(limit) : 20;
219
220
  const data = listAgents({
220
- limit: limit ? Number(limit) : void 0,
221
+ limit: requestedLimit,
221
222
  order: order ?? void 0,
222
223
  includeArchived,
223
224
  cursor,
@@ -225,7 +226,9 @@ function handleListAgents(request) {
225
226
  });
226
227
  return jsonOk({
227
228
  data,
228
- next_page: data.length > 0 ? data[data.length - 1].id : null
229
+ has_more: data.length === requestedLimit,
230
+ first_id: data.length > 0 ? data[0].id : null,
231
+ last_id: data.length > 0 ? data[data.length - 1].id : null
229
232
  });
230
233
  });
231
234
  }
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  listTraces
3
- } from "./chunk-JK5TPJHH.js";
3
+ } from "./chunk-6GP5IKXE.js";
4
4
  import {
5
5
  jsonOk,
6
6
  routeWrap
7
- } from "./chunk-ESXH27JB.js";
7
+ } from "./chunk-4MDF5N2L.js";
8
8
  import {
9
9
  exportTrace
10
- } from "./chunk-Y2KDIPCT.js";
10
+ } from "./chunk-NIW3B4V2.js";
11
11
  import {
12
12
  listEventsByTrace,
13
13
  rowToManagedEvent
14
- } from "./chunk-O45IQUWS.js";
14
+ } from "./chunk-NDVC4J3H.js";
15
15
  import {
16
16
  badRequest,
17
17
  notFound
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_TENANT_ID
3
- } from "./chunk-JDELTTHV.js";
3
+ } from "./chunk-AR2TM7CR.js";
4
4
  import {
5
5
  init_ids,
6
6
  newId
@@ -8,10 +8,10 @@ import {
8
8
  import {
9
9
  getDrizzle,
10
10
  init_drizzle
11
- } from "./chunk-SXE7H3VK.js";
11
+ } from "./chunk-R5T4LJSK.js";
12
12
  import {
13
13
  schema_exports
14
- } from "./chunk-LHHBOQUR.js";
14
+ } from "./chunk-ZMJ4EP4C.js";
15
15
  import {
16
16
  init_clock,
17
17
  nowMs,
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  routeWrap
3
- } from "./chunk-ESXH27JB.js";
3
+ } from "./chunk-4MDF5N2L.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -0,0 +1,212 @@
1
+ import {
2
+ loadVaultForCaller
3
+ } from "./chunk-BNXUV6NZ.js";
4
+ import {
5
+ jsonOk,
6
+ routeWrap
7
+ } from "./chunk-4MDF5N2L.js";
8
+ import {
9
+ createCredential,
10
+ deleteCredential,
11
+ getCredential,
12
+ listCredentials,
13
+ updateCredential
14
+ } from "./chunk-L5RW66H5.js";
15
+ import {
16
+ badRequest,
17
+ conflict,
18
+ notFound
19
+ } from "./chunk-EZYKRG4W.js";
20
+
21
+ // src/handlers/credentials.ts
22
+ import { z } from "zod";
23
+ var TokenEndpointAuthSchema = z.object({
24
+ type: z.string().min(1),
25
+ client_secret: z.string().min(1)
26
+ });
27
+ var OAuthRefreshSchema = z.object({
28
+ token_endpoint: z.string().url(),
29
+ client_id: z.string().min(1),
30
+ scope: z.string().optional(),
31
+ refresh_token: z.string().min(1),
32
+ token_endpoint_auth: TokenEndpointAuthSchema.optional()
33
+ });
34
+ var StaticBearerAuthSchema = z.object({
35
+ type: z.literal("static_bearer"),
36
+ mcp_server_url: z.string().url().optional(),
37
+ token: z.string().min(1)
38
+ });
39
+ var McpOauthAuthSchema = z.object({
40
+ type: z.literal("mcp_oauth"),
41
+ mcp_server_url: z.string().url().optional(),
42
+ access_token: z.string().min(1),
43
+ expires_at: z.string().optional(),
44
+ refresh: OAuthRefreshSchema.optional()
45
+ });
46
+ var CreateCredentialSchema = z.object({
47
+ display_name: z.string().min(1).max(200),
48
+ auth: z.discriminatedUnion("type", [StaticBearerAuthSchema, McpOauthAuthSchema]),
49
+ metadata: z.record(z.string()).optional()
50
+ });
51
+ var UpdateStaticBearerAuthSchema = z.object({
52
+ type: z.literal("static_bearer").optional(),
53
+ token: z.string().min(1).optional(),
54
+ mcp_server_url: z.string().url().nullish()
55
+ });
56
+ var UpdateMcpOauthAuthSchema = z.object({
57
+ type: z.literal("mcp_oauth").optional(),
58
+ access_token: z.string().min(1).optional(),
59
+ expires_at: z.string().nullish(),
60
+ refresh: OAuthRefreshSchema.optional()
61
+ });
62
+ var UpdateAuthSchema = z.object({
63
+ type: z.enum(["static_bearer", "mcp_oauth"]).optional(),
64
+ token: z.string().min(1).optional(),
65
+ mcp_server_url: z.string().url().nullish(),
66
+ access_token: z.string().min(1).optional(),
67
+ expires_at: z.string().nullish(),
68
+ refresh: OAuthRefreshSchema.optional()
69
+ }).optional();
70
+ var UpdateCredentialSchema = z.object({
71
+ display_name: z.string().min(1).max(200).optional(),
72
+ auth: UpdateAuthSchema
73
+ });
74
+ function handleCreateCredential(request, vaultId) {
75
+ return routeWrap(request, async ({ auth }) => {
76
+ loadVaultForCaller(auth, vaultId);
77
+ const body = await request.json();
78
+ const parsed = CreateCredentialSchema.safeParse(body);
79
+ if (!parsed.success) throw badRequest(parsed.error.message);
80
+ const { auth: authData } = parsed.data;
81
+ try {
82
+ if (authData.type === "mcp_oauth") {
83
+ const refreshConfig = authData.refresh ? {
84
+ token_endpoint: authData.refresh.token_endpoint,
85
+ client_id: authData.refresh.client_id,
86
+ scope: authData.refresh.scope,
87
+ refresh_token: authData.refresh.refresh_token,
88
+ token_endpoint_auth: authData.refresh.token_endpoint_auth
89
+ } : null;
90
+ const cred2 = createCredential({
91
+ vault_id: vaultId,
92
+ display_name: parsed.data.display_name,
93
+ auth_type: "mcp_oauth",
94
+ token: authData.access_token,
95
+ mcp_server_url: authData.mcp_server_url ?? null,
96
+ expires_at: authData.expires_at ?? null,
97
+ refresh_config: refreshConfig
98
+ });
99
+ return jsonOk(cred2, 201);
100
+ }
101
+ const cred = createCredential({
102
+ vault_id: vaultId,
103
+ display_name: parsed.data.display_name,
104
+ auth_type: "static_bearer",
105
+ token: authData.token,
106
+ mcp_server_url: authData.mcp_server_url ?? null
107
+ });
108
+ return jsonOk(cred, 201);
109
+ } catch (err) {
110
+ const msg = err instanceof Error ? err.message : String(err);
111
+ if (msg.includes("UNIQUE constraint failed") || msg.includes("SQLITE_CONSTRAINT")) {
112
+ throw conflict(
113
+ `Credential "${parsed.data.display_name}" already exists in this vault`
114
+ );
115
+ }
116
+ throw err;
117
+ }
118
+ });
119
+ }
120
+ function handleListCredentials(request, vaultId) {
121
+ return routeWrap(request, async ({ auth, request: req }) => {
122
+ loadVaultForCaller(auth, vaultId);
123
+ const url = new URL(req.url);
124
+ const requestedLimit = Number(url.searchParams.get("limit") || "100");
125
+ const data = listCredentials(vaultId);
126
+ return jsonOk({
127
+ data,
128
+ has_more: data.length === requestedLimit,
129
+ first_id: data.length > 0 ? data[0].id : null,
130
+ last_id: data.length > 0 ? data[data.length - 1].id : null
131
+ });
132
+ });
133
+ }
134
+ function handleGetCredential(request, vaultId, credentialId) {
135
+ return routeWrap(request, async ({ auth }) => {
136
+ loadVaultForCaller(auth, vaultId);
137
+ const cred = getCredential(credentialId);
138
+ if (!cred || cred.vault_id !== vaultId) {
139
+ throw notFound(`credential not found: ${credentialId}`);
140
+ }
141
+ return jsonOk(cred);
142
+ });
143
+ }
144
+ function handleUpdateCredential(request, vaultId, credentialId) {
145
+ return routeWrap(request, async ({ auth }) => {
146
+ loadVaultForCaller(auth, vaultId);
147
+ const existing = getCredential(credentialId);
148
+ if (!existing || existing.vault_id !== vaultId) {
149
+ throw notFound(`credential not found: ${credentialId}`);
150
+ }
151
+ const body = await request.json();
152
+ const parsed = UpdateCredentialSchema.safeParse(body);
153
+ if (!parsed.success) throw badRequest(parsed.error.message);
154
+ try {
155
+ const authData = parsed.data.auth;
156
+ const isMcpOauth = existing.auth.type === "mcp_oauth" || authData?.type === "mcp_oauth";
157
+ if (isMcpOauth && authData) {
158
+ const refreshConfig = authData.refresh ? {
159
+ token_endpoint: authData.refresh.token_endpoint,
160
+ client_id: authData.refresh.client_id,
161
+ scope: authData.refresh.scope,
162
+ refresh_token: authData.refresh.refresh_token,
163
+ token_endpoint_auth: authData.refresh.token_endpoint_auth
164
+ } : void 0;
165
+ const updated2 = updateCredential(credentialId, {
166
+ display_name: parsed.data.display_name,
167
+ auth_type: authData.type,
168
+ token: authData.access_token,
169
+ expires_at: authData.expires_at,
170
+ refresh_config: refreshConfig
171
+ });
172
+ if (!updated2) throw notFound(`credential not found: ${credentialId}`);
173
+ return jsonOk(updated2);
174
+ }
175
+ const updated = updateCredential(credentialId, {
176
+ display_name: parsed.data.display_name,
177
+ auth_type: authData?.type,
178
+ token: authData?.token,
179
+ mcp_server_url: authData?.mcp_server_url
180
+ });
181
+ if (!updated) throw notFound(`credential not found: ${credentialId}`);
182
+ return jsonOk(updated);
183
+ } catch (err) {
184
+ if (err instanceof Error && (err.message.includes("UNIQUE constraint failed") || err.message.includes("SQLITE_CONSTRAINT"))) {
185
+ throw conflict(
186
+ `Credential "${parsed.data.display_name}" already exists in this vault`
187
+ );
188
+ }
189
+ throw err;
190
+ }
191
+ });
192
+ }
193
+ function handleDeleteCredential(request, vaultId, credentialId) {
194
+ return routeWrap(request, async ({ auth }) => {
195
+ loadVaultForCaller(auth, vaultId);
196
+ const existing = getCredential(credentialId);
197
+ if (!existing || existing.vault_id !== vaultId) {
198
+ throw notFound(`credential not found: ${credentialId}`);
199
+ }
200
+ const deleted = deleteCredential(credentialId);
201
+ if (!deleted) throw notFound(`credential not found: ${credentialId}`);
202
+ return jsonOk({ id: credentialId, type: "vault_credential_deleted" });
203
+ });
204
+ }
205
+
206
+ export {
207
+ handleCreateCredential,
208
+ handleListCredentials,
209
+ handleGetCredential,
210
+ handleUpdateCredential,
211
+ handleDeleteCredential
212
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-EF5QCTEQ.js";
3
+ } from "./chunk-6YZ5WTLB.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_TENANT_ID
3
- } from "./chunk-JDELTTHV.js";
3
+ } from "./chunk-AR2TM7CR.js";
4
4
  import {
5
5
  init_ids,
6
6
  newId
@@ -8,10 +8,10 @@ import {
8
8
  import {
9
9
  getDrizzle,
10
10
  init_drizzle
11
- } from "./chunk-SXE7H3VK.js";
11
+ } from "./chunk-R5T4LJSK.js";
12
12
  import {
13
13
  schema_exports
14
- } from "./chunk-LHHBOQUR.js";
14
+ } from "./chunk-ZMJ4EP4C.js";
15
15
  import {
16
16
  init_clock,
17
17
  nowMs,
@@ -12,15 +12,15 @@ import {
12
12
  listMemories,
13
13
  listMemoryStores,
14
14
  updateMemory
15
- } from "./chunk-NUINUAXO.js";
15
+ } from "./chunk-LASUEMN6.js";
16
16
  import {
17
17
  jsonOk,
18
18
  routeWrap
19
- } from "./chunk-ESXH27JB.js";
19
+ } from "./chunk-4MDF5N2L.js";
20
20
  import {
21
21
  getDb,
22
22
  init_client
23
- } from "./chunk-5GZEX4HV.js";
23
+ } from "./chunk-6POQAFEC.js";
24
24
  import {
25
25
  badRequest,
26
26
  conflict,
@@ -70,11 +70,17 @@ function handleListMemoryStores(request) {
70
70
  return routeWrap(request, async ({ auth, request: req }) => {
71
71
  const url = new URL(req.url);
72
72
  const agentId = url.searchParams.get("agent_id") ?? void 0;
73
+ const requestedLimit = Number(url.searchParams.get("limit") || "100");
73
74
  const data = listMemoryStores({
74
75
  agent_id: agentId,
75
76
  tenantFilter: tenantFilter(auth)
76
77
  });
77
- return jsonOk({ data });
78
+ return jsonOk({
79
+ data,
80
+ has_more: data.length === requestedLimit,
81
+ first_id: data.length > 0 ? data[0].id : null,
82
+ last_id: data.length > 0 ? data[data.length - 1].id : null
83
+ });
78
84
  });
79
85
  }
80
86
  function handleGetMemoryStore(request, id) {
@@ -110,10 +116,17 @@ function handleCreateMemory(request, storeId) {
110
116
  });
111
117
  }
112
118
  function handleListMemories(request, storeId) {
113
- return routeWrap(request, async ({ auth }) => {
119
+ return routeWrap(request, async ({ auth, request: req }) => {
114
120
  loadStoreForCaller(auth, storeId);
121
+ const url = new URL(req.url);
122
+ const requestedLimit = Number(url.searchParams.get("limit") || "100");
115
123
  const data = listMemories(storeId);
116
- return jsonOk({ data });
124
+ return jsonOk({
125
+ data,
126
+ has_more: data.length === requestedLimit,
127
+ first_id: data.length > 0 ? data[0].id : null,
128
+ last_id: data.length > 0 ? data[data.length - 1].id : null
129
+ });
117
130
  });
118
131
  }
119
132
  function handleGetMemory(request, storeId, memId) {
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  init_schema,
3
3
  schema_exports
4
- } from "./chunk-LHHBOQUR.js";
4
+ } from "./chunk-ZMJ4EP4C.js";
5
5
  import {
6
6
  getDb,
7
7
  init_client
8
- } from "./chunk-5GZEX4HV.js";
8
+ } from "./chunk-6POQAFEC.js";
9
9
  import {
10
10
  __esm
11
11
  } from "./chunk-2ESYSVXG.js";
@@ -1,59 +1,59 @@
1
1
  import {
2
2
  enqueueTurn
3
- } from "./chunk-AQXCXWAZ.js";
3
+ } from "./chunk-ULS4X3UQ.js";
4
4
  import {
5
5
  runTurn
6
- } from "./chunk-KZ4AECAK.js";
6
+ } from "./chunk-UZQLLGX4.js";
7
7
  import {
8
8
  installOtlpExporter
9
- } from "./chunk-Y2KDIPCT.js";
9
+ } from "./chunk-NIW3B4V2.js";
10
10
  import {
11
11
  redactAppendInput
12
- } from "./chunk-UXMCHRGA.js";
12
+ } from "./chunk-GNHRAWOX.js";
13
13
  import {
14
14
  createApiKey,
15
15
  listApiKeys
16
- } from "./chunk-ADK2TYO4.js";
16
+ } from "./chunk-XTZWBXAO.js";
17
17
  import {
18
18
  initSentry
19
19
  } from "./chunk-3MQ2FWXS.js";
20
20
  import {
21
21
  installShutdownHandlers
22
- } from "./chunk-NX6SIEN6.js";
22
+ } from "./chunk-BQRKJAOP.js";
23
23
  import {
24
24
  runSweep
25
- } from "./chunk-FJAWIVSD.js";
25
+ } from "./chunk-WORPHTCS.js";
26
26
  import {
27
27
  reconcileDockerOrphanSandboxes,
28
28
  reconcileOrphanSandboxes
29
- } from "./chunk-XGUSWFDD.js";
29
+ } from "./chunk-W63RBT7H.js";
30
30
  import {
31
31
  appendEvent,
32
32
  installPayloadRedactor
33
- } from "./chunk-BMPB7XJH.js";
33
+ } from "./chunk-MVC2FD32.js";
34
34
  import {
35
35
  setSessionSandbox
36
- } from "./chunk-I5ZA45YL.js";
36
+ } from "./chunk-KFORPY7J.js";
37
37
  import {
38
38
  readEnvValue,
39
39
  upsertEnvLine
40
40
  } from "./chunk-YPXI7Q2M.js";
41
41
  import {
42
42
  getLastUnprocessedUserMessage
43
- } from "./chunk-O45IQUWS.js";
43
+ } from "./chunk-NDVC4J3H.js";
44
44
  import {
45
45
  getBySession,
46
46
  register
47
47
  } from "./chunk-EFOIR7R3.js";
48
48
  import {
49
49
  resolveContainerProvider
50
- } from "./chunk-QUJNG4RA.js";
50
+ } from "./chunk-C4II4GGZ.js";
51
51
  import {
52
52
  getEnvironment
53
- } from "./chunk-NUO56TF7.js";
53
+ } from "./chunk-QVFRPABA.js";
54
54
  import {
55
55
  getConfig
56
- } from "./chunk-EF5QCTEQ.js";
56
+ } from "./chunk-6YZ5WTLB.js";
57
57
  import {
58
58
  init_clock,
59
59
  nowMs
@@ -61,7 +61,7 @@ import {
61
61
  import {
62
62
  getDb,
63
63
  init_client
64
- } from "./chunk-5GZEX4HV.js";
64
+ } from "./chunk-6POQAFEC.js";
65
65
  import {
66
66
  getRuntime
67
67
  } from "./chunk-UYTSKFGK.js";
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  buildGeminiAuthEnv,
6
6
  validateGeminiRuntime
7
- } from "./chunk-MJ5J57UJ.js";
7
+ } from "./chunk-4LKSYF4M.js";
8
8
  import {
9
9
  prepareGeminiOnSandbox
10
10
  } from "./chunk-XG4UIGDH.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-EF5QCTEQ.js";
3
+ } from "./chunk-6YZ5WTLB.js";
4
4
 
5
5
  // src/backends/pi/auth.ts
6
6
  function buildPiAuthEnv() {
@@ -13,7 +13,7 @@ import {
13
13
  import {
14
14
  buildFactoryAuthEnv,
15
15
  validateFactoryRuntime
16
- } from "./chunk-OWP537VU.js";
16
+ } from "./chunk-NJ4JTJJM.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
19
  } from "./chunk-FVBDEOTZ.js";