@agentstep/agent-sdk 0.5.1 → 0.5.3

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 (186) 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 +11 -11
  4. package/dist/backends/codex/auth.js +6 -6
  5. package/dist/backends/codex/index.js +11 -11
  6. package/dist/backends/factory/auth.js +6 -6
  7. package/dist/backends/factory/index.js +13 -13
  8. package/dist/backends/gemini/auth.js +6 -6
  9. package/dist/backends/gemini/index.js +11 -11
  10. package/dist/backends/opencode/auth.js +6 -6
  11. package/dist/backends/opencode/index.js +15 -15
  12. package/dist/backends/pi/auth.js +6 -6
  13. package/dist/backends/pi/index.js +13 -13
  14. package/dist/backends/registry.js +30 -30
  15. package/dist/backends/shared/wrap-prompt.js +1 -1
  16. package/dist/{chunk-4LHJJXH3.js → chunk-23CUQSLR.js} +2 -2
  17. package/dist/{chunk-57LAR6EM.js → chunk-2FKWZKV2.js} +4 -4
  18. package/dist/chunk-2YPJLPTR.js +166 -0
  19. package/dist/{chunk-FYBHPBWY.js → chunk-335F7KSU.js} +2 -2
  20. package/dist/chunk-3LUY2POB.js +50 -0
  21. package/dist/{chunk-HMOSAXVZ.js → chunk-4A4F4L4H.js} +2 -2
  22. package/dist/{chunk-JWHSUEDE.js → chunk-5NCA624D.js} +23 -7
  23. package/dist/{chunk-7SY65LWY.js → chunk-62CZZBEE.js} +4 -4
  24. package/dist/{chunk-GD3WXIHX.js → chunk-65XQ72BF.js} +1 -1
  25. package/dist/{chunk-RT5S5KRX.js → chunk-6DPJVMEC.js} +1 -1
  26. package/dist/{chunk-NBYCX6L4.js → chunk-6KJS42ZL.js} +7 -6
  27. package/dist/{chunk-QJ6QQO6D.js → chunk-6KQFP32G.js} +2 -2
  28. package/dist/{chunk-GIUB2OPA.js → chunk-6TJBZXD4.js} +1 -1
  29. package/dist/{chunk-UMVZZQKD.js → chunk-6ZM7XNH3.js} +1 -1
  30. package/dist/{chunk-ZY2U24QP.js → chunk-75XURMV5.js} +51 -12
  31. package/dist/{chunk-H6OT5GUL.js → chunk-7APAOJIZ.js} +3 -3
  32. package/dist/{chunk-HVLYE4S5.js → chunk-7EDLLXFQ.js} +1 -1
  33. package/dist/chunk-7IYL2O7H.js +185 -0
  34. package/dist/{chunk-KGBKIJPF.js → chunk-7JAUY5SG.js} +3 -3
  35. package/dist/{chunk-T7BHW3CP.js → chunk-7JWW4ZQI.js} +70 -24
  36. package/dist/{chunk-YZZHDZ7B.js → chunk-7XIAKW75.js} +1 -1
  37. package/dist/{chunk-USIMPXUH.js → chunk-A2W3USEZ.js} +1 -1
  38. package/dist/{chunk-WU74DV5R.js → chunk-A7AXD5AM.js} +2 -2
  39. package/dist/chunk-ACPP4KN7.js +164 -0
  40. package/dist/{chunk-22OUZJAV.js → chunk-AESA3ARX.js} +3 -3
  41. package/dist/{chunk-37C5BNVV.js → chunk-AIAF5ZZA.js} +1 -1
  42. package/dist/{chunk-YYMUSVUI.js → chunk-ANS2TQYT.js} +3 -3
  43. package/dist/{chunk-T3FQPTOA.js → chunk-BCBDHUFY.js} +2 -2
  44. package/dist/{chunk-COZG53R3.js → chunk-BCBRLP33.js} +2 -2
  45. package/dist/{chunk-MCWCRZM4.js → chunk-BLTCDZ3O.js} +4 -4
  46. package/dist/{chunk-VP527YC5.js → chunk-BYIU4WAQ.js} +3 -3
  47. package/dist/{chunk-R6EXYBCT.js → chunk-C52BVTYC.js} +8 -8
  48. package/dist/{chunk-DMMNAQUM.js → chunk-C5GVKLNS.js} +10 -18
  49. package/dist/{chunk-B5EY2VJC.js → chunk-C7BU4RX6.js} +3 -3
  50. package/dist/{chunk-T3IGOI6Z.js → chunk-DTQ7J35Q.js} +2 -2
  51. package/dist/{chunk-5M47X54D.js → chunk-DZGFZMUE.js} +5 -5
  52. package/dist/{chunk-3NKK4M23.js → chunk-E2OYBE5D.js} +2 -2
  53. package/dist/{chunk-L35CBI7F.js → chunk-E35XHOFL.js} +5 -5
  54. package/dist/{chunk-CE366H6Z.js → chunk-EHMKMOXH.js} +5 -5
  55. package/dist/{chunk-3S4CGFKJ.js → chunk-EQ32JFKT.js} +3 -3
  56. package/dist/{chunk-PZNAQBHQ.js → chunk-FILGQF2G.js} +2 -2
  57. package/dist/{chunk-MZYJFU4K.js → chunk-FSVDF57K.js} +5 -5
  58. package/dist/{chunk-XSNJ7NT2.js → chunk-G4DTLYOD.js} +1 -1
  59. package/dist/{chunk-IEZFRNLC.js → chunk-GBLR2CPP.js} +107 -9
  60. package/dist/{chunk-C35ZTCBP.js → chunk-IAKR572X.js} +8 -8
  61. package/dist/{chunk-W3JMIUHV.js → chunk-KQTTKYZY.js} +1 -1
  62. package/dist/{chunk-LIXSR7BG.js → chunk-LHFEBLOE.js} +7 -7
  63. package/dist/{chunk-BCIFFAGW.js → chunk-M3752GFZ.js} +15 -5
  64. package/dist/{chunk-5U5LRAFJ.js → chunk-MTLM36QD.js} +2 -2
  65. package/dist/{chunk-CKFJN5XK.js → chunk-MV42BTU3.js} +1 -1
  66. package/dist/{chunk-ZWC5V2DB.js → chunk-NJ6KNTZR.js} +17 -17
  67. package/dist/{chunk-5MERXOLJ.js → chunk-NRX5WHHN.js} +4 -4
  68. package/dist/{chunk-2YIMCZJK.js → chunk-NUOCXBFP.js} +68 -20
  69. package/dist/{chunk-T3HMVHDG.js → chunk-O2X4XBU7.js} +1 -1
  70. package/dist/{chunk-2YZOIFVN.js → chunk-P4NU74SP.js} +47 -0
  71. package/dist/{chunk-BJP5BIHE.js → chunk-PGJSOKPH.js} +3 -3
  72. package/dist/{chunk-IMPLRDOV.js → chunk-Q2JYAAJO.js} +9 -9
  73. package/dist/{chunk-56XDLNEW.js → chunk-RJDYM2HR.js} +1 -1
  74. package/dist/{chunk-4MKBT3KA.js → chunk-T6F4TFHD.js} +4 -4
  75. package/dist/{chunk-74E7GKUG.js → chunk-TE6KCRPP.js} +1 -1
  76. package/dist/{chunk-VJWNFMMQ.js → chunk-TF36SWHG.js} +2 -2
  77. package/dist/{chunk-KUWJJD6O.js → chunk-TSR33JMZ.js} +14 -5
  78. package/dist/{chunk-L3IACZ72.js → chunk-TWH4UH6G.js} +1 -1
  79. package/dist/{chunk-445EL6J5.js → chunk-UAEVL47I.js} +1 -1
  80. package/dist/{chunk-6RFQCFL2.js → chunk-UALRSWXY.js} +44 -14
  81. package/dist/{chunk-GQYSSSVA.js → chunk-UGH5JDXX.js} +2 -2
  82. package/dist/{chunk-I26QP3A3.js → chunk-UQZFFG7U.js} +1 -1
  83. package/dist/{chunk-Q4XF3OBK.js → chunk-UYP3VGYB.js} +8 -8
  84. package/dist/{chunk-ILHIHMO3.js → chunk-VC5DELR4.js} +37 -2
  85. package/dist/{chunk-O56RNR7B.js → chunk-VMLXV2H6.js} +1 -1
  86. package/dist/{chunk-FCUXFLNK.js → chunk-VY6IWBSK.js} +17 -4
  87. package/dist/{chunk-NL4UNA53.js → chunk-VYY4RHIF.js} +2 -2
  88. package/dist/{chunk-NRXTWATQ.js → chunk-WFRHLTKI.js} +3 -3
  89. package/dist/{chunk-UMRDMOB6.js → chunk-WRLCJNQF.js} +1 -1
  90. package/dist/{chunk-DRNZ24RF.js → chunk-WXMEJVLS.js} +4 -4
  91. package/dist/{chunk-63AKPSCV.js → chunk-X4ARJS6I.js} +10 -10
  92. package/dist/{chunk-MXMXJYN4.js → chunk-XXGVNVPI.js} +5 -5
  93. package/dist/{chunk-A46RUKGA.js → chunk-Y4MI27HU.js} +1 -1
  94. package/dist/{chunk-TG3S4RVJ.js → chunk-Y7NMJ662.js} +2 -2
  95. package/dist/{chunk-FVBDEOTZ.js → chunk-YE2RMJY7.js} +18 -4
  96. package/dist/{chunk-EDUTIJAU.js → chunk-YIY47OVD.js} +6 -6
  97. package/dist/{chunk-HZZ6ZLKP.js → chunk-YL6IQUJC.js} +4 -4
  98. package/dist/{chunk-WDACZSRU.js → chunk-Z6OPLBPQ.js} +1 -1
  99. package/dist/{chunk-UQ3LKJPM.js → chunk-ZG3PHDZJ.js} +3 -3
  100. package/dist/{chunk-2YFS435Z.js → chunk-ZGI6YG2G.js} +42 -4
  101. package/dist/config/index.js +5 -5
  102. package/dist/containers/client.js +6 -6
  103. package/dist/containers/exec.js +6 -6
  104. package/dist/containers/lifecycle.js +44 -42
  105. package/dist/containers/setup.js +8 -8
  106. package/dist/db/agents.js +6 -6
  107. package/dist/db/api_keys.js +5 -5
  108. package/dist/db/audit.js +3 -3
  109. package/dist/db/batch.js +10 -10
  110. package/dist/db/client.js +2 -2
  111. package/dist/db/credentials.js +3 -3
  112. package/dist/db/drizzle.js +4 -4
  113. package/dist/db/environments.js +6 -6
  114. package/dist/db/events.js +5 -5
  115. package/dist/db/files.js +5 -5
  116. package/dist/db/memory.js +13 -5
  117. package/dist/db/migrations.js +1 -1
  118. package/dist/db/proxy.js +5 -5
  119. package/dist/db/schema.js +5 -1
  120. package/dist/db/session-resources.js +5 -5
  121. package/dist/db/sessions.js +8 -8
  122. package/dist/db/sync.js +5 -5
  123. package/dist/db/tenants.js +3 -3
  124. package/dist/db/threads.js +27 -0
  125. package/dist/db/traces.js +5 -5
  126. package/dist/db/upstream_keys.js +3 -3
  127. package/dist/db/vaults.js +6 -6
  128. package/dist/dreaming/prompts.js +9 -0
  129. package/dist/dreaming/review.js +22 -0
  130. package/dist/handlers/agents.js +58 -58
  131. package/dist/handlers/api_keys.js +59 -59
  132. package/dist/handlers/audit.js +59 -59
  133. package/dist/handlers/batch.js +59 -59
  134. package/dist/handlers/credentials.js +59 -59
  135. package/dist/handlers/environments.js +59 -59
  136. package/dist/handlers/events.js +62 -62
  137. package/dist/handlers/files.js +59 -59
  138. package/dist/handlers/index.js +158 -143
  139. package/dist/handlers/license.js +58 -58
  140. package/dist/handlers/memory.js +65 -59
  141. package/dist/handlers/metrics.js +58 -58
  142. package/dist/handlers/models.js +59 -59
  143. package/dist/handlers/providers.js +58 -58
  144. package/dist/handlers/resources.js +58 -58
  145. package/dist/handlers/sessions.js +62 -61
  146. package/dist/handlers/settings.js +58 -58
  147. package/dist/handlers/skills-write.js +58 -58
  148. package/dist/handlers/skills.js +59 -59
  149. package/dist/handlers/stream.js +58 -58
  150. package/dist/handlers/tenants.js +59 -59
  151. package/dist/handlers/threads.js +69 -60
  152. package/dist/handlers/traces.js +59 -59
  153. package/dist/handlers/upstream_keys.js +61 -61
  154. package/dist/handlers/vaults.js +58 -58
  155. package/dist/handlers/whoami.js +58 -58
  156. package/dist/http.js +57 -57
  157. package/dist/index.js +71 -66
  158. package/dist/init.js +54 -54
  159. package/dist/lib/model-registry.js +6 -6
  160. package/dist/lib/skills-cache.js +6 -6
  161. package/dist/observability/otlp.js +12 -12
  162. package/dist/observability/redactor.js +8 -8
  163. package/dist/providers/fly.js +5 -5
  164. package/dist/providers/modal.js +5 -5
  165. package/dist/providers/registry.js +1 -1
  166. package/dist/providers/resolve-secrets.js +7 -7
  167. package/dist/providers/sprites.js +7 -7
  168. package/dist/providers/upstream-keys.js +12 -12
  169. package/dist/providers/vercel.js +6 -6
  170. package/dist/proxy/forward.js +6 -6
  171. package/dist/queue/index.js +6 -6
  172. package/dist/sessions/bus.js +10 -10
  173. package/dist/sessions/driver.js +47 -47
  174. package/dist/sessions/grader.js +5 -5
  175. package/dist/sessions/secrets.js +8 -8
  176. package/dist/sessions/sweeper.js +43 -43
  177. package/dist/sessions/threads.js +120 -54
  178. package/dist/shutdown.js +44 -44
  179. package/dist/sync/anthropic.js +10 -10
  180. package/dist/sync/container-file-sync.js +24 -6
  181. package/dist/sync/file-sync.js +17 -17
  182. package/dist/sync/memory-sync.js +79 -0
  183. package/package.json +1 -1
  184. package/dist/chunk-AQB3P5ZP.js +0 -48
  185. package/dist/{chunk-JRQB3SHR.js → chunk-LT5PRO54.js} +0 -0
  186. package/dist/{dist-EY25RQ2S.js → dist-S64ZABZX.js} +3 -3
