@anthropic-ai/sdk 0.118.0 → 0.120.0

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 (250) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/client.d.mts +8 -2
  3. package/client.d.mts.map +1 -1
  4. package/client.d.ts +8 -2
  5. package/client.d.ts.map +1 -1
  6. package/client.js +6 -0
  7. package/client.js.map +1 -1
  8. package/client.mjs +6 -0
  9. package/client.mjs.map +1 -1
  10. package/helpers/beta/environments.d.mts +5 -4
  11. package/helpers/beta/environments.d.mts.map +1 -1
  12. package/helpers/beta/environments.d.ts +5 -4
  13. package/helpers/beta/environments.d.ts.map +1 -1
  14. package/helpers/beta/environments.js +5 -4
  15. package/helpers/beta/environments.js.map +1 -1
  16. package/helpers/beta/environments.mjs +5 -4
  17. package/helpers/beta/environments.mjs.map +1 -1
  18. package/internal/file-store.d.mts +136 -0
  19. package/internal/file-store.d.mts.map +1 -0
  20. package/internal/file-store.d.ts +136 -0
  21. package/internal/file-store.d.ts.map +1 -0
  22. package/internal/file-store.js +531 -0
  23. package/internal/file-store.js.map +1 -0
  24. package/internal/file-store.mjs +523 -0
  25. package/internal/file-store.mjs.map +1 -0
  26. package/lib/environments/poller.d.mts +6 -0
  27. package/lib/environments/poller.d.mts.map +1 -1
  28. package/lib/environments/poller.d.ts +6 -0
  29. package/lib/environments/poller.d.ts.map +1 -1
  30. package/lib/environments/poller.js +46 -1
  31. package/lib/environments/poller.js.map +1 -1
  32. package/lib/environments/poller.mjs +46 -1
  33. package/lib/environments/poller.mjs.map +1 -1
  34. package/lib/environments/worker.d.mts +89 -12
  35. package/lib/environments/worker.d.mts.map +1 -1
  36. package/lib/environments/worker.d.ts +89 -12
  37. package/lib/environments/worker.d.ts.map +1 -1
  38. package/lib/environments/worker.js +336 -67
  39. package/lib/environments/worker.js.map +1 -1
  40. package/lib/environments/worker.mjs +336 -68
  41. package/lib/environments/worker.mjs.map +1 -1
  42. package/lib/tools/BetaRunnableTool.d.mts +4 -1
  43. package/lib/tools/BetaRunnableTool.d.mts.map +1 -1
  44. package/lib/tools/BetaRunnableTool.d.ts +4 -1
  45. package/lib/tools/BetaRunnableTool.d.ts.map +1 -1
  46. package/lib/tools/BetaRunnableTool.js +7 -2
  47. package/lib/tools/BetaRunnableTool.js.map +1 -1
  48. package/lib/tools/BetaRunnableTool.mjs +7 -2
  49. package/lib/tools/BetaRunnableTool.mjs.map +1 -1
  50. package/lib/tools/BetaToolRunner.d.mts.map +1 -1
  51. package/lib/tools/BetaToolRunner.d.ts.map +1 -1
  52. package/lib/tools/BetaToolRunner.js +3 -1
  53. package/lib/tools/BetaToolRunner.js.map +1 -1
  54. package/lib/tools/BetaToolRunner.mjs +3 -1
  55. package/lib/tools/BetaToolRunner.mjs.map +1 -1
  56. package/package.json +1 -1
  57. package/resources/beta/agents/agents.d.mts +322 -27
  58. package/resources/beta/agents/agents.d.mts.map +1 -1
  59. package/resources/beta/agents/agents.d.ts +322 -27
  60. package/resources/beta/agents/agents.d.ts.map +1 -1
  61. package/resources/beta/agents/agents.js.map +1 -1
  62. package/resources/beta/agents/agents.mjs.map +1 -1
  63. package/resources/beta/agents/index.d.mts +1 -1
  64. package/resources/beta/agents/index.d.mts.map +1 -1
  65. package/resources/beta/agents/index.d.ts +1 -1
  66. package/resources/beta/agents/index.d.ts.map +1 -1
  67. package/resources/beta/agents/index.js.map +1 -1
  68. package/resources/beta/agents/index.mjs.map +1 -1
  69. package/resources/beta/beta.d.mts +6 -6
  70. package/resources/beta/beta.d.mts.map +1 -1
  71. package/resources/beta/beta.d.ts +6 -6
  72. package/resources/beta/beta.d.ts.map +1 -1
  73. package/resources/beta/beta.js.map +1 -1
  74. package/resources/beta/beta.mjs.map +1 -1
  75. package/resources/beta/environments/work.d.mts +5 -1
  76. package/resources/beta/environments/work.d.mts.map +1 -1
  77. package/resources/beta/environments/work.d.ts +5 -1
  78. package/resources/beta/environments/work.d.ts.map +1 -1
  79. package/resources/beta/environments/work.js +0 -17
  80. package/resources/beta/environments/work.js.map +1 -1
  81. package/resources/beta/environments/work.mjs +0 -17
  82. package/resources/beta/environments/work.mjs.map +1 -1
  83. package/resources/beta/files.d.mts +22 -22
  84. package/resources/beta/files.d.mts.map +1 -1
  85. package/resources/beta/files.d.ts +22 -22
  86. package/resources/beta/files.d.ts.map +1 -1
  87. package/resources/beta/files.js +4 -4
  88. package/resources/beta/files.js.map +1 -1
  89. package/resources/beta/files.mjs +4 -4
  90. package/resources/beta/files.mjs.map +1 -1
  91. package/resources/beta/index.d.mts +3 -3
  92. package/resources/beta/index.d.mts.map +1 -1
  93. package/resources/beta/index.d.ts +3 -3
  94. package/resources/beta/index.d.ts.map +1 -1
  95. package/resources/beta/index.js.map +1 -1
  96. package/resources/beta/index.mjs.map +1 -1
  97. package/resources/beta/messages/index.d.mts +1 -1
  98. package/resources/beta/messages/index.d.mts.map +1 -1
  99. package/resources/beta/messages/index.d.ts +1 -1
  100. package/resources/beta/messages/index.d.ts.map +1 -1
  101. package/resources/beta/messages/index.js.map +1 -1
  102. package/resources/beta/messages/index.mjs.map +1 -1
  103. package/resources/beta/messages/messages.d.mts +1202 -5
  104. package/resources/beta/messages/messages.d.mts.map +1 -1
  105. package/resources/beta/messages/messages.d.ts +1202 -5
  106. package/resources/beta/messages/messages.d.ts.map +1 -1
  107. package/resources/beta/messages/messages.js.map +1 -1
  108. package/resources/beta/messages/messages.mjs.map +1 -1
  109. package/resources/files.d.mts +105 -0
  110. package/resources/files.d.mts.map +1 -0
  111. package/resources/files.d.ts +105 -0
  112. package/resources/files.d.ts.map +1 -0
  113. package/resources/files.js +52 -0
  114. package/resources/files.js.map +1 -0
  115. package/resources/files.mjs +48 -0
  116. package/resources/files.mjs.map +1 -0
  117. package/resources/index.d.mts +3 -1
  118. package/resources/index.d.mts.map +1 -1
  119. package/resources/index.d.ts +3 -1
  120. package/resources/index.d.ts.map +1 -1
  121. package/resources/index.js +5 -1
  122. package/resources/index.js.map +1 -1
  123. package/resources/index.mjs +2 -0
  124. package/resources/index.mjs.map +1 -1
  125. package/resources/messages/index.d.mts +1 -1
  126. package/resources/messages/index.d.mts.map +1 -1
  127. package/resources/messages/index.d.ts +1 -1
  128. package/resources/messages/index.d.ts.map +1 -1
  129. package/resources/messages/index.js.map +1 -1
  130. package/resources/messages/index.mjs.map +1 -1
  131. package/resources/messages/messages.d.mts +1267 -7
  132. package/resources/messages/messages.d.mts.map +1 -1
  133. package/resources/messages/messages.d.ts +1267 -7
  134. package/resources/messages/messages.d.ts.map +1 -1
  135. package/resources/messages/messages.js.map +1 -1
  136. package/resources/messages/messages.mjs.map +1 -1
  137. package/resources/skills/index.d.mts +3 -0
  138. package/resources/skills/index.d.mts.map +1 -0
  139. package/resources/skills/index.d.ts +3 -0
  140. package/resources/skills/index.d.ts.map +1 -0
  141. package/resources/skills/index.js +9 -0
  142. package/resources/skills/index.js.map +1 -0
  143. package/resources/skills/index.mjs +4 -0
  144. package/resources/skills/index.mjs.map +1 -0
  145. package/resources/skills/skills.d.mts +129 -0
  146. package/resources/skills/skills.d.mts.map +1 -0
  147. package/resources/skills/skills.d.ts +129 -0
  148. package/resources/skills/skills.d.ts.map +1 -0
  149. package/resources/skills/skills.js +44 -0
  150. package/resources/skills/skills.js.map +1 -0
  151. package/resources/skills/skills.mjs +39 -0
  152. package/resources/skills/skills.mjs.map +1 -0
  153. package/resources/skills/versions.d.mts +104 -0
  154. package/resources/skills/versions.d.mts.map +1 -0
  155. package/resources/skills/versions.d.ts +104 -0
  156. package/resources/skills/versions.d.ts.map +1 -0
  157. package/resources/skills/versions.js +41 -0
  158. package/resources/skills/versions.js.map +1 -0
  159. package/resources/skills/versions.mjs +37 -0
  160. package/resources/skills/versions.mjs.map +1 -0
  161. package/resources/skills.d.mts +2 -0
  162. package/resources/skills.d.mts.map +1 -0
  163. package/resources/skills.d.ts +2 -0
  164. package/resources/skills.d.ts.map +1 -0
  165. package/resources/skills.js +6 -0
  166. package/resources/skills.js.map +1 -0
  167. package/resources/skills.mjs +3 -0
  168. package/resources/skills.mjs.map +1 -0
  169. package/src/client.ts +172 -0
  170. package/src/helpers/beta/environments.ts +5 -4
  171. package/src/internal/file-store.ts +550 -0
  172. package/src/lib/environments/poller.ts +47 -1
  173. package/src/lib/environments/worker.ts +419 -79
  174. package/src/lib/tools/BetaRunnableTool.ts +9 -2
  175. package/src/lib/tools/BetaToolRunner.ts +6 -1
  176. package/src/resources/beta/agents/agents.ts +435 -30
  177. package/src/resources/beta/agents/index.ts +17 -0
  178. package/src/resources/beta/beta.ts +160 -6
  179. package/src/resources/beta/environments/work.ts +7 -0
  180. package/src/resources/beta/files.ts +27 -27
  181. package/src/resources/beta/index.ts +80 -3
  182. package/src/resources/beta/messages/index.ts +60 -0
  183. package/src/resources/beta/messages/messages.ts +1865 -415
  184. package/src/resources/files.ts +163 -0
  185. package/src/resources/index.ts +83 -0
  186. package/src/resources/messages/index.ts +66 -0
  187. package/src/resources/messages/messages.ts +1648 -115
  188. package/src/resources/skills/index.ts +21 -0
  189. package/src/resources/skills/skills.ts +194 -0
  190. package/src/resources/skills/versions.ts +160 -0
  191. package/src/resources/skills.ts +3 -0
  192. package/src/tools/agent-toolset/fs-util.ts +40 -24
  193. package/src/tools/agent-toolset/memories.ts +1017 -0
  194. package/src/tools/agent-toolset/node.browser.ts +68 -0
  195. package/src/tools/agent-toolset/node.ts +139 -53
  196. package/src/tools/agent-toolset/skills.ts +29 -9
  197. package/src/tools/agent-toolset/sync-interval.ts +30 -0
  198. package/src/version.ts +1 -1
  199. package/tools/agent-toolset/fs-util.d.mts +23 -10
  200. package/tools/agent-toolset/fs-util.d.mts.map +1 -1
  201. package/tools/agent-toolset/fs-util.d.ts +23 -10
  202. package/tools/agent-toolset/fs-util.d.ts.map +1 -1
  203. package/tools/agent-toolset/fs-util.js +40 -25
  204. package/tools/agent-toolset/fs-util.js.map +1 -1
  205. package/tools/agent-toolset/fs-util.mjs +38 -25
  206. package/tools/agent-toolset/fs-util.mjs.map +1 -1
  207. package/tools/agent-toolset/memories.d.mts +173 -0
  208. package/tools/agent-toolset/memories.d.mts.map +1 -0
  209. package/tools/agent-toolset/memories.d.ts +173 -0
  210. package/tools/agent-toolset/memories.d.ts.map +1 -0
  211. package/tools/agent-toolset/memories.js +902 -0
  212. package/tools/agent-toolset/memories.js.map +1 -0
  213. package/tools/agent-toolset/memories.mjs +895 -0
  214. package/tools/agent-toolset/memories.mjs.map +1 -0
  215. package/tools/agent-toolset/node.browser.d.mts +31 -0
  216. package/tools/agent-toolset/node.browser.d.mts.map +1 -1
  217. package/tools/agent-toolset/node.browser.d.ts +31 -0
  218. package/tools/agent-toolset/node.browser.d.ts.map +1 -1
  219. package/tools/agent-toolset/node.browser.js +59 -1
  220. package/tools/agent-toolset/node.browser.js.map +1 -1
  221. package/tools/agent-toolset/node.browser.mjs +54 -0
  222. package/tools/agent-toolset/node.browser.mjs.map +1 -1
  223. package/tools/agent-toolset/node.d.mts +54 -22
  224. package/tools/agent-toolset/node.d.mts.map +1 -1
  225. package/tools/agent-toolset/node.d.ts +54 -22
  226. package/tools/agent-toolset/node.d.ts.map +1 -1
  227. package/tools/agent-toolset/node.js +83 -44
  228. package/tools/agent-toolset/node.js.map +1 -1
  229. package/tools/agent-toolset/node.mjs +77 -44
  230. package/tools/agent-toolset/node.mjs.map +1 -1
  231. package/tools/agent-toolset/skills.d.mts +16 -7
  232. package/tools/agent-toolset/skills.d.mts.map +1 -1
  233. package/tools/agent-toolset/skills.d.ts +16 -7
  234. package/tools/agent-toolset/skills.d.ts.map +1 -1
  235. package/tools/agent-toolset/skills.js +27 -9
  236. package/tools/agent-toolset/skills.js.map +1 -1
  237. package/tools/agent-toolset/skills.mjs +27 -9
  238. package/tools/agent-toolset/skills.mjs.map +1 -1
  239. package/tools/agent-toolset/sync-interval.d.mts +19 -0
  240. package/tools/agent-toolset/sync-interval.d.mts.map +1 -0
  241. package/tools/agent-toolset/sync-interval.d.ts +19 -0
  242. package/tools/agent-toolset/sync-interval.d.ts.map +1 -0
  243. package/tools/agent-toolset/sync-interval.js +29 -0
  244. package/tools/agent-toolset/sync-interval.js.map +1 -0
  245. package/tools/agent-toolset/sync-interval.mjs +25 -0
  246. package/tools/agent-toolset/sync-interval.mjs.map +1 -0
  247. package/version.d.mts +1 -1
  248. package/version.d.ts +1 -1
  249. package/version.js +1 -1
  250. package/version.mjs +1 -1
