@desplega.ai/agent-swarm 2.5.1 → 2.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 (197) hide show
  1. package/dist/{acp-adapter-7g6bpwbk.js → acp-adapter-gr2fcyyj.js} +3 -3
  2. package/dist/{actions-w8xd014k.js → actions-wv766ghf.js} +18 -18
  3. package/dist/{amp-adapter-z4qvhacj.js → amp-adapter-speb906t.js} +3 -3
  4. package/dist/{app-nndcvftq.js → app-ag29n14f.js} +3 -3
  5. package/dist/{assistant-hjmqyscx.js → assistant-3x8bz3eg.js} +19 -19
  6. package/dist/{boot-reembed-r8rhf9h8.js → boot-reembed-5b3d2eea.js} +1 -1
  7. package/dist/{boot-reembed-vwcj2y5d.js → boot-reembed-jsmfrpzf.js} +1 -1
  8. package/dist/{boot-scrub-sweep-fr9q36ne.js → boot-scrub-sweep-s73gerxy.js} +2 -2
  9. package/dist/{boot-seeds-9jqwnegq.js → boot-seeds-5zmax2wr.js} +4 -4
  10. package/dist/{claude-adapter-2f8b85df.js → claude-adapter-hswdnm3t.js} +3 -3
  11. package/dist/{claude-managed-adapter-gt6pa35d.js → claude-managed-adapter-cvbzj1h6.js} +2 -2
  12. package/dist/{claude-managed-setup-c3hp36ph.js → claude-managed-setup-3k8m3hhc.js} +2 -2
  13. package/dist/{claude-sdk-session-05kat8rv.js → claude-sdk-session-fkbyk66x.js} +6905 -6855
  14. package/dist/{cli-y3zyaee5.js → cli-1fc85mvt.js} +5 -5
  15. package/dist/{cli-v2g93k4v.js → cli-210xd1f4.js} +4 -4
  16. package/dist/{cli-sn1vbtg2.js → cli-25j01dpj.js} +3 -3
  17. package/dist/{cli-n6kmqngw.js → cli-35gtk1p6.js} +1 -1
  18. package/dist/{cli-r9fy0ddc.js → cli-3ngdk5te.js} +1 -1
  19. package/dist/{cli-z63a269p.js → cli-40jsnrjm.js} +2 -2
  20. package/dist/{cli-ba8ne1es.js → cli-4rvr7zfx.js} +10 -0
  21. package/dist/{cli-qfm6my86.js → cli-502eqv93.js} +1 -1
  22. package/dist/{cli-xd4eqtr2.js → cli-6n8axjv1.js} +1 -1
  23. package/dist/{cli-hadv0725.js → cli-8s5wx3nz.js} +2 -2
  24. package/dist/{cli-z2dv25mf.js → cli-99xgw26r.js} +116 -5
  25. package/dist/{cli-jpxsrxcb.js → cli-9s05422w.js} +1 -1
  26. package/dist/{cli-kcsd1ez8.js → cli-aecdcr77.js} +343 -325
  27. package/dist/{cli-w9etnnxk.js → cli-bf8ma3f1.js} +120 -50
  28. package/dist/{cli-e9btqw4y.js → cli-ce0ak9ms.js} +18 -13
  29. package/dist/{cli-nj12tn2c.js → cli-e2ar4bp1.js} +71 -20
  30. package/dist/{cli-gwcf52gz.js → cli-e8jyq7d8.js} +11 -7
  31. package/dist/{cli-rngde2jv.js → cli-egjggehm.js} +1 -1
  32. package/dist/{cli-qfjm4gvt.js → cli-ewm3pwbq.js} +2 -2
  33. package/dist/{cli-9mm5ade4.js → cli-fsdprwrg.js} +1 -1
  34. package/dist/{cli-3ee5z0q0.js → cli-fzcn3d87.js} +1 -1
  35. package/dist/{cli-eym3jg7w.js → cli-gpsz7g88.js} +6 -6
  36. package/dist/{cli-cwyafhw1.js → cli-hcpj2xqz.js} +1 -1
  37. package/dist/{cli-j1eghqfm.js → cli-hhxjnjzs.js} +1 -1
  38. package/dist/{cli-pyy4c9ch.js → cli-jjznk3f7.js} +881 -232
  39. package/dist/{cli-q9pzwxvk.js → cli-kxawjrxg.js} +222 -37
  40. package/dist/{cli-rh5smt8t.js → cli-mz9afxxf.js} +14 -3
  41. package/dist/{cli-mz2ygeyq.js → cli-n45mr7zh.js} +2 -2
  42. package/dist/{cli-fes51ya2.js → cli-p0rzjkya.js} +2 -2
  43. package/dist/{cli-3qv8naq8.js → cli-p6zs9h4y.js} +827 -107
  44. package/dist/{cli-mq7kg1b1.js → cli-p9rafdrb.js} +41 -6
  45. package/dist/{cli-cah5detr.js → cli-qgf8emrn.js} +5 -5
  46. package/dist/{cli-2wba1ac9.js → cli-qzme5949.js} +26 -26
  47. package/dist/{cli-znvq0k3t.js → cli-s49hpn37.js} +2 -2
  48. package/dist/{cli-xc65x52q.js → cli-s53vp709.js} +1 -1
  49. package/dist/{cli-0jy85zz4.js → cli-svrj71pg.js} +18 -16
  50. package/dist/{cli-1dp1zj04.js → cli-vwn81jbs.js} +3 -3
  51. package/dist/{cli-ajqhxtnz.js → cli-w1zwctj2.js} +1 -1
  52. package/dist/{cli-22rmcjkg.js → cli-y561h5a9.js} +7 -6
  53. package/dist/{cli-2jg61wab.js → cli-z21whrrg.js} +15 -15
  54. package/dist/cli.js +19 -18
  55. package/dist/{codex-adapter-p4ptwar5.js → codex-adapter-n8ka66vf.js} +2 -2
  56. package/dist/{codex-session-runner-964c7dnk.js → codex-session-runner-fsebts37.js} +1 -1
  57. package/dist/{commands-mbvhbrcy.js → commands-t04rt2pc.js} +2 -2
  58. package/dist/{controller-gnq1k1mf.js → controller-rgna04r2.js} +2 -2
  59. package/dist/{controllers-connect-6dkm71tg.js → controllers-connect-bqm1rtft.js} +20 -20
  60. package/dist/{cursor-adapter-yq5xgfcg.js → cursor-adapter-swr2k95y.js} +1 -1
  61. package/dist/{db-88wcymxt.js → db-24ck09xy.js} +1 -1
  62. package/dist/{db-af9y8nkf.js → db-a4m7haw0.js} +3 -3
  63. package/dist/{dispatcher-606ydx5v.js → dispatcher-nwf9ss0q.js} +17 -17
  64. package/dist/{dsh-adapter-tvhc4k2d.js → dsh-adapter-kpdnhjst.js} +2 -2
  65. package/dist/{external-channel-y8q5z8z2.js → external-channel-j1e2p34p.js} +2 -2
  66. package/dist/{grok-adapter-39aha52t.js → grok-adapter-qtjz0whk.js} +4 -4
  67. package/dist/{handlers-rk9dqech.js → handlers-19xr6dnz.js} +20 -20
  68. package/dist/{heartbeat-jfe9zfjr.js → heartbeat-vtesda5d.js} +20 -20
  69. package/dist/{hook-b1mez1m8.js → hook-8wqaszda.js} +1 -1
  70. package/dist/{hook-ffevzed1.js → hook-b2hhj6rd.js} +1 -1
  71. package/dist/{http-d5b44f1r.js → http-mxcqhhcs.js} +3020 -2463
  72. package/dist/{index-5en23s5z.js → index-1r8wfpzs.js} +1 -1
  73. package/dist/{index-cbxkmfc5.js → index-9pn1pfkf.js} +1 -1
  74. package/dist/{index-mj46rk9k.js → index-kw2mmat7.js} +20 -20
  75. package/dist/{index-nq8hhv28.js → index-n1vbvta9.js} +19 -10
  76. package/dist/{index-6srwvd5b.js → index-p4xfz37z.js} +1 -1
  77. package/dist/{index-d2qeem97.js → index-spwxjgay.js} +17 -17
  78. package/dist/{index-4q3vj1yr.js → index-srg522m6.js} +17 -17
  79. package/dist/{keepalive-wsby1btq.js → keepalive-dsd8rtgx.js} +3 -3
  80. package/dist/{lead-paa141j6.js → lead-zyerk1x2.js} +30 -30
  81. package/dist/{maintenance-vnshcyv9.js → maintenance-jqmqwnet.js} +1 -1
  82. package/dist/{oauth-refresh-sweep-d6sqn5np.js → oauth-refresh-sweep-q2c3bnvm.js} +2 -2
  83. package/dist/{onboard-nr4xhpzy.js → onboard-w4yd7s8t.js} +2 -2
  84. package/dist/{opencode-adapter-e56086m1.js → opencode-adapter-9tppvxar.js} +2 -2
  85. package/dist/{otel-impl-ytn9wyv9.js → otel-impl-f36byzbd.js} +1 -1
  86. package/dist/{pricing-refresh-pva04zee.js → pricing-refresh-xvak5p4v.js} +3 -3
  87. package/dist/{rbac-roles-7rc1q3g4.js → rbac-roles-682k2mt5.js} +12 -2
  88. package/dist/rbac-roles-gfn30fb8.js +26 -0
  89. package/dist/{render-v2-pyfsg9zk.js → render-v2-hgytz8nn.js} +3 -3
  90. package/dist/{resume-phj8xhqr.js → resume-2dvq348g.js} +7 -5
  91. package/dist/{session-access-jzx2z9h5.js → session-access-7f21ekq9.js} +4 -4
  92. package/dist/{setup-rfg0f0sg.js → setup-epffxtbk.js} +1 -1
  93. package/dist/{work-objects-44z2yjg8.js → work-objects-xz1a5rqk.js} +20 -20
  94. package/dist/{worker-zsfqzxhm.js → worker-42t8emjt.js} +30 -30
  95. package/openapi.json +3163 -2114
  96. package/package.json +7 -6
  97. package/src/be/approval-config-question.ts +389 -0
  98. package/src/be/automation-preflight.ts +37 -3
  99. package/src/be/db/session-tree.ts +158 -13
  100. package/src/be/db/session-visibility.ts +31 -0
  101. package/src/be/db/skill-search.ts +87 -0
  102. package/src/be/db/tasks/read.ts +47 -7
  103. package/src/be/db/workflow-runs.ts +54 -7
  104. package/src/be/db.ts +27 -5
  105. package/src/be/migrations/233_script_run_session_tokens.sql +8 -0
  106. package/src/be/migrations/235_chat_relay_defer.sql +86 -0
  107. package/src/be/migrations/237_session_inbox_cleanup.sql +75 -0
  108. package/src/be/migrations/239_skills_fts.sql +40 -0
  109. package/src/be/migrations/240_workflow_run_parent_step_attempt.sql +37 -0
  110. package/src/be/migrations/241_skills_meta_fts.sql +39 -0
  111. package/src/be/rbac-roles.ts +138 -0
  112. package/src/be/scripts/run-credential.ts +64 -0
  113. package/src/be/scripts/run-saved.ts +3 -2
  114. package/src/be/swarm-config-guard.ts +23 -0
  115. package/src/be/users.ts +28 -4
  116. package/src/extensions/catalog.generated.json +4 -4
  117. package/src/http/all-routes.ts +1 -0
  118. package/src/http/approval-requests.ts +254 -43
  119. package/src/http/config.ts +22 -37
  120. package/src/http/index.ts +2 -0
  121. package/src/http/schedules.ts +26 -0
  122. package/src/http/scripts.ts +2 -2
  123. package/src/http/sessions.ts +118 -2
  124. package/src/http/user-roles.ts +173 -0
  125. package/src/http/users.ts +9 -0
  126. package/src/http/x.ts +2 -2
  127. package/src/integrations/chat-sdk/commands.ts +14 -1
  128. package/src/integrations/chat-sdk/inbound.ts +42 -6
  129. package/src/integrations/chat-sdk/outbound.ts +35 -10
  130. package/src/integrations/chat-sdk/reactions.ts +107 -0
  131. package/src/integrations/chat-sdk/relay.ts +75 -7
  132. package/src/integrations/chat-sdk/thread-buffer.ts +2 -0
  133. package/src/integrations/reaction-events.ts +20 -0
  134. package/src/providers/amp-adapter.ts +1 -1
  135. package/src/providers/dsh-adapter.ts +1 -1
  136. package/src/rbac/legacy-policy.ts +3 -0
  137. package/src/rbac/permissions.ts +8 -0
  138. package/src/scheduler/schedule-task.ts +44 -3
  139. package/src/scheduler/scheduler.ts +4 -4
  140. package/src/scripts-runtime/loader.ts +8 -1
  141. package/src/slack/ack.ts +2 -1
  142. package/src/slack/reaction-shortcode.ts +4 -7
  143. package/src/tasks/worker-follow-up.ts +30 -0
  144. package/src/tests/approval-config-question.test.ts +702 -0
  145. package/src/tests/approval-requests-notifications.test.ts +189 -0
  146. package/src/tests/chat-sdk-commands.test.ts +12 -0
  147. package/src/tests/chat-sdk-inbound.test.ts +183 -9
  148. package/src/tests/chat-sdk-outbound-files.test.ts +9 -2
  149. package/src/tests/chat-sdk-relay.test.ts +361 -10
  150. package/src/tests/chat-sdk-tools.test.ts +104 -0
  151. package/src/tests/docs-index-footprint.test.js +3 -3
  152. package/src/tests/dsh-adapter.test.ts +1 -1
  153. package/src/tests/entrypoint-gitlab-credential-helper.test.ts +273 -0
  154. package/src/tests/extensions-example-comms-adherence-gate.test.ts +321 -12
  155. package/src/tests/http-users.test.ts +38 -0
  156. package/src/tests/list-endpoint-slimming.test.ts +33 -0
  157. package/src/tests/migration-237-session-inbox-cleanup.test.ts +136 -0
  158. package/src/tests/migration-240-workflow-run-parent-step-attempt.test.ts +55 -0
  159. package/src/tests/rbac-engine.test.ts +2 -0
  160. package/src/tests/rbac-roles.test.ts +10 -0
  161. package/src/tests/schedule-http-triage-tools.test.ts +44 -0
  162. package/src/tests/script-api-credential.test.ts +173 -0
  163. package/src/tests/script-connections.test.ts +10 -0
  164. package/src/tests/script-run-config-scope.test.ts +120 -0
  165. package/src/tests/script-run-token.test.ts +75 -0
  166. package/src/tests/scripts-http.test.ts +19 -0
  167. package/src/tests/sessions-tree.test.ts +410 -1
  168. package/src/tests/skill-search-long-content.test.ts +193 -0
  169. package/src/tests/skill-search.test.ts +173 -22
  170. package/src/tests/user-roles-http.test.ts +204 -0
  171. package/src/tests/workflow-hitl-dynamic-questions.test.ts +1 -1
  172. package/src/tests/workflow-sub-workflow.test.ts +538 -1
  173. package/src/tools/chat-reply.ts +2 -0
  174. package/src/tools/request-human-input.ts +27 -5
  175. package/src/tools/schedules/patch-schedule.ts +18 -0
  176. package/src/tools/schedules/update-schedule.ts +18 -0
  177. package/src/types.ts +23 -0
  178. package/src/workflows/approval-notifications.ts +221 -0
  179. package/src/workflows/checkpoint.ts +69 -35
  180. package/src/workflows/engine.ts +234 -87
  181. package/src/workflows/executors/base.ts +6 -0
  182. package/src/workflows/executors/human-in-the-loop.ts +36 -173
  183. package/src/workflows/executors/sub-workflow.ts +45 -16
  184. package/src/workflows/executors/swarm-script.ts +2 -2
  185. package/src/workflows/recovery.ts +63 -1
  186. package/src/workflows/resume.ts +60 -21
  187. package/src/workflows/retry-poller.ts +25 -4
  188. package/templates/extensions/comms-adherence-gate/README.md +38 -13
  189. package/templates/extensions/comms-adherence-gate/hooks.ts +272 -69
  190. package/templates/extensions/comms-adherence-gate/manifest.json +2 -2
  191. package/templates/schedules/weekly-harness-upgrade-check/content.md +1 -1
  192. package/templates/skills/code-quality/content.md +1 -1
  193. package/templates/skills/turso-interaction/content.md +1 -1
  194. package/templates/skills/workflow-iterate/content.md +8 -1
  195. package/dist/rbac-roles-ff1ffmec.js +0 -12
  196. /package/dist/{cli-stxdrqs2.js → cli-avdvgcay.js} +0 -0
  197. /package/dist/{pi-mono-adapter-tzps8f38.js → pi-mono-adapter-tqsge1ay.js} +0 -0
