@agentstep/agent-sdk 0.5.28 → 0.5.34

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 (209) 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 +10 -10
  6. package/dist/backends/factory/auth.js +6 -6
  7. package/dist/backends/factory/index.js +12 -12
  8. package/dist/backends/gemini/auth.js +6 -6
  9. package/dist/backends/gemini/index.js +13 -13
  10. package/dist/backends/opencode/args.js +1 -1
  11. package/dist/backends/opencode/auth.js +6 -6
  12. package/dist/backends/opencode/index.js +14 -14
  13. package/dist/backends/pi/args.js +1 -1
  14. package/dist/backends/pi/auth.js +6 -6
  15. package/dist/backends/pi/index.js +11 -11
  16. package/dist/backends/registry.js +29 -29
  17. package/dist/{chunk-33QZ6KIY.js → chunk-25E64UIV.js} +5 -5
  18. package/dist/{chunk-PZKWZKRP.js → chunk-2KF2TIEY.js} +5 -5
  19. package/dist/{chunk-CXXL77ER.js → chunk-2R4IT7HG.js} +61 -4
  20. package/dist/{chunk-N627DRI6.js → chunk-3EI7IPMI.js} +3 -3
  21. package/dist/{chunk-Z25QQE5Z.js → chunk-3EWEKBVC.js} +4 -4
  22. package/dist/{chunk-V4DEOZFK.js → chunk-3LYNN5VT.js} +5 -5
  23. package/dist/{chunk-LJNLU5PQ.js → chunk-3NUTTKE5.js} +2 -2
  24. package/dist/{chunk-DI5WC2SQ.js → chunk-4EKHW6VS.js} +2 -2
  25. package/dist/{chunk-MZ6HBYGV.js → chunk-65XY7HRS.js} +7 -7
  26. package/dist/{chunk-KHTLT44I.js → chunk-6CODFATQ.js} +3 -3
  27. package/dist/{chunk-US26CY2Y.js → chunk-6EIONZ7F.js} +2 -2
  28. package/dist/chunk-6NEWWPL4.js +210 -0
  29. package/dist/{chunk-TFTJ734B.js → chunk-6NFK5RJX.js} +2 -2
  30. package/dist/chunk-6SD6MC2B.js +29 -0
  31. package/dist/{chunk-ENFWZ2QM.js → chunk-6U6HEVSN.js} +7 -3
  32. package/dist/{chunk-CXIP6H55.js → chunk-75US4UAE.js} +2 -2
  33. package/dist/{chunk-UB7GS7XT.js → chunk-A3FQHVUG.js} +7 -7
  34. package/dist/{chunk-ZP5QO5BR.js → chunk-ABUNDZCE.js} +1 -1
  35. package/dist/{chunk-QCP37SCU.js → chunk-AD2WPGDN.js} +8 -8
  36. package/dist/{chunk-Q62QJXGO.js → chunk-AGIXZFHQ.js} +1 -1
  37. package/dist/{chunk-NKOGWVP3.js → chunk-AUEKXYNE.js} +4 -4
  38. package/dist/{chunk-SKVAM5H2.js → chunk-B3W3E5CS.js} +1 -1
  39. package/dist/chunk-B5RR422E.js +0 -0
  40. package/dist/{chunk-IWI74DWW.js → chunk-BSAF4YJB.js} +51 -14
  41. package/dist/{chunk-CVYNMYIE.js → chunk-CWB2DQN5.js} +3 -3
  42. package/dist/{chunk-4ENK7S24.js → chunk-CXYMVLYK.js} +4 -0
  43. package/dist/{chunk-MNZB2OWP.js → chunk-CZ4N5FJW.js} +2 -2
  44. package/dist/{chunk-R37QM2U4.js → chunk-DF34ESOO.js} +1 -1
  45. package/dist/{chunk-GKNBECPD.js → chunk-DZKBUOYU.js} +2 -2
  46. package/dist/{chunk-CACVB5PH.js → chunk-FCPZF7KJ.js} +1 -1
  47. package/dist/{chunk-FC3UAHXM.js → chunk-FDLQ3IUB.js} +1 -1
  48. package/dist/{chunk-HVCY7DET.js → chunk-FHOJOLXU.js} +2 -2
  49. package/dist/{chunk-5AV732JY.js → chunk-GABMXDZZ.js} +2 -2
  50. package/dist/{chunk-LSMTQBMW.js → chunk-GBBQD6VY.js} +2 -2
  51. package/dist/{chunk-FDL2JHXO.js → chunk-GCT7A5KR.js} +2 -2
  52. package/dist/{chunk-QBZMVYDV.js → chunk-GFZ2WIVH.js} +4 -4
  53. package/dist/{chunk-ANTKOI3K.js → chunk-HHLVVJGT.js} +2 -2
  54. package/dist/{chunk-Z5XQQN7H.js → chunk-HWWFRSAX.js} +4 -4
  55. package/dist/{chunk-KWG7NGYF.js → chunk-I2RVN7CP.js} +4 -4
  56. package/dist/{chunk-JCIAIJFF.js → chunk-IC2ETYU5.js} +3 -3
  57. package/dist/{chunk-3FLQ7KZP.js → chunk-IMJTHYN3.js} +1 -1
  58. package/dist/{chunk-ISGA4AOC.js → chunk-J6ESQUW6.js} +2 -2
  59. package/dist/{chunk-Y3V4COP7.js → chunk-J7F2OFWQ.js} +5 -5
  60. package/dist/{chunk-3V4BPIBU.js → chunk-JDAOTVWV.js} +2 -2
  61. package/dist/{chunk-A4GJADRQ.js → chunk-JF777FWD.js} +2 -2
  62. package/dist/{chunk-IDQKHWWN.js → chunk-JFHYXFAL.js} +1 -1
  63. package/dist/{chunk-WLCI57J6.js → chunk-JIXRTWYL.js} +4 -4
  64. package/dist/{chunk-WG3N6VUA.js → chunk-JN3DHH7Z.js} +11 -11
  65. package/dist/{chunk-FQQ2R6FA.js → chunk-JNSJKHYX.js} +1 -1
  66. package/dist/{chunk-HPL2MQGY.js → chunk-K3LM6O44.js} +6 -6
  67. package/dist/{chunk-7DPZMROX.js → chunk-K5J4IN2S.js} +2 -2
  68. package/dist/{chunk-TJORQTH6.js → chunk-KGOOCFQY.js} +1 -1
  69. package/dist/{chunk-BYUIOMPX.js → chunk-KYKVHH7I.js} +23 -23
  70. package/dist/{chunk-ZM33GAEB.js → chunk-LKHJLSYG.js} +7 -7
  71. package/dist/{chunk-RKPT6O7I.js → chunk-LR6FK2J7.js} +5 -5
  72. package/dist/{chunk-MNW6D7T4.js → chunk-M72ERPMT.js} +1 -1
  73. package/dist/{chunk-IC5ZTBAW.js → chunk-MUARVVXF.js} +3 -3
  74. package/dist/{chunk-RRP4F6XC.js → chunk-NQ6BN7WH.js} +16 -6
  75. package/dist/{chunk-BRULBMRN.js → chunk-NSUVDKNC.js} +3 -3
  76. package/dist/chunk-OANORRFX.js +276 -0
  77. package/dist/{chunk-IS6CQPAQ.js → chunk-OEFJPZYH.js} +3 -3
  78. package/dist/{chunk-4BJTLMHV.js → chunk-OEYLPPID.js} +17 -17
  79. package/dist/{chunk-G6XFFNCQ.js → chunk-P7V3S2T3.js} +18 -18
  80. package/dist/{chunk-P56WU3UT.js → chunk-PDWLVL34.js} +8 -5
  81. package/dist/{chunk-I2WVMCYN.js → chunk-PWLWDWRL.js} +1 -1
  82. package/dist/{chunk-JTGISCYV.js → chunk-QCGIYXN4.js} +1 -1
  83. package/dist/{chunk-YS3W5AQA.js → chunk-REHIJQUD.js} +9 -9
  84. package/dist/{chunk-2K3UO6TC.js → chunk-RES4BCTF.js} +4 -4
  85. package/dist/{chunk-HDLPEXWS.js → chunk-S5CMAWEC.js} +20 -0
  86. package/dist/{chunk-CBPO2P4I.js → chunk-SAI6LBXW.js} +2 -2
  87. package/dist/{chunk-YMKQJY5F.js → chunk-SIO4LO2M.js} +1 -1
  88. package/dist/{chunk-QSRH4XUG.js → chunk-SUEPFZN2.js} +1 -1
  89. package/dist/{chunk-IITCQTBZ.js → chunk-T2PXAQND.js} +1 -1
  90. package/dist/{chunk-D3LKWVPA.js → chunk-TTDMQ54U.js} +2 -2
  91. package/dist/{chunk-GNXIA5WC.js → chunk-TVV7AE3G.js} +2 -2
  92. package/dist/{chunk-5BA36MSQ.js → chunk-UMXXZ6OX.js} +1 -1
  93. package/dist/{chunk-WHTGWLGJ.js → chunk-UTGP4X74.js} +1 -1
  94. package/dist/{chunk-XMZQW5G5.js → chunk-V5RHOS43.js} +8 -8
  95. package/dist/{chunk-Z2AVP3QL.js → chunk-VB6GGRIA.js} +16 -3
  96. package/dist/{chunk-TV6QMCDS.js → chunk-VQM2MCQR.js} +3 -3
  97. package/dist/{chunk-RSXTLOY3.js → chunk-VY5XWTW7.js} +1 -1
  98. package/dist/{chunk-VVCRJ46V.js → chunk-WEUPM3IN.js} +4 -4
  99. package/dist/{chunk-RZHIYTI3.js → chunk-WK33IBKY.js} +10 -1
  100. package/dist/{chunk-QQGXM2OQ.js → chunk-XLMNSDUJ.js} +1 -1
  101. package/dist/{chunk-MAN6OCOP.js → chunk-XXAO5YYL.js} +3 -3
  102. package/dist/{chunk-AZLZOG5N.js → chunk-XYNEAJDF.js} +1 -1
  103. package/dist/{chunk-GSDVHR43.js → chunk-YJCH35J4.js} +5 -3
  104. package/dist/{chunk-T77N7C3M.js → chunk-YKPRNV6J.js} +2 -2
  105. package/dist/chunk-YOZ6WDP3.js +103 -0
  106. package/dist/{chunk-F5SHFZUA.js → chunk-YTBVILAH.js} +1 -1
  107. package/dist/{chunk-IPTEXVQG.js → chunk-Z5IENUYV.js} +3 -3
  108. package/dist/{chunk-KD5Y4XSU.js → chunk-ZACPJA3G.js} +2 -2
  109. package/dist/{chunk-NOHH2ZH7.js → chunk-ZAUWB5DQ.js} +6 -6
  110. package/dist/{chunk-MQSTE4WH.js → chunk-ZBWKJ42J.js} +3 -3
  111. package/dist/{chunk-GBJ3OT4D.js → chunk-ZC7OR65K.js} +7 -5
  112. package/dist/{chunk-2REGK4VO.js → chunk-ZCCHLDLC.js} +11 -11
  113. package/dist/{chunk-7U62OZSD.js → chunk-ZDDMPGN4.js} +2 -2
  114. package/dist/chunk-ZHEE6UTX.js +108 -0
  115. package/dist/config/index.js +5 -5
  116. package/dist/containers/client.js +6 -6
  117. package/dist/containers/exec.js +6 -6
  118. package/dist/containers/lifecycle.js +41 -41
  119. package/dist/containers/setup.js +9 -9
  120. package/dist/db/agents.js +6 -6
  121. package/dist/db/api_keys.js +5 -5
  122. package/dist/db/audit.js +3 -3
  123. package/dist/db/batch.js +10 -10
  124. package/dist/db/client.js +2 -2
  125. package/dist/db/credentials.js +5 -3
  126. package/dist/db/drizzle.js +4 -4
  127. package/dist/db/environments.js +6 -6
  128. package/dist/db/events.js +5 -5
  129. package/dist/db/files.js +5 -5
  130. package/dist/db/memory.js +5 -5
  131. package/dist/db/migrations.js +1 -1
  132. package/dist/db/proxy.js +5 -5
  133. package/dist/db/schema.js +1 -1
  134. package/dist/db/session-resources.js +5 -5
  135. package/dist/db/sessions.js +8 -8
  136. package/dist/db/skills.js +5 -5
  137. package/dist/db/sync.js +5 -5
  138. package/dist/db/tenants.js +3 -3
  139. package/dist/db/threads.js +7 -7
  140. package/dist/db/traces.js +5 -5
  141. package/dist/db/upstream_keys.js +3 -3
  142. package/dist/db/user-profiles.js +17 -0
  143. package/dist/db/vaults.js +6 -6
  144. package/dist/db/work.js +5 -5
  145. package/dist/dreaming/review.js +11 -11
  146. package/dist/handlers/agents.js +58 -57
  147. package/dist/handlers/api_keys.js +59 -58
  148. package/dist/handlers/audit.js +59 -58
  149. package/dist/handlers/batch.js +59 -58
  150. package/dist/handlers/credentials.js +61 -58
  151. package/dist/handlers/enrollment.js +103 -0
  152. package/dist/handlers/environments.js +59 -58
  153. package/dist/handlers/events.js +62 -61
  154. package/dist/handlers/files.js +59 -58
  155. package/dist/handlers/google-compat/index.js +101 -0
  156. package/dist/handlers/google-compat/interactions.js +100 -0
  157. package/dist/handlers/google-compat/types.js +0 -0
  158. package/dist/handlers/index.js +150 -126
  159. package/dist/handlers/license.js +58 -57
  160. package/dist/handlers/memory.js +60 -59
  161. package/dist/handlers/metrics.js +58 -57
  162. package/dist/handlers/models.js +59 -58
  163. package/dist/handlers/openapi.js +3 -3
  164. package/dist/handlers/providers.js +58 -57
  165. package/dist/handlers/resources.js +58 -57
  166. package/dist/handlers/sessions.js +62 -61
  167. package/dist/handlers/settings.js +58 -57
  168. package/dist/handlers/skills-write.js +59 -58
  169. package/dist/handlers/skills.js +59 -58
  170. package/dist/handlers/stream.js +58 -57
  171. package/dist/handlers/tenants.js +59 -58
  172. package/dist/handlers/threads.js +59 -58
  173. package/dist/handlers/traces.js +59 -58
  174. package/dist/handlers/upstream_keys.js +61 -60
  175. package/dist/handlers/user-profiles.js +107 -0
  176. package/dist/handlers/vaults.js +58 -57
  177. package/dist/handlers/whoami.js +58 -57
  178. package/dist/handlers/work.js +59 -58
  179. package/dist/http.js +57 -56
  180. package/dist/index.js +68 -67
  181. package/dist/init.js +54 -53
  182. package/dist/lib/model-registry.js +6 -6
  183. package/dist/lib/skills-cache.js +6 -6
  184. package/dist/observability/otlp.js +12 -12
  185. package/dist/observability/redactor.js +8 -8
  186. package/dist/openapi/schemas.js +1 -1
  187. package/dist/openapi/spec.js +2 -2
  188. package/dist/providers/fly.js +5 -5
  189. package/dist/providers/modal.js +5 -5
  190. package/dist/providers/registry.js +6 -6
  191. package/dist/providers/resolve-secrets.js +7 -7
  192. package/dist/providers/sprites.js +7 -7
  193. package/dist/providers/upstream-keys.js +12 -12
  194. package/dist/providers/vercel.js +5 -5
  195. package/dist/proxy/forward.js +6 -6
  196. package/dist/queue/index.js +6 -6
  197. package/dist/sessions/bus.js +10 -10
  198. package/dist/sessions/driver.js +47 -46
  199. package/dist/sessions/grader.js +5 -5
  200. package/dist/sessions/secrets.js +9 -8
  201. package/dist/sessions/sweeper.js +42 -42
  202. package/dist/sessions/threads.js +55 -47
  203. package/dist/shutdown.js +43 -43
  204. package/dist/sync/anthropic.js +10 -10
  205. package/dist/sync/container-file-sync.js +6 -6
  206. package/dist/sync/file-sync.js +17 -17
  207. package/dist/workers/runner.js +49 -48
  208. package/package.json +1 -1
  209. package/dist/chunk-6KWJASEO.js +0 -21