@@ -1,18 +1,58 @@
1
- var _EnvironmentWorker_instances, _EnvironmentWorker_signal, _EnvironmentWorker_handleItem;
1
+ var _EnvironmentWorker_instances, _EnvironmentWorker_signal, _EnvironmentWorker_handleItem, _Lease_ctrl, _Lease_endReason;
2
2
  import { __classPrivateFieldGet, __classPrivateFieldSet } from "../../internal/tslib.mjs";
3
- import { AnthropicError } from "../../core/error.mjs";
3
+ import { AnthropicError, APIError } from "../../core/error.mjs";
4
4
  import { loggerFor } from "../../internal/utils/log.mjs";
5
+ import { fromBase64 } from "../../internal/utils/base64.mjs";
6
+ import { decodeUTF8 } from "../../internal/utils/bytes.mjs";
5
7
  import { readEnv } from "../../internal/utils/env.mjs";
6
8
  import { sleep } from "../../internal/utils/sleep.mjs";
7
9
  import { isFatal4xx, isStatus } from "../../internal/utils/backoff.mjs";
8
10
  import { linkAbort } from "../../internal/utils/abort.mjs";
11
+ import { isObj } from "../../internal/utils/values.mjs";
9
12
  import { buildHeaders } from "../../internal/headers.mjs";