@@ -71,7 +71,7 @@ var sleep = (ms, signal) => new Promise((resolve) => {
71
71
  });
72
72
 
73
73
  // node_modules/@anthropic-ai/sdk/version.mjs
74
- var VERSION = "1.1.0";
74
+ var VERSION = "1.2.0";
75
75
 
76
76
  // node_modules/@anthropic-ai/sdk/internal/detect-platform.mjs
77
77
  var isRunningInBrowser = () => {
@@ -3051,6 +3051,9 @@ var APIPromise = /* @__PURE__ */ (() => {
3051
3051
  _APIPromise_client.set(this, undefined);
3052
3052
  __classPrivateFieldSet(this, _APIPromise_client, client, "f");
3053
3053
  }
3054
+ _responseProps() {
3055
+ return this.responsePromise;
3056
+ }
3054
3057
  _thenUnwrap(transform) {
3055
3058
  return new APIPromise(__classPrivateFieldGet(this, _APIPromise_client, "f"), this.responsePromise, async (client, props) => addResponseIDs(transform(await this.parseResponse(client, props), props), props.response));
3056
3059
  }
@@ -7165,9 +7168,7 @@ function transformOutputFormat(params) {
7165
7168
  if (!params.output_format) {
7166
7169
  return params;
7167
7170
  }
7168
- if (params.output_config?.format) {
7169
- throw new AnthropicError("Both output_format and output_config.format were provided. " + "Please use only output_config.format (output_format is deprecated).");
7170
- }
7171
+ assertOneOutputFormat(params);
7171
7172
  const { output_format, ...rest } = params;
7172
7173
  return {
7173
7174
  ...rest,
@@ -7177,6 +7178,11 @@ function transformOutputFormat(params) {
7177
7178
  }
7178
7179
  };
7179
7180
  }
7181
+ function assertOneOutputFormat(params) {
7182
+ if (params.output_format && params.output_config?.format) {
7183
+ throw new AnthropicError("Both output_format and output_config.format were provided. " + "Please use only output_config.format (output_format is deprecated).");
7184
+ }
7185
+ }
7180
7186
 
7181
7187
  // node_modules/@anthropic-ai/sdk/lib/BetaMessageStream.mjs
7182
7188
  var _BetaMessageStream_instances;
@@ -7199,6 +7205,7 @@ var _BetaMessageStream_workspace_id;
7199
7205
  var _BetaMessageStream_logger;
7200
7206
  var _BetaMessageStream_client;
7201
7207
  var _BetaMessageStream_span;
7208
+ var _BetaMessageStream_spanBody;
7202
7209
  var _BetaMessageStream_getFinalMessage;
7203
7210
  var _BetaMessageStream_getFinalText;
7204
7211
  var _BetaMessageStream_handleError;
@@ -7237,6 +7244,7 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7237
7244
  _BetaMessageStream_logger.set(this, undefined);
7238
7245
  _BetaMessageStream_client.set(this, undefined);
7239
7246
  _BetaMessageStream_span.set(this, undefined);
7247
+ _BetaMessageStream_spanBody.set(this, undefined);
7240
7248
  _BetaMessageStream_handleError.set(this, (error) => {
7241
7249
  __classPrivateFieldSet(this, _BetaMessageStream_errored, true, "f");
7242
7250
  if (__classPrivateFieldGet(this, _BetaMessageStream_span, "f")) {
@@ -7309,9 +7317,23 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7309
7317
  runner._addMessageParam(message);
7310
7318
  }
7311
7319
  __classPrivateFieldSet(runner, _BetaMessageStream_params, { ...params, stream: true }, "f");
7312
- runner._run(() => runner._createMessage(messages, { ...params, stream: true }, { ...options, headers: { ...options?.headers, [STAINLESS_HELPER_METHOD_HEADER]: "stream" } }));
7320
+ runner._run(() => runner._createMessage((body, options) => messages.create(body, options), { ...params, stream: true }, { ...options, headers: { ...options?.headers, [STAINLESS_HELPER_METHOD_HEADER]: "stream" } }));
7313
7321
  return runner;
7314
7322
  }
7323
+ _start(create, params, options, onRequestEnd) {
7324
+ for (const message of params.messages) {
7325
+ this._addMessageParam(message);
7326
+ }
7327
+ const client = __classPrivateFieldGet(this, _BetaMessageStream_client, "f");
7328
+ __classPrivateFieldSet(this, _BetaMessageStream_client, undefined, "f");
7329
+ const send = (body, options) => create(body, options)._thenUnwrap((stream, { options: sent }) => {
7330
+ __classPrivateFieldSet(this, _BetaMessageStream_client, client, "f");
7331
+ __classPrivateFieldSet(this, _BetaMessageStream_span, sent.__span, "f");
7332
+ __classPrivateFieldSet(this, _BetaMessageStream_spanBody, sent.body, "f");
7333
+ return stream;
7334
+ });
7335
+ this._run(() => this._createMessage(send, { ...params, stream: true }, options).finally(onRequestEnd));
7336
+ }
7315
7337
  _run(executor) {
7316
7338
  executor().then(() => {
7317
7339
  this._emitFinal();
@@ -7327,7 +7349,7 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7327
7349
  this._emit("message", message);
7328
7350
  }
7329
7351
  }
7330
- async _createMessage(messages, params, options) {
7352
+ async _createMessage(create, params, options) {
7331
7353
  const signal = options?.signal;
7332
7354
  let abortHandler;
7333
7355
  if (signal) {
@@ -7339,7 +7361,7 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7339
7361
  try {
7340
7362
  __classPrivateFieldGet(this, _BetaMessageStream_instances, "m", _BetaMessageStream_beginRequest).call(this);
7341
7363
  __classPrivateFieldSet(this, _BetaMessageStream_span, options?.__span ?? (__classPrivateFieldGet(this, _BetaMessageStream_client, "f") && startMessagesStreamSpan2(__classPrivateFieldGet(this, _BetaMessageStream_client, "f"), params, options)), "f");
7342
- const { response, data: stream } = await messages.create({ ...params, stream: true }, { ...options, __span: __classPrivateFieldGet(this, _BetaMessageStream_span, "f"), signal: this.controller.signal }).withResponse();
7364
+ const { response, data: stream } = await create({ ...params, stream: true }, { ...options, __span: __classPrivateFieldGet(this, _BetaMessageStream_span, "f"), signal: this.controller.signal }).withResponse();
7343
7365
  try {
7344
7366
  this._connected(response);
7345
7367
  } catch (error) {
@@ -7501,7 +7523,7 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7501
7523
  }
7502
7524
  }
7503
7525
  }
7504
- [(_BetaMessageStream_currentMessageSnapshot = new WeakMap, _BetaMessageStream_params = new WeakMap, _BetaMessageStream_connectedPromise = new WeakMap, _BetaMessageStream_resolveConnectedPromise = new WeakMap, _BetaMessageStream_rejectConnectedPromise = new WeakMap, _BetaMessageStream_endPromise = new WeakMap, _BetaMessageStream_resolveEndPromise = new WeakMap, _BetaMessageStream_rejectEndPromise = new WeakMap, _BetaMessageStream_listeners = new WeakMap, _BetaMessageStream_ended = new WeakMap, _BetaMessageStream_errored = new WeakMap, _BetaMessageStream_aborted = new WeakMap, _BetaMessageStream_catchingPromiseCreated = new WeakMap, _BetaMessageStream_response = new WeakMap, _BetaMessageStream_request_id = new WeakMap, _BetaMessageStream_workspace_id = new WeakMap, _BetaMessageStream_logger = new WeakMap, _BetaMessageStream_client = new WeakMap, _BetaMessageStream_span = new WeakMap, _BetaMessageStream_handleError = new WeakMap, _BetaMessageStream_instances = new WeakSet, _BetaMessageStream_getFinalMessage = function _BetaMessageStream_getFinalMessage2() {
7526
+ [(_BetaMessageStream_currentMessageSnapshot = new WeakMap, _BetaMessageStream_params = new WeakMap, _BetaMessageStream_connectedPromise = new WeakMap, _BetaMessageStream_resolveConnectedPromise = new WeakMap, _BetaMessageStream_rejectConnectedPromise = new WeakMap, _BetaMessageStream_endPromise = new WeakMap, _BetaMessageStream_resolveEndPromise = new WeakMap, _BetaMessageStream_rejectEndPromise = new WeakMap, _BetaMessageStream_listeners = new WeakMap, _BetaMessageStream_ended = new WeakMap, _BetaMessageStream_errored = new WeakMap, _BetaMessageStream_aborted = new WeakMap, _BetaMessageStream_catchingPromiseCreated = new WeakMap, _BetaMessageStream_response = new WeakMap, _BetaMessageStream_request_id = new WeakMap, _BetaMessageStream_workspace_id = new WeakMap, _BetaMessageStream_logger = new WeakMap, _BetaMessageStream_client = new WeakMap, _BetaMessageStream_span = new WeakMap, _BetaMessageStream_spanBody = new WeakMap, _BetaMessageStream_handleError = new WeakMap, _BetaMessageStream_instances = new WeakSet, _BetaMessageStream_getFinalMessage = function _BetaMessageStream_getFinalMessage2() {
7505
7527
  if (this.receivedMessages.length === 0) {
7506
7528
  throw new AnthropicError("stream ended without producing a Message with role=assistant");
7507
7529
  }
@@ -7580,7 +7602,7 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7580
7602
  }
7581
7603
  case "message_stop": {
7582
7604
  if (__classPrivateFieldGet(this, _BetaMessageStream_client, "f") && __classPrivateFieldGet(this, _BetaMessageStream_span, "f") && __classPrivateFieldGet(this, _BetaMessageStream_params, "f")) {
7583
- recordStreamedMessageContent(__classPrivateFieldGet(this, _BetaMessageStream_client, "f"), __classPrivateFieldGet(this, _BetaMessageStream_span, "f"), __classPrivateFieldGet(this, _BetaMessageStream_params, "f"), messageSnapshot);
7605
+ recordStreamedMessageContent(__classPrivateFieldGet(this, _BetaMessageStream_client, "f"), __classPrivateFieldGet(this, _BetaMessageStream_span, "f"), __classPrivateFieldGet(this, _BetaMessageStream_spanBody, "f") ?? __classPrivateFieldGet(this, _BetaMessageStream_params, "f"), messageSnapshot);
7584
7606
  }
7585
7607
  this._addMessageParam(messageSnapshot);
7586
7608
  this._addMessage(maybeParseBetaMessage(messageSnapshot, __classPrivateFieldGet(this, _BetaMessageStream_params, "f"), { logger: __classPrivateFieldGet(this, _BetaMessageStream_logger, "f") }), true);
@@ -7593,7 +7615,7 @@ var BetaMessageStream = /* @__PURE__ */ (() => {
7593
7615
  case "message_start": {
7594
7616
  __classPrivateFieldSet(this, _BetaMessageStream_currentMessageSnapshot, messageSnapshot, "f");
7595
7617
  if (__classPrivateFieldGet(this, _BetaMessageStream_span, "f") && __classPrivateFieldGet(this, _BetaMessageStream_params, "f")) {
7596
- __classPrivateFieldGet(this, _BetaMessageStream_span, "f").streamed = { body: __classPrivateFieldGet(this, _BetaMessageStream_params, "f"), message: messageSnapshot };
7618
+ __classPrivateFieldGet(this, _BetaMessageStream_span, "f").streamed = { body: __classPrivateFieldGet(this, _BetaMessageStream_spanBody, "f") ?? __classPrivateFieldGet(this, _BetaMessageStream_params, "f"), message: messageSnapshot };
7597
7619
  }
7598
7620
  break;
7599
7621
  }
@@ -8301,6 +8323,54 @@ class Connectors extends APIResource {
8301
8323
  }
8302
8324
  }
8303
8325
 
8326
+ // node_modules/@anthropic-ai/sdk/resources/beta/organization/analytics/cost.mjs
8327
+ class Cost extends APIResource {
8328
+ list(params, options) {
8329
+ const { betas, ...query } = params;
8330
+ return this._client.getAPIList("/v1/organizations/analytics/cost?beta=true", ReportPageCursor, {
8331
+ query,
8332
+ ...options,
8333
+ headers: buildHeaders([
8334
+ { "anthropic-beta": [...betas ?? [], "analytics-usage-cost-2026-08-24"].toString() },
8335
+ options?.headers
8336
+ ]),
8337
+ __span: startApiCallSpan(this._client, "anthropic.organization.analytics.cost.list", options, {
8338
+ route: "/v1/organizations/analytics/cost",
8339
+ queryParams: [
8340
+ "actor_ids",
8341
+ "actor_types",
8342
+ "agent_ids",
8343
+ "api_key_ids",
8344
+ "claude_tag_categories",
8345
+ "claude_tag_user_ids",
8346
+ "context_windows",
8347
+ "deployment_ids",
8348
+ "ending_at",
8349
+ "environment_ids",
8350
+ "exclude_deleted_users",
8351
+ "group_by",
8352
+ "inference_geos",
8353
+ "limit",
8354
+ "models",
8355
+ "order",
8356
+ "order_by",
8357
+ "page",
8358
+ "products",
8359
+ "rbac_group_ids",
8360
+ "service_tiers",
8361
+ "session_ids",
8362
+ "slack_channel_ids",
8363
+ "speeds",
8364
+ "starting_at",
8365
+ "time_bucket_width",
8366
+ "user_profile_ids",
8367
+ "workspace_ids"
8368
+ ]
8369
+ })
8370
+ });
8371
+ }
8372
+ }
8373
+
8304
8374
  // node_modules/@anthropic-ai/sdk/resources/beta/organization/analytics/cost-report.mjs
8305
8375
  class CostReport extends APIResource {
8306
8376
  list(query, options) {
@@ -8396,6 +8466,54 @@ class Summaries extends APIResource {
8396
8466
  }
8397
8467
  }
8398
8468
 
8469
+ // node_modules/@anthropic-ai/sdk/resources/beta/organization/analytics/usage.mjs
8470
+ class Usage extends APIResource {
8471
+ list(params, options) {
8472
+ const { betas, ...query } = params;
8473
+ return this._client.getAPIList("/v1/organizations/analytics/usage?beta=true", ReportPageCursor, {
8474
+ query,
8475
+ ...options,
8476
+ headers: buildHeaders([
8477
+ { "anthropic-beta": [...betas ?? [], "analytics-usage-cost-2026-08-24"].toString() },
8478
+ options?.headers
8479
+ ]),
8480
+ __span: startApiCallSpan(this._client, "anthropic.organization.analytics.usage.list", options, {
8481
+ route: "/v1/organizations/analytics/usage",
8482
+ queryParams: [
8483
+ "actor_ids",
8484
+ "actor_types",
8485
+ "agent_ids",
8486
+ "api_key_ids",
8487
+ "claude_tag_categories",
8488
+ "claude_tag_user_ids",
8489
+ "context_windows",
8490
+ "deployment_ids",
8491
+ "ending_at",
8492
+ "environment_ids",
8493
+ "exclude_deleted_users",
8494
+ "group_by",
8495
+ "inference_geos",
8496
+ "limit",
8497
+ "models",
8498
+ "order",
8499
+ "order_by",
8500
+ "page",
8501
+ "products",
8502
+ "rbac_group_ids",
8503
+ "service_tiers",
8504
+ "session_ids",
8505
+ "slack_channel_ids",
8506
+ "speeds",
8507
+ "starting_at",
8508
+ "time_bucket_width",
8509
+ "user_profile_ids",
8510
+ "workspace_ids"
8511
+ ]
8512
+ })
8513
+ });
8514
+ }
8515
+ }
8516
+
8399
8517
  // node_modules/@anthropic-ai/sdk/resources/beta/organization/analytics/usage-report.mjs
8400
8518
  class UsageReport extends APIResource {
8401
8519
  list(query, options) {
@@ -8580,6 +8698,8 @@ var Analytics = /* @__PURE__ */ (() => {
8580
8698
  this.plugins = new Plugins(this._client);
8581
8699
  this.skills = new Skills(this._client);
8582
8700
  this.artifacts = new Artifacts(this._client);
8701
+ this.usage = new Usage(this._client);
8702
+ this.cost = new Cost(this._client);
8583
8703
  this.usageReport = new UsageReport(this._client);
8584
8704
  this.userUsageReport = new UserUsageReport(this._client);
8585
8705
  this.costReport = new CostReport(this._client);
@@ -8593,6 +8713,8 @@ var Analytics = /* @__PURE__ */ (() => {
8593
8713
  Analytics.Plugins = Plugins;
8594
8714
  Analytics.Skills = Skills;
8595
8715
  Analytics.Artifacts = Artifacts;
8716
+ Analytics.Usage = Usage;
8717
+ Analytics.Cost = Cost;
8596
8718
  Analytics.UsageReport = UsageReport;
8597
8719
  Analytics.UserUsageReport = UserUsageReport;
8598
8720
  Analytics.CostReport = CostReport;
@@ -11162,14 +11284,6 @@ var BetaToolRunnerStream = /* @__PURE__ */ (() => {
11162
11284
  get toolCalls() {
11163
11285
  return __classPrivateFieldGet(this, _BetaToolRunnerStream_toolCalls, "f");
11164
11286
  }
11165
- static start(client, params, options, onToolCall) {
11166
- const stream = new BetaToolRunnerStream({ ...params, stream: true }, onToolCall, client);
11167
- for (const message of params.messages) {
11168
- stream._addMessageParam(message);
11169
- }
11170
- stream._run(() => stream._createMessage(client.beta.messages, { ...params, stream: true }, { ...options, headers: { ...options?.headers, [STAINLESS_HELPER_METHOD_HEADER]: "stream" } }));
11171
- return stream;
11172
- }
11173
11287
  _deliverEvent(event, snapshot) {
11174
11288
  var _a;
11175
11289
  __classPrivateFieldSet(this, _BetaToolRunnerStream_emitted, (_a = __classPrivateFieldGet(this, _BetaToolRunnerStream_emitted, "f"), _a++, _a), "f");
@@ -11249,12 +11363,422 @@ var BetaToolRunnerStream = /* @__PURE__ */ (() => {
11249
11363
  return BetaToolRunnerStream;
11250
11364
  })();
11251
11365
 
11366
+ // node_modules/@anthropic-ai/sdk/lib/internal/threads/ThreadState.mjs
11367
+ var _ThreadState_instances;
11368
+ var _ThreadState_fields;
11369
+ var _ThreadState_stored;
11370
+ var _ThreadState_staged;
11371
+ var _ThreadState_anchor;
11372
+ var _ThreadState_turn;
11373
+ var _ThreadState_logger;
11374
+ var _ThreadState_lastReply_get;
11375
+ var _ThreadState_repeatsLastReply;
11376
+ var _ThreadState_startNewThread;
11377
+ var _ThreadState_retryPartialTurn;
11378
+ var _ThreadState_dropsRefusedTurn;
11379
+ var _ThreadState_storeTurn;
11380
+ var _ThreadState_adoptContainer;
11381
+ var _ThreadState_checkCreateOnly;
11382
+ var _ThreadState_requestOptions;
11383
+
11384
+ class Turn {
11385
+ constructor(fields, ownMessages, ownCreateOnly) {
11386
+ this.fields = fields;
11387
+ this.ownMessages = ownMessages;
11388
+ this.ownCreateOnly = ownCreateOnly;
11389
+ this.deferredMessages = [];
11390
+ this.replacementHistory = null;
11391
+ this.createOnly = createOnlyJSON(fields);
11392
+ }
11393
+ }
11394
+ var ThreadState = /* @__PURE__ */ (() => {
11395
+
11396
+ class ThreadState {
11397
+ constructor({ params, options, threading, logger }) {
11398
+ _ThreadState_instances.add(this);
11399
+ _ThreadState_fields.set(this, undefined);
11400
+ _ThreadState_stored.set(this, []);
11401
+ _ThreadState_staged.set(this, []);
11402
+ _ThreadState_anchor.set(this, undefined);
11403
+ _ThreadState_turn.set(this, null);
11404
+ _ThreadState_logger.set(this, undefined);
11405
+ const { messages, unsupportedRequestBehavior, ...fields } = params;
11406
+ rejectThreadField(fields);
11407
+ this.options = options;
11408
+ this.unsupportedRequestBehavior = unsupportedRequestBehavior ?? "error";
11409
+ __classPrivateFieldSet(this, _ThreadState_fields, fields, "f");
11410
+ __classPrivateFieldSet(this, _ThreadState_anchor, threading ? { type: "create", replacesLostThread: false } : { type: "never_threaded" }, "f");
11411
+ __classPrivateFieldSet(this, _ThreadState_logger, logger, "f");
11412
+ this.push(messages ?? []);
11413
+ }
11414
+ get threading() {
11415
+ return __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "create" || __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "continue";
11416
+ }
11417
+ get previousMessageId() {
11418
+ return __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "continue" ? __classPrivateFieldGet(this, _ThreadState_anchor, "f").previousMessageId : null;
11419
+ }
11420
+ get messages() {
11421
+ const messages = __classPrivateFieldGet(this, _ThreadState_turn, "f")?.replacementHistory?.slice() ?? [...__classPrivateFieldGet(this, _ThreadState_stored, "f"), ...__classPrivateFieldGet(this, _ThreadState_staged, "f")].map((entry) => entry.param);
11422
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f"))
11423
+ messages.push(...__classPrivateFieldGet(this, _ThreadState_turn, "f").deferredMessages.map(toMessageParam));
11424
+ return messages;
11425
+ }
11426
+ get params() {
11427
+ const ownCreateOnly = __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "create" ? __classPrivateFieldGet(this, _ThreadState_turn, "f")?.ownCreateOnly : undefined;
11428
+ return { ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), ...ownCreateOnly, messages: this.messages };
11429
+ }
11430
+ push(messages) {
11431
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f")) {
11432
+ __classPrivateFieldGet(this, _ThreadState_turn, "f").deferredMessages.push(...messages);
11433
+ return;
11434
+ }
11435
+ for (const message of messages) {
11436
+ if (__classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_repeatsLastReply).call(this, message))
11437
+ continue;
11438
+ __classPrivateFieldGet(this, _ThreadState_staged, "f").push({ param: toMessageParam(message), reply: null });
11439
+ }
11440
+ }
11441
+ update(fields = {}, options = {}) {
11442
+ rejectThreadField(fields);
11443
+ __classPrivateFieldSet(this, _ThreadState_fields, { ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), ...definedEntries(fields) }, "f");
11444
+ this.options = { ...this.options, ...definedEntries(options) };
11445
+ for (const field of CREATE_ONLY_FIELDS) {
11446
+ if (fields[field] !== undefined)
11447
+ delete __classPrivateFieldGet(this, _ThreadState_turn, "f")?.ownCreateOnly[field];
11448
+ }
11449
+ }
11450
+ fork(fields = __classPrivateFieldGet(this, _ThreadState_fields, "f")) {
11451
+ const fork = new ThreadState({
11452
+ params: { ...fields, unsupportedRequestBehavior: this.unsupportedRequestBehavior },
11453
+ options: this.options,
11454
+ threading: __classPrivateFieldGet(this, _ThreadState_anchor, "f").type !== "never_threaded",
11455
+ logger: __classPrivateFieldGet(this, _ThreadState_logger, "f")
11456
+ });
11457
+ if (!this.threading)
11458
+ fork.stopThreading();
11459
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f")?.replacementHistory) {
11460
+ __classPrivateFieldSet(fork, _ThreadState_staged, __classPrivateFieldGet(this, _ThreadState_turn, "f").replacementHistory.map((param) => ({ param, reply: null })), "f");
11461
+ } else {
11462
+ __classPrivateFieldSet(fork, _ThreadState_stored, [...__classPrivateFieldGet(this, _ThreadState_stored, "f")], "f");
11463
+ __classPrivateFieldSet(fork, _ThreadState_staged, [...__classPrivateFieldGet(this, _ThreadState_staged, "f")], "f");
11464
+ }
11465
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f"))
11466
+ fork.push(__classPrivateFieldGet(this, _ThreadState_turn, "f").deferredMessages);
11467
+ return fork;
11468
+ }
11469
+ setParams({ messages, ...fields }) {
11470
+ __classPrivateFieldSet(this, _ThreadState_fields, fields, "f");
11471
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f"))
11472
+ __classPrivateFieldGet(this, _ThreadState_turn, "f").ownCreateOnly = {};
11473
+ this.setMessages(messages);
11474
+ }
11475
+ setMessages(messages) {
11476
+ const entries = [...__classPrivateFieldGet(this, _ThreadState_stored, "f"), ...__classPrivateFieldGet(this, _ThreadState_staged, "f")];
11477
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f")) {
11478
+ const sent = entries.map((entry) => entry.param);
11479
+ if (startsWith(messages, sent)) {
11480
+ __classPrivateFieldGet(this, _ThreadState_turn, "f").replacementHistory = null;
11481
+ __classPrivateFieldGet(this, _ThreadState_turn, "f").deferredMessages = messages.slice(sent.length);
11482
+ } else {
11483
+ __classPrivateFieldGet(this, _ThreadState_turn, "f").replacementHistory = messages;
11484
+ __classPrivateFieldGet(this, _ThreadState_turn, "f").deferredMessages = [];
11485
+ }
11486
+ return;
11487
+ }
11488
+ if (!startsWith(messages, __classPrivateFieldGet(this, _ThreadState_stored, "f").map((entry) => entry.param))) {
11489
+ __classPrivateFieldSet(this, _ThreadState_stored, [], "f");
11490
+ if (this.threading)
11491
+ __classPrivateFieldSet(this, _ThreadState_anchor, { type: "create", replacesLostThread: false }, "f");
11492
+ }
11493
+ __classPrivateFieldSet(this, _ThreadState_staged, [], "f");
11494
+ const replies = new Map(entries.filter((entry) => entry.reply).map((entry) => [entry.param.content, entry]));
11495
+ for (const message of messages.slice(__classPrivateFieldGet(this, _ThreadState_stored, "f").length)) {
11496
+ if (__classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_repeatsLastReply).call(this, message))
11497
+ continue;
11498
+ __classPrivateFieldGet(this, _ThreadState_staged, "f").push({
11499
+ ...replies.get(message.content) ?? { reply: null },
11500
+ param: toMessageParam(message)
11501
+ });
11502
+ }
11503
+ }
11504
+ get hasTurnToSend() {
11505
+ return __classPrivateFieldGet(this, _ThreadState_staged, "f").length > 0 || isUnfinishedStopReason(__classPrivateFieldGet(this, _ThreadState_stored, "f").at(-1)?.reply?.stop_reason);
11506
+ }
11507
+ startTurn(messages, fields) {
11508
+ if (__classPrivateFieldGet(this, _ThreadState_turn, "f")) {
11509
+ throw new AnthropicError("Another `send()`, `parse()` or `stream()` is already in progress on this thread");
11510
+ }
11511
+ rejectThreadField(fields);
11512
+ const alreadyStaged = __classPrivateFieldGet(this, _ThreadState_staged, "f").length;
11513
+ this.push(messages);
11514
+ const ownMessages = __classPrivateFieldGet(this, _ThreadState_staged, "f").slice(alreadyStaged);
11515
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_retryPartialTurn).call(this);
11516
+ const ownCreateOnly = {};
11517
+ if (fields.system !== undefined)
11518
+ ownCreateOnly.system = fields.system;
11519
+ if (fields.tools !== undefined)
11520
+ ownCreateOnly.tools = fields.tools;
11521
+ return __classPrivateFieldSet(this, _ThreadState_turn, new Turn({ ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), ...definedEntries(fields) }, ownMessages, ownCreateOnly), "f");
11522
+ }
11523
+ endTurn(turn) {
11524
+ __classPrivateFieldSet(this, _ThreadState_turn, null, "f");
11525
+ __classPrivateFieldSet(this, _ThreadState_staged, __classPrivateFieldGet(this, _ThreadState_staged, "f").filter((entry) => !turn.ownMessages.includes(entry)), "f");
11526
+ if (turn.replacementHistory)
11527
+ this.setMessages(turn.replacementHistory);
11528
+ this.push(turn.deferredMessages);
11529
+ }
11530
+ recoversFrom(error) {
11531
+ if (!(error instanceof APIError))
11532
+ return false;
11533
+ const continuesUnthreaded = this.unsupportedRequestBehavior === "continue_unthreaded";
11534
+ const reason = replayReason(error);
11535
+ if (reason !== null && __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "continue") {
11536
+ if (reason === "thread_not_found" && __classPrivateFieldGet(this, _ThreadState_anchor, "f").replacesLostThread && continuesUnthreaded) {
11537
+ __classPrivateFieldGet(this, _ThreadState_logger, "f").info(`The server lost the thread again right after a replay; continuing without a thread: previous_message_id=${__classPrivateFieldGet(this, _ThreadState_anchor, "f").previousMessageId}`);
11538
+ this.stopThreading();
11539
+ } else {
11540
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_startNewThread).call(this, reason);
11541
+ }
11542
+ return true;
11543
+ }
11544
+ const unsupported = unsupportedFeatures(error);
11545
+ if (unsupported !== null && this.threading && continuesUnthreaded) {
11546
+ __classPrivateFieldGet(this, _ThreadState_logger, "f").info(`The server cannot thread this request; continuing without a thread: unsupported=${unsupported.join(",")}`);
11547
+ this.stopThreading();
11548
+ return true;
11549
+ }
11550
+ return false;
11551
+ }
11552
+ stopThreading() {
11553
+ if (this.threading)
11554
+ __classPrivateFieldSet(this, _ThreadState_anchor, { type: "unthreaded" }, "f");
11555
+ }
11556
+ recordPartialReply(snapshot, completedBlocks) {
11557
+ if (__classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_dropsRefusedTurn).call(this, snapshot))
11558
+ return;
11559
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_storeTurn).call(this, partialReply(snapshot, completedBlocks), { partial: true });
11560
+ if (this.previousMessageId !== null) {
11561
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_startNewThread).call(this, "stream_ended_before_message_stop");
11562
+ }
11563
+ }
11564
+ recordReply(turn, message) {
11565
+ if (__classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_dropsRefusedTurn).call(this, message))
11566
+ return;
11567
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_storeTurn).call(this, message, { partial: false });
11568
+ if (__classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "create") {
11569
+ __classPrivateFieldSet(this, _ThreadState_fields, { ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), ...turn.ownCreateOnly }, "f");
11570
+ }
11571
+ if (this.threading) {
11572
+ __classPrivateFieldSet(this, _ThreadState_anchor, {
11573
+ type: "continue",
11574
+ previousMessageId: message.id,
11575
+ createdWith: turn.createOnly,
11576
+ replacesLostThread: __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "create" && __classPrivateFieldGet(this, _ThreadState_anchor, "f").replacesLostThread
11577
+ }, "f");
11578
+ if (message.usage.iterations?.some((iteration) => iteration.type === "fallback_message")) {
11579
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_startNewThread).call(this, "fallback_message");
11580
+ }
11581
+ }
11582
+ if (message.container) {
11583
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_adoptContainer).call(this, message.container.id);
11584
+ }
11585
+ }
11586
+ buildCreateArguments(turn, options, { stream }) {
11587
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_checkCreateOnly).call(this, turn.createOnly);
11588
+ const anchor = __classPrivateFieldGet(this, _ThreadState_anchor, "f");
11589
+ let stored = anchor.type === "continue" ? [] : __classPrivateFieldGet(this, _ThreadState_stored, "f").map((entry) => entry.param);
11590
+ if (anchor.type !== "never_threaded") {
11591
+ const answered = __classPrivateFieldGet(this, _ThreadState_stored, "f").map((entry) => entry.reply !== null).lastIndexOf(true) + 1;
11592
+ stored = stored.map((message, i) => i < answered ? withoutCacheControl(message) : message);
11593
+ }
11594
+ const params = {
11595
+ ...turn.fields,
11596
+ messages: [...stored, ...__classPrivateFieldGet(this, _ThreadState_staged, "f").map((entry) => entry.param)]
11597
+ };
11598
+ if (this.threading && !params.betas?.includes(MESSAGE_THREADS_BETA)) {
11599
+ params.betas = [...params.betas ?? [], MESSAGE_THREADS_BETA];
11600
+ }
11601
+ if (anchor.type === "create") {
11602
+ params.thread = { type: "create" };
11603
+ } else if (anchor.type === "continue") {
11604
+ params.thread = { type: "continue", previous_message_id: anchor.previousMessageId };
11605
+ for (const field of CREATE_ONLY_FIELDS)
11606
+ delete params[field];
11607
+ }
11608
+ return { params, options: __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_requestOptions).call(this, options, { stream }) };
11609
+ }
11610
+ checkNextTurn(fields) {
11611
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_checkCreateOnly).call(this, createOnlyJSON({ ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), ...definedEntries(fields) }));
11612
+ }
11613
+ }
11614
+ _ThreadState_fields = new WeakMap, _ThreadState_stored = new WeakMap, _ThreadState_staged = new WeakMap, _ThreadState_anchor = new WeakMap, _ThreadState_turn = new WeakMap, _ThreadState_logger = new WeakMap, _ThreadState_instances = new WeakSet, _ThreadState_lastReply_get = function _ThreadState_lastReply_get() {
11615
+ for (const entries of [__classPrivateFieldGet(this, _ThreadState_staged, "f"), __classPrivateFieldGet(this, _ThreadState_stored, "f")]) {
11616
+ for (let i = entries.length - 1;i >= 0; i--) {
11617
+ if (entries[i].reply)
11618
+ return entries[i].reply;
11619
+ }
11620
+ }
11621
+ return null;
11622
+ }, _ThreadState_repeatsLastReply = function _ThreadState_repeatsLastReply(message) {
11623
+ if ("id" in message)
11624
+ return message.id === __classPrivateFieldGet(this, _ThreadState_instances, "a", _ThreadState_lastReply_get)?.id;
11625
+ const last = __classPrivateFieldGet(this, _ThreadState_staged, "f").at(-1) ?? __classPrivateFieldGet(this, _ThreadState_stored, "f").at(-1);
11626
+ return last?.reply != null && sameMessage(message, last.param);
11627
+ }, _ThreadState_startNewThread = function _ThreadState_startNewThread(reason) {
11628
+ __classPrivateFieldGet(this, _ThreadState_logger, "f").info(`Replaying the full message history under a new thread: reason=${reason} previous_message_id=${this.previousMessageId}`);
11629
+ __classPrivateFieldSet(this, _ThreadState_anchor, { type: "create", replacesLostThread: reason === "thread_not_found" }, "f");
11630
+ }, _ThreadState_retryPartialTurn = function _ThreadState_retryPartialTurn() {
11631
+ const tail = __classPrivateFieldGet(this, _ThreadState_stored, "f").at(-1);
11632
+ if (__classPrivateFieldGet(this, _ThreadState_staged, "f").length || !tail || tail.reply && !tail.partial)
11633
+ return;
11634
+ if (tail.reply)
11635
+ __classPrivateFieldGet(this, _ThreadState_stored, "f").pop();
11636
+ let turnStart = __classPrivateFieldGet(this, _ThreadState_stored, "f").length;
11637
+ while (turnStart > 0 && !__classPrivateFieldGet(this, _ThreadState_stored, "f")[turnStart - 1].reply)
11638
+ turnStart -= 1;
11639
+ __classPrivateFieldSet(this, _ThreadState_staged, __classPrivateFieldGet(this, _ThreadState_stored, "f").splice(turnStart), "f");
11640
+ __classPrivateFieldGet(this, _ThreadState_logger, "f").info(`Re-sending the turn whose reply ended before \`message_stop\`: partial_reply_id=${tail.reply?.id ?? null}`);
11641
+ }, _ThreadState_dropsRefusedTurn = function _ThreadState_dropsRefusedTurn(reply) {
11642
+ if (reply.stop_reason !== "refusal" || __classPrivateFieldGet(this, _ThreadState_anchor, "f").type === "never_threaded")
11643
+ return false;
11644
+ if (this.previousMessageId !== null)
11645
+ __classPrivateFieldGet(this, _ThreadState_instances, "m", _ThreadState_startNewThread).call(this, "refusal");
11646
+ return true;
11647
+ }, _ThreadState_storeTurn = function _ThreadState_storeTurn(reply, { partial }) {
11648
+ __classPrivateFieldGet(this, _ThreadState_stored, "f").push(...__classPrivateFieldGet(this, _ThreadState_staged, "f"));
11649
+ __classPrivateFieldSet(this, _ThreadState_staged, [], "f");
11650
+ if (reply)
11651
+ __classPrivateFieldGet(this, _ThreadState_stored, "f").push({ param: toMessageParam(reply), reply, partial });
11652
+ }, _ThreadState_adoptContainer = function _ThreadState_adoptContainer(containerId) {
11653
+ const { container } = __classPrivateFieldGet(this, _ThreadState_fields, "f");
11654
+ if (container == null) {
11655
+ __classPrivateFieldSet(this, _ThreadState_fields, { ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), container: containerId }, "f");
11656
+ } else if (typeof container === "object" && container.id == null) {
11657
+ __classPrivateFieldSet(this, _ThreadState_fields, { ...__classPrivateFieldGet(this, _ThreadState_fields, "f"), container: { ...container, id: containerId } }, "f");
11658
+ }
11659
+ }, _ThreadState_checkCreateOnly = function _ThreadState_checkCreateOnly(createOnly) {
11660
+ if (__classPrivateFieldGet(this, _ThreadState_anchor, "f").type !== "continue")
11661
+ return;
11662
+ const { createdWith } = __classPrivateFieldGet(this, _ThreadState_anchor, "f");
11663
+ const changed = CREATE_ONLY_FIELDS.filter((field) => createOnly[field] !== createdWith[field]);
11664
+ if (changed.length) {
11665
+ const names = changed.map((field) => `\`${field}\``).join(" and ");
11666
+ throw new AnthropicError(`Cannot change ${names} on a thread: the server keeps the \`system\` and \`tools\` the thread was created ` + "with. To change them, start a new thread from `thread.params`." + (changed.includes("tools") ? " To add or remove tools on this thread, send `tool_addition` or `tool_removal` blocks in a " + "`system` message." : ""));
11667
+ }
11668
+ }, _ThreadState_requestOptions = function _ThreadState_requestOptions(overrides, { stream }) {
11669
+ const options = { ...this.options, ...definedEntries(overrides) };
11670
+ if (stream) {
11671
+ options.headers = buildHeaders([{ [STAINLESS_HELPER_METHOD_HEADER]: "stream" }, options.headers]);
11672
+ }
11673
+ if (__classPrivateFieldGet(this, _ThreadState_anchor, "f").type !== "never_threaded") {
11674
+ options.headers = buildHeaders([options.headers, helperHeader("message-thread")]);
11675
+ }
11676
+ if (this.threading) {
11677
+ options.headers = withThreadsBeta(options.headers);
11678
+ }
11679
+ return options;
11680
+ };
11681
+ return ThreadState;
11682
+ })();
11683
+ var UNFINISHED_STOP_REASONS = ["pause_turn", "compaction"];
11684
+ function isUnfinishedStopReason(stopReason) {
11685
+ return UNFINISHED_STOP_REASONS.some((unfinished) => unfinished === stopReason);
11686
+ }
11687
+ var MESSAGE_THREADS_BETA = "message-threads-2026-08-12";
11688
+ var CREATE_ONLY_FIELDS = ["system", "tools"];
11689
+ function createOnlyJSON(fields) {
11690
+ return { system: JSON.stringify(fields.system), tools: JSON.stringify(fields.tools) };
11691
+ }
11692
+ function withThreadsBeta(headers) {
11693
+ const callerBetas = buildHeaders([headers]).values.get("anthropic-beta");
11694
+ if (callerBetas === null)
11695
+ return headers;
11696
+ return buildHeaders([headers, { "anthropic-beta": appendHeaderValue(callerBetas, MESSAGE_THREADS_BETA) }]);
11697
+ }
11698
+ function replayReason(error) {
11699
+ const errorCode = errorDetails(error)?.["error_code"];
11700
+ return REPLAY_ERROR_CODES.find((code) => code === errorCode) ?? null;
11701
+ }
11702
+ var REPLAY_ERROR_CODES = [
11703
+ "thread_not_found",
11704
+ "thread_already_continued",
11705
+ "thread_continue_in_flight"
11706
+ ];
11707
+ function unsupportedFeatures(error) {
11708
+ const details = errorDetails(error);
11709
+ if (details?.["error_code"] !== "thread_unsupported_request")
11710
+ return null;
11711
+ const unsupported = details["unsupported"];
11712
+ return Array.isArray(unsupported) ? unsupported.map(String) : [];
11713
+ }
11714
+ function errorDetails(error) {
11715
+ const body = error.error;
11716
+ const details = body?.error?.details;
11717
+ return isObj(details) ? details : null;
11718
+ }
11719
+ function rejectThreadField(fields) {
11720
+ if ("thread" in fields && fields.thread !== undefined) {
11721
+ throw new TypeError("`thread` cannot be set here. The message thread sets it for each request itself.");
11722
+ }
11723
+ }
11724
+ function definedEntries(object) {
11725
+ return Object.fromEntries(Object.entries(object).filter(([, value]) => value !== undefined));
11726
+ }
11727
+ function partialReply(snapshot, completedBlocks) {
11728
+ const content = snapshot.content.slice(0, completedBlocks);
11729
+ const unfinished = snapshot.content[completedBlocks];
11730
+ if (unfinished?.type === "text" && unfinished.text)
11731
+ content.push(unfinished);
11732
+ return content.length ? { ...snapshot, content } : null;
11733
+ }
11734
+ function withoutCacheControl(value) {
11735
+ if (!isObj(value))
11736
+ return value;
11737
+ const { cache_control, ...copy } = value;
11738
+ for (const key of ["content", "source", "tool", "definition", "tool_references"]) {
11739
+ const nested = copy[key];
11740
+ if (Array.isArray(nested))
11741
+ copy[key] = nested.map(withoutCacheControl);
11742
+ else if (isObj(nested))
11743
+ copy[key] = withoutCacheControl(nested);
11744
+ }
11745
+ return copy;
11746
+ }
11747
+ function startsWith(messages, prefix) {
11748
+ return prefix.length <= messages.length && prefix.every((message, i) => sameMessage(message, messages[i]));
11749
+ }
11750
+ function sameMessage(a, b) {
11751
+ const [left, right] = [toMessageParam(a), toMessageParam(b)];
11752
+ const keys = Object.keys({ ...left, ...right });
11753
+ return keys.every((key) => left[key] === right[key] || JSON.stringify(left[key]) === JSON.stringify(right[key]));
11754
+ }
11755
+ function toMessageParam(message) {
11756
+ return "id" in message ? { role: message.role, content: message.content } : message;
11757
+ }
11758
+ function toMessageList(input) {
11759
+ if (input === undefined)
11760
+ return [];
11761
+ return isReadonlyArray(input) ? input : [input];
11762
+ }
11763
+
11764
+ // node_modules/@anthropic-ai/sdk/lib/internal/threads/tool-runner-params.mjs
11765
+ function splitToolRunnerParams(params) {
11766
+ const { stream, max_iterations, runToolsEagerly, thread, ...threadParams } = params;
11767
+ if (thread !== undefined && thread !== false) {
11768
+ throw new TypeError("`thread` cannot be set in the params of a tool runner. The runner sets it for each request itself. " + "To run without a message thread, pass `thread: false`.");
11769
+ }
11770
+ return { settings: { stream, max_iterations, runToolsEagerly }, thread, threadParams };
11771
+ }
11772
+
11252
11773
  // node_modules/@anthropic-ai/sdk/lib/tools/BetaToolRunner.mjs