@@ -1,96 +1,101 @@
1
+ import {
2
+ createThread,
3
+ updateThreadStatus,
4
+ updateThreadUsage
5
+ } from "../chunk-7IYL2O7H.js";
1
6
  import {
2
7
  runTurn
3
- } from "../chunk-T7BHW3CP.js";
8
+ } from "../chunk-7JWW4ZQI.js";
4
9
  import "../chunk-PJZ5TQYW.js";
10
+ import "../chunk-72BKGVBE.js";
11
+ import "../chunk-4A4F4L4H.js";
5
12
  import "../chunk-AU4NAQGA.js";
6
13
  import "../chunk-H6TQGV4L.js";
7
14
  import "../chunk-DBFPJSOY.js";
8
- import "../chunk-72BKGVBE.js";
9
- import "../chunk-HMOSAXVZ.js";
10
- import "../chunk-5U5LRAFJ.js";
11
- import "../chunk-HVLYE4S5.js";
15
+ import "../chunk-MTLM36QD.js";
16
+ import "../chunk-7EDLLXFQ.js";
12
17
  import {
13
18
  getActor
14
19
  } from "../chunk-LAWTTG2E.js";
15
- import "../chunk-ZY2U24QP.js";
20
+ import "../chunk-75XURMV5.js";
21
+ import "../chunk-O2X4XBU7.js";
16
22
  import "../chunk-4XXQAVKE.js";