10
13
  import { SessionToolRunner } from "../tools/SessionToolRunner.mjs";
11
14
  import { WorkPoller } from "./poller.mjs";
12
15
  import { copyClientForHelper } from "../helper-client.mjs";
16
+ import { checkMemorySyncInterval } from "../../tools/agent-toolset/sync-interval.mjs";
13
17
  const HEARTBEAT_DEFAULT_MS = 30000;
14
18
  const HEARTBEAT_TTL_DEFAULT_MS = 90000;
15
19
  const NO_HEARTBEAT_SENTINEL = 'NO_HEARTBEAT';
20
+ /** True when the session has at least one memory store attached. */
21
+ function hasMemoryStore(session) {
22
+ return session.resources.some((r) => r.type === 'memory_store');
23
+ }
24
+ /**
25
+ * Extract the per-item sessions token from a work item's `secret` payload.
26
+ *
27
+ * The `secret` the poll response populates is not itself a credential: it is a
28
+ * URL-safe base64 JSON payload matching {@link BetaWorkSecret} — the
29
+ * `sessions_token` (the bearer for this item's work lifecycle and
30
+ * session-level calls) plus fields this worker does not consume. Returns the
31
+ * sessions token, or `null` (meaning: fall back to the environment key) when
32
+ * the payload is missing, doesn't decode, or carries no token. Never log the
33
+ * payload or anything extracted from it.
34
+ */
35
+ export function sessionsTokenFromSecret(secret) {
36
+ if (!secret)
37
+ return null;
38
+ let parsed;
39
+ try {
40
+ // The payload may arrive URL-safe and without base64 padding; normalize
41
+ // both before decoding.
42
+ const normalized = secret.replace(/-/g, '+').replace(/_/g, '/');
43
+ const padded = normalized.padEnd(Math.ceil(normalized.length / 4) * 4, '=');
44
+ parsed = JSON.parse(decodeUTF8(fromBase64(padded)));
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
50
+ return null;
51
+ // The payload is untrusted input, so the token is still checked at runtime
52
+ // rather than trusted to match the schema.
53
+ const token = parsed.sessions_token;
54
+ return typeof token === 'string' && token !== '' ? token : null;
55
+ }
16
56
  /**
17
57
  * The self-hosted environment runner, composed from the control-plane
18
58
  * {@link WorkPoller} and the per-session {@link SessionToolRunner}.
@@ -21,9 +61,17 @@ const NO_HEARTBEAT_SENTINEL = 'NO_HEARTBEAT';
21
61
  * {@link AgentToolContext}, downloads the session agent's skills
22
62
  * (`setupSkills`), then runs a {@link SessionToolRunner} for the session
23
63
  * while heartbeating the work-item lease on the same event loop; on exit it
24
- * force-stops the work item, cleans up the downloaded skills, and loops to the
25
- * next one. The lease heartbeat reports `state === "stopping"` / a lost lease
26
- * back into the run by aborting the session runner.
64
+ * force-stops the work item (unless the lease was lost, in which case the item
65
+ * is left to whoever holds it now), cleans up the downloaded skills, and loops
66
+ * to the next one. The lease heartbeat reports `state === "stopping"` / a lost
67
+ * lease back into the run by aborting the session runner.
68
+ *
69
+ * The `environmentKey` is the worker's standing credential. When a claimed
70
+ * work item carries a per-item `secret` (a short-lived payload the poll
71
+ * response may populate), the sessions token extracted from it is preferred
72
+ * over the environment key for that item's heartbeat / force-stop /
73
+ * skill-download / session calls; polling itself always uses the environment
74
+ * key, and items without a usable secret fall back to it entirely.
27
75
  *
28
76
  * Use {@link EnvironmentWorker.handleItem} if you already hold a claimed work
29
77
  * item (e.g. a `worker poll --on-work` script handed one to a fresh process) and
@@ -48,14 +96,26 @@ export class EnvironmentWorker {
48
96
  constructor(opts) {
49
97
  _EnvironmentWorker_instances.add(this);
50
98
  _EnvironmentWorker_signal.set(this, void 0);
99
+ if (opts.unrestrictedPaths !== undefined) {
100
+ throw new AnthropicError('The `unrestrictedPaths` option you passed to EnvironmentWorker (or ' +
101
+ 'client.beta.environments.work.worker()) is no longer supported. ' +
102
+ "The worker's file tools (read, write, edit, glob, grep) are now always confined to `workdir` " +
103
+ "plus the session's memory folders. Remove `unrestrictedPaths` from your options; to let the " +
104
+ 'file tools reach any other directory, add it to `AgentToolContext.allowedRoots` from a ' +
105
+ '`tools` factory.');
106
+ }
51
107
  this.client = opts.client;
52
108
  this.environmentId = opts.environmentId;
53
109
  this.environmentKey = opts.environmentKey;
54
110
  this.tools = opts.tools;
55
111
  this.workdir = opts.workdir ?? process.cwd();
56
- this.unrestrictedPaths = opts.unrestrictedPaths;
57
112
  this.maxFileBytes = opts.maxFileBytes;
58
113
  this.maxIdleMs = opts.maxIdleMs;
114
+ if (opts.memorySyncIntervalMs != null) {
115
+ checkMemorySyncInterval(opts.memorySyncIntervalMs, 'memorySyncIntervalMs');
116
+ }
117
+ this.memorySyncIntervalMs = opts.memorySyncIntervalMs;
118
+ this.memorySyncDeletions = opts.memorySyncDeletions ?? 'enabled';
59
119
  this.workerId = opts.workerId;
60
120
  this.requestOptions = opts.requestOptions;
61
121
  __classPrivateFieldSet(this, _EnvironmentWorker_signal, opts.signal, "f");
@@ -78,12 +138,24 @@ export class EnvironmentWorker {
78
138
  ...(this.workerId !== undefined ? { workerId: this.workerId } : {}),
79
139
  ...(externalSignal ? { signal: externalSignal } : {}),
80
140
  ...(this.requestOptions !== undefined ? { requestOptions: this.requestOptions } : {}),
81
- // The per-item handler force-stops every work item on exit; let it be the
82
- // single owner of `work.stop` rather than double-posting from the poller.
141
+ // The per-item handler stops or releases every work item on exit; let it
142
+ // be the single owner of `work.stop` rather than double-posting from the
143
+ // poller.
83
144
  autoStop: false,
84
145
  });
85
146
  for await (const work of poller) {
86
- await __classPrivateFieldGet(this, _EnvironmentWorker_instances, "m", _EnvironmentWorker_handleItem).call(this, work, environmentKey, poller.signal);
147
+ try {
148
+ await __classPrivateFieldGet(this, _EnvironmentWorker_instances, "m", _EnvironmentWorker_handleItem).call(this, work, environmentKey, poller.signal);
149
+ }
150
+ catch (e) {
151
+ // One bad item fails that item, not the worker: the handler's teardown
152
+ // already stopped or released it, so the next poll claims the next
153
+ // item. A store directory left behind by a killed worker would
154
+ // otherwise crashloop this process forever.
155
+ if (poller.signal?.aborted)
156
+ throw e;
157
+ loggerFor(this.client).error('work item failed', { work_id: work.id, error: String(e) });
158
+ }
87
159
  }
88
160
  }
89
161
  /**
@@ -92,7 +164,9 @@ export class EnvironmentWorker {
92
164
  * download the session agent's skills (`setupSkills`), run a
93
165
  * {@link SessionToolRunner} for the session while heartbeating the work-item
94
166
  * lease, and force-stop the work item on exit (whether the runner finishes
95
- * normally, throws, or the heartbeat loop signals shutdown).
167
+ * normally, throws, or the control plane signals shutdown). The one
168
+ * exception is a lost lease: the item then belongs to the queue or another
169
+ * worker and is left alone.
96
170
  *
97
171
  * Use this when something else does the claiming — e.g. a `worker poll
98
172
  * --on-work` script that hands an already-claimed item to a fresh process. The
@@ -102,13 +176,25 @@ export class EnvironmentWorker {
102
176
  * option, then the worker's own `environmentKey`, then
103
177
  * `ANTHROPIC_ENVIRONMENT_KEY`. With no arguments inside that command it just
104
178
  * works. Throws a clear error naming the first of the four required values
105
- * still missing after resolution.
179
+ * still missing after resolution. Throws `SessionMemoryError` when the
180
+ * session has memory stores attached but they cannot be mounted — the work
181
+ * item carried no sessions token (unless `memorySyncIntervalMs` turned
182
+ * memory off), or a store failed to download.
183
+ *
184
+ * `workSecret` is the work item's per-item `secret` payload from the poll
185
+ * response, falling back to `ANTHROPIC_WORK_SECRET`; unlike the others it is
186
+ * optional — when present, the sessions token extracted from it is preferred
187
+ * as the Bearer credential for this item's heartbeat / force-stop / session
188
+ * calls; when absent (or undecodable) those calls use the environment key.
106
189
  */
107
190
  async handleItem(opts) {
108
191
  const workId = opts?.workId ?? readEnv('ANTHROPIC_WORK_ID');
109
192
  const environmentId = opts?.environmentId ?? readEnv('ANTHROPIC_ENVIRONMENT_ID');
110
193
  const sessionId = opts?.sessionId ?? readEnv('ANTHROPIC_SESSION_ID');
111
194
  const environmentKey = opts?.environmentKey ?? this.environmentKey ?? readEnv('ANTHROPIC_ENVIRONMENT_KEY');
195
+ // `||` rather than `??` so an empty option still falls through to the env
196
+ // var and then to null (matching how `readEnv` treats empty values).
197
+ const workSecret = opts?.workSecret || readEnv('ANTHROPIC_WORK_SECRET') || null;
112
198
  if (!workId) {
113
199
  throw new AnthropicError('handleItem: workId is required — pass it or set ANTHROPIC_WORK_ID');
114
200
  }
@@ -124,6 +210,7 @@ export class EnvironmentWorker {
124
210
  const work = {
125
211
  id: workId,
126
212
  environment_id: environmentId,
213
+ secret: workSecret,
127
214
  data: { type: 'session', id: sessionId },
128
215
  };
129
216
  await __classPrivateFieldGet(this, _EnvironmentWorker_instances, "m", _EnvironmentWorker_handleItem).call(this, work, environmentKey, opts?.signal ?? __classPrivateFieldGet(this, _EnvironmentWorker_signal, "f"));
@@ -133,80 +220,213 @@ _EnvironmentWorker_signal = new WeakMap(), _EnvironmentWorker_instances = new We
133
220
  /**
134
221
  * The per-item body shared by {@link EnvironmentWorker.run}'s poll loop and
135
222
  * {@link EnvironmentWorker.handleItem}: run a {@link SessionToolRunner} for the
136
- * work item's session while heartbeating its lease, force-stopping on exit.
137
- * Non-session work items are ignored.
223
+ * work item's session while heartbeating its lease, force-stopping on exit
224
+ * unless the lease was lost. Non-session work items are ignored.
225
+ *
226
+ * When the poll response carried a per-item `secret` (a short-lived payload
227
+ * scoped to this work item), the sessions token extracted from it is
228
+ * preferred over `environmentKey` as the Bearer credential for those
229
+ * per-item calls; a missing/undecodable secret falls back to
230
+ * `environmentKey` unchanged.
138
231
  */
139
232
  async function _EnvironmentWorker_handleItem(work, environmentKey, externalSignal) {
140
233
  const log = loggerFor(this.client);
234
+ // The per-item credential: the sessions token carried inside the work
235
+ // item's secret payload when the server issued one, otherwise the
236
+ // environment key. Never log this value.
237
+ const sessionsToken = sessionsTokenFromSecret(work.secret);
238
+ if (work.secret && sessionsToken === null) {
239
+ log.warn('work item carried a secret payload but no sessions token could be extracted; ' +
240
+ 'falling back to the environment key', { work_id: work.id });
241
+ }
242
+ const itemCredential = sessionsToken ?? environmentKey;
141
243
  // Every per-session call — the SessionToolRunner event stream/list/send, the
142
- // lease heartbeat, and the work force-stop — authenticates with the
143
- // environment key. Scope a client to it once and thread that through.
144
- // `copyClientForHelper` also clears the parent's `apiKey`, so the sub-client
145
- // emits *only* the bearer credential on the wire (a plain
146
- // `withOptions({authToken})` would leave `X-Api-Key` set as well).
244
+ // lease heartbeat, the skill download, and the work force-stop —
245
+ // authenticates with the per-item credential. Scope a client to it once and
246
+ // thread that through. `copyClientForHelper` also clears the parent's
247
+ // `apiKey`, so the sub-client emits *only* the bearer credential on the
248
+ // wire (a plain `withOptions({authToken})` would leave `X-Api-Key` set as
249
+ // well).
147
250
  const sessionClient = copyClientForHelper(this.client, {
148
- authToken: environmentKey,
251
+ authToken: itemCredential,
149
252
  helper: 'environments-worker',
150
253
  });
151
254
  // The poller runs with `autoStop: false`, so the per-item handler is the
152
255
  // single owner of `work.stop` for every claimed item.
153
256
  const sessionId = work.data.id;
154
- const ctx = {
155
- workdir: this.workdir,
156
- client: this.client,
157
- sessionId,
158
- ...(this.unrestrictedPaths !== undefined ? { unrestrictedPaths: this.unrestrictedPaths } : {}),
159
- ...(this.maxFileBytes !== undefined ? { maxFileBytes: this.maxFileBytes } : {}),
160
- };
161
- // Lazily load the Node-only toolset module — see the import note at the top.
162
- const agentToolset = await import("../../tools/agent-toolset/node.mjs");
163
- let cleanupSkills = async () => { };
164
- try {
165
- cleanupSkills = await agentToolset.setupSkills(ctx);
166
- }
167
- catch (e) {
168
- log.warn('skill setup failed', { session_id: sessionId, work_id: work.id, error: String(e) });
169
- }
170
- const tools = typeof this.tools === 'function' ?
171
- this.tools(ctx)
172
- : this.tools ?? agentToolset.betaAgentToolset20260401(ctx);
173
257
  // A per-session controller: aborts when the supplied signal aborts, when the
174
258
  // session runner finishes, or when the lease heartbeat says to stop.
175
259
  const ctrl = new AbortController();
176
260
  const detachExternal = linkAbort(externalSignal, ctrl);
177
- // Inert until iterated below.
178
- const runner = new SessionToolRunner(sessionId, {
179
- client: sessionClient,
180
- tools,
181
- ...(this.maxIdleMs !== undefined ? { maxIdleMs: this.maxIdleMs } : {}),
182
- ...(this.requestOptions !== undefined ? { requestOptions: this.requestOptions } : {}),
183
- signal: ctrl.signal,
184
- });
261
+ const lease = new Lease(ctrl);
262
+ // Lazily load the Node-only toolset module — see the import note at the top.
263
+ const agentToolset = await import("../../tools/agent-toolset/node.mjs");
264
+ // Start the lease heartbeat BEFORE the session fetch and the skill /
265
+ // memory downloads: those can take longer than the lease TTL, and an
266
+ // unheartbeated lease lapsing mid-download would let another worker
267
+ // reclaim the item and serve the same session (split-brain).
268
+ //
185
269
  // Each heartbeat reports the lease TTL the server is enforcing; it becomes
186
270
  // the runner's tool-result send retry window so a send keeps retrying
187
- // exactly as long as the lease could still be live.
188
- const heartbeatPromise = heartbeatLoop(sessionClient, work, ctrl, log, this.requestOptions, (ttlMs) => runner._setSendRetryWindow(ttlMs)).catch((e) => {
271
+ // exactly as long as the lease could still be live. The runner is only
272
+ // built after the downloads, so hold the latest TTL until then.
273
+ let leaseTtlMs;
274
+ let runner;
275
+ const heartbeatPromise = heartbeatLoop(sessionClient, work, lease, log, this.requestOptions, (ttlMs) => {
276
+ leaseTtlMs = ttlMs;
277
+ runner?._setSendRetryWindow(ttlMs);
278
+ }).catch((e) => {
189
279
  if (!ctrl.signal.aborted)
190
280
  log.error('heartbeat loop failed', { work_id: work.id, error: String(e) });
191
281
  ctrl.abort();
192
282
  });
283
+ let cleanupSkills = async () => { };
284
+ let stores;
285
+ let cleanEnd = false;
193
286
  try {
287
+ if (work.data.type !== 'session') {
288
+ log.debug('skipping non-session work item', { work_id: work.id, type: work.data.type });
289
+ return;
290
+ }
291
+ // One session fetch, shared by the skills download and the memory-store
292
+ // download — two fetches could disagree about the attached resources.
293
+ // A failed fetch fails the work item (the teardown below still stops
294
+ // or releases it).
295
+ const session = await sessionClient.beta.sessions.retrieve(sessionId);
296
+ // Only with the session in hand can we tell one that simply has no
297
+ // memory from one whose memory we cannot mount. Turning memory off
298
+ // with the interval knob is a deliberate opt-out and stays quiet.
299
+ if (sessionsToken === null && this.memorySyncIntervalMs !== null && hasMemoryStore(session)) {
300
+ throw new agentToolset.SessionMemoryError(`cannot mount the session's memories: the work item carried no sessions token ` +
301
+ `(work_id=${work.id}, session_id=${sessionId}); ` +
302
+ 'the memory endpoints reject the environment key, so the poller must issue a per-item ' +
303
+ '`secret` carrying `sessions_token`, or set `memorySyncIntervalMs: null` to run without memory');
304
+ }
305
+ const ctx = {
306
+ workdir: this.workdir,
307
+ // The scoped sub-client, not the parent: the skill download
308
+ // `setupSkills` performs for this session rides the same per-item
309
+ // credential as every other per-item call.
310
+ client: sessionClient,
311
+ session,
312
+ ...(this.maxFileBytes !== undefined ? { maxFileBytes: this.maxFileBytes } : {}),
313
+ };
314
+ try {
315
+ cleanupSkills = await agentToolset.setupSkills(ctx);
316
+ }
317
+ catch (e) {
318
+ log.warn('skill setup failed', { session_id: sessionId, work_id: work.id, error: String(e) });
319
+ }
320
+ // Memory stores: the memory_stores endpoints accept the per-item sessions
321
+ // token but reject the environment key, so download and sync only run when
322
+ // the item carried a usable secret (and the interval is set).
323
+ // `sessionClient` is already scoped to that token then, so the memory
324
+ // calls ride the same sub-client. A store that cannot be materialised
325
+ // throws `SessionMemoryError` out of `download` and fails the item.
326
+ if (sessionsToken !== null && this.memorySyncIntervalMs !== null) {
327
+ stores = new agentToolset.SessionMemoryStores(sessionClient, {
328
+ workdir: this.workdir,
329
+ ...(this.memorySyncIntervalMs !== undefined ? { syncIntervalMs: this.memorySyncIntervalMs } : {}),
330
+ syncDeletions: this.memorySyncDeletions,
331
+ });
332
+ await stores.download(session);
333
+ // A store mounted outside the workdir must stay reachable by the file
334
+ // tools; read-only stores still refuse writes.
335
+ ctx.allowedRoots = stores.roots;
336
+ ctx.readOnlyRoots = stores.readOnlyRoots;
337
+ }
338
+ else {
339
+ log.debug('memory stores disabled for this item', { work_id: work.id });
340
+ }
341
+ const tools = typeof this.tools === 'function' ?
342
+ this.tools(ctx)
343
+ : this.tools ?? agentToolset.betaAgentToolset20260401(ctx);
344
+ runner = new SessionToolRunner(sessionId, {
345
+ client: sessionClient,
346
+ tools,
347
+ ...(this.maxIdleMs !== undefined ? { maxIdleMs: this.maxIdleMs } : {}),
348
+ ...(this.requestOptions !== undefined ? { requestOptions: this.requestOptions } : {}),
349
+ signal: ctrl.signal,
350
+ });
351
+ if (leaseTtlMs !== undefined)
352
+ runner._setSendRetryWindow(leaseTtlMs);
194
353
  for await (const _ of runner) {
195
354
  // Drive the runner to completion; per-call observability is not part
196
355
  // of this composition's surface — use `SessionToolRunner` directly
197
356
  // (via `client.beta.sessions.events.toolRunner`) if you want it.
357
+ if (stores)
358
+ await stores.syncIfDue();
198
359
  }
360
+ // Only a clean stream end earns the last full sync; it runs in the
361
+ // teardown below.
362
+ cleanEnd = !ctrl.signal.aborted;
199
363
  }
200
364
  finally {
201
- ctrl.abort();
365
+ // The heartbeat keeps the lease alive until this teardown is done.
366
+ try {
367
+ // cleanupSkills first, so its failure cannot skip the memory flush.
368
+ await cleanupSkills().catch((e) => {
369
+ log.warn('skill cleanup failed', { session_id: sessionId, work_id: work.id, error: String(e) });
370
+ });
371
+ }
372
+ finally {
373
+ if (stores) {
374
+ const boundMs = agentToolset.MEMORY_FLUSH_TIMEOUT_MS;
375
+ if (cleanEnd) {
376
+ const finishCutOff = await withTimeout(stores.finish(), boundMs);
377
+ if (finishCutOff) {
378
+ log.warn(`final memory sync cut off after ${boundMs}ms; the flush that follows still uploads changed files`, { session_id: sessionId, work_id: work.id });
379
+ }
380
+ }
381
+ // Also after finish(): it swallows its own failures, and a
382
+ // clean flush is a no-op.
383
+ const flushBound = new AbortController();
384
+ const flushCutOff = await withTimeout(stores.flushWrites(flushBound.signal), boundMs);
385
+ if (flushCutOff) {
386
+ flushBound.abort();
387
+ log.warn(`memory flush cut off after ${boundMs}ms; changed files it had not uploaded yet are not saved`, { session_id: sessionId, work_id: work.id });
388
+ }
389
+ await stores.dispose().catch((e) => {
390
+ log.warn('memory store cleanup failed', {
391
+ session_id: sessionId,
392
+ work_id: work.id,
393
+ error: String(e),
394
+ });
395
+ });
396
+ }
397
+ }
398
+ lease.finish('runner_done');
202
399
  detachExternal();
203
400
  await heartbeatPromise;
204
- await cleanupSkills().catch((e) => {
205
- log.warn('skill cleanup failed', { session_id: sessionId, work_id: work.id, error: String(e) });
206
- });
207
- await forceStop(sessionClient, work, log, this.requestOptions);
401
+ // Stop only an item this worker still holds — after a lost lease it
402
+ // belongs to the queue or another worker.
403
+ if (lease.lost) {
404
+ log.info('lease lost; released without stopping it', { session_id: sessionId, work_id: work.id });
405
+ }
406
+ else {
407
+ await forceStop(sessionClient, work, log, this.requestOptions);
408
+ }
208
409
  }
209
410
  };
411
+ /**
412
+ * Resolve when `p` settles or `ms` elapses — `true` when `ms` elapsed
413
+ * first. A timed-out `p` keeps running — JS cannot cancel a promise.
414
+ */
415
+ async function withTimeout(p, ms) {
416
+ let timer;
417
+ try {
418
+ return await Promise.race([
419
+ p.then(() => false, () => false),
420
+ new Promise((resolve) => {
421
+ timer = setTimeout(() => resolve(true), ms);
422
+ }),
423
+ ]);
424
+ }
425
+ finally {
426
+ if (timer !== undefined)
427
+ clearTimeout(timer);
428
+ }
429
+ }
210
430
  /** Force-stop a claimed work item, swallowing the 409 that means it's already stopped. */
211
431
  async function forceStop(client, work, log, requestOptions) {
212
432
  try {
@@ -223,14 +443,51 @@ async function forceStop(client, work, log, requestOptions) {
223
443
  }
224
444
  }
225
445
  /**
226
- * Keep the work-item lease alive while a session is being served. Aborts `ctrl`
227
- * when the control plane reports the work is `stopping`/`stopped`, when the
228
- * lease is no longer extended, on a permanent heartbeat failure, or when no
446
+ * This worker's view of one work-item lease: the per-item abort signal plus
447
+ * why heartbeating ended. The first recorded reason wins, so a run aborted
448
+ * *because* the lease was lost still reads as lost afterwards; an abort with
449
+ * no recorded reason (the external signal) is not lost.
450
+ */
451
+ class Lease {
452
+ constructor(ctrl) {
453
+ _Lease_ctrl.set(this, void 0);
454
+ _Lease_endReason.set(this, void 0);
455
+ __classPrivateFieldSet(this, _Lease_ctrl, ctrl, "f");
456
+ }
457
+ get signal() {
458
+ return __classPrivateFieldGet(this, _Lease_ctrl, "f").signal;
459
+ }
460
+ finish(reason) {
461
+ __classPrivateFieldSet(this, _Lease_endReason, __classPrivateFieldGet(this, _Lease_endReason, "f") ?? reason, "f");
462
+ __classPrivateFieldGet(this, _Lease_ctrl, "f").abort();
463
+ }
464
+ /** True once the item belongs to the queue or another worker. */
465
+ get lost() {
466
+ return __classPrivateFieldGet(this, _Lease_endReason, "f") === 'lease_lost' || __classPrivateFieldGet(this, _Lease_endReason, "f") === 'assumed_lost';
467
+ }
468
+ }
469
+ _Lease_ctrl = new WeakMap(), _Lease_endReason = new WeakMap();
470
+ /** The server's view of the lease carried by a 412 heartbeat response, or empty if absent. */
471
+ function serverLeaseState(e) {
472
+ let node = e instanceof APIError ? e.error : undefined;
473
+ for (const key of ['error', 'details', 'current_state']) {
474
+ if (!isObj(node))
475
+ return {};
476
+ node = node[key];
477
+ }
478
+ return isObj(node) ? node : {};
479
+ }
480
+ /**
481
+ * Keep the work-item lease alive while a session is being served. Runs until
482
+ * `lease` ends, and ends it itself when the control plane reports the work is
483
+ * `stopping`/`stopped` or no longer extends the lease, when a heartbeat is
484
+ * rejected (a 412 means the lease already belongs to someone else), or when no
229
485
  * heartbeat has succeeded for longer than the lease ttl (the lease is assumed
230
- * lost). Each heartbeat call is cut off after the current beat interval so a
231
- * hung request cannot outlive the lease it is meant to renew.
486
+ * lost, so two runners don't end up serving the same work). Each heartbeat
487
+ * call is cut off after the current beat interval so a hung request cannot
488
+ * outlive the lease it is meant to renew.
232
489
  */
233
- async function heartbeatLoop(client, work, ctrl, logger, requestOptions,
490
+ async function heartbeatLoop(client, work, lease, logger, requestOptions,
234
491
  /** Called with the server-reported lease TTL after every successful beat. */
235
492
  onLeaseTtl) {
236
493
  let intervalMs = HEARTBEAT_DEFAULT_MS;
@@ -241,7 +498,7 @@ onLeaseTtl) {
241
498
  // Not the request `timeout` option: the core client retries timeouts, so
242
499
  // it would not bound the call as a whole.
243
500
  const beatCtrl = new AbortController();
244
- const detach = linkAbort(ctrl.signal, beatCtrl);
501
+ const detach = linkAbort(lease.signal, beatCtrl);
245
502
  const cutoff = setTimeout(() => beatCtrl.abort(), intervalMs);
246
503
  try {
247
504
  const resp = await client.beta.environments.work.heartbeat(work.id, { environment_id: work.environment_id, expected_last_heartbeat: last }, { ...requestOptions, headers: buildHeaders([requestOptions?.headers]), signal: beatCtrl.signal });
@@ -254,20 +511,31 @@ onLeaseTtl) {
254
511
  }
255
512
  if (resp.state === 'stopping' || resp.state === 'stopped') {
256
513
  logger.info('heartbeat signals shutdown', { work_id: work.id, state: resp.state });
257
- ctrl.abort();
514
+ lease.finish('control_plane_stop');
258
515
  }
259
516
  if (!resp.lease_extended) {
260
517
  logger.warn('lease not extended, shutting down', { work_id: work.id });
261
- ctrl.abort();
518
+ lease.finish('control_plane_stop');
262
519
  }
263
520
  }
264
521
  catch (e) {
265
522
  // An abort throws to unwind the caller (the `heartbeatLoop(...).catch`
266
523
  // in `#handleItem`) rather than returning early.
267
- ctrl.signal.throwIfAborted();
524
+ lease.signal.throwIfAborted();
525
+ if (isStatus(e, 412)) {
526
+ const server = serverLeaseState(e);
527
+ logger.error('lease lost: heartbeat precondition failed', {
528
+ work_id: work.id,
529
+ server_state: server['state'],
530
+ server_ttl_seconds: server['ttl_seconds'],
531
+ server_last_heartbeat: server['last_heartbeat'],
532
+ });
533
+ lease.finish('lease_lost');
534
+ return;
535
+ }
268
536
  if (isFatal4xx(e)) {
269
537
  logger.error('permanent heartbeat failure', { work_id: work.id, error: String(e) });
270
- ctrl.abort();
538
+ lease.finish('heartbeat_rejected');
271
539
  throw e;
272
540
  }
273
541
  if (Date.now() - lastSuccessMs > ttlMs) {
@@ -276,7 +544,7 @@ onLeaseTtl) {
276
544
  ttl_ms: ttlMs,
277
545
  error: String(e),
278
546
  });
279
- ctrl.abort();
547
+ lease.finish('assumed_lost');
280
548
  return;
281
549
  }
282
550
  logger.warn('transient heartbeat failure', { work_id: work.id, error: String(e) });
@@ -287,9 +555,9 @@ onLeaseTtl) {
287
555
  }
288
556
  };
289
557
  await beat();
290
- while (!ctrl.signal.aborted) {
291
- await sleep(intervalMs, ctrl.signal);
292
- ctrl.signal.throwIfAborted();
558
+ while (!lease.signal.aborted) {
559
+ await sleep(intervalMs, lease.signal);
560
+ lease.signal.throwIfAborted();
293
561
  await beat();
294
562
  }
295
563
  }
@@ -1 +1 @@
1
- {"version":3,"file":"worker.mjs","sourceRoot":"","sources":["../../src/lib/environments/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.mjs","sourceRoot":"","sources":["../../src/lib/environments/worker.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,10 @@ export type BetaRunnableTool<Input = any> = BetaClientRunnableToolType & {
32
32
  /** Called once by the session runner when it stops. Release held resources here (e.g. a shell). */
33
33
  close?: () => Promisable<void>;
34
34
  };
35
- /** The name the model calls a tool by: `mcp_server_name` for MCP toolsets, `name` for everything else. */
35
+ /**
36
+ * The name the model calls a tool by: `mcp_server_name` for MCP toolsets, `type` for nameless server
37
+ * toolsets (browser/computer), `name` for everything else.
38
+ */
36
39
  export declare function toolName(tool: BetaToolUnion | BetaRunnableTool): string;
37
40
  /** Tool-result content for a thrown value: a {@link ToolError}'s own content, otherwise `Error: <message>`. */
38
41
  export declare function toolErrorContent(e: unknown): string | Array<BetaToolResultContentBlockParam>;
@@ -1 +1 @@
1
- {"version":3,"file":"BetaRunnableTool.d.mts","sourceRoot":"","sources":["../../src/lib/tools/BetaRunnableTool.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,EAC/B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EACjB,iCAA6B;AAC9B,OAAO,KAAK,EACV,wCAAwC,EACxC,kCAAkC,EACnC,iDAA6C;AAG9C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3C,mHAAmH;AACnH,MAAM,MAAM,0BAA0B,GAClC,QAAQ,GACR,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,2BAA2B,GAC3B,2BAA2B,GAC3B,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,0BAA0B,GAC1B,0BAA0B,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,kCAAkC,GAClC,wCAAwC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,iCAAiC;IACjC,YAAY,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,GAAG,IAAI,0BAA0B,GAAG;IACvE;;;;OAIG;IACH,GAAG,EAAE,CACH,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,kBAAkB,KACzB,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACjE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC;IACnC,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;CAChC,CAAC;AAEF,0GAA0G;AAC1G,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,MAAM,CAEvE;AAED,+GAA+G;AAC/G,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAE5F;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,wBAAsB,eAAe,CACnC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAQ9B"}
1
+ {"version":3,"file":"BetaRunnableTool.d.mts","sourceRoot":"","sources":["../../src/lib/tools/BetaRunnableTool.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,oBAAoB,EACpB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,2BAA2B,EAC3B,+BAA+B,EAC/B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,aAAa,EACb,gBAAgB,EACjB,iCAA6B;AAC9B,OAAO,KAAK,EACV,wCAAwC,EACxC,kCAAkC,EACnC,iDAA6C;AAG9C,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3C,mHAAmH;AACnH,MAAM,MAAM,0BAA0B,GAClC,QAAQ,GACR,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,GACpB,2BAA2B,GAC3B,2BAA2B,GAC3B,2BAA2B,GAC3B,0BAA0B,GAC1B,0BAA0B,GAC1B,0BAA0B,GAC1B,0BAA0B,CAAC;AAE/B;;;;GAIG;AACH,MAAM,MAAM,WAAW,GACnB,gBAAgB,GAChB,kCAAkC,GAClC,wCAAwC,CAAC;AAE7C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,iCAAiC;IACjC,YAAY,EAAE,WAAW,CAAC;IAC1B;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;CACzC,CAAC;AAEF,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,GAAG,IAAI,0BAA0B,GAAG;IACvE;;;;OAIG;IACH,GAAG,EAAE,CACH,IAAI,EAAE,KAAK,EACX,OAAO,CAAC,EAAE,kBAAkB,KACzB,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAC;IACjE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,KAAK,CAAC;IACnC,mGAAmG;IACnG,KAAK,CAAC,EAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;CAChC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,MAAM,CAMvE;AAED,+GAA+G;AAC/G,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAE5F;AAED,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,GAAG,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACzD,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,oFAAoF;AACpF,wBAAsB,eAAe,CACnC,IAAI,EAAE,gBAAgB,EACtB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAQ9B"}