@agentstep/agent-sdk 0.5.0 → 0.5.2

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 (188) hide show
  1. package/dist/auth/middleware.js +8 -8
  2. package/dist/backends/claude/args.js +7 -7
  3. package/dist/backends/claude/index.js +12 -12
  4. package/dist/backends/claude/wrapper-script.js +1 -1
  5. package/dist/backends/codex/auth.js +6 -6
  6. package/dist/backends/codex/index.js +11 -11
  7. package/dist/backends/factory/auth.js +6 -6
  8. package/dist/backends/factory/index.js +13 -13
  9. package/dist/backends/gemini/auth.js +6 -6
  10. package/dist/backends/gemini/index.js +11 -11
  11. package/dist/backends/opencode/auth.js +6 -6
  12. package/dist/backends/opencode/index.js +15 -15
  13. package/dist/backends/pi/auth.js +6 -6
  14. package/dist/backends/pi/index.js +13 -13
  15. package/dist/backends/registry.js +31 -31
  16. package/dist/backends/shared/wrap-prompt.js +1 -1
  17. package/dist/chunk-3LUY2POB.js +50 -0
  18. package/dist/{chunk-3PA4NXRP.js → chunk-3VPTHB7I.js} +2 -2
  19. package/dist/{chunk-YMCS6AB7.js → chunk-4236UQNZ.js} +2 -2
  20. package/dist/{chunk-HMOSAXVZ.js → chunk-4A4F4L4H.js} +2 -2
  21. package/dist/{chunk-JFOHGHW5.js → chunk-4B5H2MFO.js} +59 -16
  22. package/dist/{chunk-OZFSKR2W.js → chunk-5525T7PL.js} +4 -4
  23. package/dist/{chunk-AXBM7HAR.js → chunk-5EFY6UGV.js} +1 -1
  24. package/dist/chunk-5UTTNXNJ.js +166 -0
  25. package/dist/{chunk-4RDILRIO.js → chunk-5YGYUGDQ.js} +3 -3
  26. package/dist/{chunk-HWR2HYQJ.js → chunk-6DPJVMEC.js} +1 -1
  27. package/dist/{chunk-PNZF7HIU.js → chunk-6KJS42ZL.js} +8 -7
  28. package/dist/{chunk-LQP6XGFU.js → chunk-6KQFP32G.js} +3 -3
  29. package/dist/{chunk-DMMNAQUM.js → chunk-6L4AGHAV.js} +2 -2
  30. package/dist/{chunk-WEC625LQ.js → chunk-6TJBZXD4.js} +1 -1
  31. package/dist/{chunk-QTXAWC5J.js → chunk-6URMGCAC.js} +2 -2
  32. package/dist/{chunk-DJZSPWG2.js → chunk-6WUYI3DJ.js} +4 -4
  33. package/dist/{chunk-H6OT5GUL.js → chunk-7APAOJIZ.js} +3 -3
  34. package/dist/{chunk-HVLYE4S5.js → chunk-7EDLLXFQ.js} +1 -1
  35. package/dist/chunk-7IYL2O7H.js +185 -0
  36. package/dist/{chunk-KGBKIJPF.js → chunk-7JAUY5SG.js} +3 -3
  37. package/dist/{chunk-NDTIDWBE.js → chunk-7XIAKW75.js} +1 -1
  38. package/dist/{chunk-TUEBRYPZ.js → chunk-A2W3USEZ.js} +1 -1
  39. package/dist/chunk-ACPP4KN7.js +164 -0
  40. package/dist/{chunk-22OUZJAV.js → chunk-AESA3ARX.js} +3 -3
  41. package/dist/{chunk-Z4LFLXRR.js → chunk-AIAF5ZZA.js} +1 -1
  42. package/dist/{chunk-GIMDS46L.js → chunk-ANS2TQYT.js} +3 -3
  43. package/dist/{chunk-T3FQPTOA.js → chunk-BCBDHUFY.js} +2 -2
  44. package/dist/{chunk-MCWCRZM4.js → chunk-BLTCDZ3O.js} +4 -4
  45. package/dist/{chunk-VP527YC5.js → chunk-BYIU4WAQ.js} +3 -3
  46. package/dist/{chunk-L26TVIB6.js → chunk-C52BVTYC.js} +8 -8
  47. package/dist/{chunk-EWIWVXXP.js → chunk-CA76BJWL.js} +44 -14
  48. package/dist/{chunk-DKLHYSPW.js → chunk-DZGFZMUE.js} +5 -5
  49. package/dist/{chunk-R3QHLKJG.js → chunk-E35XHOFL.js} +5 -5
  50. package/dist/{chunk-PZNAQBHQ.js → chunk-FILGQF2G.js} +2 -2
  51. package/dist/{chunk-JP7Y3TKK.js → chunk-FSVDF57K.js} +5 -5
  52. package/dist/{chunk-S7DFMJR5.js → chunk-FWJOTEVY.js} +3 -3
  53. package/dist/{chunk-XSNJ7NT2.js → chunk-G4DTLYOD.js} +1 -1
  54. package/dist/{chunk-IEZFRNLC.js → chunk-GBLR2CPP.js} +107 -9
  55. package/dist/{chunk-7SY65LWY.js → chunk-GEC3NFYO.js} +4 -4
  56. package/dist/{chunk-GLKWJESP.js → chunk-GZZHVIEG.js} +2 -2
  57. package/dist/{chunk-NHAYKVXG.js → chunk-IAKR572X.js} +8 -8
  58. package/dist/{chunk-GFSRNOPI.js → chunk-IBUFLAAJ.js} +7 -7
  59. package/dist/{chunk-OKT2J4ZB.js → chunk-IZ5TUMCF.js} +23 -7
  60. package/dist/{chunk-W3JMIUHV.js → chunk-KQTTKYZY.js} +1 -1
  61. package/dist/{chunk-AJL3T5JS.js → chunk-L2DCOJTQ.js} +3 -3
  62. package/dist/{chunk-JLUCJMAQ.js → chunk-LA6IFUVR.js} +70 -24
  63. package/dist/{chunk-AB7MPL3H.js → chunk-LW4OCFIP.js} +9 -7
  64. package/dist/{chunk-BCIFFAGW.js → chunk-M3752GFZ.js} +15 -5
  65. package/dist/{chunk-5U5LRAFJ.js → chunk-MTLM36QD.js} +2 -2
  66. package/dist/{chunk-A6VORSKD.js → chunk-MV42BTU3.js} +1 -1
  67. package/dist/{chunk-5MERXOLJ.js → chunk-NRX5WHHN.js} +4 -4
  68. package/dist/{chunk-T3HMVHDG.js → chunk-O2X4XBU7.js} +1 -1
  69. package/dist/{chunk-2YZOIFVN.js → chunk-P4NU74SP.js} +47 -0
  70. package/dist/{chunk-TVODT2UR.js → chunk-P4OCCRQW.js} +1 -1
  71. package/dist/{chunk-YXOCKQZU.js → chunk-P4VJADXA.js} +2 -2
  72. package/dist/{chunk-6QZ23WRF.js → chunk-P6LESAPO.js} +54 -20
  73. package/dist/{chunk-HY3T4YJV.js → chunk-PICGSLMG.js} +5 -5
  74. package/dist/{chunk-64IQEPSD.js → chunk-PQKIXSEP.js} +2 -2
  75. package/dist/{chunk-GV6GUSCP.js → chunk-Q2JYAAJO.js} +9 -9
  76. package/dist/{chunk-IU457W7Q.js → chunk-QBJOYOVF.js} +2 -1
  77. package/dist/{chunk-MAJWADF7.js → chunk-RZOCX57A.js} +2 -2
  78. package/dist/{chunk-4D345E27.js → chunk-SQZPJFBF.js} +2 -2
  79. package/dist/{chunk-OSNMIPHV.js → chunk-TE6KCRPP.js} +1 -1
  80. package/dist/{chunk-Z6VZYRVN.js → chunk-TF36SWHG.js} +2 -2
  81. package/dist/{chunk-KUWJJD6O.js → chunk-TSR33JMZ.js} +14 -5
  82. package/dist/{chunk-L3IACZ72.js → chunk-TWH4UH6G.js} +1 -1
  83. package/dist/{chunk-445EL6J5.js → chunk-UAEVL47I.js} +1 -1
  84. package/dist/{chunk-X6QIWZ33.js → chunk-UGH5JDXX.js} +3 -3
  85. package/dist/{chunk-FSQ4HGHX.js → chunk-UJW3I3TX.js} +3 -3
  86. package/dist/{chunk-I26QP3A3.js → chunk-UQZFFG7U.js} +1 -1
  87. package/dist/{chunk-ILHIHMO3.js → chunk-VC5DELR4.js} +37 -2
  88. package/dist/{chunk-NKQVOAWN.js → chunk-VMLXV2H6.js} +1 -1
  89. package/dist/{chunk-FCUXFLNK.js → chunk-VY6IWBSK.js} +17 -4
  90. package/dist/{chunk-6CVQDSTS.js → chunk-WDAFSCYQ.js} +1 -1
  91. package/dist/{chunk-GCQDNUS2.js → chunk-WFRHLTKI.js} +3 -3
  92. package/dist/{chunk-R6EEBWM3.js → chunk-WRLCJNQF.js} +1 -1
  93. package/dist/{chunk-KKAJC3Z2.js → chunk-X4ARJS6I.js} +10 -10
  94. package/dist/{chunk-MQBMXAPU.js → chunk-Y4MI27HU.js} +1 -1
  95. package/dist/{chunk-PN3AWRMX.js → chunk-YDP3YA5D.js} +17 -17
  96. package/dist/{chunk-FVBDEOTZ.js → chunk-YE2RMJY7.js} +18 -4
  97. package/dist/{chunk-IRW7AYTP.js → chunk-YEWYRPN4.js} +42 -4
  98. package/dist/{chunk-24IDJ7LY.js → chunk-YL6IQUJC.js} +4 -4
  99. package/dist/{chunk-CLSGNQ7J.js → chunk-Z46R47QX.js} +8 -8
  100. package/dist/{chunk-STJNO6SL.js → chunk-Z6OPLBPQ.js} +1 -1
  101. package/dist/{chunk-RYJXSXCV.js → chunk-ZEJOFHR7.js} +5 -5
  102. package/dist/{chunk-EOJ66GY7.js → chunk-ZFGG62JW.js} +4 -4
  103. package/dist/config/index.js +5 -5
  104. package/dist/containers/client.js +6 -6
  105. package/dist/containers/exec.js +6 -6
  106. package/dist/containers/lifecycle.js +45 -43
  107. package/dist/containers/setup.js +9 -9
  108. package/dist/db/agents.js +6 -6
  109. package/dist/db/api_keys.js +5 -5
  110. package/dist/db/audit.js +3 -3
  111. package/dist/db/batch.js +10 -10
  112. package/dist/db/client.js +2 -2
  113. package/dist/db/credentials.js +3 -3
  114. package/dist/db/drizzle.js +4 -4
  115. package/dist/db/environments.js +6 -6
  116. package/dist/db/events.js +5 -5
  117. package/dist/db/files.js +5 -5
  118. package/dist/db/memory.js +13 -5
  119. package/dist/db/migrations.js +1 -1
  120. package/dist/db/proxy.js +5 -5
  121. package/dist/db/schema.js +5 -1
  122. package/dist/db/session-resources.js +5 -5
  123. package/dist/db/sessions.js +8 -8
  124. package/dist/db/sync.js +5 -5
  125. package/dist/db/tenants.js +3 -3
  126. package/dist/db/threads.js +27 -0
  127. package/dist/db/traces.js +5 -5
  128. package/dist/db/upstream_keys.js +3 -3
  129. package/dist/db/vaults.js +6 -6
  130. package/dist/dreaming/prompts.js +9 -0
  131. package/dist/dreaming/review.js +22 -0
  132. package/dist/handlers/agents.js +59 -59
  133. package/dist/handlers/api_keys.js +60 -60
  134. package/dist/handlers/audit.js +60 -60
  135. package/dist/handlers/batch.js +60 -60
  136. package/dist/handlers/credentials.js +60 -60
  137. package/dist/handlers/environments.js +60 -60
  138. package/dist/handlers/events.js +63 -63
  139. package/dist/handlers/files.js +60 -60
  140. package/dist/handlers/index.js +159 -144
  141. package/dist/handlers/license.js +59 -59
  142. package/dist/handlers/memory.js +66 -60
  143. package/dist/handlers/metrics.js +59 -59
  144. package/dist/handlers/models.js +60 -60
  145. package/dist/handlers/providers.js +59 -59
  146. package/dist/handlers/resources.js +59 -59
  147. package/dist/handlers/sessions.js +63 -62
  148. package/dist/handlers/settings.js +59 -59
  149. package/dist/handlers/skills-write.js +59 -59
  150. package/dist/handlers/skills.js +60 -60
  151. package/dist/handlers/stream.js +59 -59
  152. package/dist/handlers/tenants.js +60 -60
  153. package/dist/handlers/threads.js +70 -61
  154. package/dist/handlers/traces.js +60 -60
  155. package/dist/handlers/upstream_keys.js +62 -62
  156. package/dist/handlers/vaults.js +59 -59
  157. package/dist/handlers/whoami.js +59 -59
  158. package/dist/http.js +58 -58
  159. package/dist/index.js +72 -67
  160. package/dist/init.js +55 -55
  161. package/dist/lib/model-registry.js +6 -6
  162. package/dist/lib/skills-cache.js +6 -6
  163. package/dist/observability/otlp.js +12 -12
  164. package/dist/observability/redactor.js +8 -8
  165. package/dist/providers/fly.js +5 -5
  166. package/dist/providers/modal.js +5 -5
  167. package/dist/providers/registry.js +1 -1
  168. package/dist/providers/resolve-secrets.js +7 -7
  169. package/dist/providers/sprites.js +7 -7
  170. package/dist/providers/upstream-keys.js +12 -12
  171. package/dist/providers/vercel.js +6 -6
  172. package/dist/proxy/forward.js +6 -6
  173. package/dist/queue/index.js +6 -6
  174. package/dist/sessions/bus.js +10 -10
  175. package/dist/sessions/driver.js +48 -48
  176. package/dist/sessions/grader.js +5 -5
  177. package/dist/sessions/secrets.js +8 -8
  178. package/dist/sessions/sweeper.js +44 -44
  179. package/dist/sessions/threads.js +121 -55
  180. package/dist/shutdown.js +45 -45
  181. package/dist/sync/anthropic.js +10 -10
  182. package/dist/sync/container-file-sync.js +6 -6
  183. package/dist/sync/file-sync.js +17 -17
  184. package/dist/sync/memory-sync.js +79 -0
  185. package/package.json +1 -1
  186. package/dist/chunk-XTKTIFHC.js +0 -48
  187. package/dist/{chunk-UE6DNLSV.js → chunk-LT5PRO54.js} +0 -0
  188. package/dist/{dist-EY25RQ2S.js → dist-S64ZABZX.js} +3 -3
