@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.
- package/dist/{acp-adapter-7g6bpwbk.js → acp-adapter-gr2fcyyj.js} +3 -3
- package/dist/{actions-w8xd014k.js → actions-wv766ghf.js} +18 -18
- package/dist/{amp-adapter-z4qvhacj.js → amp-adapter-speb906t.js} +3 -3
- package/dist/{app-nndcvftq.js → app-ag29n14f.js} +3 -3
- package/dist/{assistant-hjmqyscx.js → assistant-3x8bz3eg.js} +19 -19
- package/dist/{boot-reembed-r8rhf9h8.js → boot-reembed-5b3d2eea.js} +1 -1
- package/dist/{boot-reembed-vwcj2y5d.js → boot-reembed-jsmfrpzf.js} +1 -1
- package/dist/{boot-scrub-sweep-fr9q36ne.js → boot-scrub-sweep-s73gerxy.js} +2 -2
- package/dist/{boot-seeds-9jqwnegq.js → boot-seeds-5zmax2wr.js} +4 -4
- package/dist/{claude-adapter-2f8b85df.js → claude-adapter-hswdnm3t.js} +3 -3
- package/dist/{claude-managed-adapter-gt6pa35d.js → claude-managed-adapter-cvbzj1h6.js} +2 -2
- package/dist/{claude-managed-setup-c3hp36ph.js → claude-managed-setup-3k8m3hhc.js} +2 -2
- package/dist/{claude-sdk-session-05kat8rv.js → claude-sdk-session-fkbyk66x.js} +6905 -6855
- package/dist/{cli-y3zyaee5.js → cli-1fc85mvt.js} +5 -5
- package/dist/{cli-v2g93k4v.js → cli-210xd1f4.js} +4 -4
- package/dist/{cli-sn1vbtg2.js → cli-25j01dpj.js} +3 -3
- package/dist/{cli-n6kmqngw.js → cli-35gtk1p6.js} +1 -1
- package/dist/{cli-r9fy0ddc.js → cli-3ngdk5te.js} +1 -1
- package/dist/{cli-z63a269p.js → cli-40jsnrjm.js} +2 -2
- package/dist/{cli-ba8ne1es.js → cli-4rvr7zfx.js} +10 -0
- package/dist/{cli-qfm6my86.js → cli-502eqv93.js} +1 -1
- package/dist/{cli-xd4eqtr2.js → cli-6n8axjv1.js} +1 -1
- package/dist/{cli-hadv0725.js → cli-8s5wx3nz.js} +2 -2
- package/dist/{cli-z2dv25mf.js → cli-99xgw26r.js} +116 -5
- package/dist/{cli-jpxsrxcb.js → cli-9s05422w.js} +1 -1
- package/dist/{cli-kcsd1ez8.js → cli-aecdcr77.js} +343 -325
- package/dist/{cli-w9etnnxk.js → cli-bf8ma3f1.js} +120 -50
- package/dist/{cli-e9btqw4y.js → cli-ce0ak9ms.js} +18 -13
- package/dist/{cli-nj12tn2c.js → cli-e2ar4bp1.js} +71 -20
- package/dist/{cli-gwcf52gz.js → cli-e8jyq7d8.js} +11 -7
- package/dist/{cli-rngde2jv.js → cli-egjggehm.js} +1 -1
- package/dist/{cli-qfjm4gvt.js → cli-ewm3pwbq.js} +2 -2
- package/dist/{cli-9mm5ade4.js → cli-fsdprwrg.js} +1 -1
- package/dist/{cli-3ee5z0q0.js → cli-fzcn3d87.js} +1 -1
- package/dist/{cli-eym3jg7w.js → cli-gpsz7g88.js} +6 -6
- package/dist/{cli-cwyafhw1.js → cli-hcpj2xqz.js} +1 -1
- package/dist/{cli-j1eghqfm.js → cli-hhxjnjzs.js} +1 -1
- package/dist/{cli-pyy4c9ch.js → cli-jjznk3f7.js} +881 -232
- package/dist/{cli-q9pzwxvk.js → cli-kxawjrxg.js} +222 -37
- package/dist/{cli-rh5smt8t.js → cli-mz9afxxf.js} +14 -3
- package/dist/{cli-mz2ygeyq.js → cli-n45mr7zh.js} +2 -2
- package/dist/{cli-fes51ya2.js → cli-p0rzjkya.js} +2 -2
- package/dist/{cli-3qv8naq8.js → cli-p6zs9h4y.js} +827 -107
- package/dist/{cli-mq7kg1b1.js → cli-p9rafdrb.js} +41 -6
- package/dist/{cli-cah5detr.js → cli-qgf8emrn.js} +5 -5
- package/dist/{cli-2wba1ac9.js → cli-qzme5949.js} +26 -26
- package/dist/{cli-znvq0k3t.js → cli-s49hpn37.js} +2 -2
- package/dist/{cli-xc65x52q.js → cli-s53vp709.js} +1 -1
- package/dist/{cli-0jy85zz4.js → cli-svrj71pg.js} +18 -16
- package/dist/{cli-1dp1zj04.js → cli-vwn81jbs.js} +3 -3
- package/dist/{cli-ajqhxtnz.js → cli-w1zwctj2.js} +1 -1
- package/dist/{cli-22rmcjkg.js → cli-y561h5a9.js} +7 -6
- package/dist/{cli-2jg61wab.js → cli-z21whrrg.js} +15 -15
- package/dist/cli.js +19 -18
- package/dist/{codex-adapter-p4ptwar5.js → codex-adapter-n8ka66vf.js} +2 -2
- package/dist/{codex-session-runner-964c7dnk.js → codex-session-runner-fsebts37.js} +1 -1
- package/dist/{commands-mbvhbrcy.js → commands-t04rt2pc.js} +2 -2
- package/dist/{controller-gnq1k1mf.js → controller-rgna04r2.js} +2 -2
- package/dist/{controllers-connect-6dkm71tg.js → controllers-connect-bqm1rtft.js} +20 -20
- package/dist/{cursor-adapter-yq5xgfcg.js → cursor-adapter-swr2k95y.js} +1 -1
- package/dist/{db-88wcymxt.js → db-24ck09xy.js} +1 -1
- package/dist/{db-af9y8nkf.js → db-a4m7haw0.js} +3 -3
- package/dist/{dispatcher-606ydx5v.js → dispatcher-nwf9ss0q.js} +17 -17
- package/dist/{dsh-adapter-tvhc4k2d.js → dsh-adapter-kpdnhjst.js} +2 -2
- package/dist/{external-channel-y8q5z8z2.js → external-channel-j1e2p34p.js} +2 -2
- package/dist/{grok-adapter-39aha52t.js → grok-adapter-qtjz0whk.js} +4 -4
- package/dist/{handlers-rk9dqech.js → handlers-19xr6dnz.js} +20 -20
- package/dist/{heartbeat-jfe9zfjr.js → heartbeat-vtesda5d.js} +20 -20
- package/dist/{hook-b1mez1m8.js → hook-8wqaszda.js} +1 -1
- package/dist/{hook-ffevzed1.js → hook-b2hhj6rd.js} +1 -1
- package/dist/{http-d5b44f1r.js → http-mxcqhhcs.js} +3020 -2463
- package/dist/{index-5en23s5z.js → index-1r8wfpzs.js} +1 -1
- package/dist/{index-cbxkmfc5.js → index-9pn1pfkf.js} +1 -1
- package/dist/{index-mj46rk9k.js → index-kw2mmat7.js} +20 -20
- package/dist/{index-nq8hhv28.js → index-n1vbvta9.js} +19 -10
- package/dist/{index-6srwvd5b.js → index-p4xfz37z.js} +1 -1
- package/dist/{index-d2qeem97.js → index-spwxjgay.js} +17 -17
- package/dist/{index-4q3vj1yr.js → index-srg522m6.js} +17 -17
- package/dist/{keepalive-wsby1btq.js → keepalive-dsd8rtgx.js} +3 -3
- package/dist/{lead-paa141j6.js → lead-zyerk1x2.js} +30 -30
- package/dist/{maintenance-vnshcyv9.js → maintenance-jqmqwnet.js} +1 -1
- package/dist/{oauth-refresh-sweep-d6sqn5np.js → oauth-refresh-sweep-q2c3bnvm.js} +2 -2
- package/dist/{onboard-nr4xhpzy.js → onboard-w4yd7s8t.js} +2 -2
- package/dist/{opencode-adapter-e56086m1.js → opencode-adapter-9tppvxar.js} +2 -2
- package/dist/{otel-impl-ytn9wyv9.js → otel-impl-f36byzbd.js} +1 -1
- package/dist/{pricing-refresh-pva04zee.js → pricing-refresh-xvak5p4v.js} +3 -3
- package/dist/{rbac-roles-7rc1q3g4.js → rbac-roles-682k2mt5.js} +12 -2
- package/dist/rbac-roles-gfn30fb8.js +26 -0
- package/dist/{render-v2-pyfsg9zk.js → render-v2-hgytz8nn.js} +3 -3
- package/dist/{resume-phj8xhqr.js → resume-2dvq348g.js} +7 -5
- package/dist/{session-access-jzx2z9h5.js → session-access-7f21ekq9.js} +4 -4
- package/dist/{setup-rfg0f0sg.js → setup-epffxtbk.js} +1 -1
- package/dist/{work-objects-44z2yjg8.js → work-objects-xz1a5rqk.js} +20 -20
- package/dist/{worker-zsfqzxhm.js → worker-42t8emjt.js} +30 -30
- package/openapi.json +3163 -2114
- package/package.json +7 -6
- package/src/be/approval-config-question.ts +389 -0
- package/src/be/automation-preflight.ts +37 -3
- package/src/be/db/session-tree.ts +158 -13
- package/src/be/db/session-visibility.ts +31 -0
- package/src/be/db/skill-search.ts +87 -0
- package/src/be/db/tasks/read.ts +47 -7
- package/src/be/db/workflow-runs.ts +54 -7
- package/src/be/db.ts +27 -5
- package/src/be/migrations/233_script_run_session_tokens.sql +8 -0
- package/src/be/migrations/235_chat_relay_defer.sql +86 -0
- package/src/be/migrations/237_session_inbox_cleanup.sql +75 -0
- package/src/be/migrations/239_skills_fts.sql +40 -0
- package/src/be/migrations/240_workflow_run_parent_step_attempt.sql +37 -0
- package/src/be/migrations/241_skills_meta_fts.sql +39 -0
- package/src/be/rbac-roles.ts +138 -0
- package/src/be/scripts/run-credential.ts +64 -0
- package/src/be/scripts/run-saved.ts +3 -2
- package/src/be/swarm-config-guard.ts +23 -0
- package/src/be/users.ts +28 -4
- package/src/extensions/catalog.generated.json +4 -4
- package/src/http/all-routes.ts +1 -0
- package/src/http/approval-requests.ts +254 -43
- package/src/http/config.ts +22 -37
- package/src/http/index.ts +2 -0
- package/src/http/schedules.ts +26 -0
- package/src/http/scripts.ts +2 -2
- package/src/http/sessions.ts +118 -2
- package/src/http/user-roles.ts +173 -0
- package/src/http/users.ts +9 -0
- package/src/http/x.ts +2 -2
- package/src/integrations/chat-sdk/commands.ts +14 -1
- package/src/integrations/chat-sdk/inbound.ts +42 -6
- package/src/integrations/chat-sdk/outbound.ts +35 -10
- package/src/integrations/chat-sdk/reactions.ts +107 -0
- package/src/integrations/chat-sdk/relay.ts +75 -7
- package/src/integrations/chat-sdk/thread-buffer.ts +2 -0
- package/src/integrations/reaction-events.ts +20 -0
- package/src/providers/amp-adapter.ts +1 -1
- package/src/providers/dsh-adapter.ts +1 -1
- package/src/rbac/legacy-policy.ts +3 -0
- package/src/rbac/permissions.ts +8 -0
- package/src/scheduler/schedule-task.ts +44 -3
- package/src/scheduler/scheduler.ts +4 -4
- package/src/scripts-runtime/loader.ts +8 -1
- package/src/slack/ack.ts +2 -1
- package/src/slack/reaction-shortcode.ts +4 -7
- package/src/tasks/worker-follow-up.ts +30 -0
- package/src/tests/approval-config-question.test.ts +702 -0
- package/src/tests/approval-requests-notifications.test.ts +189 -0
- package/src/tests/chat-sdk-commands.test.ts +12 -0
- package/src/tests/chat-sdk-inbound.test.ts +183 -9
- package/src/tests/chat-sdk-outbound-files.test.ts +9 -2
- package/src/tests/chat-sdk-relay.test.ts +361 -10
- package/src/tests/chat-sdk-tools.test.ts +104 -0
- package/src/tests/docs-index-footprint.test.js +3 -3
- package/src/tests/dsh-adapter.test.ts +1 -1
- package/src/tests/entrypoint-gitlab-credential-helper.test.ts +273 -0
- package/src/tests/extensions-example-comms-adherence-gate.test.ts +321 -12
- package/src/tests/http-users.test.ts +38 -0
- package/src/tests/list-endpoint-slimming.test.ts +33 -0
- package/src/tests/migration-237-session-inbox-cleanup.test.ts +136 -0
- package/src/tests/migration-240-workflow-run-parent-step-attempt.test.ts +55 -0
- package/src/tests/rbac-engine.test.ts +2 -0
- package/src/tests/rbac-roles.test.ts +10 -0
- package/src/tests/schedule-http-triage-tools.test.ts +44 -0
- package/src/tests/script-api-credential.test.ts +173 -0
- package/src/tests/script-connections.test.ts +10 -0
- package/src/tests/script-run-config-scope.test.ts +120 -0
- package/src/tests/script-run-token.test.ts +75 -0
- package/src/tests/scripts-http.test.ts +19 -0
- package/src/tests/sessions-tree.test.ts +410 -1
- package/src/tests/skill-search-long-content.test.ts +193 -0
- package/src/tests/skill-search.test.ts +173 -22
- package/src/tests/user-roles-http.test.ts +204 -0
- package/src/tests/workflow-hitl-dynamic-questions.test.ts +1 -1
- package/src/tests/workflow-sub-workflow.test.ts +538 -1
- package/src/tools/chat-reply.ts +2 -0
- package/src/tools/request-human-input.ts +27 -5
- package/src/tools/schedules/patch-schedule.ts +18 -0
- package/src/tools/schedules/update-schedule.ts +18 -0
- package/src/types.ts +23 -0
- package/src/workflows/approval-notifications.ts +221 -0
- package/src/workflows/checkpoint.ts +69 -35
- package/src/workflows/engine.ts +234 -87
- package/src/workflows/executors/base.ts +6 -0
- package/src/workflows/executors/human-in-the-loop.ts +36 -173
- package/src/workflows/executors/sub-workflow.ts +45 -16
- package/src/workflows/executors/swarm-script.ts +2 -2
- package/src/workflows/recovery.ts +63 -1
- package/src/workflows/resume.ts +60 -21
- package/src/workflows/retry-poller.ts +25 -4
- package/templates/extensions/comms-adherence-gate/README.md +38 -13
- package/templates/extensions/comms-adherence-gate/hooks.ts +272 -69
- package/templates/extensions/comms-adherence-gate/manifest.json +2 -2
- package/templates/schedules/weekly-harness-upgrade-check/content.md +1 -1
- package/templates/skills/code-quality/content.md +1 -1
- package/templates/skills/turso-interaction/content.md +1 -1
- package/templates/skills/workflow-iterate/content.md +8 -1
- package/dist/rbac-roles-ff1ffmec.js +0 -12
- /package/dist/{cli-stxdrqs2.js → cli-avdvgcay.js} +0 -0
- /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.
|
|
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
|
-
|
|
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(
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
11306
|
-
|
|
11307
|
-
|
|
11308
|
-
|
|
11309
|
-
|
|
11310
|
-
|
|
11311
|
-
|
|
11312
|
-
|
|
11313
|
-
|
|
11314
|
-
|
|
11315
|
-
|
|
11316
|
-
|
|
11317
|
-
|
|
11318
|
-
|
|
11319
|
-
|
|
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,
|
|
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.
|
|
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,
|
|
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
|
-
|
|
11355
|
-
|
|
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
|
-
|
|
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,
|
|
11385
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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(
|
|
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
|
|
11427
|
-
throw new AnthropicError(
|
|
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.
|
|
11442
|
-
const message = await __classPrivateFieldGet(this, _BetaToolRunner_message, "f") ?? this.
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
11527
|
-
|
|
11528
|
-
|
|
11529
|
-
|
|
11530
|
-
}
|
|
11531
|
-
if (
|
|
11532
|
-
__classPrivateFieldSet(this, _BetaToolRunner_stream, __classPrivateFieldGet(this, _BetaToolRunner_instances, "m", _BetaToolRunner_withToolRunnerSpan).call(this, () => __classPrivateFieldGet(this,
|
|
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, () =>
|
|
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
|
-
},
|
|
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
|
-
|
|
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,
|
|
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.
|
|
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(
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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 [...
|
|
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
|
-
|
|
11638
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
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(
|
|
11678
|
-
if (
|
|
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
|
|
11808
|
-
|
|
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);
|