@@ -2,10 +2,10 @@ import {
2
2
  reportUpstreamFailure,
3
3
  reportUpstreamSuccess,
4
4
  resolveAnthropicKey
5
- } from "./chunk-Z5XQQN7H.js";
5
+ } from "./chunk-HWWFRSAX.js";
6
6
  import {
7
7
  resolveRemoteSessionId
8
- } from "./chunk-MQSTE4WH.js";
8
+ } from "./chunk-ZBWKJ42J.js";
9
9
  import {
10
10
  assertResourceTenant
11
11
  } from "./chunk-23UKWXJH.js";
@@ -20,53 +20,53 @@ import {
20
20
  listMemoryStores,
21
21
  searchMemories,
22
22
  updateMemory
23
- } from "./chunk-GNXIA5WC.js";
23
+ } from "./chunk-TVV7AE3G.js";
24
24
  import {
25
25
  jsonOk,
26
26
  paginatedOk,
27
27
  routeWrap
28
- } from "./chunk-DI5WC2SQ.js";
28
+ } from "./chunk-4EKHW6VS.js";
29
29
  import {
30
30
  forwardToAnthropic
31
- } from "./chunk-IDQKHWWN.js";
32
- import {
33
- enqueueTurn
34
- } from "./chunk-SKVAM5H2.js";
31
+ } from "./chunk-JFHYXFAL.js";
35
32
  import {
36
33
  runTurn,
37
34
  writePermissionResponse
38
- } from "./chunk-BYUIOMPX.js";
35
+ } from "./chunk-KYKVHH7I.js";
36
+ import {
37
+ enqueueTurn
38
+ } from "./chunk-B3W3E5CS.js";
39
39
  import {
40
40
  getProxiedTenantId,
41
41
  isProxied
42
- } from "./chunk-GKNBECPD.js";
42
+ } from "./chunk-DZKBUOYU.js";
43
43
  import {
44
44
  getActor
45
45
  } from "./chunk-LAWTTG2E.js";