@@ -1,22 +1,22 @@
1
- import {
2
- createGeminiTranslator
3
- } from "./chunk-S3JRZFF5.js";
4
1
  import {
5
2
  buildGeminiArgs
6
3
  } from "./chunk-IBYOMAZ3.js";
7
4
  import {
8
5
  buildGeminiAuthEnv,
9
6
  validateGeminiRuntime
10
- } from "./chunk-STJNO6SL.js";
7
+ } from "./chunk-Z6OPLBPQ.js";
11
8
  import {
12
9
  prepareGeminiOnSandbox
13
10
  } from "./chunk-XG4UIGDH.js";
11
+ import {
12
+ createGeminiTranslator
13
+ } from "./chunk-S3JRZFF5.js";
14
14
  import {
15
15
  GEMINI_WRAPPER_PATH
16
16
  } from "./chunk-3W6KEDQE.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
- } from "./chunk-FVBDEOTZ.js";
19
+ } from "./chunk-YE2RMJY7.js";
20
20
  import {
21
21
  ApiError
22
22
  } from "./chunk-EZYKRG4W.js";
@@ -1,22 +1,22 @@
1
+ import {
2
+ createCodexTranslator
3
+ } from "./chunk-CULYZ3VA.js";
1
4
  import {
2
5
  buildCodexArgs
3
6
  } from "./chunk-PJYCPDV5.js";