11253
11774
  var _BetaToolRunner_instances;
11254
11775
  var _BetaToolRunner_consumed;
11255
11776
  var _BetaToolRunner_mutated;
11256
- var _BetaToolRunner_state;
11777
+ var _BetaToolRunner_thread;
11778
+ var _BetaToolRunner_settings;
11257
11779
  var _BetaToolRunner_options;
11780
+ var _BetaToolRunner_helperHeader;
11781
+ var _BetaToolRunner_messagesWithoutReply;
11258
11782
  var _BetaToolRunner_message;
11259
11783
  var _BetaToolRunner_stream;
11260
11784
  var _BetaToolRunner_toolResponse;
@@ -11268,15 +11792,18 @@ var _BetaToolRunner_toolOverrides;
11268
11792
  var _BetaToolRunner_pendingToolChanges;
11269
11793
  var _BetaToolRunner_withToolRunnerSpan;
11270
11794
  var _BetaToolRunner_send;
11795
+ var _BetaToolRunner_turnOptions;
11271
11796
  var _BetaToolRunner_streamThatStartsTools;
11272
11797
  var _BetaToolRunner_startedCallsSettled;
11273
11798
  var _BetaToolRunner_compact;
11799
+ var _BetaToolRunner_compactionThread;
11274
11800
  var _BetaToolRunner_runnableTools;
