@codeworksh/aikit 0.4.0 → 0.4.1-dev.20260530133305

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +109 -137
  3. package/cli.d.mts +1 -0
  4. package/cli.mjs +308 -0
  5. package/cli.mjs.map +1 -0
  6. package/codex-DfYk740t.mjs +521 -0
  7. package/codex-DfYk740t.mjs.map +1 -0
  8. package/index.d.mts +7197 -0
  9. package/index.mjs +1478 -0
  10. package/index.mjs.map +1 -0
  11. package/oauth/openai/codex.d.mts +107 -0
  12. package/oauth/openai/codex.mjs +2 -0
  13. package/package.json +28 -33
  14. package/{dist/pack/index.mjs → registry-CYfzJ6lk.mjs} +210 -3300
  15. package/registry-CYfzJ6lk.mjs.map +1 -0
  16. package/dist/pack/agent/codemode/drivers/drivers.d.mts +0 -7
  17. package/dist/pack/agent/codemode/drivers/drivers.mjs +0 -122
  18. package/dist/pack/agent/codemode/drivers/drivers.mjs.map +0 -1
  19. package/dist/pack/codemode-BEDXG7WN.d.mts +0 -8736
  20. package/dist/pack/index.d.mts +0 -71
  21. package/dist/pack/index.mjs.map +0 -1
  22. package/src/agent/agent.ts +0 -790
  23. package/src/agent/codemode/codemode.ts +0 -561
  24. package/src/agent/codemode/drivers/drivers.ts +0 -1
  25. package/src/agent/codemode/drivers/quickjs-wasi-driver.ts +0 -149
  26. package/src/agent/codemode/index.ts +0 -1
  27. package/src/agent/loop.ts +0 -903
  28. package/src/agent.ts +0 -11
  29. package/src/event/event.ts +0 -277
  30. package/src/index.ts +0 -6
  31. package/src/llm.ts +0 -31
  32. package/src/message/message.ts +0 -311
  33. package/src/model/catalog.ts +0 -94
  34. package/src/model/model.ts +0 -250
  35. package/src/model/transform.ts +0 -59
  36. package/src/provider/provider.ts +0 -60
  37. package/src/provider/providers/anthropic/index.ts +0 -792
  38. package/src/provider/providers/github/github.ts +0 -34
  39. package/src/provider/providers/openai/completions.ts +0 -953
  40. package/src/provider/providers/utils.ts +0 -7
  41. package/src/provider/register.ts +0 -6
  42. package/src/provider/stream.ts +0 -278
  43. package/src/stream.ts +0 -72
  44. package/src/utils/eventstream.ts +0 -95
  45. package/src/utils/helpers.ts +0 -24
  46. package/src/utils/jsonparse.ts +0 -32
  47. package/src/utils/overflow.ts +0 -121
  48. package/src/utils/sanitize.ts +0 -25
  49. package/src/utils/validation.ts +0 -87
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":["resolve","pathResolve","#s","#o","#t","#h","#w","#c","#S","#r","#u","#i","#f","#a","#E","#n","#d","#T","#g","#y","#C","#b","#p","#R","#l","#U","#W","#F","#D","#v","#A","#m","#x","#_","#e","#G","#M","#j","#O","#k","#N","#P","#I","#L","#B","#z","#$","#H","ee","ni","wi","yi","bi","Si","Ei","Ci","Ti","Ai","ki","#q","re","gi","mi","Wi","regExpEscape","star","#parent","#root","#parts","#hasMagic","#options","#negs","#filledNegs","#parentIndex","#toString","#parseAST","#canAdoptType","#emptyExt","#canAdopt","#adopt","#canUsurpType","#flatten","#fillNegs","#parseGlob","#uflag","#partsToRegExp","#canAdoptWithSpace","#adoptWithSpace","#canUsurp","#usurp","#matchGlobstar","#matchOne","#matchGlobStarBodySections","glob","globSync","partialParse","createClient","buildSyntheticToolResult","convertMessages","convertTools","mapStopReason","buildParams","anthropicProvider","openAICompletionsProvider"],"sources":["../../../utils/src/error.ts","../../../utils/src/filesystem.ts","../../../utils/src/lazy.ts","../../../../node_modules/.pnpm/glob@13.0.6/node_modules/glob/dist/esm/index.min.js","../../../../node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js","../../../../node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js","../../../../node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/assert-valid-pattern.js","../../../../node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/brace-expressions.js","../../../../node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/unescape.js","../../../../node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/ast.js","../../../../node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/escape.js","../../../../node_modules/.pnpm/minimatch@10.2.5/node_modules/minimatch/dist/esm/index.js","../../../utils/src/glob.ts","../../src/provider/provider.ts","../../src/model/catalog.ts","../../src/model/transform.ts","../../src/model/model.ts","../../src/provider/stream.ts","../../src/utils/eventstream.ts","../../src/utils/validation.ts","../../src/agent/loop.ts","../../src/agent.ts","../../src/message/message.ts","../../src/utils/jsonparse.ts","../../src/utils/sanitize.ts","../../src/provider/providers/utils.ts","../../src/provider/providers/anthropic/index.ts","../../src/provider/providers/github/github.ts","../../src/provider/providers/openai/completions.ts","../../src/provider/register.ts","../../src/agent/agent.ts","../../src/agent/codemode/codemode.ts","../../src/llm.ts","../../src/stream.ts"],"sourcesContent":["import type { Static, TSchema } from \"typebox\";\n\ntype SchemaLike = TSchema;\ntype StaticData<Data extends SchemaLike> = Static<Data>;\n\nexport abstract class NamedError extends Error {\n\tabstract schema(): SchemaLike;\n\tabstract toObject(): { name: string; data: unknown };\n\n\tstatic create<Name extends string, Data extends SchemaLike>(name: Name, data: Data) {\n\t\tconst schema = {\n\t\t\t$id: name,\n\t\t\ttype: \"object\",\n\t\t\trequired: [\"name\", \"data\"],\n\t\t\tproperties: {\n\t\t\t\tname: {\n\t\t\t\t\tconst: name,\n\t\t\t\t},\n\t\t\t\tdata,\n\t\t\t},\n\t\t} as const;\n\n\t\tconst result = class extends NamedError {\n\t\t\tpublic static readonly Schema = schema;\n\n\t\t\tpublic override readonly name = name as Name;\n\n\t\t\tconstructor(\n\t\t\t\tpublic readonly data: StaticData<Data>,\n\t\t\t\toptions?: ErrorOptions,\n\t\t\t) {\n\t\t\t\tsuper(name, options);\n\t\t\t\tthis.name = name;\n\t\t\t}\n\n\t\t\tstatic isInstance(input: unknown): input is InstanceType<typeof result> {\n\t\t\t\treturn typeof input === \"object\" && input !== null && \"name\" in input && input.name === name;\n\t\t\t}\n\n\t\t\tschema() {\n\t\t\t\treturn schema;\n\t\t\t}\n\n\t\t\ttoObject() {\n\t\t\t\treturn {\n\t\t\t\t\tname,\n\t\t\t\t\tdata: this.data,\n\t\t\t\t};\n\t\t\t}\n\t\t};\n\n\t\tObject.defineProperty(result, \"name\", { value: name });\n\t\treturn result;\n\t}\n\n\tpublic static readonly Unknown = NamedError.create(\"UnknownError\", {\n\t\ttype: \"object\",\n\t\trequired: [\"message\"],\n\t\tproperties: {\n\t\t\tmessage: {\n\t\t\t\ttype: \"string\",\n\t\t\t},\n\t\t},\n\t});\n}\n","import { createWriteStream, existsSync, realpathSync, statSync } from \"fs\";\nimport { chmod, mkdir, readFile, writeFile } from \"fs/promises\";\nimport { dirname, join, relative, resolve as pathResolve } from \"path\";\nimport { Readable } from \"stream\";\nimport { pipeline } from \"stream/promises\";\n\nexport namespace Filesystem {\n\texport async function exists(path: string): Promise<boolean> {\n\t\treturn existsSync(path);\n\t}\n\n\texport async function isDir(path: string): Promise<boolean> {\n\t\ttry {\n\t\t\treturn statSync(path).isDirectory();\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\texport function stat(path: string): ReturnType<typeof statSync> | undefined {\n\t\treturn statSync(path, { throwIfNoEntry: false }) ?? undefined;\n\t}\n\n\texport async function size(path: string): Promise<number> {\n\t\tconst result = stat(path)?.size ?? 0;\n\t\treturn typeof result === \"bigint\" ? Number(result) : result;\n\t}\n\n\texport async function readText(path: string): Promise<string> {\n\t\treturn readFile(path, \"utf-8\");\n\t}\n\n\texport async function readJson<T = unknown>(path: string): Promise<T> {\n\t\treturn JSON.parse(await readFile(path, \"utf-8\"));\n\t}\n\n\texport async function readBytes(path: string): Promise<Buffer> {\n\t\treturn readFile(path);\n\t}\n\n\texport async function readArrayBuffer(path: string): Promise<ArrayBuffer> {\n\t\tconst buffer = await readFile(path);\n\t\treturn buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength) as ArrayBuffer;\n\t}\n\n\tfunction isEnoent(error: unknown): error is { code: \"ENOENT\" } {\n\t\treturn (\n\t\t\ttypeof error === \"object\" && error !== null && \"code\" in error && (error as { code: string }).code === \"ENOENT\"\n\t\t);\n\t}\n\n\texport async function write(path: string, content: string | Buffer | Uint8Array, mode?: number): Promise<void> {\n\t\ttry {\n\t\t\tif (mode) {\n\t\t\t\tawait writeFile(path, content, { mode });\n\t\t\t} else {\n\t\t\t\tawait writeFile(path, content);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tif (isEnoent(error)) {\n\t\t\t\tawait mkdir(dirname(path), { recursive: true });\n\t\t\t\tif (mode) {\n\t\t\t\t\tawait writeFile(path, content, { mode });\n\t\t\t\t} else {\n\t\t\t\t\tawait writeFile(path, content);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\texport async function writeJson(path: string, data: unknown, mode?: number): Promise<void> {\n\t\treturn write(path, JSON.stringify(data, null, 2), mode);\n\t}\n\n\texport async function writeStream(\n\t\tpath: string,\n\t\tstream: ReadableStream<Uint8Array> | Readable,\n\t\tmode?: number,\n\t): Promise<void> {\n\t\tconst directory = dirname(path);\n\t\tif (!existsSync(directory)) {\n\t\t\tawait mkdir(directory, { recursive: true });\n\t\t}\n\n\t\tconst nodeStream = stream instanceof ReadableStream ? Readable.fromWeb(stream as never) : stream;\n\t\tconst output = createWriteStream(path);\n\t\tawait pipeline(nodeStream, output);\n\n\t\tif (mode) {\n\t\t\tawait chmod(path, mode);\n\t\t}\n\t}\n\n\texport function normalizePath(path: string): string {\n\t\tif (process.platform !== \"win32\") return path;\n\t\ttry {\n\t\t\treturn realpathSync.native(path);\n\t\t} catch {\n\t\t\treturn path;\n\t\t}\n\t}\n\n\texport function windowsPath(p: string): string {\n\t\tif (process.platform !== \"win32\") return p;\n\t\treturn (\n\t\t\tp\n\t\t\t\t.replace(/^\\/([a-zA-Z]):(?:[\\\\/]|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n\t\t\t\t// Git Bash for Windows paths are typically /<drive>/...\n\t\t\t\t.replace(/^\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n\t\t\t\t// Cygwin git paths are typically /cygdrive/<drive>/...\n\t\t\t\t.replace(/^\\/cygdrive\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n\t\t\t\t// WSL paths are typically /mnt/<drive>/...\n\t\t\t\t.replace(/^\\/mnt\\/([a-zA-Z])(?:\\/|$)/, (_, drive) => `${drive.toUpperCase()}:/`)\n\t\t);\n\t}\n\n\texport function overlaps(a: string, b: string): boolean {\n\t\tconst relA = relative(a, b);\n\t\tconst relB = relative(b, a);\n\t\treturn !relA?.startsWith(\"..\") || !relB?.startsWith(\"..\");\n\t}\n\n\texport function contains(parent: string, child: string): boolean {\n\t\treturn !relative(parent, child).startsWith(\"..\");\n\t}\n\n\texport async function findUp(target: string, start: string, stop?: string): Promise<string[]> {\n\t\tlet current = start;\n\t\tconst result: string[] = [];\n\t\twhile (true) {\n\t\t\tconst search = join(current, target);\n\t\t\tif (await exists(search)) result.push(search);\n\t\t\tif (stop === current) break;\n\t\t\tconst parent = dirname(current);\n\t\t\tif (parent === current) break;\n\t\t\tcurrent = parent;\n\t\t}\n\t\treturn result;\n\t}\n\n\texport async function* up(options: { targets: string[]; start: string; stop?: string }): AsyncGenerator<string> {\n\t\tconst { targets, start, stop } = options;\n\t\tlet current = start;\n\t\twhile (true) {\n\t\t\tfor (const target of targets) {\n\t\t\t\tconst search = join(current, target);\n\t\t\t\tif (await exists(search)) yield search;\n\t\t\t}\n\t\t\tif (stop === current) break;\n\t\t\tconst parent = dirname(current);\n\t\t\tif (parent === current) break;\n\t\t\tcurrent = parent;\n\t\t}\n\t}\n\n\t// We cannot rely on path.resolve() here because git.exe may come from Git Bash, Cygwin, or MSYS2, so we need to translate these paths at the boundary.\n\texport function resolve(p: string): string {\n\t\treturn normalizePath(pathResolve(windowsPath(p)));\n\t}\n}\n","export function lazy<T>(fn: () => T) {\n\tlet value: T | undefined;\n\tlet loaded = false;\n\n\tconst result = (): T => {\n\t\tif (loaded) return value as T;\n\t\tvalue = fn();\n\t\tloaded = true;\n\t\treturn value as T;\n\t};\n\n\tresult.reset = () => {\n\t\tloaded = false;\n\t\tvalue = undefined;\n\t};\n\n\treturn result;\n}\n","var Gt=(n,t,e)=>{let s=n instanceof RegExp?ce(n,e):n,i=t instanceof RegExp?ce(t,e):t,r=s!==null&&i!=null&&ss(s,i,e);return r&&{start:r[0],end:r[1],pre:e.slice(0,r[0]),body:e.slice(r[0]+s.length,r[1]),post:e.slice(r[1]+i.length)}},ce=(n,t)=>{let e=t.match(n);return e?e[0]:null},ss=(n,t,e)=>{let s,i,r,o,h,a=e.indexOf(n),l=e.indexOf(t,a+1),u=a;if(a>=0&&l>0){if(n===t)return[a,l];for(s=[],r=e.length;u>=0&&!h;){if(u===a)s.push(u),a=e.indexOf(n,u+1);else if(s.length===1){let c=s.pop();c!==void 0&&(h=[c,l])}else i=s.pop(),i!==void 0&&i<r&&(r=i,o=l),l=e.indexOf(t,u+1);u=a<l&&a>=0?a:l}s.length&&o!==void 0&&(h=[r,o])}return h};var fe=\"\\0SLASH\"+Math.random()+\"\\0\",ue=\"\\0OPEN\"+Math.random()+\"\\0\",qt=\"\\0CLOSE\"+Math.random()+\"\\0\",de=\"\\0COMMA\"+Math.random()+\"\\0\",pe=\"\\0PERIOD\"+Math.random()+\"\\0\",is=new RegExp(fe,\"g\"),rs=new RegExp(ue,\"g\"),ns=new RegExp(qt,\"g\"),os=new RegExp(de,\"g\"),hs=new RegExp(pe,\"g\"),as=/\\\\\\\\/g,ls=/\\\\{/g,cs=/\\\\}/g,fs=/\\\\,/g,us=/\\\\./g,ds=1e5;function Ht(n){return isNaN(n)?n.charCodeAt(0):parseInt(n,10)}function ps(n){return n.replace(as,fe).replace(ls,ue).replace(cs,qt).replace(fs,de).replace(us,pe)}function ms(n){return n.replace(is,\"\\\\\").replace(rs,\"{\").replace(ns,\"}\").replace(os,\",\").replace(hs,\".\")}function me(n){if(!n)return[\"\"];let t=[],e=Gt(\"{\",\"}\",n);if(!e)return n.split(\",\");let{pre:s,body:i,post:r}=e,o=s.split(\",\");o[o.length-1]+=\"{\"+i+\"}\";let h=me(r);return r.length&&(o[o.length-1]+=h.shift(),o.push.apply(o,h)),t.push.apply(t,o),t}function ge(n,t={}){if(!n)return[];let{max:e=ds}=t;return n.slice(0,2)===\"{}\"&&(n=\"\\\\{\\\\}\"+n.slice(2)),ht(ps(n),e,!0).map(ms)}function gs(n){return\"{\"+n+\"}\"}function ws(n){return/^-?0\\d/.test(n)}function ys(n,t){return n<=t}function bs(n,t){return n>=t}function ht(n,t,e){let s=[],i=Gt(\"{\",\"}\",n);if(!i)return[n];let r=i.pre,o=i.post.length?ht(i.post,t,!1):[\"\"];if(/\\$$/.test(i.pre))for(let h=0;h<o.length&&h<t;h++){let a=r+\"{\"+i.body+\"}\"+o[h];s.push(a)}else{let h=/^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(i.body),a=/^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(i.body),l=h||a,u=i.body.indexOf(\",\")>=0;if(!l&&!u)return i.post.match(/,(?!,).*\\}/)?(n=i.pre+\"{\"+i.body+qt+i.post,ht(n,t,!0)):[n];let c;if(l)c=i.body.split(/\\.\\./);else if(c=me(i.body),c.length===1&&c[0]!==void 0&&(c=ht(c[0],t,!1).map(gs),c.length===1))return o.map(f=>i.pre+c[0]+f);let d;if(l&&c[0]!==void 0&&c[1]!==void 0){let f=Ht(c[0]),m=Ht(c[1]),p=Math.max(c[0].length,c[1].length),w=c.length===3&&c[2]!==void 0?Math.abs(Ht(c[2])):1,g=ys;m<f&&(w*=-1,g=bs);let E=c.some(ws);d=[];for(let y=f;g(y,m);y+=w){let b;if(a)b=String.fromCharCode(y),b===\"\\\\\"&&(b=\"\");else if(b=String(y),E){let z=p-b.length;if(z>0){let $=new Array(z+1).join(\"0\");y<0?b=\"-\"+$+b.slice(1):b=$+b}}d.push(b)}}else{d=[];for(let f=0;f<c.length;f++)d.push.apply(d,ht(c[f],t,!1))}for(let f=0;f<d.length;f++)for(let m=0;m<o.length&&s.length<t;m++){let p=r+d[f]+o[m];(!e||l||p)&&s.push(p)}}return s}var at=n=>{if(typeof n!=\"string\")throw new TypeError(\"invalid pattern\");if(n.length>65536)throw new TypeError(\"pattern is too long\")};var Ss={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},lt=n=>n.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),Es=n=>n.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),we=n=>n.join(\"\"),ye=(n,t)=>{let e=t;if(n.charAt(e)!==\"[\")throw new Error(\"not in a brace expression\");let s=[],i=[],r=e+1,o=!1,h=!1,a=!1,l=!1,u=e,c=\"\";t:for(;r<n.length;){let p=n.charAt(r);if((p===\"!\"||p===\"^\")&&r===e+1){l=!0,r++;continue}if(p===\"]\"&&o&&!a){u=r+1;break}if(o=!0,p===\"\\\\\"&&!a){a=!0,r++;continue}if(p===\"[\"&&!a){for(let[w,[g,S,E]]of Object.entries(Ss))if(n.startsWith(w,r)){if(c)return[\"$.\",!1,n.length-e,!0];r+=w.length,E?i.push(g):s.push(g),h=h||S;continue t}}if(a=!1,c){p>c?s.push(lt(c)+\"-\"+lt(p)):p===c&&s.push(lt(p)),c=\"\",r++;continue}if(n.startsWith(\"-]\",r+1)){s.push(lt(p+\"-\")),r+=2;continue}if(n.startsWith(\"-\",r+1)){c=p,r+=2;continue}s.push(lt(p)),r++}if(u<r)return[\"\",!1,0,!1];if(!s.length&&!i.length)return[\"$.\",!1,n.length-e,!0];if(i.length===0&&s.length===1&&/^\\\\?.$/.test(s[0])&&!l){let p=s[0].length===2?s[0].slice(-1):s[0];return[Es(p),!1,u-e,!1]}let d=\"[\"+(l?\"^\":\"\")+we(s)+\"]\",f=\"[\"+(l?\"\":\"^\")+we(i)+\"]\";return[s.length&&i.length?\"(\"+d+\"|\"+f+\")\":s.length?d:f,h,u-e,!0]};var W=(n,{windowsPathsNoEscape:t=!1,magicalBraces:e=!0}={})=>e?t?n.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):n.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\"):t?n.replace(/\\[([^\\/\\\\{}])\\]/g,\"$1\"):n.replace(/((?!\\\\).|^)\\[([^\\/\\\\{}])\\]/g,\"$1$2\").replace(/\\\\([^\\/{}])/g,\"$1\");var xs=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),be=n=>xs.has(n),vs=\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\",Ct=\"(?!\\\\.)\",Cs=new Set([\"[\",\".\"]),Ts=new Set([\"..\",\".\"]),As=new Set(\"().*{}+?[]^$\\\\!\"),ks=n=>n.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),Kt=\"[^/]\",Se=Kt+\"*?\",Ee=Kt+\"+?\",Q=class n{type;#t;#s;#n=!1;#r=[];#o;#S;#w;#c=!1;#h;#u;#f=!1;constructor(t,e,s={}){this.type=t,t&&(this.#s=!0),this.#o=e,this.#t=this.#o?this.#o.#t:this,this.#h=this.#t===this?s:this.#t.#h,this.#w=this.#t===this?[]:this.#t.#w,t===\"!\"&&!this.#t.#c&&this.#w.push(this),this.#S=this.#o?this.#o.#r.length:0}get hasMagic(){if(this.#s!==void 0)return this.#s;for(let t of this.#r)if(typeof t!=\"string\"&&(t.type||t.hasMagic))return this.#s=!0;return this.#s}toString(){return this.#u!==void 0?this.#u:this.type?this.#u=this.type+\"(\"+this.#r.map(t=>String(t)).join(\"|\")+\")\":this.#u=this.#r.map(t=>String(t)).join(\"\")}#a(){if(this!==this.#t)throw new Error(\"should only call on root\");if(this.#c)return this;this.toString(),this.#c=!0;let t;for(;t=this.#w.pop();){if(t.type!==\"!\")continue;let e=t,s=e.#o;for(;s;){for(let i=e.#S+1;!s.type&&i<s.#r.length;i++)for(let r of t.#r){if(typeof r==\"string\")throw new Error(\"string part in extglob AST??\");r.copyIn(s.#r[i])}e=s,s=e.#o}}return this}push(...t){for(let e of t)if(e!==\"\"){if(typeof e!=\"string\"&&!(e instanceof n&&e.#o===this))throw new Error(\"invalid part: \"+e);this.#r.push(e)}}toJSON(){let t=this.type===null?this.#r.slice().map(e=>typeof e==\"string\"?e:e.toJSON()):[this.type,...this.#r.map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#c&&this.#o?.type===\"!\")&&t.push({}),t}isStart(){if(this.#t===this)return!0;if(!this.#o?.isStart())return!1;if(this.#S===0)return!0;let t=this.#o;for(let e=0;e<this.#S;e++){let s=t.#r[e];if(!(s instanceof n&&s.type===\"!\"))return!1}return!0}isEnd(){if(this.#t===this||this.#o?.type===\"!\")return!0;if(!this.#o?.isEnd())return!1;if(!this.type)return this.#o?.isEnd();let t=this.#o?this.#o.#r.length:0;return this.#S===t-1}copyIn(t){typeof t==\"string\"?this.push(t):this.push(t.clone(this))}clone(t){let e=new n(this.type,t);for(let s of this.#r)e.copyIn(s);return e}static#i(t,e,s,i){let r=!1,o=!1,h=-1,a=!1;if(e.type===null){let f=s,m=\"\";for(;f<t.length;){let p=t.charAt(f++);if(r||p===\"\\\\\"){r=!r,m+=p;continue}if(o){f===h+1?(p===\"^\"||p===\"!\")&&(a=!0):p===\"]\"&&!(f===h+2&&a)&&(o=!1),m+=p;continue}else if(p===\"[\"){o=!0,h=f,a=!1,m+=p;continue}if(!i.noext&&be(p)&&t.charAt(f)===\"(\"){e.push(m),m=\"\";let w=new n(p,e);f=n.#i(t,w,f,i),e.push(w);continue}m+=p}return e.push(m),f}let l=s+1,u=new n(null,e),c=[],d=\"\";for(;l<t.length;){let f=t.charAt(l++);if(r||f===\"\\\\\"){r=!r,d+=f;continue}if(o){l===h+1?(f===\"^\"||f===\"!\")&&(a=!0):f===\"]\"&&!(l===h+2&&a)&&(o=!1),d+=f;continue}else if(f===\"[\"){o=!0,h=l,a=!1,d+=f;continue}if(be(f)&&t.charAt(l)===\"(\"){u.push(d),d=\"\";let m=new n(f,u);u.push(m),l=n.#i(t,m,l,i);continue}if(f===\"|\"){u.push(d),d=\"\",c.push(u),u=new n(null,e);continue}if(f===\")\")return d===\"\"&&e.#r.length===0&&(e.#f=!0),u.push(d),d=\"\",e.push(...c,u),l;d+=f}return e.type=null,e.#s=void 0,e.#r=[t.substring(s-1)],l}static fromGlob(t,e={}){let s=new n(null,void 0,e);return n.#i(t,s,0,e),s}toMMPattern(){if(this!==this.#t)return this.#t.toMMPattern();let t=this.toString(),[e,s,i,r]=this.toRegExpSource();if(!(i||this.#s||this.#h.nocase&&!this.#h.nocaseMagicOnly&&t.toUpperCase()!==t.toLowerCase()))return s;let h=(this.#h.nocase?\"i\":\"\")+(r?\"u\":\"\");return Object.assign(new RegExp(`^${e}$`,h),{_src:e,_glob:t})}get options(){return this.#h}toRegExpSource(t){let e=t??!!this.#h.dot;if(this.#t===this&&this.#a(),!this.type){let a=this.isStart()&&this.isEnd()&&!this.#r.some(f=>typeof f!=\"string\"),l=this.#r.map(f=>{let[m,p,w,g]=typeof f==\"string\"?n.#E(f,this.#s,a):f.toRegExpSource(t);return this.#s=this.#s||w,this.#n=this.#n||g,m}).join(\"\"),u=\"\";if(this.isStart()&&typeof this.#r[0]==\"string\"&&!(this.#r.length===1&&Ts.has(this.#r[0]))){let m=Cs,p=e&&m.has(l.charAt(0))||l.startsWith(\"\\\\.\")&&m.has(l.charAt(2))||l.startsWith(\"\\\\.\\\\.\")&&m.has(l.charAt(4)),w=!e&&!t&&m.has(l.charAt(0));u=p?vs:w?Ct:\"\"}let c=\"\";return this.isEnd()&&this.#t.#c&&this.#o?.type===\"!\"&&(c=\"(?:$|\\\\/)\"),[u+l+c,W(l),this.#s=!!this.#s,this.#n]}let s=this.type===\"*\"||this.type===\"+\",i=this.type===\"!\"?\"(?:(?!(?:\":\"(?:\",r=this.#d(e);if(this.isStart()&&this.isEnd()&&!r&&this.type!==\"!\"){let a=this.toString();return this.#r=[a],this.type=null,this.#s=void 0,[a,W(this.toString()),!1,!1]}let o=!s||t||e||!Ct?\"\":this.#d(!0);o===r&&(o=\"\"),o&&(r=`(?:${r})(?:${o})*?`);let h=\"\";if(this.type===\"!\"&&this.#f)h=(this.isStart()&&!e?Ct:\"\")+Ee;else{let a=this.type===\"!\"?\"))\"+(this.isStart()&&!e&&!t?Ct:\"\")+Se+\")\":this.type===\"@\"?\")\":this.type===\"?\"?\")?\":this.type===\"+\"&&o?\")\":this.type===\"*\"&&o?\")?\":`)${this.type}`;h=i+r+a}return[h,W(r),this.#s=!!this.#s,this.#n]}#d(t){return this.#r.map(e=>{if(typeof e==\"string\")throw new Error(\"string type in extglob ast??\");let[s,i,r,o]=e.toRegExpSource(t);return this.#n=this.#n||o,s}).filter(e=>!(this.isStart()&&this.isEnd())||!!e).join(\"|\")}static#E(t,e,s=!1){let i=!1,r=\"\",o=!1,h=!1;for(let a=0;a<t.length;a++){let l=t.charAt(a);if(i){i=!1,r+=(As.has(l)?\"\\\\\":\"\")+l;continue}if(l===\"*\"){if(h)continue;h=!0,r+=s&&/^[*]+$/.test(t)?Ee:Se,e=!0;continue}else h=!1;if(l===\"\\\\\"){a===t.length-1?r+=\"\\\\\\\\\":i=!0;continue}if(l===\"[\"){let[u,c,d,f]=ye(t,a);if(d){r+=u,o=o||c,a+=d-1,e=e||f;continue}}if(l===\"?\"){r+=Kt,e=!0;continue}r+=ks(l)}return[r,W(t),!!e,o]}};var tt=(n,{windowsPathsNoEscape:t=!1,magicalBraces:e=!1}={})=>e?t?n.replace(/[?*()[\\]{}]/g,\"[$&]\"):n.replace(/[?*()[\\]\\\\{}]/g,\"\\\\$&\"):t?n.replace(/[?*()[\\]]/g,\"[$&]\"):n.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\");var O=(n,t,e={})=>(at(t),!e.nocomment&&t.charAt(0)===\"#\"?!1:new D(t,e).match(n)),Rs=/^\\*+([^+@!?\\*\\[\\(]*)$/,Os=n=>t=>!t.startsWith(\".\")&&t.endsWith(n),Fs=n=>t=>t.endsWith(n),Ds=n=>(n=n.toLowerCase(),t=>!t.startsWith(\".\")&&t.toLowerCase().endsWith(n)),Ms=n=>(n=n.toLowerCase(),t=>t.toLowerCase().endsWith(n)),Ns=/^\\*+\\.\\*+$/,_s=n=>!n.startsWith(\".\")&&n.includes(\".\"),Ls=n=>n!==\".\"&&n!==\"..\"&&n.includes(\".\"),Ws=/^\\.\\*+$/,Ps=n=>n!==\".\"&&n!==\"..\"&&n.startsWith(\".\"),js=/^\\*+$/,Is=n=>n.length!==0&&!n.startsWith(\".\"),zs=n=>n.length!==0&&n!==\".\"&&n!==\"..\",Bs=/^\\?+([^+@!?\\*\\[\\(]*)?$/,Us=([n,t=\"\"])=>{let e=Ce([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},$s=([n,t=\"\"])=>{let e=Te([n]);return t?(t=t.toLowerCase(),s=>e(s)&&s.toLowerCase().endsWith(t)):e},Gs=([n,t=\"\"])=>{let e=Te([n]);return t?s=>e(s)&&s.endsWith(t):e},Hs=([n,t=\"\"])=>{let e=Ce([n]);return t?s=>e(s)&&s.endsWith(t):e},Ce=([n])=>{let t=n.length;return e=>e.length===t&&!e.startsWith(\".\")},Te=([n])=>{let t=n.length;return e=>e.length===t&&e!==\".\"&&e!==\"..\"},Ae=typeof process==\"object\"&&process?typeof process.env==\"object\"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\",xe={win32:{sep:\"\\\\\"},posix:{sep:\"/\"}},qs=Ae===\"win32\"?xe.win32.sep:xe.posix.sep;O.sep=qs;var A=Symbol(\"globstar **\");O.GLOBSTAR=A;var Ks=\"[^/]\",Vs=Ks+\"*?\",Ys=\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\",Xs=\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",Js=(n,t={})=>e=>O(e,n,t);O.filter=Js;var N=(n,t={})=>Object.assign({},n,t),Zs=n=>{if(!n||typeof n!=\"object\"||!Object.keys(n).length)return O;let t=O;return Object.assign((s,i,r={})=>t(s,i,N(n,r)),{Minimatch:class extends t.Minimatch{constructor(i,r={}){super(i,N(n,r))}static defaults(i){return t.defaults(N(n,i)).Minimatch}},AST:class extends t.AST{constructor(i,r,o={}){super(i,r,N(n,o))}static fromGlob(i,r={}){return t.AST.fromGlob(i,N(n,r))}},unescape:(s,i={})=>t.unescape(s,N(n,i)),escape:(s,i={})=>t.escape(s,N(n,i)),filter:(s,i={})=>t.filter(s,N(n,i)),defaults:s=>t.defaults(N(n,s)),makeRe:(s,i={})=>t.makeRe(s,N(n,i)),braceExpand:(s,i={})=>t.braceExpand(s,N(n,i)),match:(s,i,r={})=>t.match(s,i,N(n,r)),sep:t.sep,GLOBSTAR:A})};O.defaults=Zs;var ke=(n,t={})=>(at(n),t.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(n)?[n]:ge(n,{max:t.braceExpandMax}));O.braceExpand=ke;var Qs=(n,t={})=>new D(n,t).makeRe();O.makeRe=Qs;var ti=(n,t,e={})=>{let s=new D(t,e);return n=n.filter(i=>s.match(i)),s.options.nonull&&!n.length&&n.push(t),n};O.match=ti;var ve=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/,ei=n=>n.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),D=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(t,e={}){at(t),e=e||{},this.options=e,this.pattern=t,this.platform=e.platform||Ae,this.isWindows=this.platform===\"win32\";let s=\"allowWindowsEscape\";this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e[s]===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!e.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!e.nonegate,this.comment=!1,this.empty=!1,this.partial=!!e.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=e.windowsNoMagicRoot!==void 0?e.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let t of this.set)for(let e of t)if(typeof e!=\"string\")return!0;return!1}debug(...t){}make(){let t=this.pattern,e=this.options;if(!e.nocomment&&t.charAt(0)===\"#\"){this.comment=!0;return}if(!t){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],e.debug&&(this.debug=(...r)=>console.error(...r)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(r=>this.slashSplit(r));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let i=this.globParts.map((r,o,h)=>{if(this.isWindows&&this.windowsNoMagicRoot){let a=r[0]===\"\"&&r[1]===\"\"&&(r[2]===\"?\"||!ve.test(r[2]))&&!ve.test(r[3]),l=/^[a-z]:/i.test(r[0]);if(a)return[...r.slice(0,4),...r.slice(4).map(u=>this.parse(u))];if(l)return[r[0],...r.slice(1).map(u=>this.parse(u))]}return r.map(a=>this.parse(a))});if(this.debug(this.pattern,i),this.set=i.filter(r=>r.indexOf(!1)===-1),this.isWindows)for(let r=0;r<this.set.length;r++){let o=this.set[r];o[0]===\"\"&&o[1]===\"\"&&this.globParts[r][2]===\"?\"&&typeof o[3]==\"string\"&&/^[a-z]:$/i.test(o[3])&&(o[2]=\"?\")}this.debug(this.pattern,this.set)}preprocess(t){if(this.options.noglobstar)for(let s=0;s<t.length;s++)for(let i=0;i<t[s].length;i++)t[s][i]===\"**\"&&(t[s][i]=\"*\");let{optimizationLevel:e=1}=this.options;return e>=2?(t=this.firstPhasePreProcess(t),t=this.secondPhasePreProcess(t)):e>=1?t=this.levelOneOptimize(t):t=this.adjascentGlobstarOptimize(t),t}adjascentGlobstarOptimize(t){return t.map(e=>{let s=-1;for(;(s=e.indexOf(\"**\",s+1))!==-1;){let i=s;for(;e[i+1]===\"**\";)i++;i!==s&&e.splice(s,i-s)}return e})}levelOneOptimize(t){return t.map(e=>(e=e.reduce((s,i)=>{let r=s[s.length-1];return i===\"**\"&&r===\"**\"?s:i===\"..\"&&r&&r!==\"..\"&&r!==\".\"&&r!==\"**\"?(s.pop(),s):(s.push(i),s)},[]),e.length===0?[\"\"]:e))}levelTwoFileOptimize(t){Array.isArray(t)||(t=this.slashSplit(t));let e=!1;do{if(e=!1,!this.preserveMultipleSlashes){for(let i=1;i<t.length-1;i++){let r=t[i];i===1&&r===\"\"&&t[0]===\"\"||(r===\".\"||r===\"\")&&(e=!0,t.splice(i,1),i--)}t[0]===\".\"&&t.length===2&&(t[1]===\".\"||t[1]===\"\")&&(e=!0,t.pop())}let s=0;for(;(s=t.indexOf(\"..\",s+1))!==-1;){let i=t[s-1];i&&i!==\".\"&&i!==\"..\"&&i!==\"**\"&&(e=!0,t.splice(s-1,2),s-=2)}}while(e);return t.length===0?[\"\"]:t}firstPhasePreProcess(t){let e=!1;do{e=!1;for(let s of t){let i=-1;for(;(i=s.indexOf(\"**\",i+1))!==-1;){let o=i;for(;s[o+1]===\"**\";)o++;o>i&&s.splice(i+1,o-i);let h=s[i+1],a=s[i+2],l=s[i+3];if(h!==\"..\"||!a||a===\".\"||a===\"..\"||!l||l===\".\"||l===\"..\")continue;e=!0,s.splice(i,1);let u=s.slice(0);u[i]=\"**\",t.push(u),i--}if(!this.preserveMultipleSlashes){for(let o=1;o<s.length-1;o++){let h=s[o];o===1&&h===\"\"&&s[0]===\"\"||(h===\".\"||h===\"\")&&(e=!0,s.splice(o,1),o--)}s[0]===\".\"&&s.length===2&&(s[1]===\".\"||s[1]===\"\")&&(e=!0,s.pop())}let r=0;for(;(r=s.indexOf(\"..\",r+1))!==-1;){let o=s[r-1];if(o&&o!==\".\"&&o!==\"..\"&&o!==\"**\"){e=!0;let a=r===1&&s[r+1]===\"**\"?[\".\"]:[];s.splice(r-1,2,...a),s.length===0&&s.push(\"\"),r-=2}}}}while(e);return t}secondPhasePreProcess(t){for(let e=0;e<t.length-1;e++)for(let s=e+1;s<t.length;s++){let i=this.partsMatch(t[e],t[s],!this.preserveMultipleSlashes);if(i){t[e]=[],t[s]=i;break}}return t.filter(e=>e.length)}partsMatch(t,e,s=!1){let i=0,r=0,o=[],h=\"\";for(;i<t.length&&r<e.length;)if(t[i]===e[r])o.push(h===\"b\"?e[r]:t[i]),i++,r++;else if(s&&t[i]===\"**\"&&e[r]===t[i+1])o.push(t[i]),i++;else if(s&&e[r]===\"**\"&&t[i]===e[r+1])o.push(e[r]),r++;else if(t[i]===\"*\"&&e[r]&&(this.options.dot||!e[r].startsWith(\".\"))&&e[r]!==\"**\"){if(h===\"b\")return!1;h=\"a\",o.push(t[i]),i++,r++}else if(e[r]===\"*\"&&t[i]&&(this.options.dot||!t[i].startsWith(\".\"))&&t[i]!==\"**\"){if(h===\"a\")return!1;h=\"b\",o.push(e[r]),i++,r++}else return!1;return t.length===e.length&&o}parseNegate(){if(this.nonegate)return;let t=this.pattern,e=!1,s=0;for(let i=0;i<t.length&&t.charAt(i)===\"!\";i++)e=!e,s++;s&&(this.pattern=t.slice(s)),this.negate=e}matchOne(t,e,s=!1){let i=this.options;if(this.isWindows){let p=typeof t[0]==\"string\"&&/^[a-z]:$/i.test(t[0]),w=!p&&t[0]===\"\"&&t[1]===\"\"&&t[2]===\"?\"&&/^[a-z]:$/i.test(t[3]),g=typeof e[0]==\"string\"&&/^[a-z]:$/i.test(e[0]),S=!g&&e[0]===\"\"&&e[1]===\"\"&&e[2]===\"?\"&&typeof e[3]==\"string\"&&/^[a-z]:$/i.test(e[3]),E=w?3:p?0:void 0,y=S?3:g?0:void 0;if(typeof E==\"number\"&&typeof y==\"number\"){let[b,z]=[t[E],e[y]];b.toLowerCase()===z.toLowerCase()&&(e[y]=b,y>E?e=e.slice(y):E>y&&(t=t.slice(E)))}}let{optimizationLevel:r=1}=this.options;r>=2&&(t=this.levelTwoFileOptimize(t)),this.debug(\"matchOne\",this,{file:t,pattern:e}),this.debug(\"matchOne\",t.length,e.length);for(var o=0,h=0,a=t.length,l=e.length;o<a&&h<l;o++,h++){this.debug(\"matchOne loop\");var u=e[h],c=t[o];if(this.debug(e,u,c),u===!1)return!1;if(u===A){this.debug(\"GLOBSTAR\",[e,u,c]);var d=o,f=h+1;if(f===l){for(this.debug(\"** at the end\");o<a;o++)if(t[o]===\".\"||t[o]===\"..\"||!i.dot&&t[o].charAt(0)===\".\")return!1;return!0}for(;d<a;){var m=t[d];if(this.debug(`\nglobstar while`,t,d,e,f,m),this.matchOne(t.slice(d),e.slice(f),s))return this.debug(\"globstar found match!\",d,a,m),!0;if(m===\".\"||m===\"..\"||!i.dot&&m.charAt(0)===\".\"){this.debug(\"dot detected!\",t,d,e,f);break}this.debug(\"globstar swallow a segment, and continue\"),d++}return!!(s&&(this.debug(`\n>>> no match, partial?`,t,d,e,f),d===a))}let p;if(typeof u==\"string\"?(p=c===u,this.debug(\"string match\",u,c,p)):(p=u.test(c),this.debug(\"pattern match\",u,c,p)),!p)return!1}if(o===a&&h===l)return!0;if(o===a)return s;if(h===l)return o===a-1&&t[o]===\"\";throw new Error(\"wtf?\")}braceExpand(){return ke(this.pattern,this.options)}parse(t){at(t);let e=this.options;if(t===\"**\")return A;if(t===\"\")return\"\";let s,i=null;(s=t.match(js))?i=e.dot?zs:Is:(s=t.match(Rs))?i=(e.nocase?e.dot?Ms:Ds:e.dot?Fs:Os)(s[1]):(s=t.match(Bs))?i=(e.nocase?e.dot?$s:Us:e.dot?Gs:Hs)(s):(s=t.match(Ns))?i=e.dot?Ls:_s:(s=t.match(Ws))&&(i=Ps);let r=Q.fromGlob(t,this.options).toMMPattern();return i&&typeof r==\"object\"&&Reflect.defineProperty(r,\"test\",{value:i}),r}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let t=this.set;if(!t.length)return this.regexp=!1,this.regexp;let e=this.options,s=e.noglobstar?Vs:e.dot?Ys:Xs,i=new Set(e.nocase?[\"i\"]:[]),r=t.map(a=>{let l=a.map(c=>{if(c instanceof RegExp)for(let d of c.flags.split(\"\"))i.add(d);return typeof c==\"string\"?ei(c):c===A?A:c._src});l.forEach((c,d)=>{let f=l[d+1],m=l[d-1];c!==A||m===A||(m===void 0?f!==void 0&&f!==A?l[d+1]=\"(?:\\\\/|\"+s+\"\\\\/)?\"+f:l[d]=s:f===void 0?l[d-1]=m+\"(?:\\\\/|\\\\/\"+s+\")?\":f!==A&&(l[d-1]=m+\"(?:\\\\/|\\\\/\"+s+\"\\\\/)\"+f,l[d+1]=A))});let u=l.filter(c=>c!==A);if(this.partial&&u.length>=1){let c=[];for(let d=1;d<=u.length;d++)c.push(u.slice(0,d).join(\"/\"));return\"(?:\"+c.join(\"|\")+\")\"}return u.join(\"/\")}).join(\"|\"),[o,h]=t.length>1?[\"(?:\",\")\"]:[\"\",\"\"];r=\"^\"+o+r+h+\"$\",this.partial&&(r=\"^(?:\\\\/|\"+o+r.slice(1,-1)+h+\")$\"),this.negate&&(r=\"^(?!\"+r+\").+$\");try{this.regexp=new RegExp(r,[...i].join(\"\"))}catch{this.regexp=!1}return this.regexp}slashSplit(t){return this.preserveMultipleSlashes?t.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(t)?[\"\",...t.split(/\\/+/)]:t.split(/\\/+/)}match(t,e=this.partial){if(this.debug(\"match\",t,this.pattern),this.comment)return!1;if(this.empty)return t===\"\";if(t===\"/\"&&e)return!0;let s=this.options;this.isWindows&&(t=t.split(\"\\\\\").join(\"/\"));let i=this.slashSplit(t);this.debug(this.pattern,\"split\",i);let r=this.set;this.debug(this.pattern,\"set\",r);let o=i[i.length-1];if(!o)for(let h=i.length-2;!o&&h>=0;h--)o=i[h];for(let h=0;h<r.length;h++){let a=r[h],l=i;if(s.matchBase&&a.length===1&&(l=[o]),this.matchOne(l,a,e))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(t){return O.defaults(t).Minimatch}};O.AST=Q;O.Minimatch=D;O.escape=tt;O.unescape=W;import{fileURLToPath as Wi}from\"node:url\";var si=typeof performance==\"object\"&&performance&&typeof performance.now==\"function\"?performance:Date,Oe=new Set,Vt=typeof process==\"object\"&&process?process:{},Fe=(n,t,e,s)=>{typeof Vt.emitWarning==\"function\"?Vt.emitWarning(n,t,e,s):console.error(`[${e}] ${t}: ${n}`)},At=globalThis.AbortController,Re=globalThis.AbortSignal;if(typeof At>\"u\"){Re=class{onabort;_onabort=[];reason;aborted=!1;addEventListener(e,s){this._onabort.push(s)}},At=class{constructor(){t()}signal=new Re;abort(e){if(!this.signal.aborted){this.signal.reason=e,this.signal.aborted=!0;for(let s of this.signal._onabort)s(e);this.signal.onabort?.(e)}}};let n=Vt.env?.LRU_CACHE_IGNORE_AC_WARNING!==\"1\",t=()=>{n&&(n=!1,Fe(\"AbortController is not defined. If using lru-cache in node 14, load an AbortController polyfill from the `node-abort-controller` package. A minimal polyfill is provided for use by LRUCache.fetch(), but it should not be relied upon in other contexts (eg, passing it to other APIs that use AbortController/AbortSignal might have undesirable effects). You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.\",\"NO_ABORT_CONTROLLER\",\"ENOTSUP\",t))}}var ii=n=>!Oe.has(n);var q=n=>n&&n===Math.floor(n)&&n>0&&isFinite(n),De=n=>q(n)?n<=Math.pow(2,8)?Uint8Array:n<=Math.pow(2,16)?Uint16Array:n<=Math.pow(2,32)?Uint32Array:n<=Number.MAX_SAFE_INTEGER?Tt:null:null,Tt=class extends Array{constructor(n){super(n),this.fill(0)}},ri=class ct{heap;length;static#t=!1;static create(t){let e=De(t);if(!e)return[];ct.#t=!0;let s=new ct(t,e);return ct.#t=!1,s}constructor(t,e){if(!ct.#t)throw new TypeError(\"instantiate Stack using Stack.create(n)\");this.heap=new e(t),this.length=0}push(t){this.heap[this.length++]=t}pop(){return this.heap[--this.length]}},ft=class Me{#t;#s;#n;#r;#o;#S;#w;#c;get perf(){return this.#c}ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#h;#u;#f;#a;#i;#d;#E;#b;#p;#R;#m;#C;#T;#g;#y;#x;#A;#e;#_;static unsafeExposeInternals(t){return{starts:t.#T,ttls:t.#g,autopurgeTimers:t.#y,sizes:t.#C,keyMap:t.#f,keyList:t.#a,valList:t.#i,next:t.#d,prev:t.#E,get head(){return t.#b},get tail(){return t.#p},free:t.#R,isBackgroundFetch:e=>t.#l(e),backgroundFetch:(e,s,i,r)=>t.#U(e,s,i,r),moveToTail:e=>t.#W(e),indexes:e=>t.#F(e),rindexes:e=>t.#D(e),isStale:e=>t.#v(e)}}get max(){return this.#t}get maxSize(){return this.#s}get calculatedSize(){return this.#u}get size(){return this.#h}get fetchMethod(){return this.#S}get memoMethod(){return this.#w}get dispose(){return this.#n}get onInsert(){return this.#r}get disposeAfter(){return this.#o}constructor(t){let{max:e=0,ttl:s,ttlResolution:i=1,ttlAutopurge:r,updateAgeOnGet:o,updateAgeOnHas:h,allowStale:a,dispose:l,onInsert:u,disposeAfter:c,noDisposeOnSet:d,noUpdateTTL:f,maxSize:m=0,maxEntrySize:p=0,sizeCalculation:w,fetchMethod:g,memoMethod:S,noDeleteOnFetchRejection:E,noDeleteOnStaleGet:y,allowStaleOnFetchRejection:b,allowStaleOnFetchAbort:z,ignoreFetchAbort:$,perf:J}=t;if(J!==void 0&&typeof J?.now!=\"function\")throw new TypeError(\"perf option must have a now() method if specified\");if(this.#c=J??si,e!==0&&!q(e))throw new TypeError(\"max option must be a nonnegative integer\");let Z=e?De(e):Array;if(!Z)throw new Error(\"invalid max value: \"+e);if(this.#t=e,this.#s=m,this.maxEntrySize=p||this.#s,this.sizeCalculation=w,this.sizeCalculation){if(!this.#s&&!this.maxEntrySize)throw new TypeError(\"cannot set sizeCalculation without setting maxSize or maxEntrySize\");if(typeof this.sizeCalculation!=\"function\")throw new TypeError(\"sizeCalculation set to non-function\")}if(S!==void 0&&typeof S!=\"function\")throw new TypeError(\"memoMethod must be a function if defined\");if(this.#w=S,g!==void 0&&typeof g!=\"function\")throw new TypeError(\"fetchMethod must be a function if specified\");if(this.#S=g,this.#A=!!g,this.#f=new Map,this.#a=new Array(e).fill(void 0),this.#i=new Array(e).fill(void 0),this.#d=new Z(e),this.#E=new Z(e),this.#b=0,this.#p=0,this.#R=ri.create(e),this.#h=0,this.#u=0,typeof l==\"function\"&&(this.#n=l),typeof u==\"function\"&&(this.#r=u),typeof c==\"function\"?(this.#o=c,this.#m=[]):(this.#o=void 0,this.#m=void 0),this.#x=!!this.#n,this.#_=!!this.#r,this.#e=!!this.#o,this.noDisposeOnSet=!!d,this.noUpdateTTL=!!f,this.noDeleteOnFetchRejection=!!E,this.allowStaleOnFetchRejection=!!b,this.allowStaleOnFetchAbort=!!z,this.ignoreFetchAbort=!!$,this.maxEntrySize!==0){if(this.#s!==0&&!q(this.#s))throw new TypeError(\"maxSize must be a positive integer if specified\");if(!q(this.maxEntrySize))throw new TypeError(\"maxEntrySize must be a positive integer if specified\");this.#G()}if(this.allowStale=!!a,this.noDeleteOnStaleGet=!!y,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!h,this.ttlResolution=q(i)||i===0?i:1,this.ttlAutopurge=!!r,this.ttl=s||0,this.ttl){if(!q(this.ttl))throw new TypeError(\"ttl must be a positive integer if specified\");this.#M()}if(this.#t===0&&this.ttl===0&&this.#s===0)throw new TypeError(\"At least one of max, maxSize, or ttl is required\");if(!this.ttlAutopurge&&!this.#t&&!this.#s){let $t=\"LRU_CACHE_UNBOUNDED\";ii($t)&&(Oe.add($t),Fe(\"TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.\",\"UnboundedCacheWarning\",$t,Me))}}getRemainingTTL(t){return this.#f.has(t)?1/0:0}#M(){let t=new Tt(this.#t),e=new Tt(this.#t);this.#g=t,this.#T=e;let s=this.ttlAutopurge?new Array(this.#t):void 0;this.#y=s,this.#j=(o,h,a=this.#c.now())=>{if(e[o]=h!==0?a:0,t[o]=h,s?.[o]&&(clearTimeout(s[o]),s[o]=void 0),h!==0&&s){let l=setTimeout(()=>{this.#v(o)&&this.#O(this.#a[o],\"expire\")},h+1);l.unref&&l.unref(),s[o]=l}},this.#k=o=>{e[o]=t[o]!==0?this.#c.now():0},this.#N=(o,h)=>{if(t[h]){let a=t[h],l=e[h];if(!a||!l)return;o.ttl=a,o.start=l,o.now=i||r();let u=o.now-l;o.remainingTTL=a-u}};let i=0,r=()=>{let o=this.#c.now();if(this.ttlResolution>0){i=o;let h=setTimeout(()=>i=0,this.ttlResolution);h.unref&&h.unref()}return o};this.getRemainingTTL=o=>{let h=this.#f.get(o);if(h===void 0)return 0;let a=t[h],l=e[h];if(!a||!l)return 1/0;let u=(i||r())-l;return a-u},this.#v=o=>{let h=e[o],a=t[o];return!!a&&!!h&&(i||r())-h>a}}#k=()=>{};#N=()=>{};#j=()=>{};#v=()=>!1;#G(){let t=new Tt(this.#t);this.#u=0,this.#C=t,this.#P=e=>{this.#u-=t[e],t[e]=0},this.#I=(e,s,i,r)=>{if(this.#l(s))return 0;if(!q(i))if(r){if(typeof r!=\"function\")throw new TypeError(\"sizeCalculation must be a function\");if(i=r(s,e),!q(i))throw new TypeError(\"sizeCalculation return invalid (expect positive integer)\")}else throw new TypeError(\"invalid size value (must be positive integer). When maxSize or maxEntrySize is used, sizeCalculation or size must be set.\");return i},this.#L=(e,s,i)=>{if(t[e]=s,this.#s){let r=this.#s-t[e];for(;this.#u>r;)this.#B(!0)}this.#u+=t[e],i&&(i.entrySize=s,i.totalCalculatedSize=this.#u)}}#P=t=>{};#L=(t,e,s)=>{};#I=(t,e,s,i)=>{if(s||i)throw new TypeError(\"cannot set size without setting maxSize or maxEntrySize on cache\");return 0};*#F({allowStale:t=this.allowStale}={}){if(this.#h)for(let e=this.#p;!(!this.#z(e)||((t||!this.#v(e))&&(yield e),e===this.#b));)e=this.#E[e]}*#D({allowStale:t=this.allowStale}={}){if(this.#h)for(let e=this.#b;!(!this.#z(e)||((t||!this.#v(e))&&(yield e),e===this.#p));)e=this.#d[e]}#z(t){return t!==void 0&&this.#f.get(this.#a[t])===t}*entries(){for(let t of this.#F())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*rentries(){for(let t of this.#D())this.#i[t]!==void 0&&this.#a[t]!==void 0&&!this.#l(this.#i[t])&&(yield[this.#a[t],this.#i[t]])}*keys(){for(let t of this.#F()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*rkeys(){for(let t of this.#D()){let e=this.#a[t];e!==void 0&&!this.#l(this.#i[t])&&(yield e)}}*values(){for(let t of this.#F())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}*rvalues(){for(let t of this.#D())this.#i[t]!==void 0&&!this.#l(this.#i[t])&&(yield this.#i[t])}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]=\"LRUCache\";find(t,e={}){for(let s of this.#F()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;if(r!==void 0&&t(r,this.#a[s],this))return this.get(this.#a[s],e)}}forEach(t,e=this){for(let s of this.#F()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}rforEach(t,e=this){for(let s of this.#D()){let i=this.#i[s],r=this.#l(i)?i.__staleWhileFetching:i;r!==void 0&&t.call(e,r,this.#a[s],this)}}purgeStale(){let t=!1;for(let e of this.#D({allowStale:!0}))this.#v(e)&&(this.#O(this.#a[e],\"expire\"),t=!0);return t}info(t){let e=this.#f.get(t);if(e===void 0)return;let s=this.#i[e],i=this.#l(s)?s.__staleWhileFetching:s;if(i===void 0)return;let r={value:i};if(this.#g&&this.#T){let o=this.#g[e],h=this.#T[e];if(o&&h){let a=o-(this.#c.now()-h);r.ttl=a,r.start=Date.now()}}return this.#C&&(r.size=this.#C[e]),r}dump(){let t=[];for(let e of this.#F({allowStale:!0})){let s=this.#a[e],i=this.#i[e],r=this.#l(i)?i.__staleWhileFetching:i;if(r===void 0||s===void 0)continue;let o={value:r};if(this.#g&&this.#T){o.ttl=this.#g[e];let h=this.#c.now()-this.#T[e];o.start=Math.floor(Date.now()-h)}this.#C&&(o.size=this.#C[e]),t.unshift([s,o])}return t}load(t){this.clear();for(let[e,s]of t){if(s.start){let i=Date.now()-s.start;s.start=this.#c.now()-i}this.set(e,s.value,s)}}set(t,e,s={}){if(e===void 0)return this.delete(t),this;let{ttl:i=this.ttl,start:r,noDisposeOnSet:o=this.noDisposeOnSet,sizeCalculation:h=this.sizeCalculation,status:a}=s,{noUpdateTTL:l=this.noUpdateTTL}=s,u=this.#I(t,e,s.size||0,h);if(this.maxEntrySize&&u>this.maxEntrySize)return a&&(a.set=\"miss\",a.maxEntrySizeExceeded=!0),this.#O(t,\"set\"),this;let c=this.#h===0?void 0:this.#f.get(t);if(c===void 0)c=this.#h===0?this.#p:this.#R.length!==0?this.#R.pop():this.#h===this.#t?this.#B(!1):this.#h,this.#a[c]=t,this.#i[c]=e,this.#f.set(t,c),this.#d[this.#p]=c,this.#E[c]=this.#p,this.#p=c,this.#h++,this.#L(c,u,a),a&&(a.set=\"add\"),l=!1,this.#_&&this.#r?.(e,t,\"add\");else{this.#W(c);let d=this.#i[c];if(e!==d){if(this.#A&&this.#l(d)){d.__abortController.abort(new Error(\"replaced\"));let{__staleWhileFetching:f}=d;f!==void 0&&!o&&(this.#x&&this.#n?.(f,t,\"set\"),this.#e&&this.#m?.push([f,t,\"set\"]))}else o||(this.#x&&this.#n?.(d,t,\"set\"),this.#e&&this.#m?.push([d,t,\"set\"]));if(this.#P(c),this.#L(c,u,a),this.#i[c]=e,a){a.set=\"replace\";let f=d&&this.#l(d)?d.__staleWhileFetching:d;f!==void 0&&(a.oldValue=f)}}else a&&(a.set=\"update\");this.#_&&this.onInsert?.(e,t,e===d?\"update\":\"replace\")}if(i!==0&&!this.#g&&this.#M(),this.#g&&(l||this.#j(c,i,r),a&&this.#N(a,c)),!o&&this.#e&&this.#m){let d=this.#m,f;for(;f=d?.shift();)this.#o?.(...f)}return this}pop(){try{for(;this.#h;){let t=this.#i[this.#b];if(this.#B(!0),this.#l(t)){if(t.__staleWhileFetching)return t.__staleWhileFetching}else if(t!==void 0)return t}}finally{if(this.#e&&this.#m){let t=this.#m,e;for(;e=t?.shift();)this.#o?.(...e)}}}#B(t){let e=this.#b,s=this.#a[e],i=this.#i[e];return this.#A&&this.#l(i)?i.__abortController.abort(new Error(\"evicted\")):(this.#x||this.#e)&&(this.#x&&this.#n?.(i,s,\"evict\"),this.#e&&this.#m?.push([i,s,\"evict\"])),this.#P(e),this.#y?.[e]&&(clearTimeout(this.#y[e]),this.#y[e]=void 0),t&&(this.#a[e]=void 0,this.#i[e]=void 0,this.#R.push(e)),this.#h===1?(this.#b=this.#p=0,this.#R.length=0):this.#b=this.#d[e],this.#f.delete(s),this.#h--,e}has(t,e={}){let{updateAgeOnHas:s=this.updateAgeOnHas,status:i}=e,r=this.#f.get(t);if(r!==void 0){let o=this.#i[r];if(this.#l(o)&&o.__staleWhileFetching===void 0)return!1;if(this.#v(r))i&&(i.has=\"stale\",this.#N(i,r));else return s&&this.#k(r),i&&(i.has=\"hit\",this.#N(i,r)),!0}else i&&(i.has=\"miss\");return!1}peek(t,e={}){let{allowStale:s=this.allowStale}=e,i=this.#f.get(t);if(i===void 0||!s&&this.#v(i))return;let r=this.#i[i];return this.#l(r)?r.__staleWhileFetching:r}#U(t,e,s,i){let r=e===void 0?void 0:this.#i[e];if(this.#l(r))return r;let o=new At,{signal:h}=s;h?.addEventListener(\"abort\",()=>o.abort(h.reason),{signal:o.signal});let a={signal:o.signal,options:s,context:i},l=(p,w=!1)=>{let{aborted:g}=o.signal,S=s.ignoreFetchAbort&&p!==void 0,E=s.ignoreFetchAbort||!!(s.allowStaleOnFetchAbort&&p!==void 0);if(s.status&&(g&&!w?(s.status.fetchAborted=!0,s.status.fetchError=o.signal.reason,S&&(s.status.fetchAbortIgnored=!0)):s.status.fetchResolved=!0),g&&!S&&!w)return c(o.signal.reason,E);let y=f,b=this.#i[e];return(b===f||S&&w&&b===void 0)&&(p===void 0?y.__staleWhileFetching!==void 0?this.#i[e]=y.__staleWhileFetching:this.#O(t,\"fetch\"):(s.status&&(s.status.fetchUpdated=!0),this.set(t,p,a.options))),p},u=p=>(s.status&&(s.status.fetchRejected=!0,s.status.fetchError=p),c(p,!1)),c=(p,w)=>{let{aborted:g}=o.signal,S=g&&s.allowStaleOnFetchAbort,E=S||s.allowStaleOnFetchRejection,y=E||s.noDeleteOnFetchRejection,b=f;if(this.#i[e]===f&&(!y||!w&&b.__staleWhileFetching===void 0?this.#O(t,\"fetch\"):S||(this.#i[e]=b.__staleWhileFetching)),E)return s.status&&b.__staleWhileFetching!==void 0&&(s.status.returnedStale=!0),b.__staleWhileFetching;if(b.__returned===b)throw p},d=(p,w)=>{let g=this.#S?.(t,r,a);g&&g instanceof Promise&&g.then(S=>p(S===void 0?void 0:S),w),o.signal.addEventListener(\"abort\",()=>{(!s.ignoreFetchAbort||s.allowStaleOnFetchAbort)&&(p(void 0),s.allowStaleOnFetchAbort&&(p=S=>l(S,!0)))})};s.status&&(s.status.fetchDispatched=!0);let f=new Promise(d).then(l,u),m=Object.assign(f,{__abortController:o,__staleWhileFetching:r,__returned:void 0});return e===void 0?(this.set(t,m,{...a.options,status:void 0}),e=this.#f.get(t)):this.#i[e]=m,m}#l(t){if(!this.#A)return!1;let e=t;return!!e&&e instanceof Promise&&e.hasOwnProperty(\"__staleWhileFetching\")&&e.__abortController instanceof At}async fetch(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,ttl:o=this.ttl,noDisposeOnSet:h=this.noDisposeOnSet,size:a=0,sizeCalculation:l=this.sizeCalculation,noUpdateTTL:u=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:d=this.allowStaleOnFetchRejection,ignoreFetchAbort:f=this.ignoreFetchAbort,allowStaleOnFetchAbort:m=this.allowStaleOnFetchAbort,context:p,forceRefresh:w=!1,status:g,signal:S}=e;if(!this.#A)return g&&(g.fetch=\"get\"),this.get(t,{allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,status:g});let E={allowStale:s,updateAgeOnGet:i,noDeleteOnStaleGet:r,ttl:o,noDisposeOnSet:h,size:a,sizeCalculation:l,noUpdateTTL:u,noDeleteOnFetchRejection:c,allowStaleOnFetchRejection:d,allowStaleOnFetchAbort:m,ignoreFetchAbort:f,status:g,signal:S},y=this.#f.get(t);if(y===void 0){g&&(g.fetch=\"miss\");let b=this.#U(t,y,E,p);return b.__returned=b}else{let b=this.#i[y];if(this.#l(b)){let Z=s&&b.__staleWhileFetching!==void 0;return g&&(g.fetch=\"inflight\",Z&&(g.returnedStale=!0)),Z?b.__staleWhileFetching:b.__returned=b}let z=this.#v(y);if(!w&&!z)return g&&(g.fetch=\"hit\"),this.#W(y),i&&this.#k(y),g&&this.#N(g,y),b;let $=this.#U(t,y,E,p),J=$.__staleWhileFetching!==void 0&&s;return g&&(g.fetch=z?\"stale\":\"refresh\",J&&z&&(g.returnedStale=!0)),J?$.__staleWhileFetching:$.__returned=$}}async forceFetch(t,e={}){let s=await this.fetch(t,e);if(s===void 0)throw new Error(\"fetch() returned undefined\");return s}memo(t,e={}){let s=this.#w;if(!s)throw new Error(\"no memoMethod provided to constructor\");let{context:i,forceRefresh:r,...o}=e,h=this.get(t,o);if(!r&&h!==void 0)return h;let a=s(t,h,{options:o,context:i});return this.set(t,a,o),a}get(t,e={}){let{allowStale:s=this.allowStale,updateAgeOnGet:i=this.updateAgeOnGet,noDeleteOnStaleGet:r=this.noDeleteOnStaleGet,status:o}=e,h=this.#f.get(t);if(h!==void 0){let a=this.#i[h],l=this.#l(a);return o&&this.#N(o,h),this.#v(h)?(o&&(o.get=\"stale\"),l?(o&&s&&a.__staleWhileFetching!==void 0&&(o.returnedStale=!0),s?a.__staleWhileFetching:void 0):(r||this.#O(t,\"expire\"),o&&s&&(o.returnedStale=!0),s?a:void 0)):(o&&(o.get=\"hit\"),l?a.__staleWhileFetching:(this.#W(h),i&&this.#k(h),a))}else o&&(o.get=\"miss\")}#$(t,e){this.#E[e]=t,this.#d[t]=e}#W(t){t!==this.#p&&(t===this.#b?this.#b=this.#d[t]:this.#$(this.#E[t],this.#d[t]),this.#$(this.#p,t),this.#p=t)}delete(t){return this.#O(t,\"delete\")}#O(t,e){let s=!1;if(this.#h!==0){let i=this.#f.get(t);if(i!==void 0)if(this.#y?.[i]&&(clearTimeout(this.#y?.[i]),this.#y[i]=void 0),s=!0,this.#h===1)this.#H(e);else{this.#P(i);let r=this.#i[i];if(this.#l(r)?r.__abortController.abort(new Error(\"deleted\")):(this.#x||this.#e)&&(this.#x&&this.#n?.(r,t,e),this.#e&&this.#m?.push([r,t,e])),this.#f.delete(t),this.#a[i]=void 0,this.#i[i]=void 0,i===this.#p)this.#p=this.#E[i];else if(i===this.#b)this.#b=this.#d[i];else{let o=this.#E[i];this.#d[o]=this.#d[i];let h=this.#d[i];this.#E[h]=this.#E[i]}this.#h--,this.#R.push(i)}}if(this.#e&&this.#m?.length){let i=this.#m,r;for(;r=i?.shift();)this.#o?.(...r)}return s}clear(){return this.#H(\"delete\")}#H(t){for(let e of this.#D({allowStale:!0})){let s=this.#i[e];if(this.#l(s))s.__abortController.abort(new Error(\"deleted\"));else{let i=this.#a[e];this.#x&&this.#n?.(s,i,t),this.#e&&this.#m?.push([s,i,t])}}if(this.#f.clear(),this.#i.fill(void 0),this.#a.fill(void 0),this.#g&&this.#T){this.#g.fill(0),this.#T.fill(0);for(let e of this.#y??[])e!==void 0&&clearTimeout(e);this.#y?.fill(void 0)}if(this.#C&&this.#C.fill(0),this.#b=0,this.#p=0,this.#R.length=0,this.#u=0,this.#h=0,this.#e&&this.#m){let e=this.#m,s;for(;s=e?.shift();)this.#o?.(...s)}}};import{posix as mi,win32 as re}from\"node:path\";import{fileURLToPath as gi}from\"node:url\";import{lstatSync as wi,readdir as yi,readdirSync as bi,readlinkSync as Si,realpathSync as Ei}from\"fs\";import*as xi from\"node:fs\";import{lstat as Ci,readdir as Ti,readlink as Ai,realpath as ki}from\"node:fs/promises\";import{EventEmitter as ee}from\"node:events\";import Pe from\"node:stream\";import{StringDecoder as ni}from\"node:string_decoder\";var Ne=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},oi=n=>!!n&&typeof n==\"object\"&&(n instanceof V||n instanceof Pe||hi(n)||ai(n)),hi=n=>!!n&&typeof n==\"object\"&&n instanceof ee&&typeof n.pipe==\"function\"&&n.pipe!==Pe.Writable.prototype.pipe,ai=n=>!!n&&typeof n==\"object\"&&n instanceof ee&&typeof n.write==\"function\"&&typeof n.end==\"function\",G=Symbol(\"EOF\"),H=Symbol(\"maybeEmitEnd\"),K=Symbol(\"emittedEnd\"),kt=Symbol(\"emittingEnd\"),ut=Symbol(\"emittedError\"),Rt=Symbol(\"closed\"),_e=Symbol(\"read\"),Ot=Symbol(\"flush\"),Le=Symbol(\"flushChunk\"),P=Symbol(\"encoding\"),et=Symbol(\"decoder\"),v=Symbol(\"flowing\"),dt=Symbol(\"paused\"),st=Symbol(\"resume\"),C=Symbol(\"buffer\"),F=Symbol(\"pipes\"),T=Symbol(\"bufferLength\"),Yt=Symbol(\"bufferPush\"),Ft=Symbol(\"bufferShift\"),k=Symbol(\"objectMode\"),x=Symbol(\"destroyed\"),Xt=Symbol(\"error\"),Jt=Symbol(\"emitData\"),We=Symbol(\"emitEnd\"),Zt=Symbol(\"emitEnd2\"),B=Symbol(\"async\"),Qt=Symbol(\"abort\"),Dt=Symbol(\"aborted\"),pt=Symbol(\"signal\"),Y=Symbol(\"dataListeners\"),M=Symbol(\"discarded\"),mt=n=>Promise.resolve().then(n),li=n=>n(),ci=n=>n===\"end\"||n===\"finish\"||n===\"prefinish\",fi=n=>n instanceof ArrayBuffer||!!n&&typeof n==\"object\"&&n.constructor&&n.constructor.name===\"ArrayBuffer\"&&n.byteLength>=0,ui=n=>!Buffer.isBuffer(n)&&ArrayBuffer.isView(n),Mt=class{src;dest;opts;ondrain;constructor(t,e,s){this.src=t,this.dest=e,this.opts=s,this.ondrain=()=>t[st](),this.dest.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(t){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},te=class extends Mt{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(t,e,s){super(t,e,s),this.proxyErrors=i=>this.dest.emit(\"error\",i),t.on(\"error\",this.proxyErrors)}},di=n=>!!n.objectMode,pi=n=>!n.objectMode&&!!n.encoding&&n.encoding!==\"buffer\",V=class extends ee{[v]=!1;[dt]=!1;[F]=[];[C]=[];[k];[P];[B];[et];[G]=!1;[K]=!1;[kt]=!1;[Rt]=!1;[ut]=null;[T]=0;[x]=!1;[pt];[Dt]=!1;[Y]=0;[M]=!1;writable=!0;readable=!0;constructor(...t){let e=t[0]||{};if(super(),e.objectMode&&typeof e.encoding==\"string\")throw new TypeError(\"Encoding and objectMode may not be used together\");di(e)?(this[k]=!0,this[P]=null):pi(e)?(this[P]=e.encoding,this[k]=!1):(this[k]=!1,this[P]=null),this[B]=!!e.async,this[et]=this[P]?new ni(this[P]):null,e&&e.debugExposeBuffer===!0&&Object.defineProperty(this,\"buffer\",{get:()=>this[C]}),e&&e.debugExposePipes===!0&&Object.defineProperty(this,\"pipes\",{get:()=>this[F]});let{signal:s}=e;s&&(this[pt]=s,s.aborted?this[Qt]():s.addEventListener(\"abort\",()=>this[Qt]()))}get bufferLength(){return this[T]}get encoding(){return this[P]}set encoding(t){throw new Error(\"Encoding must be set at instantiation time\")}setEncoding(t){throw new Error(\"Encoding must be set at instantiation time\")}get objectMode(){return this[k]}set objectMode(t){throw new Error(\"objectMode must be set at instantiation time\")}get async(){return this[B]}set async(t){this[B]=this[B]||!!t}[Qt](){this[Dt]=!0,this.emit(\"abort\",this[pt]?.reason),this.destroy(this[pt]?.reason)}get aborted(){return this[Dt]}set aborted(t){}write(t,e,s){if(this[Dt])return!1;if(this[G])throw new Error(\"write after end\");if(this[x])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof e==\"function\"&&(s=e,e=\"utf8\"),e||(e=\"utf8\");let i=this[B]?mt:li;if(!this[k]&&!Buffer.isBuffer(t)){if(ui(t))t=Buffer.from(t.buffer,t.byteOffset,t.byteLength);else if(fi(t))t=Buffer.from(t);else if(typeof t!=\"string\")throw new Error(\"Non-contiguous data written to non-objectMode stream\")}return this[k]?(this[v]&&this[T]!==0&&this[Ot](!0),this[v]?this.emit(\"data\",t):this[Yt](t),this[T]!==0&&this.emit(\"readable\"),s&&i(s),this[v]):t.length?(typeof t==\"string\"&&!(e===this[P]&&!this[et]?.lastNeed)&&(t=Buffer.from(t,e)),Buffer.isBuffer(t)&&this[P]&&(t=this[et].write(t)),this[v]&&this[T]!==0&&this[Ot](!0),this[v]?this.emit(\"data\",t):this[Yt](t),this[T]!==0&&this.emit(\"readable\"),s&&i(s),this[v]):(this[T]!==0&&this.emit(\"readable\"),s&&i(s),this[v])}read(t){if(this[x])return null;if(this[M]=!1,this[T]===0||t===0||t&&t>this[T])return this[H](),null;this[k]&&(t=null),this[C].length>1&&!this[k]&&(this[C]=[this[P]?this[C].join(\"\"):Buffer.concat(this[C],this[T])]);let e=this[_e](t||null,this[C][0]);return this[H](),e}[_e](t,e){if(this[k])this[Ft]();else{let s=e;t===s.length||t===null?this[Ft]():typeof s==\"string\"?(this[C][0]=s.slice(t),e=s.slice(0,t),this[T]-=t):(this[C][0]=s.subarray(t),e=s.subarray(0,t),this[T]-=t)}return this.emit(\"data\",e),!this[C].length&&!this[G]&&this.emit(\"drain\"),e}end(t,e,s){return typeof t==\"function\"&&(s=t,t=void 0),typeof e==\"function\"&&(s=e,e=\"utf8\"),t!==void 0&&this.write(t,e),s&&this.once(\"end\",s),this[G]=!0,this.writable=!1,(this[v]||!this[dt])&&this[H](),this}[st](){this[x]||(!this[Y]&&!this[F].length&&(this[M]=!0),this[dt]=!1,this[v]=!0,this.emit(\"resume\"),this[C].length?this[Ot]():this[G]?this[H]():this.emit(\"drain\"))}resume(){return this[st]()}pause(){this[v]=!1,this[dt]=!0,this[M]=!1}get destroyed(){return this[x]}get flowing(){return this[v]}get paused(){return this[dt]}[Yt](t){this[k]?this[T]+=1:this[T]+=t.length,this[C].push(t)}[Ft](){return this[k]?this[T]-=1:this[T]-=this[C][0].length,this[C].shift()}[Ot](t=!1){do;while(this[Le](this[Ft]())&&this[C].length);!t&&!this[C].length&&!this[G]&&this.emit(\"drain\")}[Le](t){return this.emit(\"data\",t),this[v]}pipe(t,e){if(this[x])return t;this[M]=!1;let s=this[K];return e=e||{},t===Ne.stdout||t===Ne.stderr?e.end=!1:e.end=e.end!==!1,e.proxyErrors=!!e.proxyErrors,s?e.end&&t.end():(this[F].push(e.proxyErrors?new te(this,t,e):new Mt(this,t,e)),this[B]?mt(()=>this[st]()):this[st]()),t}unpipe(t){let e=this[F].find(s=>s.dest===t);e&&(this[F].length===1?(this[v]&&this[Y]===0&&(this[v]=!1),this[F]=[]):this[F].splice(this[F].indexOf(e),1),e.unpipe())}addListener(t,e){return this.on(t,e)}on(t,e){let s=super.on(t,e);if(t===\"data\")this[M]=!1,this[Y]++,!this[F].length&&!this[v]&&this[st]();else if(t===\"readable\"&&this[T]!==0)super.emit(\"readable\");else if(ci(t)&&this[K])super.emit(t),this.removeAllListeners(t);else if(t===\"error\"&&this[ut]){let i=e;this[B]?mt(()=>i.call(this,this[ut])):i.call(this,this[ut])}return s}removeListener(t,e){return this.off(t,e)}off(t,e){let s=super.off(t,e);return t===\"data\"&&(this[Y]=this.listeners(\"data\").length,this[Y]===0&&!this[M]&&!this[F].length&&(this[v]=!1)),s}removeAllListeners(t){let e=super.removeAllListeners(t);return(t===\"data\"||t===void 0)&&(this[Y]=0,!this[M]&&!this[F].length&&(this[v]=!1)),e}get emittedEnd(){return this[K]}[H](){!this[kt]&&!this[K]&&!this[x]&&this[C].length===0&&this[G]&&(this[kt]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[Rt]&&this.emit(\"close\"),this[kt]=!1)}emit(t,...e){let s=e[0];if(t!==\"error\"&&t!==\"close\"&&t!==x&&this[x])return!1;if(t===\"data\")return!this[k]&&!s?!1:this[B]?(mt(()=>this[Jt](s)),!0):this[Jt](s);if(t===\"end\")return this[We]();if(t===\"close\"){if(this[Rt]=!0,!this[K]&&!this[x])return!1;let r=super.emit(\"close\");return this.removeAllListeners(\"close\"),r}else if(t===\"error\"){this[ut]=s,super.emit(Xt,s);let r=!this[pt]||this.listeners(\"error\").length?super.emit(\"error\",s):!1;return this[H](),r}else if(t===\"resume\"){let r=super.emit(\"resume\");return this[H](),r}else if(t===\"finish\"||t===\"prefinish\"){let r=super.emit(t);return this.removeAllListeners(t),r}let i=super.emit(t,...e);return this[H](),i}[Jt](t){for(let s of this[F])s.dest.write(t)===!1&&this.pause();let e=this[M]?!1:super.emit(\"data\",t);return this[H](),e}[We](){return this[K]?!1:(this[K]=!0,this.readable=!1,this[B]?(mt(()=>this[Zt]()),!0):this[Zt]())}[Zt](){if(this[et]){let e=this[et].end();if(e){for(let s of this[F])s.dest.write(e);this[M]||super.emit(\"data\",e)}}for(let e of this[F])e.end();let t=super.emit(\"end\");return this.removeAllListeners(\"end\"),t}async collect(){let t=Object.assign([],{dataLength:0});this[k]||(t.dataLength=0);let e=this.promise();return this.on(\"data\",s=>{t.push(s),this[k]||(t.dataLength+=s.length)}),await e,t}async concat(){if(this[k])throw new Error(\"cannot concat in objectMode\");let t=await this.collect();return this[P]?t.join(\"\"):Buffer.concat(t,t.dataLength)}async promise(){return new Promise((t,e)=>{this.on(x,()=>e(new Error(\"stream destroyed\"))),this.on(\"error\",s=>e(s)),this.on(\"end\",()=>t())})}[Symbol.asyncIterator](){this[M]=!1;let t=!1,e=async()=>(this.pause(),t=!0,{value:void 0,done:!0});return{next:()=>{if(t)return e();let i=this.read();if(i!==null)return Promise.resolve({done:!1,value:i});if(this[G])return e();let r,o,h=c=>{this.off(\"data\",a),this.off(\"end\",l),this.off(x,u),e(),o(c)},a=c=>{this.off(\"error\",h),this.off(\"end\",l),this.off(x,u),this.pause(),r({value:c,done:!!this[G]})},l=()=>{this.off(\"error\",h),this.off(\"data\",a),this.off(x,u),e(),r({done:!0,value:void 0})},u=()=>h(new Error(\"stream destroyed\"));return new Promise((c,d)=>{o=d,r=c,this.once(x,u),this.once(\"error\",h),this.once(\"end\",l),this.once(\"data\",a)})},throw:e,return:e,[Symbol.asyncIterator](){return this},[Symbol.asyncDispose]:async()=>{}}}[Symbol.iterator](){this[M]=!1;let t=!1,e=()=>(this.pause(),this.off(Xt,e),this.off(x,e),this.off(\"end\",e),t=!0,{done:!0,value:void 0}),s=()=>{if(t)return e();let i=this.read();return i===null?e():{done:!1,value:i}};return this.once(\"end\",e),this.once(Xt,e),this.once(x,e),{next:s,throw:e,return:e,[Symbol.iterator](){return this},[Symbol.dispose]:()=>{}}}destroy(t){if(this[x])return t?this.emit(\"error\",t):this.emit(x),this;this[x]=!0,this[M]=!0,this[C].length=0,this[T]=0;let e=this;return typeof e.close==\"function\"&&!this[Rt]&&e.close(),t?this.emit(\"error\",t):this.emit(x),this}static get isStream(){return oi}};var vi=Ei.native,wt={lstatSync:wi,readdir:yi,readdirSync:bi,readlinkSync:Si,realpathSync:vi,promises:{lstat:Ci,readdir:Ti,readlink:Ai,realpath:ki}},Ue=n=>!n||n===wt||n===xi?wt:{...wt,...n,promises:{...wt.promises,...n.promises||{}}},$e=/^\\\\\\\\\\?\\\\([a-z]:)\\\\?$/i,Ri=n=>n.replace(/\\//g,\"\\\\\").replace($e,\"$1\\\\\"),Oi=/[\\\\\\/]/,L=0,Ge=1,He=2,U=4,qe=6,Ke=8,X=10,Ve=12,_=15,gt=~_,se=16,je=32,yt=64,j=128,Nt=256,Lt=512,Ie=yt|j|Lt,Fi=1023,ie=n=>n.isFile()?Ke:n.isDirectory()?U:n.isSymbolicLink()?X:n.isCharacterDevice()?He:n.isBlockDevice()?qe:n.isSocket()?Ve:n.isFIFO()?Ge:L,ze=new ft({max:2**12}),bt=n=>{let t=ze.get(n);if(t)return t;let e=n.normalize(\"NFKD\");return ze.set(n,e),e},Be=new ft({max:2**12}),_t=n=>{let t=Be.get(n);if(t)return t;let e=bt(n.toLowerCase());return Be.set(n,e),e},Wt=class extends ft{constructor(){super({max:256})}},ne=class extends ft{constructor(t=16*1024){super({maxSize:t,sizeCalculation:e=>e.length+1})}},Ye=Symbol(\"PathScurry setAsCwd\"),R=class{name;root;roots;parent;nocase;isCWD=!1;#t;#s;get dev(){return this.#s}#n;get mode(){return this.#n}#r;get nlink(){return this.#r}#o;get uid(){return this.#o}#S;get gid(){return this.#S}#w;get rdev(){return this.#w}#c;get blksize(){return this.#c}#h;get ino(){return this.#h}#u;get size(){return this.#u}#f;get blocks(){return this.#f}#a;get atimeMs(){return this.#a}#i;get mtimeMs(){return this.#i}#d;get ctimeMs(){return this.#d}#E;get birthtimeMs(){return this.#E}#b;get atime(){return this.#b}#p;get mtime(){return this.#p}#R;get ctime(){return this.#R}#m;get birthtime(){return this.#m}#C;#T;#g;#y;#x;#A;#e;#_;#M;#k;get parentPath(){return(this.parent||this).fullpath()}get path(){return this.parentPath}constructor(t,e=L,s,i,r,o,h){this.name=t,this.#C=r?_t(t):bt(t),this.#e=e&Fi,this.nocase=r,this.roots=i,this.root=s||this,this.#_=o,this.#g=h.fullpath,this.#x=h.relative,this.#A=h.relativePosix,this.parent=h.parent,this.parent?this.#t=this.parent.#t:this.#t=Ue(h.fs)}depth(){return this.#T!==void 0?this.#T:this.parent?this.#T=this.parent.depth()+1:this.#T=0}childrenCache(){return this.#_}resolve(t){if(!t)return this;let e=this.getRootString(t),i=t.substring(e.length).split(this.splitSep);return e?this.getRoot(e).#N(i):this.#N(i)}#N(t){let e=this;for(let s of t)e=e.child(s);return e}children(){let t=this.#_.get(this);if(t)return t;let e=Object.assign([],{provisional:0});return this.#_.set(this,e),this.#e&=~se,e}child(t,e){if(t===\"\"||t===\".\")return this;if(t===\"..\")return this.parent||this;let s=this.children(),i=this.nocase?_t(t):bt(t);for(let a of s)if(a.#C===i)return a;let r=this.parent?this.sep:\"\",o=this.#g?this.#g+r+t:void 0,h=this.newChild(t,L,{...e,parent:this,fullpath:o});return this.canReaddir()||(h.#e|=j),s.push(h),h}relative(){if(this.isCWD)return\"\";if(this.#x!==void 0)return this.#x;let t=this.name,e=this.parent;if(!e)return this.#x=this.name;let s=e.relative();return s+(!s||!e.parent?\"\":this.sep)+t}relativePosix(){if(this.sep===\"/\")return this.relative();if(this.isCWD)return\"\";if(this.#A!==void 0)return this.#A;let t=this.name,e=this.parent;if(!e)return this.#A=this.fullpathPosix();let s=e.relativePosix();return s+(!s||!e.parent?\"\":\"/\")+t}fullpath(){if(this.#g!==void 0)return this.#g;let t=this.name,e=this.parent;if(!e)return this.#g=this.name;let i=e.fullpath()+(e.parent?this.sep:\"\")+t;return this.#g=i}fullpathPosix(){if(this.#y!==void 0)return this.#y;if(this.sep===\"/\")return this.#y=this.fullpath();if(!this.parent){let i=this.fullpath().replace(/\\\\/g,\"/\");return/^[a-z]:\\//i.test(i)?this.#y=`//?/${i}`:this.#y=i}let t=this.parent,e=t.fullpathPosix(),s=e+(!e||!t.parent?\"\":\"/\")+this.name;return this.#y=s}isUnknown(){return(this.#e&_)===L}isType(t){return this[`is${t}`]()}getType(){return this.isUnknown()?\"Unknown\":this.isDirectory()?\"Directory\":this.isFile()?\"File\":this.isSymbolicLink()?\"SymbolicLink\":this.isFIFO()?\"FIFO\":this.isCharacterDevice()?\"CharacterDevice\":this.isBlockDevice()?\"BlockDevice\":this.isSocket()?\"Socket\":\"Unknown\"}isFile(){return(this.#e&_)===Ke}isDirectory(){return(this.#e&_)===U}isCharacterDevice(){return(this.#e&_)===He}isBlockDevice(){return(this.#e&_)===qe}isFIFO(){return(this.#e&_)===Ge}isSocket(){return(this.#e&_)===Ve}isSymbolicLink(){return(this.#e&X)===X}lstatCached(){return this.#e&je?this:void 0}readlinkCached(){return this.#M}realpathCached(){return this.#k}readdirCached(){let t=this.children();return t.slice(0,t.provisional)}canReadlink(){if(this.#M)return!0;if(!this.parent)return!1;let t=this.#e&_;return!(t!==L&&t!==X||this.#e&Nt||this.#e&j)}calledReaddir(){return!!(this.#e&se)}isENOENT(){return!!(this.#e&j)}isNamed(t){return this.nocase?this.#C===_t(t):this.#C===bt(t)}async readlink(){let t=this.#M;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=await this.#t.promises.readlink(this.fullpath()),s=(await this.parent.realpath())?.resolve(e);if(s)return this.#M=s}catch(e){this.#D(e.code);return}}readlinkSync(){let t=this.#M;if(t)return t;if(this.canReadlink()&&this.parent)try{let e=this.#t.readlinkSync(this.fullpath()),s=this.parent.realpathSync()?.resolve(e);if(s)return this.#M=s}catch(e){this.#D(e.code);return}}#j(t){this.#e|=se;for(let e=t.provisional;e<t.length;e++){let s=t[e];s&&s.#v()}}#v(){this.#e&j||(this.#e=(this.#e|j)&gt,this.#G())}#G(){let t=this.children();t.provisional=0;for(let e of t)e.#v()}#P(){this.#e|=Lt,this.#L()}#L(){if(this.#e&yt)return;let t=this.#e;(t&_)===U&&(t&=gt),this.#e=t|yt,this.#G()}#I(t=\"\"){t===\"ENOTDIR\"||t===\"EPERM\"?this.#L():t===\"ENOENT\"?this.#v():this.children().provisional=0}#F(t=\"\"){t===\"ENOTDIR\"?this.parent.#L():t===\"ENOENT\"&&this.#v()}#D(t=\"\"){let e=this.#e;e|=Nt,t===\"ENOENT\"&&(e|=j),(t===\"EINVAL\"||t===\"UNKNOWN\")&&(e&=gt),this.#e=e,t===\"ENOTDIR\"&&this.parent&&this.parent.#L()}#z(t,e){return this.#U(t,e)||this.#B(t,e)}#B(t,e){let s=ie(t),i=this.newChild(t.name,s,{parent:this}),r=i.#e&_;return r!==U&&r!==X&&r!==L&&(i.#e|=yt),e.unshift(i),e.provisional++,i}#U(t,e){for(let s=e.provisional;s<e.length;s++){let i=e[s];if((this.nocase?_t(t.name):bt(t.name))===i.#C)return this.#l(t,i,s,e)}}#l(t,e,s,i){let r=e.name;return e.#e=e.#e&gt|ie(t),r!==t.name&&(e.name=t.name),s!==i.provisional&&(s===i.length-1?i.pop():i.splice(s,1),i.unshift(e)),i.provisional++,e}async lstat(){if((this.#e&j)===0)try{return this.#$(await this.#t.promises.lstat(this.fullpath())),this}catch(t){this.#F(t.code)}}lstatSync(){if((this.#e&j)===0)try{return this.#$(this.#t.lstatSync(this.fullpath())),this}catch(t){this.#F(t.code)}}#$(t){let{atime:e,atimeMs:s,birthtime:i,birthtimeMs:r,blksize:o,blocks:h,ctime:a,ctimeMs:l,dev:u,gid:c,ino:d,mode:f,mtime:m,mtimeMs:p,nlink:w,rdev:g,size:S,uid:E}=t;this.#b=e,this.#a=s,this.#m=i,this.#E=r,this.#c=o,this.#f=h,this.#R=a,this.#d=l,this.#s=u,this.#S=c,this.#h=d,this.#n=f,this.#p=m,this.#i=p,this.#r=w,this.#w=g,this.#u=S,this.#o=E;let y=ie(t);this.#e=this.#e&gt|y|je,y!==L&&y!==U&&y!==X&&(this.#e|=yt)}#W=[];#O=!1;#H(t){this.#O=!1;let e=this.#W.slice();this.#W.length=0,e.forEach(s=>s(null,t))}readdirCB(t,e=!1){if(!this.canReaddir()){e?t(null,[]):queueMicrotask(()=>t(null,[]));return}let s=this.children();if(this.calledReaddir()){let r=s.slice(0,s.provisional);e?t(null,r):queueMicrotask(()=>t(null,r));return}if(this.#W.push(t),this.#O)return;this.#O=!0;let i=this.fullpath();this.#t.readdir(i,{withFileTypes:!0},(r,o)=>{if(r)this.#I(r.code),s.provisional=0;else{for(let h of o)this.#z(h,s);this.#j(s)}this.#H(s.slice(0,s.provisional))})}#q;async readdir(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();if(this.#q)await this.#q;else{let s=()=>{};this.#q=new Promise(i=>s=i);try{for(let i of await this.#t.promises.readdir(e,{withFileTypes:!0}))this.#z(i,t);this.#j(t)}catch(i){this.#I(i.code),t.provisional=0}this.#q=void 0,s()}return t.slice(0,t.provisional)}readdirSync(){if(!this.canReaddir())return[];let t=this.children();if(this.calledReaddir())return t.slice(0,t.provisional);let e=this.fullpath();try{for(let s of this.#t.readdirSync(e,{withFileTypes:!0}))this.#z(s,t);this.#j(t)}catch(s){this.#I(s.code),t.provisional=0}return t.slice(0,t.provisional)}canReaddir(){if(this.#e&Ie)return!1;let t=_&this.#e;return t===L||t===U||t===X}shouldWalk(t,e){return(this.#e&U)===U&&!(this.#e&Ie)&&!t.has(this)&&(!e||e(this))}async realpath(){if(this.#k)return this.#k;if(!((Lt|Nt|j)&this.#e))try{let t=await this.#t.promises.realpath(this.fullpath());return this.#k=this.resolve(t)}catch{this.#P()}}realpathSync(){if(this.#k)return this.#k;if(!((Lt|Nt|j)&this.#e))try{let t=this.#t.realpathSync(this.fullpath());return this.#k=this.resolve(t)}catch{this.#P()}}[Ye](t){if(t===this)return;t.isCWD=!1,this.isCWD=!0;let e=new Set([]),s=[],i=this;for(;i&&i.parent;)e.add(i),i.#x=s.join(this.sep),i.#A=s.join(\"/\"),i=i.parent,s.push(\"..\");for(i=t;i&&i.parent&&!e.has(i);)i.#x=void 0,i.#A=void 0,i=i.parent}},Pt=class n extends R{sep=\"\\\\\";splitSep=Oi;constructor(t,e=L,s,i,r,o,h){super(t,e,s,i,r,o,h)}newChild(t,e=L,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}getRootString(t){return re.parse(t).root}getRoot(t){if(t=Ri(t.toUpperCase()),t===this.root.name)return this.root;for(let[e,s]of Object.entries(this.roots))if(this.sameRoot(t,e))return this.roots[t]=s;return this.roots[t]=new it(t,this).root}sameRoot(t,e=this.root.name){return t=t.toUpperCase().replace(/\\//g,\"\\\\\").replace($e,\"$1\\\\\"),t===e}},jt=class n extends R{splitSep=\"/\";sep=\"/\";constructor(t,e=L,s,i,r,o,h){super(t,e,s,i,r,o,h)}getRootString(t){return t.startsWith(\"/\")?\"/\":\"\"}getRoot(t){return this.root}newChild(t,e=L,s={}){return new n(t,e,this.root,this.roots,this.nocase,this.childrenCache(),s)}},It=class{root;rootPath;roots;cwd;#t;#s;#n;nocase;#r;constructor(t=process.cwd(),e,s,{nocase:i,childrenCacheSize:r=16*1024,fs:o=wt}={}){this.#r=Ue(o),(t instanceof URL||t.startsWith(\"file://\"))&&(t=gi(t));let h=e.resolve(t);this.roots=Object.create(null),this.rootPath=this.parseRootPath(h),this.#t=new Wt,this.#s=new Wt,this.#n=new ne(r);let a=h.substring(this.rootPath.length).split(s);if(a.length===1&&!a[0]&&a.pop(),i===void 0)throw new TypeError(\"must provide nocase setting to PathScurryBase ctor\");this.nocase=i,this.root=this.newRoot(this.#r),this.roots[this.rootPath]=this.root;let l=this.root,u=a.length-1,c=e.sep,d=this.rootPath,f=!1;for(let m of a){let p=u--;l=l.child(m,{relative:new Array(p).fill(\"..\").join(c),relativePosix:new Array(p).fill(\"..\").join(\"/\"),fullpath:d+=(f?\"\":c)+m}),f=!0}this.cwd=l}depth(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.depth()}childrenCache(){return this.#n}resolve(...t){let e=\"\";for(let r=t.length-1;r>=0;r--){let o=t[r];if(!(!o||o===\".\")&&(e=e?`${o}/${e}`:o,this.isAbsolute(o)))break}let s=this.#t.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpath();return this.#t.set(e,i),i}resolvePosix(...t){let e=\"\";for(let r=t.length-1;r>=0;r--){let o=t[r];if(!(!o||o===\".\")&&(e=e?`${o}/${e}`:o,this.isAbsolute(o)))break}let s=this.#s.get(e);if(s!==void 0)return s;let i=this.cwd.resolve(e).fullpathPosix();return this.#s.set(e,i),i}relative(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.relative()}relativePosix(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.relativePosix()}basename(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.name}dirname(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),(t.parent||t).fullpath()}async readdir(t=this.cwd,e={withFileTypes:!0}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s}=e;if(t.canReaddir()){let i=await t.readdir();return s?i:i.map(r=>r.name)}else return[]}readdirSync(t=this.cwd,e={withFileTypes:!0}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0}=e;return t.canReaddir()?s?t.readdirSync():t.readdirSync().map(i=>i.name):[]}async lstat(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.lstat()}lstatSync(t=this.cwd){return typeof t==\"string\"&&(t=this.cwd.resolve(t)),t.lstatSync()}async readlink(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=await t.readlink();return e?s:s?.fullpath()}readlinkSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=t.readlinkSync();return e?s:s?.fullpath()}async realpath(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=await t.realpath();return e?s:s?.fullpath()}realpathSync(t=this.cwd,{withFileTypes:e}={withFileTypes:!1}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t.withFileTypes,t=this.cwd);let s=t.realpathSync();return e?s:s?.fullpath()}async walk(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=[];(!r||r(t))&&h.push(s?t:t.fullpath());let a=new Set,l=(c,d)=>{a.add(c),c.readdirCB((f,m)=>{if(f)return d(f);let p=m.length;if(!p)return d();let w=()=>{--p===0&&d()};for(let g of m)(!r||r(g))&&h.push(s?g:g.fullpath()),i&&g.isSymbolicLink()?g.realpath().then(S=>S?.isUnknown()?S.lstat():S).then(S=>S?.shouldWalk(a,o)?l(S,w):w()):g.shouldWalk(a,o)?l(g,w):w()},!0)},u=t;return new Promise((c,d)=>{l(u,f=>{if(f)return d(f);c(h)})})}walkSync(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=[];(!r||r(t))&&h.push(s?t:t.fullpath());let a=new Set([t]);for(let l of a){let u=l.readdirSync();for(let c of u){(!r||r(c))&&h.push(s?c:c.fullpath());let d=c;if(c.isSymbolicLink()){if(!(i&&(d=c.realpathSync())))continue;d.isUnknown()&&d.lstatSync()}d.shouldWalk(a,o)&&a.add(d)}}return h}[Symbol.asyncIterator](){return this.iterate()}iterate(t=this.cwd,e={}){return typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd),this.stream(t,e)[Symbol.asyncIterator]()}[Symbol.iterator](){return this.iterateSync()}*iterateSync(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e;(!r||r(t))&&(yield s?t:t.fullpath());let h=new Set([t]);for(let a of h){let l=a.readdirSync();for(let u of l){(!r||r(u))&&(yield s?u:u.fullpath());let c=u;if(u.isSymbolicLink()){if(!(i&&(c=u.realpathSync())))continue;c.isUnknown()&&c.lstatSync()}c.shouldWalk(h,o)&&h.add(c)}}}stream(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=new V({objectMode:!0});(!r||r(t))&&h.write(s?t:t.fullpath());let a=new Set,l=[t],u=0,c=()=>{let d=!1;for(;!d;){let f=l.shift();if(!f){u===0&&h.end();return}u++,a.add(f);let m=(w,g,S=!1)=>{if(w)return h.emit(\"error\",w);if(i&&!S){let E=[];for(let y of g)y.isSymbolicLink()&&E.push(y.realpath().then(b=>b?.isUnknown()?b.lstat():b));if(E.length){Promise.all(E).then(()=>m(null,g,!0));return}}for(let E of g)E&&(!r||r(E))&&(h.write(s?E:E.fullpath())||(d=!0));u--;for(let E of g){let y=E.realpathCached()||E;y.shouldWalk(a,o)&&l.push(y)}d&&!h.flowing?h.once(\"drain\",c):p||c()},p=!0;f.readdirCB(m,!0),p=!1}};return c(),h}streamSync(t=this.cwd,e={}){typeof t==\"string\"?t=this.cwd.resolve(t):t instanceof R||(e=t,t=this.cwd);let{withFileTypes:s=!0,follow:i=!1,filter:r,walkFilter:o}=e,h=new V({objectMode:!0}),a=new Set;(!r||r(t))&&h.write(s?t:t.fullpath());let l=[t],u=0,c=()=>{let d=!1;for(;!d;){let f=l.shift();if(!f){u===0&&h.end();return}u++,a.add(f);let m=f.readdirSync();for(let p of m)(!r||r(p))&&(h.write(s?p:p.fullpath())||(d=!0));u--;for(let p of m){let w=p;if(p.isSymbolicLink()){if(!(i&&(w=p.realpathSync())))continue;w.isUnknown()&&w.lstatSync()}w.shouldWalk(a,o)&&l.push(w)}}d&&!h.flowing&&h.once(\"drain\",c)};return c(),h}chdir(t=this.cwd){let e=this.cwd;this.cwd=typeof t==\"string\"?this.cwd.resolve(t):t,this.cwd[Ye](e)}},it=class extends It{sep=\"\\\\\";constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,re,\"\\\\\",{...e,nocase:s}),this.nocase=s;for(let i=this.cwd;i;i=i.parent)i.nocase=this.nocase}parseRootPath(t){return re.parse(t).root.toUpperCase()}newRoot(t){return new Pt(this.rootPath,U,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith(\"/\")||t.startsWith(\"\\\\\")||/^[a-z]:(\\/|\\\\)/i.test(t)}},rt=class extends It{sep=\"/\";constructor(t=process.cwd(),e={}){let{nocase:s=!1}=e;super(t,mi,\"/\",{...e,nocase:s}),this.nocase=s}parseRootPath(t){return\"/\"}newRoot(t){return new jt(this.rootPath,U,void 0,this.roots,this.nocase,this.childrenCache(),{fs:t})}isAbsolute(t){return t.startsWith(\"/\")}},St=class extends rt{constructor(t=process.cwd(),e={}){let{nocase:s=!0}=e;super(t,{...e,nocase:s})}},Cr=process.platform===\"win32\"?Pt:jt,Xe=process.platform===\"win32\"?it:process.platform===\"darwin\"?St:rt;var Di=n=>n.length>=1,Mi=n=>n.length>=1,Ni=Symbol.for(\"nodejs.util.inspect.custom\"),nt=class n{#t;#s;#n;length;#r;#o;#S;#w;#c;#h;#u=!0;constructor(t,e,s,i){if(!Di(t))throw new TypeError(\"empty pattern list\");if(!Mi(e))throw new TypeError(\"empty glob list\");if(e.length!==t.length)throw new TypeError(\"mismatched pattern list and glob list lengths\");if(this.length=t.length,s<0||s>=this.length)throw new TypeError(\"index out of range\");if(this.#t=t,this.#s=e,this.#n=s,this.#r=i,this.#n===0){if(this.isUNC()){let[r,o,h,a,...l]=this.#t,[u,c,d,f,...m]=this.#s;l[0]===\"\"&&(l.shift(),m.shift());let p=[r,o,h,a,\"\"].join(\"/\"),w=[u,c,d,f,\"\"].join(\"/\");this.#t=[p,...l],this.#s=[w,...m],this.length=this.#t.length}else if(this.isDrive()||this.isAbsolute()){let[r,...o]=this.#t,[h,...a]=this.#s;o[0]===\"\"&&(o.shift(),a.shift());let l=r+\"/\",u=h+\"/\";this.#t=[l,...o],this.#s=[u,...a],this.length=this.#t.length}}}[Ni](){return\"Pattern <\"+this.#s.slice(this.#n).join(\"/\")+\">\"}pattern(){return this.#t[this.#n]}isString(){return typeof this.#t[this.#n]==\"string\"}isGlobstar(){return this.#t[this.#n]===A}isRegExp(){return this.#t[this.#n]instanceof RegExp}globString(){return this.#S=this.#S||(this.#n===0?this.isAbsolute()?this.#s[0]+this.#s.slice(1).join(\"/\"):this.#s.join(\"/\"):this.#s.slice(this.#n).join(\"/\"))}hasMore(){return this.length>this.#n+1}rest(){return this.#o!==void 0?this.#o:this.hasMore()?(this.#o=new n(this.#t,this.#s,this.#n+1,this.#r),this.#o.#h=this.#h,this.#o.#c=this.#c,this.#o.#w=this.#w,this.#o):this.#o=null}isUNC(){let t=this.#t;return this.#c!==void 0?this.#c:this.#c=this.#r===\"win32\"&&this.#n===0&&t[0]===\"\"&&t[1]===\"\"&&typeof t[2]==\"string\"&&!!t[2]&&typeof t[3]==\"string\"&&!!t[3]}isDrive(){let t=this.#t;return this.#w!==void 0?this.#w:this.#w=this.#r===\"win32\"&&this.#n===0&&this.length>1&&typeof t[0]==\"string\"&&/^[a-z]:$/i.test(t[0])}isAbsolute(){let t=this.#t;return this.#h!==void 0?this.#h:this.#h=t[0]===\"\"&&t.length>1||this.isDrive()||this.isUNC()}root(){let t=this.#t[0];return typeof t==\"string\"&&this.isAbsolute()&&this.#n===0?t:\"\"}checkFollowGlobstar(){return!(this.#n===0||!this.isGlobstar()||!this.#u)}markFollowGlobstar(){return this.#n===0||!this.isGlobstar()||!this.#u?!1:(this.#u=!1,!0)}};var _i=typeof process==\"object\"&&process&&typeof process.platform==\"string\"?process.platform:\"linux\",ot=class{relative;relativeChildren;absolute;absoluteChildren;platform;mmopts;constructor(t,{nobrace:e,nocase:s,noext:i,noglobstar:r,platform:o=_i}){this.relative=[],this.absolute=[],this.relativeChildren=[],this.absoluteChildren=[],this.platform=o,this.mmopts={dot:!0,nobrace:e,nocase:s,noext:i,noglobstar:r,optimizationLevel:2,platform:o,nocomment:!0,nonegate:!0};for(let h of t)this.add(h)}add(t){let e=new D(t,this.mmopts);for(let s=0;s<e.set.length;s++){let i=e.set[s],r=e.globParts[s];if(!i||!r)throw new Error(\"invalid pattern object\");for(;i[0]===\".\"&&r[0]===\".\";)i.shift(),r.shift();let o=new nt(i,r,0,this.platform),h=new D(o.globString(),this.mmopts),a=r[r.length-1]===\"**\",l=o.isAbsolute();l?this.absolute.push(h):this.relative.push(h),a&&(l?this.absoluteChildren.push(h):this.relativeChildren.push(h))}}ignored(t){let e=t.fullpath(),s=`${e}/`,i=t.relative()||\".\",r=`${i}/`;for(let o of this.relative)if(o.match(i)||o.match(r))return!0;for(let o of this.absolute)if(o.match(e)||o.match(s))return!0;return!1}childrenIgnored(t){let e=t.fullpath()+\"/\",s=(t.relative()||\".\")+\"/\";for(let i of this.relativeChildren)if(i.match(s))return!0;for(let i of this.absoluteChildren)if(i.match(e))return!0;return!1}};var oe=class n{store;constructor(t=new Map){this.store=t}copy(){return new n(new Map(this.store))}hasWalked(t,e){return this.store.get(t.fullpath())?.has(e.globString())}storeWalked(t,e){let s=t.fullpath(),i=this.store.get(s);i?i.add(e.globString()):this.store.set(s,new Set([e.globString()]))}},he=class{store=new Map;add(t,e,s){let i=(e?2:0)|(s?1:0),r=this.store.get(t);this.store.set(t,r===void 0?i:i&r)}entries(){return[...this.store.entries()].map(([t,e])=>[t,!!(e&2),!!(e&1)])}},ae=class{store=new Map;add(t,e){if(!t.canReaddir())return;let s=this.store.get(t);s?s.find(i=>i.globString()===e.globString())||s.push(e):this.store.set(t,[e])}get(t){let e=this.store.get(t);if(!e)throw new Error(\"attempting to walk unknown path\");return e}entries(){return this.keys().map(t=>[t,this.store.get(t)])}keys(){return[...this.store.keys()].filter(t=>t.canReaddir())}},Et=class n{hasWalkedCache;matches=new he;subwalks=new ae;patterns;follow;dot;opts;constructor(t,e){this.opts=t,this.follow=!!t.follow,this.dot=!!t.dot,this.hasWalkedCache=e?e.copy():new oe}processPatterns(t,e){this.patterns=e;let s=e.map(i=>[t,i]);for(let[i,r]of s){this.hasWalkedCache.storeWalked(i,r);let o=r.root(),h=r.isAbsolute()&&this.opts.absolute!==!1;if(o){i=i.resolve(o===\"/\"&&this.opts.root!==void 0?this.opts.root:o);let c=r.rest();if(c)r=c;else{this.matches.add(i,!0,!1);continue}}if(i.isENOENT())continue;let a,l,u=!1;for(;typeof(a=r.pattern())==\"string\"&&(l=r.rest());)i=i.resolve(a),r=l,u=!0;if(a=r.pattern(),l=r.rest(),u){if(this.hasWalkedCache.hasWalked(i,r))continue;this.hasWalkedCache.storeWalked(i,r)}if(typeof a==\"string\"){let c=a===\"..\"||a===\"\"||a===\".\";this.matches.add(i.resolve(a),h,c);continue}else if(a===A){(!i.isSymbolicLink()||this.follow||r.checkFollowGlobstar())&&this.subwalks.add(i,r);let c=l?.pattern(),d=l?.rest();if(!l||(c===\"\"||c===\".\")&&!d)this.matches.add(i,h,c===\"\"||c===\".\");else if(c===\"..\"){let f=i.parent||i;d?this.hasWalkedCache.hasWalked(f,d)||this.subwalks.add(f,d):this.matches.add(f,h,!0)}}else a instanceof RegExp&&this.subwalks.add(i,r)}return this}subwalkTargets(){return this.subwalks.keys()}child(){return new n(this.opts,this.hasWalkedCache)}filterEntries(t,e){let s=this.subwalks.get(t),i=this.child();for(let r of e)for(let o of s){let h=o.isAbsolute(),a=o.pattern(),l=o.rest();a===A?i.testGlobstar(r,o,l,h):a instanceof RegExp?i.testRegExp(r,a,l,h):i.testString(r,a,l,h)}return i}testGlobstar(t,e,s,i){if((this.dot||!t.name.startsWith(\".\"))&&(e.hasMore()||this.matches.add(t,i,!1),t.canReaddir()&&(this.follow||!t.isSymbolicLink()?this.subwalks.add(t,e):t.isSymbolicLink()&&(s&&e.checkFollowGlobstar()?this.subwalks.add(t,s):e.markFollowGlobstar()&&this.subwalks.add(t,e)))),s){let r=s.pattern();if(typeof r==\"string\"&&r!==\"..\"&&r!==\"\"&&r!==\".\")this.testString(t,r,s.rest(),i);else if(r===\"..\"){let o=t.parent||t;this.subwalks.add(o,s)}else r instanceof RegExp&&this.testRegExp(t,r,s.rest(),i)}}testRegExp(t,e,s,i){e.test(t.name)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}testString(t,e,s,i){t.isNamed(e)&&(s?this.subwalks.add(t,s):this.matches.add(t,i,!1))}};var Li=(n,t)=>typeof n==\"string\"?new ot([n],t):Array.isArray(n)?new ot(n,t):n,zt=class{path;patterns;opts;seen=new Set;paused=!1;aborted=!1;#t=[];#s;#n;signal;maxDepth;includeChildMatches;constructor(t,e,s){if(this.patterns=t,this.path=e,this.opts=s,this.#n=!s.posix&&s.platform===\"win32\"?\"\\\\\":\"/\",this.includeChildMatches=s.includeChildMatches!==!1,(s.ignore||!this.includeChildMatches)&&(this.#s=Li(s.ignore??[],s),!this.includeChildMatches&&typeof this.#s.add!=\"function\")){let i=\"cannot ignore child matches, ignore lacks add() method.\";throw new Error(i)}this.maxDepth=s.maxDepth||1/0,s.signal&&(this.signal=s.signal,this.signal.addEventListener(\"abort\",()=>{this.#t.length=0}))}#r(t){return this.seen.has(t)||!!this.#s?.ignored?.(t)}#o(t){return!!this.#s?.childrenIgnored?.(t)}pause(){this.paused=!0}resume(){if(this.signal?.aborted)return;this.paused=!1;let t;for(;!this.paused&&(t=this.#t.shift());)t()}onResume(t){this.signal?.aborted||(this.paused?this.#t.push(t):t())}async matchCheck(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||await t.realpath(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?await t.lstat():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let o=await r.realpath();o&&(o.isUnknown()||this.opts.stat)&&await o.lstat()}return this.matchCheckTest(r,e)}matchCheckTest(t,e){return t&&(this.maxDepth===1/0||t.depth()<=this.maxDepth)&&(!e||t.canReaddir())&&(!this.opts.nodir||!t.isDirectory())&&(!this.opts.nodir||!this.opts.follow||!t.isSymbolicLink()||!t.realpathCached()?.isDirectory())&&!this.#r(t)?t:void 0}matchCheckSync(t,e){if(e&&this.opts.nodir)return;let s;if(this.opts.realpath){if(s=t.realpathCached()||t.realpathSync(),!s)return;t=s}let r=t.isUnknown()||this.opts.stat?t.lstatSync():t;if(this.opts.follow&&this.opts.nodir&&r?.isSymbolicLink()){let o=r.realpathSync();o&&(o?.isUnknown()||this.opts.stat)&&o.lstatSync()}return this.matchCheckTest(r,e)}matchFinish(t,e){if(this.#r(t))return;if(!this.includeChildMatches&&this.#s?.add){let r=`${t.relativePosix()}/**`;this.#s.add(r)}let s=this.opts.absolute===void 0?e:this.opts.absolute;this.seen.add(t);let i=this.opts.mark&&t.isDirectory()?this.#n:\"\";if(this.opts.withFileTypes)this.matchEmit(t);else if(s){let r=this.opts.posix?t.fullpathPosix():t.fullpath();this.matchEmit(r+i)}else{let r=this.opts.posix?t.relativePosix():t.relative(),o=this.opts.dotRelative&&!r.startsWith(\"..\"+this.#n)?\".\"+this.#n:\"\";this.matchEmit(r?o+r+i:\".\"+i)}}async match(t,e,s){let i=await this.matchCheck(t,s);i&&this.matchFinish(i,e)}matchSync(t,e,s){let i=this.matchCheckSync(t,s);i&&this.matchFinish(i,e)}walkCB(t,e,s){this.signal?.aborted&&s(),this.walkCB2(t,e,new Et(this.opts),s)}walkCB2(t,e,s,i){if(this.#o(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2(t,e,s,i));return}s.processPatterns(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||(r++,this.match(h,a,l).then(()=>o()));for(let h of s.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;r++;let a=h.readdirCached();h.calledReaddir()?this.walkCB3(h,a,s,o):h.readdirCB((l,u)=>this.walkCB3(h,u,s,o),!0)}o()}walkCB3(t,e,s,i){s=s.filterEntries(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||(r++,this.match(h,a,l).then(()=>o()));for(let[h,a]of s.subwalks.entries())r++,this.walkCB2(h,a,s.child(),o);o()}walkCBSync(t,e,s){this.signal?.aborted&&s(),this.walkCB2Sync(t,e,new Et(this.opts),s)}walkCB2Sync(t,e,s,i){if(this.#o(t))return i();if(this.signal?.aborted&&i(),this.paused){this.onResume(()=>this.walkCB2Sync(t,e,s,i));return}s.processPatterns(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||this.matchSync(h,a,l);for(let h of s.subwalkTargets()){if(this.maxDepth!==1/0&&h.depth()>=this.maxDepth)continue;r++;let a=h.readdirSync();this.walkCB3Sync(h,a,s,o)}o()}walkCB3Sync(t,e,s,i){s=s.filterEntries(t,e);let r=1,o=()=>{--r===0&&i()};for(let[h,a,l]of s.matches.entries())this.#r(h)||this.matchSync(h,a,l);for(let[h,a]of s.subwalks.entries())r++,this.walkCB2Sync(h,a,s.child(),o);o()}},xt=class extends zt{matches=new Set;constructor(t,e,s){super(t,e,s)}matchEmit(t){this.matches.add(t)}async walk(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&await this.path.lstat(),await new Promise((t,e)=>{this.walkCB(this.path,this.patterns,()=>{this.signal?.aborted?e(this.signal.reason):t(this.matches)})}),this.matches}walkSync(){if(this.signal?.aborted)throw this.signal.reason;return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>{if(this.signal?.aborted)throw this.signal.reason}),this.matches}},vt=class extends zt{results;constructor(t,e,s){super(t,e,s),this.results=new V({signal:this.signal,objectMode:!0}),this.results.on(\"drain\",()=>this.resume()),this.results.on(\"resume\",()=>this.resume())}matchEmit(t){this.results.write(t),this.results.flowing||this.pause()}stream(){let t=this.path;return t.isUnknown()?t.lstat().then(()=>{this.walkCB(t,this.patterns,()=>this.results.end())}):this.walkCB(t,this.patterns,()=>this.results.end()),this.results}streamSync(){return this.path.isUnknown()&&this.path.lstatSync(),this.walkCBSync(this.path,this.patterns,()=>this.results.end()),this.results}};var Pi=typeof process==\"object\"&&process&&typeof process.platform==\"string\"?process.platform:\"linux\",I=class{absolute;cwd;root;dot;dotRelative;follow;ignore;magicalBraces;mark;matchBase;maxDepth;nobrace;nocase;nodir;noext;noglobstar;pattern;platform;realpath;scurry;stat;signal;windowsPathsNoEscape;withFileTypes;includeChildMatches;opts;patterns;constructor(t,e){if(!e)throw new TypeError(\"glob options required\");if(this.withFileTypes=!!e.withFileTypes,this.signal=e.signal,this.follow=!!e.follow,this.dot=!!e.dot,this.dotRelative=!!e.dotRelative,this.nodir=!!e.nodir,this.mark=!!e.mark,e.cwd?(e.cwd instanceof URL||e.cwd.startsWith(\"file://\"))&&(e.cwd=Wi(e.cwd)):this.cwd=\"\",this.cwd=e.cwd||\"\",this.root=e.root,this.magicalBraces=!!e.magicalBraces,this.nobrace=!!e.nobrace,this.noext=!!e.noext,this.realpath=!!e.realpath,this.absolute=e.absolute,this.includeChildMatches=e.includeChildMatches!==!1,this.noglobstar=!!e.noglobstar,this.matchBase=!!e.matchBase,this.maxDepth=typeof e.maxDepth==\"number\"?e.maxDepth:1/0,this.stat=!!e.stat,this.ignore=e.ignore,this.withFileTypes&&this.absolute!==void 0)throw new Error(\"cannot set absolute and withFileTypes:true\");if(typeof t==\"string\"&&(t=[t]),this.windowsPathsNoEscape=!!e.windowsPathsNoEscape||e.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(t=t.map(a=>a.replace(/\\\\/g,\"/\"))),this.matchBase){if(e.noglobstar)throw new TypeError(\"base matching requires globstar\");t=t.map(a=>a.includes(\"/\")?a:`./**/${a}`)}if(this.pattern=t,this.platform=e.platform||Pi,this.opts={...e,platform:this.platform},e.scurry){if(this.scurry=e.scurry,e.nocase!==void 0&&e.nocase!==e.scurry.nocase)throw new Error(\"nocase option contradicts provided scurry option\")}else{let a=e.platform===\"win32\"?it:e.platform===\"darwin\"?St:e.platform?rt:Xe;this.scurry=new a(this.cwd,{nocase:e.nocase,fs:e.fs})}this.nocase=this.scurry.nocase;let s=this.platform===\"darwin\"||this.platform===\"win32\",i={braceExpandMax:1e4,...e,dot:this.dot,matchBase:this.matchBase,nobrace:this.nobrace,nocase:this.nocase,nocaseMagicOnly:s,nocomment:!0,noext:this.noext,nonegate:!0,optimizationLevel:2,platform:this.platform,windowsPathsNoEscape:this.windowsPathsNoEscape,debug:!!this.opts.debug},r=this.pattern.map(a=>new D(a,i)),[o,h]=r.reduce((a,l)=>(a[0].push(...l.set),a[1].push(...l.globParts),a),[[],[]]);this.patterns=o.map((a,l)=>{let u=h[l];if(!u)throw new Error(\"invalid pattern object\");return new nt(a,u,0,this.platform)})}async walk(){return[...await new xt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walk()]}walkSync(){return[...new xt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).walkSync()]}stream(){return new vt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).stream()}streamSync(){return new vt(this.patterns,this.scurry.cwd,{...this.opts,maxDepth:this.maxDepth!==1/0?this.maxDepth+this.scurry.cwd.depth():1/0,platform:this.platform,nocase:this.nocase,includeChildMatches:this.includeChildMatches}).streamSync()}iterateSync(){return this.streamSync()[Symbol.iterator]()}[Symbol.iterator](){return this.iterateSync()}iterate(){return this.stream()[Symbol.asyncIterator]()}[Symbol.asyncIterator](){return this.iterate()}};var le=(n,t={})=>{Array.isArray(n)||(n=[n]);for(let e of n)if(new D(e,t).hasMagic())return!0;return!1};function Bt(n,t={}){return new I(n,t).streamSync()}function Qe(n,t={}){return new I(n,t).stream()}function ts(n,t={}){return new I(n,t).walkSync()}async function Je(n,t={}){return new I(n,t).walk()}function Ut(n,t={}){return new I(n,t).iterateSync()}function es(n,t={}){return new I(n,t).iterate()}var ji=Bt,Ii=Object.assign(Qe,{sync:Bt}),zi=Ut,Bi=Object.assign(es,{sync:Ut}),Ui=Object.assign(ts,{stream:Bt,iterate:Ut}),Ze=Object.assign(Je,{glob:Je,globSync:ts,sync:Ui,globStream:Qe,stream:Ii,globStreamSync:Bt,streamSync:ji,globIterate:es,iterate:Bi,globIterateSync:Ut,iterateSync:zi,Glob:I,hasMagic:le,escape:tt,unescape:W});Ze.glob=Ze;export{I as Glob,ot as Ignore,tt as escape,Ze as glob,es as globIterate,Ut as globIterateSync,Qe as globStream,Bt as globStreamSync,ts as globSync,le as hasMagic,Bi as iterate,zi as iterateSync,Ii as stream,ji as streamSync,Ui as sync,W as unescape};\n//# sourceMappingURL=index.min.js.map\n","export const balanced = (a, b, str) => {\n const ma = a instanceof RegExp ? maybeMatch(a, str) : a;\n const mb = b instanceof RegExp ? maybeMatch(b, str) : b;\n const r = ma !== null && mb != null && range(ma, mb, str);\n return (r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + ma.length, r[1]),\n post: str.slice(r[1] + mb.length),\n });\n};\nconst maybeMatch = (reg, str) => {\n const m = str.match(reg);\n return m ? m[0] : null;\n};\nexport const range = (a, b, str) => {\n let begs, beg, left, right = undefined, result;\n let ai = str.indexOf(a);\n let bi = str.indexOf(b, ai + 1);\n let i = ai;\n if (ai >= 0 && bi > 0) {\n if (a === b) {\n return [ai, bi];\n }\n begs = [];\n left = str.length;\n while (i >= 0 && !result) {\n if (i === ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n }\n else if (begs.length === 1) {\n const r = begs.pop();\n if (r !== undefined)\n result = [r, bi];\n }\n else {\n beg = begs.pop();\n if (beg !== undefined && beg < left) {\n left = beg;\n right = bi;\n }\n bi = str.indexOf(b, i + 1);\n }\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n if (begs.length && right !== undefined) {\n result = [left, right];\n }\n }\n return result;\n};\n//# sourceMappingURL=index.js.map","import { balanced } from 'balanced-match';\nconst escSlash = '\\0SLASH' + Math.random() + '\\0';\nconst escOpen = '\\0OPEN' + Math.random() + '\\0';\nconst escClose = '\\0CLOSE' + Math.random() + '\\0';\nconst escComma = '\\0COMMA' + Math.random() + '\\0';\nconst escPeriod = '\\0PERIOD' + Math.random() + '\\0';\nconst escSlashPattern = new RegExp(escSlash, 'g');\nconst escOpenPattern = new RegExp(escOpen, 'g');\nconst escClosePattern = new RegExp(escClose, 'g');\nconst escCommaPattern = new RegExp(escComma, 'g');\nconst escPeriodPattern = new RegExp(escPeriod, 'g');\nconst slashPattern = /\\\\\\\\/g;\nconst openPattern = /\\\\{/g;\nconst closePattern = /\\\\}/g;\nconst commaPattern = /\\\\,/g;\nconst periodPattern = /\\\\\\./g;\nexport const EXPANSION_MAX = 100_000;\nfunction numeric(str) {\n return !isNaN(str) ? parseInt(str, 10) : str.charCodeAt(0);\n}\nfunction escapeBraces(str) {\n return str\n .replace(slashPattern, escSlash)\n .replace(openPattern, escOpen)\n .replace(closePattern, escClose)\n .replace(commaPattern, escComma)\n .replace(periodPattern, escPeriod);\n}\nfunction unescapeBraces(str) {\n return str\n .replace(escSlashPattern, '\\\\')\n .replace(escOpenPattern, '{')\n .replace(escClosePattern, '}')\n .replace(escCommaPattern, ',')\n .replace(escPeriodPattern, '.');\n}\n/**\n * Basically just str.split(\",\"), but handling cases\n * where we have nested braced sections, which should be\n * treated as individual members, like {a,{b,c},d}\n */\nfunction parseCommaParts(str) {\n if (!str) {\n return [''];\n }\n const parts = [];\n const m = balanced('{', '}', str);\n if (!m) {\n return str.split(',');\n }\n const { pre, body, post } = m;\n const p = pre.split(',');\n p[p.length - 1] += '{' + body + '}';\n const postParts = parseCommaParts(post);\n if (post.length) {\n ;\n p[p.length - 1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n parts.push.apply(parts, p);\n return parts;\n}\nexport function expand(str, options = {}) {\n if (!str) {\n return [];\n }\n const { max = EXPANSION_MAX } = options;\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.slice(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.slice(2);\n }\n return expand_(escapeBraces(str), max, true).map(unescapeBraces);\n}\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\nfunction expand_(str, max, isTop) {\n /** @type {string[]} */\n const expansions = [];\n const m = balanced('{', '}', str);\n if (!m)\n return [str];\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n const pre = m.pre;\n const post = m.post.length ? expand_(m.post, max, false) : [''];\n if (/\\$$/.test(m.pre)) {\n for (let k = 0; k < post.length && k < max; k++) {\n const expansion = pre + '{' + m.body + '}' + post[k];\n expansions.push(expansion);\n }\n }\n else {\n const isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n const isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n const isSequence = isNumericSequence || isAlphaSequence;\n const isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,(?!,).*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand_(str, max, true);\n }\n return [str];\n }\n let n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n }\n else {\n n = parseCommaParts(m.body);\n if (n.length === 1 && n[0] !== undefined) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand_(n[0], max, false).map(embrace);\n //XXX is this necessary? Can't seem to hit it in tests.\n /* c8 ignore start */\n if (n.length === 1) {\n return post.map(p => m.pre + n[0] + p);\n }\n /* c8 ignore stop */\n }\n }\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n let N;\n if (isSequence && n[0] !== undefined && n[1] !== undefined) {\n const x = numeric(n[0]);\n const y = numeric(n[1]);\n const width = Math.max(n[0].length, n[1].length);\n let incr = n.length === 3 && n[2] !== undefined ?\n Math.max(Math.abs(numeric(n[2])), 1)\n : 1;\n let test = lte;\n const reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n const pad = n.some(isPadded);\n N = [];\n for (let i = x; test(i, y); i += incr) {\n let c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\') {\n c = '';\n }\n }\n else {\n c = String(i);\n if (pad) {\n const need = width - c.length;\n if (need > 0) {\n const z = new Array(need + 1).join('0');\n if (i < 0) {\n c = '-' + z + c.slice(1);\n }\n else {\n c = z + c;\n }\n }\n }\n }\n N.push(c);\n }\n }\n else {\n N = [];\n for (let j = 0; j < n.length; j++) {\n N.push.apply(N, expand_(n[j], max, false));\n }\n }\n for (let j = 0; j < N.length; j++) {\n for (let k = 0; k < post.length && expansions.length < max; k++) {\n const expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion) {\n expansions.push(expansion);\n }\n }\n }\n }\n return expansions;\n}\n//# sourceMappingURL=index.js.map","const MAX_PATTERN_LENGTH = 1024 * 64;\nexport const assertValidPattern = (pattern) => {\n if (typeof pattern !== 'string') {\n throw new TypeError('invalid pattern');\n }\n if (pattern.length > MAX_PATTERN_LENGTH) {\n throw new TypeError('pattern is too long');\n }\n};\n//# sourceMappingURL=assert-valid-pattern.js.map","// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses = {\n '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n '[:cntrl:]': ['\\\\p{Cc}', true],\n '[:digit:]': ['\\\\p{Nd}', true],\n '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n '[:lower:]': ['\\\\p{Ll}', true],\n '[:print:]': ['\\\\p{C}', true],\n '[:punct:]': ['\\\\p{P}', true],\n '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n '[:upper:]': ['\\\\p{Lu}', true],\n '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n '[:xdigit:]': ['A-Fa-f0-9', false],\n};\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s) => s.replace(/[[\\]\\\\-]/g, '\\\\$&');\n// escape all regexp magic characters\nconst regexpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges) => ranges.join('');\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (glob, position) => {\n const pos = position;\n /* c8 ignore start */\n if (glob.charAt(pos) !== '[') {\n throw new Error('not in a brace expression');\n }\n /* c8 ignore stop */\n const ranges = [];\n const negs = [];\n let i = pos + 1;\n let sawStart = false;\n let uflag = false;\n let escaping = false;\n let negate = false;\n let endPos = pos;\n let rangeStart = '';\n WHILE: while (i < glob.length) {\n const c = glob.charAt(i);\n if ((c === '!' || c === '^') && i === pos + 1) {\n negate = true;\n i++;\n continue;\n }\n if (c === ']' && sawStart && !escaping) {\n endPos = i + 1;\n break;\n }\n sawStart = true;\n if (c === '\\\\') {\n if (!escaping) {\n escaping = true;\n i++;\n continue;\n }\n // escaped \\ char, fall through and treat like normal char\n }\n if (c === '[' && !escaping) {\n // either a posix class, a collation equivalent, or just a [\n for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n if (glob.startsWith(cls, i)) {\n // invalid, [a-[] is fine, but not [a-[:alpha]]\n if (rangeStart) {\n return ['$.', false, glob.length - pos, true];\n }\n i += cls.length;\n if (neg)\n negs.push(unip);\n else\n ranges.push(unip);\n uflag = uflag || u;\n continue WHILE;\n }\n }\n }\n // now it's just a normal character, effectively\n escaping = false;\n if (rangeStart) {\n // throw this range away if it's not valid, but others\n // can still match.\n if (c > rangeStart) {\n ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c));\n }\n else if (c === rangeStart) {\n ranges.push(braceEscape(c));\n }\n rangeStart = '';\n i++;\n continue;\n }\n // now might be the start of a range.\n // can be either c-d or c-] or c<more...>] or c] at this point\n if (glob.startsWith('-]', i + 1)) {\n ranges.push(braceEscape(c + '-'));\n i += 2;\n continue;\n }\n if (glob.startsWith('-', i + 1)) {\n rangeStart = c;\n i += 2;\n continue;\n }\n // not the start of a range, just a single character\n ranges.push(braceEscape(c));\n i++;\n }\n if (endPos < i) {\n // didn't see the end of the class, not a valid class,\n // but might still be valid as a literal match.\n return ['', false, 0, false];\n }\n // if we got no ranges and no negates, then we have a range that\n // cannot possibly match anything, and that poisons the whole glob\n if (!ranges.length && !negs.length) {\n return ['$.', false, glob.length - pos, true];\n }\n // if we got one positive range, and it's a single character, then that's\n // not actually a magic pattern, it's just that one literal character.\n // we should not treat that as \"magic\", we should just return the literal\n // character. [_] is a perfectly valid way to escape glob magic chars.\n if (negs.length === 0 &&\n ranges.length === 1 &&\n /^\\\\?.$/.test(ranges[0]) &&\n !negate) {\n const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0];\n return [regexpEscape(r), false, endPos - pos, false];\n }\n const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']';\n const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']';\n const comb = ranges.length && negs.length ? '(' + sranges + '|' + snegs + ')'\n : ranges.length ? sranges\n : snegs;\n return [comb, uflag, endPos - pos, true];\n};\n//# sourceMappingURL=brace-expressions.js.map","/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape} option is used, then\n * square-bracket escapes are removed, but not backslash escapes.\n *\n * For example, it will turn the string `'[*]'` into `*`, but it will not\n * turn `'\\\\*'` into `'*'`, because `\\` is a path separator in\n * `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both square-bracket escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n *\n * When `magicalBraces` is not set, escapes of braces (`{` and `}`) will not be\n * unescaped.\n */\nexport const unescape = (s, { windowsPathsNoEscape = false, magicalBraces = true, } = {}) => {\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\])\\]/g, '$1$2')\n .replace(/\\\\([^/])/g, '$1');\n }\n return windowsPathsNoEscape ?\n s.replace(/\\[([^/\\\\{}])\\]/g, '$1')\n : s\n .replace(/((?!\\\\).|^)\\[([^/\\\\{}])\\]/g, '$1$2')\n .replace(/\\\\([^/{}])/g, '$1');\n};\n//# sourceMappingURL=unescape.js.map","// parse a single path portion\nvar _a;\nimport { parseClass } from './brace-expressions.js';\nimport { unescape } from './unescape.js';\nconst types = new Set(['!', '?', '+', '*', '@']);\nconst isExtglobType = (c) => types.has(c);\nconst isExtglobAST = (c) => isExtglobType(c.type);\n// Map of which extglob types can adopt the children of a nested extglob\n//\n// anything but ! can adopt a matching type:\n// +(a|+(b|c)|d) => +(a|b|c|d)\n// *(a|*(b|c)|d) => *(a|b|c|d)\n// @(a|@(b|c)|d) => @(a|b|c|d)\n// ?(a|?(b|c)|d) => ?(a|b|c|d)\n//\n// * can adopt anything, because 0 or repetition is allowed\n// *(a|?(b|c)|d) => *(a|b|c|d)\n// *(a|+(b|c)|d) => *(a|b|c|d)\n// *(a|@(b|c)|d) => *(a|b|c|d)\n//\n// + can adopt @, because 1 or repetition is allowed\n// +(a|@(b|c)|d) => +(a|b|c|d)\n//\n// + and @ CANNOT adopt *, because 0 would be allowed\n// +(a|*(b|c)|d) => would match \"\", on *(b|c)\n// @(a|*(b|c)|d) => would match \"\", on *(b|c)\n//\n// + and @ CANNOT adopt ?, because 0 would be allowed\n// +(a|?(b|c)|d) => would match \"\", on ?(b|c)\n// @(a|?(b|c)|d) => would match \"\", on ?(b|c)\n//\n// ? can adopt @, because 0 or 1 is allowed\n// ?(a|@(b|c)|d) => ?(a|b|c|d)\n//\n// ? and @ CANNOT adopt * or +, because >1 would be allowed\n// ?(a|*(b|c)|d) => would match bbb on *(b|c)\n// @(a|*(b|c)|d) => would match bbb on *(b|c)\n// ?(a|+(b|c)|d) => would match bbb on +(b|c)\n// @(a|+(b|c)|d) => would match bbb on +(b|c)\n//\n// ! CANNOT adopt ! (nothing else can either)\n// !(a|!(b|c)|d) => !(a|b|c|d) would fail to match on b (not not b|c)\n//\n// ! can adopt @\n// !(a|@(b|c)|d) => !(a|b|c|d)\n//\n// ! CANNOT adopt *\n// !(a|*(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt +\n// !(a|+(b|c)|d) => !(a|b|c|d) would match on bbb, not allowed\n//\n// ! CANNOT adopt ?\n// x!(a|?(b|c)|d) => x!(a|b|c|d) would fail to match \"x\"\nconst adoptionMap = new Map([\n ['!', ['@']],\n ['?', ['?', '@']],\n ['@', ['@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@']],\n]);\n// nested extglobs that can be adopted in, but with the addition of\n// a blank '' element.\nconst adoptionWithSpaceMap = new Map([\n ['!', ['?']],\n ['@', ['?']],\n ['+', ['?', '*']],\n]);\n// union of the previous two maps\nconst adoptionAnyMap = new Map([\n ['!', ['?', '@']],\n ['?', ['?', '@']],\n ['@', ['?', '@']],\n ['*', ['*', '+', '?', '@']],\n ['+', ['+', '@', '?', '*']],\n]);\n// Extglobs that can take over their parent if they are the only child\n// the key is parent, value maps child to resulting extglob parent type\n// '@' is omitted because it's a special case. An `@` extglob with a single\n// member can always be usurped by that subpattern.\nconst usurpMap = new Map([\n ['!', new Map([['!', '@']])],\n [\n '?',\n new Map([\n ['*', '*'],\n ['+', '*'],\n ]),\n ],\n [\n '@',\n new Map([\n ['!', '!'],\n ['?', '?'],\n ['@', '@'],\n ['*', '*'],\n ['+', '+'],\n ]),\n ],\n [\n '+',\n new Map([\n ['?', '*'],\n ['*', '*'],\n ]),\n ],\n]);\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))';\nconst startNoDot = '(?!\\\\.)';\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.']);\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.']);\nconst reSpecials = new Set('().*{}+?[]^$\\\\!');\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n// any single thing other than /\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?';\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\nlet ID = 0;\nexport class AST {\n type;\n #root;\n #hasMagic;\n #uflag = false;\n #parts = [];\n #parent;\n #parentIndex;\n #negs;\n #filledNegs = false;\n #options;\n #toString;\n // set to true if it's an extglob with no children\n // (which really means one child of '')\n #emptyExt = false;\n id = ++ID;\n get depth() {\n return (this.#parent?.depth ?? -1) + 1;\n }\n [Symbol.for('nodejs.util.inspect.custom')]() {\n return {\n '@@type': 'AST',\n id: this.id,\n type: this.type,\n root: this.#root.id,\n parent: this.#parent?.id,\n depth: this.depth,\n partsLength: this.#parts.length,\n parts: this.#parts,\n };\n }\n constructor(type, parent, options = {}) {\n this.type = type;\n // extglobs are inherently magical\n if (type)\n this.#hasMagic = true;\n this.#parent = parent;\n this.#root = this.#parent ? this.#parent.#root : this;\n this.#options = this.#root === this ? options : this.#root.#options;\n this.#negs = this.#root === this ? [] : this.#root.#negs;\n if (type === '!' && !this.#root.#filledNegs)\n this.#negs.push(this);\n this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0;\n }\n get hasMagic() {\n /* c8 ignore start */\n if (this.#hasMagic !== undefined)\n return this.#hasMagic;\n /* c8 ignore stop */\n for (const p of this.#parts) {\n if (typeof p === 'string')\n continue;\n if (p.type || p.hasMagic)\n return (this.#hasMagic = true);\n }\n // note: will be undefined until we generate the regexp src and find out\n return this.#hasMagic;\n }\n // reconstructs the pattern\n toString() {\n return (this.#toString !== undefined ? this.#toString\n : !this.type ?\n (this.#toString = this.#parts.map(p => String(p)).join(''))\n : (this.#toString =\n this.type +\n '(' +\n this.#parts.map(p => String(p)).join('|') +\n ')'));\n }\n #fillNegs() {\n /* c8 ignore start */\n if (this !== this.#root)\n throw new Error('should only call on root');\n if (this.#filledNegs)\n return this;\n /* c8 ignore stop */\n // call toString() once to fill this out\n this.toString();\n this.#filledNegs = true;\n let n;\n while ((n = this.#negs.pop())) {\n if (n.type !== '!')\n continue;\n // walk up the tree, appending everthing that comes AFTER parentIndex\n let p = n;\n let pp = p.#parent;\n while (pp) {\n for (let i = p.#parentIndex + 1; !pp.type && i < pp.#parts.length; i++) {\n for (const part of n.#parts) {\n /* c8 ignore start */\n if (typeof part === 'string') {\n throw new Error('string part in extglob AST??');\n }\n /* c8 ignore stop */\n part.copyIn(pp.#parts[i]);\n }\n }\n p = pp;\n pp = p.#parent;\n }\n }\n return this;\n }\n push(...parts) {\n for (const p of parts) {\n if (p === '')\n continue;\n /* c8 ignore start */\n if (typeof p !== 'string' &&\n !(p instanceof _a && p.#parent === this)) {\n throw new Error('invalid part: ' + p);\n }\n /* c8 ignore stop */\n this.#parts.push(p);\n }\n }\n toJSON() {\n const ret = this.type === null ?\n this.#parts\n .slice()\n .map(p => (typeof p === 'string' ? p : p.toJSON()))\n : [this.type, ...this.#parts.map(p => p.toJSON())];\n if (this.isStart() && !this.type)\n ret.unshift([]);\n if (this.isEnd() &&\n (this === this.#root ||\n (this.#root.#filledNegs && this.#parent?.type === '!'))) {\n ret.push({});\n }\n return ret;\n }\n isStart() {\n if (this.#root === this)\n return true;\n // if (this.type) return !!this.#parent?.isStart()\n if (!this.#parent?.isStart())\n return false;\n if (this.#parentIndex === 0)\n return true;\n // if everything AHEAD of this is a negation, then it's still the \"start\"\n const p = this.#parent;\n for (let i = 0; i < this.#parentIndex; i++) {\n const pp = p.#parts[i];\n if (!(pp instanceof _a && pp.type === '!')) {\n return false;\n }\n }\n return true;\n }\n isEnd() {\n if (this.#root === this)\n return true;\n if (this.#parent?.type === '!')\n return true;\n if (!this.#parent?.isEnd())\n return false;\n if (!this.type)\n return this.#parent?.isEnd();\n // if not root, it'll always have a parent\n /* c8 ignore start */\n const pl = this.#parent ? this.#parent.#parts.length : 0;\n /* c8 ignore stop */\n return this.#parentIndex === pl - 1;\n }\n copyIn(part) {\n if (typeof part === 'string')\n this.push(part);\n else\n this.push(part.clone(this));\n }\n clone(parent) {\n const c = new _a(this.type, parent);\n for (const p of this.#parts) {\n c.copyIn(p);\n }\n return c;\n }\n static #parseAST(str, ast, pos, opt, extDepth) {\n const maxDepth = opt.maxExtglobRecursion ?? 2;\n let escaping = false;\n let inBrace = false;\n let braceStart = -1;\n let braceNeg = false;\n if (ast.type === null) {\n // outside of a extglob, append until we find a start\n let i = pos;\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n // we don't have to check for adoption here, because that's\n // done at the other recursion point.\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n extDepth <= maxDepth;\n if (doRecurse) {\n ast.push(acc);\n acc = '';\n const ext = new _a(c, ast);\n i = _a.#parseAST(str, ext, i, opt, extDepth + 1);\n ast.push(ext);\n continue;\n }\n acc += c;\n }\n ast.push(acc);\n return i;\n }\n // some kind of extglob, pos is at the (\n // find the next | or )\n let i = pos + 1;\n let part = new _a(null, ast);\n const parts = [];\n let acc = '';\n while (i < str.length) {\n const c = str.charAt(i++);\n // still accumulate escapes at this point, but we do ignore\n // starts that are escaped\n if (escaping || c === '\\\\') {\n escaping = !escaping;\n acc += c;\n continue;\n }\n if (inBrace) {\n if (i === braceStart + 1) {\n if (c === '^' || c === '!') {\n braceNeg = true;\n }\n }\n else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n inBrace = false;\n }\n acc += c;\n continue;\n }\n else if (c === '[') {\n inBrace = true;\n braceStart = i;\n braceNeg = false;\n acc += c;\n continue;\n }\n const doRecurse = !opt.noext &&\n isExtglobType(c) &&\n str.charAt(i) === '(' &&\n /* c8 ignore start - the maxDepth is sufficient here */\n (extDepth <= maxDepth || (ast && ast.#canAdoptType(c)));\n /* c8 ignore stop */\n if (doRecurse) {\n const depthAdd = ast && ast.#canAdoptType(c) ? 0 : 1;\n part.push(acc);\n acc = '';\n const ext = new _a(c, part);\n part.push(ext);\n i = _a.#parseAST(str, ext, i, opt, extDepth + depthAdd);\n continue;\n }\n if (c === '|') {\n part.push(acc);\n acc = '';\n parts.push(part);\n part = new _a(null, ast);\n continue;\n }\n if (c === ')') {\n if (acc === '' && ast.#parts.length === 0) {\n ast.#emptyExt = true;\n }\n part.push(acc);\n acc = '';\n ast.push(...parts, part);\n return i;\n }\n acc += c;\n }\n // unfinished extglob\n // if we got here, it was a malformed extglob! not an extglob, but\n // maybe something else in there.\n ast.type = null;\n ast.#hasMagic = undefined;\n ast.#parts = [str.substring(pos - 1)];\n return i;\n }\n #canAdoptWithSpace(child) {\n return this.#canAdopt(child, adoptionWithSpaceMap);\n }\n #canAdopt(child, map = adoptionMap) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canAdoptType(gc.type, map);\n }\n #canAdoptType(c, map = adoptionAnyMap) {\n return !!map.get(this.type)?.includes(c);\n }\n #adoptWithSpace(child, index) {\n const gc = child.#parts[0];\n const blank = new _a(null, gc, this.options);\n blank.#parts.push('');\n gc.push(blank);\n this.#adopt(child, index);\n }\n #adopt(child, index) {\n const gc = child.#parts[0];\n this.#parts.splice(index, 1, ...gc.#parts);\n for (const p of gc.#parts) {\n if (typeof p === 'object')\n p.#parent = this;\n }\n this.#toString = undefined;\n }\n #canUsurpType(c) {\n const m = usurpMap.get(this.type);\n return !!m?.has(c);\n }\n #canUsurp(child) {\n if (!child ||\n typeof child !== 'object' ||\n child.type !== null ||\n child.#parts.length !== 1 ||\n this.type === null ||\n this.#parts.length !== 1) {\n return false;\n }\n const gc = child.#parts[0];\n if (!gc || typeof gc !== 'object' || gc.type === null) {\n return false;\n }\n return this.#canUsurpType(gc.type);\n }\n #usurp(child) {\n const m = usurpMap.get(this.type);\n const gc = child.#parts[0];\n const nt = m?.get(gc.type);\n /* c8 ignore start - impossible */\n if (!nt)\n return false;\n /* c8 ignore stop */\n this.#parts = gc.#parts;\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#parent = this;\n }\n }\n this.type = nt;\n this.#toString = undefined;\n this.#emptyExt = false;\n }\n static fromGlob(pattern, options = {}) {\n const ast = new _a(null, undefined, options);\n _a.#parseAST(pattern, ast, 0, options, 0);\n return ast;\n }\n // returns the regular expression if there's magic, or the unescaped\n // string if not.\n toMMPattern() {\n // should only be called on root\n /* c8 ignore start */\n if (this !== this.#root)\n return this.#root.toMMPattern();\n /* c8 ignore stop */\n const glob = this.toString();\n const [re, body, hasMagic, uflag] = this.toRegExpSource();\n // if we're in nocase mode, and not nocaseMagicOnly, then we do\n // still need a regular expression if we have to case-insensitively\n // match capital/lowercase characters.\n const anyMagic = hasMagic ||\n this.#hasMagic ||\n (this.#options.nocase &&\n !this.#options.nocaseMagicOnly &&\n glob.toUpperCase() !== glob.toLowerCase());\n if (!anyMagic) {\n return body;\n }\n const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '');\n return Object.assign(new RegExp(`^${re}$`, flags), {\n _src: re,\n _glob: glob,\n });\n }\n get options() {\n return this.#options;\n }\n // returns the string match, the regexp source, whether there's magic\n // in the regexp (so a regular expression is required) and whether or\n // not the uflag is needed for the regular expression (for posix classes)\n // TODO: instead of injecting the start/end at this point, just return\n // the BODY of the regexp, along with the start/end portions suitable\n // for binding the start/end in either a joined full-path makeRe context\n // (where we bind to (^|/), or a standalone matchPart context (where\n // we bind to ^, and not /). Otherwise slashes get duped!\n //\n // In part-matching mode, the start is:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n // - if dots allowed or not possible: ^\n // - if dots possible and not allowed: ^(?!\\.)\n // end is:\n // - if not isEnd(): nothing\n // - else: $\n //\n // In full-path matching mode, we put the slash at the START of the\n // pattern, so start is:\n // - if first pattern: same as part-matching mode\n // - if not isStart(): nothing\n // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n // - if dots allowed or not possible: /\n // - if dots possible and not allowed: /(?!\\.)\n // end is:\n // - if last pattern, same as part-matching mode\n // - else nothing\n //\n // Always put the (?:$|/) on negated tails, though, because that has to be\n // there to bind the end of the negated pattern portion, and it's easier to\n // just stick it in now rather than try to inject it later in the middle of\n // the pattern.\n //\n // We can just always return the same end, and leave it up to the caller\n // to know whether it's going to be used joined or in parts.\n // And, if the start is adjusted slightly, can do the same there:\n // - if not isStart: nothing\n // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n // - if dots allowed or not possible: (?:/|^)\n // - if dots possible and not allowed: (?:/|^)(?!\\.)\n //\n // But it's better to have a simpler binding without a conditional, for\n // performance, so probably better to return both start options.\n //\n // Then the caller just ignores the end if it's not the first pattern,\n // and the start always gets applied.\n //\n // But that's always going to be $ if it's the ending pattern, or nothing,\n // so the caller can just attach $ at the end of the pattern when building.\n //\n // So the todo is:\n // - better detect what kind of start is needed\n // - return both flavors of starting pattern\n // - attach $ at the end of the pattern when creating the actual RegExp\n //\n // Ah, but wait, no, that all only applies to the root when the first pattern\n // is not an extglob. If the first pattern IS an extglob, then we need all\n // that dot prevention biz to live in the extglob portions, because eg\n // +(*|.x*) can match .xy but not .yx.\n //\n // So, return the two flavors if it's #root and the first child is not an\n // AST, otherwise leave it to the child AST to handle it, and there,\n // use the (?:^|/) style of start binding.\n //\n // Even simplified further:\n // - Since the start for a join is eg /(?!\\.) and the start for a part\n // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n // or start or whatever) and prepend ^ or / at the Regexp construction.\n toRegExpSource(allowDot) {\n const dot = allowDot ?? !!this.#options.dot;\n if (this.#root === this) {\n this.#flatten();\n this.#fillNegs();\n }\n if (!isExtglobAST(this)) {\n const noEmpty = this.isStart() &&\n this.isEnd() &&\n !this.#parts.some(s => typeof s !== 'string');\n const src = this.#parts\n .map(p => {\n const [re, _, hasMagic, uflag] = typeof p === 'string' ?\n _a.#parseGlob(p, this.#hasMagic, noEmpty)\n : p.toRegExpSource(allowDot);\n this.#hasMagic = this.#hasMagic || hasMagic;\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .join('');\n let start = '';\n if (this.isStart()) {\n if (typeof this.#parts[0] === 'string') {\n // this is the string that will match the start of the pattern,\n // so we need to protect against dots and such.\n // '.' and '..' cannot match unless the pattern is that exactly,\n // even if it starts with . or dot:true is set.\n const dotTravAllowed = this.#parts.length === 1 && justDots.has(this.#parts[0]);\n if (!dotTravAllowed) {\n const aps = addPatternStart;\n // check if we have a possibility of matching . or ..,\n // and prevent that.\n const needNoTrav = \n // dots are allowed, and the pattern starts with [ or .\n (dot && aps.has(src.charAt(0))) ||\n // the pattern starts with \\., and then [ or .\n (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n // the pattern starts with \\.\\., and then [ or .\n (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)));\n // no need to prevent dots if it can't match a dot, or if a\n // sub-pattern will be preventing it anyway.\n const needNoDot = !dot && !allowDot && aps.has(src.charAt(0));\n start =\n needNoTrav ? startNoTraversal\n : needNoDot ? startNoDot\n : '';\n }\n }\n }\n // append the \"end of path portion\" pattern to negation tails\n let end = '';\n if (this.isEnd() &&\n this.#root.#filledNegs &&\n this.#parent?.type === '!') {\n end = '(?:$|\\\\/)';\n }\n const final = start + src + end;\n return [\n final,\n unescape(src),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n // We need to calculate the body *twice* if it's a repeat pattern\n // at the start, once in nodot mode, then again in dot mode, so a\n // pattern like *(?) can match 'x.y'\n const repeated = this.type === '*' || this.type === '+';\n // some kind of extglob\n const start = this.type === '!' ? '(?:(?!(?:' : '(?:';\n let body = this.#partsToRegExp(dot);\n if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n // invalid extglob, has to at least be *something* present, if it's\n // the entire path portion.\n const s = this.toString();\n const me = this;\n me.#parts = [s];\n me.type = null;\n me.#hasMagic = undefined;\n return [s, unescape(this.toString()), false, false];\n }\n let bodyDotAllowed = !repeated || allowDot || dot || !startNoDot ?\n ''\n : this.#partsToRegExp(true);\n if (bodyDotAllowed === body) {\n bodyDotAllowed = '';\n }\n if (bodyDotAllowed) {\n body = `(?:${body})(?:${bodyDotAllowed})*?`;\n }\n // an empty !() is exactly equivalent to a starNoEmpty\n let final = '';\n if (this.type === '!' && this.#emptyExt) {\n final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty;\n }\n else {\n const close = this.type === '!' ?\n // !() must match something,but !(x) can match ''\n '))' +\n (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n star +\n ')'\n : this.type === '@' ? ')'\n : this.type === '?' ? ')?'\n : this.type === '+' && bodyDotAllowed ? ')'\n : this.type === '*' && bodyDotAllowed ? `)?`\n : `)${this.type}`;\n final = start + body + close;\n }\n return [\n final,\n unescape(body),\n (this.#hasMagic = !!this.#hasMagic),\n this.#uflag,\n ];\n }\n #flatten() {\n if (!isExtglobAST(this)) {\n for (const p of this.#parts) {\n if (typeof p === 'object') {\n p.#flatten();\n }\n }\n }\n else {\n // do up to 10 passes to flatten as much as possible\n let iterations = 0;\n let done = false;\n do {\n done = true;\n for (let i = 0; i < this.#parts.length; i++) {\n const c = this.#parts[i];\n if (typeof c === 'object') {\n c.#flatten();\n if (this.#canAdopt(c)) {\n done = false;\n this.#adopt(c, i);\n }\n else if (this.#canAdoptWithSpace(c)) {\n done = false;\n this.#adoptWithSpace(c, i);\n }\n else if (this.#canUsurp(c)) {\n done = false;\n this.#usurp(c);\n }\n }\n }\n } while (!done && ++iterations < 10);\n }\n this.#toString = undefined;\n }\n #partsToRegExp(dot) {\n return this.#parts\n .map(p => {\n // extglob ASTs should only contain parent ASTs\n /* c8 ignore start */\n if (typeof p === 'string') {\n throw new Error('string type in extglob ast??');\n }\n /* c8 ignore stop */\n // can ignore hasMagic, because extglobs are already always magic\n const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot);\n this.#uflag = this.#uflag || uflag;\n return re;\n })\n .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n .join('|');\n }\n static #parseGlob(glob, hasMagic, noEmpty = false) {\n let escaping = false;\n let re = '';\n let uflag = false;\n // multiple stars that aren't globstars coalesce into one *\n let inStar = false;\n for (let i = 0; i < glob.length; i++) {\n const c = glob.charAt(i);\n if (escaping) {\n escaping = false;\n re += (reSpecials.has(c) ? '\\\\' : '') + c;\n continue;\n }\n if (c === '*') {\n if (inStar)\n continue;\n inStar = true;\n re += noEmpty && /^[*]+$/.test(glob) ? starNoEmpty : star;\n hasMagic = true;\n continue;\n }\n else {\n inStar = false;\n }\n if (c === '\\\\') {\n if (i === glob.length - 1) {\n re += '\\\\\\\\';\n }\n else {\n escaping = true;\n }\n continue;\n }\n if (c === '[') {\n const [src, needUflag, consumed, magic] = parseClass(glob, i);\n if (consumed) {\n re += src;\n uflag = uflag || needUflag;\n i += consumed - 1;\n hasMagic = hasMagic || magic;\n continue;\n }\n }\n if (c === '?') {\n re += qmark;\n hasMagic = true;\n continue;\n }\n re += regExpEscape(c);\n }\n return [re, unescape(glob), !!hasMagic, uflag];\n }\n}\n_a = AST;\n//# sourceMappingURL=ast.js.map","/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link MinimatchOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character. In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n *\n * If the {@link MinimatchOptions.magicalBraces} option is used,\n * then braces (`{` and `}`) will be escaped.\n */\nexport const escape = (s, { windowsPathsNoEscape = false, magicalBraces = false, } = {}) => {\n // don't need to escape +@! because we escape the parens\n // that make those magic, and escaping ! as [!] isn't valid,\n // because [!]] is a valid glob class meaning not ']'.\n if (magicalBraces) {\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]{}]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\{}]/g, '\\\\$&');\n }\n return windowsPathsNoEscape ?\n s.replace(/[?*()[\\]]/g, '[$&]')\n : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&');\n};\n//# sourceMappingURL=escape.js.map","import { expand } from 'brace-expansion';\nimport { assertValidPattern } from './assert-valid-pattern.js';\nimport { AST } from './ast.js';\nimport { escape } from './escape.js';\nimport { unescape } from './unescape.js';\nexport const minimatch = (p, pattern, options = {}) => {\n assertValidPattern(pattern);\n // shortcut: comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n return false;\n }\n return new Minimatch(pattern, options).match(p);\n};\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?*[(]*)$/;\nconst starDotExtTest = (ext) => (f) => !f.startsWith('.') && f.endsWith(ext);\nconst starDotExtTestDot = (ext) => (f) => f.endsWith(ext);\nconst starDotExtTestNocase = (ext) => {\n ext = ext.toLowerCase();\n return (f) => !f.startsWith('.') && f.toLowerCase().endsWith(ext);\n};\nconst starDotExtTestNocaseDot = (ext) => {\n ext = ext.toLowerCase();\n return (f) => f.toLowerCase().endsWith(ext);\n};\nconst starDotStarRE = /^\\*+\\.\\*+$/;\nconst starDotStarTest = (f) => !f.startsWith('.') && f.includes('.');\nconst starDotStarTestDot = (f) => f !== '.' && f !== '..' && f.includes('.');\nconst dotStarRE = /^\\.\\*+$/;\nconst dotStarTest = (f) => f !== '.' && f !== '..' && f.startsWith('.');\nconst starRE = /^\\*+$/;\nconst starTest = (f) => f.length !== 0 && !f.startsWith('.');\nconst starTestDot = (f) => f.length !== 0 && f !== '.' && f !== '..';\nconst qmarksRE = /^\\?+([^+@!?*[(]*)?$/;\nconst qmarksTestNocase = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestNocaseDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n if (!ext)\n return noext;\n ext = ext.toLowerCase();\n return (f) => noext(f) && f.toLowerCase().endsWith(ext);\n};\nconst qmarksTestDot = ([$0, ext = '']) => {\n const noext = qmarksTestNoExtDot([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTest = ([$0, ext = '']) => {\n const noext = qmarksTestNoExt([$0]);\n return !ext ? noext : (f) => noext(f) && f.endsWith(ext);\n};\nconst qmarksTestNoExt = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && !f.startsWith('.');\n};\nconst qmarksTestNoExtDot = ([$0]) => {\n const len = $0.length;\n return (f) => f.length === len && f !== '.' && f !== '..';\n};\n/* c8 ignore start */\nconst defaultPlatform = (typeof process === 'object' && process ?\n (typeof process.env === 'object' &&\n process.env &&\n process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n process.platform\n : 'posix');\nconst path = {\n win32: { sep: '\\\\' },\n posix: { sep: '/' },\n};\n/* c8 ignore stop */\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep;\nminimatch.sep = sep;\nexport const GLOBSTAR = Symbol('globstar **');\nminimatch.GLOBSTAR = GLOBSTAR;\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]';\n// * => any number of characters\nconst star = qmark + '*?';\n// ** when dots are allowed. Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?';\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?';\nexport const filter = (pattern, options = {}) => (p) => minimatch(p, pattern, options);\nminimatch.filter = filter;\nconst ext = (a, b = {}) => Object.assign({}, a, b);\nexport const defaults = (def) => {\n if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n return minimatch;\n }\n const orig = minimatch;\n const m = (p, pattern, options = {}) => orig(p, pattern, ext(def, options));\n return Object.assign(m, {\n Minimatch: class Minimatch extends orig.Minimatch {\n constructor(pattern, options = {}) {\n super(pattern, ext(def, options));\n }\n static defaults(options) {\n return orig.defaults(ext(def, options)).Minimatch;\n }\n },\n AST: class AST extends orig.AST {\n /* c8 ignore start */\n constructor(type, parent, options = {}) {\n super(type, parent, ext(def, options));\n }\n /* c8 ignore stop */\n static fromGlob(pattern, options = {}) {\n return orig.AST.fromGlob(pattern, ext(def, options));\n }\n },\n unescape: (s, options = {}) => orig.unescape(s, ext(def, options)),\n escape: (s, options = {}) => orig.escape(s, ext(def, options)),\n filter: (pattern, options = {}) => orig.filter(pattern, ext(def, options)),\n defaults: (options) => orig.defaults(ext(def, options)),\n makeRe: (pattern, options = {}) => orig.makeRe(pattern, ext(def, options)),\n braceExpand: (pattern, options = {}) => orig.braceExpand(pattern, ext(def, options)),\n match: (list, pattern, options = {}) => orig.match(list, pattern, ext(def, options)),\n sep: orig.sep,\n GLOBSTAR: GLOBSTAR,\n });\n};\nminimatch.defaults = defaults;\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (pattern, options = {}) => {\n assertValidPattern(pattern);\n // Thanks to Yeting Li <https://github.com/yetingli> for\n // improving this regexp to avoid a ReDOS vulnerability.\n if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n // shortcut. no need to expand.\n return [pattern];\n }\n return expand(pattern, { max: options.braceExpandMax });\n};\nminimatch.braceExpand = braceExpand;\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion. Otherwise, any series\n// of * is equivalent to a single *. Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\nexport const makeRe = (pattern, options = {}) => new Minimatch(pattern, options).makeRe();\nminimatch.makeRe = makeRe;\nexport const match = (list, pattern, options = {}) => {\n const mm = new Minimatch(pattern, options);\n list = list.filter(f => mm.match(f));\n if (mm.options.nonull && !list.length) {\n list.push(pattern);\n }\n return list;\n};\nminimatch.match = match;\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/;\nconst regExpEscape = (s) => s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\nexport class Minimatch {\n options;\n set;\n pattern;\n windowsPathsNoEscape;\n nonegate;\n negate;\n comment;\n empty;\n preserveMultipleSlashes;\n partial;\n globSet;\n globParts;\n nocase;\n isWindows;\n platform;\n windowsNoMagicRoot;\n maxGlobstarRecursion;\n regexp;\n constructor(pattern, options = {}) {\n assertValidPattern(pattern);\n options = options || {};\n this.options = options;\n this.maxGlobstarRecursion = options.maxGlobstarRecursion ?? 200;\n this.pattern = pattern;\n this.platform = options.platform || defaultPlatform;\n this.isWindows = this.platform === 'win32';\n // avoid the annoying deprecation flag lol\n const awe = ('allowWindow' + 'sEscape');\n this.windowsPathsNoEscape =\n !!options.windowsPathsNoEscape || options[awe] === false;\n if (this.windowsPathsNoEscape) {\n this.pattern = this.pattern.replace(/\\\\/g, '/');\n }\n this.preserveMultipleSlashes = !!options.preserveMultipleSlashes;\n this.regexp = null;\n this.negate = false;\n this.nonegate = !!options.nonegate;\n this.comment = false;\n this.empty = false;\n this.partial = !!options.partial;\n this.nocase = !!this.options.nocase;\n this.windowsNoMagicRoot =\n options.windowsNoMagicRoot !== undefined ?\n options.windowsNoMagicRoot\n : !!(this.isWindows && this.nocase);\n this.globSet = [];\n this.globParts = [];\n this.set = [];\n // make the set of regexps etc.\n this.make();\n }\n hasMagic() {\n if (this.options.magicalBraces && this.set.length > 1) {\n return true;\n }\n for (const pattern of this.set) {\n for (const part of pattern) {\n if (typeof part !== 'string')\n return true;\n }\n }\n return false;\n }\n debug(..._) { }\n make() {\n const pattern = this.pattern;\n const options = this.options;\n // empty patterns and comments match nothing.\n if (!options.nocomment && pattern.charAt(0) === '#') {\n this.comment = true;\n return;\n }\n if (!pattern) {\n this.empty = true;\n return;\n }\n // step 1: figure out negation, etc.\n this.parseNegate();\n // step 2: expand braces\n this.globSet = [...new Set(this.braceExpand())];\n if (options.debug) {\n //oxlint-disable-next-line no-console\n this.debug = (...args) => console.error(...args);\n }\n this.debug(this.pattern, this.globSet);\n // step 3: now we have a set, so turn each one into a series of\n // path-portion matching patterns.\n // These will be regexps, except in the case of \"**\", which is\n // set to the GLOBSTAR object for globstar behavior,\n // and will not contain any / characters\n //\n // First, we preprocess to make the glob pattern sets a bit simpler\n // and deduped. There are some perf-killing patterns that can cause\n // problems with a glob walk, but we can simplify them down a bit.\n const rawGlobParts = this.globSet.map(s => this.slashSplit(s));\n this.globParts = this.preprocess(rawGlobParts);\n this.debug(this.pattern, this.globParts);\n // glob --> regexps\n let set = this.globParts.map((s, _, __) => {\n if (this.isWindows && this.windowsNoMagicRoot) {\n // check if it's a drive or unc path.\n const isUNC = s[0] === '' &&\n s[1] === '' &&\n (s[2] === '?' || !globMagic.test(s[2])) &&\n !globMagic.test(s[3]);\n const isDrive = /^[a-z]:/i.test(s[0]);\n if (isUNC) {\n return [\n ...s.slice(0, 4),\n ...s.slice(4).map(ss => this.parse(ss)),\n ];\n }\n else if (isDrive) {\n return [s[0], ...s.slice(1).map(ss => this.parse(ss))];\n }\n }\n return s.map(ss => this.parse(ss));\n });\n this.debug(this.pattern, set);\n // filter out everything that didn't compile properly.\n this.set = set.filter(s => s.indexOf(false) === -1);\n // do not treat the ? in UNC paths as magic\n if (this.isWindows) {\n for (let i = 0; i < this.set.length; i++) {\n const p = this.set[i];\n if (p[0] === '' &&\n p[1] === '' &&\n this.globParts[i][2] === '?' &&\n typeof p[3] === 'string' &&\n /^[a-z]:$/i.test(p[3])) {\n p[2] = '?';\n }\n }\n }\n this.debug(this.pattern, this.set);\n }\n // various transforms to equivalent pattern sets that are\n // faster to process in a filesystem walk. The goal is to\n // eliminate what we can, and push all ** patterns as far\n // to the right as possible, even if it increases the number\n // of patterns that we have to process.\n preprocess(globParts) {\n // if we're not in globstar mode, then turn ** into *\n if (this.options.noglobstar) {\n for (const partset of globParts) {\n for (let j = 0; j < partset.length; j++) {\n if (partset[j] === '**') {\n partset[j] = '*';\n }\n }\n }\n }\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n // aggressive optimization for the purpose of fs walking\n globParts = this.firstPhasePreProcess(globParts);\n globParts = this.secondPhasePreProcess(globParts);\n }\n else if (optimizationLevel >= 1) {\n // just basic optimizations to remove some .. parts\n globParts = this.levelOneOptimize(globParts);\n }\n else {\n // just collapse multiple ** portions into one\n globParts = this.adjascentGlobstarOptimize(globParts);\n }\n return globParts;\n }\n // just get rid of adjascent ** portions\n adjascentGlobstarOptimize(globParts) {\n return globParts.map(parts => {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let i = gs;\n while (parts[i + 1] === '**') {\n i++;\n }\n if (i !== gs) {\n parts.splice(gs, i - gs);\n }\n }\n return parts;\n });\n }\n // get rid of adjascent ** and resolve .. portions\n levelOneOptimize(globParts) {\n return globParts.map(parts => {\n parts = parts.reduce((set, part) => {\n const prev = set[set.length - 1];\n if (part === '**' && prev === '**') {\n return set;\n }\n if (part === '..') {\n if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n set.pop();\n return set;\n }\n }\n set.push(part);\n return set;\n }, []);\n return parts.length === 0 ? [''] : parts;\n });\n }\n levelTwoFileOptimize(parts) {\n if (!Array.isArray(parts)) {\n parts = this.slashSplit(parts);\n }\n let didSomething = false;\n do {\n didSomething = false;\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i];\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '')\n continue;\n if (p === '.' || p === '') {\n didSomething = true;\n parts.splice(i, 1);\n i--;\n }\n }\n if (parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')) {\n didSomething = true;\n parts.pop();\n }\n }\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd = 0;\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1];\n if (p &&\n p !== '.' &&\n p !== '..' &&\n p !== '**' &&\n !(this.isWindows && /^[a-z]:$/i.test(p))) {\n didSomething = true;\n parts.splice(dd - 1, 2);\n dd -= 2;\n }\n }\n } while (didSomething);\n return parts.length === 0 ? [''] : parts;\n }\n // First phase: single-pattern processing\n // <pre> is 1 or more portions\n // <rest> is 1 or more portions\n // <p> is any portion other than ., .., '', or **\n // <e> is . or ''\n //\n // **/.. is *brutal* for filesystem walking performance, because\n // it effectively resets the recursive walk each time it occurs,\n // and ** cannot be reduced out by a .. pattern part like a regexp\n // or most strings (other than .., ., and '') can be.\n //\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n // <pre>/<e>/<rest> -> <pre>/<rest>\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n // **/**/<rest> -> **/<rest>\n //\n // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n // this WOULD be allowed if ** did follow symlinks, or * didn't\n firstPhasePreProcess(globParts) {\n let didSomething = false;\n do {\n didSomething = false;\n // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n for (let parts of globParts) {\n let gs = -1;\n while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n let gss = gs;\n while (parts[gss + 1] === '**') {\n // <pre>/**/**/<rest> -> <pre>/**/<rest>\n gss++;\n }\n // eg, if gs is 2 and gss is 4, that means we have 3 **\n // parts, and can remove 2 of them.\n if (gss > gs) {\n parts.splice(gs + 1, gss - gs);\n }\n let next = parts[gs + 1];\n const p = parts[gs + 2];\n const p2 = parts[gs + 3];\n if (next !== '..')\n continue;\n if (!p ||\n p === '.' ||\n p === '..' ||\n !p2 ||\n p2 === '.' ||\n p2 === '..') {\n continue;\n }\n didSomething = true;\n // edit parts in place, and push the new one\n parts.splice(gs, 1);\n const other = parts.slice(0);\n other[gs] = '**';\n globParts.push(other);\n gs--;\n }\n // <pre>/<e>/<rest> -> <pre>/<rest>\n if (!this.preserveMultipleSlashes) {\n for (let i = 1; i < parts.length - 1; i++) {\n const p = parts[i];\n // don't squeeze out UNC patterns\n if (i === 1 && p === '' && parts[0] === '')\n continue;\n if (p === '.' || p === '') {\n didSomething = true;\n parts.splice(i, 1);\n i--;\n }\n }\n if (parts[0] === '.' &&\n parts.length === 2 &&\n (parts[1] === '.' || parts[1] === '')) {\n didSomething = true;\n parts.pop();\n }\n }\n // <pre>/<p>/../<rest> -> <pre>/<rest>\n let dd = 0;\n while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n const p = parts[dd - 1];\n if (p && p !== '.' && p !== '..' && p !== '**') {\n didSomething = true;\n const needDot = dd === 1 && parts[dd + 1] === '**';\n const splin = needDot ? ['.'] : [];\n parts.splice(dd - 1, 2, ...splin);\n if (parts.length === 0)\n parts.push('');\n dd -= 2;\n }\n }\n }\n } while (didSomething);\n return globParts;\n }\n // second phase: multi-pattern dedupes\n // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n //\n // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n // ^-- not valid because ** doens't follow symlinks\n secondPhasePreProcess(globParts) {\n for (let i = 0; i < globParts.length - 1; i++) {\n for (let j = i + 1; j < globParts.length; j++) {\n const matched = this.partsMatch(globParts[i], globParts[j], !this.preserveMultipleSlashes);\n if (matched) {\n globParts[i] = [];\n globParts[j] = matched;\n break;\n }\n }\n }\n return globParts.filter(gs => gs.length);\n }\n partsMatch(a, b, emptyGSMatch = false) {\n let ai = 0;\n let bi = 0;\n let result = [];\n let which = '';\n while (ai < a.length && bi < b.length) {\n if (a[ai] === b[bi]) {\n result.push(which === 'b' ? b[bi] : a[ai]);\n ai++;\n bi++;\n }\n else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n result.push(a[ai]);\n ai++;\n }\n else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n result.push(b[bi]);\n bi++;\n }\n else if (a[ai] === '*' &&\n b[bi] &&\n (this.options.dot || !b[bi].startsWith('.')) &&\n b[bi] !== '**') {\n if (which === 'b')\n return false;\n which = 'a';\n result.push(a[ai]);\n ai++;\n bi++;\n }\n else if (b[bi] === '*' &&\n a[ai] &&\n (this.options.dot || !a[ai].startsWith('.')) &&\n a[ai] !== '**') {\n if (which === 'a')\n return false;\n which = 'b';\n result.push(b[bi]);\n ai++;\n bi++;\n }\n else {\n return false;\n }\n }\n // if we fall out of the loop, it means they two are identical\n // as long as their lengths match\n return a.length === b.length && result;\n }\n parseNegate() {\n if (this.nonegate)\n return;\n const pattern = this.pattern;\n let negate = false;\n let negateOffset = 0;\n for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n negate = !negate;\n negateOffset++;\n }\n if (negateOffset)\n this.pattern = pattern.slice(negateOffset);\n this.negate = negate;\n }\n // set partial to true to test if, for example,\n // \"/a/b\" matches the start of \"/*/b/*/d\"\n // Partial means, if you run out of file before you run\n // out of pattern, then that's fine, as long as all\n // the parts match.\n matchOne(file, pattern, partial = false) {\n let fileStartIndex = 0;\n let patternStartIndex = 0;\n // UNC paths like //?/X:/... can match X:/... and vice versa\n // Drive letters in absolute drive or unc paths are always compared\n // case-insensitively.\n if (this.isWindows) {\n const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0]);\n const fileUNC = !fileDrive &&\n file[0] === '' &&\n file[1] === '' &&\n file[2] === '?' &&\n /^[a-z]:$/i.test(file[3]);\n const patternDrive = typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0]);\n const patternUNC = !patternDrive &&\n pattern[0] === '' &&\n pattern[1] === '' &&\n pattern[2] === '?' &&\n typeof pattern[3] === 'string' &&\n /^[a-z]:$/i.test(pattern[3]);\n const fdi = fileUNC ? 3\n : fileDrive ? 0\n : undefined;\n const pdi = patternUNC ? 3\n : patternDrive ? 0\n : undefined;\n if (typeof fdi === 'number' && typeof pdi === 'number') {\n const [fd, pd] = [\n file[fdi],\n pattern[pdi],\n ];\n // start matching at the drive letter index of each\n if (fd.toLowerCase() === pd.toLowerCase()) {\n pattern[pdi] = fd;\n patternStartIndex = pdi;\n fileStartIndex = fdi;\n }\n }\n }\n // resolve and reduce . and .. portions in the file as well.\n // don't need to do the second phase, because it's only one string[]\n const { optimizationLevel = 1 } = this.options;\n if (optimizationLevel >= 2) {\n file = this.levelTwoFileOptimize(file);\n }\n if (pattern.includes(GLOBSTAR)) {\n return this.#matchGlobstar(file, pattern, partial, fileStartIndex, patternStartIndex);\n }\n return this.#matchOne(file, pattern, partial, fileStartIndex, patternStartIndex);\n }\n #matchGlobstar(file, pattern, partial, fileIndex, patternIndex) {\n // split the pattern into head, tail, and middle of ** delimited parts\n const firstgs = pattern.indexOf(GLOBSTAR, patternIndex);\n const lastgs = pattern.lastIndexOf(GLOBSTAR);\n // split the pattern up into globstar-delimited sections\n // the tail has to be at the end, and the others just have\n // to be found in order from the head.\n const [head, body, tail] = partial ?\n [\n pattern.slice(patternIndex, firstgs),\n pattern.slice(firstgs + 1),\n [],\n ]\n : [\n pattern.slice(patternIndex, firstgs),\n pattern.slice(firstgs + 1, lastgs),\n pattern.slice(lastgs + 1),\n ];\n // check the head, from the current file/pattern index.\n if (head.length) {\n const fileHead = file.slice(fileIndex, fileIndex + head.length);\n if (!this.#matchOne(fileHead, head, partial, 0, 0)) {\n return false;\n }\n fileIndex += head.length;\n patternIndex += head.length;\n }\n // now we know the head matches!\n // if the last portion is not empty, it MUST match the end\n // check the tail\n let fileTailMatch = 0;\n if (tail.length) {\n // if head + tail > file, then we cannot possibly match\n if (tail.length + fileIndex > file.length)\n return false;\n // try to match the tail\n let tailStart = file.length - tail.length;\n if (this.#matchOne(file, tail, partial, tailStart, 0)) {\n fileTailMatch = tail.length;\n }\n else {\n // affordance for stuff like a/**/* matching a/b/\n // if the last file portion is '', and there's more to the pattern\n // then try without the '' bit.\n if (file[file.length - 1] !== '' ||\n fileIndex + tail.length === file.length) {\n return false;\n }\n tailStart--;\n if (!this.#matchOne(file, tail, partial, tailStart, 0)) {\n return false;\n }\n fileTailMatch = tail.length + 1;\n }\n }\n // now we know the tail matches!\n // the middle is zero or more portions wrapped in **, possibly\n // containing more ** sections.\n // so a/**/b/**/c/**/d has become **/b/**/c/**\n // if it's empty, it means a/**/b, just verify we have no bad dots\n // if there's no tail, so it ends on /**, then we must have *something*\n // after the head, or it's not a matc\n if (!body.length) {\n let sawSome = !!fileTailMatch;\n for (let i = fileIndex; i < file.length - fileTailMatch; i++) {\n const f = String(file[i]);\n sawSome = true;\n if (f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n }\n // in partial mode, we just need to get past all file parts\n return partial || sawSome;\n }\n // now we know that there's one or more body sections, which can\n // be matched anywhere from the 0 index (because the head was pruned)\n // through to the length-fileTailMatch index.\n // split the body up into sections, and note the minimum index it can\n // be found at (start with the length of all previous segments)\n // [section, before, after]\n const bodySegments = [[[], 0]];\n let currentBody = bodySegments[0];\n let nonGsParts = 0;\n const nonGsPartsSums = [0];\n for (const b of body) {\n if (b === GLOBSTAR) {\n nonGsPartsSums.push(nonGsParts);\n currentBody = [[], 0];\n bodySegments.push(currentBody);\n }\n else {\n currentBody[0].push(b);\n nonGsParts++;\n }\n }\n let i = bodySegments.length - 1;\n const fileLength = file.length - fileTailMatch;\n for (const b of bodySegments) {\n b[1] = fileLength - (nonGsPartsSums[i--] + b[0].length);\n }\n return !!this.#matchGlobStarBodySections(file, bodySegments, fileIndex, 0, partial, 0, !!fileTailMatch);\n }\n // return false for \"nope, not matching\"\n // return null for \"not matching, cannot keep trying\"\n #matchGlobStarBodySections(file, \n // pattern section, last possible position for it\n bodySegments, fileIndex, bodyIndex, partial, globStarDepth, sawTail) {\n // take the first body segment, and walk from fileIndex to its \"after\"\n // value at the end\n // If it doesn't match at that position, we increment, until we hit\n // that final possible position, and give up.\n // If it does match, then advance and try to rest.\n // If any of them fail we keep walking forward.\n // this is still a bit recursively painful, but it's more constrained\n // than previous implementations, because we never test something that\n // can't possibly be a valid matching condition.\n const bs = bodySegments[bodyIndex];\n if (!bs) {\n // just make sure that there's no bad dots\n for (let i = fileIndex; i < file.length; i++) {\n sawTail = true;\n const f = file[i];\n if (f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n }\n return sawTail;\n }\n // have a non-globstar body section to test\n const [body, after] = bs;\n while (fileIndex <= after) {\n const m = this.#matchOne(file.slice(0, fileIndex + body.length), body, partial, fileIndex, 0);\n // if limit exceeded, no match. intentional false negative,\n // acceptable break in correctness for security.\n if (m && globStarDepth < this.maxGlobstarRecursion) {\n // match! see if the rest match. if so, we're done!\n const sub = this.#matchGlobStarBodySections(file, bodySegments, fileIndex + body.length, bodyIndex + 1, partial, globStarDepth + 1, sawTail);\n if (sub !== false) {\n return sub;\n }\n }\n const f = file[fileIndex];\n if (f === '.' ||\n f === '..' ||\n (!this.options.dot && f.startsWith('.'))) {\n return false;\n }\n fileIndex++;\n }\n // walked off. no point continuing\n return partial || null;\n }\n #matchOne(file, pattern, partial, fileIndex, patternIndex) {\n let fi;\n let pi;\n let pl;\n let fl;\n for (fi = fileIndex,\n pi = patternIndex,\n fl = file.length,\n pl = pattern.length; fi < fl && pi < pl; fi++, pi++) {\n this.debug('matchOne loop');\n let p = pattern[pi];\n let f = file[fi];\n this.debug(pattern, p, f);\n // should be impossible.\n // some invalid regexp stuff in the set.\n /* c8 ignore start */\n if (p === false || p === GLOBSTAR) {\n return false;\n }\n /* c8 ignore stop */\n // something other than **\n // non-magic patterns just have to match exactly\n // patterns with magic have been turned into regexps.\n let hit;\n if (typeof p === 'string') {\n hit = f === p;\n this.debug('string match', p, f, hit);\n }\n else {\n hit = p.test(f);\n this.debug('pattern match', p, f, hit);\n }\n if (!hit)\n return false;\n }\n // Note: ending in / means that we'll get a final \"\"\n // at the end of the pattern. This can only match a\n // corresponding \"\" at the end of the file.\n // If the file ends in /, then it can only match a\n // a pattern that ends in /, unless the pattern just\n // doesn't have any more for it. But, a/b/ should *not*\n // match \"a/b/*\", even though \"\" matches against the\n // [^/]*? pattern, except in partial mode, where it might\n // simply not be reached yet.\n // However, a/b/ should still satisfy a/*\n // now either we fell off the end of the pattern, or we're done.\n if (fi === fl && pi === pl) {\n // ran out of pattern and filename at the same time.\n // an exact hit!\n return true;\n }\n else if (fi === fl) {\n // ran out of file, but still had pattern left.\n // this is ok if we're doing the match as part of\n // a glob fs traversal.\n return partial;\n }\n else if (pi === pl) {\n // ran out of pattern, still have file left.\n // this is only acceptable if we're on the very last\n // empty segment of a file with a trailing slash.\n // a/* should match a/b/\n return fi === fl - 1 && file[fi] === '';\n /* c8 ignore start */\n }\n else {\n // should be unreachable.\n throw new Error('wtf?');\n }\n /* c8 ignore stop */\n }\n braceExpand() {\n return braceExpand(this.pattern, this.options);\n }\n parse(pattern) {\n assertValidPattern(pattern);\n const options = this.options;\n // shortcuts\n if (pattern === '**')\n return GLOBSTAR;\n if (pattern === '')\n return '';\n // far and away, the most common glob pattern parts are\n // *, *.*, and *.<ext> Add a fast check method for those.\n let m;\n let fastTest = null;\n if ((m = pattern.match(starRE))) {\n fastTest = options.dot ? starTestDot : starTest;\n }\n else if ((m = pattern.match(starDotExtRE))) {\n fastTest = (options.nocase ?\n options.dot ?\n starDotExtTestNocaseDot\n : starDotExtTestNocase\n : options.dot ? starDotExtTestDot\n : starDotExtTest)(m[1]);\n }\n else if ((m = pattern.match(qmarksRE))) {\n fastTest = (options.nocase ?\n options.dot ?\n qmarksTestNocaseDot\n : qmarksTestNocase\n : options.dot ? qmarksTestDot\n : qmarksTest)(m);\n }\n else if ((m = pattern.match(starDotStarRE))) {\n fastTest = options.dot ? starDotStarTestDot : starDotStarTest;\n }\n else if ((m = pattern.match(dotStarRE))) {\n fastTest = dotStarTest;\n }\n const re = AST.fromGlob(pattern, this.options).toMMPattern();\n if (fastTest && typeof re === 'object') {\n // Avoids overriding in frozen environments\n Reflect.defineProperty(re, 'test', { value: fastTest });\n }\n return re;\n }\n makeRe() {\n if (this.regexp || this.regexp === false)\n return this.regexp;\n // at this point, this.set is a 2d array of partial\n // pattern strings, or \"**\".\n //\n // It's better to use .match(). This function shouldn't\n // be used, really, but it's pretty convenient sometimes,\n // when you just want to work with a regex.\n const set = this.set;\n if (!set.length) {\n this.regexp = false;\n return this.regexp;\n }\n const options = this.options;\n const twoStar = options.noglobstar ? star\n : options.dot ? twoStarDot\n : twoStarNoDot;\n const flags = new Set(options.nocase ? ['i'] : []);\n // regexpify non-globstar patterns\n // if ** is only item, then we just do one twoStar\n // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n // if ** is last, append (\\/twoStar|) to previous\n // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n // then filter out GLOBSTAR symbols\n let re = set\n .map(pattern => {\n const pp = pattern.map(p => {\n if (p instanceof RegExp) {\n for (const f of p.flags.split(''))\n flags.add(f);\n }\n return (typeof p === 'string' ? regExpEscape(p)\n : p === GLOBSTAR ? GLOBSTAR\n : p._src);\n });\n pp.forEach((p, i) => {\n const next = pp[i + 1];\n const prev = pp[i - 1];\n if (p !== GLOBSTAR || prev === GLOBSTAR) {\n return;\n }\n if (prev === undefined) {\n if (next !== undefined && next !== GLOBSTAR) {\n pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next;\n }\n else {\n pp[i] = twoStar;\n }\n }\n else if (next === undefined) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + ')?';\n }\n else if (next !== GLOBSTAR) {\n pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next;\n pp[i + 1] = GLOBSTAR;\n }\n });\n const filtered = pp.filter(p => p !== GLOBSTAR);\n // For partial matches, we need to make the pattern match\n // any prefix of the full path. We do this by generating\n // alternative patterns that match progressively longer prefixes.\n if (this.partial && filtered.length >= 1) {\n const prefixes = [];\n for (let i = 1; i <= filtered.length; i++) {\n prefixes.push(filtered.slice(0, i).join('/'));\n }\n return '(?:' + prefixes.join('|') + ')';\n }\n return filtered.join('/');\n })\n .join('|');\n // need to wrap in parens if we had more than one thing with |,\n // otherwise only the first will be anchored to ^ and the last to $\n const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', ''];\n // must match entire pattern\n // ending in a * or ** will make it less strict.\n re = '^' + open + re + close + '$';\n // In partial mode, '/' should always match as it's a valid prefix for any pattern\n if (this.partial) {\n re = '^(?:\\\\/|' + open + re.slice(1, -1) + close + ')$';\n }\n // can match anything, as long as it's not this.\n if (this.negate)\n re = '^(?!' + re + ').+$';\n try {\n this.regexp = new RegExp(re, [...flags].join(''));\n /* c8 ignore start */\n }\n catch {\n // should be impossible\n this.regexp = false;\n }\n /* c8 ignore stop */\n return this.regexp;\n }\n slashSplit(p) {\n // if p starts with // on windows, we preserve that\n // so that UNC paths aren't broken. Otherwise, any number of\n // / characters are coalesced into one, unless\n // preserveMultipleSlashes is set to true.\n if (this.preserveMultipleSlashes) {\n return p.split('/');\n }\n else if (this.isWindows && /^\\/\\/[^/]+/.test(p)) {\n // add an extra '' for the one we lose\n return ['', ...p.split(/\\/+/)];\n }\n else {\n return p.split(/\\/+/);\n }\n }\n match(f, partial = this.partial) {\n this.debug('match', f, this.pattern);\n // short-circuit in the case of busted things.\n // comments, etc.\n if (this.comment) {\n return false;\n }\n if (this.empty) {\n return f === '';\n }\n if (f === '/' && partial) {\n return true;\n }\n const options = this.options;\n // windows: need to use /, not \\\n if (this.isWindows) {\n f = f.split('\\\\').join('/');\n }\n // treat the test path as a set of pathparts.\n const ff = this.slashSplit(f);\n this.debug(this.pattern, 'split', ff);\n // just ONE of the pattern sets in this.set needs to match\n // in order for it to be valid. If negating, then just one\n // match means that we have failed.\n // Either way, return on the first hit.\n const set = this.set;\n this.debug(this.pattern, 'set', set);\n // Find the basename of the path by looking for the last non-empty segment\n let filename = ff[ff.length - 1];\n if (!filename) {\n for (let i = ff.length - 2; !filename && i >= 0; i--) {\n filename = ff[i];\n }\n }\n for (const pattern of set) {\n let file = ff;\n if (options.matchBase && pattern.length === 1) {\n file = [filename];\n }\n const hit = this.matchOne(file, pattern, partial);\n if (hit) {\n if (options.flipNegate) {\n return true;\n }\n return !this.negate;\n }\n }\n // didn't get any hits. this is success if it's a negative\n // pattern, failure otherwise.\n if (options.flipNegate) {\n return false;\n }\n return this.negate;\n }\n static defaults(def) {\n return minimatch.defaults(def).Minimatch;\n }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js';\nexport { escape } from './escape.js';\nexport { unescape } from './unescape.js';\n/* c8 ignore stop */\nminimatch.AST = AST;\nminimatch.Minimatch = Minimatch;\nminimatch.escape = escape;\nminimatch.unescape = unescape;\n//# sourceMappingURL=index.js.map","import { type GlobOptions, glob, globSync } from \"glob\";\nimport { minimatch } from \"minimatch\";\n\nexport namespace Glob {\n\texport interface Options {\n\t\tcwd?: string;\n\t\tabsolute?: boolean;\n\t\tinclude?: \"file\" | \"all\";\n\t\tdot?: boolean;\n\t\tsymlink?: boolean;\n\t}\n\n\tfunction toGlobOptions(options: Options): GlobOptions {\n\t\treturn {\n\t\t\tcwd: options.cwd,\n\t\t\tabsolute: options.absolute,\n\t\t\tdot: options.dot,\n\t\t\tfollow: options.symlink ?? false,\n\t\t\tnodir: options.include !== \"all\",\n\t\t};\n\t}\n\n\texport async function scan(pattern: string, options: Options = {}): Promise<string[]> {\n\t\tconst results = await glob(pattern, toGlobOptions(options));\n\t\t// If results are Path objects, they stringify automatically,\n\t\t// but a simple cast to string[] usually suffices for the compiler here.\n\t\treturn results as string[];\n\t}\n\n\texport function scanSync(pattern: string, options: Options = {}): string[] {\n\t\treturn globSync(pattern, toGlobOptions(options)) as string[];\n\t}\n\n\texport function match(pattern: string, filepath: string): boolean {\n\t\treturn minimatch(filepath, pattern, { dot: true });\n\t}\n}\n","import Type, { type Static } from \"typebox\";\n\nexport namespace Provider {\n\texport const KnownProviderEnum = {\n\t\tanthropic: \"anthropic\",\n\t\topenai: \"openai\",\n\t\tgithubCopilot: \"github-copilot\",\n\t\topenrouter: \"openrouter\",\n\t\tgroq: \"groq\",\n\t\txai: \"xai\",\n\t\tcerebras: \"cerebras\",\n\t\tzai: \"zai\",\n\t\topencode: \"opencode\",\n\t} as const;\n\texport const KnownProviderSchema = Type.Union([\n\t\tType.Literal(KnownProviderEnum.anthropic),\n\t\tType.Literal(KnownProviderEnum.openai),\n\t\tType.Literal(KnownProviderEnum.githubCopilot),\n\t\tType.Literal(KnownProviderEnum.openrouter),\n\t\tType.Literal(KnownProviderEnum.groq),\n\t\tType.Literal(KnownProviderEnum.xai),\n\t\tType.Literal(KnownProviderEnum.cerebras),\n\t\tType.Literal(KnownProviderEnum.zai),\n\t\tType.Literal(KnownProviderEnum.opencode),\n\t]);\n\texport type KnownProvider = Static<typeof KnownProviderSchema>;\n\n\texport const Info = Type.Object({\n\t\tid: KnownProviderSchema,\n\t\tname: Type.String(),\n\t\tenv: Type.Array(Type.String()),\n\t\tkey: Type.Optional(Type.String()),\n\t\toptions: Type.Optional(Type.Record(Type.String(), Type.Any())),\n\t});\n\texport type Info = Static<typeof Info>;\n\n\texport const ReasoningEffortMapSchema = Type.Object({\n\t\tminimal: Type.Optional(Type.String()),\n\t\tlow: Type.Optional(Type.String()),\n\t\tmedium: Type.Optional(Type.String()),\n\t\thigh: Type.Optional(Type.String()),\n\t\txhigh: Type.Optional(Type.String()),\n\t});\n\texport type ReasoningEffortMap = Static<typeof ReasoningEffortMapSchema>;\n\texport type StrictReasoningEffortMap = {\n\t\t[K in keyof ReasoningEffortMap]-?: NonNullable<ReasoningEffortMap[K]>;\n\t};\n\n\texport const OpenRouterRoutingSchema = Type.Object({\n\t\tonly: Type.Optional(Type.Array(Type.String())),\n\t\torder: Type.Optional(Type.Array(Type.String())),\n\t});\n\texport type OpenRouterRouting = Static<typeof OpenRouterRoutingSchema>;\n\n\texport const VercelGatewayRoutingSchema = Type.Object({\n\t\tonly: Type.Optional(Type.Array(Type.String())),\n\t\torder: Type.Optional(Type.Array(Type.String())),\n\t});\n\texport type VercelGatewayRouting = Static<typeof VercelGatewayRoutingSchema>;\n}\n","import { Filesystem, lazy } from \"@codeworksh/utils\";\n\nexport namespace ModelCatalog {\n\texport interface ModelsDevModel {\n\t\tid: string;\n\t\tname: string;\n\t\tfamily: string;\n\t\tattachment: boolean;\n\t\treasoning?: boolean;\n\t\ttool_call?: boolean;\n\t\ttemperature?: boolean;\n\t\tknowledge?: string | boolean;\n\t\trelease_date: string;\n\t\tlast_updated: string;\n\t\tmodalities: {\n\t\t\tinput?: string[];\n\t\t\toutput: string[];\n\t\t};\n\t\topen_weights: boolean;\n\t\tbaseUrl?: string;\n\t\theaders?: Record<string, string>;\n\t\tcost?: {\n\t\t\tinput?: number;\n\t\t\toutput?: number;\n\t\t\tcache_read?: number;\n\t\t\tcache_write?: number;\n\t\t};\n\t\tlimit?: {\n\t\t\tcontext?: number;\n\t\t\toutput?: number;\n\t\t};\n\t}\n\texport interface ModelsDevProvider {\n\t\tid: string;\n\t\tenv: string[];\n\t\tnpm?: string;\n\t\tapi: string;\n\t\tbaseUrl?: string;\n\t\tname: string;\n\t\tdoc?: string;\n\t\tkey?: string;\n\t\theaders?: Record<string, string>;\n\t\tmodels: Record<string, ModelsDevModel>;\n\t}\n\t// Doesn't represent the full spec from models.dev.\n\t// Represents the provider entries on a best-effort basis.\n\texport type ModelsDevCatalog = Record<string, ModelsDevProvider>;\n\ttype LazyModelsDevCatalog = ReturnType<typeof lazy<Promise<ModelsDevCatalog>>>;\n\n\tfunction modelsDevURL(): string {\n\t\treturn process.env.OPENCODE_MODELS_URL || \"https://models.dev\";\n\t}\n\n\tfunction modelsDevPath(): string | undefined {\n\t\treturn process.env.CODEWORK_AIKIT_MODELS_PATH;\n\t}\n\n\texport const modelsDevData: LazyModelsDevCatalog = lazy(async () => {\n\t\tconst path = modelsDevPath();\n\t\tif (path) {\n\t\t\tconst result = await Filesystem.readJson<ModelsDevCatalog>(path).catch(() => undefined);\n\t\t\tif (result) return result;\n\t\t}\n\n\t\tconst json = await fetch(`${modelsDevURL()}/api.json`).then((x) => x.text());\n\t\treturn JSON.parse(json) as ModelsDevCatalog;\n\t});\n\n\texport async function get(): Promise<ModelsDevCatalog> {\n\t\treturn modelsDevData();\n\t}\n\n\texport async function refresh(): Promise<void> {\n\t\tconst result = await fetch(`${modelsDevURL()}/api.json`, {\n\t\t\tsignal: AbortSignal.timeout(10 * 1000),\n\t\t}).catch(() => undefined);\n\t\tif (!result?.ok) return;\n\n\t\tconst json = await result.text();\n\t\tconst path = modelsDevPath();\n\t\tif (path) {\n\t\t\tawait Filesystem.write(path, json);\n\t\t}\n\t\tmodelsDevData.reset();\n\t}\n\n\tvoid ModelCatalog.refresh();\n\tsetInterval(\n\t\tasync () => {\n\t\t\tawait ModelCatalog.refresh();\n\t\t},\n\t\t60 * 1000 * 60,\n\t).unref();\n}\n","import { Provider } from \"../provider/provider\";\nimport type { ModelCatalog } from \"./catalog\";\nimport { Model } from \"./model\";\n\nfunction defaultBaseUrl(providerId: Provider.KnownProvider): string | undefined {\n\tswitch (providerId) {\n\t\tcase Provider.KnownProviderEnum.openai:\n\t\t\treturn \"https://api.openai.com/v1\";\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nfunction resolveDefaultProtocol(providerId: Provider.KnownProvider): Model.KnownProtocol {\n\tswitch (providerId) {\n\t\tcase Provider.KnownProviderEnum.anthropic:\n\t\t\treturn Model.KnownProtocolEnum.anthropicMessages;\n\t\tcase Provider.KnownProviderEnum.openai:\n\t\t\treturn Model.KnownProtocolEnum.openaiResponses;\n\t\tdefault:\n\t\t\treturn Model.KnownProtocolEnum.openaiCompletions;\n\t}\n}\n\nexport function applyModification(\n\tproviderId: Provider.KnownProvider,\n\tprovider: ModelCatalog.ModelsDevProvider,\n\tmodel: ModelCatalog.ModelsDevModel,\n): Model.Info {\n\tconst baseUrl = model.baseUrl ?? provider.baseUrl ?? provider.api ?? defaultBaseUrl(providerId);\n\tconst normalized: Model.Info = {\n\t\tid: model.id,\n\t\tname: model.name,\n\t\tprovider: Model.toProviderInfo(providerId, provider),\n\t\tbaseUrl,\n\t\treasoning: Boolean(model.reasoning),\n\t\tinput: Model.normalizeInput(model.modalities.input),\n\t\tcost: {\n\t\t\tinput: model.cost?.input ?? 0,\n\t\t\toutput: model.cost?.output ?? 0,\n\t\t\tcacheRead: model.cost?.cache_read ?? 0,\n\t\t\tcacheWrite: model.cost?.cache_write ?? 0,\n\t\t},\n\t\tcontextWindow: model.limit?.context ?? 0,\n\t\tmaxTokens: model.limit?.output ?? 0,\n\t\theaders: model.headers ?? provider.headers,\n\t\tprotocol: resolveDefaultProtocol(providerId),\n\t};\n\t//\n\t// add support for multiple known protocols\n\tif (providerId === Provider.KnownProviderEnum.openai) {\n\t\tnormalized.supportedProtocols = {\n\t\t\topenaiCompletions: Model.KnownProtocolEnum.openaiCompletions,\n\t\t};\n\t\treturn normalized;\n\t} else {\n\t\treturn normalized;\n\t}\n}\n","import { lazy } from \"@codeworksh/utils\";\nimport Type, { type Static } from \"typebox\";\nimport { keys, mapValues, pick, pipe } from \"remeda\";\nimport { Provider } from \"../provider/provider\";\nimport { ModelCatalog } from \"./catalog\";\nimport { applyModification } from \"./transform\";\n\nexport namespace Model {\n\texport const KnownProtocolEnum = {\n\t\tanthropicMessages: \"anthropic-messages\",\n\t\topenaiCompletions: \"openai-completions\",\n\t\topenaiResponses: \"openai-responses\",\n\t} as const;\n\texport const KnownProtocolSchema = Type.Union([\n\t\tType.Literal(KnownProtocolEnum.anthropicMessages),\n\t\tType.Literal(KnownProtocolEnum.openaiCompletions),\n\t\tType.Literal(KnownProtocolEnum.openaiResponses),\n\t]);\n\texport type KnownProtocol = Static<typeof KnownProtocolSchema>;\n\n\tconst InputSchema = Type.Array(Type.Union([Type.Literal(\"text\"), Type.Literal(\"image\")]));\n\tconst CostSchema = Type.Object({\n\t\tinput: Type.Number(),\n\t\toutput: Type.Number(),\n\t\tcacheRead: Type.Number(),\n\t\tcacheWrite: Type.Number(),\n\t});\n\tconst HeadersSchema = Type.Optional(Type.Record(Type.String(), Type.String()));\n\n\texport const SupportedProtocolsSchema = Type.Object({\n\t\tanthropicMessages: Type.Optional(Type.Literal(KnownProtocolEnum.anthropicMessages)),\n\t\topenaiCompletions: Type.Optional(Type.Literal(KnownProtocolEnum.openaiCompletions)),\n\t\topenaiResponses: Type.Optional(Type.Literal(KnownProtocolEnum.openaiResponses)),\n\t});\n\t//\n\t// reprsents common base schema for a model\n\texport const BaseSchema = Type.Object({\n\t\tid: Type.String(),\n\t\tname: Type.String(),\n\t\tprovider: Provider.Info,\n\t\tbaseUrl: Type.String(),\n\t\treasoning: Type.Boolean(),\n\t\tinput: InputSchema,\n\t\tcost: CostSchema,\n\t\tcontextWindow: Type.Number(),\n\t\tmaxTokens: Type.Number(),\n\t\theaders: HeadersSchema,\n\t\tsupportedProtocols: Type.Optional(Type.Partial(SupportedProtocolsSchema)), // optionally supported protocols\n\t});\n\n\t/**\n\t * Compatibility settings for OpenAI-compatible completions APIs.\n\t * Use this to override URL-based auto-detection for custom providers.\n\t */\n\texport const OpenAICompletionsCompatSchema = Type.Object({\n\t\tsupportsStore: Type.Optional(Type.Boolean()),\n\t\tsupportsDeveloperRole: Type.Optional(Type.Boolean()),\n\t\tsupportsReasoningEffort: Type.Optional(Type.Boolean()),\n\t\treasoningEffortMap: Type.Optional(Provider.ReasoningEffortMapSchema),\n\t\tsupportsUsageInStreaming: Type.Optional(Type.Boolean()),\n\t\tmaxTokensField: Type.Optional(Type.Union([Type.Literal(\"max_completion_tokens\"), Type.Literal(\"max_tokens\")])),\n\t\trequiresToolResultName: Type.Optional(Type.Boolean()),\n\t\trequiresAssistantAfterToolResult: Type.Optional(Type.Boolean()),\n\t\trequiresThinkingAsText: Type.Optional(Type.Boolean()),\n\t\tthinkingFormat: Type.Optional(\n\t\t\tType.Union([\n\t\t\t\tType.Literal(\"openai\"),\n\t\t\t\tType.Literal(\"openrouter\"),\n\t\t\t\tType.Literal(\"zai\"),\n\t\t\t\tType.Literal(\"qwen\"),\n\t\t\t\tType.Literal(\"qwen-chat-template\"),\n\t\t\t]),\n\t\t),\n\t\topenRouterRouting: Type.Optional(Provider.OpenRouterRoutingSchema),\n\t\tvercelGatewayRouting: Type.Optional(Provider.VercelGatewayRoutingSchema),\n\t\tzaiToolStream: Type.Optional(Type.Boolean()),\n\t\tsupportsStrictMode: Type.Optional(Type.Boolean()),\n\t});\n\texport type OpenAICompletionsCompat = Static<typeof OpenAICompletionsCompatSchema>;\n\n\t/** Compatibility settings for OpenAI Responses APIs. */\n\texport const OpenAIResponsesCompatSchema = Type.Object({});\n\texport type OpenAIResponsesCompat = Static<typeof OpenAIResponsesCompatSchema>;\n\n\texport const OpenAICompatSchema = Type.Union([OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema]);\n\n\texport const AnthropicSchema = Type.Evaluate(\n\t\tType.Intersect([\n\t\t\tBaseSchema,\n\t\t\tType.Object({\n\t\t\t\tprotocol: Type.Literal(KnownProtocolEnum.anthropicMessages),\n\t\t\t}),\n\t\t]),\n\t);\n\n\texport const OpenAICompletionsSchema = Type.Evaluate(\n\t\tType.Intersect([\n\t\t\tBaseSchema,\n\t\t\tType.Object({\n\t\t\t\tprotocol: Type.Literal(KnownProtocolEnum.openaiCompletions),\n\t\t\t\tcompat: Type.Optional(OpenAICompletionsCompatSchema),\n\t\t\t}),\n\t\t]),\n\t);\n\texport const OpenAIResponsesSchema = Type.Evaluate(\n\t\tType.Intersect([\n\t\t\tBaseSchema,\n\t\t\tType.Object({\n\t\t\t\tprotocol: Type.Literal(KnownProtocolEnum.openaiResponses),\n\t\t\t\tcompat: Type.Optional(OpenAIResponsesCompatSchema),\n\t\t\t}),\n\t\t]),\n\t);\n\n\texport const Info = Type.Union([AnthropicSchema, OpenAICompletionsSchema, OpenAIResponsesSchema]);\n\texport type Info = Static<typeof Info>;\n\texport type TModel<TProtocol extends KnownProtocol> = Extract<Info, { protocol: TProtocol }>;\n\tconst BUILTINS = keys(Provider.KnownProviderEnum) as Provider.KnownProvider[];\n\n\texport function calculateCost(\n\t\tmodel: Info,\n\t\tusage: {\n\t\t\tinput: number;\n\t\t\toutput: number;\n\t\t\tcacheRead: number;\n\t\t\tcacheWrite: number;\n\t\t\tcost: {\n\t\t\t\tinput: number;\n\t\t\t\toutput: number;\n\t\t\t\tcacheRead: number;\n\t\t\t\tcacheWrite: number;\n\t\t\t\ttotal: number;\n\t\t\t};\n\t\t},\n\t): void {\n\t\tusage.cost.input = (usage.input / 1_000_000) * model.cost.input;\n\t\tusage.cost.output = (usage.output / 1_000_000) * model.cost.output;\n\t\tusage.cost.cacheRead = (usage.cacheRead / 1_000_000) * model.cost.cacheRead;\n\t\tusage.cost.cacheWrite = (usage.cacheWrite / 1_000_000) * model.cost.cacheWrite;\n\t\tusage.cost.total = usage.cost.input + usage.cost.output + usage.cost.cacheRead + usage.cost.cacheWrite;\n\t}\n\n\texport type BuiltInModels = Partial<Record<Provider.KnownProvider, Record<string, Info>>>;\n\n\texport function normalizeInput(input?: string[]): Array<\"text\" | \"image\"> {\n\t\tconst normalized = new Set<\"text\" | \"image\">();\n\t\tfor (const modality of input ?? [\"text\"]) {\n\t\t\tif (modality === \"text\" || modality === \"image\") {\n\t\t\t\tnormalized.add(modality);\n\t\t\t}\n\t\t}\n\t\tif (normalized.size === 0) normalized.add(\"text\");\n\t\treturn [...normalized];\n\t}\n\n\texport function toProviderInfo(\n\t\tproviderId: Provider.KnownProvider,\n\t\tprovider: ModelCatalog.ModelsDevProvider,\n\t): Provider.Info {\n\t\treturn {\n\t\t\tid: providerId,\n\t\t\tname: provider.name,\n\t\t\tenv: provider.env,\n\t\t\tkey: provider.key,\n\t\t\toptions: provider.headers,\n\t\t};\n\t}\n\n\tfunction toModelValue(\n\t\tproviderId: Provider.KnownProvider,\n\t\tprovider: ModelCatalog.ModelsDevProvider,\n\t\tmodel: ModelCatalog.ModelsDevModel,\n\t): Info {\n\t\treturn applyModification(providerId, provider, model);\n\t}\n\n\texport async function getBuiltInModels(): Promise<BuiltInModels> {\n\t\tconst catalog = await ModelCatalog.get();\n\t\treturn pipe(\n\t\t\tcatalog,\n\t\t\tpick(BUILTINS),\n\t\t\tmapValues((provider, providerId) =>\n\t\t\t\tmapValues(provider.models, (model) => toModelValue(providerId as Provider.KnownProvider, provider, model)),\n\t\t\t),\n\t\t) as BuiltInModels;\n\t}\n\n\texport const registry = lazy(async () => {\n\t\tconst registry: Map<Provider.KnownProvider, Map<string, Info>> = new Map();\n\t\tconst models = await getBuiltInModels();\n\t\tfor (const [provider, value] of Object.entries(models) as Array<[Provider.KnownProvider, Record<string, Info>]>) {\n\t\t\tconst providerModels = new Map<string, Info>();\n\t\t\tfor (const [id, model] of Object.entries(value)) {\n\t\t\t\tproviderModels.set(id, model);\n\t\t\t}\n\t\t\tregistry.set(provider, providerModels);\n\t\t}\n\t\treturn registry;\n\t});\n\n\texport async function getModel<TProvider extends Provider.KnownProvider, TModel extends Info[\"id\"]>(\n\t\tprovider: TProvider,\n\t\tmodel: TModel,\n\t\toverrides?: Partial<Info>,\n\t) {\n\t\tconst data = await registry();\n\t\tconst providerModels = data.get(provider);\n\t\tconst result = providerModels?.get(model);\n\t\tif (result && overrides) {\n\t\t\treturn { ...result, ...overrides };\n\t\t}\n\t\treturn result;\n\t}\n\n\texport async function getProviders(): Promise<Provider.KnownProvider[]> {\n\t\tconst data = await registry();\n\t\treturn Array.from(data.keys());\n\t}\n\n\texport async function getModels<TProvider extends Provider.KnownProvider>(provider: TProvider): Promise<Info[]> {\n\t\tconst data = await registry();\n\t\tconst models = data.get(provider);\n\t\treturn models ? Array.from(models.values()) : [];\n\t}\n\n\tfunction isGpt5OrLater(modelID: string): boolean {\n\t\tconst match = /^gpt-(\\d+)/.exec(modelID);\n\t\tif (!match) {\n\t\t\treturn false;\n\t\t}\n\t\treturn Number(match[1]) >= 5;\n\t}\n\n\t/**\n\t * Check if a model supports xhigh thinking level.\n\t * Currently only certain OpenAI Codex models support this.\n\t */\n\texport function supportsXhigh(model: Info): boolean {\n\t\treturn isGpt5OrLater(model.id);\n\t}\n\n\t/**\n\t * Check if two models are equal by comparing both their id and provider id.\n\t * Returns false if either model is null or undefined.\n\t */\n\texport function modelsAreEqual(a: Info | null | undefined, b: Info | null | undefined): boolean {\n\t\tif (!a || !b) return false;\n\t\treturn a.id === b.id && a.provider.id === b.provider.id;\n\t}\n}\n","import { NamedError } from \"@codeworksh/utils\";\nimport Type, { type Static } from \"typebox\";\nimport type { Message } from \"../message/message\";\nimport { Model } from \"../model/model\";\nimport type { AssistantMessageEventStream } from \"../utils/eventstream\";\n\nexport namespace Stream {\n\texport const ProtocolProviderNotFoundError = NamedError.create(\n\t\t\"ProtocolProviderNotFoundError\",\n\t\tType.Object({\n\t\t\tprotocol: Model.KnownProtocolSchema,\n\t\t}),\n\t);\n\texport type ProtocolProviderNotFoundError = InstanceType<typeof ProtocolProviderNotFoundError>;\n\n\texport const ProtocolMismatchError = NamedError.create(\n\t\t\"ProtocolMismatchError\",\n\t\tType.Object({\n\t\t\tactual: Model.KnownProtocolSchema,\n\t\t\texpected: Model.KnownProtocolSchema,\n\t\t}),\n\t);\n\texport type ProtocolMismatchError = InstanceType<typeof ProtocolMismatchError>;\n\n\texport const ThinkingLevelEnum = {\n\t\toff: \"off\",\n\t\tminimal: \"minimal\",\n\t\tlow: \"low\",\n\t\tmedium: \"medium\",\n\t\thigh: \"high\",\n\t\txhigh: \"xhigh\",\n\t} as const;\n\texport const ThinkingLevelSchema = Type.Union([\n\t\tType.Literal(ThinkingLevelEnum.off),\n\t\tType.Literal(ThinkingLevelEnum.minimal),\n\t\tType.Literal(ThinkingLevelEnum.low),\n\t\tType.Literal(ThinkingLevelEnum.medium),\n\t\tType.Literal(ThinkingLevelEnum.high),\n\t\tType.Literal(ThinkingLevelEnum.xhigh),\n\t]);\n\texport type ThinkingLevel = Static<typeof ThinkingLevelSchema>;\n\n\texport const ThinkingBudgetsSchema = Type.Object({\n\t\toff: Type.Optional(Type.Number()),\n\t\tminimal: Type.Optional(Type.Number()),\n\t\tlow: Type.Optional(Type.Number()),\n\t\tmedium: Type.Optional(Type.Number()),\n\t\thigh: Type.Optional(Type.Number()),\n\t});\n\texport type ThinkingBudgets = Static<typeof ThinkingBudgetsSchema>;\n\n\texport const CacheRetentionSchema = Type.Union([Type.Literal(\"none\"), Type.Literal(\"short\"), Type.Literal(\"long\")]);\n\texport type CacheRetention = Static<typeof CacheRetentionSchema>;\n\n\texport const TransportSchema = Type.Union([Type.Literal(\"sse\"), Type.Literal(\"websocket\"), Type.Literal(\"auto\")]);\n\texport type Transport = Static<typeof TransportSchema>;\n\n\texport const OptionsSchema = Type.Object({\n\t\ttemperature: Type.Optional(Type.Number()),\n\t\tmaxTokens: Type.Optional(Type.Number()),\n\t\tsignal: Type.Optional(Type.Unsafe<AbortSignal>({})),\n\t\tapiKey: Type.Optional(Type.String()),\n\t\ttransport: Type.Optional(TransportSchema),\n\t\tcacheRetention: Type.Optional(CacheRetentionSchema),\n\t\tsessionId: Type.Optional(Type.String()),\n\t\tonPayload: Type.Optional(\n\t\t\tType.Unsafe<(payload: unknown, model: Model.TModel<Model.KnownProtocol>) => unknown>({}),\n\t\t),\n\t\theaders: Type.Optional(Type.Record(Type.String(), Type.String())),\n\t\tmaxRetryDelayMs: Type.Optional(Type.Number()),\n\t\tmetadata: Type.Optional(Type.Record(Type.String(), Type.Unknown())),\n\t});\n\texport type Options = Static<typeof OptionsSchema>;\n\texport type ProviderOptions = Options & Record<string, unknown>;\n\n\texport const SimpleOptionsSchema = Type.Evaluate(\n\t\tType.Intersect([\n\t\t\tOptionsSchema,\n\t\t\tType.Object({\n\t\t\t\treasoning: Type.Optional(ThinkingLevelSchema),\n\t\t\t\tthinkingBudgets: Type.Optional(ThinkingBudgetsSchema),\n\t\t\t}),\n\t\t]),\n\t);\n\texport type SimpleOptions = Static<typeof SimpleOptionsSchema>;\n\n\t// Contract:\n\t// - Must return an AssistantMessageEventStream.\n\t// - Once invoked, request/model/runtime failures should be encoded in the\n\t// returned stream, not thrown.\n\t// - Error termination must produce an AssistantMessage with stopReason\n\t// \"error\" or \"aborted\" and errorMessage, emitted via the stream protocol.\n\texport type StreamFunction<\n\t\tTProtocol extends Model.KnownProtocol = Model.KnownProtocol,\n\t\tTOptions extends Options = Options,\n\t> = (model: Model.TModel<TProtocol>, context: Message.Context, options?: TOptions) => AssistantMessageEventStream;\n\n\texport function buildBaseOptions(model: Model.Info, options?: SimpleOptions, apiKey?: string): Options {\n\t\treturn {\n\t\t\ttemperature: options?.temperature,\n\t\t\tmaxTokens: options?.maxTokens || Math.min(model.maxTokens, 32000),\n\t\t\tsignal: options?.signal,\n\t\t\tapiKey: apiKey || options?.apiKey,\n\t\t\ttransport: options?.transport,\n\t\t\tcacheRetention: options?.cacheRetention,\n\t\t\tsessionId: options?.sessionId,\n\t\t\theaders: options?.headers,\n\t\t\tonPayload: options?.onPayload,\n\t\t\tmaxRetryDelayMs: options?.maxRetryDelayMs,\n\t\t\tmetadata: options?.metadata,\n\t\t};\n\t}\n\n\texport function clampReasoning(effort: ThinkingLevel | undefined): Exclude<ThinkingLevel, \"xhigh\"> | undefined {\n\t\treturn effort === ThinkingLevelEnum.xhigh ? ThinkingLevelEnum.high : effort;\n\t}\n\n\texport function adjustMaxTokensForThinking(\n\t\tbaseMaxTokens: number,\n\t\tmodelMaxTokens: number,\n\t\treasoningLevel: ThinkingLevel,\n\t\tcustomBudgets?: ThinkingBudgets,\n\t): { maxTokens: number; thinkingBudget: number } {\n\t\tconst defaultBudgets: ThinkingBudgets = {\n\t\t\tminimal: 1024,\n\t\t\tlow: 2048,\n\t\t\tmedium: 8192,\n\t\t\thigh: 16384,\n\t\t};\n\t\tconst budgets = { ...defaultBudgets, ...customBudgets };\n\t\tconst minOutputTokens = 1024;\n\t\tconst level = clampReasoning(reasoningLevel)!;\n\t\tlet thinkingBudget = budgets[level]!;\n\t\tconst maxTokens = Math.min(baseMaxTokens + thinkingBudget, modelMaxTokens);\n\n\t\tif (maxTokens <= thinkingBudget) {\n\t\t\tthinkingBudget = Math.max(0, maxTokens - minOutputTokens);\n\t\t}\n\n\t\treturn { maxTokens, thinkingBudget };\n\t}\n\n\texport type ProtocolStreamFunction = (\n\t\tmodel: Model.Info,\n\t\tcontext: Message.Context,\n\t\toptions?: Options,\n\t) => AssistantMessageEventStream;\n\n\texport type ProtocolStreamSimpleFunction = (\n\t\tmodel: Model.Info,\n\t\tcontext: Message.Context,\n\t\toptions?: SimpleOptions,\n\t) => AssistantMessageEventStream;\n\n\texport interface ProtocolProvider<\n\t\tTProtocol extends Model.KnownProtocol = Model.KnownProtocol,\n\t\tTOptions extends Options = Options,\n\t> {\n\t\tprotocol: TProtocol;\n\t\tstream: StreamFunction<TProtocol, TOptions>;\n\t\tstreamSimple: StreamFunction<TProtocol, SimpleOptions>;\n\t}\n\n\ttype RegisteredProtocolProvider = {\n\t\tprovider: ProtocolProvider<Model.KnownProtocol, Options>;\n\t\tsourceId?: string;\n\t};\n\n\tconst protocolProviderRegistry = new Map<Model.KnownProtocol, RegisteredProtocolProvider>();\n\n\tfunction wrapStream<TProtocol extends Model.KnownProtocol, TOptions extends Options>(\n\t\tprotocol: TProtocol,\n\t\tstream: StreamFunction<TProtocol, TOptions>,\n\t): ProtocolStreamFunction {\n\t\treturn (model, context, options) => {\n\t\t\tif (model.protocol !== protocol) {\n\t\t\t\tthrow new ProtocolMismatchError({\n\t\t\t\t\tactual: model.protocol,\n\t\t\t\t\texpected: protocol,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn stream(model as Model.TModel<TProtocol>, context, options as TOptions);\n\t\t};\n\t}\n\n\tfunction wrapStreamSimple<TProtocol extends Model.KnownProtocol>(\n\t\tprotocol: TProtocol,\n\t\tstreamSimple: StreamFunction<TProtocol, SimpleOptions>,\n\t): ProtocolStreamSimpleFunction {\n\t\treturn (model, context, options) => {\n\t\t\tif (model.protocol !== protocol) {\n\t\t\t\tthrow new ProtocolMismatchError({\n\t\t\t\t\tactual: model.protocol,\n\t\t\t\t\texpected: protocol,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn streamSimple(model as Model.TModel<TProtocol>, context, options);\n\t\t};\n\t}\n\n\texport function registerProtocolProvider<TProtocol extends Model.KnownProtocol, TOptions extends Options>(\n\t\tprovider: ProtocolProvider<TProtocol, TOptions>,\n\t\tsourceId?: string,\n\t): void {\n\t\tprotocolProviderRegistry.set(provider.protocol, {\n\t\t\tprovider: {\n\t\t\t\tprotocol: provider.protocol,\n\t\t\t\tstream: wrapStream(provider.protocol, provider.stream),\n\t\t\t\tstreamSimple: wrapStreamSimple(provider.protocol, provider.streamSimple),\n\t\t\t},\n\t\t\tsourceId,\n\t\t});\n\t}\n\n\texport function getProtocolProvider(\n\t\tprotocol: Model.KnownProtocol,\n\t): ProtocolProvider<Model.KnownProtocol, Options> | undefined {\n\t\treturn protocolProviderRegistry.get(protocol)?.provider;\n\t}\n\n\texport function resolveProtocolProvider(model: Model.Info): ProtocolProvider<Model.KnownProtocol, Options> {\n\t\tconst provider = getProtocolProvider(model.protocol);\n\t\tif (!provider) {\n\t\t\tthrow new ProtocolProviderNotFoundError({\n\t\t\t\tprotocol: model.protocol,\n\t\t\t});\n\t\t}\n\t\treturn provider;\n\t}\n\n\texport function stream(model: Model.Info, context: Message.Context, options?: Options): AssistantMessageEventStream {\n\t\tconst provider = resolveProtocolProvider(model);\n\t\treturn provider.stream(model, context, options);\n\t}\n\n\texport async function complete(\n\t\tmodel: Model.Info,\n\t\tcontext: Message.Context,\n\t\toptions?: Options,\n\t): Promise<Message.AssistantMessage> {\n\t\tconst s = stream(model, context, options);\n\t\treturn s.result();\n\t}\n\n\texport function streamSimple(\n\t\tmodel: Model.Info,\n\t\tcontext: Message.Context,\n\t\toptions?: SimpleOptions,\n\t): AssistantMessageEventStream {\n\t\tconst provider = resolveProtocolProvider(model);\n\t\treturn provider.streamSimple(model, context, options);\n\t}\n\n\texport async function completeSimple(\n\t\tmodel: Model.Info,\n\t\tcontext: Message.Context,\n\t\toptions?: SimpleOptions,\n\t): Promise<Message.AssistantMessage> {\n\t\tconst s = streamSimple(model, context, options);\n\t\treturn s.result();\n\t}\n\n\texport function getApiProviders(): ProtocolProvider<Model.KnownProtocol, Options>[] {\n\t\treturn Array.from(protocolProviderRegistry.values(), (entry) => entry.provider);\n\t}\n\n\texport function unregisterProtocolProviders(sourceId: string): void {\n\t\tfor (const [api, entry] of protocolProviderRegistry.entries()) {\n\t\t\tif (entry.sourceId === sourceId) {\n\t\t\t\tprotocolProviderRegistry.delete(api);\n\t\t\t}\n\t\t}\n\t}\n\n\texport function clearProtocolProviders(): void {\n\t\tprotocolProviderRegistry.clear();\n\t}\n}\n","/**\n * @description Defines the Generic event stream class for async iteration.\n */\n\nimport type { Event } from \"../event/event\";\nimport type { Message } from \"../message/message\";\n\n// Implements the async iterator pattern\n// LLM output are streams of events for consuming\n// This class helps with that by acting like buffer data structure to manage the streams\n// for producer and consumer\nexport class EventStream<T, R = T> implements AsyncIterable<T> {\n\tprivate queue: T[] = [];\n\tprivate waiting: ((value: IteratorResult<T>) => void)[] = [];\n\tprivate done = false;\n\tprivate readonly finalResultPromise: Promise<R>;\n\tprivate resolveFinalResult!: (result: R) => void;\n\n\tconstructor(\n\t\tprivate isComplete: (event: T) => boolean,\n\t\tprivate extractResult: (event: T) => R,\n\t) {\n\t\tthis.finalResultPromise = new Promise((resolve) => {\n\t\t\tthis.resolveFinalResult = resolve;\n\t\t});\n\t}\n\n\tpush(event: T): void {\n\t\tif (this.done) return;\n\n\t\tif (this.isComplete(event)) {\n\t\t\tthis.done = true;\n\t\t\tthis.resolveFinalResult(this.extractResult(event));\n\t\t}\n\n\t\t// Deliver to waiting consumer or queue it\n\t\tconst waiter = this.waiting.shift();\n\t\tif (waiter) {\n\t\t\twaiter({ value: event, done: false });\n\t\t} else {\n\t\t\tthis.queue.push(event);\n\t\t}\n\t}\n\n\tend(result?: R): void {\n\t\tthis.done = true;\n\t\tif (result !== undefined) {\n\t\t\tthis.resolveFinalResult(result);\n\t\t}\n\t\t// Notify all waiting consumers that we're done\n\t\twhile (this.waiting.length > 0) {\n\t\t\tconst waiter = this.waiting.shift()!;\n\t\t\twaiter({ value: undefined as any, done: true });\n\t\t}\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncIterator<T> {\n\t\twhile (true) {\n\t\t\tif (this.queue.length > 0) {\n\t\t\t\tyield this.queue.shift()!;\n\t\t\t} else if (this.done) {\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\tconst result = await new Promise<IteratorResult<T>>((resolve) => this.waiting.push(resolve));\n\t\t\t\tif (result.done) return;\n\t\t\t\tyield result.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tresult(): Promise<R> {\n\t\treturn this.finalResultPromise;\n\t}\n}\n\nexport class AssistantMessageEventStream extends EventStream<Event.LLMMessageEvent, Message.AssistantMessage> {\n\tconstructor() {\n\t\tsuper(\n\t\t\t(event) => event.type === \"done\" || event.type === \"error\",\n\t\t\t(event) => {\n\t\t\t\tif (event.type === \"done\") {\n\t\t\t\t\treturn event.message;\n\t\t\t\t} else if (event.type === \"error\") {\n\t\t\t\t\treturn event.error;\n\t\t\t\t}\n\t\t\t\tthrow new Error(\"Unexpected event type for final result\");\n\t\t\t},\n\t\t);\n\t}\n}\n\n/** Factory function for AssistantMessageEventStream (for use in extensions) */\nexport function createAssistantMessageEventStream(): AssistantMessageEventStream {\n\treturn new AssistantMessageEventStream();\n}\n","/**\n * @description Validation powered by TypeBox's built-in schema compiler.\n */\n\nimport type { Static, TSchema } from \"typebox\";\nimport Schema from \"typebox/schema\";\nimport Value from \"typebox/value\";\n\nimport type { Agent } from \"../agent/agent\";\nimport type { Message } from \"../message/message\";\n\nconst validators = new WeakMap<TSchema, ReturnType<typeof Schema.Compile>>();\n\nfunction getValidator<T extends TSchema>(schema: T): ReturnType<typeof Schema.Compile<T>> {\n\tconst existing = validators.get(schema) as ReturnType<typeof Schema.Compile<T>> | undefined;\n\tif (existing) return existing;\n\n\tconst validator = Schema.Compile(schema);\n\tvalidators.set(schema, validator);\n\treturn validator;\n}\n\nfunction errorPath(error: { instancePath?: string; params?: Record<string, unknown> }): string {\n\tif (error.instancePath) return error.instancePath.substring(1);\n\n\tconst requiredProperties = error.params?.requiredProperties;\n\tif (Array.isArray(requiredProperties)) return requiredProperties.join(\", \");\n\n\treturn \"root\";\n}\n\n/**\n * Validates an arbitrary value against a TypeBox schema and returns the coerced value.\n */\nexport function validateSchema<T extends TSchema>(schema: T, value: unknown, label: string): Static<T> {\n\tconst validator = getValidator(schema);\n\tconst input = Value.Convert(schema, structuredClone(value));\n\n\ttry {\n\t\treturn validator.Parse(input);\n\t} catch {\n\t\tconst [_result, validationErrors] = validator.Errors(input);\n\t\tconst errors =\n\t\t\tvalidationErrors\n\t\t\t\t.map((err) => {\n\t\t\t\t\treturn ` - ${errorPath(err)}: ${err.message}`;\n\t\t\t\t})\n\t\t\t\t.join(\"\\n\") || \"Unknown Validation Error\";\n\n\t\tthrow new Error(\n\t\t\t[\n\t\t\t\t`Validation Failed For ${label}`,\n\t\t\t\t`${errors}\\n`,\n\t\t\t\t\"Received Value:\",\n\t\t\t\t`${JSON.stringify(value, null, 2)}\\n`,\n\t\t\t].join(\"\\n\"),\n\t\t);\n\t}\n}\n\n/**\n * Finds a tool by name and validates the tool call arguments against its TypeBox schema\n */\nexport function validateToolCall<T extends Message.Tool>(\n\ttools: T[],\n\ttoolExecution: Agent.ToolCallInFlight,\n): Message.ToolArguments<T> {\n\tconst tool = tools.find((t) => t.name === toolExecution.name);\n\tif (!tool) {\n\t\tthrow new Error(`Tool \"${toolExecution.name}\" not found`);\n\t}\n\treturn validateToolArguments(tool, toolExecution);\n}\n\n/**\n * Validates tool call arguments against the tool's TypeBox schema\n */\nexport function validateToolArguments<T extends Message.Tool>(\n\ttool: T,\n\ttoolExecution: Agent.ToolCallInFlight,\n): Message.ToolArguments<T> {\n\treturn validateSchema(\n\t\ttool.parameters,\n\t\ttoolExecution.rawArgs,\n\t\t`Tool \"${toolExecution.name}\"`,\n\t) as Message.ToolArguments<T>;\n}\n","import { NamedError } from \"@codeworksh/utils\";\nimport Type, { type TSchema } from \"typebox\";\nimport type { Event } from \"../event/event\";\nimport type { Message } from \"../message/message\";\nimport type { Model } from \"../model/model\";\nimport type { Provider } from \"../provider/provider\";\nimport { Stream } from \"../provider/stream\";\nimport { EventStream } from \"../utils/eventstream\";\nimport { validateToolArguments } from \"../utils/validation\";\nimport type { Agent } from \"./agent\";\n\nexport namespace Loop {\n\t/** Stream function used by the core agent loop\n\t *\n\t * Contract:\n\t * - Must not throw or return a rejected promise for request/model/runtime (LLM) failures.\n\t * - Must return an AssistantMessageEventStream see: packages/aikit/src/utils/eventstream.ts\n\t * - Failures must be encoded in the returned stream via protocol events and a\n\t * final Message.AssistantMessage with stopReason \"error\" or \"aborted\" and errorMessage.\n\t */\n\texport type StreamFn = (\n\t\t...args: Parameters<typeof Stream.streamSimple>\n\t) => ReturnType<typeof Stream.streamSimple> | Promise<ReturnType<typeof Stream.streamSimple>>;\n\n\t/**\n\t * Configuration for how tool calls from a single assistant message are executed.\n\t *\n\t * - \"sequential\": each tool call is prepared, executed, and finalized before the next one starts.\n\t * - \"parallel\": tool calls are prepared sequentially, then allowed tools execute concurrently.\n\t * Final tool results are still emitted in assistant source order.\n\t */\n\texport type ToolExecutionMode = \"sequential\" | \"parallel\";\n\n\t/** Context passed to `beforeToolExecution`. */\n\texport interface BeforeToolExecutionContext {\n\t\t/** The current context at the time the tool call is prepared */\n\t\tcontext: Agent.AgentContext;\n\t\t/** The assistant message that requested the tool call. */\n\t\tassistantMessage: Message.AssistantMessage;\n\t\t/** The validated in-flight tool call with validated arguments */\n\t\ttoolCall: Agent.ToolCallInFlight;\n\t}\n\n\t/** Context passed to `afterToolExecution`. */\n\texport interface AfterToolExecutionContext {\n\t\t/** Current agent context at the time the tool call is finalized. */\n\t\tcontext: Agent.AgentContext;\n\t\t/** The assistant message that requested the tool call. */\n\t\tassistantMessage: Message.AssistantMessage;\n\t\t/** The validated in-flight tool call with validated arguments */\n\t\ttoolCall: Agent.ToolCallInFlight;\n\t\t/** The executed tool result before any `afterToolExecution` overrides are applied. */\n\t\tresult: Agent.ToolTerminalResult<unknown>;\n\t}\n\n\t/**\n\t * Result returned from `beforeToolExecution`.\n\t *\n\t * Returning `{ block: true }` prevents the tool from executing. The loop emits an error tool result instead.\n\t * `reason` becomes the text shown in that error result. If omitted, a default blocked message is used.\n\t */\n\texport interface BeforeToolCallResult {\n\t\tblock?: boolean;\n\t\treason?: string;\n\t\tdetails?: unknown;\n\t}\n\n\t/** Configuration for the agent loop. */\n\texport interface Config extends Stream.SimpleOptions {\n\t\tmodel: Model.Info;\n\t\tconvertToLlm: (messages: Message.Message[]) => Message.Message[] | Promise<Message.Message[]>;\n\t\t/**\n\t\t * Optional transform applied to the context before `convertToLlm`.\n\t\t *\n\t\t * Use this for operations that work at the AgentMessage level:\n\t\t * - Context window management (pruning old messages)\n\t\t * - Injecting context from external sources\n\t\t *\n\t\t * @example\n\t\t * ```typescript\n\t\t * transformContext: async (messages) => {\n\t\t * if (estimateTokens(messages) > MAX_TOKENS) {\n\t\t * return pruneOldMessages(messages);\n\t\t * }\n\t\t * return messages;\n\t\t * }\n\t\t * ```\n\t\t */\n\t\ttransformContext?: (messages: Message.Message[], signal?: AbortSignal) => Promise<Message.Message[]>;\n\t\t/**\n\t\t * Resolves an API key dynamically for each LLM call.\n\t\t *\n\t\t * Useful for short-lived OAuth tokens (e.g., GitHub Copilot) that may expire\n\t\t * during long-running tool execution phases.\n\t\t */\n\t\tgetApiKey?: (provider: Provider.Info) => Promise<string | undefined> | string | undefined;\n\t\t/**\n\t\t * Returns steering messages to inject into the conversation mid-run.\n\t\t *\n\t\t * Called after each tool execution to check for user interruptions.\n\t\t * If messages are returned, remaining tool calls are skipped and\n\t\t * these messages are added to the context before the next LLM call.\n\t\t *\n\t\t * Use this for \"steering\" the agent while it's working.\n\t\t */\n\t\tgetSteeringMessages?: () => Promise<Message.UserMessage[]>;\n\t\t/**\n\t\t * Returns follow-up messages to process after the agent would otherwise stop.\n\t\t *\n\t\t * Called when the agent has no more tool calls and no steering messages.\n\t\t * If messages are returned, they're added to the context and the agent\n\t\t * continues with another turn.\n\t\t *\n\t\t * Use this for follow-up messages that should wait until the agent finishes.\n\t\t */\n\t\tgetFollowUpMessages?: () => Promise<Message.UserMessage[]>;\n\n\t\t/**\n\t\t * Tool execution mode.\n\t\t * - \"sequential\": execute tool calls one by one\n\t\t * - \"parallel\": preflight tool calls sequentially, then execute allowed tools concurrently\n\t\t *\n\t\t * Default: \"parallel\"\n\t\t */\n\t\ttoolExecution?: ToolExecutionMode;\n\n\t\t/**\n\t\t * Called before a tool is executed, after arguments have been validated.\n\t\t *\n\t\t * Return `{ block: true }` to prevent execution. The loop emits an error tool result instead.\n\t\t * The hook receives the agent abort signal and is responsible for honoring it.\n\t\t */\n\t\tbeforeToolExecution?: (\n\t\t\tcontext: BeforeToolExecutionContext,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<BeforeToolCallResult | undefined>;\n\n\t\t/**\n\t\t * Called after a tool finishes executing, before final tool events are emitted.\n\t\t *\n\t\t * Any omitted fields keep their original values. No deep merge is performed.\n\t\t * The hook receives the agent abort signal and is responsible for honoring it.\n\t\t */\n\t\tafterToolExecution?: (\n\t\t\tcontext: AfterToolExecutionContext,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<Agent.ToolTerminalResult<unknown> | undefined>;\n\t}\n\n\tfunction createAgentStream(): EventStream<Event.AgentEvent, Message.Message[]> {\n\t\treturn new EventStream<Event.AgentEvent, Message.Message[]>(\n\t\t\t(event: Event.AgentEvent) => event.type === \"agent.end\",\n\t\t\t(event: Event.AgentEvent) => (event.type === \"agent.end\" ? event.messages : []),\n\t\t);\n\t}\n\n\ttype AgentEventSink = (event: Event.AgentEvent) => Promise<void> | void;\n\n\ttype AssistantPart = Message.AssistantMessage[\"parts\"][number];\n\n\ttype ToolCallPart = Message.ToolCallPendingPart & { partIndex: number }; // runtime toolcall pending part\n\n\ttype RuntimeAgentTool = {\n\t\tname: string;\n\t\tparameters: TSchema;\n\t\texecute: (\n\t\t\tcallID: string,\n\t\t\tparams: unknown,\n\t\t\tsignal?: AbortSignal,\n\t\t\tonUpdate?: Agent.ToolUpdateCallback<unknown>,\n\t\t) => Promise<Agent.ToolTerminalResult<unknown>>;\n\t};\n\n\ttype ToolCallPrepared =\n\t\t| {\n\t\t\t\terror: {\n\t\t\t\t\tkind: \"error\" | \"blocked\";\n\t\t\t\t\tmessage: string;\n\t\t\t\t\tdetails?: unknown;\n\t\t\t\t};\n\t\t\t\trunnable: Agent.ToolCallInFlight;\n\t\t }\n\t\t| {\n\t\t\t\terror?: never;\n\t\t\t\trunnable: Agent.ToolCallInFlight;\n\t\t\t\ttool: RuntimeAgentTool;\n\t\t };\n\n\ttype ToolCallRunnable = {\n\t\ttoolCall: ToolCallPart;\n\t\trunnable: Agent.ToolCallInFlight;\n\t\ttool: RuntimeAgentTool;\n\t};\n\n\ttype ToolCallExecutionResult =\n\t\t| { result: Agent.ToolTerminalResult<unknown>; error?: never }\n\t\t| { result?: never; error: { message: string; details?: unknown } };\n\n\texport const AgentContextError = NamedError.create(\n\t\t\"AgentContextError\",\n\t\tType.Object({\n\t\t\tmessage: Type.String(),\n\t\t}),\n\t);\n\texport type AgentContextError = InstanceType<typeof AgentContextError>;\n\n\tfunction snapshotAssistantMessage(message: Message.AssistantMessage): Message.AssistantMessage {\n\t\treturn structuredClone(message);\n\t}\n\n\tfunction snapshotAssistantPartEvent(\n\t\tmessage: Message.AssistantMessage,\n\t\tpartIndex: number,\n\t): { message: Message.AssistantMessage; part: AssistantPart } {\n\t\tconst snapshot = snapshotAssistantMessage(message);\n\t\tconst part = snapshot.parts[partIndex];\n\t\tif (!part) {\n\t\t\tthrow new Error(`Assistant message part at index ${partIndex} was not found`);\n\t\t}\n\t\treturn { message: snapshot, part };\n\t}\n\n\tasync function emitEvent(emit: AgentEventSink, event: Event.AgentEvent): Promise<void> {\n\t\tawait emit(event);\n\t}\n\n\tasync function streamAssistantResponse(\n\t\tconfig: Config,\n\t\tcontext: Agent.AgentContext,\n\t\temit: AgentEventSink,\n\t\tstreamFn?: StreamFn,\n\t\tsignal?: AbortSignal,\n\t): Promise<Message.AssistantMessage> {\n\t\t// FIXME @sanchitrk:\n\t\t// Have something like a pipeline with Message.Message[] transformation\n\t\t// caller will inject transfomers[](async functions) that is then invoked in order\n\n\t\t// Apply context transform if configured (Message.Message[] → Message.Message[])\n\t\tlet messages = context.messages;\n\t\tif (config.transformContext) {\n\t\t\tmessages = await config.transformContext(messages, signal);\n\t\t}\n\n\t\t// Convert to LLM-compatible messages (Message.Message[] → Message.Message[])\n\t\tconst llmMessages = await config.convertToLlm(messages);\n\n\t\t// Build LLM context, subset of Agent.AgentContext\n\t\tconst llmContext: Agent.AgentContext = {\n\t\t\tsystemPrompt: context.systemPrompt,\n\t\t\tmessages: llmMessages,\n\t\t\ttools: context.tools,\n\t\t};\n\t\tconst streamFunction = streamFn || Stream.streamSimple;\n\t\t// Resolve API key (important for expiring tokens)\n\t\t// TODO @sanchitrk:\n\t\t// improve passing of credentials (key/oauth), provider also has resolve api key,\n\t\t// for now its dummy implementation.\n\t\tconst resolvedApiKey =\n\t\t\t(config.getApiKey ? await config.getApiKey(config.model.provider) : undefined) || config.apiKey;\n\n\t\tconst events = await streamFunction(config.model, llmContext, {\n\t\t\t...config,\n\t\t\tapiKey: resolvedApiKey,\n\t\t\tsignal,\n\t\t});\n\n\t\tlet partialMessage: Message.AssistantMessage | null = null;\n\t\tlet started = false;\n\n\t\tconst ensureMessageStarted = async (message: Message.AssistantMessage): Promise<void> => {\n\t\t\tif (started) return;\n\t\t\tstarted = true;\n\t\t\tawait emitEvent(emit, { type: \"message.start\", message: snapshotAssistantMessage(message) });\n\t\t};\n\n\t\tconst emitMessageUpdate = async (message: Message.AssistantMessage): Promise<void> => {\n\t\t\tawait emitEvent(emit, { type: \"message.update\", message: snapshotAssistantMessage(message) });\n\t\t};\n\n\t\tconst emitPartStart = async (message: Message.AssistantMessage, partIndex: number): Promise<void> => {\n\t\t\tconst snapshot = snapshotAssistantPartEvent(message, partIndex);\n\t\t\tawait emitEvent(emit, { type: \"message.part.start\", partIndex, ...snapshot });\n\t\t};\n\n\t\tconst emitPartUpdate = async (message: Message.AssistantMessage, partIndex: number): Promise<void> => {\n\t\t\tconst snapshot = snapshotAssistantPartEvent(message, partIndex);\n\t\t\tawait emitEvent(emit, { type: \"message.part.update\", partIndex, ...snapshot, source: \"llm\" });\n\t\t};\n\n\t\tconst emitPartEnd = async (message: Message.AssistantMessage, partIndex: number): Promise<void> => {\n\t\t\tconst snapshot = snapshotAssistantPartEvent(message, partIndex);\n\t\t\tawait emitEvent(emit, { type: \"message.part.end\", partIndex, ...snapshot });\n\t\t};\n\n\t\t// NOTE: Do not mutate context directly\n\t\t// once all the events are done return message\n\t\t// mutate partialMessage and corresponding parts as required\n\t\t// return the final built message from llm events\n\t\tfor await (const event of events) {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"start\": {\n\t\t\t\t\tpartialMessage = event.partial;\n\t\t\t\t\tawait ensureMessageStarted(partialMessage);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"text.start\":\n\t\t\t\tcase \"thinking.start\":\n\t\t\t\tcase \"toolcall.start\": {\n\t\t\t\t\tpartialMessage = event.partial;\n\t\t\t\t\tawait ensureMessageStarted(partialMessage);\n\t\t\t\t\tawait emitPartStart(partialMessage, event.partIndex);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"text.delta\":\n\t\t\t\tcase \"thinking.delta\":\n\t\t\t\tcase \"toolcall.delta\": {\n\t\t\t\t\tpartialMessage = event.partial;\n\t\t\t\t\tawait ensureMessageStarted(partialMessage);\n\t\t\t\t\tawait emitPartUpdate(partialMessage, event.partIndex);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"text.end\":\n\t\t\t\tcase \"thinking.end\":\n\t\t\t\tcase \"toolcall.end\": {\n\t\t\t\t\tpartialMessage = event.partial;\n\t\t\t\t\tawait ensureMessageStarted(partialMessage);\n\t\t\t\t\tawait emitPartEnd(partialMessage, event.partIndex);\n\t\t\t\t\tawait emitMessageUpdate(partialMessage);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"done\": {\n\t\t\t\t\tawait ensureMessageStarted(event.message);\n\t\t\t\t\tawait emitEvent(emit, { type: \"message.end\", message: snapshotAssistantMessage(event.message) });\n\t\t\t\t\treturn event.message;\n\t\t\t\t}\n\t\t\t\tcase \"error\": {\n\t\t\t\t\tawait ensureMessageStarted(event.error);\n\t\t\t\t\tawait emitEvent(emit, { type: \"message.end\", message: snapshotAssistantMessage(event.error) });\n\t\t\t\t\treturn event.error;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst finalMessage = await events.result();\n\t\tawait ensureMessageStarted(finalMessage);\n\t\tawait emitEvent(emit, { type: \"message.end\", message: snapshotAssistantMessage(finalMessage) });\n\t\treturn finalMessage;\n\t}\n\n\tasync function executeToolCalls(\n\t\tconfig: Config,\n\t\tcurrentContext: Agent.AgentContext,\n\t\tmessage: Message.AssistantMessage,\n\t\ttoolCalls: ToolCallPart[],\n\t\temit: AgentEventSink,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (config.toolExecution === \"sequential\")\n\t\t\treturn executeToolCallsSequential(config, currentContext, message, toolCalls, emit, signal);\n\t\treturn executeToolCallsParallel(config, currentContext, message, toolCalls, emit, signal);\n\t}\n\n\tasync function executeToolCallsSequential(\n\t\tconfig: Config,\n\t\tcurrentContext: Agent.AgentContext,\n\t\tmessage: Message.AssistantMessage,\n\t\ttoolCalls: ToolCallPart[],\n\t\temit: AgentEventSink,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tfor (const toolCall of toolCalls) {\n\t\t\tconst toolCallInFlight: Agent.ToolCallInFlight = {\n\t\t\t\tcallID: toolCall.callID,\n\t\t\t\tname: toolCall.name,\n\t\t\t\trawArgs: toolCall.arguments,\n\t\t\t};\n\t\t\tawait emitEvent(emit, {\n\t\t\t\ttype: \"tool.execution.start\",\n\t\t\t\t...toolCallInFlight,\n\t\t\t});\n\t\t\t//\n\t\t\t// Prepares the tool call for execution.\n\t\t\t// Invokes a pre-execution callback with the current context, allowing\n\t\t\t// the callback to either continue or block (short-circuiting the execution).\n\t\t\t// Mutates `message.parts` in-place to update the pending tool call with its result.\n\t\t\tconst prepared = await prepareToolCall(config, currentContext, message, toolCallInFlight, signal);\n\t\t\tif (prepared.error) {\n\t\t\t\tconst error: Agent.ToolErrorResult<unknown> = {\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: prepared.error.message }],\n\t\t\t\t\t\tdetails: prepared.error.details,\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tawait emitToolCallTerminalResult(toolCall, prepared.runnable, message, emit, error);\n\t\t\t} else {\n\t\t\t\tconst runnable: ToolCallRunnable = {\n\t\t\t\t\ttoolCall,\n\t\t\t\t\trunnable: prepared.runnable,\n\t\t\t\t\ttool: prepared.tool,\n\t\t\t\t};\n\t\t\t\tconst executed = await executeRunnableToolCall(runnable, message, emit, signal);\n\t\t\t\tif (executed.error) {\n\t\t\t\t\t// tool call invocation failed with error\n\t\t\t\t\t// create tool error result\n\t\t\t\t\tconst error: Agent.ToolErrorResult<unknown> = {\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: executed.error.message }],\n\t\t\t\t\t\t\tdetails: executed.error.details,\n\t\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tawait emitToolCallTerminalResult(runnable.toolCall, runnable.runnable, message, emit, error);\n\t\t\t\t} else {\n\t\t\t\t\t// finalize results from tool invocation\n\t\t\t\t\t// invokes after tool exection callback\n\t\t\t\t\tawait finalizeExecutedToolCall(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tcurrentContext,\n\t\t\t\t\t\trunnable.toolCall,\n\t\t\t\t\t\trunnable.runnable,\n\t\t\t\t\t\tmessage,\n\t\t\t\t\t\temit,\n\t\t\t\t\t\texecuted.result,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tasync function executeToolCallsParallel(\n\t\tconfig: Config,\n\t\tcurrentContext: Agent.AgentContext,\n\t\tmessage: Message.AssistantMessage,\n\t\ttoolCalls: ToolCallPart[],\n\t\temit: AgentEventSink,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tconst runnables: ToolCallRunnable[] = [];\n\n\t\tfor (const toolCall of toolCalls) {\n\t\t\tconst toolCallInFlight: Agent.ToolCallInFlight = {\n\t\t\t\tcallID: toolCall.callID,\n\t\t\t\tname: toolCall.name,\n\t\t\t\trawArgs: toolCall.arguments,\n\t\t\t};\n\t\t\tawait emitEvent(emit, {\n\t\t\t\ttype: \"tool.execution.start\",\n\t\t\t\t...toolCallInFlight,\n\t\t\t});\n\t\t\t//\n\t\t\t// Prepares the tool call for execution.\n\t\t\t// Invokes a pre-execution callback with the current context, allowing\n\t\t\t// the callback to either continue or block (short-circuiting the execution).\n\t\t\t// Mutates `message.parts` in-place to update the pending tool call with its result.\n\t\t\tconst prepared = await prepareToolCall(config, currentContext, message, toolCallInFlight, signal);\n\t\t\tif (prepared.error) {\n\t\t\t\tconst error: Agent.ToolErrorResult<unknown> = {\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: prepared.error.message }],\n\t\t\t\t\t\tdetails: prepared.error.details,\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tawait emitToolCallTerminalResult(toolCall, prepared.runnable, message, emit, error);\n\t\t\t} else {\n\t\t\t\trunnables.push({\n\t\t\t\t\ttoolCall,\n\t\t\t\t\trunnable: prepared.runnable,\n\t\t\t\t\ttool: prepared.tool,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tconst runningExecutions = runnables.map((runnable) => ({\n\t\t\trunnable,\n\t\t\texecution: executeRunnableToolCall(runnable, message, emit, signal),\n\t\t}));\n\n\t\tfor (const running of runningExecutions) {\n\t\t\tconst executed = await running.execution;\n\t\t\tconst { runnable } = running;\n\t\t\tif (executed.error) {\n\t\t\t\t// tool call invocation failed with error\n\t\t\t\t// create tool error result\n\t\t\t\tconst error: Agent.ToolErrorResult<unknown> = {\n\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\tresult: {\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: executed.error.message }],\n\t\t\t\t\t\tdetails: executed.error.details,\n\t\t\t\t\t\tisError: true,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tawait emitToolCallTerminalResult(runnable.toolCall, runnable.runnable, message, emit, error);\n\t\t\t} else {\n\t\t\t\t// finalize results from tool invocation\n\t\t\t\t// invokes after tool exection callback\n\t\t\t\tawait finalizeExecutedToolCall(\n\t\t\t\t\tconfig,\n\t\t\t\t\tcurrentContext,\n\t\t\t\t\trunnable.toolCall,\n\t\t\t\t\trunnable.runnable,\n\t\t\t\t\tmessage,\n\t\t\t\t\temit,\n\t\t\t\t\texecuted.result,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tasync function prepareToolCall(\n\t\tconfig: Config,\n\t\tcurrentContext: Agent.AgentContext,\n\t\tassistantMessage: Message.AssistantMessage,\n\t\ttoolCallInFlight: Agent.ToolCallInFlight,\n\t\tsignal?: AbortSignal,\n\t): Promise<ToolCallPrepared> {\n\t\tconst tool = currentContext.tools?.find((t) => t.name === toolCallInFlight.name);\n\t\tif (!tool) {\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\tkind: \"error\",\n\t\t\t\t\tmessage: `Tool ${toolCallInFlight.name} Not Found`,\n\t\t\t\t},\n\t\t\t\trunnable: toolCallInFlight,\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\t//\n\t\t\t// first validate toolcall args, before invoking callback\n\t\t\t// appends validated args\n\t\t\ttoolCallInFlight.args = validateToolArguments(tool, toolCallInFlight);\n\t\t\tif (config.beforeToolExecution) {\n\t\t\t\tconst beforeResult = await config.beforeToolExecution(\n\t\t\t\t\t{\n\t\t\t\t\t\tcontext: currentContext,\n\t\t\t\t\t\tassistantMessage,\n\t\t\t\t\t\ttoolCall: toolCallInFlight,\n\t\t\t\t\t},\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\t\t\t\tif (beforeResult?.block) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\terror: {\n\t\t\t\t\t\t\tkind: \"blocked\",\n\t\t\t\t\t\t\tmessage: beforeResult?.reason || \"Tool Execution was Blocked\",\n\t\t\t\t\t\t\tdetails: beforeResult?.details,\n\t\t\t\t\t\t},\n\t\t\t\t\t\trunnable: toolCallInFlight,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\trunnable: toolCallInFlight,\n\t\t\t\ttool: tool as RuntimeAgentTool,\n\t\t\t};\n\t\t} catch (err) {\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\tkind: \"error\",\n\t\t\t\t\tmessage: err instanceof Error ? err.message : String(err),\n\t\t\t\t},\n\t\t\t\trunnable: toolCallInFlight,\n\t\t\t};\n\t\t}\n\t}\n\n\tasync function executeRunnableToolCall(\n\t\ttoolCallRunnable: ToolCallRunnable,\n\t\tmessage: Message.AssistantMessage,\n\t\temit: AgentEventSink,\n\t\tsignal?: AbortSignal,\n\t): Promise<ToolCallExecutionResult> {\n\t\tconst { toolCall, runnable, tool } = toolCallRunnable;\n\t\tconst { partIndex, ...pendingPart } = toolCall;\n\t\ttry {\n\t\t\tconst result = await tool.execute(runnable.callID, runnable.args, signal, async (result) => {\n\t\t\t\tconst runningResult: Agent.ToolRunningResult<unknown> = {\n\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\tpartial: result.partial,\n\t\t\t\t};\n\t\t\t\tconst toolExecutionUpdate: Event.ToolExecutionUpdate = {\n\t\t\t\t\ttype: \"tool.execution.update\",\n\t\t\t\t\t...runnable,\n\t\t\t\t\t...runningResult,\n\t\t\t\t};\n\t\t\t\tawait emitEvent(emit, { ...toolExecutionUpdate });\n\n\t\t\t\tconst runningPart: Message.ToolCallRunningPart = {\n\t\t\t\t\t...pendingPart,\n\t\t\t\t\t...runningResult,\n\t\t\t\t};\n\n\t\t\t\tmessage.parts[partIndex] = runningPart; // in-place mutate; add error part\n\n\t\t\t\tawait emitEvent(emit, {\n\t\t\t\t\ttype: \"message.part.update\",\n\t\t\t\t\tmessage,\n\t\t\t\t\tpartIndex,\n\t\t\t\t\tpart: runningPart,\n\t\t\t\t\tsource: \"tool\",\n\t\t\t\t});\n\t\t\t});\n\t\t\treturn {\n\t\t\t\tresult,\n\t\t\t};\n\t\t} catch (err) {\n\t\t\tconst message = err instanceof Error ? err.message : String(err);\n\t\t\treturn {\n\t\t\t\terror: {\n\t\t\t\t\tmessage,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}\n\n\tasync function emitToolCallTerminalResult(\n\t\ttoolCall: ToolCallPart,\n\t\trunnable: Agent.ToolCallInFlight,\n\t\tmessage: Message.AssistantMessage,\n\t\temit: AgentEventSink,\n\t\tresult: Agent.ToolTerminalResult<unknown>,\n\t): Promise<void> {\n\t\tconst { partIndex, ...pendingPart } = toolCall;\n\t\tconst { time } = pendingPart;\n\t\tconst toolExecutionEnd: Event.ToolExecutionEnd = {\n\t\t\ttype: \"tool.execution.end\",\n\t\t\t...runnable,\n\t\t\t...result,\n\t\t};\n\t\tawait emitEvent(emit, { ...toolExecutionEnd });\n\n\t\tconst part: Message.ToolCallErrorPart | Message.ToolCallCompletedPart = {\n\t\t\t...pendingPart,\n\t\t\t...result,\n\t\t\ttime: {\n\t\t\t\tstart: time.start,\n\t\t\t\tend: Date.now(),\n\t\t\t},\n\t\t};\n\n\t\tmessage.parts[partIndex] = part; // in-place mutate; add error part\n\n\t\tawait emitEvent(emit, { type: \"message.part.start\", message: message, partIndex: partIndex, part: part });\n\t\tawait emitEvent(emit, { type: \"message.part.end\", message: message, partIndex: partIndex, part: part });\n\t\tawait emitEvent(emit, { type: \"message.update\", message: message });\n\t}\n\n\tasync function finalizeExecutedToolCall(\n\t\tconfig: Config,\n\t\tcurrentContext: Agent.AgentContext,\n\t\ttoolCall: ToolCallPart,\n\t\trunnable: Agent.ToolCallInFlight,\n\t\tmessage: Message.AssistantMessage,\n\t\temit: AgentEventSink,\n\t\tresult: Agent.ToolTerminalResult<unknown>,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\tif (config.afterToolExecution) {\n\t\t\tconst afterResult = await config.afterToolExecution(\n\t\t\t\t{\n\t\t\t\t\tcontext: currentContext,\n\t\t\t\t\tassistantMessage: message,\n\t\t\t\t\ttoolCall: runnable,\n\t\t\t\t\tresult,\n\t\t\t\t},\n\t\t\t\tsignal,\n\t\t\t);\n\t\t\tif (afterResult) {\n\t\t\t\tawait emitToolCallTerminalResult(toolCall, runnable, message, emit, afterResult);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tawait emitToolCallTerminalResult(toolCall, runnable, message, emit, result);\n\t}\n\n\t/**\n\t * Main core loop shared by run and runContinue.\n\t */\n\tasync function runLoop(\n\t\tconfig: Config,\n\t\tcurrentContext: Agent.AgentContext,\n\t\tnewMessages: Message.Message[],\n\t\temit: AgentEventSink,\n\t\tstreamFn?: StreamFn,\n\t\tsignal?: AbortSignal,\n\t): Promise<void> {\n\t\t// initial `turn.start` is already emitted\n\t\t// avoiding duplicate `turn.start` emits\n\t\tlet firstTurn = true;\n\t\t// Check for steering messages at start (user may have submitted while waiting)\n\t\tlet pendingMessages: Message.UserMessage[] = (await config.getSteeringMessages?.()) || [];\n\n\t\t// Outer loop: continues when queued follow-up messages arrive after agent would stop\n\t\twhile (true) {\n\t\t\tlet hasMoreToolCalls = true;\n\n\t\t\t// Inner loop: process tool calls and steering messages\n\t\t\t// Note: turn.start for full tool calls / pending messages.\n\t\t\twhile (hasMoreToolCalls || pendingMessages.length > 0) {\n\t\t\t\t// flip firstTurn, so next iterations starts emitting `turn.start` event\n\t\t\t\tif (!firstTurn) {\n\t\t\t\t\tawait emitEvent(emit, { type: \"turn.start\" });\n\t\t\t\t} else {\n\t\t\t\t\tfirstTurn = false;\n\t\t\t\t}\n\n\t\t\t\t// Process pending messages (inject before next assistant response)\n\t\t\t\tif (pendingMessages.length > 0) {\n\t\t\t\t\tfor (const message of pendingMessages) {\n\t\t\t\t\t\tawait emitEvent(emit, { type: \"message.start\", message: message });\n\t\t\t\t\t\tfor (const [partIndex, part] of message.parts.entries()) {\n\t\t\t\t\t\t\tawait emitEvent(emit, { type: \"message.part.start\", message: message, partIndex, part });\n\t\t\t\t\t\t\tawait emitEvent(emit, { type: \"message.part.end\", message: message, partIndex, part });\n\t\t\t\t\t\t\tawait emitEvent(emit, { type: \"message.update\", message: message });\n\t\t\t\t\t\t}\n\t\t\t\t\t\tawait emitEvent(emit, { type: \"message.end\", message: message });\n\t\t\t\t\t\tcurrentContext.messages.push(message);\n\t\t\t\t\t\tnewMessages.push(message);\n\t\t\t\t\t}\n\t\t\t\t\tpendingMessages = [];\n\t\t\t\t}\n\n\t\t\t\t// Run llm and emit assistant response\n\t\t\t\tconst message: Message.AssistantMessage = await streamAssistantResponse(\n\t\t\t\t\tconfig,\n\t\t\t\t\tcurrentContext,\n\t\t\t\t\temit,\n\t\t\t\t\tstreamFn,\n\t\t\t\t\tsignal,\n\t\t\t\t);\n\n\t\t\t\t// terminal state\n\t\t\t\tif (message.stopReason === \"error\" || message.stopReason === \"aborted\") {\n\t\t\t\t\tcurrentContext.messages.push(message); // append the terminal message into the context\n\t\t\t\t\tnewMessages.push(message); // append the terminal message\n\n\t\t\t\t\tawait emitEvent(emit, { type: \"turn.end\", message });\n\t\t\t\t\tawait emitEvent(emit, { type: \"agent.end\", messages: newMessages });\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// check for pending tool calls\n\t\t\t\t// use partIndex for in-place mutation for tool call result parts in message.parts\n\t\t\t\tconst toolCalls: ToolCallPart[] = message.parts\n\t\t\t\t\t.map((part, index) => ({ ...part, partIndex: index }))\n\t\t\t\t\t.filter((part) => part.type === \"toolCall\" && part.status === \"pending\");\n\n\t\t\t\thasMoreToolCalls = toolCalls.length > 0;\n\t\t\t\tif (hasMoreToolCalls) {\n\t\t\t\t\tawait executeToolCalls(config, currentContext, message, toolCalls, emit, signal);\n\t\t\t\t}\n\n\t\t\t\tcurrentContext.messages.push(message);\n\t\t\t\tnewMessages.push(message);\n\n\t\t\t\tawait emitEvent(emit, { type: \"turn.end\", message });\n\n\t\t\t\t//\n\t\t\t\t// check for steering messages while turn loop was working.\n\t\t\t\tpendingMessages = (await config.getSteeringMessages?.()) || [];\n\t\t\t}\n\n\t\t\t// Agent would stop here. Check for follow-up messages.\n\t\t\tconst followUpMessages = (await config.getFollowUpMessages?.()) || [];\n\t\t\tif (followUpMessages.length > 0) {\n\t\t\t\t// Set as pending so inner loop processes them\n\t\t\t\tpendingMessages = followUpMessages;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// No more messages, exit\n\t\t\tbreak;\n\t\t}\n\n\t\tawait emitEvent(emit, { type: \"agent.end\", messages: newMessages });\n\t}\n\n\texport async function runAgentLoop(\n\t\tconfig: Config,\n\t\tcontext: Agent.AgentContext,\n\t\tprompts: Message.UserMessage[],\n\t\temit: AgentEventSink,\n\t\tstreamFn?: StreamFn,\n\t\tsignal?: AbortSignal,\n\t) {\n\t\t/**\n\t\t * maintain 2 arrays to represent state, `context` the actual full state sent to the LLM,\n\t\t * `newMessages` for intermediate current loop state.\n\t\t * think of newMessages as subset of context.messages for the running current loop.\n\t\t * they do move at the same speed staring with initial user prompts.\n\t\t * */\n\t\tconst newMessages: Message.Message[] = [...prompts];\n\t\tconst currentContext: Agent.AgentContext = {\n\t\t\t...context,\n\t\t\tmessages: [...context.messages, ...prompts],\n\t\t};\n\n\t\tawait emitEvent(emit, { type: \"agent.start\" });\n\t\tawait emitEvent(emit, { type: \"turn.start\" });\n\t\tfor (const prompt of prompts) {\n\t\t\tawait emitEvent(emit, { type: \"message.start\", message: prompt });\n\t\t\tfor (const [partIndex, part] of prompt.parts.entries()) {\n\t\t\t\tawait emitEvent(emit, { type: \"message.part.start\", message: prompt, partIndex, part });\n\t\t\t\tawait emitEvent(emit, { type: \"message.part.end\", message: prompt, partIndex, part });\n\t\t\t}\n\t\t\tawait emitEvent(emit, { type: \"message.end\", message: prompt });\n\t\t}\n\n\t\tawait runLoop(config, currentContext, newMessages, emit, streamFn, signal);\n\t\treturn newMessages;\n\t}\n\n\t/**\n\t * **Important:** The last message in context must not be `assistant` message, convert\n\t * via `convertToLlm`. If it doesn't, the LLM provider will reject the request.\n\t * This cannot be validated here since `convertToLlm` is only called once per turn.\n\t */\n\texport async function runAgentLoopContinue(\n\t\tconfig: Config,\n\t\tcontext: Agent.AgentContext,\n\t\temit: AgentEventSink,\n\t\tstreamFn?: StreamFn,\n\t\tsignal?: AbortSignal,\n\t) {\n\t\tif (context.messages.length === 0) {\n\t\t\tthrow new AgentContextError({ message: \"connot continue: no messages in context\" });\n\t\t}\n\t\tif (context.messages[context.messages.length - 1]?.role === \"assistant\") {\n\t\t\tthrow new AgentContextError({ message: \"cannot continue from message role: assistant\" });\n\t\t}\n\n\t\tconst newMessages: Message.Message[] = [];\n\t\tconst currentContext: Agent.AgentContext = { ...context };\n\n\t\tawait emitEvent(emit, { type: \"agent.start\" });\n\t\tawait emitEvent(emit, { type: \"turn.start\" });\n\n\t\tawait runLoop(config, currentContext, newMessages, emit, streamFn, signal);\n\t\treturn newMessages;\n\t}\n\n\t/**\n\t * Start an agent loop with a new prompt message.\n\t * The prompt is added to the context and events are emitted for it.\n\t */\n\texport function run(\n\t\tconfig: Config,\n\t\tcontext: Agent.AgentContext,\n\t\tprompts: Message.UserMessage[],\n\t\tstreamFn?: StreamFn,\n\t\tsignal?: AbortSignal,\n\t): EventStream<Event.AgentEvent, Message.Message[]> {\n\t\tconst stream = createAgentStream();\n\n\t\tvoid runAgentLoop(\n\t\t\tconfig,\n\t\t\tcontext,\n\t\t\tprompts,\n\t\t\tasync (event) => {\n\t\t\t\tstream.push(event);\n\t\t\t},\n\t\t\tstreamFn,\n\t\t\tsignal,\n\t\t).then((messages) => {\n\t\t\tstream.end(messages);\n\t\t});\n\n\t\treturn stream;\n\t}\n\n\t/**\n\t * Continue an agent loop from the current context without adding a new message.\n\t * Used for retries - context already has user message or tool results.\n\t */\n\texport function runContinue(\n\t\tconfig: Config,\n\t\tcontext: Agent.AgentContext,\n\t\tstreamFn?: StreamFn,\n\t\tsignal?: AbortSignal,\n\t): EventStream<Event.AgentEvent, Message.Message[]> {\n\t\tconst stream = createAgentStream();\n\n\t\tvoid runAgentLoopContinue(\n\t\t\tconfig,\n\t\t\tcontext,\n\t\t\tasync (event) => {\n\t\t\t\tstream.push(event);\n\t\t\t},\n\t\t\tstreamFn,\n\t\t\tsignal,\n\t\t).then((messages) => {\n\t\t\tstream.end(messages);\n\t\t});\n\n\t\treturn stream;\n\t}\n}\n","import { Loop } from \"./agent/loop\";\n\ntype AgentFacade = {\n\tloop: typeof Loop.run;\n\tloopContinue: typeof Loop.runContinue;\n};\n\nexport const agent = {\n\tloop: Loop.run,\n\tloopContinue: Loop.runContinue,\n} as AgentFacade;\n","import Type, { type Static, type TSchema } from \"typebox\";\nimport { uuidv7 } from \"uuidv7\";\nimport { Model } from \"../model/model\";\nimport { Provider } from \"../provider/provider\";\n\nexport namespace Message {\n\texport const TextContentSchema = Type.Object({\n\t\ttype: Type.Literal(\"text\"),\n\t\ttext: Type.String(),\n\t\ttextSignature: Type.Optional(Type.String()), // e.g., for OpenAI responses, the message ID\n\t});\n\texport type TextContent = Static<typeof TextContentSchema>;\n\n\texport const ImageContentSchema = Type.Object({\n\t\ttype: Type.Literal(\"image\"),\n\t\tdata: Type.String(), // base64 encoded image data\n\t\tmimeType: Type.String(), // e.g., \"image/jpeg\", \"image/png\"\n\t});\n\texport type ImageContent = Static<typeof ImageContentSchema>;\n\n\texport const ThinkingContentSchema = Type.Object({\n\t\ttype: Type.Literal(\"thinking\"),\n\t\tthinking: Type.String(),\n\t\tthinkingSignature: Type.Optional(Type.String()), // e.g., for OpenAI responses, the reasoning item ID\n\t\t/** When true, the thinking content was redacted by safety filters. The opaque\n\t\t * encrypted payload is stored in `thinkingSignature` so it can be passed back\n\t\t * to the API for multi-turn continuity. */\n\t\tredacted: Type.Optional(Type.Boolean()),\n\t});\n\texport type ThinkingContent = Static<typeof ThinkingContentSchema>;\n\n\texport const ToolCallBaseSchema = Type.Object({\n\t\ttype: Type.Literal(\"toolCall\"),\n\t\tcallID: Type.String(),\n\t\tname: Type.String(),\n\t\targuments: Type.Record(Type.String(), Type.Any()),\n\t\tthoughtSignature: Type.Optional(Type.String()), // Google-specific: opaque signature for reusing thought context\n\t\ttime: Type.Object({\n\t\t\tstart: Type.Number(), // Unix timestamp in milliseconds\n\t\t\tend: Type.Number(), // Unix timestamp in milliseconds, last known lifecycle update\n\t\t}),\n\t});\n\n\texport const ToolSuccessResult = Type.Object({\n\t\tcontent: Type.Array(Type.Union([TextContentSchema, ImageContentSchema])),\n\t\tdetails: Type.Optional(Type.Any()),\n\t\tisError: Type.Literal(false),\n\t});\n\texport const ToolErrorResult = Type.Object({\n\t\tcontent: Type.Array(Type.Union([TextContentSchema, ImageContentSchema])),\n\t\tdetails: Type.Optional(Type.Any()),\n\t\tisError: Type.Literal(true),\n\t});\n\texport const ToolRunningPartial = Type.Object({\n\t\tcontent: Type.Optional(Type.Array(Type.Union([TextContentSchema, ImageContentSchema]))),\n\t\tdetails: Type.Optional(Type.Any()),\n\t});\n\n\texport const ToolStatusEnum = {\n\t\tpending: \"pending\",\n\t\trunning: \"running\",\n\t\tcompleted: \"completed\",\n\t\terror: \"error\",\n\t\tskipped: \"skipped\",\n\t\taborted: \"aborted\",\n\t} as const;\n\n\texport const ToolRunningSchema = Type.Object({\n\t\tstatus: Type.Literal(ToolStatusEnum.running),\n\t\tpartial: Type.Optional(ToolRunningPartial),\n\t});\n\texport const ToolCompletedSchema = Type.Object({\n\t\tstatus: Type.Literal(ToolStatusEnum.completed),\n\t\tresult: ToolSuccessResult,\n\t});\n\texport const ToolErrorSchema = Type.Object({\n\t\tstatus: Type.Literal(ToolStatusEnum.error),\n\t\tresult: ToolErrorResult,\n\t});\n\texport const ToolSkippedSchema = Type.Object({\n\t\tstatus: Type.Literal(ToolStatusEnum.skipped),\n\t\tresult: ToolErrorResult,\n\t});\n\texport const ToolAbortedSchema = Type.Object({\n\t\tstatus: Type.Literal(ToolStatusEnum.aborted),\n\t\tresult: ToolErrorResult,\n\t});\n\n\tconst ToolCallPendingPart = Type.Intersect([\n\t\tToolCallBaseSchema,\n\t\tType.Object({\n\t\t\tstatus: Type.Literal(ToolStatusEnum.pending),\n\t\t}),\n\t]);\n\tconst ToolCallRunningPart = Type.Evaluate(Type.Intersect([ToolCallBaseSchema, ToolRunningSchema]));\n\tconst ToolCallCompletedPart = Type.Evaluate(Type.Intersect([ToolCallBaseSchema, ToolCompletedSchema]));\n\tconst ToolCallErrorPart = Type.Evaluate(Type.Intersect([ToolCallBaseSchema, ToolErrorSchema]));\n\tconst ToolCallSkippedPart = Type.Evaluate(Type.Intersect([ToolCallBaseSchema, ToolSkippedSchema]));\n\tconst ToolCallAbortedPart = Type.Evaluate(Type.Intersect([ToolCallBaseSchema, ToolAbortedSchema]));\n\n\texport const ToolCallSchema = Type.Union([\n\t\tToolCallPendingPart,\n\t\tToolCallRunningPart,\n\t\tToolCallCompletedPart,\n\t\tToolCallErrorPart,\n\t\tToolCallSkippedPart,\n\t\tToolCallAbortedPart,\n\t]);\n\n\texport type ToolCall = Static<typeof ToolCallSchema>;\n\texport type ToolCallPendingPart = Static<typeof ToolCallPendingPart>;\n\texport type ToolCallRunningPart = Static<typeof ToolCallRunningPart>;\n\texport type ToolCallCompletedPart = Static<typeof ToolCallCompletedPart>;\n\texport type ToolCallErrorPart = Static<typeof ToolCallErrorPart>;\n\n\texport const UsageSchema = Type.Object({\n\t\tinput: Type.Number(),\n\t\toutput: Type.Number(),\n\t\tcacheRead: Type.Number(),\n\t\tcacheWrite: Type.Number(),\n\t\ttotalTokens: Type.Number(),\n\t\tcost: Type.Object({\n\t\t\tinput: Type.Number(),\n\t\t\toutput: Type.Number(),\n\t\t\tcacheRead: Type.Number(),\n\t\t\tcacheWrite: Type.Number(),\n\t\t\ttotal: Type.Number(),\n\t\t}),\n\t});\n\texport type Usage = Static<typeof UsageSchema>;\n\n\texport const StopReasonSchema = Type.Union([\n\t\tType.Literal(\"stop\"),\n\t\tType.Literal(\"length\"),\n\t\tType.Literal(\"toolUse\"),\n\t\tType.Literal(\"error\"),\n\t\tType.Literal(\"aborted\"),\n\t]);\n\texport type StopReason = Static<typeof StopReasonSchema>;\n\n\texport const UserMessageSchema = Type.Object({\n\t\tmessageId: Type.String(),\n\t\trole: Type.Literal(\"user\"),\n\t\ttime: Type.Object({\n\t\t\tcreated: Type.Number(),\n\t\t}),\n\t\tparts: Type.Array(Type.Union([TextContentSchema, ImageContentSchema])),\n\t});\n\texport type UserMessage = Static<typeof UserMessageSchema>;\n\n\texport const AssistantMessageSchema = Type.Object({\n\t\trole: Type.Literal(\"assistant\"),\n\t\tprotocol: Model.KnownProtocolSchema,\n\t\tprovider: Provider.Info,\n\t\tmodel: Type.String(),\n\t\tusage: UsageSchema,\n\t\tstopReason: StopReasonSchema,\n\t\terrorMessage: Type.Optional(Type.String()),\n\t\ttime: Type.Object({\n\t\t\tcreated: Type.Number(),\n\t\t\tcompleted: Type.Number(),\n\t\t}),\n\t\tparts: Type.Array(Type.Union([TextContentSchema, ImageContentSchema, ThinkingContentSchema, ToolCallSchema])),\n\t\tresponseId: Type.Optional(Type.String()), // Provider-specific response/message identifier when the upstream API exposes one\n\t\tmessageId: Type.String(),\n\t});\n\texport type AssistantMessage = Static<typeof AssistantMessageSchema>;\n\n\texport const MessageSchema = Type.Union([UserMessageSchema, AssistantMessageSchema]);\n\texport type Message = Static<typeof MessageSchema>;\n\n\ttype UserMessageInit = Omit<UserMessage, \"messageId\"> & {\n\t\tmessageId?: string;\n\t};\n\n\ttype AssistantMessageInit = Omit<AssistantMessage, \"messageId\"> & {\n\t\tmessageId?: string;\n\t};\n\n\texport function createMessageId(): string {\n\t\treturn uuidv7();\n\t}\n\n\texport function createUserMessage(message: UserMessageInit): UserMessage {\n\t\tconst { messageId = createMessageId(), ...rest } = message;\n\t\treturn {\n\t\t\tmessageId,\n\t\t\t...rest,\n\t\t};\n\t}\n\n\texport function createAssistantMessage(message: AssistantMessageInit): AssistantMessage {\n\t\tconst { messageId = createMessageId(), ...rest } = message;\n\t\treturn {\n\t\t\tmessageId,\n\t\t\t...rest,\n\t\t};\n\t}\n\n\t/**\n\t * Generic tool definition with typed parameter schema.\n\t * Usage:\n\t *\n\t * const search = Message.defineTool({\n\t * name: \"search\",\n\t * description: \"Search documents\",\n\t * parameters: Type.Object({\n\t * query: Type.String(),\n\t * limit: Type.Optional(Type.Number()),\n\t * }),\n\t * });\n\t *\n\t * type SearchParams = Static<typeof search.parameters>;\n\t */\n\texport const ToolSchema = Type.Object({\n\t\tname: Type.String(),\n\t\tdescription: Type.String(),\n\t\tparameters: Type.Unsafe<TSchema>({}),\n\t});\n\texport interface Tool<TParameters extends TSchema = TSchema> {\n\t\tname: string;\n\t\tdescription: string;\n\t\tparameters: TParameters;\n\t}\n\texport type ToolArguments<T extends Tool> = Static<T[\"parameters\"]>;\n\n\texport function defineTool<TParameters extends TSchema>(tool: Tool<TParameters>): Tool<TParameters> {\n\t\treturn tool;\n\t}\n\n\texport const ContextSchema = Type.Object({\n\t\tsystemPrompt: Type.Optional(Type.String()),\n\t\tmessages: Type.Array(MessageSchema),\n\t\ttools: Type.Optional(Type.Array(ToolSchema)),\n\t});\n\texport type Context = Static<typeof ContextSchema>;\n\n\texport function transformMessages<TProtocol extends Model.KnownProtocol>(\n\t\tmessages: Message[],\n\t\tmodel: Model.TModel<TProtocol>,\n\t\tnormalizeToolCallId?: (id: string, model: Model.TModel<TProtocol>, source: AssistantMessage) => string,\n\t): Message[] {\n\t\tconst toolCallIDMap = new Map<string, string>();\n\n\t\tconst transformed: Message[] = [];\n\t\tfor (const msg of messages) {\n\t\t\tif (msg.role === \"user\") {\n\t\t\t\ttransformed.push(msg);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst assistantMsg = msg as AssistantMessage;\n\t\t\tconst isSameModel =\n\t\t\t\tassistantMsg.provider.id === model.provider.id &&\n\t\t\t\tassistantMsg.protocol === model.protocol &&\n\t\t\t\tassistantMsg.model === model.id;\n\n\t\t\tconst parts = assistantMsg.parts.flatMap((block) => {\n\t\t\t\tif (block.type === \"thinking\") {\n\t\t\t\t\tif (isSameModel && block.thinkingSignature) return block;\n\t\t\t\t\tif (!block.thinking || block.thinking.trim() === \"\") return [];\n\t\t\t\t\tif (isSameModel) return block;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: block.thinking,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\tif (isSameModel) return block;\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\ttext: block.text,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (block.type === \"toolCall\") {\n\t\t\t\t\tconst toolCall = block as ToolCall;\n\t\t\t\t\tlet normalizedToolCall: ToolCall = toolCall;\n\n\t\t\t\t\tif (!isSameModel && toolCall.thoughtSignature) {\n\t\t\t\t\t\tnormalizedToolCall = { ...toolCall };\n\t\t\t\t\t\tdelete (normalizedToolCall as { thoughtSignature?: string }).thoughtSignature;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst normalizedID = toolCallIDMap.get(block.callID);\n\t\t\t\t\tif (normalizedID && normalizedID !== block.callID) {\n\t\t\t\t\t\tnormalizedToolCall = { ...normalizedToolCall, callID: normalizedID };\n\t\t\t\t\t} else if (!isSameModel && normalizeToolCallId) {\n\t\t\t\t\t\tconst nextID = normalizeToolCallId(toolCall.callID, model, assistantMsg);\n\t\t\t\t\t\tif (nextID !== toolCall.callID) {\n\t\t\t\t\t\t\ttoolCallIDMap.set(toolCall.callID, nextID);\n\t\t\t\t\t\t\tnormalizedToolCall = { ...normalizedToolCall, callID: nextID };\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn normalizedToolCall;\n\t\t\t\t}\n\n\t\t\t\treturn block;\n\t\t\t});\n\n\t\t\ttransformed.push({\n\t\t\t\t...assistantMsg,\n\t\t\t\tparts,\n\t\t\t});\n\t\t}\n\n\t\treturn transformed;\n\t}\n}\n","/**\n * @description Helper function to parse partial jsons during LLM streaming.\n */\n\nimport { parse as partialParse } from \"partial-json\";\n\n/**\n * Attempts to parse potentially incomplete JSON during streaming.\n * Always returns a valid object, even if the JSON is incomplete.\n *\n * @param partialJson The partial JSON string from streaming\n * @returns Parsed object or empty object if parsing fails\n */\nexport function parseStreamingJson<T = any>(partialJson: string | undefined): T {\n\tif (!partialJson || partialJson.trim() === \"\") {\n\t\treturn {} as T;\n\t}\n\n\t// Try standard parsing first (fastest for complete JSON)\n\ttry {\n\t\treturn JSON.parse(partialJson) as T;\n\t} catch {\n\t\t// Try partial-json for incomplete JSON\n\t\ttry {\n\t\t\tconst result = partialParse(partialJson);\n\t\t\treturn (result ?? {}) as T;\n\t\t} catch {\n\t\t\t// If all parsing fails, return empty object\n\t\t\treturn {} as T;\n\t\t}\n\t}\n}\n","/**\n * Removes unpaired Unicode surrogate characters from a string.\n *\n * Unpaired surrogates (high surrogates 0xD800-0xDBFF without matching low surrogates 0xDC00-0xDFFF,\n * or vice versa) cause JSON serialization errors in many API providers.\n *\n * Valid emoji and other characters outside the Basic Multilingual Plane use properly paired\n * surrogates and will NOT be affected by this function.\n *\n * @param text - The text to sanitize\n * @returns The sanitized text with unpaired surrogates removed\n *\n * @example\n * // Valid emoji (properly paired surrogates) are preserved\n * sanitizeSurrogates(\"Hello 🙈 World\") // => \"Hello 🙈 World\"\n *\n * // Unpaired high surrogate is removed\n * const unpaired = String.fromCharCode(0xD83D); // high surrogate without low\n * sanitizeSurrogates(`Text ${unpaired} here`) // => \"Text here\"\n */\nexport function sanitizeSurrogates(text: string): string {\n\t// Replace unpaired high surrogates (0xD800-0xDBFF not followed by low surrogate)\n\t// Replace unpaired low surrogates (0xDC00-0xDFFF not preceded by high surrogate)\n\treturn text.replace(/[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?<![\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]/g, \"\");\n}\n","import { Provider } from \"../provider\";\n\n// TODO @sanchitrk:\n// implement based for multiple providers\nexport function getEnvApiKey(_provider: Provider.Info): string | undefined {\n\treturn undefined;\n}\n","import Anthropic from \"@anthropic-ai/sdk\";\nimport type {\n\tContentBlockParam,\n\tMessageCreateParamsStreaming,\n\tMessageParam,\n} from \"@anthropic-ai/sdk/resources/messages.js\";\nimport { Message } from \"../../../message/message\";\nimport { Model } from \"../../../model/model\";\nimport { AssistantMessageEventStream } from \"../../../utils/eventstream\";\nimport { parseStreamingJson } from \"../../../utils/jsonparse\";\nimport { sanitizeSurrogates } from \"../../../utils/sanitize\";\nimport { Stream } from \"../../stream\";\nimport { getEnvApiKey } from \"../utils\";\n\nexport interface AnthropicOptions extends Stream.Options {\n\tthinkingEnabled?: boolean;\n\tthinkingBudgetTokens?: number;\n\tinterleavedThinking?: boolean;\n\ttoolChoice?: \"auto\" | \"any\" | \"none\" | { type: \"tool\"; name: string };\n\tclient?: Anthropic;\n}\n\nfunction resolveCacheRetention(cacheRetention?: Stream.CacheRetention): Stream.CacheRetention {\n\tif (cacheRetention) {\n\t\treturn cacheRetention;\n\t}\n\tif (typeof process !== \"undefined\" && process.env.CODEWORK_CACHE_RETENTION === \"long\") {\n\t\treturn \"long\";\n\t}\n\treturn \"short\";\n}\n\nfunction getCacheControl(\n\tbaseUrl: string,\n\tcacheRetention?: Stream.CacheRetention,\n): {\n\tretention: Stream.CacheRetention;\n\tcacheControl?: { type: \"ephemeral\"; ttl?: \"1h\" };\n} {\n\tconst retention = resolveCacheRetention(cacheRetention);\n\tif (retention === \"none\") {\n\t\treturn { retention };\n\t}\n\tconst ttl = retention === \"long\" && baseUrl.includes(\"api.anthropic.com\") ? \"1h\" : undefined;\n\treturn {\n\t\tretention,\n\t\tcacheControl: { type: \"ephemeral\", ...(ttl && { ttl }) },\n\t};\n}\n\nconst claudeCodeVersion = \"2.1.2\";\nconst claudeCodeTools = [\n\t\"Read\",\n\t\"Write\",\n\t\"Edit\",\n\t\"Bash\",\n\t\"Grep\",\n\t\"Glob\",\n\t\"AskUserQuestion\",\n\t\"EnterPlanMode\",\n\t\"ExitPlanMode\",\n\t\"KillShell\",\n\t\"NotebookEdit\",\n\t\"Skill\",\n\t\"Task\",\n\t\"TaskOutput\",\n\t\"TodoWrite\",\n\t\"WebFetch\",\n\t\"WebSearch\",\n];\nconst ccToolLookup = new Map(claudeCodeTools.map((t) => [t.toLowerCase(), t]));\n\nconst toClaudeCodeName = (name: string) => ccToolLookup.get(name.toLowerCase()) ?? name;\nconst fromClaudeCodeName = (name: string, tools?: Message.Tool[]) => {\n\tif (tools && tools.length > 0) {\n\t\tconst lowerName = name.toLowerCase();\n\t\tconst matchedTool = tools.find((tool) => tool.name.toLowerCase() === lowerName);\n\t\tif (matchedTool) return matchedTool.name;\n\t}\n\treturn name;\n};\n\nfunction convertContentBlocks(content: (Message.TextContent | Message.ImageContent)[]):\n\t| string\n\t| Array<\n\t\t\t| { type: \"text\"; text: string }\n\t\t\t| {\n\t\t\t\t\ttype: \"image\";\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"base64\";\n\t\t\t\t\t\tmedia_type: \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\";\n\t\t\t\t\t\tdata: string;\n\t\t\t\t\t};\n\t\t\t }\n\t > {\n\tconst hasImages = content.some((c) => c.type === \"image\");\n\tif (!hasImages) {\n\t\treturn sanitizeSurrogates(content.map((c) => (c as Message.TextContent).text).join(\"\\n\"));\n\t}\n\n\tconst blocks = content.map((block) => {\n\t\tif (block.type === \"text\") {\n\t\t\treturn {\n\t\t\t\ttype: \"text\" as const,\n\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\ttype: \"image\" as const,\n\t\t\tsource: {\n\t\t\t\ttype: \"base64\" as const,\n\t\t\t\tmedia_type: block.mimeType as \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\",\n\t\t\t\tdata: block.data,\n\t\t\t},\n\t\t};\n\t});\n\n\tif (!blocks.some((b) => b.type === \"text\")) {\n\t\tblocks.unshift({\n\t\t\ttype: \"text\" as const,\n\t\t\ttext: \"(see attached image)\",\n\t\t});\n\t}\n\n\treturn blocks;\n}\n\nfunction mergeHeaders(...headerSources: (Record<string, string> | undefined)[]): Record<string, string> {\n\tconst merged: Record<string, string> = {};\n\tfor (const headers of headerSources) {\n\t\tif (headers) {\n\t\t\tObject.assign(merged, headers);\n\t\t}\n\t}\n\treturn merged;\n}\n\nfunction isOAuthToken(apiKey: string): boolean {\n\treturn apiKey.includes(\"sk-ant-oat\");\n}\n\nfunction createClient(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.anthropicMessages>,\n\tapiKey: string,\n\tinterleavedThinking: boolean,\n\toptionsHeaders?: Record<string, string>,\n): { client: Anthropic; isOAuthToken: boolean } {\n\tconst betaFeatures = [\"fine-grained-tool-streaming-2025-05-14\"];\n\tif (interleavedThinking) {\n\t\tbetaFeatures.push(\"interleaved-thinking-2025-05-14\");\n\t}\n\n\tconst oauthToken = isOAuthToken(apiKey);\n\tif (oauthToken) {\n\t\tconst defaultHeaders = mergeHeaders(\n\t\t\t{\n\t\t\t\taccept: \"application/json\",\n\t\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t\t\"anthropic-beta\": `claude-code-20250219,oauth-2025-04-20,${betaFeatures.join(\",\")}`,\n\t\t\t\t\"user-agent\": `claude-cli/${claudeCodeVersion} (external, cli)`,\n\t\t\t\t\"x-app\": \"cli\",\n\t\t\t},\n\t\t\tmodel.headers,\n\t\t\toptionsHeaders,\n\t\t);\n\n\t\treturn {\n\t\t\tclient: new Anthropic({\n\t\t\t\tapiKey: null,\n\t\t\t\tauthToken: apiKey,\n\t\t\t\tbaseURL: model.baseUrl,\n\t\t\t\tdefaultHeaders,\n\t\t\t\tdangerouslyAllowBrowser: true,\n\t\t\t}),\n\t\t\tisOAuthToken: true,\n\t\t};\n\t}\n\n\tconst defaultHeaders = mergeHeaders(\n\t\t{\n\t\t\taccept: \"application/json\",\n\t\t\t\"anthropic-dangerous-direct-browser-access\": \"true\",\n\t\t\t\"anthropic-beta\": betaFeatures.join(\",\"),\n\t\t},\n\t\tmodel.headers,\n\t\toptionsHeaders,\n\t);\n\n\treturn {\n\t\tclient: new Anthropic({\n\t\t\tapiKey,\n\t\t\tbaseURL: model.baseUrl,\n\t\t\tdangerouslyAllowBrowser: true,\n\t\t\tdefaultHeaders,\n\t\t}),\n\t\tisOAuthToken: false,\n\t};\n}\n\nfunction normalizeToolCallId(id: string): string {\n\treturn id.replace(/[^a-zA-Z0-9_-]/g, \"_\").slice(0, 64);\n}\n\nfunction assertReplayableAssistant(message: Message.AssistantMessage): void {\n\tlet sawToolCall = false;\n\tlet sawNonTerminalToolCall = false;\n\tlet sawTerminalToolCall = false;\n\n\tfor (const part of message.parts) {\n\t\tif (part.type === \"image\") {\n\t\t\tthrow new Error(\"Anthropic replay does not support assistant image parts\");\n\t\t}\n\n\t\tif (part.type === \"toolCall\") {\n\t\t\tsawToolCall = true;\n\t\t\tif (part.status === \"pending\" || part.status === \"running\") {\n\t\t\t\tsawNonTerminalToolCall = true;\n\t\t\t} else {\n\t\t\t\tsawTerminalToolCall = true;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (sawToolCall) {\n\t\t\tthrow new Error(\"Assistant parts after a toolCall are not replayable for Anthropic\");\n\t\t}\n\t}\n\n\tif (sawToolCall && message.stopReason !== \"toolUse\") {\n\t\tthrow new Error(\"Assistant message with tool calls must have stopReason 'toolUse'\");\n\t}\n\n\tif (!sawToolCall && message.stopReason === \"toolUse\") {\n\t\tthrow new Error(\"Assistant message with stopReason 'toolUse' must contain at least one toolCall\");\n\t}\n\n\tif (sawTerminalToolCall && sawNonTerminalToolCall) {\n\t\tthrow new Error(\"Assistant message cannot mix terminal and non-terminal toolCall states\");\n\t}\n}\n\nfunction buildSyntheticToolResult(\n\tblock: Extract<Message.ToolCall, { status: \"pending\" | \"running\" }>,\n): ContentBlockParam {\n\treturn {\n\t\ttype: \"tool_result\",\n\t\ttool_use_id: block.callID,\n\t\tcontent: convertContentBlocks([\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: [\"<result>\", \"No Result Provided\", \"</result>\"].join(\"\\n\"),\n\t\t\t},\n\t\t]),\n\t\tis_error: true,\n\t};\n}\n\nfunction convertMessages(\n\tmessages: Message.Message[],\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.anthropicMessages>,\n\tisOAuthToken: boolean,\n\tcacheControl?: { type: \"ephemeral\"; ttl?: \"1h\" },\n): MessageParam[] {\n\tconst params: MessageParam[] = [];\n\tconst transformedMessages = Message.transformMessages(messages, model, normalizeToolCallId);\n\n\tfor (const msg of transformedMessages) {\n\t\tif (msg.role === \"user\") {\n\t\t\tconst blocks: ContentBlockParam[] = msg.parts.map((item) => {\n\t\t\t\tif (item.type === \"text\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: sanitizeSurrogates(item.text),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\ttype: \"image\",\n\t\t\t\t\tsource: {\n\t\t\t\t\t\ttype: \"base64\",\n\t\t\t\t\t\tmedia_type: item.mimeType as \"image/jpeg\" | \"image/png\" | \"image/gif\" | \"image/webp\",\n\t\t\t\t\t\tdata: item.data,\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t});\n\t\t\tlet filteredBlocks = !model.input.includes(\"image\") ? blocks.filter((b) => b.type !== \"image\") : blocks;\n\t\t\tfilteredBlocks = filteredBlocks.filter((b) => (b.type === \"text\" ? b.text.trim().length > 0 : true));\n\t\t\tif (filteredBlocks.length === 0) continue;\n\t\t\tparams.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: filteredBlocks,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (msg.stopReason === \"error\" || msg.stopReason === \"aborted\") {\n\t\t\tcontinue;\n\t\t}\n\n\t\tassertReplayableAssistant(msg);\n\n\t\tconst assistantBlocks: ContentBlockParam[] = [];\n\t\tconst toolResults: ContentBlockParam[] = [];\n\n\t\tfor (const block of msg.parts) {\n\t\t\tif (block.type === \"text\") {\n\t\t\t\tif (block.text.trim().length === 0) continue;\n\t\t\t\tassistantBlocks.push({\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: sanitizeSurrogates(block.text),\n\t\t\t\t});\n\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\tif (block.thinking.trim().length === 0) continue;\n\t\t\t\tif (!block.thinkingSignature || block.thinkingSignature.trim().length === 0) {\n\t\t\t\t\tassistantBlocks.push({\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\tassistantBlocks.push({\n\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\tthinking: sanitizeSurrogates(block.thinking),\n\t\t\t\t\t\tsignature: block.thinkingSignature,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\tassistantBlocks.push({\n\t\t\t\t\ttype: \"tool_use\",\n\t\t\t\t\tid: block.callID,\n\t\t\t\t\tname: isOAuthToken ? toClaudeCodeName(block.name) : block.name,\n\t\t\t\t\tinput: block.arguments ?? {},\n\t\t\t\t});\n\n\t\t\t\tif (block.status === \"pending\" || block.status === \"running\") {\n\t\t\t\t\ttoolResults.push(buildSyntheticToolResult(block));\n\t\t\t\t} else {\n\t\t\t\t\ttoolResults.push({\n\t\t\t\t\t\ttype: \"tool_result\",\n\t\t\t\t\t\ttool_use_id: block.callID,\n\t\t\t\t\t\tcontent: convertContentBlocks(block.result.content),\n\t\t\t\t\t\tis_error: block.result.isError,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (assistantBlocks.length > 0) {\n\t\t\tparams.push({\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: assistantBlocks,\n\t\t\t});\n\t\t}\n\n\t\tif (toolResults.length > 0) {\n\t\t\tparams.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: toolResults,\n\t\t\t});\n\t\t}\n\t}\n\n\tif (cacheControl && params.length > 0) {\n\t\tconst lastMessage = params[params.length - 1]!;\n\t\tif (lastMessage.role === \"user\") {\n\t\t\tif (Array.isArray(lastMessage.content)) {\n\t\t\t\tconst lastBlock = lastMessage.content[lastMessage.content.length - 1];\n\t\t\t\tif (\n\t\t\t\t\tlastBlock &&\n\t\t\t\t\t(lastBlock.type === \"text\" || lastBlock.type === \"image\" || lastBlock.type === \"tool_result\")\n\t\t\t\t) {\n\t\t\t\t\t(lastBlock as { cache_control?: { type: \"ephemeral\"; ttl?: \"1h\" } }).cache_control = cacheControl;\n\t\t\t\t}\n\t\t\t} else if (typeof lastMessage.content === \"string\") {\n\t\t\t\tlastMessage.content = [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: lastMessage.content,\n\t\t\t\t\t\tcache_control: cacheControl,\n\t\t\t\t\t},\n\t\t\t\t] as any;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn params;\n}\n\nfunction convertTools(tools: Message.Tool[], isOAuthToken: boolean): Anthropic.Messages.Tool[] {\n\tif (!tools) return [];\n\n\treturn tools.map((tool) => {\n\t\tconst jsonSchema = tool.parameters as any; // TypeBox already generates JSON Schema\n\n\t\treturn {\n\t\t\tname: isOAuthToken ? toClaudeCodeName(tool.name) : tool.name,\n\t\t\tdescription: tool.description,\n\t\t\tinput_schema: {\n\t\t\t\ttype: \"object\" as const,\n\t\t\t\tproperties: jsonSchema.properties || {},\n\t\t\t\trequired: jsonSchema.required || [],\n\t\t\t},\n\t\t};\n\t});\n}\n\ntype AnthropicStopReason = Anthropic.Messages.StopReason | \"sensitive\";\n\nfunction mapStopReason(reason: AnthropicStopReason): Message.StopReason {\n\tswitch (reason) {\n\t\tcase \"end_turn\":\n\t\t\treturn \"stop\";\n\t\tcase \"max_tokens\":\n\t\t\treturn \"length\";\n\t\tcase \"tool_use\":\n\t\t\treturn \"toolUse\";\n\t\tcase \"pause_turn\":\n\t\tcase \"stop_sequence\":\n\t\t\treturn \"stop\";\n\t\tcase \"refusal\":\n\t\tcase \"sensitive\":\n\t\t\treturn \"error\";\n\t\tdefault:\n\t\t\tthrow new Error(\"Unhandled Anthropic stop reason\");\n\t}\n}\n\nfunction buildParams(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.anthropicMessages>,\n\tcontext: Message.Context,\n\tisOAuthToken: boolean,\n\toptions?: AnthropicOptions,\n): MessageCreateParamsStreaming {\n\tconst { cacheControl } = getCacheControl(model.baseUrl, options?.cacheRetention);\n\tconst params: MessageCreateParamsStreaming = {\n\t\tmodel: model.id,\n\t\tmessages: convertMessages(context.messages, model, isOAuthToken, cacheControl),\n\t\tmax_tokens: options?.maxTokens || (model.maxTokens / 3) | 0,\n\t\tstream: true,\n\t};\n\n\tif (isOAuthToken) {\n\t\tparams.system = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: \"You are Claude Code, Anthropic's official CLI for Claude.\",\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t},\n\t\t];\n\t\tif (context.systemPrompt) {\n\t\t\tparams.system.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: sanitizeSurrogates(context.systemPrompt),\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t});\n\t\t}\n\t} else if (context.systemPrompt) {\n\t\tparams.system = [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: sanitizeSurrogates(context.systemPrompt),\n\t\t\t\t...(cacheControl ? { cache_control: cacheControl } : {}),\n\t\t\t},\n\t\t];\n\t}\n\n\tif (options?.temperature !== undefined && !options?.thinkingEnabled) {\n\t\tparams.temperature = options.temperature;\n\t}\n\n\tif (context.tools) {\n\t\tparams.tools = convertTools(context.tools, isOAuthToken);\n\t}\n\n\tif (options?.thinkingEnabled && model.reasoning) {\n\t\tparams.thinking = {\n\t\t\ttype: \"enabled\",\n\t\t\tbudget_tokens: options.thinkingBudgetTokens || 1024,\n\t\t};\n\t}\n\n\tif (options?.metadata) {\n\t\tconst userId = options.metadata.user_id;\n\t\tif (typeof userId === \"string\") {\n\t\t\tparams.metadata = { user_id: userId };\n\t\t}\n\t}\n\n\tif (options?.toolChoice) {\n\t\tparams.tool_choice = typeof options.toolChoice === \"string\" ? { type: options.toolChoice } : options.toolChoice;\n\t}\n\n\treturn params;\n}\n\ntype Block = (Message.ThinkingContent | Message.TextContent | (Message.ToolCall & { partialJson: string })) & {\n\tindex: number;\n};\n\nexport const streamAnthropic: Stream.StreamFunction<\n\ttypeof Model.KnownProtocolEnum.anthropicMessages,\n\tAnthropicOptions\n> = (\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.anthropicMessages>,\n\tcontext: Message.Context,\n\toptions?: AnthropicOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\tvoid (async () => {\n\t\tconst output = Message.createAssistantMessage({\n\t\t\trole: \"assistant\",\n\t\t\tparts: [],\n\t\t\tprotocol: model.protocol,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"stop\",\n\t\t\ttime: {\n\t\t\t\tcreated: Date.now(),\n\t\t\t\tcompleted: Date.now(),\n\t\t\t},\n\t\t});\n\n\t\ttry {\n\t\t\tlet client: Anthropic;\n\t\t\tlet isOAuthToken: boolean;\n\n\t\t\tif (options?.client) {\n\t\t\t\tclient = options.client;\n\t\t\t\tisOAuthToken = false;\n\t\t\t} else {\n\t\t\t\tconst apiKey = options?.apiKey ?? getEnvApiKey(model.provider);\n\t\t\t\tif (!apiKey) {\n\t\t\t\t\tthrow new Error(`No API key for provider: ${model.provider.id}`);\n\t\t\t\t}\n\n\t\t\t\tconst created = createClient(model, apiKey, options?.interleavedThinking ?? true, options?.headers);\n\t\t\t\tclient = created.client;\n\t\t\t\tisOAuthToken = created.isOAuthToken;\n\t\t\t}\n\n\t\t\tlet params = buildParams(model, context, isOAuthToken, options);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as MessageCreateParamsStreaming;\n\t\t\t}\n\t\t\tconst anthropicStream = client.messages.stream({ ...params, stream: true }, { signal: options?.signal });\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tconst blocks = output.parts as Block[];\n\n\t\t\tfor await (const event of anthropicStream) {\n\t\t\t\tif (event.type === \"message_start\") {\n\t\t\t\t\toutput.responseId = event.message.id;\n\t\t\t\t\t// Capture initial token usage from message_start event\n\t\t\t\t\t// This ensures we have input token counts even if the stream is aborted early\n\t\t\t\t\toutput.usage.input = event.message.usage.input_tokens || 0;\n\t\t\t\t\toutput.usage.output = event.message.usage.output_tokens || 0;\n\t\t\t\t\toutput.usage.cacheRead = event.message.usage.cache_read_input_tokens || 0;\n\t\t\t\t\toutput.usage.cacheWrite = event.message.usage.cache_creation_input_tokens || 0;\n\t\t\t\t\t// Anthropic doesn't provide total_tokens, compute from components\n\t\t\t\t\toutput.usage.totalTokens =\n\t\t\t\t\t\toutput.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n\t\t\t\t\tModel.calculateCost(model, output.usage);\n\t\t\t\t} else if (event.type === \"content_block_start\") {\n\t\t\t\t\tif (event.content_block.type === \"text\") {\n\t\t\t\t\t\tconst block: Block = { type: \"text\", text: \"\", index: event.index };\n\t\t\t\t\t\toutput.parts.push(block); // push the block to parts\n\t\t\t\t\t\t// `contentIndex` points to the index of the block within parts\n\t\t\t\t\t\t// Useful for replaying message and corresponding parts based on stream.\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"text.start\",\n\t\t\t\t\t\t\tpartIndex: output.parts.length - 1,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (event.content_block.type === \"thinking\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: \"\",\n\t\t\t\t\t\t\tthinkingSignature: \"\",\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.parts.push(block);\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking.start\",\n\t\t\t\t\t\t\tpartIndex: output.parts.length - 1,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (event.content_block.type === \"redacted_thinking\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: \"[Reasoning redacted]\",\n\t\t\t\t\t\t\tthinkingSignature: event.content_block.data,\n\t\t\t\t\t\t\tredacted: true,\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.parts.push(block);\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking.start\",\n\t\t\t\t\t\t\tpartIndex: output.parts.length - 1,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (event.content_block.type === \"tool_use\") {\n\t\t\t\t\t\tconst block: Block = {\n\t\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\t\tcallID: event.content_block.id,\n\t\t\t\t\t\t\tname: isOAuthToken\n\t\t\t\t\t\t\t\t? fromClaudeCodeName(event.content_block.name, context.tools)\n\t\t\t\t\t\t\t\t: event.content_block.name,\n\t\t\t\t\t\t\targuments: (event.content_block.input as Record<string, any>) ?? {},\n\t\t\t\t\t\t\tpartialJson: \"\",\n\t\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\t\ttime: {\n\t\t\t\t\t\t\t\tstart: Date.now(),\n\t\t\t\t\t\t\t\tend: Date.now(),\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tindex: event.index,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.parts.push(block);\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"toolcall.start\",\n\t\t\t\t\t\t\tpartIndex: output.parts.length - 1,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"content_block_delta\") {\n\t\t\t\t\t// *_delta updates existing block part\n\t\t\t\t\t// filtered based on event identifier `event.index` (not to confuse with array indices)\n\t\t\t\t\t// index persisted on block(part) with `index`\n\t\t\t\t\tconst partIndex = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\tconst block = blocks[partIndex];\n\t\t\t\t\tif (!block) continue; // block doesn't exist for delta, move on\n\n\t\t\t\t\tif (event.delta.type === \"text_delta\" && block.type === \"text\") {\n\t\t\t\t\t\tblock.text += event.delta.text; // mutates block, implicitly mutating block in output.parts\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"text.delta\",\n\t\t\t\t\t\t\tpartIndex: partIndex,\n\t\t\t\t\t\t\tdelta: event.delta.text,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (event.delta.type === \"thinking_delta\" && block.type === \"thinking\") {\n\t\t\t\t\t\tblock.thinking += event.delta.thinking;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking.delta\",\n\t\t\t\t\t\t\tpartIndex: partIndex,\n\t\t\t\t\t\t\tdelta: event.delta.thinking,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (event.delta.type === \"input_json_delta\" && block.type === \"toolCall\") {\n\t\t\t\t\t\tblock.partialJson += event.delta.partial_json;\n\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"toolcall.delta\",\n\t\t\t\t\t\t\tpartIndex: partIndex,\n\t\t\t\t\t\t\tdelta: event.delta.partial_json,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (event.delta.type === \"signature_delta\" && block.type === \"thinking\") {\n\t\t\t\t\t\tblock.thinkingSignature = block.thinkingSignature || \"\";\n\t\t\t\t\t\tblock.thinkingSignature += event.delta.signature;\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"content_block_stop\") {\n\t\t\t\t\tconst partIndex = blocks.findIndex((b) => b.index === event.index);\n\t\t\t\t\tconst block = blocks[partIndex];\n\t\t\t\t\tif (block) {\n\t\t\t\t\t\tdelete (block as any).index; // clear block index; used for internal loop state\n\t\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"text.end\",\n\t\t\t\t\t\t\t\tpartIndex: partIndex,\n\t\t\t\t\t\t\t\tcontent: block.text,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"thinking.end\",\n\t\t\t\t\t\t\t\tpartIndex: partIndex,\n\t\t\t\t\t\t\t\tcontent: block.thinking,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\t\t\tblock.arguments = parseStreamingJson(block.partialJson);\n\t\t\t\t\t\t\tdelete (block as any).partialJson; // clear partialJson; used for internal loop state\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall.end\",\n\t\t\t\t\t\t\t\tpartIndex: partIndex,\n\t\t\t\t\t\t\t\ttoolCall: block,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (event.type === \"message_delta\") {\n\t\t\t\t\tif (event.delta.stop_reason) {\n\t\t\t\t\t\toutput.stopReason = mapStopReason(event.delta.stop_reason);\n\t\t\t\t\t}\n\t\t\t\t\t// Only update usage fields if present (not null).\n\t\t\t\t\t// Preserves input_tokens from message_start when proxies omit it in message_delta.\n\t\t\t\t\tif (event.usage.input_tokens != null) {\n\t\t\t\t\t\toutput.usage.input = event.usage.input_tokens;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.usage.output_tokens != null) {\n\t\t\t\t\t\toutput.usage.output = event.usage.output_tokens;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.usage.cache_read_input_tokens != null) {\n\t\t\t\t\t\toutput.usage.cacheRead = event.usage.cache_read_input_tokens;\n\t\t\t\t\t}\n\t\t\t\t\tif (event.usage.cache_creation_input_tokens != null) {\n\t\t\t\t\t\toutput.usage.cacheWrite = event.usage.cache_creation_input_tokens;\n\t\t\t\t\t}\n\t\t\t\t\t// Anthropic doesn't provide total_tokens, compute from components\n\t\t\t\t\toutput.usage.totalTokens =\n\t\t\t\t\t\toutput.usage.input + output.usage.output + output.usage.cacheRead + output.usage.cacheWrite;\n\t\t\t\t\tModel.calculateCost(model, output.usage);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\t\t\tif (output.stopReason === \"aborted\" || output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(\"An unknown error occurred\");\n\t\t\t}\n\n\t\t\toutput.time.completed = Date.now();\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.parts) delete (block as { index?: number }).index;\n\t\t\toutput.time.completed = Date.now();\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = error instanceof Error ? error.message : JSON.stringify(error);\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimpleAnthropic: Stream.StreamFunction<\n\ttypeof Model.KnownProtocolEnum.anthropicMessages,\n\tStream.SimpleOptions\n> = (\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.anthropicMessages>,\n\tcontext: Message.Context,\n\toptions?: Stream.SimpleOptions,\n): AssistantMessageEventStream => {\n\tconst apiKey = options?.apiKey || getEnvApiKey(model.provider);\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider.id}`);\n\t}\n\n\tconst base = Stream.buildBaseOptions(model, options, apiKey);\n\tif (!options?.reasoning) {\n\t\treturn streamAnthropic(model, context, {\n\t\t\t...base,\n\t\t\tthinkingEnabled: false,\n\t\t} satisfies AnthropicOptions);\n\t}\n\n\tconst adjusted = Stream.adjustMaxTokensForThinking(\n\t\tbase.maxTokens || 0,\n\t\tmodel.maxTokens,\n\t\toptions.reasoning,\n\t\toptions.thinkingBudgets,\n\t);\n\n\treturn streamAnthropic(model, context, {\n\t\t...base,\n\t\tmaxTokens: adjusted.maxTokens,\n\t\tthinkingEnabled: true,\n\t\tthinkingBudgetTokens: adjusted.thinkingBudget,\n\t} satisfies AnthropicOptions);\n};\n\nconst anthropicProtocolProvider: Stream.ProtocolProvider<\n\ttypeof Model.KnownProtocolEnum.anthropicMessages,\n\tAnthropicOptions\n> = {\n\tprotocol: Model.KnownProtocolEnum.anthropicMessages,\n\tstream: streamAnthropic,\n\tstreamSimple: streamSimpleAnthropic,\n};\n\nexport default anthropicProtocolProvider;\n","import type { Message } from \"../../../message/message\";\n\n// Copilot expects X-Initiator to indicate whether the request is user-initiated\n// or agent-initiated (e.g. follow-up after assistant/tool messages).\nexport function inferCopilotInitiator(messages: Message.Message[]): \"user\" | \"agent\" {\n\tconst last = messages[messages.length - 1];\n\treturn last && last.role !== \"user\" ? \"agent\" : \"user\";\n}\n\n// Copilot requires Copilot-Vision-Request header when sending images\nexport function hasCopilotVisionInput(messages: Message.Message[]): boolean {\n\treturn messages.some((msg) => {\n\t\tif (msg.role === \"user\") {\n\t\t\treturn msg.parts.some((c) => c.type === \"image\");\n\t\t}\n\t\treturn false;\n\t});\n}\n\nexport function buildCopilotDynamicHeaders(params: {\n\tmessages: Message.Message[];\n\thasImages: boolean;\n}): Record<string, string> {\n\tconst headers: Record<string, string> = {\n\t\t\"X-Initiator\": inferCopilotInitiator(params.messages),\n\t\t\"Openai-Intent\": \"conversation-edits\",\n\t};\n\n\tif (params.hasImages) {\n\t\theaders[\"Copilot-Vision-Request\"] = \"true\";\n\t}\n\n\treturn headers;\n}\n","import OpenAI from \"openai\";\nimport type {\n\tChatCompletionAssistantMessageParam,\n\tChatCompletionContentPart,\n\tChatCompletionContentPartImage,\n\tChatCompletionContentPartText,\n\tChatCompletionMessageParam,\n\tChatCompletionToolMessageParam,\n} from \"openai/resources/chat/completions.js\";\nimport { Message } from \"../../../message/message\";\nimport { Model } from \"../../../model/model\";\nimport { AssistantMessageEventStream } from \"../../../utils/eventstream\";\nimport { parseStreamingJson } from \"../../../utils/jsonparse\";\nimport { sanitizeSurrogates } from \"../../../utils/sanitize\";\nimport { Provider } from \"../../provider\";\nimport { Stream } from \"../../stream\";\nimport { buildCopilotDynamicHeaders, hasCopilotVisionInput } from \"../github/github\";\nimport { getEnvApiKey } from \"../utils\";\n\ntype OpenAIReasoningEffort = keyof Provider.StrictReasoningEffortMap;\n\ntype StreamingToolCallBlock = Message.ToolCall & {\n\tindex?: number;\n\tpartialArgs?: string;\n\tstreamIndex?: number;\n};\n\ntype StreamingBlock =\n\t| (Message.TextContent & { index?: number })\n\t| (Message.ThinkingContent & { index?: number })\n\t| StreamingToolCallBlock;\n\nfunction hasToolHistory(messages: Message.Message[]): boolean {\n\tfor (const msg of messages) {\n\t\tif (msg.role !== \"assistant\") continue;\n\t\tif (msg.parts.some((block) => block.type === \"toolCall\")) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n}\n\nfunction buildSyntheticToolResult(\n\tblock: Extract<Message.ToolCall, { status: \"pending\" | \"running\" }>,\n\tcompat: Required<Model.OpenAICompletionsCompat>,\n): ChatCompletionToolMessageParam {\n\tconst message: ChatCompletionToolMessageParam = {\n\t\trole: \"tool\",\n\t\tcontent: [\"<result>\", \"No Result Provided\", \"</result>\"].join(\"\\n\"),\n\t\ttool_call_id: block.callID,\n\t};\n\tif (compat.requiresToolResultName) {\n\t\t(message as ChatCompletionToolMessageParam & { name?: string }).name = block.name;\n\t}\n\treturn message;\n}\n\nexport interface OpenAICompletionsOptions extends Stream.Options {\n\ttoolChoice?: \"auto\" | \"none\" | \"required\" | { type: \"function\"; function: { name: string } };\n\treasoningEffort?: OpenAIReasoningEffort;\n}\n\nfunction resolveBaseUrl(model: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>): string {\n\treturn model.baseUrl || (model.provider.id === Provider.KnownProviderEnum.openai ? \"https://api.openai.com/v1\" : \"\");\n}\n\nexport const streamOpenAICompletions: Stream.StreamFunction<\n\ttypeof Model.KnownProtocolEnum.openaiCompletions,\n\tOpenAICompletionsOptions\n> = (\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n\tcontext: Message.Context,\n\toptions?: OpenAICompletionsOptions,\n): AssistantMessageEventStream => {\n\tconst stream = new AssistantMessageEventStream();\n\n\tvoid (async () => {\n\t\tconst output = Message.createAssistantMessage({\n\t\t\trole: \"assistant\",\n\t\t\tparts: [],\n\t\t\tprotocol: model.protocol,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: \"stop\",\n\t\t\ttime: {\n\t\t\t\tcreated: Date.now(),\n\t\t\t\tcompleted: Date.now(),\n\t\t\t},\n\t\t});\n\n\t\ttry {\n\t\t\tconst apiKey = options?.apiKey || getEnvApiKey(model.provider) || \"\";\n\t\t\tconst client = createClient(model, context, apiKey, options?.headers);\n\t\t\tlet params = buildParams(model, context, options);\n\t\t\tconst nextParams = await options?.onPayload?.(params, model);\n\t\t\tif (nextParams !== undefined) {\n\t\t\t\tparams = nextParams as OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming;\n\t\t\t}\n\n\t\t\tconst openaiStream = await client.chat.completions.create(params, { signal: options?.signal });\n\t\t\tstream.push({ type: \"start\", partial: output });\n\n\t\t\tlet currentBlock: Exclude<StreamingBlock, StreamingToolCallBlock> | null = null;\n\t\t\tconst blocks = output.parts as StreamingBlock[];\n\t\t\tconst activeToolCalls = new Map<number, StreamingToolCallBlock>();\n\t\t\tconst finishCurrentBlock = (block?: StreamingBlock | null) => {\n\t\t\t\tif (block) {\n\t\t\t\t\tconst partIndex = block.index ?? blocks.indexOf(block);\n\t\t\t\t\tdelete block.index;\n\n\t\t\t\t\tif (block.type === \"text\") {\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"text.end\",\n\t\t\t\t\t\t\tpartIndex,\n\t\t\t\t\t\t\tcontent: block.text,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (block.type === \"thinking\") {\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking.end\",\n\t\t\t\t\t\t\tpartIndex,\n\t\t\t\t\t\t\tcontent: block.thinking,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t} else if (block.type === \"toolCall\") {\n\t\t\t\t\t\tif (block.streamIndex !== undefined) {\n\t\t\t\t\t\t\tactiveToolCalls.delete(block.streamIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock.arguments = parseStreamingJson<Record<string, unknown>>(block.partialArgs);\n\t\t\t\t\t\tdelete block.partialArgs;\n\t\t\t\t\t\tdelete block.streamIndex;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"toolcall.end\",\n\t\t\t\t\t\t\tpartIndex,\n\t\t\t\t\t\t\ttoolCall: block,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst flushActiveToolCalls = () => {\n\t\t\t\tfor (const toolBlock of [...activeToolCalls.values()].sort((a, b) => (a.index ?? 0) - (b.index ?? 0))) {\n\t\t\t\t\tfinishCurrentBlock(toolBlock);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tfor await (const chunk of openaiStream) {\n\t\t\t\tif (!chunk || typeof chunk !== \"object\") continue;\n\n\t\t\t\t// OpenAI documents ChatCompletionChunk.id as the unique chat completion identifier,\n\t\t\t\t// and each chunk in a streamed completion carries the same id.\n\t\t\t\toutput.responseId ||= chunk.id;\n\t\t\t\tif (chunk.usage) {\n\t\t\t\t\toutput.usage = parseChunkUsage(chunk.usage, model);\n\t\t\t\t}\n\n\t\t\t\tconst choice = Array.isArray(chunk.choices) ? chunk.choices[0] : undefined;\n\t\t\t\tif (!choice) continue;\n\n\t\t\t\t// fallback: some providers (e.g., Moonshot) return usage\n\t\t\t\t// in choice.usage instead of the standard chunk.usage\n\t\t\t\tconst choiceWithUsage = choice as unknown as {\n\t\t\t\t\tusage?: Parameters<typeof parseChunkUsage>[0];\n\t\t\t\t};\n\t\t\t\tif (!chunk.usage && choiceWithUsage.usage) {\n\t\t\t\t\toutput.usage = parseChunkUsage(choiceWithUsage.usage, model);\n\t\t\t\t}\n\n\t\t\t\tif (choice.finish_reason) {\n\t\t\t\t\tconst finishReasonResult = mapStopReason(choice.finish_reason);\n\t\t\t\t\toutput.stopReason = finishReasonResult.stopReason;\n\t\t\t\t\tif (finishReasonResult.errorMessage) {\n\t\t\t\t\t\toutput.errorMessage = finishReasonResult.errorMessage;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!choice.delta) continue;\n\n\t\t\t\tif (\n\t\t\t\t\tchoice.delta.content !== null &&\n\t\t\t\t\tchoice.delta.content !== undefined &&\n\t\t\t\t\tchoice.delta.content.length > 0\n\t\t\t\t) {\n\t\t\t\t\tif (activeToolCalls.size > 0) {\n\t\t\t\t\t\tflushActiveToolCalls();\n\t\t\t\t\t}\n\t\t\t\t\tif (!currentBlock || currentBlock.type !== \"text\") {\n\t\t\t\t\t\tfinishCurrentBlock(currentBlock);\n\t\t\t\t\t\tcurrentBlock = { type: \"text\", text: \"\", index: output.parts.length };\n\t\t\t\t\t\toutput.parts.push(currentBlock);\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"text.start\",\n\t\t\t\t\t\t\tpartIndex: currentBlock.index!,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentBlock.type === \"text\") {\n\t\t\t\t\t\tcurrentBlock.text += choice.delta.content;\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"text.delta\",\n\t\t\t\t\t\t\tpartIndex: currentBlock.index!,\n\t\t\t\t\t\t\tdelta: choice.delta.content,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// some endpoints return reasoning in reasoning_content (llama.cpp),\n\t\t\t\t// or reasoning (other openai compatible endpoints)\n\t\t\t\t// Use the first non-empty reasoning field to avoid duplication\n\t\t\t\t// (e.g., chutes.ai returns both reasoning_content and reasoning with same content)\n\t\t\t\tconst reasoningFields = [\"reasoning_content\", \"reasoning\", \"reasoning_text\"] as const;\n\t\t\t\tlet foundReasoningField: (typeof reasoningFields)[number] | null = null;\n\t\t\t\tfor (const field of reasoningFields) {\n\t\t\t\t\tconst value = (choice.delta as Record<string, unknown>)[field];\n\t\t\t\t\tif (typeof value === \"string\" && value.length > 0) {\n\t\t\t\t\t\tfoundReasoningField = field;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (foundReasoningField) {\n\t\t\t\t\tif (activeToolCalls.size > 0) {\n\t\t\t\t\t\tflushActiveToolCalls();\n\t\t\t\t\t}\n\t\t\t\t\tif (!currentBlock || currentBlock.type !== \"thinking\") {\n\t\t\t\t\t\tfinishCurrentBlock(currentBlock);\n\t\t\t\t\t\tcurrentBlock = {\n\t\t\t\t\t\t\ttype: \"thinking\",\n\t\t\t\t\t\t\tthinking: \"\",\n\t\t\t\t\t\t\tthinkingSignature: foundReasoningField,\n\t\t\t\t\t\t\tindex: output.parts.length,\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutput.parts.push(currentBlock);\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"thinking.start\",\n\t\t\t\t\t\t\tpartIndex: currentBlock.index!,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tif (currentBlock.type === \"thinking\") {\n\t\t\t\t\t\tconst delta = (choice.delta as Record<string, unknown>)[foundReasoningField];\n\t\t\t\t\t\tif (typeof delta === \"string\") {\n\t\t\t\t\t\t\tcurrentBlock.thinking += delta;\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"thinking.delta\",\n\t\t\t\t\t\t\t\tpartIndex: currentBlock.index!,\n\t\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (choice.delta.tool_calls) {\n\t\t\t\t\tif (currentBlock) {\n\t\t\t\t\t\tfinishCurrentBlock(currentBlock);\n\t\t\t\t\t\tcurrentBlock = null;\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (const toolCall of choice.delta.tool_calls) {\n\t\t\t\t\t\tconst streamIndex = toolCall.index ?? activeToolCalls.size;\n\t\t\t\t\t\tlet toolBlock = activeToolCalls.get(streamIndex);\n\t\t\t\t\t\tif (!toolBlock) {\n\t\t\t\t\t\t\ttoolBlock = {\n\t\t\t\t\t\t\t\ttype: \"toolCall\",\n\t\t\t\t\t\t\t\tcallID: toolCall.id || \"\",\n\t\t\t\t\t\t\t\tname: toolCall.function?.name || \"\",\n\t\t\t\t\t\t\t\targuments: {},\n\t\t\t\t\t\t\t\tpartialArgs: \"\",\n\t\t\t\t\t\t\t\tindex: output.parts.length,\n\t\t\t\t\t\t\t\tstreamIndex,\n\t\t\t\t\t\t\t\tstatus: \"pending\",\n\t\t\t\t\t\t\t\ttime: {\n\t\t\t\t\t\t\t\t\tstart: Date.now(),\n\t\t\t\t\t\t\t\t\tend: Date.now(),\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\tactiveToolCalls.set(streamIndex, toolBlock);\n\t\t\t\t\t\t\toutput.parts.push(toolBlock);\n\t\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\t\ttype: \"toolcall.start\",\n\t\t\t\t\t\t\t\tpartIndex: toolBlock.index!,\n\t\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (toolCall.id) toolBlock.callID = toolCall.id;\n\t\t\t\t\t\tif (toolCall.function?.name) toolBlock.name = toolCall.function.name;\n\n\t\t\t\t\t\tlet delta = \"\";\n\t\t\t\t\t\tif (toolCall.function?.arguments) {\n\t\t\t\t\t\t\tdelta = toolCall.function.arguments;\n\t\t\t\t\t\t\ttoolBlock.partialArgs = (toolBlock.partialArgs || \"\") + delta;\n\t\t\t\t\t\t\ttoolBlock.arguments = parseStreamingJson<Record<string, unknown>>(toolBlock.partialArgs);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ttoolBlock.time.end = Date.now();\n\t\t\t\t\t\tstream.push({\n\t\t\t\t\t\t\ttype: \"toolcall.delta\",\n\t\t\t\t\t\t\tpartIndex: toolBlock.index!,\n\t\t\t\t\t\t\tdelta,\n\t\t\t\t\t\t\tpartial: output,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst reasoningDetails = (choice.delta as { reasoning_details?: Array<Record<string, unknown>> })\n\t\t\t\t\t.reasoning_details;\n\t\t\t\tif (reasoningDetails && Array.isArray(reasoningDetails)) {\n\t\t\t\t\tfor (const detail of reasoningDetails) {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdetail.type === \"reasoning.encrypted\" &&\n\t\t\t\t\t\t\ttypeof detail.id === \"string\" &&\n\t\t\t\t\t\t\tdetail.data !== undefined\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst matchingToolCall = output.parts.find(\n\t\t\t\t\t\t\t\t(block) => block.type === \"toolCall\" && block.callID === detail.id,\n\t\t\t\t\t\t\t) as Message.ToolCall | undefined;\n\t\t\t\t\t\t\tif (matchingToolCall) {\n\t\t\t\t\t\t\t\tmatchingToolCall.thoughtSignature = JSON.stringify(detail);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfinishCurrentBlock(currentBlock);\n\t\t\tflushActiveToolCalls();\n\t\t\tif (options?.signal?.aborted) {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\t\t\tif (output.stopReason === \"aborted\") {\n\t\t\t\tthrow new Error(\"Request was aborted\");\n\t\t\t}\n\t\t\tif (output.stopReason === \"error\") {\n\t\t\t\tthrow new Error(output.errorMessage || \"Provider returned an error stop reason\");\n\t\t\t}\n\n\t\t\toutput.time.completed = Date.now();\n\t\t\tstream.push({ type: \"done\", reason: output.stopReason, message: output });\n\t\t\tstream.end();\n\t\t} catch (error) {\n\t\t\tfor (const block of output.parts) {\n\t\t\t\tdelete (block as StreamingBlock).index;\n\t\t\t\tdelete (block as StreamingToolCallBlock).partialArgs;\n\t\t\t\tdelete (block as StreamingToolCallBlock).streamIndex;\n\t\t\t}\n\t\t\toutput.time.completed = Date.now();\n\t\t\toutput.stopReason = options?.signal?.aborted ? \"aborted\" : \"error\";\n\t\t\toutput.errorMessage = error instanceof Error ? error.message : JSON.stringify(error);\n\t\t\tconst rawMetadata = (error as { error?: { metadata?: { raw?: string } } })?.error?.metadata?.raw;\n\t\t\tif (rawMetadata) output.errorMessage += `\\n${rawMetadata}`;\n\t\t\tstream.push({ type: \"error\", reason: output.stopReason, error: output });\n\t\t\tstream.end();\n\t\t}\n\t})();\n\n\treturn stream;\n};\n\nexport const streamSimpleOpenAICompletions: Stream.StreamFunction<\n\ttypeof Model.KnownProtocolEnum.openaiCompletions,\n\tStream.SimpleOptions\n> = (\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n\tcontext: Message.Context,\n\toptions?: Stream.SimpleOptions,\n): AssistantMessageEventStream => {\n\tconst apiKey = options?.apiKey || getEnvApiKey(model.provider);\n\tif (!apiKey) {\n\t\tthrow new Error(`No API key for provider: ${model.provider.id}`);\n\t}\n\n\tconst base = Stream.buildBaseOptions(model, options, apiKey);\n\tconst simpleReasoning = Model.supportsXhigh(model) ? options?.reasoning : Stream.clampReasoning(options?.reasoning);\n\tconst reasoningEffort: OpenAIReasoningEffort | undefined =\n\t\tsimpleReasoning && simpleReasoning !== Stream.ThinkingLevelEnum.off ? simpleReasoning : undefined;\n\tconst toolChoice = (options as OpenAICompletionsOptions | undefined)?.toolChoice;\n\n\treturn streamOpenAICompletions(model, context, {\n\t\t...base,\n\t\treasoningEffort,\n\t\ttoolChoice,\n\t} satisfies OpenAICompletionsOptions);\n};\n\nfunction buildParams(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n\tcontext: Message.Context,\n\toptions?: OpenAICompletionsOptions,\n) {\n\tconst compat = getCompat(model);\n\tconst messages = convertMessages(model, context, compat);\n\tmaybeAddOpenRouterAnthropicCacheControl(model, messages);\n\t//\n\t// resolve URL\n\t// ideally this is last resort\n\tconst baseUrl = resolveBaseUrl(model);\n\n\tconst params: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = {\n\t\tmodel: model.id,\n\t\tmessages,\n\t\tstream: true,\n\t};\n\n\tif (compat.supportsUsageInStreaming !== false) {\n\t\t(params as typeof params & { stream_options?: { include_usage: boolean } }).stream_options = {\n\t\t\tinclude_usage: true,\n\t\t};\n\t}\n\n\tif (compat.supportsStore) {\n\t\tparams.store = false;\n\t}\n\n\tif (options?.maxTokens) {\n\t\tif (compat.maxTokensField === \"max_tokens\") {\n\t\t\t(params as typeof params & { max_tokens?: number }).max_tokens = options.maxTokens;\n\t\t} else {\n\t\t\tparams.max_completion_tokens = options.maxTokens;\n\t\t}\n\t}\n\n\tif (options?.temperature !== undefined) {\n\t\tparams.temperature = options.temperature;\n\t}\n\n\tif (context.tools) {\n\t\tparams.tools = convertTools(context.tools, compat);\n\t\tif (compat.zaiToolStream) {\n\t\t\t(params as typeof params & { tool_stream?: boolean }).tool_stream = true;\n\t\t}\n\t} else if (hasToolHistory(context.messages)) {\n\t\tparams.tools = [];\n\t}\n\n\tif (options?.toolChoice) {\n\t\tparams.tool_choice = options.toolChoice;\n\t}\n\n\tif ((compat.thinkingFormat === \"zai\" || compat.thinkingFormat === \"qwen\") && model.reasoning) {\n\t\t(params as typeof params & { enable_thinking?: boolean }).enable_thinking = !!options?.reasoningEffort;\n\t} else if (compat.thinkingFormat === \"qwen-chat-template\" && model.reasoning) {\n\t\t(params as typeof params & { chat_template_kwargs?: { enable_thinking: boolean } }).chat_template_kwargs = {\n\t\t\tenable_thinking: !!options?.reasoningEffort,\n\t\t};\n\t} else if (compat.thinkingFormat === \"openrouter\" && model.reasoning) {\n\t\tconst openRouterParams = params as typeof params & { reasoning?: { effort?: string } };\n\t\tif (options?.reasoningEffort) {\n\t\t\topenRouterParams.reasoning = {\n\t\t\t\teffort: mapReasoningEffort(options.reasoningEffort, compat.reasoningEffortMap),\n\t\t\t};\n\t\t} else {\n\t\t\topenRouterParams.reasoning = { effort: \"none\" };\n\t\t}\n\t} else if (options?.reasoningEffort && model.reasoning && compat.supportsReasoningEffort) {\n\t\t(params as { reasoning_effort?: string }).reasoning_effort = mapReasoningEffort(\n\t\t\toptions.reasoningEffort,\n\t\t\tcompat.reasoningEffortMap,\n\t\t);\n\t}\n\n\tif (baseUrl.includes(\"openrouter.ai\") && model.compat?.openRouterRouting) {\n\t\t(params as typeof params & { provider?: Provider.OpenRouterRouting }).provider = model.compat.openRouterRouting;\n\t}\n\n\tif (baseUrl.includes(\"ai-gateway.vercel.sh\") && model.compat?.vercelGatewayRouting) {\n\t\tconst routing = model.compat.vercelGatewayRouting;\n\t\tif (routing.only || routing.order) {\n\t\t\tconst gatewayOptions: Record<string, string[]> = {};\n\t\t\tif (routing.only) gatewayOptions.only = routing.only;\n\t\t\tif (routing.order) gatewayOptions.order = routing.order;\n\t\t\t(\n\t\t\t\tparams as typeof params & {\n\t\t\t\t\tproviderOptions?: { gateway: Record<string, string[]> };\n\t\t\t\t}\n\t\t\t).providerOptions = { gateway: gatewayOptions };\n\t\t}\n\t}\n\n\treturn params;\n}\n\nfunction createClient(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n\tcontext: Message.Context,\n\tapiKey?: string,\n\toptsHeaders?: Record<string, string>,\n) {\n\tconst baseUrl = resolveBaseUrl(model);\n\tif (!apiKey) {\n\t\tif (!process.env.OPENAI_API_KEY) {\n\t\t\tthrow new Error(\n\t\t\t\t\"OpenAI API key is required. set OPENAI_API_KEY environment variable or pass it as an argument\",\n\t\t\t);\n\t\t}\n\t\tapiKey = process.env.OPENAI_API_KEY;\n\t}\n\n\tconst headers = { ...model.headers };\n\tif (model.provider.id === Provider.KnownProviderEnum.githubCopilot) {\n\t\tconst hasImages = hasCopilotVisionInput(context.messages);\n\t\tconst copilotHeaders = buildCopilotDynamicHeaders({\n\t\t\tmessages: context.messages,\n\t\t\thasImages,\n\t\t});\n\t\tObject.assign(headers, copilotHeaders);\n\t}\n\n\tif (optsHeaders) {\n\t\tObject.assign(headers, optsHeaders);\n\t}\n\n\treturn new OpenAI({\n\t\tapiKey,\n\t\tbaseURL: baseUrl,\n\t\tdangerouslyAllowBrowser: true,\n\t\tdefaultHeaders: headers,\n\t});\n}\n\nfunction mapReasoningEffort(\n\teffort: NonNullable<OpenAICompletionsOptions[\"reasoningEffort\"]>,\n\treasoningEffortMap: Partial<Record<OpenAIReasoningEffort, string>>,\n): string {\n\treturn reasoningEffortMap[effort] ?? effort;\n}\n\nfunction maybeAddOpenRouterAnthropicCacheControl(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n\tmessages: ChatCompletionMessageParam[],\n): void {\n\tif (model.provider.id !== Provider.KnownProviderEnum.openrouter || !model.id.startsWith(\"anthropic/\")) return;\n\n\t// Anthropic-style caching requires cache_control on a text part. Add a breakpoint\n\t// on the last user/assistant message (walking backwards until we find text content).\n\tfor (let i = messages.length - 1; i >= 0; i--) {\n\t\tconst msg = messages[i];\n\t\tif (!msg) continue;\n\t\tif (msg.role !== \"user\" && msg.role !== \"assistant\") continue;\n\n\t\tconst content = msg.content;\n\t\tif (typeof content === \"string\") {\n\t\t\tmsg.content = [\n\t\t\t\tObject.assign({ type: \"text\" as const, text: content }, { cache_control: { type: \"ephemeral\" } }),\n\t\t\t];\n\t\t\treturn;\n\t\t}\n\n\t\tif (!Array.isArray(content)) continue;\n\n\t\tfor (let j = content.length - 1; j >= 0; j--) {\n\t\t\tconst part = content[j];\n\t\t\tif (part?.type === \"text\") {\n\t\t\t\tObject.assign(part, { cache_control: { type: \"ephemeral\" } });\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function convertMessages(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n\tcontext: Message.Context,\n\tcompat: Required<Model.OpenAICompletionsCompat>,\n): ChatCompletionMessageParam[] {\n\tconst params: ChatCompletionMessageParam[] = [];\n\n\tconst normalizeToolCallId = (id: string): string => {\n\t\t// handle pipe-separated IDs from OpenAI Responses API\n\t\t// format: {call_id}|{id} where {id} can be 400+ chars with special chars (+, /, =)\n\t\t// these come from providers like github-copilot, openai-codex, opencode\n\t\t// extract just the call_id part and normalize it\n\t\tif (id.includes(\"|\")) {\n\t\t\tconst callID = id.split(\"|\")[0] ?? id;\n\t\t\t// sanitize to allowed chars and truncate to 40 chars (OpenAI limit)\n\t\t\treturn callID.replace(/[^a-zA-Z0-9_-]/g, \"_\").slice(0, 40);\n\t\t}\n\n\t\tif (model.provider.id === Provider.KnownProviderEnum.openai) {\n\t\t\treturn id.length > 40 ? id.slice(0, 40) : id;\n\t\t}\n\t\treturn id;\n\t};\n\n\tconst transformedMessages = Message.transformMessages(context.messages, model, normalizeToolCallId);\n\n\tif (context.systemPrompt) {\n\t\tconst useDeveloperRole = model.reasoning && compat.supportsDeveloperRole;\n\t\tconst role = useDeveloperRole ? \"developer\" : \"system\";\n\t\tparams.push({\n\t\t\trole,\n\t\t\tcontent: sanitizeSurrogates(context.systemPrompt),\n\t\t});\n\t}\n\n\tlet lastRole: \"user\" | \"assistant\" | \"tool\" | null = null;\n\n\tfor (const msg of transformedMessages) {\n\t\t// some providers don't allow user messages directly after tool results\n\t\t// insert a synthetic assistant message to bridge the gap\n\t\tif (compat.requiresAssistantAfterToolResult && lastRole === \"tool\" && msg.role === \"user\") {\n\t\t\tparams.push({\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: \"I have processed the tool results.\",\n\t\t\t});\n\t\t\tlastRole = \"assistant\";\n\t\t}\n\n\t\tif (msg.role === \"user\") {\n\t\t\tconst content: ChatCompletionContentPart[] = msg.parts.flatMap((item): ChatCompletionContentPart[] => {\n\t\t\t\tif (item.type === \"text\") {\n\t\t\t\t\tconst text = sanitizeSurrogates(item.text);\n\t\t\t\t\tif (text.trim().length === 0) return [];\n\t\t\t\t\treturn [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\t\ttext,\n\t\t\t\t\t\t} satisfies ChatCompletionContentPartText,\n\t\t\t\t\t];\n\t\t\t\t}\n\n\t\t\t\tif (!model.input.includes(\"image\")) return [];\n\t\t\t\treturn [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"image_url\",\n\t\t\t\t\t\timage_url: {\n\t\t\t\t\t\t\turl: `data:${item.mimeType};base64,${item.data}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t} satisfies ChatCompletionContentPartImage,\n\t\t\t\t];\n\t\t\t});\n\n\t\t\tif (content.length === 0) continue;\n\n\t\t\tparams.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent,\n\t\t\t});\n\t\t\tlastRole = \"user\";\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst assistantMsg: ChatCompletionAssistantMessageParam = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: compat.requiresAssistantAfterToolResult ? \"\" : null,\n\t\t};\n\n\t\tconst textBlocks = msg.parts.filter((block) => block.type === \"text\") as Message.TextContent[];\n\t\tconst textSegments = textBlocks\n\t\t\t.map((block) => sanitizeSurrogates(block.text))\n\t\t\t.filter((text) => text.trim().length > 0);\n\n\t\tconst thinkingBlocks = msg.parts.filter((block) => block.type === \"thinking\") as Message.ThinkingContent[];\n\t\tconst nonEmptyThinkingBlocks = thinkingBlocks.filter((block) => block.thinking.trim().length > 0);\n\n\t\tif (compat.requiresThinkingAsText && nonEmptyThinkingBlocks.length > 0) {\n\t\t\ttextSegments.unshift(...nonEmptyThinkingBlocks.map((block) => sanitizeSurrogates(block.thinking)));\n\t\t} else if (nonEmptyThinkingBlocks.length > 0) {\n\t\t\tconst signature = nonEmptyThinkingBlocks[0]?.thinkingSignature;\n\t\t\tif (signature && signature.length > 0) {\n\t\t\t\t(assistantMsg as ChatCompletionAssistantMessageParam & Record<string, string>)[signature] =\n\t\t\t\t\tnonEmptyThinkingBlocks.map((block) => sanitizeSurrogates(block.thinking)).join(\"\\n\");\n\t\t\t}\n\t\t}\n\n\t\tif (textSegments.length > 0) {\n\t\t\tassistantMsg.content = textSegments.join(\"\");\n\t\t}\n\n\t\tconst toolCalls = msg.parts.filter((block) => block.type === \"toolCall\") as Message.ToolCall[];\n\t\tif (toolCalls.length > 0) {\n\t\t\tassistantMsg.tool_calls = toolCalls.map((toolCall) => ({\n\t\t\t\tid: toolCall.callID,\n\t\t\t\ttype: \"function\" as const,\n\t\t\t\tfunction: {\n\t\t\t\t\tname: toolCall.name,\n\t\t\t\t\targuments: JSON.stringify(toolCall.arguments),\n\t\t\t\t},\n\t\t\t}));\n\n\t\t\tconst reasoningDetails = toolCalls\n\t\t\t\t.filter((toolCall) => toolCall.thoughtSignature)\n\t\t\t\t.map((toolCall) => {\n\t\t\t\t\ttry {\n\t\t\t\t\t\treturn JSON.parse(toolCall.thoughtSignature!);\n\t\t\t\t\t} catch {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(Boolean);\n\n\t\t\tif (reasoningDetails.length > 0) {\n\t\t\t\t(\n\t\t\t\t\tassistantMsg as ChatCompletionAssistantMessageParam & { reasoning_details?: unknown[] }\n\t\t\t\t).reasoning_details = reasoningDetails;\n\t\t\t}\n\t\t}\n\n\t\tconst assistantContent = assistantMsg.content;\n\t\tconst hasAssistantContent =\n\t\t\tassistantContent !== null &&\n\t\t\tassistantContent !== undefined &&\n\t\t\t(typeof assistantContent === \"string\" ? assistantContent.length > 0 : assistantContent.length > 0);\n\t\tif (!hasAssistantContent && !assistantMsg.tool_calls) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tparams.push(assistantMsg);\n\t\tlastRole = \"assistant\";\n\n\t\tconst imageBlocks: Array<{ type: \"image_url\"; image_url: { url: string } }> = [];\n\n\t\tfor (const toolCall of toolCalls) {\n\t\t\tif (toolCall.status === \"pending\" || toolCall.status === \"running\") {\n\t\t\t\tparams.push(buildSyntheticToolResult(toolCall, compat));\n\t\t\t\tlastRole = \"tool\";\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst textResult = toolCall.result.content\n\t\t\t\t.filter((content) => content.type === \"text\")\n\t\t\t\t.map((content) => content.text)\n\t\t\t\t.join(\"\\n\");\n\t\t\tconst hasImages = toolCall.result.content.some((content) => content.type === \"image\");\n\n\t\t\tconst toolResultMsg: ChatCompletionToolMessageParam = {\n\t\t\t\trole: \"tool\",\n\t\t\t\tcontent: sanitizeSurrogates(textResult.length > 0 ? textResult : \"(see attached image)\"),\n\t\t\t\ttool_call_id: toolCall.callID,\n\t\t\t};\n\t\t\tif (compat.requiresToolResultName) {\n\t\t\t\t(toolResultMsg as ChatCompletionToolMessageParam & { name?: string }).name = toolCall.name;\n\t\t\t}\n\t\t\tparams.push(toolResultMsg);\n\t\t\tlastRole = \"tool\";\n\n\t\t\tif (hasImages && model.input.includes(\"image\")) {\n\t\t\t\tfor (const block of toolCall.result.content) {\n\t\t\t\t\tif (block.type === \"image\") {\n\t\t\t\t\t\timageBlocks.push({\n\t\t\t\t\t\t\ttype: \"image_url\",\n\t\t\t\t\t\t\timage_url: {\n\t\t\t\t\t\t\t\turl: `data:${block.mimeType};base64,${block.data}`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (imageBlocks.length > 0) {\n\t\t\tif (compat.requiresAssistantAfterToolResult) {\n\t\t\t\tparams.push({\n\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\tcontent: \"I have processed the tool results.\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tparams.push({\n\t\t\t\trole: \"user\",\n\t\t\t\tcontent: [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"text\",\n\t\t\t\t\t\ttext: \"Attached image(s) from tool result:\",\n\t\t\t\t\t},\n\t\t\t\t\t...imageBlocks,\n\t\t\t\t],\n\t\t\t});\n\t\t\tlastRole = \"user\";\n\t\t}\n\t}\n\n\treturn params;\n}\n\nfunction convertTools(\n\ttools: Message.Tool[],\n\tcompat: Required<Model.OpenAICompletionsCompat>,\n): OpenAI.Chat.Completions.ChatCompletionTool[] {\n\treturn tools.map((tool) => ({\n\t\ttype: \"function\",\n\t\tfunction: {\n\t\t\tname: tool.name,\n\t\t\tdescription: tool.description,\n\t\t\tparameters: tool.parameters as Record<string, unknown>,\n\t\t\t...(compat.supportsStrictMode !== false && { strict: false }),\n\t\t},\n\t}));\n}\n\nfunction parseChunkUsage(\n\trawUsage: {\n\t\tprompt_tokens?: number;\n\t\tcompletion_tokens?: number;\n\t\tprompt_tokens_details?: { cached_tokens?: number; cache_write_tokens?: number };\n\t\tcompletion_tokens_details?: { reasoning_tokens?: number };\n\t},\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n): Message.AssistantMessage[\"usage\"] {\n\tconst promptTokens = rawUsage.prompt_tokens || 0;\n\tconst reportedCachedTokens = rawUsage.prompt_tokens_details?.cached_tokens || 0;\n\tconst cacheWriteTokens = rawUsage.prompt_tokens_details?.cache_write_tokens || 0;\n\tconst reasoningTokens = rawUsage.completion_tokens_details?.reasoning_tokens || 0;\n\n\tconst cacheReadTokens =\n\t\tcacheWriteTokens > 0 ? Math.max(0, reportedCachedTokens - cacheWriteTokens) : reportedCachedTokens;\n\n\tconst input = Math.max(0, promptTokens - cacheReadTokens - cacheWriteTokens);\n\tconst outputTokens = (rawUsage.completion_tokens || 0) + reasoningTokens;\n\tconst usage: Message.AssistantMessage[\"usage\"] = {\n\t\tinput,\n\t\toutput: outputTokens,\n\t\tcacheRead: cacheReadTokens,\n\t\tcacheWrite: cacheWriteTokens,\n\t\ttotalTokens: input + outputTokens + cacheReadTokens + cacheWriteTokens,\n\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t};\n\tModel.calculateCost(model, usage);\n\treturn usage;\n}\n\nfunction mapStopReason(reason: string | null): {\n\tstopReason: Message.StopReason;\n\terrorMessage?: string;\n} {\n\tif (reason === null) return { stopReason: \"stop\" };\n\tswitch (reason) {\n\t\tcase \"stop\":\n\t\tcase \"end\":\n\t\t\treturn { stopReason: \"stop\" };\n\t\tcase \"length\":\n\t\t\treturn { stopReason: \"length\" };\n\t\tcase \"function_call\":\n\t\tcase \"tool_calls\":\n\t\t\treturn { stopReason: \"toolUse\" };\n\t\tcase \"content_filter\":\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider finish_reason: content_filter\" };\n\t\tcase \"network_error\":\n\t\t\treturn { stopReason: \"error\", errorMessage: \"Provider finish_reason: network_error\" };\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: `Provider finish_reason: ${reason}`,\n\t\t\t};\n\t}\n}\n\nfunction detectCompat(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n): Required<Model.OpenAICompletionsCompat> {\n\tconst provider = model.provider.id;\n\tconst baseUrl = resolveBaseUrl(model);\n\n\tconst isZai = provider === \"zai\" || baseUrl.includes(\"api.z.ai\");\n\tconst isNonStandard =\n\t\tprovider === \"cerebras\" ||\n\t\tbaseUrl.includes(\"cerebras.ai\") ||\n\t\tprovider === \"xai\" ||\n\t\tbaseUrl.includes(\"api.x.ai\") ||\n\t\tbaseUrl.includes(\"chutes.ai\") ||\n\t\tbaseUrl.includes(\"deepseek.com\") ||\n\t\tisZai ||\n\t\tprovider === \"opencode\" ||\n\t\tbaseUrl.includes(\"opencode.ai\");\n\n\tconst useMaxTokens = baseUrl.includes(\"chutes.ai\");\n\tconst isGrok = provider === \"xai\" || baseUrl.includes(\"api.x.ai\");\n\tconst isGroq = provider === \"groq\" || baseUrl.includes(\"groq.com\");\n\n\tconst reasoningEffortMap: Partial<Record<OpenAIReasoningEffort, string>> =\n\t\tisGroq && model.id === \"qwen/qwen3-32b\"\n\t\t\t? {\n\t\t\t\t\tminimal: \"default\",\n\t\t\t\t\tlow: \"default\",\n\t\t\t\t\tmedium: \"default\",\n\t\t\t\t\thigh: \"default\",\n\t\t\t\t\txhigh: \"default\",\n\t\t\t\t}\n\t\t\t: {};\n\n\treturn {\n\t\tsupportsStore: !isNonStandard,\n\t\tsupportsDeveloperRole: !isNonStandard,\n\t\tsupportsReasoningEffort: !isGrok && !isZai,\n\t\treasoningEffortMap,\n\t\tsupportsUsageInStreaming: true,\n\t\tmaxTokensField: useMaxTokens ? \"max_tokens\" : \"max_completion_tokens\",\n\t\trequiresToolResultName: false,\n\t\trequiresAssistantAfterToolResult: false,\n\t\trequiresThinkingAsText: false,\n\t\tthinkingFormat: isZai\n\t\t\t? \"zai\"\n\t\t\t: provider === \"openrouter\" || baseUrl.includes(\"openrouter.ai\")\n\t\t\t\t? \"openrouter\"\n\t\t\t\t: \"openai\",\n\t\topenRouterRouting: {},\n\t\tvercelGatewayRouting: {},\n\t\tzaiToolStream: false,\n\t\tsupportsStrictMode: true,\n\t};\n}\n\n/**\n * Get resolved compatibility settings for a model.\n * Uses explicit model.compat if provided, otherwise auto-detects from provider/URL.\n */\nfunction getCompat(\n\tmodel: Model.TModel<typeof Model.KnownProtocolEnum.openaiCompletions>,\n): Required<Model.OpenAICompletionsCompat> {\n\tconst detected = detectCompat(model);\n\tif (!model.compat) return detected;\n\n\treturn {\n\t\tsupportsStore: model.compat.supportsStore ?? detected.supportsStore,\n\t\tsupportsDeveloperRole: model.compat.supportsDeveloperRole ?? detected.supportsDeveloperRole,\n\t\tsupportsReasoningEffort: model.compat.supportsReasoningEffort ?? detected.supportsReasoningEffort,\n\t\treasoningEffortMap: model.compat.reasoningEffortMap ?? detected.reasoningEffortMap,\n\t\tsupportsUsageInStreaming: model.compat.supportsUsageInStreaming ?? detected.supportsUsageInStreaming,\n\t\tmaxTokensField: model.compat.maxTokensField ?? detected.maxTokensField,\n\t\trequiresToolResultName: model.compat.requiresToolResultName ?? detected.requiresToolResultName,\n\t\trequiresAssistantAfterToolResult:\n\t\t\tmodel.compat.requiresAssistantAfterToolResult ?? detected.requiresAssistantAfterToolResult,\n\t\trequiresThinkingAsText: model.compat.requiresThinkingAsText ?? detected.requiresThinkingAsText,\n\t\tthinkingFormat: model.compat.thinkingFormat ?? detected.thinkingFormat,\n\t\topenRouterRouting: model.compat.openRouterRouting ?? {},\n\t\tvercelGatewayRouting: model.compat.vercelGatewayRouting ?? detected.vercelGatewayRouting,\n\t\tzaiToolStream: model.compat.zaiToolStream ?? detected.zaiToolStream,\n\t\tsupportsStrictMode: model.compat.supportsStrictMode ?? detected.supportsStrictMode,\n\t};\n}\n\nconst openAICompletionsProtocolProvider: Stream.ProtocolProvider<\n\ttypeof Model.KnownProtocolEnum.openaiCompletions,\n\tOpenAICompletionsOptions\n> = {\n\tprotocol: Model.KnownProtocolEnum.openaiCompletions,\n\tstream: streamOpenAICompletions,\n\tstreamSimple: streamSimpleOpenAICompletions,\n};\n\nexport default openAICompletionsProtocolProvider;\n","import anthropicProvider from \"./providers/anthropic/index\";\nimport openAICompletionsProvider from \"./providers/openai/completions\";\nimport { Stream } from \"./stream\";\n\nStream.registerProtocolProvider(anthropicProvider, \"providers/anthropic/index.ts\");\nStream.registerProtocolProvider(openAICompletionsProvider, \"providers/openai/completions.ts\");\n","import { NamedError } from \"@codeworksh/utils\";\nimport Type, { type Static, type TSchema } from \"typebox\";\nimport type { Event } from \"../event/event\";\nimport { Message } from \"../message/message\";\nimport { Model } from \"../model/model\";\nimport type { Provider } from \"../provider/provider\";\nimport \"../provider/register\";\nimport { Stream } from \"../provider/stream\";\nimport { Loop } from \"./loop\";\n\nexport namespace Agent {\n\texport const ToolTerminalResultSchema = Type.Union([Message.ToolCompletedSchema, Message.ToolErrorSchema]);\n\texport const ToolResultSchema = Type.Union([\n\t\tMessage.ToolRunningSchema,\n\t\tMessage.ToolCompletedSchema,\n\t\tMessage.ToolErrorSchema,\n\t]);\n\n\texport type ToolRunningResult<T> = Omit<Static<typeof Message.ToolRunningSchema>, \"partial\"> & {\n\t\tpartial?: Omit<Static<typeof Message.ToolRunningPartial>, \"details\"> & {\n\t\t\tdetails?: T;\n\t\t};\n\t};\n\texport type ToolCompletedResult<T> = Omit<Static<typeof Message.ToolCompletedSchema>, \"result\"> & {\n\t\tresult: Omit<Static<typeof Message.ToolSuccessResult>, \"details\"> & {\n\t\t\tdetails?: T;\n\t\t};\n\t};\n\texport type ToolErrorResult<T> = Omit<Static<typeof Message.ToolErrorSchema>, \"result\"> & {\n\t\tresult: Omit<Static<typeof Message.ToolErrorResult>, \"details\"> & {\n\t\t\tdetails?: T;\n\t\t};\n\t};\n\texport type ToolTerminalResult<TCompleted = unknown, TError = unknown> =\n\t\t| ToolCompletedResult<TCompleted>\n\t\t| ToolErrorResult<TError>;\n\ttype InferSchema<T extends TSchema | undefined> = T extends TSchema ? Static<T> : unknown;\n\n\t// callback for tool execution updates.\n\t// consumers can narrow on status if needed\n\t// type inference:\n\t// U - update\n\texport type ToolUpdateCallback<U = unknown> = (result: ToolRunningResult<U>) => Promise<void> | void;\n\n\texport interface AgentTool<\n\t\tTParameters extends TSchema = TSchema,\n\t\tTOutput extends TSchema | undefined = undefined,\n\t\tTUpdate = unknown,\n\t\tTError extends TSchema | undefined = undefined,\n\t> extends Message.Tool<TParameters> {\n\t\t// A human-readable label for the tool for display\n\t\tlabel: string;\n\t\toutputSchema?: TOutput;\n\t\terrorSchema?: TError;\n\t\texecute: (\n\t\t\tcallID: string,\n\t\t\tparams: Static<TParameters>,\n\t\t\tsignal?: AbortSignal,\n\t\t\tonUpdate?: ToolUpdateCallback<TUpdate>,\n\t\t) => Promise<ToolTerminalResult<InferSchema<TOutput>, InferSchema<TError>>>;\n\t}\n\n\texport function defineTool<\n\t\tTParameters extends TSchema,\n\t\tTOutput extends TSchema | undefined = undefined,\n\t\tTUpdate = unknown,\n\t\tTError extends TSchema | undefined = undefined,\n\t>(tool: AgentTool<TParameters, TOutput, TUpdate, TError>): AgentTool<TParameters, TOutput, TUpdate, TError> {\n\t\treturn tool;\n\t}\n\n\texport type AnyAgentTool = AgentTool<any, any, any, any>;\n\n\texport interface State {\n\t\tname: string;\n\t\tsystemPrompt: string;\n\t\tmodel: Model.Info;\n\t\tthinkingLevel: Stream.ThinkingLevel;\n\t\ttools: AnyAgentTool[];\n\t\tmessages: Message.Message[];\n\t\tisStreaming: boolean;\n\t\tstreamMessage: Message.Message | null;\n\t\tpendingToolCalls: Set<string>;\n\t\terror?: string;\n\t}\n\n\t// AgentContext is like Message.Context but uses AgentTool\n\t// TODO: @sanchitrk: rename this to Context; Agent.Context\n\texport interface AgentContext {\n\t\tsystemPrompt: string;\n\t\tmessages: Message.Message[];\n\t\ttools?: AnyAgentTool[];\n\t}\n\n\texport const ToolCallInFlightSchema = Type.Object({\n\t\tcallID: Type.String(),\n\t\tname: Type.String(),\n\t\trawArgs: Type.Record(Type.String(), Type.Unknown()),\n\t\targs: Type.Optional(Type.Unknown()), // post validation\n\t});\n\texport type ToolCallInFlight = Static<typeof ToolCallInFlightSchema>;\n\n\texport const ModelNotFoundErr = NamedError.create(\n\t\t\"ModelNotFoundErr\",\n\t\tType.Object({\n\t\t\tmessage: Type.String(),\n\t\t\tprovider: Type.String(),\n\t\t\tmodel: Type.String(),\n\t\t}),\n\t);\n\n\texport const ModelNotConfiguredErr = NamedError.create(\n\t\t\"ModelNotConfiguredErr\",\n\t\tType.Object({\n\t\t\tmessage: Type.String(),\n\t\t}),\n\t);\n\n\texport interface AgentOptions {\n\t\tinitialState?: Partial<State>;\n\t\tconvertToLlm?: (messages: Message.Message[]) => Message.Message[] | Promise<Message.Message[]>;\n\t\t/**\n\t\t * Optional transform applied to the context before `convertToLlm`.\n\t\t *\n\t\t * Use this for operations that work at the AgentMessage level:\n\t\t * - Context window management (pruning old messages)\n\t\t * - Injecting context from external sources\n\t\t *\n\t\t * @example\n\t\t * ```typescript\n\t\t * transformContext: async (messages) => {\n\t\t * if (estimateTokens(messages) > MAX_TOKENS) {\n\t\t * return pruneOldMessages(messages);\n\t\t * }\n\t\t * return messages;\n\t\t * }\n\t\t * ```\n\t\t */\n\t\ttransformContext?: (messages: Message.Message[], signal?: AbortSignal) => Promise<Message.Message[]>;\n\t\t/**\n\t\t * Steering mode: \"all\" = send all steering messages at once, \"one-at-a-time\" = one per turn\n\t\t */\n\t\tsteeringMode?: \"all\" | \"one-at-a-time\";\n\n\t\t/**\n\t\t * Follow-up mode: \"all\" = send all follow-up messages at once, \"one-at-a-time\" = one per turn\n\t\t */\n\t\tfollowUpMode?: \"all\" | \"one-at-a-time\";\n\t\t/**\n\t\t * Custom stream function (for proxy backends, etc.). Default uses streamSimple.\n\t\t */\n\t\tstreamFn?: Loop.StreamFn;\n\t\t/**\n\t\t * Optional session identifier forwarded to LLM providers.\n\t\t * Used by providers that support session-based caching (e.g., OpenAI Codex).\n\t\t */\n\t\tsessionId?: string;\n\t\t/**\n\t\t * Resolves an API key dynamically for each LLM call.\n\t\t * Useful for expiring tokens (e.g., GitHub Copilot OAuth).\n\t\t */\n\t\tgetApiKey?: (provider: Provider.Info) => Promise<string | undefined> | string | undefined;\n\t\t/**\n\t\t * Inspect or replace provider payloads before they are sent.\n\t\t */\n\t\tonPayload?: Stream.SimpleOptions[\"onPayload\"];\n\t\t/**\n\t\t * Custom token budgets for thinking levels (token-based providers only).\n\t\t */\n\t\tthinkingBudgets?: Stream.ThinkingBudgets;\n\t\t/**\n\t\t * Preferred transport for providers that support multiple transports.\n\t\t */\n\t\ttransport?: Stream.Transport;\n\t\t/**\n\t\t * Maximum delay in milliseconds to wait for a retry when the server requests a long wait.\n\t\t * If the server's requested delay exceeds this value, the request fails immediately,\n\t\t * allowing higher-level retry logic to handle it with user visibility.\n\t\t * Default: 60000 (60 seconds). Set to 0 to disable the cap.\n\t\t */\n\t\tmaxRetryDelayMs?: number;\n\t\t/** Tool execution mode. Default: \"parallel\" */\n\t\ttoolExecution?: Loop.ToolExecutionMode;\n\t\t/** Called before a tool is executed, after arguments have been validated. */\n\t\tbeforeToolExecution?: (\n\t\t\tcontext: Loop.BeforeToolExecutionContext,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<Loop.BeforeToolCallResult | undefined>;\n\t\t/** Called after a tool finishes executing, before final tool events are emitted. */\n\t\tafterToolExecution?: (\n\t\t\tcontext: Loop.AfterToolExecutionContext,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<Agent.ToolTerminalResult<unknown> | undefined>;\n\t}\n\n\texport const AgentInStreamingErr = NamedError.create(\n\t\t\"AgentInStreamingErr\",\n\t\tType.Object({\n\t\t\tmessage: Type.String(),\n\t\t\tname: Type.String(),\n\t\t}),\n\t);\n\n\texport class Instance {\n\t\tprivate _state: State;\n\n\t\tprivate listeners = new Set<(e: Event.AgentEvent) => void>();\n\t\tprivate abortController?: AbortController;\n\n\t\tprivate convertToLlm: (messages: Message.Message[]) => Message.Message[] | Promise<Message.Message[]>;\n\t\tprivate transformContext?: (messages: Message.Message[], signal?: AbortSignal) => Promise<Message.Message[]>;\n\n\t\tprivate steeringQueue: Message.UserMessage[] = [];\n\t\tprivate followUpQueue: Message.UserMessage[] = [];\n\t\tprivate steeringMode: \"all\" | \"one-at-a-time\";\n\t\tprivate followUpMode: \"all\" | \"one-at-a-time\";\n\n\t\tpublic streamFn: Loop.StreamFn;\n\n\t\tprivate _sessionId?: string;\n\t\tpublic getApiKey?: (provider: Provider.Info) => Promise<string | undefined> | string | undefined;\n\n\t\tprivate _onPayload?: Stream.SimpleOptions[\"onPayload\"];\n\n\t\tprivate runningPrompt?: Promise<void>;\n\t\tprivate resolveRunningPrompt?: () => void;\n\t\tprivate _thinkingBudgets?: Stream.ThinkingBudgets;\n\t\tprivate _transport: Stream.Transport;\n\t\tprivate _maxRetryDelayMs?: number;\n\t\tprivate _toolExecution: Loop.ToolExecutionMode;\n\n\t\tprivate _beforeToolExecution?: (\n\t\t\tcontext: Loop.BeforeToolExecutionContext,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<Loop.BeforeToolCallResult | undefined>;\n\t\tprivate _afterToolExecution?: (\n\t\t\tcontext: Loop.AfterToolExecutionContext,\n\t\t\tsignal?: AbortSignal,\n\t\t) => Promise<Agent.ToolTerminalResult<unknown> | undefined>;\n\n\t\tconstructor(name: string, model: Model.Info, opts: AgentOptions = {}) {\n\t\t\tthis._state = {\n\t\t\t\tsystemPrompt: \"\",\n\t\t\t\tthinkingLevel: \"off\",\n\t\t\t\ttools: [],\n\t\t\t\tmessages: [],\n\t\t\t\tisStreaming: false,\n\t\t\t\tstreamMessage: null,\n\t\t\t\tpendingToolCalls: new Set<string>(),\n\t\t\t\terror: undefined,\n\t\t\t\t...opts.initialState,\n\t\t\t\tname,\n\t\t\t\tmodel,\n\t\t\t};\n\t\t\t/**\n\t\t\t * Transformation logic to prepare messages for the LLM.\n\t\t\t * * @remarks\n\t\t\t * Currently just forwards messages as-is. Modify this logic when\n\t\t\t * specific formatting or filtering is required.\n\t\t\t * A good example is using user message parts with custom content\n\t\t\t * * @default\n\t\t\t * forwards messages as is.\n\t\t\t */\n\t\t\tthis.convertToLlm = opts.convertToLlm || ((messages: Message.Message[]) => messages);\n\t\t\tthis.transformContext = opts.transformContext;\n\n\t\t\tthis.steeringMode = opts.steeringMode || \"one-at-a-time\";\n\t\t\tthis.followUpMode = opts.followUpMode || \"one-at-a-time\";\n\n\t\t\tthis.streamFn = opts.streamFn || Stream.streamSimple;\n\t\t\tthis._sessionId = opts.sessionId;\n\n\t\t\tthis.getApiKey = opts.getApiKey;\n\t\t\tthis._onPayload = opts.onPayload;\n\n\t\t\tthis._thinkingBudgets = opts.thinkingBudgets;\n\t\t\tthis._transport = opts.transport ?? \"sse\";\n\t\t\tthis._maxRetryDelayMs = opts.maxRetryDelayMs;\n\n\t\t\tthis._toolExecution = opts.toolExecution ?? \"parallel\";\n\t\t\tthis._beforeToolExecution = opts.beforeToolExecution;\n\t\t\tthis._afterToolExecution = opts.afterToolExecution;\n\t\t}\n\n\t\t/**\n\t\t * Get the current session ID used for provider caching.\n\t\t */\n\t\tget sessionId(): string | undefined {\n\t\t\treturn this._sessionId;\n\t\t}\n\n\t\t/**\n\t\t * Set the session ID for provider caching.\n\t\t * Call this when switching sessions (new session, branch, resume, etc).\n\t\t */\n\t\tset sessionId(value: string | undefined) {\n\t\t\tthis._sessionId = value;\n\t\t}\n\t\t/**\n\t\t * Get the current thinking budgets.\n\t\t */\n\t\tget thinkingBudgets(): Stream.ThinkingBudgets | undefined {\n\t\t\treturn this._thinkingBudgets;\n\t\t}\n\t\t/**\n\t\t * Set custom thinking budgets for token-based providers.\n\t\t */\n\t\tset thinkingBudgets(value: Stream.ThinkingBudgets | undefined) {\n\t\t\tthis._thinkingBudgets = value;\n\t\t}\n\n\t\t/**\n\t\t * Get the current preferred transport.\n\t\t */\n\t\tget transport(): Stream.Transport {\n\t\t\treturn this._transport;\n\t\t}\n\t\t/**\n\t\t * Set the preferred transport.\n\t\t */\n\t\tsetTransport(value: Stream.Transport) {\n\t\t\tthis._transport = value;\n\t\t}\n\n\t\t/**\n\t\t * Get the current max retry delay in milliseconds.\n\t\t */\n\t\tget maxRetryDelayMs(): number | undefined {\n\t\t\treturn this._maxRetryDelayMs;\n\t\t}\n\n\t\t/**\n\t\t * Set the maximum delay to wait for server-requested retries.\n\t\t * Set to 0 to disable the cap.\n\t\t */\n\t\tset maxRetryDelayMs(value: number | undefined) {\n\t\t\tthis._maxRetryDelayMs = value;\n\t\t}\n\n\t\tget toolExecution(): Loop.ToolExecutionMode {\n\t\t\treturn this._toolExecution;\n\t\t}\n\n\t\tsetToolExecution(value: Loop.ToolExecutionMode) {\n\t\t\tthis._toolExecution = value;\n\t\t}\n\n\t\tsetBeforeToolExecution(\n\t\t\tvalue:\n\t\t\t\t| ((\n\t\t\t\t\t\tcontext: Loop.BeforeToolExecutionContext,\n\t\t\t\t\t\tsignal?: AbortSignal,\n\t\t\t\t ) => Promise<Loop.BeforeToolCallResult | undefined>)\n\t\t\t\t| undefined,\n\t\t) {\n\t\t\tthis._beforeToolExecution = value;\n\t\t}\n\n\t\tsetAfterToolExecution(\n\t\t\tvalue:\n\t\t\t\t| ((\n\t\t\t\t\t\tcontext: Loop.AfterToolExecutionContext,\n\t\t\t\t\t\tsignal?: AbortSignal,\n\t\t\t\t ) => Promise<Agent.ToolTerminalResult<unknown> | undefined>)\n\t\t\t\t| undefined,\n\t\t) {\n\t\t\tthis._afterToolExecution = value;\n\t\t}\n\n\t\tget state(): State {\n\t\t\treturn this._state;\n\t\t}\n\n\t\tsubscribe(fn: (e: Event.AgentEvent) => void): () => void {\n\t\t\tthis.listeners.add(fn);\n\t\t\treturn () => this.listeners.delete(fn);\n\t\t}\n\n\t\t// State mutators\n\t\tsetSystemPrompt(v: string) {\n\t\t\tthis._state.systemPrompt = v;\n\t\t}\n\t\tsetModel(m: Model.Info) {\n\t\t\tthis._state.model = m;\n\t\t}\n\t\tsetThinkingLevel(l: Stream.ThinkingLevel) {\n\t\t\tthis._state.thinkingLevel = l;\n\t\t}\n\t\tsetSteeringMode(mode: \"all\" | \"one-at-a-time\") {\n\t\t\tthis.steeringMode = mode;\n\t\t}\n\n\t\tgetSteeringMode(): \"all\" | \"one-at-a-time\" {\n\t\t\treturn this.steeringMode;\n\t\t}\n\n\t\tsetFollowUpMode(mode: \"all\" | \"one-at-a-time\") {\n\t\t\tthis.followUpMode = mode;\n\t\t}\n\n\t\tgetFollowUpMode(): \"all\" | \"one-at-a-time\" {\n\t\t\treturn this.followUpMode;\n\t\t}\n\n\t\tsetTools(t: AgentTool<any>[]) {\n\t\t\tthis._state.tools = t;\n\t\t}\n\n\t\treplaceMessages(ms: Message.Message[]) {\n\t\t\tthis._state.messages = ms.slice();\n\t\t}\n\n\t\tappendMessage(m: Message.Message) {\n\t\t\tthis._state.messages = [...this._state.messages, m];\n\t\t}\n\n\t\tprivate findMessageIndexById(messageId: string): number {\n\t\t\treturn this._state.messages.findIndex((message) => message.messageId === messageId);\n\t\t}\n\n\t\tprivate replaceMessageById(message: Message.Message): boolean {\n\t\t\tconst messageIndex = this.findMessageIndexById(message.messageId);\n\t\t\tif (messageIndex === -1) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst messages = this._state.messages.slice();\n\t\t\tmessages[messageIndex] = message;\n\t\t\tthis._state.messages = messages;\n\t\t\treturn true;\n\t\t}\n\n\t\tprivate upsertMessage(message: Message.Message): void {\n\t\t\tif (this.replaceMessageById(message)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthis.appendMessage(message);\n\t\t}\n\n\t\tprivate patchStoredAssistantPart(\n\t\t\tmessageId: string,\n\t\t\tpartIndex: number,\n\t\t\tpart: Message.AssistantMessage[\"parts\"][number],\n\t\t): boolean {\n\t\t\tconst messageIndex = this.findMessageIndexById(messageId);\n\t\t\tif (messageIndex === -1) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst messages = this._state.messages.slice();\n\t\t\tconst existing = messages[messageIndex];\n\t\t\tif (!existing || existing.role !== \"assistant\") {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst nextParts = existing.parts.slice();\n\t\t\tnextParts[partIndex] = part;\n\t\t\tmessages[messageIndex] = {\n\t\t\t\t...existing,\n\t\t\t\tparts: nextParts,\n\t\t\t};\n\t\t\tthis._state.messages = messages;\n\t\t\treturn true;\n\t\t}\n\n\t\t/**\n\t\t * Queue a steering message while the agent is running.\n\t\t * Delivered after the current assistant turn finishes executing its tool calls,\n\t\t * before the next LLM call.\n\t\t */\n\t\tsteer(m: Message.UserMessage) {\n\t\t\tthis.steeringQueue.push(m);\n\t\t}\n\n\t\t/**\n\t\t * Queue a follow-up message to be processed after the agent finishes.\n\t\t * Delivered only when agent has no more tool calls or steering messages.\n\t\t */\n\t\tfollowUp(m: Message.UserMessage) {\n\t\t\tthis.followUpQueue.push(m);\n\t\t}\n\n\t\tclearSteeringQueue() {\n\t\t\tthis.steeringQueue = [];\n\t\t}\n\n\t\tclearFollowUpQueue() {\n\t\t\tthis.followUpQueue = [];\n\t\t}\n\n\t\tclearAllQueues() {\n\t\t\tthis.steeringQueue = [];\n\t\t\tthis.followUpQueue = [];\n\t\t}\n\n\t\thasQueuedMessages(): boolean {\n\t\t\treturn this.steeringQueue.length > 0 || this.followUpQueue.length > 0;\n\t\t}\n\n\t\tprivate dequeueSteeringMessages(): Message.UserMessage[] {\n\t\t\tif (this.steeringMode === \"one-at-a-time\") {\n\t\t\t\tif (this.steeringQueue.length > 0) {\n\t\t\t\t\tconst first = this.steeringQueue[0]!;\n\t\t\t\t\tthis.steeringQueue = this.steeringQueue.slice(1);\n\t\t\t\t\treturn [first];\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst steering = this.steeringQueue.slice();\n\t\t\tthis.steeringQueue = [];\n\t\t\treturn steering;\n\t\t}\n\n\t\tprivate dequeueFollowUpMessages(): Message.UserMessage[] {\n\t\t\tif (this.followUpMode === \"one-at-a-time\") {\n\t\t\t\tif (this.followUpQueue.length > 0) {\n\t\t\t\t\tconst first = this.followUpQueue[0]!;\n\t\t\t\t\tthis.followUpQueue = this.followUpQueue.slice(1);\n\t\t\t\t\treturn [first];\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tconst followUp = this.followUpQueue.slice();\n\t\t\tthis.followUpQueue = [];\n\t\t\treturn followUp;\n\t\t}\n\n\t\tclearMessages() {\n\t\t\tthis._state.messages = [];\n\t\t}\n\n\t\tabort() {\n\t\t\tthis.abortController?.abort();\n\t\t}\n\n\t\twaitForIdle(): Promise<void> {\n\t\t\treturn this.runningPrompt ?? Promise.resolve();\n\t\t}\n\n\t\treset() {\n\t\t\tthis._state.messages = [];\n\t\t\tthis._state.isStreaming = false;\n\t\t\tthis._state.streamMessage = null;\n\t\t\tthis._state.pendingToolCalls = new Set<string>();\n\t\t\tthis._state.error = undefined;\n\t\t\tthis.steeringQueue = [];\n\t\t\tthis.followUpQueue = [];\n\t\t}\n\n\t\tgetName(): string {\n\t\t\treturn this._state.name;\n\t\t}\n\n\t\tprivate ensureIdle() {\n\t\t\tif (this._state.isStreaming) {\n\t\t\t\tthrow new AgentInStreamingErr({\n\t\t\t\t\tmessage:\n\t\t\t\t\t\t\"agent is already processing a prompt. Use steer() or followup() to queue messages, or wait for completion.\",\n\t\t\t\t\tname: this._state.name,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tprivate async _runLoop(messages?: Message.UserMessage[], opts?: { skipInitialSteeringPoll?: boolean }) {\n\t\t\tconst model = this._state.model;\n\t\t\tif (!model)\n\t\t\t\tthrow new ModelNotConfiguredErr({\n\t\t\t\t\tmessage: \"no model configured yet\",\n\t\t\t\t});\n\n\t\t\tthis.runningPrompt = new Promise<void>((resolve) => {\n\t\t\t\tthis.resolveRunningPrompt = resolve;\n\t\t\t});\n\n\t\t\tthis.abortController = new AbortController();\n\t\t\tthis._state.isStreaming = true;\n\t\t\tthis._state.streamMessage = null;\n\t\t\tthis._state.error = undefined;\n\n\t\t\tconst reasoning = this.state.thinkingLevel === \"off\" ? undefined : this._state.thinkingLevel;\n\n\t\t\tconst context: Agent.AgentContext = {\n\t\t\t\tsystemPrompt: this._state.systemPrompt,\n\t\t\t\tmessages: this._state.messages.slice(),\n\t\t\t\ttools: this._state.tools,\n\t\t\t};\n\n\t\t\tlet skipInitialSteeringPoll = opts?.skipInitialSteeringPoll === true;\n\n\t\t\tconst config: Loop.Config = {\n\t\t\t\tmodel,\n\t\t\t\treasoning,\n\t\t\t\tsessionId: this._sessionId,\n\t\t\t\tonPayload: this._onPayload,\n\t\t\t\ttransport: this._transport,\n\t\t\t\tthinkingBudgets: this._thinkingBudgets,\n\t\t\t\tmaxRetryDelayMs: this._maxRetryDelayMs,\n\t\t\t\ttoolExecution: this._toolExecution,\n\t\t\t\tbeforeToolExecution: this._beforeToolExecution,\n\t\t\t\tafterToolExecution: this._afterToolExecution,\n\t\t\t\tconvertToLlm: this.convertToLlm,\n\t\t\t\ttransformContext: this.transformContext,\n\t\t\t\tgetApiKey: this.getApiKey,\n\t\t\t\tgetSteeringMessages: async () => {\n\t\t\t\t\tif (skipInitialSteeringPoll) {\n\t\t\t\t\t\tskipInitialSteeringPoll = false;\n\t\t\t\t\t\treturn [];\n\t\t\t\t\t}\n\t\t\t\t\treturn this.dequeueSteeringMessages();\n\t\t\t\t},\n\t\t\t\tgetFollowUpMessages: async () => this.dequeueFollowUpMessages(),\n\t\t\t};\n\n\t\t\ttry {\n\t\t\t\tif (messages) {\n\t\t\t\t\tawait Loop.runAgentLoop(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tmessages,\n\t\t\t\t\t\tasync (e) => this._processLoopEvent(e),\n\t\t\t\t\t\tthis.streamFn,\n\t\t\t\t\t\tthis.abortController.signal,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tawait Loop.runAgentLoopContinue(\n\t\t\t\t\t\tconfig,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t\tasync (e) => this._processLoopEvent(e),\n\t\t\t\t\t\tthis.streamFn,\n\t\t\t\t\t\tthis.abortController.signal,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (err: any) {\n\t\t\t\tconst message = Message.createAssistantMessage({\n\t\t\t\t\trole: \"assistant\",\n\t\t\t\t\tprotocol: model.protocol,\n\t\t\t\t\tprovider: model.provider,\n\t\t\t\t\tmodel: model.id,\n\t\t\t\t\tusage: {\n\t\t\t\t\t\tinput: 0,\n\t\t\t\t\t\toutput: 0,\n\t\t\t\t\t\tcacheRead: 0,\n\t\t\t\t\t\tcacheWrite: 0,\n\t\t\t\t\t\ttotalTokens: 0,\n\t\t\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t\t\t},\n\t\t\t\t\tstopReason: this.abortController.signal.aborted ? \"aborted\" : \"error\",\n\t\t\t\t\terrorMessage: err?.message || String(err),\n\t\t\t\t\ttime: {\n\t\t\t\t\t\tcreated: Date.now(),\n\t\t\t\t\t\tcompleted: Date.now(),\n\t\t\t\t\t},\n\t\t\t\t\tparts: [],\n\t\t\t\t});\n\n\t\t\t\tthis.appendMessage(message);\n\t\t\t\tthis._state.error = err?.message || String(err);\n\t\t\t\tthis.emit({ type: \"agent.end\", messages: [message] });\n\t\t\t} finally {\n\t\t\t\tthis._state.isStreaming = false;\n\t\t\t\tthis._state.streamMessage = null;\n\t\t\t\tthis._state.pendingToolCalls = new Set<string>();\n\t\t\t\tthis.abortController = undefined;\n\t\t\t\tthis.resolveRunningPrompt?.();\n\t\t\t\tthis.runningPrompt = undefined;\n\t\t\t\tthis.resolveRunningPrompt = undefined;\n\t\t\t}\n\t\t}\n\n\t\tasync loop(messages: Message.UserMessage[]): Promise<void> {\n\t\t\tthis.ensureIdle();\n\t\t\tawait this._runLoop(messages);\n\t\t}\n\n\t\tasync loopContinue(): Promise<void> {\n\t\t\tthis.ensureIdle();\n\t\t\tawait this._runLoop();\n\t\t}\n\n\t\tasync prompt(messages: Message.TextContent[], images?: Message.ImageContent[]): Promise<void> {\n\t\t\tthis.ensureIdle();\n\t\t\tconst model = this._state.model;\n\t\t\tif (!model)\n\t\t\t\tthrow new ModelNotConfiguredErr({\n\t\t\t\t\tmessage: \"no model configured yet.\",\n\t\t\t\t});\n\n\t\t\tconst message = Message.createUserMessage({\n\t\t\t\trole: \"user\",\n\t\t\t\ttime: {\n\t\t\t\t\tcreated: Date.now(),\n\t\t\t\t},\n\t\t\t\tparts: [...messages, ...(images ?? [])],\n\t\t\t});\n\n\t\t\tawait this.loop([message]);\n\t\t}\n\n\t\tprivate _processLoopEvent(event: Event.AgentEvent): void {\n\t\t\tswitch (event.type) {\n\t\t\t\tcase \"message.start\": {\n\t\t\t\t\tthis._state.streamMessage = event.message;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"message.part.start\":\n\t\t\t\tcase \"message.part.update\":\n\t\t\t\tcase \"message.part.end\": {\n\t\t\t\t\tthis._state.streamMessage = event.message;\n\t\t\t\t\tif (event.message.role === \"assistant\") {\n\t\t\t\t\t\tthis.patchStoredAssistantPart(event.message.messageId, event.partIndex, event.part);\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"message.update\":\n\t\t\t\t\tthis._state.streamMessage = event.message;\n\t\t\t\t\tthis.replaceMessageById(event.message);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"message.end\":\n\t\t\t\t\tthis._state.streamMessage = null;\n\t\t\t\t\tthis.upsertMessage(event.message);\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"tool.execution.start\": {\n\t\t\t\t\tconst pendingToolCalls = new Set(this._state.pendingToolCalls);\n\t\t\t\t\tpendingToolCalls.add(event.callID);\n\t\t\t\t\tthis._state.pendingToolCalls = pendingToolCalls;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"tool.execution.end\": {\n\t\t\t\t\tconst pendingToolCalls = new Set(this._state.pendingToolCalls);\n\t\t\t\t\tpendingToolCalls.delete(event.callID);\n\t\t\t\t\tthis._state.pendingToolCalls = pendingToolCalls;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase \"turn.end\":\n\t\t\t\t\tif (event.message.role === \"assistant\" && event.message.parts.length > 0) {\n\t\t\t\t\t\tthis._state.error = event.message.errorMessage;\n\t\t\t\t\t}\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"agent.end\":\n\t\t\t\t\tthis._state.isStreaming = false;\n\t\t\t\t\tthis._state.streamMessage = null;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tthis.emit(event);\n\t\t}\n\n\t\tprivate emit(e: Event.AgentEvent) {\n\t\t\tfor (const listener of this.listeners) {\n\t\t\t\tlistener(e);\n\t\t\t}\n\t\t}\n\t}\n\n\texport async function create<TProvider extends Provider.KnownProvider, TModel extends Model.Info[\"id\"]>(\n\t\toptions: AgentOptions & {\n\t\t\tprovider: TProvider;\n\t\t\tmodel: TModel;\n\t\t\tname?: string;\n\t\t},\n\t): Promise<Instance>;\n\texport async function create(options: AgentOptions & { model: Model.Info; name?: string }): Promise<Instance>;\n\texport async function create(\n\t\toptions:\n\t\t\t| (AgentOptions & { model: Model.Info; name?: string })\n\t\t\t| (AgentOptions & {\n\t\t\t\t\tprovider: Provider.KnownProvider;\n\t\t\t\t\tmodel: Model.Info[\"id\"];\n\t\t\t\t\tname?: string;\n\t\t\t }),\n\t): Promise<Instance> {\n\t\tlet resolvedModel: Model.Info;\n\t\tif (\"provider\" in options) {\n\t\t\tconst result = await Model.getModel(options.provider, options.model);\n\t\t\tif (!result) {\n\t\t\t\tthrow new ModelNotFoundErr({\n\t\t\t\t\tmessage: \"model not found or not configured yet\",\n\t\t\t\t\tprovider: options.provider,\n\t\t\t\t\tmodel: options.model,\n\t\t\t\t});\n\t\t\t}\n\t\t\tresolvedModel = result;\n\t\t} else {\n\t\t\tresolvedModel = options.model;\n\t\t}\n\n\t\treturn new Instance(options.name ?? \"main\", resolvedModel, options);\n\t}\n}\n","import { NamedError } from \"@codeworksh/utils\";\nimport Type, { type Static, type TSchema } from \"typebox\";\nimport { transform } from \"esbuild\";\nimport { capitalize } from \"remeda\";\nimport { validateSchema } from \"../../utils/validation\";\nimport { Agent } from \"../agent\";\n\nexport namespace CodeMode {\n\texport const ToolDefinitionErr = NamedError.create(\n\t\t\"ToolDefinitionErr\",\n\t\tType.Object({\n\t\t\tmessage: Type.String(),\n\t\t}),\n\t);\n\n\tconst toolFnPrefix = process.env.CODEWORK_CODEMODE_FN_PREFIX ?? \"external_\";\n\n\texport const SandboxExecutionInputSchema = Type.Object({\n\t\ttypescriptCode: Type.String({\n\t\t\tdescription: \"TypeScript code to execute in the sandbox.\",\n\t\t}),\n\t});\n\texport type SandboxExecutionInput = Static<typeof SandboxExecutionInputSchema>;\n\n\texport const SandboxExecutionOutputSchema = Type.Object({\n\t\tresult: Type.Optional(Type.Unknown()),\n\t\tlogs: Type.Optional(Type.Array(Type.String())),\n\t});\n\texport type SandboxExecutionOutput = Static<typeof SandboxExecutionOutputSchema>;\n\n\texport const SandboxExecutionErrorSchema = Type.Object({\n\t\tmessage: Type.String(),\n\t\tname: Type.Optional(Type.String()),\n\t\tstack: Type.Optional(Type.String()),\n\t\tline: Type.Optional(Type.Number()),\n\t\tlogs: Type.Optional(Type.Array(Type.String())),\n\t});\n\texport type SandboxExecutionError = Static<typeof SandboxExecutionErrorSchema>;\n\n\texport interface NormalizedError {\n\t\tmessage: string;\n\t\tname?: string;\n\t\tstack?: string;\n\t\tline?: number;\n\t}\n\n\texport interface ExecutionResult<T = unknown> {\n\t\tsuccess: boolean;\n\t\tvalue?: T;\n\t\tlogs?: string[];\n\t\terror?: NormalizedError;\n\t}\n\n\texport interface Context {\n\t\texecute: <T = unknown>(code: string) => Promise<ExecutionResult<T>>;\n\t\tdispose: () => Promise<void>;\n\t}\n\n\texport interface DriverContextConfig {\n\t\tbindings: Record<string, ToolBinding>;\n\t\ttimeout?: number;\n\t\tmemoryLimit?: number;\n\t\tsignal?: AbortSignal;\n\t}\n\n\texport interface Driver {\n\t\tcreateContext: (config: DriverContextConfig) => Promise<Context>;\n\t}\n\n\texport interface ToolConfig {\n\t\t/**\n\t\t * Driver for sandbox code execution\n\t\t */\n\t\tdriver: Driver;\n\t\t/**\n\t\t * Tools to expose for functions in sandbox\n\t\t */\n\t\ttools: Agent.AnyAgentTool[];\n\t\t/**\n\t\t * Execution timeout in milliseconds (default: 30000)\n\t\t */\n\t\ttimeout?: number;\n\t\t/**\n\t\t * Memory limit in MB for sandbox (default: 128)\n\t\t */\n\t\tmemoryLimit?: number;\n\t\t/**\n\t\t * Tool function prefix.\n\t\t * @default env.CODEWORK_CODEMODE_FN_PREFIX ?? \"external_\"\n\t\t */\n\t\tfnPrefix?: string;\n\t}\n\n\texport interface ToolBinding {\n\t\tname: string;\n\t\tdescription: string;\n\t\tinputSchema: TSchema;\n\t\toutputSchema?: TSchema;\n\t\terrorSchema?: TSchema;\n\t\texecute: (callID: string, params: unknown, signal?: AbortSignal) => Promise<unknown>;\n\t}\n\n\t/**\n\t * Options for type stub generation\n\t */\n\texport interface TypeGeneratorOptions {\n\t\t/**\n\t\t * Include JSDoc comments with descriptions\n\t\t * @default true\n\t\t */\n\t\tincludeDescriptions?: boolean;\n\t}\n\n\tfunction withMessageInStack(message: string, stack: string | undefined): string | undefined {\n\t\tif (!stack) return undefined;\n\t\treturn stack.includes(message) ? stack : `${message}\\n${stack}`;\n\t}\n\n\tfunction normalizeExecutionError(error: unknown): NormalizedError {\n\t\tif (error instanceof Error) {\n\t\t\treturn {\n\t\t\t\tname: error.name,\n\t\t\t\tmessage: error.message,\n\t\t\t\tstack: withMessageInStack(error.message, error.stack),\n\t\t\t\tline: parseErrorLine(error.stack),\n\t\t\t};\n\t\t}\n\n\t\tif (typeof error === \"object\" && error !== null) {\n\t\t\tconst candidate = error as Record<string, unknown>;\n\t\t\treturn {\n\t\t\t\tname: typeof candidate.name === \"string\" ? candidate.name : undefined,\n\t\t\t\tmessage:\n\t\t\t\t\ttypeof candidate.message === \"string\"\n\t\t\t\t\t\t? candidate.message\n\t\t\t\t\t\t: JSON.stringify(candidate) || \"Unknown execution error\",\n\t\t\t\tstack:\n\t\t\t\t\ttypeof candidate.stack === \"string\"\n\t\t\t\t\t\t? withMessageInStack(\n\t\t\t\t\t\t\t\ttypeof candidate.message === \"string\"\n\t\t\t\t\t\t\t\t\t? candidate.message\n\t\t\t\t\t\t\t\t\t: JSON.stringify(candidate) || \"Unknown execution error\",\n\t\t\t\t\t\t\t\tcandidate.stack,\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t: undefined,\n\t\t\t\tline: typeof candidate.line === \"number\" ? candidate.line : parseErrorLine(candidate.stack),\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tname: \"Error\",\n\t\t\tmessage: String(error),\n\t\t};\n\t}\n\n\tfunction parseErrorLine(stack: unknown): number | undefined {\n\t\tif (typeof stack !== \"string\") return undefined;\n\t\tconst lineMatch = stack.match(/:(\\d+)(?::\\d+)?\\)?$/m);\n\t\treturn lineMatch ? Number(lineMatch[1]) : undefined;\n\t}\n\n\tfunction serializeForContent(value: unknown): string {\n\t\treturn JSON.stringify(\n\t\t\tvalue,\n\t\t\t(_key, currentValue) => (typeof currentValue === \"bigint\" ? currentValue.toString() : currentValue),\n\t\t\t2,\n\t\t);\n\t}\n\n\tfunction toolContentToText(result: { content: Array<{ type: string; text?: string }> }): string {\n\t\tconst parts = result.content\n\t\t\t.filter((part) => part.type === \"text\" && typeof part.text === \"string\")\n\t\t\t.map((part) => part.text);\n\t\treturn parts.join(\"\\n\").trim();\n\t}\n\n\tfunction unwrapToolResult(tool: Agent.AnyAgentTool, result: Agent.ToolTerminalResult<unknown, unknown>): unknown {\n\t\tif (result.status === \"completed\") {\n\t\t\tif (tool.outputSchema) {\n\t\t\t\treturn validateSchema(tool.outputSchema, result.result.details, `Tool \"${tool.name}\" output`);\n\t\t\t}\n\t\t\treturn result.result.details;\n\t\t}\n\n\t\tif (tool.errorSchema && result.result.details !== undefined) {\n\t\t\tvalidateSchema(tool.errorSchema, result.result.details, `Tool \"${tool.name}\" error`);\n\t\t}\n\n\t\tconst message = toolContentToText(result.result) || `Tool \"${tool.name}\" failed`;\n\t\tconst error = new Error(message);\n\t\tif (result.result.details !== undefined) {\n\t\t\t(error as Error & { cause?: unknown }).cause = result.result.details;\n\t\t}\n\t\tthrow error;\n\t}\n\n\tfunction toolToBinding(tool: Agent.AnyAgentTool, prefix: string = \"\"): ToolBinding {\n\t\tconst inputSchema = Type.IsSchema(tool.parameters) ? tool.parameters : Type.Object({});\n\t\tconst outputSchema = Type.IsSchema(tool.outputSchema) ? tool.outputSchema : undefined;\n\t\tconst errorSchema = Type.IsSchema(tool.errorSchema) ? tool.errorSchema : undefined;\n\n\t\tif (!(\"execute\" in tool) || typeof tool.execute !== \"function\") {\n\t\t\tthrow new ToolDefinitionErr({\n\t\t\t\tmessage: `tool \"${tool.name}\" does not have an execute function. code mode requires tools with implementation`,\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tname: `${prefix}${tool.name}`,\n\t\t\tdescription: tool.description,\n\t\t\tinputSchema,\n\t\t\toutputSchema,\n\t\t\terrorSchema,\n\t\t\texecute: async (callID: string, params: unknown, signal?: AbortSignal) => {\n\t\t\t\tconst validatedParams = validateSchema(inputSchema, params, `Tool \"${tool.name}\" input`);\n\t\t\t\tconst terminalResult = await tool.execute(callID, validatedParams, signal);\n\t\t\t\treturn unwrapToolResult(tool, terminalResult);\n\t\t\t},\n\t\t};\n\t}\n\n\tfunction toolsForBinding(tools: Agent.AnyAgentTool[], prefix: string): Record<string, ToolBinding> {\n\t\tconst bindings: Record<string, ToolBinding> = {};\n\n\t\tfor (const tool of tools) {\n\t\t\tconst name = `${prefix}${tool.name}`;\n\t\t\tbindings[name] = toolToBinding(tool, prefix);\n\t\t}\n\n\t\treturn bindings;\n\t}\n\n\tfunction indent(value: string, depth: number = 1): string {\n\t\tconst prefix = \"\\t\".repeat(depth);\n\t\treturn value\n\t\t\t.split(\"\\n\")\n\t\t\t.map((line) => `${prefix}${line}`)\n\t\t\t.join(\"\\n\");\n\t}\n\n\tfunction toPropertyKey(name: string): string {\n\t\treturn /^[$A-Z_a-z][$\\w]*$/i.test(name) ? name : JSON.stringify(name);\n\t}\n\n\tfunction schemaToTypeScript(schema: TSchema): string {\n\t\tif (Type.IsAny(schema)) return \"any\";\n\t\tif (Type.IsUnknown(schema)) return \"unknown\";\n\t\tif (Type.IsString(schema)) return \"string\";\n\t\tif (Type.IsNumber(schema) || Type.IsInteger(schema)) return \"number\";\n\t\tif (Type.IsBoolean(schema)) return \"boolean\";\n\t\tif (Type.IsNull(schema)) return \"null\";\n\t\tif (Type.IsUndefined(schema) || Type.IsVoid(schema)) return \"undefined\";\n\t\tif (Type.IsLiteral(schema)) return JSON.stringify(schema.const);\n\n\t\tif (Type.IsArray(schema)) {\n\t\t\treturn `Array<${schemaToTypeScript(schema.items)}>`;\n\t\t}\n\n\t\tif (Type.IsTuple(schema)) {\n\t\t\tconst items = schema.items ?? [];\n\t\t\treturn `[${items.map((item) => schemaToTypeScript(item)).join(\", \")}]`;\n\t\t}\n\n\t\tif (Type.IsUnion(schema)) {\n\t\t\treturn schema.anyOf.map((item) => schemaToTypeScript(item)).join(\" | \");\n\t\t}\n\n\t\tif (Type.IsIntersect(schema)) {\n\t\t\treturn schema.allOf.map((item) => schemaToTypeScript(item)).join(\" & \");\n\t\t}\n\n\t\tif (Type.IsRecord(schema)) {\n\t\t\tconst additionalProperties = (schema as { additionalProperties?: unknown }).additionalProperties;\n\t\t\tconst valueSchema =\n\t\t\t\tObject.values(schema.patternProperties ?? {}).find(Type.IsSchema) ??\n\t\t\t\t(additionalProperties && Type.IsSchema(additionalProperties) ? additionalProperties : Type.Unknown());\n\t\t\treturn `Record<string, ${schemaToTypeScript(valueSchema)}>`;\n\t\t}\n\n\t\tif (Type.IsObject(schema)) {\n\t\t\tconst additionalProperties = (schema as { additionalProperties?: unknown }).additionalProperties;\n\t\t\tconst required = new Set(schema.required ?? []);\n\t\t\tconst properties = Object.entries(schema.properties ?? {}).map(([key, value]) => {\n\t\t\t\tconst optional = required.has(key) ? \"\" : \"?\";\n\t\t\t\treturn `${toPropertyKey(key)}${optional}: ${schemaToTypeScript(value)};`;\n\t\t\t});\n\n\t\t\tif (additionalProperties === true) {\n\t\t\t\tproperties.push(\"[key: string]: unknown;\");\n\t\t\t} else if (additionalProperties && Type.IsSchema(additionalProperties)) {\n\t\t\t\tproperties.push(`[key: string]: ${schemaToTypeScript(additionalProperties)};`);\n\t\t\t}\n\n\t\t\tif (properties.length === 0) return \"{}\";\n\n\t\t\treturn `{\\n${indent(properties.join(\"\\n\"))}\\n}`;\n\t\t}\n\n\t\treturn \"unknown\";\n\t}\n\n\t/**\n\t * Generate TypeScript type stubs for all tool bindings.\n\t *\n\t * These stubs are included in the LLM system prompt so it knows the exact\n\t * type signatures of available tools.\n\t */\n\texport function generateTypeStubs(\n\t\tbindings: Record<string, ToolBinding>,\n\t\toptions: TypeGeneratorOptions = {},\n\t): string {\n\t\tconst { includeDescriptions = true } = options;\n\t\tconst declarations: string[] = [];\n\n\t\tfor (const [name, binding] of Object.entries(bindings)) {\n\t\t\tconst inputTypeName = `${capitalize(name)}Input`;\n\t\t\tconst outputTypeName = `${capitalize(name)}Output`;\n\n\t\t\tdeclarations.push(`type ${inputTypeName} = ${schemaToTypeScript(binding.inputSchema)};`);\n\n\t\t\tlet outputTypeRef = \"unknown\";\n\t\t\tif (binding.outputSchema !== undefined) {\n\t\t\t\tdeclarations.push(`type ${outputTypeName} = ${schemaToTypeScript(binding.outputSchema)};`);\n\t\t\t\toutputTypeRef = outputTypeName;\n\t\t\t}\n\n\t\t\tconst description = includeDescriptions && binding.description ? `/** ${binding.description} */\\n` : \"\";\n\t\t\tdeclarations.push(\n\t\t\t\t`${description}declare function ${name}(input: ${inputTypeName}): Promise<${outputTypeRef}>;`,\n\t\t\t);\n\t\t}\n\n\t\treturn declarations.join(\"\\n\\n\");\n\t}\n\n\tfunction buildExampleSnippet(): string[] {\n\t\treturn [\n\t\t\t\"```typescript\",\n\t\t\t\"const numbers = [12, 24, 36];\",\n\t\t\t\"const total = numbers.reduce((sum, value) => sum + value, 0);\",\n\t\t\t\"\",\n\t\t\t\"return {\",\n\t\t\t\" count: numbers.length,\",\n\t\t\t\" average: total / numbers.length,\",\n\t\t\t\"};\",\n\t\t\t\"```\",\n\t\t];\n\t}\n\n\texport function generateSystemPrompt(config: ToolConfig): string {\n\t\tconst fnPrefix = config.fnPrefix ?? toolFnPrefix;\n\t\tconst bindings = toolsForBinding(config.tools, fnPrefix);\n\t\tconst typeStubs = generateTypeStubs(bindings);\n\t\tconst functionDocs =\n\t\t\tObject.entries(bindings)\n\t\t\t\t.map(([name, binding]) => `- \\`${name}(input)\\`: ${binding.description}`)\n\t\t\t\t.join(\"\\n\") || \"- No external APIs available for this run.\";\n\n\t\treturn [\n\t\t\t\"## Code Execution Tool\",\n\t\t\t\"\",\n\t\t\t\"You have access to `sandbox_execute_typescript` which runs TypeScript code in a sandboxed environment.\",\n\t\t\t\"\",\n\t\t\t\"### When to Use\",\n\t\t\t\"\",\n\t\t\t\"Use `sandbox_execute_typescript` when you need to:\",\n\t\t\t\"- Process data with loops, conditionals, or complex logic\",\n\t\t\t\"- Make multiple tool calls in parallel with `Promise.all(...)`\",\n\t\t\t\"- Transform, filter, or aggregate data\",\n\t\t\t\"- Perform calculations or data analysis\",\n\t\t\t\"\",\n\t\t\t\"For simple operations, prefer calling tools directly.\",\n\t\t\t\"\",\n\t\t\t\"### Available External APIs\",\n\t\t\t\"\",\n\t\t\t\"Inside your TypeScript code, you can call these async functions:\",\n\t\t\t\"\",\n\t\t\tfunctionDocs,\n\t\t\t\"\",\n\t\t\t\"### Type Definitions\",\n\t\t\t\"\",\n\t\t\t\"```typescript\",\n\t\t\ttypeStubs,\n\t\t\t\"```\",\n\t\t\t\"\",\n\t\t\t\"### Example\",\n\t\t\t\"\",\n\t\t\t...buildExampleSnippet(),\n\t\t\t\"\",\n\t\t\t\"### Important Notes\",\n\t\t\t\"\",\n\t\t\t\"- All\" + `\\`${fnPrefix}\\`*` + \"calls are async, so always use `await`\",\n\t\t\t\"- Return a value to pass results back to you\",\n\t\t\t\"- Use `console.log()` for debugging (logs are captured)\",\n\t\t\t\"- The sandbox is isolated - no network access or file system\",\n\t\t\t\"- Each execution is isolated and does not share state with previous runs\",\n\t\t\t\"\",\n\t\t].join(\"\\n\");\n\t}\n\n\tasync function transpileTypeScript(typescriptCode: string): Promise<string> {\n\t\tconst wrappedSource = [\n\t\t\t\"(async () => {\",\n\t\t\t\"\\tconst __codemodeNormalizeError = (error: unknown) => {\",\n\t\t\t\"\\t\\tif (error instanceof Error) return { name: error.name, message: error.message, stack: error.stack };\",\n\t\t\t\"\\t\\tif (typeof error === 'object' && error !== null) {\",\n\t\t\t\"\\t\\t\\tconst candidate = error as { name?: unknown; message?: unknown; stack?: unknown };\",\n\t\t\t\"\\t\\t\\treturn {\",\n\t\t\t\"\\t\\t\\t\\tname: typeof candidate.name === 'string' ? candidate.name : 'Error',\",\n\t\t\t\"\\t\\t\\t\\tmessage:\",\n\t\t\t\"\\t\\t\\t\\t\\ttypeof candidate.message === 'string'\",\n\t\t\t\"\\t\\t\\t\\t\\t\\t? candidate.message\",\n\t\t\t\"\\t\\t\\t\\t\\t\\t: JSON.stringify(candidate) || 'Unknown execution error',\",\n\t\t\t\"\\t\\t\\t\\tstack: typeof candidate.stack === 'string' ? candidate.stack : undefined,\",\n\t\t\t\"\\t\\t\\t};\",\n\t\t\t\"\\t\\t}\",\n\t\t\t\"\\t\\treturn { name: 'Error', message: String(error) };\",\n\t\t\t\"\\t};\",\n\t\t\t\"\\ttry {\",\n\t\t\ttypescriptCode,\n\t\t\t\"\\t} catch (error) {\",\n\t\t\t\"\\t\\tthrow __codemodeNormalizeError(error);\",\n\t\t\t\"\\t}\",\n\t\t\t\"})()\",\n\t\t].join(\"\\n\");\n\t\tconst transformed = await transform(wrappedSource, {\n\t\t\tloader: \"ts\",\n\t\t\ttarget: \"es2022\",\n\t\t\tsourcefile: \"script.ts\",\n\t\t\tminify: false,\n\t\t\tkeepNames: false,\n\t\t});\n\t\treturn transformed.code;\n\t}\n\n\tfunction buildToolDescription(tools: Agent.AnyAgentTool[], fnPrefix = toolFnPrefix): string {\n\t\tconst externalFunctions = tools.map((tool) => `${fnPrefix}${tool.name}`).join(\"\\n\");\n\n\t\treturn [\n\t\t\t\"Execute TypeScript code in a secure sandbox environment. \",\n\t\t\t\"The code can use these external API functions:\",\n\t\t\t\"<functions>\",\n\t\t\t` ${externalFunctions}`,\n\t\t\t\"</functions>\",\n\t\t\t`All ${fnPrefix}* calls are async and must be awaited. `,\n\t\t\t\"Return a value to pass results back. Use console.log() for debugging.\",\n\t\t].join(\"\\n\");\n\t}\n\n\texport function createCodeModeTool(\n\t\tconfig: ToolConfig,\n\t): Agent.AgentTool<\n\t\ttypeof SandboxExecutionInputSchema,\n\t\ttypeof SandboxExecutionOutputSchema,\n\t\tunknown,\n\t\ttypeof SandboxExecutionErrorSchema\n\t> {\n\t\tif (config.tools.length === 0) {\n\t\t\tthrow new ToolDefinitionErr({ message: \"at least one tool must be provided to `createCodeModeTool`\" });\n\t\t}\n\n\t\tconst tool = Agent.defineTool({\n\t\t\tname: \"sandbox_execute_typescript\",\n\t\t\tlabel: \"Sandbox TypeScript\",\n\t\t\tdescription: buildToolDescription(config.tools, config.fnPrefix),\n\t\t\tparameters: SandboxExecutionInputSchema,\n\t\t\toutputSchema: SandboxExecutionOutputSchema,\n\t\t\terrorSchema: SandboxExecutionErrorSchema,\n\t\t\tasync execute(_callID, params, signal, onUpdate) {\n\t\t\t\tconst bindings = toolsForBinding(config.tools, config.fnPrefix ?? toolFnPrefix);\n\t\t\t\tlet context: Context | undefined;\n\n\t\t\t\ttry {\n\t\t\t\t\tawait onUpdate?.({\n\t\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\t\tpartial: {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"Transpiling TypeScript for sandbox execution\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tconst javascriptCode = await transpileTypeScript(params.typescriptCode);\n\n\t\t\t\t\tawait onUpdate?.({\n\t\t\t\t\t\tstatus: \"running\",\n\t\t\t\t\t\tpartial: {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: \"Executing code in sandbox runtime\" }],\n\t\t\t\t\t\t},\n\t\t\t\t\t});\n\n\t\t\t\t\tcontext = await config.driver.createContext({\n\t\t\t\t\t\tbindings,\n\t\t\t\t\t\ttimeout: config.timeout,\n\t\t\t\t\t\tmemoryLimit: config.memoryLimit,\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t});\n\n\t\t\t\t\tconst executionResult = await context.execute(javascriptCode);\n\t\t\t\t\tif (executionResult.success) {\n\t\t\t\t\t\tconst details: SandboxExecutionOutput = {\n\t\t\t\t\t\t\tresult: executionResult.value,\n\t\t\t\t\t\t\t...(executionResult.logs && executionResult.logs.length > 0 ? { logs: executionResult.logs } : {}),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tstatus: \"completed\",\n\t\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: serializeForContent(details) }],\n\t\t\t\t\t\t\t\tdetails,\n\t\t\t\t\t\t\t\tisError: false,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\tconst details: SandboxExecutionError = {\n\t\t\t\t\t\tmessage: executionResult.error?.message || \"sandbox execution failed\",\n\t\t\t\t\t\t...(executionResult.error?.name ? { name: executionResult.error.name } : {}),\n\t\t\t\t\t\t...(executionResult.error?.stack ? { stack: executionResult.error.stack } : {}),\n\t\t\t\t\t\t...(executionResult.error?.line != null ? { line: executionResult.error.line } : {}),\n\t\t\t\t\t\t...(executionResult.logs && executionResult.logs.length > 0 ? { logs: executionResult.logs } : {}),\n\t\t\t\t\t};\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: serializeForContent(details) }],\n\t\t\t\t\t\t\tdetails,\n\t\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconst normalizedError = normalizeExecutionError(error);\n\t\t\t\t\tconst details: SandboxExecutionError = {\n\t\t\t\t\t\tmessage: normalizedError.message,\n\t\t\t\t\t\t...(normalizedError.name ? { name: normalizedError.name } : {}),\n\t\t\t\t\t\t...(normalizedError.stack ? { stack: normalizedError.stack } : {}),\n\t\t\t\t\t\t...(normalizedError.line != null ? { line: normalizedError.line } : {}),\n\t\t\t\t\t};\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tstatus: \"error\",\n\t\t\t\t\t\tresult: {\n\t\t\t\t\t\t\tcontent: [{ type: \"text\", text: serializeForContent(details) }],\n\t\t\t\t\t\t\tdetails,\n\t\t\t\t\t\t\tisError: true,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t} finally {\n\t\t\t\t\tawait context?.dispose();\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t\treturn tool;\n\t}\n\n\texport async function create(config: ToolConfig) {\n\t\treturn {\n\t\t\ttool: createCodeModeTool(config),\n\t\t\tsystemPrompt: generateSystemPrompt(config),\n\t\t};\n\t}\n}\n","import { Model } from \"./model/model\";\nimport type { Provider } from \"./provider/provider\";\n\ntype LLM = {\n\t<TProvider extends Provider.KnownProvider, TModel extends Model.Info[\"id\"]>(\n\t\tprovider: TProvider,\n\t\tmodel: TModel,\n\t\toverrides?: Partial<Model.Info>,\n\t): Promise<Model.Info | undefined>;\n\tmodel: typeof Model.getModel;\n\tmodels: typeof Model.getModels;\n\tproviders: typeof Model.getProviders;\n\tregistry: typeof Model.registry;\n\tsupportsXhigh: typeof Model.supportsXhigh;\n\tmodelsAreEqual: typeof Model.modelsAreEqual;\n};\n\nconst llmImpl = async <TProvider extends Provider.KnownProvider, TModel extends Model.Info[\"id\"]>(\n\tprovider: TProvider,\n\tmodel: TModel,\n\toverrides?: Partial<Model.Info>,\n): Promise<Model.Info | undefined> => Model.getModel(provider, model, overrides);\n\nexport const llm = Object.assign(llmImpl, {\n\tmodel: Model.getModel,\n\tmodels: Model.getModels,\n\tproviders: Model.getProviders,\n\tregistry: Model.registry,\n\tsupportsXhigh: Model.supportsXhigh,\n\tmodelsAreEqual: Model.modelsAreEqual,\n}) as LLM;\n","import \"./provider/register\";\n\nimport type { Message } from \"./message/message\";\nimport type { Model } from \"./model/model\";\nimport { Stream } from \"./provider/stream\";\nimport type { AssistantMessageEventStream } from \"./utils/eventstream\";\n\n/**\n * Stream assistant responses for a model and context.\n *\n * Example:\n *\n * ```ts\n * const s = stream(model, context, {\n * apiKey: process.env.ANTHROPIC_API_KEY,\n * });\n *\n * for await (const event of s) {\n * if (event.type === \"text.delta\") {\n * process.stdout.write(event.delta);\n * }\n * }\n *\n * const message = await s.result();\n * ```\n *\n * This export also includes convenience helpers:\n *\n * ```ts\n * const message = await stream.complete(model, context, options);\n * const simple = stream.simple(model, context, options);\n * const simpleMessage = await stream.completeSimple(model, context, options);\n * ```\n */\ntype StreamCallable = {\n\t(model: Model.Info, context: Message.Context, options?: Stream.Options): AssistantMessageEventStream;\n\tcomplete: typeof Stream.complete;\n\tsimple: typeof Stream.streamSimple;\n\tcompleteSimple: typeof Stream.completeSimple;\n\tresolveProtocolProvider: typeof Stream.resolveProtocolProvider;\n};\n\nconst streamImpl = (\n\tmodel: Model.Info,\n\tcontext: Message.Context,\n\toptions?: Stream.Options,\n): AssistantMessageEventStream => Stream.stream(model, context, options);\n\n/**\n * Start a streaming assistant response for a model/context pair.\n *\n * This is the main streaming entrypoint.\n * Attached helpers:\n *\n * - `stream.complete(...)` resolves the final assistant message without manually iterating events.\n * - `stream.simple(...)` uses `Stream.SimpleOptions` for higher-level reasoning controls.\n * - `stream.completeSimple(...)` is the non-streaming counterpart to `stream.simple(...)`.\n * - `stream.resolveProtocolProvider(...)` exposes protocol resolution for advanced integrations.\n */\nexport const stream = Object.assign(streamImpl, {\n\tcomplete: Stream.complete,\n\tsimple: Stream.streamSimple,\n\tcompleteSimple: Stream.completeSimple,\n\tresolveProtocolProvider: Stream.resolveProtocolProvider,\n}) as StreamCallable;\n\n/** Resolve a streamed response directly to the final assistant message. */\nexport const complete = Stream.complete;\n/** Start a stream using the simplified options surface. */\nexport const streamSimple = Stream.streamSimple;\n/** Resolve a simplified stream request directly to the final assistant message. */\nexport const completeSimple = Stream.completeSimple;\n"],"x_google_ignoreList":[3,4,5,6,7,8,9,10,11],"mappings":"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"}