46
46
  import {
47
47
  appendEvent
48
- } from "./chunk-2K3UO6TC.js";
48
+ } from "./chunk-RES4BCTF.js";
49
49
  import {
50
50
  bumpSessionStats,
51
51
  getSession,
52
52
  getSessionRow,
53
53
  setOutcomeCriteria,
54
54
  updateSessionMutable
55
- } from "./chunk-GBJ3OT4D.js";
55
+ } from "./chunk-ZC7OR65K.js";
56
56
  import {
57
57
  listEvents,
58
58
  rowToManagedEvent
59
- } from "./chunk-IS6CQPAQ.js";
59
+ } from "./chunk-OEFJPZYH.js";
60
60
  import {
61
61
  getEnvironment,
62
62
  getEnvironmentRow
63
- } from "./chunk-BRULBMRN.js";
63
+ } from "./chunk-NSUVDKNC.js";
64
64
  import {
65
65
  getAgent
66
- } from "./chunk-ENFWZ2QM.js";
66
+ } from "./chunk-6U6HEVSN.js";
67
67
  import {
68
68
  getConfig
69
- } from "./chunk-US26CY2Y.js";
69
+ } from "./chunk-6EIONZ7F.js";
70
70
  import {
71
71
  init_clock,
72
72
  nowMs
@@ -74,7 +74,7 @@ import {
74
74
  import {
75
75
  getDb,
76
76
  init_client
77
- } from "./chunk-Q62QJXGO.js";
77
+ } from "./chunk-AGIXZFHQ.js";
78
78
  import {
79
79
  badRequest,
80
80
  notFound
@@ -1,60 +1,60 @@
1
- import {
2
- enqueueTurn
3
- } from "./chunk-SKVAM5H2.js";
4
1
  import {
5
2
  runTurn
6
- } from "./chunk-BYUIOMPX.js";
3
+ } from "./chunk-KYKVHH7I.js";
7
4
  import {
8
- installOtlpExporter
9
- } from "./chunk-PZKWZKRP.js";
5
+ enqueueTurn
6
+ } from "./chunk-B3W3E5CS.js";
10
7
  import {
11
8
  redactAppendInput
12
- } from "./chunk-ISGA4AOC.js";
9
+ } from "./chunk-J6ESQUW6.js";
10
+ import {
11
+ installOtlpExporter
12
+ } from "./chunk-2KF2TIEY.js";
13
13
  import {
14
14
  createApiKey,
15
15
  listApiKeys
16
- } from "./chunk-LJNLU5PQ.js";
16
+ } from "./chunk-3NUTTKE5.js";
17
17
  import {
18
18
  initSentry
19
19
  } from "./chunk-3MQ2FWXS.js";