11275
11801
  var _BetaToolRunner_availableToolNames;
11276
11802
  var _BetaToolRunner_recordRemovalsFromHistory;
11277
11803
  var _BetaToolRunner_compactAfterFinalTurn;
11278
11804
  var _BetaToolRunner_generateToolResponse;
11279
11805
  var _BetaToolRunner_toolsetFamilies;
11806
+ var _BetaToolRunner_toolsetParams;
11280
11807
  var _BetaToolRunner_flushPendingToolChanges;
11281
11808
  var _BetaToolRunner_pendingToolChangesMessage;
11282
11809
  var USE_A_NEW_RUNNER = "a tool runner's toolsets come only from its tools param; change them with setMessagesParams(), or build a new runner";
@@ -11284,13 +11811,15 @@ var REMOVE_WITH_A_NEW_RUNNER = "a tool runner's toolsets come only from its tool
11284
11811
  var BetaToolRunner2 = /* @__PURE__ */ (() => {
11285
11812
 
11286
11813
  class BetaToolRunner {
11287
- constructor(client, params, options) {
11814
+ constructor(clientOrThread, paramsOrSettings, options) {
11288
11815
  _BetaToolRunner_instances.add(this);
11289
- this.client = client;
11290
11816
  _BetaToolRunner_consumed.set(this, false);
11291
11817
  _BetaToolRunner_mutated.set(this, false);
11292
- _BetaToolRunner_state.set(this, undefined);
11818
+ _BetaToolRunner_thread.set(this, undefined);
11819
+ _BetaToolRunner_settings.set(this, undefined);
11293
11820
  _BetaToolRunner_options.set(this, undefined);
11821
+ _BetaToolRunner_helperHeader.set(this, undefined);
11822
+ _BetaToolRunner_messagesWithoutReply.set(this, undefined);
11294
11823
  _BetaToolRunner_message.set(this, undefined);
11295
11824
  _BetaToolRunner_stream.set(this, undefined);
11296
11825
  _BetaToolRunner_toolResponse.set(this, undefined);
@@ -11302,26 +11831,24 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11302
11831
  _BetaToolRunner_lastStopReason.set(this, null);
11303
11832
  _BetaToolRunner_toolOverrides.set(this, new Map);
11304
11833
  _BetaToolRunner_pendingToolChanges.set(this, []);
11305
- rejectCompactionParam(params);
11306
- rejectRunToolsEagerlyWithoutStream(params);
11307
- __classPrivateFieldSet(this, _BetaToolRunner_state, {
11308
- params: {
11309
- ...params,
11310
- messages: JSON.parse(JSON.stringify(withToolDefinitions(params.messages)))
11311
- }
11312
- }, "f");
11313
- const collected = collectStainlessHelpers(params.tools, params.messages);
11314
- __classPrivateFieldSet(this, _BetaToolRunner_options, {
11315
- ...options,
11316
- headers: buildHeaders([
11317
- helperHeader("BetaToolRunner"),
11318
- collected.length ? { [STAINLESS_HELPER_HEADER]: collected.join(", ") } : undefined,
11319
- options?.headers
11320
- ])
11321
- }, "f");
11834
+ const { thread, settings } = "_state" in clientOrThread ? { thread: clientOrThread, settings: paramsOrSettings } : clientOrThread.beta.messages._toolRunnerThread(paramsOrSettings);
11835
+ rejectCompactionParam(thread._state.params);
11836
+ rejectRunToolsEagerlyWithoutStream(settings);
11837
+ __classPrivateFieldSet(this, _BetaToolRunner_thread, thread, "f");
11838
+ __classPrivateFieldSet(this, _BetaToolRunner_settings, definedEntries(settings), "f");
11839
+ const { tools, messages } = thread._state.params;
11840
+ const collected = collectStainlessHelpers(tools, messages);
11841
+ if (!("_state" in clientOrThread)) {
11842
+ thread._state.setMessages(JSON.parse(JSON.stringify(withToolDefinitions(messages))));
11843
+ }
11844
+ __classPrivateFieldSet(this, _BetaToolRunner_options, { ...options }, "f");
11845
+ __classPrivateFieldSet(this, _BetaToolRunner_helperHeader, buildHeaders([
11846
+ helperHeader("BetaToolRunner"),
11847
+ collected.length ? { [STAINLESS_HELPER_HEADER]: collected.join(", ") } : undefined
11848
+ ]), "f");
11322
11849
  __classPrivateFieldSet(this, _BetaToolRunner_completion, promiseWithResolvers(), "f");
11323
11850
  }
11324
- async* [(_BetaToolRunner_consumed = new WeakMap, _BetaToolRunner_mutated = new WeakMap, _BetaToolRunner_state = new WeakMap, _BetaToolRunner_options = new WeakMap, _BetaToolRunner_message = new WeakMap, _BetaToolRunner_stream = new WeakMap, _BetaToolRunner_toolResponse = new WeakMap, _BetaToolRunner_completion = new WeakMap, _BetaToolRunner_iterationCount = new WeakMap, _BetaToolRunner_toolRunnerOtelContext = new WeakMap, _BetaToolRunner_compaction = new WeakMap, _BetaToolRunner_calls = new WeakMap, _BetaToolRunner_lastStopReason = new WeakMap, _BetaToolRunner_toolOverrides = new WeakMap, _BetaToolRunner_pendingToolChanges = new WeakMap, _BetaToolRunner_instances = new WeakSet, _BetaToolRunner_withToolRunnerSpan = function _BetaToolRunner_withToolRunnerSpan2(fn) {
11851
+ async* [(_BetaToolRunner_consumed = new WeakMap, _BetaToolRunner_mutated = new WeakMap, _BetaToolRunner_thread = new WeakMap, _BetaToolRunner_settings = new WeakMap, _BetaToolRunner_options = new WeakMap, _BetaToolRunner_helperHeader = new WeakMap, _BetaToolRunner_messagesWithoutReply = new WeakMap, _BetaToolRunner_message = new WeakMap, _BetaToolRunner_stream = new WeakMap, _BetaToolRunner_toolResponse = new WeakMap, _BetaToolRunner_completion = new WeakMap, _BetaToolRunner_iterationCount = new WeakMap, _BetaToolRunner_toolRunnerOtelContext = new WeakMap, _BetaToolRunner_compaction = new WeakMap, _BetaToolRunner_calls = new WeakMap, _BetaToolRunner_lastStopReason = new WeakMap, _BetaToolRunner_toolOverrides = new WeakMap, _BetaToolRunner_pendingToolChanges = new WeakMap, _BetaToolRunner_instances = new WeakSet, _BetaToolRunner_withToolRunnerSpan = function _BetaToolRunner_withToolRunnerSpan2(fn) {
11325
11852
  if (!__classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f")) {
11326
11853
  return fn();
11327
11854
  }
@@ -11334,12 +11861,12 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11334
11861
  __classPrivateFieldSet(this, _BetaToolRunner_consumed, true, "f");
11335
11862
  __classPrivateFieldSet(this, _BetaToolRunner_mutated, true, "f");
11336
11863
  __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
11337
- const toolRunnerSpan = guardTracing(this.client, () => startToolRunnerSpan(this.client, __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params, __classPrivateFieldGet(this, _BetaToolRunner_options, "f").openTelemetry?.conversationId));
11864
+ const toolRunnerSpan = guardTracing(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, () => startToolRunnerSpan(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, this.params, __classPrivateFieldGet(this, _BetaToolRunner_options, "f").openTelemetry?.conversationId));
11338
11865
  __classPrivateFieldSet(this, _BetaToolRunner_toolRunnerOtelContext, toolRunnerSpan && import_api8.trace.setSpan(import_api8.context.active(), toolRunnerSpan), "f");
11339
11866
  try {
11340
11867
  while (true) {
11341
11868
  try {
11342
- if (__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.max_iterations && __classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f") >= __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.max_iterations) {
11869
+ if (__classPrivateFieldGet(this, _BetaToolRunner_settings, "f").max_iterations && __classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f") >= __classPrivateFieldGet(this, _BetaToolRunner_settings, "f").max_iterations) {
11343
11870
  break;
11344
11871
  }
11345
11872
  __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_flushPendingToolChanges).call(this);
@@ -11351,38 +11878,41 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11351
11878
  __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
11352
11879
  __classPrivateFieldSet(this, _BetaToolRunner_iterationCount, (_a = __classPrivateFieldGet(this, _BetaToolRunner_iterationCount, "f"), _a++, _a), "f");
11353
11880
  __classPrivateFieldSet(this, _BetaToolRunner_message, undefined, "f");
11354
- const { max_iterations, runToolsEagerly, ...params } = __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
11355
- yield* __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_send).call(this, params);
11881
+ yield* __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_send).call(this, __classPrivateFieldGet(this, _BetaToolRunner_thread, "f"));
11882
+ const callerMessages = __classPrivateFieldGet(this, _BetaToolRunner_messagesWithoutReply, "f");
11883
+ __classPrivateFieldSet(this, _BetaToolRunner_messagesWithoutReply, undefined, "f");
11356
11884
  const next = await __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, async () => {
11885
+ let toAnswer;
11357
11886
  if (!__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f")) {
11358
11887
  const message = await __classPrivateFieldGet(this, _BetaToolRunner_message, "f");
11359
11888
  const nextStep = determineNextStepFromStopReason(message.stop_reason);
11360
11889
  __classPrivateFieldSet(this, _BetaToolRunner_lastStopReason, message.stop_reason, "f");
11361
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push({
11362
- role: message.role,
11363
- content: asContentParam(message.content)
11364
- });
11365
- const { container } = __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
11366
- if (message.container) {
11367
- if (container == null) {
11368
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.container = message.container.id;
11369
- } else if (typeof container === "object" && container.id == null) {
11370
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.container = { ...container, id: message.container.id };
11371
- }
11372
- }
11373
11890
  if (nextStep === "stop") {
11374
11891
  return "stop";
11375
11892
  }
11376
11893
  if (nextStep === "resume") {
11377
11894
  return "continue";
11378
11895
  }
11896
+ toAnswer = lastAssistantMessage(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages);
11379
11897
  } else {
11380
11898
  __classPrivateFieldSet(this, _BetaToolRunner_lastStopReason, null, "f");
11899
+ __classPrivateFieldGet(this, _BetaToolRunner_stream, "f")?.abort();
11900
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.checkNextTurn(turnParams(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")));
11901
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.setMessages(callerMessages);
11902
+ toAnswer = callerMessages.at(-1);
11381
11903
  }
11382
- const toolMessage = await __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_generateToolResponse).call(this, __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.at(-1), __classPrivateFieldGet(this, _BetaToolRunner_options, "f").signal, __classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f"));
11904
+ if (hasToolUse(toAnswer))
11905
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.checkNextTurn(turnParams(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")));
11906
+ const toolMessage = await __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_generateToolResponse).call(this, toAnswer, __classPrivateFieldGet(this, _BetaToolRunner_options, "f").signal, __classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f"));
11383
11907
  if (toolMessage) {
11384
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push(toolMessage);
11385
- } else if (!__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f")) {
11908
+ const history = __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages;
11909
+ const answered = history.map((message) => message.role).lastIndexOf("assistant") + 1;
11910
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.setMessages([
11911
+ ...history.slice(0, answered),
11912
+ toolMessage,
11913
+ ...history.slice(answered)
11914
+ ]);
11915
+ } else if (!__classPrivateFieldGet(this, _BetaToolRunner_mutated, "f") && !__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.hasTurnToSend) {
11386
11916
  return "stop";
11387
11917
  }
11388
11918
  return "continue";
@@ -11401,32 +11931,40 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11401
11931
  throw new AnthropicError("ToolRunner concluded without a message from the server");
11402
11932
  }
11403
11933
  __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").resolve(await __classPrivateFieldGet(this, _BetaToolRunner_message, "f"));
11404
- guardTracing(this.client, () => toolRunnerSpan?.setStatus({ code: import_api8.SpanStatusCode.OK }));
11934
+ guardTracing(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, () => toolRunnerSpan?.setStatus({ code: import_api8.SpanStatusCode.OK }));
11405
11935
  } catch (error) {
11406
11936
  if (toolRunnerSpan) {
11407
- guardTracing(this.client, () => setErrorStatus(toolRunnerSpan, error));
11937
+ guardTracing(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, () => setErrorStatus(toolRunnerSpan, error));
11408
11938
  }
11409
11939
  __classPrivateFieldSet(this, _BetaToolRunner_consumed, false, "f");
11940
+ __classPrivateFieldSet(this, _BetaToolRunner_messagesWithoutReply, undefined, "f");
11410
11941
  __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").promise.catch(() => {});
11411
11942
  __classPrivateFieldGet(this, _BetaToolRunner_completion, "f").reject(error);
11412
11943
  __classPrivateFieldSet(this, _BetaToolRunner_completion, promiseWithResolvers(), "f");
11413
11944
  throw error;
11414
11945
  } finally {
11415
- guardTracing(this.client, () => toolRunnerSpan?.end());
11946
+ guardTracing(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, () => toolRunnerSpan?.end());
11416
11947
  __classPrivateFieldSet(this, _BetaToolRunner_toolRunnerOtelContext, undefined, "f");
11417
11948
  }
11418
11949
  }
11419
11950
  setMessagesParams(paramsOrMutator) {
11420
- const params = typeof paramsOrMutator === "function" ? paramsOrMutator(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params) : paramsOrMutator;
11951
+ const params = typeof paramsOrMutator === "function" ? paramsOrMutator(this.params) : paramsOrMutator;
11421
11952
  rejectCompactionParam(params);
11422
- rejectRunToolsEagerlyWithoutStream(params);
11423
11953
  if (__classPrivateFieldGet(this, _BetaToolRunner_compaction, "f").status !== "idle") {
11424
11954
  rejectCompactionEdit(params);
11425
11955
  }
11426
- if (__classPrivateFieldGet(this, _BetaToolRunner_compaction, "f").status === "in_flight" && params.messages !== __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages) {
11427
- throw new AnthropicError("Message params can't be changed while the conversation is being compacted, because the compaction " + "response is about to replace them. Change them after this iteration instead.");
11956
+ if (__classPrivateFieldGet(this, _BetaToolRunner_compaction, "f").status === "in_flight" && !sameMessages(params.messages, __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages)) {
11957
+ throw new AnthropicError(MESSAGES_CHANGED_WHILE_COMPACTING);
11958
+ }
11959
+ const { settings, threadParams } = splitToolRunnerParams(params);
11960
+ rejectRunToolsEagerlyWithoutStream(settings);
11961
+ __classPrivateFieldSet(this, _BetaToolRunner_settings, definedEntries(settings), "f");
11962
+ if (__classPrivateFieldGet(this, _BetaToolRunner_messagesWithoutReply, "f")) {
11963
+ __classPrivateFieldSet(this, _BetaToolRunner_messagesWithoutReply, threadParams.messages, "f");
11964
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.setParams({ ...threadParams, messages: __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages });
11965
+ } else {
11966
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.setParams(threadParams);
11428
11967
  }
11429
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params = params;
11430
11968
  __classPrivateFieldSet(this, _BetaToolRunner_mutated, true, "f");
11431
11969
  __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
11432
11970
  }
@@ -11438,8 +11976,8 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11438
11976
  }
11439
11977
  }
11440
11978
  async generateToolResponse(signal = __classPrivateFieldGet(this, _BetaToolRunner_options, "f").signal) {
11441
- const callerOtelContext = this.client._tracer ? import_api8.context.active() : undefined;
11442
- const message = await __classPrivateFieldGet(this, _BetaToolRunner_message, "f") ?? this.params.messages.at(-1);
11979
+ const callerOtelContext = __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client._tracer ? import_api8.context.active() : undefined;
11980
+ const message = await __classPrivateFieldGet(this, _BetaToolRunner_message, "f") ?? __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages.at(-1);
11443
11981
  if (!message) {
11444
11982
  return null;
11445
11983
  }
@@ -11469,7 +12007,11 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11469
12007
  return this.done();
11470
12008
  }
11471
12009
  get params() {
11472
- return __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
12010
+ return {
12011
+ ...__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.params,
12012
+ ...__classPrivateFieldGet(this, _BetaToolRunner_messagesWithoutReply, "f") && { messages: [...__classPrivateFieldGet(this, _BetaToolRunner_messagesWithoutReply, "f")] },
12013
+ ...__classPrivateFieldGet(this, _BetaToolRunner_settings, "f")
12014
+ };
11473
12015
  }
11474
12016
  pushMessages(...messages) {
11475
12017
  this.setMessagesParams((params) => ({
@@ -11481,7 +12023,7 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11481
12023
  if (__classPrivateFieldGet(this, _BetaToolRunner_compaction, "f").status === "in_flight") {
11482
12024
  return;
11483
12025
  }
11484
- rejectCompactionEdit(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params);
12026
+ rejectCompactionEdit(this.params);
11485
12027
  __classPrivateFieldSet(this, _BetaToolRunner_compaction, { status: "scheduled", config: compaction ?? { type: "summarize" } }, "f");
11486
12028
  }
11487
12029
  addTools(...tools) {
@@ -11520,28 +12062,39 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11520
12062
  return this.runUntilDone().then(onfulfilled, onrejected);
11521
12063
  }
11522
12064
  }
11523
- _BetaToolRunner_send = async function* _BetaToolRunner_send(params) {
12065
+ _BetaToolRunner_send = async function* _BetaToolRunner_send(thread) {
11524
12066
  await __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_startedCallsSettled).call(this);
11525
12067
  __classPrivateFieldSet(this, _BetaToolRunner_calls, undefined, "f");
11526
- params = __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => ({
11527
- ...params,
11528
- ...params.tools && { tools: params.tools.map(toolDefinition) },
11529
- messages: withToolDefinitions(params.messages)
11530
- }));
11531
- if (params.stream) {
11532
- __classPrivateFieldSet(this, _BetaToolRunner_stream, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.runToolsEagerly ? __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_streamThatStartsTools).call(this, params) : this.client.beta.messages.stream({ ...params }, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"))), "f");
12068
+ const messages = thread.messages;
12069
+ if (messages.some(addsRunnableTool)) {
12070
+ __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => thread._state.setMessages(withToolDefinitions(messages)));
12071
+ }
12072
+ const { tools } = thread._state.params;
12073
+ if (__classPrivateFieldGet(this, _BetaToolRunner_settings, "f").stream) {
12074
+ __classPrivateFieldSet(this, _BetaToolRunner_stream, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => __classPrivateFieldGet(this, _BetaToolRunner_settings, "f").runToolsEagerly ? __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_streamThatStartsTools).call(this, thread) : thread.stream(undefined, turnParams(thread), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_turnOptions).call(this, thread))), "f");
12075
+ if (tools)
12076
+ thread.update({ tools });
12077
+ if (thread === __classPrivateFieldGet(this, _BetaToolRunner_thread, "f"))
12078
+ __classPrivateFieldSet(this, _BetaToolRunner_messagesWithoutReply, thread.messages, "f");
11533
12079
  __classPrivateFieldSet(this, _BetaToolRunner_message, __classPrivateFieldGet(this, _BetaToolRunner_stream, "f").finalMessage(), "f");
11534
12080
  __classPrivateFieldGet(this, _BetaToolRunner_message, "f").catch(() => {});
11535
12081
  yield __classPrivateFieldGet(this, _BetaToolRunner_stream, "f");
11536
12082
  } else {
11537
- __classPrivateFieldSet(this, _BetaToolRunner_message, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => this.client.beta.messages.create({ ...params, stream: false }, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"))), "f");
12083
+ __classPrivateFieldSet(this, _BetaToolRunner_message, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => thread.send(undefined, turnParams(thread), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_turnOptions).call(this, thread))), "f");
12084
+ if (tools)
12085
+ thread.update({ tools });
12086
+ if (thread === __classPrivateFieldGet(this, _BetaToolRunner_thread, "f"))
12087
+ __classPrivateFieldSet(this, _BetaToolRunner_messagesWithoutReply, thread.messages, "f");
11538
12088
  yield __classPrivateFieldGet(this, _BetaToolRunner_message, "f");
11539
12089
  }
11540
- }, _BetaToolRunner_streamThatStartsTools = function _BetaToolRunner_streamThatStartsTools(params) {
12090
+ }, _BetaToolRunner_turnOptions = function _BetaToolRunner_turnOptions(thread) {
12091
+ const { headers = thread._state.options.headers } = __classPrivateFieldGet(this, _BetaToolRunner_options, "f");
12092
+ return { ...__classPrivateFieldGet(this, _BetaToolRunner_options, "f"), headers: buildHeaders([__classPrivateFieldGet(this, _BetaToolRunner_helperHeader, "f"), headers]) };
12093
+ }, _BetaToolRunner_streamThatStartsTools = function _BetaToolRunner_streamThatStartsTools(thread) {
11541
12094
  const calls = new Map;
11542
12095
  __classPrivateFieldSet(this, _BetaToolRunner_calls, calls, "f");
11543
12096
  const toolsets = new Map;
11544
- return BetaToolRunnerStream.start(this.client, params, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"), (toolUse) => {
12097
+ const onToolCall = (toolUse) => {
11545
12098
  const known = calls.has(toolUse.id);
11546
12099
  const malformed = !toolUse.toolset_name && __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_toolsetFamilies).call(this).has(toolUse.name);
11547
12100
  const family = malformed ? toolUse.name : toolUse.toolset_name;
@@ -11551,7 +12104,7 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11551
12104
  return;
11552
12105
  }
11553
12106
  toolsets.set(family, "running");
11554
- const result = runToolsetCall(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params, family, toolUse, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"), this.client, __classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f"));
12107
+ const result = runToolsetCall(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_toolsetParams).call(this), family, toolUse, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"), __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, __classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f"));
11555
12108
  calls.set(toolUse.id, { status: "started", result });
11556
12109
  result.then(({ is_error }) => {
11557
12110
  if (is_error || toolsets.get(family) === "waiting")
@@ -11564,36 +12117,48 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11564
12117
  if (known) {
11565
12118
  return;
11566
12119
  }
11567
- const result = runToolCall(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_runnableTools).call(this), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_availableToolNames).call(this), toolUse, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"), this.client, __classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f"));
12120
+ const result = runToolCall(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_runnableTools).call(this), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_availableToolNames).call(this), toolUse, __classPrivateFieldGet(this, _BetaToolRunner_options, "f"), __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, __classPrivateFieldGet(this, _BetaToolRunner_toolRunnerOtelContext, "f"));
11568
12121
  result.catch(() => {});
11569
12122
  calls.set(toolUse.id, { status: "started", result });
11570
- });
12123
+ };
12124
+ const stream = new BetaToolRunnerStream(thread._state.params, onToolCall, thread._client);
12125
+ thread._stream(stream, undefined, turnParams(thread), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_turnOptions).call(this, thread));
12126
+ return stream;
11571
12127
  }, _BetaToolRunner_startedCallsSettled = async function _BetaToolRunner_startedCallsSettled() {
11572
12128
  const started = [...__classPrivateFieldGet(this, _BetaToolRunner_calls, "f")?.values() ?? []].filter((call) => call.status === "started");
11573
12129
  await Promise.allSettled(started.map((call) => call.result));
11574
12130
  }, _BetaToolRunner_compact = async function* _BetaToolRunner_compact(compaction) {
11575
- rejectCompactionEdit(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params);
11576
- const { max_iterations, runToolsEagerly, ...requestParams } = __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params;
11577
- const params = withoutCompactionIncompatibleParams(requestParams);
12131
+ rejectCompactionEdit(this.params);
11578
12132
  __classPrivateFieldSet(this, _BetaToolRunner_compaction, { status: "in_flight" }, "f");
11579
12133
  __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, undefined, "f");
11580
12134
  const lastMessage = __classPrivateFieldGet(this, _BetaToolRunner_message, "f");
12135
+ const thread = __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_compactionThread).call(this, compaction);
12136
+ const summarized = __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages.length;
11581
12137
  try {
11582
- yield* __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_send).call(this, { ...params, compaction });
12138
+ yield* __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_send).call(this, thread);
11583
12139
  const message = await __classPrivateFieldGet(this, _BetaToolRunner_message, "f");
