@lingjingai/scriptctl 0.66.13 → 0.66.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/changes/0.66.14.md +15 -0
- package/dist/bin.js +1 -1
- package/dist/{chunk-333DJUK5.js → chunk-MMH5EEBU.js} +4 -4
- package/dist/cli.js +1 -1
- package/dist/review-agent.js +2 -2
- package/package.json +1 -1
- package/skills/scriptctl/SKILL.md +2 -2
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ Gemini 接收左侧带时间戳、行锚点的亚洲格式剧本正文,以及
|
|
|
82
82
|
|
|
83
83
|
剧本旁 `.review/asr/episode-N/` 保存按音频 SHA-256 复用的成功 ASR 响应,以及每次对比的 `script.txt`、`asr.txt`、`prompt.txt`、逐模型逐次响应和 `report.json`(含前后时间、台词、缺漏线索)。当前剧本每次重新对比,不缓存对比结论。
|
|
84
84
|
|
|
85
|
-
视频和纯剧本审核默认使用 `review-agent
|
|
85
|
+
视频和纯剧本审核默认使用 `review-agent`。主 Agent 的默认链为 NNYYAI Gemini 3.8 → 3.7 → 3.6 Flash → LiteLLM `grok-4.7-packy` → `grok-4.6-packy` → `grok-4.5-packy` → 火山方舟豆包;`review-text`、`review-comic` 同样在各自 Gemini 主渠道之后使用这组 Grok。Grok 使用 `PROJECT_LITELLM_GATEWAY_BASE_URL` 和 `PROJECT_LITELLM_GATEWAY_API_KEY`,未配置 gateway 密钥时跳过。独立的 ASR JSON 比对与原片视频核验使用已实现的 Gemini → 豆包协议,不向 Grok 发送这些请求。主渠道需要对应密钥;豆包使用 `ARK_API_KEY`,端点可通过 `ARK_MODEL` 指定。每个模型沿用 provider 的 `maxAttempts`(内置默认最多三次);不可重试的模型错误直接进入下一模型,可重试错误耗尽当前模型次数后再切换。整集默认总时限为 15 分钟,可用 `--episode-timeout-ms` 覆盖;总超时、取消、持久化失败不应靠换模型恢复。Mastra 在当前模型调用内切换,已执行成功的工具不重放,日志和用量记录实际渠道及模型。自定义 profile 可用 `fallbacks` 指定额外模型 profile,它们在主渠道 Gemini 型号耗尽后、豆包之前依次尝试。`--no-fallback` 或 `SCRIPTCTL_REVIEW_SINGLE_MODEL=1` 仅使用选定模型。
|
|
86
86
|
|
|
87
87
|
`asr-started` / `asr-transcribed` / `asr-compared` NDJSON 按集报告进度与证据;`asr-compared` 不代表修改已落盘,带 `episode_number` 的 `asr-applied` 表示本集校时已经保存。之后的 `episode` 报告本集完成或失败,已有修改已保存;`done.statistics.fixed` 包含自动校时条数,`usage_total` 汇总对比与审核 Gemini 用量。
|
|
88
88
|
|
|
@@ -92,7 +92,7 @@ Gemini 接收左侧带时间戳、行锚点的亚洲格式剧本正文,以及
|
|
|
92
92
|
|
|
93
93
|
`scriptctl review -p <workspace/script.json> -s <漫画 ingest 工作区>` 对照原 PDF 逐话审核并修正。也可以把 `-s` 指向原 PDF 或 PDF 目录,此时 `manifest.json` 必须位于剧本旁。来源通过 `document_id` 和 manifest 中的 PDF SHA-256 匹配,不按文件名重新配话;文件移动或改名后可以显式传入内容相同的 PDF。`--episodes 1,3` 只要求所选话的来源可用。缺少 manifest、来源映射或原文件内容变化时停止并报错。
|
|
94
94
|
|
|
95
|
-
漫画使用独立的 `review-comic` profile(默认 NNYYAI `gemini-3.8-flash`,`NNYYAI_API_KEY
|
|
95
|
+
漫画使用独立的 `review-comic` profile(默认 NNYYAI `gemini-3.8-flash`,`NNYYAI_API_KEY`),主 Agent 支持 Gemini 型号切换、已配置的 LiteLLM Grok 三档和豆包恢复路由,不进入官方 Google 渠道。自定义 LLM 配置需要定义该 profile,或用 `--model` 选择有显式服务地址的 profile。视频和纯剧本仍使用 `review-agent`。
|
|
96
96
|
|
|
97
97
|
漫画 Agent 逐页看原稿并反向核对 action,使用 `source` 定位、`pages` 看完整原页、`region` 看清晰局部,核对遗漏、重复、文字、人物、心声类型及阅读顺序。需要 Poppler(`pdftoppm`);局部图按显示页的 CropBox/旋转归一化坐标渲染。正文修改保留来源;插入遗漏内容必须同时提供 `extend.scriptctl.source` 页码及区域。跨页内容使用同一条 action 的多个来源区域,不添加时间戳。
|
|
98
98
|
|
|
@@ -148,7 +148,7 @@ Gemini provider 可设置 `videoResponseSchemaField: responseSchema`,用于 GR
|
|
|
148
148
|
从 `NNYYAI_API_KEY` 读取密钥,使用 base64 视频或 PDF 输入(Schema 字段为 `responseSchema`)。设置密钥后直接运行
|
|
149
149
|
`scriptctl ingest -s <视频或PDF文件或目录> -w <workspace>`。
|
|
150
150
|
视频请求先尝试配置的主模型,再在主渠道按 Gemini 3.8 / 3.7 / 3.6 Flash 补齐未试型号,随后使用 GrsAI(`https://grsai.dakka.com.cn`)的同三个型号,最后进入火山方舟豆包。GrsAI 使用独立的 `GRSAI_API_KEY`、base64 视频与 `responseSchema`,每个型号最多尝试 3 次;未配置密钥或主渠道已为该 GrsAI 地址时跳过此段。主渠道视频上传失败时,从 GrsAI 开始使用本地视频继续请求。豆包需要 `ARK_API_KEY`,`ARK_MODEL` 可覆盖默认端点。
|
|
151
|
-
PDF 的 Gemini 型号切换使用同一主渠道,随后由已配置的豆包兜底。`review-agent`
|
|
151
|
+
PDF 的 Gemini 型号切换使用同一主渠道,随后由已配置的豆包兜底。`review-agent` 主循环默认使用 NNYYAI → LiteLLM Grok → 豆包审核链;文本任务按各自 profile 路由。
|
|
152
152
|
显式 LLM 配置决定主渠道和模型,支持 GrsAI、Google Vertex 等 provider;视频同样按主渠道 → GrsAI → 豆包的顺序恢复。显式选择豆包时只调用豆包。
|
|
153
153
|
|
|
154
154
|
Gemini provider 的 `videoUploadMode: base64` 可指定视频默认传输方式;未设置时为 `file-api`,
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# 0.66.14
|
|
2
|
+
|
|
3
|
+
## Added
|
|
4
|
+
- 默认 review 主 Agent 在 Gemini 后、豆包前依次尝试 LiteLLM 的 grok-4.7-packy、grok-4.6-packy、grok-4.5-packy,使用已有 gateway 地址与密钥配置。
|
|
5
|
+
|
|
6
|
+
## Fixed
|
|
7
|
+
- Gemini 流结束时要求真实 finishReason,避免 SDK 合成的结束事件把断流残缺响应误判为成功,阻断重试与兜底。
|
|
8
|
+
- review 的 --no-fallback 和 SCRIPTCTL_REVIEW_SINGLE_MODEL=1 只使用选定模型,不加载配置中的额外兜底模型。
|
|
9
|
+
|
|
10
|
+
## Changed
|
|
11
|
+
- 整集 review 默认总时限调整为 15 分钟,CLI 和直接调用 review-agent 使用相同默认值;显式超时设置继续生效。
|
|
12
|
+
|
|
13
|
+
## Notes
|
|
14
|
+
- 独立 ASR JSON 比对及视频核验维持 Gemini → 豆包。
|
|
15
|
+
- 构建及 86 项定向测试通过。
|
package/dist/bin.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{b as s}from"./chunk-
|
|
2
|
+
import{b as s}from"./chunk-MMH5EEBU.js";import{Console as r}from"node:console";var o=new r({stdout:process.stderr,stderr:process.stderr});console.debug=o.debug.bind(o);console.info=o.info.bind(o);console.log=o.log.bind(o);s(process.argv.slice(2)).then(e=>{process.exitCode=e}).catch(e=>{console.error(e),process.exitCode=70});
|
|
@@ -141,7 +141,7 @@ Rules:
|
|
|
141
141
|
`)}
|
|
142
142
|
`)}return e.exitCode}var Sd=new WeakMap;function CE(e){return e.replace(/([A-Z])/g,"_$1").toLowerCase()}function TE(e){return Object.fromEntries(Object.entries(e).map(([t,n])=>[CE(t),n]))}function VE(e){let t=[],n=e;for(;n;)t.unshift(n),n=n.parent;return Object.assign({},...t.map(o=>o.opts()))}function H(e,t){return async(...n)=>{let o=n[n.length-1],i=n.slice(0,-2).filter(d=>d!==void 0),r=TE(VE(o));i.length>0&&(r._args=i),t.jsonMode=!!r.json,t.format=typeof r.format=="string"?r.format:void 0;let s=async()=>e(r),[c,a]=Sd.get(o)==="write"?await Vs(me(r),s):await s();yf(c,a,t.jsonMode,t.format),t.exitCode=a}}function Me(e,t){return e.registeredArguments.forEach((n,o)=>{n.description=t[o]??""}),e}function ee(e,t="write"){return Sd.set(e,t),e.option("-p, --script-path <path>","Script JSON file (default: ./workspace/script.json)")}function Id(e){return Sd.set(e,"write"),e.option("-p, --script-path <path>","Local script JSON file (default: ./workspace/script.json)").option("--project-group-no <no>","Remote project group number")}function wf(e,t){let n=e.command("authoring").description("Structured screenplay compilation and atomic application transactions"),o=ee(n.command("write <file>")).description("Plan or apply a complete structured authoring document").option("--create","Create the selected target").option("--replace","Replace the selected target").option("--apply","Apply the exact plan").option("--plan <digest>","Exact plan digest to apply").action(H(mf,t));Me(o,["Structured .scriptctl file"]);let i=ee(n.command("compose <file>")).description("Compile a readable scene JSON draft with generated identities and timing").option("--apply","Apply the exact plan").option("--plan <digest>","Exact plan digest to apply").action(H(ku,t));Me(i,["Readable scene JSON file"]);let r=n.command("export").description("Export complete structured content, including identities and extensions"),s=["script","episodes","episode-spans","scenes","scene-spans","action-spans"];for(let c of s){let a=ee(r.command(c),"read").description(`Export structured ${c}`).requiredOption("-o, --output <file>","Destination .scriptctl file");c!=="script"&&a.requiredOption("-i, --in <selector>","Formal ID or @ep:N selector / inclusive range"),a.action(H(d=>$u(c,d),t))}}import*as Zs from"node:fs";import*as Md from"node:path";import*as bd from"node:fs";import*as Ki from"node:path";import{fileURLToPath as $E}from"node:url";var kd="@lingjingai/scriptctl",Ad="";function vd(){if(Ad)return Ad;let e=Ki.dirname($E(import.meta.url));for(;;){try{let n=bd.readFileSync(Ki.join(e,"package.json"),"utf-8");if(JSON.parse(n).name===kd)return Ad=e,e}catch{}let t=Ki.dirname(e);if(t===e)throw new Error(`${kd} package root not found`);e=t}}function zi(){let e=bd.readFileSync(Ki.join(vd(),"package.json"),"utf-8"),t=JSON.parse(e).version;if(typeof t!="string")throw new Error(`${kd} package.json has no string version`);return t}var _f=/^\d+\.\d+\.\d+$/,DE="unreleased";function Ef(){return Md.join(vd(),"changes")}function GE(){return zi()}function Br(e){if(!_f.test(e))throw new x("Version must use x.y.z.",{exitCode:B,errorCode:"CHANGELOG_VERSION_INVALID",hint:"Pass a released version such as `scriptctl changelog 0.25.10`.",data:{expected:["x.y.z"],actual:[e||"<empty>"]}});let[t,n,o]=e.split(".").map(i=>Number(i));return[t,n,o]}function Rd(e,t){let n=Br(e),o=Br(t);for(let i=0;i<3;i++)if(n[i]!==o[i])return n[i]-o[i];return 0}function BE(){let e=Ef();return Zs.readdirSync(e).filter(t=>t.endsWith(".md")).map(t=>t.slice(0,-3)).filter(t=>_f.test(t)).sort(Rd)}function qs(e){return Zs.readFileSync(Md.join(Ef(),`${e}.md`),"utf-8").trimEnd()}function Od(e,t){return new x(`No changelog entry exists for ${e}.`,{exitCode:k,errorCode:"CHANGELOG_VERSION_NOT_FOUND",hint:t.length>0?`Available versions: ${t.join(", ")}`:"Add changes/<version>.md first.",data:{expected:["existing changelog version"],actual:[e]}})}function JE(e,t){return new x(`No released changelog entries found after ${e} through ${t}.`,{exitCode:k,errorCode:"CHANGELOG_RANGE_EMPTY",hint:"Choose a wider range or run `scriptctl changelog <version>` for a known release.",data:{expected:["a version range containing released changelog entries"],actual:[`--from ${e}`,`--to ${t}`]}})}function jE(e){return e.map(qs).join(`
|
|
143
143
|
|
|
144
|
-
`)}function xf(e){let t=e._args??[],n=t[0]?.trim()??"",o=String(e.from??"").trim(),i=String(e.to??"").trim(),r=!!e.unreleased;if(t.length>1)throw new x("changelog accepts at most one version argument.",{exitCode:B,errorCode:"CHANGELOG_TOO_MANY_ARGS",hint:"Pass a single version, or use --from/--to for a range.",data:{expected:["scriptctl changelog [version] [--from X] [--to Y] [--unreleased]"],actual:[t.join(" ")]}});if(r&&(n||o||i))throw new x("--unreleased cannot combine with version, --from, or --to.",{exitCode:B,errorCode:"CHANGELOG_SELECTOR_CONFLICT",hint:"Run `scriptctl changelog --unreleased` by itself.",data:{expected:["either --unreleased, a version, or a --from/--to range"],actual:["--unreleased with another selector"]}});if(n&&(o||i))throw new x("A version argument cannot combine with --from or --to.",{exitCode:B,errorCode:"CHANGELOG_SELECTOR_CONFLICT",hint:"Run `scriptctl changelog 0.25.10` or `scriptctl changelog --from 0.25.8 --to 0.25.10`.",data:{expected:["either a version argument, or --from/--to"],actual:[n,o?`--from ${o}`:"",i?`--to ${i}`:""].filter(Boolean)}});if(r){let d=qs(DE);return[{text:d,data:{content:d,versions:[],unreleased:!0}},G]}let s=BE(),c=GE();if(n){if(Br(n),!s.includes(n))throw Od(n,s);let d=qs(n);return[{text:d,data:{content:d,versions:[n],unreleased:!1}},G]}if(o||i){if(!o)throw new x("--from is required for range queries.",{exitCode:B,errorCode:"CHANGELOG_FROM_MISSING",hint:"Run `scriptctl changelog --from 0.25.8 --to 0.25.10`.",data:{expected:["--from <x.y.z>"],actual:[i?`--to ${i}`:"<missing>"]}});Br(o);let d=i||c;if(Br(d),!s.includes(d))throw Od(d,s);let p=s.filter(f=>Rd(f,o)>0&&Rd(f,d)<=0);if(p.length===0)throw JE(o,d);let l=jE(p);return[{text:l,data:{content:l,versions:p,from:o,to:d,unreleased:!1}},G]}if(!s.includes(c))throw Od(c,s);let a=qs(c);return[{text:a,data:{content:a,versions:[c],unreleased:!1}},G]}import*as Bt from"node:fs";import*as ri from"node:path";import{createRequire as Kx}from"node:module";import*as Hn from"node:fs";import*as So from"node:path";import*as If from"node:os";import{fileURLToPath as KE}from"node:url";function Sf(e){return e.startsWith("~")?So.join(If.homedir(),e.slice(1)):e}function zE(e){let t=Hn.readFileSync(e,"utf-8");for(let n of t.split(/\r?\n/)){let o=n.trim();if(!o||o.startsWith("#"))continue;o.startsWith("export ")&&(o=o.slice(7).trim());let i=o.indexOf("=");if(i<0)continue;let r=o.slice(0,i).trim(),s=o.slice(i+1).trim();s.length>=2&&s[0]===s[s.length-1]&&(s[0]==="'"||s[0]==='"')&&(s=s.slice(1,-1)),r&&s&&!process.env[r]&&(process.env[r]=s)}}function Nd(){let e=[],t=(process.env.SCRIPTCTL_ENV_FILE??"").trim();t&&e.push(Sf(t));let n=(process.env.SCRIPTCTL_SKILL_DIR??"").trim();n&&e.push(So.join(Sf(n),".env"));let o;try{o=KE(import.meta.url)}catch{o=process.cwd()}let i=So.resolve(o),r=new Set;for(;;){let s=So.dirname(i);if(s===i||r.has(s))break;r.add(s),e.push(So.join(s,".env")),i=s}return e}function Af(){let e=process.env.SCRIPTCTL_NO_DOTENV;if(e==="1"||e==="true"||e==="True")return;let t=new Set;for(let n of Nd()){let o;try{o=Hn.existsSync(n)?Hn.realpathSync(n):n}catch{o=n}t.has(o)||!Hn.existsSync(n)||!Hn.statSync(n).isFile()||(t.add(o),zE(n))}}var fe=class extends Error{status;code;payload;configMissing;constructor(t,n={}){super(t),this.name="ScriptOutputApiError",this.status=n.status??null,this.code=n.code??null,this.payload=n.payload,this.configMissing=n.configMissing??null}};async function Ld(e,t){if(e.updateEpisodeCount)try{await e.updateEpisodeCount(t)}catch{}}function kf(e){let t=!!e?.remote,n=!!e?.local;if(t&&n)return{mode:null,conflict:!0};if(t)return{mode:"remote",conflict:!1};if(n)return{mode:"local",conflict:!1};let o=(process.env.SCRIPTCTL_OUTPUT_MODE??"").trim().toLowerCase();if(o==="local"||o==="remote")return{mode:o,conflict:!1};if(o!=="")return{mode:null,conflict:!1};let i=typeof e?.projectGroupNo=="string"?e.projectGroupNo.trim():"",r=(process.env.SANDBOX_PROJECT_GROUP_NO??"").trim();return i!==""||r!==""?{mode:"remote",conflict:!1}:{mode:null,conflict:!1}}import*as Kr from"node:fs";import*as vf from"node:os";import*as Jr from"node:path";import{parseDocument as HE}from"yaml";function ae(e,t,n){return{id:e,mode:t,version:"1",maxOutputTokens:n,defaultProfile:"default"}}var An={"direct.episode-titles":ae("direct.episode-titles","tool",4096),"direct.batch-extract":ae("direct.batch-extract","text",16e3),"direct.episode-synopsis":ae("direct.episode-synopsis","tool",2048),"direct.synopsis-reduction":ae("direct.synopsis-reduction","tool",4096),"direct.script-synopsis":ae("direct.script-synopsis","tool",2048),"direct.asset-grouping":ae("direct.asset-grouping","text",8e3),"direct.asset-curation":ae("direct.asset-curation","text",2e4),"direct.asset-curation-audit":ae("direct.asset-curation-audit","text",2e4),"direct.location-canonicalization":ae("direct.location-canonicalization","text",2e4),"direct.state-curation":ae("direct.state-curation","text",2e4),"direct.state-binding":ae("direct.state-binding","tool",16e3),"metadata.global":ae("metadata.global","text",16e3),"metadata.descriptions":ae("metadata.descriptions","text",16e3),"synopsis.chunk":ae("synopsis.chunk","text",4096),"synopsis.episode":ae("synopsis.episode","text",4096),"synopsis.arc":ae("synopsis.arc","text",16e3),"synopsis.script-overview":ae("synopsis.script-overview","text",16e3),"ingest.body-start":ae("ingest.body-start","text",16e3),"ingest.arc-summary":ae("ingest.arc-summary","text",4096),"ingest.text-normalize":ae("ingest.text-normalize","text",32e3),"ingest.episode-assets":ae("ingest.episode-assets","tool",32e3),"ingest.name-fix":ae("ingest.name-fix","tool",16e3),"ingest.mention-resolve":ae("ingest.mention-resolve","text",8e3),"ingest.asset-extract":ae("ingest.asset-extract","text",8e3),"ingest.asset-curate":ae("ingest.asset-curate","text",32e3),"ingest.asset-recall":ae("ingest.asset-recall","text",65536),"ingest.asset-refine":ae("ingest.asset-refine","text",32e3),"ingest.state-reconcile":ae("ingest.state-reconcile","text",32e3),"ingest.asset-audit":ae("ingest.asset-audit","tool",32e3),"ingest.speaker-audit":ae("ingest.speaker-audit","tool",16e3),"ingest.comic-serial":{id:"ingest.comic-serial",mode:"document",version:"1",defaultProfile:"default"},"ingest.video-serial":ae("ingest.video-serial","video",65536)},bf=Object.keys(An).filter(Ud);function Ud(e){return Object.hasOwn(An,e)}var FE=new Set(["protocol","baseUrl","apiKey","timeoutMs","maxAttempts","videoResponseSchemaField","videoUploadMode","documentResponseSchemaField","documentUploadMode"]),QE=new Set(["provider","model","thinking","reasoning","temperature","fallbacks"]),YE=new Set(["env"]),qE=new Set(["budgetTokens"]);function ve(e,t=[]){return new x(e,{exitCode:k,errorCode:"LLM_CONFIG_INVALID",hint:"Fix the selected LLM configuration or environment and rerun `scriptctl doctor`.",data:{expected:["valid scriptctl LLM YAML configuration"],actual:t}})}function Td(e,t){let n;try{n=new URL(e)}catch{throw ve(`${t} must be an absolute URL.`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw ve(`${t} must use http or https.`);return n.toString().replace(/\/$/,"")}function Vd(e,t="provider base URL"){return Td(e,t)}function ZE(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Io(e,t){if(!ZE(e))throw ve(`${t} must be a mapping.`,[`${t}: ${typeof e}`]);return e}function Ao(e,t){if(typeof e!="string"||!e.trim())throw ve(`${t} must be a non-empty string.`);return e.trim()}function Cd(e,t,n,o){if(!Number.isInteger(e)||typeof e!="number"||e<n||o!==void 0&&e>o)throw ve(`${t} must be an integer in ${o===void 0?`[${n}, +\u221E)`:`[${n}, ${o}]`}.`);return e}function jr(e,t,n){let o=Object.keys(e).filter(i=>!t.has(i));if(o.length>0)throw ve(`${n} contains unknown fields.`,o)}function WE(e,t){let n=Io(t,`providers.${e}`);jr(n,FE,`providers.${e}`);let o=Ao(n.protocol,`providers.${e}.protocol`);if(o!=="anthropic"&&o!=="openai-compatible"&&o!=="google-gemini"&&o!=="google-vertex")throw ve(`providers.${e}.protocol is unsupported.`,[o]);let i=n.baseUrl===void 0&&o!=="openai-compatible"?null:Td(Ao(n.baseUrl,`providers.${e}.baseUrl`),`providers.${e}.baseUrl`),r="";if(o!=="google-vertex"){let c=Io(n.apiKey,`providers.${e}.apiKey`);if(jr(c,YE,`providers.${e}.apiKey`),r=Ao(c.env,`providers.${e}.apiKey.env`),!/^[A-Za-z_][A-Za-z0-9_]*$/.test(r))throw ve(`providers.${e}.apiKey.env must be an environment variable name.`)}let s={protocol:o,baseUrl:i,apiKeyEnv:r,timeoutMs:Cd(n.timeoutMs,`providers.${e}.timeoutMs`,1),maxAttempts:Cd(n.maxAttempts,`providers.${e}.maxAttempts`,1,6)};for(let c of["videoResponseSchemaField","documentResponseSchemaField"]){let a=n[c];if(a!==void 0){if(o!=="google-gemini"&&o!=="google-vertex")throw ve(`providers.${e}.${c} requires a Gemini ${c.startsWith("video")?"video":"document"} provider.`);if(a!=="responseJsonSchema"&&a!=="responseSchema")throw ve(`providers.${e}.${c} must be responseJsonSchema or responseSchema.`);s[c]=a}}for(let c of["videoUploadMode","documentUploadMode"]){let a=n[c];if(a!==void 0){if(o!=="google-gemini"&&o!=="google-vertex")throw ve(`providers.${e}.${c} requires a Gemini ${c.startsWith("video")?"video":"document"} provider.`);if(a!=="file-api"&&a!=="base64")throw ve(`providers.${e}.${c} must be file-api or base64.`);s[c]=a}}return s}function XE(e,t,n){let o=Io(t,`models.${e}`);jr(o,QE,`models.${e}`);let i=Ao(o.provider,`models.${e}.provider`),r=n[i];if(!r)throw ve(`models.${e} references an unknown provider.`,[i]);let s={provider:i,model:Ao(o.model,`models.${e}.model`)};if(o.reasoning!==void 0&&(s.reasoning=Ao(o.reasoning,`models.${e}.reasoning`)),o.fallbacks!==void 0){let c=o.fallbacks;if(!Array.isArray(c))throw ve(`models.${e}.fallbacks must be a list of model profiles.`);s.fallbacks=c.map((a,d)=>Ao(a,`models.${e}.fallbacks[${d}]`))}if(o.temperature!==void 0){let c=o.temperature;if(typeof c!="number"||!Number.isFinite(c)||c<0)throw ve(`models.${e}.temperature must be a number \u2265 0.`);s.temperature=c}if(o.thinking!==void 0){if(r.protocol!=="anthropic")throw ve(`models.${e}.thinking is only valid for anthropic providers.`);let c=Io(o.thinking,`models.${e}.thinking`);jr(c,qE,`models.${e}.thinking`),s.thinkingBudgetTokens=Cd(c.budgetTokens,`models.${e}.thinking.budgetTokens`,1024)}return s}function ex(e,t){let n=Io(e,"config");if(jr(n,new Set(["version","providers","models","tasks"]),"config"),n.version!==1)throw ve("config.version must be 1.");let o=Io(n.providers,"providers"),i={};for(let[a,d]of Object.entries(o))i[a]=WE(a,d);let r=Io(n.models,"models"),s={};for(let[a,d]of Object.entries(r))s[a]=XE(a,d,i);if(!s.default)throw ve("models.default is required.");for(let[a,d]of Object.entries(s))for(let p of d.fallbacks??[])if(!s[p]||p===a)throw ve(`models.${a}.fallbacks references an unknown or the same profile.`,[p]);let c={};if(n.tasks!==void 0){let a=Io(n.tasks,"tasks");for(let[d,p]of Object.entries(a)){if(!Ud(d))throw ve("tasks contains an unknown task id.",[d]);let l=Ao(p,`tasks.${d}`);if(!s[l])throw ve(`tasks.${d} references an unknown model profile.`,[l]);c[d]=l}}return{version:1,providers:i,models:s,tasks:c,source:"file",sourcePath:t}}var Fn={protocol:"google-gemini",baseUrl:"https://grsai.dakka.com.cn",apiKeyEnv:"GRSAI_API_KEY",timeoutMs:6e5,maxAttempts:3,videoResponseSchemaField:"responseSchema",videoUploadMode:"base64"},ti={version:1,providers:{gw:{protocol:"openai-compatible",baseUrl:null,apiKeyEnv:"PROJECT_LITELLM_GATEWAY_API_KEY",timeoutMs:3e5,maxAttempts:3},"gw-anthropic":{protocol:"anthropic",baseUrl:null,apiKeyEnv:"PROJECT_LITELLM_GATEWAY_API_KEY",timeoutMs:3e5,maxAttempts:3},"google-gemini":{protocol:"google-vertex",baseUrl:null,apiKeyEnv:"",timeoutMs:6e5,maxAttempts:3},nnyyai:{protocol:"google-gemini",baseUrl:"https://api.nnyyai.com",apiKeyEnv:"NNYYAI_API_KEY",timeoutMs:6e5,maxAttempts:3,videoResponseSchemaField:"responseSchema",videoUploadMode:"base64",documentResponseSchemaField:"responseSchema",documentUploadMode:"base64"},grsai:Fn},models:{default:{provider:"gw",model:"deepseek-v4-flash-packy",temperature:0},synopsis:{provider:"gw",model:"deepseek-v4.1-flash-huoshan",temperature:0},"ingest-low":{provider:"gw",model:"deepseek-v4-flash-packy",temperature:0},"ingest-normalize":{provider:"gw",model:"claude-sonnet-4-6-aihubmix",temperature:0},"ingest-video":{provider:"nnyyai",model:"gemini-3.8-flash"},"ingest-comic":{provider:"nnyyai",model:"gemini-3.8-flash"},"review-text":{provider:"google-gemini",model:"gemini-3.8-flash",temperature:0},"review-comic":{provider:"nnyyai",model:"gemini-3.8-flash",temperature:0},"review-agent":{provider:"nnyyai",model:"gemini-3.8-flash",temperature:0},"review-grsai-3.8":{provider:"grsai",model:"gemini-3.8-flash"},"review-grsai-3.7":{provider:"grsai",model:"gemini-3.7-flash"},"review-grsai-3.6":{provider:"grsai",model:"gemini-3.6-flash"},reskin:{provider:"google-gemini",model:"gemini-3.8-flash"},"reskin-claude":{provider:"gw-anthropic",model:"claude-opus-5-5-nnyy-offical"}},tasks:{"synopsis.chunk":"synopsis","synopsis.episode":"synopsis","synopsis.arc":"synopsis","synopsis.script-overview":"synopsis","ingest.body-start":"ingest-low","ingest.arc-summary":"ingest-low","ingest.text-normalize":"ingest-low","ingest.mention-resolve":"ingest-low","ingest.asset-recall":"ingest-low","ingest.asset-audit":"ingest-normalize","ingest.episode-assets":"ingest-normalize","ingest.name-fix":"ingest-normalize","ingest.video-serial":"ingest-video","ingest.comic-serial":"ingest-comic"},source:"builtin",sourcePath:null};function tx(){let e=(process.env.PROJECT_LITELLM_GATEWAY_BASE_URL??"").trim(),t=e?Td(e,"PROJECT_LITELLM_GATEWAY_BASE_URL"):null;return{...ti,providers:{gw:{...ti.providers.gw,baseUrl:t},"gw-anthropic":{...ti.providers["gw-anthropic"],baseUrl:t?t.replace(/\/v1\/?$/,""):null},"google-gemini":{...ti.providers["google-gemini"]},nnyyai:{...ti.providers.nnyyai},grsai:{...Fn}},models:{...ti.models},tasks:{...ti.tasks}}}function nx(){let e=(process.env.XDG_CONFIG_HOME??"").trim();return e?Jr.join(e,"scriptctl","llm.yaml"):Jr.join(vf.homedir(),".config","scriptctl","llm.yaml")}function Pd(e){if(!Kr.existsSync(e))throw ve("LLM configuration file does not exist.",[e]);let t=HE(Kr.readFileSync(e,"utf-8"),{uniqueKeys:!0});if(t.errors.length>0)throw ve("LLM configuration YAML is invalid.",t.errors.map(o=>o.message));let n=t.toJS();return ex(n,Jr.resolve(e))}function ko(e){let t=(e??"").trim();if(t)return Pd(t);let n=(process.env.SCRIPTCTL_LLM_CONFIG??"").trim();if(n)return Pd(n);let o=nx();return Kr.existsSync(o)?Pd(o):tx()}import*as Bf from"node:crypto";import*as Fd from"node:fs";import rx,{APIConnectionError as sx,APIConnectionTimeoutError as ax,APIError as cx,APIUserAbortError as dx}from"@anthropic-ai/sdk";var $d=1e8;function ox(e){switch(e){case"auth":return{failure_type:"authentication",failure_code:"authentication_failed"};case"permission_denied":return{failure_type:"authorization",failure_code:"permission_denied"};case"endpoint":return{failure_type:"provider",failure_code:"resource_not_found"};case"network":return{failure_type:"network",failure_code:"network_failed"};case"timeout":return{failure_type:"timeout",failure_code:"request_timeout"};case"rate_limited":return{failure_type:"rate_limit",failure_code:"rate_limited"};case"request_failed":return{failure_type:"provider",failure_code:"request_rejected"};case"truncated":return{failure_type:"response",failure_code:"output_truncated"};case"content_filtered":return{failure_type:"policy",failure_code:"content_blocked"};case"empty_response":return{failure_type:"response",failure_code:"empty_response"};case"invalid_response":return{failure_type:"response",failure_code:"malformed_response"};case"cancelled":return{failure_type:"cancelled",failure_code:"cancelled"}}}var T=class extends Error{code;retryable;details;failure;modelFailures;attempts;usage;constructor(t,n,o={}){super(n),this.name="LlmTransportError",this.code=t,this.retryable=o.retryable??!1,this.details=o.details??[],this.attempts=o.attempts??1,this.usage=o.usage??{},this.failure=Ut(o.classification??ox(t),{retryable:this.retryable,message:n,...o.context,...this.details.length>0?{details:this.details}:{}}),this.modelFailures=o.modelFailures??[]}};function ix(e){return new Promise(t=>setTimeout(t,e))}function Xt(e={},t={}){let n=c=>e[c]===void 0&&t[c]===void 0?void 0:(e[c]??0)+(t[c]??0),o=n("inputTokens"),i=n("outputTokens"),r=n("cachedInputTokens"),s=n("cacheCreationTokens");return{...o!==void 0?{inputTokens:o}:{},...i!==void 0?{outputTokens:i}:{},...r!==void 0?{cachedInputTokens:r}:{},...s!==void 0?{cacheCreationTokens:s}:{}}}async function en(e,t){let n={};for(let o=1;o<=e;o+=1)try{return{value:await t(),attempts:o,failedUsage:n}}catch(i){if(i instanceof T&&(n=Xt(n,i.usage),i.attempts=o,i.usage=n),!(i instanceof T)||!i.retryable||o===e)throw i;await ix(Math.min(3e4,1e3*2**(o-1)))}throw new Error("unreachable retry state")}function Of(e){let t=e.usage;if(!t)return{};let n=t.cache_read_input_tokens??0,o=t.cache_creation_input_tokens??0;return{inputTokens:(t.input_tokens??0)+n+o,outputTokens:t.output_tokens??0,cachedInputTokens:n,cacheCreationTokens:o}}function Rf(e){if(e instanceof T)return e;if(e instanceof dx)return new T("request_failed","Anthropic request was aborted.");if(e instanceof ax)return new T("timeout","Anthropic request timed out.",{retryable:!0});if(e instanceof sx)return new T("request_failed","Anthropic connection failed.",{retryable:!0,details:[e.message.slice(0,500)]});if(e instanceof cx){let n=e.status??0,o=n===408||n===429||n>=500,i=n===401||n===403?"auth":n===429?"rate_limited":"request_failed";return new T(i,"Anthropic request failed.",{retryable:o,details:[`status: ${n}`,e.message.slice(0,500)]})}let t=e instanceof Error?e.message:String(e);return new T("request_failed","Anthropic request failed.",{details:[t.slice(0,500)]})}var Ws=class{constructor(t,n,o){this.provider=t;this.model=n;let i={apiKey:o};t.baseUrl&&(i.baseURL=t.baseUrl),this.client=new rx({...i,maxRetries:0})}provider;model;client;params(t){let n={model:this.model.model,max_tokens:t.maxOutputTokens,stream:!1,messages:[{role:"user",content:t.user}]};return t.system.trim()&&(n.system=t.system),this.model.thinkingBudgetTokens!==void 0&&(n.thinking={type:"enabled",budget_tokens:this.model.thinkingBudgetTokens}),n}async generateText(t){let n=await en(this.provider.maxAttempts,async()=>{try{let o=await this.client.messages.create(this.params(t),{timeout:this.provider.timeoutMs,signal:t.signal}),i=Of(o);if(o.stop_reason==="max_tokens")throw new T("truncated","Provider output was truncated.",{usage:i});if(o.stop_reason==="refusal")throw new T("content_filtered","Provider filtered the response.",{usage:i});let r=o.content.filter(s=>s.type==="text").map(s=>s.text).join(`
|
|
144
|
+
`)}function xf(e){let t=e._args??[],n=t[0]?.trim()??"",o=String(e.from??"").trim(),i=String(e.to??"").trim(),r=!!e.unreleased;if(t.length>1)throw new x("changelog accepts at most one version argument.",{exitCode:B,errorCode:"CHANGELOG_TOO_MANY_ARGS",hint:"Pass a single version, or use --from/--to for a range.",data:{expected:["scriptctl changelog [version] [--from X] [--to Y] [--unreleased]"],actual:[t.join(" ")]}});if(r&&(n||o||i))throw new x("--unreleased cannot combine with version, --from, or --to.",{exitCode:B,errorCode:"CHANGELOG_SELECTOR_CONFLICT",hint:"Run `scriptctl changelog --unreleased` by itself.",data:{expected:["either --unreleased, a version, or a --from/--to range"],actual:["--unreleased with another selector"]}});if(n&&(o||i))throw new x("A version argument cannot combine with --from or --to.",{exitCode:B,errorCode:"CHANGELOG_SELECTOR_CONFLICT",hint:"Run `scriptctl changelog 0.25.10` or `scriptctl changelog --from 0.25.8 --to 0.25.10`.",data:{expected:["either a version argument, or --from/--to"],actual:[n,o?`--from ${o}`:"",i?`--to ${i}`:""].filter(Boolean)}});if(r){let d=qs(DE);return[{text:d,data:{content:d,versions:[],unreleased:!0}},G]}let s=BE(),c=GE();if(n){if(Br(n),!s.includes(n))throw Od(n,s);let d=qs(n);return[{text:d,data:{content:d,versions:[n],unreleased:!1}},G]}if(o||i){if(!o)throw new x("--from is required for range queries.",{exitCode:B,errorCode:"CHANGELOG_FROM_MISSING",hint:"Run `scriptctl changelog --from 0.25.8 --to 0.25.10`.",data:{expected:["--from <x.y.z>"],actual:[i?`--to ${i}`:"<missing>"]}});Br(o);let d=i||c;if(Br(d),!s.includes(d))throw Od(d,s);let p=s.filter(f=>Rd(f,o)>0&&Rd(f,d)<=0);if(p.length===0)throw JE(o,d);let l=jE(p);return[{text:l,data:{content:l,versions:p,from:o,to:d,unreleased:!1}},G]}if(!s.includes(c))throw Od(c,s);let a=qs(c);return[{text:a,data:{content:a,versions:[c],unreleased:!1}},G]}import*as Bt from"node:fs";import*as ri from"node:path";import{createRequire as Kx}from"node:module";import*as Hn from"node:fs";import*as So from"node:path";import*as If from"node:os";import{fileURLToPath as KE}from"node:url";function Sf(e){return e.startsWith("~")?So.join(If.homedir(),e.slice(1)):e}function zE(e){let t=Hn.readFileSync(e,"utf-8");for(let n of t.split(/\r?\n/)){let o=n.trim();if(!o||o.startsWith("#"))continue;o.startsWith("export ")&&(o=o.slice(7).trim());let i=o.indexOf("=");if(i<0)continue;let r=o.slice(0,i).trim(),s=o.slice(i+1).trim();s.length>=2&&s[0]===s[s.length-1]&&(s[0]==="'"||s[0]==='"')&&(s=s.slice(1,-1)),r&&s&&!process.env[r]&&(process.env[r]=s)}}function Nd(){let e=[],t=(process.env.SCRIPTCTL_ENV_FILE??"").trim();t&&e.push(Sf(t));let n=(process.env.SCRIPTCTL_SKILL_DIR??"").trim();n&&e.push(So.join(Sf(n),".env"));let o;try{o=KE(import.meta.url)}catch{o=process.cwd()}let i=So.resolve(o),r=new Set;for(;;){let s=So.dirname(i);if(s===i||r.has(s))break;r.add(s),e.push(So.join(s,".env")),i=s}return e}function Af(){let e=process.env.SCRIPTCTL_NO_DOTENV;if(e==="1"||e==="true"||e==="True")return;let t=new Set;for(let n of Nd()){let o;try{o=Hn.existsSync(n)?Hn.realpathSync(n):n}catch{o=n}t.has(o)||!Hn.existsSync(n)||!Hn.statSync(n).isFile()||(t.add(o),zE(n))}}var fe=class extends Error{status;code;payload;configMissing;constructor(t,n={}){super(t),this.name="ScriptOutputApiError",this.status=n.status??null,this.code=n.code??null,this.payload=n.payload,this.configMissing=n.configMissing??null}};async function Ld(e,t){if(e.updateEpisodeCount)try{await e.updateEpisodeCount(t)}catch{}}function kf(e){let t=!!e?.remote,n=!!e?.local;if(t&&n)return{mode:null,conflict:!0};if(t)return{mode:"remote",conflict:!1};if(n)return{mode:"local",conflict:!1};let o=(process.env.SCRIPTCTL_OUTPUT_MODE??"").trim().toLowerCase();if(o==="local"||o==="remote")return{mode:o,conflict:!1};if(o!=="")return{mode:null,conflict:!1};let i=typeof e?.projectGroupNo=="string"?e.projectGroupNo.trim():"",r=(process.env.SANDBOX_PROJECT_GROUP_NO??"").trim();return i!==""||r!==""?{mode:"remote",conflict:!1}:{mode:null,conflict:!1}}import*as Kr from"node:fs";import*as vf from"node:os";import*as Jr from"node:path";import{parseDocument as HE}from"yaml";function ae(e,t,n){return{id:e,mode:t,version:"1",maxOutputTokens:n,defaultProfile:"default"}}var An={"direct.episode-titles":ae("direct.episode-titles","tool",4096),"direct.batch-extract":ae("direct.batch-extract","text",16e3),"direct.episode-synopsis":ae("direct.episode-synopsis","tool",2048),"direct.synopsis-reduction":ae("direct.synopsis-reduction","tool",4096),"direct.script-synopsis":ae("direct.script-synopsis","tool",2048),"direct.asset-grouping":ae("direct.asset-grouping","text",8e3),"direct.asset-curation":ae("direct.asset-curation","text",2e4),"direct.asset-curation-audit":ae("direct.asset-curation-audit","text",2e4),"direct.location-canonicalization":ae("direct.location-canonicalization","text",2e4),"direct.state-curation":ae("direct.state-curation","text",2e4),"direct.state-binding":ae("direct.state-binding","tool",16e3),"metadata.global":ae("metadata.global","text",16e3),"metadata.descriptions":ae("metadata.descriptions","text",16e3),"synopsis.chunk":ae("synopsis.chunk","text",4096),"synopsis.episode":ae("synopsis.episode","text",4096),"synopsis.arc":ae("synopsis.arc","text",16e3),"synopsis.script-overview":ae("synopsis.script-overview","text",16e3),"ingest.body-start":ae("ingest.body-start","text",16e3),"ingest.arc-summary":ae("ingest.arc-summary","text",4096),"ingest.text-normalize":ae("ingest.text-normalize","text",32e3),"ingest.episode-assets":ae("ingest.episode-assets","tool",32e3),"ingest.name-fix":ae("ingest.name-fix","tool",16e3),"ingest.mention-resolve":ae("ingest.mention-resolve","text",8e3),"ingest.asset-extract":ae("ingest.asset-extract","text",8e3),"ingest.asset-curate":ae("ingest.asset-curate","text",32e3),"ingest.asset-recall":ae("ingest.asset-recall","text",65536),"ingest.asset-refine":ae("ingest.asset-refine","text",32e3),"ingest.state-reconcile":ae("ingest.state-reconcile","text",32e3),"ingest.asset-audit":ae("ingest.asset-audit","tool",32e3),"ingest.speaker-audit":ae("ingest.speaker-audit","tool",16e3),"ingest.comic-serial":{id:"ingest.comic-serial",mode:"document",version:"1",defaultProfile:"default"},"ingest.video-serial":ae("ingest.video-serial","video",65536)},bf=Object.keys(An).filter(Ud);function Ud(e){return Object.hasOwn(An,e)}var FE=new Set(["protocol","baseUrl","apiKey","timeoutMs","maxAttempts","videoResponseSchemaField","videoUploadMode","documentResponseSchemaField","documentUploadMode"]),QE=new Set(["provider","model","thinking","reasoning","temperature","fallbacks"]),YE=new Set(["env"]),qE=new Set(["budgetTokens"]);function ve(e,t=[]){return new x(e,{exitCode:k,errorCode:"LLM_CONFIG_INVALID",hint:"Fix the selected LLM configuration or environment and rerun `scriptctl doctor`.",data:{expected:["valid scriptctl LLM YAML configuration"],actual:t}})}function Td(e,t){let n;try{n=new URL(e)}catch{throw ve(`${t} must be an absolute URL.`)}if(n.protocol!=="http:"&&n.protocol!=="https:")throw ve(`${t} must use http or https.`);return n.toString().replace(/\/$/,"")}function Vd(e,t="provider base URL"){return Td(e,t)}function ZE(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Io(e,t){if(!ZE(e))throw ve(`${t} must be a mapping.`,[`${t}: ${typeof e}`]);return e}function Ao(e,t){if(typeof e!="string"||!e.trim())throw ve(`${t} must be a non-empty string.`);return e.trim()}function Cd(e,t,n,o){if(!Number.isInteger(e)||typeof e!="number"||e<n||o!==void 0&&e>o)throw ve(`${t} must be an integer in ${o===void 0?`[${n}, +\u221E)`:`[${n}, ${o}]`}.`);return e}function jr(e,t,n){let o=Object.keys(e).filter(i=>!t.has(i));if(o.length>0)throw ve(`${n} contains unknown fields.`,o)}function WE(e,t){let n=Io(t,`providers.${e}`);jr(n,FE,`providers.${e}`);let o=Ao(n.protocol,`providers.${e}.protocol`);if(o!=="anthropic"&&o!=="openai-compatible"&&o!=="google-gemini"&&o!=="google-vertex")throw ve(`providers.${e}.protocol is unsupported.`,[o]);let i=n.baseUrl===void 0&&o!=="openai-compatible"?null:Td(Ao(n.baseUrl,`providers.${e}.baseUrl`),`providers.${e}.baseUrl`),r="";if(o!=="google-vertex"){let c=Io(n.apiKey,`providers.${e}.apiKey`);if(jr(c,YE,`providers.${e}.apiKey`),r=Ao(c.env,`providers.${e}.apiKey.env`),!/^[A-Za-z_][A-Za-z0-9_]*$/.test(r))throw ve(`providers.${e}.apiKey.env must be an environment variable name.`)}let s={protocol:o,baseUrl:i,apiKeyEnv:r,timeoutMs:Cd(n.timeoutMs,`providers.${e}.timeoutMs`,1),maxAttempts:Cd(n.maxAttempts,`providers.${e}.maxAttempts`,1,6)};for(let c of["videoResponseSchemaField","documentResponseSchemaField"]){let a=n[c];if(a!==void 0){if(o!=="google-gemini"&&o!=="google-vertex")throw ve(`providers.${e}.${c} requires a Gemini ${c.startsWith("video")?"video":"document"} provider.`);if(a!=="responseJsonSchema"&&a!=="responseSchema")throw ve(`providers.${e}.${c} must be responseJsonSchema or responseSchema.`);s[c]=a}}for(let c of["videoUploadMode","documentUploadMode"]){let a=n[c];if(a!==void 0){if(o!=="google-gemini"&&o!=="google-vertex")throw ve(`providers.${e}.${c} requires a Gemini ${c.startsWith("video")?"video":"document"} provider.`);if(a!=="file-api"&&a!=="base64")throw ve(`providers.${e}.${c} must be file-api or base64.`);s[c]=a}}return s}function XE(e,t,n){let o=Io(t,`models.${e}`);jr(o,QE,`models.${e}`);let i=Ao(o.provider,`models.${e}.provider`),r=n[i];if(!r)throw ve(`models.${e} references an unknown provider.`,[i]);let s={provider:i,model:Ao(o.model,`models.${e}.model`)};if(o.reasoning!==void 0&&(s.reasoning=Ao(o.reasoning,`models.${e}.reasoning`)),o.fallbacks!==void 0){let c=o.fallbacks;if(!Array.isArray(c))throw ve(`models.${e}.fallbacks must be a list of model profiles.`);s.fallbacks=c.map((a,d)=>Ao(a,`models.${e}.fallbacks[${d}]`))}if(o.temperature!==void 0){let c=o.temperature;if(typeof c!="number"||!Number.isFinite(c)||c<0)throw ve(`models.${e}.temperature must be a number \u2265 0.`);s.temperature=c}if(o.thinking!==void 0){if(r.protocol!=="anthropic")throw ve(`models.${e}.thinking is only valid for anthropic providers.`);let c=Io(o.thinking,`models.${e}.thinking`);jr(c,qE,`models.${e}.thinking`),s.thinkingBudgetTokens=Cd(c.budgetTokens,`models.${e}.thinking.budgetTokens`,1024)}return s}function ex(e,t){let n=Io(e,"config");if(jr(n,new Set(["version","providers","models","tasks"]),"config"),n.version!==1)throw ve("config.version must be 1.");let o=Io(n.providers,"providers"),i={};for(let[a,d]of Object.entries(o))i[a]=WE(a,d);let r=Io(n.models,"models"),s={};for(let[a,d]of Object.entries(r))s[a]=XE(a,d,i);if(!s.default)throw ve("models.default is required.");for(let[a,d]of Object.entries(s))for(let p of d.fallbacks??[])if(!s[p]||p===a)throw ve(`models.${a}.fallbacks references an unknown or the same profile.`,[p]);let c={};if(n.tasks!==void 0){let a=Io(n.tasks,"tasks");for(let[d,p]of Object.entries(a)){if(!Ud(d))throw ve("tasks contains an unknown task id.",[d]);let l=Ao(p,`tasks.${d}`);if(!s[l])throw ve(`tasks.${d} references an unknown model profile.`,[l]);c[d]=l}}return{version:1,providers:i,models:s,tasks:c,source:"file",sourcePath:t}}var Fn={protocol:"google-gemini",baseUrl:"https://grsai.dakka.com.cn",apiKeyEnv:"GRSAI_API_KEY",timeoutMs:6e5,maxAttempts:3,videoResponseSchemaField:"responseSchema",videoUploadMode:"base64"},ti={version:1,providers:{gw:{protocol:"openai-compatible",baseUrl:null,apiKeyEnv:"PROJECT_LITELLM_GATEWAY_API_KEY",timeoutMs:3e5,maxAttempts:3},"gw-anthropic":{protocol:"anthropic",baseUrl:null,apiKeyEnv:"PROJECT_LITELLM_GATEWAY_API_KEY",timeoutMs:3e5,maxAttempts:3},"google-gemini":{protocol:"google-vertex",baseUrl:null,apiKeyEnv:"",timeoutMs:6e5,maxAttempts:3},nnyyai:{protocol:"google-gemini",baseUrl:"https://api.nnyyai.com",apiKeyEnv:"NNYYAI_API_KEY",timeoutMs:6e5,maxAttempts:3,videoResponseSchemaField:"responseSchema",videoUploadMode:"base64",documentResponseSchemaField:"responseSchema",documentUploadMode:"base64"},grsai:Fn},models:{default:{provider:"gw",model:"deepseek-v4-flash-packy",temperature:0},synopsis:{provider:"gw",model:"deepseek-v4.1-flash-huoshan",temperature:0},"ingest-low":{provider:"gw",model:"deepseek-v4-flash-packy",temperature:0},"ingest-normalize":{provider:"gw",model:"claude-sonnet-4-6-aihubmix",temperature:0},"ingest-video":{provider:"nnyyai",model:"gemini-3.8-flash"},"ingest-comic":{provider:"nnyyai",model:"gemini-3.8-flash"},"review-text":{provider:"google-gemini",model:"gemini-3.8-flash",temperature:0,fallbacks:["review-grok-4.7","review-grok-4.6","review-grok-4.5"]},"review-comic":{provider:"nnyyai",model:"gemini-3.8-flash",temperature:0,fallbacks:["review-grok-4.7","review-grok-4.6","review-grok-4.5"]},"review-agent":{provider:"nnyyai",model:"gemini-3.8-flash",temperature:0,fallbacks:["review-grok-4.7","review-grok-4.6","review-grok-4.5"]},"review-grok-4.7":{provider:"gw",model:"grok-4.7-packy"},"review-grok-4.6":{provider:"gw",model:"grok-4.6-packy"},"review-grok-4.5":{provider:"gw",model:"grok-4.5-packy"},"review-grsai-3.8":{provider:"grsai",model:"gemini-3.8-flash"},"review-grsai-3.7":{provider:"grsai",model:"gemini-3.7-flash"},"review-grsai-3.6":{provider:"grsai",model:"gemini-3.6-flash"},reskin:{provider:"google-gemini",model:"gemini-3.8-flash"},"reskin-claude":{provider:"gw-anthropic",model:"claude-opus-5-5-nnyy-offical"}},tasks:{"synopsis.chunk":"synopsis","synopsis.episode":"synopsis","synopsis.arc":"synopsis","synopsis.script-overview":"synopsis","ingest.body-start":"ingest-low","ingest.arc-summary":"ingest-low","ingest.text-normalize":"ingest-low","ingest.mention-resolve":"ingest-low","ingest.asset-recall":"ingest-low","ingest.asset-audit":"ingest-normalize","ingest.episode-assets":"ingest-normalize","ingest.name-fix":"ingest-normalize","ingest.video-serial":"ingest-video","ingest.comic-serial":"ingest-comic"},source:"builtin",sourcePath:null};function tx(){let e=(process.env.PROJECT_LITELLM_GATEWAY_BASE_URL??"").trim(),t=e?Td(e,"PROJECT_LITELLM_GATEWAY_BASE_URL"):null;return{...ti,providers:{gw:{...ti.providers.gw,baseUrl:t},"gw-anthropic":{...ti.providers["gw-anthropic"],baseUrl:t?t.replace(/\/v1\/?$/,""):null},"google-gemini":{...ti.providers["google-gemini"]},nnyyai:{...ti.providers.nnyyai},grsai:{...Fn}},models:{...ti.models},tasks:{...ti.tasks}}}function nx(){let e=(process.env.XDG_CONFIG_HOME??"").trim();return e?Jr.join(e,"scriptctl","llm.yaml"):Jr.join(vf.homedir(),".config","scriptctl","llm.yaml")}function Pd(e){if(!Kr.existsSync(e))throw ve("LLM configuration file does not exist.",[e]);let t=HE(Kr.readFileSync(e,"utf-8"),{uniqueKeys:!0});if(t.errors.length>0)throw ve("LLM configuration YAML is invalid.",t.errors.map(o=>o.message));let n=t.toJS();return ex(n,Jr.resolve(e))}function ko(e){let t=(e??"").trim();if(t)return Pd(t);let n=(process.env.SCRIPTCTL_LLM_CONFIG??"").trim();if(n)return Pd(n);let o=nx();return Kr.existsSync(o)?Pd(o):tx()}import*as Bf from"node:crypto";import*as Fd from"node:fs";import rx,{APIConnectionError as sx,APIConnectionTimeoutError as ax,APIError as cx,APIUserAbortError as dx}from"@anthropic-ai/sdk";var $d=1e8;function ox(e){switch(e){case"auth":return{failure_type:"authentication",failure_code:"authentication_failed"};case"permission_denied":return{failure_type:"authorization",failure_code:"permission_denied"};case"endpoint":return{failure_type:"provider",failure_code:"resource_not_found"};case"network":return{failure_type:"network",failure_code:"network_failed"};case"timeout":return{failure_type:"timeout",failure_code:"request_timeout"};case"rate_limited":return{failure_type:"rate_limit",failure_code:"rate_limited"};case"request_failed":return{failure_type:"provider",failure_code:"request_rejected"};case"truncated":return{failure_type:"response",failure_code:"output_truncated"};case"content_filtered":return{failure_type:"policy",failure_code:"content_blocked"};case"empty_response":return{failure_type:"response",failure_code:"empty_response"};case"invalid_response":return{failure_type:"response",failure_code:"malformed_response"};case"cancelled":return{failure_type:"cancelled",failure_code:"cancelled"}}}var T=class extends Error{code;retryable;details;failure;modelFailures;attempts;usage;constructor(t,n,o={}){super(n),this.name="LlmTransportError",this.code=t,this.retryable=o.retryable??!1,this.details=o.details??[],this.attempts=o.attempts??1,this.usage=o.usage??{},this.failure=Ut(o.classification??ox(t),{retryable:this.retryable,message:n,...o.context,...this.details.length>0?{details:this.details}:{}}),this.modelFailures=o.modelFailures??[]}};function ix(e){return new Promise(t=>setTimeout(t,e))}function Xt(e={},t={}){let n=c=>e[c]===void 0&&t[c]===void 0?void 0:(e[c]??0)+(t[c]??0),o=n("inputTokens"),i=n("outputTokens"),r=n("cachedInputTokens"),s=n("cacheCreationTokens");return{...o!==void 0?{inputTokens:o}:{},...i!==void 0?{outputTokens:i}:{},...r!==void 0?{cachedInputTokens:r}:{},...s!==void 0?{cacheCreationTokens:s}:{}}}async function en(e,t){let n={};for(let o=1;o<=e;o+=1)try{return{value:await t(),attempts:o,failedUsage:n}}catch(i){if(i instanceof T&&(n=Xt(n,i.usage),i.attempts=o,i.usage=n),!(i instanceof T)||!i.retryable||o===e)throw i;await ix(Math.min(3e4,1e3*2**(o-1)))}throw new Error("unreachable retry state")}function Of(e){let t=e.usage;if(!t)return{};let n=t.cache_read_input_tokens??0,o=t.cache_creation_input_tokens??0;return{inputTokens:(t.input_tokens??0)+n+o,outputTokens:t.output_tokens??0,cachedInputTokens:n,cacheCreationTokens:o}}function Rf(e){if(e instanceof T)return e;if(e instanceof dx)return new T("request_failed","Anthropic request was aborted.");if(e instanceof ax)return new T("timeout","Anthropic request timed out.",{retryable:!0});if(e instanceof sx)return new T("request_failed","Anthropic connection failed.",{retryable:!0,details:[e.message.slice(0,500)]});if(e instanceof cx){let n=e.status??0,o=n===408||n===429||n>=500,i=n===401||n===403?"auth":n===429?"rate_limited":"request_failed";return new T(i,"Anthropic request failed.",{retryable:o,details:[`status: ${n}`,e.message.slice(0,500)]})}let t=e instanceof Error?e.message:String(e);return new T("request_failed","Anthropic request failed.",{details:[t.slice(0,500)]})}var Ws=class{constructor(t,n,o){this.provider=t;this.model=n;let i={apiKey:o};t.baseUrl&&(i.baseURL=t.baseUrl),this.client=new rx({...i,maxRetries:0})}provider;model;client;params(t){let n={model:this.model.model,max_tokens:t.maxOutputTokens,stream:!1,messages:[{role:"user",content:t.user}]};return t.system.trim()&&(n.system=t.system),this.model.thinkingBudgetTokens!==void 0&&(n.thinking={type:"enabled",budget_tokens:this.model.thinkingBudgetTokens}),n}async generateText(t){let n=await en(this.provider.maxAttempts,async()=>{try{let o=await this.client.messages.create(this.params(t),{timeout:this.provider.timeoutMs,signal:t.signal}),i=Of(o);if(o.stop_reason==="max_tokens")throw new T("truncated","Provider output was truncated.",{usage:i});if(o.stop_reason==="refusal")throw new T("content_filtered","Provider filtered the response.",{usage:i});let r=o.content.filter(s=>s.type==="text").map(s=>s.text).join(`
|
|
145
145
|
`).trim();if(!r)throw new T("empty_response","Provider returned an empty text response.",{usage:i});return{text:r,finishReason:o.stop_reason??"",usage:i,raw:o}}catch(o){throw Rf(o)}});return{...n.value,attempts:n.attempts,usage:Xt(n.failedUsage,n.value.usage)}}async generateTool(t){let n=await en(this.provider.maxAttempts,async()=>{try{let o={name:t.tool.name,description:t.tool.description,input_schema:{type:"object",...t.tool.inputSchema}},i=await this.client.messages.create({...this.params(t),tools:[o],tool_choice:{type:"tool",name:t.tool.name,disable_parallel_tool_use:!0}},{timeout:this.provider.timeoutMs,signal:t.signal}),r=Of(i);if(i.stop_reason==="max_tokens")throw new T("truncated","Provider tool output was truncated.",{usage:r});if(i.stop_reason==="refusal")throw new T("content_filtered","Provider filtered the response.",{usage:r});let s=i.content.find(c=>c.type==="tool_use"&&c.name===t.tool.name);if(!s||s.type!=="tool_use")throw new T("invalid_response","Provider did not return the required tool call.",{usage:r});return{input:s.input,finishReason:i.stop_reason??"",usage:r,raw:i}}catch(o){throw Rf(o)}});return{...n.value,attempts:n.attempts,usage:Xt(n.failedUsage,n.value.usage)}}};import*as Jd from"node:fs";import*as jd from"node:path";import{File as gx}from"node:buffer";import{Agent as hx,fetch as ea,FormData as yx}from"undici";function px(e){return typeof e=="object"&&e!==null}function Dd(e){let t=[],n=new Set,o=e;for(;px(o)&&!n.has(o);)n.add(o),t.push(o),o=o.cause;return t}function Xs(e){for(let t of Dd(e)){if(typeof t.status=="number")return t.status;if(typeof t.statusCode=="number")return t.statusCode}return null}function lx(e){for(let t of Dd(e))if(typeof t.code=="string")return t.code}function ux(e){for(let t of Dd(e))if(typeof t.name=="string")return t.name}function fx(e){let t=ux(e);return t==="AbortError"||t==="TimeoutError"||t==="RequestTimeoutError"||t==="APIConnectionTimeoutError"}function mx(e){return e?["ENOTFOUND","EAI_AGAIN"].includes(e)?{failure_type:"network",failure_code:"dns_failed"}:e==="ECONNREFUSED"?{failure_type:"network",failure_code:"connection_refused"}:["ECONNRESET","EPIPE","UND_ERR_SOCKET"].includes(e)?{failure_type:"network",failure_code:"connection_reset"}:["ENETUNREACH","EHOSTUNREACH"].includes(e)?{failure_type:"network",failure_code:"network_unreachable"}:e.startsWith("ERR_TLS_")||e.startsWith("ERR_SSL_")||e.startsWith("CERT_")||["DEPTH_ZERO_SELF_SIGNED_CERT","SELF_SIGNED_CERT_IN_CHAIN","UNABLE_TO_VERIFY_LEAF_SIGNATURE"].includes(e)?{failure_type:"network",failure_code:"tls_failed"}:["ETIMEDOUT","UND_ERR_CONNECT_TIMEOUT"].includes(e)?{failure_type:"timeout",failure_code:"connect_timeout"}:{failure_type:"network",failure_code:"network_failed"}:{failure_type:"network",failure_code:"network_failed"}}function ni(e,t,n,o,i={}){if(t?.aborted)return new T("cancelled",n,{details:[o],classification:{failure_type:"cancelled",failure_code:"cancelled"},context:i});let r=lx(e),s=fx(e)?{failure_type:"timeout",failure_code:"request_timeout"}:mx(r),c=s.failure_type==="timeout"?"timeout":"network";return new T(c,n,{retryable:!0,details:[o],classification:s,context:{...i,...r?{system_code:r}:{}}})}function oi(e,t,n,o={}){let i,r,s=!1;return e===401?(i="auth",r={failure_type:"authentication",failure_code:"authentication_failed"}):e===403?(i="permission_denied",r={failure_type:"authorization",failure_code:"permission_denied"}):e===404?(i="endpoint",r={failure_type:"provider",failure_code:"resource_not_found"}):e===408?(i="timeout",r={failure_type:"timeout",failure_code:"request_timeout"},s=!0):e===413&&o.operation==="upload"?(i="request_failed",r={failure_type:"media",failure_code:"media_too_large"}):e===415&&o.operation==="upload"?(i="request_failed",r={failure_type:"media",failure_code:"unsupported_media"}):e===429?(i="rate_limited",r={failure_type:"rate_limit",failure_code:"rate_limited"},s=!0):e>=500?(i="request_failed",r={failure_type:"provider",failure_code:"provider_unavailable"},s=!0):o.operation==="upload"?(i="request_failed",r={failure_type:"media",failure_code:"media_upload_failed"}):(i="request_failed",r={failure_type:"provider",failure_code:"request_rejected"}),new T(i,t,{retryable:s,details:[`status: ${e}`,n],classification:r,context:{...o,http_status:e}})}var wx=2e3;function _x(e){return new Promise(t=>setTimeout(t,e))}function Gd(e,t,n,o){if(e instanceof T)return e;let i=e instanceof Error?e.message:String(e),r=Xs(e),s={provider:"doubao",model:o,operation:n};return r!==null?oi(r,`Doubao ${n} failed.`,i.slice(0,500),s):ni(e,t,`Doubao ${n} failed.`,i.slice(0,500),s)}function Ex(e){if(!e)return{};let t=n=>typeof n=="number"?n:void 0;return{inputTokens:t(e.input_tokens),outputTokens:t(e.output_tokens)}}function xx(e){let t=[];for(let n of e.output??[])if(n.type==="message")for(let o of n.content??[])o.type==="output_text"&&typeof o.text=="string"&&t.push(o.text);return t.join("").trim()}var ta=class{constructor(t,n,o,i,r,s){this.model=t;this.timeoutMs=n;this.maxAttempts=o;this.client=s??Sx(i,r,n)}model;timeoutMs;maxAttempts;client;async run(t){let{value:n}=await en(this.maxAttempts,async()=>{try{return await this.client.uploadFile({filePath:t.localPath,mimeType:t.localMime,fps:t.fps})}catch(i){throw Gd(i,t.signal,"upload",this.model)}});if(!n.id)throw new T("invalid_response","Doubao upload returned no file id.");let o=await this.pollActive(n.id,t.signal);try{return await this.generateOnce(o,t)}finally{await this.client.deleteFile({id:o}).catch(()=>{})}}async pollActive(t,n){let o=Date.now()+this.timeoutMs,i="processing";for(;i==="processing"||i==="";){if(n?.aborted)throw new T("cancelled","Doubao upload aborted.",{context:{provider:"doubao",model:this.model,operation:"file_poll"}});if(Date.now()>=o)throw new T("timeout","Doubao file processing timed out.",{retryable:!0,classification:{failure_type:"timeout",failure_code:"media_processing_timeout"},context:{provider:"doubao",model:this.model,operation:"file_poll"}});await _x(wx);let r;try{r=await this.client.getFile({id:t})}catch(s){throw Gd(s,n,"file_poll",this.model)}i=(r.status??"").toLowerCase()}if(i==="failed"||i==="error")throw new T("invalid_response","Doubao file processing failed.",{classification:{failure_type:"media",failure_code:"media_processing_failed"},context:{provider:"doubao",model:this.model,operation:"file_poll"}});return t}async generateOnce(t,n){let o={model:this.model,input:[{role:"user",content:[{type:"input_video",file_id:t},{type:"input_text",text:n.user}]}]};return n.system?.trim()&&(o.instructions=n.system),n.responseJsonSchema&&(o.text={format:{type:"json_schema",name:"video_serial",schema:n.responseJsonSchema}}),this.generateResponse(o,n.signal,!!n.responseJsonSchema,n.acceptsText)}async generateText(t){let n=this.textParams(t);return t.responseFormat&&(n.text={format:{type:t.responseFormat}}),this.generateResponse(n,t.signal,!!t.responseFormat)}async generateDocument(t,n){let o=t.media.kind==="base64"?t.media.data:n?Jd.readFileSync(n).toString("base64"):void 0;if(!o)throw new T("invalid_response","Doubao PDF recovery requires the original document bytes.");let i={model:this.model,input:[{role:"user",content:[{type:"input_file",filename:n?jd.basename(n):"document.pdf",file_data:`data:application/pdf;base64,${o}`},{type:"input_text",text:t.user}]}]};return t.system?.trim()&&(i.instructions=t.system),t.responseJsonSchema&&(i.text={format:{type:"json_schema",name:"document",schema:t.responseJsonSchema}}),this.generateResponse(i,t.signal,!!t.responseJsonSchema)}async generateTool(t){let n=this.textParams(t);n.text={format:{type:"json_schema",name:t.tool.name,description:t.tool.description,schema:t.tool.inputSchema}};let o=await this.generateResponse(n,t.signal,!0);return{input:JSON.parse(o.text),finishReason:o.finishReason,attempts:o.attempts,usage:o.usage,raw:o.raw}}textParams(t){return{model:this.model,instructions:t.system,input:[{role:"user",content:[{type:"input_text",text:t.user}]}]}}async generateResponse(t,n,o,i){let{value:r,attempts:s,failedUsage:c}=await en(this.maxAttempts,async()=>{let a;try{a=await this.client.createResponse(t,n)}catch(f){throw Gd(f,n,"generate",this.model)}let d=(a.status??"").toLowerCase(),p=Ex(a.usage);if(d==="incomplete"){let f=a.incomplete_details?.reason??"unknown";throw f==="max_output_tokens"||f==="length"?new T("truncated","Doubao output was truncated.",{usage:p}):new T("content_filtered",`Doubao response incomplete (reason=${f}).`,{usage:p})}let l=xx(a);if(!l)throw new T("empty_response","Doubao returned an empty response.",{retryable:!0,usage:p});if(i&&!i(l))throw new T("invalid_response","Doubao response does not match the requested output format.",{retryable:!0,usage:p,context:{provider:"doubao",model:this.model,operation:"generate"}});if(o)try{JSON.parse(l)}catch{throw new T("invalid_response","Doubao returned malformed JSON for a structured response.",{retryable:!0,usage:p,context:{provider:"doubao",model:this.model,operation:"generate"}})}return{text:l,usage:p,raw:a}});return{text:r.text,finishReason:"STOP",attempts:s,usage:Xt(c,r.usage),raw:r.raw}}},Bd=class extends Error{constructor(n,o){super(o);this.status=n;this.name="HttpError"}status};function Sx(e,t,n){let o=t.replace(/\/$/,""),i={Authorization:`Bearer ${e}`},r=new hx({headersTimeout:n,bodyTimeout:n});function s(a){let d=AbortSignal.timeout(n);return a?AbortSignal.any([a,d]):d}async function c(a){let d=await a.text().catch(()=>"");throw new Bd(a.status,d.slice(0,500))}return{async uploadFile({filePath:a,mimeType:d,fps:p}){let l=new yx,f=Jd.readFileSync(a);l.append("file",new gx([f],jd.basename(a),{type:d})),l.append("purpose","user_data"),l.append("preprocess_configs[video][fps]",String(p));let u=await ea(`${o}/files`,{method:"POST",headers:i,body:l,signal:s(),dispatcher:r});return u.ok||await c(u),await u.json()},async getFile({id:a}){let d=await ea(`${o}/files/${a}`,{headers:i,signal:s(),dispatcher:r});return d.ok||await c(d),await d.json()},async createResponse(a,d){let p=await ea(`${o}/responses`,{method:"POST",headers:{...i,"Content-Type":"application/json"},body:JSON.stringify(a),signal:s(d),dispatcher:r});return p.ok||await c(p),await p.json()},async deleteFile({id:a}){let d=await ea(`${o}/files/${a}`,{method:"DELETE",headers:i,signal:s(),dispatcher:r});d.ok||await c(d)}}}import{GoogleAuth as Ix}from"google-auth-library";function na(){let e=process.env.GOOGLE_CLOUD_PROJECT?.trim();if(!e)throw new Error("GOOGLE_CLOUD_PROJECT is required for official Vertex AI");return e}var Mf=new Ix({scopes:["https://www.googleapis.com/auth/cloud-platform"]});import*as Cf from"node:fs";import{createRequire as Nx}from"node:module";import*as oa from"node:fs";import*as Ax from"node:http";import*as kx from"node:https";import{HttpsProxyAgent as bx}from"https-proxy-agent";var Lf="https://generativelanguage.googleapis.com";function vx(e,t){let n=new URL(e??Lf);return n.pathname=`${n.pathname.replace(/\/+$/,"")}/upload/v1beta/files`,n.searchParams.set("key",t),n}function Ox(e,t){let n=new URL(t??Lf),o=new URL(e,n);if(!t)return o;o.protocol=n.protocol,o.host=n.host;let i=n.pathname.replace(/\/+$/,"");return i&&o.pathname!==i&&!o.pathname.startsWith(`${i}/`)&&(o.pathname=`${i}/${o.pathname.replace(/^\/+/,"")}`),o}function Hi(e,t){if(!t)return e;let n=e.split(t).join("[REDACTED]"),o=encodeURIComponent(t);return o!==t&&(n=n.split(o).join("[REDACTED]")),n}function Rx(e){return e?new bx(e):void 0}function Nf(e,t,n,o){return new Promise((i,r)=>{let c=(e.protocol==="http:"?Ax:kx).request({...t,agent:e.protocol==="https:"?t.agent:void 0,protocol:e.protocol,hostname:e.hostname,port:e.port||void 0,path:`${e.pathname}${e.search}`},a=>{let d="";a.on("data",p=>d+=p),a.on("end",()=>i({status:a.statusCode??0,headers:a.headers,body:d}))});if(c.on("error",r),o){if(o.aborted){c.destroy(new Error("aborted"));return}o.addEventListener("abort",()=>c.destroy(new Error("aborted")),{once:!0})}n&&typeof n.pipe=="function"?n.pipe(c):(n&&c.write(n),c.end())})}function Mx(e,t){let n=e[t];return Array.isArray(n)?n[0]??"":n??""}async function Uf(e){let t=oa.statSync(e.filePath).size,o={agent:Rx(e.proxyUrl??""),timeout:e.timeoutMs},i=vx(e.baseUrl,e.apiKey),r=l=>Hi(l,e.apiKey),s;try{s=await Nf(i,{...o,method:"POST",headers:{"X-Goog-Upload-Protocol":"resumable","X-Goog-Upload-Command":"start","X-Goog-Upload-Header-Content-Length":String(t),"X-Goog-Upload-Header-Content-Type":e.mimeType,"Content-Type":"application/json"}},JSON.stringify({file:{}}),e.signal)}catch(l){let f=r(l instanceof Error?l.message:String(l));throw ni(l,e.signal,"Gemini upload start failed.",f,{operation:"upload"})}let c=Mx(s.headers,"x-goog-upload-url");if(s.status<200||s.status>=300)throw oi(s.status,"Gemini upload start failed.",r(s.body).slice(0,300),{operation:"upload"});if(!c)throw new T("invalid_response","Gemini upload start returned no upload URL.",{details:[r(s.body).slice(0,300)],context:{operation:"upload",http_status:s.status}});let a=Ox(c,e.baseUrl),d;try{d=await Nf(a,{...o,method:"POST",headers:{"Content-Length":String(t),"X-Goog-Upload-Offset":"0","X-Goog-Upload-Command":"upload, finalize"}},oa.createReadStream(e.filePath),e.signal)}catch(l){let f=r(l instanceof Error?l.message:String(l));throw ni(l,e.signal,"Gemini upload transfer failed.",f,{operation:"upload"})}if(d.status<200||d.status>=300)throw oi(d.status,"Gemini upload transfer failed.",r(d.body).slice(0,300),{operation:"upload"});let p;try{p=JSON.parse(d.body)}catch{throw new T("invalid_response","Gemini upload returned invalid JSON.",{details:[r(d.body).slice(0,300)]})}if(!p.file)throw new T("invalid_response","Gemini upload returned no file.",{details:[r(d.body).slice(0,300)]});return p.file}var Lx=new Set(["SAFETY","PROHIBITED_CONTENT","RECITATION","BLOCKLIST","SPII","IMAGE_SAFETY","IMAGE_PROHIBITED_CONTENT","IMAGE_RECITATION","ESCALATION"]),Ux=new Set(["LANGUAGE","OTHER","MALFORMED_FUNCTION_CALL","IMAGE_OTHER","NO_IMAGE","UNEXPECTED_TOOL_CALL","TOO_MANY_TOOL_CALLS","MISSING_THOUGHT_SIGNATURE","MALFORMED_RESPONSE"]);function Kd(e){switch(e){case"SAFETY":case"PROHIBITED_CONTENT":case"BLOCKLIST":case"SPII":case"RECITATION":case"IMAGE_SAFETY":case"IMAGE_PROHIBITED_CONTENT":case"IMAGE_RECITATION":case"ESCALATION":case"OTHER":return e;case"":case"BLOCK_REASON_UNSPECIFIED":case"FINISH_REASON_UNSPECIFIED":return"UNSPECIFIED";default:return"UNKNOWN"}}function Pf(e){if(e?.length)return e.map(t=>({category:t.category??"UNSPECIFIED",probability:t.probability??"UNSPECIFIED",blocked:t.blocked??!1}))}function Px(e){if(typeof e!="object"||e===null)return{};let t=e,n=o=>typeof o=="number"?o:void 0;return{inputTokens:n(t.promptTokenCount),outputTokens:n(t.candidatesTokenCount)}}function Cx(e){return/-c\d+$/.test(e)}function Tx(e){let t=e.indexOf("{"),n=e.lastIndexOf("}");if(t<0||n<t)throw new SyntaxError("JSON object not found");return e.slice(t,n+1)}var Vx=2e3;function $x(e){return new Promise(t=>setTimeout(t,e))}function zd(e,t,n,o,i,r){if(e instanceof T)return new T(e.code,Hi(e.message,o),{retryable:e.retryable,details:e.details.map(d=>Hi(d,o)),attempts:e.attempts,usage:e.usage,classification:Ui(e.failure),context:{...Ar(e.failure),provider:i,model:r,operation:n},modelFailures:e.modelFailures});let s=Hi(e instanceof Error?e.message:String(e),o),c=Xs(e),a={provider:i,model:r,operation:n};return c!==null?oi(c,`Gemini ${n} failed.`,s.slice(0,500),a):ni(e,t,`Gemini ${n} failed.`,s.slice(0,500),a)}var Fi=class{constructor(t,n,o,i){this.provider=t;this.model=n;this.apiKey=o;this.client=i??Gx(o,t.timeoutMs,t.baseUrl,t.protocol==="google-vertex")}provider;model;apiKey;client;async prepare(t,n,o,i){return o==="base64"||this.provider.protocol==="google-vertex"?{kind:"base64",data:Cf.readFileSync(t,"base64"),mimeType:n}:{kind:"file-api",file:await this.uploadFile(t,n,i)}}async uploadFile(t,n,o){let{value:i}=await en(this.provider.maxAttempts,async()=>{try{return await this.client.files.upload({file:t,config:{mimeType:n}})}catch(s){throw zd(s,o,"upload",this.apiKey,this.model.provider,this.model.model)}}),r=await this.pollActive(i,o);if(!r.name||!r.uri)throw new T("invalid_response","Gemini upload returned no file reference.",{context:{provider:this.model.provider,model:this.model.model,operation:"upload"}});return{name:r.name,uri:r.uri,mimeType:r.mimeType??n}}async pollActive(t,n){let o=t,i=Date.now()+this.provider.timeoutMs;for(;(o.state??"").toUpperCase()==="PROCESSING";){if(n?.aborted)throw new T("cancelled","Gemini upload aborted.",{context:{provider:this.model.provider,model:this.model.model,operation:"file_poll"}});if(Date.now()>=i)throw new T("timeout","Gemini file processing timed out.",{retryable:!0,classification:{failure_type:"timeout",failure_code:"media_processing_timeout"},context:{provider:this.model.provider,model:this.model.model,operation:"file_poll"}});if(await $x(Vx),!o.name)throw new T("invalid_response","Gemini upload returned no file name to poll.",{context:{provider:this.model.provider,model:this.model.model,operation:"file_poll"}});try{o=await this.client.files.get({name:o.name})}catch(r){throw zd(r,n,"file_poll",this.apiKey,this.model.provider,this.model.model)}}if((o.state??"").toUpperCase()==="FAILED")throw new T("invalid_response","Gemini file processing failed.",{details:[Hi(o.error?.message??"unknown media error",this.apiKey)],classification:{failure_type:"media",failure_code:"media_processing_failed"},context:{provider:this.model.provider,model:this.model.model,operation:"file_poll"}});return o}async generateMedia(t,n){let o=!!t.responseJsonSchema&&Cx(this.model.model),i={mediaResolution:"MEDIA_RESOLUTION_HIGH"},r=[t.system?.trim(),o?`\u8F93\u51FA\u5FC5\u987B\u662F\u4E00\u4E2A\u53EF\u89E3\u6790\u7684 JSON \u5BF9\u8C61\u3002\u53EA\u8FD4\u56DE JSON\uFF0C\u4E0D\u8981\u8F93\u51FA\u4EFB\u4F55\u989D\u5916\u6587\u5B57\u6216 Markdown \u4EE3\u7801\u5757\u3002
|
|
146
146
|
\u4EE5\u4E0B\u662F\u5B8C\u6574\u8F93\u51FA JSON Schema\u3002\u4E25\u683C\u9075\u5B88\u6240\u6709\u5C42\u7EA7\u7684\u5B57\u6BB5\u540D\u3001\u7C7B\u578B\u3001required\u3001\u679A\u4E3E\u3001\u683C\u5F0F\u7EA6\u675F\u548C description\uFF1B\u4E0D\u5F97\u81EA\u884C\u6539\u540D\u6216\u7701\u7565\u5FC5\u586B\u5B57\u6BB5\u3002\u8FD4\u56DE\u7B26\u5408\u8BE5\u5B9A\u4E49\u7684\u6570\u636E\u5BF9\u8C61\uFF0C\u4E0D\u8981\u8FD4\u56DE schema \u672C\u8EAB\u3002
|
|
147
147
|
<output_json_schema>
|
|
@@ -216,9 +216,9 @@ ${s}`);continue}let c=i.length>1?i[1]??"":"";c||(c=n),n=c;let a=[];s&&a.push(`${
|
|
|
216
216
|
|
|
217
217
|
`),a.length>0]}var Ap=class extends Error{};function zm(e){return e.replace(/^/,"").replace(/\r\n?/g,`
|
|
218
218
|
`)}function sS(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{throw new Ap("source is not valid UTF-8")}}async function Sa(e,t){if(t===".docx"){let[n]=await Km(e);return zm(n)}return zm(sS(Hm.readFileSync(e)))}import{z as Ia}from"zod";function kp(e,t){let n=/^text:[^:]+:\d+:(\d+):(\d+):\d+$/.exec(e);if(!n)throw new Error(`Invalid text ingest identity: ${e}`);let o=Number(n[1]),i=Number(n[2]);if(o>=i)throw new Error(`Empty text ingest window: ${e}`);return{start_line:t+o+1,end_line:t+i}}function bp(e,t,n){return{kind:"text",document_id:t,ranges:[kp(e,n)]}}function Fm(e,t,n){for(let o of e.episodes)for(let i of o.scenes)for(let r of i.actions){let s=Ia.object({scriptctl:Ia.record(Ia.string(),Ia.json()).optional()}).parse(r.extend??{});r.extend={...r.extend,scriptctl:{...s.scriptctl,source:bp(r.identity_key,t,n)}}}}var aS=Ye.object({source:Ye.object({kind:Ye.literal("text"),sha256:Ye.string().length(64),path:Ye.string()})}),cS=Ye.object({version:Ye.literal(3),episode:Ye.record(Ye.string(),Ye.string()),action:Ye.record(Ye.string(),Ye.string())});function jt(e){throw new x(e,{exitCode:k,errorCode:"REVIEW_TEXT_SOURCE_INVALID",hint:"Pass -s to the text ingest workspace, or its original txt/md/docx with the ingest workspace beside script.json. Keep pass1/source.txt, body_start.json and v4_identity_map.json."})}async function Qm(e,t,n){let o=Wn.statSync(e).isDirectory(),i=o?Kt.resolve(e):Kt.dirname(Kt.resolve(t)),r=y=>{let _=Kt.join(i,y);return Wn.existsSync(_)||jt(`Text ingest artifact missing: ${_}`),JSON.parse(Wn.readFileSync(_,"utf8"))},s=aS.parse(r("manifest.json")),c=Kt.join(i,"pass1/source.txt");Wn.existsSync(c)||jt("Text review requires the normalized original source snapshot.");let a=Wn.readFileSync(c,"utf8");if(_e(a)!==s.source.sha256&&jt("The original text snapshot has changed since ingest."),!o){let y=await Sa(e,Kt.extname(e).toLowerCase());_e(y)!==s.source.sha256&&jt("The supplied text does not match this ingest source.")}let d=a.split(`
|
|
219
|
-
`),{line:p}=Ye.object({line:Ye.number().int().nonnegative()}).parse(r("pass1/body_start.json"));p>=d.length&&jt("Text body start is outside the source snapshot.");let l=cS.parse(r("v4_identity_map.json")),f=Ro(JSON.parse(Wn.readFileSync(t,"utf8")));f.version!==4&&jt("Text source review requires the ingested Script v4.");let u=ya(s.source.sha256),m=Object.entries(l.episode).map(([y,_])=>({id:_,...kp(y,p)})).sort((y,_)=>y.start_line-_.start_line);m.some(y=>y.end_line>d.length)&&jt("An episode's ingest window is outside the original source.");let h=f.episodes.filter(y=>!n?.length||n.includes(y.no)).map(y=>{let _=m.filter(A=>A.id===y.id);_.length!==1&&jt(`Episode ${y.no} has no unambiguous text source identity.`);let S=_[0],E=m[m.indexOf(S)+1];return{episode:y.no,start_line:m.indexOf(S)===0?p+1:S.start_line,end_line:E?E.end_line:d.length}});h.length||jt("No selected episodes exist in this script.");let g=new Map,w=new Map(Object.entries(l.action).map(([y,_])=>[_,bp(y,u,p)]));for(let y of bn(f)){if(!h.some(E=>E.episode===y.scene.ep.no))continue;let _=Ye.object({scriptctl:Ye.object({source:Sp.optional()}).optional()}).safeParse(y.raw.extend??{});_.success||jt(`Invalid text source metadata on ${y.anchor}.`);let S=_.data.scriptctl?.source??w.get(y.anchor);S&&(S.document_id!==u&&jt(`Action ${y.anchor} belongs to a different text document.`),S.ranges.some(E=>E.start_line>E.end_line||E.end_line>d.length)&&jt(`Invalid source lines on ${y.anchor}.`),g.set(y.anchor,S))}return{document_id:u,title:Kt.basename(s.source.path),path:c,lines:d,episodes:h,references:g}}var qm="review-agent";function Aa(e,t){let n=t||qm,o=e.models[n];if(!o)throw new x(`LLM profile "${n}" is not defined.`,{exitCode:k,errorCode:"REVIEW_PROFILE_UNKNOWN",hint:`Define it under models, or pick one of: ${Object.keys(e.models).join(", ")}.`,data:{expected:["a defined models entry"],actual:[n]}});let i=e.providers[o.provider];if(!i)throw new x(`Provider "${o.provider}" is not defined.`,{exitCode:k,errorCode:"REVIEW_PROVIDER_UNKNOWN",hint:`Available providers: ${Object.keys(e.providers).join(", ")}.`,data:{expected:["a defined providers entry"],actual:[o.provider]}});let r=(process.env[i.apiKeyEnv]??"").trim();if(!r&&i.protocol!=="google-vertex")throw new x(`${i.apiKeyEnv} is not set.`,{exitCode:k,errorCode:"REVIEW_API_KEY_MISSING",hint:`Export ${i.apiKeyEnv} for provider ${o.provider}.`,data:{expected:[i.apiKeyEnv],actual:["<empty>"]}});return{provider:o.provider,model:o.model,baseUrl:i.baseUrl,apiKey:r,maxAttempts:i.maxAttempts,protocol:i.protocol,responseSchemaField:i.videoResponseSchemaField}}function Ym(e){let{baseUrl:t,...n}=e;return{...n,...t?{baseUrl:t}:{}}}function lS(e,t){let
|
|
219
|
+
`),{line:p}=Ye.object({line:Ye.number().int().nonnegative()}).parse(r("pass1/body_start.json"));p>=d.length&&jt("Text body start is outside the source snapshot.");let l=cS.parse(r("v4_identity_map.json")),f=Ro(JSON.parse(Wn.readFileSync(t,"utf8")));f.version!==4&&jt("Text source review requires the ingested Script v4.");let u=ya(s.source.sha256),m=Object.entries(l.episode).map(([y,_])=>({id:_,...kp(y,p)})).sort((y,_)=>y.start_line-_.start_line);m.some(y=>y.end_line>d.length)&&jt("An episode's ingest window is outside the original source.");let h=f.episodes.filter(y=>!n?.length||n.includes(y.no)).map(y=>{let _=m.filter(A=>A.id===y.id);_.length!==1&&jt(`Episode ${y.no} has no unambiguous text source identity.`);let S=_[0],E=m[m.indexOf(S)+1];return{episode:y.no,start_line:m.indexOf(S)===0?p+1:S.start_line,end_line:E?E.end_line:d.length}});h.length||jt("No selected episodes exist in this script.");let g=new Map,w=new Map(Object.entries(l.action).map(([y,_])=>[_,bp(y,u,p)]));for(let y of bn(f)){if(!h.some(E=>E.episode===y.scene.ep.no))continue;let _=Ye.object({scriptctl:Ye.object({source:Sp.optional()}).optional()}).safeParse(y.raw.extend??{});_.success||jt(`Invalid text source metadata on ${y.anchor}.`);let S=_.data.scriptctl?.source??w.get(y.anchor);S&&(S.document_id!==u&&jt(`Action ${y.anchor} belongs to a different text document.`),S.ranges.some(E=>E.start_line>E.end_line||E.end_line>d.length)&&jt(`Invalid source lines on ${y.anchor}.`),g.set(y.anchor,S))}return{document_id:u,title:Kt.basename(s.source.path),path:c,lines:d,episodes:h,references:g}}var qm="review-agent";function Aa(e,t){let n=t||qm,o=e.models[n];if(!o)throw new x(`LLM profile "${n}" is not defined.`,{exitCode:k,errorCode:"REVIEW_PROFILE_UNKNOWN",hint:`Define it under models, or pick one of: ${Object.keys(e.models).join(", ")}.`,data:{expected:["a defined models entry"],actual:[n]}});let i=e.providers[o.provider];if(!i)throw new x(`Provider "${o.provider}" is not defined.`,{exitCode:k,errorCode:"REVIEW_PROVIDER_UNKNOWN",hint:`Available providers: ${Object.keys(e.providers).join(", ")}.`,data:{expected:["a defined providers entry"],actual:[o.provider]}});let r=(process.env[i.apiKeyEnv]??"").trim();if(!r&&i.protocol!=="google-vertex")throw new x(`${i.apiKeyEnv} is not set.`,{exitCode:k,errorCode:"REVIEW_API_KEY_MISSING",hint:`Export ${i.apiKeyEnv} for provider ${o.provider}.`,data:{expected:[i.apiKeyEnv],actual:["<empty>"]}});return{provider:o.provider,model:o.model,baseUrl:i.baseUrl,apiKey:r,maxAttempts:i.maxAttempts,protocol:i.protocol,responseSchemaField:i.videoResponseSchemaField}}function Ym(e){let{baseUrl:t,...n}=e;return{...n,...t?{baseUrl:t}:{}}}function lS(e,t,n=!1){let o=Ym(Aa(e,t));if(n||process.env.SCRIPTCTL_REVIEW_SINGLE_MODEL==="1")return{...o,singleModel:!0};let i=(e.models[t]?.fallbacks??[]).flatMap(r=>{let s=e.models[r],c=s&&e.providers[s.provider];return c&&c.protocol!=="google-vertex"&&!process.env[c.apiKeyEnv]?.trim()?[]:[Ym(Aa(e,r))]});return{...o,fallbacks:i}}async function nn(){let e=ka.dirname(dS(import.meta.url)),t=ka.join(e,"review-agent.js"),n=li.existsSync(t)?pS(t).href:"@lingjingai/review-agent";try{return await import(n)}catch(o){throw new x("The review agent is not installed.",{exitCode:X,errorCode:"REVIEW_AGENT_MISSING",hint:"Reinstall scriptctl without --omit=optional, or install @mastra/core and @ai-sdk/google.",data:{expected:["@lingjingai/review-agent"],actual:[String(o.message).slice(0,200)]}})}}function Xr(e){let t=e.trim();if(!t)return;let n=t.split(",").map(o=>Number(o.trim()));if(n.some(o=>!Number.isInteger(o)||o<1))throw new x("--episodes takes a comma-separated list of 1-based episode numbers.",{exitCode:k,errorCode:"REVIEW_EPISODES_INVALID",hint:"For example: --episodes 1,2,5",data:{expected:["1-based episode numbers"],actual:[t]}});return n}function st(e,t,n){let o=e[t];if(o===void 0)return n;let i=Number(o);if(!Number.isFinite(i)||i<=0)throw new x(`--${t.replace(/_/g,"-")} must be a positive number.`,{exitCode:k,errorCode:"REVIEW_OPTION_INVALID",hint:`Pass a positive number for --${t.replace(/_/g,"-")}.`,data:{expected:["a positive number"],actual:[String(o)]}});return i}async function Zm(e){let t=ko(v(e.llm_config).trim()||void 0),n=v(e.model).trim(),o=v(e.source_path).trim(),i=(Array.isArray(e.video)?e.video:[]).map(f=>f.trim()).filter(f=>f.length>0),r=$m(o,i.length>0),c=lS(t,n||(r==="comic"?"review-comic":r==="text"?"review-text":qm),e.fallback===!1);if(e.check){let f=await nn(),m=typeof{script:f.reviewPlainScript,text:f.reviewTextScript,comic:f.reviewComicScript,video:f.reviewVideoScript}[r]=="function";return[{text:m?`ready: ${c.provider}/${c.model}`:"the review agent bundle is present but exports no reviewScript",data:{ready:m,review_kind:r,provider:c.provider,model:c.model,llm_config:t.sourcePath??"builtin"}},m?G:X]}let a=me(e);if(!li.existsSync(a))throw new x("Local script file not found.",{exitCode:k,errorCode:"SCRIPT_NOT_FOUND",hint:"Run `scriptctl checkout`, `scriptctl create`, or pass --script-path to an existing script.",data:{expected:["existing local script JSON"],actual:[a]}});let d=i.filter(f=>!li.existsSync(f));if(d.length>0)throw new x("A --video path does not exist.",{exitCode:k,errorCode:"REVIEW_SOURCE_NOT_FOUND",hint:"Pass --video once per episode, in episode order.",data:{expected:["existing video files"],actual:d.slice(0,5)}});if(o&&!li.existsSync(o))throw new x("Review source not found.",{exitCode:k,errorCode:"REVIEW_SOURCE_NOT_FOUND",hint:"Pass an existing source or ingest workspace, or omit -s for script-only review.",data:{expected:["existing source or ingest workspace"],actual:[o]}});let p=await nn(),l=f=>process.stdout.write(JSON.stringify(f)+`
|
|
220
220
|
`);try{let f={scriptPath:a,...Xr(v(e.episodes))?{episodes:Xr(v(e.episodes))}:{},concurrency:st(e,"concurrency",5),converge:e.converge!==!1,convergeOnly:e.converge_only===!0,resumeUnits:(Array.isArray(e.resume_log)?e.resume_log:[]).flatMap(u=>li.readFileSync(u,"utf8").split(`
|
|
221
|
-
`).flatMap(m=>{let h;try{h=JSON.parse(m)}catch{return[]}return h&&(h.type==="episode"||h.type==="global")?[h]:[]})),...c,maxSteps:st(e,"max_steps",300),episodeTimeoutMs:st(e,"episode_timeout_ms",
|
|
221
|
+
`).flatMap(m=>{let h;try{h=JSON.parse(m)}catch{return[]}return h&&(h.type==="episode"||h.type==="global")?[h]:[]})),...c,maxSteps:st(e,"max_steps",300),episodeTimeoutMs:st(e,"episode_timeout_ms",9e5),onEvent:l};if(r==="comic"){let u=await Cm(o,a,f.converge?void 0:f.episodes);await p.reviewComicScript({...f,comic:u})}else if(r==="text"){let u=await Qm(o,a,f.converge?void 0:f.episodes);await p.reviewTextScript({...f,text:u})}else r==="video"?await p.reviewVideoScript({...f,source:o,videos:i,mediaModel:c.model,mediaBudget:st(e,"media_budget",1)}):await p.reviewPlainScript(f)}catch(f){throw f instanceof x?f:new x("Review failed.",{exitCode:X,errorCode:"REVIEW_FAILED",hint:r==="video"?"Read the error details, NDJSON asr-compared/episode reports and .review/asr/ evidence before retrying.":`Read the error details and episode reports${r==="script"?"":` in .review/${r}/`} before retrying.`,data:{expected:["a completed review run"],actual:[f instanceof Error?f.message:String(f)]}})}return[{text:"",data:{}},G]}import*as ui from"node:fs";import*as ge from"node:fs";import*as Ee from"node:path";import{createHash as uS}from"node:crypto";var es=["analyze","direction","plan","write","review"],fS={analyze:"reskin",direction:"reskin-claude",plan:"reskin-claude",write:"reskin",review:"reskin-claude"},mS={"claude-opus-5-5":{input:4,cached_input:.2,output:20}};function vp(e,t){let n=Ee.join(e,t);return{root:n,source:Ee.join(n,"0_input","script.json"),analysis:Ee.join(n,"1_src","\u62C6\u89E3.json"),direction:Ee.join(n,"2_new","\u6362\u58F3\u65B9\u5411.json"),brief:Ee.join(n,"2_new","\u6362\u58F3\u65B9\u5411.md"),plan:Ee.join(n,"2_new","\u6362\u58F3\u65B9\u6848.json"),script:Ee.join(n,"4_output","script.json"),log:o=>Ee.join(n,"logs",`${o}.ndjson`),status:Ee.join(n,"status.json")}}function va(e,t){ge.mkdirSync(Ee.dirname(e),{recursive:!0}),ge.writeFileSync(`${e}.tmp`,JSON.stringify(t,null,2)+`
|
|
222
222
|
`),ge.renameSync(`${e}.tmp`,e)}function ba(e){return ge.existsSync(e)?JSON.parse(ge.readFileSync(e,"utf8")):null}function gS(e,t){let n=Object.keys(e).filter(o=>t.startsWith(o)).sort((o,i)=>i.length-o.length)[0];return n?e[n]:null}function Wm(e,t){let n=0,o=[];for(let[i,r]of Object.entries(e)){let s=gS(t,i);if(!s){o.push(i);continue}n+=((r.input-r.cached_input)*s.input+r.cached_input*s.cached_input+r.output*s.output)/1e6}return{usd:n,unpriced:o}}function hS(e,t){for(let n of t){let o=e[n.model]??={calls:0,input:0,cached_input:0,output:0};o.calls+=1,o.input+=n.input_tokens,o.cached_input+=n.cached_input_tokens,o.output+=n.output_tokens}}var yS=new Set(["unit-done","episode","global","direction-done"]);function wS(e,t){return uS("sha256").update(JSON.stringify([ge.readFileSync(e,"utf8"),t.notes??"",t.custom??"",t.market??"",t.rating??"",t.avoid??[]])).digest("hex")}function _S(e,t,n){let o=n.market?.trim();return[`# ${e.title}`,`\u76EE\u6807\u5E02\u573A\uFF1A${o||"\u540C\u539F\u5267"}`,o&&n.language?.trim()?`\u53F0\u8BCD\u8BED\u8A00\uFF1A${n.language.trim()}`:"",`\u5C3A\u5EA6\uFF1A${n.rating?.trim()||"\u540C\u539F\u5267"}`,`\u6362\u58F3\uFF1A${e.shell}`,`\u6362\u6CD5\uFF1A${e.approach}`,e.keeps?`\u6CBF\u7528\u539F\u5267\uFF1A${e.keeps}`:"",e.changes?`\u5FC5\u987B\u6539\u52A8\uFF1A${e.changes}`:"",e.risks?`\u98CE\u9669\uFF1A${e.risks}`:"",t.verdict&&t.reason?`\u65B9\u5411\u5224\u65AD\uFF08${t.verdict}\uFF09\uFF1A${t.reason}`:"",n.notes?.trim()?`\u7528\u6237\u8981\u6C42\uFF1A${n.notes.trim()}`:""].filter(Boolean).join(`
|
|
223
223
|
|
|
224
224
|
`)+`
|
|
@@ -228,7 +228,7 @@ ${s}`);continue}let c=i.length>1?i[1]??"":"";c||(c=n),n=c;let a=[];s&&a.push(`${
|
|
|
228
228
|
`))}var ng="reskin",IS=["minimal","low","medium","high"],Op=["overall","events","beats"];function lt(e,t){if(!e||!ui.existsSync(e))throw new x(`${t} not found.`,{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:`Pass an existing ${t}.`,data:{expected:[`existing ${t}`],actual:[e||"<empty>"]}});return e}function og(e,t){let n=Aa(e,t),o=e.providers[e.models[t].provider]?.protocol,i=e.models[t].reasoning,r=o?.startsWith("google")&&IS.includes(i??"")?i:void 0;return{profile:n,config:{apiKey:n.apiKey,model:n.model,maxAttempts:n.maxAttempts,...n.baseUrl?{baseUrl:n.baseUrl}:{},...o?{protocol:o}:{},...r?{thinking:r}:{}}}}function Xn(e){let t=ko(v(e.llm_config).trim()||void 0),n=v(e.model).trim()||(t.models[ng]?ng:"review-agent"),{profile:o,config:i}=og(t,n),r=(t.models[n].fallbacks??[]).flatMap(s=>{try{return[og(t,s).config]}catch{return[]}});return{llm:t,name:n,profile:o,config:{...i,singleModel:e.fallback===!1,...r.length?{fallbacks:r}:{}}}}function nr(e,t){return e instanceof x?e:new x("Reskin failed.",{exitCode:X,errorCode:t,hint:"Read the NDJSON events and the saved plan or script before retrying; completed work is kept.",data:{expected:["a completed reskin run"],actual:[e instanceof Error?e.message:String(e)]}})}var fi=e=>process.stdout.write(JSON.stringify(e)+`
|
|
229
229
|
`);async function or(e,t){let{llm:n,name:o,profile:i}=Xn(e),s=typeof(await nn())[t]=="function";return[{text:s?`ready: ${o} ${i.provider}/${i.model}`:"the agent bundle exports no reskin commands",data:{ready:s,profile:o,provider:i.provider,model:i.model,llm_config:n.sourcePath??"builtin"}},s?G:X]}async function ig(e){if(e.check)return or(e,"analyzeReskinSource");let{config:t}=Xn(e),n=lt(me(e),"source script"),o=v(e.output).trim();if(!o)throw new x("Analysis output path missing.",{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:"Pass -o <\u62C6\u89E3.json>.",data:{expected:["analysis output path"],actual:["<empty>"]}});let i=await nn();try{let r=await i.analyzeReskinSource({...t,sourcePath:n,outputPath:o,force:e.force===!0,...e.concurrency!==void 0?{concurrency:st(e,"concurrency",5)}:{},...e.unit_timeout_ms!==void 0?{unitTimeoutMs:st(e,"unit_timeout_ms",6e5)}:{},onEvent:fi});return[{text:"",data:{}},r.type==="analyze-done"&&r.state==="completed"?G:X]}catch(r){throw nr(r,"RESKIN_ANALYZE_FAILED")}}async function rg(e){if(e.check)return or(e,"assessReskinPaths");let{config:t}=Xn(e),n=lt(v(e.analysis).trim(),"analysis"),o=v(e.markets).split(/[,,]/).map(s=>s.trim()).filter(Boolean);if(!o.length)throw new x("Candidate markets missing.",{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:"Pass --markets, e.g. --markets \u4E2D\u56FD,\u5370\u5C3C,\u7F8E\u56FD.",data:{expected:["comma-separated markets"],actual:["<empty>"]}});let i=v(e.output).trim(),r=await nn();try{let s=await r.assessReskinPaths({...t,analysisPath:n,markets:o,notes:v(e.notes),onEvent:fi});return i&&s.type==="paths-done"&&s.state==="completed"&&ui.writeFileSync(i,JSON.stringify(s,null,2)+`
|
|
230
230
|
`),[{text:"",data:{}},s.type==="paths-done"&&s.state==="completed"?G:X]}catch(s){throw nr(s,"RESKIN_PATHS_FAILED")}}async function sg(e){if(e.check)return or(e,"proposeReskinDirections");let{config:t}=Xn(e),n=lt(me(e),"source script"),o=lt(v(e.analysis).trim(),"analysis"),i=v(e.output).trim(),r=await nn();try{let s=await r.proposeReskinDirections({...t,sourcePath:n,analysisPath:o,notes:v(e.notes),custom:v(e.custom),market:v(e.market).trim(),rating:v(e.rating).trim(),avoid:(Array.isArray(e.avoid)?e.avoid:[]).map(c=>String(c).trim()).filter(Boolean),onEvent:fi});return i&&s.type==="direction-done"&&s.state==="completed"&&ui.writeFileSync(i,JSON.stringify(s,null,2)+`
|
|
231
|
-
`),[{text:"",data:{}},s.type==="direction-done"&&s.state==="completed"?G:X]}catch(s){throw nr(s,"RESKIN_DIRECTION_FAILED")}}async function ag(e){if(e.check)return or(e,"buildReskinPlan");let{config:t}=Xn(e),n=lt(me(e),"source script"),o=lt(v(e.analysis).trim(),"analysis"),i=lt(v(e.direction).trim(),"direction"),r=v(e.output).trim(),s=v(e.until).trim();if(!r)throw new x("Plan output path missing.",{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:"Pass -o <\u6362\u58F3\u65B9\u6848.json>.",data:{expected:["plan output path"],actual:["<empty>"]}});if(s&&!Op.includes(s))throw new x("Unknown plan layer.",{exitCode:k,errorCode:"RESKIN_LAYER_UNKNOWN",hint:`Pass --until ${Op.join("|")}.`,data:{expected:[...Op],actual:[s]}});let c=await nn();try{let a=await c.buildReskinPlan({...t,sourcePath:n,analysisPath:o,directionPath:i,planPath:r,...s?{until:s}:{},force:e.force===!0,...e.unit_timeout_ms!==void 0?{unitTimeoutMs:st(e,"unit_timeout_ms",18e5)}:{},onEvent:fi}),d=a.type==="plan-done"&&a.state!=="failed";return[{text:"",data:{}},d?G:X]}catch(a){throw nr(a,"RESKIN_PLAN_FAILED")}}async function cg(e){let t=v(e.review_model).trim()?Xn({...e,model:e.review_model}).config:void 0;if(e.check)return or(e,"writeReskinScript");let{config:n}=Xn(e),o=me(e),i=lt(v(e.source).trim(),"source script"),r=lt(v(e.analysis).trim(),"analysis"),s=lt(v(e.plan).trim(),"plan"),c=Xr(v(e.episodes)),a=await nn();try{let d=await a.writeReskinScript({...n,sourcePath:i,analysisPath:r,planPath:s,scriptPath:o,...c?{episodes:c}:{},force:e.force===!0,concurrency:st(e,"concurrency",6),...t?{reviewModel:t}:{},episodeTimeoutMs:st(e,"episode_timeout_ms",48e4),onEvent:fi});return[{text:"",data:{}},d.type==="done"&&d.failed.length===0?G:X]}catch(d){throw nr(d,"RESKIN_WRITE_FAILED")}}async function dg(e){if(e.check)return or(e,"reviewReskinScript");let{config:t}=Xn(e),n=lt(me(e),"reskinned script"),o=lt(v(e.source).trim(),"source script"),i=lt(v(e.analysis).trim(),"analysis"),r=lt(v(e.plan).trim(),"plan"),s=Xr(v(e.episodes)),c=await nn();try{let a=await c.reviewReskinScript({...t,scriptPath:n,sourcePath:o,analysisPath:i,planPath:r,...s?{episodes:s}:{},concurrency:st(e,"concurrency",10),converge:e.converge!==!1,convergeOnly:e.converge_only===!0,maxSteps:st(e,"max_steps",300),episodeTimeoutMs:st(e,"episode_timeout_ms",48e4),onEvent:fi});return[{text:"",data:{}},a.some(d=>(d.type==="episode"||d.type==="global")&&d.state==="failed")?X:G]}catch(a){throw nr(a,"RESKIN_REVIEW_FAILED")}}async function pg(e){let t=e._args??[],n=lt(v(t[0]).trim(),"batch manifest"),o=v(e.output).trim();if(!o)throw new x("Batch output folder missing.",{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:"Pass -o <folder>; each drama gets its own project folder inside it.",data:{expected:["batch output folder"],actual:["<empty>"]}});let i=v(e.until).trim();if(i&&!es.includes(i))throw new x("Unknown batch step.",{exitCode:k,errorCode:"RESKIN_LAYER_UNKNOWN",hint:`Pass --until ${es.join("|")}.`,data:{expected:[...es],actual:[i]}});let r;try{r=eg(n)}catch(l){throw new x("Batch manifest is invalid.",{exitCode:k,errorCode:"RESKIN_BATCH_INVALID",hint:"Fix the manifest and run again.",data:{expected:["{ dramas: [{ source, ... }] }"],actual:[l instanceof Error?l.message:String(l)]}})}let s=v(e.pick).trim();s&&(r.pick=s==="recommended"?"recommended":st(e,"pick",1));let c=new Map(Object.values(r.models).map(l=>[l,Xn({...e,model:l}).config])),a=await nn();ui.mkdirSync(o,{recursive:!0});let p=(await tg(r,a,{outputDir:o,until:i||void 0,concurrency:st(e,"concurrency",2),attempts:st(e,"attempts",3),config:l=>c.get(l),onEvent:fi})).filter(l=>l.state==="failed").length;return[{text:"",data:{}},p?X:G]}function lg(e,t){ee(e.command("review"),"write").description("\u6D3E\u53D1 agent \u5BA1\u6838\u5267\u672C\uFF1A\u7ED9 -s \u5BF9\u7167\u6587\u672C\u3001\u6F2B\u753B\u6216\u89C6\u9891\u539F\u7A3F\uFF0C\u4E0D\u7ED9\u5219\u68C0\u67E5\u5267\u672C\u5185\u90E8\u4E00\u81F4\u6027").option("-s, --source-path <path>","\u6587\u672C/\u6F2B\u753B ingest \u5DE5\u4F5C\u533A\u3001\u539F txt/md/docx/PDF \u6216\u89C6\u9891\u6587\u4EF6/\u76EE\u5F55").option("--video <path>","\u7B2C N \u96C6\u7684\u89C6\u9891\uFF1B\u6309\u96C6\u987A\u5E8F\u91CD\u590D\u4F20\uFF0C\u8986\u76D6 -s \u7684\u76EE\u5F55\u6392\u5E8F",(i,r)=>[...r,i],[]).option("--episodes <list>","\u53EA\u5BA1\u8FD9\u4E9B\u96C6\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u9ED8\u8BA4\u5168\u5267\uFF09").option("--concurrency <n>","\u540C\u65F6\u5728\u98DE\u7684\u96C6\u6570",Number).option("--episode-timeout-ms <ms>","\u5355\u96C6\u8D85\u65F6\uFF1B\u5230\u70B9\u6536\u5C3E\u5E76\u4FDD\u7559\u5DF2\u8BB0\u5F55\u7684\u7ED3\u8BBA",Number).option("--max-steps <n>","\u5355\u96C6\u6700\u591A\u51E0\u6B65\u5DE5\u5177\u8C03\u7528",Number).option("--media-budget <n>","\u5355\u96C6\u6700\u591A\u51E0\u6B21\u89C6\u9891\u6838\u5BF9",Number).option("--converge-only","\u53EA\u6267\u884C\u5168\u5267\u6536\u655B\uFF0C\u4E0D\u91CD\u65B0\u5BA1\u6838\u5404\u96C6").option("--resume-log <path>","\u4ECE\u5F53\u524D\u5267\u672C\u7684\u65E2\u6709\u5BA1\u6838\u65E5\u5FD7\u7EED\u8DD1\uFF0C\u4FDD\u7559\u5DF2\u5B8C\u6210\u5355\u5143\uFF1B\u591A\u4EFD\u65E5\u5FD7\u6309\u65F6\u95F4\u5148\u540E\u91CD\u590D\u4F20\u5165",(i,r=[])=>[...r,i]).option("--no-converge","\u8DF3\u8FC7\u5168\u5267\u6536\u655B\u9636\u6BB5").option("--model <profile>","\u8986\u76D6 LLM profile\uFF08\u89C6\u9891/\u7EAF\u5267\u672C\u9ED8\u8BA4 review-agent\uFF0C\u6587\u672C review-text\uFF0C\u6F2B\u753B review-comic\uFF09").option("--llm-config <path>","LLM configuration file").option("--check","\u53EA\u68C0\u67E5\u6A21\u578B\u4E0E agent \u662F\u5426\u5C31\u7EEA\uFF0C\u4E0D\u5BA1\u6838").action(H(Zm,t));let n=e.command("reskin").description("\u6362\u58F3\u4EFF\u5199\uFF1A\u62C6\u89E3\u539F\u5267\uFF0C\u63D0\u51FA\u65B0\u58F3\u65B9\u5411\uFF0C\u9010\u5C42\u5B9A\u6362\u58F3\u65B9\u6848\uFF08\u6574\u4F53\u65B9\u6848 \u2192 \u4E8B\u4EF6 \u2192 \u8282\u62CD\uFF09\uFF0C\u6309\u7ED3\u6784\u8868\u9010\u96C6\u5199\u65B0\u5267\uFF0C\u518D\u505A\u6362\u58F3\u5BA1\u6838"),o=i=>i.option("--model <profile>","\u8986\u76D6 LLM profile\uFF08\u9ED8\u8BA4 reskin\uFF09").option("--no-fallback","\u53EA\u7528\u6240\u9009\u6A21\u578B\uFF0C\u5931\u8D25\u65F6\u4E0D\u6362\u7528\u5176\u4ED6\u6A21\u578B\uFF08\u9ED8\u8BA4\u6309\u914D\u7F6E\u7684\u964D\u7EA7\u987A\u5E8F\u6362\u7528\uFF09").option("--llm-config <path>","LLM configuration file").option("--check","\u53EA\u68C0\u67E5\u6A21\u578B\u4E0E agent \u662F\u5426\u5C31\u7EEA");o(ee(n.command("analyze"),"read").description("\u62C6\u89E3\u539F\u5267\uFF1A\u5148\u901A\u8BFB\u5168\u5267\u5212\u5206\u9636\u6BB5\u4E0E\u4E8B\u4EF6\uFF0C\u518D\u6309\u9636\u6BB5\u5E76\u884C\u5199\u4E8B\u4EF6\u4E8B\u5B9E\u3001\u6309\u96C6\u5E76\u884C\u5207\u8282\u62CD\uFF0C\u540C\u65F6\u5F52\u7EB3\u5168\u5267\u753B\u50CF\uFF08\u539F\u5267\u5730\u533A\u4E0E\u53F0\u8BCD\u8BED\u8A00\u3001\u6362\u58F3\u9002\u5408\u5EA6\uFF09\u3002-p \u4E3A\u539F\u5267\u5267\u672C\uFF1B\u5DF2\u5B8C\u6210\u7684\u5355\u5143\u4FDD\u5B58\u5728\u8F93\u51FA\u6587\u4EF6\u65C1\u7684 .cache/analyze.json\uFF0C\u518D\u6B21\u8FD0\u884C\u4ECE\u65AD\u70B9\u7EE7\u7EED").option("-o, --output <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--force","\u5FFD\u7565\u5DF2\u4FDD\u5B58\u7684\u8FDB\u5EA6\u91CD\u65B0\u62C6\u89E3").option("--concurrency <n>","\u5E76\u884C\u7684\u5355\u5143\u6570",Number).option("--unit-timeout-ms <ms>","\u5355\u4E2A\u5355\u5143\u7684\u8D85\u65F6",Number)).action(H(ig,t)),o(n.command("paths").description("\u9009\u9898\u5224\u65AD\uFF1A\u8BFB\u539F\u5267\u62C6\u89E3\u7684\u753B\u50CF\u4E0E\u5927\u7EB2\uFF0C\u9010\u4E2A\u5019\u9009\u5E02\u573A\u5217\u51FA\u8D70\u5F97\u901A\u7684\u6539\u7F16\u8DEF\u5F84\uFF08\u540C\u5E02\u573A\u6362\u8F7D\u4F53\u3001\u8DE8\u5E02\u573A\u672C\u5730\u5316\u3001\u8DE8\u5E02\u573A\u6362\u58F3\u3001\u6362\u4E16\u754C\u89C2\uFF09\uFF0C\u7ED9\u51FA\u5EFA\u8BAE\u505A\u51E0\u4E2A\u7248\u672C").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--markets <list>","\u5019\u9009\u5E02\u573A\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u5FC5\u586B\uFF09\uFF0C\u5982 \u4E2D\u56FD,\u5370\u5C3C,\u7F8E\u56FD").option("--notes <text>","\u7528\u6237\u8981\u6C42\u4E0E\u4E1A\u52A1\u4F18\u5148").option("-o, --output <path>","\u628A\u7ED3\u679C\u53E6\u5B58\u4E3A JSON")).action(H(rg,t)),o(ee(n.command("direction"),"read").description("\u63D0\u51FA 2\u20133 \u4E2A\u5019\u9009\u65B0\u58F3\uFF1B\u7ED9\u51FA --custom \u65F6\u5224\u65AD\u7528\u6237\u6307\u5B9A\u7684\u65B9\u5411\u662F\u5426\u53EF\u884C\u5E76\u6309\u5B83\u8BBE\u8BA1\u4E00\u4E2A\u5019\u9009\u3002-p \u4E3A\u539F\u5267\u5267\u672C").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--notes <text>","\u7528\u6237\u7684\u6362\u58F3\u8981\u6C42").option("--custom <text>","\u7528\u6237\u6307\u5B9A\u7684\u6362\u58F3\u65B9\u5411").option("--market <text>","\u65B0\u5267\u9762\u5411\u7684\u76EE\u6807\u5E02\u573A\uFF0C\u9ED8\u8BA4\u540C\u539F\u5267").option("--rating <text>","\u5C3A\u5EA6\u8981\u6C42\uFF0C\u9ED8\u8BA4\u540C\u539F\u5267").option("--avoid <shell>","\u8FD9\u90E8\u539F\u5267\u5DF2\u505A\u8FC7\u7684\u7248\u672C\u7684\u58F3\uFF0C\u53EF\u91CD\u590D\u7ED9\u51FA\uFF1B\u65B0\u5019\u9009\u4E0E\u5B83\u4EEC\u660E\u663E\u4E0D\u540C",(i,r=[])=>[...r,i]).option("-o, --output <path>","\u628A\u7ED3\u679C\u53E6\u5B58\u4E3A JSON")).action(H(sg,t)),o(ee(n.command("plan"),"read").description("\u9010\u5C42\u751F\u6210\u6362\u58F3\u65B9\u6848\uFF1A\u6574\u4F53\u65B9\u6848\uFF08\u542B\u9636\u6BB5\u8D70\u5411\uFF09\u2192 \u5404\u9636\u6BB5\u4E8B\u4EF6 \u2192 \u5404\u9636\u6BB5\u8282\u62CD\uFF0C\u4E0B\u5C42\u53EF\u56DE\u6539\u4E0A\u5C42\u5E76\u590D\u67E5\u53D7\u5F71\u54CD\u7684\u90E8\u5206\u3002-p \u4E3A\u539F\u5267\u5267\u672C\uFF1B\u5DF2\u6709\u65B9\u6848\u65F6\u4ECE\u672A\u5B8C\u6210\u7684\u90E8\u5206\u7EE7\u7EED").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--direction <path>","\u9009\u5B9A\u7684\u6362\u58F3\u65B9\u5411\u8BF4\u660E\uFF08\u5FC5\u586B\uFF09").option("-o, --output <path>","\u6362\u58F3\u65B9\u6848 JSON\uFF08\u5FC5\u586B\uFF09").option("--until <layer>","\u505A\u5230\u8FD9\u4E00\u5C42\u540E\u6682\u505C\uFF1Aoverall | events | beats").option("--force","\u5FFD\u7565\u5DF2\u6709\u65B9\u6848\u91CD\u65B0\u751F\u6210").option("--unit-timeout-ms <ms>","\u5355\u4E2A\u5355\u5143\u7684\u8D85\u65F6",Number)).action(H(ag,t)),o(ee(n.command("write"),"write").description("\u6309\u6362\u58F3\u65B9\u6848\u7684\u7ED3\u6784\u8868\u5199\u65B0\u5267\uFF1A\u9636\u6BB5\u5185\u6309\u96C6\u5E8F\u5199\uFF0C\u9636\u6BB5\u4E4B\u95F4\u5E76\u884C\uFF1B\u53EF\u9010\u96C6\u5BA1\u6838\u5E76\u4F20\u9012\u8D26\u672C\u3002-p \u4E3A\u65B0\u5267\u5267\u672C\uFF0C\u4E0D\u5B58\u5728\u6216\u6362\u540D\u6362\u5916\u89C2\u53D8\u5316\u65F6\u4ECE\u539F\u5267\u590D\u5236\uFF1B\u6BCF\u6761\u6B63\u6587\u8BB0\u4E0B\u6240\u5C5E\u7684\u65B0\u8282\u62CD\uFF0C\u4E0D\u5199\u65F6\u95F4\u6233").option("--source <path>","\u539F\u5267\u5267\u672C\uFF08\u5FC5\u586B\uFF09").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--plan <path>","\u5DF2\u5B8C\u6210\u7684\u6362\u58F3\u65B9\u6848 JSON\uFF08\u5FC5\u586B\uFF09").option("--episodes <list>","\u53EA\u5199\u8FD9\u4E9B\u96C6\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u9ED8\u8BA4\u5168\u5267\u672A\u5B8C\u6210\u7684\u96C6\uFF09").option("--force","\u6240\u9009\u7684\u96C6\u5DF2\u5199\u8FC7\u4E5F\u91CD\u5199").option("--review-model <profile>","\u9010\u96C6\u5199\u5B8C\u5373\u7528\u6B64 profile \u5BA1\u6838\uFF0C\u8D26\u672C\u4F20\u7ED9\u4E0B\u4E00\u96C6").option("--concurrency <n>","\u540C\u65F6\u8FD0\u884C\u7684\u9636\u6BB5\u94FE\u6570\uFF08\u9ED8\u8BA4 6\uFF09",Number).option("--episode-timeout-ms <ms>","\u5355\u96C6\u8D85\u65F6",Number)).action(H(cg,t)),o(ee(n.command("review"),"write").description("\u6362\u58F3\u5BA1\u6838\uFF1A\u6309\u96C6\u5E8F\u901A\u8BFB\uFF0C\u9010\u96C6\u5BA1\u6362\u5F97\u662F\u5426\u5408\u7406\u3001\u662F\u5426\u770B\u5F97\u61C2\u4E0E\u901A\u987A\u3001\u524D\u540E\u662F\u5426\u8FDE\u8D2F\u3001\u9020\u578B\u4E0E\u573A\u666F\u5F15\u7528\u662F\u5426\u51C6\u786E\uFF0C\u5904\u7406\u7A0B\u5E8F\u68C0\u67E5\u7ED3\u679C\uFF0C\u518D\u505A\u5168\u5267\u6536\u5C3E\u3002-p \u4E3A\u65B0\u5267\u5267\u672C\uFF1B\u4E8B\u4EF6\u683C\u5F0F\u4E0E review \u76F8\u540C").option("--source <path>","\u539F\u5267\u5267\u672C\uFF08\u5FC5\u586B\uFF09").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--plan <path>","\u6362\u58F3\u65B9\u6848 JSON\uFF08\u5FC5\u586B\uFF09").option("--episodes <list>","\u53EA\u5BA1\u8FD9\u4E9B\u96C6\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u9ED8\u8BA4\u5168\u90E8\uFF09").option("--concurrency <n>","\u540C\u65F6\u8FDB\u884C\u7684\u9636\u6BB5\u94FE\u6570\uFF08\u9ED8\u8BA4 10\uFF09",Number).option("--max-steps <n>","\u6BCF\u96C6\u6700\u591A\u51E0\u6B65\u5DE5\u5177\u8C03\u7528",Number).option("--episode-timeout-ms <ms>","\u5355\u96C6\u8D85\u65F6",Number).option("--converge-only","\u53EA\u6267\u884C\u9636\u6BB5\u9996\u96C6\u63A5\u7F1D\u590D\u6838\u4E0E\u5168\u5267\u6536\u5C3E").option("--no-converge","\u8DF3\u8FC7\u5168\u5267\u6536\u5C3E")).action(H(dg,t)),n.command("batch").argument("<manifest>","\u6279\u91CF\u6E05\u5355 JSON\uFF1A{ dramas: [{ id, source, market, language, rating, notes, custom, pick, avoid }], models, prices, pick }").description("\u65E0\u4EBA\u503C\u5B88\u6279\u91CF\u6362\u58F3\uFF1A\u6BCF\u90E8\u5267\u5728 -o \u4E0B\u6709\u81EA\u5DF1\u7684\u9879\u76EE\u76EE\u5F55\uFF0C\u4F9D\u6B21\u62C6\u89E3 \u2192 \u65B9\u5411 \u2192 \u65B9\u6848 \u2192 \u5199\u4F5C \u2192 \u5BA1\u6838\uFF0C\u6BCF\u6B65\u4ECE\u5DF2\u4FDD\u5B58\u7684\u8FDB\u5EA6\u7EE7\u7EED\u3002\u62C6\u89E3\u8BC4\u51FA\u7684\u9002\u5408\u5EA6\u4F4E\u4E8E 3 \u4E14\u6CA1\u5199 pick \u65F6\u505C\u5728\u62C6\u89E3\u540E\uFF0C\u6307\u5B9A\u65B9\u5411\u4E0D\u53EF\u884C\u6216\u9700\u8981\u4EBA\u5DE5\u9009\u65B9\u5411\u65F6\u505C\u5728\u65B9\u5411\u6B65\uFF1B\u8865\u4E0A pick \u540E\u518D\u8FD0\u884C\u5373\u4ECE\u65B9\u5411\u7EE7\u7EED\u3002\u8FDB\u5EA6\u4E0E\u62A5\u544A\u5199\u5728 -o \u4E0B\u7684 batch-report.json / batch-report.md").option("-o, --output <dir>","\u6279\u91CF\u8F93\u51FA\u76EE\u5F55\uFF08\u5FC5\u586B\uFF09").option("--concurrency <n>","\u540C\u65F6\u8FDB\u884C\u7684\u5267\u6570\uFF08\u9ED8\u8BA4 2\uFF09",Number).option("--attempts <n>","\u6BCF\u6B65\u6700\u591A\u8FD0\u884C\u51E0\u6B21\uFF0C\u6BCF\u6B21\u4ECE\u4E0A\u6B21\u8FDB\u5EA6\u7EE7\u7EED\uFF08\u9ED8\u8BA4 3\uFF09",Number).option("--pick <n|recommended>","\u6CA1\u5199 pick \u7684\u5267\u7528\u8FD9\u4E2A\u5019\u9009\uFF1B\u4E0D\u7ED9\u65F6\u505C\u4E0B\u7B49\u4EBA\u5DE5\u9009\u62E9").option("--until <step>","\u505A\u5230\u8FD9\u4E00\u6B65\u540E\u505C\u4E0B\uFF1Aanalyze | direction | plan | write | review").option("--no-fallback","\u53EA\u7528\u6240\u9009\u6A21\u578B\uFF0C\u5931\u8D25\u65F6\u4E0D\u6362\u7528\u5176\u4ED6\u6A21\u578B\uFF08\u9ED8\u8BA4\u6309\u914D\u7F6E\u7684\u964D\u7EA7\u987A\u5E8F\u6362\u7528\uFF09").option("--llm-config <path>","LLM configuration file").action(H(pg,t))}import*as ug from"node:fs";var Lo="\u5730\u5740\uFF1A\u96C6 `3`\u3001\u573A `3-2`\u3001\u5355\u6761 `3-2-5`\u3001\u6B63\u5F0F ID\u3001\u8D44\u4EA7\u540D\u3001\u6216 `<\u8D44\u4EA7>/<\u72B6\u6001>`";function je(e){let t=me(e);if(!ug.existsSync(t))throw new x("Local script file not found.",{exitCode:k,errorCode:"SCRIPT_NOT_FOUND",hint:"Run `scriptctl checkout`, `scriptctl create`, or pass --script-path to an existing script.",data:{expected:["existing local script JSON"],actual:[t]}});return qd(t)}function he(e,t){let n=e[t];return typeof n=="string"?n:void 0}function mi(e,t){let n=e[t];if(n==null||n==="")return;let o=Number(n);if(!Number.isFinite(o))throw new x(`--${t} must be a number.`,{exitCode:k,errorCode:"OPTION_NOT_NUMBER",data:{actual:[String(n)]}});return o}function ye(e,t=0){return(e._args??[])[t]??""}function Rp(e){return Array.isArray(e)?e.map(String):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function at(e,t,n=()=>({})){try{let o=e();return[{text:o,data:{op:t,changed:!1,text:o,...n()}},G]}catch(o){throw o instanceof x?o:new x(o instanceof Error?o.message:String(o),{exitCode:k,errorCode:o?.code??"SCRIPT_TOOL_FAILED"})}}function fg(e,t){let n=ee(e.command("read [addr]"),"read").description(`\u8BFB\u4EFB\u610F\u8282\u70B9\uFF1B\u4E0D\u7ED9\u5730\u5740\u8FD4\u56DE\u5267\u672C\u5361\u3002${Lo}`).option("--outline","\u53EA\u8981\u573A\u7ED3\u6784\uFF0C\u4E0D\u8981\u6B63\u6587").option("--context <n>","\u5355\u6761 action \u524D\u540E\u5404\u5E26\u51E0\u6761\uFF08\u9ED8\u8BA4 3\uFF09").option("--plain","\u53BB\u6389\u951A\u70B9\u4E0E\u65F6\u95F4\u6233\uFF08\u53EA\u8BFB\uFF0C\u4E0D\u53EF\u56DE\u5199\uFF09").action(H(y=>{let _=je(y);return at(()=>pa(_,ye(y),{...y.outline?{depth:"outline"}:{},...y.plain?{plain:!0}:{},...mi(y,"context")!==void 0?{context:mi(y,"context")}:{}}),"read",()=>ye(y)?{}:{document:_.raw})},t));Me(n,[Lo]);let o=ee(e.command("scan <episode>"),"read").description("\u4E00\u6B21\u8FD4\u56DE\u67D0\u96C6\u7684\u5B8C\u6574\u4E0A\u4E0B\u6587\uFF1A\u573A\u7ED3\u6784 + \u5168\u90E8\u6B63\u6587 + \u5F53\u524D\u6821\u9A8C\u95EE\u9898").action(H(y=>at(()=>{let _=je(y),S=ye(y);return[`## \u573A\u7ED3\u6784
|
|
231
|
+
`),[{text:"",data:{}},s.type==="direction-done"&&s.state==="completed"?G:X]}catch(s){throw nr(s,"RESKIN_DIRECTION_FAILED")}}async function ag(e){if(e.check)return or(e,"buildReskinPlan");let{config:t}=Xn(e),n=lt(me(e),"source script"),o=lt(v(e.analysis).trim(),"analysis"),i=lt(v(e.direction).trim(),"direction"),r=v(e.output).trim(),s=v(e.until).trim();if(!r)throw new x("Plan output path missing.",{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:"Pass -o <\u6362\u58F3\u65B9\u6848.json>.",data:{expected:["plan output path"],actual:["<empty>"]}});if(s&&!Op.includes(s))throw new x("Unknown plan layer.",{exitCode:k,errorCode:"RESKIN_LAYER_UNKNOWN",hint:`Pass --until ${Op.join("|")}.`,data:{expected:[...Op],actual:[s]}});let c=await nn();try{let a=await c.buildReskinPlan({...t,sourcePath:n,analysisPath:o,directionPath:i,planPath:r,...s?{until:s}:{},force:e.force===!0,...e.unit_timeout_ms!==void 0?{unitTimeoutMs:st(e,"unit_timeout_ms",18e5)}:{},onEvent:fi}),d=a.type==="plan-done"&&a.state!=="failed";return[{text:"",data:{}},d?G:X]}catch(a){throw nr(a,"RESKIN_PLAN_FAILED")}}async function cg(e){let t=v(e.review_model).trim()?Xn({...e,model:e.review_model}).config:void 0;if(e.check)return or(e,"writeReskinScript");let{config:n}=Xn(e),o=me(e),i=lt(v(e.source).trim(),"source script"),r=lt(v(e.analysis).trim(),"analysis"),s=lt(v(e.plan).trim(),"plan"),c=Xr(v(e.episodes)),a=await nn();try{let d=await a.writeReskinScript({...n,sourcePath:i,analysisPath:r,planPath:s,scriptPath:o,...c?{episodes:c}:{},force:e.force===!0,concurrency:st(e,"concurrency",6),...t?{reviewModel:t}:{},episodeTimeoutMs:st(e,"episode_timeout_ms",48e4),onEvent:fi});return[{text:"",data:{}},d.type==="done"&&d.failed.length===0?G:X]}catch(d){throw nr(d,"RESKIN_WRITE_FAILED")}}async function dg(e){if(e.check)return or(e,"reviewReskinScript");let{config:t}=Xn(e),n=lt(me(e),"reskinned script"),o=lt(v(e.source).trim(),"source script"),i=lt(v(e.analysis).trim(),"analysis"),r=lt(v(e.plan).trim(),"plan"),s=Xr(v(e.episodes)),c=await nn();try{let a=await c.reviewReskinScript({...t,scriptPath:n,sourcePath:o,analysisPath:i,planPath:r,...s?{episodes:s}:{},concurrency:st(e,"concurrency",10),converge:e.converge!==!1,convergeOnly:e.converge_only===!0,maxSteps:st(e,"max_steps",300),episodeTimeoutMs:st(e,"episode_timeout_ms",48e4),onEvent:fi});return[{text:"",data:{}},a.some(d=>(d.type==="episode"||d.type==="global")&&d.state==="failed")?X:G]}catch(a){throw nr(a,"RESKIN_REVIEW_FAILED")}}async function pg(e){let t=e._args??[],n=lt(v(t[0]).trim(),"batch manifest"),o=v(e.output).trim();if(!o)throw new x("Batch output folder missing.",{exitCode:k,errorCode:"RESKIN_INPUT_NOT_FOUND",hint:"Pass -o <folder>; each drama gets its own project folder inside it.",data:{expected:["batch output folder"],actual:["<empty>"]}});let i=v(e.until).trim();if(i&&!es.includes(i))throw new x("Unknown batch step.",{exitCode:k,errorCode:"RESKIN_LAYER_UNKNOWN",hint:`Pass --until ${es.join("|")}.`,data:{expected:[...es],actual:[i]}});let r;try{r=eg(n)}catch(l){throw new x("Batch manifest is invalid.",{exitCode:k,errorCode:"RESKIN_BATCH_INVALID",hint:"Fix the manifest and run again.",data:{expected:["{ dramas: [{ source, ... }] }"],actual:[l instanceof Error?l.message:String(l)]}})}let s=v(e.pick).trim();s&&(r.pick=s==="recommended"?"recommended":st(e,"pick",1));let c=new Map(Object.values(r.models).map(l=>[l,Xn({...e,model:l}).config])),a=await nn();ui.mkdirSync(o,{recursive:!0});let p=(await tg(r,a,{outputDir:o,until:i||void 0,concurrency:st(e,"concurrency",2),attempts:st(e,"attempts",3),config:l=>c.get(l),onEvent:fi})).filter(l=>l.state==="failed").length;return[{text:"",data:{}},p?X:G]}function lg(e,t){ee(e.command("review"),"write").description("\u6D3E\u53D1 agent \u5BA1\u6838\u5267\u672C\uFF1A\u7ED9 -s \u5BF9\u7167\u6587\u672C\u3001\u6F2B\u753B\u6216\u89C6\u9891\u539F\u7A3F\uFF0C\u4E0D\u7ED9\u5219\u68C0\u67E5\u5267\u672C\u5185\u90E8\u4E00\u81F4\u6027").option("-s, --source-path <path>","\u6587\u672C/\u6F2B\u753B ingest \u5DE5\u4F5C\u533A\u3001\u539F txt/md/docx/PDF \u6216\u89C6\u9891\u6587\u4EF6/\u76EE\u5F55").option("--video <path>","\u7B2C N \u96C6\u7684\u89C6\u9891\uFF1B\u6309\u96C6\u987A\u5E8F\u91CD\u590D\u4F20\uFF0C\u8986\u76D6 -s \u7684\u76EE\u5F55\u6392\u5E8F",(i,r)=>[...r,i],[]).option("--episodes <list>","\u53EA\u5BA1\u8FD9\u4E9B\u96C6\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u9ED8\u8BA4\u5168\u5267\uFF09").option("--concurrency <n>","\u540C\u65F6\u5728\u98DE\u7684\u96C6\u6570",Number).option("--episode-timeout-ms <ms>","\u5355\u96C6\u8D85\u65F6\uFF08\u9ED8\u8BA4 15 \u5206\u949F\uFF09\uFF1B\u5230\u70B9\u6536\u5C3E\u5E76\u4FDD\u7559\u5DF2\u8BB0\u5F55\u7684\u7ED3\u8BBA",Number).option("--max-steps <n>","\u5355\u96C6\u6700\u591A\u51E0\u6B65\u5DE5\u5177\u8C03\u7528",Number).option("--media-budget <n>","\u5355\u96C6\u6700\u591A\u51E0\u6B21\u89C6\u9891\u6838\u5BF9",Number).option("--converge-only","\u53EA\u6267\u884C\u5168\u5267\u6536\u655B\uFF0C\u4E0D\u91CD\u65B0\u5BA1\u6838\u5404\u96C6").option("--resume-log <path>","\u4ECE\u5F53\u524D\u5267\u672C\u7684\u65E2\u6709\u5BA1\u6838\u65E5\u5FD7\u7EED\u8DD1\uFF0C\u4FDD\u7559\u5DF2\u5B8C\u6210\u5355\u5143\uFF1B\u591A\u4EFD\u65E5\u5FD7\u6309\u65F6\u95F4\u5148\u540E\u91CD\u590D\u4F20\u5165",(i,r=[])=>[...r,i]).option("--no-converge","\u8DF3\u8FC7\u5168\u5267\u6536\u655B\u9636\u6BB5").option("--model <profile>","\u8986\u76D6 LLM profile\uFF08\u89C6\u9891/\u7EAF\u5267\u672C\u9ED8\u8BA4 review-agent\uFF0C\u6587\u672C review-text\uFF0C\u6F2B\u753B review-comic\uFF09").option("--no-fallback","\u53EA\u7528\u6240\u9009\u6A21\u578B\uFF0C\u5931\u8D25\u65F6\u4E0D\u6362\u7528\u5176\u4ED6\u6A21\u578B").option("--llm-config <path>","LLM configuration file").option("--check","\u53EA\u68C0\u67E5\u6A21\u578B\u4E0E agent \u662F\u5426\u5C31\u7EEA\uFF0C\u4E0D\u5BA1\u6838").action(H(Zm,t));let n=e.command("reskin").description("\u6362\u58F3\u4EFF\u5199\uFF1A\u62C6\u89E3\u539F\u5267\uFF0C\u63D0\u51FA\u65B0\u58F3\u65B9\u5411\uFF0C\u9010\u5C42\u5B9A\u6362\u58F3\u65B9\u6848\uFF08\u6574\u4F53\u65B9\u6848 \u2192 \u4E8B\u4EF6 \u2192 \u8282\u62CD\uFF09\uFF0C\u6309\u7ED3\u6784\u8868\u9010\u96C6\u5199\u65B0\u5267\uFF0C\u518D\u505A\u6362\u58F3\u5BA1\u6838"),o=i=>i.option("--model <profile>","\u8986\u76D6 LLM profile\uFF08\u9ED8\u8BA4 reskin\uFF09").option("--no-fallback","\u53EA\u7528\u6240\u9009\u6A21\u578B\uFF0C\u5931\u8D25\u65F6\u4E0D\u6362\u7528\u5176\u4ED6\u6A21\u578B\uFF08\u9ED8\u8BA4\u6309\u914D\u7F6E\u7684\u964D\u7EA7\u987A\u5E8F\u6362\u7528\uFF09").option("--llm-config <path>","LLM configuration file").option("--check","\u53EA\u68C0\u67E5\u6A21\u578B\u4E0E agent \u662F\u5426\u5C31\u7EEA");o(ee(n.command("analyze"),"read").description("\u62C6\u89E3\u539F\u5267\uFF1A\u5148\u901A\u8BFB\u5168\u5267\u5212\u5206\u9636\u6BB5\u4E0E\u4E8B\u4EF6\uFF0C\u518D\u6309\u9636\u6BB5\u5E76\u884C\u5199\u4E8B\u4EF6\u4E8B\u5B9E\u3001\u6309\u96C6\u5E76\u884C\u5207\u8282\u62CD\uFF0C\u540C\u65F6\u5F52\u7EB3\u5168\u5267\u753B\u50CF\uFF08\u539F\u5267\u5730\u533A\u4E0E\u53F0\u8BCD\u8BED\u8A00\u3001\u6362\u58F3\u9002\u5408\u5EA6\uFF09\u3002-p \u4E3A\u539F\u5267\u5267\u672C\uFF1B\u5DF2\u5B8C\u6210\u7684\u5355\u5143\u4FDD\u5B58\u5728\u8F93\u51FA\u6587\u4EF6\u65C1\u7684 .cache/analyze.json\uFF0C\u518D\u6B21\u8FD0\u884C\u4ECE\u65AD\u70B9\u7EE7\u7EED").option("-o, --output <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--force","\u5FFD\u7565\u5DF2\u4FDD\u5B58\u7684\u8FDB\u5EA6\u91CD\u65B0\u62C6\u89E3").option("--concurrency <n>","\u5E76\u884C\u7684\u5355\u5143\u6570",Number).option("--unit-timeout-ms <ms>","\u5355\u4E2A\u5355\u5143\u7684\u8D85\u65F6",Number)).action(H(ig,t)),o(n.command("paths").description("\u9009\u9898\u5224\u65AD\uFF1A\u8BFB\u539F\u5267\u62C6\u89E3\u7684\u753B\u50CF\u4E0E\u5927\u7EB2\uFF0C\u9010\u4E2A\u5019\u9009\u5E02\u573A\u5217\u51FA\u8D70\u5F97\u901A\u7684\u6539\u7F16\u8DEF\u5F84\uFF08\u540C\u5E02\u573A\u6362\u8F7D\u4F53\u3001\u8DE8\u5E02\u573A\u672C\u5730\u5316\u3001\u8DE8\u5E02\u573A\u6362\u58F3\u3001\u6362\u4E16\u754C\u89C2\uFF09\uFF0C\u7ED9\u51FA\u5EFA\u8BAE\u505A\u51E0\u4E2A\u7248\u672C").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--markets <list>","\u5019\u9009\u5E02\u573A\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u5FC5\u586B\uFF09\uFF0C\u5982 \u4E2D\u56FD,\u5370\u5C3C,\u7F8E\u56FD").option("--notes <text>","\u7528\u6237\u8981\u6C42\u4E0E\u4E1A\u52A1\u4F18\u5148").option("-o, --output <path>","\u628A\u7ED3\u679C\u53E6\u5B58\u4E3A JSON")).action(H(rg,t)),o(ee(n.command("direction"),"read").description("\u63D0\u51FA 2\u20133 \u4E2A\u5019\u9009\u65B0\u58F3\uFF1B\u7ED9\u51FA --custom \u65F6\u5224\u65AD\u7528\u6237\u6307\u5B9A\u7684\u65B9\u5411\u662F\u5426\u53EF\u884C\u5E76\u6309\u5B83\u8BBE\u8BA1\u4E00\u4E2A\u5019\u9009\u3002-p \u4E3A\u539F\u5267\u5267\u672C").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--notes <text>","\u7528\u6237\u7684\u6362\u58F3\u8981\u6C42").option("--custom <text>","\u7528\u6237\u6307\u5B9A\u7684\u6362\u58F3\u65B9\u5411").option("--market <text>","\u65B0\u5267\u9762\u5411\u7684\u76EE\u6807\u5E02\u573A\uFF0C\u9ED8\u8BA4\u540C\u539F\u5267").option("--rating <text>","\u5C3A\u5EA6\u8981\u6C42\uFF0C\u9ED8\u8BA4\u540C\u539F\u5267").option("--avoid <shell>","\u8FD9\u90E8\u539F\u5267\u5DF2\u505A\u8FC7\u7684\u7248\u672C\u7684\u58F3\uFF0C\u53EF\u91CD\u590D\u7ED9\u51FA\uFF1B\u65B0\u5019\u9009\u4E0E\u5B83\u4EEC\u660E\u663E\u4E0D\u540C",(i,r=[])=>[...r,i]).option("-o, --output <path>","\u628A\u7ED3\u679C\u53E6\u5B58\u4E3A JSON")).action(H(sg,t)),o(ee(n.command("plan"),"read").description("\u9010\u5C42\u751F\u6210\u6362\u58F3\u65B9\u6848\uFF1A\u6574\u4F53\u65B9\u6848\uFF08\u542B\u9636\u6BB5\u8D70\u5411\uFF09\u2192 \u5404\u9636\u6BB5\u4E8B\u4EF6 \u2192 \u5404\u9636\u6BB5\u8282\u62CD\uFF0C\u4E0B\u5C42\u53EF\u56DE\u6539\u4E0A\u5C42\u5E76\u590D\u67E5\u53D7\u5F71\u54CD\u7684\u90E8\u5206\u3002-p \u4E3A\u539F\u5267\u5267\u672C\uFF1B\u5DF2\u6709\u65B9\u6848\u65F6\u4ECE\u672A\u5B8C\u6210\u7684\u90E8\u5206\u7EE7\u7EED").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--direction <path>","\u9009\u5B9A\u7684\u6362\u58F3\u65B9\u5411\u8BF4\u660E\uFF08\u5FC5\u586B\uFF09").option("-o, --output <path>","\u6362\u58F3\u65B9\u6848 JSON\uFF08\u5FC5\u586B\uFF09").option("--until <layer>","\u505A\u5230\u8FD9\u4E00\u5C42\u540E\u6682\u505C\uFF1Aoverall | events | beats").option("--force","\u5FFD\u7565\u5DF2\u6709\u65B9\u6848\u91CD\u65B0\u751F\u6210").option("--unit-timeout-ms <ms>","\u5355\u4E2A\u5355\u5143\u7684\u8D85\u65F6",Number)).action(H(ag,t)),o(ee(n.command("write"),"write").description("\u6309\u6362\u58F3\u65B9\u6848\u7684\u7ED3\u6784\u8868\u5199\u65B0\u5267\uFF1A\u9636\u6BB5\u5185\u6309\u96C6\u5E8F\u5199\uFF0C\u9636\u6BB5\u4E4B\u95F4\u5E76\u884C\uFF1B\u53EF\u9010\u96C6\u5BA1\u6838\u5E76\u4F20\u9012\u8D26\u672C\u3002-p \u4E3A\u65B0\u5267\u5267\u672C\uFF0C\u4E0D\u5B58\u5728\u6216\u6362\u540D\u6362\u5916\u89C2\u53D8\u5316\u65F6\u4ECE\u539F\u5267\u590D\u5236\uFF1B\u6BCF\u6761\u6B63\u6587\u8BB0\u4E0B\u6240\u5C5E\u7684\u65B0\u8282\u62CD\uFF0C\u4E0D\u5199\u65F6\u95F4\u6233").option("--source <path>","\u539F\u5267\u5267\u672C\uFF08\u5FC5\u586B\uFF09").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--plan <path>","\u5DF2\u5B8C\u6210\u7684\u6362\u58F3\u65B9\u6848 JSON\uFF08\u5FC5\u586B\uFF09").option("--episodes <list>","\u53EA\u5199\u8FD9\u4E9B\u96C6\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u9ED8\u8BA4\u5168\u5267\u672A\u5B8C\u6210\u7684\u96C6\uFF09").option("--force","\u6240\u9009\u7684\u96C6\u5DF2\u5199\u8FC7\u4E5F\u91CD\u5199").option("--review-model <profile>","\u9010\u96C6\u5199\u5B8C\u5373\u7528\u6B64 profile \u5BA1\u6838\uFF0C\u8D26\u672C\u4F20\u7ED9\u4E0B\u4E00\u96C6").option("--concurrency <n>","\u540C\u65F6\u8FD0\u884C\u7684\u9636\u6BB5\u94FE\u6570\uFF08\u9ED8\u8BA4 6\uFF09",Number).option("--episode-timeout-ms <ms>","\u5355\u96C6\u8D85\u65F6",Number)).action(H(cg,t)),o(ee(n.command("review"),"write").description("\u6362\u58F3\u5BA1\u6838\uFF1A\u6309\u96C6\u5E8F\u901A\u8BFB\uFF0C\u9010\u96C6\u5BA1\u6362\u5F97\u662F\u5426\u5408\u7406\u3001\u662F\u5426\u770B\u5F97\u61C2\u4E0E\u901A\u987A\u3001\u524D\u540E\u662F\u5426\u8FDE\u8D2F\u3001\u9020\u578B\u4E0E\u573A\u666F\u5F15\u7528\u662F\u5426\u51C6\u786E\uFF0C\u5904\u7406\u7A0B\u5E8F\u68C0\u67E5\u7ED3\u679C\uFF0C\u518D\u505A\u5168\u5267\u6536\u5C3E\u3002-p \u4E3A\u65B0\u5267\u5267\u672C\uFF1B\u4E8B\u4EF6\u683C\u5F0F\u4E0E review \u76F8\u540C").option("--source <path>","\u539F\u5267\u5267\u672C\uFF08\u5FC5\u586B\uFF09").option("--analysis <path>","\u539F\u5267\u62C6\u89E3 JSON\uFF08\u5FC5\u586B\uFF09").option("--plan <path>","\u6362\u58F3\u65B9\u6848 JSON\uFF08\u5FC5\u586B\uFF09").option("--episodes <list>","\u53EA\u5BA1\u8FD9\u4E9B\u96C6\uFF0C\u9017\u53F7\u5206\u9694\uFF08\u9ED8\u8BA4\u5168\u90E8\uFF09").option("--concurrency <n>","\u540C\u65F6\u8FDB\u884C\u7684\u9636\u6BB5\u94FE\u6570\uFF08\u9ED8\u8BA4 10\uFF09",Number).option("--max-steps <n>","\u6BCF\u96C6\u6700\u591A\u51E0\u6B65\u5DE5\u5177\u8C03\u7528",Number).option("--episode-timeout-ms <ms>","\u5355\u96C6\u8D85\u65F6",Number).option("--converge-only","\u53EA\u6267\u884C\u9636\u6BB5\u9996\u96C6\u63A5\u7F1D\u590D\u6838\u4E0E\u5168\u5267\u6536\u5C3E").option("--no-converge","\u8DF3\u8FC7\u5168\u5267\u6536\u5C3E")).action(H(dg,t)),n.command("batch").argument("<manifest>","\u6279\u91CF\u6E05\u5355 JSON\uFF1A{ dramas: [{ id, source, market, language, rating, notes, custom, pick, avoid }], models, prices, pick }").description("\u65E0\u4EBA\u503C\u5B88\u6279\u91CF\u6362\u58F3\uFF1A\u6BCF\u90E8\u5267\u5728 -o \u4E0B\u6709\u81EA\u5DF1\u7684\u9879\u76EE\u76EE\u5F55\uFF0C\u4F9D\u6B21\u62C6\u89E3 \u2192 \u65B9\u5411 \u2192 \u65B9\u6848 \u2192 \u5199\u4F5C \u2192 \u5BA1\u6838\uFF0C\u6BCF\u6B65\u4ECE\u5DF2\u4FDD\u5B58\u7684\u8FDB\u5EA6\u7EE7\u7EED\u3002\u62C6\u89E3\u8BC4\u51FA\u7684\u9002\u5408\u5EA6\u4F4E\u4E8E 3 \u4E14\u6CA1\u5199 pick \u65F6\u505C\u5728\u62C6\u89E3\u540E\uFF0C\u6307\u5B9A\u65B9\u5411\u4E0D\u53EF\u884C\u6216\u9700\u8981\u4EBA\u5DE5\u9009\u65B9\u5411\u65F6\u505C\u5728\u65B9\u5411\u6B65\uFF1B\u8865\u4E0A pick \u540E\u518D\u8FD0\u884C\u5373\u4ECE\u65B9\u5411\u7EE7\u7EED\u3002\u8FDB\u5EA6\u4E0E\u62A5\u544A\u5199\u5728 -o \u4E0B\u7684 batch-report.json / batch-report.md").option("-o, --output <dir>","\u6279\u91CF\u8F93\u51FA\u76EE\u5F55\uFF08\u5FC5\u586B\uFF09").option("--concurrency <n>","\u540C\u65F6\u8FDB\u884C\u7684\u5267\u6570\uFF08\u9ED8\u8BA4 2\uFF09",Number).option("--attempts <n>","\u6BCF\u6B65\u6700\u591A\u8FD0\u884C\u51E0\u6B21\uFF0C\u6BCF\u6B21\u4ECE\u4E0A\u6B21\u8FDB\u5EA6\u7EE7\u7EED\uFF08\u9ED8\u8BA4 3\uFF09",Number).option("--pick <n|recommended>","\u6CA1\u5199 pick \u7684\u5267\u7528\u8FD9\u4E2A\u5019\u9009\uFF1B\u4E0D\u7ED9\u65F6\u505C\u4E0B\u7B49\u4EBA\u5DE5\u9009\u62E9").option("--until <step>","\u505A\u5230\u8FD9\u4E00\u6B65\u540E\u505C\u4E0B\uFF1Aanalyze | direction | plan | write | review").option("--no-fallback","\u53EA\u7528\u6240\u9009\u6A21\u578B\uFF0C\u5931\u8D25\u65F6\u4E0D\u6362\u7528\u5176\u4ED6\u6A21\u578B\uFF08\u9ED8\u8BA4\u6309\u914D\u7F6E\u7684\u964D\u7EA7\u987A\u5E8F\u6362\u7528\uFF09").option("--llm-config <path>","LLM configuration file").action(H(pg,t))}import*as ug from"node:fs";var Lo="\u5730\u5740\uFF1A\u96C6 `3`\u3001\u573A `3-2`\u3001\u5355\u6761 `3-2-5`\u3001\u6B63\u5F0F ID\u3001\u8D44\u4EA7\u540D\u3001\u6216 `<\u8D44\u4EA7>/<\u72B6\u6001>`";function je(e){let t=me(e);if(!ug.existsSync(t))throw new x("Local script file not found.",{exitCode:k,errorCode:"SCRIPT_NOT_FOUND",hint:"Run `scriptctl checkout`, `scriptctl create`, or pass --script-path to an existing script.",data:{expected:["existing local script JSON"],actual:[t]}});return qd(t)}function he(e,t){let n=e[t];return typeof n=="string"?n:void 0}function mi(e,t){let n=e[t];if(n==null||n==="")return;let o=Number(n);if(!Number.isFinite(o))throw new x(`--${t} must be a number.`,{exitCode:k,errorCode:"OPTION_NOT_NUMBER",data:{actual:[String(n)]}});return o}function ye(e,t=0){return(e._args??[])[t]??""}function Rp(e){return Array.isArray(e)?e.map(String):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function at(e,t,n=()=>({})){try{let o=e();return[{text:o,data:{op:t,changed:!1,text:o,...n()}},G]}catch(o){throw o instanceof x?o:new x(o instanceof Error?o.message:String(o),{exitCode:k,errorCode:o?.code??"SCRIPT_TOOL_FAILED"})}}function fg(e,t){let n=ee(e.command("read [addr]"),"read").description(`\u8BFB\u4EFB\u610F\u8282\u70B9\uFF1B\u4E0D\u7ED9\u5730\u5740\u8FD4\u56DE\u5267\u672C\u5361\u3002${Lo}`).option("--outline","\u53EA\u8981\u573A\u7ED3\u6784\uFF0C\u4E0D\u8981\u6B63\u6587").option("--context <n>","\u5355\u6761 action \u524D\u540E\u5404\u5E26\u51E0\u6761\uFF08\u9ED8\u8BA4 3\uFF09").option("--plain","\u53BB\u6389\u951A\u70B9\u4E0E\u65F6\u95F4\u6233\uFF08\u53EA\u8BFB\uFF0C\u4E0D\u53EF\u56DE\u5199\uFF09").action(H(y=>{let _=je(y);return at(()=>pa(_,ye(y),{...y.outline?{depth:"outline"}:{},...y.plain?{plain:!0}:{},...mi(y,"context")!==void 0?{context:mi(y,"context")}:{}}),"read",()=>ye(y)?{}:{document:_.raw})},t));Me(n,[Lo]);let o=ee(e.command("scan <episode>"),"read").description("\u4E00\u6B21\u8FD4\u56DE\u67D0\u96C6\u7684\u5B8C\u6574\u4E0A\u4E0B\u6587\uFF1A\u573A\u7ED3\u6784 + \u5168\u90E8\u6B63\u6587 + \u5F53\u524D\u6821\u9A8C\u95EE\u9898").action(H(y=>at(()=>{let _=je(y),S=ye(y);return[`## \u573A\u7ED3\u6784
|
|
232
232
|
${pa(_,S,{depth:"outline"})}`,`## \u6B63\u6587
|
|
233
233
|
${pa(_,S)}`,`## \u5F53\u524D\u6821\u9A8C\u95EE\u9898
|
|
234
234
|
${lp(_,{})}`].join(`
|
package/dist/cli.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"./chunk-
|
|
1
|
+
import{a,b}from"./chunk-MMH5EEBU.js";export{a as buildProgram,b as main};
|
package/dist/review-agent.js
CHANGED
|
@@ -57,7 +57,7 @@ ${M}`,f++;break;case"id":M.includes("\0")||(c=M);break;case"retry":/^\d+$/.test(
|
|
|
57
57
|
]`;continue}i+=s[c],s[c]==="\\"?r=!0:l&&s[c]==="]"?l=!1:!l&&s[c]==="["&&(l=!0)}try{new RegExp(i)}catch{return console.warn(`Could not convert regex pattern at ${t.currentPath.join("/")} to a flag-independent form! Falling back to the flag-ignorant source`),e.source}return i}function Nc(e,t){var o,n,s,i,r,l;let a={type:"object",additionalProperties:(o=Oe(e.valueType._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]}))!=null?o:t.allowedAdditionalProperties};if(((n=e.keyType)==null?void 0:n._def.typeName)==="ZodString"&&((s=e.keyType._def.checks)!=null&&s.length)){let{type:c,...d}=vc(e.keyType._def,t);return{...a,propertyNames:d}}else{if(((i=e.keyType)==null?void 0:i._def.typeName)==="ZodEnum")return{...a,propertyNames:{enum:e.keyType._def.values}};if(((r=e.keyType)==null?void 0:r._def.typeName)==="ZodBranded"&&e.keyType._def.type._def.typeName==="ZodString"&&((l=e.keyType._def.type._def.checks)!=null&&l.length)){let{type:c,...d}=bc(e.keyType._def,t);return{...a,propertyNames:d}}}return a}function $5(e,t){if(t.mapStrategy==="record")return Nc(e,t);let o=Oe(e.keyType._def,{...t,currentPath:[...t.currentPath,"items","items","0"]})||Gt(),n=Oe(e.valueType._def,{...t,currentPath:[...t.currentPath,"items","items","1"]})||Gt();return{type:"array",maxItems:125,items:{type:"array",items:[o,n],minItems:2,maxItems:2}}}function Q5(e){let t=e.values,n=Object.keys(e.values).filter(i=>typeof t[t[i]]!="number").map(i=>t[i]),s=Array.from(new Set(n.map(i=>typeof i)));return{type:s.length===1?s[0]==="string"?"string":"number":["string","number"],enum:n}}function j5(){return{not:Gt()}}function B5(){return{type:"null"}}var kr={ZodString:"string",ZodNumber:"number",ZodBigInt:"integer",ZodBoolean:"boolean",ZodNull:"null"};function K5(e,t){let o=e.options instanceof Map?Array.from(e.options.values()):e.options;if(o.every(n=>n._def.typeName in kr&&(!n._def.checks||!n._def.checks.length))){let n=o.reduce((s,i)=>{let r=kr[i._def.typeName];return r&&!s.includes(r)?[...s,r]:s},[]);return{type:n.length>1?n:n[0]}}else if(o.every(n=>n._def.typeName==="ZodLiteral"&&!n.description)){let n=o.reduce((s,i)=>{let r=typeof i._def.value;switch(r){case"string":case"number":case"boolean":return[...s,r];case"bigint":return[...s,"integer"];case"object":if(i._def.value===null)return[...s,"null"];default:return s}},[]);if(n.length===o.length){let s=n.filter((i,r,l)=>l.indexOf(i)===r);return{type:s.length>1?s:s[0],enum:o.reduce((i,r)=>i.includes(r._def.value)?i:[...i,r._def.value],[])}}}else if(o.every(n=>n._def.typeName==="ZodEnum"))return{type:"string",enum:o.reduce((n,s)=>[...n,...s._def.values.filter(i=>!n.includes(i))],[])};return H5(e,t)}var H5=(e,t)=>{let o=(e.options instanceof Map?Array.from(e.options.values()):e.options).map((n,s)=>Oe(n._def,{...t,currentPath:[...t.currentPath,"anyOf",`${s}`]})).filter(n=>!!n&&(!t.strictUnions||typeof n=="object"&&Object.keys(n).length>0));return o.length?{anyOf:o}:void 0};function z5(e,t){if(["ZodString","ZodNumber","ZodBigInt","ZodBoolean","ZodNull"].includes(e.innerType._def.typeName)&&(!e.innerType._def.checks||!e.innerType._def.checks.length))return{type:[kr[e.innerType._def.typeName],"null"]};let o=Oe(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","0"]});return o&&{anyOf:[o,{type:"null"}]}}function C5(e){let t={type:"number"};if(!e.checks)return t;for(let o of e.checks)switch(o.kind){case"int":t.type="integer";break;case"min":o.inclusive?t.minimum=o.value:t.exclusiveMinimum=o.value;break;case"max":o.inclusive?t.maximum=o.value:t.exclusiveMaximum=o.value;break;case"multipleOf":t.multipleOf=o.value;break}return t}function Y5(e,t){let o={type:"object",properties:{}},n=[],s=e.shape();for(let r in s){let l=s[r];if(l===void 0||l._def===void 0)continue;let a=F5(l),c=Oe(l._def,{...t,currentPath:[...t.currentPath,"properties",r],propertyPath:[...t.currentPath,"properties",r]});c!==void 0&&(o.properties[r]=c,a||n.push(r))}n.length&&(o.required=n);let i=D5(e,t);return i!==void 0&&(o.additionalProperties=i),o}function D5(e,t){if(e.catchall._def.typeName!=="ZodNever")return Oe(e.catchall._def,{...t,currentPath:[...t.currentPath,"additionalProperties"]});switch(e.unknownKeys){case"passthrough":return t.allowedAdditionalProperties;case"strict":return t.rejectedAdditionalProperties;case"strip":return t.removeAdditionalStrategy==="strict"?t.allowedAdditionalProperties:t.rejectedAdditionalProperties}}function F5(e){try{return e.isOptional()}catch{return!0}}var Z5=(e,t)=>{var o;if(t.currentPath.toString()===((o=t.propertyPath)==null?void 0:o.toString()))return Oe(e.innerType._def,t);let n=Oe(e.innerType._def,{...t,currentPath:[...t.currentPath,"anyOf","1"]});return n?{anyOf:[{not:Gt()},n]}:Gt()},q5=(e,t)=>{if(t.pipeStrategy==="input")return Oe(e.in._def,t);if(t.pipeStrategy==="output")return Oe(e.out._def,t);let o=Oe(e.in._def,{...t,currentPath:[...t.currentPath,"allOf","0"]}),n=Oe(e.out._def,{...t,currentPath:[...t.currentPath,"allOf",o?"1":"0"]});return{allOf:[o,n].filter(s=>s!==void 0)}};function W5(e,t){return Oe(e.type._def,t)}function X5(e,t){let n={type:"array",uniqueItems:!0,items:Oe(e.valueType._def,{...t,currentPath:[...t.currentPath,"items"]})};return e.minSize&&(n.minItems=e.minSize.value),e.maxSize&&(n.maxItems=e.maxSize.value),n}function eg(e,t){return e.rest?{type:"array",minItems:e.items.length,items:e.items.map((o,n)=>Oe(o._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((o,n)=>n===void 0?o:[...o,n],[]),additionalItems:Oe(e.rest._def,{...t,currentPath:[...t.currentPath,"additionalItems"]})}:{type:"array",minItems:e.items.length,maxItems:e.items.length,items:e.items.map((o,n)=>Oe(o._def,{...t,currentPath:[...t.currentPath,"items",`${n}`]})).reduce((o,n)=>n===void 0?o:[...o,n],[])}}function tg(){return{not:Gt()}}function og(){return Gt()}var ng=(e,t)=>Oe(e.innerType._def,t),sg=(e,t,o)=>{switch(t){case"ZodString":return vc(e,o);case"ZodNumber":return C5(e);case"ZodObject":return Y5(e,o);case"ZodBigInt":return L5(e);case"ZodBoolean":return v5();case"ZodDate":return Lc(e,o);case"ZodUndefined":return tg();case"ZodNull":return B5();case"ZodArray":return b5(e,o);case"ZodUnion":case"ZodDiscriminatedUnion":return K5(e,o);case"ZodIntersection":return G5(e,o);case"ZodTuple":return eg(e,o);case"ZodRecord":return Nc(e,o);case"ZodLiteral":return S5(e);case"ZodEnum":return J5(e);case"ZodNativeEnum":return Q5(e);case"ZodNullable":return z5(e,o);case"ZodOptional":return Z5(e,o);case"ZodMap":return $5(e,o);case"ZodSet":return X5(e,o);case"ZodLazy":return()=>e.getter()._def;case"ZodPromise":return W5(e,o);case"ZodNaN":case"ZodNever":return j5();case"ZodEffects":return x5(e,o);case"ZodAny":return Gt();case"ZodUnknown":return og();case"ZodDefault":return R5(e,o);case"ZodBranded":return bc(e,o);case"ZodReadonly":return ng(e,o);case"ZodCatch":return N5(e,o);case"ZodPipeline":return q5(e,o);case"ZodFunction":case"ZodVoid":case"ZodSymbol":return;default:return(n=>{})(t)}},ig=(e,t)=>{let o=0;for(;o<e.length&&o<t.length&&e[o]===t[o];o++);return[(e.length-o).toString(),...t.slice(o)].join("/")};function Oe(e,t,o=!1){var n;let s=t.seen.get(e);if(t.override){let a=(n=t.override)==null?void 0:n.call(t,e,t,s,o);if(a!==O5)return a}if(s&&!o){let a=rg(s,t);if(a!==void 0)return a}let i={def:e,path:t.currentPath,jsonSchema:void 0};t.seen.set(e,i);let r=sg(e,e.typeName,t),l=typeof r=="function"?Oe(r(),t):r;if(l&&ag(e,t,l),t.postProcess){let a=t.postProcess(l,e,t);return i.jsonSchema=l,a}return i.jsonSchema=l,l}var rg=(e,t)=>{switch(t.$refStrategy){case"root":return{$ref:e.path.join("/")};case"relative":return{$ref:ig(t.currentPath,e.path)};case"none":case"seen":return e.path.length<t.currentPath.length&&e.path.every((o,n)=>t.currentPath[n]===o)?(console.warn(`Recursive reference detected at ${t.currentPath.join("/")}! Defaulting to any`),Gt()):t.$refStrategy==="seen"?Gt():void 0}},ag=(e,t,o)=>(e.description&&(o.description=e.description),o),lg=e=>{let t=_5(e),o=t.name!==void 0?[...t.basePath,t.definitionPath,t.name]:t.basePath;return{...t,currentPath:o,propertyPath:void 0,seen:new Map(Object.entries(t.definitions).map(([n,s])=>[s._def,{def:s._def,path:[...t.basePath,t.definitionPath,n],jsonSchema:void 0}]))}},cg=(e,t)=>{var o;let n=lg(t),s=typeof t=="object"&&t.definitions?Object.entries(t.definitions).reduce((c,[d,f])=>{var p;return{...c,[d]:(p=Oe(f._def,{...n,currentPath:[...n.basePath,n.definitionPath,d]},!0))!=null?p:Gt()}},{}):void 0,i=typeof t=="string"?t:t?.nameStrategy==="title"?void 0:t?.name,r=(o=Oe(e._def,i===void 0?n:{...n,currentPath:[...n.basePath,n.definitionPath,i]},!1))!=null?o:Gt(),l=typeof t=="object"&&t.name!==void 0&&t.nameStrategy==="title"?t.name:void 0;l!==void 0&&(r.title=l);let a=i===void 0?s?{...r,[n.definitionPath]:s}:r:{$ref:[...n.$refStrategy==="relative"?[]:n.basePath,n.definitionPath,i].join("/"),[n.definitionPath]:{...s,[i]:r}};return a.$schema="http://json-schema.org/draft-07/schema#",a},Gr=Symbol.for("vercel.ai.schema");function z(e){let t;return()=>(t==null&&(t=e()),t)}function Ui(e,{validate:t}={}){return{[Gr]:!0,_type:void 0,get jsonSchema(){return typeof e=="function"&&(e=e()),e},validate:t}}function ug(e){return typeof e=="object"&&e!==null&&Gr in e&&e[Gr]===!0&&"jsonSchema"in e&&"validate"in e}function dg(e){return e==null?Ui({type:"object",properties:{},additionalProperties:!1}):ug(e)?e:"~standard"in e?e["~standard"].vendor==="zod"?K(e):pg(e):e()}function pg(e){return Ui(()=>{if(!mg(e))throw new Error(`Standard schema vendor '${e["~standard"].vendor}' does not support JSON Schema conversion.`);return Br(e["~standard"].jsonSchema.input({target:"draft-07"}))},{validate:async t=>{let o=await e["~standard"].validate(t);return"value"in o?{success:!0,value:o.value}:{success:!1,error:new A5({value:t,cause:o.issues})}}})}function mg(e){return e["~standard"].jsonSchema!=null}function fg(e,t){var o;let n=(o=t?.useReferences)!=null?o:!1;return Ui(()=>cg(e,{$refStrategy:n?"root":"none"}),{validate:async s=>{let i=await e.safeParseAsync(s);return i.success?{success:!0,value:i.data}:{success:!1,error:i.error}}})}function gg(e,t){var o;let n=(o=t?.useReferences)!=null?o:!1;return Ui(()=>Br(I5(e,{target:"draft-7",io:"input",reused:n?"ref":"inline"})),{validate:async s=>{let i=await M5(e,s);return i.success?{success:!0,value:i.data}:{success:!1,error:i.error}}})}function hg(e){return"_zod"in e}function K(e,t){return hg(e)?gg(e,t):fg(e,t)}async function pt({value:e,schema:t,context:o}){let n=await tn({value:e,schema:t,context:o});if(!n.success)throw Jr.wrap({value:e,cause:n.error,context:o});return n.value}async function tn({value:e,schema:t,context:o}){let n=dg(t);try{if(n.validate==null)return{success:!0,value:e,rawValue:e};let s=await n.validate(e);return s.success?{success:!0,value:s.value,rawValue:e}:{success:!1,error:Jr.wrap({value:e,cause:s.error,context:o}),rawValue:e}}catch(s){return{success:!1,error:Jr.wrap({value:e,cause:s,context:o}),rawValue:e}}}async function Sr({text:e,schema:t}){try{let o=In(e);return t==null?o:await pt({value:o,schema:t})}catch(o){throw hi.isInstance(o)||w5.isInstance(o)?o:new hi({text:e,cause:o})}}async function yi({text:e,schema:t}){try{let o=In(e);return t==null?{success:!0,value:o,rawValue:o}:await tn({value:o,schema:t})}catch(o){return{success:!1,error:hi.isInstance(o)?o:new hi({text:e,cause:o}),rawValue:void 0}}}function wg({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new ci).pipeThrough(new TransformStream({async transform({data:o},n){o!=="[DONE]"&&n.enqueue(await yi({text:o,schema:t}))}}))}async function Ge({provider:e,providerOptions:t,schema:o}){if(t?.[e]==null)return;let n=await tn({value:t[e],schema:o});if(!n.success)throw new Eg({argument:"providerOptions",message:`invalid ${e} provider options`,cause:n.error});return n.value}var Ug=()=>globalThis.fetch,et=async({url:e,headers:t,body:o,failedResponseHandler:n,successfulResponseHandler:s,abortSignal:i,fetch:r})=>await Pc({url:e,headers:{"Content-Type":"application/json",...t},body:{content:JSON.stringify(o),values:o},failedResponseHandler:n,successfulResponseHandler:s,abortSignal:i,fetch:r}),Ai=async({url:e,headers:t,formData:o,failedResponseHandler:n,successfulResponseHandler:s,abortSignal:i,fetch:r})=>await Pc({url:e,headers:t,body:{content:o,values:Object.fromEntries(o.entries())},failedResponseHandler:n,successfulResponseHandler:s,abortSignal:i,fetch:r}),Pc=async({url:e,headers:t={},body:o,successfulResponseHandler:n,failedResponseHandler:s,abortSignal:i,fetch:r=Ug()})=>{try{let l=await r(e,{method:"POST",headers:qn(t,`ai-sdk/provider-utils/${uc}`,cc()),body:o.content,signal:i}),a=Zn(l);if(!l.ok){let c;try{c=await s({response:l,url:e,requestBodyValues:o.values})}catch(d){throw Dn(d)||gi.isInstance(d)?d:new gi({message:"Failed to process error response",cause:d,statusCode:l.status,url:e,responseHeaders:a,requestBodyValues:o.values})}throw c.value}try{return await n({response:l,url:e,requestBodyValues:o.values})}catch(c){throw c instanceof Error&&(Dn(c)||gi.isInstance(c))?c:new gi({message:"Failed to process successful response",cause:c,statusCode:l.status,url:e,responseHeaders:a,requestBodyValues:o.values})}}catch(l){throw Vr({error:l,url:e,requestBodyValues:o.values})}};function De({id:e,inputSchema:t}){return({execute:o,outputSchema:n,needsApproval:s,toModelOutput:i,onInputStart:r,onInputDelta:l,onInputAvailable:a,...c})=>({type:"provider",isProviderExecuted:!1,id:e,args:c,inputSchema:t,outputSchema:n,execute:o,needsApproval:s,toModelOutput:i,onInputStart:r,onInputDelta:l,onInputAvailable:a})}function Fe({id:e,inputSchema:t,outputSchema:o,supportsDeferredResults:n}){return({onInputStart:s,onInputDelta:i,onInputAvailable:r,...l})=>({type:"provider",isProviderExecuted:!0,id:e,args:l,inputSchema:t,outputSchema:o,onInputStart:s,onInputDelta:i,onInputAvailable:r,supportsDeferredResults:n})}async function Se(e){return typeof e=="function"&&(e=e()),Promise.resolve(e)}function Ps({part:e}){if(Yf(e.mediaType))return e.mediaType;if(e.data.type==="data"){let t=Cf({data:e.data.data,topLevelType:vs(e.mediaType)});if(t)return t;throw new Wl({functionality:`file of media type "${e.mediaType}" must specify subtype since it could not be auto-detected`})}throw new Wl({functionality:`file of media type "${e.mediaType}" must specify subtype since it is not passed as inline bytes`})}function Mi({reference:e,provider:t}){let o=e[t];if(o!=null)return o;throw new yg({provider:t,reference:e})}var Ag=new TextDecoder;function Mg({stream:e,url:t,requestBodyValues:o,statusCode:n,responseHeaders:s}){let i=e.getReader(),r=!1,l=()=>{r||(i.releaseLock(),r=!0)};return new ReadableStream({async pull(a){try{let{done:c,value:d}=await i.read();c?(l(),a.close()):a.enqueue(d)}catch(c){if(l(),Dn(c)){a.error(c);return}a.error(Vr({error:new _s({message:"Failed to process successful response",cause:c,statusCode:n,url:t,responseHeaders:s,requestBodyValues:o}),url:t,requestBodyValues:o}))}},async cancel(a){try{await i.cancel(a)}finally{l()}}})}async function xc({response:e,url:t}){return Ag.decode(await p5({response:e,url:t}))}var Ii=({errorSchema:e,errorToMessage:t,isRetryable:o})=>async({response:n,url:s,requestBodyValues:i})=>{let r=await xc({response:n,url:s}),l=Zn(n);if(r.trim()==="")return{responseHeaders:l,value:new _s({message:n.statusText,url:s,requestBodyValues:i,statusCode:n.status,responseHeaders:l,responseBody:r,isRetryable:o?.(n)})};try{let a=await Sr({text:r,schema:e});return{responseHeaders:l,value:new _s({message:t(a),url:s,requestBodyValues:i,statusCode:n.status,responseHeaders:l,responseBody:r,data:a,isRetryable:o?.(n,a)})}}catch{return{responseHeaders:l,value:new _s({message:n.statusText,url:s,requestBodyValues:i,statusCode:n.status,responseHeaders:l,responseBody:r,isRetryable:o?.(n)})}}},Jc=e=>async({response:t,url:o,requestBodyValues:n})=>{let s=Zn(t);if(t.body==null)throw new Rc({});return{responseHeaders:s,value:wg({stream:Mg({stream:t.body,url:o,requestBodyValues:n,statusCode:t.status,responseHeaders:s}),schema:e})}},ke=e=>async({response:t,url:o,requestBodyValues:n})=>{let s=await xc({response:t,url:o}),i=await yi({text:s,schema:e}),r=Zn(t);if(!i.success)throw new _s({message:"Invalid JSON response",cause:i.error,statusCode:t.status,responseHeaders:r,responseBody:s,url:o,requestBodyValues:n});return{responseHeaders:r,value:i.value,rawValue:i.rawValue}},kc=e=>async({response:t})=>{let o=Zn(t);if(t.body==null)throw new Rc({});return{responseHeaders:o,value:Ig({stream:t.body,schema:e})}};async function*Ig({stream:e,schema:t}){let o=e.getReader(),n=new TextDecoder,s="",i=!1;try{for(;;){let{done:l,value:a}=await o.read();if(l){i=!0,s+=n.decode();break}s+=n.decode(a,{stream:!0});let c=s.indexOf(`
|
|
58
58
|
`);for(;c!==-1;){let d=s.slice(0,c).replace(/\r$/,"");s=s.slice(c+1),d.trim().length>0&&(yield await Sr({text:d,schema:t})),c=s.indexOf(`
|
|
59
59
|
`)}}let r=s.replace(/\r$/,"");r.trim().length>0&&(yield await Sr({text:r,schema:t}))}finally{i||await o.cancel().catch(()=>{}),o.releaseLock()}}function wi(e){if(e==null)return!0;let t=typeof e;return t==="string"||t==="number"||t==="boolean"?!0:t==="function"||t==="symbol"||t==="bigint"?!1:Array.isArray(e)?e.every(wi):Object.getPrototypeOf(e)===Object.prototype?Object.values(e).every(wi):!1}var Gc="AI_SerializationError",Sc=`vercel.ai.error.${Gc}`,Og=Symbol.for(Sc),ec,tc,_g=class extends(tc=Xl,ec=Og,tc){constructor({message:e="Failed to serialize value.",cause:t}={}){super({name:Gc,message:e,cause:t}),this[ec]=!0}static isInstance(e){return Xl.hasMarker(e,Sc)}};function Kt(e){let t={};for(let[o,n]of Object.entries(e.config))if(o==="headers"){let s=bg(n);wi(s)&&(t[o]=s)}else wi(n)&&(t[o]=n);return{modelId:e.modelId,config:t}}function bg(e){let t=e;if(typeof e=="function"&&(t=e()),t instanceof Promise)throw new _g({message:"Cannot serialize asynchronous model options."});return t}function Vc(e){if(e?.trim()==="")throw new Lg({argument:"baseURL",message:"baseURL must be a non-empty string."});return e}function Rs(e){return e?.replace(/\/$/,"")}function Oi(e,t){return Object.defineProperty({...e},"experimental_toolCaller",{value:t})}import{GoogleAuth as vg}from"google-auth-library";import{GoogleInteractionsLanguageModel as Pg,GoogleLanguageModel as Rg,GoogleSpeechModel as xg}from"@ai-sdk/google/internal";import{TooManyEmbeddingValuesForCallError as kg}from"@ai-sdk/provider";import{z as vt}from"zod/v4";import{z as xs}from"zod/v4";import{z as Js}from"zod/v4";import{GoogleLanguageModel as $g}from"@ai-sdk/google/internal";import{z as $c}from"zod/v4";import{googleTools as On}from"@ai-sdk/google/internal";import{z as bt}from"zod/v4";import{z as es}from"zod/v4";import{InvalidArgumentError as Yr}from"@ai-sdk/provider";import{z as qe}from"zod/v4";import{z as on}from"zod/v4";import{AISDKError as Cr}from"@ai-sdk/provider";import{z as Lt}from"zod/v4";import{z as so}from"zod/v4";function Ng(e){let t=new vg({scopes:["https://www.googleapis.com/auth/cloud-platform"],...e});return async function(){var n;let i=await(await t.getClient()).getAccessToken();return(n=i?.token)!=null?n:null}}var Jg="5.0.82",Gg=xs.object({error:xs.object({code:xs.number().nullable(),message:xs.string(),status:xs.string()})}),_n=Ii({errorSchema:Gg,errorToMessage:e=>e.error.message}),Kr=Js.object({outputDimensionality:Js.number().optional(),taskType:Js.enum(["SEMANTIC_SIMILARITY","CLASSIFICATION","CLUSTERING","RETRIEVAL_DOCUMENT","RETRIEVAL_QUERY","QUESTION_ANSWERING","FACT_VERIFICATION","CODE_RETRIEVAL_QUERY"]).optional(),title:Js.string().optional(),autoTruncate:Js.boolean().optional()}),Sg=class Yc{constructor(t,o){this.specificationVersion="v4",this.supportsParallelCalls=!0,this.modelId=t,this.config=o}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new Yc(t.modelId,t.config)}get provider(){return this.config.provider}get maxEmbeddingsPerCall(){return Tc(this.modelId)?1:250}async doEmbed({values:t,headers:o,abortSignal:n,providerOptions:s}){var i;let r=await Ge({provider:"googleVertex",providerOptions:s,schema:Kr});if(r==null&&(r=await Ge({provider:"vertex",providerOptions:s,schema:Kr})),r==null&&(r=await Ge({provider:"google",providerOptions:s,schema:Kr})),r=r??{},t.length>this.maxEmbeddingsPerCall)throw new kg({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:t});let l=je(this.config.headers?await Se(this.config.headers):void 0,o);if(Tc(this.modelId)){let{responseHeaders:p,value:u,rawValue:g}=await et({url:`${this.config.baseURL}/models/${this.modelId}:embedContent`,headers:l,body:{content:{parts:[{text:t[0]}]},embedContentConfig:{outputDimensionality:r.outputDimensionality,taskType:r.taskType,title:r.title,autoTruncate:r.autoTruncate}},failedResponseHandler:_n,successfulResponseHandler:ke(Tg),abortSignal:n,fetch:this.config.fetch});return{warnings:[],embeddings:[u.embedding.values],usage:((i=u.usageMetadata)==null?void 0:i.promptTokenCount)==null?void 0:{tokens:u.usageMetadata.promptTokenCount},response:{headers:p,body:g}}}let a=`${this.config.baseURL}/models/${this.modelId}:predict`,{responseHeaders:c,value:d,rawValue:f}=await et({url:a,headers:l,body:{instances:t.map(p=>({content:p,task_type:r.taskType,title:r.title})),parameters:{outputDimensionality:r.outputDimensionality,autoTruncate:r.autoTruncate}},failedResponseHandler:_n,successfulResponseHandler:ke(Vg),abortSignal:n,fetch:this.config.fetch});return{warnings:[],embeddings:d.predictions.map(p=>p.embeddings.values),usage:{tokens:d.predictions.reduce((p,u)=>p+u.embeddings.statistics.token_count,0)},response:{headers:c,body:f}}}},Vg=vt.object({predictions:vt.array(vt.object({embeddings:vt.object({values:vt.array(vt.number()),statistics:vt.object({token_count:vt.number()})})}))}),Tg=vt.object({embedding:vt.object({values:vt.array(vt.number())}),usageMetadata:vt.object({promptTokenCount:vt.number().nullish()}).nullish()});function Tc(e){return e==="gemini-embedding-2"||e==="gemini-embedding-2-preview"}var Qg=class Dc{constructor(t,o){this.modelId=t,this.config=o,this.specificationVersion="v4",this.maxImagesPerCall=10}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new Dc(t.modelId,t.config)}get provider(){return this.config.provider}async doGenerate(t){var o,n,s,i,r,l,a,c,d,f;if(!this.modelId.startsWith("gemini-"))throw new Error("Google image models other than Gemini are no longer supported. Use a model ID that starts with `gemini-`.");let{prompt:p,n:u,size:g,aspectRatio:h,seed:w,providerOptions:y,headers:U,abortSignal:O,files:E,mask:A}=t,M=[];if(A!=null)throw new Error("Gemini image models do not support mask-based image editing.");if(u!=null&&u>1)throw new Error("Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.");g!=null&&M.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});let _=[];if(p!=null&&_.push({type:"text",text:p}),E!=null&&E.length>0)for(let fe of E)fe.type==="url"?_.push({type:"file",data:{type:"url",url:new URL(fe.url)},mediaType:"image/*"}):_.push({type:"file",data:{type:"data",data:typeof fe.data=="string"?fe.data:new Uint8Array(fe.data)},mediaType:fe.mediaType});let J=[{role:"user",content:_}],R=new $g(this.modelId,{provider:this.config.provider,baseURL:this.config.baseURL,headers:(o=this.config.headers)!=null?o:{},fetch:this.config.fetch,generateId:(n=this.config.generateId)!=null?n:St,supportedUrls:()=>({"*":[/^https?:\/\/.*$/,/^gs:\/\/.*$/]})}),{responseModalities:I,imageConfig:v,...T}=(i=(s=y?.googleVertex)!=null?s:y?.vertex)!=null?i:{},P={...T,responseModalities:["IMAGE"],imageConfig:h!=null||v!=null?{...v,...h!=null?{aspectRatio:h}:{}}:void 0},j=await R.doGenerate({prompt:J,seed:w,providerOptions:{googleVertex:P,vertex:P},headers:U,abortSignal:O}),Y=(a=(l=(r=this.config._internal)==null?void 0:r.currentDate)==null?void 0:l.call(r))!=null?a:new Date,ne=[];for(let fe of j.content)fe.type==="file"&&fe.mediaType.startsWith("image/")&&fe.data.type==="data"&&ne.push(Ao(fe.data.data));let se={images:ne.map(()=>({}))};return{images:ne,...j.finishReason.unified==="content-filter"?{isRetryable:!1}:{},warnings:M,providerMetadata:{googleVertex:se,vertex:se},response:{timestamp:Y,modelId:this.modelId,headers:(c=j.response)==null?void 0:c.headers},usage:j.usage?{inputTokens:j.usage.inputTokens.total,outputTokens:j.usage.outputTokens.total,totalTokens:((d=j.usage.inputTokens.total)!=null?d:0)+((f=j.usage.outputTokens.total)!=null?f:0)}:void 0}}},jg="Kore",Qc="en-US",Hr="Chirp3-HD",Bg="https://texttospeech.googleapis.com/v1/text:synthesize",Kg=class Fc{constructor(t,o){this.modelId=t,this.config=o,this.specificationVersion="v4"}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new Fc(t.modelId,t.config)}get provider(){return this.config.provider}async doGenerate(t){var o,n,s;let i=(s=(n=(o=this.config._internal)==null?void 0:o.currentDate)==null?void 0:n.call(o))!=null?s:new Date,r=[],{text:l,voice:a=jg,outputFormat:c,instructions:d,speed:f,language:p}=t,u,g;if(a.includes(Hr)){u=a;let E=a.split(Hr)[0].replace(/-$/,"");g=p??(E||Qc)}else g=p??Qc,u=`${g}-${Hr}-${a}`;d!=null&&r.push({type:"unsupported",feature:"instructions",details:"Google Cloud Text-to-Speech Chirp 3: HD voices do not support the `instructions` option. It was ignored."}),c!=null&&c!=="wav"&&r.push({type:"unsupported",feature:"outputFormat",details:`Unsupported output format: ${c}. Using wav instead.`});let h={input:{text:l},voice:{languageCode:g,name:u},audioConfig:{audioEncoding:"LINEAR16",...f!=null?{speakingRate:f}:{}}},{value:w,responseHeaders:y,rawValue:U}=await et({url:Bg,headers:je(this.config.headers?await Se(this.config.headers):void 0,t.headers),body:h,failedResponseHandler:_n,successfulResponseHandler:ke(Hg),abortSignal:t.abortSignal,fetch:this.config.fetch});return{audio:w.audioContent!=null?Fn(w.audioContent):new Uint8Array(0),warnings:r,request:{body:JSON.stringify(h)},response:{timestamp:i,modelId:this.modelId,headers:y,body:U},providerMetadata:{google:{mimeType:"audio/wav"}}}}},Hg=$c.object({audioContent:$c.string().nullish()}),zg={googleSearch:On.googleSearch,enterpriseWebSearch:On.enterpriseWebSearch,googleMaps:On.googleMaps,urlContext:On.urlContext,fileSearch:On.fileSearch,codeExecution:On.codeExecution,vertexRagStore:On.vertexRagStore},Cg=es.object({languageCodes:es.array(es.string()).optional(),enableAutomaticPunctuation:es.boolean().optional(),enableWordTimeOffsets:es.boolean().optional(),region:es.string().optional()});function zr(e){if(e==null)return;let t=Number.parseFloat(e);return Number.isFinite(t)?t:void 0}function Yg(e){if(e!=null)try{let t=new Intl.Locale(e).language;return t.length===2?t:void 0}catch{return}}var Dg=class Zc{constructor(t,o){this.modelId=t,this.config=o,this.specificationVersion="v4"}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new Zc(t.modelId,t.config)}get provider(){return this.config.provider}async doGenerate(t){var o,n,s,i,r,l,a,c,d,f;let p=(s=(n=(o=this.config._internal)==null?void 0:o.currentDate)==null?void 0:n.call(o))!=null?s:new Date,u=[],g;for(let T of["googleVertex","vertex","google"])if(g=await Ge({provider:T,providerOptions:t.providerOptions,schema:Cg}),g!=null)break;let h=(i=g?.region)!=null?i:this.config.location,w=(r=g?.languageCodes)!=null?r:["auto"],y=typeof t.audio=="string"?t.audio:bs(t.audio),U={config:{model:this.modelId,languageCodes:w,autoDecodingConfig:{},features:{enableWordTimeOffsets:(l=g?.enableWordTimeOffsets)!=null?l:!0,enableAutomaticPunctuation:(a=g?.enableAutomaticPunctuation)!=null?a:!0}},content:y},E=`https://${h==="global"?"speech.googleapis.com":`${h}-speech.googleapis.com`}/v2/projects/${this.config.project}/locations/${h}/recognizers/_:recognize`,{value:A,responseHeaders:M,rawValue:_}=await et({url:E,headers:je(this.config.headers?await Se(this.config.headers):void 0,t.headers),body:U,failedResponseHandler:_n,successfulResponseHandler:ke(Fg),abortSignal:t.abortSignal,fetch:this.config.fetch}),J=(c=A.results)!=null?c:[],R=J.map(T=>{var P,j,Y;return(Y=(j=(P=T.alternatives)==null?void 0:P[0])==null?void 0:j.transcript)!=null?Y:""}).join(" ").trim(),I=J.flatMap(T=>{var P,j,Y,ne;return(ne=(Y=(j=(P=T.alternatives)==null?void 0:P[0])==null?void 0:j.words)==null?void 0:Y.flatMap(se=>{let fe=zr(se.startOffset),ae=zr(se.endOffset);return se.word==null||fe==null||ae==null?[]:[{text:se.word,startSecond:fe,endSecond:ae}]}))!=null?ne:[]}),v=Yg((d=J[0])==null?void 0:d.languageCode);return{text:R,segments:I,language:v,durationInSeconds:zr((f=A.metadata)==null?void 0:f.totalBilledDuration),warnings:u,response:{timestamp:p,modelId:this.modelId,headers:M,body:_}}}},Fg=bt.object({results:bt.array(bt.object({alternatives:bt.array(bt.object({transcript:bt.string().nullish(),words:bt.array(bt.object({word:bt.string().nullish(),startOffset:bt.string().nullish(),endOffset:bt.string().nullish()})).nullish()})).nullish(),languageCode:bt.string().nullish()})).nullish(),metadata:bt.object({totalBilledDuration:bt.string().nullish()}).nullish()}),Zg=on.object({languageCodes:on.array(on.string()).optional(),customVocabulary:on.array(on.string()).optional(),wordTimestamp:on.boolean().optional(),diarization:on.boolean().optional(),mode:on.enum(["SMART","VERBATIM"]).optional()}),qg="google.cloud.aiplatform.v1.LlmBidiService/BidiGenerateContent",Wg=3e3;function jc(e){return e.includes("-live")}function Xg(e){return e==="global"?"aiplatform.googleapis.com":e==="eu"||e==="us"?`aiplatform.${e}.rep.googleapis.com`:`${e}-aiplatform.googleapis.com`}var eh=class qc{constructor(t,o){this.modelId=t,this.config=o,this.specificationVersion="v4"}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new qc(t.modelId,t.config)}get provider(){return this.config.provider}async parseOptions(t){for(let o of["googleVertex","vertex","google"]){let n=await Ge({provider:o,providerOptions:t,schema:Zg});if(n!=null)return n}}async doGenerate(t){var o,n,s,i,r,l,a,c,d;if(jc(this.modelId))throw new Yr({argument:"modelId",message:`Model '${this.modelId}' only supports streaming transcription. Use experimental_streamTranscribe, or a unary model such as 'gemini-3.5-transcribe'.`});let f=(s=(n=(o=this.config._internal)==null?void 0:o.currentDate)==null?void 0:n.call(o))!=null?s:new Date,p=[],u=await this.parseOptions(t.providerOptions),g=Bc(u),h={contents:[{role:"user",parts:[{inlineData:{mimeType:t.mediaType,data:Ao(t.audio)}}]}],...g!=null?{generationConfig:{audioTranscriptionConfig:g}}:{}},{value:w,responseHeaders:y,rawValue:U}=await et({url:`${this.config.baseURL}/models/${this.modelId}:generateContent`,headers:je(this.config.headers?await Se(this.config.headers):void 0,t.headers),body:h,failedResponseHandler:_n,successfulResponseHandler:ke(sh),abortSignal:t.abortSignal,fetch:this.config.fetch}),O=(a=(l=(r=(i=w.candidates)==null?void 0:i[0])==null?void 0:r.content)==null?void 0:l.parts)!=null?a:[],E=O.map(R=>{var I;return(I=R.text)!=null?I:""}).join(""),A=O.map(R=>{var I,v;return(v=(I=R.audioTranscription)==null?void 0:I.text)!=null?v:""}).join(""),M=E!==""?E:A,_,J=[];for(let R of O){let I=R.audioTranscription;if(I!=null){_??(_=(c=I.languageCode)!=null?c:void 0);for(let v of(d=I.words)!=null?d:[]){let T=Kc(v.startOffset),P=Kc(v.endOffset);v.word==null||T==null||P==null||J.push({text:v.word,startSecond:T,endSecond:P})}}}return{text:M,segments:J,language:_,durationInSeconds:void 0,warnings:p,response:{timestamp:f,modelId:this.modelId,headers:y,body:U},...w.usageMetadata!=null?{providerMetadata:{google:{usageMetadata:w.usageMetadata}}}:{}}}async doStream(t){var o,n,s,i,r,l,a;if(!jc(this.modelId))throw new Yr({argument:"modelId",message:`Model '${this.modelId}' does not support streaming transcription. Use a live model such as 'gemini-3.5-transcribe-live'.`});let c=(s=(n=(o=this.config._internal)==null?void 0:o.currentDate)==null?void 0:n.call(o))!=null?s:new Date,d=[],f=await this.parseOptions(t.providerOptions);oh(t.inputAudioFormat);let p=je(this.config.headers?await Se(this.config.headers):void 0,t.headers),{project:u,location:g}=this.config,h=`projects/${u}/locations/${g}/publishers/google/models/${this.modelId}`,w=new URL(`wss://${Xg(g)}/ws/${qg}`),y={model:h,inputAudioTranscription:(i=Bc(f))!=null?i:{}};return{request:{body:y},response:{timestamp:c,modelId:this.modelId},stream:th({webSocket:this.config.webSocket,url:w,headers:p,setup:y,inputAudioRate:(r=t.inputAudioFormat.rate)!=null?r:16e3,finishGraceMs:(a=(l=this.config._internal)==null?void 0:l.finishGraceMs)!=null?a:Wg,warnings:d,audio:t.audio,abortSignal:t.abortSignal,includeRawChunks:t.includeRawChunks})}}};function th({webSocket:e,url:t,headers:o,setup:n,inputAudioRate:s,finishGraceMs:i,warnings:r,audio:l,abortSignal:a,includeRawChunks:c}){let d=!1,f=()=>{};return new ReadableStream({start:p=>{let u,g,h,w=new Promise(ne=>{h=ne}),y=0,U="",O="",E="",A,M=!1,_,J,R=()=>`google-segment-${y}`,I=()=>{J!=null&&(clearTimeout(J),J=void 0)},v=()=>{d||!M||(I(),J=setTimeout(()=>{J=void 0,j()},i))};f=ne=>{I(),u!=null?u.cancel().catch(()=>{}):l.cancel().catch(()=>{}),g?.close(ne)};let T=ne=>{d||(d=!0,f(),p.error(ne))},P=()=>{if(U===""){if(E==="")return;U=E}E="",p.enqueue({type:"transcript-final",id:R(),text:U}),O+=O===""?U:` ${U}`,U="",y++},j=()=>{d||(P(),d=!0,p.enqueue({type:"finish",text:O,segments:[],language:A,durationInSeconds:void 0,..._!=null?{providerMetadata:{google:{usageMetadata:_}}}:{}}),p.close(),f(1e3))},Y=async ne=>{u=l.getReader();try{for(;;){let{done:se,value:fe}=await u.read();if(se||d)break;ne.send(JSON.stringify({realtimeInput:{audio:{data:Ao(fe),mimeType:`audio/pcm;rate=${s}`}}})),await oc(ne)}}finally{u.releaseLock(),u=void 0}d||(ne.send(JSON.stringify({realtimeInput:{audioStreamEnd:!0}})),M=!0,v())};g=nc({url:t,headers:o,webSocket:e,abortSignal:a,onAbort:T,onProcessingError:T,onOpen:ne=>{p.enqueue({type:"stream-start",warnings:r}),ne.send(JSON.stringify({setup:n})),w.then(()=>d?void 0:Y(ne)).catch(T)},onMessageText:async ne=>{var se,fe;if(d)return;let ae=await yi({text:ne});if(!ae.success)return;let N=ae.value;if(c&&p.enqueue({type:"raw",rawValue:N}),N.setupComplete!=null&&h(),N.usageMetadata!=null&&(_=N.usageMetadata),N.error!=null){T(new Error((se=N.error.message)!=null?se:"Vertex Live API error"));return}let le=N.serverContent,S=le?.interimInputTranscription;S?.text&&(v(),E=S.text,p.enqueue({type:"transcript-partial",id:R(),text:S.text}));let L=(fe=le?.inputTranscription)!=null?fe:N.inputTranscription;L!=null&&(L.languageCode!=null&&(A=L.languageCode),L.text&&(v(),E="",U+=L.text,p.enqueue({type:"transcript-delta",id:R(),delta:L.text})),L.finished===!0&&P()),le?.turnComplete&&P();let V=le?.interactionStatus;M&&(V==="IDLE"||V==="REQUIRES_ACTION"||le?.turnComplete===!0&&V==null)&&j()},onSocketError:()=>{T(new Error("Vertex Live transcription error."+(e==null?" Note: the native WebSocket implementation cannot send the Authorization header required by Vertex. Pass a header-capable WebSocket implementation (e.g. the 'ws' package) via createVertex({ webSocket }).":"")))},onClose:({code:ne,reason:se})=>{if(!d){if(M){j();return}T(new Error(`Vertex Live transcription WebSocket closed unexpectedly before finishing (code ${ne??"unknown"}${se?`, reason: ${se}`:""}).`))}}})},cancel:()=>{d||(d=!0,f())}})}function Bc(e){if(e==null)return;let t={};return e.languageCodes!=null&&(t.languageCodes=e.languageCodes),e.customVocabulary!=null&&(t.customVocabulary=e.customVocabulary),e.wordTimestamp!=null&&(t.wordTimestamp=e.wordTimestamp),e.diarization!=null&&(t.diarization=e.diarization),e.mode!=null&&(t.mode=e.mode),Object.keys(t).length>0?t:void 0}function oh(e){if(e.type!=="audio/pcm"||e.rate!=null&&e.rate!==16e3)throw new Yr({argument:"inputAudioFormat",message:"The Gemini Live transcription API only supports 16kHz 16-bit PCM input audio."})}function Kc(e){if(e==null)return;let t=Number.parseFloat(e);return Number.isFinite(t)?t:void 0}var nh=qe.object({word:qe.string().nullish(),startOffset:qe.string().nullish(),endOffset:qe.string().nullish()}),sh=qe.object({candidates:qe.array(qe.object({content:qe.object({parts:qe.array(qe.object({text:qe.string().nullish(),audioTranscription:qe.object({text:qe.string().nullish(),languageCode:qe.string().nullish(),speakerLabel:qe.string().nullish(),words:qe.array(nh).nullish()}).nullish()})).nullish()}).nullish()})).nullish(),usageMetadata:qe.record(qe.string(),qe.unknown()).nullish()}),Hc=z(()=>K(so.looseObject({pollIntervalMs:so.number().positive().nullish(),pollTimeoutMs:so.number().positive().nullish(),personGeneration:so.enum(["dont_allow","allow_adult","allow_all"]).nullish(),negativePrompt:so.string().nullish(),generateAudio:so.boolean().nullish(),gcsOutputDirectory:so.string().nullish(),referenceImages:so.array(so.object({bytesBase64Encoded:so.string().nullish(),gcsUri:so.string().nullish()})).nullish()})));function ih(e){var t,o;return(o=(t=e.frameImages)==null?void 0:t.find(n=>n.frameType==="first_frame"))==null?void 0:o.image}function rh(e){var t;return(t=ih(e))!=null?t:e.image}function ah(e){var t,o;return(o=(t=e.frameImages)==null?void 0:t.find(n=>n.frameType==="last_frame"))==null?void 0:o.image}function lh(e){if(!(e.frameImages!=null&&e.frameImages.length>0))return e.inputReferences!=null&&e.inputReferences.length>0?e.inputReferences:void 0}function Dr(e,t){if(e.type==="url"){if(e.url.startsWith("gs://"))return{gcsUri:e.url,mimeType:"image/png"};t.push({type:"unsupported",feature:"URL-based image input",details:"Vertex AI video models require base64-encoded images or GCS URIs. URL will be ignored."});return}return{bytesBase64Encoded:typeof e.data=="string"?e.data:bs(e.data),mimeType:e.mediaType||"image/png"}}function ch(e,t){let o=Dr(e,t);return o!=null?{image:o,referenceType:"asset"}:void 0}var uh=class{constructor(e,t){this.modelId=e,this.config=t,this.specificationVersion="v4"}get provider(){return this.config.provider}get maxVideosPerCall(){return 4}async buildRequest(e){var t,o;let n=[],s=(t=await Ge({provider:"googleVertex",providerOptions:e.providerOptions,schema:Hc}))!=null?t:await Ge({provider:"vertex",providerOptions:e.providerOptions,schema:Hc}),i=[{}],r=i[0];e.prompt!=null&&(r.prompt=e.prompt);let l=rh(e);if(l!=null){let p=Dr(l,n);p!=null&&(r.image=p)}let a=ah(e);if(a!=null){let p=Dr(a,n);p!=null&&(r.lastFrame=p)}let c=lh(e);c!=null?r.referenceImages=c.flatMap(p=>{let u=ch(p,n);return u!=null?[u]:[]}):s?.referenceImages!=null&&(r.referenceImages=s.referenceImages);let d={sampleCount:e.n};if(e.aspectRatio&&(d.aspectRatio=e.aspectRatio),e.resolution){let p={"1280x720":"720p","1920x1080":"1080p","3840x2160":"4k"};d.resolution=p[e.resolution]||e.resolution}e.duration&&(d.durationSeconds=e.duration),e.seed&&(d.seed=e.seed);let f=(o=e.generateAudio)!=null?o:s?.generateAudio;if(f!=null&&(d.generateAudio=f),s!=null){let p=s;p.personGeneration!==void 0&&p.personGeneration!==null&&(d.personGeneration=p.personGeneration),p.negativePrompt!==void 0&&p.negativePrompt!==null&&(d.negativePrompt=p.negativePrompt),p.gcsOutputDirectory!==void 0&&p.gcsOutputDirectory!==null&&(d.gcsOutputDirectory=p.gcsOutputDirectory);for(let[u,g]of Object.entries(p))["pollIntervalMs","pollTimeoutMs","personGeneration","negativePrompt","generateAudio","gcsOutputDirectory","referenceImages"].includes(u)||(d[u]=g)}return{instances:i,parameters:d,warnings:n,googleVertexOptions:s}}buildCompletedResult({finalOperation:e,responseHeaders:t,warnings:o,currentDate:n}){let s=e.response;if(!s?.videos||s.videos.length===0)throw new Cr({name:"VERTEX_VIDEO_GENERATION_ERROR",message:`No videos in response. Response: ${JSON.stringify(e)}`});let i=[],r=[];for(let l of s.videos)l.bytesBase64Encoded?(i.push({type:"base64",data:l.bytesBase64Encoded,mediaType:l.mimeType||"video/mp4"}),r.push({mimeType:l.mimeType})):l.gcsUri&&(i.push({type:"url",url:l.gcsUri,mediaType:l.mimeType||"video/mp4"}),r.push({gcsUri:l.gcsUri,mimeType:l.mimeType}));if(i.length===0)throw new Cr({name:"VERTEX_VIDEO_GENERATION_ERROR",message:"No valid videos in response"});return{status:"completed",videos:i,warnings:o,response:{timestamp:n,modelId:this.modelId,headers:t},providerMetadata:(()=>{let l={videos:r};return{googleVertex:l,"google-vertex":l,vertex:l}})()}}async doStart(e){var t,o,n;let s=(n=(o=(t=this.config._internal)==null?void 0:t.currentDate)==null?void 0:o.call(t))!=null?n:new Date,{instances:i,parameters:r,warnings:l}=await this.buildRequest(e),{value:a,responseHeaders:c}=await et({url:`${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,headers:je(await Se(this.config.headers),e.headers),body:{instances:i,parameters:r},successfulResponseHandler:ke(zc),failedResponseHandler:_n,abortSignal:e.abortSignal,fetch:this.config.fetch}),d=a.name;if(!d)throw new Cr({name:"VERTEX_VIDEO_GENERATION_ERROR",message:"No operation name returned from API"});return{operation:{operationName:d},warnings:l,response:{timestamp:s,modelId:this.modelId,headers:c}}}async doStatus(e){var t,o,n;let s=(n=(o=(t=this.config._internal)==null?void 0:t.currentDate)==null?void 0:o.call(t))!=null?n:new Date,{operationName:i}=e.operation,{value:r,responseHeaders:l}=await et({url:`${this.config.baseURL}/models/${this.modelId}:fetchPredictOperation`,headers:je(await Se(this.config.headers),e.headers),body:{operationName:i},successfulResponseHandler:ke(zc),failedResponseHandler:_n,abortSignal:e.abortSignal,fetch:this.config.fetch});return r.done?r.error?{status:"error",error:`Video generation failed: ${r.error.message}`,response:{timestamp:s,modelId:this.modelId,headers:l}}:this.buildCompletedResult({finalOperation:r,responseHeaders:l,warnings:[],currentDate:s}):{status:"pending",response:{timestamp:s,modelId:this.modelId,headers:l}}}},zc=Lt.object({name:Lt.string().nullish(),done:Lt.boolean().nullish(),error:Lt.object({code:Lt.number().nullish(),message:Lt.string(),status:Lt.string().nullish()}).nullish(),response:Lt.object({videos:Lt.array(Lt.object({bytesBase64Encoded:Lt.string().nullish(),gcsUri:Lt.string().nullish(),mimeType:Lt.string().nullish()})).nullish(),raiMediaFilteredCount:Lt.number().nullish()}).nullish()}),dh="https://aiplatform.googleapis.com/v1/publishers/google",ph="endpoints/";function mh(e){return e.startsWith(ph)}function fh(e,t){return async(o,n)=>{let s={...n,headers:{...n?.headers?Ls(n.headers):{},"x-goog-api-key":e}};return(t??fetch)(o.toString(),s)}}function Cc(e={}){let t=Xn({settingValue:e.apiKey,environmentVariableName:"GOOGLE_VERTEX_API_KEY"}),o=()=>Qr({settingValue:e.project,settingName:"project",environmentVariableName:"GOOGLE_VERTEX_PROJECT",description:"Google Vertex project"}),n=()=>Qr({settingValue:e.location,settingName:"location",environmentVariableName:"GOOGLE_VERTEX_LOCATION",description:"Google Vertex location"}),s=({endpoint:g=!1}={})=>{var h,w;if(t)return(h=Rs(e.baseURL))!=null?h:dh;let y=n(),U=o(),O=()=>y==="global"?"aiplatform.googleapis.com":y==="eu"||y==="us"?`aiplatform.${y}.rep.googleapis.com`:`${y}-aiplatform.googleapis.com`;return(w=Rs(e.baseURL))!=null?w:`https://${O()}/v1beta1/projects/${U}/locations/${y}${g?"":"/publishers/google"}`},i=(g,{endpoint:h=!1}={})=>{let w=async()=>{var y;let U=await Se((y=e.headers)!=null?y:{});return qn(U,`ai-sdk/google-vertex/${Jg}`)};return{provider:`google.vertex.${g}`,headers:w,fetch:t?fh(t,e.fetch):e.fetch,baseURL:s({endpoint:h})}},r=g=>{var h,w,y;let U=mh(g);if(U&&t)throw new Error("Google Vertex tuned models do not support Express Mode API keys. Use standard Google Cloud credentials instead.");return new Rg(g,{...i("chat",{endpoint:U}),generateId:(h=e.generateId)!=null?h:St,supportedUrls:()=>({"*":[/^https?:\/\/.*$/,/^gs:\/\/.*$/]}),downloadToolResultFiles:{maxBytes:(y=(w=e.toolResultDownloads)==null?void 0:w.maxBytes)!=null?y:7*1024*1024}})},l=g=>{var h;if(t)throw new Error("Google Vertex Interactions models do not support Express Mode API keys. Use standard Google Cloud credentials instead.");return new Pg(g,{...i("interactions",{endpoint:!0}),generateId:(h=e.generateId)!=null?h:St})},a=g=>new Sg(g,i("embedding")),c=g=>{var h;return new Qg(g,{...i("image"),generateId:(h=e.generateId)!=null?h:St})},d=g=>{var h;return new uh(g,{...i("video"),generateId:(h=e.generateId)!=null?h:St})},f=g=>{if(g.startsWith("chirp")){if(t)throw new Error("Google Vertex Chirp speech models do not support Express Mode API keys. Use standard Google Cloud credentials instead.");let h=i("speech");return new Kg(g,{provider:h.provider,headers:h.headers,fetch:h.fetch})}return new xg(g,i("speech"))},p=g=>{if(t)throw new Error("Google Vertex transcription models do not support Express Mode API keys. Use standard Google Cloud credentials instead.");let h=i("transcription");return g.startsWith("gemini")?new eh(g,{provider:h.provider,baseURL:s(),headers:h.headers,fetch:h.fetch,webSocket:e.webSocket,project:o(),location:n()}):new Dg(g,{provider:h.provider,headers:h.headers,fetch:h.fetch,project:o(),location:n()})},u=function(g){if(new.target)throw new Error("The Google Vertex AI model function cannot be called with the new keyword.");return r(g)};return u.specificationVersion="v4",u.languageModel=r,u.interactions=l,u.embeddingModel=a,u.textEmbeddingModel=a,u.image=c,u.imageModel=c,u.video=d,u.videoModel=d,u.speech=f,u.speechModel=f,u.transcription=p,u.transcriptionModel=p,u.tools=zg,u}function Fr(e={}){if(Xn({settingValue:e.apiKey,environmentVariableName:"GOOGLE_VERTEX_API_KEY"}))return Cc(e);let o=e.project==null?e.googleAuthOptions:{projectId:e.project,...e.googleAuthOptions},n=Ng(o);return Cc({...e,headers:async()=>({Authorization:`Bearer ${await n()}`,...await Se(e.headers)})})}var yI=Fr();import{GoogleAuth as IE}from"google-auth-library";import{InvalidArgumentError as gh,NoSuchModelError as Wc}from"@ai-sdk/provider";import{z as nn}from"zod/v4";import{z as ks}from"zod/v4";import{APICallError as Uh,InvalidResponseDataError as yh}from"@ai-sdk/provider";import{z as m}from"zod/v4";import{z as x}from"zod/v4";import{UnsupportedFunctionalityError as Oh}from"@ai-sdk/provider";import{z as $e}from"zod/v4";import{z as zt}from"zod/v4";import{z as Be}from"zod/v4";import{z as Ke}from"zod/v4";import{z as _e}from"zod/v4";import{z as be}from"zod/v4";import{UnsupportedFunctionalityError as Xh}from"@ai-sdk/provider";import{z as io}from"zod/v4";import{z as q}from"zod/v4";import{z as C}from"zod/v4";import{z as bn}from"zod/v4";import{InvalidArgumentError as Pi,InvalidResponseDataError as Lw,UnsupportedFunctionalityError as ts}from"@ai-sdk/provider";import{z as ge}from"zod/v4";import{z as Wr}from"zod/v4";import{z as Xr}from"zod/v4";import{z as Gs}from"zod/v4";import{z as Ht}from"zod/v4";import{z as at}from"zod/v4";import{z as ve}from"zod/v4";import{z as Mo}from"zod/v4";import{z as Io}from"zod/v4";import{z as Oo}from"zod/v4";import{z as Ln}from"zod/v4";import{z as tt}from"zod/v4";var hh=z(()=>K(ks.object({type:ks.literal("error"),error:ks.object({type:ks.string(),message:ks.string()})}))),_o=Ii({errorSchema:hh,errorToMessage:e=>e.error.message}),wh=z(()=>K(nn.object({id:nn.string(),type:nn.literal("file"),filename:nn.string(),mime_type:nn.string(),size_bytes:nn.number(),created_at:nn.string(),downloadable:nn.boolean().nullish()}))),Eh=class{constructor(e){this.config=e,this.specificationVersion="v4"}get provider(){return this.config.provider}async uploadFile({data:e,mediaType:t,filename:o,abortSignal:n,headers:s}){var i,r;let l=Ei(e),a=new Blob([l],{type:t}),c=new FormData;o!=null?c.append("file",a,o):c.append("file",a);let{value:d}=await Ai({url:`${this.config.baseURL}/files`,headers:je(this.config.headers(),{"anthropic-beta":"files-api-2025-04-14"},s),formData:c,failedResponseHandler:_o,successfulResponseHandler:ke(wh),abortSignal:n,fetch:this.config.fetch});return{warnings:[],providerReference:{anthropic:d.id},mediaType:(i=d.mime_type)!=null?i:t,filename:(r=d.filename)!=null?r:o,providerMetadata:{anthropic:{filename:d.filename,mimeType:d.mime_type,sizeBytes:d.size_bytes,createdAt:d.created_at,...d.downloadable!=null?{downloadable:d.downloadable}:{}}}}}},du=m.object({type:m.string(),category:m.string().nullish(),explanation:m.string().nullish(),recommended_model:m.string().nullish()}),jo=m.union([m.object({type:m.literal("code_execution_20250825"),tool_id:m.string()}),m.object({type:m.literal("code_execution_20260120"),tool_id:m.string()}),m.object({type:m.literal("direct")})]),pu=m.discriminatedUnion("type",[m.object({type:m.literal("web_search_result_location"),cited_text:m.string(),url:m.string(),title:m.string().nullable(),encrypted_index:m.string()}),m.object({type:m.literal("page_location"),cited_text:m.string(),document_index:m.number(),document_title:m.string().nullable(),start_page_number:m.number(),end_page_number:m.number(),file_id:m.string().nullish()}),m.object({type:m.literal("char_location"),cited_text:m.string(),document_index:m.number(),document_title:m.string().nullable(),start_char_index:m.number(),end_char_index:m.number(),file_id:m.string().nullish()}),m.object({type:m.literal("content_block_location"),cited_text:m.string(),document_index:m.number(),document_title:m.string().nullable(),start_block_index:m.number(),end_block_index:m.number(),file_id:m.string().nullable()}),m.object({type:m.literal("search_result_location"),cited_text:m.string(),search_result_index:m.number(),source:m.string(),title:m.string().nullable(),start_block_index:m.number(),end_block_index:m.number()})]),mu=m.union([m.string(),m.array(m.union([m.string(),m.object({type:m.literal("text"),text:m.string(),citations:m.array(m.json()).nullable().optional()})]))]),ea=m.object({type:m.string(),path:m.string(),reason:m.string()}),Li=z(()=>K(m.object({type:m.literal("message"),id:m.string().nullish(),model:m.string().nullish(),content:m.array(m.discriminatedUnion("type",[m.object({type:m.literal("text"),text:m.string(),citations:m.array(pu).nullable().optional()}),m.object({type:m.literal("thinking"),thinking:m.string(),signature:m.string()}),m.object({type:m.literal("redacted_thinking"),data:m.string()}),m.object({type:m.literal("compaction"),content:m.string()}),m.object({type:m.literal("tool_use"),id:m.string(),name:m.string(),input:m.unknown(),caller:jo.optional()}),m.object({type:m.literal("server_tool_use"),id:m.string(),name:m.string(),input:m.record(m.string(),m.unknown()).nullish(),caller:jo.optional()}),m.object({type:m.literal("mcp_tool_use"),id:m.string(),name:m.string(),input:m.unknown(),server_name:m.string()}),m.object({type:m.literal("mcp_tool_result"),tool_use_id:m.string(),is_error:m.boolean(),content:mu}),m.object({type:m.literal("web_fetch_tool_result"),tool_use_id:m.string(),caller:jo.optional(),content:m.union([m.object({type:m.literal("web_fetch_result"),url:m.string(),retrieved_at:m.string().nullable(),content:m.object({type:m.literal("document"),title:m.string().nullable(),citations:m.object({enabled:m.boolean()}).optional(),source:m.union([m.object({type:m.literal("base64"),media_type:m.literal("application/pdf"),data:m.string()}),m.object({type:m.literal("text"),media_type:m.literal("text/plain"),data:m.string()})])})}),m.object({type:m.literal("web_fetch_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("web_search_tool_result"),tool_use_id:m.string(),caller:jo.optional(),content:m.union([m.array(m.object({type:m.literal("web_search_result"),url:m.string(),title:m.string().nullable(),encrypted_content:m.string(),page_age:m.string().nullish()})),m.object({type:m.literal("web_search_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("code_execution_tool_result"),tool_use_id:m.string(),content:m.union([m.object({type:m.literal("code_execution_result"),stdout:m.string(),stderr:m.string(),return_code:m.number(),content:m.array(m.object({type:m.literal("code_execution_output"),file_id:m.string()})).optional().default([])}),m.object({type:m.literal("encrypted_code_execution_result"),encrypted_stdout:m.string(),stderr:m.string(),return_code:m.number(),content:m.array(m.object({type:m.literal("code_execution_output"),file_id:m.string()})).optional().default([])}),m.object({type:m.literal("code_execution_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("bash_code_execution_tool_result"),tool_use_id:m.string(),content:m.discriminatedUnion("type",[m.object({type:m.literal("bash_code_execution_result"),content:m.array(m.object({type:m.literal("bash_code_execution_output"),file_id:m.string()})),stdout:m.string(),stderr:m.string(),return_code:m.number()}),m.object({type:m.literal("bash_code_execution_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("text_editor_code_execution_tool_result"),tool_use_id:m.string(),content:m.discriminatedUnion("type",[m.object({type:m.literal("text_editor_code_execution_tool_result_error"),error_code:m.string()}),m.object({type:m.literal("text_editor_code_execution_view_result"),content:m.string(),file_type:m.string(),num_lines:m.number().nullable(),start_line:m.number().nullable(),total_lines:m.number().nullable()}),m.object({type:m.literal("text_editor_code_execution_create_result"),is_file_update:m.boolean()}),m.object({type:m.literal("text_editor_code_execution_str_replace_result"),lines:m.array(m.string()).nullable(),new_lines:m.number().nullable(),new_start:m.number().nullable(),old_lines:m.number().nullable(),old_start:m.number().nullable()})])}),m.object({type:m.literal("tool_search_tool_result"),tool_use_id:m.string(),content:m.union([m.object({type:m.literal("tool_search_tool_search_result"),tool_references:m.array(m.object({type:m.literal("tool_reference"),tool_name:m.string()}))}),m.object({type:m.literal("tool_search_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("container_upload"),file_id:m.string()}),m.object({type:m.literal("advisor_tool_result"),tool_use_id:m.string(),content:m.discriminatedUnion("type",[m.object({type:m.literal("advisor_result"),text:m.string(),stop_reason:m.string().nullish()}),m.object({type:m.literal("advisor_redacted_result"),encrypted_content:m.string(),stop_reason:m.string().nullish()}),m.object({type:m.literal("advisor_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("fallback")})])),stop_reason:m.string().nullish(),stop_sequence:m.string().nullish(),stop_details:du.nullish(),input_transformations:m.array(ea).nullish(),usage:m.looseObject({input_tokens:m.number(),output_tokens:m.number(),output_tokens_details:m.object({thinking_tokens:m.number().nullish()}).nullish(),cache_creation_input_tokens:m.number().nullish(),cache_read_input_tokens:m.number().nullish(),iterations:m.array(m.object({type:m.union([m.literal("compaction"),m.literal("message"),m.literal("advisor_message"),m.literal("fallback_message")]),model:m.string().nullish(),input_tokens:m.number(),output_tokens:m.number(),cache_creation_input_tokens:m.number().nullish(),cache_read_input_tokens:m.number().nullish()})).nullish()}),container:m.object({expires_at:m.string(),id:m.string(),skills:m.array(m.object({type:m.union([m.literal("anthropic"),m.literal("custom")]),skill_id:m.string(),version:m.string()})).nullish()}).nullish(),context_management:m.object({applied_edits:m.array(m.union([m.object({type:m.literal("clear_tool_uses_20250919"),cleared_tool_uses:m.number(),cleared_input_tokens:m.number()}),m.object({type:m.literal("clear_thinking_20251015"),cleared_thinking_turns:m.number(),cleared_input_tokens:m.number()}),m.object({type:m.literal("compact_20260112")})]))}).nullish()}))),Ah=z(()=>K(m.discriminatedUnion("type",[m.object({type:m.literal("message_start"),message:m.object({id:m.string().nullish(),model:m.string().nullish(),role:m.string().nullish(),usage:m.looseObject({input_tokens:m.number(),cache_creation_input_tokens:m.number().nullish(),cache_read_input_tokens:m.number().nullish()}),content:m.array(m.discriminatedUnion("type",[m.object({type:m.literal("tool_use"),id:m.string(),name:m.string(),input:m.unknown(),caller:jo.optional()})])).nullish(),stop_reason:m.string().nullish(),input_transformations:m.array(ea).nullish(),container:m.object({expires_at:m.string(),id:m.string()}).nullish()})}),m.object({type:m.literal("content_block_start"),index:m.number(),content_block:m.discriminatedUnion("type",[m.object({type:m.literal("text"),text:m.string()}),m.object({type:m.literal("thinking"),thinking:m.string()}),m.object({type:m.literal("tool_use"),id:m.string(),name:m.string(),input:m.record(m.string(),m.unknown()).optional(),caller:jo.optional()}),m.object({type:m.literal("redacted_thinking"),data:m.string()}),m.object({type:m.literal("compaction"),content:m.string().nullish()}),m.object({type:m.literal("server_tool_use"),id:m.string(),name:m.string(),input:m.record(m.string(),m.unknown()).nullish(),caller:jo.optional()}),m.object({type:m.literal("mcp_tool_use"),id:m.string(),name:m.string(),input:m.unknown(),server_name:m.string()}),m.object({type:m.literal("mcp_tool_result"),tool_use_id:m.string(),is_error:m.boolean(),content:mu}),m.object({type:m.literal("web_fetch_tool_result"),tool_use_id:m.string(),caller:jo.optional(),content:m.union([m.object({type:m.literal("web_fetch_result"),url:m.string(),retrieved_at:m.string().nullable(),content:m.object({type:m.literal("document"),title:m.string().nullable(),citations:m.object({enabled:m.boolean()}).optional(),source:m.union([m.object({type:m.literal("base64"),media_type:m.literal("application/pdf"),data:m.string()}),m.object({type:m.literal("text"),media_type:m.literal("text/plain"),data:m.string()})])})}),m.object({type:m.literal("web_fetch_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("web_search_tool_result"),tool_use_id:m.string(),caller:jo.optional(),content:m.union([m.array(m.object({type:m.literal("web_search_result"),url:m.string(),title:m.string().nullable(),encrypted_content:m.string(),page_age:m.string().nullish()})),m.object({type:m.literal("web_search_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("code_execution_tool_result"),tool_use_id:m.string(),content:m.union([m.object({type:m.literal("code_execution_result"),stdout:m.string(),stderr:m.string(),return_code:m.number(),content:m.array(m.object({type:m.literal("code_execution_output"),file_id:m.string()})).optional().default([])}),m.object({type:m.literal("encrypted_code_execution_result"),encrypted_stdout:m.string(),stderr:m.string(),return_code:m.number(),content:m.array(m.object({type:m.literal("code_execution_output"),file_id:m.string()})).optional().default([])}),m.object({type:m.literal("code_execution_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("bash_code_execution_tool_result"),tool_use_id:m.string(),content:m.discriminatedUnion("type",[m.object({type:m.literal("bash_code_execution_result"),content:m.array(m.object({type:m.literal("bash_code_execution_output"),file_id:m.string()})),stdout:m.string(),stderr:m.string(),return_code:m.number()}),m.object({type:m.literal("bash_code_execution_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("text_editor_code_execution_tool_result"),tool_use_id:m.string(),content:m.discriminatedUnion("type",[m.object({type:m.literal("text_editor_code_execution_tool_result_error"),error_code:m.string()}),m.object({type:m.literal("text_editor_code_execution_view_result"),content:m.string(),file_type:m.string(),num_lines:m.number().nullable(),start_line:m.number().nullable(),total_lines:m.number().nullable()}),m.object({type:m.literal("text_editor_code_execution_create_result"),is_file_update:m.boolean()}),m.object({type:m.literal("text_editor_code_execution_str_replace_result"),lines:m.array(m.string()).nullable(),new_lines:m.number().nullable(),new_start:m.number().nullable(),old_lines:m.number().nullable(),old_start:m.number().nullable()})])}),m.object({type:m.literal("tool_search_tool_result"),tool_use_id:m.string(),content:m.union([m.object({type:m.literal("tool_search_tool_search_result"),tool_references:m.array(m.object({type:m.literal("tool_reference"),tool_name:m.string()}))}),m.object({type:m.literal("tool_search_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("advisor_tool_result"),tool_use_id:m.string(),content:m.discriminatedUnion("type",[m.object({type:m.literal("advisor_result"),text:m.string(),stop_reason:m.string().nullish()}),m.object({type:m.literal("advisor_redacted_result"),encrypted_content:m.string(),stop_reason:m.string().nullish()}),m.object({type:m.literal("advisor_tool_result_error"),error_code:m.string()})])}),m.object({type:m.literal("fallback")})])}),m.object({type:m.literal("content_block_delta"),index:m.number(),delta:m.discriminatedUnion("type",[m.object({type:m.literal("input_json_delta"),partial_json:m.string()}),m.object({type:m.literal("text_delta"),text:m.string()}),m.object({type:m.literal("thinking_delta"),thinking:m.string()}),m.object({type:m.literal("signature_delta"),signature:m.string()}),m.object({type:m.literal("compaction_delta"),content:m.string().nullish()}),m.object({type:m.literal("citations_delta"),citation:pu})])}),m.object({type:m.literal("content_block_stop"),index:m.number()}),m.object({type:m.literal("error"),error:m.object({type:m.string(),message:m.string(),code:m.union([m.string(),m.number()]).nullish(),statusCode:m.number().nullish(),isRetryable:m.boolean().nullish(),data:m.unknown().nullish()})}),m.object({type:m.literal("message_delta"),delta:m.object({stop_reason:m.string().nullish(),stop_sequence:m.string().nullish(),stop_details:du.nullish(),container:m.object({expires_at:m.string(),id:m.string(),skills:m.array(m.object({type:m.union([m.literal("anthropic"),m.literal("custom")]),skill_id:m.string(),version:m.string()})).nullish()}).nullish()}),usage:m.looseObject({input_tokens:m.number().nullish(),output_tokens:m.number(),output_tokens_details:m.object({thinking_tokens:m.number().nullish()}).nullish(),cache_creation_input_tokens:m.number().nullish(),cache_read_input_tokens:m.number().nullish(),iterations:m.array(m.object({type:m.union([m.literal("compaction"),m.literal("message"),m.literal("advisor_message"),m.literal("fallback_message")]),model:m.string().nullish(),input_tokens:m.number(),output_tokens:m.number(),cache_creation_input_tokens:m.number().nullish(),cache_read_input_tokens:m.number().nullish()})).nullish()}),input_transformations:m.array(ea).nullish(),context_management:m.object({applied_edits:m.array(m.union([m.object({type:m.literal("clear_tool_uses_20250919"),cleared_tool_uses:m.number(),cleared_input_tokens:m.number()}),m.object({type:m.literal("clear_thinking_20251015"),cleared_thinking_turns:m.number(),cleared_input_tokens:m.number()}),m.object({type:m.literal("compact_20260112")})]))}).nullish()}),m.object({type:m.literal("message_stop")}),m.object({type:m.literal("ping")})]))),Mh=z(()=>K(m.object({signature:m.string().optional(),redactedData:m.string().optional()}))),Zr=x.object({containerUpload:x.boolean().optional(),citations:x.object({enabled:x.boolean()}).optional(),title:x.string().optional(),context:x.string().optional()}),Ih=x.object({clearAt:x.literal("next_user_message").optional(),effort:x.enum(["low","medium","high","xhigh","max"]).optional(),toolChanges:x.array(x.discriminatedUnion("type",[x.object({type:x.literal("tool_addition"),toolName:x.string()}),x.object({type:x.literal("tool_removal"),toolName:x.string()})])).optional()}),ta=x.object({sendReasoning:x.boolean().optional(),structuredOutputMode:x.enum(["outputFormat","jsonTool","auto"]).optional(),thinking:x.union([x.discriminatedUnion("type",[x.object({type:x.literal("adaptive"),display:x.enum(["omitted","summarized","updates"]).optional(),blockBinding:x.object({prefixMismatchBehavior:x.enum(["error","drop_block"])}).optional()}),x.object({type:x.literal("enabled"),budgetTokens:x.number().optional()}),x.object({type:x.literal("disabled")})]),x.object({type:x.never().optional(),blockBinding:x.object({prefixMismatchBehavior:x.enum(["error","drop_block"])})})]).optional(),disableParallelToolUse:x.boolean().optional(),cacheControl:x.object({type:x.literal("ephemeral"),ttl:x.union([x.literal("5m"),x.literal("1h")]).optional()}).optional(),metadata:x.object({userId:x.string().optional()}).optional(),mcpServers:x.array(x.object({type:x.literal("url"),name:x.string(),url:x.string(),authorizationToken:x.string().nullish(),toolConfiguration:x.object({enabled:x.boolean().nullish(),allowedTools:x.array(x.string()).nullish()}).nullish()})).optional(),container:x.object({id:x.string().optional(),skills:x.array(x.discriminatedUnion("type",[x.object({type:x.literal("anthropic"),skillId:x.string(),version:x.string().optional()}),x.object({type:x.literal("custom"),providerReference:x.record(x.string(),x.string()),version:x.string().optional()})])).optional()}).optional(),toolStreaming:x.boolean().optional(),effort:x.enum(["low","medium","high","xhigh","max"]).optional(),taskBudget:x.object({type:x.literal("tokens"),total:x.number().int().min(2e4),remaining:x.number().int().min(0).optional()}).optional(),speed:x.enum(["fast","standard"]).optional(),serviceTier:x.enum(["auto","standard_only"]).optional(),inferenceGeo:x.enum(["us","global"]).optional(),fallbacks:x.union([x.literal("default"),x.array(x.object({model:x.string(),max_tokens:x.number().int().optional(),thinking:x.record(x.string(),x.unknown()).optional(),output_config:x.record(x.string(),x.unknown()).optional(),speed:x.enum(["fast","standard"]).optional()}))]).optional(),anthropicBeta:x.array(x.string()).optional(),contextManagement:x.object({edits:x.array(x.discriminatedUnion("type",[x.object({type:x.literal("clear_tool_uses_20250919"),trigger:x.discriminatedUnion("type",[x.object({type:x.literal("input_tokens"),value:x.number()}),x.object({type:x.literal("tool_uses"),value:x.number()})]).optional(),keep:x.object({type:x.literal("tool_uses"),value:x.number()}).optional(),clearAtLeast:x.object({type:x.literal("input_tokens"),value:x.number()}).optional(),clearToolInputs:x.boolean().optional(),excludeTools:x.array(x.string()).optional()}),x.object({type:x.literal("clear_thinking_20251015"),keep:x.union([x.literal("all"),x.object({type:x.literal("thinking_turns"),value:x.number()})]).optional()}),x.object({type:x.literal("compact_20260112"),trigger:x.object({type:x.literal("input_tokens"),value:x.number()}).optional(),pauseAfterCompaction:x.boolean().optional(),instructions:x.string().optional()})]))}).optional()}),Xc=4;function _h(e){var t;let o=e?.anthropic;return(t=o?.cacheControl)!=null?t:o?.cache_control}var ia=class{constructor(){this.breakpointCount=0,this.warnings=[]}getCacheControl(e,t){let o=_h(e);if(o){if(!t.canCache){this.warnings.push({type:"unsupported",feature:"cache_control on non-cacheable context",details:`cache_control cannot be set on ${t.type}. It will be ignored.`});return}if(this.breakpointCount++,this.breakpointCount>Xc){this.warnings.push({type:"unsupported",feature:"cacheControl breakpoint limit",details:`Maximum ${Xc} cache breakpoints exceeded (found ${this.breakpointCount}). This breakpoint will be ignored.`});return}return o}}getWarnings(){return this.warnings}},bh=z(()=>K($e.object({model:$e.string(),maxUses:$e.number().optional(),maxTokens:$e.number().int().min(1024).optional(),caching:$e.object({type:$e.literal("ephemeral"),ttl:$e.union([$e.literal("5m"),$e.literal("1h")])}).optional()}))),fu=z(()=>K($e.discriminatedUnion("type",[$e.object({type:$e.literal("advisor_result"),text:$e.string(),stopReason:$e.string().optional()}),$e.object({type:$e.literal("advisor_redacted_result"),encryptedContent:$e.string(),stopReason:$e.string().optional()}),$e.object({type:$e.literal("advisor_tool_result_error"),errorCode:$e.string()})]))),Lh=z(()=>K($e.object({}).strict())),vh=Fe({id:"anthropic.advisor_20260301",inputSchema:Lh,outputSchema:fu,supportsDeferredResults:!0}),Nh=e=>vh(e),Ph=z(()=>K(zt.object({maxCharacters:zt.number().optional()}))),Rh=z(()=>K(zt.object({command:zt.enum(["view","create","str_replace","insert"]),path:zt.string(),file_text:zt.string().optional(),insert_line:zt.number().int().optional(),new_str:zt.string().optional(),insert_text:zt.string().optional(),old_str:zt.string().optional(),view_range:zt.array(zt.number().int()).optional()}))),xh=De({id:"anthropic.text_editor_20250728",inputSchema:Rh}),Jh=(e={})=>xh(e),kh=z(()=>K(Be.object({maxUses:Be.number().optional(),allowedDomains:Be.array(Be.string()).optional(),blockedDomains:Be.array(Be.string()).optional(),userLocation:Be.object({type:Be.literal("approximate"),city:Be.string().optional(),region:Be.string().optional(),country:Be.string().optional(),timezone:Be.string().optional()}).optional()}))),Gh=z(()=>K(Be.array(Be.object({url:Be.string(),title:Be.string().nullable(),pageAge:Be.string().nullable(),encryptedContent:Be.string(),type:Be.literal("web_search_result")})))),Sh=z(()=>K(Be.object({query:Be.string()}))),Vh=Fe({id:"anthropic.web_search_20260209",inputSchema:Sh,outputSchema:Gh,supportsDeferredResults:!0}),Th=(e={})=>Vh(e),$h=z(()=>K(Ke.object({maxUses:Ke.number().optional(),allowedDomains:Ke.array(Ke.string()).optional(),blockedDomains:Ke.array(Ke.string()).optional(),userLocation:Ke.object({type:Ke.literal("approximate"),city:Ke.string().optional(),region:Ke.string().optional(),country:Ke.string().optional(),timezone:Ke.string().optional()}).optional()}))),gu=z(()=>K(Ke.array(Ke.object({url:Ke.string(),title:Ke.string().nullable(),pageAge:Ke.string().nullable(),encryptedContent:Ke.string(),type:Ke.literal("web_search_result")})))),Qh=z(()=>K(Ke.object({query:Ke.string()}))),jh=Fe({id:"anthropic.web_search_20250305",inputSchema:Qh,outputSchema:gu,supportsDeferredResults:!0}),Bh=(e={})=>jh(e),Kh=z(()=>K(_e.object({maxUses:_e.number().optional(),allowedDomains:_e.array(_e.string()).optional(),blockedDomains:_e.array(_e.string()).optional(),citations:_e.object({enabled:_e.boolean()}).optional(),maxContentTokens:_e.number().optional()}))),Hh=z(()=>K(_e.object({type:_e.literal("web_fetch_result"),url:_e.string(),content:_e.object({type:_e.literal("document"),title:_e.string().nullable(),citations:_e.object({enabled:_e.boolean()}).optional(),source:_e.union([_e.object({type:_e.literal("base64"),mediaType:_e.literal("application/pdf"),data:_e.string()}),_e.object({type:_e.literal("text"),mediaType:_e.literal("text/plain"),data:_e.string()})])}),retrievedAt:_e.string().nullable()}))),zh=z(()=>K(_e.object({url:_e.string()}))),Ch=Fe({id:"anthropic.web_fetch_20260209",inputSchema:zh,outputSchema:Hh,supportsDeferredResults:!0}),Yh=(e={})=>Ch(e),Dh=z(()=>K(be.object({maxUses:be.number().optional(),allowedDomains:be.array(be.string()).optional(),blockedDomains:be.array(be.string()).optional(),citations:be.object({enabled:be.boolean()}).optional(),maxContentTokens:be.number().optional()}))),hu=z(()=>K(be.object({type:be.literal("web_fetch_result"),url:be.string(),content:be.object({type:be.literal("document"),title:be.string().nullable(),citations:be.object({enabled:be.boolean()}).optional(),source:be.union([be.object({type:be.literal("base64"),mediaType:be.literal("application/pdf"),data:be.string()}),be.object({type:be.literal("text"),mediaType:be.literal("text/plain"),data:be.string()})])}),retrievedAt:be.string().nullable()}))),Fh=z(()=>K(be.object({url:be.string()}))),Zh=Fe({id:"anthropic.web_fetch_20250910",inputSchema:Fh,outputSchema:hu,supportsDeferredResults:!0}),qh=(e={})=>Zh(e);async function Wh({tools:e,toolChoice:t,disableParallelToolUse:o,cacheControlValidator:n,supportsStructuredOutput:s,supportsStrictTools:i,defaultEagerInputStreaming:r=!1}){var l,a;e=e?.length?e:void 0;let c=[],d=new Set,f=n||new ia;if(e==null)return{tools:void 0,toolChoice:void 0,toolWarnings:c,betas:d};let p=[];for(let g of e)switch(g.type){case"function":{let h=f.getCacheControl(g.providerOptions,{type:"tool definition",canCache:!0}),w=(l=g.providerOptions)==null?void 0:l.anthropic,y=(a=w?.eagerInputStreaming)!=null?a:r,U=w?.deferLoading,O=w?.allowedCallers;!i&&g.strict!=null&&c.push({type:"unsupported",feature:"strict",details:`Tool '${g.name}' has strict: ${g.strict}, but strict mode is not supported by this provider. The strict property will be ignored.`}),p.push({name:g.name,description:g.description,input_schema:g.inputSchema,cache_control:h,...y?{eager_input_streaming:!0}:{},...i===!0&&g.strict!=null?{strict:g.strict}:{},...U!=null?{defer_loading:U}:{},...O!=null?{allowed_callers:O}:{},...g.inputExamples!=null?{input_examples:g.inputExamples.map(E=>E.input)}:{}}),s===!0&&d.add("structured-outputs-2025-11-13"),(g.inputExamples!=null||O!=null)&&d.add("advanced-tool-use-2025-11-20");break}case"provider":{switch(g.id){case"anthropic.code_execution_20250522":{d.add("code-execution-2025-05-22"),p.push({type:"code_execution_20250522",name:"code_execution",cache_control:void 0});break}case"anthropic.code_execution_20250825":{d.add("code-execution-2025-08-25"),p.push({type:"code_execution_20250825",name:"code_execution"});break}case"anthropic.code_execution_20260120":{p.push({type:"code_execution_20260120",name:"code_execution"});break}case"anthropic.computer_20250124":{d.add("computer-use-2025-01-24"),p.push({name:"computer",type:"computer_20250124",display_width_px:g.args.displayWidthPx,display_height_px:g.args.displayHeightPx,display_number:g.args.displayNumber,cache_control:void 0});break}case"anthropic.computer_20251124":{d.add("computer-use-2025-11-24"),p.push({name:"computer",type:"computer_20251124",display_width_px:g.args.displayWidthPx,display_height_px:g.args.displayHeightPx,display_number:g.args.displayNumber,enable_zoom:g.args.enableZoom,cache_control:void 0});break}case"anthropic.computer_20241022":{d.add("computer-use-2024-10-22"),p.push({name:"computer",type:"computer_20241022",display_width_px:g.args.displayWidthPx,display_height_px:g.args.displayHeightPx,display_number:g.args.displayNumber,cache_control:void 0});break}case"anthropic.text_editor_20250124":{d.add("computer-use-2025-01-24"),p.push({name:"str_replace_editor",type:"text_editor_20250124",cache_control:void 0});break}case"anthropic.text_editor_20241022":{d.add("computer-use-2024-10-22"),p.push({name:"str_replace_editor",type:"text_editor_20241022",cache_control:void 0});break}case"anthropic.text_editor_20250429":{d.add("computer-use-2025-01-24"),p.push({name:"str_replace_based_edit_tool",type:"text_editor_20250429",cache_control:void 0});break}case"anthropic.text_editor_20250728":{let h=await pt({value:g.args,schema:Ph});p.push({name:"str_replace_based_edit_tool",type:"text_editor_20250728",max_characters:h.maxCharacters,cache_control:void 0});break}case"anthropic.bash_20250124":{d.add("computer-use-2025-01-24"),p.push({name:"bash",type:"bash_20250124",cache_control:void 0});break}case"anthropic.bash_20241022":{d.add("computer-use-2024-10-22"),p.push({name:"bash",type:"bash_20241022",cache_control:void 0});break}case"anthropic.memory_20250818":{d.add("context-management-2025-06-27"),p.push({name:"memory",type:"memory_20250818"});break}case"anthropic.web_fetch_20250910":{d.add("web-fetch-2025-09-10");let h=await pt({value:g.args,schema:Dh});p.push({type:"web_fetch_20250910",name:"web_fetch",max_uses:h.maxUses,allowed_domains:h.allowedDomains,blocked_domains:h.blockedDomains,citations:h.citations,max_content_tokens:h.maxContentTokens,cache_control:void 0});break}case"anthropic.web_fetch_20260209":{d.add("code-execution-web-tools-2026-02-09");let h=await pt({value:g.args,schema:Kh});p.push({type:"web_fetch_20260209",name:"web_fetch",max_uses:h.maxUses,allowed_domains:h.allowedDomains,blocked_domains:h.blockedDomains,citations:h.citations,max_content_tokens:h.maxContentTokens,cache_control:void 0});break}case"anthropic.web_search_20250305":{let h=await pt({value:g.args,schema:$h});p.push({type:"web_search_20250305",name:"web_search",max_uses:h.maxUses,allowed_domains:h.allowedDomains,blocked_domains:h.blockedDomains,user_location:h.userLocation,cache_control:void 0});break}case"anthropic.web_search_20260209":{d.add("code-execution-web-tools-2026-02-09");let h=await pt({value:g.args,schema:kh});p.push({type:"web_search_20260209",name:"web_search",max_uses:h.maxUses,allowed_domains:h.allowedDomains,blocked_domains:h.blockedDomains,user_location:h.userLocation,cache_control:void 0});break}case"anthropic.tool_search_regex_20251119":{p.push({type:"tool_search_tool_regex_20251119",name:"tool_search_tool_regex"});break}case"anthropic.tool_search_bm25_20251119":{p.push({type:"tool_search_tool_bm25_20251119",name:"tool_search_tool_bm25"});break}case"anthropic.advisor_20260301":{d.add("advisor-tool-2026-03-01");let h=await pt({value:g.args,schema:bh});p.push({type:"advisor_20260301",name:"advisor",model:h.model,...h.maxUses!==void 0&&{max_uses:h.maxUses},...h.maxTokens!==void 0&&{max_tokens:h.maxTokens},...h.caching!==void 0&&{caching:h.caching}});break}default:{c.push({type:"unsupported",feature:`provider-defined tool ${g.id}`});break}}break}default:{c.push({type:"unsupported",feature:`tool ${g}`});break}}if(t==null)return{tools:p,toolChoice:o?{type:"auto",disable_parallel_tool_use:o}:void 0,toolWarnings:c,betas:d};let u=t.type;switch(u){case"auto":return{tools:p,toolChoice:{type:"auto",disable_parallel_tool_use:o},toolWarnings:c,betas:d};case"required":return{tools:p,toolChoice:{type:"any",disable_parallel_tool_use:o},toolWarnings:c,betas:d};case"none":return{tools:void 0,toolChoice:void 0,toolWarnings:c,betas:d};case"tool":return{tools:p,toolChoice:{type:"tool",name:t.toolName,disable_parallel_tool_use:o},toolWarnings:c,betas:d};default:{let g=u;throw new Oh({functionality:`tool choice type: ${g}`})}}}function oa({usage:e,rawUsage:t}){var o,n,s,i,r;let l=(o=e.cache_creation_input_tokens)!=null?o:0,a=(n=e.cache_read_input_tokens)!=null?n:0,c=(i=(s=e.output_tokens_details)==null?void 0:s.thinking_tokens)!=null?i:void 0,d,f,p=(r=e.iterations)==null?void 0:r.some(u=>u.type==="fallback_message");if(e.iterations&&e.iterations.length>0&&!p){let u=e.iterations.filter(g=>g.type==="compaction"||g.type==="message");if(u.length>0){let g=u.reduce((h,w)=>({input:h.input+w.input_tokens,output:h.output+w.output_tokens}),{input:0,output:0});d=g.input,f=g.output}else d=e.input_tokens,f=e.output_tokens}else d=e.input_tokens,f=e.output_tokens;return{inputTokens:{total:d+l+a,noCache:d,cacheRead:a,cacheWrite:l},outputTokens:{total:f,text:c==null?void 0:f-c,reasoning:c},raw:t??e}}var wu=z(()=>K(io.object({type:io.literal("code_execution_result"),stdout:io.string(),stderr:io.string(),return_code:io.number(),content:io.array(io.object({type:io.literal("code_execution_output"),file_id:io.string()})).optional().default([])}))),ew=z(()=>K(io.object({code:io.string()}))),tw=Fe({id:"anthropic.code_execution_20250522",inputSchema:ew,outputSchema:wu}),ow=(e={})=>tw(e),Eu=z(()=>K(q.discriminatedUnion("type",[q.object({type:q.literal("code_execution_result"),stdout:q.string(),stderr:q.string(),return_code:q.number(),content:q.array(q.object({type:q.literal("code_execution_output"),file_id:q.string()})).optional().default([])}),q.object({type:q.literal("bash_code_execution_result"),content:q.array(q.object({type:q.literal("bash_code_execution_output"),file_id:q.string()})),stdout:q.string(),stderr:q.string(),return_code:q.number()}),q.object({type:q.literal("bash_code_execution_tool_result_error"),error_code:q.string()}),q.object({type:q.literal("text_editor_code_execution_tool_result_error"),error_code:q.string()}),q.object({type:q.literal("text_editor_code_execution_view_result"),content:q.string(),file_type:q.string(),num_lines:q.number().nullable(),start_line:q.number().nullable(),total_lines:q.number().nullable()}),q.object({type:q.literal("text_editor_code_execution_create_result"),is_file_update:q.boolean()}),q.object({type:q.literal("text_editor_code_execution_str_replace_result"),lines:q.array(q.string()).nullable(),new_lines:q.number().nullable(),new_start:q.number().nullable(),old_lines:q.number().nullable(),old_start:q.number().nullable()})]))),nw=z(()=>K(q.discriminatedUnion("type",[q.object({type:q.literal("programmatic-tool-call"),code:q.string()}),q.object({type:q.literal("bash_code_execution"),command:q.string()}),q.discriminatedUnion("command",[q.object({type:q.literal("text_editor_code_execution"),command:q.literal("view"),path:q.string()}),q.object({type:q.literal("text_editor_code_execution"),command:q.literal("create"),path:q.string(),file_text:q.string().nullish()}),q.object({type:q.literal("text_editor_code_execution"),command:q.literal("str_replace"),path:q.string(),old_str:q.string(),new_str:q.string()})])]))),sw=Fe({id:"anthropic.code_execution_20250825",inputSchema:nw,outputSchema:Eu,supportsDeferredResults:!0}),iw=(e={})=>Oi(sw(e),{type:"provider",prepareProviderOptions:t=>{var o;let n=t?.anthropic;return{...t,anthropic:{...n,allowedCallers:[...new Set([...(o=n?.allowedCallers)!=null?o:[],"code_execution_20250825"])]}}}}),Uu=z(()=>K(C.discriminatedUnion("type",[C.object({type:C.literal("code_execution_result"),stdout:C.string(),stderr:C.string(),return_code:C.number(),content:C.array(C.object({type:C.literal("code_execution_output"),file_id:C.string()})).optional().default([])}),C.object({type:C.literal("encrypted_code_execution_result"),encrypted_stdout:C.string(),stderr:C.string(),return_code:C.number(),content:C.array(C.object({type:C.literal("code_execution_output"),file_id:C.string()})).optional().default([])}),C.object({type:C.literal("bash_code_execution_result"),content:C.array(C.object({type:C.literal("bash_code_execution_output"),file_id:C.string()})),stdout:C.string(),stderr:C.string(),return_code:C.number()}),C.object({type:C.literal("bash_code_execution_tool_result_error"),error_code:C.string()}),C.object({type:C.literal("text_editor_code_execution_tool_result_error"),error_code:C.string()}),C.object({type:C.literal("text_editor_code_execution_view_result"),content:C.string(),file_type:C.string(),num_lines:C.number().nullable(),start_line:C.number().nullable(),total_lines:C.number().nullable()}),C.object({type:C.literal("text_editor_code_execution_create_result"),is_file_update:C.boolean()}),C.object({type:C.literal("text_editor_code_execution_str_replace_result"),lines:C.array(C.string()).nullable(),new_lines:C.number().nullable(),new_start:C.number().nullable(),old_lines:C.number().nullable(),old_start:C.number().nullable()})]))),rw=z(()=>K(C.discriminatedUnion("type",[C.object({type:C.literal("programmatic-tool-call"),code:C.string()}),C.object({type:C.literal("bash_code_execution"),command:C.string()}),C.discriminatedUnion("command",[C.object({type:C.literal("text_editor_code_execution"),command:C.literal("view"),path:C.string()}),C.object({type:C.literal("text_editor_code_execution"),command:C.literal("create"),path:C.string(),file_text:C.string().nullish()}),C.object({type:C.literal("text_editor_code_execution"),command:C.literal("str_replace"),path:C.string(),old_str:C.string(),new_str:C.string()})])]))),aw=Fe({id:"anthropic.code_execution_20260120",inputSchema:rw,outputSchema:Uu,supportsDeferredResults:!0}),lw=(e={})=>Oi(aw(e),{type:"provider",prepareProviderOptions:t=>{var o;let n=t?.anthropic;return{...t,anthropic:{...n,allowedCallers:[...new Set([...(o=n?.allowedCallers)!=null?o:[],"code_execution_20260120"])]}}}}),yu=z(()=>K(bn.array(bn.object({type:bn.literal("tool_reference"),toolName:bn.string()})))),cw=z(()=>K(bn.object({pattern:bn.string(),limit:bn.number().optional()}))),uw=Fe({id:"anthropic.tool_search_regex_20251119",inputSchema:cw,outputSchema:yu,supportsDeferredResults:!0}),dw=(e={})=>uw(e);function pw(e){return typeof e=="string"?new TextDecoder().decode(Fn(e)):new TextDecoder().decode(e)}function eu(e){try{if(typeof e=="string")return In(e);if(typeof e=="object"&&e!==null)return e}catch{let o=e?.errorCode;return{errorCode:typeof o=="string"?o:"unavailable"}}return{}}async function mw({prompt:e,sendReasoning:t,warnings:o,cacheControlValidator:n,toolNameMapping:s}){var i,r,l,a,c,d,f,p,u,g,h,w,y,U,O,E,A,M,_,J,R,I;let v=new Set,T=fw(e),P=n||new ia,j,Y=[];async function ne(ae){var N,le;let S=await Ge({provider:"anthropic",providerOptions:ae,schema:Zr});return(le=(N=S?.citations)==null?void 0:N.enabled)!=null?le:!1}async function se(ae){var N;let le=await Ge({provider:"anthropic",providerOptions:ae,schema:Zr});return(N=le?.containerUpload)!=null?N:!1}async function fe(ae){let N=await Ge({provider:"anthropic",providerOptions:ae,schema:Zr});return{title:N?.title,context:N?.context}}for(let ae=0;ae<T.length;ae++){let N=T[ae],le=ae===T.length-1,S=N.type;switch(S){case"system":{let L=[];for(let{content:D,providerOptions:oe}of N.messages){let F=await Ge({provider:"anthropic",providerOptions:oe,schema:Ih}),re=(i=F?.toolChanges)!=null?i:[],k=[];(D!==""||re.length===0&&F?.clearAt==null&&F?.effort==null)&&k.push({type:"text",text:D,cache_control:P.getCacheControl(oe,{type:"system message",canCache:!0})});for(let X of re)k.push({type:X.type,tool:{type:"tool_reference",name:s.toProviderToolName(X.toolName)}});L.push({content:k,clearAt:F?.clearAt,effort:F?.effort,toolChangeCount:re.length})}let V=L.reduce((D,oe)=>D+oe.toolChangeCount,0),me=L.some(D=>D.clearAt!=null||D.effort!=null);if(ae===0||j==null&&V===0&&!me){V>0&&o.push({type:"other",message:"tool changes on the initial system message are not supported by Anthropic. Configure the initial tool set via the tools option instead. The tool changes have been ignored."});for(let D of L)(D.clearAt!=null||D.effort!=null)&&o.push({type:"other",message:"clearAt and effort on the initial system message are not supported by Anthropic. These options have been ignored."});j=L.flatMap(D=>D.content.filter(oe=>oe.type==="text"))}else{v.add("mid-conversation-system-2026-04-07");for(let D of L)Y.push({role:"system",content:D.content,...D.clearAt!=null&&{clear_at:D.clearAt},...D.effort!=null&&{output_config:{effort:D.effort}}}),D.toolChangeCount>0&&v.add("mid-conversation-tool-changes-2026-07-01"),D.clearAt!=null&&v.add("mid-conversation-system-clear-at-2026-08-21"),D.effort!=null&&v.add("mid-conversation-effort-2026-08-01")}break}case"user":{let L=[];for(let V of N.messages){let{role:me,content:D}=V;switch(me){case"user":{for(let oe=0;oe<D.length;oe++){let F=D[oe],re=oe===D.length-1,k=(r=P.getCacheControl(F.providerOptions,{type:"user message part",canCache:!0}))!=null?r:re?P.getCacheControl(V.providerOptions,{type:"user message",canCache:!0}):void 0;switch(F.type){case"text":{L.push({type:"text",text:F.text,cache_control:k});break}case"file":{switch(F.data.type){case"reference":{let X=Mi({reference:F.data.reference,provider:"anthropic"});v.add("files-api-2025-04-14"),await se(F.providerOptions)?L.push({type:"container_upload",file_id:X}):vs(F.mediaType)==="image"?L.push({type:"image",source:{type:"file",file_id:X},cache_control:k}):L.push({type:"document",source:{type:"file",file_id:X},cache_control:k});break}case"text":{let X=await ne(F.providerOptions),H=await fe(F.providerOptions);L.push({type:"document",source:{type:"text",media_type:"text/plain",data:F.data.text},title:(l=H.title)!=null?l:F.filename,...H.context&&{context:H.context},...X&&{citations:{enabled:!0}},cache_control:k});break}case"url":case"data":{let X=vs(F.mediaType);if(X==="image")L.push({type:"image",source:F.data.type==="url"?{type:"url",url:F.data.url.toString()}:{type:"base64",media_type:Ps({part:F}),data:Ao(F.data.data)},cache_control:k});else if(X==="application"&&(F.data.type==="url"?F.mediaType==="application/pdf":Ps({part:F})==="application/pdf")){v.add("pdfs-2024-09-25");let H=await ne(F.providerOptions),Z=await fe(F.providerOptions);L.push({type:"document",source:F.data.type==="url"?{type:"url",url:F.data.url.toString()}:{type:"base64",media_type:"application/pdf",data:Ao(F.data.data)},title:(a=Z.title)!=null?a:F.filename,...Z.context&&{context:Z.context},...H&&{citations:{enabled:!0}},cache_control:k})}else if(F.mediaType==="text/plain"){let H=await ne(F.providerOptions),Z=await fe(F.providerOptions);L.push({type:"document",source:F.data.type==="url"?{type:"url",url:F.data.url.toString()}:{type:"text",media_type:"text/plain",data:pw(F.data.data)},title:(c=Z.title)!=null?c:F.filename,...Z.context&&{context:Z.context},...H&&{citations:{enabled:!0}},cache_control:k})}else throw new Xh({functionality:`media type: ${F.mediaType}`});break}}break}}}break}case"tool":{for(let oe=0;oe<D.length;oe++){let F=D[oe];if(F.type==="tool-approval-response")continue;let re=F.output,k="providerOptions"in re?re.providerOptions:re.type==="content"?(d=re.value.find(ie=>ie.providerOptions!=null))==null?void 0:d.providerOptions:void 0,X=oe===D.length-1,H=(p=(f=P.getCacheControl(F.providerOptions,{type:"tool result part",canCache:!0}))!=null?f:P.getCacheControl(k,{type:"tool result output",canCache:!0}))!=null?p:X?P.getCacheControl(V.providerOptions,{type:"tool result message",canCache:!0}):void 0,Z;switch(re.type){case"content":Z=re.value.map(ie=>{var ee;switch(ie.type){case"text":return{type:"text",text:ie.text};case"file":{let B=vs(ie.mediaType);if(ie.data.type==="url")return B==="image"?{type:"image",source:{type:"url",url:ie.data.url.toString()}}:{type:"document",source:{type:"url",url:ie.data.url.toString()}};if(ie.data.type==="data"){if(B==="image")return{type:"image",source:{type:"base64",media_type:Ps({part:ie}),data:Ao(ie.data.data)}};if(Ps({part:ie})==="application/pdf")return v.add("pdfs-2024-09-25"),{type:"document",source:{type:"base64",media_type:"application/pdf",data:Ao(ie.data.data)}};o.push({type:"other",message:`unsupported tool content part type: ${ie.type} with media type: ${ie.mediaType}`});return}o.push({type:"other",message:`unsupported tool content part type: ${ie.type} with data type: ${ie.data.type}`});return}case"custom":{let B=(ee=ie.providerOptions)==null?void 0:ee.anthropic;if(B?.type==="tool-reference")return{type:"tool_reference",tool_name:B.toolName};o.push({type:"other",message:"unsupported custom tool content part"});return}default:{o.push({type:"other",message:`unsupported tool content part type: ${ie.type}`});return}}}).filter(Ac);break;case"text":case"error-text":Z=re.value;break;case"execution-denied":Z=(u=re.reason)!=null?u:"Tool call execution denied.";break;default:Z=JSON.stringify(re.value);break}L.push({type:"tool_result",tool_use_id:F.toolCallId,content:Z,is_error:re.type==="error-text"||re.type==="error-json"?!0:void 0,cache_control:H})}break}default:{let oe=me;throw new Error(`Unsupported role: ${oe}`)}}}Y.push({role:"user",content:L});break}case"assistant":{let L=[],V=new Set;for(let me=0;me<N.messages.length;me++){let D=N.messages[me],oe=me===N.messages.length-1,{content:F}=D;for(let re=0;re<F.length;re++){let k=F[re],X=re===F.length-1,H=(g=P.getCacheControl(k.providerOptions,{type:"assistant message part",canCache:!0}))!=null?g:X?P.getCacheControl(D.providerOptions,{type:"assistant message",canCache:!0}):void 0;switch(k.type){case"text":{let Z=(h=k.providerOptions)==null?void 0:h.anthropic;Z?.type==="compaction"?L.push({type:"compaction",content:k.text,cache_control:H}):L.push({type:"text",text:le&&oe&&X?k.text.trim():k.text,...Z?.citations!=null&&{citations:Z.citations},cache_control:H});break}case"reasoning":{if(t){let Z=await Ge({provider:"anthropic",providerOptions:k.providerOptions,schema:Mh});Z!=null?Z.signature!=null?(P.getCacheControl(k.providerOptions,{type:"thinking block",canCache:!1}),L.push({type:"thinking",thinking:k.text,signature:Z.signature})):Z.redactedData!=null?(P.getCacheControl(k.providerOptions,{type:"redacted thinking block",canCache:!1}),L.push({type:"redacted_thinking",data:Z.redactedData})):o.push({type:"other",message:"unsupported reasoning metadata"}):o.push({type:"other",message:"unsupported reasoning metadata"})}else o.push({type:"other",message:"sending reasoning content is disabled for this model"});break}case"tool-call":{let Z=tu(k.providerOptions);if(k.providerExecuted){let ie=s.toProviderToolName(k.toolName);if(((y=(w=k.providerOptions)==null?void 0:w.anthropic)==null?void 0:y.type)==="mcp-tool-use"){V.add(k.toolCallId);let B=(O=(U=k.providerOptions)==null?void 0:U.anthropic)==null?void 0:O.serverName;if(B==null||typeof B!="string"){o.push({type:"other",message:"mcp tool use server name is required and must be a string"});break}L.push({type:"mcp_tool_use",id:k.toolCallId,name:k.toolName,input:k.input,server_name:B,cache_control:H})}else if(ie==="code_execution"&&k.input!=null&&typeof k.input=="object"&&"type"in k.input&&typeof k.input.type=="string"&&(k.input.type==="bash_code_execution"||k.input.type==="text_editor_code_execution")){let{type:B,...Ye}=k.input;L.push({type:"server_tool_use",id:k.toolCallId,name:B,input:Ye,...Z&&{caller:Z},cache_control:H})}else if(ie==="code_execution"&&k.input!=null&&typeof k.input=="object"&&"type"in k.input&&k.input.type==="programmatic-tool-call"){let{type:B,...Ye}=k.input;L.push({type:"server_tool_use",id:k.toolCallId,name:"code_execution",input:Ye,...Z&&{caller:Z},cache_control:H})}else ie==="code_execution"||ie==="web_fetch"||ie==="web_search"?L.push({type:"server_tool_use",id:k.toolCallId,name:ie,input:k.input,...Z&&{caller:Z},cache_control:H}):ie==="tool_search_tool_regex"||ie==="tool_search_tool_bm25"?L.push({type:"server_tool_use",id:k.toolCallId,name:ie,input:k.input,...Z&&{caller:Z},cache_control:H}):ie==="advisor"?L.push({type:"server_tool_use",id:k.toolCallId,name:"advisor",input:{},...Z&&{caller:Z},cache_control:H}):o.push({type:"other",message:`provider executed tool call for tool ${k.toolName} is not supported`});break}L.push({type:"tool_use",id:k.toolCallId,name:k.toolName,input:hw(k.input),...Z&&{caller:Z},cache_control:H});break}case"tool-result":{let Z=s.toProviderToolName(k.toolName),ie=tu(k.providerOptions);if(V.has(k.toolCallId)){let ee=k.output;if(ee.type!=="json"&&ee.type!=="error-json"){o.push({type:"other",message:`provider executed tool result output type ${ee.type} for tool ${k.toolName} is not supported`});break}L.push({type:"mcp_tool_result",tool_use_id:k.toolCallId,is_error:ee.type==="error-json",content:ee.value,cache_control:H})}else if(Z==="code_execution"){let ee=k.output;if(ee.type==="error-text"||ee.type==="error-json"){let B={};try{typeof ee.value=="string"?B=In(ee.value):typeof ee.value=="object"&&ee.value!==null&&(B=ee.value)}catch{}B.type==="code_execution_tool_result_error"?L.push({type:"code_execution_tool_result",tool_use_id:k.toolCallId,content:{type:"code_execution_tool_result_error",error_code:(E=B.errorCode)!=null?E:"unknown"},cache_control:H}):L.push({type:"bash_code_execution_tool_result",tool_use_id:k.toolCallId,cache_control:H,content:{type:"bash_code_execution_tool_result_error",error_code:(A=B.errorCode)!=null?A:"unknown"}});break}if(ee.type!=="json"){o.push({type:"other",message:`provider executed tool result output type ${ee.type} for tool ${k.toolName} is not supported`});break}if(ee.value==null||typeof ee.value!="object"||!("type"in ee.value)||typeof ee.value.type!="string"){o.push({type:"other",message:`provider executed tool result output value is not a valid code execution result for tool ${k.toolName}`});break}if(ee.value.type==="code_execution_result"){let B=await pt({value:ee.value,schema:wu});L.push({type:"code_execution_tool_result",tool_use_id:k.toolCallId,content:{type:B.type,stdout:B.stdout,stderr:B.stderr,return_code:B.return_code,content:(M=B.content)!=null?M:[]},cache_control:H})}else if(ee.value.type==="encrypted_code_execution_result"){let B=await pt({value:ee.value,schema:Uu});B.type==="encrypted_code_execution_result"&&L.push({type:"code_execution_tool_result",tool_use_id:k.toolCallId,content:{type:B.type,encrypted_stdout:B.encrypted_stdout,stderr:B.stderr,return_code:B.return_code,content:(_=B.content)!=null?_:[]},cache_control:H})}else{let B=await pt({value:ee.value,schema:Eu});B.type==="code_execution_result"?L.push({type:"code_execution_tool_result",tool_use_id:k.toolCallId,content:{type:B.type,stdout:B.stdout,stderr:B.stderr,return_code:B.return_code,content:(J=B.content)!=null?J:[]},cache_control:H}):B.type==="bash_code_execution_result"||B.type==="bash_code_execution_tool_result_error"?L.push({type:"bash_code_execution_tool_result",tool_use_id:k.toolCallId,cache_control:H,content:B.type==="bash_code_execution_result"?{type:B.type,stdout:B.stdout,stderr:B.stderr,return_code:B.return_code,content:B.content}:B}):L.push({type:"text_editor_code_execution_tool_result",tool_use_id:k.toolCallId,cache_control:H,content:B})}break}if(Z==="web_fetch"){let ee=k.output;if(ee.type==="error-json"){L.push({type:"web_fetch_tool_result",tool_use_id:k.toolCallId,content:{type:"web_fetch_tool_result_error",error_code:(R=eu(ee.value).errorCode)!=null?R:"unavailable"},...ie&&{caller:ie},cache_control:H});break}if(ee.type!=="json"){o.push({type:"other",message:`provider executed tool result output type ${ee.type} for tool ${k.toolName} is not supported`});break}let B=await pt({value:ee.value,schema:hu});L.push({type:"web_fetch_tool_result",tool_use_id:k.toolCallId,content:{type:"web_fetch_result",url:B.url,retrieved_at:B.retrievedAt,content:{type:"document",title:B.content.title,citations:B.content.citations,source:{type:B.content.source.type,media_type:B.content.source.mediaType,data:B.content.source.data}}},...ie&&{caller:ie},cache_control:H});break}if(Z==="web_search"){let ee=k.output;if(ee.type==="error-json"){L.push({type:"web_search_tool_result",tool_use_id:k.toolCallId,content:{type:"web_search_tool_result_error",error_code:(I=eu(ee.value).errorCode)!=null?I:"unavailable"},...ie&&{caller:ie},cache_control:H});break}if(ee.type!=="json"){o.push({type:"other",message:`provider executed tool result output type ${ee.type} for tool ${k.toolName} is not supported`});break}let B=await pt({value:ee.value,schema:gu});L.push({type:"web_search_tool_result",tool_use_id:k.toolCallId,content:B.map(Ye=>({url:Ye.url,title:Ye.title,page_age:Ye.pageAge,encrypted_content:Ye.encryptedContent,type:Ye.type})),...ie&&{caller:ie},cache_control:H});break}if(Z==="tool_search_tool_regex"||Z==="tool_search_tool_bm25"){let ee=k.output;if(ee.type!=="json"){o.push({type:"other",message:`provider executed tool result output type ${ee.type} for tool ${k.toolName} is not supported`});break}let Ye=(await pt({value:ee.value,schema:yu})).map($=>({type:"tool_reference",tool_name:$.toolName}));L.push({type:"tool_search_tool_result",tool_use_id:k.toolCallId,content:{type:"tool_search_tool_search_result",tool_references:Ye},cache_control:H});break}if(Z==="advisor"){let ee=k.output;if(ee.type!=="json"&&ee.type!=="error-json"){o.push({type:"other",message:`provider executed tool result output type ${ee.type} for tool ${k.toolName} is not supported`});break}let B=await pt({value:ee.value,schema:fu});B.type==="advisor_result"?L.push({type:"advisor_tool_result",tool_use_id:k.toolCallId,content:{type:"advisor_result",text:B.text,...B.stopReason!==void 0&&{stop_reason:B.stopReason}},cache_control:H}):B.type==="advisor_redacted_result"?L.push({type:"advisor_tool_result",tool_use_id:k.toolCallId,content:{type:"advisor_redacted_result",encrypted_content:B.encryptedContent,...B.stopReason!==void 0&&{stop_reason:B.stopReason}},cache_control:H}):L.push({type:"advisor_tool_result",tool_use_id:k.toolCallId,content:{type:"advisor_tool_result_error",error_code:B.errorCode},cache_control:H});break}o.push({type:"other",message:`provider executed tool result for tool ${k.toolName} is not supported`});break}}}}Y.push({role:"assistant",content:gw(L)});break}default:{let L=S;throw new Error(`content type: ${L}`)}}}return{prompt:{system:j,messages:Y},betas:v}}function fw(e){let t=[],o;for(let n of e){let{role:s}=n;switch(s){case"system":{o?.type!=="system"&&(o={type:"system",messages:[]},t.push(o)),o.messages.push(n);break}case"assistant":{o?.type!=="assistant"&&(o={type:"assistant",messages:[]},t.push(o)),o.messages.push(n);break}case"user":{o?.type!=="user"&&(o={type:"user",messages:[]},t.push(o)),o.messages.push(n);break}case"tool":{o?.type!=="user"&&(o={type:"user",messages:[]},t.push(o)),o.messages.push(n);break}default:{let i=s;throw new Error(`Unsupported role: ${i}`)}}}return t}function gw(e){let t=[],o=[];function n(){t.push(...o.filter(s=>s.type!=="tool_use"),...o.filter(s=>s.type==="tool_use")),o=[]}for(let s of e)s.type==="thinking"||s.type==="redacted_thinking"?(n(),t.push(s)):o.push(s);return n(),t}function tu(e){var t;let o=(t=e?.anthropic)==null?void 0:t.caller;return(o?.type==="code_execution_20250825"||o?.type==="code_execution_20260120")&&o.toolId?{type:o.type,tool_id:o.toolId}:o?.type==="direct"?{type:"direct"}:void 0}function hw(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{rawInvalidInput:e}}function vi({finishReason:e,isJsonResponseFromTool:t}){switch(e){case"pause_turn":case"end_turn":case"stop_sequence":return"stop";case"refusal":return"content-filter";case"tool_use":return t?"stop":"tool-calls";case"max_tokens":case"model_context_window_exceeded":return"length";case"compaction":return"other";default:return"other"}}var Au=new Set(["date-time","time","date","duration","email","hostname","uri","ipv4","ipv6","uuid"]),ww=["minimum","maximum","exclusiveMinimum","exclusiveMaximum","multipleOf","minLength","maxLength","pattern","minItems","maxItems","uniqueItems","minProperties","maxProperties","not"];function Ew(e){return Mu(e)}function sn(e){return typeof e=="boolean"||!Ns(e)?e:Mu(e)}function Mu(e){let t={},o=e;if(e.$ref!=null)return{$ref:e.$ref};if(e.$schema!=null&&(t.$schema=e.$schema),e.$id!=null&&(t.$id=e.$id),e.title!=null&&(t.title=e.title),e.description!=null&&(t.description=e.description),e.default!==void 0&&(t.default=e.default),e.const!==void 0&&(t.const=e.const),e.enum!=null&&(t.enum=e.enum),e.type!=null&&(t.type=e.type),e.anyOf!=null?t.anyOf=e.anyOf.map(sn):e.oneOf!=null&&(t.anyOf=e.oneOf.map(sn)),e.allOf!=null&&(t.allOf=e.allOf.map(sn)),e.definitions!=null&&(t.definitions=Object.fromEntries(Object.entries(e.definitions).map(([s,i])=>[s,sn(i)]))),o.$defs!=null){let s=t;s.$defs=Object.fromEntries(Object.entries(o.$defs).map(([i,r])=>[i,sn(r)]))}(e.type==="object"||e.properties!=null)&&(e.properties!=null&&(t.properties=Object.fromEntries(Object.entries(e.properties).map(([s,i])=>[s,sn(i)]))),t.additionalProperties=!1,e.required!=null&&(t.required=e.required)),e.items!=null&&(t.items=Array.isArray(e.items)?e.items.map(sn):sn(e.items)),typeof e.format=="string"&&Au.has(e.format)&&(t.format=e.format);let n=Uw(e);return n!=null&&(t.description=t.description==null?n:`${t.description}
|
|
60
|
-
${n}`),t}function Uw(e){let t=ww.flatMap(o=>{let n=e[o];return n==null||n===!1?[]:`${yw(o)}: ${Aw(n)}`});return typeof e.format=="string"&&!Au.has(e.format)&&t.push(`format: ${e.format}`),t.length===0?void 0:`${t.join("; ")}.`}function yw(e){return e.replace(/[A-Z]/g,t=>` ${t.toLowerCase()}`)}function Aw(e){return typeof e=="string"?e:JSON.stringify(e)}function Mw(e){var t,o,n;let s=Iw(e.type);return ac({message:e.message,type:e.type,code:(t=e.code)!=null?t:void 0,statusCode:(o=e.statusCode)!=null?o:s.statusCode,isRetryable:(n=e.isRetryable)!=null?n:s.isRetryable,data:"data"in e?e.data:e})}function Iw(e){switch(e){case"api_error":return{statusCode:500,isRetryable:!0};case"overloaded_error":return{statusCode:529,isRetryable:!0};case"rate_limit_error":return{statusCode:429,isRetryable:!0};case"request_too_large":return{statusCode:413,isRetryable:!1};case"authentication_error":return{statusCode:401,isRetryable:!1};case"permission_error":return{statusCode:403,isRetryable:!1};case"not_found_error":return{statusCode:404,isRetryable:!1};case"billing_error":case"invalid_request_error":return{statusCode:400,isRetryable:!1};default:return{}}}function na(e,t,o){var n,s;if(e.type==="web_search_result_location")return{type:"source",sourceType:"url",id:o(),url:e.url,title:(n=e.title)!=null?n:void 0,providerMetadata:{anthropic:{citedText:e.cited_text,encryptedIndex:e.encrypted_index}}};if(e.type!=="page_location"&&e.type!=="char_location")return;let i=t[e.document_index];if(i)return{type:"source",sourceType:"document",id:o(),mediaType:i.mediaType,title:(s=e.document_title)!=null?s:i.title,filename:i.filename,providerMetadata:{anthropic:e.type==="page_location"?{citedText:e.cited_text,startPageNumber:e.start_page_number,endPageNumber:e.end_page_number}:{citedText:e.cited_text,startCharIndex:e.start_char_index,endCharIndex:e.end_char_index}}}}function Ni(e){return e==null?void 0:{type:e.type,toolId:"tool_id"in e?e.tool_id:void 0}}function Vt(e){let t=Ni(e);return t==null?{}:{providerMetadata:{anthropic:{caller:t}}}}function Ow(e){let t=e.indexOf(".");return t===-1?e:e.substring(0,t)}var Iu=class sa{constructor(t,o){this.specificationVersion="v4";var n;this.modelId=t,this.config=o,this.generateId=(n=o.generateId)!=null?n:St}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new sa(t.modelId,t.config)}supportsUrl(t){return t.protocol==="https:"}get provider(){return this.config.provider}get supportedUrls(){var t,o,n;return(n=(o=(t=this.config).supportedUrls)==null?void 0:o.call(t))!=null?n:{}}static async prepareRequest({modelId:t,config:o,options:{userSuppliedBetas:n,prompt:s,maxOutputTokens:i,temperature:r,topP:l,topK:a,frequencyPenalty:c,presencePenalty:d,stopSequences:f,responseFormat:p,seed:u,tools:g,toolChoice:h,reasoning:w,providerOptions:y,stream:U}}){var O,E,A,M,_,J,R,I,v,T,P,j;let Y=[];c!=null&&Y.push({type:"unsupported",feature:"frequencyPenalty"}),d!=null&&Y.push({type:"unsupported",feature:"presencePenalty"}),u!=null&&Y.push({type:"unsupported",feature:"seed"}),r!=null&&r>1?(Y.push({type:"unsupported",feature:"temperature",details:`${r} exceeds anthropic maximum of 1.0. clamped to 1.0`}),r=1):r!=null&&r<0&&(Y.push({type:"unsupported",feature:"temperature",details:`${r} is below anthropic minimum of 0. clamped to 0`}),r=0),p?.type==="json"&&p.schema==null&&Y.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema. The response format is ignored."});let ne=Ow(o.provider),se=await Ge({provider:"anthropic",providerOptions:y,schema:ta}),fe=ne!=="anthropic"?await Ge({provider:ne,providerOptions:y,schema:ta}):null,ae=fe!=null,N=Object.assign({},se??{},fe??{}),{maxOutputTokens:le,supportsStructuredOutput:S,supportsAdaptiveThinking:L,rejectsSamplingParameters:V,supportsXhighEffort:me,rejectsThinkingDisabledAboveHighEffort:D,isKnownModel:oe}=_w(t);!oe&&i==null&&Y.push({type:"compatibility",feature:"maxOutputTokens",details:`The model "${t}" is unknown. The max output tokens have been limited to ${le}. Set maxOutputTokens explicitly to override this limit.`}),V&&(r!=null&&(Y.push({type:"unsupported",feature:"temperature",details:`temperature is not supported by ${t} and will be ignored`}),r=void 0),a!=null&&(Y.push({type:"unsupported",feature:"topK",details:`topK is not supported by ${t} and will be ignored`}),a=void 0),l!=null&&(Y.push({type:"unsupported",feature:"topP",details:`topP is not supported by ${t} and will be ignored`}),l=void 0));let F=oe||t.includes("claude-"),re=((O=o.supportsNativeStructuredOutput)!=null?O:!0)&&S,k=((E=o.supportsStrictTools)!=null?E:!0)&&S,X=(A=N?.structuredOutputMode)!=null?A:"auto",H=X==="outputFormat"||X==="auto"&&re,Z=p?.type==="json"&&p.schema!=null&&!H?{type:"function",name:"json",description:"Respond with a JSON object.",inputSchema:p.schema}:void 0;Z!=null&&N?.disableParallelToolUse===!1&&Y.push({type:"unsupported",feature:"providerOptions.anthropic.disableParallelToolUse",details:"`disableParallelToolUse: false` is ignored when using the JSON response tool. Parallel tool use is disabled to ensure a single coherent JSON tool call."});let ie=N?.contextManagement,ee=new ia,B=ic({tools:g,providerToolNames:{"anthropic.code_execution_20250522":"code_execution","anthropic.code_execution_20250825":"code_execution","anthropic.code_execution_20260120":"code_execution","anthropic.computer_20241022":"computer","anthropic.computer_20250124":"computer","anthropic.text_editor_20241022":"str_replace_editor","anthropic.text_editor_20250124":"str_replace_editor","anthropic.text_editor_20250429":"str_replace_based_edit_tool","anthropic.text_editor_20250728":"str_replace_based_edit_tool","anthropic.bash_20241022":"bash","anthropic.bash_20250124":"bash","anthropic.memory_20250818":"memory","anthropic.web_search_20250305":"web_search","anthropic.web_search_20260209":"web_search","anthropic.web_fetch_20250910":"web_fetch","anthropic.web_fetch_20260209":"web_fetch","anthropic.tool_search_regex_20251119":"tool_search_tool_regex","anthropic.tool_search_bm25_20251119":"tool_search_tool_bm25","anthropic.advisor_20260301":"advisor"}}),{prompt:Ye,betas:$}=await mw({prompt:s,sendReasoning:(M=N?.sendReasoning)!=null?M:!0,warnings:Y,cacheControlValidator:ee,toolNameMapping:B});if(jr(w)&&N?.effort==null){let ce=bw({reasoning:w,supportsAdaptiveThinking:L,supportsXhighEffort:me,maxOutputTokensForModel:le,warnings:Y});ce!=null&&(N.thinking==null&&(N.thinking=ce.thinking),ce.effort!=null&&((_=N.thinking)==null?void 0:_.type)!=="disabled"&&(N.effort=ce.effort))}D&&((J=N?.thinking)==null?void 0:J.type)==="disabled"&&(N.effort==="xhigh"||N.effort==="max")&&(Y.push({type:"unsupported",feature:"providerOptions.anthropic.effort",details:`effort '${N.effort}' is not supported by ${t} when thinking is disabled. The effort has been lowered to 'high'.`}),N.effort="high");let b=(R=N?.thinking)==null?void 0:R.type,he=b==="enabled"||b==="adaptive",W=N?.thinking!=null&&"blockBinding"in N.thinking?N.thinking.blockBinding:void 0,Ee=he||b==="disabled"||W!=null,Xt=b==="enabled"?(I=N?.thinking)==null?void 0:I.budgetTokens:void 0,So=b==="adaptive"?(v=N?.thinking)==null?void 0:v.display:void 0,hs=i??le,eo={model:t,max_tokens:hs,temperature:r,top_k:a,top_p:l,stop_sequences:f,...Ee&&{thinking:{...b!=null&&{type:b},...Xt!=null&&{budget_tokens:Xt},...So!=null&&{display:So},...W!=null&&{block_binding:{prefix_mismatch_behavior:W.prefixMismatchBehavior}}}},...(N?.effort||N?.taskBudget||H&&p?.type==="json"&&p.schema!=null)&&{output_config:{...N?.effort&&{effort:N.effort},...N?.taskBudget&&{task_budget:{type:N.taskBudget.type,total:N.taskBudget.total,...N.taskBudget.remaining!=null&&{remaining:N.taskBudget.remaining}}},...H&&p?.type==="json"&&p.schema!=null&&{format:{type:"json_schema",schema:Ew(p.schema)}}}},...N?.speed&&{speed:N.speed},...N?.serviceTier&&{service_tier:N.serviceTier},...N?.inferenceGeo&&{inference_geo:N.inferenceGeo},...N?.fallbacks!=null&&(N.fallbacks==="default"||N.fallbacks.length>0)&&{fallbacks:N.fallbacks},...N?.cacheControl&&{cache_control:N.cacheControl},...((T=N?.metadata)==null?void 0:T.userId)!=null&&{metadata:{user_id:N.metadata.userId}},...N?.mcpServers&&N.mcpServers.length>0&&{mcp_servers:N.mcpServers.map(ce=>({type:ce.type,name:ce.name,url:ce.url,authorization_token:ce.authorizationToken,tool_configuration:ce.toolConfiguration?{allowed_tools:ce.toolConfiguration.allowedTools,enabled:ce.toolConfiguration.enabled}:void 0}))},...N?.container&&{container:N.container.skills&&N.container.skills.length>0?{id:N.container.id,skills:N.container.skills.map(ce=>({type:ce.type,skill_id:ce.type==="custom"?Mi({reference:ce.providerReference,provider:"anthropic"}):ce.skillId,version:ce.version}))}:N.container.id},system:Ye.system,messages:Ye.messages,...ie&&{context_management:{edits:ie.edits.map(ce=>{let rl=ce.type;switch(rl){case"clear_tool_uses_20250919":return{type:ce.type,...ce.trigger!==void 0&&{trigger:ce.trigger},...ce.keep!==void 0&&{keep:ce.keep},...ce.clearAtLeast!==void 0&&{clear_at_least:ce.clearAtLeast},...ce.clearToolInputs!==void 0&&{clear_tool_inputs:ce.clearToolInputs},...ce.excludeTools!==void 0&&{exclude_tools:ce.excludeTools}};case"clear_thinking_20251015":return{type:ce.type,...ce.keep!==void 0&&{keep:ce.keep}};case"compact_20260112":return{type:ce.type,...ce.trigger!==void 0&&{trigger:ce.trigger},...ce.pauseAfterCompaction!==void 0&&{pause_after_compaction:ce.pauseAfterCompaction},...ce.instructions!==void 0&&{instructions:ce.instructions}};default:Y.push({type:"other",message:`Unknown context management strategy: ${rl}`});return}}).filter(ce=>ce!==void 0)}}};he?(b==="enabled"&&Xt==null&&(Y.push({type:"compatibility",feature:"extended thinking",details:"thinking budget is required when thinking is enabled. using default budget of 1024 tokens."}),eo.thinking={type:"enabled",budget_tokens:1024},Xt=1024),eo.temperature!=null&&(eo.temperature=void 0,Y.push({type:"unsupported",feature:"temperature",details:"temperature is not supported when thinking is enabled"})),a!=null&&(eo.top_k=void 0,Y.push({type:"unsupported",feature:"topK",details:"topK is not supported when thinking is enabled"})),l!=null&&(eo.top_p=void 0,Y.push({type:"unsupported",feature:"topP",details:"topP is not supported when thinking is enabled"})),eo.max_tokens=hs+(Xt??0)):F&&l!=null&&r!=null&&(Y.push({type:"unsupported",feature:"topP",details:"topP is not supported when temperature is set. topP is ignored."}),eo.top_p=void 0),oe&&eo.max_tokens>le&&(i!=null&&Y.push({type:"unsupported",feature:"maxOutputTokens",details:`${eo.max_tokens} (maxOutputTokens + thinkingBudget) is greater than ${t} ${le} max output tokens. The max output tokens have been limited to ${le}.`}),eo.max_tokens=le),N?.mcpServers&&N.mcpServers.length>0&&$.add("mcp-client-2025-04-04"),ie&&($.add("context-management-2025-06-27"),ie.edits.some(ce=>ce.type==="compact_20260112")&&$.add("compact-2026-01-12")),N?.container&&N.container.skills&&N.container.skills.length>0&&($.add("code-execution-2025-08-25"),$.add("skills-2025-10-02"),$.add("files-api-2025-04-14"),g?.some(ce=>ce.type==="provider"&&(ce.id==="anthropic.code_execution_20250825"||ce.id==="anthropic.code_execution_20260120"))||Y.push({type:"other",message:"code execution tool is required when using skills"})),N?.taskBudget&&$.add("task-budgets-2026-03-13"),N?.speed==="fast"&&$.add("fast-mode-2026-02-01"),So==="updates"&&$.add("thinking-display-updates-2026-08-18"),W!=null&&$.add("thinking-binding-controls-2026-08-01"),N?.fallbacks==="default"?$.add("server-side-fallback-2026-07-01"):N?.fallbacks&&N.fallbacks.length>0&&$.add("server-side-fallback-2026-06-01");let il=U&&((P=N?.toolStreaming)!=null?P:!0),{tools:Um,toolChoice:ym,toolWarnings:Am,betas:Mm}=await Wh(Z!=null?{tools:[...g??[],Z],toolChoice:{type:"required"},disableParallelToolUse:!0,cacheControlValidator:ee,supportsStructuredOutput:!1,supportsStrictTools:k,defaultEagerInputStreaming:il}:{tools:g??[],toolChoice:h,disableParallelToolUse:N?.disableParallelToolUse,cacheControlValidator:ee,supportsStructuredOutput:re,supportsStrictTools:k,defaultEagerInputStreaming:il}),Im=ee.getWarnings();return{args:{...eo,tools:Um,tool_choice:ym,stream:U===!0?!0:void 0},warnings:[...Y,...Am,...Im],betas:new Set([...$,...Mm,...n,...(j=N?.anthropicBeta)!=null?j:[]]),usesJsonResponseTool:Z!=null,toolNameMapping:B,providerOptionsName:ne,usedCustomProviderKey:ae}}getArgs(t){return sa.prepareRequest({modelId:this.modelId,config:this.config,options:t})}async getHeaders({betas:t,headers:o}){return je(this.config.headers?await Se(this.config.headers):void 0,o,t.size>0?{"anthropic-beta":Array.from(t).join(",")}:{})}async getBetasFromHeaders(t){var o,n;let s=this.config.headers?await Se(this.config.headers):void 0,i=(o=s?.["anthropic-beta"])!=null?o:"",r=(n=t?.["anthropic-beta"])!=null?n:"";return new Set([...i.toLowerCase().split(","),...r.toLowerCase().split(",")].map(l=>l.trim()).filter(l=>l!==""))}buildRequestUrl(t){var o,n,s;return(s=(n=(o=this.config).buildRequestUrl)==null?void 0:n.call(o,this.config.baseURL,t))!=null?s:`${this.config.baseURL}/messages`}transformRequestBody(t,o){var n,s,i;return(i=(s=(n=this.config).transformRequestBody)==null?void 0:s.call(n,t,o))!=null?i:t}extractCitationDocuments(t){let o=n=>{var s,i;if(n.type!=="file"||n.mediaType!=="application/pdf"&&n.mediaType!=="text/plain")return!1;let r=(s=n.providerOptions)==null?void 0:s.anthropic,l=r?.citations;return(i=l?.enabled)!=null?i:!1};return t.filter(n=>n.role==="user").flatMap(n=>n.content).filter(o).map(n=>{var s;let i=n;return{title:(s=i.filename)!=null?s:"Untitled Document",filename:i.filename,mediaType:i.mediaType}})}async doGenerate(t){var o,n,s,i,r,l,a,c;let{args:d,warnings:f,betas:p,usesJsonResponseTool:u,toolNameMapping:g,providerOptionsName:h,usedCustomProviderKey:w}=await this.getArgs({...t,stream:!1,userSuppliedBetas:await this.getBetasFromHeaders(t.headers)}),y=[...this.extractCitationDocuments(t.prompt)],U=ou(d.tools),{responseHeaders:O,value:E,rawValue:A}=await et({url:this.buildRequestUrl(!1),headers:await this.getHeaders({betas:p,headers:t.headers}),body:this.transformRequestBody(d,p),failedResponseHandler:_o,successfulResponseHandler:ke(Li),abortSignal:t.abortSignal,fetch:this.config.fetch}),M=[],_={},J={},R=!1;for(let I of E.content)switch(I.type){case"text":{if(!u){let v=(o=I.citations)==null?void 0:o.filter(T=>T.type==="web_search_result_location");if(M.push({type:"text",text:I.text,...v!=null&&v.length>0&&{providerMetadata:{anthropic:{citations:v}}}}),I.citations)for(let T of I.citations){let P=na(T,y,this.generateId);P&&M.push(P)}}break}case"thinking":{M.push({type:"reasoning",text:I.thinking,providerMetadata:{anthropic:{signature:I.signature}}});break}case"redacted_thinking":{M.push({type:"reasoning",text:"",providerMetadata:{anthropic:{redactedData:I.data}}});break}case"container_upload":{M.push({type:"custom",kind:"anthropic.container_upload",providerMetadata:{anthropic:{fileId:I.file_id}}});break}case"compaction":{M.push({type:"text",text:I.content,providerMetadata:{anthropic:{type:"compaction"}}});break}case"tool_use":{u&&I.name==="json"?(R=!0,M.push({type:"text",text:JSON.stringify(I.input)})):M.push({type:"tool-call",toolCallId:I.id,toolName:I.name,input:JSON.stringify(I.input),...Vt(I.caller)});break}case"server_tool_use":{if(I.name==="text_editor_code_execution"||I.name==="bash_code_execution")M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName("code_execution"),input:JSON.stringify({type:I.name,...I.input}),providerExecuted:!0,...U&&"code_execution"==="code_execution"?{dynamic:!0}:{},...Vt(I.caller)});else if(I.name==="web_search"||I.name==="code_execution"||I.name==="web_fetch"){let v=I.name==="code_execution"&&I.input!=null&&typeof I.input=="object"&&"code"in I.input&&!("type"in I.input)?{type:"programmatic-tool-call",...I.input}:I.input;M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName(I.name),input:JSON.stringify(v),providerExecuted:!0,...U&&I.name==="code_execution"?{dynamic:!0}:{},...Vt(I.caller)})}else I.name==="tool_search_tool_regex"||I.name==="tool_search_tool_bm25"?(J[I.id]=I.name,M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName(I.name),input:JSON.stringify(I.input),providerExecuted:!0,...Vt(I.caller)})):I.name==="advisor"&&M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName("advisor"),input:JSON.stringify(I.input),providerExecuted:!0,...Vt(I.caller)});break}case"mcp_tool_use":{_[I.id]={type:"tool-call",toolCallId:I.id,toolName:I.name,input:JSON.stringify(I.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:I.server_name}}},M.push(_[I.id]);break}case"mcp_tool_result":{M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:_[I.tool_use_id].toolName,isError:I.is_error,result:I.content,dynamic:!0,providerMetadata:_[I.tool_use_id].providerMetadata});break}case"web_fetch_tool_result":{I.content.type==="web_fetch_result"?(y.push({title:(n=I.content.content.title)!=null?n:I.content.url,mediaType:I.content.content.source.media_type}),M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:I.content.url,retrievedAt:I.content.retrieved_at,content:{type:I.content.content.type,title:I.content.content.title,citations:I.content.content.citations,source:{type:I.content.content.source.type,mediaType:I.content.content.source.media_type,data:I.content.content.source.data}}},...Vt(I.caller)})):I.content.type==="web_fetch_tool_result_error"&&M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:I.content.error_code},...Vt(I.caller)});break}case"web_search_tool_result":{if(Array.isArray(I.content)){M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_search"),result:I.content.map(v=>{var T;return{url:v.url,...v.title!=null?{title:v.title}:{},pageAge:(T=v.page_age)!=null?T:null,encryptedContent:v.encrypted_content,type:v.type}}),...Vt(I.caller)});for(let v of I.content)M.push({type:"source",sourceType:"url",id:this.generateId(),url:v.url,...v.title!=null?{title:v.title}:{},providerMetadata:{anthropic:{pageAge:(s=v.page_age)!=null?s:null}}})}else M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:I.content.error_code},...Vt(I.caller)});break}case"code_execution_tool_result":{I.content.type==="code_execution_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),result:{type:I.content.type,stdout:I.content.stdout,stderr:I.content.stderr,return_code:I.content.return_code,content:(i=I.content.content)!=null?i:[]}}):I.content.type==="encrypted_code_execution_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),result:{type:I.content.type,encrypted_stdout:I.content.encrypted_stdout,stderr:I.content.stderr,return_code:I.content.return_code,content:(r=I.content.content)!=null?r:[]}}):I.content.type==="code_execution_tool_result_error"&&M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:I.content.error_code}});break}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),result:I.content});break}case"tool_search_tool_result":{let v=J[I.tool_use_id];if(v==null){let T=g.toCustomToolName("tool_search_tool_bm25"),P=g.toCustomToolName("tool_search_tool_regex");T!=="tool_search_tool_bm25"?v="tool_search_tool_bm25":v="tool_search_tool_regex"}I.content.type==="tool_search_tool_search_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName(v),result:I.content.tool_references.map(T=>({type:T.type,toolName:T.tool_name}))}):M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName(v),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:I.content.error_code}});break}case"advisor_tool_result":{let v=g.toCustomToolName("advisor");I.content.type==="advisor_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:v,result:{type:"advisor_result",text:I.content.text,...I.content.stop_reason!=null&&{stopReason:I.content.stop_reason}}}):I.content.type==="advisor_redacted_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:v,result:{type:"advisor_redacted_result",encryptedContent:I.content.encrypted_content,...I.content.stop_reason!=null&&{stopReason:I.content.stop_reason}}}):M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:v,isError:!0,result:{type:"advisor_tool_result_error",errorCode:I.content.error_code}});break}case"fallback":break}return{content:M,finishReason:{unified:vi({finishReason:E.stop_reason,isJsonResponseFromTool:R}),raw:(l=E.stop_reason)!=null?l:void 0},usage:oa({usage:E.usage}),request:{body:d},response:{id:(a=E.id)!=null?a:void 0,modelId:(c=E.model)!=null?c:void 0,headers:O,body:A},warnings:f,providerMetadata:(()=>{var I,v,T,P;let j=su(E.stop_details),Y={usage:E.usage,stopSequence:(I=E.stop_sequence)!=null?I:null,...j!=null?{stopDetails:j}:{},...E.input_transformations!=null?{inputTransformations:E.input_transformations}:{},iterations:E.usage.iterations?E.usage.iterations.map(se=>({type:se.type,...se.model!=null?{model:se.model}:{},inputTokens:se.input_tokens,outputTokens:se.output_tokens,...se.cache_creation_input_tokens?{cacheCreationInputTokens:se.cache_creation_input_tokens}:{},...se.cache_read_input_tokens?{cacheReadInputTokens:se.cache_read_input_tokens}:{}})):null,container:E.container?{expiresAt:E.container.expires_at,id:E.container.id,skills:(T=(v=E.container.skills)==null?void 0:v.map(se=>({type:se.type,skillId:se.skill_id,version:se.version})))!=null?T:null}:null,contextManagement:(P=nu(E.context_management))!=null?P:null},ne={anthropic:Y};return w&&h!=="anthropic"&&(ne[h]=Y),ne})()}}async doStream(t){"use step";var o,n,s,i;let{args:r,warnings:l,betas:a,usesJsonResponseTool:c,toolNameMapping:d,providerOptionsName:f,usedCustomProviderKey:p}=await this.getArgs({...t,stream:!0,userSuppliedBetas:await this.getBetasFromHeaders(t.headers)}),u=[...this.extractCitationDocuments(t.prompt)],g=ou(r.tools),h=this.buildRequestUrl(!0),{responseHeaders:w,value:y}=await et({url:h,headers:await this.getHeaders({betas:a,headers:t.headers}),body:this.transformRequestBody(r,a),failedResponseHandler:_o,successfulResponseHandler:Jc(Ah),abortSignal:t.abortSignal,fetch:this.config.fetch}),U={unified:"other",raw:void 0},O={input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0,iterations:null},E={},A={},M={},_=null,J,R=null,I,v,T=null,P=!1,j=!1,Y,ne=!1,se,fe=this.generateId,ae=y.pipeThrough(new TransformStream({start(L){L.enqueue({type:"stream-start",warnings:l})},transform(L,V){var me,D,oe,F,re,k,X,H,Z,ie,ee,B,Ye;if(ne)return;if(t.includeRawChunks&&V.enqueue({type:"raw",rawValue:L.rawValue}),!L.success){V.enqueue({type:"error",error:L.error});return}let $=L.value;switch($.type){case"ping":return;case"content_block_start":{let b=$.content_block,he=b.type;if(he==="fallback")return;switch(se=he,he){case"text":{if(c)return;E[$.index]={type:"text",citations:[]},V.enqueue({type:"text-start",id:String($.index)});return}case"thinking":{E[$.index]={type:"reasoning"},V.enqueue({type:"reasoning-start",id:String($.index)});return}case"redacted_thinking":{E[$.index]={type:"reasoning"},V.enqueue({type:"reasoning-start",id:String($.index),providerMetadata:{anthropic:{redactedData:b.data}}});return}case"compaction":{E[$.index]={type:"text",citations:[]},V.enqueue({type:"text-start",id:String($.index),providerMetadata:{anthropic:{type:"compaction"}}});return}case"tool_use":{if(c&&b.name==="json")P=!0,E[$.index]={type:"text",citations:[]},V.enqueue({type:"text-start",id:String($.index)});else{let Ee=Ni(b.caller),So=b.input&&Object.keys(b.input).length>0?JSON.stringify(b.input):"";E[$.index]={type:"tool-call",toolCallId:b.id,toolName:b.name,input:So,firstDelta:So.length===0,...Ee&&{caller:Ee}},V.enqueue({type:"tool-input-start",id:b.id,toolName:b.name})}return}case"server_tool_use":{let W=Ni(b.caller);if(["web_fetch","web_search","code_execution","text_editor_code_execution","bash_code_execution"].includes(b.name)){let Ee=b.name==="text_editor_code_execution"||b.name==="bash_code_execution"?"code_execution":b.name,Xt=b.name==="text_editor_code_execution"||b.name==="bash_code_execution"?b.name:b.name==="code_execution"?"programmatic-tool-call":void 0,So=d.toCustomToolName(Ee),hs=b.input!=null&&typeof b.input=="object"&&Object.keys(b.input).length>0?JSON.stringify(b.input):"";E[$.index]={type:"tool-call",toolCallId:b.id,toolName:So,input:hs,providerExecuted:!0,...g&&Ee==="code_execution"?{dynamic:!0}:{},firstDelta:hs.length===0,providerToolName:Ee,providerToolInputType:Xt,...W&&{caller:W}},V.enqueue({type:"tool-input-start",id:b.id,toolName:So,providerExecuted:!0,...g&&Ee==="code_execution"?{dynamic:!0}:{}})}else if(b.name==="tool_search_tool_regex"||b.name==="tool_search_tool_bm25"){M[b.id]=b.name;let Ee=d.toCustomToolName(b.name);E[$.index]={type:"tool-call",toolCallId:b.id,toolName:Ee,input:"",providerExecuted:!0,firstDelta:!0,providerToolName:b.name,...W&&{caller:W}},V.enqueue({type:"tool-input-start",id:b.id,toolName:Ee,providerExecuted:!0})}else if(b.name==="advisor"){let Ee=d.toCustomToolName("advisor");E[$.index]={type:"tool-call",toolCallId:b.id,toolName:Ee,input:"{}",providerExecuted:!0,firstDelta:!0,providerToolName:b.name,...W&&{caller:W}},V.enqueue({type:"tool-input-start",id:b.id,toolName:Ee,providerExecuted:!0})}return}case"web_fetch_tool_result":{b.content.type==="web_fetch_result"?(u.push({title:(me=b.content.content.title)!=null?me:b.content.url,mediaType:b.content.content.source.media_type}),V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:b.content.url,retrievedAt:b.content.retrieved_at,content:{type:b.content.content.type,title:b.content.content.title,citations:b.content.content.citations,source:{type:b.content.content.source.type,mediaType:b.content.content.source.media_type,data:b.content.content.source.data}}},...Vt(b.caller)})):b.content.type==="web_fetch_tool_result_error"&&V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:b.content.error_code},...Vt(b.caller)});return}case"web_search_tool_result":{if(Array.isArray(b.content)){V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_search"),result:b.content.map(W=>{var Ee;return{url:W.url,...W.title!=null?{title:W.title}:{},pageAge:(Ee=W.page_age)!=null?Ee:null,encryptedContent:W.encrypted_content,type:W.type}}),...Vt(b.caller)});for(let W of b.content)V.enqueue({type:"source",sourceType:"url",id:fe(),url:W.url,...W.title!=null?{title:W.title}:{},providerMetadata:{anthropic:{pageAge:(D=W.page_age)!=null?D:null}}})}else V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:b.content.error_code},...Vt(b.caller)});return}case"code_execution_tool_result":{b.content.type==="code_execution_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),result:{type:b.content.type,stdout:b.content.stdout,stderr:b.content.stderr,return_code:b.content.return_code,content:(oe=b.content.content)!=null?oe:[]}}):b.content.type==="encrypted_code_execution_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),result:{type:b.content.type,encrypted_stdout:b.content.encrypted_stdout,stderr:b.content.stderr,return_code:b.content.return_code,content:(F=b.content.content)!=null?F:[]}}):b.content.type==="code_execution_tool_result_error"&&V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:b.content.error_code}});return}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),result:b.content});return}case"tool_search_tool_result":{let W=M[b.tool_use_id];if(W==null){let Ee=d.toCustomToolName("tool_search_tool_bm25"),Xt=d.toCustomToolName("tool_search_tool_regex");Ee!=="tool_search_tool_bm25"?W="tool_search_tool_bm25":W="tool_search_tool_regex"}b.content.type==="tool_search_tool_search_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName(W),result:b.content.tool_references.map(Ee=>({type:Ee.type,toolName:Ee.tool_name}))}):V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName(W),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:b.content.error_code}});return}case"advisor_tool_result":{let W=d.toCustomToolName("advisor");b.content.type==="advisor_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:W,result:{type:"advisor_result",text:b.content.text,...b.content.stop_reason!=null&&{stopReason:b.content.stop_reason}}}):b.content.type==="advisor_redacted_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:W,result:{type:"advisor_redacted_result",encryptedContent:b.content.encrypted_content,...b.content.stop_reason!=null&&{stopReason:b.content.stop_reason}}}):V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:W,isError:!0,result:{type:"advisor_tool_result_error",errorCode:b.content.error_code}});return}case"mcp_tool_use":{A[b.id]={type:"tool-call",toolCallId:b.id,toolName:b.name,input:JSON.stringify(b.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:b.server_name}}},V.enqueue(A[b.id]);return}case"mcp_tool_result":{V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:A[b.tool_use_id].toolName,isError:b.is_error,result:b.content,dynamic:!0,providerMetadata:A[b.tool_use_id].providerMetadata});return}default:{let W=he;throw new Error(`Unsupported content block type: ${W}`)}}}case"content_block_stop":{if(E[$.index]!=null){let b=E[$.index];switch(b.type){case"text":{V.enqueue({type:"text-end",id:String($.index),...b.citations.length>0&&{providerMetadata:{anthropic:{citations:b.citations}}}});break}case"reasoning":{V.enqueue({type:"reasoning-end",id:String($.index)});break}case"tool-call":if(!(c&&b.toolName==="json")){V.enqueue({type:"tool-input-end",id:b.toolCallId});let W=b.input===""?"{}":b.input;if(b.providerToolName==="code_execution")try{let Ee=In(W);Ee!=null&&typeof Ee=="object"&&"code"in Ee&&!("type"in Ee)&&(W=JSON.stringify({type:"programmatic-tool-call",...Ee}))}catch{}V.enqueue({type:"tool-call",toolCallId:b.toolCallId,toolName:b.toolName,input:W,providerExecuted:b.providerExecuted,...g&&b.providerToolName==="code_execution"?{dynamic:!0}:{},...b.caller&&{providerMetadata:{anthropic:{caller:b.caller}}}})}break}delete E[$.index]}se=void 0;return}case"content_block_delta":{let b=$.delta.type;switch(b){case"text_delta":{if(c)return;V.enqueue({type:"text-delta",id:String($.index),delta:$.delta.text});return}case"thinking_delta":{V.enqueue({type:"reasoning-delta",id:String($.index),delta:$.delta.thinking});return}case"signature_delta":{se==="thinking"&&V.enqueue({type:"reasoning-delta",id:String($.index),delta:"",providerMetadata:{anthropic:{signature:$.delta.signature}}});return}case"compaction_delta":{$.delta.content!=null&&V.enqueue({type:"text-delta",id:String($.index),delta:$.delta.content});return}case"input_json_delta":{let he=E[$.index],W=$.delta.partial_json;if(W.length===0)return;if(P){if(he?.type!=="text")return;V.enqueue({type:"text-delta",id:String($.index),delta:W})}else{if(he?.type!=="tool-call")return;he.firstDelta&&he.providerToolInputType!=null&&(W=`{"type": "${he.providerToolInputType}",${W.substring(1)}`),V.enqueue({type:"tool-input-delta",id:he.toolCallId,delta:W}),he.input+=W,he.firstDelta=!1}return}case"citations_delta":{let he=$.delta.citation,W=E[$.index];W?.type==="text"&&he.type==="web_search_result_location"&&W.citations.push(he);let Ee=na(he,u,fe);Ee&&V.enqueue(Ee);return}default:{let he=b;throw new Error(`Unsupported delta type: ${he}`)}}}case"message_start":{if(j){if(Y===$.message.id)return;ne=!0,V.enqueue({type:"error",error:new yh({data:$,message:`Received message_start for message ${JSON.stringify($.message.id)} while message ${JSON.stringify(Y)} is still open.`})});return}if(j=!0,Y=$.message.id,O.input_tokens=$.message.usage.input_tokens,O.cache_read_input_tokens=(re=$.message.usage.cache_read_input_tokens)!=null?re:0,O.cache_creation_input_tokens=(k=$.message.usage.cache_creation_input_tokens)!=null?k:0,J={...$.message.usage},$.message.input_transformations!=null&&(v=$.message.input_transformations),$.message.container!=null&&(T={expiresAt:$.message.container.expires_at,id:$.message.container.id,skills:null}),$.message.stop_reason!=null&&(U={unified:vi({finishReason:$.message.stop_reason,isJsonResponseFromTool:P}),raw:$.message.stop_reason}),V.enqueue({type:"response-metadata",id:(X=$.message.id)!=null?X:void 0,modelId:(H=$.message.model)!=null?H:void 0}),$.message.content!=null)for(let b=0;b<$.message.content.length;b++){let he=$.message.content[b];if(he.type==="tool_use"){let W=Ni(he.caller);V.enqueue({type:"tool-input-start",id:he.id,toolName:he.name});let Ee=JSON.stringify((Z=he.input)!=null?Z:{});V.enqueue({type:"tool-input-delta",id:he.id,delta:Ee}),V.enqueue({type:"tool-input-end",id:he.id}),V.enqueue({type:"tool-call",toolCallId:he.id,toolName:he.name,input:Ee,...W&&{providerMetadata:{anthropic:{caller:W}}}})}}return}case"message_delta":{$.usage.input_tokens!=null&&O.input_tokens!==$.usage.input_tokens&&(O.input_tokens=$.usage.input_tokens),O.output_tokens=$.usage.output_tokens,$.usage.output_tokens_details!=null&&(O.output_tokens_details=$.usage.output_tokens_details),$.usage.cache_read_input_tokens!=null&&(O.cache_read_input_tokens=$.usage.cache_read_input_tokens),$.usage.cache_creation_input_tokens!=null&&(O.cache_creation_input_tokens=$.usage.cache_creation_input_tokens),$.usage.iterations!=null&&(O.iterations=$.usage.iterations),U={unified:vi({finishReason:$.delta.stop_reason,isJsonResponseFromTool:P}),raw:(ie=$.delta.stop_reason)!=null?ie:void 0},R=(ee=$.delta.stop_sequence)!=null?ee:null,I=su($.delta.stop_details),T=$.delta.container!=null?{expiresAt:$.delta.container.expires_at,id:$.delta.container.id,skills:(Ye=(B=$.delta.container.skills)==null?void 0:B.map(b=>({type:b.type,skillId:b.skill_id,version:b.version})))!=null?Ye:null}:null,$.context_management&&(_=nu($.context_management)),$.input_transformations!=null&&(v=$.input_transformations),J={...J,...$.usage};return}case"message_stop":{j=!1,Y=void 0;let b={usage:J??null,stopSequence:R,...I!=null?{stopDetails:I}:{},...v!=null?{inputTransformations:v}:{},iterations:O.iterations?O.iterations.map(W=>({type:W.type,...W.model!=null?{model:W.model}:{},inputTokens:W.input_tokens,outputTokens:W.output_tokens,...W.cache_creation_input_tokens?{cacheCreationInputTokens:W.cache_creation_input_tokens}:{},...W.cache_read_input_tokens?{cacheReadInputTokens:W.cache_read_input_tokens}:{}})):null,container:T,contextManagement:_},he={anthropic:b};p&&f!=="anthropic"&&(he[f]=b),V.enqueue({type:"finish",finishReason:U,usage:oa({usage:O,rawUsage:J}),providerMetadata:he});return}case"error":{V.enqueue({type:"error",error:Mw($.error)});return}default:{let b=$;throw new Error(`Unsupported chunk type: ${b}`)}}}})),[N,le]=ae.tee(),S=N.getReader();try{await S.read();let L=await S.read();if(((o=L.value)==null?void 0:o.type)==="raw"&&(L=await S.read()),((n=L.value)==null?void 0:n.type)==="error"){let V=L.value.error;throw lc(V)?new Uh({message:V.message,url:h,requestBodyValues:r,statusCode:(s=V.statusCode)!=null?s:500,responseHeaders:w,responseBody:JSON.stringify(V.data),isRetryable:(i=V.isRetryable)!=null?i:!1}):new Error("Expected a normalized Anthropic stream error")}}finally{S.cancel().catch(()=>{}),S.releaseLock()}return{stream:le,request:{body:r},response:{headers:w}}}};function _w(e){return e.includes("claude-opus-5")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!0,supportsXhighEffort:!0,rejectsThinkingDisabledAboveHighEffort:!0,isKnownModel:!0}:e.includes("claude-opus-4-8")||e.includes("claude-opus-4-7")||e.includes("claude-fable-5")||e.includes("claude-sonnet-5")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!0,supportsXhighEffort:!0,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-sonnet-4-6")||e.includes("claude-opus-4-6")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-sonnet-4-5")||e.includes("claude-opus-4-5")||e.includes("claude-haiku-4-5")?{maxOutputTokens:64e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-opus-4-1")?{maxOutputTokens:32e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:/claude-sonnet-4(?:-|@)/.test(e)?{maxOutputTokens:64e3,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:/claude-opus-4(?:-|@)/.test(e)?{maxOutputTokens:32e3,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-3-haiku")?{maxOutputTokens:4096,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:/claude-(?:instant(?:-|$)|v?2(?=$|[-.:])|3(?=$|[-.]))/.test(e)?{maxOutputTokens:4096,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!1}:e.includes("claude-")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!0,supportsXhighEffort:!0,rejectsThinkingDisabledAboveHighEffort:!0,isKnownModel:!1}:{maxOutputTokens:4096,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!1}}function ou(e){if(!e)return!1;let t=!1,o=!1;for(let n of e){if("type"in n&&(n.type==="web_fetch_20260209"||n.type==="web_search_20260209")){t=!0;continue}if("type"in n&&(n.type==="code_execution_20250522"||n.type==="code_execution_20250825"||n.type==="code_execution_20260120")){o=!0;break}}return t&&!o}function bw({reasoning:e,supportsAdaptiveThinking:t,supportsXhighEffort:o,maxOutputTokensForModel:n,warnings:s}){if(!jr(e))return;if(e==="none")return{thinking:{type:"disabled"}};if(t){let r=Ic({reasoning:e,effortMap:{minimal:"low",low:"low",medium:"medium",high:"high",xhigh:o?"xhigh":"max"},warnings:s});return{thinking:{type:"adaptive",display:"summarized"},effort:r}}let i=Oc({reasoning:e,maxOutputTokens:n,maxReasoningBudget:n,warnings:s});if(i!=null)return{thinking:{type:"enabled",budgetTokens:i}}}function nu(e){return e?{appliedEdits:e.applied_edits.map(t=>{switch(t.type){case"clear_tool_uses_20250919":return{type:t.type,clearedToolUses:t.cleared_tool_uses,clearedInputTokens:t.cleared_input_tokens};case"clear_thinking_20251015":return{type:t.type,clearedThinkingTurns:t.cleared_thinking_turns,clearedInputTokens:t.cleared_input_tokens};case"compact_20260112":return{type:t.type}}}).filter(t=>t!==void 0)}:null}function su(e){if(e!=null)return{type:e.type,...e.category!=null?{category:e.category}:{},...e.explanation!=null?{explanation:e.explanation}:{},...e.recommended_model!=null?{recommendedModel:e.recommended_model}:{}}}var vw=/^[A-Za-z0-9_-]{1,64}$/,iu=ta.pick({anthropicBeta:!0}),Ou=()=>ge.object({id:ge.string(),type:ge.literal("message_batch"),processing_status:ge.string(),request_counts:ge.object({processing:ge.number(),succeeded:ge.number(),errored:ge.number(),canceled:ge.number(),expired:ge.number()}),created_at:ge.string(),expires_at:ge.string(),archived_at:ge.string().nullish(),cancel_initiated_at:ge.string().nullish(),ended_at:ge.string().nullish(),results_url:ge.string().nullish()}),qr=z(()=>K(Ou())),Nw=z(()=>K(ge.object({data:ge.array(Ou()),has_more:ge.boolean(),last_id:ge.string().nullish()}))),Pw=new Set(["advisor_tool_result","bash_code_execution_tool_result","code_execution_tool_result","compaction","container_upload","fallback","mcp_tool_result","mcp_tool_use","redacted_thinking","server_tool_use","text","text_editor_code_execution_tool_result","thinking","tool_search_tool_result","tool_use","web_fetch_tool_result","web_search_tool_result"]),Rw=z(()=>K(ge.discriminatedUnion("type",[ge.object({type:ge.literal("succeeded"),message:ge.unknown()}),ge.object({type:ge.literal("errored"),error:ge.object({type:ge.literal("error"),error:ge.object({type:ge.string(),message:ge.string()}),request_id:ge.string().nullish()})}),ge.object({type:ge.literal("canceled")}),ge.object({type:ge.literal("expired")})]))),xw=z(()=>K(ge.object({custom_id:ge.string(),result:ge.unknown()})));function Jw(e){for(let t of e){let o=t.type;if(o!=="text")throw new ts({functionality:`batch request type: ${o}`,message:`The Anthropic Message Batches API does not support batch requests with type "${o}".`})}}var kw=class{constructor(e){this.options=e,this.specificationVersion="v4";var t;this.provider=e.provider,this.supportedUrls=e.supportedUrls,this.generateId=(t=e.config.generateId)!=null?t:St}async doStartBatch({requests:e,providerOptions:t,headers:o,abortSignal:n,webhookUrl:s}){var i,r,l,a;Jw(e),Gw(e);let c=new Set(await ru({provider:this.options.config.provider,providerOptions:t})),d=new Set(c),f=[],p=s==null?[]:[{warning:{type:"unsupported",feature:"webhookUrl",details:"The Anthropic Message Batches API does not support completion webhooks."}}];for(let g of e){if((await ru({provider:this.options.config.provider,providerOptions:g.options.providerOptions})).length>0)throw new ts({functionality:"per-request providerOptions.anthropic.anthropicBeta",message:`Anthropic Message Batches do not support per-request betas (request "${g.id}"). Set providerOptions.anthropic.anthropicBeta on startBatch instead.`});let w=await Iu.prepareRequest({modelId:g.modelId,config:this.options.config,options:{...g.options,stream:!1,userSuppliedBetas:new Set(c)}});if(w.usesJsonResponseTool)throw new ts({functionality:"batch responseFormat JSON-tool fallback",message:`Anthropic Message Batches cannot decode the JSON-tool structured-output fallback (request "${g.id}") because batch results are retrieved independently of the start call. Use a model that supports native output_format structured outputs.`});let y=(i=g.options.tools)==null?void 0:i.find(O=>O.type==="provider"&&w.toolNameMapping.toProviderToolName(O.name)!==O.name);if(y!=null)throw new ts({functionality:"aliased provider tool names in batches",message:`Anthropic Message Batches cannot restore the custom provider-tool name "${y.name}" when results are retrieved independently of the start call (request "${g.id}"). Use the provider's canonical tool name.`});let U=(a=(l=(r=this.options.config).transformRequestBody)==null?void 0:l.call(r,w.args,w.betas))!=null?a:w.args;Sw({body:U,requestId:g.id}),f.push({custom_id:g.id,params:U});for(let O of w.betas)d.add(O);for(let O of w.warnings)p.push({requestId:g.id,warning:O})}let{value:u}=await et({url:this.getBatchUrl(""),headers:await this.getStartBatchHeaders({betas:d,headers:o}),body:{requests:f},failedResponseHandler:_o,successfulResponseHandler:ke(qr),abortSignal:n,fetch:this.options.config.fetch});return{batchId:u.id,..._i(u),warnings:p}}async doGetBatchStatus(e){return _i(await this.retrieveBatch(e))}async doCancelBatch(e){return await et({url:this.getBatchUrl(`/${encodeURIComponent(e.batchId)}/cancel`),headers:await this.getBatchHeaders(e.headers),body:{},failedResponseHandler:_o,successfulResponseHandler:ke(qr),abortSignal:e.abortSignal,fetch:this.options.config.fetch}),{}}async doListBatches(e){let t=new URL(this.getBatchUrl(""));e.limit!=null&&t.searchParams.set("limit",String(e.limit)),e.cursor!=null&&t.searchParams.set("after_id",e.cursor);let{value:o}=await Wn({url:t.toString(),validateUrl:!1,headers:await this.getBatchHeaders(e.headers),failedResponseHandler:_o,successfulResponseHandler:ke(Nw),abortSignal:e.abortSignal,fetch:this.options.config.fetch});return{batches:o.data.map(n=>({batchId:n.id,..._i(n)})),...o.has_more&&o.last_id!=null?{nextCursor:o.last_id}:{}}}async doGetBatchResults(e){let t=await this.retrieveBatch(e);if(_i(t).status==="pending")throw new Pi({argument:"batchId",message:`Anthropic batch "${e.batchId}" is not complete.`});if(t.archived_at!=null)throw new Pi({argument:"batchId",message:`Anthropic batch "${e.batchId}" results are no longer available.`});if(t.results_url==null)throw new Lw({data:t,message:`Anthropic batch "${e.batchId}" completed without batch output.`});let{value:o}=await Wn({url:t.results_url,validateUrl:!0,credentialedOrigin:this.options.config.baseURL,trustedOrigin:this.options.config.baseURL,headers:await this.getBatchHeaders(e.headers),failedResponseHandler:_o,successfulResponseHandler:kc(xw),abortSignal:e.abortSignal,fetch:this.options.config.fetch});return sc(this.iterateBatchResults(o))}async retrieveBatch(e){let{value:t}=await Wn({url:this.getBatchUrl(`/${encodeURIComponent(e.batchId)}`),validateUrl:!1,headers:await this.getBatchHeaders(e.headers),failedResponseHandler:_o,successfulResponseHandler:ke(qr),abortSignal:e.abortSignal,fetch:this.options.config.fetch});return t}async*iterateBatchResults(e){for await(let t of e)yield await $w(t,this.generateId)}getBatchUrl(e){return`${this.options.config.baseURL}/messages/batches${e}`}async getStartBatchHeaders({betas:e,headers:t}){return je(Ls(await this.getBatchHeaders(t)),{"anthropic-beta":e.size>0?Array.from(e).join(","):void 0})}async getBatchHeaders(e){return je(this.options.config.headers?await Se(this.options.config.headers):void 0,e)}};async function ru({provider:e,providerOptions:t}){var o;let n=e.split(".")[0],s=await Ge({provider:"anthropic",providerOptions:t,schema:iu}),i=n!=="anthropic"?await Ge({provider:n,providerOptions:t,schema:iu}):void 0;return(o=Object.assign({},s??{},i??{}).anthropicBeta)!=null?o:[]}function Gw(e){let t=new Set;for(let o of e){if(!vw.test(o.id))throw new Pi({argument:"requests",message:`Anthropic batch request ID "${o.id}" must match ^[A-Za-z0-9_-]{1,64}$.`});if(t.has(o.id))throw new Pi({argument:"requests",message:`Anthropic batch request IDs must be unique; duplicate ID "${o.id}".`});t.add(o.id)}}function Sw({body:e,requestId:t}){if(e.speed!=null)throw new ts({functionality:"providerOptions.anthropic.speed",message:`Anthropic Message Batches do not support speed (request "${t}").`});if(Array.isArray(e.fallbacks)&&e.fallbacks.some(o=>o!=null&&typeof o=="object"&&"speed"in o&&o.speed!=null))throw new ts({functionality:"providerOptions.anthropic.fallbacks[].speed",message:`Anthropic Message Batches do not support fallback speed (request "${t}").`})}function _i(e){var t,o,n,s;let i=Tw(e.request_counts);return{status:Vw(e.processing_status),rawStatus:e.processing_status,...i!=null?{requestCounts:i}:{},createdAt:e.created_at,expiresAt:e.expires_at,providerMetadata:{anthropic:{archivedAt:(t=e.archived_at)!=null?t:null,cancelInitiatedAt:(o=e.cancel_initiated_at)!=null?o:null,endedAt:(n=e.ended_at)!=null?n:null,requestCounts:e.request_counts,resultsUrl:(s=e.results_url)!=null?s:null}}}}function Vw(e){return e==="ended"?"completed":"pending"}function Tw(e){return _c({total:e.processing+e.succeeded+e.errored+e.canceled+e.expired,pending:e.processing,completed:e.succeeded,failed:e.errored+e.canceled+e.expired})}async function $w(e,t){let o=await tn({value:e.result,schema:Rw});if(!o.success)return au(e.custom_id);let n=o.value;switch(n.type){case"canceled":return{type:"text",id:e.custom_id,status:"cancelled"};case"expired":return{type:"text",id:e.custom_id,status:"expired"};case"errored":{let s=n.error.request_id;return{type:"text",id:e.custom_id,status:"failed",error:{message:n.error.error.message,type:n.error.error.type},...s!=null?{providerMetadata:{anthropic:{requestId:s}}}:{}}}case"succeeded":{let s=await Qw(n.message);return s==null?au(e.custom_id):{type:"text",id:e.custom_id,status:"succeeded",result:jw(s,t)}}}}function au(e){return{type:"text",id:e,status:"failed",error:{message:"Anthropic returned an invalid Message batch result.",code:"invalid_response"}}}async function Qw(e){let t=await tn({value:e,schema:Li});if(t.success)return t.value;if(!Ns(e)||!Array.isArray(e.content))return;let o=[];for(let s of e.content){let i=await tn({value:{...e,content:[s]},schema:Li});if(i.success){let[r]=i.value.content;r!=null&&o.push(r)}else if(!Ns(s)||typeof s.type!="string"||Pw.has(s.type))return}let n=await tn({value:{...e,content:o},schema:Li});return n.success?n.value:void 0}function jw(e,t){var o,n,s,i,r,l,a,c;let d=[],f={},p={};for(let u of e.content)switch(u.type){case"text":let g=u.citations;d.push({type:"text",text:u.text,...g!=null&&g.length>0&&{providerMetadata:{anthropic:{citations:g}}}});for(let h of(o=u.citations)!=null?o:[]){let w=na(h,[],t);w!=null&&d.push(w)}break;case"thinking":d.push({type:"reasoning",text:u.thinking,providerMetadata:{anthropic:{signature:u.signature}}});break;case"redacted_thinking":d.push({type:"reasoning",text:"",providerMetadata:{anthropic:{redactedData:u.data}}});break;case"container_upload":d.push({type:"custom",kind:"anthropic.container_upload",providerMetadata:{anthropic:{fileId:u.file_id}}});break;case"compaction":d.push({type:"text",text:u.content,providerMetadata:{anthropic:{type:"compaction"}}});break;case"tool_use":d.push({type:"tool-call",toolCallId:u.id,toolName:u.name,input:JSON.stringify(u.input),...bi(u.caller)});break;case"server_tool_use":{let h=u.name==="bash_code_execution"||u.name==="text_editor_code_execution",w=h||u.name==="code_execution",y=h?"code_execution":u.name;(u.name==="tool_search_tool_bm25"||u.name==="tool_search_tool_regex")&&(p[u.id]=u.name),d.push({type:"tool-call",toolCallId:u.id,toolName:y,input:JSON.stringify(h?{type:u.name,...(n=u.input)!=null?n:{}}:u.name==="code_execution"&&u.input!=null&&"code"in u.input&&!("type"in u.input)?{type:"programmatic-tool-call",...u.input}:u.input),providerExecuted:!0,...w?{dynamic:!0}:{},...bi(u.caller)});break}case"mcp_tool_use":{let h={type:"tool-call",toolCallId:u.id,toolName:u.name,input:JSON.stringify(u.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{serverName:u.server_name,type:"mcp-tool-use"}}};f[u.id]=h,d.push(h);break}case"mcp_tool_result":{let h=f[u.tool_use_id];d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:(s=h?.toolName)!=null?s:"mcp",isError:u.is_error,result:u.content,dynamic:!0,...h?.providerMetadata!=null&&{providerMetadata:h.providerMetadata}});break}case"web_fetch_tool_result":d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"web_fetch",...u.content.type==="web_fetch_tool_result_error"?{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}}:{result:{content:{citations:u.content.content.citations,source:{data:u.content.content.source.data,mediaType:u.content.content.source.media_type,type:u.content.content.source.type},title:u.content.content.title,type:u.content.content.type},retrievedAt:u.content.retrieved_at,type:u.content.type,url:u.content.url}},...bi(u.caller)});break;case"web_search_tool_result":if(d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"web_search",...Array.isArray(u.content)?{result:u.content.map(h=>{var w;return{encryptedContent:h.encrypted_content,pageAge:(w=h.page_age)!=null?w:null,...h.title!=null?{title:h.title}:{},type:h.type,url:h.url}})}:{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}},...bi(u.caller)}),Array.isArray(u.content))for(let h of u.content)d.push({type:"source",sourceType:"url",id:t(),url:h.url,...h.title!=null?{title:h.title}:{},providerMetadata:{anthropic:{pageAge:(i=h.page_age)!=null?i:null}}});break;case"code_execution_tool_result":d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"code_execution",...u.content.type==="code_execution_tool_result_error"?{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}}:{result:u.content}});break;case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"code_execution",result:u.content});break;case"tool_search_tool_result":{let h=(r=p[u.tool_use_id])!=null?r:"tool_search_tool_regex";d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:h,...u.content.type==="tool_search_tool_result_error"?{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}}:{result:u.content.tool_references.map(w=>({toolName:w.tool_name,type:w.type}))}});break}case"advisor_tool_result":u.content.type==="advisor_result"?d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"advisor",result:{type:u.content.type,text:u.content.text,...u.content.stop_reason!=null?{stopReason:u.content.stop_reason}:{}}}):u.content.type==="advisor_redacted_result"?d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"advisor",result:{type:u.content.type,encryptedContent:u.content.encrypted_content,...u.content.stop_reason!=null?{stopReason:u.content.stop_reason}:{}}}):d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"advisor",isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}});break;case"fallback":break}return{content:d,finishReason:{unified:vi({finishReason:e.stop_reason}),raw:(l=e.stop_reason)!=null?l:void 0},usage:oa({usage:e.usage}),response:{id:(a=e.id)!=null?a:void 0,modelId:(c=e.model)!=null?c:void 0},warnings:[],providerMetadata:{anthropic:Bw(e)}}}function bi(e){return e==null?{}:{providerMetadata:{anthropic:{caller:{type:e.type,toolId:e.tool_id}}}}}function Bw(e){var t,o,n;let s=Hw(e.stop_details);return{usage:e.usage,stopSequence:(t=e.stop_sequence)!=null?t:null,...s!=null?{stopDetails:s}:{},...e.input_transformations!=null?{inputTransformations:e.input_transformations}:{},iterations:e.usage.iterations?e.usage.iterations.map(i=>({type:i.type,...i.model!=null?{model:i.model}:{},inputTokens:i.input_tokens,outputTokens:i.output_tokens,...i.cache_creation_input_tokens?{cacheCreationInputTokens:i.cache_creation_input_tokens}:{},...i.cache_read_input_tokens?{cacheReadInputTokens:i.cache_read_input_tokens}:{}})):null,container:e.container?{expiresAt:e.container.expires_at,id:e.container.id,skills:(n=(o=e.container.skills)==null?void 0:o.map(i=>({type:i.type,skillId:i.skill_id,version:i.version})))!=null?n:null}:null,contextManagement:Kw(e.context_management)}}function Kw(e){return e?{appliedEdits:e.applied_edits.map(t=>{switch(t.type){case"clear_tool_uses_20250919":return{type:t.type,clearedToolUses:t.cleared_tool_uses,clearedInputTokens:t.cleared_input_tokens};case"clear_thinking_20251015":return{type:t.type,clearedThinkingTurns:t.cleared_thinking_turns,clearedInputTokens:t.cleared_input_tokens};case"compact_20260112":return{type:t.type}}})}:null}function Hw(e){if(e!=null)return{type:e.type,...e.category!=null?{category:e.category}:{},...e.explanation!=null?{explanation:e.explanation}:{},...e.recommended_model!=null?{recommendedModel:e.recommended_model}:{}}}var zw=z(()=>K(Wr.object({command:Wr.string(),restart:Wr.boolean().optional()}))),lu=De({id:"anthropic.bash_20241022",inputSchema:zw});function Cw(e={}){let{execute:t,...o}=e;return lu(t===void 0?{...o,execute:async({command:n},{abortSignal:s,experimental_sandbox:i})=>{if(!i)throw new Error("Sandbox session is not available");return await i.run({command:n,abortSignal:s})}}:{...o,...t===null?{}:{execute:t}})}var Yw=z(()=>K(Xr.object({command:Xr.string(),restart:Xr.boolean().optional()}))),cu=De({id:"anthropic.bash_20250124",inputSchema:Yw});function Dw(e={}){let{execute:t,...o}=e;return cu(t===void 0?{...o,execute:async({command:n},{abortSignal:s,experimental_sandbox:i})=>{if(!i)throw new Error("Sandbox session is not available");return await i.run({command:n,abortSignal:s})}}:{...o,...t===null?{}:{execute:t}})}var Fw=z(()=>K(Gs.object({action:Gs.enum(["key","type","mouse_move","left_click","left_click_drag","right_click","middle_click","double_click","screenshot","cursor_position"]),coordinate:Gs.array(Gs.number().int()).optional(),text:Gs.string().optional()}))),Zw=De({id:"anthropic.computer_20241022",inputSchema:Fw}),qw=z(()=>K(Ht.object({action:Ht.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot"]),coordinate:Ht.tuple([Ht.number().int(),Ht.number().int()]).optional(),duration:Ht.number().optional(),scroll_amount:Ht.number().optional(),scroll_direction:Ht.enum(["up","down","left","right"]).optional(),start_coordinate:Ht.tuple([Ht.number().int(),Ht.number().int()]).optional(),text:Ht.string().optional()}))),Ww=De({id:"anthropic.computer_20250124",inputSchema:qw}),Xw=z(()=>K(at.object({action:at.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot","zoom"]),coordinate:at.tuple([at.number().int(),at.number().int()]).optional(),duration:at.number().optional(),region:at.tuple([at.number().int(),at.number().int(),at.number().int(),at.number().int()]).optional(),scroll_amount:at.number().optional(),scroll_direction:at.enum(["up","down","left","right"]).optional(),start_coordinate:at.tuple([at.number().int(),at.number().int()]).optional(),text:at.string().optional()}))),eE=De({id:"anthropic.computer_20251124",inputSchema:Xw}),tE=z(()=>K(ve.discriminatedUnion("command",[ve.object({command:ve.literal("view"),path:ve.string(),view_range:ve.tuple([ve.number(),ve.number()]).optional()}),ve.object({command:ve.literal("create"),path:ve.string(),file_text:ve.string()}),ve.object({command:ve.literal("str_replace"),path:ve.string(),old_str:ve.string(),new_str:ve.string()}),ve.object({command:ve.literal("insert"),path:ve.string(),insert_line:ve.number(),insert_text:ve.string()}),ve.object({command:ve.literal("delete"),path:ve.string()}),ve.object({command:ve.literal("rename"),old_path:ve.string(),new_path:ve.string()})]))),oE=De({id:"anthropic.memory_20250818",inputSchema:tE}),nE=z(()=>K(Mo.object({command:Mo.enum(["view","create","str_replace","insert","undo_edit"]),path:Mo.string(),file_text:Mo.string().optional(),insert_line:Mo.number().int().optional(),new_str:Mo.string().optional(),insert_text:Mo.string().optional(),old_str:Mo.string().optional(),view_range:Mo.array(Mo.number().int()).optional()}))),sE=De({id:"anthropic.text_editor_20241022",inputSchema:nE}),iE=z(()=>K(Io.object({command:Io.enum(["view","create","str_replace","insert","undo_edit"]),path:Io.string(),file_text:Io.string().optional(),insert_line:Io.number().int().optional(),new_str:Io.string().optional(),insert_text:Io.string().optional(),old_str:Io.string().optional(),view_range:Io.array(Io.number().int()).optional()}))),rE=De({id:"anthropic.text_editor_20250124",inputSchema:iE}),aE=z(()=>K(Oo.object({command:Oo.enum(["view","create","str_replace","insert"]),path:Oo.string(),file_text:Oo.string().optional(),insert_line:Oo.number().int().optional(),new_str:Oo.string().optional(),insert_text:Oo.string().optional(),old_str:Oo.string().optional(),view_range:Oo.array(Oo.number().int()).optional()}))),lE=De({id:"anthropic.text_editor_20250429",inputSchema:aE}),cE=z(()=>K(Ln.array(Ln.object({type:Ln.literal("tool_reference"),toolName:Ln.string()})))),uE=z(()=>K(Ln.object({query:Ln.string(),limit:Ln.number().optional()}))),dE=Fe({id:"anthropic.tool_search_bm25_20251119",inputSchema:uE,outputSchema:cE,supportsDeferredResults:!0}),pE=(e={})=>dE(e),mE={advisor_20260301:Nh,bash_20241022:Cw,bash_20250124:Dw,codeExecution_20250522:ow,codeExecution_20250825:iw,codeExecution_20260120:lw,computer_20241022:Zw,computer_20250124:Ww,computer_20251124:eE,memory_20250818:oE,textEditor_20241022:sE,textEditor_20250124:rE,textEditor_20250429:lE,textEditor_20250728:Jh,webFetch_20250910:qh,webFetch_20260209:Yh,webSearch_20250305:Bh,webSearch_20260209:Th,toolSearchRegex_20251119:dw,toolSearchBm25_20251119:pE},fE=z(()=>K(tt.object({id:tt.string(),display_title:tt.string().nullish(),name:tt.string().nullish(),description:tt.string().nullish(),latest_version:tt.string().nullish(),source:tt.string(),created_at:tt.string(),updated_at:tt.string()}))),RO=z(()=>K(tt.object({data:tt.array(tt.object({version:tt.string()}))}))),gE=z(()=>K(tt.object({type:tt.string(),skill_id:tt.string(),name:tt.string().nullish(),description:tt.string().nullish()})));function uu(e){let t=encodeURIComponent(e);return t==="."?"%252E":t===".."?"%252E%252E":t}var hE=class{constructor(e){this.config=e,this.specificationVersion="v4"}get provider(){return this.config.provider}async getHeaders(){return je(await Se(this.config.headers),{"anthropic-beta":"skills-2025-10-02"})}async fetchVersionMetadata({skillId:e,version:t,headers:o}){let{value:n}=await Wn({url:`${this.config.baseURL}/skills/${uu(e)}/versions/${uu(t)}`,validateUrl:!1,headers:o,failedResponseHandler:_o,successfulResponseHandler:ke(gE),fetch:this.config.fetch});return{...n.name!=null?{name:n.name}:{},...n.description!=null?{description:n.description}:{}}}async uploadSkill(e){var t,o;let n=[],s=new FormData;e.displayTitle!=null&&s.append("display_title",e.displayTitle);for(let d of e.files){let f=Ei(d.data);s.append("files[]",new Blob([f]),d.path)}let i=await this.getHeaders(),{value:r}=await Ai({url:`${this.config.baseURL}/skills`,headers:i,formData:s,failedResponseHandler:_o,successfulResponseHandler:ke(fE),fetch:this.config.fetch}),l=r.latest_version!=null?await this.fetchVersionMetadata({skillId:r.id,version:r.latest_version,headers:i}):{},a=(t=l.name)!=null?t:r.name,c=(o=l.description)!=null?o:r.description;return{providerReference:{anthropic:r.id},...r.display_title!=null?{displayTitle:r.display_title}:{},...a!=null?{name:a}:{},...c!=null?{description:c}:{},...r.latest_version!=null?{latestVersion:r.latest_version}:{},providerMetadata:{anthropic:{...r.source!=null?{source:r.source}:{},...r.created_at!=null?{createdAt:r.created_at}:{},...r.updated_at!=null?{updatedAt:r.updated_at}:{}}},warnings:n}}},wE="4.0.53",_u="https://api.anthropic.com",bu=`${_u}/v1`;function EE(e){let t=Rs(Vc(e));return t===_u?bu:t}function ra(e={}){var t,o,n;let s=(t=EE(Xn({settingValue:e.baseURL,environmentVariableName:"ANTHROPIC_BASE_URL"})))!=null?t:bu,i=(o=e.name)!=null?o:"anthropic.messages",r={"image/*":[/^https?:\/\/.*$/],"application/pdf":[/^https?:\/\/.*$/]};if(e.apiKey&&e.authToken)throw new gh({argument:"apiKey/authToken",message:"Both apiKey and authToken were provided. Please use only one authentication method."});let l=()=>{let u=e.authToken?{Authorization:`Bearer ${e.authToken}`}:{"x-api-key":Mc({apiKey:e.apiKey,environmentVariableName:"ANTHROPIC_API_KEY",description:"Anthropic"})};return qn({"anthropic-version":"2023-06-01",...u,...e.headers},`ai-sdk/anthropic/${wE}`)},a={provider:i,baseURL:s,headers:l,fetch:e.fetch,generateId:(n=e.generateId)!=null?n:St,supportedUrls:()=>r},c=u=>new Iu(u,a),d=()=>new kw({provider:`${i.replace(/\.messages$/,"")}.batch`,config:a,supportedUrls:r}),f=()=>new hE({provider:`${i.replace(".messages","")}.skills`,baseURL:s,headers:l,fetch:e.fetch}),p=function(u){if(new.target)throw new Error("The Anthropic model function cannot be called with the new keyword.");return c(u)};return p.specificationVersion="v4",p.languageModel=c,p.chat=c,p.messages=c,p.experimental_batch=d,p.embeddingModel=u=>{throw new Wc({modelId:u,modelType:"embeddingModel"})},p.textEmbeddingModel=p.embeddingModel,p.imageModel=u=>{throw new Wc({modelId:u,modelType:"imageModel"})},p.files=()=>new Eh({provider:i,baseURL:s,headers:l,fetch:e.fetch}),p.skills=f,p.tools=mE,p}var xO=ra();import{createGoogleGenerativeAI as _E}from"@ai-sdk/google";import{createOpenAICompatible as bE}from"@ai-sdk/openai-compatible";import{APICallError as ns}from"@ai-sdk/provider";import{z as we}from"zod";import{Agent as UE,ProxyAgent as yE}from"undici";var aa;function AE(){for(let e of["https_proxy","HTTPS_PROXY","http_proxy","HTTP_PROXY"]){let t=(process.env[e]??"").trim();if(t&&/^https?:\/\//i.test(t))return t}}function ME(){if(aa===void 0){let e=AE(),t={headersTimeout:0,bodyTimeout:0};aa=e?new yE({uri:e,...t}):new UE(t)}return aa}var os=(e,t)=>{let o=ME();return globalThis.fetch(e,{...t,...o?{dispatcher:o}:{}})};async function Ri(e,t,o=18e4,n={}){return os(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t),signal:AbortSignal.timeout(o)})}var OE=new IE({scopes:["https://www.googleapis.com/auth/cloud-platform"]});function Pu(){let e=process.env.GOOGLE_CLOUD_PROJECT?.trim();if(!e)throw new Error("GOOGLE_CLOUD_PROJECT is required for official Vertex AI");return e}function Ru(e){let t=Lu(e);for(let o of e.fallbacks??[])for(let n of Lu({...o,singleModel:!0}))t.some(s=>s.protocol===n.protocol&&s.baseUrl===n.baseUrl&&s.model===n.model)||t.push(n);return!e.singleModel&&process.env.SCRIPTCTL_REVIEW_SINGLE_MODEL!=="1"&&(!e.protocol||e.protocol.startsWith("google"))&&t.push({provider:"doubao",protocol:"openai-compatible",model:process.env.ARK_MODEL?.trim()||"ep-20260721150136-98dj9",apiKey:process.env.ARK_API_KEY?.trim()??"",baseUrl:"https://ark.cn-beijing.volces.com/api/v3",vertex:!1,maxAttempts:3}),t}function Lu(e){if(e.protocol==="anthropic"){let l=(e.baseUrl??"https://api.anthropic.com").replace(/\/+$/,"").replace(/\/v1$/,"");return[{provider:e.provider??"anthropic",protocol:"anthropic",model:e.model,apiKey:e.apiKey,baseUrl:`${l}/v1`,vertex:!1,maxAttempts:e.maxAttempts??3}]}if(e.protocol==="openai-compatible"){if(!e.baseUrl)throw new Error(`OpenAI-compatible profile for ${e.model} has no baseUrl`);return[{provider:e.provider??"gateway",protocol:"openai-compatible",model:e.model,apiKey:e.apiKey,baseUrl:e.baseUrl.replace(/\/+$/,""),vertex:!1,maxAttempts:e.maxAttempts??3}]}let t=e.singleModel||process.env.SCRIPTCTL_REVIEW_SINGLE_MODEL==="1",o=e.model.slice(0,e.model.lastIndexOf("/")+1),n=t?[e.model]:[...new Set([e.model,...["gemini-3.8-flash","gemini-3.7-flash","gemini-3.6-flash"].map(l=>o+l)])],s=!e.baseUrl,i=(e.baseUrl??`https://aiplatform.googleapis.com/v1/projects/${Pu()}/locations/global/publishers/google`).replace(/\/+$/,"");return n.map(l=>({provider:e.provider??"google-gemini",protocol:s?"google-vertex":"google-gemini",model:l,apiKey:e.apiKey,vertex:s,baseUrl:s||/\/v1(beta)?$/.test(i)?i:`${i}/v1beta`,maxAttempts:e.maxAttempts??3,...e.thinking?{thinking:e.thinking}:{},...e.responseSchemaField?{responseSchemaField:e.responseSchemaField}:{}}))}var vu=18e4,LE=15*6e4,Nu=new Map,xi=class extends ns{};async function vE(e,t){let o=new AbortController,n,s=()=>{clearTimeout(n),n=setTimeout(()=>o.abort(),vu)},i=t.abortSignal?AbortSignal.any([t.abortSignal,o.signal]):o.signal;s();try{return await NE(e,{...t,abortSignal:i},s)}catch(r){throw!o.signal.aborted||t.abortSignal?.aborted?r:new xi({message:`\u6A21\u578B\u6D41\u5F0F\u54CD\u5E94 ${vu/1e3} \u79D2\u6CA1\u6709\u65B0\u5185\u5BB9`,url:"",requestBodyValues:{},isRetryable:!1})}finally{clearTimeout(n)}}async function NE(e,t,o){let{stream:n,request:s,response:i}=await e.doStream(t),r=[],l=new Map,a=[],c={},d,f=n.getReader();for(let p=await f.read();!p.done;p=await f.read()){o();let u=p.value;if(u.type==="stream-start")a=u.warnings;else if(u.type==="response-metadata")c={id:u.id,timestamp:u.timestamp,modelId:u.modelId};else if(u.type==="text-start"||u.type==="reasoning-start"){let g={type:u.type==="text-start"?"text":"reasoning",text:"",providerMetadata:u.providerMetadata};l.set(u.id,g),r.push(g)}else if(u.type==="text-delta"||u.type==="reasoning-delta"||u.type==="text-end"||u.type==="reasoning-end"){let g=l.get(u.id);g&&"delta"in u&&g.type==="text"&&(g.text+=u.delta),g&&u.providerMetadata&&(g.providerMetadata=u.providerMetadata)}else if(u.type==="tool-call"||u.type==="tool-result"||u.type==="file"||u.type==="source")r.push(u);else if(u.type==="finish")d=u;else if(u.type==="error")throw u.error}if(!d)throw new ns({message:"\u6A21\u578B\u6D41\u5F0F\u54CD\u5E94\u6CA1\u6709\u6B63\u5E38\u7ED3\u675F",url:"",requestBodyValues:{},isRetryable:!0});return{content:r,finishReason:d.finishReason,usage:d.usage,providerMetadata:d.providerMetadata,request:s,response:{...c,headers:i?.headers},warnings:a}}function PE(e){let t=-1,o=-1;e.forEach((s,i)=>{s.role==="system"&&(t=i),s.role==="assistant"&&(o=i)});let n=e.findIndex(s=>s.role!=="system");return new Set([t,n,o-1,e.length-1].filter(s=>s>=0))}function RE(e){let t=PE(e.prompt);return{...e,prompt:e.prompt.map((o,n)=>t.has(n)?{...o,providerOptions:{...o.providerOptions,anthropic:{...o.providerOptions?.anthropic,cacheControl:{type:"ephemeral"}}}}:o)}}function xE(e,t){let o=e.providerOptions?.google??{},n={...o.thinkingConfig??{},includeThoughts:!0,...t?{thinkingLevel:t}:{}};return{...e,providerOptions:{...e.providerOptions,google:{...o,thinkingConfig:n}}}}function Ji(e,t,o){let n=0,s=Ru(e).filter(r=>r.vertex||r.apiKey),i=s.length>1;return s.map(r=>{let l=r.vertex?Fr({project:Pu(),location:"global",fetch:os})(r.model):r.protocol==="google-gemini"?_E({apiKey:r.apiKey,baseURL:r.baseUrl,fetch:os})(r.model):r.protocol==="anthropic"?ra({apiKey:r.apiKey,baseURL:r.baseUrl,fetch:os})(r.model):bE({name:r.provider,apiKey:r.apiKey,baseURL:r.baseUrl,fetch:os})(r.model),a=l.doGenerate.bind(l),c=r.protocol.startsWith("google")?f=>vE(l,xE(f,r.thinking)):r.protocol==="anthropic"?f=>a(RE(f)):a,d=`${r.provider}/${r.baseUrl}/${r.model}`;return l.doGenerate=async f=>{let p=`call:${++n}`;if(i&&(Nu.get(d)??0)>Date.now())throw new ns({message:`${r.model} \u521A\u624D\u6CA1\u6709\u54CD\u5E94\uFF0C\u6682\u65F6\u8DF3\u8FC7`,url:r.baseUrl,requestBodyValues:{},isRetryable:!1});try{let u=await c(f),g=u.usage;if(o?.({call_key:p,provider:r.provider,model:r.model,input_tokens:g.inputTokens.total??0,cached_input_tokens:g.inputTokens.cacheRead??0,output_tokens:g.outputTokens.total??0,reasoning_tokens:g.outputTokens.reasoning??0}),r.protocol.startsWith("google")&&(["content-filter","error"].includes(u.finishReason.unified)||["PROHIBITED_CONTENT","SAFETY","RECITATION","BLOCKLIST","MALFORMED_FUNCTION_CALL"].includes(u.finishReason.raw??"")))throw new ns({message:`Gemini finishReason=${u.finishReason.raw??u.finishReason.unified}`,url:`${r.baseUrl}/models/${r.model}:generateContent`,requestBodyValues:{},responseBody:JSON.stringify({finishReason:u.finishReason,content:u.content,providerMetadata:u.providerMetadata}),isRetryable:!1});if(!u.content.some(h=>h.type==="tool-call"||h.type==="text"&&h.text.trim()))throw new ns({message:"\u5BA1\u6838\u6A21\u578B\u8FD4\u56DE\u7A7A\u6B63\u6587\u4E14\u6CA1\u6709\u5DE5\u5177\u8C03\u7528\uFF0C\u5F53\u524D\u5BA1\u6838\u8BF7\u6C42\u5C1A\u672A\u5B8C\u6210",url:r.baseUrl,requestBodyValues:{},isRetryable:!1});return u}catch(u){throw u instanceof xi&&Nu.set(d,Date.now()+LE),t?.(r,u,{prompt:f.prompt,...ns.isInstance(u)&&u.responseBody?{responseBody:u.responseBody}:{}}),u}},{id:`${r.provider}/${r.model}`,model:l,maxRetries:r.maxAttempts-1}})}var JE=we.object({candidates:we.array(we.object({finishReason:we.string().optional(),content:we.object({parts:we.array(we.object({text:we.string().optional(),thought:we.boolean().optional()}))}).optional()})).optional(),promptFeedback:we.object({blockReason:we.string().optional()}).optional(),usageMetadata:we.object({promptTokenCount:we.number().optional(),cachedContentTokenCount:we.number().optional(),candidatesTokenCount:we.number().optional(),thoughtsTokenCount:we.number().optional()}).optional()}),kE=we.object({status:we.string().optional(),incomplete_details:we.object({reason:we.string().optional()}).nullish(),output:we.array(we.object({type:we.string(),content:we.array(we.object({type:we.string(),text:we.string().optional()})).optional()})).optional(),usage:we.object({input_tokens:we.number().optional(),output_tokens:we.number().optional(),input_tokens_details:we.object({cached_tokens:we.number().optional()}).optional(),output_tokens_details:we.object({reasoning_tokens:we.number().optional()}).optional()}).optional()}),vn=class extends Error{constructor(o,n){super(o);this.retryable=n}retryable},Nn=class extends Error{constructor(o,n){super(`All review model routes failed:
|
|
60
|
+
${n}`),t}function Uw(e){let t=ww.flatMap(o=>{let n=e[o];return n==null||n===!1?[]:`${yw(o)}: ${Aw(n)}`});return typeof e.format=="string"&&!Au.has(e.format)&&t.push(`format: ${e.format}`),t.length===0?void 0:`${t.join("; ")}.`}function yw(e){return e.replace(/[A-Z]/g,t=>` ${t.toLowerCase()}`)}function Aw(e){return typeof e=="string"?e:JSON.stringify(e)}function Mw(e){var t,o,n;let s=Iw(e.type);return ac({message:e.message,type:e.type,code:(t=e.code)!=null?t:void 0,statusCode:(o=e.statusCode)!=null?o:s.statusCode,isRetryable:(n=e.isRetryable)!=null?n:s.isRetryable,data:"data"in e?e.data:e})}function Iw(e){switch(e){case"api_error":return{statusCode:500,isRetryable:!0};case"overloaded_error":return{statusCode:529,isRetryable:!0};case"rate_limit_error":return{statusCode:429,isRetryable:!0};case"request_too_large":return{statusCode:413,isRetryable:!1};case"authentication_error":return{statusCode:401,isRetryable:!1};case"permission_error":return{statusCode:403,isRetryable:!1};case"not_found_error":return{statusCode:404,isRetryable:!1};case"billing_error":case"invalid_request_error":return{statusCode:400,isRetryable:!1};default:return{}}}function na(e,t,o){var n,s;if(e.type==="web_search_result_location")return{type:"source",sourceType:"url",id:o(),url:e.url,title:(n=e.title)!=null?n:void 0,providerMetadata:{anthropic:{citedText:e.cited_text,encryptedIndex:e.encrypted_index}}};if(e.type!=="page_location"&&e.type!=="char_location")return;let i=t[e.document_index];if(i)return{type:"source",sourceType:"document",id:o(),mediaType:i.mediaType,title:(s=e.document_title)!=null?s:i.title,filename:i.filename,providerMetadata:{anthropic:e.type==="page_location"?{citedText:e.cited_text,startPageNumber:e.start_page_number,endPageNumber:e.end_page_number}:{citedText:e.cited_text,startCharIndex:e.start_char_index,endCharIndex:e.end_char_index}}}}function Ni(e){return e==null?void 0:{type:e.type,toolId:"tool_id"in e?e.tool_id:void 0}}function Vt(e){let t=Ni(e);return t==null?{}:{providerMetadata:{anthropic:{caller:t}}}}function Ow(e){let t=e.indexOf(".");return t===-1?e:e.substring(0,t)}var Iu=class sa{constructor(t,o){this.specificationVersion="v4";var n;this.modelId=t,this.config=o,this.generateId=(n=o.generateId)!=null?n:St}static[Jt](t){return Kt({modelId:t.modelId,config:t.config})}static[kt](t){return new sa(t.modelId,t.config)}supportsUrl(t){return t.protocol==="https:"}get provider(){return this.config.provider}get supportedUrls(){var t,o,n;return(n=(o=(t=this.config).supportedUrls)==null?void 0:o.call(t))!=null?n:{}}static async prepareRequest({modelId:t,config:o,options:{userSuppliedBetas:n,prompt:s,maxOutputTokens:i,temperature:r,topP:l,topK:a,frequencyPenalty:c,presencePenalty:d,stopSequences:f,responseFormat:p,seed:u,tools:g,toolChoice:h,reasoning:w,providerOptions:y,stream:U}}){var O,E,A,M,_,J,R,I,v,T,P,j;let Y=[];c!=null&&Y.push({type:"unsupported",feature:"frequencyPenalty"}),d!=null&&Y.push({type:"unsupported",feature:"presencePenalty"}),u!=null&&Y.push({type:"unsupported",feature:"seed"}),r!=null&&r>1?(Y.push({type:"unsupported",feature:"temperature",details:`${r} exceeds anthropic maximum of 1.0. clamped to 1.0`}),r=1):r!=null&&r<0&&(Y.push({type:"unsupported",feature:"temperature",details:`${r} is below anthropic minimum of 0. clamped to 0`}),r=0),p?.type==="json"&&p.schema==null&&Y.push({type:"unsupported",feature:"responseFormat",details:"JSON response format requires a schema. The response format is ignored."});let ne=Ow(o.provider),se=await Ge({provider:"anthropic",providerOptions:y,schema:ta}),fe=ne!=="anthropic"?await Ge({provider:ne,providerOptions:y,schema:ta}):null,ae=fe!=null,N=Object.assign({},se??{},fe??{}),{maxOutputTokens:le,supportsStructuredOutput:S,supportsAdaptiveThinking:L,rejectsSamplingParameters:V,supportsXhighEffort:me,rejectsThinkingDisabledAboveHighEffort:D,isKnownModel:oe}=_w(t);!oe&&i==null&&Y.push({type:"compatibility",feature:"maxOutputTokens",details:`The model "${t}" is unknown. The max output tokens have been limited to ${le}. Set maxOutputTokens explicitly to override this limit.`}),V&&(r!=null&&(Y.push({type:"unsupported",feature:"temperature",details:`temperature is not supported by ${t} and will be ignored`}),r=void 0),a!=null&&(Y.push({type:"unsupported",feature:"topK",details:`topK is not supported by ${t} and will be ignored`}),a=void 0),l!=null&&(Y.push({type:"unsupported",feature:"topP",details:`topP is not supported by ${t} and will be ignored`}),l=void 0));let F=oe||t.includes("claude-"),re=((O=o.supportsNativeStructuredOutput)!=null?O:!0)&&S,k=((E=o.supportsStrictTools)!=null?E:!0)&&S,X=(A=N?.structuredOutputMode)!=null?A:"auto",H=X==="outputFormat"||X==="auto"&&re,Z=p?.type==="json"&&p.schema!=null&&!H?{type:"function",name:"json",description:"Respond with a JSON object.",inputSchema:p.schema}:void 0;Z!=null&&N?.disableParallelToolUse===!1&&Y.push({type:"unsupported",feature:"providerOptions.anthropic.disableParallelToolUse",details:"`disableParallelToolUse: false` is ignored when using the JSON response tool. Parallel tool use is disabled to ensure a single coherent JSON tool call."});let ie=N?.contextManagement,ee=new ia,B=ic({tools:g,providerToolNames:{"anthropic.code_execution_20250522":"code_execution","anthropic.code_execution_20250825":"code_execution","anthropic.code_execution_20260120":"code_execution","anthropic.computer_20241022":"computer","anthropic.computer_20250124":"computer","anthropic.text_editor_20241022":"str_replace_editor","anthropic.text_editor_20250124":"str_replace_editor","anthropic.text_editor_20250429":"str_replace_based_edit_tool","anthropic.text_editor_20250728":"str_replace_based_edit_tool","anthropic.bash_20241022":"bash","anthropic.bash_20250124":"bash","anthropic.memory_20250818":"memory","anthropic.web_search_20250305":"web_search","anthropic.web_search_20260209":"web_search","anthropic.web_fetch_20250910":"web_fetch","anthropic.web_fetch_20260209":"web_fetch","anthropic.tool_search_regex_20251119":"tool_search_tool_regex","anthropic.tool_search_bm25_20251119":"tool_search_tool_bm25","anthropic.advisor_20260301":"advisor"}}),{prompt:Ye,betas:$}=await mw({prompt:s,sendReasoning:(M=N?.sendReasoning)!=null?M:!0,warnings:Y,cacheControlValidator:ee,toolNameMapping:B});if(jr(w)&&N?.effort==null){let ce=bw({reasoning:w,supportsAdaptiveThinking:L,supportsXhighEffort:me,maxOutputTokensForModel:le,warnings:Y});ce!=null&&(N.thinking==null&&(N.thinking=ce.thinking),ce.effort!=null&&((_=N.thinking)==null?void 0:_.type)!=="disabled"&&(N.effort=ce.effort))}D&&((J=N?.thinking)==null?void 0:J.type)==="disabled"&&(N.effort==="xhigh"||N.effort==="max")&&(Y.push({type:"unsupported",feature:"providerOptions.anthropic.effort",details:`effort '${N.effort}' is not supported by ${t} when thinking is disabled. The effort has been lowered to 'high'.`}),N.effort="high");let b=(R=N?.thinking)==null?void 0:R.type,he=b==="enabled"||b==="adaptive",W=N?.thinking!=null&&"blockBinding"in N.thinking?N.thinking.blockBinding:void 0,Ee=he||b==="disabled"||W!=null,Xt=b==="enabled"?(I=N?.thinking)==null?void 0:I.budgetTokens:void 0,So=b==="adaptive"?(v=N?.thinking)==null?void 0:v.display:void 0,hs=i??le,eo={model:t,max_tokens:hs,temperature:r,top_k:a,top_p:l,stop_sequences:f,...Ee&&{thinking:{...b!=null&&{type:b},...Xt!=null&&{budget_tokens:Xt},...So!=null&&{display:So},...W!=null&&{block_binding:{prefix_mismatch_behavior:W.prefixMismatchBehavior}}}},...(N?.effort||N?.taskBudget||H&&p?.type==="json"&&p.schema!=null)&&{output_config:{...N?.effort&&{effort:N.effort},...N?.taskBudget&&{task_budget:{type:N.taskBudget.type,total:N.taskBudget.total,...N.taskBudget.remaining!=null&&{remaining:N.taskBudget.remaining}}},...H&&p?.type==="json"&&p.schema!=null&&{format:{type:"json_schema",schema:Ew(p.schema)}}}},...N?.speed&&{speed:N.speed},...N?.serviceTier&&{service_tier:N.serviceTier},...N?.inferenceGeo&&{inference_geo:N.inferenceGeo},...N?.fallbacks!=null&&(N.fallbacks==="default"||N.fallbacks.length>0)&&{fallbacks:N.fallbacks},...N?.cacheControl&&{cache_control:N.cacheControl},...((T=N?.metadata)==null?void 0:T.userId)!=null&&{metadata:{user_id:N.metadata.userId}},...N?.mcpServers&&N.mcpServers.length>0&&{mcp_servers:N.mcpServers.map(ce=>({type:ce.type,name:ce.name,url:ce.url,authorization_token:ce.authorizationToken,tool_configuration:ce.toolConfiguration?{allowed_tools:ce.toolConfiguration.allowedTools,enabled:ce.toolConfiguration.enabled}:void 0}))},...N?.container&&{container:N.container.skills&&N.container.skills.length>0?{id:N.container.id,skills:N.container.skills.map(ce=>({type:ce.type,skill_id:ce.type==="custom"?Mi({reference:ce.providerReference,provider:"anthropic"}):ce.skillId,version:ce.version}))}:N.container.id},system:Ye.system,messages:Ye.messages,...ie&&{context_management:{edits:ie.edits.map(ce=>{let rl=ce.type;switch(rl){case"clear_tool_uses_20250919":return{type:ce.type,...ce.trigger!==void 0&&{trigger:ce.trigger},...ce.keep!==void 0&&{keep:ce.keep},...ce.clearAtLeast!==void 0&&{clear_at_least:ce.clearAtLeast},...ce.clearToolInputs!==void 0&&{clear_tool_inputs:ce.clearToolInputs},...ce.excludeTools!==void 0&&{exclude_tools:ce.excludeTools}};case"clear_thinking_20251015":return{type:ce.type,...ce.keep!==void 0&&{keep:ce.keep}};case"compact_20260112":return{type:ce.type,...ce.trigger!==void 0&&{trigger:ce.trigger},...ce.pauseAfterCompaction!==void 0&&{pause_after_compaction:ce.pauseAfterCompaction},...ce.instructions!==void 0&&{instructions:ce.instructions}};default:Y.push({type:"other",message:`Unknown context management strategy: ${rl}`});return}}).filter(ce=>ce!==void 0)}}};he?(b==="enabled"&&Xt==null&&(Y.push({type:"compatibility",feature:"extended thinking",details:"thinking budget is required when thinking is enabled. using default budget of 1024 tokens."}),eo.thinking={type:"enabled",budget_tokens:1024},Xt=1024),eo.temperature!=null&&(eo.temperature=void 0,Y.push({type:"unsupported",feature:"temperature",details:"temperature is not supported when thinking is enabled"})),a!=null&&(eo.top_k=void 0,Y.push({type:"unsupported",feature:"topK",details:"topK is not supported when thinking is enabled"})),l!=null&&(eo.top_p=void 0,Y.push({type:"unsupported",feature:"topP",details:"topP is not supported when thinking is enabled"})),eo.max_tokens=hs+(Xt??0)):F&&l!=null&&r!=null&&(Y.push({type:"unsupported",feature:"topP",details:"topP is not supported when temperature is set. topP is ignored."}),eo.top_p=void 0),oe&&eo.max_tokens>le&&(i!=null&&Y.push({type:"unsupported",feature:"maxOutputTokens",details:`${eo.max_tokens} (maxOutputTokens + thinkingBudget) is greater than ${t} ${le} max output tokens. The max output tokens have been limited to ${le}.`}),eo.max_tokens=le),N?.mcpServers&&N.mcpServers.length>0&&$.add("mcp-client-2025-04-04"),ie&&($.add("context-management-2025-06-27"),ie.edits.some(ce=>ce.type==="compact_20260112")&&$.add("compact-2026-01-12")),N?.container&&N.container.skills&&N.container.skills.length>0&&($.add("code-execution-2025-08-25"),$.add("skills-2025-10-02"),$.add("files-api-2025-04-14"),g?.some(ce=>ce.type==="provider"&&(ce.id==="anthropic.code_execution_20250825"||ce.id==="anthropic.code_execution_20260120"))||Y.push({type:"other",message:"code execution tool is required when using skills"})),N?.taskBudget&&$.add("task-budgets-2026-03-13"),N?.speed==="fast"&&$.add("fast-mode-2026-02-01"),So==="updates"&&$.add("thinking-display-updates-2026-08-18"),W!=null&&$.add("thinking-binding-controls-2026-08-01"),N?.fallbacks==="default"?$.add("server-side-fallback-2026-07-01"):N?.fallbacks&&N.fallbacks.length>0&&$.add("server-side-fallback-2026-06-01");let il=U&&((P=N?.toolStreaming)!=null?P:!0),{tools:Um,toolChoice:ym,toolWarnings:Am,betas:Mm}=await Wh(Z!=null?{tools:[...g??[],Z],toolChoice:{type:"required"},disableParallelToolUse:!0,cacheControlValidator:ee,supportsStructuredOutput:!1,supportsStrictTools:k,defaultEagerInputStreaming:il}:{tools:g??[],toolChoice:h,disableParallelToolUse:N?.disableParallelToolUse,cacheControlValidator:ee,supportsStructuredOutput:re,supportsStrictTools:k,defaultEagerInputStreaming:il}),Im=ee.getWarnings();return{args:{...eo,tools:Um,tool_choice:ym,stream:U===!0?!0:void 0},warnings:[...Y,...Am,...Im],betas:new Set([...$,...Mm,...n,...(j=N?.anthropicBeta)!=null?j:[]]),usesJsonResponseTool:Z!=null,toolNameMapping:B,providerOptionsName:ne,usedCustomProviderKey:ae}}getArgs(t){return sa.prepareRequest({modelId:this.modelId,config:this.config,options:t})}async getHeaders({betas:t,headers:o}){return je(this.config.headers?await Se(this.config.headers):void 0,o,t.size>0?{"anthropic-beta":Array.from(t).join(",")}:{})}async getBetasFromHeaders(t){var o,n;let s=this.config.headers?await Se(this.config.headers):void 0,i=(o=s?.["anthropic-beta"])!=null?o:"",r=(n=t?.["anthropic-beta"])!=null?n:"";return new Set([...i.toLowerCase().split(","),...r.toLowerCase().split(",")].map(l=>l.trim()).filter(l=>l!==""))}buildRequestUrl(t){var o,n,s;return(s=(n=(o=this.config).buildRequestUrl)==null?void 0:n.call(o,this.config.baseURL,t))!=null?s:`${this.config.baseURL}/messages`}transformRequestBody(t,o){var n,s,i;return(i=(s=(n=this.config).transformRequestBody)==null?void 0:s.call(n,t,o))!=null?i:t}extractCitationDocuments(t){let o=n=>{var s,i;if(n.type!=="file"||n.mediaType!=="application/pdf"&&n.mediaType!=="text/plain")return!1;let r=(s=n.providerOptions)==null?void 0:s.anthropic,l=r?.citations;return(i=l?.enabled)!=null?i:!1};return t.filter(n=>n.role==="user").flatMap(n=>n.content).filter(o).map(n=>{var s;let i=n;return{title:(s=i.filename)!=null?s:"Untitled Document",filename:i.filename,mediaType:i.mediaType}})}async doGenerate(t){var o,n,s,i,r,l,a,c;let{args:d,warnings:f,betas:p,usesJsonResponseTool:u,toolNameMapping:g,providerOptionsName:h,usedCustomProviderKey:w}=await this.getArgs({...t,stream:!1,userSuppliedBetas:await this.getBetasFromHeaders(t.headers)}),y=[...this.extractCitationDocuments(t.prompt)],U=ou(d.tools),{responseHeaders:O,value:E,rawValue:A}=await et({url:this.buildRequestUrl(!1),headers:await this.getHeaders({betas:p,headers:t.headers}),body:this.transformRequestBody(d,p),failedResponseHandler:_o,successfulResponseHandler:ke(Li),abortSignal:t.abortSignal,fetch:this.config.fetch}),M=[],_={},J={},R=!1;for(let I of E.content)switch(I.type){case"text":{if(!u){let v=(o=I.citations)==null?void 0:o.filter(T=>T.type==="web_search_result_location");if(M.push({type:"text",text:I.text,...v!=null&&v.length>0&&{providerMetadata:{anthropic:{citations:v}}}}),I.citations)for(let T of I.citations){let P=na(T,y,this.generateId);P&&M.push(P)}}break}case"thinking":{M.push({type:"reasoning",text:I.thinking,providerMetadata:{anthropic:{signature:I.signature}}});break}case"redacted_thinking":{M.push({type:"reasoning",text:"",providerMetadata:{anthropic:{redactedData:I.data}}});break}case"container_upload":{M.push({type:"custom",kind:"anthropic.container_upload",providerMetadata:{anthropic:{fileId:I.file_id}}});break}case"compaction":{M.push({type:"text",text:I.content,providerMetadata:{anthropic:{type:"compaction"}}});break}case"tool_use":{u&&I.name==="json"?(R=!0,M.push({type:"text",text:JSON.stringify(I.input)})):M.push({type:"tool-call",toolCallId:I.id,toolName:I.name,input:JSON.stringify(I.input),...Vt(I.caller)});break}case"server_tool_use":{if(I.name==="text_editor_code_execution"||I.name==="bash_code_execution")M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName("code_execution"),input:JSON.stringify({type:I.name,...I.input}),providerExecuted:!0,...U&&"code_execution"==="code_execution"?{dynamic:!0}:{},...Vt(I.caller)});else if(I.name==="web_search"||I.name==="code_execution"||I.name==="web_fetch"){let v=I.name==="code_execution"&&I.input!=null&&typeof I.input=="object"&&"code"in I.input&&!("type"in I.input)?{type:"programmatic-tool-call",...I.input}:I.input;M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName(I.name),input:JSON.stringify(v),providerExecuted:!0,...U&&I.name==="code_execution"?{dynamic:!0}:{},...Vt(I.caller)})}else I.name==="tool_search_tool_regex"||I.name==="tool_search_tool_bm25"?(J[I.id]=I.name,M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName(I.name),input:JSON.stringify(I.input),providerExecuted:!0,...Vt(I.caller)})):I.name==="advisor"&&M.push({type:"tool-call",toolCallId:I.id,toolName:g.toCustomToolName("advisor"),input:JSON.stringify(I.input),providerExecuted:!0,...Vt(I.caller)});break}case"mcp_tool_use":{_[I.id]={type:"tool-call",toolCallId:I.id,toolName:I.name,input:JSON.stringify(I.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:I.server_name}}},M.push(_[I.id]);break}case"mcp_tool_result":{M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:_[I.tool_use_id].toolName,isError:I.is_error,result:I.content,dynamic:!0,providerMetadata:_[I.tool_use_id].providerMetadata});break}case"web_fetch_tool_result":{I.content.type==="web_fetch_result"?(y.push({title:(n=I.content.content.title)!=null?n:I.content.url,mediaType:I.content.content.source.media_type}),M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:I.content.url,retrievedAt:I.content.retrieved_at,content:{type:I.content.content.type,title:I.content.content.title,citations:I.content.content.citations,source:{type:I.content.content.source.type,mediaType:I.content.content.source.media_type,data:I.content.content.source.data}}},...Vt(I.caller)})):I.content.type==="web_fetch_tool_result_error"&&M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:I.content.error_code},...Vt(I.caller)});break}case"web_search_tool_result":{if(Array.isArray(I.content)){M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_search"),result:I.content.map(v=>{var T;return{url:v.url,...v.title!=null?{title:v.title}:{},pageAge:(T=v.page_age)!=null?T:null,encryptedContent:v.encrypted_content,type:v.type}}),...Vt(I.caller)});for(let v of I.content)M.push({type:"source",sourceType:"url",id:this.generateId(),url:v.url,...v.title!=null?{title:v.title}:{},providerMetadata:{anthropic:{pageAge:(s=v.page_age)!=null?s:null}}})}else M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:I.content.error_code},...Vt(I.caller)});break}case"code_execution_tool_result":{I.content.type==="code_execution_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),result:{type:I.content.type,stdout:I.content.stdout,stderr:I.content.stderr,return_code:I.content.return_code,content:(i=I.content.content)!=null?i:[]}}):I.content.type==="encrypted_code_execution_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),result:{type:I.content.type,encrypted_stdout:I.content.encrypted_stdout,stderr:I.content.stderr,return_code:I.content.return_code,content:(r=I.content.content)!=null?r:[]}}):I.content.type==="code_execution_tool_result_error"&&M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:I.content.error_code}});break}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName("code_execution"),result:I.content});break}case"tool_search_tool_result":{let v=J[I.tool_use_id];if(v==null){let T=g.toCustomToolName("tool_search_tool_bm25"),P=g.toCustomToolName("tool_search_tool_regex");T!=="tool_search_tool_bm25"?v="tool_search_tool_bm25":v="tool_search_tool_regex"}I.content.type==="tool_search_tool_search_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName(v),result:I.content.tool_references.map(T=>({type:T.type,toolName:T.tool_name}))}):M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:g.toCustomToolName(v),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:I.content.error_code}});break}case"advisor_tool_result":{let v=g.toCustomToolName("advisor");I.content.type==="advisor_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:v,result:{type:"advisor_result",text:I.content.text,...I.content.stop_reason!=null&&{stopReason:I.content.stop_reason}}}):I.content.type==="advisor_redacted_result"?M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:v,result:{type:"advisor_redacted_result",encryptedContent:I.content.encrypted_content,...I.content.stop_reason!=null&&{stopReason:I.content.stop_reason}}}):M.push({type:"tool-result",toolCallId:I.tool_use_id,toolName:v,isError:!0,result:{type:"advisor_tool_result_error",errorCode:I.content.error_code}});break}case"fallback":break}return{content:M,finishReason:{unified:vi({finishReason:E.stop_reason,isJsonResponseFromTool:R}),raw:(l=E.stop_reason)!=null?l:void 0},usage:oa({usage:E.usage}),request:{body:d},response:{id:(a=E.id)!=null?a:void 0,modelId:(c=E.model)!=null?c:void 0,headers:O,body:A},warnings:f,providerMetadata:(()=>{var I,v,T,P;let j=su(E.stop_details),Y={usage:E.usage,stopSequence:(I=E.stop_sequence)!=null?I:null,...j!=null?{stopDetails:j}:{},...E.input_transformations!=null?{inputTransformations:E.input_transformations}:{},iterations:E.usage.iterations?E.usage.iterations.map(se=>({type:se.type,...se.model!=null?{model:se.model}:{},inputTokens:se.input_tokens,outputTokens:se.output_tokens,...se.cache_creation_input_tokens?{cacheCreationInputTokens:se.cache_creation_input_tokens}:{},...se.cache_read_input_tokens?{cacheReadInputTokens:se.cache_read_input_tokens}:{}})):null,container:E.container?{expiresAt:E.container.expires_at,id:E.container.id,skills:(T=(v=E.container.skills)==null?void 0:v.map(se=>({type:se.type,skillId:se.skill_id,version:se.version})))!=null?T:null}:null,contextManagement:(P=nu(E.context_management))!=null?P:null},ne={anthropic:Y};return w&&h!=="anthropic"&&(ne[h]=Y),ne})()}}async doStream(t){"use step";var o,n,s,i;let{args:r,warnings:l,betas:a,usesJsonResponseTool:c,toolNameMapping:d,providerOptionsName:f,usedCustomProviderKey:p}=await this.getArgs({...t,stream:!0,userSuppliedBetas:await this.getBetasFromHeaders(t.headers)}),u=[...this.extractCitationDocuments(t.prompt)],g=ou(r.tools),h=this.buildRequestUrl(!0),{responseHeaders:w,value:y}=await et({url:h,headers:await this.getHeaders({betas:a,headers:t.headers}),body:this.transformRequestBody(r,a),failedResponseHandler:_o,successfulResponseHandler:Jc(Ah),abortSignal:t.abortSignal,fetch:this.config.fetch}),U={unified:"other",raw:void 0},O={input_tokens:0,output_tokens:0,cache_creation_input_tokens:0,cache_read_input_tokens:0,iterations:null},E={},A={},M={},_=null,J,R=null,I,v,T=null,P=!1,j=!1,Y,ne=!1,se,fe=this.generateId,ae=y.pipeThrough(new TransformStream({start(L){L.enqueue({type:"stream-start",warnings:l})},transform(L,V){var me,D,oe,F,re,k,X,H,Z,ie,ee,B,Ye;if(ne)return;if(t.includeRawChunks&&V.enqueue({type:"raw",rawValue:L.rawValue}),!L.success){V.enqueue({type:"error",error:L.error});return}let $=L.value;switch($.type){case"ping":return;case"content_block_start":{let b=$.content_block,he=b.type;if(he==="fallback")return;switch(se=he,he){case"text":{if(c)return;E[$.index]={type:"text",citations:[]},V.enqueue({type:"text-start",id:String($.index)});return}case"thinking":{E[$.index]={type:"reasoning"},V.enqueue({type:"reasoning-start",id:String($.index)});return}case"redacted_thinking":{E[$.index]={type:"reasoning"},V.enqueue({type:"reasoning-start",id:String($.index),providerMetadata:{anthropic:{redactedData:b.data}}});return}case"compaction":{E[$.index]={type:"text",citations:[]},V.enqueue({type:"text-start",id:String($.index),providerMetadata:{anthropic:{type:"compaction"}}});return}case"tool_use":{if(c&&b.name==="json")P=!0,E[$.index]={type:"text",citations:[]},V.enqueue({type:"text-start",id:String($.index)});else{let Ee=Ni(b.caller),So=b.input&&Object.keys(b.input).length>0?JSON.stringify(b.input):"";E[$.index]={type:"tool-call",toolCallId:b.id,toolName:b.name,input:So,firstDelta:So.length===0,...Ee&&{caller:Ee}},V.enqueue({type:"tool-input-start",id:b.id,toolName:b.name})}return}case"server_tool_use":{let W=Ni(b.caller);if(["web_fetch","web_search","code_execution","text_editor_code_execution","bash_code_execution"].includes(b.name)){let Ee=b.name==="text_editor_code_execution"||b.name==="bash_code_execution"?"code_execution":b.name,Xt=b.name==="text_editor_code_execution"||b.name==="bash_code_execution"?b.name:b.name==="code_execution"?"programmatic-tool-call":void 0,So=d.toCustomToolName(Ee),hs=b.input!=null&&typeof b.input=="object"&&Object.keys(b.input).length>0?JSON.stringify(b.input):"";E[$.index]={type:"tool-call",toolCallId:b.id,toolName:So,input:hs,providerExecuted:!0,...g&&Ee==="code_execution"?{dynamic:!0}:{},firstDelta:hs.length===0,providerToolName:Ee,providerToolInputType:Xt,...W&&{caller:W}},V.enqueue({type:"tool-input-start",id:b.id,toolName:So,providerExecuted:!0,...g&&Ee==="code_execution"?{dynamic:!0}:{}})}else if(b.name==="tool_search_tool_regex"||b.name==="tool_search_tool_bm25"){M[b.id]=b.name;let Ee=d.toCustomToolName(b.name);E[$.index]={type:"tool-call",toolCallId:b.id,toolName:Ee,input:"",providerExecuted:!0,firstDelta:!0,providerToolName:b.name,...W&&{caller:W}},V.enqueue({type:"tool-input-start",id:b.id,toolName:Ee,providerExecuted:!0})}else if(b.name==="advisor"){let Ee=d.toCustomToolName("advisor");E[$.index]={type:"tool-call",toolCallId:b.id,toolName:Ee,input:"{}",providerExecuted:!0,firstDelta:!0,providerToolName:b.name,...W&&{caller:W}},V.enqueue({type:"tool-input-start",id:b.id,toolName:Ee,providerExecuted:!0})}return}case"web_fetch_tool_result":{b.content.type==="web_fetch_result"?(u.push({title:(me=b.content.content.title)!=null?me:b.content.url,mediaType:b.content.content.source.media_type}),V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_fetch"),result:{type:"web_fetch_result",url:b.content.url,retrievedAt:b.content.retrieved_at,content:{type:b.content.content.type,title:b.content.content.title,citations:b.content.content.citations,source:{type:b.content.content.source.type,mediaType:b.content.content.source.media_type,data:b.content.content.source.data}}},...Vt(b.caller)})):b.content.type==="web_fetch_tool_result_error"&&V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_fetch"),isError:!0,result:{type:"web_fetch_tool_result_error",errorCode:b.content.error_code},...Vt(b.caller)});return}case"web_search_tool_result":{if(Array.isArray(b.content)){V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_search"),result:b.content.map(W=>{var Ee;return{url:W.url,...W.title!=null?{title:W.title}:{},pageAge:(Ee=W.page_age)!=null?Ee:null,encryptedContent:W.encrypted_content,type:W.type}}),...Vt(b.caller)});for(let W of b.content)V.enqueue({type:"source",sourceType:"url",id:fe(),url:W.url,...W.title!=null?{title:W.title}:{},providerMetadata:{anthropic:{pageAge:(D=W.page_age)!=null?D:null}}})}else V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("web_search"),isError:!0,result:{type:"web_search_tool_result_error",errorCode:b.content.error_code},...Vt(b.caller)});return}case"code_execution_tool_result":{b.content.type==="code_execution_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),result:{type:b.content.type,stdout:b.content.stdout,stderr:b.content.stderr,return_code:b.content.return_code,content:(oe=b.content.content)!=null?oe:[]}}):b.content.type==="encrypted_code_execution_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),result:{type:b.content.type,encrypted_stdout:b.content.encrypted_stdout,stderr:b.content.stderr,return_code:b.content.return_code,content:(F=b.content.content)!=null?F:[]}}):b.content.type==="code_execution_tool_result_error"&&V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),isError:!0,result:{type:"code_execution_tool_result_error",errorCode:b.content.error_code}});return}case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":{V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName("code_execution"),result:b.content});return}case"tool_search_tool_result":{let W=M[b.tool_use_id];if(W==null){let Ee=d.toCustomToolName("tool_search_tool_bm25"),Xt=d.toCustomToolName("tool_search_tool_regex");Ee!=="tool_search_tool_bm25"?W="tool_search_tool_bm25":W="tool_search_tool_regex"}b.content.type==="tool_search_tool_search_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName(W),result:b.content.tool_references.map(Ee=>({type:Ee.type,toolName:Ee.tool_name}))}):V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:d.toCustomToolName(W),isError:!0,result:{type:"tool_search_tool_result_error",errorCode:b.content.error_code}});return}case"advisor_tool_result":{let W=d.toCustomToolName("advisor");b.content.type==="advisor_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:W,result:{type:"advisor_result",text:b.content.text,...b.content.stop_reason!=null&&{stopReason:b.content.stop_reason}}}):b.content.type==="advisor_redacted_result"?V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:W,result:{type:"advisor_redacted_result",encryptedContent:b.content.encrypted_content,...b.content.stop_reason!=null&&{stopReason:b.content.stop_reason}}}):V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:W,isError:!0,result:{type:"advisor_tool_result_error",errorCode:b.content.error_code}});return}case"mcp_tool_use":{A[b.id]={type:"tool-call",toolCallId:b.id,toolName:b.name,input:JSON.stringify(b.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{type:"mcp-tool-use",serverName:b.server_name}}},V.enqueue(A[b.id]);return}case"mcp_tool_result":{V.enqueue({type:"tool-result",toolCallId:b.tool_use_id,toolName:A[b.tool_use_id].toolName,isError:b.is_error,result:b.content,dynamic:!0,providerMetadata:A[b.tool_use_id].providerMetadata});return}default:{let W=he;throw new Error(`Unsupported content block type: ${W}`)}}}case"content_block_stop":{if(E[$.index]!=null){let b=E[$.index];switch(b.type){case"text":{V.enqueue({type:"text-end",id:String($.index),...b.citations.length>0&&{providerMetadata:{anthropic:{citations:b.citations}}}});break}case"reasoning":{V.enqueue({type:"reasoning-end",id:String($.index)});break}case"tool-call":if(!(c&&b.toolName==="json")){V.enqueue({type:"tool-input-end",id:b.toolCallId});let W=b.input===""?"{}":b.input;if(b.providerToolName==="code_execution")try{let Ee=In(W);Ee!=null&&typeof Ee=="object"&&"code"in Ee&&!("type"in Ee)&&(W=JSON.stringify({type:"programmatic-tool-call",...Ee}))}catch{}V.enqueue({type:"tool-call",toolCallId:b.toolCallId,toolName:b.toolName,input:W,providerExecuted:b.providerExecuted,...g&&b.providerToolName==="code_execution"?{dynamic:!0}:{},...b.caller&&{providerMetadata:{anthropic:{caller:b.caller}}}})}break}delete E[$.index]}se=void 0;return}case"content_block_delta":{let b=$.delta.type;switch(b){case"text_delta":{if(c)return;V.enqueue({type:"text-delta",id:String($.index),delta:$.delta.text});return}case"thinking_delta":{V.enqueue({type:"reasoning-delta",id:String($.index),delta:$.delta.thinking});return}case"signature_delta":{se==="thinking"&&V.enqueue({type:"reasoning-delta",id:String($.index),delta:"",providerMetadata:{anthropic:{signature:$.delta.signature}}});return}case"compaction_delta":{$.delta.content!=null&&V.enqueue({type:"text-delta",id:String($.index),delta:$.delta.content});return}case"input_json_delta":{let he=E[$.index],W=$.delta.partial_json;if(W.length===0)return;if(P){if(he?.type!=="text")return;V.enqueue({type:"text-delta",id:String($.index),delta:W})}else{if(he?.type!=="tool-call")return;he.firstDelta&&he.providerToolInputType!=null&&(W=`{"type": "${he.providerToolInputType}",${W.substring(1)}`),V.enqueue({type:"tool-input-delta",id:he.toolCallId,delta:W}),he.input+=W,he.firstDelta=!1}return}case"citations_delta":{let he=$.delta.citation,W=E[$.index];W?.type==="text"&&he.type==="web_search_result_location"&&W.citations.push(he);let Ee=na(he,u,fe);Ee&&V.enqueue(Ee);return}default:{let he=b;throw new Error(`Unsupported delta type: ${he}`)}}}case"message_start":{if(j){if(Y===$.message.id)return;ne=!0,V.enqueue({type:"error",error:new yh({data:$,message:`Received message_start for message ${JSON.stringify($.message.id)} while message ${JSON.stringify(Y)} is still open.`})});return}if(j=!0,Y=$.message.id,O.input_tokens=$.message.usage.input_tokens,O.cache_read_input_tokens=(re=$.message.usage.cache_read_input_tokens)!=null?re:0,O.cache_creation_input_tokens=(k=$.message.usage.cache_creation_input_tokens)!=null?k:0,J={...$.message.usage},$.message.input_transformations!=null&&(v=$.message.input_transformations),$.message.container!=null&&(T={expiresAt:$.message.container.expires_at,id:$.message.container.id,skills:null}),$.message.stop_reason!=null&&(U={unified:vi({finishReason:$.message.stop_reason,isJsonResponseFromTool:P}),raw:$.message.stop_reason}),V.enqueue({type:"response-metadata",id:(X=$.message.id)!=null?X:void 0,modelId:(H=$.message.model)!=null?H:void 0}),$.message.content!=null)for(let b=0;b<$.message.content.length;b++){let he=$.message.content[b];if(he.type==="tool_use"){let W=Ni(he.caller);V.enqueue({type:"tool-input-start",id:he.id,toolName:he.name});let Ee=JSON.stringify((Z=he.input)!=null?Z:{});V.enqueue({type:"tool-input-delta",id:he.id,delta:Ee}),V.enqueue({type:"tool-input-end",id:he.id}),V.enqueue({type:"tool-call",toolCallId:he.id,toolName:he.name,input:Ee,...W&&{providerMetadata:{anthropic:{caller:W}}}})}}return}case"message_delta":{$.usage.input_tokens!=null&&O.input_tokens!==$.usage.input_tokens&&(O.input_tokens=$.usage.input_tokens),O.output_tokens=$.usage.output_tokens,$.usage.output_tokens_details!=null&&(O.output_tokens_details=$.usage.output_tokens_details),$.usage.cache_read_input_tokens!=null&&(O.cache_read_input_tokens=$.usage.cache_read_input_tokens),$.usage.cache_creation_input_tokens!=null&&(O.cache_creation_input_tokens=$.usage.cache_creation_input_tokens),$.usage.iterations!=null&&(O.iterations=$.usage.iterations),U={unified:vi({finishReason:$.delta.stop_reason,isJsonResponseFromTool:P}),raw:(ie=$.delta.stop_reason)!=null?ie:void 0},R=(ee=$.delta.stop_sequence)!=null?ee:null,I=su($.delta.stop_details),T=$.delta.container!=null?{expiresAt:$.delta.container.expires_at,id:$.delta.container.id,skills:(Ye=(B=$.delta.container.skills)==null?void 0:B.map(b=>({type:b.type,skillId:b.skill_id,version:b.version})))!=null?Ye:null}:null,$.context_management&&(_=nu($.context_management)),$.input_transformations!=null&&(v=$.input_transformations),J={...J,...$.usage};return}case"message_stop":{j=!1,Y=void 0;let b={usage:J??null,stopSequence:R,...I!=null?{stopDetails:I}:{},...v!=null?{inputTransformations:v}:{},iterations:O.iterations?O.iterations.map(W=>({type:W.type,...W.model!=null?{model:W.model}:{},inputTokens:W.input_tokens,outputTokens:W.output_tokens,...W.cache_creation_input_tokens?{cacheCreationInputTokens:W.cache_creation_input_tokens}:{},...W.cache_read_input_tokens?{cacheReadInputTokens:W.cache_read_input_tokens}:{}})):null,container:T,contextManagement:_},he={anthropic:b};p&&f!=="anthropic"&&(he[f]=b),V.enqueue({type:"finish",finishReason:U,usage:oa({usage:O,rawUsage:J}),providerMetadata:he});return}case"error":{V.enqueue({type:"error",error:Mw($.error)});return}default:{let b=$;throw new Error(`Unsupported chunk type: ${b}`)}}}})),[N,le]=ae.tee(),S=N.getReader();try{await S.read();let L=await S.read();if(((o=L.value)==null?void 0:o.type)==="raw"&&(L=await S.read()),((n=L.value)==null?void 0:n.type)==="error"){let V=L.value.error;throw lc(V)?new Uh({message:V.message,url:h,requestBodyValues:r,statusCode:(s=V.statusCode)!=null?s:500,responseHeaders:w,responseBody:JSON.stringify(V.data),isRetryable:(i=V.isRetryable)!=null?i:!1}):new Error("Expected a normalized Anthropic stream error")}}finally{S.cancel().catch(()=>{}),S.releaseLock()}return{stream:le,request:{body:r},response:{headers:w}}}};function _w(e){return e.includes("claude-opus-5")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!0,supportsXhighEffort:!0,rejectsThinkingDisabledAboveHighEffort:!0,isKnownModel:!0}:e.includes("claude-opus-4-8")||e.includes("claude-opus-4-7")||e.includes("claude-fable-5")||e.includes("claude-sonnet-5")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!0,supportsXhighEffort:!0,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-sonnet-4-6")||e.includes("claude-opus-4-6")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-sonnet-4-5")||e.includes("claude-opus-4-5")||e.includes("claude-haiku-4-5")?{maxOutputTokens:64e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-opus-4-1")?{maxOutputTokens:32e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:/claude-sonnet-4(?:-|@)/.test(e)?{maxOutputTokens:64e3,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:/claude-opus-4(?:-|@)/.test(e)?{maxOutputTokens:32e3,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:e.includes("claude-3-haiku")?{maxOutputTokens:4096,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!0}:/claude-(?:instant(?:-|$)|v?2(?=$|[-.:])|3(?=$|[-.]))/.test(e)?{maxOutputTokens:4096,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!1}:e.includes("claude-")?{maxOutputTokens:128e3,supportsStructuredOutput:!0,supportsAdaptiveThinking:!0,rejectsSamplingParameters:!0,supportsXhighEffort:!0,rejectsThinkingDisabledAboveHighEffort:!0,isKnownModel:!1}:{maxOutputTokens:4096,supportsStructuredOutput:!1,supportsAdaptiveThinking:!1,rejectsSamplingParameters:!1,supportsXhighEffort:!1,rejectsThinkingDisabledAboveHighEffort:!1,isKnownModel:!1}}function ou(e){if(!e)return!1;let t=!1,o=!1;for(let n of e){if("type"in n&&(n.type==="web_fetch_20260209"||n.type==="web_search_20260209")){t=!0;continue}if("type"in n&&(n.type==="code_execution_20250522"||n.type==="code_execution_20250825"||n.type==="code_execution_20260120")){o=!0;break}}return t&&!o}function bw({reasoning:e,supportsAdaptiveThinking:t,supportsXhighEffort:o,maxOutputTokensForModel:n,warnings:s}){if(!jr(e))return;if(e==="none")return{thinking:{type:"disabled"}};if(t){let r=Ic({reasoning:e,effortMap:{minimal:"low",low:"low",medium:"medium",high:"high",xhigh:o?"xhigh":"max"},warnings:s});return{thinking:{type:"adaptive",display:"summarized"},effort:r}}let i=Oc({reasoning:e,maxOutputTokens:n,maxReasoningBudget:n,warnings:s});if(i!=null)return{thinking:{type:"enabled",budgetTokens:i}}}function nu(e){return e?{appliedEdits:e.applied_edits.map(t=>{switch(t.type){case"clear_tool_uses_20250919":return{type:t.type,clearedToolUses:t.cleared_tool_uses,clearedInputTokens:t.cleared_input_tokens};case"clear_thinking_20251015":return{type:t.type,clearedThinkingTurns:t.cleared_thinking_turns,clearedInputTokens:t.cleared_input_tokens};case"compact_20260112":return{type:t.type}}}).filter(t=>t!==void 0)}:null}function su(e){if(e!=null)return{type:e.type,...e.category!=null?{category:e.category}:{},...e.explanation!=null?{explanation:e.explanation}:{},...e.recommended_model!=null?{recommendedModel:e.recommended_model}:{}}}var vw=/^[A-Za-z0-9_-]{1,64}$/,iu=ta.pick({anthropicBeta:!0}),Ou=()=>ge.object({id:ge.string(),type:ge.literal("message_batch"),processing_status:ge.string(),request_counts:ge.object({processing:ge.number(),succeeded:ge.number(),errored:ge.number(),canceled:ge.number(),expired:ge.number()}),created_at:ge.string(),expires_at:ge.string(),archived_at:ge.string().nullish(),cancel_initiated_at:ge.string().nullish(),ended_at:ge.string().nullish(),results_url:ge.string().nullish()}),qr=z(()=>K(Ou())),Nw=z(()=>K(ge.object({data:ge.array(Ou()),has_more:ge.boolean(),last_id:ge.string().nullish()}))),Pw=new Set(["advisor_tool_result","bash_code_execution_tool_result","code_execution_tool_result","compaction","container_upload","fallback","mcp_tool_result","mcp_tool_use","redacted_thinking","server_tool_use","text","text_editor_code_execution_tool_result","thinking","tool_search_tool_result","tool_use","web_fetch_tool_result","web_search_tool_result"]),Rw=z(()=>K(ge.discriminatedUnion("type",[ge.object({type:ge.literal("succeeded"),message:ge.unknown()}),ge.object({type:ge.literal("errored"),error:ge.object({type:ge.literal("error"),error:ge.object({type:ge.string(),message:ge.string()}),request_id:ge.string().nullish()})}),ge.object({type:ge.literal("canceled")}),ge.object({type:ge.literal("expired")})]))),xw=z(()=>K(ge.object({custom_id:ge.string(),result:ge.unknown()})));function Jw(e){for(let t of e){let o=t.type;if(o!=="text")throw new ts({functionality:`batch request type: ${o}`,message:`The Anthropic Message Batches API does not support batch requests with type "${o}".`})}}var kw=class{constructor(e){this.options=e,this.specificationVersion="v4";var t;this.provider=e.provider,this.supportedUrls=e.supportedUrls,this.generateId=(t=e.config.generateId)!=null?t:St}async doStartBatch({requests:e,providerOptions:t,headers:o,abortSignal:n,webhookUrl:s}){var i,r,l,a;Jw(e),Gw(e);let c=new Set(await ru({provider:this.options.config.provider,providerOptions:t})),d=new Set(c),f=[],p=s==null?[]:[{warning:{type:"unsupported",feature:"webhookUrl",details:"The Anthropic Message Batches API does not support completion webhooks."}}];for(let g of e){if((await ru({provider:this.options.config.provider,providerOptions:g.options.providerOptions})).length>0)throw new ts({functionality:"per-request providerOptions.anthropic.anthropicBeta",message:`Anthropic Message Batches do not support per-request betas (request "${g.id}"). Set providerOptions.anthropic.anthropicBeta on startBatch instead.`});let w=await Iu.prepareRequest({modelId:g.modelId,config:this.options.config,options:{...g.options,stream:!1,userSuppliedBetas:new Set(c)}});if(w.usesJsonResponseTool)throw new ts({functionality:"batch responseFormat JSON-tool fallback",message:`Anthropic Message Batches cannot decode the JSON-tool structured-output fallback (request "${g.id}") because batch results are retrieved independently of the start call. Use a model that supports native output_format structured outputs.`});let y=(i=g.options.tools)==null?void 0:i.find(O=>O.type==="provider"&&w.toolNameMapping.toProviderToolName(O.name)!==O.name);if(y!=null)throw new ts({functionality:"aliased provider tool names in batches",message:`Anthropic Message Batches cannot restore the custom provider-tool name "${y.name}" when results are retrieved independently of the start call (request "${g.id}"). Use the provider's canonical tool name.`});let U=(a=(l=(r=this.options.config).transformRequestBody)==null?void 0:l.call(r,w.args,w.betas))!=null?a:w.args;Sw({body:U,requestId:g.id}),f.push({custom_id:g.id,params:U});for(let O of w.betas)d.add(O);for(let O of w.warnings)p.push({requestId:g.id,warning:O})}let{value:u}=await et({url:this.getBatchUrl(""),headers:await this.getStartBatchHeaders({betas:d,headers:o}),body:{requests:f},failedResponseHandler:_o,successfulResponseHandler:ke(qr),abortSignal:n,fetch:this.options.config.fetch});return{batchId:u.id,..._i(u),warnings:p}}async doGetBatchStatus(e){return _i(await this.retrieveBatch(e))}async doCancelBatch(e){return await et({url:this.getBatchUrl(`/${encodeURIComponent(e.batchId)}/cancel`),headers:await this.getBatchHeaders(e.headers),body:{},failedResponseHandler:_o,successfulResponseHandler:ke(qr),abortSignal:e.abortSignal,fetch:this.options.config.fetch}),{}}async doListBatches(e){let t=new URL(this.getBatchUrl(""));e.limit!=null&&t.searchParams.set("limit",String(e.limit)),e.cursor!=null&&t.searchParams.set("after_id",e.cursor);let{value:o}=await Wn({url:t.toString(),validateUrl:!1,headers:await this.getBatchHeaders(e.headers),failedResponseHandler:_o,successfulResponseHandler:ke(Nw),abortSignal:e.abortSignal,fetch:this.options.config.fetch});return{batches:o.data.map(n=>({batchId:n.id,..._i(n)})),...o.has_more&&o.last_id!=null?{nextCursor:o.last_id}:{}}}async doGetBatchResults(e){let t=await this.retrieveBatch(e);if(_i(t).status==="pending")throw new Pi({argument:"batchId",message:`Anthropic batch "${e.batchId}" is not complete.`});if(t.archived_at!=null)throw new Pi({argument:"batchId",message:`Anthropic batch "${e.batchId}" results are no longer available.`});if(t.results_url==null)throw new Lw({data:t,message:`Anthropic batch "${e.batchId}" completed without batch output.`});let{value:o}=await Wn({url:t.results_url,validateUrl:!0,credentialedOrigin:this.options.config.baseURL,trustedOrigin:this.options.config.baseURL,headers:await this.getBatchHeaders(e.headers),failedResponseHandler:_o,successfulResponseHandler:kc(xw),abortSignal:e.abortSignal,fetch:this.options.config.fetch});return sc(this.iterateBatchResults(o))}async retrieveBatch(e){let{value:t}=await Wn({url:this.getBatchUrl(`/${encodeURIComponent(e.batchId)}`),validateUrl:!1,headers:await this.getBatchHeaders(e.headers),failedResponseHandler:_o,successfulResponseHandler:ke(qr),abortSignal:e.abortSignal,fetch:this.options.config.fetch});return t}async*iterateBatchResults(e){for await(let t of e)yield await $w(t,this.generateId)}getBatchUrl(e){return`${this.options.config.baseURL}/messages/batches${e}`}async getStartBatchHeaders({betas:e,headers:t}){return je(Ls(await this.getBatchHeaders(t)),{"anthropic-beta":e.size>0?Array.from(e).join(","):void 0})}async getBatchHeaders(e){return je(this.options.config.headers?await Se(this.options.config.headers):void 0,e)}};async function ru({provider:e,providerOptions:t}){var o;let n=e.split(".")[0],s=await Ge({provider:"anthropic",providerOptions:t,schema:iu}),i=n!=="anthropic"?await Ge({provider:n,providerOptions:t,schema:iu}):void 0;return(o=Object.assign({},s??{},i??{}).anthropicBeta)!=null?o:[]}function Gw(e){let t=new Set;for(let o of e){if(!vw.test(o.id))throw new Pi({argument:"requests",message:`Anthropic batch request ID "${o.id}" must match ^[A-Za-z0-9_-]{1,64}$.`});if(t.has(o.id))throw new Pi({argument:"requests",message:`Anthropic batch request IDs must be unique; duplicate ID "${o.id}".`});t.add(o.id)}}function Sw({body:e,requestId:t}){if(e.speed!=null)throw new ts({functionality:"providerOptions.anthropic.speed",message:`Anthropic Message Batches do not support speed (request "${t}").`});if(Array.isArray(e.fallbacks)&&e.fallbacks.some(o=>o!=null&&typeof o=="object"&&"speed"in o&&o.speed!=null))throw new ts({functionality:"providerOptions.anthropic.fallbacks[].speed",message:`Anthropic Message Batches do not support fallback speed (request "${t}").`})}function _i(e){var t,o,n,s;let i=Tw(e.request_counts);return{status:Vw(e.processing_status),rawStatus:e.processing_status,...i!=null?{requestCounts:i}:{},createdAt:e.created_at,expiresAt:e.expires_at,providerMetadata:{anthropic:{archivedAt:(t=e.archived_at)!=null?t:null,cancelInitiatedAt:(o=e.cancel_initiated_at)!=null?o:null,endedAt:(n=e.ended_at)!=null?n:null,requestCounts:e.request_counts,resultsUrl:(s=e.results_url)!=null?s:null}}}}function Vw(e){return e==="ended"?"completed":"pending"}function Tw(e){return _c({total:e.processing+e.succeeded+e.errored+e.canceled+e.expired,pending:e.processing,completed:e.succeeded,failed:e.errored+e.canceled+e.expired})}async function $w(e,t){let o=await tn({value:e.result,schema:Rw});if(!o.success)return au(e.custom_id);let n=o.value;switch(n.type){case"canceled":return{type:"text",id:e.custom_id,status:"cancelled"};case"expired":return{type:"text",id:e.custom_id,status:"expired"};case"errored":{let s=n.error.request_id;return{type:"text",id:e.custom_id,status:"failed",error:{message:n.error.error.message,type:n.error.error.type},...s!=null?{providerMetadata:{anthropic:{requestId:s}}}:{}}}case"succeeded":{let s=await Qw(n.message);return s==null?au(e.custom_id):{type:"text",id:e.custom_id,status:"succeeded",result:jw(s,t)}}}}function au(e){return{type:"text",id:e,status:"failed",error:{message:"Anthropic returned an invalid Message batch result.",code:"invalid_response"}}}async function Qw(e){let t=await tn({value:e,schema:Li});if(t.success)return t.value;if(!Ns(e)||!Array.isArray(e.content))return;let o=[];for(let s of e.content){let i=await tn({value:{...e,content:[s]},schema:Li});if(i.success){let[r]=i.value.content;r!=null&&o.push(r)}else if(!Ns(s)||typeof s.type!="string"||Pw.has(s.type))return}let n=await tn({value:{...e,content:o},schema:Li});return n.success?n.value:void 0}function jw(e,t){var o,n,s,i,r,l,a,c;let d=[],f={},p={};for(let u of e.content)switch(u.type){case"text":let g=u.citations;d.push({type:"text",text:u.text,...g!=null&&g.length>0&&{providerMetadata:{anthropic:{citations:g}}}});for(let h of(o=u.citations)!=null?o:[]){let w=na(h,[],t);w!=null&&d.push(w)}break;case"thinking":d.push({type:"reasoning",text:u.thinking,providerMetadata:{anthropic:{signature:u.signature}}});break;case"redacted_thinking":d.push({type:"reasoning",text:"",providerMetadata:{anthropic:{redactedData:u.data}}});break;case"container_upload":d.push({type:"custom",kind:"anthropic.container_upload",providerMetadata:{anthropic:{fileId:u.file_id}}});break;case"compaction":d.push({type:"text",text:u.content,providerMetadata:{anthropic:{type:"compaction"}}});break;case"tool_use":d.push({type:"tool-call",toolCallId:u.id,toolName:u.name,input:JSON.stringify(u.input),...bi(u.caller)});break;case"server_tool_use":{let h=u.name==="bash_code_execution"||u.name==="text_editor_code_execution",w=h||u.name==="code_execution",y=h?"code_execution":u.name;(u.name==="tool_search_tool_bm25"||u.name==="tool_search_tool_regex")&&(p[u.id]=u.name),d.push({type:"tool-call",toolCallId:u.id,toolName:y,input:JSON.stringify(h?{type:u.name,...(n=u.input)!=null?n:{}}:u.name==="code_execution"&&u.input!=null&&"code"in u.input&&!("type"in u.input)?{type:"programmatic-tool-call",...u.input}:u.input),providerExecuted:!0,...w?{dynamic:!0}:{},...bi(u.caller)});break}case"mcp_tool_use":{let h={type:"tool-call",toolCallId:u.id,toolName:u.name,input:JSON.stringify(u.input),providerExecuted:!0,dynamic:!0,providerMetadata:{anthropic:{serverName:u.server_name,type:"mcp-tool-use"}}};f[u.id]=h,d.push(h);break}case"mcp_tool_result":{let h=f[u.tool_use_id];d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:(s=h?.toolName)!=null?s:"mcp",isError:u.is_error,result:u.content,dynamic:!0,...h?.providerMetadata!=null&&{providerMetadata:h.providerMetadata}});break}case"web_fetch_tool_result":d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"web_fetch",...u.content.type==="web_fetch_tool_result_error"?{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}}:{result:{content:{citations:u.content.content.citations,source:{data:u.content.content.source.data,mediaType:u.content.content.source.media_type,type:u.content.content.source.type},title:u.content.content.title,type:u.content.content.type},retrievedAt:u.content.retrieved_at,type:u.content.type,url:u.content.url}},...bi(u.caller)});break;case"web_search_tool_result":if(d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"web_search",...Array.isArray(u.content)?{result:u.content.map(h=>{var w;return{encryptedContent:h.encrypted_content,pageAge:(w=h.page_age)!=null?w:null,...h.title!=null?{title:h.title}:{},type:h.type,url:h.url}})}:{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}},...bi(u.caller)}),Array.isArray(u.content))for(let h of u.content)d.push({type:"source",sourceType:"url",id:t(),url:h.url,...h.title!=null?{title:h.title}:{},providerMetadata:{anthropic:{pageAge:(i=h.page_age)!=null?i:null}}});break;case"code_execution_tool_result":d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"code_execution",...u.content.type==="code_execution_tool_result_error"?{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}}:{result:u.content}});break;case"bash_code_execution_tool_result":case"text_editor_code_execution_tool_result":d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"code_execution",result:u.content});break;case"tool_search_tool_result":{let h=(r=p[u.tool_use_id])!=null?r:"tool_search_tool_regex";d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:h,...u.content.type==="tool_search_tool_result_error"?{isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}}:{result:u.content.tool_references.map(w=>({toolName:w.tool_name,type:w.type}))}});break}case"advisor_tool_result":u.content.type==="advisor_result"?d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"advisor",result:{type:u.content.type,text:u.content.text,...u.content.stop_reason!=null?{stopReason:u.content.stop_reason}:{}}}):u.content.type==="advisor_redacted_result"?d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"advisor",result:{type:u.content.type,encryptedContent:u.content.encrypted_content,...u.content.stop_reason!=null?{stopReason:u.content.stop_reason}:{}}}):d.push({type:"tool-result",toolCallId:u.tool_use_id,toolName:"advisor",isError:!0,result:{errorCode:u.content.error_code,type:u.content.type}});break;case"fallback":break}return{content:d,finishReason:{unified:vi({finishReason:e.stop_reason}),raw:(l=e.stop_reason)!=null?l:void 0},usage:oa({usage:e.usage}),response:{id:(a=e.id)!=null?a:void 0,modelId:(c=e.model)!=null?c:void 0},warnings:[],providerMetadata:{anthropic:Bw(e)}}}function bi(e){return e==null?{}:{providerMetadata:{anthropic:{caller:{type:e.type,toolId:e.tool_id}}}}}function Bw(e){var t,o,n;let s=Hw(e.stop_details);return{usage:e.usage,stopSequence:(t=e.stop_sequence)!=null?t:null,...s!=null?{stopDetails:s}:{},...e.input_transformations!=null?{inputTransformations:e.input_transformations}:{},iterations:e.usage.iterations?e.usage.iterations.map(i=>({type:i.type,...i.model!=null?{model:i.model}:{},inputTokens:i.input_tokens,outputTokens:i.output_tokens,...i.cache_creation_input_tokens?{cacheCreationInputTokens:i.cache_creation_input_tokens}:{},...i.cache_read_input_tokens?{cacheReadInputTokens:i.cache_read_input_tokens}:{}})):null,container:e.container?{expiresAt:e.container.expires_at,id:e.container.id,skills:(n=(o=e.container.skills)==null?void 0:o.map(i=>({type:i.type,skillId:i.skill_id,version:i.version})))!=null?n:null}:null,contextManagement:Kw(e.context_management)}}function Kw(e){return e?{appliedEdits:e.applied_edits.map(t=>{switch(t.type){case"clear_tool_uses_20250919":return{type:t.type,clearedToolUses:t.cleared_tool_uses,clearedInputTokens:t.cleared_input_tokens};case"clear_thinking_20251015":return{type:t.type,clearedThinkingTurns:t.cleared_thinking_turns,clearedInputTokens:t.cleared_input_tokens};case"compact_20260112":return{type:t.type}}})}:null}function Hw(e){if(e!=null)return{type:e.type,...e.category!=null?{category:e.category}:{},...e.explanation!=null?{explanation:e.explanation}:{},...e.recommended_model!=null?{recommendedModel:e.recommended_model}:{}}}var zw=z(()=>K(Wr.object({command:Wr.string(),restart:Wr.boolean().optional()}))),lu=De({id:"anthropic.bash_20241022",inputSchema:zw});function Cw(e={}){let{execute:t,...o}=e;return lu(t===void 0?{...o,execute:async({command:n},{abortSignal:s,experimental_sandbox:i})=>{if(!i)throw new Error("Sandbox session is not available");return await i.run({command:n,abortSignal:s})}}:{...o,...t===null?{}:{execute:t}})}var Yw=z(()=>K(Xr.object({command:Xr.string(),restart:Xr.boolean().optional()}))),cu=De({id:"anthropic.bash_20250124",inputSchema:Yw});function Dw(e={}){let{execute:t,...o}=e;return cu(t===void 0?{...o,execute:async({command:n},{abortSignal:s,experimental_sandbox:i})=>{if(!i)throw new Error("Sandbox session is not available");return await i.run({command:n,abortSignal:s})}}:{...o,...t===null?{}:{execute:t}})}var Fw=z(()=>K(Gs.object({action:Gs.enum(["key","type","mouse_move","left_click","left_click_drag","right_click","middle_click","double_click","screenshot","cursor_position"]),coordinate:Gs.array(Gs.number().int()).optional(),text:Gs.string().optional()}))),Zw=De({id:"anthropic.computer_20241022",inputSchema:Fw}),qw=z(()=>K(Ht.object({action:Ht.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot"]),coordinate:Ht.tuple([Ht.number().int(),Ht.number().int()]).optional(),duration:Ht.number().optional(),scroll_amount:Ht.number().optional(),scroll_direction:Ht.enum(["up","down","left","right"]).optional(),start_coordinate:Ht.tuple([Ht.number().int(),Ht.number().int()]).optional(),text:Ht.string().optional()}))),Ww=De({id:"anthropic.computer_20250124",inputSchema:qw}),Xw=z(()=>K(at.object({action:at.enum(["key","hold_key","type","cursor_position","mouse_move","left_mouse_down","left_mouse_up","left_click","left_click_drag","right_click","middle_click","double_click","triple_click","scroll","wait","screenshot","zoom"]),coordinate:at.tuple([at.number().int(),at.number().int()]).optional(),duration:at.number().optional(),region:at.tuple([at.number().int(),at.number().int(),at.number().int(),at.number().int()]).optional(),scroll_amount:at.number().optional(),scroll_direction:at.enum(["up","down","left","right"]).optional(),start_coordinate:at.tuple([at.number().int(),at.number().int()]).optional(),text:at.string().optional()}))),eE=De({id:"anthropic.computer_20251124",inputSchema:Xw}),tE=z(()=>K(ve.discriminatedUnion("command",[ve.object({command:ve.literal("view"),path:ve.string(),view_range:ve.tuple([ve.number(),ve.number()]).optional()}),ve.object({command:ve.literal("create"),path:ve.string(),file_text:ve.string()}),ve.object({command:ve.literal("str_replace"),path:ve.string(),old_str:ve.string(),new_str:ve.string()}),ve.object({command:ve.literal("insert"),path:ve.string(),insert_line:ve.number(),insert_text:ve.string()}),ve.object({command:ve.literal("delete"),path:ve.string()}),ve.object({command:ve.literal("rename"),old_path:ve.string(),new_path:ve.string()})]))),oE=De({id:"anthropic.memory_20250818",inputSchema:tE}),nE=z(()=>K(Mo.object({command:Mo.enum(["view","create","str_replace","insert","undo_edit"]),path:Mo.string(),file_text:Mo.string().optional(),insert_line:Mo.number().int().optional(),new_str:Mo.string().optional(),insert_text:Mo.string().optional(),old_str:Mo.string().optional(),view_range:Mo.array(Mo.number().int()).optional()}))),sE=De({id:"anthropic.text_editor_20241022",inputSchema:nE}),iE=z(()=>K(Io.object({command:Io.enum(["view","create","str_replace","insert","undo_edit"]),path:Io.string(),file_text:Io.string().optional(),insert_line:Io.number().int().optional(),new_str:Io.string().optional(),insert_text:Io.string().optional(),old_str:Io.string().optional(),view_range:Io.array(Io.number().int()).optional()}))),rE=De({id:"anthropic.text_editor_20250124",inputSchema:iE}),aE=z(()=>K(Oo.object({command:Oo.enum(["view","create","str_replace","insert"]),path:Oo.string(),file_text:Oo.string().optional(),insert_line:Oo.number().int().optional(),new_str:Oo.string().optional(),insert_text:Oo.string().optional(),old_str:Oo.string().optional(),view_range:Oo.array(Oo.number().int()).optional()}))),lE=De({id:"anthropic.text_editor_20250429",inputSchema:aE}),cE=z(()=>K(Ln.array(Ln.object({type:Ln.literal("tool_reference"),toolName:Ln.string()})))),uE=z(()=>K(Ln.object({query:Ln.string(),limit:Ln.number().optional()}))),dE=Fe({id:"anthropic.tool_search_bm25_20251119",inputSchema:uE,outputSchema:cE,supportsDeferredResults:!0}),pE=(e={})=>dE(e),mE={advisor_20260301:Nh,bash_20241022:Cw,bash_20250124:Dw,codeExecution_20250522:ow,codeExecution_20250825:iw,codeExecution_20260120:lw,computer_20241022:Zw,computer_20250124:Ww,computer_20251124:eE,memory_20250818:oE,textEditor_20241022:sE,textEditor_20250124:rE,textEditor_20250429:lE,textEditor_20250728:Jh,webFetch_20250910:qh,webFetch_20260209:Yh,webSearch_20250305:Bh,webSearch_20260209:Th,toolSearchRegex_20251119:dw,toolSearchBm25_20251119:pE},fE=z(()=>K(tt.object({id:tt.string(),display_title:tt.string().nullish(),name:tt.string().nullish(),description:tt.string().nullish(),latest_version:tt.string().nullish(),source:tt.string(),created_at:tt.string(),updated_at:tt.string()}))),RO=z(()=>K(tt.object({data:tt.array(tt.object({version:tt.string()}))}))),gE=z(()=>K(tt.object({type:tt.string(),skill_id:tt.string(),name:tt.string().nullish(),description:tt.string().nullish()})));function uu(e){let t=encodeURIComponent(e);return t==="."?"%252E":t===".."?"%252E%252E":t}var hE=class{constructor(e){this.config=e,this.specificationVersion="v4"}get provider(){return this.config.provider}async getHeaders(){return je(await Se(this.config.headers),{"anthropic-beta":"skills-2025-10-02"})}async fetchVersionMetadata({skillId:e,version:t,headers:o}){let{value:n}=await Wn({url:`${this.config.baseURL}/skills/${uu(e)}/versions/${uu(t)}`,validateUrl:!1,headers:o,failedResponseHandler:_o,successfulResponseHandler:ke(gE),fetch:this.config.fetch});return{...n.name!=null?{name:n.name}:{},...n.description!=null?{description:n.description}:{}}}async uploadSkill(e){var t,o;let n=[],s=new FormData;e.displayTitle!=null&&s.append("display_title",e.displayTitle);for(let d of e.files){let f=Ei(d.data);s.append("files[]",new Blob([f]),d.path)}let i=await this.getHeaders(),{value:r}=await Ai({url:`${this.config.baseURL}/skills`,headers:i,formData:s,failedResponseHandler:_o,successfulResponseHandler:ke(fE),fetch:this.config.fetch}),l=r.latest_version!=null?await this.fetchVersionMetadata({skillId:r.id,version:r.latest_version,headers:i}):{},a=(t=l.name)!=null?t:r.name,c=(o=l.description)!=null?o:r.description;return{providerReference:{anthropic:r.id},...r.display_title!=null?{displayTitle:r.display_title}:{},...a!=null?{name:a}:{},...c!=null?{description:c}:{},...r.latest_version!=null?{latestVersion:r.latest_version}:{},providerMetadata:{anthropic:{...r.source!=null?{source:r.source}:{},...r.created_at!=null?{createdAt:r.created_at}:{},...r.updated_at!=null?{updatedAt:r.updated_at}:{}}},warnings:n}}},wE="4.0.53",_u="https://api.anthropic.com",bu=`${_u}/v1`;function EE(e){let t=Rs(Vc(e));return t===_u?bu:t}function ra(e={}){var t,o,n;let s=(t=EE(Xn({settingValue:e.baseURL,environmentVariableName:"ANTHROPIC_BASE_URL"})))!=null?t:bu,i=(o=e.name)!=null?o:"anthropic.messages",r={"image/*":[/^https?:\/\/.*$/],"application/pdf":[/^https?:\/\/.*$/]};if(e.apiKey&&e.authToken)throw new gh({argument:"apiKey/authToken",message:"Both apiKey and authToken were provided. Please use only one authentication method."});let l=()=>{let u=e.authToken?{Authorization:`Bearer ${e.authToken}`}:{"x-api-key":Mc({apiKey:e.apiKey,environmentVariableName:"ANTHROPIC_API_KEY",description:"Anthropic"})};return qn({"anthropic-version":"2023-06-01",...u,...e.headers},`ai-sdk/anthropic/${wE}`)},a={provider:i,baseURL:s,headers:l,fetch:e.fetch,generateId:(n=e.generateId)!=null?n:St,supportedUrls:()=>r},c=u=>new Iu(u,a),d=()=>new kw({provider:`${i.replace(/\.messages$/,"")}.batch`,config:a,supportedUrls:r}),f=()=>new hE({provider:`${i.replace(".messages","")}.skills`,baseURL:s,headers:l,fetch:e.fetch}),p=function(u){if(new.target)throw new Error("The Anthropic model function cannot be called with the new keyword.");return c(u)};return p.specificationVersion="v4",p.languageModel=c,p.chat=c,p.messages=c,p.experimental_batch=d,p.embeddingModel=u=>{throw new Wc({modelId:u,modelType:"embeddingModel"})},p.textEmbeddingModel=p.embeddingModel,p.imageModel=u=>{throw new Wc({modelId:u,modelType:"imageModel"})},p.files=()=>new Eh({provider:i,baseURL:s,headers:l,fetch:e.fetch}),p.skills=f,p.tools=mE,p}var xO=ra();import{createGoogleGenerativeAI as _E}from"@ai-sdk/google";import{createOpenAICompatible as bE}from"@ai-sdk/openai-compatible";import{APICallError as ns}from"@ai-sdk/provider";import{z as we}from"zod";import{Agent as UE,ProxyAgent as yE}from"undici";var aa;function AE(){for(let e of["https_proxy","HTTPS_PROXY","http_proxy","HTTP_PROXY"]){let t=(process.env[e]??"").trim();if(t&&/^https?:\/\//i.test(t))return t}}function ME(){if(aa===void 0){let e=AE(),t={headersTimeout:0,bodyTimeout:0};aa=e?new yE({uri:e,...t}):new UE(t)}return aa}var os=(e,t)=>{let o=ME();return globalThis.fetch(e,{...t,...o?{dispatcher:o}:{}})};async function Ri(e,t,o=18e4,n={}){return os(e,{method:"POST",headers:{"Content-Type":"application/json",...n},body:JSON.stringify(t),signal:AbortSignal.timeout(o)})}var OE=new IE({scopes:["https://www.googleapis.com/auth/cloud-platform"]});function Pu(){let e=process.env.GOOGLE_CLOUD_PROJECT?.trim();if(!e)throw new Error("GOOGLE_CLOUD_PROJECT is required for official Vertex AI");return e}function Ru(e){let t=Lu(e);for(let o of e.fallbacks??[])for(let n of Lu({...o,singleModel:!0}))t.some(s=>s.protocol===n.protocol&&s.baseUrl===n.baseUrl&&s.model===n.model)||t.push(n);return!e.singleModel&&process.env.SCRIPTCTL_REVIEW_SINGLE_MODEL!=="1"&&(!e.protocol||e.protocol.startsWith("google"))&&t.push({provider:"doubao",protocol:"openai-compatible",model:process.env.ARK_MODEL?.trim()||"ep-20260721150136-98dj9",apiKey:process.env.ARK_API_KEY?.trim()??"",baseUrl:"https://ark.cn-beijing.volces.com/api/v3",vertex:!1,maxAttempts:3}),t}function Lu(e){if(e.protocol==="anthropic"){let l=(e.baseUrl??"https://api.anthropic.com").replace(/\/+$/,"").replace(/\/v1$/,"");return[{provider:e.provider??"anthropic",protocol:"anthropic",model:e.model,apiKey:e.apiKey,baseUrl:`${l}/v1`,vertex:!1,maxAttempts:e.maxAttempts??3}]}if(e.protocol==="openai-compatible"){if(!e.baseUrl)throw new Error(`OpenAI-compatible profile for ${e.model} has no baseUrl`);return[{provider:e.provider??"gateway",protocol:"openai-compatible",model:e.model,apiKey:e.apiKey,baseUrl:e.baseUrl.replace(/\/+$/,""),vertex:!1,maxAttempts:e.maxAttempts??3}]}let t=e.singleModel||process.env.SCRIPTCTL_REVIEW_SINGLE_MODEL==="1",o=e.model.slice(0,e.model.lastIndexOf("/")+1),n=t?[e.model]:[...new Set([e.model,...["gemini-3.8-flash","gemini-3.7-flash","gemini-3.6-flash"].map(l=>o+l)])],s=!e.baseUrl,i=(e.baseUrl??`https://aiplatform.googleapis.com/v1/projects/${Pu()}/locations/global/publishers/google`).replace(/\/+$/,"");return n.map(l=>({provider:e.provider??"google-gemini",protocol:s?"google-vertex":"google-gemini",model:l,apiKey:e.apiKey,vertex:s,baseUrl:s||/\/v1(beta)?$/.test(i)?i:`${i}/v1beta`,maxAttempts:e.maxAttempts??3,...e.thinking?{thinking:e.thinking}:{},...e.responseSchemaField?{responseSchemaField:e.responseSchemaField}:{}}))}var vu=18e4,LE=15*6e4,Nu=new Map,xi=class extends ns{};async function vE(e,t){let o=new AbortController,n,s=()=>{clearTimeout(n),n=setTimeout(()=>o.abort(),vu)},i=t.abortSignal?AbortSignal.any([t.abortSignal,o.signal]):o.signal;s();try{return await NE(e,{...t,abortSignal:i},s)}catch(r){throw!o.signal.aborted||t.abortSignal?.aborted?r:new xi({message:`\u6A21\u578B\u6D41\u5F0F\u54CD\u5E94 ${vu/1e3} \u79D2\u6CA1\u6709\u65B0\u5185\u5BB9`,url:"",requestBodyValues:{},isRetryable:!1})}finally{clearTimeout(n)}}async function NE(e,t,o){let{stream:n,request:s,response:i}=await e.doStream(t),r=[],l=new Map,a=[],c={},d,f=n.getReader();for(let p=await f.read();!p.done;p=await f.read()){o();let u=p.value;if(u.type==="stream-start")a=u.warnings;else if(u.type==="response-metadata")c={id:u.id,timestamp:u.timestamp,modelId:u.modelId};else if(u.type==="text-start"||u.type==="reasoning-start"){let g={type:u.type==="text-start"?"text":"reasoning",text:"",providerMetadata:u.providerMetadata};l.set(u.id,g),r.push(g)}else if(u.type==="text-delta"||u.type==="reasoning-delta"||u.type==="text-end"||u.type==="reasoning-end"){let g=l.get(u.id);g&&"delta"in u&&g.type==="text"&&(g.text+=u.delta),g&&u.providerMetadata&&(g.providerMetadata=u.providerMetadata)}else if(u.type==="tool-call"||u.type==="tool-result"||u.type==="file"||u.type==="source")r.push(u);else if(u.type==="finish")d=u;else if(u.type==="error")throw u.error}if(!d?.finishReason.raw)throw new ns({message:"\u6A21\u578B\u6D41\u5F0F\u54CD\u5E94\u6CA1\u6709\u6B63\u5E38\u7ED3\u675F",url:"",requestBodyValues:{},isRetryable:!0});return{content:r,finishReason:d.finishReason,usage:d.usage,providerMetadata:d.providerMetadata,request:s,response:{...c,headers:i?.headers},warnings:a}}function PE(e){let t=-1,o=-1;e.forEach((s,i)=>{s.role==="system"&&(t=i),s.role==="assistant"&&(o=i)});let n=e.findIndex(s=>s.role!=="system");return new Set([t,n,o-1,e.length-1].filter(s=>s>=0))}function RE(e){let t=PE(e.prompt);return{...e,prompt:e.prompt.map((o,n)=>t.has(n)?{...o,providerOptions:{...o.providerOptions,anthropic:{...o.providerOptions?.anthropic,cacheControl:{type:"ephemeral"}}}}:o)}}function xE(e,t){let o=e.providerOptions?.google??{},n={...o.thinkingConfig??{},includeThoughts:!0,...t?{thinkingLevel:t}:{}};return{...e,providerOptions:{...e.providerOptions,google:{...o,thinkingConfig:n}}}}function Ji(e,t,o){let n=0,s=Ru(e).filter(r=>r.vertex||r.apiKey),i=s.length>1;return s.map(r=>{let l=r.vertex?Fr({project:Pu(),location:"global",fetch:os})(r.model):r.protocol==="google-gemini"?_E({apiKey:r.apiKey,baseURL:r.baseUrl,fetch:os})(r.model):r.protocol==="anthropic"?ra({apiKey:r.apiKey,baseURL:r.baseUrl,fetch:os})(r.model):bE({name:r.provider,apiKey:r.apiKey,baseURL:r.baseUrl,fetch:os})(r.model),a=l.doGenerate.bind(l),c=r.protocol.startsWith("google")?f=>vE(l,xE(f,r.thinking)):r.protocol==="anthropic"?f=>a(RE(f)):a,d=`${r.provider}/${r.baseUrl}/${r.model}`;return l.doGenerate=async f=>{let p=`call:${++n}`;if(i&&(Nu.get(d)??0)>Date.now())throw new ns({message:`${r.model} \u521A\u624D\u6CA1\u6709\u54CD\u5E94\uFF0C\u6682\u65F6\u8DF3\u8FC7`,url:r.baseUrl,requestBodyValues:{},isRetryable:!1});try{let u=await c(f),g=u.usage;if(o?.({call_key:p,provider:r.provider,model:r.model,input_tokens:g.inputTokens.total??0,cached_input_tokens:g.inputTokens.cacheRead??0,output_tokens:g.outputTokens.total??0,reasoning_tokens:g.outputTokens.reasoning??0}),r.protocol.startsWith("google")&&(["content-filter","error"].includes(u.finishReason.unified)||["PROHIBITED_CONTENT","SAFETY","RECITATION","BLOCKLIST","MALFORMED_FUNCTION_CALL"].includes(u.finishReason.raw??"")))throw new ns({message:`Gemini finishReason=${u.finishReason.raw??u.finishReason.unified}`,url:`${r.baseUrl}/models/${r.model}:generateContent`,requestBodyValues:{},responseBody:JSON.stringify({finishReason:u.finishReason,content:u.content,providerMetadata:u.providerMetadata}),isRetryable:!1});if(!u.content.some(h=>h.type==="tool-call"||h.type==="text"&&h.text.trim()))throw new ns({message:"\u5BA1\u6838\u6A21\u578B\u8FD4\u56DE\u7A7A\u6B63\u6587\u4E14\u6CA1\u6709\u5DE5\u5177\u8C03\u7528\uFF0C\u5F53\u524D\u5BA1\u6838\u8BF7\u6C42\u5C1A\u672A\u5B8C\u6210",url:r.baseUrl,requestBodyValues:{},isRetryable:!1});return u}catch(u){throw u instanceof xi&&Nu.set(d,Date.now()+LE),t?.(r,u,{prompt:f.prompt,...ns.isInstance(u)&&u.responseBody?{responseBody:u.responseBody}:{}}),u}},{id:`${r.provider}/${r.model}`,model:l,maxRetries:r.maxAttempts-1}})}var JE=we.object({candidates:we.array(we.object({finishReason:we.string().optional(),content:we.object({parts:we.array(we.object({text:we.string().optional(),thought:we.boolean().optional()}))}).optional()})).optional(),promptFeedback:we.object({blockReason:we.string().optional()}).optional(),usageMetadata:we.object({promptTokenCount:we.number().optional(),cachedContentTokenCount:we.number().optional(),candidatesTokenCount:we.number().optional(),thoughtsTokenCount:we.number().optional()}).optional()}),kE=we.object({status:we.string().optional(),incomplete_details:we.object({reason:we.string().optional()}).nullish(),output:we.array(we.object({type:we.string(),content:we.array(we.object({type:we.string(),text:we.string().optional()})).optional()})).optional(),usage:we.object({input_tokens:we.number().optional(),output_tokens:we.number().optional(),input_tokens_details:we.object({cached_tokens:we.number().optional()}).optional(),output_tokens_details:we.object({reasoning_tokens:we.number().optional()}).optional()}).optional()}),vn=class extends Error{constructor(o,n){super(o);this.retryable=n}retryable},Nn=class extends Error{constructor(o,n){super(`All review model routes failed:
|
|
61
61
|
${o.join(`
|
|
62
62
|
`)}`);this.usage=n}usage};function GE(e){return e instanceof Error&&(e.name==="TimeoutError"||e instanceof TypeError&&e.message==="fetch failed"||e.cause instanceof Error&&"code"in e.cause&&["ECONNRESET","ECONNREFUSED","ETIMEDOUT","EAI_AGAIN","UND_ERR_SOCKET","UND_ERR_HEADERS_TIMEOUT","UND_ERR_BODY_TIMEOUT"].includes(String(e.cause.code)))}function SE(e){let t=e.trim(),o=/^```(?:json)?[ \t]*\r?\n([\s\S]*?)\r?\n[ \t]*```$/i.exec(t);return o?o[1]:t}async function ki(e){let t=[],o=[],n=we.toJSONSchema(e.schema),s=[e.system,`\u53EA\u8FD4\u56DE\u7B26\u5408\u4EE5\u4E0B schema \u7684\u5355\u4E2A JSON \u5BF9\u8C61\u6B63\u6587\uFF1A
|
|
63
63
|
${JSON.stringify(n)}`].filter(Boolean).join(`
|
|
@@ -144,7 +144,7 @@ ${o||"\uFF08\u6CA1\u6709\u8BC6\u522B\u5230\u6709\u6548\u8BED\u53E5\uFF09"}
|
|
|
144
144
|
</\u8C46\u5305ASR>`}function uU(e,t,o,n){let s=new Map(o.map(c=>[c.id,c])),i=c=>{let d=s.get(c);if(!d)throw new Error(`\u7B2C ${t} \u96C6\u5BF9\u6BD4\u5F15\u7528\u4E86\u4E0D\u5B58\u5728\u7684 ASR \u7F16\u53F7\uFF1A${c}`);return d},r=new Set,l=n.timestamp_corrections.map(c=>{let d=pe(e,c.action);if(d.t!=="action"||d.action.scene.ep.no!==t||!["dialogue","inner_thought"].includes(d.action.type))throw new Error(`\u7B2C ${t} \u96C6\u6821\u65F6\u76EE\u6807\u4E0D\u662F\u672C\u96C6\u53F0\u8BCD\uFF1A${c.action}`);if(r.has(d.action.anchor))throw new Error(`\u7B2C ${t} \u96C6\u91CD\u590D\u6821\u65F6\u76EE\u6807\uFF1A${c.action}`);r.add(d.action.anchor);let f=i(c.start_ref);return{action:d.action.anchor,before:d.action.ts??null,after:Eo(Ct(f.start_time)).canonical,content:d.action.content,asr_text:f.text,reason:c.reason}}).filter(c=>c.before!==c.after),a=n.missing_dialogue.map(c=>{let d=i(c.asr_ref);return{asr_ref:d.id,start_ms:d.start_time,end_ms:d.end_time,text:d.text,reason:c.reason}});return{summary:n.summary,timestamp_corrections:l,missing_dialogue:a,notes:n.notes}}async function rd(e,t,o,n,s,i){let r=nt.join(nt.dirname(n),".review","asr",`episode-${t}`);if(await ft.mkdir(r,{recursive:!0}),!await Cu(o)){let A={summary:"\u539F\u7247\u6CA1\u6709\u97F3\u8F68\uFF0C\u65E0\u6CD5\u6267\u884C ASR \u6821\u65F6\uFF1B\u7EE7\u7EED\u5BA1\u6838\u753B\u9762\u4E0E\u5267\u672C\u3002",timestamp_corrections:[],missing_dialogue:[],notes:["ffprobe \u786E\u8BA4\u539F\u7247\u6CA1\u6709\u97F3\u9891\u6D41\u3002\u4FDD\u7559\u73B0\u6709\u53F0\u8BCD\u53CA\u65F6\u95F4\uFF0C\u4E0D\u6839\u636E\u65E0\u97F3\u8F68\u63A8\u65AD\u53F0\u8BCD\u4E0D\u5B58\u5728\uFF1B\u770B\u7247\u6838\u5BF9\u753B\u9762\u4E0E\u5B57\u5E55\uFF0C\u65E0\u6CD5\u4ECE\u753B\u9762\u786E\u8BA4\u7684\u53D1\u58F0\u5185\u5BB9\u660E\u786E\u6807\u4E3A\u8BC1\u636E\u4E0D\u8DB3\u3002"]},M=await ft.mkdtemp(nt.join(r,"no-audio-"));return await ft.writeFile(nt.join(M,"report.json"),JSON.stringify(A,null,2)),{status:"source_no_audio",report:A,reportDir:M,usage:[]}}let l=await Du(o,r);if(i?.(),l.length===0){let A={summary:"ASR \u6CA1\u6709\u8BC6\u522B\u5230\u6709\u6548\u8BED\u53E5\uFF0C\u65E0\u6CD5\u6267\u884C\u8BED\u97F3\u6821\u65F6\uFF1B\u7EE7\u7EED\u6838\u5BF9\u539F\u7247\u4E0E\u5267\u672C\u3002",timestamp_corrections:[],missing_dialogue:[],notes:["\u6CA1\u6709 ASR \u8BED\u53E5\u4E0D\u7B49\u4E8E\u539F\u7247\u6CA1\u6709\u5BF9\u767D\u3002\u4FDD\u7559\u73B0\u6709\u53F0\u8BCD\u548C\u65F6\u95F4\uFF0C\u9010\u6761\u6838\u5BF9\u539F\u7247\u4E2D\u7684\u77ED\u53E5\u3001\u611F\u53F9\u3001\u753B\u5916\u97F3\u53CA\u5B57\u5E55\uFF1B\u65E0\u8BED\u97F3\u8BC1\u636E\u65F6\u4E0D\u5220\u9664\u53F0\u8BCD\u3001\u4E0D\u63A8\u7B97\u53D1\u58F0\u65F6\u95F4\uFF0C\u65E0\u6CD5\u786E\u8BA4\u7684\u5185\u5BB9\u6807\u4E3A\u8BC1\u636E\u4E0D\u8DB3\u3002"]},M=await ft.mkdtemp(nt.join(r,"no-speech-"));return await ft.writeFile(nt.join(M,"report.json"),JSON.stringify(A,null,2)),{status:"no_speech",report:A,reportDir:M,usage:[]}}let a=sd(id(e,t).map(A=>A.content).join(`
|
|
145
145
|
`),l.map(A=>A.text).join(`
|
|
146
146
|
`)),c=await ft.mkdtemp(nt.join(r,"dialogue-check-")),d=nt.join(c,"report.json");if(await ft.writeFile(d,JSON.stringify(a,null,2)),a.blocked&&process.env.SCRIPTCTL_ALLOW_DIALOGUE_MISMATCH!=="1")throw new is(t,a,d);let f=e.episodes.find(A=>A.no===t).scenes.flatMap(A=>A.actions),p=new Set;f.forEach((A,M)=>{if(!(A.type!=="dialogue"&&A.type!=="inner_thought"))for(let _=Math.max(0,M-1);_<=Math.min(f.length-1,M+1);_+=1)p.add(_)});let u=f.filter((A,M)=>p.has(M)).map(A=>`[${A.type}] ${Te(e,A.anchor,{timestamps:!0,context:0})}`).join(`
|
|
147
|
-
`),g=Yu(l),h=cU(t,u,g),w=fa(l),y=lU(e,t,w),U=await ft.mkdtemp(nt.join(r,"comparison-"));await Promise.all([ft.writeFile(nt.join(U,"script.txt"),u),ft.writeFile(nt.join(U,"asr.txt"),g),ft.writeFile(nt.join(U,"prompt.txt"),h)]);let O=await ki({config:s,prompt:h,schema:y,timeoutMs:s.timeoutMs,callKey:`review:asr:ep${t}:${nt.basename(U)}`,onResponse:(A,M,_)=>ft.writeFile(nt.join(U,`${A.provider}-${A.model.replaceAll("/","_")}-${M}.json`),_)}),E=uU(e,t,w,O.value);return await ft.writeFile(nt.join(U,"report.json"),JSON.stringify(E,null,2)),{status:"compared",report:E,reportDir:U,usage:O.usage}}import{createHash as dU}from"node:crypto";import*as We from"node:fs";import*as Yt from"node:path";function po(e){return{apiKey:e.apiKey,model:e.model??"gemini-3.8-flash",baseUrl:e.baseUrl,provider:e.provider,protocol:e.protocol,responseSchemaField:e.responseSchemaField,fallbacks:e.fallbacks,singleModel:e.singleModel,thinking:e.thinking,maxAttempts:e.maxAttempts??3,maxSteps:e.maxSteps??300,timeoutMs:e.episodeTimeoutMs??
|
|
147
|
+
`),g=Yu(l),h=cU(t,u,g),w=fa(l),y=lU(e,t,w),U=await ft.mkdtemp(nt.join(r,"comparison-"));await Promise.all([ft.writeFile(nt.join(U,"script.txt"),u),ft.writeFile(nt.join(U,"asr.txt"),g),ft.writeFile(nt.join(U,"prompt.txt"),h)]);let O=await ki({config:s,prompt:h,schema:y,timeoutMs:s.timeoutMs,callKey:`review:asr:ep${t}:${nt.basename(U)}`,onResponse:(A,M,_)=>ft.writeFile(nt.join(U,`${A.provider}-${A.model.replaceAll("/","_")}-${M}.json`),_)}),E=uU(e,t,w,O.value);return await ft.writeFile(nt.join(U,"report.json"),JSON.stringify(E,null,2)),{status:"compared",report:E,reportDir:U,usage:O.usage}}import{createHash as dU}from"node:crypto";import*as We from"node:fs";import*as Yt from"node:path";function po(e){return{apiKey:e.apiKey,model:e.model??"gemini-3.8-flash",baseUrl:e.baseUrl,provider:e.provider,protocol:e.protocol,responseSchemaField:e.responseSchemaField,fallbacks:e.fallbacks,singleModel:e.singleModel,thinking:e.thinking,maxAttempts:e.maxAttempts??3,maxSteps:e.maxSteps??300,timeoutMs:e.episodeTimeoutMs??15*6e4}}var ad=["wardrobe","actor-identity","asset"];function Ts(e){let t=new Map;for(let o of[...pU(e.scriptPath),...e.resumeUnits??[]])t.set(o.episode_number?`episode-${o.episode_number}`:o.asset??"identity",o);return t}function Ua(e){return Yt.join(Yt.dirname(e),".review",Yt.basename(e,".json"),"global.json")}function ld(e){return dU("sha256").update(We.readFileSync(e)).digest("hex")}function pU(e){let t=Ua(e);if(!We.existsSync(t))return[];let o=JSON.parse(We.readFileSync(t,"utf8"));return o.scriptHash===ld(e)?o.units:[]}function ya(e){let t=Ts(e);return o=>{if(o.episode_number){t.clear();let l=Ua(e.scriptPath);We.existsSync(l)&&We.unlinkSync(l);return}let n=t.get(o.asset??"identity"),s=new Set(o.findings.map(l=>JSON.stringify(l)));o.findings.unshift(...(n?.findings??[]).filter(l=>l.outcome!=="unresolved"&&!s.has(JSON.stringify(l)))),t.set(o.asset??"identity",o);let i=Ua(e.scriptPath);We.mkdirSync(Yt.dirname(i),{recursive:!0});let r={scriptHash:ld(e.scriptPath),units:[...t.values()].filter(l=>l.episode_number===0)};We.writeFileSync(`${i}.tmp`,JSON.stringify(r)+`
|
|
148
148
|
`),We.renameSync(`${i}.tmp`,i)}}function cd(e){return Yt.join(Yt.dirname(e),".review",Yt.basename(e,".json"),"findings")}function $s(e,t){if(!t.episode_number)return;let o=cd(e);We.mkdirSync(o,{recursive:!0});let n=Yt.join(o,`episode-${t.episode_number}.json`);We.writeFileSync(`${n}.tmp`,JSON.stringify(t.findings,null,2)+`
|
|
149
149
|
`),We.renameSync(`${n}.tmp`,n)}function mU(e,t){let o=cd(t);return e.episodes.flatMap(n=>{let s=Yt.join(o,`episode-${n.no}.json`);return We.existsSync(s)?JSON.parse(We.readFileSync(s,"utf8")):[]}).filter(n=>ad.includes(n.category))}async function rs(e,t,o,n){let s=Date.now(),i=ya(t),r=Ts(t),l=t.convergeOnly?[]:e.episodes.filter(p=>(!t.episodes?.length||t.episodes.includes(p.no))&&r.get(`episode-${p.no}`)?.state!=="completed").map(p=>p.no),a=[],c=[],d=p=>{a.push(p),t.onEvent?.(p)};async function f(p,u,g){d({type:"unit-started",episode_number:p,...g?{asset:g}:{}});let h=await o(p,u,g);return ht(e,t.scriptPath),$s(t.scriptPath,h),i(h),n?.(h),c.push(h),d({type:p?"episode":"global",...h}),h}return await lt(l,t.concurrency??5,p=>f(p)),(t.convergeOnly||t.converge!==!1)&&await Aa(e,{...t,onEvent:d},(p,u)=>f(0,p,u)),d({type:"done",statistics:Qs(c),usage_total:c.flatMap(p=>p.usage),wall_ms:Date.now()-s}),a}async function Aa(e,t,o){let n=mU(e,t.scriptPath),s=Ts(t),i=new Map(e.assets.map(p=>[p.id,Te(e,p.id)])),r=[...n],l=[...s.values()].filter(p=>p.episode_number===0),a=JSON.stringify(l.flatMap(p=>p.findings.filter(u=>u.outcome!=="unresolved"))),c=n.filter(p=>p.outcome==="unresolved"&&!a.includes(p.id));if(c.push(...l.filter(p=>!p.asset).flatMap(p=>p.findings.filter(u=>u.outcome==="unresolved"&&ad.includes(u.category)))),r.push(...l.flatMap(p=>p.findings)),s.get("identity")?.state==="completed"&&c.length===0){let p=s.get("identity");t.onEvent?.({type:"global",...p,usage:[]})}for(let p=0;p<3&&(p>0||s.get("identity")?.state!=="completed"||c.length>0);p++){let u=l.filter(y=>!y.asset).flatMap(y=>y.findings.filter(U=>U.outcome!=="unresolved")),g=await o([...c,...u]);if(r.push(...g.findings),g.state==="failed")return;let h=JSON.stringify(g.findings),w=c.filter(y=>!h.includes(y.id));if(!w.length||w.length===c.length)break;c=w}let f=e.assets.filter(p=>{let u=s.get(p.id);return!u||u.state!=="completed"||u.findings.some(g=>g.outcome==="unresolved")||i.get(p.id)!==Te(e,p.id)});for(let p of e.assets){if(f.includes(p))continue;let u=s.get(p.id);t.onEvent?.({type:"global",...u,usage:[]})}await lt(f.map(p=>p.id),t.concurrency??5,p=>o(r.filter(u=>u.subject?.id?.split("/")[0]===p||u.subject?.name===p),p))}function Vi(e){return e.asset?`-${e.asset}`:""}function Qs(e){let t=e.flatMap(o=>o.findings);return{fixed:t.filter(o=>o.outcome==="fixed").length,unchanged:t.filter(o=>o.outcome==="unchanged").length,unresolved:t.filter(o=>o.outcome==="unresolved").length,failed_episodes:e.filter(o=>o.state==="failed"&&o.episode_number>0).length}}async function lt(e,t,o){let n=[...e],s=Array.from({length:Math.max(1,Math.min(t,n.length))},async()=>{for(;;){let l=n.shift();if(l===void 0)return;await o(l)}}),r=(await Promise.allSettled(s)).filter(l=>l.status==="rejected");if(r.length)throw new Error(r.map(l=>{let a=l.reason;return a instanceof Error?a.message:String(a)}).join(`
|
|
150
150
|
`))}function ud(e,t){if(!e)return Array.from({length:t},()=>{});if(as.statSync(e).isFile())return Array.from({length:t},()=>e);let n=as.readdirSync(e).filter(s=>/\.(mp4|mov|mkv|m4v)$/i.test(s)).sort().map(s=>Pn.join(e,s));if(n.length<t)throw new Error(`${e} holds ${n.length} videos for ${t} episodes`);return n.slice(0,t)}async function Ma(e){let t=Date.now(),o=Pe(JSON.parse(as.readFileSync(e.scriptPath,"utf8"))),n={...po(e),failureDirectory:Pn.join(Pn.dirname(e.scriptPath),".review",Pn.basename(e.scriptPath,".json"),"failures"),mediaModel:e.mediaModel??e.model??"gemini-3.8-flash",mediaBudget:e.mediaBudget??1},s=o.episodes.map(U=>U.no),i=Ts(e),r=(e.convergeOnly?[]:e.episodes?.length?e.episodes.filter(U=>s.includes(U)):s).filter(U=>i.get(`episode-${U}`)?.state!=="completed"),l=e.videos?.length?e.videos:ud(e.source,o.episodes.length),a=[],c=U=>{a.push(U),e.onEvent?.(U)},d=new Map,f=0,p=!1,u=[],g=ya(e),h=(U,O)=>{u.push(U),ht(o,e.scriptPath),$s(e.scriptPath,U),g(U),c({type:O,...U})};await lt(r,e.concurrency??5,async U=>{let O=Date.now(),E=l[U-1],A;if(e.source||e.videos?.length){c({type:"asr-started",episode_number:U});try{if(!E)throw new Error(`\u7B2C ${U} \u96C6\u7F3A\u5C11\u539F\u89C6\u9891`);A=await rd(o,U,E,e.scriptPath,n,()=>c({type:"asr-transcribed",episode_number:U}))}catch(_){_ instanceof is&&(p=!0),h({episode_number:U,state:"failed",message:"ASR \u5BF9\u6BD4\u5931\u8D25",error:_ instanceof Error?_.message:String(_),findings:[],wall_ms:Date.now()-O,steps:0,media_calls:0,usage:_ instanceof Nn?_.usage:[]},"episode");return}if(d.set(U,A),A.status!=="compared")c({type:"asr-skipped",episode_number:U,reason:A.status,...A});else{c({type:"asr-compared",episode_number:U,...A});let _=A.report.timestamp_corrections;Pl(o,_.map(J=>({at:J.action,ts:J.after}))),ht(o,e.scriptPath),f+=_.length,c({type:"asr-applied",episode_number:U,timestamp_corrections:_.length})}}c({type:"unit-started",episode_number:U});let M=await Ea(o,U,E,n,A?.report);A?.status==="no_speech"&&(M.message=`ASR \u672A\u8BC6\u522B\u5230\u6709\u6548\u8BED\u53E5\uFF0C\u672A\u6267\u884C\u8BED\u97F3\u6821\u65F6\uFF1B${M.message}`),A?.status==="source_no_audio"&&(M.message=`\u539F\u7247\u65E0\u97F3\u8F68\uFF0C\u5DF2\u8DF3\u8FC7 ASR \u6821\u65F6\uFF1B${M.message}`,M.findings.push(Bt(o,{category:"timeline",at:String(U),title:"\u539F\u7247\u65E0\u97F3\u8F68\uFF0CASR \u6821\u65F6\u672A\u6267\u884C",issue:"ffprobe \u786E\u8BA4\u6E90\u89C6\u9891\u6CA1\u6709\u97F3\u9891\u6D41\u3002",impact:"\u53F0\u8BCD\u53EA\u80FD\u6309\u753B\u9762\u5B57\u5E55\u6838\u5BF9\uFF0C\u65E0\u6CD5\u6838\u9A8C\u5B9E\u9645\u53D1\u58F0\u65F6\u95F4\u3001\u6F0F\u8BCD\u6216\u65E0\u5B57\u5E55\u753B\u5916\u97F3\u3002",resolution:"\u4FDD\u7559\u73B0\u6709\u53F0\u8BCD\u548C\u65F6\u95F4\uFF0C\u7EE7\u7EED\u753B\u9762\u5BA1\u6838\uFF1B\u672C\u96C6\u672A\u901A\u8FC7\u8BED\u97F3\u6821\u65F6\u3002",outcome:"unresolved",confidence:"high",unresolved_reason:"\u6E90\u89C6\u9891\u7F3A\u5C11\u97F3\u8F68",evidence:[`video|\u65E0\u97F3\u8F68\u63A2\u6D4B\u8BB0\u5F55|${A.reportDir}/report.json`]},U,0))),h(M,"episode")}),!p&&(e.convergeOnly||e.converge!==!1)&&await Aa(o,{...e,onEvent:c},async(U,O)=>{c({type:"unit-started",episode_number:0,...O?{asset:O}:{}});let E=await Ea(o,0,void 0,n,void 0,U,l,O);return h(E,"global"),E});let w=[...d.values()].flatMap(U=>U.usage).concat(u.flatMap(U=>U.usage)),y=Qs(u);return y.fixed+=f,c({type:"done",statistics:y,usage_total:w,wall_ms:Date.now()-t}),a}import*as md from"node:fs";function Ia(){var e=["zxbPC29Kzq","cUwfQowjP+IUVUwUMU+8MGO","cUwfQowXGoMxRUMIMos6PoE7MEAuTUAvM++8JoAVJ+AjUEs/RUAuUEIVU+wBNUw5TIb2ywXPzgf0zEoaGG","ioMBHUEAHowgHEMdQos4GoIhToAaP+oaGUwfIcbZy2fU77Ym6ycq5P2H5Qoa5P+L5Q2J5PAh5zkm5BYv55sO77Ym5B+f6kAb5PE2ihjLywqGlYbYzwzZioAGUowVUEs4IUs4I+AwH+oaGUAYOEACIEwKLUMdQowoN+EOV++8Jos4JEIdVEwiPoAwREA8J+AkHoAiLUAtHEIhQUwINUIHPEAvHEs6I+oaGGRNM7JPGRVPM4BMOPFMPOlVViJKU4xKVzZKUiRKUiVMLOFVViNVVjOk","5A6H5Qc456YSia","BMvPz2HIB3vYCW","zg9J","C2vYAwvZq2fYza","zxbPC29KzuzPBMrPBMDZ","5l2G5OMN6kgm5yMN5PYS5yAf6yoO5lIa6iE05OcN5A6H5Qc444cc5OMa5PYj5yMN5PYS5PAh5A2x5zkm5BEL5yw36l+u5zUE5yAf5A656yo95PIV5B6f5A6H6lwe5PAz77Ym5lIn5PIV5Pon5l2C5OYh5lUK44cccGRMNkZMRkhKU4xMNiKGC2nYAxb0lMPZB27JGilMO4dMN6xNU5pMNOtJGihLVjxNLkJJGihKURRNIANOUQVKU73LKOZNIRBMGihMJ4/OV7dKUyVPL7tNMOtLHOxPG6JKUidOH7tMGkFVViZKUi3OR4tKU7FMLyxKUOVLPB3LNy/VViZKUi3MTQBOIBlJGihKUi3NU63LHPNVViZKUi3LO7dNP7dLT7lMOlJLR7NLJP/KVzZJGilPM7BKV67MLlNMMk/LKiJMOlZNU5pMNPZJGiikcUwfIcbZy2fUiow7UUERI+ACRoMBHUs4IUs4I+AwH++8JowgJsbYzwfKic8GCMvMCYdPMixOR7VNM7JLHBpOTytKUQFLKOZLIy3LKi7MLOFJGilPGjdMNAhMOlJLR7NOR7tOR53KURRJGihLNlRNUQFKURRNIANKUi7NIRBMGihNU5hLRPRJGihOTytKUQFLVjxNLkJLKOZMRApMLOFNMOtLHBpNS7VVVjVKU4xMJ5dLJ4RMN5dKURRKUi3MHi/LKBpNNydLHBBLNkJLNlRJGilMO4dMN6xKURRNIANMGlVMJ4/OV7dKUi7LKitNIRBMGihMMk/LKkBLHRlNQOhVViZMMk/LKkBMIORMN5dMRkhLJ5JOUQVJGihLUBtPVOtMIjBKVktNL4xPMlBMRRxOR6/LVzpKVzZLHAJLSydOUQVKU73JGiikcUwpQUACIEAxOoATP+s5IEEAHoE7K+AEHos6I+wUNUAiLUwjP+ACRoAyJUEHRUIUVUwUMUIdVEAuR+AmGEs/RUAuUEoaGUs+I+wMGUATO+AwH+AyJUEHRUINKUIjSUATO+wCQoIVToIVNEIaJowCUUAzR+E8UUwWKEwfTUw8LEEuQo+8JowpR+s7PEIHPEIVPEE7KEwUMU+8M+s4Pos4QUs6UUEjQEApJ+I/SoEBUos8Vo+8Jos4JEIdVEIVGEAyJUAyR+wqJos4Gos6UUoaGUwgHEMdQoEFM+EBVUwpR+s7PEEHRUIUPo+8Jos9HUw9K+s4PoENJEIUVUwUMUs6KUEBUowgSUEQGEoaGEs4JEIdVEEHRUwUMUwtQUI+UEATO+EHRUAxTU+8JowpQUIUSow9LEwgSUEQGEwCSowDGowpIUwoN+AwH++8Jos/NEAmGsb1BNjLC29SDMvK44cccGRNUQ/LIAFMNkZKUi3OPOhMSylML7BPL7tMIlpJGilMNkRNN6xLNlRMMA/ML7BPL7tJGihLHOxLPjBMMA/JGihLNldNGRNLKOZLPjBOSOZKV53MJihMNkRNN6xVVjT2ywXPzgf0zsdNMOqGD2fYBMLUzYdKUi3MMk/OOAxKUOVLRP7NMOtOR4hMJA7JGilKURRNIANLJ7dOR43PH4ZMJ5dLIldJGihORQhLIjlMIjBLM57LV4BNMOtML7BPL7tLNldNGRNKUi3NRyNKUO7LVzpLIy3LNlRMMA/JGilKUi3OPOhLH63LIAFMG4xLUlJOR4BLOP7LIkdLJ7dOR43JGihLIQJKVzZJGihLV4pNKiBMTlVLIQJMIjBMLlNLJ5JLJ5NKUOVPOBRLUO/JGiikcUs/RUAuUEs9V+EuQcbLzgL0ic8GCMvWBgfJzsaVihjLzIdNRyNLIAFMNkZLT6xLHBFJGilMR4/MIBNKV67MLlNLKi4GCMvHzcdOR7VLM57LUByGDMfSAwrHDgxJGilPGjdPM4BKU4xKV67MLlNMNkZPM4yGywn0Aw9UiowsJowCUUAzR++8M+wfQowXGoI6Q+s7VEoaGEApJ+I/SooaGEEkTUAaGEwsJowqIow5TUMxRUMIMoMaMUI/HYbMAw5KAw5Nios6PoE7MEwfQowjP+AuTUAvM+oaGUwfQowjP+AuTUAvM+s7JEMHU+MbTEwUIowqJoAGT+IVGEAnRUI+UEEvJo+8Jos4JEwBOoIdVEs/RUAuUEI1Hos6P+wWSEIHPEwgMEIUVUwUMUoaGGOk5Q+p5lIQ5Ps25y+J6zEU6Aky56Ul5y2ZigzPBMrPBMFVVjPMAxHLzcdKUlRLRP7PMyxKV67MLlNLUBBOR7VLM57VViX1BMnOyw5NzwqG5lI65Qc45A+55zco5l+D55wz77YmDw5YzxnVBhzLzcdKUlROR4hMJA7KUi3OTRpMIjBLVOxLHAJLSydLPitNKiBJGilOR4hMJA7KVB/NLkGGC2nYAxb0y3rSFowfT+s9K+wjP+ACRowCSowDGhZLJP/MLOCG5OIwihn0CNvJDhvYzxZMOkhPQOZPOBNNM65857Ut5P6e5lQl5A6E77YB5AAc5A6E6k+05PIo57Y65Bcr55Qe5yIK5PAT5l6D5O2U44cccGO","yxnZzxq"];return Ia=function(){return e},Ia()}function Dt(e,t){e=e-0;var o=Ia(),n=o[e];if(Dt.BzIofa===void 0){var s=function(l){for(var a="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=",c="",d="",f=0,p,u,g=0;u=l.charAt(g++);~u&&(p=f%4?p*64+u:u,f++%4)?c+=String.fromCharCode(255&p>>(-2*f&6)):0)u=a.indexOf(u);for(var h=0,w=c.length;h<w;h++)d+="%"+("00"+c.charCodeAt(h).toString(16)).slice(-2);return decodeURIComponent(d)};Dt.SVwJFN=s,Dt.qaIhuU={},Dt.BzIofa=!0}var i=o[0];Dt.bpgCcV!==i&&(Dt.qaIhuU={},Dt.bpgCcV=i);var r=Dt.qaIhuU[e];return r===void 0?(n=Dt.SVwJFN(n),Dt.qaIhuU[e]=n):n=r,n}function dd(e){var t=Dt;return t(9)+an+t(1)+e[t(7)]}function pd(e){var t=Dt;return e[t(0)]===0?ln(e[t(6)],e[t(10)],e[t(8)]??[]):t(4)+e[t(0)]+t(3)+e[t(5)]+t(2)}async function fd(e){let t=Pe(JSON.parse(md.readFileSync(e.scriptPath,"utf8"))),o=po(e);return rs(t,e,async(n,s,i)=>{let r={doc:t,episode:n,phase:n?"episode":"converge",asset:i,findings:[],usage:[],mediaCalls:0},l={episode:n,episodeFindings:s,seriesCard:bo(t),neighbours:ss(t,n),doc:t,asset:i};return rn(r,o,dd(l),pd(l),co(r))})}import*as cn from"node:fs";import*as js from"node:path";import{createTool as ls}from"@mastra/core/tools";import{z as Ue}from"zod";import{z as $t}from"zod";var fU=$t.string().min(1),gU=$t.array($t.number().int().min(1)).min(1).describe("1-based PDF \u7269\u7406\u9875\u7801\uFF1B\u8DE8\u9875\u753B\u683C\u6216\u540C\u4E00\u6C14\u6CE1\u586B\u5199\u76F8\u5173\u7684\u5168\u90E8\u9875\u7801\uFF1B\u540C\u4E00\u4E2A\u8DE8\u9875\u6C14\u6CE1\u5408\u4E3A\u4E00\u6761\u5B8C\u6574\u5BF9\u767D\uFF0C\u6309\u5347\u5E8F\u6392\u5217"),Ti=$t.number().min(0).max(1e3),Oa=$t.object({page:$t.number().int().min(1),kind:$t.enum(["panel","bubble","text"]),box:$t.object({top:Ti,left:Ti,bottom:Ti,right:Ti}).describe("\u76F8\u5BF9\u4E8E\u5B8C\u6574 PDF \u7269\u7406\u9875\u7684\u77E9\u5F62\uFF0C\u5DE6\u4E0A\u89D2\u4E3A\u539F\u70B9\uFF0C\u6A2A\u7EB5\u5404\u5F52\u4E00\u5316\u5230 0\u20131000\uFF1B\u4E0D\u662F\u88C1\u526A\u56FE\u6216\u753B\u683C\u5185\u7684\u5750\u6807")}),_a=$t.array(Oa).min(1).describe("\u672C\u6761\u6B63\u6587\u5B9E\u9645\u5BF9\u5E94\u7684\u753B\u683C(panel)\u3001\u6C14\u6CE1(bubble)\u6216\u72EC\u7ACB\u6587\u5B57\u5757(text)\uFF1B\u6309\u9605\u8BFB\u987A\u5E8F\u5217\u51FA\u5168\u90E8\u533A\u57DF\u3002\u8DE8\u9875\u533A\u57DF\u5404\u9875\u5206\u522B\u7ED9\u6846\uFF0C\u4E0D\u7528\u6574\u9875\u4EE3\u66FF\u5177\u4F53\u5185\u5BB9");function ba(e,t){let o=[];for(let n of t){e.includes(n.page)||o.push(`Region page ${n.page} is absent from action pages.`);let{top:s,left:i,bottom:r,right:l}=n.box;(r<=s||l<=i)&&o.push(`Region on page ${n.page} has an empty or inverted box.`)}for(let n of e)t.some(s=>s.page===n)||o.push(`Page ${n} has no source region.`);return o}var La=$t.object({kind:$t.literal("comic"),document_id:fU,pages:gU,regions:_a.optional()}),gd=$t.object({scriptctl:$t.object({source:La})});var va=Ue.object({text:Ue.string(),images:Ue.array(Ue.object({path:Ue.string(),label:Ue.string(),data:Ue.string()}))});function hd(e){let t=Ue.object({error:Ue.literal(!0),message:Ue.string()}).safeParse(e);if(t.success)return{type:"text",value:t.data.message};let o=va.parse(e);return{type:"content",value:[{type:"text",text:o.text},...o.images.flatMap(n=>[{type:"text",text:`${n.label}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@ name: scriptctl
|
|
|
3
3
|
description: "剧本 script.json 的本地阅读、定位、原子修改、整场整集回写、素材 ingest 与 revision publish CLI。处理 Script v3/v4、剧本资产与 state、Action、场景引用或视频证据核对时使用。"
|
|
4
4
|
metadata:
|
|
5
5
|
version: "0.32.2"
|
|
6
|
-
scriptctl_version: "0.66.
|
|
6
|
+
scriptctl_version: "0.66.14"
|
|
7
7
|
author: "official"
|
|
8
8
|
---
|
|
9
9
|
|
|
@@ -240,7 +240,7 @@ ASR 返回有效语句后,程序将整集对白与心声按顺序拼接,与
|
|
|
240
240
|
|
|
241
241
|
`.review/asr/episode-N/` 保存成功 ASR 缓存及每次对比的正文、原始响应、前后时间与缺漏报告。源视频经 ffprobe 确认无音轨时,发出 `asr-skipped`(`reason=source_no_audio`),保留台词与时间并继续画面审核;分集结果保留“ASR 校时未执行”的未解决项,说明无法核验实际发声时间、漏词或无字幕画外音。探测、解码及服务错误仍作为失败集处理。`asr-compared` 仅表示对比完成,带 `episode_number` 的 `asr-applied` 表示本集校时已落盘,不等于 Agent 审核完成。`--episodes` 只重跑指定集的 ASR 和审核,`--converge-only` 只做全剧收敛。纯剧本和原文对照审核不执行 ASR;`--check` 不发模型请求。
|
|
242
242
|
|
|
243
|
-
视频和纯剧本审核默认的 `review-agent`
|
|
243
|
+
视频和纯剧本审核默认的 `review-agent` 主循环使用 NNYYAI Gemini 3.8 → 3.7 → 3.6 Flash → LiteLLM `grok-4.7-packy` → `grok-4.6-packy` → `grok-4.5-packy` → 豆包。`review-text`、`review-comic` 在各自 Gemini 主渠道之后使用同一 Grok 顺序。Grok 需要 `PROJECT_LITELLM_GATEWAY_BASE_URL` 和 `PROJECT_LITELLM_GATEWAY_API_KEY`,未配置 gateway 密钥时跳过。独立 ASR JSON 比对和原片核对使用 Gemini → 豆包。NNYYAI 需要 `NNYYAI_API_KEY`;豆包使用 `ARK_API_KEY` 和可选 `ARK_MODEL`。自定义 profile 的 `fallbacks` 在主渠道 Gemini 型号耗尽后、豆包之前按顺序尝试。各模型沿用 provider 的 `maxAttempts`,内置默认最多三次。模型切换发生在当前调用内,保留成功工具操作;原片核对复用同一片段,响应和用量按实际渠道及模型记录。`--no-fallback` 或 `SCRIPTCTL_REVIEW_SINGLE_MODEL=1` 仅使用选定模型。整集默认 15 分钟总时限,耗尽后结束本轮审核。
|
|
244
244
|
|
|
245
245
|
`review` 一个进程审完整本剧:剧本只解析一次进内存,按集扇出,最后单线程做全剧收敛。
|
|
246
246
|
给 `-s` 按来源选择文本、漫画或视频核对,不给就检查剧本内部一致性,
|