-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.js
More file actions
51 lines (48 loc) · 83.7 KB
/
main.js
File metadata and controls
51 lines (48 loc) · 83.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
var{defineProperty:R0,getOwnPropertyNames:O1,getOwnPropertyDescriptor:H1}=Object,M1=Object.prototype.hasOwnProperty;var H4=new WeakMap,D1=(w)=>{var X=H4.get(w),Z;if(X)return X;if(X=R0({},"__esModule",{value:!0}),w&&typeof w==="object"||typeof w==="function")O1(w).map(($)=>!M1.call(X,$)&&R0(X,$,{get:()=>w[$],enumerable:!(Z=H1(w,$))||Z.enumerable}));return H4.set(w,X),X};var A1=(w,X)=>{for(var Z in X)R0(w,Z,{get:X[Z],enumerable:!0,configurable:!0,set:($)=>X[Z]=()=>$})};var U2={};A1(U2,{migrateSettings:()=>q1,default:()=>C4});module.exports=D1(U2);var U1=require("obsidian");var m=require("obsidian");function V(w,X,Z,$,z){if($==="m")throw TypeError("Private method is not writable");if($==="a"&&!z)throw TypeError("Private accessor was defined without a setter");if(typeof X==="function"?w!==X||!z:!X.has(w))throw TypeError("Cannot write private member to an object whose class did not declare it");return $==="a"?z.call(w,Z):z?z.value=Z:X.set(w,Z),Z}function Y(w,X,Z,$){if(Z==="a"&&!$)throw TypeError("Private accessor was defined without a getter");if(typeof X==="function"?w!==X||!$:!X.has(w))throw TypeError("Cannot read private member from an object whose class did not declare it");return Z==="m"?$:Z==="a"?$.call(w):$?$.value:X.get(w)}var k0=function(){let{crypto:w}=globalThis;if(w?.randomUUID)return k0=w.randomUUID.bind(w),w.randomUUID();let X=new Uint8Array(1),Z=w?()=>w.getRandomValues(X)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,($)=>(+$^Z()&15>>+$/4).toString(16))};function h(w){return typeof w==="object"&&w!==null&&(("name"in w)&&w.name==="AbortError"||("message"in w)&&String(w.message).includes("FetchRequestCanceledException"))}var qw=(w)=>{if(w instanceof Error)return w;if(typeof w==="object"&&w!==null){try{if(Object.prototype.toString.call(w)==="[object Error]"){let X=Error(w.message,w.cause?{cause:w.cause}:{});if(w.stack)X.stack=w.stack;if(w.cause&&!X.cause)X.cause=w.cause;if(w.name)X.name=w.name;return X}}catch{}try{return Error(JSON.stringify(w))}catch{}}return Error(w)};class Q extends Error{}class A extends Q{constructor(w,X,Z,$){super(`${A.makeMessage(w,X,Z)}`);this.status=w,this.headers=$,this.requestID=$?.get("request-id"),this.error=X}static makeMessage(w,X,Z){let $=X?.message?typeof X.message==="string"?X.message:JSON.stringify(X.message):X?JSON.stringify(X):Z;if(w&&$)return`${w} ${$}`;if(w)return`${w} status code (no body)`;if($)return $;return"(no status code or body)"}static generate(w,X,Z,$){if(!w||!$)return new t({message:Z,cause:qw(X)});let z=X;if(w===400)return new Hw(w,z,Z,$);if(w===401)return new Mw(w,z,Z,$);if(w===403)return new Dw(w,z,Z,$);if(w===404)return new Aw(w,z,Z,$);if(w===409)return new Ew(w,z,Z,$);if(w===422)return new Tw(w,z,Z,$);if(w===429)return new Sw(w,z,Z,$);if(w>=500)return new Fw(w,z,Z,$);return new A(w,z,Z,$)}}class F extends A{constructor({message:w}={}){super(void 0,void 0,w||"Request was aborted.",void 0)}}class t extends A{constructor({message:w,cause:X}){super(void 0,void 0,w||"Connection error.",void 0);if(X)this.cause=X}}class Ow extends t{constructor({message:w}={}){super({message:w??"Request timed out."})}}class Hw extends A{}class Mw extends A{}class Dw extends A{}class Aw extends A{}class Ew extends A{}class Tw extends A{}class Sw extends A{}class Fw extends A{}var T1=/^[a-z][a-z0-9+.-]*:/i,M4=(w)=>{return T1.test(w)},g0=(w)=>(g0=Array.isArray,g0(w)),b0=g0;function W0(w){if(typeof w!=="object")return{};return w??{}}function D4(w){if(!w)return!0;for(let X in w)return!1;return!0}function A4(w,X){return Object.prototype.hasOwnProperty.call(w,X)}var E4=(w,X)=>{if(typeof X!=="number"||!Number.isInteger(X))throw new Q(`${w} must be an integer`);if(X<0)throw new Q(`${w} must be a positive integer`);return X};var Y0=(w)=>{try{return JSON.parse(w)}catch(X){return}};var T4=(w)=>new Promise((X)=>setTimeout(X,w));var u="0.78.0";var L4=()=>{return typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u"};function S1(){if(typeof Deno<"u"&&Deno.build!=null)return"deno";if(typeof EdgeRuntime<"u")return"edge";if(Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]")return"node";return"unknown"}var F1=()=>{let w=S1();if(w==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":u,"X-Stainless-OS":F4(Deno.build.os),"X-Stainless-Arch":S4(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version==="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":u,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(w==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":u,"X-Stainless-OS":F4(globalThis.process.platform??"unknown"),"X-Stainless-Arch":S4(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let X=I1();if(X)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":u,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${X.browser}`,"X-Stainless-Runtime-Version":X.version};return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":u,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};function I1(){if(typeof navigator>"u"||!navigator)return null;let w=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:X,pattern:Z}of w){let $=Z.exec(navigator.userAgent);if($){let z=$[1]||0,W=$[2]||0,K=$[3]||0;return{browser:X,version:`${z}.${W}.${K}`}}}return null}var S4=(w)=>{if(w==="x32")return"x32";if(w==="x86_64"||w==="x64")return"x64";if(w==="arm")return"arm";if(w==="aarch64"||w==="arm64")return"arm64";if(w)return`other:${w}`;return"unknown"},F4=(w)=>{if(w=w.toLowerCase(),w.includes("ios"))return"iOS";if(w==="android")return"Android";if(w==="darwin")return"MacOS";if(w==="win32")return"Windows";if(w==="freebsd")return"FreeBSD";if(w==="openbsd")return"OpenBSD";if(w==="linux")return"Linux";if(w)return`Other:${w}`;return"Unknown"},I4,B4=()=>{return I4??(I4=F1())};function j4(){if(typeof fetch<"u")return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new Anthropic({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function h0(...w){let X=globalThis.ReadableStream;if(typeof X>"u")throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new X(...w)}function K0(w){let X=Symbol.asyncIterator in w?w[Symbol.asyncIterator]():w[Symbol.iterator]();return h0({start(){},async pull(Z){let{done:$,value:z}=await X.next();if($)Z.close();else Z.enqueue(z)},async cancel(){await X.return?.()}})}function Iw(w){if(w[Symbol.asyncIterator])return w;let X=w.getReader();return{async next(){try{let Z=await X.read();if(Z?.done)X.releaseLock();return Z}catch(Z){throw X.releaseLock(),Z}},async return(){let Z=X.cancel();return X.releaseLock(),await Z,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function P4(w){if(w===null||typeof w!=="object")return;if(w[Symbol.asyncIterator]){await w[Symbol.asyncIterator]().return?.();return}let X=w.getReader(),Z=X.cancel();X.releaseLock(),await Z}var y4=({headers:w,body:X})=>{return{bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(X)}};function k4(w){let X=0;for(let z of w)X+=z.length;let Z=new Uint8Array(X),$=0;for(let z of w)Z.set(z,$),$+=z.length;return Z}var f4;function Lw(w){let X;return(f4??(X=new globalThis.TextEncoder,f4=X.encode.bind(X)))(w)}var R4;function _0(w){let X;return(R4??(X=new globalThis.TextDecoder,R4=X.decode.bind(X)))(w)}var I,L;class p{constructor(){I.set(this,void 0),L.set(this,void 0),V(this,I,new Uint8Array,"f"),V(this,L,null,"f")}decode(w){if(w==null)return[];let X=w instanceof ArrayBuffer?new Uint8Array(w):typeof w==="string"?Lw(w):w;V(this,I,k4([Y(this,I,"f"),X]),"f");let Z=[],$;while(($=j1(Y(this,I,"f"),Y(this,L,"f")))!=null){if($.carriage&&Y(this,L,"f")==null){V(this,L,$.index,"f");continue}if(Y(this,L,"f")!=null&&($.index!==Y(this,L,"f")+1||$.carriage)){Z.push(_0(Y(this,I,"f").subarray(0,Y(this,L,"f")-1))),V(this,I,Y(this,I,"f").subarray(Y(this,L,"f")),"f"),V(this,L,null,"f");continue}let z=Y(this,L,"f")!==null?$.preceding-1:$.preceding,W=_0(Y(this,I,"f").subarray(0,z));Z.push(W),V(this,I,Y(this,I,"f").subarray($.index),"f"),V(this,L,null,"f")}return Z}flush(){if(!Y(this,I,"f").length)return[];return this.decode(`
`)}}I=new WeakMap,L=new WeakMap;p.NEWLINE_CHARS=new Set([`
`,"\r"]);p.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function j1(w,X){for(let z=X??0;z<w.length;z++){if(w[z]===10)return{preceding:z,index:z+1,carriage:!1};if(w[z]===13)return{preceding:z,index:z+1,carriage:!0}}return null}function g4(w){for(let $=0;$<w.length-1;$++){if(w[$]===10&&w[$+1]===10)return $+2;if(w[$]===13&&w[$+1]===13)return $+2;if(w[$]===13&&w[$+1]===10&&$+3<w.length&&w[$+2]===13&&w[$+3]===10)return $+4}return-1}var V0={off:0,error:200,warn:300,info:400,debug:500},d0=(w,X,Z)=>{if(!w)return;if(A4(V0,w))return w;S(Z).warn(`${X} was set to ${JSON.stringify(w)}, expected one of ${JSON.stringify(Object.keys(V0))}`);return};function Bw(){}function J0(w,X,Z){if(!X||V0[w]>V0[Z])return Bw;else return X[w].bind(X)}var P1={error:Bw,warn:Bw,info:Bw,debug:Bw},b4=new WeakMap;function S(w){let X=w.logger,Z=w.logLevel??"off";if(!X)return P1;let $=b4.get(X);if($&&$[0]===Z)return $[1];let z={error:J0("error",X,Z),warn:J0("warn",X,Z),info:J0("info",X,Z),debug:J0("debug",X,Z)};return b4.set(X,[Z,z]),z}var _=(w)=>{if(w.options)w.options={...w.options},delete w.options.headers;if(w.headers)w.headers=Object.fromEntries((w.headers instanceof Headers?[...w.headers]:Object.entries(w.headers)).map(([X,Z])=>[X,X.toLowerCase()==="x-api-key"||X.toLowerCase()==="authorization"||X.toLowerCase()==="cookie"||X.toLowerCase()==="set-cookie"?"***":Z]));if("retryOfRequestLogID"in w){if(w.retryOfRequestLogID)w.retryOf=w.retryOfRequestLogID;delete w.retryOfRequestLogID}return w};var jw;class B{constructor(w,X,Z){this.iterator=w,jw.set(this,void 0),this.controller=X,V(this,jw,Z,"f")}static fromSSEResponse(w,X,Z){let $=!1,z=Z?S(Z):console;async function*W(){if($)throw new Q("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");$=!0;let K=!1;try{for await(let J of y1(w,X)){if(J.event==="completion")try{yield JSON.parse(J.data)}catch(N){throw z.error("Could not parse message into JSON:",J.data),z.error("From chunk:",J.raw),N}if(J.event==="message_start"||J.event==="message_delta"||J.event==="message_stop"||J.event==="content_block_start"||J.event==="content_block_delta"||J.event==="content_block_stop")try{yield JSON.parse(J.data)}catch(N){throw z.error("Could not parse message into JSON:",J.data),z.error("From chunk:",J.raw),N}if(J.event==="ping")continue;if(J.event==="error")throw new A(void 0,Y0(J.data)??J.data,void 0,w.headers)}K=!0}catch(J){if(h(J))return;throw J}finally{if(!K)X.abort()}}return new B(W,X,Z)}static fromReadableStream(w,X,Z){let $=!1;async function*z(){let K=new p,J=Iw(w);for await(let N of J)for(let U of K.decode(N))yield U;for(let N of K.flush())yield N}async function*W(){if($)throw new Q("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");$=!0;let K=!1;try{for await(let J of z()){if(K)continue;if(J)yield JSON.parse(J)}K=!0}catch(J){if(h(J))return;throw J}finally{if(!K)X.abort()}}return new B(W,X,Z)}[(jw=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let w=[],X=[],Z=this.iterator(),$=(z)=>{return{next:()=>{if(z.length===0){let W=Z.next();w.push(W),X.push(W)}return z.shift()}}};return[new B(()=>$(w),this.controller,Y(this,jw,"f")),new B(()=>$(X),this.controller,Y(this,jw,"f"))]}toReadableStream(){let w=this,X;return h0({async start(){X=w[Symbol.asyncIterator]()},async pull(Z){try{let{value:$,done:z}=await X.next();if(z)return Z.close();let W=Lw(JSON.stringify($)+`
`);Z.enqueue(W)}catch($){Z.error($)}},async cancel(){await X.return?.()}})}}async function*y1(w,X){if(!w.body){if(X.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative")throw new Q("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new Q("Attempted to iterate over a response with no body")}let Z=new h4,$=new p,z=Iw(w.body);for await(let W of f1(z))for(let K of $.decode(W)){let J=Z.decode(K);if(J)yield J}for(let W of $.flush()){let K=Z.decode(W);if(K)yield K}}async function*f1(w){let X=new Uint8Array;for await(let Z of w){if(Z==null)continue;let $=Z instanceof ArrayBuffer?new Uint8Array(Z):typeof Z==="string"?Lw(Z):Z,z=new Uint8Array(X.length+$.length);z.set(X),z.set($,X.length),X=z;let W;while((W=g4(X))!==-1)yield X.slice(0,W),X=X.slice(W)}if(X.length>0)yield X}class h4{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(w){if(w.endsWith("\r"))w=w.substring(0,w.length-1);if(!w){if(!this.event&&!this.data.length)return null;let z={event:this.event,data:this.data.join(`
`),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],z}if(this.chunks.push(w),w.startsWith(":"))return null;let[X,Z,$]=R1(w,":");if($.startsWith(" "))$=$.substring(1);if(X==="event")this.event=$;else if(X==="data")this.data.push($);return null}}function R1(w,X){let Z=w.indexOf(X);if(Z!==-1)return[w.substring(0,Z),X,w.substring(Z+X.length)];return[w,"",""]}async function Q0(w,X){let{response:Z,requestLogID:$,retryOfRequestLogID:z,startTime:W}=X,K=await(async()=>{if(X.options.stream){if(S(w).debug("response",Z.status,Z.url,Z.headers,Z.body),X.options.__streamClass)return X.options.__streamClass.fromSSEResponse(Z,X.controller);return B.fromSSEResponse(Z,X.controller)}if(Z.status===204)return null;if(X.options.__binaryResponse)return Z;let N=Z.headers.get("content-type")?.split(";")[0]?.trim();if(N?.includes("application/json")||N?.endsWith("+json")){if(Z.headers.get("content-length")==="0")return;let x=await Z.json();return v0(x,Z)}return await Z.text()})();return S(w).debug(`[${$}] response parsed`,_({retryOfRequestLogID:z,url:Z.url,status:Z.status,body:K,durationMs:Date.now()-W})),K}function v0(w,X){if(!w||typeof w!=="object"||Array.isArray(w))return w;return Object.defineProperty(w,"_request_id",{value:X.headers.get("request-id"),enumerable:!1})}var Pw;class s extends Promise{constructor(w,X,Z=Q0){super(($)=>{$(null)});this.responsePromise=X,this.parseResponse=Z,Pw.set(this,void 0),V(this,Pw,w,"f")}_thenUnwrap(w){return new s(Y(this,Pw,"f"),this.responsePromise,async(X,Z)=>v0(w(await this.parseResponse(X,Z),Z),Z.response))}asResponse(){return this.responsePromise.then((w)=>w.response)}async withResponse(){let[w,X]=await Promise.all([this.parse(),this.asResponse()]);return{data:w,response:X,request_id:X.headers.get("request-id")}}parse(){if(!this.parsedPromise)this.parsedPromise=this.responsePromise.then((w)=>this.parseResponse(Y(this,Pw,"f"),w));return this.parsedPromise}then(w,X){return this.parse().then(w,X)}catch(w){return this.parse().catch(w)}finally(w){return this.parse().finally(w)}}Pw=new WeakMap;var N0;class c0{constructor(w,X,Z,$){N0.set(this,void 0),V(this,N0,w,"f"),this.options=$,this.response=X,this.body=Z}hasNextPage(){if(!this.getPaginatedItems().length)return!1;return this.nextPageRequestOptions()!=null}async getNextPage(){let w=this.nextPageRequestOptions();if(!w)throw new Q("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");return await Y(this,N0,"f").requestAPIList(this.constructor,w)}async*iterPages(){let w=this;yield w;while(w.hasNextPage())w=await w.getNextPage(),yield w}async*[(N0=new WeakMap,Symbol.asyncIterator)](){for await(let w of this.iterPages())for(let X of w.getPaginatedItems())yield X}}class G0 extends s{constructor(w,X,Z){super(w,X,async($,z)=>new Z($,z.response,await Q0($,z),z.options))}async*[Symbol.asyncIterator](){let w=await this;for await(let X of w)yield X}}class R extends c0{constructor(w,X,Z,$){super(w,X,Z,$);this.data=Z.data||[],this.has_more=Z.has_more||!1,this.first_id=Z.first_id||null,this.last_id=Z.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){if(this.has_more===!1)return!1;return super.hasNextPage()}nextPageRequestOptions(){if(this.options.query?.before_id){let X=this.first_id;if(!X)return null;return{...this.options,query:{...W0(this.options.query),before_id:X}}}let w=this.last_id;if(!w)return null;return{...this.options,query:{...W0(this.options.query),after_id:w}}}}class yw extends c0{constructor(w,X,Z,$){super(w,X,Z,$);this.data=Z.data||[],this.has_more=Z.has_more||!1,this.next_page=Z.next_page||null}getPaginatedItems(){return this.data??[]}hasNextPage(){if(this.has_more===!1)return!1;return super.hasNextPage()}nextPageRequestOptions(){let w=this.next_page;if(!w)return null;return{...this.options,query:{...W0(this.options.query),page:w}}}}var u0=()=>{if(typeof File>"u"){let{process:w}=globalThis,X=typeof w?.versions?.node==="string"&&parseInt(w.versions.node.split("."))<20;throw Error("`File` is not defined as a global, which is required for file uploads."+(X?" Update to Node 20 LTS or newer, or set `globalThis.File` to `import('node:buffer').File`.":""))}};function r(w,X,Z){return u0(),new File(w,X??"unknown_file",Z)}function fw(w,X){let Z=typeof w==="object"&&w!==null&&(("name"in w)&&w.name&&String(w.name)||("url"in w)&&w.url&&String(w.url)||("filename"in w)&&w.filename&&String(w.filename)||("path"in w)&&w.path&&String(w.path))||"";return X?Z.split(/[\\/]/).pop()||void 0:Z}var p0=(w)=>w!=null&&typeof w==="object"&&typeof w[Symbol.asyncIterator]==="function";var Ww=async(w,X,Z=!0)=>{return{...w,body:await b1(w.body,X,Z)}},_4=new WeakMap;function g1(w){let X=typeof w==="function"?w:w.fetch,Z=_4.get(X);if(Z)return Z;let $=(async()=>{try{let z="Response"in X?X.Response:(await X("data:,")).constructor,W=new FormData;if(W.toString()===await new z(W).text())return!1;return!0}catch{return!0}})();return _4.set(X,$),$}var b1=async(w,X,Z=!0)=>{if(!await g1(X))throw TypeError("The provided fetch function does not support file uploads with the current global FormData class.");let $=new FormData;return await Promise.all(Object.entries(w||{}).map(([z,W])=>m0($,z,W,Z))),$},h1=(w)=>w instanceof Blob&&("name"in w);var m0=async(w,X,Z,$)=>{if(Z===void 0)return;if(Z==null)throw TypeError(`Received null for "${X}"; to pass null in FormData, you must use the string 'null'`);if(typeof Z==="string"||typeof Z==="number"||typeof Z==="boolean")w.append(X,String(Z));else if(Z instanceof Response){let z={},W=Z.headers.get("Content-Type");if(W)z={type:W};w.append(X,r([await Z.blob()],fw(Z,$),z))}else if(p0(Z))w.append(X,r([await new Response(K0(Z)).blob()],fw(Z,$)));else if(h1(Z))w.append(X,r([Z],fw(Z,$),{type:Z.type}));else if(Array.isArray(Z))await Promise.all(Z.map((z)=>m0(w,X+"[]",z,$)));else if(typeof Z==="object")await Promise.all(Object.entries(Z).map(([z,W])=>m0(w,`${X}[${z}]`,W,$)));else throw TypeError(`Invalid value given to form, expected a string, number, boolean, object, Array, File or Blob but got ${Z} instead`)};var d4=(w)=>w!=null&&typeof w==="object"&&typeof w.size==="number"&&typeof w.type==="string"&&typeof w.text==="function"&&typeof w.slice==="function"&&typeof w.arrayBuffer==="function",_1=(w)=>w!=null&&typeof w==="object"&&typeof w.name==="string"&&typeof w.lastModified==="number"&&d4(w),d1=(w)=>w!=null&&typeof w==="object"&&typeof w.url==="string"&&typeof w.blob==="function";async function x0(w,X,Z){if(u0(),w=await w,X||(X=fw(w,!0)),_1(w)){if(w instanceof File&&X==null&&Z==null)return w;return r([await w.arrayBuffer()],X??w.name,{type:w.type,lastModified:w.lastModified,...Z})}if(d1(w)){let z=await w.blob();return X||(X=new URL(w.url).pathname.split(/[\\/]/).pop()),r(await i0(z),X,Z)}let $=await i0(w);if(!Z?.type){let z=$.find((W)=>typeof W==="object"&&("type"in W)&&W.type);if(typeof z==="string")Z={...Z,type:z}}return r($,X,Z)}async function i0(w){let X=[];if(typeof w==="string"||ArrayBuffer.isView(w)||w instanceof ArrayBuffer)X.push(w);else if(d4(w))X.push(w instanceof Blob?w:await w.arrayBuffer());else if(p0(w))for await(let Z of w)X.push(...await i0(Z));else{let Z=w?.constructor?.name;throw Error(`Unexpected data type: ${typeof w}${Z?`; constructor: ${Z}`:""}${v1(w)}`)}return X}function v1(w){if(typeof w!=="object"||w===null)return"";return`; props: [${Object.getOwnPropertyNames(w).map((Z)=>`"${Z}"`).join(", ")}]`}class H{constructor(w){this._client=w}}var v4=Symbol.for("brand.privateNullableHeaders");function*m1(w){if(!w)return;if(v4 in w){let{values:$,nulls:z}=w;yield*$.entries();for(let W of z)yield[W,null];return}let X=!1,Z;if(w instanceof Headers)Z=w.entries();else if(b0(w))Z=w;else X=!0,Z=Object.entries(w??{});for(let $ of Z){let z=$[0];if(typeof z!=="string")throw TypeError("expected header name to be a string");let W=b0($[1])?$[1]:[$[1]],K=!1;for(let J of W){if(J===void 0)continue;if(X&&!K)K=!0,yield[z,null];yield[z,J]}}}var G=(w)=>{let X=new Headers,Z=new Set;for(let $ of w){let z=new Set;for(let[W,K]of m1($)){let J=W.toLowerCase();if(!z.has(J))X.delete(W),z.add(J);if(K===null)X.delete(W),Z.add(J);else X.append(W,K),Z.delete(J)}}return{[v4]:!0,values:X,nulls:Z}};var Rw=Symbol("anthropic.sdk.stainlessHelper");function C0(w){return typeof w==="object"&&w!==null&&Rw in w}function l0(w,X){let Z=new Set;if(w){for(let $ of w)if(C0($))Z.add($[Rw])}if(X)for(let $ of X){if(C0($))Z.add($[Rw]);if(Array.isArray($.content)){for(let z of $.content)if(C0(z))Z.add(z[Rw])}}return Array.from(Z)}function U0(w,X){let Z=l0(w,X);if(Z.length===0)return{};return{"x-stainless-helper":Z.join(", ")}}function c4(w){if(C0(w))return{"x-stainless-helper":w[Rw]};return{}}function u4(w){return w.replace(/[^A-Za-z0-9\-._~!$&'()*+,;=:@]+/g,encodeURIComponent)}var m4=Object.freeze(Object.create(null)),u1=(w=u4)=>function(Z,...$){if(Z.length===1)return Z[0];let z=!1,W=[],K=Z.reduce((C,q,x)=>{if(/[?#]/.test(q))z=!0;let T=$[x],o=(z?encodeURIComponent:w)(""+T);if(x!==$.length&&(T==null||typeof T==="object"&&T.toString===Object.getPrototypeOf(Object.getPrototypeOf(T.hasOwnProperty??m4)??m4)?.toString))o=T+"",W.push({start:C.length+q.length,length:o.length,error:`Value of type ${Object.prototype.toString.call(T).slice(8,-1)} is not a valid path parameter`});return C+q+(x===$.length?"":o)},""),J=K.split(/[?#]/,1)[0],N=/(?<=^|\/)(?:\.|%2e){1,2}(?=\/|$)/gi,U;while((U=N.exec(J))!==null)W.push({start:U.index,length:U[0].length,error:`Value "${U[0]}" can't be safely passed as a path parameter`});if(W.sort((C,q)=>C.start-q.start),W.length>0){let C=0,q=W.reduce((x,T)=>{let o=" ".repeat(T.start-C),Uw="^".repeat(T.length);return C=T.start+T.length,x+o+Uw},"");throw new Q(`Path parameters result in path with invalid segments:
${W.map((x)=>x.error).join(`
`)}
${K}
${q}`)}return K},O=u1(u4);class kw extends H{list(w={},X){let{betas:Z,...$}=w??{};return this._client.getAPIList("/v1/files",R,{query:$,...X,headers:G([{"anthropic-beta":[...Z??[],"files-api-2025-04-14"].toString()},X?.headers])})}delete(w,X={},Z){let{betas:$}=X??{};return this._client.delete(O`/v1/files/${w}`,{...Z,headers:G([{"anthropic-beta":[...$??[],"files-api-2025-04-14"].toString()},Z?.headers])})}download(w,X={},Z){let{betas:$}=X??{};return this._client.get(O`/v1/files/${w}/content`,{...Z,headers:G([{"anthropic-beta":[...$??[],"files-api-2025-04-14"].toString(),Accept:"application/binary"},Z?.headers]),__binaryResponse:!0})}retrieveMetadata(w,X={},Z){let{betas:$}=X??{};return this._client.get(O`/v1/files/${w}`,{...Z,headers:G([{"anthropic-beta":[...$??[],"files-api-2025-04-14"].toString()},Z?.headers])})}upload(w,X){let{betas:Z,...$}=w;return this._client.post("/v1/files",Ww({body:$,...X,headers:G([{"anthropic-beta":[...Z??[],"files-api-2025-04-14"].toString()},c4($.file),X?.headers])},this._client))}}class gw extends H{retrieve(w,X={},Z){let{betas:$}=X??{};return this._client.get(O`/v1/models/${w}?beta=true`,{...Z,headers:G([{...$?.toString()!=null?{"anthropic-beta":$?.toString()}:void 0},Z?.headers])})}list(w={},X){let{betas:Z,...$}=w??{};return this._client.getAPIList("/v1/models?beta=true",R,{query:$,...X,headers:G([{...Z?.toString()!=null?{"anthropic-beta":Z?.toString()}:void 0},X?.headers])})}}var q0={"claude-opus-4-20250514":8192,"claude-opus-4-0":8192,"claude-4-opus-20250514":8192,"anthropic.claude-opus-4-20250514-v1:0":8192,"claude-opus-4@20250514":8192,"claude-opus-4-1-20250805":8192,"anthropic.claude-opus-4-1-20250805-v1:0":8192,"claude-opus-4-1@20250805":8192};function p4(w){return w?.output_format??w?.output_config?.format}function n0(w,X,Z){let $=p4(X);if(!X||!("parse"in($??{})))return{...w,content:w.content.map((z)=>{if(z.type==="text"){let W=Object.defineProperty({...z},"parsed_output",{value:null,enumerable:!1});return Object.defineProperty(W,"parsed",{get(){return Z.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),null},enumerable:!1})}return z}),parsed_output:null};return a0(w,X,Z)}function a0(w,X,Z){let $=null,z=w.content.map((W)=>{if(W.type==="text"){let K=l1(X,W.text);if($===null)$=K;let J=Object.defineProperty({...W},"parsed_output",{value:K,enumerable:!1});return Object.defineProperty(J,"parsed",{get(){return Z.logger.warn("The `parsed` property on `text` blocks is deprecated, please use `parsed_output` instead."),K},enumerable:!1})}return W});return{...w,content:z,parsed_output:$}}function l1(w,X){let Z=p4(w);if(Z?.type!=="json_schema")return null;try{if("parse"in Z)return Z.parse(X);return JSON.parse(X)}catch($){throw new Q(`Failed to parse structured output: ${$}`)}}var n1=(w)=>{let X=0,Z=[];while(X<w.length){let $=w[X];if($==="\\"){X++;continue}if($==="{"){Z.push({type:"brace",value:"{"}),X++;continue}if($==="}"){Z.push({type:"brace",value:"}"}),X++;continue}if($==="["){Z.push({type:"paren",value:"["}),X++;continue}if($==="]"){Z.push({type:"paren",value:"]"}),X++;continue}if($===":"){Z.push({type:"separator",value:":"}),X++;continue}if($===","){Z.push({type:"delimiter",value:","}),X++;continue}if($==='"'){let J="",N=!1;$=w[++X];while($!=='"'){if(X===w.length){N=!0;break}if($==="\\"){if(X++,X===w.length){N=!0;break}J+=$+w[X],$=w[++X]}else J+=$,$=w[++X]}if($=w[++X],!N)Z.push({type:"string",value:J});continue}if($&&/\s/.test($)){X++;continue}let W=/[0-9]/;if($&&W.test($)||$==="-"||$==="."){let J="";if($==="-")J+=$,$=w[++X];while($&&W.test($)||$===".")J+=$,$=w[++X];Z.push({type:"number",value:J});continue}let K=/[a-z]/i;if($&&K.test($)){let J="";while($&&K.test($)){if(X===w.length)break;J+=$,$=w[++X]}if(J=="true"||J=="false"||J==="null")Z.push({type:"name",value:J});else{X++;continue}continue}X++}return Z},Yw=(w)=>{if(w.length===0)return w;let X=w[w.length-1];switch(X.type){case"separator":return w=w.slice(0,w.length-1),Yw(w);break;case"number":let Z=X.value[X.value.length-1];if(Z==="."||Z==="-")return w=w.slice(0,w.length-1),Yw(w);case"string":let $=w[w.length-2];if($?.type==="delimiter")return w=w.slice(0,w.length-1),Yw(w);else if($?.type==="brace"&&$.value==="{")return w=w.slice(0,w.length-1),Yw(w);break;case"delimiter":return w=w.slice(0,w.length-1),Yw(w);break}return w},a1=(w)=>{let X=[];if(w.map((Z)=>{if(Z.type==="brace")if(Z.value==="{")X.push("}");else X.splice(X.lastIndexOf("}"),1);if(Z.type==="paren")if(Z.value==="[")X.push("]");else X.splice(X.lastIndexOf("]"),1)}),X.length>0)X.reverse().map((Z)=>{if(Z==="}")w.push({type:"brace",value:"}"});else if(Z==="]")w.push({type:"paren",value:"]"})});return w},o1=(w)=>{let X="";return w.map((Z)=>{switch(Z.type){case"string":X+='"'+Z.value+'"';break;default:X+=Z.value;break}}),X},O0=(w)=>JSON.parse(o1(a1(Yw(n1(w)))));var y,i,Kw,bw,H0,hw,_w,M0,dw,d,vw,D0,A0,e,E0,T0,cw,o0,i4,S0,t0,s0,r0,l4,n4="__json_buf";function a4(w){return w.type==="tool_use"||w.type==="server_tool_use"||w.type==="mcp_tool_use"}class mw{constructor(w,X){y.add(this),this.messages=[],this.receivedMessages=[],i.set(this,void 0),Kw.set(this,null),this.controller=new AbortController,bw.set(this,void 0),H0.set(this,()=>{}),hw.set(this,()=>{}),_w.set(this,void 0),M0.set(this,()=>{}),dw.set(this,()=>{}),d.set(this,{}),vw.set(this,!1),D0.set(this,!1),A0.set(this,!1),e.set(this,!1),E0.set(this,void 0),T0.set(this,void 0),cw.set(this,void 0),S0.set(this,(Z)=>{if(V(this,D0,!0,"f"),h(Z))Z=new F;if(Z instanceof F)return V(this,A0,!0,"f"),this._emit("abort",Z);if(Z instanceof Q)return this._emit("error",Z);if(Z instanceof Error){let $=new Q(Z.message);return $.cause=Z,this._emit("error",$)}return this._emit("error",new Q(String(Z)))}),V(this,bw,new Promise((Z,$)=>{V(this,H0,Z,"f"),V(this,hw,$,"f")}),"f"),V(this,_w,new Promise((Z,$)=>{V(this,M0,Z,"f"),V(this,dw,$,"f")}),"f"),Y(this,bw,"f").catch(()=>{}),Y(this,_w,"f").catch(()=>{}),V(this,Kw,w,"f"),V(this,cw,X?.logger??console,"f")}get response(){return Y(this,E0,"f")}get request_id(){return Y(this,T0,"f")}async withResponse(){V(this,e,!0,"f");let w=await Y(this,bw,"f");if(!w)throw Error("Could not resolve a `Response` object");return{data:this,response:w,request_id:w.headers.get("request-id")}}static fromReadableStream(w){let X=new mw(null);return X._run(()=>X._fromReadableStream(w)),X}static createMessage(w,X,Z,{logger:$}={}){let z=new mw(X,{logger:$});for(let W of X.messages)z._addMessageParam(W);return V(z,Kw,{...X,stream:!0},"f"),z._run(()=>z._createMessage(w,{...X,stream:!0},{...Z,headers:{...Z?.headers,"X-Stainless-Helper-Method":"stream"}})),z}_run(w){w().then(()=>{this._emitFinal(),this._emit("end")},Y(this,S0,"f"))}_addMessageParam(w){this.messages.push(w)}_addMessage(w,X=!0){if(this.receivedMessages.push(w),X)this._emit("message",w)}async _createMessage(w,X,Z){let $=Z?.signal,z;if($){if($.aborted)this.controller.abort();z=this.controller.abort.bind(this.controller),$.addEventListener("abort",z)}try{Y(this,y,"m",t0).call(this);let{response:W,data:K}=await w.create({...X,stream:!0},{...Z,signal:this.controller.signal}).withResponse();this._connected(W);for await(let J of K)Y(this,y,"m",s0).call(this,J);if(K.controller.signal?.aborted)throw new F;Y(this,y,"m",r0).call(this)}finally{if($&&z)$.removeEventListener("abort",z)}}_connected(w){if(this.ended)return;V(this,E0,w,"f"),V(this,T0,w?.headers.get("request-id"),"f"),Y(this,H0,"f").call(this,w),this._emit("connect")}get ended(){return Y(this,vw,"f")}get errored(){return Y(this,D0,"f")}get aborted(){return Y(this,A0,"f")}abort(){this.controller.abort()}on(w,X){return(Y(this,d,"f")[w]||(Y(this,d,"f")[w]=[])).push({listener:X}),this}off(w,X){let Z=Y(this,d,"f")[w];if(!Z)return this;let $=Z.findIndex((z)=>z.listener===X);if($>=0)Z.splice($,1);return this}once(w,X){return(Y(this,d,"f")[w]||(Y(this,d,"f")[w]=[])).push({listener:X,once:!0}),this}emitted(w){return new Promise((X,Z)=>{if(V(this,e,!0,"f"),w!=="error")this.once("error",Z);this.once(w,X)})}async done(){V(this,e,!0,"f"),await Y(this,_w,"f")}get currentMessage(){return Y(this,i,"f")}async finalMessage(){return await this.done(),Y(this,y,"m",o0).call(this)}async finalText(){return await this.done(),Y(this,y,"m",i4).call(this)}_emit(w,...X){if(Y(this,vw,"f"))return;if(w==="end")V(this,vw,!0,"f"),Y(this,M0,"f").call(this);let Z=Y(this,d,"f")[w];if(Z)Y(this,d,"f")[w]=Z.filter(($)=>!$.once),Z.forEach(({listener:$})=>$(...X));if(w==="abort"){let $=X[0];if(!Y(this,e,"f")&&!Z?.length)Promise.reject($);Y(this,hw,"f").call(this,$),Y(this,dw,"f").call(this,$),this._emit("end");return}if(w==="error"){let $=X[0];if(!Y(this,e,"f")&&!Z?.length)Promise.reject($);Y(this,hw,"f").call(this,$),Y(this,dw,"f").call(this,$),this._emit("end")}}_emitFinal(){if(this.receivedMessages.at(-1))this._emit("finalMessage",Y(this,y,"m",o0).call(this))}async _fromReadableStream(w,X){let Z=X?.signal,$;if(Z){if(Z.aborted)this.controller.abort();$=this.controller.abort.bind(this.controller),Z.addEventListener("abort",$)}try{Y(this,y,"m",t0).call(this),this._connected(null);let z=B.fromReadableStream(w,this.controller);for await(let W of z)Y(this,y,"m",s0).call(this,W);if(z.controller.signal?.aborted)throw new F;Y(this,y,"m",r0).call(this)}finally{if(Z&&$)Z.removeEventListener("abort",$)}}[(i=new WeakMap,Kw=new WeakMap,bw=new WeakMap,H0=new WeakMap,hw=new WeakMap,_w=new WeakMap,M0=new WeakMap,dw=new WeakMap,d=new WeakMap,vw=new WeakMap,D0=new WeakMap,A0=new WeakMap,e=new WeakMap,E0=new WeakMap,T0=new WeakMap,cw=new WeakMap,S0=new WeakMap,y=new WeakSet,o0=function(){if(this.receivedMessages.length===0)throw new Q("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},i4=function(){if(this.receivedMessages.length===0)throw new Q("stream ended without producing a Message with role=assistant");let X=this.receivedMessages.at(-1).content.filter((Z)=>Z.type==="text").map((Z)=>Z.text);if(X.length===0)throw new Q("stream ended without producing a content block with type=text");return X.join(" ")},t0=function(){if(this.ended)return;V(this,i,void 0,"f")},s0=function(X){if(this.ended)return;let Z=Y(this,y,"m",l4).call(this,X);switch(this._emit("streamEvent",X,Z),X.type){case"content_block_delta":{let $=Z.content.at(-1);switch(X.delta.type){case"text_delta":{if($.type==="text")this._emit("text",X.delta.text,$.text||"");break}case"citations_delta":{if($.type==="text")this._emit("citation",X.delta.citation,$.citations??[]);break}case"input_json_delta":{if(a4($)&&$.input)this._emit("inputJson",X.delta.partial_json,$.input);break}case"thinking_delta":{if($.type==="thinking")this._emit("thinking",X.delta.thinking,$.thinking);break}case"signature_delta":{if($.type==="thinking")this._emit("signature",$.signature);break}case"compaction_delta":{if($.type==="compaction"&&$.content)this._emit("compaction",$.content);break}default:o4(X.delta)}break}case"message_stop":{this._addMessageParam(Z),this._addMessage(n0(Z,Y(this,Kw,"f"),{logger:Y(this,cw,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",Z.content.at(-1));break}case"message_start":{V(this,i,Z,"f");break}case"content_block_start":case"message_delta":break}},r0=function(){if(this.ended)throw new Q("stream has ended, this shouldn't happen");let X=Y(this,i,"f");if(!X)throw new Q("request ended without sending any chunks");return V(this,i,void 0,"f"),n0(X,Y(this,Kw,"f"),{logger:Y(this,cw,"f")})},l4=function(X){let Z=Y(this,i,"f");if(X.type==="message_start"){if(Z)throw new Q(`Unexpected event order, got ${X.type} before receiving "message_stop"`);return X.message}if(!Z)throw new Q(`Unexpected event order, got ${X.type} before "message_start"`);switch(X.type){case"message_stop":return Z;case"message_delta":if(Z.container=X.delta.container,Z.stop_reason=X.delta.stop_reason,Z.stop_sequence=X.delta.stop_sequence,Z.usage.output_tokens=X.usage.output_tokens,Z.context_management=X.context_management,X.usage.input_tokens!=null)Z.usage.input_tokens=X.usage.input_tokens;if(X.usage.cache_creation_input_tokens!=null)Z.usage.cache_creation_input_tokens=X.usage.cache_creation_input_tokens;if(X.usage.cache_read_input_tokens!=null)Z.usage.cache_read_input_tokens=X.usage.cache_read_input_tokens;if(X.usage.server_tool_use!=null)Z.usage.server_tool_use=X.usage.server_tool_use;if(X.usage.iterations!=null)Z.usage.iterations=X.usage.iterations;return Z;case"content_block_start":return Z.content.push(X.content_block),Z;case"content_block_delta":{let $=Z.content.at(X.index);switch(X.delta.type){case"text_delta":{if($?.type==="text")Z.content[X.index]={...$,text:($.text||"")+X.delta.text};break}case"citations_delta":{if($?.type==="text")Z.content[X.index]={...$,citations:[...$.citations??[],X.delta.citation]};break}case"input_json_delta":{if($&&a4($)){let z=$[n4]||"";z+=X.delta.partial_json;let W={...$};if(Object.defineProperty(W,n4,{value:z,enumerable:!1,writable:!0}),z)try{W.input=O0(z)}catch(K){let J=new Q(`Unable to parse tool parameter JSON from model. Please retry your request or adjust your prompt. Error: ${K}. JSON: ${z}`);Y(this,S0,"f").call(this,J)}Z.content[X.index]=W}break}case"thinking_delta":{if($?.type==="thinking")Z.content[X.index]={...$,thinking:$.thinking+X.delta.thinking};break}case"signature_delta":{if($?.type==="thinking")Z.content[X.index]={...$,signature:X.delta.signature};break}case"compaction_delta":{if($?.type==="compaction")Z.content[X.index]={...$,content:($.content||"")+X.delta.content};break}default:o4(X.delta)}return Z}case"content_block_stop":return Z}},Symbol.asyncIterator)](){let w=[],X=[],Z=!1;return this.on("streamEvent",($)=>{let z=X.shift();if(z)z.resolve($);else w.push($)}),this.on("end",()=>{Z=!0;for(let $ of X)$.resolve(void 0);X.length=0}),this.on("abort",($)=>{Z=!0;for(let z of X)z.reject($);X.length=0}),this.on("error",($)=>{Z=!0;for(let z of X)z.reject($);X.length=0}),{next:async()=>{if(!w.length){if(Z)return{value:void 0,done:!0};return new Promise((z,W)=>X.push({resolve:z,reject:W})).then((z)=>z?{value:z,done:!1}:{value:void 0,done:!0})}return{value:w.shift(),done:!1}},return:async()=>{return this.abort(),{value:void 0,done:!0}}}}toReadableStream(){return new B(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function o4(w){}class Jw extends Error{constructor(w){let X=typeof w==="string"?w:w.map((Z)=>{if(Z.type==="text")return Z.text;return`[${Z.type}]`}).join(" ");super(X);this.name="ToolError",this.content=w}}var t4=1e5,s4=`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
1. Task Overview
The user's core request and success criteria
Any clarifications or constraints they specified
2. Current State
What has been completed so far
Files created, modified, or analyzed (with paths if relevant)
Key outputs or artifacts produced
3. Important Discoveries
Technical constraints or requirements uncovered
Decisions made and their rationale
Errors encountered and how they were resolved
What approaches were tried that didn't work (and why)
4. Next Steps
Specific actions needed to complete the task
Any blockers or open questions to resolve
Priority order if multiple steps remain
5. Context to Preserve
User preferences or style requirements
Domain-specific details that aren't obvious
Any promises made to the user
Be concise but complete—err on the side of including information that would prevent duplicate work or repeated mistakes. Write in a way that enables immediate resumption of the task.
Wrap your summary in <summary></summary> tags.`;var uw,Vw,ww,E,pw,j,v,l,iw,r4,e0;function e4(){let w,X;return{promise:new Promise(($,z)=>{w=$,X=z}),resolve:w,reject:X}}class lw{constructor(w,X,Z){uw.add(this),this.client=w,Vw.set(this,!1),ww.set(this,!1),E.set(this,void 0),pw.set(this,void 0),j.set(this,void 0),v.set(this,void 0),l.set(this,void 0),iw.set(this,0),V(this,E,{params:{...X,messages:structuredClone(X.messages)}},"f");let z=["BetaToolRunner",...l0(X.tools,X.messages)].join(", ");V(this,pw,{...Z,headers:G([{"x-stainless-helper":z},Z?.headers])},"f"),V(this,l,e4(),"f")}async*[(Vw=new WeakMap,ww=new WeakMap,E=new WeakMap,pw=new WeakMap,j=new WeakMap,v=new WeakMap,l=new WeakMap,iw=new WeakMap,uw=new WeakSet,r4=async function(){let X=Y(this,E,"f").params.compactionControl;if(!X||!X.enabled)return!1;let Z=0;if(Y(this,j,"f")!==void 0)try{let N=await Y(this,j,"f");Z=N.usage.input_tokens+(N.usage.cache_creation_input_tokens??0)+(N.usage.cache_read_input_tokens??0)+N.usage.output_tokens}catch{return!1}let $=X.contextTokenThreshold??t4;if(Z<$)return!1;let z=X.model??Y(this,E,"f").params.model,W=X.summaryPrompt??s4,K=Y(this,E,"f").params.messages;if(K[K.length-1].role==="assistant"){let N=K[K.length-1];if(Array.isArray(N.content)){let U=N.content.filter((C)=>C.type!=="tool_use");if(U.length===0)K.pop();else N.content=U}}let J=await this.client.beta.messages.create({model:z,messages:[...K,{role:"user",content:[{type:"text",text:W}]}],max_tokens:Y(this,E,"f").params.max_tokens},{headers:{"x-stainless-helper":"compaction"}});if(J.content[0]?.type!=="text")throw new Q("Expected text response for compaction");return Y(this,E,"f").params.messages=[{role:"user",content:J.content}],!0},Symbol.asyncIterator)](){var w;if(Y(this,Vw,"f"))throw new Q("Cannot iterate over a consumed stream");V(this,Vw,!0,"f"),V(this,ww,!0,"f"),V(this,v,void 0,"f");try{while(!0){let X;try{if(Y(this,E,"f").params.max_iterations&&Y(this,iw,"f")>=Y(this,E,"f").params.max_iterations)break;V(this,ww,!1,"f"),V(this,v,void 0,"f"),V(this,iw,(w=Y(this,iw,"f"),w++,w),"f"),V(this,j,void 0,"f");let{max_iterations:Z,compactionControl:$,...z}=Y(this,E,"f").params;if(z.stream)X=this.client.beta.messages.stream({...z},Y(this,pw,"f")),V(this,j,X.finalMessage(),"f"),Y(this,j,"f").catch(()=>{}),yield X;else V(this,j,this.client.beta.messages.create({...z,stream:!1},Y(this,pw,"f")),"f"),yield Y(this,j,"f");if(!await Y(this,uw,"m",r4).call(this)){if(!Y(this,ww,"f")){let{role:J,content:N}=await Y(this,j,"f");Y(this,E,"f").params.messages.push({role:J,content:N})}let K=await Y(this,uw,"m",e0).call(this,Y(this,E,"f").params.messages.at(-1));if(K)Y(this,E,"f").params.messages.push(K);else if(!Y(this,ww,"f"))break}}finally{if(X)X.abort()}}if(!Y(this,j,"f"))throw new Q("ToolRunner concluded without a message from the server");Y(this,l,"f").resolve(await Y(this,j,"f"))}catch(X){throw V(this,Vw,!1,"f"),Y(this,l,"f").promise.catch(()=>{}),Y(this,l,"f").reject(X),V(this,l,e4(),"f"),X}}setMessagesParams(w){if(typeof w==="function")Y(this,E,"f").params=w(Y(this,E,"f").params);else Y(this,E,"f").params=w;V(this,ww,!0,"f"),V(this,v,void 0,"f")}async generateToolResponse(){let w=await Y(this,j,"f")??this.params.messages.at(-1);if(!w)return null;return Y(this,uw,"m",e0).call(this,w)}done(){return Y(this,l,"f").promise}async runUntilDone(){if(!Y(this,Vw,"f"))for await(let w of this);return this.done()}get params(){return Y(this,E,"f").params}pushMessages(...w){this.setMessagesParams((X)=>({...X,messages:[...X.messages,...w]}))}then(w,X){return this.runUntilDone().then(w,X)}}e0=async function(X){if(Y(this,v,"f")!==void 0)return Y(this,v,"f");return V(this,v,t1(Y(this,E,"f").params,X),"f"),Y(this,v,"f")};async function t1(w,X=w.messages.at(-1)){if(!X||X.role!=="assistant"||!X.content||typeof X.content==="string")return null;let Z=X.content.filter((z)=>z.type==="tool_use");if(Z.length===0)return null;return{role:"user",content:await Promise.all(Z.map(async(z)=>{let W=w.tools.find((K)=>("name"in K?K.name:K.mcp_server_name)===z.name);if(!W||!("run"in W))return{type:"tool_result",tool_use_id:z.id,content:`Error: Tool '${z.name}' not found`,is_error:!0};try{let K=z.input;if("parse"in W&&W.parse)K=W.parse(K);let J=await W.run(K);return{type:"tool_result",tool_use_id:z.id,content:J}}catch(K){return{type:"tool_result",tool_use_id:z.id,content:K instanceof Jw?K.content:`Error: ${K instanceof Error?K.message:String(K)}`,is_error:!0}}}))}}class Qw{constructor(w,X){this.iterator=w,this.controller=X}async*decoder(){let w=new p;for await(let X of this.iterator)for(let Z of w.decode(X))yield JSON.parse(Z);for(let X of w.flush())yield JSON.parse(X)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse(w,X){if(!w.body){if(X.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative")throw new Q("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new Q("Attempted to iterate over a response with no body")}return new Qw(Iw(w.body),X)}}class nw extends H{create(w,X){let{betas:Z,...$}=w;return this._client.post("/v1/messages/batches?beta=true",{body:$,...X,headers:G([{"anthropic-beta":[...Z??[],"message-batches-2024-09-24"].toString()},X?.headers])})}retrieve(w,X={},Z){let{betas:$}=X??{};return this._client.get(O`/v1/messages/batches/${w}?beta=true`,{...Z,headers:G([{"anthropic-beta":[...$??[],"message-batches-2024-09-24"].toString()},Z?.headers])})}list(w={},X){let{betas:Z,...$}=w??{};return this._client.getAPIList("/v1/messages/batches?beta=true",R,{query:$,...X,headers:G([{"anthropic-beta":[...Z??[],"message-batches-2024-09-24"].toString()},X?.headers])})}delete(w,X={},Z){let{betas:$}=X??{};return this._client.delete(O`/v1/messages/batches/${w}?beta=true`,{...Z,headers:G([{"anthropic-beta":[...$??[],"message-batches-2024-09-24"].toString()},Z?.headers])})}cancel(w,X={},Z){let{betas:$}=X??{};return this._client.post(O`/v1/messages/batches/${w}/cancel?beta=true`,{...Z,headers:G([{"anthropic-beta":[...$??[],"message-batches-2024-09-24"].toString()},Z?.headers])})}async results(w,X={},Z){let $=await this.retrieve(w);if(!$.results_url)throw new Q(`No batch \`results_url\`; Has it finished processing? ${$.processing_status} - ${$.id}`);let{betas:z}=X??{};return this._client.get($.results_url,{...Z,headers:G([{"anthropic-beta":[...z??[],"message-batches-2024-09-24"].toString(),Accept:"application/binary"},Z?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap((W,K)=>Qw.fromResponse(K.response,K.controller))}}var w1={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026"},r1=["claude-opus-4-6"];class n extends H{constructor(){super(...arguments);this.batches=new nw(this._client)}create(w,X){let Z=X1(w),{betas:$,...z}=Z;if(z.model in w1)console.warn(`The model '${z.model}' is deprecated and will reach end-of-life on ${w1[z.model]}
Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);if(z.model in r1&&z.thinking&&z.thinking.type==="enabled")console.warn(`Using Claude with ${z.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let W=this._client._options.timeout;if(!z.stream&&W==null){let J=q0[z.model]??void 0;W=this._client.calculateNonstreamingTimeout(z.max_tokens,J)}let K=U0(z.tools,z.messages);return this._client.post("/v1/messages?beta=true",{body:z,timeout:W??600000,...X,headers:G([{...$?.toString()!=null?{"anthropic-beta":$?.toString()}:void 0},K,X?.headers]),stream:Z.stream??!1})}parse(w,X){return X={...X,headers:G([{"anthropic-beta":[...w.betas??[],"structured-outputs-2025-12-15"].toString()},X?.headers])},this.create(w,X).then((Z)=>a0(Z,w,{logger:this._client.logger??console}))}stream(w,X){return mw.createMessage(this,w,X)}countTokens(w,X){let Z=X1(w),{betas:$,...z}=Z;return this._client.post("/v1/messages/count_tokens?beta=true",{body:z,...X,headers:G([{"anthropic-beta":[...$??[],"token-counting-2024-11-01"].toString()},X?.headers])})}toolRunner(w,X){return new lw(this._client,w,X)}}function X1(w){if(!w.output_format)return w;if(w.output_config?.format)throw new Q("Both output_format and output_config.format were provided. Please use only output_config.format (output_format is deprecated).");let{output_format:X,...Z}=w;return{...Z,output_config:{...w.output_config,format:X}}}n.Batches=nw;n.BetaToolRunner=lw;n.ToolError=Jw;class aw extends H{create(w,X={},Z){let{betas:$,...z}=X??{};return this._client.post(O`/v1/skills/${w}/versions?beta=true`,Ww({body:z,...Z,headers:G([{"anthropic-beta":[...$??[],"skills-2025-10-02"].toString()},Z?.headers])},this._client))}retrieve(w,X,Z){let{skill_id:$,betas:z}=X;return this._client.get(O`/v1/skills/${$}/versions/${w}?beta=true`,{...Z,headers:G([{"anthropic-beta":[...z??[],"skills-2025-10-02"].toString()},Z?.headers])})}list(w,X={},Z){let{betas:$,...z}=X??{};return this._client.getAPIList(O`/v1/skills/${w}/versions?beta=true`,yw,{query:z,...Z,headers:G([{"anthropic-beta":[...$??[],"skills-2025-10-02"].toString()},Z?.headers])})}delete(w,X,Z){let{skill_id:$,betas:z}=X;return this._client.delete(O`/v1/skills/${$}/versions/${w}?beta=true`,{...Z,headers:G([{"anthropic-beta":[...z??[],"skills-2025-10-02"].toString()},Z?.headers])})}}class Nw extends H{constructor(){super(...arguments);this.versions=new aw(this._client)}create(w={},X){let{betas:Z,...$}=w??{};return this._client.post("/v1/skills?beta=true",Ww({body:$,...X,headers:G([{"anthropic-beta":[...Z??[],"skills-2025-10-02"].toString()},X?.headers])},this._client,!1))}retrieve(w,X={},Z){let{betas:$}=X??{};return this._client.get(O`/v1/skills/${w}?beta=true`,{...Z,headers:G([{"anthropic-beta":[...$??[],"skills-2025-10-02"].toString()},Z?.headers])})}list(w={},X){let{betas:Z,...$}=w??{};return this._client.getAPIList("/v1/skills?beta=true",yw,{query:$,...X,headers:G([{"anthropic-beta":[...Z??[],"skills-2025-10-02"].toString()},X?.headers])})}delete(w,X={},Z){let{betas:$}=X??{};return this._client.delete(O`/v1/skills/${w}?beta=true`,{...Z,headers:G([{"anthropic-beta":[...$??[],"skills-2025-10-02"].toString()},Z?.headers])})}}Nw.Versions=aw;class g extends H{constructor(){super(...arguments);this.models=new gw(this._client),this.messages=new n(this._client),this.files=new kw(this._client),this.skills=new Nw(this._client)}}g.Models=gw;g.Messages=n;g.Files=kw;g.Skills=Nw;class Gw extends H{create(w,X){let{betas:Z,...$}=w;return this._client.post("/v1/complete",{body:$,timeout:this._client._options.timeout??600000,...X,headers:G([{...Z?.toString()!=null?{"anthropic-beta":Z?.toString()}:void 0},X?.headers]),stream:w.stream??!1})}}function Z1(w){return w?.output_config?.format}function w4(w,X,Z){let $=Z1(X);if(!X||!("parse"in($??{})))return{...w,content:w.content.map((z)=>{if(z.type==="text")return Object.defineProperty({...z},"parsed_output",{value:null,enumerable:!1});return z}),parsed_output:null};return X4(w,X,Z)}function X4(w,X,Z){let $=null,z=w.content.map((W)=>{if(W.type==="text"){let K=Z2(X,W.text);if($===null)$=K;return Object.defineProperty({...W},"parsed_output",{value:K,enumerable:!1})}return W});return{...w,content:z,parsed_output:$}}function Z2(w,X){let Z=Z1(w);if(Z?.type!=="json_schema")return null;try{if("parse"in Z)return Z.parse(X);return JSON.parse(X)}catch($){throw new Q(`Failed to parse structured output: ${$}`)}}var f,a,xw,ow,F0,tw,sw,I0,rw,c,ew,L0,B0,Xw,j0,P0,w0,Z4,$1,$4,z4,W4,Y4,z1,W1="__json_buf";function Y1(w){return w.type==="tool_use"||w.type==="server_tool_use"}class X0{constructor(w,X){f.add(this),this.messages=[],this.receivedMessages=[],a.set(this,void 0),xw.set(this,null),this.controller=new AbortController,ow.set(this,void 0),F0.set(this,()=>{}),tw.set(this,()=>{}),sw.set(this,void 0),I0.set(this,()=>{}),rw.set(this,()=>{}),c.set(this,{}),ew.set(this,!1),L0.set(this,!1),B0.set(this,!1),Xw.set(this,!1),j0.set(this,void 0),P0.set(this,void 0),w0.set(this,void 0),$4.set(this,(Z)=>{if(V(this,L0,!0,"f"),h(Z))Z=new F;if(Z instanceof F)return V(this,B0,!0,"f"),this._emit("abort",Z);if(Z instanceof Q)return this._emit("error",Z);if(Z instanceof Error){let $=new Q(Z.message);return $.cause=Z,this._emit("error",$)}return this._emit("error",new Q(String(Z)))}),V(this,ow,new Promise((Z,$)=>{V(this,F0,Z,"f"),V(this,tw,$,"f")}),"f"),V(this,sw,new Promise((Z,$)=>{V(this,I0,Z,"f"),V(this,rw,$,"f")}),"f"),Y(this,ow,"f").catch(()=>{}),Y(this,sw,"f").catch(()=>{}),V(this,xw,w,"f"),V(this,w0,X?.logger??console,"f")}get response(){return Y(this,j0,"f")}get request_id(){return Y(this,P0,"f")}async withResponse(){V(this,Xw,!0,"f");let w=await Y(this,ow,"f");if(!w)throw Error("Could not resolve a `Response` object");return{data:this,response:w,request_id:w.headers.get("request-id")}}static fromReadableStream(w){let X=new X0(null);return X._run(()=>X._fromReadableStream(w)),X}static createMessage(w,X,Z,{logger:$}={}){let z=new X0(X,{logger:$});for(let W of X.messages)z._addMessageParam(W);return V(z,xw,{...X,stream:!0},"f"),z._run(()=>z._createMessage(w,{...X,stream:!0},{...Z,headers:{...Z?.headers,"X-Stainless-Helper-Method":"stream"}})),z}_run(w){w().then(()=>{this._emitFinal(),this._emit("end")},Y(this,$4,"f"))}_addMessageParam(w){this.messages.push(w)}_addMessage(w,X=!0){if(this.receivedMessages.push(w),X)this._emit("message",w)}async _createMessage(w,X,Z){let $=Z?.signal,z;if($){if($.aborted)this.controller.abort();z=this.controller.abort.bind(this.controller),$.addEventListener("abort",z)}try{Y(this,f,"m",z4).call(this);let{response:W,data:K}=await w.create({...X,stream:!0},{...Z,signal:this.controller.signal}).withResponse();this._connected(W);for await(let J of K)Y(this,f,"m",W4).call(this,J);if(K.controller.signal?.aborted)throw new F;Y(this,f,"m",Y4).call(this)}finally{if($&&z)$.removeEventListener("abort",z)}}_connected(w){if(this.ended)return;V(this,j0,w,"f"),V(this,P0,w?.headers.get("request-id"),"f"),Y(this,F0,"f").call(this,w),this._emit("connect")}get ended(){return Y(this,ew,"f")}get errored(){return Y(this,L0,"f")}get aborted(){return Y(this,B0,"f")}abort(){this.controller.abort()}on(w,X){return(Y(this,c,"f")[w]||(Y(this,c,"f")[w]=[])).push({listener:X}),this}off(w,X){let Z=Y(this,c,"f")[w];if(!Z)return this;let $=Z.findIndex((z)=>z.listener===X);if($>=0)Z.splice($,1);return this}once(w,X){return(Y(this,c,"f")[w]||(Y(this,c,"f")[w]=[])).push({listener:X,once:!0}),this}emitted(w){return new Promise((X,Z)=>{if(V(this,Xw,!0,"f"),w!=="error")this.once("error",Z);this.once(w,X)})}async done(){V(this,Xw,!0,"f"),await Y(this,sw,"f")}get currentMessage(){return Y(this,a,"f")}async finalMessage(){return await this.done(),Y(this,f,"m",Z4).call(this)}async finalText(){return await this.done(),Y(this,f,"m",$1).call(this)}_emit(w,...X){if(Y(this,ew,"f"))return;if(w==="end")V(this,ew,!0,"f"),Y(this,I0,"f").call(this);let Z=Y(this,c,"f")[w];if(Z)Y(this,c,"f")[w]=Z.filter(($)=>!$.once),Z.forEach(({listener:$})=>$(...X));if(w==="abort"){let $=X[0];if(!Y(this,Xw,"f")&&!Z?.length)Promise.reject($);Y(this,tw,"f").call(this,$),Y(this,rw,"f").call(this,$),this._emit("end");return}if(w==="error"){let $=X[0];if(!Y(this,Xw,"f")&&!Z?.length)Promise.reject($);Y(this,tw,"f").call(this,$),Y(this,rw,"f").call(this,$),this._emit("end")}}_emitFinal(){if(this.receivedMessages.at(-1))this._emit("finalMessage",Y(this,f,"m",Z4).call(this))}async _fromReadableStream(w,X){let Z=X?.signal,$;if(Z){if(Z.aborted)this.controller.abort();$=this.controller.abort.bind(this.controller),Z.addEventListener("abort",$)}try{Y(this,f,"m",z4).call(this),this._connected(null);let z=B.fromReadableStream(w,this.controller);for await(let W of z)Y(this,f,"m",W4).call(this,W);if(z.controller.signal?.aborted)throw new F;Y(this,f,"m",Y4).call(this)}finally{if(Z&&$)Z.removeEventListener("abort",$)}}[(a=new WeakMap,xw=new WeakMap,ow=new WeakMap,F0=new WeakMap,tw=new WeakMap,sw=new WeakMap,I0=new WeakMap,rw=new WeakMap,c=new WeakMap,ew=new WeakMap,L0=new WeakMap,B0=new WeakMap,Xw=new WeakMap,j0=new WeakMap,P0=new WeakMap,w0=new WeakMap,$4=new WeakMap,f=new WeakSet,Z4=function(){if(this.receivedMessages.length===0)throw new Q("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},$1=function(){if(this.receivedMessages.length===0)throw new Q("stream ended without producing a Message with role=assistant");let X=this.receivedMessages.at(-1).content.filter((Z)=>Z.type==="text").map((Z)=>Z.text);if(X.length===0)throw new Q("stream ended without producing a content block with type=text");return X.join(" ")},z4=function(){if(this.ended)return;V(this,a,void 0,"f")},W4=function(X){if(this.ended)return;let Z=Y(this,f,"m",z1).call(this,X);switch(this._emit("streamEvent",X,Z),X.type){case"content_block_delta":{let $=Z.content.at(-1);switch(X.delta.type){case"text_delta":{if($.type==="text")this._emit("text",X.delta.text,$.text||"");break}case"citations_delta":{if($.type==="text")this._emit("citation",X.delta.citation,$.citations??[]);break}case"input_json_delta":{if(Y1($)&&$.input)this._emit("inputJson",X.delta.partial_json,$.input);break}case"thinking_delta":{if($.type==="thinking")this._emit("thinking",X.delta.thinking,$.thinking);break}case"signature_delta":{if($.type==="thinking")this._emit("signature",$.signature);break}default:K1(X.delta)}break}case"message_stop":{this._addMessageParam(Z),this._addMessage(w4(Z,Y(this,xw,"f"),{logger:Y(this,w0,"f")}),!0);break}case"content_block_stop":{this._emit("contentBlock",Z.content.at(-1));break}case"message_start":{V(this,a,Z,"f");break}case"content_block_start":case"message_delta":break}},Y4=function(){if(this.ended)throw new Q("stream has ended, this shouldn't happen");let X=Y(this,a,"f");if(!X)throw new Q("request ended without sending any chunks");return V(this,a,void 0,"f"),w4(X,Y(this,xw,"f"),{logger:Y(this,w0,"f")})},z1=function(X){let Z=Y(this,a,"f");if(X.type==="message_start"){if(Z)throw new Q(`Unexpected event order, got ${X.type} before receiving "message_stop"`);return X.message}if(!Z)throw new Q(`Unexpected event order, got ${X.type} before "message_start"`);switch(X.type){case"message_stop":return Z;case"message_delta":if(Z.stop_reason=X.delta.stop_reason,Z.stop_sequence=X.delta.stop_sequence,Z.usage.output_tokens=X.usage.output_tokens,X.usage.input_tokens!=null)Z.usage.input_tokens=X.usage.input_tokens;if(X.usage.cache_creation_input_tokens!=null)Z.usage.cache_creation_input_tokens=X.usage.cache_creation_input_tokens;if(X.usage.cache_read_input_tokens!=null)Z.usage.cache_read_input_tokens=X.usage.cache_read_input_tokens;if(X.usage.server_tool_use!=null)Z.usage.server_tool_use=X.usage.server_tool_use;return Z;case"content_block_start":return Z.content.push({...X.content_block}),Z;case"content_block_delta":{let $=Z.content.at(X.index);switch(X.delta.type){case"text_delta":{if($?.type==="text")Z.content[X.index]={...$,text:($.text||"")+X.delta.text};break}case"citations_delta":{if($?.type==="text")Z.content[X.index]={...$,citations:[...$.citations??[],X.delta.citation]};break}case"input_json_delta":{if($&&Y1($)){let z=$[W1]||"";z+=X.delta.partial_json;let W={...$};if(Object.defineProperty(W,W1,{value:z,enumerable:!1,writable:!0}),z)W.input=O0(z);Z.content[X.index]=W}break}case"thinking_delta":{if($?.type==="thinking")Z.content[X.index]={...$,thinking:$.thinking+X.delta.thinking};break}case"signature_delta":{if($?.type==="thinking")Z.content[X.index]={...$,signature:X.delta.signature};break}default:K1(X.delta)}return Z}case"content_block_stop":return Z}},Symbol.asyncIterator)](){let w=[],X=[],Z=!1;return this.on("streamEvent",($)=>{let z=X.shift();if(z)z.resolve($);else w.push($)}),this.on("end",()=>{Z=!0;for(let $ of X)$.resolve(void 0);X.length=0}),this.on("abort",($)=>{Z=!0;for(let z of X)z.reject($);X.length=0}),this.on("error",($)=>{Z=!0;for(let z of X)z.reject($);X.length=0}),{next:async()=>{if(!w.length){if(Z)return{value:void 0,done:!0};return new Promise((z,W)=>X.push({resolve:z,reject:W})).then((z)=>z?{value:z,done:!1}:{value:void 0,done:!0})}return{value:w.shift(),done:!1}},return:async()=>{return this.abort(),{value:void 0,done:!0}}}}toReadableStream(){return new B(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function K1(w){}class Z0 extends H{create(w,X){return this._client.post("/v1/messages/batches",{body:w,...X})}retrieve(w,X){return this._client.get(O`/v1/messages/batches/${w}`,X)}list(w={},X){return this._client.getAPIList("/v1/messages/batches",R,{query:w,...X})}delete(w,X){return this._client.delete(O`/v1/messages/batches/${w}`,X)}cancel(w,X){return this._client.post(O`/v1/messages/batches/${w}/cancel`,X)}async results(w,X){let Z=await this.retrieve(w);if(!Z.results_url)throw new Q(`No batch \`results_url\`; Has it finished processing? ${Z.processing_status} - ${Z.id}`);return this._client.get(Z.results_url,{...X,headers:G([{Accept:"application/binary"},X?.headers]),stream:!0,__binaryResponse:!0})._thenUnwrap(($,z)=>Qw.fromResponse(z.response,z.controller))}}class Zw extends H{constructor(){super(...arguments);this.batches=new Z0(this._client)}create(w,X){if(w.model in J1)console.warn(`The model '${w.model}' is deprecated and will reach end-of-life on ${J1[w.model]}
Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);if(w.model in z2&&w.thinking&&w.thinking.type==="enabled")console.warn(`Using Claude with ${w.model} and 'thinking.type=enabled' is deprecated. Use 'thinking.type=adaptive' instead which results in better model performance in our testing: https://platform.claude.com/docs/en/build-with-claude/adaptive-thinking`);let Z=this._client._options.timeout;if(!w.stream&&Z==null){let z=q0[w.model]??void 0;Z=this._client.calculateNonstreamingTimeout(w.max_tokens,z)}let $=U0(w.tools,w.messages);return this._client.post("/v1/messages",{body:w,timeout:Z??600000,...X,headers:G([$,X?.headers]),stream:w.stream??!1})}parse(w,X){return this.create(w,X).then((Z)=>X4(Z,w,{logger:this._client.logger??console}))}stream(w,X){return X0.createMessage(this,w,X,{logger:this._client.logger??console})}countTokens(w,X){return this._client.post("/v1/messages/count_tokens",{body:w,...X})}}var J1={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-3-opus-20240229":"January 5th, 2026","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025","claude-3-7-sonnet-latest":"February 19th, 2026","claude-3-7-sonnet-20250219":"February 19th, 2026","claude-3-5-haiku-latest":"February 19th, 2026","claude-3-5-haiku-20241022":"February 19th, 2026"},z2=["claude-opus-4-6"];Zw.Batches=Z0;class Cw extends H{retrieve(w,X={},Z){let{betas:$}=X??{};return this._client.get(O`/v1/models/${w}`,{...Z,headers:G([{...$?.toString()!=null?{"anthropic-beta":$?.toString()}:void 0},Z?.headers])})}list(w={},X){let{betas:Z,...$}=w??{};return this._client.getAPIList("/v1/models",R,{query:$,...X,headers:G([{...Z?.toString()!=null?{"anthropic-beta":Z?.toString()}:void 0},X?.headers])})}}var $0=(w)=>{if(typeof globalThis.process<"u")return globalThis.process.env?.[w]?.trim()??void 0;if(typeof globalThis.Deno<"u")return globalThis.Deno.env?.get?.(w)?.trim();return};var K4,J4,y0,V1,Q1="\\n\\nHuman:",N1="\\n\\nAssistant:";class D{constructor({baseURL:w=$0("ANTHROPIC_BASE_URL"),apiKey:X=$0("ANTHROPIC_API_KEY")??null,authToken:Z=$0("ANTHROPIC_AUTH_TOKEN")??null,...$}={}){K4.add(this),y0.set(this,void 0);let z={apiKey:X,authToken:Z,...$,baseURL:w||"https://api.anthropic.com"};if(!z.dangerouslyAllowBrowser&&L4())throw new Q(`It looks like you're running in a browser-like environment.
This is disabled by default, as it risks exposing your secret API credentials to attackers.
If you understand the risks and have appropriate mitigations in place,
you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
`);this.baseURL=z.baseURL,this.timeout=z.timeout??J4.DEFAULT_TIMEOUT,this.logger=z.logger??console;let W="warn";this.logLevel=W,this.logLevel=d0(z.logLevel,"ClientOptions.logLevel",this)??d0($0("ANTHROPIC_LOG"),"process.env['ANTHROPIC_LOG']",this)??W,this.fetchOptions=z.fetchOptions,this.maxRetries=z.maxRetries??2,this.fetch=z.fetch??j4(),V(this,y0,y4,"f"),this._options=z,this.apiKey=typeof X==="string"?X:null,this.authToken=Z}withOptions(w){return new this.constructor({...this._options,baseURL:this.baseURL,maxRetries:this.maxRetries,timeout:this.timeout,logger:this.logger,logLevel:this.logLevel,fetch:this.fetch,fetchOptions:this.fetchOptions,apiKey:this.apiKey,authToken:this.authToken,...w})}defaultQuery(){return this._options.defaultQuery}validateHeaders({values:w,nulls:X}){if(w.get("x-api-key")||w.get("authorization"))return;if(this.apiKey&&w.get("x-api-key"))return;if(X.has("x-api-key"))return;if(this.authToken&&w.get("authorization"))return;if(X.has("authorization"))return;throw Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}async authHeaders(w){return G([await this.apiKeyAuth(w),await this.bearerAuth(w)])}async apiKeyAuth(w){if(this.apiKey==null)return;return G([{"X-Api-Key":this.apiKey}])}async bearerAuth(w){if(this.authToken==null)return;return G([{Authorization:`Bearer ${this.authToken}`}])}stringifyQuery(w){return Object.entries(w).filter(([X,Z])=>typeof Z<"u").map(([X,Z])=>{if(typeof Z==="string"||typeof Z==="number"||typeof Z==="boolean")return`${encodeURIComponent(X)}=${encodeURIComponent(Z)}`;if(Z===null)return`${encodeURIComponent(X)}=`;throw new Q(`Cannot stringify type ${typeof Z}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join("&")}getUserAgent(){return`${this.constructor.name}/JS ${u}`}defaultIdempotencyKey(){return`stainless-node-retry-${k0()}`}makeStatusError(w,X,Z,$){return A.generate(w,X,Z,$)}buildURL(w,X,Z){let $=!Y(this,K4,"m",V1).call(this)&&Z||this.baseURL,z=M4(w)?new URL(w):new URL($+($.endsWith("/")&&w.startsWith("/")?w.slice(1):w)),W=this.defaultQuery();if(!D4(W))X={...W,...X};if(typeof X==="object"&&X&&!Array.isArray(X))z.search=this.stringifyQuery(X);return z.toString()}_calculateNonstreamingTimeout(w){if(3600*w/128000>600)throw new Q("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#streaming-responses for more details");return 600000}async prepareOptions(w){}async prepareRequest(w,{url:X,options:Z}){}get(w,X){return this.methodRequest("get",w,X)}post(w,X){return this.methodRequest("post",w,X)}patch(w,X){return this.methodRequest("patch",w,X)}put(w,X){return this.methodRequest("put",w,X)}delete(w,X){return this.methodRequest("delete",w,X)}methodRequest(w,X,Z){return this.request(Promise.resolve(Z).then(($)=>{return{method:w,path:X,...$}}))}request(w,X=null){return new s(this,this.makeRequest(w,X,void 0))}async makeRequest(w,X,Z){let $=await w,z=$.maxRetries??this.maxRetries;if(X==null)X=z;await this.prepareOptions($);let{req:W,url:K,timeout:J}=await this.buildRequest($,{retryCount:z-X});await this.prepareRequest(W,{url:K,options:$});let N="log_"+(Math.random()*16777216|0).toString(16).padStart(6,"0"),U=Z===void 0?"":`, retryOf: ${Z}`,C=Date.now();if(S(this).debug(`[${N}] sending request`,_({retryOfRequestLogID:Z,method:$.method,url:K,options:$,headers:W.headers})),$.signal?.aborted)throw new F;let q=new AbortController,x=await this.fetchWithTimeout(K,W,J,q).catch(qw),T=Date.now();if(x instanceof globalThis.Error){let b=`retrying, ${X} attempts remaining`;if($.signal?.aborted)throw new F;let k=h(x)||/timed? ?out/i.test(String(x)+("cause"in x?String(x.cause):""));if(X)return S(this).info(`[${N}] connection ${k?"timed out":"failed"} - ${b}`),S(this).debug(`[${N}] connection ${k?"timed out":"failed"} (${b})`,_({retryOfRequestLogID:Z,url:K,durationMs:T-C,message:x.message})),this.retryRequest($,X,Z??N);if(S(this).info(`[${N}] connection ${k?"timed out":"failed"} - error; no more retries left`),S(this).debug(`[${N}] connection ${k?"timed out":"failed"} (error; no more retries left)`,_({retryOfRequestLogID:Z,url:K,durationMs:T-C,message:x.message})),k)throw new Ow;throw new t({cause:x})}let o=[...x.headers.entries()].filter(([b])=>b==="request-id").map(([b,k])=>", "+b+": "+JSON.stringify(k)).join(""),Uw=`[${N}${U}${o}] ${W.method} ${K} ${x.ok?"succeeded":"failed"} with status ${x.status} in ${T-C}ms`;if(!x.ok){let b=await this.shouldRetry(x);if(X&&b){let z0=`retrying, ${X} attempts remaining`;return await P4(x.body),S(this).info(`${Uw} - ${z0}`),S(this).debug(`[${N}] response error (${z0})`,_({retryOfRequestLogID:Z,url:x.url,status:x.status,headers:x.headers,durationMs:T-C})),this.retryRequest($,X,Z??N,x.headers)}let k=b?"error; no more retries left":"error; not retryable";S(this).info(`${Uw} - ${k}`);let U4=await x.text().catch((z0)=>qw(z0).message),q4=Y0(U4),O4=q4?void 0:U4;throw S(this).debug(`[${N}] response error (${k})`,_({retryOfRequestLogID:Z,url:x.url,status:x.status,headers:x.headers,message:O4,durationMs:Date.now()-C})),this.makeStatusError(x.status,q4,O4,x.headers)}return S(this).info(Uw),S(this).debug(`[${N}] response start`,_({retryOfRequestLogID:Z,url:x.url,status:x.status,headers:x.headers,durationMs:T-C})),{response:x,options:$,controller:q,requestLogID:N,retryOfRequestLogID:Z,startTime:C}}getAPIList(w,X,Z){return this.requestAPIList(X,Z&&"then"in Z?Z.then(($)=>({method:"get",path:w,...$})):{method:"get",path:w,...Z})}requestAPIList(w,X){let Z=this.makeRequest(X,null,void 0);return new G0(this,Z,w)}async fetchWithTimeout(w,X,Z,$){let{signal:z,method:W,...K}=X||{},J=this._makeAbort($);if(z)z.addEventListener("abort",J,{once:!0});let N=setTimeout(J,Z),U=globalThis.ReadableStream&&K.body instanceof globalThis.ReadableStream||typeof K.body==="object"&&K.body!==null&&Symbol.asyncIterator in K.body,C={signal:$.signal,...U?{duplex:"half"}:{},method:"GET",...K};if(W)C.method=W.toUpperCase();try{return await this.fetch.call(void 0,w,C)}finally{clearTimeout(N)}}async shouldRetry(w){let X=w.headers.get("x-should-retry");if(X==="true")return!0;if(X==="false")return!1;if(w.status===408)return!0;if(w.status===409)return!0;if(w.status===429)return!0;if(w.status>=500)return!0;return!1}async retryRequest(w,X,Z,$){let z,W=$?.get("retry-after-ms");if(W){let J=parseFloat(W);if(!Number.isNaN(J))z=J}let K=$?.get("retry-after");if(K&&!z){let J=parseFloat(K);if(!Number.isNaN(J))z=J*1000;else z=Date.parse(K)-Date.now()}if(!(z&&0<=z&&z<60000)){let J=w.maxRetries??this.maxRetries;z=this.calculateDefaultRetryTimeoutMillis(X,J)}return await T4(z),this.makeRequest(w,X-1,Z)}calculateDefaultRetryTimeoutMillis(w,X){let z=X-w,W=Math.min(0.5*Math.pow(2,z),8),K=1-Math.random()*0.25;return W*K*1000}calculateNonstreamingTimeout(w,X){if(3600000*w/128000>600000||X!=null&&w>X)throw new Q("Streaming is required for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-typescript#long-requests for more details");return 600000}async buildRequest(w,{retryCount:X=0}={}){let Z={...w},{method:$,path:z,query:W,defaultBaseURL:K}=Z,J=this.buildURL(z,W,K);if("timeout"in Z)E4("timeout",Z.timeout);Z.timeout=Z.timeout??this.timeout;let{bodyHeaders:N,body:U}=this.buildBody({options:Z}),C=await this.buildHeaders({options:w,method:$,bodyHeaders:N,retryCount:X});return{req:{method:$,headers:C,...Z.signal&&{signal:Z.signal},...globalThis.ReadableStream&&U instanceof globalThis.ReadableStream&&{duplex:"half"},...U&&{body:U},...this.fetchOptions??{},...Z.fetchOptions??{}},url:J,timeout:Z.timeout}}async buildHeaders({options:w,method:X,bodyHeaders:Z,retryCount:$}){let z={};if(this.idempotencyHeader&&X!=="get"){if(!w.idempotencyKey)w.idempotencyKey=this.defaultIdempotencyKey();z[this.idempotencyHeader]=w.idempotencyKey}let W=G([z,{Accept:"application/json","User-Agent":this.getUserAgent(),"X-Stainless-Retry-Count":String($),...w.timeout?{"X-Stainless-Timeout":String(Math.trunc(w.timeout/1000))}:{},...B4(),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01"},await this.authHeaders(w),this._options.defaultHeaders,Z,w.headers]);return this.validateHeaders(W),W.values}_makeAbort(w){return()=>w.abort()}buildBody({options:{body:w,headers:X}}){if(!w)return{bodyHeaders:void 0,body:void 0};let Z=G([X]);if(ArrayBuffer.isView(w)||w instanceof ArrayBuffer||w instanceof DataView||typeof w==="string"&&Z.values.has("content-type")||globalThis.Blob&&w instanceof globalThis.Blob||w instanceof FormData||w instanceof URLSearchParams||globalThis.ReadableStream&&w instanceof globalThis.ReadableStream)return{bodyHeaders:void 0,body:w};else if(typeof w==="object"&&((Symbol.asyncIterator in w)||(Symbol.iterator in w)&&("next"in w)&&typeof w.next==="function"))return{bodyHeaders:void 0,body:K0(w)};else if(typeof w==="object"&&Z.values.get("content-type")==="application/x-www-form-urlencoded")return{bodyHeaders:{"content-type":"application/x-www-form-urlencoded"},body:this.stringifyQuery(w)};else return Y(this,y0,"f").call(this,{body:w,headers:Z})}}J4=D,y0=new WeakMap,K4=new WeakSet,V1=function(){return this.baseURL!=="https://api.anthropic.com"};D.Anthropic=J4;D.HUMAN_PROMPT=Q1;D.AI_PROMPT=N1;D.DEFAULT_TIMEOUT=600000;D.AnthropicError=Q;D.APIError=A;D.APIConnectionError=t;D.APIConnectionTimeoutError=Ow;D.APIUserAbortError=F;D.NotFoundError=Aw;D.ConflictError=Ew;D.RateLimitError=Sw;D.BadRequestError=Hw;D.AuthenticationError=Mw;D.InternalServerError=Fw;D.PermissionDeniedError=Dw;D.UnprocessableEntityError=Tw;D.toFile=x0;class P extends D{constructor(){super(...arguments);this.completions=new Gw(this),this.messages=new Zw(this),this.models=new Cw(this),this.beta=new g(this)}}P.Completions=Gw;P.Messages=Zw;P.Models=Cw;P.Beta=g;var $w=require("obsidian");async function G1(w,X){let Z=new $w.Notice("Generating metadata...",0),$=new P({apiKey:X.anthropicApiKey,dangerouslyAllowBrowser:!0});try{let z=await $.messages.create({model:X.anthropicModel,max_tokens:2048,messages:[{role:"user",content:w}]});if(Z.hide(),z.content.length>0&&z.content[0].type==="text")return z.content[0].text;throw Error("No text content in response")}catch(z){if(Z.hide(),z instanceof P.AuthenticationError)new $w.Notice("Authentication failed. Please check your API key in Settings → Metadator",8000);else if(z instanceof P.RateLimitError)new $w.Notice("Rate limit exceeded. Please wait a moment and try again.",8000);else if(z instanceof P.InternalServerError)new $w.Notice("API is currently overloaded. Please try again in a moment.",8000);else if(z instanceof P.APIError)new $w.Notice(`API error: ${z.message}`,8000);else new $w.Notice("An unknown API error occurred",8000);throw console.error("Claude API error:",z),z}}function V4(w){let X=/[\u4e00-\u9fa5]|[a-zA-Z0-9]+|[.,!?;,。!?;#]|[\n]/g;return w.match(X)||[]}function zw(w){let X="";for(let Z=0;Z<w.length;Z++){let $=w[Z];if($===`
`)X+=$;else if(/[\u4e00-\u9fa5]|[.,!?;,。!?;#]/.test($))X+=$;else{let z=Z>0?w[Z-1]:void 0,W=Z>0&&z!==`
`;X+=(W?" ":"")+$}}return X.trim()}function Y2(w,X){let Z=w.slice(0,X),$=Z.length<w.length?"...":"";return`${zw(Z)}${$}`}function K2(w,X){let Z=Math.max(1,Math.floor(X*0.8)),$=Math.max(0,X-Z),z=w.slice(0,Z);if($<=0)return zw(z);let W=w.slice(-$);return`${zw(z)}
...
${zw(W)}`}function J2(w,X,Z){let $=w.split(`
`);$=$.filter((N)=>N.trim()!=="");let z=[],W=!1;for(let N of $)if(N.startsWith("#"))z.push(N),W=!0;else if(W&&N.trim()!==""){let U=V4(N),C=U.slice(0,30),q=C.length<U.length?"...":"";z.push(`${zw(C)}${q}`),W=!1}let K=z.join(`
`),J=V4(K);if(J.length>Z)K=zw(J.slice(0,Z));else{let N=Z-J.length,U=X.slice(0,N),C=U.length<X.length?"...":"",q=`${zw(U)}${C}`;K=`Outline:
${K}
Body: ${q}`}return K}async function Q4(w,X,Z=1000,$="head_only"){let z=await w.vault.read(X);if(z.length===0)return"";let W=V4(z);if(W.length>Z&&Z>0){if($==="head_tail")z=K2(W,Z);else if($==="head_only")z=Y2(W,Z);else if($==="heading")z=J2(z,W,Z)}return z}async function f0(w,X,Z,$,z){await X.fileManager.processFrontMatter(w,(W)=>{if(z==="append"){if(Array.isArray($)){let K=W[Z],J=Array.isArray(K)?K:K!=null?[String(K)]:[];W[Z]=Array.from(new Set(J.concat($)))}}else if(z==="update")W[Z]=$;else if(W[Z]===void 0)W[Z]=$})}function V2(w,X){let Z=["I need to generate metadata for the following article. Requirements:","",`1. Tags: ${X.tagsPrompt}`,"",`2. Description: ${X.descriptionPrompt}`],$=['"tags": "tag1,tag2,tag3"','"description": "brief summary"'];if(X.enableTitle)Z.push("",`3. Title: ${X.titlePrompt}`),$.push('"title": "article title"');return Z.push("","Please return in the following JSON format:","{",` ${$.join(`,
`)}`,"}","","Article content:","",w),Z.join(`
`)}function Q2(w){if(typeof w!=="object"||w===null)return!1;let X=w;return(X.tags===void 0||typeof X.tags==="string")&&(X.description===void 0||typeof X.description==="string")&&(X.title===void 0||typeof X.title==="string")}function N2(w){let X=w.match(/{[\s\S]*}/);if(!X){let Z=w.match(/```(?:json)?\n?([\s\S]*?)```/);if(Z)X=Z[1].match(/{[\s\S]*}/)}if(!X)return null;try{let Z=JSON.parse(X[0]);return Q2(Z)?Z:null}catch{return null}}function G2(w){return w.split(",").map((X)=>X.trim()).filter((X)=>X!=="")}function x2(w){let X=w.trim();if(X.startsWith('"')&&X.endsWith('"')||X.startsWith("'")&&X.endsWith("'"))return X.substring(1,X.length-1);return X}function N4(w){if(!w)return!0;if(typeof w==="string")return w.trim()==="";if(Array.isArray(w))return w.length===0||w.every((X)=>String(X).trim()==="");return!1}function x1(w,X){if(w)return"update";if(!X||typeof X==="string"&&X.trim()==="")return"update";return"keep"}async function C1(w,X){let Z=w.workspace.getActiveFile();if(!Z){new m.Notice("Please open a file first");return}if(Z.extension!=="md"){new m.Notice("Current file is not a markdown file");return}if(!X.anthropicApiKey||X.anthropicApiKey===""){new m.Notice("Please configure your Anthropic API key in Settings → Metadator",8000);return}let z=w.metadataCache.getFileCache(Z)?.frontmatter||{},W=X.updateMethod==="always_regenerate";if(N4(z[X.tagsFieldName])||N4(z[X.descriptionFieldName])||X.enableTitle&&N4(z[X.titleFieldName])||W)try{if(await C2(Z,w,X,z,W))new m.Notice("Metadata updated successfully")}catch(J){if(!(J instanceof Error&&J.message.includes("API")))new m.Notice(`Unexpected error: ${J instanceof Error?J.message:String(J)}`,8000);console.error("generateMetadata error:",J)}}async function C2(w,X,Z,$,z=!1){let W="";if(Z.truncateContent)W=await Q4(X,w,Z.maxTokens,Z.truncateMethod);else W=await Q4(X,w,-1,"head_only");let K=V2(W,Z),J;try{J=await G1(K,Z)}catch(C){return console.error("Error calling Claude:",C),!1}if(!J)return!1;let N=N2(J)??{},U=!1;if(N.tags){let C=G2(N.tags);try{await f0(w,X,Z.tagsFieldName,C,"append"),U=!0}catch(q){new m.Notice(`Failed to write tags: ${q instanceof Error?q.message:String(q)}`),console.error("updateFrontMatter error (tags):",q)}}if(N.description){let C=x1(z,$[Z.descriptionFieldName]);try{if(await f0(w,X,Z.descriptionFieldName,N.description,C),C==="update")U=!0}catch(q){new m.Notice(`Failed to write description: ${q instanceof Error?q.message:String(q)}`),console.error("updateFrontMatter error (description):",q)}}if(Z.enableTitle&&N.title){let C=x2(N.title),q=x1(z,$[Z.titleFieldName]);try{if(await f0(w,X,Z.titleFieldName,C,q),q==="update")U=!0}catch(x){new m.Notice(`Failed to write title: ${x instanceof Error?x.message:String(x)}`),console.error("updateFrontMatter error (title):",x)}}return U}var G4={anthropicApiKey:"",anthropicModel:"claude-sonnet-4-6",tagsFieldName:"tags",descriptionFieldName:"description",titleFieldName:"title",enableTitle:!0,truncateContent:!0,maxTokens:1000,truncateMethod:"head_only",updateMethod:"preserve_existing",tagsPrompt:"Select 3-5 relevant tags in lowercase with hyphens instead of spaces (e.g., 'knowledge-management', 'note-taking')",descriptionPrompt:"Write a concise but useful summary in 1-2 sentences that captures the main purpose and key points",titlePrompt:"Create a simple, concise title with minimal adjectives that clearly states the topic"};var M=require("obsidian");class x4 extends M.PluginSettingTab{plugin;constructor(w,X){super(w,X);this.plugin=X}display(){let{containerEl:w}=this;w.empty(),new M.Setting(w).setName("Anthropic API Settings").setHeading(),new M.Setting(w).setName("API Key").setDesc("Your Anthropic API key. Get one at console.anthropic.com (requires an account with billing enabled)").addText((W)=>{W.setPlaceholder("sk-ant-...").setValue(this.plugin.settings.anthropicApiKey).onChange(async(K)=>{this.plugin.settings.anthropicApiKey=K,await this.plugin.saveSettings()}),W.inputEl.type="password"}),new M.Setting(w).setName("Model").setDesc("Model to use for metadata generation").addDropdown((W)=>W.addOption("claude-sonnet-4-6","Claude Sonnet 4.6").addOption("claude-opus-4-6","Claude Opus 4.6").addOption("claude-haiku-4-5-20251001","Claude Haiku 4.5").setValue(this.plugin.settings.anthropicModel).onChange(async(K)=>{this.plugin.settings.anthropicModel=K,await this.plugin.saveSettings()})),new M.Setting(w).setName("Update Settings").setHeading(),new M.Setting(w).setName("Update Method").setDesc("Always Regenerate: regenerate on every command; Preserve Existing: only generate empty fields").addDropdown((W)=>W.addOption("always_regenerate","Always Regenerate").addOption("preserve_existing","Preserve Existing").setValue(this.plugin.settings.updateMethod).onChange(async(K)=>{this.plugin.settings.updateMethod=K,await this.plugin.saveSettings()})),new M.Setting(w).setName("Truncate Content").setDesc("Limit content sent to API to reduce costs").addToggle((W)=>W.setValue(this.plugin.settings.truncateContent).onChange(async(K)=>{this.plugin.settings.truncateContent=K,await this.plugin.saveSettings(),X.setDisabled(!K),Z.setDisabled(!K)}));let X=new M.Setting(w).setName("Max Tokens").setDesc("Maximum content length in tokens").addText((W)=>W.setValue(this.plugin.settings.maxTokens.toString()).onChange(async(K)=>{let J=Number.parseInt(K,10);if(Number.isNaN(J)||J<1){new M.Notice("Max tokens must be a positive integer"),W.setValue(this.plugin.settings.maxTokens.toString());return}this.plugin.settings.maxTokens=J,await this.plugin.saveSettings()})),Z=new M.Setting(w).setName("Truncate Method").setDesc("How to truncate long content").addDropdown((W)=>W.addOption("head_only","Beginning Only").addOption("head_tail","Beginning + End").addOption("heading","Headings + Summaries").setValue(this.plugin.settings.truncateMethod).onChange(async(K)=>{this.plugin.settings.truncateMethod=K,await this.plugin.saveSettings()}));X.setDisabled(!this.plugin.settings.truncateContent),Z.setDisabled(!this.plugin.settings.truncateContent),new M.Setting(w).setName("Tags Settings").setHeading(),new M.Setting(w).setName("Tags Field Name").setDesc("Frontmatter field name for tags").addText((W)=>W.setValue(this.plugin.settings.tagsFieldName).onChange(async(K)=>{this.plugin.settings.tagsFieldName=K||"tags",await this.plugin.saveSettings()})),new M.Setting(w).setName("Tags Prompt").setDesc("Instructions for tag generation").addTextArea((W)=>{W.setValue(this.plugin.settings.tagsPrompt).onChange(async(K)=>{this.plugin.settings.tagsPrompt=K,await this.plugin.saveSettings()}),W.inputEl.setAttr("rows","3")}),new M.Setting(w).setName("Description Settings").setHeading(),new M.Setting(w).setName("Description Field Name").setDesc("Frontmatter field name for description").addText((W)=>W.setValue(this.plugin.settings.descriptionFieldName).onChange(async(K)=>{this.plugin.settings.descriptionFieldName=K||"description",await this.plugin.saveSettings()})),new M.Setting(w).setName("Description Prompt").setDesc("Instructions for description generation").addTextArea((W)=>{W.setValue(this.plugin.settings.descriptionPrompt).onChange(async(K)=>{this.plugin.settings.descriptionPrompt=K,await this.plugin.saveSettings()}),W.inputEl.setAttr("rows","3")}),new M.Setting(w).setName("Title Settings").setHeading(),new M.Setting(w).setName("Enable Title").setDesc("Generate title metadata").addToggle((W)=>W.setValue(this.plugin.settings.enableTitle).onChange(async(K)=>{this.plugin.settings.enableTitle=K,await this.plugin.saveSettings(),$.setDisabled(!K),z.setDisabled(!K)}));let $=new M.Setting(w).setName("Title Field Name").setDesc("Frontmatter field name for title").addText((W)=>W.setValue(this.plugin.settings.titleFieldName).onChange(async(K)=>{this.plugin.settings.titleFieldName=K||"title",await this.plugin.saveSettings()})),z=new M.Setting(w).setName("Title Prompt").setDesc("Instructions for title generation").addTextArea((W)=>{W.setValue(this.plugin.settings.titlePrompt).onChange(async(K)=>{this.plugin.settings.titlePrompt=K,await this.plugin.saveSettings()}),W.inputEl.setAttr("rows","3")});$.setDisabled(!this.plugin.settings.enableTitle),z.setDisabled(!this.plugin.settings.enableTitle)}}function q1(w){if(!w)return w;if(w.updateMethod==="force"||w.updateMethod==="update_all")w.updateMethod="always_regenerate";else if(w.updateMethod==="no-llm"||w.updateMethod==="empty_only")w.updateMethod="preserve_existing";if(w.anthropicModel==="claude-sonnet-4-5-20250929")w.anthropicModel="claude-sonnet-4-6";if(w.anthropicModel==="claude-opus-4-5-20251101")w.anthropicModel="claude-opus-4-6";return w}class C4 extends U1.Plugin{settings=G4;async onload(){await this.loadSettings(),this.addCommand({id:"generate-metadata",name:"Generate metadata for current note",callback:async()=>{await C1(this.app,this.settings)}}),this.addSettingTab(new x4(this.app,this))}onunload(){}async loadSettings(){let w=q1(await this.loadData());this.settings=Object.assign({},G4,w)}async saveSettings(){await this.saveData(this.settings)}}