11584
12140
  if (message.content.some((block) => block.type === "compaction" && block.content)) {
11585
12141
  __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_recordRemovalsFromHistory).call(this);
11586
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages = [{ role: message.role, content: message.content }];
12142
+ const response = { role: message.role, content: message.content };
12143
+ const appended = __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages.slice(summarized).filter((m) => !sameMessage(m, response));
12144
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.setMessages([response, ...appended]);
11587
12145
  } else {
11588
- loggerFor(this.client).warn("Compaction produced no summary; keeping the conversation as it is.");
12146
+ loggerFor(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client).warn("Compaction produced no summary; keeping the conversation as it is.");
11589
12147
  __classPrivateFieldSet(this, _BetaToolRunner_message, lastMessage, "f");
11590
12148
  }
11591
12149
  } finally {
11592
12150
  __classPrivateFieldSet(this, _BetaToolRunner_compaction, { status: "idle" }, "f");
11593
- }
12151
+ if (!thread._state.threading)
12152
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.stopThreading();
12153
+ }
12154
+ }, _BetaToolRunner_compactionThread = function _BetaToolRunner_compactionThread(compaction) {
12155
+ const { messages, ...fields } = withoutCompactionIncompatibleParams(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.params);
12156
+ const thread = __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").fork();
12157
+ thread._state = __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.fork({ ...fields, compaction });
12158
+ return thread;
11594
12159
  }, _BetaToolRunner_runnableTools = function _BetaToolRunner_runnableTools() {
11595
12160
  const runnable = new Map;
11596
- for (const tool of __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.tools) {
12161
+ for (const tool of __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.params.tools ?? []) {
11597
12162
  if ("run" in tool && "name" in tool) {
11598
12163
  runnable.set(tool.name, tool);
11599
12164
  }
@@ -11608,7 +12173,7 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11608
12173
  return runnable;
11609
12174
  }, _BetaToolRunner_availableToolNames = function _BetaToolRunner_availableToolNames() {
11610
12175
  const available = new Set(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_runnableTools).call(this).keys());
11611
- for (const message of [...__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_pendingToolChangesMessage).call(this)]) {
12176
+ for (const message of [...this.params.messages, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_pendingToolChangesMessage).call(this)]) {
11612
12177
  if (!Array.isArray(message.content)) {
11613
12178
  continue;
11614
12179
  }
@@ -11634,9 +12199,8 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11634
12199
  if (__classPrivateFieldGet(this, _BetaToolRunner_compaction, "f").status !== "scheduled") {
11635
12200
  return;
11636
12201
  }
11637
- const lastContent = __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.at(-1)?.content;
11638
- if (Array.isArray(lastContent) && lastContent.some((block) => block.type === "tool_use")) {
11639
- loggerFor(this.client).warn("The pending compaction was skipped because the last turn ended with tool calls that were not run. " + "Call `compactBeforeNextTurn()` again if you continue the conversation.");
12202
+ if (hasToolUse(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f").messages.at(-1))) {
12203
+ loggerFor(__classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client).warn("The pending compaction was skipped because the last turn ended with tool calls that were not run. " + "Call `compactBeforeNextTurn()` again if you continue the conversation.");
11640
12204
  __classPrivateFieldSet(this, _BetaToolRunner_compaction, { status: "idle" }, "f");
11641
12205
  return;
11642
12206
  }
@@ -11645,15 +12209,17 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11645
12209
  if (__classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f") !== undefined) {
11646
12210
  return __classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f");
11647
12211
  }
11648
- __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, generateToolResponse(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_runnableTools).call(this), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_availableToolNames).call(this), lastMessage, { ...__classPrivateFieldGet(this, _BetaToolRunner_options, "f"), signal }, __classPrivateFieldGet(this, _BetaToolRunner_calls, "f"), this.client, toolOtelContext), "f");
12212
+ __classPrivateFieldSet(this, _BetaToolRunner_toolResponse, generateToolResponse(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_toolsetParams).call(this), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_runnableTools).call(this), __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_availableToolNames).call(this), lastMessage, { ...__classPrivateFieldGet(this, _BetaToolRunner_options, "f"), signal }, __classPrivateFieldGet(this, _BetaToolRunner_calls, "f"), __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._client, toolOtelContext), "f");
11649
12213
  return __classPrivateFieldGet(this, _BetaToolRunner_toolResponse, "f");