20
20
  import {
21
21
  installShutdownHandlers
22
- } from "./chunk-KD5Y4XSU.js";
22
+ } from "./chunk-ZACPJA3G.js";
23
23
  import {
24
24
  runSweep
25
- } from "./chunk-HPL2MQGY.js";
25
+ } from "./chunk-K3LM6O44.js";
26
26
  import {
27
27
  fillWarmPools,
28
28
  reconcileDockerOrphanSandboxes,
29
29
  reconcileOrphanSandboxes
30
- } from "./chunk-2REGK4VO.js";
30
+ } from "./chunk-ZCCHLDLC.js";
31
31
  import {
32
32
  appendEvent,
33
33
  installPayloadRedactor
34
- } from "./chunk-2K3UO6TC.js";
34
+ } from "./chunk-RES4BCTF.js";
35
35
  import {
36
36
  setSessionSandbox
37
- } from "./chunk-GBJ3OT4D.js";
37
+ } from "./chunk-ZC7OR65K.js";
38
38
  import {
39
39
  readEnvValue,
40
40
  upsertEnvLine
41
41
  } from "./chunk-YPXI7Q2M.js";
42
42
  import {
43
43
  getLastUnprocessedUserMessage
44
- } from "./chunk-IS6CQPAQ.js";
44
+ } from "./chunk-OEFJPZYH.js";
45
45
  import {
46
46
  getBySession,
47
47
  register
48
48
  } from "./chunk-EFOIR7R3.js";