4
7
  import {
5
8
  buildCodexAuthEnv,
6
9
  validateCodexRuntime
7
- } from "./chunk-WEC625LQ.js";
10
+ } from "./chunk-6TJBZXD4.js";
8
11
  import {
9
12
  prepareCodexOnSandbox
10
13
  } from "./chunk-M2LUXIXU.js";
11
- import {
12
- createCodexTranslator
13
- } from "./chunk-CULYZ3VA.js";
14
14
  import {
15
15
  CODEX_WRAPPER_PATH
16
16
  } from "./chunk-E4FQRMHV.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
- } from "./chunk-FVBDEOTZ.js";
19
+ } from "./chunk-YE2RMJY7.js";
20
20
  import {
21
21
  ApiError
22
22
  } from "./chunk-EZYKRG4W.js";
@@ -1,11 +1,11 @@
1
1
  import {
2
2
  init_schema,
3
3
  schema_exports
4
- } from "./chunk-ILHIHMO3.js";
4
+ } from "./chunk-VC5DELR4.js";
5
5
  import {
6
6
  getDb,
7
7
  init_client
8
- } from "./chunk-W3JMIUHV.js";
8
+ } from "./chunk-KQTTKYZY.js";
9
9
  import {
10
10
  __esm
11
11
  } from "./chunk-2ESYSVXG.js";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  onAfterCommit