11650
12214
  }, _BetaToolRunner_toolsetFamilies = function _BetaToolRunner_toolsetFamilies() {
11651
- return new Set(__classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.tools.filter(isRunnableToolset).map(toolsetFamily));
12215
+ return new Set(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_toolsetParams).call(this).tools.filter(isRunnableToolset).map(toolsetFamily));
12216
+ }, _BetaToolRunner_toolsetParams = function _BetaToolRunner_toolsetParams() {
12217
+ return { ...this.params, tools: __classPrivateFieldGet(this, _BetaToolRunner_thread, "f")._state.params.tools ?? [] };
11652
12218
  }, _BetaToolRunner_flushPendingToolChanges = function _BetaToolRunner_flushPendingToolChanges() {
11653
12219
  if (__classPrivateFieldGet(this, _BetaToolRunner_lastStopReason, "f") === "pause_turn" || __classPrivateFieldGet(this, _BetaToolRunner_pendingToolChanges, "f").length === 0) {
11654
12220
  return;
11655
12221
  }
11656
- __classPrivateFieldGet(this, _BetaToolRunner_state, "f").params.messages.push(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_pendingToolChangesMessage).call(this));
12222
+ __classPrivateFieldGet(this, _BetaToolRunner_thread, "f").append(__classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_pendingToolChangesMessage).call(this));
11657
12223
  __classPrivateFieldSet(this, _BetaToolRunner_pendingToolChanges, [], "f");