49
49
  import {
50
50
  tryResolveProvider
51
- } from "./chunk-QQGXM2OQ.js";
51
+ } from "./chunk-XLMNSDUJ.js";
52
52
  import {
53
53
  getEnvironment
54
- } from "./chunk-BRULBMRN.js";
54
+ } from "./chunk-NSUVDKNC.js";
55
55
  import {
56
56
  getConfig
57
- } from "./chunk-US26CY2Y.js";
57
+ } from "./chunk-6EIONZ7F.js";
58
58
  import {
59
59
  init_clock,
60
60
  nowMs
@@ -62,7 +62,7 @@ import {
62
62
  import {
63
63
  getDb,
64
64
  init_client
65
- } from "./chunk-Q62QJXGO.js";
65
+ } from "./chunk-AGIXZFHQ.js";
66
66
  import {
67
67
  getRuntime
68
68
  } from "./chunk-UYTSKFGK.js";
@@ -1,15 +1,18 @@
1
1
  // src/backends/opencode/args.ts
2
+ function normalizeOpencodeModel(model) {
3
+ if (model.includes("/")) return model;
4
+ if (model.startsWith("claude-")) return `anthropic/${model}`;
5
+ if (model.startsWith("gemini-")) return `google/${model}`;
6
+ if (model.startsWith("gpt-") || model.startsWith("o1-") || model.startsWith("o3-") || model.startsWith("o4-") || model.startsWith("chatgpt-")) return `openai/${model}`;
7
+ return `ollama/${model}`;
8
+ }
2
9
  function buildOpencodeArgs(input) {
3
10
  const args = ["run", "--format", "json", "--dangerously-skip-permissions"];
4
11
  if (input.backendSessionId) {
5
12
  args.push("--session", input.backendSessionId);
6
13
  }
7
14
  if (input.agent.model) {
8
- const modelId = input.agent.model.id;
9
- const cloudPrefixes = ["claude-", "gpt-", "o1-", "o3-", "o4-", "codex-", "chatgpt-", "gemini-"];
10
- const isOllama = !modelId.includes("/") && !cloudPrefixes.some((p) => modelId.startsWith(p));
11
- const modelArg = isOllama ? `ollama/${modelId}` : modelId;
12
- args.push("--model", modelArg);
15
+ args.push("--model", normalizeOpencodeModel(input.agent.model.id));
13
16
  }
14
17
  return args;
15
18
  }
@@ -84,7 +84,7 @@ import {
84
84
  VaultListResponseSchema,
85
85
  VaultSchema,
86
86
  WhoamiResponseSchema
87
- } from "./chunk-CBPO2P4I.js";
87
+ } from "./chunk-SAI6LBXW.js";
88
88
  import {
89
89
  registry
90
90
  } from "./chunk-7346CKTF.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-US26CY2Y.js";
3
+ } from "./chunk-6EIONZ7F.js";
4
4
 
5
5
  // src/backends/opencode/auth.ts
6
6
  function buildOpencodeAuthEnv() {
@@ -1,22 +1,22 @@
1
- import {
2
- buildOpencodeArgs
3
- } from "./chunk-P56WU3UT.js";
4
- import {
5
- buildOpencodeAuthEnv,
6
- validateOpencodeRuntime
7
- } from "./chunk-JTGISCYV.js";
8
1
  import {
9
2
  buildOpencodeConfigEnv
10
3
  } from "./chunk-V5DH3OAC.js";
11
4
  import {
12
5
  prepareOpencodeOnSandbox
13
6
  } from "./chunk-URNG7ZX2.js";
7
+ import {
8
+ createOpencodeTranslator
9
+ } from "./chunk-ETWGCBIQ.js";
14
10
  import {
15
11
  OPENCODE_WRAPPER_PATH
16
12
  } from "./chunk-UY3VT3HQ.js";
17
13
  import {
18
- createOpencodeTranslator
19
- } from "./chunk-ETWGCBIQ.js";
14
+ buildOpencodeArgs
15
+ } from "./chunk-PDWLVL34.js";
16
+ import {
17
+ buildOpencodeAuthEnv,
18
+ validateOpencodeRuntime
19
+ } from "./chunk-QCGIYXN4.js";
20
20
  import {
21
21
  wrapPromptWithSystem
22
22
  } from "./chunk-YE2RMJY7.js";