3
- } from "./chunk-5MERXOLJ.js";
3
+ } from "./chunk-NRX5WHHN.js";
4
4
  import {
5
5
  getSessionRow
6
- } from "./chunk-KUWJJD6O.js";
6
+ } from "./chunk-TSR33JMZ.js";
7
7
  import {
8
8
  listEventsByTrace
9
- } from "./chunk-KGBKIJPF.js";
9
+ } from "./chunk-7JAUY5SG.js";
10
10
  import {
11
11
  getAgent
12
- } from "./chunk-BCIFFAGW.js";
12
+ } from "./chunk-M3752GFZ.js";
13
13
  import {
14
14
  getConfig
15
- } from "./chunk-X6QIWZ33.js";
15
+ } from "./chunk-UGH5JDXX.js";
16
16
 
17
17
  // src/observability/otlp.ts
18
18
  import { createHash } from "crypto";
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  loadVaultForCaller
3
- } from "./chunk-OZFSKR2W.js";
3
+ } from "./chunk-5525T7PL.js";
4
4
  import {
5
5
  jsonOk,
6
6
  paginatedOk,
7
7
  routeWrap
8
- } from "./chunk-QTXAWC5J.js";
8
+ } from "./chunk-6URMGCAC.js";
9
9
  import {
10
10
  createCredential,
11
11
  deleteCredential,
12
12
  getCredential,
13
13
  listCredentials,
14
14
  updateCredential
15
- } from "./chunk-HVLYE4S5.js";
15
+ } from "./chunk-7EDLLXFQ.js";
16
16
  import {
17
17
  badRequest,
18
18
  conflict,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getDrizzle,
3
3
  init_drizzle
4
- } from "./chunk-PZNAQBHQ.js";
4
+ } from "./chunk-FILGQF2G.js";
5
5
 