17
- import "../chunk-T3HMVHDG.js";
18
- import "../chunk-5ZFOKZGR.js";
19
23
  import {
20
24
  appendEvent
21
- } from "../chunk-5MERXOLJ.js";
22
- import "../chunk-VP527YC5.js";
25
+ } from "../chunk-NRX5WHHN.js";
26
+ import "../chunk-5ZFOKZGR.js";
27
+ import "../chunk-BYIU4WAQ.js";
23
28
  import {
24
29
  bumpSessionStats,
25
30
  createSession,
26
31
  getSession,
27
32
  getSessionRow
28
- } from "../chunk-KUWJJD6O.js";
29
- import "../chunk-FCUXFLNK.js";
33
+ } from "../chunk-TSR33JMZ.js";
34
+ import "../chunk-VY6IWBSK.js";
30
35
  import "../chunk-AIBH32FN.js";
31
36
  import "../chunk-YPXI7Q2M.js";
32
37
  import {
33
38
  listEvents
34
- } from "../chunk-KGBKIJPF.js";
35
- import "../chunk-O56RNR7B.js";
39
+ } from "../chunk-7JAUY5SG.js";
40
+ import "../chunk-VMLXV2H6.js";
36
41
  import "../chunk-EFOIR7R3.js";
37
- import "../chunk-JRQB3SHR.js";
38
- import "../chunk-H6OT5GUL.js";
42
+ import "../chunk-LT5PRO54.js";
43
+ import "../chunk-7APAOJIZ.js";
39
44
  import "../chunk-G7KUVNDY.js";