@@ -1,19 +1,19 @@
1
1
  import {
2
2
  getSession
3
- } from "./chunk-GBJ3OT4D.js";
3
+ } from "./chunk-ZC7OR65K.js";
4
4
  import {
5
5
  appendEvent,
6
6
  appendEventsBatch,
7
7
  listEvents,
8
8
  rowToManagedEvent
9
- } from "./chunk-IS6CQPAQ.js";
9
+ } from "./chunk-OEFJPZYH.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-ENFWZ2QM.js";
12
+ } from "./chunk-6U6HEVSN.js";
13
13
  import {
14
14
  getDb,
15
15
  init_client
16
- } from "./chunk-Q62QJXGO.js";
16
+ } from "./chunk-AGIXZFHQ.js";
17
17
 
18
18
  // src/sessions/bus.ts
19
19
  import { EventEmitter } from "events";
@@ -636,6 +636,26 @@ function runMigrations(db) {
636
636
  db.exec(`CREATE INDEX IF NOT EXISTS idx_vaults_tenant ON vaults(tenant_id)`);
637
637
  }
638
638
  }
639
+ db.exec(`
640
+ CREATE TABLE IF NOT EXISTS user_profiles (
641
+ id TEXT PRIMARY KEY,
642
+ external_id TEXT,
643
+ display_name TEXT,
644
+ trust_grants_json TEXT NOT NULL DEFAULT '[]',
645
+ tenant_id TEXT,
646
+ created_at INTEGER NOT NULL,
647
+ updated_at INTEGER NOT NULL,
648
+ UNIQUE(tenant_id, external_id)
649
+ )
650
+ `);
651
+ try {
652
+ db.exec(`ALTER TABLE sessions ADD COLUMN user_profile_id TEXT`);
653
+ } catch {
654
+ }
655
+ try {
656
+ db.exec(`ALTER TABLE agent_versions ADD COLUMN permission_policy_json TEXT`);
657
+ } catch {
658
+ }
639
659
  }
640
660
  var init_migrations = __esm({
641
661
  "src/db/migrations.ts"() {
@@ -139,7 +139,7 @@ var CreateAgentRequestSchema = registry.register(
139
139
  "CreateAgentRequest",
140
140
  z.object({
141
141
  name: z.string().min(1).openapi({ example: "my-agent" }),
142
- model: z.object({ id: z.string().min(1), speed: z.enum(["standard", "fast"]).optional() }).openapi({ description: "Model configuration. `id` is the canonical model identifier.", example: { id: "claude-sonnet-4-6" } }),
142
+ model: z.object({ id: z.string().min(1), speed: z.enum(["standard", "fast"]).optional() }).openapi({ description: "Model configuration. `id` is the bare model identifier (e.g. `gemini-2.5-flash`, `claude-sonnet-4-6`, `gpt-5.4`). Do not include provider prefixes.", example: { id: "claude-sonnet-4-6" } }),
143
143
  description: z.string().max(2048).optional().openapi({
144
144
  description: "Human-readable description of the agent."
145
145
  }),
@@ -156,7 +156,7 @@ var CreateAgentRequestSchema = registry.register(
156
156
  description: "MCP servers as an array of objects with name, type, and optional url."
157
157
  }),
158
158
  engine: z.enum(["claude", "opencode", "codex", "anthropic", "gemini", "factory", "pi"]).optional().openapi({
159
- description: "Agent harness. Defaults to `claude`. Opencode agents must set `model` to a `provider/model` string (e.g. `anthropic/claude-sonnet-4-6`) and must NOT declare `tools` \u2014 opencode manages its tool surface internally. Gemini agents require GEMINI_API_KEY. Factory agents require FACTORY_API_KEY. Pi agents (pi.dev) require at least one of ANTHROPIC_API_KEY, OPENAI_API_KEY, or GEMINI_API_KEY.",
159
+ description: "Agent harness. Auto-inferred from model prefix if omitted: `gemini-*` \u2192 gemini, `gpt-*`/`o1-*` \u2192 codex, `claude-*` \u2192 claude. Always use bare model IDs (`gemini-2.5-flash`, not `google/gemini-2.5-flash`) \u2014 provider prefixes are added internally where needed. Non-claude engines must NOT declare `tools` (they manage tool permissions internally). Required vault keys: claude \u2192 ANTHROPIC_API_KEY, gemini \u2192 GEMINI_API_KEY, codex \u2192 OPENAI_API_KEY, pi \u2192 any of the three.",
160
160
  example: "claude"
161
161
  }),
162
162
  webhook_url: z.string().url().optional().openapi({
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-US26CY2Y.js";
3
+ } from "./chunk-6EIONZ7F.js";
4
4
 
5
5
  // src/backends/codex/auth.ts
6
6
  function buildCodexAuthEnv() {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  jsonOk,
3
3
  routeWrap
4
- } from "./chunk-DI5WC2SQ.js";
4
+ } from "./chunk-4EKHW6VS.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-US26CY2Y.js";
3
+ } from "./chunk-6EIONZ7F.js";
4
4
 
5
5
  // src/backends/pi/auth.ts
6
6
  function buildPiAuthEnv() {
@@ -10,10 +10,10 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-7U62OZSD.js";
13
+ } from "./chunk-ZDDMPGN4.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-4ENK7S24.js";
16
+ } from "./chunk-CXYMVLYK.js";
17
17
 
18
18
  // src/db/skills.ts
19
19
  init_drizzle();
@@ -10,10 +10,10 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-7U62OZSD.js";
13
+ } from "./chunk-ZDDMPGN4.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-4ENK7S24.js";
16
+ } from "./chunk-CXYMVLYK.js";
17
17
 
18
18
  // src/db/memory.ts
19
19
  init_drizzle();
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getDrizzle,
3
3
  init_drizzle
4
- } from "./chunk-7U62OZSD.js";
4
+ } from "./chunk-ZDDMPGN4.js";
5
5
 
