@shawnstack/quickforge 1.3.24 → 1.3.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +24 -18
  2. package/dist/assets/anthropic-BcnDL7hi.js +39 -0
  3. package/dist/assets/azure-openai-responses-BEfdv0qd.js +1 -0
  4. package/dist/assets/google-C2y985rW.js +1 -0
  5. package/dist/assets/google-shared-Cqjw1plk.js +11 -0
  6. package/dist/assets/google-vertex-Jf9zNsCF.js +1 -0
  7. package/dist/assets/{icons-DmRYmmql.js → icons-BVM5--R9.js} +1 -1
  8. package/dist/assets/{index-s72bxhrh.js → index-8Q1Ovled.js} +604 -550
  9. package/dist/assets/index-ZYbEKGUp.css +3 -0
  10. package/dist/assets/{mistral-DCZ8VphX.js → mistral-qYbgRY3z.js} +1 -1
  11. package/dist/assets/openai-codex-responses--aAgyYJM.js +7 -0
  12. package/dist/assets/openai-completions-CHDluyXM.js +5 -0
  13. package/dist/assets/openai-prompt-cache-CErE62Yt.js +1 -0
  14. package/dist/assets/openai-responses-UtRriBXu.js +1 -0
  15. package/dist/assets/{openai-responses-shared-RzgnIlMf.js → openai-responses-shared-G6WDDqJ8.js} +1 -1
  16. package/dist/assets/openrouter-Dz9zwzUG.js +1 -0
  17. package/dist/assets/{react-vendor-BsV2HYbc.js → react-vendor-DAoL5p8_.js} +1 -1
  18. package/dist/assets/sanitize-unicode-BhyPmlyt.js +1 -0
  19. package/dist/assets/transform-messages-Dhj_4OTw.js +1 -0
  20. package/dist/index.html +4 -4
  21. package/package.json +4 -3
  22. package/server/agent-manager.mjs +162 -176
  23. package/server/ai-http-logger.mjs +20 -5
  24. package/server/approval-store.mjs +63 -0
  25. package/server/custom-commands.mjs +67 -9
  26. package/server/index.mjs +7 -0
  27. package/server/message-converters.mjs +79 -0
  28. package/server/plugins/loader.mjs +56 -0
  29. package/server/plugins/manifest.mjs +174 -0
  30. package/server/plugins/registry.mjs +304 -0
  31. package/server/project-config.mjs +53 -4
  32. package/server/routes/agent-profiles.mjs +1 -1
  33. package/server/routes/agent.mjs +1 -16
  34. package/server/routes/filesystem.mjs +18 -2
  35. package/server/routes/plugins.mjs +63 -0
  36. package/server/routes/project.mjs +2 -0
  37. package/server/routes/scheduled-tasks.mjs +1 -1
  38. package/server/routes/storage.mjs +66 -31
  39. package/server/routes/tools.mjs +12 -1
  40. package/server/session-utils.mjs +1 -1
  41. package/server/skills.mjs +64 -5
  42. package/server/storage.mjs +91 -8
  43. package/server/system-prompt.mjs +27 -5
  44. package/server/tool-wiring.mjs +113 -0
  45. package/server/utils/workspace.mjs +20 -1
  46. package/dist/assets/anthropic-BrbLtQkg.js +0 -39
  47. package/dist/assets/azure-openai-responses-q9QFpQk3.js +0 -1
  48. package/dist/assets/google-Bv6IeSRf.js +0 -1
  49. package/dist/assets/google-shared-CLc4ziON.js +0 -11
  50. package/dist/assets/google-vertex-Cwpe8vbn.js +0 -1
  51. package/dist/assets/index-C4m48ndP.css +0 -3
  52. package/dist/assets/openai-codex-responses-Bx7iyHzd.js +0 -7
  53. package/dist/assets/openai-completions-CihVV11E.js +0 -5
  54. package/dist/assets/openai-responses-BigEdUNS.js +0 -1
  55. package/dist/assets/transform-messages-CmnxG9RB.js +0 -1
  56. /package/dist/assets/{hash-Bt1aVMQ3.js → hash-kZ2KD_no.js} +0 -0
  57. /package/dist/assets/{openai-Cn7eGqwa.js → openai-Bf1npfRy.js} +0 -0
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # 速构 QuickForge
2
2
 
3
3
  <p align="center">
4
- <img alt="Version" src="https://img.shields.io/badge/version-1.3.24-blue" />
4
+ <img alt="Version" src="https://img.shields.io/badge/version-1.3.26-blue" />
5
5
  <img alt="License" src="https://img.shields.io/badge/license-MIT-green" />
6
6
  <img alt="Node" src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" />
7
7
  <img alt="React" src="https://img.shields.io/badge/react-19-61DAFB?logo=react" />
@@ -17,6 +17,10 @@
17
17
  <a href="#中文">中文</a> · <a href="#english">English</a> · <a href="./docs/user-guide.zh-CN.md">中文教程</a> · <a href="./docs/user-guide.en-US.md">User Guide</a>
18
18
  </p>
19
19
 
20
+ <p align="center">
21
+ <img src="./welcome.png" alt="QuickForge welcome screen" width="900" />
22
+ </p>
23
+
20
24
  ---
21
25
 
22
26
  ## 中文
@@ -43,8 +47,9 @@ QuickForge 是一个运行在本机的 AI 对话与研发辅助工具。它保
43
47
  | 普通对话与项目对话 | 普通对话适合问答;项目对话绑定本地目录,开启授权后可使用工作区工具。 |
44
48
  | YOLO 本地工具 | 授权模型在项目目录内读取、搜索、创建、覆盖、精确编辑文件,并从工作区运行 shell 命令。 |
45
49
  | MCP 集成 | 支持 stdio、SSE、Streamable HTTP (`http`) MCP Server,并将外部工具以命名空间形式注入到 Agent。 |
46
- | Agent Skills | 支持全局、共享、项目级和内置 Skills,用于加载专门的工作流说明、参考资料和工具使用规范。 |
47
- | 自定义命令 | 支持 `/plan`、`/compact`、`/clear` 等内置命令,也可从项目 `.ai/commands/` 或配置目录加载团队命令。`/plan <任务>` 只生成执行计划,本轮禁止写文件、改文件和运行命令。 |
50
+ | 自定义指令 | 自动合并 `~/.claude/CLAUDE.md`、`~/.opencode/AGENTS.md`、`~/.quickforge/AGENTS.md` 以及项目 `CLAUDE.md`、`AGENTS.md`、`.opencode/AGENTS.md`、`.quickforge/AGENTS.md`。 |
51
+ | Agent Skills | 支持 Claude、opencode、共享、QuickForge 项目级和内置 Skills,用于加载专门的工作流说明、参考资料和工具使用规范。 |
52
+ | 自定义命令 | 支持 `/plan`、`/review`、`/compact`、`/clear` 等内置命令,也可从项目 `.claude/commands/`、`.opencode/commands/`、`.ai/commands/` 或配置目录加载团队命令。`/plan <任务>` 只生成执行计划,本轮禁止写文件、改文件和运行命令;`/review [范围]` 用于提交前自检待提交代码,本轮禁止编辑文件。 |
48
53
  | 会话工作流 | 支持流式回复、复制、回滚、分支、草稿恢复、会话搜索、上下文用量提示和长对话压缩。 |
49
54
  | 定时任务 | 支持创建、编辑、手动触发、查看历史,并为任务选择模型与参数。 |
50
55
  | 对话分享 | 支持创建分享链接、只读/可操作权限、可选密码保护,以及撤销分享。 |
@@ -65,7 +70,7 @@ QuickForge 的工具能力很直接,因此也需要谨慎使用:
65
70
  #### 从 npm 安装
66
71
 
67
72
  ```bash
68
- npm install -g @shawnstack/quickforge@1.3.24
73
+ npm install -g @shawnstack/quickforge@1.3.26
69
74
  qf
70
75
 
71
76
  # CLI 工具
@@ -79,17 +84,17 @@ qf update
79
84
  当前版本的离线包:
80
85
 
81
86
  ```text
82
- package-offline/shawnstack-quickforge-1.3.24.tgz
87
+ package-offline/shawnstack-quickforge-1.3.26.tgz
83
88
  ```
84
89
 
85
90
  在安装了 Node.js 20+ 和 npm 的机器上执行:
86
91
 
87
92
  ```bash
88
- npm install -g ./package-offline/shawnstack-quickforge-1.3.24.tgz
93
+ npm install -g ./package-offline/shawnstack-quickforge-1.3.26.tgz
89
94
  qf
90
95
  ```
91
96
 
92
- 该包由 `v1.3.24` 标签生成,包含 QuickForge 运行时资源,依赖由 npm 安装。
97
+ 该包由 `v1.3.26` 标签生成,包含 QuickForge 运行时资源,依赖由 npm 安装。
93
98
 
94
99
  ### 本地开发
95
100
 
@@ -153,8 +158,8 @@ API Key: 按你的 LiteLLM 配置填写,可为空
153
158
  | 层级 | 技术 |
154
159
  |---|---|
155
160
  | 前端 | React 19, Vite 8, Tailwind CSS 4, TypeScript |
156
- | UI | shadcn-style primitives, Lucide icons, `@mariozechner/pi-web-ui` |
157
- | Agent / 模型编排 | `@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, MCP SDK |
161
+ | UI | shadcn-style primitives, Lucide icons, `@earendil-works/pi-web-ui` |
162
+ | Agent / 模型编排 | `@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, MCP SDK |
158
163
  | 后端 | Node.js ESM,原生 `http` 模块 |
159
164
  | 存储 | 本地 JSON 文件,默认在 `~/.quickforge/` |
160
165
 
@@ -206,8 +211,9 @@ It is not meant to replace your IDE or promise fully autonomous software develop
206
211
  | Regular and project chats | Regular chats are for general questions. Project chats attach to a local directory and can use workspace tools when authorized. |
207
212
  | YOLO workspace tools | Allows the agent to read, search, create, overwrite, precisely edit files, and run shell commands from the attached workspace. |
208
213
  | MCP integration | Supports stdio, SSE, and Streamable HTTP (`http`) MCP servers. External tools are injected with namespaced tool names. |
209
- | Agent Skills | Supports global, shared, project-level, and bundled Skills for specialized workflows, references, and tool-use instructions. |
210
- | Custom commands | Includes built-in commands such as `/compact` and `/clear`, and can load project commands from `.ai/commands/` or configured directories. |
214
+ | Custom instructions | Automatically merges `~/.claude/CLAUDE.md`, `~/.opencode/AGENTS.md`, `~/.quickforge/AGENTS.md`, and project `CLAUDE.md`, `AGENTS.md`, `.opencode/AGENTS.md`, `.quickforge/AGENTS.md`. |
215
+ | Agent Skills | Supports Claude, opencode, shared, QuickForge project-level, and bundled Skills for specialized workflows, references, and tool-use instructions. |
216
+ | Custom commands | Includes built-in commands such as `/plan`, `/review`, `/compact`, and `/clear`, and can load project commands from `.claude/commands/`, `.opencode/commands/`, `.ai/commands/`, or configured directories. `/plan <task>` drafts an implementation plan without edits or commands; `/review [scope]` performs a pre-commit self-review without editing files. |
211
217
  | Conversation workflow | Streaming responses, copy, rollback, fork, draft recovery, search, context usage indicator, and conversation compaction. |
212
218
  | Scheduled tasks | Create, edit, manually trigger, and inspect tasks, with model and parameter selection per task. |
213
219
  | Conversation sharing | Share conversations with read-only or operate permissions, optional password protection, and revocation support. |
@@ -228,7 +234,7 @@ QuickForge intentionally exposes powerful local capabilities, so the boundaries
228
234
  #### npm
229
235
 
230
236
  ```bash
231
- npm install -g @shawnstack/quickforge@1.3.24
237
+ npm install -g @shawnstack/quickforge@1.3.26
232
238
  qf
233
239
 
234
240
  # CLI utilities
@@ -239,20 +245,20 @@ qf update
239
245
 
240
246
  #### Offline tarball
241
247
 
242
- The offline release package for `v1.3.24` is:
248
+ The offline release package for `v1.3.26` is:
243
249
 
244
250
  ```text
245
- package-offline/shawnstack-quickforge-1.3.24.tgz
251
+ package-offline/shawnstack-quickforge-1.3.26.tgz
246
252
  ```
247
253
 
248
254
  Install it on a machine with Node.js 20+ and npm:
249
255
 
250
256
  ```bash
251
- npm install -g ./package-offline/shawnstack-quickforge-1.3.24.tgz
257
+ npm install -g ./package-offline/shawnstack-quickforge-1.3.26.tgz
252
258
  qf
253
259
  ```
254
260
 
255
- The package was generated from tag `v1.3.24` and includes QuickForge runtime assets and installs dependencies with npm.
261
+ The package was generated from tag `v1.3.26` and includes QuickForge runtime assets and installs dependencies with npm.
256
262
 
257
263
  ### Local development
258
264
 