6
6
  // src/db/traces.ts
7
7
  init_drizzle();
@@ -10,27 +10,43 @@ import {
10
10
  import {
11
11
  getDrizzle,
12
12
  init_drizzle
13
- } from "./chunk-PZNAQBHQ.js";
13
+ } from "./chunk-FILGQF2G.js";
14
14
  import {
15
15
  schema_exports
16
- } from "./chunk-ILHIHMO3.js";
16
+ } from "./chunk-VC5DELR4.js";
17
17
 
18
18
  // src/db/memory.ts
19
19
  init_drizzle();
20
20
  init_ids();
21
21
  init_clock();
22
22
  import { createHash } from "crypto";
23
- import { eq, and, asc, desc, like, or, sql } from "drizzle-orm";
23
+ import { eq, and, asc, desc, like, or, sql, lt } from "drizzle-orm";
24
24
  function hydrateStore(row) {
25
25
  return {
26
26
  id: row.id,
27
27
  name: row.name,
28
28
  description: row.description,
29
29
  agent_id: row.agent_id,
30
+ archived_at: row.archived_at ? toIso(row.archived_at) : null,
30
31
  created_at: toIso(row.created_at),
31
32
  updated_at: toIso(row.updated_at)
32
33
  };
33
34
  }
35
+ function hydrateVersion(row) {
36
+ const v = {
37
+ type: "memory_version",
38
+ id: row.id,
39
+ memory_store_id: row.store_id,
40
+ memory_id: row.memory_id,
41
+ path: row.path,
42
+ operation: row.operation,
43
+ created_at: toIso(row.created_at)
44
+ };
45
+ if (row.content != null) v.content = row.content;
46
+ if (row.content_sha256 != null) v.content_sha256 = row.content_sha256;
47
+ if (row.session_id != null) v.session_id = row.session_id;
48
+ return v;
49
+ }
34
50
  function hydrateMemory(row) {
35
51
  return {
36
52
  id: row.id,
@@ -90,11 +106,13 @@ function deleteMemoryStore(id) {
90
106
  const res = db.delete(schema_exports.memoryStores).where(eq(schema_exports.memoryStores.id, id)).run();
91
107
  return res.changes > 0;
92
108
  }
93
- function createOrUpsertMemory(storeId, path, content) {
109
+ function createOrUpsertMemory(storeId, path, content, sessionId) {
94
110
  const db = getDrizzle();
95
111
  const hash = sha256(content);
96
112
  const now = nowMs();
97
113
  const id = newId("mem");
114
+ const existing = getMemoryByPath(storeId, path);
115
+ const isUpdate = !!existing;
98
116
  db.insert(schema_exports.memories).values({
99
117
  id,
100
118
  store_id: storeId,
@@ -111,7 +129,17 @@ function createOrUpsertMemory(storeId, path, content) {
111
129
  updated_at: now
112
130
  }
113
131
  }).run();
114
- return getMemoryByPath(storeId, path);
132
+ const memory = getMemoryByPath(storeId, path);
133
+ createMemoryVersion({
134
+ storeId,
135
+ memoryId: memory.id,
136
+ operation: isUpdate ? "update" : "create",
137
+ path,
138
+ content,
139
+ contentSha256: hash,
140
+ sessionId
141
+ });
142
+ return memory;
115
143
  }
116
144
  function getMemory(id) {
117
145
  const db = getDrizzle();
@@ -143,7 +171,7 @@ function searchMemories(storeId, query) {
143
171
  ).orderBy(asc(schema_exports.memories.path)).all();
144
172
  return rows.map(hydrateMemory);
145
173
  }
146
- function updateMemory(id, content, preconditionSha256) {
174
+ function updateMemory(id, content, preconditionSha256, sessionId) {
147
175
  const db = getDrizzle();
148
176
  const existing = getMemory(id);
149
177
  if (!existing) return { memory: null, conflict: false };
@@ -153,11 +181,77 @@ function updateMemory(id, content, preconditionSha256) {
153
181
  const hash = sha256(content);
154
182
  const now = nowMs();
155
183
  db.update(schema_exports.memories).set({ content, content_sha256: hash, updated_at: now }).where(eq(schema_exports.memories.id, id)).run();
156
- return { memory: getMemory(id), conflict: false };
184
+ const memory = getMemory(id);
185
+ createMemoryVersion({
186
+ storeId: existing.store_id,
187
+ memoryId: id,
188
+ operation: "update",
189
+ path: existing.path,
190
+ content,
191
+ contentSha256: hash,
192
+ sessionId
193
+ });
194
+ return { memory, conflict: false };
157
195
  }
158
- function deleteMemory(id) {
196
+ function deleteMemory(id, sessionId) {
159
197
  const db = getDrizzle();
198
+ const existing = getMemory(id);
160
199
  const res = db.delete(schema_exports.memories).where(eq(schema_exports.memories.id, id)).run();
200
+ if (res.changes > 0 && existing) {
201
+ createMemoryVersion({
202
+ storeId: existing.store_id,
203
+ memoryId: id,
204
+ operation: "delete",
205
+ path: existing.path,
206
+ sessionId
207
+ });
208
+ }
209
+ return res.changes > 0;
210
+ }
211
+ function createMemoryVersion(opts) {
212
+ const db = getDrizzle();
213
+ const id = newId("memver");
214
+ const now = nowMs();
215
+ db.insert(schema_exports.memoryVersions).values({
216
+ id,
217
+ store_id: opts.storeId,
218
+ memory_id: opts.memoryId,
219
+ operation: opts.operation,
220
+ path: opts.path,
221
+ content: opts.content ?? null,
222
+ content_sha256: opts.contentSha256 ?? null,
223
+ session_id: opts.sessionId ?? null,
224
+ created_at: now
225
+ }).run();
226
+ return id;
227
+ }
228
+ function listMemoryVersions(storeId, opts) {
229
+ const db = getDrizzle();
230
+ const limit = opts?.limit ?? 100;
231
+ const conditions = [eq(schema_exports.memoryVersions.store_id, storeId)];
232
+ if (opts?.memoryId) {
233
+ conditions.push(eq(schema_exports.memoryVersions.memory_id, opts.memoryId));
234
+ }
235
+ if (opts?.cursor) {
236
+ conditions.push(lt(schema_exports.memoryVersions.id, opts.cursor));
237
+ }
238
+ const rows = db.select().from(schema_exports.memoryVersions).where(and(...conditions)).orderBy(desc(schema_exports.memoryVersions.created_at), desc(schema_exports.memoryVersions.id)).limit(limit).all();
239
+ return rows.map(hydrateVersion);
240
+ }
241
+ function getMemoryVersion(storeId, versionId) {
242
+ const db = getDrizzle();
243
+ const row = db.select().from(schema_exports.memoryVersions).where(
244
+ and(
245
+ eq(schema_exports.memoryVersions.store_id, storeId),
246
+ eq(schema_exports.memoryVersions.id, versionId)
247
+ )
248
+ ).get();
249
+ return row ? hydrateVersion(row) : void 0;
250
+ }
251
+ function archiveMemoryStore(id) {
252
+ const db = getDrizzle();
253
+ const now = nowMs();
254
+ const res = db.update(schema_exports.memoryStores).set({ archived_at: now, updated_at: now }).where(eq(schema_exports.memoryStores.id, id)).run();
161
255
  return res.changes > 0;
162
256
  }
163
257
 
@@ -172,5 +266,9 @@ export {
172
266
  listMemories,
173
267
  searchMemories,
174
268
  updateMemory,
175
- deleteMemory
269
+ deleteMemory,
270
+ createMemoryVersion,
271
+ listMemoryVersions,
272
+ getMemoryVersion,
273
+ archiveMemoryStore
176
274
  };
@@ -2,19 +2,19 @@ import {
2
2
  getSyncRow,
3
3
  getSyncedRemoteId,
4
4
  upsertSync
5
- } from "./chunk-22OUZJAV.js";
5
+ } from "./chunk-AESA3ARX.js";
6
6
  import {
7
7
  injectMcpAuthHeaders
8
8
  } from "./chunk-DBFPJSOY.js";
9
9
  import {
10
10
  listEntries
11
- } from "./chunk-VP527YC5.js";
11
+ } from "./chunk-BYIU4WAQ.js";
12
12
  import {
13
13
  getEnvironment
14
- } from "./chunk-H6OT5GUL.js";
14
+ } from "./chunk-7APAOJIZ.js";
15
15
  import {
16
16
  getAgent
17
- } from "./chunk-BCIFFAGW.js";
17
+ } from "./chunk-M3752GFZ.js";
18
18
 
19
19
  // src/sync/anthropic.ts
20
20
  import { createHash } from "crypto";
@@ -8,14 +8,14 @@ import {
8
8
  import {
9
9
  jsonOk,
10
10
  routeWrap
11
- } from "./chunk-QTXAWC5J.js";
11
+ } from "./chunk-6URMGCAC.js";
12
12
  import {
13
13
  snapshotApiMetrics
14
14
  } from "./chunk-D2XITRN6.js";
15
15
  import {
16
16
  getDb,
17
17
  init_client
18
- } from "./chunk-W3JMIUHV.js";
18
+ } from "./chunk-KQTTKYZY.js";
19
19
  import {
20
20
  badRequest
21
21
  } from "./chunk-EZYKRG4W.js";
@@ -1,10 +1,3 @@
1
- import {
2
- buildPiArgs
3
- } from "./chunk-6KWJASEO.js";
4
- import {
5
- buildPiAuthEnv,
6
- validatePiRuntime
7
- } from "./chunk-HWR2HYQJ.js";
8
1
  import {
9
2
  preparePiOnSandbox
10
3
  } from "./chunk-QYSDP6V5.js";
@@ -14,9 +7,16 @@ import {
14
7
  import {
15
8
  PI_WRAPPER_PATH
16
9
  } from "./chunk-JDBXIJKG.js";
10
+ import {
11
+ buildPiArgs
12
+ } from "./chunk-6KWJASEO.js";
13
+ import {
14
+ buildPiAuthEnv,
15
+ validatePiRuntime
16
+ } from "./chunk-6DPJVMEC.js";
17
17
  import {
18
18
  wrapPromptWithSystem
19
- } from "./chunk-FVBDEOTZ.js";
19
+ } from "./chunk-YE2RMJY7.js";
20
20
  import {
21
21
  ApiError
22
22
  } from "./chunk-EZYKRG4W.js";
@@ -5,25 +5,25 @@ import {
5
5
  } from "./chunk-23UKWXJH.js";
6
6
  import {
7
7
  kickoffEnvironmentSetup
8
- } from "./chunk-LQP6XGFU.js";
8
+ } from "./chunk-6KQFP32G.js";
9
9
  import {
10
10
  decodeCursor,
11
11
  jsonOk,
12
12
  paginatedOk,
13
13
  routeWrap
14
- } from "./chunk-QTXAWC5J.js";
14
+ } from "./chunk-6URMGCAC.js";
15
15
  import {
16
16
  forwardToAnthropic
17
- } from "./chunk-MQBMXAPU.js";
17
+ } from "./chunk-Y4MI27HU.js";
18
18
  import {
19
19
  getProxiedTenantId,
20
20
  isProxied,
21
21
  markProxied,
22
22
  unmarkProxied
23
- } from "./chunk-5U5LRAFJ.js";
23
+ } from "./chunk-MTLM36QD.js";
24
24
  import {
25
25
  resolveContainerProvider
26
- } from "./chunk-UE6DNLSV.js";
26
+ } from "./chunk-LT5PRO54.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-H6OT5GUL.js";
35
+ } from "./chunk-7APAOJIZ.js";
36
36
  import {
37
37
  getDb,
38
38
  init_client
39
- } from "./chunk-W3JMIUHV.js";
39
+ } from "./chunk-KQTTKYZY.js";
40
40
  import {
41
41
  badRequest,
42
42
  conflict,
@@ -8,17 +8,17 @@ import {
8
8
  jsonOk,
9
9
  paginatedOk,
10
10
  routeWrap
11
- } from "./chunk-QTXAWC5J.js";
11
+ } from "./chunk-6URMGCAC.js";
12
12
  import {
13
13
  forwardToAnthropic,
14
14
  validateAnthropicProxy
15
- } from "./chunk-MQBMXAPU.js";
15
+ } from "./chunk-Y4MI27HU.js";
16
16
  import {
17
17
  getProxiedTenantId,
18
18
  isProxied,
19
19
  markProxied,
20
20
  unmarkProxied
21
- } from "./chunk-5U5LRAFJ.js";
21
+ } from "./chunk-MTLM36QD.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-BCIFFAGW.js";
29
+ } from "./chunk-M3752GFZ.js";
30
30
  import {
31
31
  resolveBackend
32
- } from "./chunk-GV6GUSCP.js";
32
+ } from "./chunk-Q2JYAAJO.js";
33
33
  import {
34
34
  getDb,
35
35
  init_client
36
- } from "./chunk-W3JMIUHV.js";
36
+ } from "./chunk-KQTTKYZY.js";
37
37
  import {
38
38
  badRequest,
39
39
  conflict,
@@ -113,6 +113,13 @@ var CreateSchema = z.object({
113
113
  id: z.string(),
114
114
  version: z.number().int().optional()
115
115
  })).optional(),