6
6
  // src/db/traces.ts
7
7
  init_drizzle();
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  getConfig,
6
6
  readSetting
7
- } from "./chunk-US26CY2Y.js";
7
+ } from "./chunk-6EIONZ7F.js";
8
8
  import {
9
9
  __commonJS
10
10
  } from "./chunk-2ESYSVXG.js";
@@ -1,21 +1,21 @@
1
1
  import {
2
2
  piBackend
3
- } from "./chunk-Y3V4COP7.js";
3
+ } from "./chunk-J7F2OFWQ.js";
4
+ import {
5
+ geminiBackend
6
+ } from "./chunk-A3FQHVUG.js";
4
7
  import {
5
8
  opencodeBackend
6
- } from "./chunk-YS3W5AQA.js";
9
+ } from "./chunk-REHIJQUD.js";
7
10
  import {
8
11
  factoryBackend
9
- } from "./chunk-MZ6HBYGV.js";
10
- import {
11
- geminiBackend
12
- } from "./chunk-UB7GS7XT.js";
12
+ } from "./chunk-65XY7HRS.js";
13
13
  import {
14
14
  codexBackend
15
- } from "./chunk-VVCRJ46V.js";
15
+ } from "./chunk-WEUPM3IN.js";
16
16
  import {
17
17
  claudeBackend
18
- } from "./chunk-WG3N6VUA.js";
18
+ } from "./chunk-JN3DHH7Z.js";
19
19
 
20
20
  // src/backends/registry.ts
21
21
  var BACKENDS = {
@@ -1,18 +1,31 @@
1
+ import {
2
+ getUserProfile
3
+ } from "./chunk-YOZ6WDP3.js";
1
4
  import {
2
5
  listCredentialsWithTokens
3
- } from "./chunk-RZHIYTI3.js";
6
+ } from "./chunk-WK33IBKY.js";
4
7
  import {
5
8
  listEntries
6
- } from "./chunk-IC5ZTBAW.js";
9
+ } from "./chunk-MUARVVXF.js";
7
10
 
8
11
  // src/sessions/secrets.ts