40
45
  import {
41
46
  getAgent
42
- } from "../chunk-BCIFFAGW.js";
43
- import "../chunk-I26QP3A3.js";
44
- import "../chunk-IMPLRDOV.js";
45
- import "../chunk-C35ZTCBP.js";
46
- import "../chunk-6KWJASEO.js";
47
- import "../chunk-RT5S5KRX.js";
47
+ } from "../chunk-M3752GFZ.js";
48
+ import "../chunk-UQZFFG7U.js";
49
+ import "../chunk-Q2JYAAJO.js";
50
+ import "../chunk-X4ARJS6I.js";
51
+ import "../chunk-V5DH3OAC.js";
52
+ import "../chunk-P7P2NWZD.js";
53
+ import "../chunk-ETWGCBIQ.js";
54
+ import "../chunk-SWIP7JBQ.js";
55
+ import "../chunk-IAKR572X.js";
48
56
  import "../chunk-QYSDP6V5.js";
49
57
  import "../chunk-B6E6BVNK.js";
50
58
  import "../chunk-JDBXIJKG.js";
51
- import "../chunk-63AKPSCV.js";
59
+ import "../chunk-6KWJASEO.js";
60
+ import "../chunk-6DPJVMEC.js";
61
+ import "../chunk-DZGFZMUE.js";
62
+ import "../chunk-IBYOMAZ3.js";
63
+ import "../chunk-Z6OPLBPQ.js";
64
+ import "../chunk-XG4UIGDH.js";
65
+ import "../chunk-S3JRZFF5.js";
66
+ import "../chunk-3W6KEDQE.js";
52
67
  import "../chunk-P56WU3UT.js";
53
- import "../chunk-UMRDMOB6.js";
54
- import "../chunk-V5DH3OAC.js";
55
- import "../chunk-P7P2NWZD.js";
56
- import "../chunk-SWIP7JBQ.js";
57
- import "../chunk-ETWGCBIQ.js";
58
- import "../chunk-R6EXYBCT.js";
68
+ import "../chunk-WRLCJNQF.js";
69
+ import "../chunk-C52BVTYC.js";
70
+ import "../chunk-TPMZO6S2.js";
71
+ import "../chunk-7XIAKW75.js";
59
72
  import "../chunk-YSUPRYX2.js";
60
73
  import "../chunk-7TSTCMII.js";
61
74
  import "../chunk-QQDSHL27.js";
62
- import "../chunk-5M47X54D.js";
63
- import "../chunk-S3JRZFF5.js";
64
- import "../chunk-IBYOMAZ3.js";
65
- import "../chunk-WDACZSRU.js";
66
- import "../chunk-XG4UIGDH.js";
67
- import "../chunk-3W6KEDQE.js";
68
- import "../chunk-L35CBI7F.js";
75
+ import "../chunk-E35XHOFL.js";
76
+ import "../chunk-CULYZ3VA.js";
69
77
  import "../chunk-PJYCPDV5.js";
70
- import "../chunk-GIUB2OPA.js";
78
+ import "../chunk-6TJBZXD4.js";
71
79
  import "../chunk-M2LUXIXU.js";
72
- import "../chunk-CULYZ3VA.js";
73
80
  import "../chunk-E4FQRMHV.js";
74
- import "../chunk-TPMZO6S2.js";
75
- import "../chunk-YZZHDZ7B.js";
76
- import "../chunk-NBYCX6L4.js";
77
- import "../chunk-YYMUSVUI.js";
78
- import "../chunk-FVBDEOTZ.js";
81
+ import "../chunk-6KJS42ZL.js";
79
82
  import "../chunk-CY6AWCC6.js";
80
83
  import "../chunk-SJ7WZEVY.js";
81
84
  import "../chunk-JFYE5BFI.js";
85
+ import "../chunk-ANS2TQYT.js";
86
+ import "../chunk-YE2RMJY7.js";
82
87
  import "../chunk-XBHDQK4Z.js";
83
88
  import "../chunk-QBJOYOVF.js";
84
89
  import "../chunk-F4WUVOLE.js";
85
- import "../chunk-GQYSSSVA.js";
90
+ import "../chunk-UGH5JDXX.js";
86
91
  import {
87
92
  init_clock,
88
93
  nowMs
89
94
  } from "../chunk-HFDLUBWN.js";
90
- import "../chunk-PZNAQBHQ.js";
91
- import "../chunk-ILHIHMO3.js";
92
- import "../chunk-W3JMIUHV.js";
93
- import "../chunk-2YZOIFVN.js";
95
+ import "../chunk-FILGQF2G.js";
96
+ import "../chunk-VC5DELR4.js";
97
+ import "../chunk-KQTTKYZY.js";
98
+ import "../chunk-P4NU74SP.js";
94
99
  import {
95
100
  ApiError
96
101
  } from "../chunk-EZYKRG4W.js";
@@ -100,7 +105,7 @@ import "../chunk-2ESYSVXG.js";
100
105
 
101
106
  // src/sessions/threads.ts
102
107
  init_clock();