116
+ multiagent: z.object({
117
+ type: z.literal("coordinator"),
118
+ agents: z.array(z.union([
119
+ z.object({ type: z.literal("agent"), id: z.string(), version: z.number().int().optional() }),
120
+ z.object({ type: z.literal("self") })
121
+ ])).max(20)
122
+ }).optional(),
116
123
  skills: z.array(SkillSchema).max(20).optional(),
117
124
  model_config: ModelConfigSchema.optional(),
118
125
  /** v0.5: required for global admin, ignored for tenant users. */
@@ -150,6 +157,13 @@ var UpdateSchema = z.object({
150
157
  id: z.string(),
151
158
  version: z.number().int().optional()
152
159
  })).optional(),
160
+ multiagent: z.object({
161
+ type: z.literal("coordinator"),
162
+ agents: z.array(z.union([
163
+ z.object({ type: z.literal("agent"), id: z.string(), version: z.number().int().optional() }),
164
+ z.object({ type: z.literal("self") })
165
+ ])).max(20)
166
+ }).nullish(),
153
167
  skills: z.array(SkillSchema).max(20).optional(),
154
168
  model_config: ModelConfigSchema.optional()
155
169
  }).refine((data) => {
@@ -228,9 +242,10 @@ function handleCreateAgent(request) {
228
242
  webhook_url: parsed.data.webhook_url ?? null,
229
243
  webhook_events: parsed.data.webhook_events,
230
244
  webhook_secret: parsed.data.webhook_secret ?? null,
231
- threads_enabled: parsed.data.threads_enabled ?? false,
245
+ threads_enabled: parsed.data.threads_enabled ?? (parsed.data.multiagent ? true : false),
232
246
  confirmation_mode: parsed.data.confirmation_mode ?? false,
233
247
  callable_agents: parsed.data.callable_agents,
248
+ multiagent: parsed.data.multiagent,
234
249
  skills: parsed.data.skills?.map((s) => ({
235
250
  ...s,
236
251
  installed_at: s.installed_at ?? nowIso
@@ -313,6 +328,7 @@ function handleUpdateAgent(request, id) {
313
328
  webhook_secret: parsed.data.webhook_secret,
314
329
  confirmation_mode: parsed.data.confirmation_mode,
315
330
  callable_agents: parsed.data.callable_agents,
331
+ multiagent: parsed.data.multiagent,
316
332
  skills: parsed.data.skills?.map((s) => ({
317
333
  ...s,
318
334
  installed_at: s.installed_at ?? nowIso
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  init_migrations,
3
3
  runMigrations
4
- } from "./chunk-2YZOIFVN.js";
4
+ } from "./chunk-P4NU74SP.js";
5
5
  import {
6
6
  __esm
7
7
  } from "./chunk-2ESYSVXG.js";
@@ -3,21 +3,21 @@ import {
3
3
  } from "./chunk-23UKWXJH.js";
4
4
  import {
5
5
  recordAudit
6
- } from "./chunk-L3IACZ72.js";
6
+ } from "./chunk-TWH4UH6G.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-QTXAWC5J.js";
13
+ } from "./chunk-6URMGCAC.js";
14
14
  import {
15
15
  archiveTenant,
16
16
  createTenant,
17
17
  getTenant,
18
18
  listTenants,
19
19
  renameTenant
20
- } from "./chunk-I26QP3A3.js";
20
+ } from "./chunk-UQZFFG7U.js";
21
21
  import {
22
22
  badRequest,
23
23
  notFound