11658
12224
  }, _BetaToolRunner_pendingToolChangesMessage = function _BetaToolRunner_pendingToolChangesMessage() {
11659
12225
  const content = [];
@@ -11669,13 +12235,17 @@ var BetaToolRunner2 = /* @__PURE__ */ (() => {
11669
12235
  };
11670
12236
  return BetaToolRunner;
11671
12237
  })();
12238
+ var MESSAGES_CHANGED_WHILE_COMPACTING = "Message params can't be changed while the conversation is being compacted, because the compaction " + "response is about to replace them. Change them after this iteration instead.";
12239
+ function sameMessages(a, b) {
12240
+ return a.length === b.length && a.every((message, i) => sameMessage(message, b[i]));
12241
+ }
11672
12242
  function rejectCompactionParam(params) {
11673
12243
  if ("compaction" in params && params.compaction != null) {
11674
12244
  throw new AnthropicError("`compaction` cannot be set on a tool runner: every request in the loop would compact again. " + "Call `runner.compactBeforeNextTurn()` when the conversation should be compacted instead.");
11675
12245
  }
11676
12246
  }
11677
- function rejectRunToolsEagerlyWithoutStream(params) {
11678
- if (params.runToolsEagerly && !params.stream) {
12247
+ function rejectRunToolsEagerlyWithoutStream(settings) {
12248
+ if (settings.runToolsEagerly && !settings.stream) {
11679
12249
  throw new TypeError("`runToolsEagerly: true` needs `stream: true` in the tool runner's params, because a reply that " + "isn't streamed arrives whole.");
11680
12250
  }
11681
12251
  }
@@ -11709,6 +12279,10 @@ function toolDefinition(tool) {
11709
12279
  ...wasCreatedByStainlessHelper(tool) && { [SDK_HELPER_SYMBOL]: tool[SDK_HELPER_SYMBOL] }
11710
12280
  };
11711
12281
  }
12282
+ function turnParams(thread) {
12283
+ const { tools } = thread._state.params;
12284
+ return tools ? { tools: tools.map(toolDefinition) } : {};
12285
+ }
11712
12286
  function withToolDefinitions(messages) {
11713
12287
  return messages.map((message) => {
11714
12288
  if (message.role !== "system" || !Array.isArray(message.content)) {
@@ -11718,6 +12292,9 @@ function withToolDefinitions(messages) {
11718
12292
  return { ...message, content };
11719
12293
  });
11720
12294
  }
12295
+ function addsRunnableTool(message) {
12296
+ return message.role === "system" && Array.isArray(message.content) && message.content.some((block) => block.type === "tool_addition" && block.tool.type === "tool_definition" && ("run" in block.tool.definition));
12297
+ }
11721
12298
  async function generateToolResponse(params, runnable, available, lastMessage, requestOptions, calls, client, toolOtelContext) {
11722
12299
  if (!lastMessage || lastMessage.role !== "assistant" || !lastMessage.content || typeof lastMessage.content === "string") {
11723
12300
  return null;
@@ -11804,8 +12381,19 @@ async function runToolCall(runnable, available, toolUse, requestOptions, client,
11804
12381
  ...outcome.isError ? { is_error: true } : undefined
11805
12382
  };
11806
12383
  }
11807
- function asContentParam(content) {
11808
- return content;
12384
+ function lastAssistantMessage(messages) {
12385
+ for (let i = messages.length - 1;i >= 0; i--) {
12386
+ const message = messages[i];
12387
+ if (message.role === "assistant")
12388
+ return message;
12389
+ if (message.role === "user" && Array.isArray(message.content) && message.content.some((block) => block.type === "tool_result")) {
12390
+ return;
12391
+ }
12392
+ }
12393
+ return;
12394
+ }
12395
+ function hasToolUse(message) {
12396
+ return Array.isArray(message?.content) && message.content.some((block) => block.type === "tool_use");
11809
12397
  }
11810
12398
  function definitionFamily(tool) {
11811
12399
  return (tool.type ?? "custom").replace(/_\d{8}$/, "").replace(/_toolset$/, "");
@@ -11880,12 +12468,11 @@ function changedToolName(tool) {
11880
12468
  function determineNextStepFromStopReason(stopReason) {
11881
12469
  if (stopReason === null)
11882
12470
  return "stop";
12471
+ if (isUnfinishedStopReason(stopReason))
12472
+ return "resume";
11883
12473
  switch (stopReason) {
11884
12474
  case "tool_use":
11885
12475
  return "run_tools";
11886
- case "pause_turn":
11887
- case "compaction":
11888
- return "resume";
11889
12476
  case "end_turn":
11890
12477
  case "stop_sequence":
11891
12478
  case "max_tokens":
@@ -11898,6 +12485,123 @@ function determineNextStepFromStopReason(stopReason) {
11898
12485
  }
11899
12486
  }
11900
12487
 
12488
+ // node_modules/@anthropic-ai/sdk/lib/threads/BetaMessageThread.mjs
12489
+ class BetaMessageThread2 {
12490
+ constructor(client, params, options) {
12491
+ if (!client._supportsMessageThreads) {
12492
+ throw new AnthropicError("Message threads are not available on this client; use `client.beta.messages.create()` with the full `messages` instead");
12493
+ }
12494
+ assertOneOutputFormat(params);
12495
+ this._client = client;
12496
+ this._state = new ThreadState({
12497
+ params,
12498
+ options: options ?? {},
12499
+ threading: true,
12500
+ logger: loggerFor(client)
12501
+ });
12502
+ }
12503
+ static _fromState(client, state) {
12504
+ const thread = Object.create(BetaMessageThread2.prototype);
12505
+ return Object.assign(thread, { _client: client, _state: state });
12506
+ }
12507
+ get messages() {
12508
+ return this._state.messages;
12509
+ }
12510
+ get previousMessageId() {
12511
+ return this._state.previousMessageId;
12512
+ }
12513
+ get params() {
12514
+ return { ...this._state.params, unsupportedRequestBehavior: this._state.unsupportedRequestBehavior };
12515
+ }
12516
+ append(...messages) {
12517
+ this._state.push(messages);
12518
+ }
12519
+ send(messages, params = {}, options = {}) {
12520
+ return this._send(messages, params, options, (reply) => reply);
12521
+ }
12522
+ parse(messages, params = {}, options = {}) {
12523
+ return this._send(messages, params, options, (reply) => parseBetaMessage(reply, this._state.params, {
12524
+ logger: loggerFor(this._client)
12525
+ }));
12526
+ }
12527
+ _send(messages, params, options, parseReply) {
12528
+ const turn = this._state.startTurn(toMessageList(messages), params);
12529
+ const received = (async () => {
12530
+ try {
12531
+ const { request, props } = await this._createWithRecovery(turn, options, { stream: false });
12532
+ const reply = await request;
12533
+ this._state.recordReply(turn, reply);
12534
+ return { props, reply };
12535
+ } finally {
12536
+ this._state.endTurn(turn);
12537
+ }
12538
+ })();
12539
+ return new APIPromise(this._client, received.then(({ props }) => props), async () => {
12540
+ const { props, reply } = await received;
12541
+ return addResponseIDs(parseReply(reply), props.response);
12542
+ });
12543
+ }
12544
+ stream(messages, params = {}, options = {}) {
12545
+ const stream = new BetaMessageStream(this._state.params, {
12546
+ logger: loggerFor(this._client),
12547
+ client: this._client
12548
+ });
12549
+ this._stream(stream, messages, params, options);
12550
+ return stream;
12551
+ }
12552
+ _stream(stream, messages, turnParams, turnOptions) {
12553
+ const turn = this._state.startTurn(toMessageList(messages), turnParams);
12554
+ let received;
12555
+ let completedBlocks = 0;
12556
+ let stopped = false;
12557
+ stream.on("streamEvent", (event, snapshot) => {
12558
+ if (stopped)
12559
+ return;
12560
+ received = snapshot;
12561
+ if (event.type === "content_block_stop")
12562
+ completedBlocks += 1;
12563
+ if (event.type === "message_stop") {
12564
+ stopped = true;
12565
+ this._state.recordReply(turn, snapshot);
12566
+ this._state.endTurn(turn);
12567
+ }
12568
+ });
12569
+ const endEarly = () => {
12570
+ if (stopped)
12571
+ return;
12572
+ stopped = true;
12573
+ if (received)
12574
+ this._state.recordPartialReply(received, completedBlocks);
12575
+ this._state.endTurn(turn);
12576
+ };
12577
+ stream.controller.signal.addEventListener("abort", endEarly, { once: true });
12578
+ const createTurn = (_body, options) => new APIPromise(this._client, this._createWithRecovery(turn, { ...turnOptions, signal: options?.signal }, { stream: true }).then(({ props }) => props));
12579
+ stream._start(createTurn, this._state.params, { signal: turnOptions.signal ?? this._state.options.signal }, endEarly);
12580
+ }
12581
+ update(params = {}, options = {}) {
12582
+ this._state.update(params, options);
12583
+ }
12584
+ toolRunner(params = {}, options = {}) {
12585
+ rejectThreadField(params);
12586
+ return new BetaToolRunner2(this, params, options);
12587
+ }
12588
+ fork() {
12589
+ return BetaMessageThread2._fromState(this._client, this._state.fork());
12590
+ }
12591
+ async _createWithRecovery(turn, turnOptions, { stream }) {
12592
+ for (;; ) {
12593
+ const { params, options } = this._state.buildCreateArguments(turn, turnOptions, { stream });
12594
+ const request = this._client.beta.messages.create({ ...params, stream }, options);
12595
+ try {
12596
+ return { request, props: await request._responseProps() };
12597
+ } catch (error) {
12598
+ if (!this._state.recoversFrom(error))
12599
+ throw error;
12600
+ }
12601
+ }
12602
+ }
12603
+ }
12604
+
11901
12605
  // node_modules/@anthropic-ai/sdk/resources/beta/messages/messages.mjs
11902
12606
  var DEPRECATED_MODELS2 = {
11903
12607
  "claude-sonnet-4-5": "November 30th, 2026",
@@ -11984,6 +12688,20 @@ Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resour
11984
12688
  toolRunner(body, options) {
11985
12689
  return new BetaToolRunner2(this._client, body, options);
11986
12690
  }
12691
+ _toolRunnerThread(body) {
12692
+ assertOneOutputFormat(body);
12693
+ const { settings, thread, threadParams } = splitToolRunnerParams(body);
12694
+ const state = new ThreadState({
12695
+ params: { ...threadParams, unsupportedRequestBehavior: "continue_unthreaded" },
12696
+ options: {},
12697
+ threading: thread !== false && this._client._supportsMessageThreads,
12698
+ logger: loggerFor(this._client)
12699
+ });
12700
+ return { thread: BetaMessageThread2._fromState(this._client, state), settings };
12701
+ }
12702
+ thread(params, options) {
12703
+ return new BetaMessageThread2(this._client, params, options);
12704
+ }
11987
12705
  }
11988
12706
  Messages.Batches = Batches2;
11989
12707
  Messages.BetaToolRunner = BetaToolRunner2;
@@ -13166,6 +13884,7 @@ var BaseAnthropic = /* @__PURE__ */ (() => {
13166
13884
  _BaseAnthropic_apiKeyFunction.set(this, undefined);
13167
13885
  _BaseAnthropic_openTelemetry.set(this, undefined);
13168
13886
  this._genAIProviderName = "anthropic";
13887
+ this._supportsMessageThreads = false;
13169
13888
  const given = { apiKey, authToken, ...opts };
13170
13889
  const passed = CREDENTIAL_OPTIONS.filter((name) => given[name] != null);
13171
13890
  if (passed.length > 1) {
@@ -13869,6 +14588,7 @@ var Anthropic = /* @__PURE__ */ (() => {
13869
14588
  class Anthropic extends BaseAnthropic {
13870
14589
  constructor() {
13871
14590
  super(...arguments);
14591
+ this._supportsMessageThreads = true;
13872
14592
  this.messages = new Messages(this);
13873
14593
  this.models = new Models2(this);
13874
14594
  this.files = new Files2(this);