103
- var MAX_THREAD_DEPTH = 3;
108
+ var MAX_THREAD_DEPTH = 1;
104
109
  async function handleSpawnAgent(parentSessionId, agentId, prompt, parentDepth, parentTrace) {
105
110
  if (parentDepth >= MAX_THREAD_DEPTH) {
106
111
  throw new ApiError(
@@ -117,19 +122,55 @@ async function handleSpawnAgent(parentSessionId, agentId, prompt, parentDepth, p
117
122
  if (!agent) {
118
123
  throw new ApiError(404, "not_found_error", `agent not found: ${agentId}`);
119
124
  }
125
+ const thread = createThread({
126
+ sessionId: parentSessionId,
127
+ agentId: agent.id,
128
+ agentVersion: agent.version
129
+ });
130
+ appendEvent(parentSessionId, {
131
+ type: "session.thread_created",
132
+ payload: {
133
+ session_thread_id: thread.id,
134
+ agent_name: agent.name,
135
+ agent_id: agentId
136
+ },
137
+ origin: "server",
138
+ processedAt: nowMs(),
139
+ traceId: parentTrace?.trace_id ?? null,
140
+ spanId: parentTrace?.span_id ?? null,
141
+ parentSpanId: parentTrace?.parent_span_id ?? null
142
+ });
120
143
  const childSession = createSession({
121
144
  agent_id: agent.id,
122
145
  agent_version: agent.version,
123
146
  environment_id: parentSession.environment_id,
124
147
  title: `Thread from ${parentSessionId}`,
125
- metadata: { parent_session_id: parentSessionId },
148
+ metadata: { parent_session_id: parentSessionId, session_thread_id: thread.id },
126
149
  parent_session_id: parentSessionId,
127
150
  thread_depth: parentDepth + 1,
128
151
  vault_ids: parentSession.vault_ids
129
152
  });
153
+ updateThreadStatus(thread.id, "running");
154
+ appendEvent(parentSessionId, {
155
+ type: "session.thread_status_running",
156
+ payload: {
157
+ session_thread_id: thread.id,
158
+ agent_name: agent.name,
159
+ child_session_id: childSession.id
160
+ },
161
+ origin: "server",
162
+ processedAt: nowMs(),
163
+ traceId: parentTrace?.trace_id ?? null,
164
+ spanId: parentTrace?.span_id ?? null,
165
+ parentSpanId: parentTrace?.parent_span_id ?? null
166
+ });
130
167
  appendEvent(parentSessionId, {
131
- type: "session.thread_started",
132
- payload: { child_session_id: childSession.id, agent_id: agentId },
168
+ type: "agent.thread_message_sent",
169
+ payload: {
170
+ to_session_thread_id: thread.id,
171
+ to_agent_name: agent.name,
172
+ content: prompt
173
+ },
133
174
  origin: "server",
134
175
  processedAt: nowMs(),
135
176
  traceId: parentTrace?.trace_id ?? null,
@@ -178,12 +219,37 @@ async function handleSpawnAgent(parentSessionId, agentId, prompt, parentDepth, p
178
219
  cost_usd: finalChildRow.usage_cost_usd
179
220
  }
180
221
  );
222
+ updateThreadUsage(thread.id, {
223
+ input_tokens: finalChildRow.usage_input_tokens,
224
+ output_tokens: finalChildRow.usage_output_tokens,
225
+ cache_read_input_tokens: finalChildRow.usage_cache_read_input_tokens,
226
+ cache_creation_input_tokens: finalChildRow.usage_cache_creation_input_tokens
227
+ });
181
228
  }
229
+ const stopReason = childRow?.stop_reason ?? "end_turn";
230
+ const threadStatus = stopReason === "error" ? "terminated" : "idle";
231
+ updateThreadStatus(thread.id, threadStatus, stopReason);
232
+ appendEvent(parentSessionId, {
233
+ type: "agent.thread_message_received",
234
+ payload: {
235
+ from_session_thread_id: thread.id,
236
+ from_agent_name: agent.name,
237
+ content: resultText || "(no response from sub-agent)"
238
+ },
239
+ origin: "server",
240
+ processedAt: nowMs(),
241
+ traceId: parentTrace?.trace_id ?? null,
242
+ spanId: parentTrace?.span_id ?? null,
243
+ parentSpanId: parentTrace?.parent_span_id ?? null
244
+ });
245
+ const statusEventType = threadStatus === "idle" ? "session.thread_status_idle" : "session.thread_status_terminated";
182
246
  appendEvent(parentSessionId, {
183
- type: "session.thread_completed",
247
+ type: statusEventType,
184
248
  payload: {
249
+ session_thread_id: thread.id,
250
+ agent_name: agent.name,
251
+ stop_reason: stopReason,
185
252
  child_session_id: childSession.id,
186
- result: resultText || "(no response from sub-agent)",
187
253
  child_usage: finalChildRow ? {
188
254
  input_tokens: finalChildRow.usage_input_tokens,
189
255
  output_tokens: finalChildRow.usage_output_tokens,
package/dist/shutdown.js CHANGED
@@ -1,73 +1,73 @@
1
1
  import {
2
2
  installShutdownHandlers
3
- } from "./chunk-FYBHPBWY.js";
4
- import "./chunk-EDUTIJAU.js";
3
+ } from "./chunk-335F7KSU.js";
4
+ import "./chunk-YIY47OVD.js";
5
5
  import "./chunk-LAWTTG2E.js";
6
- import "./chunk-ZY2U24QP.js";
6
+ import "./chunk-75XURMV5.js";
7
+ import "./chunk-O2X4XBU7.js";
7
8
  import "./chunk-4XXQAVKE.js";
8
- import "./chunk-T3HMVHDG.js";
9
+ import "./chunk-NRX5WHHN.js";
9
10
  import "./chunk-5ZFOKZGR.js";
10
- import "./chunk-5MERXOLJ.js";
11
- import "./chunk-VP527YC5.js";
12
- import "./chunk-KUWJJD6O.js";
13
- import "./chunk-FCUXFLNK.js";
11
+ import "./chunk-BYIU4WAQ.js";
12
+ import "./chunk-TSR33JMZ.js";
13
+ import "./chunk-VY6IWBSK.js";
14
14
  import "./chunk-AIBH32FN.js";
15
15
  import "./chunk-YPXI7Q2M.js";
16
- import "./chunk-KGBKIJPF.js";
17
- import "./chunk-O56RNR7B.js";
16
+ import "./chunk-7JAUY5SG.js";
17
+ import "./chunk-VMLXV2H6.js";
18
18
  import "./chunk-EFOIR7R3.js";
19
- import "./chunk-JRQB3SHR.js";
20
- import "./chunk-H6OT5GUL.js";
19
+ import "./chunk-LT5PRO54.js";
20
+ import "./chunk-7APAOJIZ.js";
21
21
  import "./chunk-G7KUVNDY.js";
22
- import "./chunk-BCIFFAGW.js";
23
- import "./chunk-I26QP3A3.js";
24
- import "./chunk-IMPLRDOV.js";
25
- import "./chunk-C35ZTCBP.js";
26
- import "./chunk-6KWJASEO.js";
27
- import "./chunk-RT5S5KRX.js";
22
+ import "./chunk-M3752GFZ.js";
23
+ import "./chunk-UQZFFG7U.js";
24
+ import "./chunk-Q2JYAAJO.js";
25
+ import "./chunk-X4ARJS6I.js";
26
+ import "./chunk-V5DH3OAC.js";
27
+ import "./chunk-P7P2NWZD.js";
28
+ import "./chunk-ETWGCBIQ.js";
29
+ import "./chunk-SWIP7JBQ.js";
30
+ import "./chunk-IAKR572X.js";
28
31
  import "./chunk-QYSDP6V5.js";
29
32
  import "./chunk-B6E6BVNK.js";
30
33
  import "./chunk-JDBXIJKG.js";
31
- import "./chunk-63AKPSCV.js";
34
+ import "./chunk-6KWJASEO.js";
35
+ import "./chunk-6DPJVMEC.js";
36
+ import "./chunk-DZGFZMUE.js";
37
+ import "./chunk-IBYOMAZ3.js";
38
+ import "./chunk-Z6OPLBPQ.js";
39
+ import "./chunk-XG4UIGDH.js";
40
+ import "./chunk-S3JRZFF5.js";
41
+ import "./chunk-3W6KEDQE.js";
32
42
  import "./chunk-P56WU3UT.js";
33
- import "./chunk-UMRDMOB6.js";
34
- import "./chunk-V5DH3OAC.js";
35
- import "./chunk-P7P2NWZD.js";
36
- import "./chunk-SWIP7JBQ.js";
37
- import "./chunk-ETWGCBIQ.js";
38
- import "./chunk-R6EXYBCT.js";
43
+ import "./chunk-WRLCJNQF.js";
44
+ import "./chunk-C52BVTYC.js";
45
+ import "./chunk-TPMZO6S2.js";
46
+ import "./chunk-7XIAKW75.js";
39
47
  import "./chunk-YSUPRYX2.js";
40
48
  import "./chunk-7TSTCMII.js";
41
49
  import "./chunk-QQDSHL27.js";
42
- import "./chunk-5M47X54D.js";
43
- import "./chunk-S3JRZFF5.js";
44
- import "./chunk-IBYOMAZ3.js";
45
- import "./chunk-WDACZSRU.js";
46
- import "./chunk-XG4UIGDH.js";
47
- import "./chunk-3W6KEDQE.js";
48
- import "./chunk-L35CBI7F.js";
50
+ import "./chunk-E35XHOFL.js";
51
+ import "./chunk-CULYZ3VA.js";
49
52
  import "./chunk-PJYCPDV5.js";
50
- import "./chunk-GIUB2OPA.js";
53
+ import "./chunk-6TJBZXD4.js";
51
54
  import "./chunk-M2LUXIXU.js";
52
- import "./chunk-CULYZ3VA.js";
53
55
  import "./chunk-E4FQRMHV.js";
54
- import "./chunk-TPMZO6S2.js";
55
- import "./chunk-YZZHDZ7B.js";
56
- import "./chunk-NBYCX6L4.js";
57
- import "./chunk-YYMUSVUI.js";
58
- import "./chunk-FVBDEOTZ.js";
56
+ import "./chunk-6KJS42ZL.js";
59
57
  import "./chunk-CY6AWCC6.js";
60
58
  import "./chunk-SJ7WZEVY.js";
61
59
  import "./chunk-JFYE5BFI.js";
60
+ import "./chunk-ANS2TQYT.js";
61
+ import "./chunk-YE2RMJY7.js";
62
62
  import "./chunk-XBHDQK4Z.js";
63
63
  import "./chunk-QBJOYOVF.js";
64
64
  import "./chunk-F4WUVOLE.js";
65
- import "./chunk-GQYSSSVA.js";
65
+ import "./chunk-UGH5JDXX.js";
66
66
  import "./chunk-HFDLUBWN.js";
67
- import "./chunk-PZNAQBHQ.js";
68
- import "./chunk-ILHIHMO3.js";
69
- import "./chunk-W3JMIUHV.js";
70
- import "./chunk-2YZOIFVN.js";
67
+ import "./chunk-FILGQF2G.js";
68
+ import "./chunk-VC5DELR4.js";
69
+ import "./chunk-KQTTKYZY.js";
70
+ import "./chunk-P4NU74SP.js";
71
71
  import "./chunk-EZYKRG4W.js";
72
72
  import "./chunk-UYTSKFGK.js";
73
73
  import "./chunk-XZYIH3AF.js";
@@ -3,21 +3,21 @@ import {
3
3
  syncAndCreateSession,
4
4
  syncEnvironment,
5
5
  syncVault
6
- } from "../chunk-7SY65LWY.js";
7
- import "../chunk-22OUZJAV.js";
6
+ } from "../chunk-62CZZBEE.js";
7
+ import "../chunk-AESA3ARX.js";
8
8
  import "../chunk-DBFPJSOY.js";
9
- import "../chunk-VP527YC5.js";
9
+ import "../chunk-BYIU4WAQ.js";
10
10
  import "../chunk-AIBH32FN.js";
11
11
  import "../chunk-YPXI7Q2M.js";
12
- import "../chunk-H6OT5GUL.js";
13
- import "../chunk-BCIFFAGW.js";
14
- import "../chunk-I26QP3A3.js";
12
+ import "../chunk-7APAOJIZ.js";
13
+ import "../chunk-M3752GFZ.js";
14
+ import "../chunk-UQZFFG7U.js";
15
15
  import "../chunk-F4WUVOLE.js";
16
16
  import "../chunk-HFDLUBWN.js";
17
- import "../chunk-PZNAQBHQ.js";
18
- import "../chunk-ILHIHMO3.js";
19
- import "../chunk-W3JMIUHV.js";
20
- import "../chunk-2YZOIFVN.js";
17
+ import "../chunk-FILGQF2G.js";
18
+ import "../chunk-VC5DELR4.js";
19
+ import "../chunk-KQTTKYZY.js";
20
+ import "../chunk-P4NU74SP.js";
21
21
  import "../chunk-2ESYSVXG.js";
22
22
  export {
23
23
  syncAgent,
@@ -4,19 +4,19 @@ import {
4
4
  import {
5
5
  createFile,
6
6
  findFileByContainerPath
7
- } from "../chunk-DMMNAQUM.js";
7
+ } from "../chunk-C5GVKLNS.js";
8
8
  import {
9
9
  listEvents
10
- } from "../chunk-KGBKIJPF.js";
10
+ } from "../chunk-7JAUY5SG.js";
11
11
  import {
12
12
  init_ids,
13
13
  newId
14
14
  } from "../chunk-F4WUVOLE.js";
15
15
  import "../chunk-HFDLUBWN.js";
16
- import "../chunk-PZNAQBHQ.js";
17
- import "../chunk-ILHIHMO3.js";
18
- import "../chunk-W3JMIUHV.js";
19
- import "../chunk-2YZOIFVN.js";
16
+ import "../chunk-FILGQF2G.js";
17
+ import "../chunk-VC5DELR4.js";
18
+ import "../chunk-KQTTKYZY.js";
19
+ import "../chunk-P4NU74SP.js";
20
20
  import "../chunk-2ESYSVXG.js";
21
21
 
22
22
  // src/sync/container-file-sync.ts
@@ -161,6 +161,24 @@ async function syncContainerFiles(opts) {
161
161
  if (allPaths.length > 0) {
162
162
  console.log(`[container-file-sync] ${sessionId}: tracked paths: ${allPaths.join(", ")}`);
163
163
  }
164
+ try {
165
+ const outputResult = await provider.exec(
166
+ sandboxName,
167
+ ["sh", "-c", "find /mnt/session/outputs -type f 2>/dev/null || true"],
168
+ { secrets, timeoutMs: 5e3 }
169
+ );
170
+ if (outputResult.exit_code === 0 && outputResult.stdout.trim()) {
171
+ const clean = outputResult.stdout.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, "");
172
+ for (const filePath of clean.trim().split("\n").filter(Boolean)) {
173
+ const p = filePath.trim();
174
+ if (p && !allPaths.includes(p)) {
175
+ allPaths.push(p);
176
+ }
177
+ }
178
+ console.log(`[container-file-sync] ${sessionId}: found ${clean.trim().split("\n").filter(Boolean).length} file(s) in /mnt/session/outputs/`);
179
+ }
180
+ } catch {
181
+ }
164
182
  if (extracted.sawFileTools || extracted.sawBash) {
165
183
  const discovered = await discoverChangedFiles(sandboxName, provider, secrets);
166
184
  console.log(`[container-file-sync] ${sessionId}: discovered ${discovered.length} files on container: ${discovered.join(", ")}`);
@@ -1,39 +1,39 @@
1
1
  import {
2
2
  resolveAnthropicKey
3
- } from "../chunk-HZZ6ZLKP.js";
4
- import "../chunk-445EL6J5.js";
3
+ } from "../chunk-YL6IQUJC.js";
4
+ import "../chunk-UAEVL47I.js";
5
5
  import {
6
6
  resolveRemoteSessionId
7
- } from "../chunk-22OUZJAV.js";
7
+ } from "../chunk-AESA3ARX.js";
8
8
  import {
9
9
  createFile
10
- } from "../chunk-DMMNAQUM.js";
10
+ } from "../chunk-C5GVKLNS.js";
11
11
  import {
12
12
  isProxied
13
- } from "../chunk-5U5LRAFJ.js";
13
+ } from "../chunk-MTLM36QD.js";
14
14
  import {
15
15
  onAfterCommit
16
- } from "../chunk-5MERXOLJ.js";
17
- import "../chunk-VP527YC5.js";
16
+ } from "../chunk-NRX5WHHN.js";
17
+ import "../chunk-BYIU4WAQ.js";
18
18
  import {
19
19
  getSession
20
- } from "../chunk-KUWJJD6O.js";
21
- import "../chunk-FCUXFLNK.js";
20
+ } from "../chunk-TSR33JMZ.js";
21
+ import "../chunk-VY6IWBSK.js";
22
22
  import "../chunk-AIBH32FN.js";
23
23
  import "../chunk-YPXI7Q2M.js";
24
- import "../chunk-KGBKIJPF.js";
25
- import "../chunk-BCIFFAGW.js";
26
- import "../chunk-I26QP3A3.js";
24
+ import "../chunk-7JAUY5SG.js";
25
+ import "../chunk-M3752GFZ.js";
26
+ import "../chunk-UQZFFG7U.js";
27
27
  import "../chunk-F4WUVOLE.js";
28
- import "../chunk-GQYSSSVA.js";
28
+ import "../chunk-UGH5JDXX.js";
29
29
  import "../chunk-HFDLUBWN.js";
30
- import "../chunk-PZNAQBHQ.js";
31
- import "../chunk-ILHIHMO3.js";
30
+ import "../chunk-FILGQF2G.js";
31
+ import "../chunk-VC5DELR4.js";
32
32
  import {
33
33
  getDb,
34
34
  init_client
35
- } from "../chunk-W3JMIUHV.js";
36
- import "../chunk-2YZOIFVN.js";
35
+ } from "../chunk-KQTTKYZY.js";
36
+ import "../chunk-P4NU74SP.js";
37
37
  import "../chunk-2ESYSVXG.js";