9
- function loadSessionSecrets(vaultIds) {
12
+ function loadSessionSecrets(vaultIds, userProfileId) {
13
+ let credentialAllowlist = null;
14
+ if (userProfileId) {
15
+ const profile = getUserProfile(userProfileId);
16
+ if (profile && profile.trust_grants.length > 0) {
17
+ credentialAllowlist = new Set(
18
+ profile.trust_grants.map((g) => `${g.vault_id}:${g.credential_id}`)
19
+ );
20
+ }
21
+ }
10
22
  const secrets = [];
11
23
  for (const vid of vaultIds) {
12
24
  for (const entry of listEntries(vid)) {
13
25
  secrets.push({ key: entry.key, value: entry.value });
14
26
  }
15
27
  for (const cred of listCredentialsWithTokens(vid)) {
28
+ if (credentialAllowlist && !credentialAllowlist.has(`${vid}:${cred.id}`)) continue;
16
29
  if (cred.auth.mcp_server_url) {
17
30
  const serverName = deriveServerName(cred.auth.mcp_server_url);
18
31
  if (serverName) {
@@ -11,18 +11,18 @@ import {
11
11
  getFileRecord,
12
12
  listFiles,
13
13
  updateFileStoragePath
14
- } from "./chunk-T77N7C3M.js";
14
+ } from "./chunk-YKPRNV6J.js";
15
15
  import {
16
16
  assertResourceTenant
17
17
  } from "./chunk-23UKWXJH.js";
18
18
  import {
19
19
  jsonOk,
20
20
  routeWrap
21
- } from "./chunk-DI5WC2SQ.js";
21
+ } from "./chunk-4EKHW6VS.js";
22
22
  import {
23
23
  getDb,
24
24
  init_client
25
- } from "./chunk-Q62QJXGO.js";
25
+ } from "./chunk-AGIXZFHQ.js";
26
26
  import {
27
27
  badRequest,
28
28
  notFound
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-US26CY2Y.js";
3
+ } from "./chunk-6EIONZ7F.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -4,16 +4,16 @@ import {
4
4
  import {
5
5
  buildCodexAuthEnv,
6
6
  validateCodexRuntime
7
- } from "./chunk-YMKQJY5F.js";
7
+ } from "./chunk-SIO4LO2M.js";
8
8
  import {
9
9
  prepareCodexOnSandbox
10
10
  } from "./chunk-NMZMRH3E.js";
11
- import {
12
- createCodexTranslator
13
- } from "./chunk-CULYZ3VA.js";
14
11
  import {
15
12
  CODEX_WRAPPER_PATH
16
13
  } from "./chunk-XJYR5HE3.js";
14
+ import {
15
+ createCodexTranslator
16
+ } from "./chunk-CULYZ3VA.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
19
  } from "./chunk-YE2RMJY7.js";
@@ -14,7 +14,7 @@ import {
14
14
  import {
15
15
  getDb,
16
16
  init_client
17
- } from "./chunk-Q62QJXGO.js";
17
+ } from "./chunk-AGIXZFHQ.js";
18
18
 
19
19
  // src/db/credentials.ts
20
20
  init_client();
@@ -130,6 +130,14 @@ function archiveCredential(vaultId, credentialId) {
130
130
  db.prepare(`UPDATE vault_credentials SET archived_at = ?, updated_at = ? WHERE id = ?`).run(now, now, credentialId);
131
131
  return getCredential(credentialId);
132
132
  }
133
+ function getRefreshConfig(id) {
134
+ const db = getDb();
135
+ const row = db.prepare(
136
+ `SELECT refresh_config_encrypted, auth_type FROM vault_credentials WHERE id = ?`
137
+ ).get(id);
138
+ if (!row || row.auth_type !== "mcp_oauth" || !row.refresh_config_encrypted) return null;
139
+ return JSON.parse(decryptValue(row.refresh_config_encrypted));
140
+ }
133
141
  function deleteCredential(id) {
134
142
  const db = getDb();
135
143
  const res = db.prepare(`DELETE FROM vault_credentials WHERE id = ?`).run(id);
@@ -144,5 +152,6 @@ export {
144
152
  listCredentialsWithTokens,
145
153
  updateCredential,
146
154
  archiveCredential,
155
+ getRefreshConfig,
147
156
  deleteCredential
148
157
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-US26CY2Y.js";
3
+ } from "./chunk-6EIONZ7F.js";
4
4
 
5
5
  // src/providers/registry.ts
6
6
  var PROVIDERS = {
@@ -3,21 +3,21 @@ import {
3
3
  } from "./chunk-23UKWXJH.js";
4
4
  import {
5
5
  recordAudit
6
- } from "./chunk-FC3UAHXM.js";
6
+ } from "./chunk-FDLQ3IUB.js";
7
7
  import {
8
8
  requireFeature
9
9
  } from "./chunk-2N2KL4KM.js";
10
10
  import {
11
11
  jsonOk,
12
12
  routeWrap
13
- } from "./chunk-DI5WC2SQ.js";
13
+ } from "./chunk-4EKHW6VS.js";
14
14
  import {
15
15
  archiveTenant,
16
16
  createTenant,
17
17
  getTenant,
18
18
  listTenants,
19
19
  renameTenant
20
- } from "./chunk-F5SHFZUA.js";
20
+ } from "./chunk-YTBVILAH.js";
21
21
  import {
22
22
  badRequest,
23
23
  notFound
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  getConfig
3
- } from "./chunk-US26CY2Y.js";
3
+ } from "./chunk-6EIONZ7F.js";
4
4
  import {
5
5
  ApiError
6
6
  } from "./chunk-EZYKRG4W.js";
@@ -6,12 +6,13 @@ import {
6
6
  } from "./chunk-FX2AEKOV.js";
7
7
  import {
8
8
  getConfig
9
- } from "./chunk-US26CY2Y.js";
9
+ } from "./chunk-6EIONZ7F.js";
10
10
 
11
11
  // src/backends/claude/args.ts
12
12
  function buildClaudeArgs(input) {
13
13
  const cfg = getConfig();
14
- const permissionMode = input.confirmationMode ? "default" : "bypassPermissions";
14
+ const policy = input.agent.permission_policy;
15
+ const permissionMode = input.confirmationMode ? "default" : policy ? "default" : "bypassPermissions";
15
16
  const argv = [
16
17
  "-p",
17
18
  "--output-format",
@@ -42,7 +43,8 @@ Your custom tools are: ${toolList}. Call them by these exact names \u2014 do not
42
43
  const mcpToolNames = Array.from(tools.customToolNames).map(
43
44
  (name) => `mcp__tool-bridge__${name}`
44
45
  );
45
- const allAllowed = [...tools.allowedTools, ...mcpToolNames];
46
+ const policyAllowed = policy?.always_allow ?? [];
47
+ const allAllowed = [...tools.allowedTools, ...mcpToolNames, ...policyAllowed];
46
48
  if (allAllowed.length) {
47
49
  argv.push("--allowed-tools", allAllowed.join(","));
48
50
  }
@@ -10,10 +10,10 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-7U62OZSD.js";
13
+ } from "./chunk-ZDDMPGN4.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-4ENK7S24.js";
16
+ } from "./chunk-CXYMVLYK.js";
17
17
 
18
18
  // src/db/files.ts
19
19
  init_drizzle();