@@ -316,8 +322,8 @@ Located under `~/.quickforge/` by default (`%USERPROFILE%\.quickforge` on Window
316
322
  | Layer | Technology |
317
323
  |---|---|
318
324
  | Frontend | React 19, Vite 8, Tailwind CSS 4, TypeScript |
319
- | UI | shadcn-style primitives, Lucide icons, `@mariozechner/pi-web-ui` |
320
- | Agent / model orchestration | `@mariozechner/pi-agent-core`, `@mariozechner/pi-ai`, MCP SDK |
325
+ | UI | shadcn-style primitives, Lucide icons, `@earendil-works/pi-web-ui` |
326
+ | Agent / model orchestration | `@earendil-works/pi-agent-core`, `@earendil-works/pi-ai`, MCP SDK |
321
327
  | Server | Node.js ESM, plain `http` module |
322
328
  | Storage | Local JSON files under `~/.quickforge/` by default |
323
329
 
@@ -0,0 +1,39 @@
1
+ import{c as e,d as t,l as n,n as r,r as i}from"./index-8Q1Ovled.js";import{t as a}from"./headers-5EYI0_pl.js";import{t as o}from"./sanitize-unicode-BhyPmlyt.js";import{i as s,n as c,t as l}from"./github-copilot-headers-CMb2BbzT.js";import{n as u,r as d,t as f}from"./transform-messages-Dhj_4OTw.js";function p(e,t,n,r,i){if(r===`m`)throw TypeError(`Private method is not writable`);if(r===`a`&&!i)throw TypeError(`Private accessor was defined without a setter`);if(typeof t==`function`?e!==t||!i:!t.has(e))throw TypeError(`Cannot write private member to an object whose class did not declare it`);return r===`a`?i.call(e,n):i?i.value=n:t.set(e,n),n}function m(e,t,n,r){if(n===`a`&&!r)throw TypeError(`Private accessor was defined without a getter`);if(typeof t==`function`?e!==t||!r:!t.has(e))throw TypeError(`Cannot read private member from an object whose class did not declare it`);return n===`m`?r:n===`a`?r.call(e):r?r.value:t.get(e)}var ee=function(){let{crypto:e}=globalThis;if(e?.randomUUID)return ee=e.randomUUID.bind(e),e.randomUUID();let t=new Uint8Array(1),n=e?()=>e.getRandomValues(t)[0]:()=>Math.random()*255&255;return`10000000-1000-4000-8000-100000000000`.replace(/[018]/g,e=>(e^n()&15>>e/4).toString(16))};function h(e){return typeof e==`object`&&!!e&&(`name`in e&&e.name===`AbortError`||`message`in e&&String(e.message).includes(`FetchRequestCanceledException`))}var g=e=>{if(e instanceof Error)return e;if(typeof e==`object`&&e){try{if(Object.prototype.toString.call(e)===`[object Error]`){let t=Error(e.message,e.cause?{cause:e.cause}:{});return e.stack&&(t.stack=e.stack),e.cause&&!t.cause&&(t.cause=e.cause),e.name&&(t.name=e.name),t}}catch{}try{return Error(JSON.stringify(e))}catch{}}return Error(e)},_=class extends Error{},v=class e extends _{constructor(t,n,r,i,a){super(`${e.makeMessage(t,n,r)}`),this.status=t,this.headers=i,this.requestID=i?.get(`request-id`),this.error=n,this.type=a??null}static makeMessage(e,t,n){let r=t?.message?typeof t.message==`string`?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||`(no status code or body)`}static generate(t,n,r,i){if(!t||!i)return new te({message:r,cause:g(n)});let a=n,o=a?.error?.type;return t===400?new re(t,a,r,i,o):t===401?new ie(t,a,r,i,o):t===403?new ae(t,a,r,i,o):t===404?new oe(t,a,r,i,o):t===409?new se(t,a,r,i,o):t===422?new ce(t,a,r,i,o):t===429?new le(t,a,r,i,o):t>=500?new ue(t,a,r,i,o):new e(t,a,r,i,o)}},y=class extends v{constructor({message:e}={}){super(void 0,void 0,e||`Request was aborted.`,void 0)}},te=class extends v{constructor({message:e,cause:t}){super(void 0,void 0,e||`Connection error.`,void 0),t&&(this.cause=t)}},ne=class extends te{constructor({message:e}={}){super({message:e??`Request timed out.`})}},re=class extends v{},ie=class extends v{},ae=class extends v{},oe=class extends v{},se=class extends v{},ce=class extends v{},le=class extends v{},ue=class extends v{},de=/^[a-z][a-z0-9+.-]*:/i,fe=e=>de.test(e),pe=e=>(pe=Array.isArray,pe(e)),me=pe;function he(e){return typeof e==`object`?e??{}:{}}function ge(e){if(!e)return!0;for(let t in e)return!1;return!0}function _e(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var ve=(e,t)=>{if(typeof t!=`number`||!Number.isInteger(t))throw new _(`${e} must be an integer`);if(t<0)throw new _(`${e} must be a positive integer`);return t},ye=e=>{try{return JSON.parse(e)}catch{return}},be=e=>new Promise(t=>setTimeout(t,e)),b=`0.91.1`,xe=()=>typeof window<`u`&&window.document!==void 0&&typeof navigator<`u`;function Se(){return typeof Deno<`u`&&Deno.build!=null?`deno`:typeof EdgeRuntime<`u`?`edge`:Object.prototype.toString.call(globalThis.process===void 0?0:globalThis.process)===`[object process]`?`node`:`unknown`}var Ce=()=>{let e=Se();if(e===`deno`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":b,"X-Stainless-OS":Ee(Deno.build.os),"X-Stainless-Arch":Te(Deno.build.arch),"X-Stainless-Runtime":`deno`,"X-Stainless-Runtime-Version":typeof Deno.version==`string`?Deno.version:Deno.version?.deno??`unknown`};if(typeof EdgeRuntime<`u`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":b,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":`edge`,"X-Stainless-Runtime-Version":globalThis.process.version};if(e===`node`)return{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":b,"X-Stainless-OS":Ee(globalThis.process.platform??`unknown`),"X-Stainless-Arch":Te(globalThis.process.arch??`unknown`),"X-Stainless-Runtime":`node`,"X-Stainless-Runtime-Version":globalThis.process.version??`unknown`};let t=we();return t?{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":b,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`browser:${t.browser}`,"X-Stainless-Runtime-Version":t.version}:{"X-Stainless-Lang":`js`,"X-Stainless-Package-Version":b,"X-Stainless-OS":`Unknown`,"X-Stainless-Arch":`unknown`,"X-Stainless-Runtime":`unknown`,"X-Stainless-Runtime-Version":`unknown`}};function we(){if(typeof navigator>`u`||!navigator)return null;for(let{key:e,pattern:t}of[{key:`edge`,pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`ie`,pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`chrome`,pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`firefox`,pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:`safari`,pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}]){let n=t.exec(navigator.userAgent);if(n)return{browser:e,version:`${n[1]||0}.${n[2]||0}.${n[3]||0}`}}return null}var Te=e=>e===`x32`?`x32`:e===`x86_64`||e===`x64`?`x64`:e===`arm`?`arm`:e===`aarch64`||e===`arm64`?`arm64`:e?`other:${e}`:`unknown`,Ee=e=>(e=e.toLowerCase(),e.includes(`ios`)?`iOS`:e===`android`?`Android`:e===`darwin`?`MacOS`:e===`win32`?`Windows`:e===`freebsd`?`FreeBSD`:e===`openbsd`?`OpenBSD`:e===`linux`?`Linux`:e?`Other:${e}`:`Unknown`),De,Oe=()=>De??=Ce();function ke(){if(typeof fetch<`u`)return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function Ae(...e){let t=globalThis.ReadableStream;if(t===void 0)throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new t(...e)}function je(e){let t=Symbol.asyncIterator in e?e[Symbol.asyncIterator]():e[Symbol.iterator]();return Ae({start(){},async pull(e){let{done:n,value:r}=await t.next();n?e.close():e.enqueue(r)},async cancel(){await t.return?.()}})}function Me(e){if(e[Symbol.asyncIterator])return e;let t=e.getReader();return{async next(){try{let e=await t.read();return e?.done&&t.releaseLock(),e}catch(e){throw t.releaseLock(),e}},async return(){let e=t.cancel();return t.releaseLock(),await e,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Ne(e){if(typeof e!=`object`||!e)return;if(e[Symbol.asyncIterator]){await e[Symbol.asyncIterator]().return?.();return}let t=e.getReader(),n=t.cancel();t.releaseLock(),await n}var Pe=({headers:e,body:t})=>({bodyHeaders:{"content-type":`application/json`},body:JSON.stringify(t)});function Fe(e){return Object.entries(e).filter(([e,t])=>t!==void 0).map(([e,t])=>{if(typeof t==`string`||typeof t==`number`||typeof t==`boolean`)return`${encodeURIComponent(e)}=${encodeURIComponent(t)}`;if(t===null)return`${encodeURIComponent(e)}=`;throw new _(`Cannot stringify type ${typeof t}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join(`&`)}function Ie(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),r=0;for(let t of e)n.set(t,r),r+=t.length;return n}var Le;function Re(e){let t;return(Le??=(t=new globalThis.TextEncoder,t.encode.bind(t)))(e)}var ze;function Be(e){let t;return(ze??=(t=new globalThis.TextDecoder,t.decode.bind(t)))(e)}var x,S,Ve=class{constructor(){x.set(this,void 0),S.set(this,void 0),p(this,x,new Uint8Array,`f`),p(this,S,null,`f`)}decode(e){if(e==null)return[];let t=e instanceof ArrayBuffer?new Uint8Array(e):typeof e==`string`?Re(e):e;p(this,x,Ie([m(this,x,`f`),t]),`f`);let n=[],r;for(;(r=He(m(this,x,`f`),m(this,S,`f`)))!=null;){if(r.carriage&&m(this,S,`f`)==null){p(this,S,r.index,`f`);continue}if(m(this,S,`f`)!=null&&(r.index!==m(this,S,`f`)+1||r.carriage)){n.push(Be(m(this,x,`f`).subarray(0,m(this,S,`f`)-1))),p(this,x,m(this,x,`f`).subarray(m(this,S,`f`)),`f`),p(this,S,null,`f`);continue}let e=m(this,S,`f`)===null?r.preceding:r.preceding-1,t=Be(m(this,x,`f`).subarray(0,e));n.push(t),p(this,x,m(this,x,`f`).subarray(r.index),`f`),p(this,S,null,`f`)}return n}flush(){return m(this,x,`f`).length?this.decode(`
2
+ `):[]}};x=new WeakMap,S=new WeakMap,Ve.NEWLINE_CHARS=new Set([`
3
+ `,`\r`]),Ve.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function He(e,t){for(let n=t??0;n<e.length;n++){if(e[n]===10)return{preceding:n,index:n+1,carriage:!1};if(e[n]===13)return{preceding:n,index:n+1,carriage:!0}}return null}function Ue(e){for(let t=0;t<e.length-1;t++){if(e[t]===10&&e[t+1]===10||e[t]===13&&e[t+1]===13)return t+2;if(e[t]===13&&e[t+1]===10&&t+3<e.length&&e[t+2]===13&&e[t+3]===10)return t+4}return-1}var We={off:0,error:200,warn:300,info:400,debug:500},Ge=(e,t,n)=>{if(e){if(_e(We,e))return e;w(n).warn(`${t} was set to ${JSON.stringify(e)}, expected one of ${JSON.stringify(Object.keys(We))}`)}};function C(){}function Ke(e,t,n){return!t||We[e]>We[n]?C:t[e].bind(t)}var qe={error:C,warn:C,info:C,debug:C},Je=new WeakMap;function w(e){let t=e.logger,n=e.logLevel??`off`;if(!t)return qe;let r=Je.get(t);if(r&&r[0]===n)return r[1];let i={error:Ke(`error`,t,n),warn:Ke(`warn`,t,n),info:Ke(`info`,t,n),debug:Ke(`debug`,t,n)};return Je.set(t,[n,i]),i}var T=e=>(e.options&&(e.options={...e.options},delete e.options.headers),e.headers&&=Object.fromEntries((e.headers instanceof Headers?[...e.headers]:Object.entries(e.headers)).map(([e,t])=>[e,e.toLowerCase()===`x-api-key`||e.toLowerCase()===`authorization`||e.toLowerCase()===`cookie`||e.toLowerCase()===`set-cookie`?`***`:t])),`retryOfRequestLogID`in e&&(e.retryOfRequestLogID&&(e.retryOf=e.retryOfRequestLogID),delete e.retryOfRequestLogID),e),Ye,Xe=class e{constructor(e,t,n){this.iterator=e,Ye.set(this,void 0),this.controller=t,p(this,Ye,n,`f`)}static fromSSEResponse(t,n,r){let i=!1,a=r?w(r):console;async function*o(){if(i)throw new _("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let e of Ze(t,n)){if(e.event===`completion`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event===`message_start`||e.event===`message_delta`||e.event===`message_stop`||e.event===`content_block_start`||e.event===`content_block_delta`||e.event===`content_block_stop`||e.event===`message`||e.event===`user.message`||e.event===`user.interrupt`||e.event===`user.tool_confirmation`||e.event===`user.custom_tool_result`||e.event===`agent.message`||e.event===`agent.thinking`||e.event===`agent.tool_use`||e.event===`agent.tool_result`||e.event===`agent.mcp_tool_use`||e.event===`agent.mcp_tool_result`||e.event===`agent.custom_tool_use`||e.event===`agent.thread_context_compacted`||e.event===`session.status_running`||e.event===`session.status_idle`||e.event===`session.status_rescheduled`||e.event===`session.status_terminated`||e.event===`session.error`||e.event===`session.deleted`||e.event===`span.model_request_start`||e.event===`span.model_request_end`)try{yield JSON.parse(e.data)}catch(t){throw a.error(`Could not parse message into JSON:`,e.data),a.error(`From chunk:`,e.raw),t}if(e.event!==`ping`&&e.event===`error`){let n=ye(e.data)??e.data,r=n?.error?.type;throw new v(void 0,n,void 0,t.headers,r)}}e=!0}catch(e){if(h(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}static fromReadableStream(t,n,r){let i=!1;async function*a(){let e=new Ve,n=Me(t);for await(let t of n)for(let n of e.decode(t))yield n;for(let t of e.flush())yield t}async function*o(){if(i)throw new _("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");i=!0;let e=!1;try{for await(let t of a())e||t&&(yield JSON.parse(t));e=!0}catch(e){if(h(e))return;throw e}finally{e||n.abort()}}return new e(o,n,r)}[(Ye=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let t=[],n=[],r=this.iterator(),i=e=>({next:()=>{if(e.length===0){let e=r.next();t.push(e),n.push(e)}return e.shift()}});return[new e(()=>i(t),this.controller,m(this,Ye,`f`)),new e(()=>i(n),this.controller,m(this,Ye,`f`))]}toReadableStream(){let e=this,t;return Ae({async start(){t=e[Symbol.asyncIterator]()},async pull(e){try{let{value:n,done:r}=await t.next();if(r)return e.close();let i=Re(JSON.stringify(n)+`
4
+ `);e.enqueue(i)}catch(t){e.error(t)}},async cancel(){await t.return?.()}})}};async function*Ze(e,t){if(!e.body)throw t.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new _(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new _(`Attempted to iterate over a response with no body`);let n=new $e,r=new Ve,i=Me(e.body);for await(let e of Qe(i))for(let t of r.decode(e)){let e=n.decode(t);e&&(yield e)}for(let e of r.flush()){let t=n.decode(e);t&&(yield t)}}async function*Qe(e){let t=new Uint8Array;for await(let n of e){if(n==null)continue;let e=n instanceof ArrayBuffer?new Uint8Array(n):typeof n==`string`?Re(n):n,r=new Uint8Array(t.length+e.length);r.set(t),r.set(e,t.length),t=r;let i;for(;(i=Ue(t))!==-1;)yield t.slice(0,i),t=t.slice(i)}t.length>0&&(yield t)}var $e=class{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(e){if(e.endsWith(`\r`)&&(e=e.substring(0,e.length-1)),!e){if(!this.event&&!this.data.length)return null;let e={event:this.event,data:this.data.join(`
5
+ `),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],e}if(this.chunks.push(e),e.startsWith(`:`))return null;let[t,n,r]=et(e,`:`);return r.startsWith(` `)&&(r=r.substring(1)),t===`event`?this.event=r:t===`data`&&this.data.push(r),null}};function et(e,t){let n=e.indexOf(t);return n===-1?[e,``,``]:[e.substring(0,n),t,e.substring(n+t.length)]}async function tt(e,t){let{response:n,requestLogID:r,retryOfRequestLogID:i,startTime:a}=t,o=await(async()=>{if(t.options.stream)return w(e).debug(`response`,n.status,n.url,n.headers,n.body),t.options.__streamClass?t.options.__streamClass.fromSSEResponse(n,t.controller):Xe.fromSSEResponse(n,t.controller);if(n.status===204)return null;if(t.options.__binaryResponse)return n;let r=n.headers.get(`content-type`)?.split(`;`)[0]?.trim();return r?.includes(`application/json`)||r?.endsWith(`+json`)?n.headers.get(`content-length`)===`0`?void 0:nt(await n.json(),n):await n.text()})();return w(e).debug(`[${r}] response parsed`,T({retryOfRequestLogID:i,url:n.url,status:n.status,body:o,durationMs:Date.now()-a})),o}function nt(e,t){return!e||typeof e!=`object`||Array.isArray(e)?e:Object.defineProperty(e,`_request_id`,{value:t.headers.get(`request-id`),enumerable:!1})}var E,rt=class e extends Promise{constructor(e,t,n=tt){super(e=>{e(null)}),this.responsePromise=t,this.parseResponse=n,E.set(this,void 0),p(this,E,e,`f`)}_thenUnwrap(t){return new e(m(this,E,`f`),this.responsePromise,async(e,n)=>nt(t(await this.parseResponse(e,n),n),n.response))}asResponse(){return this.responsePromise.then(e=>e.response)}async withResponse(){let[e,t]=await Promise.all([this.parse(),this.asResponse()]);return{data:e,response:t,request_id:t.headers.get(`request-id`)}}parse(){return this.parsedPromise||=this.responsePromise.then(e=>this.parseResponse(m(this,E,`f`),e)),this.parsedPromise}then(e,t){return this.parse().then(e,t)}catch(e){return this.parse().catch(e)}finally(e){return this.parse().finally(e)}};E=new WeakMap;var it,at=class{constructor(e,t,n,r){it.set(this,void 0),p(this,it,e,`f`),this.options=r,this.response=t,this.body=n}hasNextPage(){return this.getPaginatedItems().length?this.nextPageRequestOptions()!=null:!1}async getNextPage(){let e=this.nextPageRequestOptions();if(!e)throw new _("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");return await m(this,it,`f`).requestAPIList(this.constructor,e)}async*iterPages(){let e=this;for(yield e;e.hasNextPage();)e=await e.getNextPage(),yield e}async*[(it=new WeakMap,Symbol.asyncIterator)](){for await(let e of this.iterPages())for(let t of e.getPaginatedItems())yield t}},ot=class extends rt{constructor(e,t,n){super(e,t,async(e,t)=>new n(e,t.response,await tt(e,t),t.options))}async*[Symbol.asyncIterator](){let e=await this;for await(let t of e)yield t}},D=class extends at{constructor(e,t,n,r){super(e,t,n,r),this.data=n.data||[],this.has_more=n.has_more||!1,this.first_id=n.first_id||null,this.last_id=n.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){return this.has_more===!1?!1:super.hasNextPage()}nextPageRequestOptions(){if(this.options.query?.before_id){let e=this.first_id;return e?{...this.options,query:{...he(this.options.query),before_id:e}}:null}let e=this.last_id;return e?{...this.options,query:{...he(this.options.query),after_id:e}}:null}},O=class extends at{constructor(e,t,n,r){super(e,t,n,r),this.data=n.data||[],this.next_page=n.next_page||null}getPaginatedItems(){return this.data??[]}nextPageRequestOptions(){let e=this.next_page;return e?{...this.options,query:{...he(this.options.query),page:e}}:null}},st=()=>{if(typeof File>`u`){let{process:e}=globalThis,t=typeof e?.versions?.node==`string`&&parseInt(e.versions.node.split(`.`))<20;throw Error("`File` is not defined as a global, which is required for file uploads."+(t?" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.":``))}};function k(e,t,n){return st(),new File(e,t??`unknown_file`,n)}function ct(e,t){let n=typeof e==`object`&&!!e&&(`name`in e&&e.name&&String(e.name)||`url`in e&&e.url&&String(e.url)||`filename`in e&&e.filename&&String(e.filename)||`path`in e&&e.path&&String(e.path))||``;return t?n.split(/[\\/]/).pop()||void 0:n}var lt=e=>typeof e==`object`&&!!e&&typeof e[Symbol.asyncIterator]==`function`,ut=async(e,t,n=!0)=>({...e,body:await pt(e.body,t,n)}),dt=new WeakMap;function ft(e){let t=typeof e==`function`?e:e.fetch,n=dt.get(t);if(n)return n;let r=(async()=>{try{let e=`Response`in t?t.Response:(await t(`data:,`)).constructor,n=new FormData;return n.toString()!==await new e(n).text()}catch{return!0}})();return dt.set(t,r),r}var pt=async(e,t,n=!0)=>{if(!await ft(t))throw TypeError(`The provided fetch function does not support file uploads with the current global FormData class.`);let r=new FormData;return await Promise.all(Object.entries(e||{}).map(([e,t])=>ht(r,e,t,n))),r},mt=e=>e instanceof Blob&&`name`in e,ht=async(e,t,n,r)=>{if(n!==void 0){if(n==null)throw TypeError(`Received null for "${t}"; to pass null in FormData, you must use the string 'null'`);if(typeof n==`string`||typeof n==`number`||typeof n==`boolean`)e.append(t,String(n));else if(n instanceof Response){let i={},a=n.headers.get(`Content-Type`);a&&(i={type:a}),e.append(t,k([await n.blob()],ct(n,r),i))}else if(lt(n))e.append(t,k([await new Response(je(n)).blob()],ct(n,r)));else if(mt(n))e.append(t,k([n],ct(n,r),{type:n.type}));else if(Array.isArray(n))await Promise.all(n.map(n=>ht(e,t+`[]`,n,r)));else if(typeof n==`object`)await Promise.all(Object.entries(n).map(([n,i])=>ht(e,`${t}[${n}]`,i,r)));else throw TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${n} instead`)}},gt=e=>typeof e==`object`&&!!e&&typeof e.size==`number`&&typeof e.type==`string`&&typeof e.text==`function`&&typeof e.slice==`function`&&typeof e.arrayBuffer==`function`,_t=e=>typeof e==`object`&&!!e&&typeof e.name==`string`&&typeof e.lastModified==`number`&&gt(e),vt=e=>typeof e==`object`&&!!e&&typeof e.url==`string`&&typeof e.blob==`function`;async function yt(e,t,n){if(st(),e=await e,t||=ct(e,!0),_t(e))return e instanceof File&&t==null&&n==null?e:k([await e.arrayBuffer()],t??e.name,{type:e.type,lastModified:e.lastModified,...n});if(vt(e)){let r=await e.blob();return t||=new URL(e.url).pathname.split(/[\\/]/).pop(),k(await bt(r),t,n)}let r=await bt(e);if(!n?.type){let e=r.find(e=>typeof e==`object`&&`type`in e&&e.type);typeof e==`string`&&(n={...n,type:e})}return k(r,t,n)}async function bt(e){let t=[];if(typeof e==`string`||ArrayBuffer.isView(e)||e instanceof ArrayBuffer)t.push(e);else if(gt(e))t.push(e instanceof Blob?e:await e.arrayBuffer());else if(lt(e))for await(let n of e)t.push(...await bt(n));else{let t=e?.constructor?.name;throw Error(`Unexpected data type: ${typeof e}${t?`; constructor: ${t}`:``}${xt(e)}`)}return t}function xt(e){return typeof e!=`object`||!e?``:`; props: [${Object.getOwnPropertyNames(e).map(e=>`"${e}"`).join(`, `)}]`}var A=class{constructor(e){this._client=e}},St=Symbol.for(`brand.privateNullableHeaders`);function*Ct(e){if(!e)return;if(St in e){let{values:t,nulls:n}=e;yield*t.entries();for(let e of n)yield[e,null];return}let t=!1,n;e instanceof Headers?n=e.entries():me(e)?n=e:(t=!0,n=Object.entries(e??{}));for(let e of n){let n=e[0];if(typeof n!=`string`)throw TypeError(`expected header name to be a string`);let r=me(e[1])?e[1]:[e[1]],i=!1;for(let e of r)e!==void 0&&(t&&!i&&(i=!0,yield[n,null]),yield[n,e])}}var j=e=>{let t=new Headers,n=new Set;for(let r of e){let e=new Set;for(let[i,a]of Ct(r)){let r=i.toLowerCase();e.has(r)||(t.delete(i),e.add(r)),a===null?(t.delete(i),n.add(r)):(t.append(i,a),n.delete(r))}}return{[St]:!0,values:t,nulls:n}};function wt(e){return e.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g,encodeURIComponent)}var Tt=Object.freeze(Object.create(null)),M=((e=wt)=>function(t,...n){if(t.length===1)return t[0];let r=!1,i=[],a=t.reduce((t,a,o)=>{/[?#]/.test(a)&&(r=!0);let s=n[o],c=(r?encodeURIComponent:e)(``+s);return o!==n.length&&(s==null||typeof s==`object`&&s.toString===Object.getPrototypeOf(Object.getPrototypeOf(s.hasOwnProperty??Tt)??Tt)?.toString)&&(c=s+``,i.push({start:t.length+a.length,length:c.length,error:`Value of type ${Object.prototype.toString.call(s).slice(8,-1)} is not a valid path parameter`})),t+a+(o===n.length?``:c)},``),o=a.split(/[?#]/,1)[0],s=/(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi,c;for(;(c=s.exec(o))!==null;)i.push({start:c.index,length:c[0].length,error:`Value "${c[0]}" can\'t be safely passed as a path parameter`});if(i.sort((e,t)=>e.start-t.start),i.length>0){let e=0,t=i.reduce((t,n)=>{let r=` `.repeat(n.start-e),i=`^`.repeat(n.length);return e=n.start+n.length,t+r+i},``);throw new _(`Path parameters result in path with invalid segments:\n${i.map(e=>e.error).join(`
6
+ `)}\n${a}\n${t}`)}return a})(wt),Et=class extends A{create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/environments?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/environments/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/environments/${e}?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/environments?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/environments/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}archive(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/environments/${e}/archive?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}},N=Symbol(`anthropic.sdk.stainlessHelper`);function Dt(e){return typeof e==`object`&&!!e&&N in e}function Ot(e,t){let n=new Set;if(e)for(let t of e)Dt(t)&&n.add(t[N]);if(t){for(let e of t)if(Dt(e)&&n.add(e[N]),Array.isArray(e.content))for(let t of e.content)Dt(t)&&n.add(t[N])}return Array.from(n)}function kt(e,t){let n=Ot(e,t);return n.length===0?{}:{"x-stainless-helper":n.join(`, `)}}function At(e){return Dt(e)?{"x-stainless-helper":e[N]}:{}}var jt=class extends A{list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/files?beta=true`,D,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`files-api-2025-04-14`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/files/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`files-api-2025-04-14`].toString()},n?.headers])})}download(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/files/${e}/content?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`files-api-2025-04-14`].toString(),Accept:`application/binary`},n?.headers]),__binaryResponse:!0})}retrieveMetadata(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/files/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`files-api-2025-04-14`].toString()},n?.headers])})}upload(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/files?beta=true`,ut({body:r,...t,headers:j([{"anthropic-beta":[...n??[],`files-api-2025-04-14`].toString()},At(r.file),t?.headers])},this._client))}},Mt=class extends A{retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/models/${e}?beta=true`,{...n,headers:j([{...r?.toString()==null?void 0:{"anthropic-beta":r?.toString()}},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/models?beta=true`,D,{query:r,...t,headers:j([{...n?.toString()==null?void 0:{"anthropic-beta":n?.toString()}},t?.headers])})}},Nt=class extends A{create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/user_profiles?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`user-profiles-2026-03-24`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/user_profiles/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`user-profiles-2026-03-24`].toString()},n?.headers])})}update(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/user_profiles/${e}?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`user-profiles-2026-03-24`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/user_profiles?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`user-profiles-2026-03-24`].toString()},t?.headers])})}createEnrollmentURL(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/user_profiles/${e}/enrollment_url?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`user-profiles-2026-03-24`].toString()},n?.headers])})}},Pt=class extends A{list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/agents/${e}/versions?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}},Ft=class extends A{constructor(){super(...arguments),this.versions=new Pt(this._client)}create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/agents?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r,...i}=t??{};return this._client.get(M`/v1/agents/${e}?beta=true`,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/agents/${e}?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/agents?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}archive(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/agents/${e}/archive?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}};Ft.Versions=Pt;var It=class extends A{create(e,t,n){let{view:r,betas:i,...a}=t;return this._client.post(M`/v1/memory_stores/${e}/memories?beta=true`,{query:{view:r},body:a,...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}retrieve(e,t,n){let{memory_store_id:r,betas:i,...a}=t;return this._client.get(M`/v1/memory_stores/${r}/memories/${e}?beta=true`,{query:a,...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{memory_store_id:r,view:i,betas:a,...o}=t;return this._client.post(M`/v1/memory_stores/${r}/memories/${e}?beta=true`,{query:{view:i},body:o,...n,headers:j([{"anthropic-beta":[...a??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/memory_stores/${e}/memories?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}delete(e,t,n){let{memory_store_id:r,expected_content_sha256:i,betas:a}=t;return this._client.delete(M`/v1/memory_stores/${r}/memories/${e}?beta=true`,{query:{expected_content_sha256:i},...n,headers:j([{"anthropic-beta":[...a??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}},Lt=class extends A{retrieve(e,t,n){let{memory_store_id:r,betas:i,...a}=t;return this._client.get(M`/v1/memory_stores/${r}/memory_versions/${e}?beta=true`,{query:a,...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/memory_stores/${e}/memory_versions?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}redact(e,t,n){let{memory_store_id:r,betas:i}=t;return this._client.post(M`/v1/memory_stores/${r}/memory_versions/${e}/redact?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}},Rt=class extends A{constructor(){super(...arguments),this.memories=new It(this._client),this.memoryVersions=new Lt(this._client)}create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/memory_stores?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/memory_stores/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/memory_stores/${e}?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/memory_stores?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/memory_stores/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}archive(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/memory_stores/${e}/archive?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}};Rt.Memories=It,Rt.MemoryVersions=Lt;var zt={"claude-opus-4-20250514":8192,"claude-opus-4-0":8192,"claude-4-opus-20250514":8192,"anthropic.claude-opus-4-20250514-v1:0":8192,"claude-opus-4@20250514":8192,"claude-opus-4-1-20250805":8192,"anthropic.claude-opus-4-1-20250805-v1:0":8192,"claude-opus-4-1@20250805":8192};function Bt(e){return e?.output_format??e?.output_config?.format}function Vt(e,t,n){let r=Bt(t);return!t||!(`parse`in(r??{}))?{...e,content:e.content.map(e=>{if(e.type===`text`){let t=Object.defineProperty({...e},`parsed_output`,{value:null,enumerable:!1});return Object.defineProperty(t,`parsed`,{get(){return n.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),null},enumerable:!1})}return e}),parsed_output:null}:Ht(e,t,n)}function Ht(e,t,n){let r=null,i=e.content.map(e=>{if(e.type===`text`){let i=Ut(t,e.text);r===null&&(r=i);let a=Object.defineProperty({...e},`parsed_output`,{value:i,enumerable:!1});return Object.defineProperty(a,`parsed`,{get(){return n.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),i},enumerable:!1})}return e});return{...e,content:i,parsed_output:r}}function Ut(e,t){let n=Bt(e);if(n?.type!==`json_schema`)return null;try{return`parse`in n?n.parse(t):JSON.parse(t)}catch(e){throw new _(`Failed to parse structured output: ${e}`)}}var Wt=e=>{let t=0,n=[];for(;t<e.length;){let r=e[t];if(r===`\\`){t++;continue}if(r===`{`){n.push({type:`brace`,value:`{`}),t++;continue}if(r===`}`){n.push({type:`brace`,value:`}`}),t++;continue}if(r===`[`){n.push({type:`paren`,value:`[`}),t++;continue}if(r===`]`){n.push({type:`paren`,value:`]`}),t++;continue}if(r===`:`){n.push({type:`separator`,value:`:`}),t++;continue}if(r===`,`){n.push({type:`delimiter`,value:`,`}),t++;continue}if(r===`"`){let i=``,a=!1;for(r=e[++t];r!==`"`;){if(t===e.length){a=!0;break}if(r===`\\`){if(t++,t===e.length){a=!0;break}i+=r+e[t],r=e[++t]}else i+=r,r=e[++t]}r=e[++t],a||n.push({type:`string`,value:i});continue}if(r&&/\s/.test(r)){t++;continue}let i=/[0-9]/;if(r&&i.test(r)||r===`-`||r===`.`){let a=``;for(r===`-`&&(a+=r,r=e[++t]);r&&i.test(r)||r===`.`;)a+=r,r=e[++t];n.push({type:`number`,value:a});continue}let a=/[a-z]/i;if(r&&a.test(r)){let i=``;for(;r&&a.test(r)&&t!==e.length;)i+=r,r=e[++t];if(i==`true`||i==`false`||i===`null`)n.push({type:`name`,value:i});else{t++;continue}continue}t++}return n},Gt=e=>{if(e.length===0)return e;let t=e[e.length-1];switch(t.type){case`separator`:return e=e.slice(0,e.length-1),Gt(e);case`number`:let n=t.value[t.value.length-1];if(n===`.`||n===`-`)return e=e.slice(0,e.length-1),Gt(e);case`string`:let r=e[e.length-2];if(r?.type===`delimiter`||r?.type===`brace`&&r.value===`{`)return e=e.slice(0,e.length-1),Gt(e);break;case`delimiter`:return e=e.slice(0,e.length-1),Gt(e)}return e},Kt=e=>{let t=[];return e.map(e=>{e.type===`brace`&&(e.value===`{`?t.push(`}`):t.splice(t.lastIndexOf(`}`),1)),e.type===`paren`&&(e.value===`[`?t.push(`]`):t.splice(t.lastIndexOf(`]`),1))}),t.length>0&&t.reverse().map(t=>{t===`}`?e.push({type:`brace`,value:`}`}):t===`]`&&e.push({type:`paren`,value:`]`})}),e},qt=e=>{let t=``;return e.map(e=>{switch(e.type){case`string`:t+=`"`+e.value+`"`;break;default:t+=e.value;break}}),t},Jt=e=>JSON.parse(qt(Kt(Gt(Wt(e))))),P,F,I,Yt,Xt,Zt,Qt,$t,en,L,tn,nn,rn,R,an,on,sn,cn,ln,un,dn,fn,pn,mn,hn=`__json_buf`;function gn(e){return e.type===`tool_use`||e.type===`server_tool_use`||e.type===`mcp_tool_use`}var _n=class e{constructor(e,t){P.add(this),this.messages=[],this.receivedMessages=[],F.set(this,void 0),I.set(this,null),this.controller=new AbortController,Yt.set(this,void 0),Xt.set(this,()=>{}),Zt.set(this,()=>{}),Qt.set(this,void 0),$t.set(this,()=>{}),en.set(this,()=>{}),L.set(this,{}),tn.set(this,!1),nn.set(this,!1),rn.set(this,!1),R.set(this,!1),an.set(this,void 0),on.set(this,void 0),sn.set(this,void 0),un.set(this,e=>{if(p(this,nn,!0,`f`),h(e)&&(e=new y),e instanceof y)return p(this,rn,!0,`f`),this._emit(`abort`,e);if(e instanceof _)return this._emit(`error`,e);if(e instanceof Error){let t=new _(e.message);return t.cause=e,this._emit(`error`,t)}return this._emit(`error`,new _(String(e)))}),p(this,Yt,new Promise((e,t)=>{p(this,Xt,e,`f`),p(this,Zt,t,`f`)}),`f`),p(this,Qt,new Promise((e,t)=>{p(this,$t,e,`f`),p(this,en,t,`f`)}),`f`),m(this,Yt,`f`).catch(()=>{}),m(this,Qt,`f`).catch(()=>{}),p(this,I,e,`f`),p(this,sn,t?.logger??console,`f`)}get response(){return m(this,an,`f`)}get request_id(){return m(this,on,`f`)}async withResponse(){p(this,R,!0,`f`);let e=await m(this,Yt,`f`);if(!e)throw Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get(`request-id`)}}static fromReadableStream(t){let n=new e(null);return n._run(()=>n._fromReadableStream(t)),n}static createMessage(t,n,r,{logger:i}={}){let a=new e(n,{logger:i});for(let e of n.messages)a._addMessageParam(e);return p(a,I,{...n,stream:!0},`f`),a._run(()=>a._createMessage(t,{...n,stream:!0},{...r,headers:{...r?.headers,"X-Stainless-Helper-Method":`stream`}})),a}_run(e){e().then(()=>{this._emitFinal(),this._emit(`end`)},m(this,un,`f`))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,t=!0){this.receivedMessages.push(e),t&&this._emit(`message`,e)}async _createMessage(e,t,n){let r=n?.signal,i;r&&(r.aborted&&this.controller.abort(),i=this.controller.abort.bind(this.controller),r.addEventListener(`abort`,i));try{m(this,P,`m`,dn).call(this);let{response:r,data:i}=await e.create({...t,stream:!0},{...n,signal:this.controller.signal}).withResponse();this._connected(r);for await(let e of i)m(this,P,`m`,fn).call(this,e);if(i.controller.signal?.aborted)throw new y;m(this,P,`m`,pn).call(this)}finally{r&&i&&r.removeEventListener(`abort`,i)}}_connected(e){this.ended||(p(this,an,e,`f`),p(this,on,e?.headers.get(`request-id`),`f`),m(this,Xt,`f`).call(this,e),this._emit(`connect`))}get ended(){return m(this,tn,`f`)}get errored(){return m(this,nn,`f`)}get aborted(){return m(this,rn,`f`)}abort(){this.controller.abort()}on(e,t){return(m(this,L,`f`)[e]||(m(this,L,`f`)[e]=[])).push({listener:t}),this}off(e,t){let n=m(this,L,`f`)[e];if(!n)return this;let r=n.findIndex(e=>e.listener===t);return r>=0&&n.splice(r,1),this}once(e,t){return(m(this,L,`f`)[e]||(m(this,L,`f`)[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise((t,n)=>{p(this,R,!0,`f`),e!==`error`&&this.once(`error`,n),this.once(e,t)})}async done(){p(this,R,!0,`f`),await m(this,Qt,`f`)}get currentMessage(){return m(this,F,`f`)}async finalMessage(){return await this.done(),m(this,P,`m`,cn).call(this)}async finalText(){return await this.done(),m(this,P,`m`,ln).call(this)}_emit(e,...t){if(m(this,tn,`f`))return;e===`end`&&(p(this,tn,!0,`f`),m(this,$t,`f`).call(this));let n=m(this,L,`f`)[e];if(n&&(m(this,L,`f`)[e]=n.filter(e=>!e.once),n.forEach(({listener:e})=>e(...t))),e===`abort`){let e=t[0];!m(this,R,`f`)&&!n?.length&&Promise.reject(e),m(this,Zt,`f`).call(this,e),m(this,en,`f`).call(this,e),this._emit(`end`);return}if(e===`error`){let e=t[0];!m(this,R,`f`)&&!n?.length&&Promise.reject(e),m(this,Zt,`f`).call(this,e),m(this,en,`f`).call(this,e),this._emit(`end`)}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit(`finalMessage`,m(this,P,`m`,cn).call(this))}async _fromReadableStream(e,t){let n=t?.signal,r;n&&(n.aborted&&this.controller.abort(),r=this.controller.abort.bind(this.controller),n.addEventListener(`abort`,r));try{m(this,P,`m`,dn).call(this),this._connected(null);let t=Xe.fromReadableStream(e,this.controller);for await(let e of t)m(this,P,`m`,fn).call(this,e);if(t.controller.signal?.aborted)throw new y;m(this,P,`m`,pn).call(this)}finally{n&&r&&n.removeEventListener(`abort`,r)}}[(F=new WeakMap,I=new WeakMap,Yt=new WeakMap,Xt=new WeakMap,Zt=new WeakMap,Qt=new WeakMap,$t=new WeakMap,en=new WeakMap,L=new WeakMap,tn=new WeakMap,nn=new WeakMap,rn=new WeakMap,R=new WeakMap,an=new WeakMap,on=new WeakMap,sn=new WeakMap,un=new WeakMap,P=new WeakSet,cn=function(){if(this.receivedMessages.length===0)throw new _(`stream ended without producing a Message with role=assistant`);return this.receivedMessages.at(-1)},ln=function(){if(this.receivedMessages.length===0)throw new _(`stream ended without producing a Message with role=assistant`);let e=this.receivedMessages.at(-1).content.filter(e=>e.type===`text`).map(e=>e.text);if(e.length===0)throw new _(`stream ended without producing a content block with type=text`);return e.join(` `)},dn=function(){this.ended||p(this,F,void 0,`f`)},fn=function(e){if(this.ended)return;let t=m(this,P,`m`,mn).call(this,e);switch(this._emit(`streamEvent`,e,t),e.type){case`content_block_delta`:{let n=t.content.at(-1);switch(e.delta.type){case`text_delta`:n.type===`text`&&this._emit(`text`,e.delta.text,n.text||``);break;case`citations_delta`:n.type===`text`&&this._emit(`citation`,e.delta.citation,n.citations??[]);break;case`input_json_delta`:gn(n)&&n.input&&this._emit(`inputJson`,e.delta.partial_json,n.input);break;case`thinking_delta`:n.type===`thinking`&&this._emit(`thinking`,e.delta.thinking,n.thinking);break;case`signature_delta`:n.type===`thinking`&&this._emit(`signature`,n.signature);break;case`compaction_delta`:n.type===`compaction`&&n.content&&this._emit(`compaction`,n.content);break;default:e.delta}break}case`message_stop`:this._addMessageParam(t),this._addMessage(Vt(t,m(this,I,`f`),{logger:m(this,sn,`f`)}),!0);break;case`content_block_stop`:this._emit(`contentBlock`,t.content.at(-1));break;case`message_start`:p(this,F,t,`f`);break;case`content_block_start`:case`message_delta`:break}},pn=function(){if(this.ended)throw new _(`stream has ended, this shouldn't happen`);let e=m(this,F,`f`);if(!e)throw new _(`request ended without sending any chunks`);return p(this,F,void 0,`f`),Vt(e,m(this,I,`f`),{logger:m(this,sn,`f`)})},mn=function(e){let t=m(this,F,`f`);if(e.type===`message_start`){if(t)throw new _(`Unexpected event order, got ${e.type} before receiving "message_stop"`);return e.message}if(!t)throw new _(`Unexpected event order, got ${e.type} before "message_start"`);switch(e.type){case`message_stop`:return t;case`message_delta`:return t.container=e.delta.container,t.stop_reason=e.delta.stop_reason,t.stop_sequence=e.delta.stop_sequence,t.usage.output_tokens=e.usage.output_tokens,t.context_management=e.context_management,e.usage.input_tokens!=null&&(t.usage.input_tokens=e.usage.input_tokens),e.usage.cache_creation_input_tokens!=null&&(t.usage.cache_creation_input_tokens=e.usage.cache_creation_input_tokens),e.usage.cache_read_input_tokens!=null&&(t.usage.cache_read_input_tokens=e.usage.cache_read_input_tokens),e.usage.server_tool_use!=null&&(t.usage.server_tool_use=e.usage.server_tool_use),e.usage.iterations!=null&&(t.usage.iterations=e.usage.iterations),t;case`content_block_start`:return t.content.push(e.content_block),t;case`content_block_delta`:{let n=t.content.at(e.index);switch(e.delta.type){case`text_delta`:n?.type===`text`&&(t.content[e.index]={...n,text:(n.text||``)+e.delta.text});break;case`citations_delta`:n?.type===`text`&&(t.content[e.index]={...n,citations:[...n.citations??[],e.delta.citation]});break;case`input_json_delta`:if(n&&gn(n)){let r=n[hn]||``;r+=e.delta.partial_json;let i={...n};if(Object.defineProperty(i,hn,{value:r,enumerable:!1,writable:!0}),r)try{i.input=Jt(r)}catch(e){let t=new _(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${e}. JSON: ${r}`);m(this,un,`f`).call(this,t)}t.content[e.index]=i}break;case`thinking_delta`:n?.type===`thinking`&&(t.content[e.index]={...n,thinking:n.thinking+e.delta.thinking});break;case`signature_delta`:n?.type===`thinking`&&(t.content[e.index]={...n,signature:e.delta.signature});break;case`compaction_delta`:n?.type===`compaction`&&(t.content[e.index]={...n,content:(n.content||``)+e.delta.content});break;default:e.delta}return t}case`content_block_stop`:return t}},Symbol.asyncIterator)](){let e=[],t=[],n=!1;return this.on(`streamEvent`,n=>{let r=t.shift();r?r.resolve(n):e.push(n)}),this.on(`end`,()=>{n=!0;for(let e of t)e.resolve(void 0);t.length=0}),this.on(`abort`,e=>{n=!0;for(let n of t)n.reject(e);t.length=0}),this.on(`error`,e=>{n=!0;for(let n of t)n.reject(e);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((e,n)=>t.push({resolve:e,reject:n})).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new Xe(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}},vn=class extends Error{constructor(e){let t=typeof e==`string`?e:e.map(e=>e.type===`text`?e.text:`[${e.type}]`).join(` `);super(t),this.name=`ToolError`,this.content=e}},yn=`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
7
+ 1. Task Overview
8
+ The user's core request and success criteria
9
+ Any clarifications or constraints they specified
10
+ 2. Current State
11
+ What has been completed so far
12
+ Files created, modified, or analyzed (with paths if relevant)
13
+ Key outputs or artifacts produced
14
+ 3. Important Discoveries
15
+ Technical constraints or requirements uncovered
16
+ Decisions made and their rationale
17
+ Errors encountered and how they were resolved
18
+ What approaches were tried that didn't work (and why)
19
+ 4. Next Steps
20
+ Specific actions needed to complete the task
21
+ Any blockers or open questions to resolve
22
+ Priority order if multiple steps remain
23
+ 5. Context to Preserve
24
+ User preferences or style requirements
25
+ Domain-specific details that aren't obvious
26
+ Any promises made to the user
27
+ Be concise but complete—err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.
28
+ Wrap your summary in <summary></summary> tags.`,bn,z,B,V,H,U,W,G,xn,Sn,Cn;function wn(){let e,t;return{promise:new Promise((n,r)=>{e=n,t=r}),resolve:e,reject:t}}var Tn=class{constructor(e,t,n){bn.add(this),this.client=e,z.set(this,!1),B.set(this,!1),V.set(this,void 0),H.set(this,void 0),U.set(this,void 0),W.set(this,void 0),G.set(this,void 0),xn.set(this,0),p(this,V,{params:{...t,messages:structuredClone(t.messages)}},`f`);let r=[`BetaToolRunner`,...Ot(t.tools,t.messages)].join(`, `);p(this,H,{...n,headers:j([{"x-stainless-helper":r},n?.headers])},`f`),p(this,G,wn(),`f`),t.compactionControl?.enabled&&console.warn('Anthropic: The `compactionControl` parameter is deprecated and will be removed in a future version. Use server-side compaction instead by passing `edits: [{ type: "compact_20260112" }]` in the params passed to `toolRunner()`. See https://platform.claude.com/docs/en/build-with-claude/compaction')}async*[(z=new WeakMap,B=new WeakMap,V=new WeakMap,H=new WeakMap,U=new WeakMap,W=new WeakMap,G=new WeakMap,xn=new WeakMap,bn=new WeakSet,Sn=async function(){let e=m(this,V,`f`).params.compactionControl;if(!e||!e.enabled)return!1;let t=0;if(m(this,U,`f`)!==void 0)try{let e=await m(this,U,`f`);t=e.usage.input_tokens+(e.usage.cache_creation_input_tokens??0)+(e.usage.cache_read_input_tokens??0)+e.usage.output_tokens}catch{return!1}let n=e.contextTokenThreshold??1e5;if(t<n)return!1;let r=e.model??m(this,V,`f`).params.model,i=e.summaryPrompt??yn,a=m(this,V,`f`).params.messages;if(a[a.length-1].role===`assistant`){let e=a[a.length-1];if(Array.isArray(e.content)){let t=e.content.filter(e=>e.type!==`tool_use`);t.length===0?a.pop():e.content=t}}let o=await this.client.beta.messages.create({model:r,messages:[...a,{role:`user`,content:[{type:`text`,text:i}]}],max_tokens:m(this,V,`f`).params.max_tokens},{signal:m(this,H,`f`).signal,headers:j([m(this,H,`f`).headers,{"x-stainless-helper":`compaction`}])});if(o.content[0]?.type!==`text`)throw new _(`Expected text response for compaction`);return m(this,V,`f`).params.messages=[{role:`user`,content:o.content}],!0},Symbol.asyncIterator)](){var e;if(m(this,z,`f`))throw new _(`Cannot iterate over a consumed stream`);p(this,z,!0,`f`),p(this,B,!0,`f`),p(this,W,void 0,`f`);try{for(;;){let t;try{if(m(this,V,`f`).params.max_iterations&&m(this,xn,`f`)>=m(this,V,`f`).params.max_iterations)break;p(this,B,!1,`f`),p(this,W,void 0,`f`),p(this,xn,(e=m(this,xn,`f`),e++,e),`f`),p(this,U,void 0,`f`);let{max_iterations:n,compactionControl:r,...i}=m(this,V,`f`).params;if(i.stream?(t=this.client.beta.messages.stream({...i},m(this,H,`f`)),p(this,U,t.finalMessage(),`f`),m(this,U,`f`).catch(()=>{}),yield t):(p(this,U,this.client.beta.messages.create({...i,stream:!1},m(this,H,`f`)),`f`),yield m(this,U,`f`)),!await m(this,bn,`m`,Sn).call(this)){if(!m(this,B,`f`)){let{role:e,content:t}=await m(this,U,`f`);m(this,V,`f`).params.messages.push({role:e,content:t})}let e=await m(this,bn,`m`,Cn).call(this,m(this,V,`f`).params.messages.at(-1));if(e)m(this,V,`f`).params.messages.push(e);else if(!m(this,B,`f`))break}}finally{t&&t.abort()}}if(!m(this,U,`f`))throw new _(`ToolRunner concluded without a message from the server`);m(this,G,`f`).resolve(await m(this,U,`f`))}catch(e){throw p(this,z,!1,`f`),m(this,G,`f`).promise.catch(()=>{}),m(this,G,`f`).reject(e),p(this,G,wn(),`f`),e}}setMessagesParams(e){typeof e==`function`?m(this,V,`f`).params=e(m(this,V,`f`).params):m(this,V,`f`).params=e,p(this,B,!0,`f`),p(this,W,void 0,`f`)}setRequestOptions(e){typeof e==`function`?p(this,H,e(m(this,H,`f`)),`f`):p(this,H,{...m(this,H,`f`),...e},`f`)}async generateToolResponse(e=m(this,H,`f`).signal){let t=await m(this,U,`f`)??this.params.messages.at(-1);return t?m(this,bn,`m`,Cn).call(this,t,e):null}done(){return m(this,G,`f`).promise}async runUntilDone(){if(!m(this,z,`f`))for await(let e of this);return this.done()}get params(){return m(this,V,`f`).params}pushMessages(...e){this.setMessagesParams(t=>({...t,messages:[...t.messages,...e]}))}then(e,t){return this.runUntilDone().then(e,t)}};Cn=async function(e,t=m(this,H,`f`).signal){return m(this,W,`f`)===void 0&&p(this,W,En(m(this,V,`f`).params,e,{...m(this,H,`f`),signal:t}),`f`),m(this,W,`f`)};async function En(e,t=e.messages.at(-1),n){if(!t||t.role!==`assistant`||!t.content||typeof t.content==`string`)return null;let r=t.content.filter(e=>e.type===`tool_use`);return r.length===0?null:{role:`user`,content:await Promise.all(r.map(async t=>{let r=e.tools.find(e=>(`name`in e?e.name:e.mcp_server_name)===t.name);if(!r||!(`run`in r))return{type:`tool_result`,tool_use_id:t.id,content:`Error: Tool '${t.name}' not found`,is_error:!0};try{let e=t.input;`parse`in r&&r.parse&&(e=r.parse(e));let i=await r.run(e,{toolUseBlock:t,signal:n?.signal});return{type:`tool_result`,tool_use_id:t.id,content:i}}catch(e){return{type:`tool_result`,tool_use_id:t.id,content:e instanceof vn?e.content:`Error: ${e instanceof Error?e.message:String(e)}`,is_error:!0}}}))}}var Dn=class e{constructor(e,t){this.iterator=e,this.controller=t}async*decoder(){let e=new Ve;for await(let t of this.iterator)for(let n of e.decode(t))yield JSON.parse(n);for(let t of e.flush())yield JSON.parse(t)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse(t,n){if(!t.body)throw n.abort(),globalThis.navigator!==void 0&&globalThis.navigator.product===`ReactNative`?new _(`The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api`):new _(`Attempted to iterate over a response with no body`);return new e(Me(t.body),n)}},On=class extends A{create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/messages/batches?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`message-batches-2024-09-24`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/messages/batches/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`message-batches-2024-09-24`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/messages/batches?beta=true`,D,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`message-batches-2024-09-24`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/messages/batches/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`message-batches-2024-09-24`].toString()},n?.headers])})}cancel(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/messages/batches/${e}/cancel?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`message-batches-2024-09-24`].toString()},n?.headers])})}async results(e,t={},n){let r=await this.retrieve(e);if(!r.results_url)throw new _(`No batch \`results_url\`; Has it finished processing? ${r.processing_status} - ${r.id}`);let{betas:i}=t??{};return this._client.get(r.results_url,{...n,headers:j([{"anthropic-beta":[...i??[],`message-batches-2024-09-24`].toString(),Accept:`application/binary`},n?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((e,t)=>Dn.fromResponse(t.response,t.controller))}},kn={"claude-1.3":`November 6th, 2024`,"claude-1.3-100k":`November 6th, 2024`,"claude-instant-1.1":`November 6th, 2024`,"claude-instant-1.1-100k":`November 6th, 2024`,"claude-instant-1.2":`November 6th, 2024`,"claude-3-sonnet-20240229":`July 21st, 2025`,"claude-3-opus-20240229":`January 5th, 2026`,"claude-2.1":`July 21st, 2025`,"claude-2.0":`July 21st, 2025`,"claude-3-7-sonnet-latest":`February 19th, 2026`,"claude-3-7-sonnet-20250219":`February 19th, 2026`},An=[`claude-mythos-preview`,`claude-opus-4-6`],jn=class extends A{constructor(){super(...arguments),this.batches=new On(this._client)}create(e,t){let n=Mn(e),{betas:r,...i}=n;i.model in kn&&console.warn(`The model '${i.model}' is deprecated and will reach end-of-life on ${kn[i.model]}\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),An.includes(i.model)&&i.thinking&&i.thinking.type===`enabled`&&console.warn(`Using Claude with ${i.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let a=this._client._options.timeout;if(!i.stream&&a==null){let e=zt[i.model]??void 0;a=this._client.calculateNonstreamingTimeout(i.max_tokens,e)}let o=kt(i.tools,i.messages);return this._client.post(`/v1/messages?beta=true`,{body:i,timeout:a??6e5,...t,headers:j([{...r?.toString()==null?void 0:{"anthropic-beta":r?.toString()}},o,t?.headers]),stream:n.stream??!1})}parse(e,t){return t={...t,headers:j([{"anthropic-beta":[...e.betas??[],`structured-outputs-2025-12-15`].toString()},t?.headers])},this.create(e,t).then(t=>Ht(t,e,{logger:this._client.logger??console}))}stream(e,t){return _n.createMessage(this,e,t)}countTokens(e,t){let{betas:n,...r}=Mn(e);return this._client.post(`/v1/messages/count_tokens?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`token-counting-2024-11-01`].toString()},t?.headers])})}toolRunner(e,t){return new Tn(this._client,e,t)}};function Mn(e){if(!e.output_format)return e;if(e.output_config?.format)throw new _(`Both output_format and output_config.format were provided. Please use only output_config.format (output_format is deprecated).`);let{output_format:t,...n}=e;return{...n,output_config:{...e.output_config,format:t}}}jn.Batches=On,jn.BetaToolRunner=Tn,jn.ToolError=vn;var Nn=class extends A{list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/sessions/${e}/events?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}send(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/sessions/${e}/events?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}stream(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/sessions/${e}/events/stream?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers]),stream:!0})}},Pn=class extends A{retrieve(e,t,n){let{session_id:r,betas:i}=t;return this._client.get(M`/v1/sessions/${r}/resources/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{session_id:r,betas:i,...a}=t;return this._client.post(M`/v1/sessions/${r}/resources/${e}?beta=true`,{body:a,...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/sessions/${e}/resources?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}delete(e,t,n){let{session_id:r,betas:i}=t;return this._client.delete(M`/v1/sessions/${r}/resources/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}add(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/sessions/${e}/resources?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}},Fn=class extends A{constructor(){super(...arguments),this.events=new Nn(this._client),this.resources=new Pn(this._client)}create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/sessions?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/sessions/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/sessions/${e}?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/sessions?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/sessions/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}archive(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/sessions/${e}/archive?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}};Fn.Events=Nn,Fn.Resources=Pn;var In=class extends A{create(e,t={},n){let{betas:r,...i}=t??{};return this._client.post(M`/v1/skills/${e}/versions?beta=true`,ut({body:i,...n,headers:j([{"anthropic-beta":[...r??[],`skills-2025-10-02`].toString()},n?.headers])},this._client))}retrieve(e,t,n){let{skill_id:r,betas:i}=t;return this._client.get(M`/v1/skills/${r}/versions/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`skills-2025-10-02`].toString()},n?.headers])})}list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/skills/${e}/versions?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`skills-2025-10-02`].toString()},n?.headers])})}delete(e,t,n){let{skill_id:r,betas:i}=t;return this._client.delete(M`/v1/skills/${r}/versions/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`skills-2025-10-02`].toString()},n?.headers])})}},Ln=class extends A{constructor(){super(...arguments),this.versions=new In(this._client)}create(e={},t){let{betas:n,...r}=e??{};return this._client.post(`/v1/skills?beta=true`,ut({body:r,...t,headers:j([{"anthropic-beta":[...n??[],`skills-2025-10-02`].toString()},t?.headers])},this._client,!1))}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/skills/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`skills-2025-10-02`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/skills?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`skills-2025-10-02`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/skills/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`skills-2025-10-02`].toString()},n?.headers])})}};Ln.Versions=In;var Rn=class extends A{create(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/vaults/${e}/credentials?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}retrieve(e,t,n){let{vault_id:r,betas:i}=t;return this._client.get(M`/v1/vaults/${r}/credentials/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{vault_id:r,betas:i,...a}=t;return this._client.post(M`/v1/vaults/${r}/credentials/${e}?beta=true`,{body:a,...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e,t={},n){let{betas:r,...i}=t??{};return this._client.getAPIList(M`/v1/vaults/${e}/credentials?beta=true`,O,{query:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}delete(e,t,n){let{vault_id:r,betas:i}=t;return this._client.delete(M`/v1/vaults/${r}/credentials/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}archive(e,t,n){let{vault_id:r,betas:i}=t;return this._client.post(M`/v1/vaults/${r}/credentials/${e}/archive?beta=true`,{...n,headers:j([{"anthropic-beta":[...i??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}},zn=class extends A{constructor(){super(...arguments),this.credentials=new Rn(this._client)}create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/vaults?beta=true`,{body:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/vaults/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}update(e,t,n){let{betas:r,...i}=t;return this._client.post(M`/v1/vaults/${e}?beta=true`,{body:i,...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/vaults?beta=true`,O,{query:r,...t,headers:j([{"anthropic-beta":[...n??[],`managed-agents-2026-04-01`].toString()},t?.headers])})}delete(e,t={},n){let{betas:r}=t??{};return this._client.delete(M`/v1/vaults/${e}?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}archive(e,t={},n){let{betas:r}=t??{};return this._client.post(M`/v1/vaults/${e}/archive?beta=true`,{...n,headers:j([{"anthropic-beta":[...r??[],`managed-agents-2026-04-01`].toString()},n?.headers])})}};zn.Credentials=Rn;var K=class extends A{constructor(){super(...arguments),this.models=new Mt(this._client),this.messages=new jn(this._client),this.agents=new Ft(this._client),this.environments=new Et(this._client),this.sessions=new Fn(this._client),this.vaults=new zn(this._client),this.memoryStores=new Rt(this._client),this.files=new jt(this._client),this.skills=new Ln(this._client),this.userProfiles=new Nt(this._client)}};K.Models=Mt,K.Messages=jn,K.Agents=Ft,K.Environments=Et,K.Sessions=Fn,K.Vaults=zn,K.MemoryStores=Rt,K.Files=jt,K.Skills=Ln,K.UserProfiles=Nt;var Bn=class extends A{create(e,t){let{betas:n,...r}=e;return this._client.post(`/v1/complete`,{body:r,timeout:this._client._options.timeout??6e5,...t,headers:j([{...n?.toString()==null?void 0:{"anthropic-beta":n?.toString()}},t?.headers]),stream:e.stream??!1})}};function Vn(e){return e?.output_config?.format}function Hn(e,t,n){let r=Vn(t);return!t||!(`parse`in(r??{}))?{...e,content:e.content.map(e=>e.type===`text`?Object.defineProperty({...e},`parsed_output`,{value:null,enumerable:!1}):e),parsed_output:null}:Un(e,t,n)}function Un(e,t,n){let r=null,i=e.content.map(e=>{if(e.type===`text`){let n=Wn(t,e.text);return r===null&&(r=n),Object.defineProperty({...e},`parsed_output`,{value:n,enumerable:!1})}return e});return{...e,content:i,parsed_output:r}}function Wn(e,t){let n=Vn(e);if(n?.type!==`json_schema`)return null;try{return`parse`in n?n.parse(t):JSON.parse(t)}catch(e){throw new _(`Failed to parse structured output: ${e}`)}}var q,J,Y,Gn,Kn,qn,Jn,Yn,Xn,X,Zn,Qn,$n,Z,er,tr,nr,rr,ir,ar,or,sr,cr,lr,ur=`__json_buf`;function dr(e){return e.type===`tool_use`||e.type===`server_tool_use`}var fr=class e{constructor(e,t){q.add(this),this.messages=[],this.receivedMessages=[],J.set(this,void 0),Y.set(this,null),this.controller=new AbortController,Gn.set(this,void 0),Kn.set(this,()=>{}),qn.set(this,()=>{}),Jn.set(this,void 0),Yn.set(this,()=>{}),Xn.set(this,()=>{}),X.set(this,{}),Zn.set(this,!1),Qn.set(this,!1),$n.set(this,!1),Z.set(this,!1),er.set(this,void 0),tr.set(this,void 0),nr.set(this,void 0),ar.set(this,e=>{if(p(this,Qn,!0,`f`),h(e)&&(e=new y),e instanceof y)return p(this,$n,!0,`f`),this._emit(`abort`,e);if(e instanceof _)return this._emit(`error`,e);if(e instanceof Error){let t=new _(e.message);return t.cause=e,this._emit(`error`,t)}return this._emit(`error`,new _(String(e)))}),p(this,Gn,new Promise((e,t)=>{p(this,Kn,e,`f`),p(this,qn,t,`f`)}),`f`),p(this,Jn,new Promise((e,t)=>{p(this,Yn,e,`f`),p(this,Xn,t,`f`)}),`f`),m(this,Gn,`f`).catch(()=>{}),m(this,Jn,`f`).catch(()=>{}),p(this,Y,e,`f`),p(this,nr,t?.logger??console,`f`)}get response(){return m(this,er,`f`)}get request_id(){return m(this,tr,`f`)}async withResponse(){p(this,Z,!0,`f`);let e=await m(this,Gn,`f`);if(!e)throw Error("Could not resolve a `Response` object");return{data:this,response:e,request_id:e.headers.get(`request-id`)}}static fromReadableStream(t){let n=new e(null);return n._run(()=>n._fromReadableStream(t)),n}static createMessage(t,n,r,{logger:i}={}){let a=new e(n,{logger:i});for(let e of n.messages)a._addMessageParam(e);return p(a,Y,{...n,stream:!0},`f`),a._run(()=>a._createMessage(t,{...n,stream:!0},{...r,headers:{...r?.headers,"X-Stainless-Helper-Method":`stream`}})),a}_run(e){e().then(()=>{this._emitFinal(),this._emit(`end`)},m(this,ar,`f`))}_addMessageParam(e){this.messages.push(e)}_addMessage(e,t=!0){this.receivedMessages.push(e),t&&this._emit(`message`,e)}async _createMessage(e,t,n){let r=n?.signal,i;r&&(r.aborted&&this.controller.abort(),i=this.controller.abort.bind(this.controller),r.addEventListener(`abort`,i));try{m(this,q,`m`,or).call(this);let{response:r,data:i}=await e.create({...t,stream:!0},{...n,signal:this.controller.signal}).withResponse();this._connected(r);for await(let e of i)m(this,q,`m`,sr).call(this,e);if(i.controller.signal?.aborted)throw new y;m(this,q,`m`,cr).call(this)}finally{r&&i&&r.removeEventListener(`abort`,i)}}_connected(e){this.ended||(p(this,er,e,`f`),p(this,tr,e?.headers.get(`request-id`),`f`),m(this,Kn,`f`).call(this,e),this._emit(`connect`))}get ended(){return m(this,Zn,`f`)}get errored(){return m(this,Qn,`f`)}get aborted(){return m(this,$n,`f`)}abort(){this.controller.abort()}on(e,t){return(m(this,X,`f`)[e]||(m(this,X,`f`)[e]=[])).push({listener:t}),this}off(e,t){let n=m(this,X,`f`)[e];if(!n)return this;let r=n.findIndex(e=>e.listener===t);return r>=0&&n.splice(r,1),this}once(e,t){return(m(this,X,`f`)[e]||(m(this,X,`f`)[e]=[])).push({listener:t,once:!0}),this}emitted(e){return new Promise((t,n)=>{p(this,Z,!0,`f`),e!==`error`&&this.once(`error`,n),this.once(e,t)})}async done(){p(this,Z,!0,`f`),await m(this,Jn,`f`)}get currentMessage(){return m(this,J,`f`)}async finalMessage(){return await this.done(),m(this,q,`m`,rr).call(this)}async finalText(){return await this.done(),m(this,q,`m`,ir).call(this)}_emit(e,...t){if(m(this,Zn,`f`))return;e===`end`&&(p(this,Zn,!0,`f`),m(this,Yn,`f`).call(this));let n=m(this,X,`f`)[e];if(n&&(m(this,X,`f`)[e]=n.filter(e=>!e.once),n.forEach(({listener:e})=>e(...t))),e===`abort`){let e=t[0];!m(this,Z,`f`)&&!n?.length&&Promise.reject(e),m(this,qn,`f`).call(this,e),m(this,Xn,`f`).call(this,e),this._emit(`end`);return}if(e===`error`){let e=t[0];!m(this,Z,`f`)&&!n?.length&&Promise.reject(e),m(this,qn,`f`).call(this,e),m(this,Xn,`f`).call(this,e),this._emit(`end`)}}_emitFinal(){this.receivedMessages.at(-1)&&this._emit(`finalMessage`,m(this,q,`m`,rr).call(this))}async _fromReadableStream(e,t){let n=t?.signal,r;n&&(n.aborted&&this.controller.abort(),r=this.controller.abort.bind(this.controller),n.addEventListener(`abort`,r));try{m(this,q,`m`,or).call(this),this._connected(null);let t=Xe.fromReadableStream(e,this.controller);for await(let e of t)m(this,q,`m`,sr).call(this,e);if(t.controller.signal?.aborted)throw new y;m(this,q,`m`,cr).call(this)}finally{n&&r&&n.removeEventListener(`abort`,r)}}[(J=new WeakMap,Y=new WeakMap,Gn=new WeakMap,Kn=new WeakMap,qn=new WeakMap,Jn=new WeakMap,Yn=new WeakMap,Xn=new WeakMap,X=new WeakMap,Zn=new WeakMap,Qn=new WeakMap,$n=new WeakMap,Z=new WeakMap,er=new WeakMap,tr=new WeakMap,nr=new WeakMap,ar=new WeakMap,q=new WeakSet,rr=function(){if(this.receivedMessages.length===0)throw new _(`stream ended without producing a Message with role=assistant`);return this.receivedMessages.at(-1)},ir=function(){if(this.receivedMessages.length===0)throw new _(`stream ended without producing a Message with role=assistant`);let e=this.receivedMessages.at(-1).content.filter(e=>e.type===`text`).map(e=>e.text);if(e.length===0)throw new _(`stream ended without producing a content block with type=text`);return e.join(` `)},or=function(){this.ended||p(this,J,void 0,`f`)},sr=function(e){if(this.ended)return;let t=m(this,q,`m`,lr).call(this,e);switch(this._emit(`streamEvent`,e,t),e.type){case`content_block_delta`:{let n=t.content.at(-1);switch(e.delta.type){case`text_delta`:n.type===`text`&&this._emit(`text`,e.delta.text,n.text||``);break;case`citations_delta`:n.type===`text`&&this._emit(`citation`,e.delta.citation,n.citations??[]);break;case`input_json_delta`:dr(n)&&n.input&&this._emit(`inputJson`,e.delta.partial_json,n.input);break;case`thinking_delta`:n.type===`thinking`&&this._emit(`thinking`,e.delta.thinking,n.thinking);break;case`signature_delta`:n.type===`thinking`&&this._emit(`signature`,n.signature);break;default:e.delta}break}case`message_stop`:this._addMessageParam(t),this._addMessage(Hn(t,m(this,Y,`f`),{logger:m(this,nr,`f`)}),!0);break;case`content_block_stop`:this._emit(`contentBlock`,t.content.at(-1));break;case`message_start`:p(this,J,t,`f`);break;case`content_block_start`:case`message_delta`:break}},cr=function(){if(this.ended)throw new _(`stream has ended, this shouldn't happen`);let e=m(this,J,`f`);if(!e)throw new _(`request ended without sending any chunks`);return p(this,J,void 0,`f`),Hn(e,m(this,Y,`f`),{logger:m(this,nr,`f`)})},lr=function(e){let t=m(this,J,`f`);if(e.type===`message_start`){if(t)throw new _(`Unexpected event order, got ${e.type} before receiving "message_stop"`);return e.message}if(!t)throw new _(`Unexpected event order, got ${e.type} before "message_start"`);switch(e.type){case`message_stop`:return t;case`message_delta`:return t.stop_reason=e.delta.stop_reason,t.stop_sequence=e.delta.stop_sequence,t.usage.output_tokens=e.usage.output_tokens,e.usage.input_tokens!=null&&(t.usage.input_tokens=e.usage.input_tokens),e.usage.cache_creation_input_tokens!=null&&(t.usage.cache_creation_input_tokens=e.usage.cache_creation_input_tokens),e.usage.cache_read_input_tokens!=null&&(t.usage.cache_read_input_tokens=e.usage.cache_read_input_tokens),e.usage.server_tool_use!=null&&(t.usage.server_tool_use=e.usage.server_tool_use),t;case`content_block_start`:return t.content.push({...e.content_block}),t;case`content_block_delta`:{let n=t.content.at(e.index);switch(e.delta.type){case`text_delta`:n?.type===`text`&&(t.content[e.index]={...n,text:(n.text||``)+e.delta.text});break;case`citations_delta`:n?.type===`text`&&(t.content[e.index]={...n,citations:[...n.citations??[],e.delta.citation]});break;case`input_json_delta`:if(n&&dr(n)){let r=n[ur]||``;r+=e.delta.partial_json;let i={...n};Object.defineProperty(i,ur,{value:r,enumerable:!1,writable:!0}),r&&(i.input=Jt(r)),t.content[e.index]=i}break;case`thinking_delta`:n?.type===`thinking`&&(t.content[e.index]={...n,thinking:n.thinking+e.delta.thinking});break;case`signature_delta`:n?.type===`thinking`&&(t.content[e.index]={...n,signature:e.delta.signature});break;default:e.delta}return t}case`content_block_stop`:return t}},Symbol.asyncIterator)](){let e=[],t=[],n=!1;return this.on(`streamEvent`,n=>{let r=t.shift();r?r.resolve(n):e.push(n)}),this.on(`end`,()=>{n=!0;for(let e of t)e.resolve(void 0);t.length=0}),this.on(`abort`,e=>{n=!0;for(let n of t)n.reject(e);t.length=0}),this.on(`error`,e=>{n=!0;for(let n of t)n.reject(e);t.length=0}),{next:async()=>e.length?{value:e.shift(),done:!1}:n?{value:void 0,done:!0}:new Promise((e,n)=>t.push({resolve:e,reject:n})).then(e=>e?{value:e,done:!1}:{value:void 0,done:!0}),return:async()=>(this.abort(),{value:void 0,done:!0})}}toReadableStream(){return new Xe(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}},pr=class extends A{create(e,t){return this._client.post(`/v1/messages/batches`,{body:e,...t})}retrieve(e,t){return this._client.get(M`/v1/messages/batches/${e}`,t)}list(e={},t){return this._client.getAPIList(`/v1/messages/batches`,D,{query:e,...t})}delete(e,t){return this._client.delete(M`/v1/messages/batches/${e}`,t)}cancel(e,t){return this._client.post(M`/v1/messages/batches/${e}/cancel`,t)}async results(e,t){let n=await this.retrieve(e);if(!n.results_url)throw new _(`No batch \`results_url\`; Has it finished processing? ${n.processing_status} - ${n.id}`);return this._client.get(n.results_url,{...t,headers:j([{Accept:`application/binary`},t?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((e,t)=>Dn.fromResponse(t.response,t.controller))}},mr=class extends A{constructor(){super(...arguments),this.batches=new pr(this._client)}create(e,t){e.model in hr&&console.warn(`The model '${e.model}' is deprecated and will reach end-of-life on ${hr[e.model]}\nPlease migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`),gr.includes(e.model)&&e.thinking&&e.thinking.type===`enabled`&&console.warn(`Using Claude with ${e.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let n=this._client._options.timeout;if(!e.stream&&n==null){let t=zt[e.model]??void 0;n=this._client.calculateNonstreamingTimeout(e.max_tokens,t)}let r=kt(e.tools,e.messages);return this._client.post(`/v1/messages`,{body:e,timeout:n??6e5,...t,headers:j([r,t?.headers]),stream:e.stream??!1})}parse(e,t){return this.create(e,t).then(t=>Un(t,e,{logger:this._client.logger??console}))}stream(e,t){return fr.createMessage(this,e,t,{logger:this._client.logger??console})}countTokens(e,t){return this._client.post(`/v1/messages/count_tokens`,{body:e,...t})}},hr={"claude-1.3":`November 6th, 2024`,"claude-1.3-100k":`November 6th, 2024`,"claude-instant-1.1":`November 6th, 2024`,"claude-instant-1.1-100k":`November 6th, 2024`,"claude-instant-1.2":`November 6th, 2024`,"claude-3-sonnet-20240229":`July 21st, 2025`,"claude-3-opus-20240229":`January 5th, 2026`,"claude-2.1":`July 21st, 2025`,"claude-2.0":`July 21st, 2025`,"claude-3-7-sonnet-latest":`February 19th, 2026`,"claude-3-7-sonnet-20250219":`February 19th, 2026`,"claude-3-5-haiku-latest":`February 19th, 2026`,"claude-3-5-haiku-20241022":`February 19th, 2026`,"claude-opus-4-0":`June 15th, 2026`,"claude-opus-4-20250514":`June 15th, 2026`,"claude-sonnet-4-0":`June 15th, 2026`,"claude-sonnet-4-20250514":`June 15th, 2026`},gr=[`claude-mythos-preview`,`claude-opus-4-6`];mr.Batches=pr;var _r=class extends A{retrieve(e,t={},n){let{betas:r}=t??{};return this._client.get(M`/v1/models/${e}`,{...n,headers:j([{...r?.toString()==null?void 0:{"anthropic-beta":r?.toString()}},n?.headers])})}list(e={},t){let{betas:n,...r}=e??{};return this._client.getAPIList(`/v1/models`,D,{query:r,...t,headers:j([{...n?.toString()==null?void 0:{"anthropic-beta":n?.toString()}},t?.headers])})}},vr=e=>{if(globalThis.process!==void 0)return{}?.[e]?.trim()||void 0;if(globalThis.Deno!==void 0)return globalThis.Deno.env?.get?.(e)?.trim()||void 0},yr,br,xr,Sr,Cr=`\\n\\nHuman:`,wr=`\\n\\nAssistant:`,Q=class{constructor({baseURL:e=vr(`ANTHROPIC_BASE_URL`),apiKey:t=vr(`ANTHROPIC_API_KEY`)??null,authToken:n=vr(`ANTHROPIC_AUTH_TOKEN`)??null,...r}={}){yr.add(this),xr.set(this,void 0);let i={apiKey:t,authToken:n,...r,baseURL:e||`https://api.anthropic.com`};if(!i.dangerouslyAllowBrowser&&xe())throw new _(`It looks like you're running in a browser-like environment.
29
+
30
+ This is disabled by default, as it risks exposing your secret API credentials to attackers.
31
+ If you understand the risks and have appropriate mitigations in place,
32
+ you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
33
+
34
+ new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
35
+ `);this.baseURL=i.baseURL,this.timeout=i.timeout??br.DEFAULT_TIMEOUT,this.logger=i.logger??console;let a=`warn`;this.logLevel=a,this.logLevel=Ge(i.logLevel,`ClientOptions.logLevel`,this)??Ge(vr(`ANTHROPIC_LOG`),`process.env['ANTHROPIC_LOG']`,this)??a,this.fetchOptions=i.fetchOptions,this.maxRetries=i.maxRetries??2,this.fetch=i.fetch??ke(),p(this,xr,Pe,`f`),this._options=i,this.apiKey=typeof t==`string`?t:null,this.authToken=n}withOptions(e){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,authToken:this.authToken,...e})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:e,nulls:t}){if(!(e.get(`x-api-key`)||e.get(`authorization`))&&!(this.apiKey&&e.get(`x-api-key`))&&!t.has(`x-api-key`)&&!(this.authToken&&e.get(`authorization`))&&!t.has(`authorization`))throw Error(`Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted`)}async authHeaders(e){return j([await this.apiKeyAuth(e),await this.bearerAuth(e)])}async apiKeyAuth(e){if(this.apiKey!=null)return j([{"X-Api-Key":this.apiKey}])}async bearerAuth(e){if(this.authToken!=null)return j([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery(e){return Fe(e)}getUserAgent(){return`${this.constructor.name}/JS ${b}`}defaultIdempotencyKey(){return`stainless-node-retry-${ee()}`}makeStatusError(e,t,n,r){return v.generate(e,t,n,r)}buildURL(e,t,n){let r=!m(this,yr,`m`,Sr).call(this)&&n||this.baseURL,i=fe(e)?new URL(e):new URL(r+(r.endsWith(`/`)&&e.startsWith(`/`)?e.slice(1):e)),a=this.defaultQuery(),o=Object.fromEntries(i.searchParams);return(!ge(a)||!ge(o))&&(t={...o,...a,...t}),typeof t==`object`&&t&&!Array.isArray(t)&&(i.search=this.stringifyQuery(t)),i.toString()}_calculateNonstreamingTimeout(e){if(3600*e/128e3>600)throw new _(`Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details`);return 600*1e3}async prepareOptions(e){}async prepareRequest(e,{url:t,options:n}){}get(e,t){return this.methodRequest(`get`,e,t)}post(e,t){return this.methodRequest(`post`,e,t)}patch(e,t){return this.methodRequest(`patch`,e,t)}put(e,t){return this.methodRequest(`put`,e,t)}delete(e,t){return this.methodRequest(`delete`,e,t)}methodRequest(e,t,n){return this.request(Promise.resolve(n).then(n=>({method:e,path:t,...n})))}request(e,t=null){return new rt(this,this.makeRequest(e,t,void 0))}async makeRequest(e,t,n){let r=await e,i=r.maxRetries??this.maxRetries;t??=i,await this.prepareOptions(r);let{req:a,url:o,timeout:s}=await this.buildRequest(r,{retryCount:i-t});await this.prepareRequest(a,{url:o,options:r});let c=`log_`+(Math.random()*(1<<24)|0).toString(16).padStart(6,`0`),l=n===void 0?``:`, retryOf: ${n}`,u=Date.now();if(w(this).debug(`[${c}] sending request`,T({retryOfRequestLogID:n,method:r.method,url:o,options:r,headers:a.headers})),r.signal?.aborted)throw new y;let d=new AbortController,f=await this.fetchWithTimeout(o,a,s,d).catch(g),p=Date.now();if(f instanceof globalThis.Error){let e=`retrying, ${t} attempts remaining`;if(r.signal?.aborted)throw new y;let i=h(f)||/timed? ?out/i.test(String(f)+(`cause`in f?String(f.cause):``));if(t)return w(this).info(`[${c}] connection ${i?`timed out`:`failed`} - ${e}`),w(this).debug(`[${c}] connection ${i?`timed out`:`failed`} (${e})`,T({retryOfRequestLogID:n,url:o,durationMs:p-u,message:f.message})),this.retryRequest(r,t,n??c);throw w(this).info(`[${c}] connection ${i?`timed out`:`failed`} - error; no more retries left`),w(this).debug(`[${c}] connection ${i?`timed out`:`failed`} (error; no more retries left)`,T({retryOfRequestLogID:n,url:o,durationMs:p-u,message:f.message})),i?new ne:new te({cause:f})}let m=`[${c}${l}${[...f.headers.entries()].filter(([e])=>e===`request-id`).map(([e,t])=>`, `+e+`: `+JSON.stringify(t)).join(``)}] ${a.method} ${o} ${f.ok?`succeeded`:`failed`} with status ${f.status} in ${p-u}ms`;if(!f.ok){let e=await this.shouldRetry(f);if(t&&e){let e=`retrying, ${t} attempts remaining`;return await Ne(f.body),w(this).info(`${m} - ${e}`),w(this).debug(`[${c}] response error (${e})`,T({retryOfRequestLogID:n,url:f.url,status:f.status,headers:f.headers,durationMs:p-u})),this.retryRequest(r,t,n??c,f.headers)}let i=e?`error; no more retries left`:`error; not retryable`;w(this).info(`${m} - ${i}`);let a=await f.text().catch(e=>g(e).message),o=ye(a),s=o?void 0:a;throw w(this).debug(`[${c}] response error (${i})`,T({retryOfRequestLogID:n,url:f.url,status:f.status,headers:f.headers,message:s,durationMs:Date.now()-u})),this.makeStatusError(f.status,o,s,f.headers)}return w(this).info(m),w(this).debug(`[${c}] response start`,T({retryOfRequestLogID:n,url:f.url,status:f.status,headers:f.headers,durationMs:p-u})),{response:f,options:r,controller:d,requestLogID:c,retryOfRequestLogID:n,startTime:u}}getAPIList(e,t,n){return this.requestAPIList(t,n&&`then`in n?n.then(t=>({method:`get`,path:e,...t})):{method:`get`,path:e,...n})}requestAPIList(e,t){let n=this.makeRequest(t,null,void 0);return new ot(this,n,e)}async fetchWithTimeout(e,t,n,r){let{signal:i,method:a,...o}=t||{},s=this._makeAbort(r);i&&i.addEventListener(`abort`,s,{once:!0});let c=setTimeout(s,n),l=globalThis.ReadableStream&&o.body instanceof globalThis.ReadableStream||typeof o.body==`object`&&o.body!==null&&Symbol.asyncIterator in o.body,u={signal:r.signal,...l?{duplex:`half`}:{},method:`GET`,...o};a&&(u.method=a.toUpperCase());try{return await this.fetch.call(void 0,e,u)}finally{clearTimeout(c)}}async shouldRetry(e){let t=e.headers.get(`x-should-retry`);return t===`true`?!0:t===`false`?!1:e.status===408||e.status===409||e.status===429||e.status>=500}async retryRequest(e,t,n,r){let i,a=r?.get(`retry-after-ms`);if(a){let e=parseFloat(a);Number.isNaN(e)||(i=e)}let o=r?.get(`retry-after`);if(o&&!i){let e=parseFloat(o);i=Number.isNaN(e)?Date.parse(o)-Date.now():e*1e3}if(i===void 0){let n=e.maxRetries??this.maxRetries;i=this.calculateDefaultRetryTimeoutMillis(t,n)}return await be(i),this.makeRequest(e,t-1,n)}calculateDefaultRetryTimeoutMillis(e,t){let n=t-e;return Math.min(.5*2**n,8)*(1-Math.random()*.25)*1e3}calculateNonstreamingTimeout(e,t){let n=600*1e3;if(36e5*e/128e3>n||t!=null&&e>t)throw new _(`Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details`);return n}async buildRequest(e,{retryCount:t=0}={}){let n={...e},{method:r,path:i,query:a,defaultBaseURL:o}=n,s=this.buildURL(i,a,o);`timeout`in n&&ve(`timeout`,n.timeout),n.timeout=n.timeout??this.timeout;let{bodyHeaders:c,body:l}=this.buildBody({options:n});return{req:{method:r,headers:await this.buildHeaders({options:e,method:r,bodyHeaders:c,retryCount:t}),...n.signal&&{signal:n.signal},...globalThis.ReadableStream&&l instanceof globalThis.ReadableStream&&{duplex:`half`},...l&&{body:l},...this.fetchOptions??{},...n.fetchOptions??{}},url:s,timeout:n.timeout}}async buildHeaders({options:e,method:t,bodyHeaders:n,retryCount:r}){let i={};this.idempotencyHeader&&t!==`get`&&(e.idempotencyKey||=this.defaultIdempotencyKey(),i[this.idempotencyHeader]=e.idempotencyKey);let a=j([i,{Accept:`application/json`,"User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String(r),...e.timeout?{"X-Stainless-Timeout":String(Math.trunc(e.timeout/1e3))}:{},...Oe(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":`true`}:void 0,"anthropic-version":`2023-06-01`},await this.authHeaders(e),this._options.defaultHeaders,n,e.headers]);return this.validateHeaders(a),a.values}_makeAbort(e){return()=>e.abort()}buildBody({options:{body:e,headers:t}}){if(!e)return{bodyHeaders:void 0,body:void 0};let n=j([t]);return ArrayBuffer.isView(e)||e instanceof ArrayBuffer||e instanceof DataView||typeof e==`string`&&n.values.has(`content-type`)||globalThis.Blob&&e instanceof globalThis.Blob||e instanceof FormData||e instanceof URLSearchParams||globalThis.ReadableStream&&e instanceof globalThis.ReadableStream?{bodyHeaders:void 0,body:e}:typeof e==`object`&&(Symbol.asyncIterator in e||Symbol.iterator in e&&`next`in e&&typeof e.next==`function`)?{bodyHeaders:void 0,body:je(e)}:typeof e==`object`&&n.values.get(`content-type`)===`application/x-www-form-urlencoded`?{bodyHeaders:{"content-type":`application/x-www-form-urlencoded`},body:this.stringifyQuery(e)}:m(this,xr,`f`).call(this,{body:e,headers:n})}};br=Q,xr=new WeakMap,yr=new WeakSet,Sr=function(){return this.baseURL!==`https://api.anthropic.com`},Q.Anthropic=br,Q.HUMAN_PROMPT=Cr,Q.AI_PROMPT=wr,Q.DEFAULT_TIMEOUT=6e5,Q.AnthropicError=_,Q.APIError=v,Q.APIConnectionError=te,Q.APIConnectionTimeoutError=ne,Q.APIUserAbortError=y,Q.NotFoundError=oe,Q.ConflictError=se,Q.RateLimitError=le,Q.BadRequestError=re,Q.AuthenticationError=ie,Q.InternalServerError=ue,Q.PermissionDeniedError=ae,Q.UnprocessableEntityError=ce,Q.toFile=yt;var $=class extends Q{constructor(){super(...arguments),this.completions=new Bn(this),this.messages=new mr(this),this.models=new _r(this),this.beta=new K(this)}};$.Completions=Bn,$.Messages=mr,$.Models=_r,$.Beta=K;function Tr(e){return e||(typeof process<`u`&&{}.PI_CACHE_RETENTION===`long`?`long`:`short`)}function Er(e,t){let n=Tr(t);if(n===`none`)return{retention:n};let r=n===`long`&&Pr(e).supportsLongCacheRetention?`1h`:void 0;return{retention:n,cacheControl:{type:`ephemeral`,...r&&{ttl:r}}}}var Dr=`2.1.75`,Or=new Map([`Read`,`Write`,`Edit`,`Bash`,`Grep`,`Glob`,`AskUserQuestion`,`EnterPlanMode`,`ExitPlanMode`,`KillShell`,`NotebookEdit`,`Skill`,`Task`,`TaskOutput`,`TodoWrite`,`WebFetch`,`WebSearch`].map(e=>[e.toLowerCase(),e])),kr=e=>Or.get(e.toLowerCase())??e,Ar=(e,t)=>{if(t&&t.length>0){let n=e.toLowerCase(),r=t.find(e=>e.name.toLowerCase()===n);if(r)return r.name}return e};function jr(e){if(!e.some(e=>e.type===`image`))return o(e.map(e=>e.text).join(`
36
+ `));let t=e.map(e=>e.type===`text`?{type:`text`,text:o(e.text)}:{type:`image`,source:{type:`base64`,media_type:e.mimeType,data:e.data}});return t.some(e=>e.type===`text`)||t.unshift({type:`text`,text:`(see attached image)`}),t}var Mr=`fine-grained-tool-streaming-2025-05-14`,Nr=`interleaved-thinking-2025-05-14`;function Pr(e){let t=e.provider===`fireworks`,n=e.provider===`cloudflare-ai-gateway`&&e.baseUrl.includes(`anthropic`);return{supportsEagerToolInputStreaming:e.compat?.supportsEagerToolInputStreaming??!t,supportsLongCacheRetention:e.compat?.supportsLongCacheRetention??!t,sendSessionAffinityHeaders:e.compat?.sendSessionAffinityHeaders??!!(t||n),supportsCacheControlOnTools:e.compat?.supportsCacheControlOnTools??!t}}function Fr(...e){let t={};for(let n of e)n&&Object.assign(t,n);return t}var Ir=new Set([`message_start`,`message_delta`,`message_stop`,`content_block_start`,`content_block_delta`,`content_block_stop`]);function Lr(e){if(!e.event&&e.data.length===0)return null;let t={event:e.event,data:e.data.join(`
37
+ `),raw:[...e.raw]};return e.event=null,e.data=[],e.raw=[],t}function Rr(e,t){if(e===``)return Lr(t);if(t.raw.push(e),e.startsWith(`:`))return null;let n=e.indexOf(`:`),r=n===-1?e:e.slice(0,n),i=n===-1?``:e.slice(n+1);return i.startsWith(` `)&&(i=i.slice(1)),r===`event`?t.event=i:r===`data`&&t.data.push(i),null}function zr(e){let t=e.indexOf(`\r`),n=e.indexOf(`
38
+ `);return t===-1?n:n===-1?t:Math.min(t,n)}function Br(e){let t=zr(e);if(t===-1)return null;let n=t+1;return e[t]===`\r`&&e[n]===`
39
+ `&&(n+=1),{line:e.slice(0,t),rest:e.slice(n)}}async function*Vr(e,t){let n=e.getReader(),r=new TextDecoder,i={event:null,data:[],raw:[]},a=``;try{for(;;){if(t?.aborted)throw Error(`Request was aborted`);let{value:e,done:o}=await n.read();if(o)break;a+=r.decode(e,{stream:!0});let s=Br(a);for(;s;){a=s.rest;let e=Rr(s.line,i);e&&(yield e),s=Br(a)}}a+=r.decode();let e=Br(a);for(;e;){a=e.rest;let t=Rr(e.line,i);t&&(yield t),e=Br(a)}if(a.length>0){let e=Rr(a,i);e&&(yield e)}let o=Lr(i);o&&(yield o)}finally{n.releaseLock()}}async function*Hr(e,t){if(!e.body)throw Error(`Attempted to iterate over an Anthropic response with no body`);let n=!1,i=!1;for await(let a of Vr(e.body,t)){if(a.event===`error`)throw Error(a.data);if(Ir.has(a.event??``))try{let e=r(a.data);e.type===`message_start`?n=!0:e.type===`message_stop`&&(i=!0),yield e}catch(e){let t=e instanceof Error?e.message:String(e);throw Error(`Could not parse Anthropic SSE event ${a.event}: ${t}; data=${a.data}; raw=${a.raw.join(`\\n`)}`)}}if(n&&!i)throw Error(`Anthropic stream ended before message_stop`)}var Ur=(r,o,s)=>{let u=new e;return(async()=>{let e={role:`assistant`,content:[],api:r.api,provider:r.provider,model:r.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let d,f;if(s?.client)d=s.client,f=!1;else{let e=s?.apiKey??t(r.provider)??``,n;if(r.provider===`github-copilot`){let e=c(o.messages);n=l({messages:o.messages,hasImages:e})}let i=(s?.cacheRetention??Tr())===`none`?void 0:s?.sessionId,a=qr(r,e,s?.interleavedThinking??!0,Zr(r,o),s?.headers,n,i);d=a.client,f=a.isOAuthToken}let p=Jr(r,o,f,s),m=await s?.onPayload?.(p,r);m!==void 0&&(p=m);let ee={...s?.signal?{signal:s.signal}:{},...s?.timeoutMs===void 0?{}:{timeout:s.timeoutMs},...s?.maxRetries===void 0?{}:{maxRetries:s.maxRetries}},h=await d.messages.create({...p,stream:!0},ee).asResponse();await s?.onResponse?.({status:h.status,headers:a(h.headers)},r),u.push({type:`start`,partial:e});let g=e.content;for await(let t of Hr(h,s?.signal))if(t.type===`message_start`)e.responseId=t.message.id,e.usage.input=t.message.usage.input_tokens||0,e.usage.output=t.message.usage.output_tokens||0,e.usage.cacheRead=t.message.usage.cache_read_input_tokens||0,e.usage.cacheWrite=t.message.usage.cache_creation_input_tokens||0,e.usage.totalTokens=e.usage.input+e.usage.output+e.usage.cacheRead+e.usage.cacheWrite,n(r,e.usage);else if(t.type===`content_block_start`){if(t.content_block.type===`text`){let n={type:`text`,text:``,index:t.index};e.content.push(n),u.push({type:`text_start`,contentIndex:e.content.length-1,partial:e})}else if(t.content_block.type===`thinking`){let n={type:`thinking`,thinking:``,thinkingSignature:``,index:t.index};e.content.push(n),u.push({type:`thinking_start`,contentIndex:e.content.length-1,partial:e})}else if(t.content_block.type===`redacted_thinking`){let n={type:`thinking`,thinking:`[Reasoning redacted]`,thinkingSignature:t.content_block.data,redacted:!0,index:t.index};e.content.push(n),u.push({type:`thinking_start`,contentIndex:e.content.length-1,partial:e})}else if(t.content_block.type===`tool_use`){let n={type:`toolCall`,id:t.content_block.id,name:f?Ar(t.content_block.name,o.tools):t.content_block.name,arguments:t.content_block.input??{},partialJson:``,index:t.index};e.content.push(n),u.push({type:`toolcall_start`,contentIndex:e.content.length-1,partial:e})}}else if(t.type===`content_block_delta`){if(t.delta.type===`text_delta`){let n=g.findIndex(e=>e.index===t.index),r=g[n];r&&r.type===`text`&&(r.text+=t.delta.text,u.push({type:`text_delta`,contentIndex:n,delta:t.delta.text,partial:e}))}else if(t.delta.type===`thinking_delta`){let n=g.findIndex(e=>e.index===t.index),r=g[n];r&&r.type===`thinking`&&(r.thinking+=t.delta.thinking,u.push({type:`thinking_delta`,contentIndex:n,delta:t.delta.thinking,partial:e}))}else if(t.delta.type===`input_json_delta`){let n=g.findIndex(e=>e.index===t.index),r=g[n];r&&r.type===`toolCall`&&(r.partialJson+=t.delta.partial_json,r.arguments=i(r.partialJson),u.push({type:`toolcall_delta`,contentIndex:n,delta:t.delta.partial_json,partial:e}))}else if(t.delta.type===`signature_delta`){let e=g[g.findIndex(e=>e.index===t.index)];e&&e.type===`thinking`&&(e.thinkingSignature=e.thinkingSignature||``,e.thinkingSignature+=t.delta.signature)}}else if(t.type===`content_block_stop`){let n=g.findIndex(e=>e.index===t.index),r=g[n];r&&(delete r.index,r.type===`text`?u.push({type:`text_end`,contentIndex:n,content:r.text,partial:e}):r.type===`thinking`?u.push({type:`thinking_end`,contentIndex:n,content:r.thinking,partial:e}):r.type===`toolCall`&&(r.arguments=i(r.partialJson),delete r.partialJson,u.push({type:`toolcall_end`,contentIndex:n,toolCall:r,partial:e})))}else t.type===`message_delta`&&(t.delta.stop_reason&&(e.stopReason=$r(t.delta.stop_reason)),t.usage.input_tokens!=null&&(e.usage.input=t.usage.input_tokens),t.usage.output_tokens!=null&&(e.usage.output=t.usage.output_tokens),t.usage.cache_read_input_tokens!=null&&(e.usage.cacheRead=t.usage.cache_read_input_tokens),t.usage.cache_creation_input_tokens!=null&&(e.usage.cacheWrite=t.usage.cache_creation_input_tokens),e.usage.totalTokens=e.usage.input+e.usage.output+e.usage.cacheRead+e.usage.cacheWrite,n(r,e.usage));if(s?.signal?.aborted)throw Error(`Request was aborted`);if(e.stopReason===`aborted`||e.stopReason===`error`)throw Error(`An unknown error occurred`);u.push({type:`done`,reason:e.stopReason,message:e}),u.end()}catch(t){for(let t of e.content)delete t.index,delete t.partialJson;e.stopReason=s?.signal?.aborted?`aborted`:`error`,e.errorMessage=t instanceof Error?t.message:JSON.stringify(t),u.push({type:`error`,reason:e.stopReason,error:e}),u.end()}})(),u};function Wr(e,t){let n=t?e.thinkingLevelMap?.[t]:void 0;if(typeof n==`string`)return n;switch(t){case`minimal`:case`low`:return`low`;case`medium`:return`medium`;case`high`:return`high`;default:return`high`}}var Gr=(e,n,r)=>{let i=r?.apiKey||t(e.provider);if(!i)throw Error(`No API key for provider: ${e.provider}`);let a=d(e,r,i);if(!r?.reasoning)return Ur(e,n,{...a,thinkingEnabled:!1});if(e.compat?.forceAdaptiveThinking===!0){let t=Wr(e,r.reasoning);return Ur(e,n,{...a,thinkingEnabled:!0,effort:t})}let o=u(a.maxTokens,e.maxTokens,r.reasoning,r.thinkingBudgets);return Ur(e,n,{...a,maxTokens:o.maxTokens,thinkingEnabled:!0,thinkingBudgetTokens:o.thinkingBudget})};function Kr(e){return e.includes(`sk-ant-oat`)}function qr(e,t,n,r,i,a,o){let c=n&&e.compat?.forceAdaptiveThinking!==!0,l=[];if(r&&l.push(Mr),c&&l.push(Nr),e.provider===`cloudflare-ai-gateway`)return{client:new $({apiKey:null,authToken:null,baseURL:s(e),dangerouslyAllowBrowser:!0,defaultHeaders:Fr({accept:`application/json`,"anthropic-dangerous-direct-browser-access":`true`,"cf-aig-authorization":`Bearer ${t}`,"x-api-key":null,Authorization:null,...l.length>0?{"anthropic-beta":l.join(`,`)}:{}},e.headers,i)}),isOAuthToken:!1};if(e.provider===`github-copilot`)return{client:new $({apiKey:null,authToken:t,baseURL:e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:Fr({accept:`application/json`,"anthropic-dangerous-direct-browser-access":`true`,...l.length>0?{"anthropic-beta":l.join(`,`)}:{}},e.headers,a,i)}),isOAuthToken:!1};if(Kr(t))return{client:new $({apiKey:null,authToken:t,baseURL:e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:Fr({accept:`application/json`,"anthropic-dangerous-direct-browser-access":`true`,"anthropic-beta":[`claude-code-20250219`,`oauth-2025-04-20`,...l].join(`,`),"user-agent":`claude-cli/${Dr}`,"x-app":`cli`},e.headers,i)}),isOAuthToken:!0};let u=o&&Pr(e).sendSessionAffinityHeaders?{"x-session-affinity":o}:{};return{client:new $({apiKey:t,authToken:null,baseURL:e.baseUrl,dangerouslyAllowBrowser:!0,defaultHeaders:Fr({accept:`application/json`,"anthropic-dangerous-direct-browser-access":`true`,...l.length>0?{"anthropic-beta":l.join(`,`)}:{}},u,e.headers,i)}),isOAuthToken:!1}}function Jr(e,t,n,r){let{cacheControl:i}=Er(e,r?.cacheRetention),a={model:e.id,messages:Xr(t.messages,e,n,i),max_tokens:r?.maxTokens??e.maxTokens,stream:!0};if(n?(a.system=[{type:`text`,text:`You are Claude Code, Anthropic's official CLI for Claude.`,...i?{cache_control:i}:{}}],t.systemPrompt&&a.system.push({type:`text`,text:o(t.systemPrompt),...i?{cache_control:i}:{}})):t.systemPrompt&&(a.system=[{type:`text`,text:o(t.systemPrompt),...i?{cache_control:i}:{}}]),r?.temperature!==void 0&&!r?.thinkingEnabled&&(a.temperature=r.temperature),t.tools&&t.tools.length>0){let r=Pr(e);a.tools=Qr(t.tools,n,r.supportsEagerToolInputStreaming,r.supportsCacheControlOnTools?i:void 0)}if(e.reasoning)if(r?.thinkingEnabled){let t=r.thinkingDisplay??`summarized`;e.compat?.forceAdaptiveThinking===!0?(a.thinking={type:`adaptive`,display:t},r.effort&&(a.output_config=(r.effort,{effort:r.effort}))):a.thinking={type:`enabled`,budget_tokens:r.thinkingBudgetTokens||1024,display:t}}else r?.thinkingEnabled===!1&&(a.thinking={type:`disabled`});if(r?.metadata){let e=r.metadata.user_id;typeof e==`string`&&(a.metadata={user_id:e})}return r?.toolChoice&&(typeof r.toolChoice==`string`?a.tool_choice={type:r.toolChoice}:a.tool_choice=r.toolChoice),a}function Yr(e){return e.replace(/[^a-zA-Z0-9_-]/g,`_`).slice(0,64)}function Xr(e,t,n,r){let i=[],a=f(e,t,Yr);for(let e=0;e<a.length;e++){let t=a[e];if(t.role===`user`)if(typeof t.content==`string`)t.content.trim().length>0&&i.push({role:`user`,content:o(t.content)});else{let e=t.content.map(e=>e.type===`text`?{type:`text`,text:o(e.text)}:{type:`image`,source:{type:`base64`,media_type:e.mimeType,data:e.data}}).filter(e=>e.type===`text`?e.text.trim().length>0:!0);if(e.length===0)continue;i.push({role:`user`,content:e})}else if(t.role===`assistant`){let e=[];for(let r of t.content)if(r.type===`text`){if(r.text.trim().length===0)continue;e.push({type:`text`,text:o(r.text)})}else if(r.type===`thinking`){if(r.redacted){e.push({type:`redacted_thinking`,data:r.thinkingSignature});continue}if(r.thinking.trim().length===0)continue;!r.thinkingSignature||r.thinkingSignature.trim().length===0?e.push({type:`text`,text:o(r.thinking)}):e.push({type:`thinking`,thinking:o(r.thinking),signature:r.thinkingSignature})}else r.type===`toolCall`&&e.push({type:`tool_use`,id:r.id,name:n?kr(r.name):r.name,input:r.arguments??{}});if(e.length===0)continue;i.push({role:`assistant`,content:e})}else if(t.role===`toolResult`){let n=[];n.push({type:`tool_result`,tool_use_id:t.toolCallId,content:jr(t.content),is_error:t.isError});let r=e+1;for(;r<a.length&&a[r].role===`toolResult`;){let e=a[r];n.push({type:`tool_result`,tool_use_id:e.toolCallId,content:jr(e.content),is_error:e.isError}),r++}e=r-1,i.push({role:`user`,content:n})}}if(r&&i.length>0){let e=i[i.length-1];if(e.role===`user`)if(Array.isArray(e.content)){let t=e.content[e.content.length-1];t&&(t.type===`text`||t.type===`image`||t.type===`tool_result`)&&(t.cache_control=r)}else typeof e.content==`string`&&(e.content=[{type:`text`,text:e.content,cache_control:r}])}return i}function Zr(e,t){return!!t.tools?.length&&!Pr(e).supportsEagerToolInputStreaming}function Qr(e,t,n,r){return e?e.map((i,a)=>{let o=i.parameters;return{name:t?kr(i.name):i.name,description:i.description,...n?{eager_input_streaming:!0}:{},input_schema:{type:`object`,properties:o.properties??{},required:o.required??[]},...r&&a===e.length-1?{cache_control:r}:{}}}):[]}function $r(e){switch(e){case`end_turn`:return`stop`;case`max_tokens`:return`length`;case`tool_use`:return`toolUse`;case`refusal`:return`error`;case`pause_turn`:return`stop`;case`stop_sequence`:return`stop`;case`sensitive`:return`error`;default:throw Error(`Unhandled stop reason: ${e}`)}}export{Ur as streamAnthropic,Gr as streamSimpleAnthropic};
@@ -0,0 +1 @@
1
+ import{c as e,d as t,u as n}from"./index-8Q1Ovled.js";import{t as r}from"./headers-5EYI0_pl.js";import{r as i}from"./transform-messages-Dhj_4OTw.js";import{t as a}from"./openai-Bf1npfRy.js";import{t as o}from"./openai-prompt-cache-CErE62Yt.js";import{n as s,r as c,t as l}from"./openai-responses-shared-G6WDDqJ8.js";var u=`v1`,d=new Set([`openai`,`openai-codex`,`opencode`,`azure-openai-responses`]);function f(e){let t=new Map;if(!e)return t;for(let n of e.split(`,`)){let e=n.trim();if(!e)continue;let[r,i]=e.split(`=`,2);!r||!i||t.set(r.trim(),i.trim())}return t}function p(e,t){return t?.azureDeploymentName?t.azureDeploymentName:f({}.AZURE_OPENAI_DEPLOYMENT_NAME_MAP).get(e.id)||e.id}function m(e){if(e instanceof Error){let t=e.status,n=typeof t==`number`?t:void 0;return n===void 0?e.message:`Azure OpenAI API error (${n}): ${e.message}`}try{return JSON.stringify(e)}catch{return String(e)}}var h=(n,i,a)=>{let o=new e;return(async()=>{let e=p(n,a),s={role:`assistant`,content:[],api:`azure-openai-responses`,provider:n.provider,model:n.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let l=b(n,a?.apiKey||t(n.provider)||``,a),u=x(n,i,a,e),d=await a?.onPayload?.(u,n);d!==void 0&&(u=d);let f={...a?.signal?{signal:a.signal}:{},...a?.timeoutMs===void 0?{}:{timeout:a.timeoutMs},...a?.maxRetries===void 0?{}:{maxRetries:a.maxRetries}},{data:p,response:m}=await l.responses.create(u,f).withResponse();if(await a?.onResponse?.({status:m.status,headers:r(m.headers)},n),o.push({type:`start`,partial:s}),await c(p,s,o,n),a?.signal?.aborted)throw Error(`Request was aborted`);if(s.stopReason===`aborted`||s.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:s.stopReason,message:s}),o.end()}catch(e){for(let e of s.content)delete e.index,delete e.partialJson;s.stopReason=a?.signal?.aborted?`aborted`:`error`,s.errorMessage=m(e),o.push({type:`error`,reason:s.stopReason,error:s}),o.end()}})(),o},g=(e,r,a)=>{let o=a?.apiKey||t(e.provider);if(!o)throw Error(`No API key for provider: ${e.provider}`);let s=i(e,a,o),c=a?.reasoning?n(e,a.reasoning):void 0,l=c===`off`?void 0:c;return h(e,r,{...s,reasoningEffort:l})};function _(e){let t=e.trim().replace(/\/+$/,``),n;try{n=new URL(t)}catch{throw Error(`Invalid Azure OpenAI base URL: ${e}`)}let r=n.hostname.endsWith(`.openai.azure.com`)||n.hostname.endsWith(`.cognitiveservices.azure.com`),i=n.pathname.replace(/\/+$/,``);return r&&(i===``||i===`/`||i===`/openai`)&&(n.pathname=`/openai/v1`,n.search=``),n.toString().replace(/\/+$/,``)}function v(e){return`https://${e}.openai.azure.com/openai/v1`}function y(e,t){let n=t?.azureApiVersion||{}.AZURE_OPENAI_API_VERSION||u,r=t?.azureBaseUrl?.trim()||{}.AZURE_OPENAI_BASE_URL?.trim()||void 0,i=t?.azureResourceName||{}.AZURE_OPENAI_RESOURCE_NAME,a=r;if(!a&&i&&(a=v(i)),!a&&e.baseUrl&&(a=e.baseUrl),!a)throw Error(`Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.`);return{baseUrl:_(a),apiVersion:n}}function b(e,t,n){if(!t){if(!{}.AZURE_OPENAI_API_KEY)throw Error(`Azure OpenAI API key is required. Set AZURE_OPENAI_API_KEY environment variable or pass it as an argument.`);t={}.AZURE_OPENAI_API_KEY}let r={...e.headers};n?.headers&&Object.assign(r,n.headers);let{baseUrl:i,apiVersion:o}=y(e,n);return new a({apiKey:t,apiVersion:o,dangerouslyAllowBrowser:!0,defaultHeaders:r,baseURL:i})}function x(e,t,n,r){let i={model:r,input:l(e,t,d),stream:!0,prompt_cache_key:o(n?.sessionId)};return n?.maxTokens&&(i.max_output_tokens=n?.maxTokens),n?.temperature!==void 0&&(i.temperature=n?.temperature),t.tools&&t.tools.length>0&&(i.tools=s(t.tools)),e.reasoning&&(n?.reasoningEffort||n?.reasoningSummary?(i.reasoning={effort:n?.reasoningEffort?e.thinkingLevelMap?.[n.reasoningEffort]??n.reasoningEffort:`medium`,summary:n?.reasoningSummary||`auto`},i.include=[`reasoning.encrypted_content`]):e.thinkingLevelMap?.off!==null&&(i.reasoning={effort:e.thinkingLevelMap?.off??`none`})),i}export{h as streamAzureOpenAIResponses,g as streamSimpleAzureOpenAIResponses};
@@ -0,0 +1 @@
1
+ import{c as e,d as t,l as n,u as r}from"./index-8Q1Ovled.js";import{t as i}from"./sanitize-unicode-BhyPmlyt.js";import{r as a}from"./transform-messages-Dhj_4OTw.js";import{a as o,i as s,n as c,o as l,r as u,s as d,t as f}from"./google-shared-Cqjw1plk.js";var p=0,m=(r,i,a)=>{let o=new e;return(async()=>{let e={role:`assistant`,content:[],api:`google-generative-ai`,provider:r.provider,model:r.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:`stop`,timestamp:Date.now()};try{let c=g(r,a?.apiKey||t(r.provider)||``,a?.headers),d=_(r,i,a),f=await a?.onPayload?.(d,r);f!==void 0&&(d=f);let m=await c.models.generateContentStream(d);o.push({type:`start`,partial:e});let h=null,v=e.content,y=()=>v.length-1;for await(let t of m){e.responseId||=t.responseId;let i=t.candidates?.[0];if(i?.content?.parts)for(let t of i.content.parts){if(t.text!==void 0){let n=u(t);(!h||n&&h.type!==`thinking`||!n&&h.type!==`text`)&&(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:v.length-1,content:h.text,partial:e}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:e})),n?(h={type:`thinking`,thinking:``,thinkingSignature:void 0},e.content.push(h),o.push({type:`thinking_start`,contentIndex:y(),partial:e})):(h={type:`text`,text:``},e.content.push(h),o.push({type:`text_start`,contentIndex:y(),partial:e}))),h.type===`thinking`?(h.thinking+=t.text,h.thinkingSignature=l(h.thinkingSignature,t.thoughtSignature),o.push({type:`thinking_delta`,contentIndex:y(),delta:t.text,partial:e})):(h.text+=t.text,h.textSignature=l(h.textSignature,t.thoughtSignature),o.push({type:`text_delta`,contentIndex:y(),delta:t.text,partial:e}))}if(t.functionCall){h&&=(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:e}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:e}),null);let n=t.functionCall.id,r={type:`toolCall`,id:!n||e.content.some(e=>e.type===`toolCall`&&e.id===n)?`${t.functionCall.name}_${Date.now()}_${++p}`:n,name:t.functionCall.name||``,arguments:t.functionCall.args??{},...t.thoughtSignature&&{thoughtSignature:t.thoughtSignature}};e.content.push(r),o.push({type:`toolcall_start`,contentIndex:y(),partial:e}),o.push({type:`toolcall_delta`,contentIndex:y(),delta:JSON.stringify(r.arguments),partial:e}),o.push({type:`toolcall_end`,contentIndex:y(),toolCall:r,partial:e})}}i?.finishReason&&(e.stopReason=s(i.finishReason),e.content.some(e=>e.type===`toolCall`)&&(e.stopReason=`toolUse`)),t.usageMetadata&&(e.usage={input:(t.usageMetadata.promptTokenCount||0)-(t.usageMetadata.cachedContentTokenCount||0),output:(t.usageMetadata.candidatesTokenCount||0)+(t.usageMetadata.thoughtsTokenCount||0),cacheRead:t.usageMetadata.cachedContentTokenCount||0,cacheWrite:0,totalTokens:t.usageMetadata.totalTokenCount||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},n(r,e.usage))}if(h&&(h.type===`text`?o.push({type:`text_end`,contentIndex:y(),content:h.text,partial:e}):o.push({type:`thinking_end`,contentIndex:y(),content:h.thinking,partial:e})),a?.signal?.aborted)throw Error(`Request was aborted`);if(e.stopReason===`aborted`||e.stopReason===`error`)throw Error(`An unknown error occurred`);o.push({type:`done`,reason:e.stopReason,message:e}),o.end()}catch(t){for(let t of e.content)`index`in t&&delete t.index;e.stopReason=a?.signal?.aborted?`aborted`:`error`,e.errorMessage=t instanceof Error?t.message:JSON.stringify(t),o.push({type:`error`,reason:e.stopReason,error:e}),o.end()}})(),o},h=(e,n,i)=>{let o=i?.apiKey||t(e.provider);if(!o)throw Error(`No API key for provider: ${e.provider}`);let s=a(e,i,o);if(!i?.reasoning)return m(e,n,{...s,thinking:{enabled:!1}});let c=r(e,i.reasoning),l=c===`off`?`high`:c,u=e;return y(u)||b(u)||v(u)?m(e,n,{...s,thinking:{enabled:!0,level:S(l,u)}}):m(e,n,{...s,thinking:{enabled:!0,budgetTokens:C(u,l,i.thinkingBudgets)}})};function g(e,t,n){let r={};return e.baseUrl&&(r.baseUrl=e.baseUrl,r.apiVersion=``),(e.headers||n)&&(r.headers={...e.headers,...n}),new d({apiKey:t,httpOptions:Object.keys(r).length>0?r:void 0})}function _(e,t,n={}){let r=f(e,t),a={};n.temperature!==void 0&&(a.temperature=n.temperature),n.maxTokens!==void 0&&(a.maxOutputTokens=n.maxTokens);let s={...Object.keys(a).length>0&&a,...t.systemPrompt&&{systemInstruction:i(t.systemPrompt)},...t.tools&&t.tools.length>0&&{tools:c(t.tools)}};if(t.tools&&t.tools.length>0&&n.toolChoice?s.toolConfig={functionCallingConfig:{mode:o(n.toolChoice)}}:s.toolConfig=void 0,n.thinking?.enabled&&e.reasoning){let e={includeThoughts:!0};n.thinking.level===void 0?n.thinking.budgetTokens!==void 0&&(e.thinkingBudget=n.thinking.budgetTokens):e.thinkingLevel=n.thinking.level,s.thinkingConfig=e}else e.reasoning&&n.thinking&&!n.thinking.enabled&&(s.thinkingConfig=x(e));if(n.signal){if(n.signal.aborted)throw Error(`Request aborted`);s.abortSignal=n.signal}return{model:e.id,contents:r,config:s}}function v(e){return/gemma-?4/.test(e.id.toLowerCase())}function y(e){return/gemini-3(?:\.\d+)?-pro/.test(e.id.toLowerCase())}function b(e){return/gemini-3(?:\.\d+)?-flash/.test(e.id.toLowerCase())}function x(e){return y(e)?{thinkingLevel:`LOW`}:b(e)||v(e)?{thinkingLevel:`MINIMAL`}:{thinkingBudget:0}}function S(e,t){if(y(t))switch(e){case`minimal`:case`low`:return`LOW`;case`medium`:case`high`:return`HIGH`}if(v(t))switch(e){case`minimal`:case`low`:return`MINIMAL`;case`medium`:case`high`:return`HIGH`}switch(e){case`minimal`:return`MINIMAL`;case`low`:return`LOW`;case`medium`:return`MEDIUM`;case`high`:return`HIGH`}}function C(e,t,n){return n?.[t]===void 0?e.id.includes(`2.5-pro`)?{minimal:128,low:2048,medium:8192,high:32768}[t]:e.id.includes(`2.5-flash-lite`)?{minimal:512,low:2048,medium:8192,high:24576}[t]:e.id.includes(`2.5-flash`)?{minimal:128,low:2048,medium:8192,high:24576}[t]:-1:n[t]}export{m as streamGoogle,h as streamSimpleGoogle};