38
38
 
39
39
  // src/sync/file-sync.ts
@@ -0,0 +1,79 @@
1
+ import "../chunk-2ESYSVXG.js";
2
+
3
+ // src/sync/memory-sync.ts
4
+ async function syncMemoryStores(opts) {
5
+ const { sessionId, sandboxName, provider, secrets } = opts;
6
+ const { listResources } = await import("../db/session-resources.js");
7
+ const { getMemoryStore, listMemories, createOrUpsertMemory, getMemoryByPath, deleteMemory } = await import("../db/memory.js");
8
+ const resources = listResources(sessionId);
9
+ const memStoreResources = resources.filter(
10
+ (r) => r.type === "memory_store" && r.memory_store_id && r.access === "read_write"
11
+ );
12
+ if (memStoreResources.length === 0) return;
13
+ for (const r of memStoreResources) {
14
+ const store = getMemoryStore(r.memory_store_id);
15
+ if (!store) continue;
16
+ const storeName = store.name.replace(/[^a-zA-Z0-9_.-]/g, "_");
17
+ const storeDir = `/mnt/memory/${storeName}`;
18
+ let containerPaths;
19
+ try {
20
+ const result = await provider.exec(
21
+ sandboxName,
22
+ ["find", storeDir, "-type", "f"],
23
+ { secrets, timeoutMs: 1e4 }
24
+ );
25
+ if (result.exit_code !== 0 || !result.stdout.trim()) {
26
+ containerPaths = [];
27
+ } else {
28
+ const clean = result.stdout.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, "");
29
+ containerPaths = clean.trim().split("\n").map((l) => l.trim()).filter(Boolean);
30
+ }
31
+ } catch (err) {
32
+ console.warn(`[memory-sync] failed to list files in ${storeDir}:`, err);
33
+ continue;
34
+ }
35
+ const prefix = storeDir.endsWith("/") ? storeDir : `${storeDir}/`;
36
+ const containerFileMap = /* @__PURE__ */ new Map();
37
+ for (const absPath of containerPaths) {
38
+ if (absPath.startsWith(prefix)) {
39
+ const relPath = absPath.slice(prefix.length);
40
+ if (relPath) containerFileMap.set(relPath, absPath);
41
+ }
42
+ }
43
+ const dbMemories = listMemories(store.id);
44
+ const dbMemoryMap = new Map(dbMemories.map((m) => [m.path, m]));
45
+ for (const [relPath, absPath] of containerFileMap) {
46
+ try {
47
+ const result = await provider.exec(
48
+ sandboxName,
49
+ ["cat", "--", absPath],
50
+ { secrets, timeoutMs: 1e4 }
51
+ );
52
+ if (result.exit_code !== 0) continue;
53
+ const content = result.stdout.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F]/g, "");
54
+ const existing = dbMemoryMap.get(relPath);
55
+ if (existing) {
56
+ if (existing.content !== content) {
57
+ createOrUpsertMemory(store.id, relPath, content, sessionId);
58
+ }
59
+ } else {
60
+ createOrUpsertMemory(store.id, relPath, content, sessionId);
61
+ }
62
+ } catch (err) {
63
+ console.warn(`[memory-sync] failed to read ${absPath}:`, err);
64
+ }
65
+ }
66
+ for (const [path, mem] of dbMemoryMap) {
67
+ if (!containerFileMap.has(path)) {
68
+ try {
69
+ deleteMemory(mem.id, sessionId);
70
+ } catch (err) {
71
+ console.warn(`[memory-sync] failed to delete memory ${mem.id}:`, err);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ export {
78
+ syncMemoryStores
79
+ };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "license": "Apache-2.0",
3
3
  "name": "@agentstep/agent-sdk",
4
- "version": "0.5.1",
4
+ "version": "0.5.3",
5
5
  "description": "Core engine for AgentStep Gateway \u2014 backends, sandbox providers, session orchestration, and vault encryption.",
6
6
  "keywords": [
7
7
  "anthropic",
@@ -1,48 +0,0 @@
1
- import {
2
- assertResourceTenant,
3
- tenantFilter
4
- } from "./chunk-23UKWXJH.js";
5
- import {
6
- paginatedOk,
7
- routeWrap
8
- } from "./chunk-T3IGOI6Z.js";
9
- import {
10
- getSession,
11
- listSessions
12
- } from "./chunk-KUWJJD6O.js";
13
- import {
14
- getDb,
15
- init_client
16
- } from "./chunk-W3JMIUHV.js";
17
- import {
18
- notFound
19
- } from "./chunk-EZYKRG4W.js";
20
-
21
- // src/handlers/threads.ts
22
- init_client();
23
- function handleListThreads(request, sessionId) {
24
- return routeWrap(request, async ({ auth }) => {
25
- const row = getDb().prepare(`SELECT tenant_id FROM sessions WHERE id = ?`).get(sessionId);
26
- if (!row) throw notFound(`session ${sessionId} not found`);
27
- assertResourceTenant(auth, row.tenant_id, `session ${sessionId} not found`);
28
- const session = getSession(sessionId);
29
- if (!session) throw notFound(`session ${sessionId} not found`);
30
- const url = new URL(request.url);
31
- const limit = url.searchParams.get("limit");
32
- const order = url.searchParams.get("order");
33
- const requestedLimit = limit ? Number(limit) : 50;
34
- const data = listSessions({
35
- parent_session_id: sessionId,
36
- limit: requestedLimit,
37
- order: order ?? void 0,
38
- includeArchived: true,
39
- // show all threads including completed ones
40
- tenantFilter: tenantFilter(auth)
41
- });
42
- return paginatedOk(data, requestedLimit);
43
- });
44
- }
45
-
46
- export {
47
- handleListThreads
48
- };
File without changes
@@ -1,11 +1,11 @@
1
+ import {
2
+ VERSION
3
+ } from "./chunk-Q6TYCTYR.js";
1
4
  import {
2
5
  require_auth_errors,
3
6
  require_token_error,
4
7
  require_token_util
5
8
  } from "./chunk-H7PKMOSH.js";
6
- import {
7
- VERSION
8
- } from "./chunk-Q6TYCTYR.js";
9
9
  import {
10
10
  __commonJS,
11
11
  __require,