@code-yeongyu/senpi 2026.10.26-1 → 2026.10.26-2

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 (148) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/bundle/chunks/{anthropic-messages-M235FJQV.js → anthropic-messages-ODSFJCXR.js} +1 -1
  3. package/dist/bundle/chunks/{args-FBNJOJSR.js → args-SWKJAYQD.js} +1 -1
  4. package/dist/bundle/chunks/{azure-openai-responses-YQRTQ7H6.js → azure-openai-responses-REGXS4XO.js} +1 -1
  5. package/dist/bundle/chunks/bedrock-converse-stream.js +1 -1
  6. package/dist/bundle/chunks/chunk-2XF6W6F6.js +410 -0
  7. package/dist/bundle/chunks/{chunk-DMFAVE5N.js → chunk-4QVORFQ2.js} +1 -1
  8. package/dist/bundle/chunks/{chunk-ZXHLH4MW.js → chunk-5W3DTM2J.js} +1 -1
  9. package/dist/bundle/chunks/{chunk-QREKAXKX.js → chunk-6GAMRAVM.js} +5 -5
  10. package/dist/bundle/chunks/{chunk-MSHRIZGT.js → chunk-7IZH2KQX.js} +3 -3
  11. package/dist/bundle/chunks/{chunk-PH3JDRB2.js → chunk-ARSENVDY.js} +1 -1
  12. package/dist/bundle/chunks/{chunk-5KZH6EYQ.js → chunk-CNDPCYNT.js} +1 -1
  13. package/dist/bundle/chunks/{chunk-DYWIFF2Q.js → chunk-CYOHFREV.js} +1 -1
  14. package/dist/bundle/chunks/{chunk-3LPWILUZ.js → chunk-DNDZPKIQ.js} +1 -1
  15. package/dist/bundle/chunks/{chunk-ZLIVZQDY.js → chunk-EQNUL2WB.js} +1 -1
  16. package/dist/bundle/chunks/{chunk-5FQMNHXV.js → chunk-ESNSRUW4.js} +1 -1
  17. package/dist/bundle/chunks/{chunk-LO5MYLGF.js → chunk-FQDARFHT.js} +1 -1
  18. package/dist/bundle/chunks/{chunk-7KOUQSBX.js → chunk-GPPOPK76.js} +3 -3
  19. package/dist/bundle/chunks/chunk-I2WFLKZ2.js +5 -0
  20. package/dist/bundle/chunks/{chunk-I7QWTWVZ.js → chunk-IHKHCWWG.js} +1 -1
  21. package/dist/bundle/chunks/{chunk-MY4ZD3EW.js → chunk-IY4G44MN.js} +1 -1
  22. package/dist/bundle/chunks/{chunk-OQ3WDMB3.js → chunk-JH7MVRNJ.js} +1 -1
  23. package/dist/bundle/chunks/chunk-KBSFTXAT.js +2 -0
  24. package/dist/bundle/chunks/{chunk-UW6M3EXY.js → chunk-KRO63T4Q.js} +1 -1
  25. package/dist/bundle/chunks/{chunk-J5FCH7TI.js → chunk-KTDIIF2F.js} +1 -1
  26. package/dist/bundle/chunks/{chunk-3WP5RFQR.js → chunk-NDNIMC5W.js} +1 -1
  27. package/dist/bundle/chunks/{chunk-CDQPA4FP.js → chunk-ODRGPC5S.js} +1 -1
  28. package/dist/bundle/chunks/{chunk-3A3XCLNH.js → chunk-PDG4XWO2.js} +1 -1
  29. package/dist/bundle/chunks/{chunk-QYFOHFPS.js → chunk-PPECSSWX.js} +1 -1
  30. package/dist/bundle/chunks/{chunk-5LWUUXMH.js → chunk-PY4ZQHTN.js} +1 -1
  31. package/dist/bundle/chunks/{chunk-EZP6AYW2.js → chunk-RPW3XQW3.js} +22 -22
  32. package/dist/bundle/chunks/{chunk-SOXQ42VS.js → chunk-RQ5JTXUC.js} +1 -1
  33. package/dist/bundle/chunks/{chunk-JFQUWEN7.js → chunk-TQ67PB7U.js} +2 -2
  34. package/dist/bundle/chunks/{chunk-6U3TBFBA.js → chunk-UJPG4ROT.js} +1 -1
  35. package/dist/bundle/chunks/{chunk-UDM7VO6O.js → chunk-XM36IFP3.js} +1 -1
  36. package/dist/bundle/chunks/{chunk-XQ45JMGN.js → chunk-Z6BREXV3.js} +1 -1
  37. package/dist/bundle/chunks/{chunk-ADQAPDPV.js → chunk-ZP6JJDYV.js} +1 -1
  38. package/dist/bundle/chunks/{cli-main-55EQA5PS.js → cli-main-Q2GA53XM.js} +1 -1
  39. package/dist/bundle/chunks/{cloudflare-workers-ai-system-one-ZJQGIIRC.js → cloudflare-workers-ai-system-one-WDHT7BBV.js} +1 -1
  40. package/dist/bundle/chunks/cursor-agent.js +1 -1
  41. package/dist/bundle/chunks/devin-agent.js +1 -1
  42. package/dist/bundle/chunks/{dispatch-C2IBP5VV.js → dispatch-5R3TYAYB.js} +3 -3
  43. package/dist/bundle/chunks/{google-generative-ai-5G4RIQA6.js → google-generative-ai-FHYFXKLA.js} +1 -1
  44. package/dist/bundle/chunks/{google-vertex-ALD4P27O.js → google-vertex-5DWE5U5K.js} +1 -1
  45. package/dist/bundle/chunks/{help-fast-path-PEIKGCKZ.js → help-fast-path-FETLIF3W.js} +1 -1
  46. package/dist/bundle/chunks/{host-command-657VCQ34.js → host-command-XEB7SHT3.js} +1 -1
  47. package/dist/bundle/chunks/{host-session-command-OV5XDOJK.js → host-session-command-FFN52LXJ.js} +1 -1
  48. package/dist/bundle/chunks/{interactive-mode-MLXSYK2H.js → interactive-mode-5DEKY3YW.js} +1 -1
  49. package/dist/bundle/chunks/{mistral-conversations-RAE4K2XY.js → mistral-conversations-I2PI7DDF.js} +1 -1
  50. package/dist/bundle/chunks/{multi-session-host-774MACJU.js → multi-session-host-OPR5VBFO.js} +3 -3
  51. package/dist/bundle/chunks/{openai-codex-responses-3CW4R7TG.js → openai-codex-responses-WSEX6SH7.js} +1 -1
  52. package/dist/bundle/chunks/{openai-completions-5UIJXQUF.js → openai-completions-YCBHTBSS.js} +1 -1
  53. package/dist/bundle/chunks/{openai-responses-2BO44MRW.js → openai-responses-GXNSQF4A.js} +1 -1
  54. package/dist/bundle/chunks/{package-manager-cli-MZHVCX2S.js → package-manager-cli-W55E3LHP.js} +1 -1
  55. package/dist/bundle/chunks/{pi-messages-RF6GER4R.js → pi-messages-O6GISIRW.js} +1 -1
  56. package/dist/bundle/chunks/{role-ETSFSDTS.js → role-SHIZQKK4.js} +1 -1
  57. package/dist/bundle/chunks/{rotation-stream-ZMQB4GPO.js → rotation-stream-2PCZWNKF.js} +1 -1
  58. package/dist/bundle/chunks/{rpc-mode-UJXOIZCW.js → rpc-mode-IDUJTSYS.js} +1 -1
  59. package/dist/bundle/chunks/{schedule-command-KA7LFFNK.js → schedule-command-B7RRSANU.js} +1 -1
  60. package/dist/bundle/chunks/{session-control-endpoint-MFWXUR7Z.js → session-control-endpoint-LMZH5JLH.js} +1 -1
  61. package/dist/bundle/chunks/{session-picker-BP33NRSL.js → session-picker-DTGBOXDR.js} +1 -1
  62. package/dist/bundle/chunks/session-worker.js +41 -41
  63. package/dist/bundle/chunks/{typesafe-system-one-GNNZ5O5U.js → typesafe-system-one-XGYJJVSE.js} +1 -1
  64. package/dist/bundle/cli.js +2 -2
  65. package/dist/bundle/index.js +1 -1
  66. package/dist/bundle/rpc-entry.js +1 -1
  67. package/dist/bundle/runtime-manifest.json +1 -1
  68. package/dist/core/agent-session.d.ts +11 -1
  69. package/dist/core/agent-session.js +19 -2
  70. package/dist/core/extensions/builtin/compaction/index.js +7 -1
  71. package/dist/core/extensions/builtin/herdr/index.js +9 -5
  72. package/dist/core/extensions/builtin/mcp/auth/oauth-issuer.d.ts +6 -0
  73. package/dist/core/extensions/builtin/mcp/auth/oauth-issuer.js +25 -0
  74. package/dist/core/extensions/builtin/mcp/auth/oauth-provider.d.ts +3 -3
  75. package/dist/core/extensions/builtin/mcp/auth/oauth-provider.js +50 -19
  76. package/dist/core/extensions/builtin/mcp/auth/oauth-refresh.js +4 -3
  77. package/dist/core/extensions/builtin/mcp/auth/oauth.js +19 -12
  78. package/dist/core/extensions/builtin/mcp/modern/dispatch.js +1 -0
  79. package/dist/core/extensions/builtin/mcp/modern/parameter-headers.d.ts +4 -1
  80. package/dist/core/extensions/builtin/mcp/modern/parameter-headers.js +33 -35
  81. package/dist/core/extensions/builtin/mcp/modern/request.js +3 -0
  82. package/dist/core/extensions/builtin/mcp/modern/transport.d.ts +2 -0
  83. package/dist/core/extensions/builtin/mcp/modern/transport.js +4 -2
  84. package/dist/core/extensions/builtin/terminal/extension-state.js +2 -1
  85. package/dist/core/extensions/builtin/vertex-model-garden/auth.d.ts +9 -0
  86. package/dist/core/extensions/builtin/vertex-model-garden/auth.js +17 -1
  87. package/dist/core/extensions/builtin/websearch/websearch/providers/google.d.ts +6 -0
  88. package/dist/core/extensions/builtin/websearch/websearch/providers/google.js +6 -1
  89. package/dist/core/extensions/types.d.ts +2 -0
  90. package/dist/core/lifecycle-children.d.ts +3 -1
  91. package/dist/core/lifecycle-children.js +79 -15
  92. package/dist/core/lifecycle-record.js +1 -24
  93. package/dist/core/lifecycle-session-binding.js +2 -1
  94. package/dist/core/lifecycle-wait-items.d.ts +17 -0
  95. package/dist/core/lifecycle-wait-items.js +72 -0
  96. package/dist/core/model-runtime.js +6 -1
  97. package/dist/core/provider-api-key-auth.d.ts +6 -1
  98. package/dist/core/provider-api-key-auth.js +11 -4
  99. package/dist/core/provider-composer.d.ts +8 -1
  100. package/dist/core/provider-composer.js +7 -3
  101. package/dist/core/sdk.js +4 -1
  102. package/dist/core/session-activity.js +2 -0
  103. package/dist/core/session-lifecycle-types.d.ts +20 -4
  104. package/dist/core/session-lifecycle.js +35 -4
  105. package/dist/core/structured-session-lane.d.ts +33 -0
  106. package/dist/core/structured-session-lane.js +62 -0
  107. package/dist/core/work-custody-record.d.ts +2 -1
  108. package/dist/core/work-custody-record.js +2 -0
  109. package/dist/core/work-obligations.d.ts +1 -1
  110. package/dist/core/work-obligations.js +8 -2
  111. package/dist/modes/json-event.d.ts +79 -1
  112. package/dist/modes/json-event.js +79 -1
  113. package/dist/modes/rpc/compact-content-index.d.ts +85 -0
  114. package/dist/modes/rpc/compact-content-index.js +254 -0
  115. package/dist/modes/rpc/compact-content-store.d.ts +6 -43
  116. package/dist/modes/rpc/compact-content-store.js +22 -157
  117. package/dist/modes/rpc/compact-index-pages.d.ts +12 -0
  118. package/dist/modes/rpc/compact-index-pages.js +31 -0
  119. package/dist/modes/rpc/compact-session-state.d.ts +11 -39
  120. package/dist/modes/rpc/compact-session-state.js +17 -26
  121. package/dist/modes/rpc/compact-spool-dir.d.ts +4 -1
  122. package/dist/modes/rpc/compact-spool-dir.js +41 -8
  123. package/dist/modes/rpc/compact-spool-storage.d.ts +53 -0
  124. package/dist/modes/rpc/compact-spool-storage.js +162 -0
  125. package/dist/modes/rpc/compact-storage-io.d.ts +2 -1
  126. package/dist/modes/rpc/compact-storage-io.js +7 -1
  127. package/dist/modes/rpc/compact-transition.d.ts +41 -0
  128. package/dist/modes/rpc/compact-transition.js +12 -0
  129. package/dist/modes/rpc/connection-handler.d.ts +2 -0
  130. package/dist/modes/rpc/connection-handler.js +12 -6
  131. package/dist/modes/rpc/host-ensure-start.js +5 -3
  132. package/dist/modes/rpc/security-presentations.js +2 -1
  133. package/dist/modes/rpc/session-binding.js +10 -0
  134. package/dist/modes/rpc/session-event-writer.d.ts +2 -0
  135. package/dist/modes/rpc/session-event-writer.js +2 -0
  136. package/dist/modes/rpc/session-record-stream.d.ts +3 -3
  137. package/dist/modes/rpc/session-record-stream.js +3 -3
  138. package/dist/modes/rpc/session-structured-lanes.d.ts +12 -0
  139. package/dist/modes/rpc/session-structured-lanes.js +24 -0
  140. package/dist/modes/rpc/session-worker-client.js +6 -5
  141. package/dist/modes/rpc/structured-session-records.d.ts +12 -0
  142. package/dist/modes/rpc/structured-session-records.js +88 -0
  143. package/docs/extensions.md +7 -1
  144. package/docs/rpc.md +17 -2
  145. package/package.json +6 -6
  146. package/dist/bundle/chunks/chunk-GQJYNFMO.js +0 -2
  147. package/dist/bundle/chunks/chunk-VICDRG3J.js +0 -410
  148. package/dist/bundle/chunks/chunk-VL7O5PO4.js +0 -5
@@ -1,5 +1,5 @@
1
1
  import { createRequire as __piCreateRequire } from "node:module"; const require = __piCreateRequire(import.meta.url); { const __piWorkerThreads = require("node:worker_threads"); if (typeof __piWorkerThreads.markAsUncloneable !== "function") { __piWorkerThreads.markAsUncloneable = () => {}; } }
2
- import{isOpenAIResponsesPromptCacheModel}from"./chunk-ZLIVZQDY.js";import{SERVER_FALLBACK_ABORTED_DIAGNOSTIC,parseServerFallbackReceipt,withGzipRequestBodies}from"./chunk-MY4ZD3EW.js";import{getAnthropicCompat,isAnthropicApiBaseUrl}from"./chunk-QGJLZ6BI.js";import{parseStreamingJson}from"./chunk-3W47LTXQ.js";import{contentText,createProvider,getCurrentSystemPrompt,getCurrentTools,getInitialSystemMessage,getSystemMessageText,normalizeContext}from"./chunk-ZXHLH4MW.js";import{AssistantMessageEventStream,createAssistantMessageEventStream,enableAssistantCapture}from"./chunk-GQJYNFMO.js";import{providerHeadersToRecord}from"./chunk-PJ34QVL5.js";import{Build,Clean,Convert,Create,Decode,Default,DisableParseErrors,EnableParseErrors,Encode,Errors,HasCodec,IsArray,IsBoolean,IsInteger,IsNumber,IsObject,IsString,ParseError,Parser,arguments_exports,settings_exports,typebox_exports,value_exports}from"./chunk-MIENF2YK.js";import{__commonJS,__export,__require,__toESM}from"./chunk-IKOFCODM.js";var require_identity=__commonJS({"node_modules/yaml/dist/nodes/identity.js"(exports){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,isDocument=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,isMap=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,isPair=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,isScalar=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,isSeq=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=node=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq}});var require_visit=__commonJS({"node_modules/yaml/dist/visit.js"(exports){"use strict";var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}visit.BREAK=BREAK;visit.SKIP=SKIP;visit.REMOVE=REMOVE;function visit_(key,node,visitor,path){let ctrl=callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visit_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=visit_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path){let ctrl=await callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visitAsync_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=await visitAsync_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}function callVisitor(key,node,visitor,path){if(typeof visitor=="function")return visitor(key,node,path);if(identity.isMap(node))return visitor.Map?.(key,node,path);if(identity.isSeq(node))return visitor.Seq?.(key,node,path);if(identity.isPair(node))return visitor.Pair?.(key,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path);if(identity.isAlias(node))return visitor.Alias?.(key,node,path)}function replaceNode(key,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))key==="key"?parent.key=node:parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit;exports.visitAsync=visitAsync}});var require_directives=__commonJS({"node_modules/yaml/dist/doc/directives.js"(exports){"use strict";var identity=require_identity(),visit=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),Directives=class _Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity.isNode(doc.contents)){let tags={};visit.visit(doc.contents,(_key,node)=>{identity.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
2
+ import{isOpenAIResponsesPromptCacheModel}from"./chunk-EQNUL2WB.js";import{SERVER_FALLBACK_ABORTED_DIAGNOSTIC,parseServerFallbackReceipt,withGzipRequestBodies}from"./chunk-IY4G44MN.js";import{getAnthropicCompat,isAnthropicApiBaseUrl}from"./chunk-QGJLZ6BI.js";import{parseStreamingJson}from"./chunk-3W47LTXQ.js";import{contentText,createProvider,getCurrentSystemPrompt,getCurrentTools,getInitialSystemMessage,getSystemMessageText,normalizeContext}from"./chunk-5W3DTM2J.js";import{AssistantMessageEventStream,assistantEvents,carryAssistantCapture,createAssistantMessageEventStream,dropAssistantCapture,enableAssistantCapture,getAssistantCapture,pushAssistantProgress,setAssistantReader}from"./chunk-KBSFTXAT.js";import{providerHeadersToRecord}from"./chunk-PJ34QVL5.js";import{Build,Clean,Convert,Create,Decode,Default,DisableParseErrors,EnableParseErrors,Encode,Errors,HasCodec,IsArray,IsBoolean,IsInteger,IsNumber,IsObject,IsString,ParseError,Parser,arguments_exports,settings_exports,typebox_exports,value_exports}from"./chunk-MIENF2YK.js";import{__commonJS,__export,__require,__toESM}from"./chunk-IKOFCODM.js";var require_identity=__commonJS({"node_modules/yaml/dist/nodes/identity.js"(exports){"use strict";var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===ALIAS,isDocument=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===DOC,isMap=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===MAP,isPair=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===PAIR,isScalar=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SCALAR,isSeq=node=>!!node&&typeof node=="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node=="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=node=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq}});var require_visit=__commonJS({"node_modules/yaml/dist/visit.js"(exports){"use strict";var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):visit_(null,node,visitor_,Object.freeze([]))}visit.BREAK=BREAK;visit.SKIP=SKIP;visit.REMOVE=REMOVE;function visit_(key,node,visitor,path){let ctrl=callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visit_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=visit_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=visit_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);identity.isDocument(node)?await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE&&(node.contents=null):await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path){let ctrl=await callVisitor(key,node,visitor,path);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path,ctrl),visitAsync_(key,ctrl,visitor,path);if(typeof ctrl!="symbol"){if(identity.isCollection(node)){path=Object.freeze(path.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path);if(typeof ci=="number")i=ci-1;else{if(ci===BREAK)return BREAK;ci===REMOVE&&(node.items.splice(i,1),i-=1)}}}else if(identity.isPair(node)){path=Object.freeze(path.concat(node));let ck=await visitAsync_("key",node.key,visitor,path);if(ck===BREAK)return BREAK;ck===REMOVE&&(node.key=null);let cv=await visitAsync_("value",node.value,visitor,path);if(cv===BREAK)return BREAK;cv===REMOVE&&(node.value=null)}}return ctrl}function initVisitor(visitor){return typeof visitor=="object"&&(visitor.Collection||visitor.Node||visitor.Value)?Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor):visitor}function callVisitor(key,node,visitor,path){if(typeof visitor=="function")return visitor(key,node,path);if(identity.isMap(node))return visitor.Map?.(key,node,path);if(identity.isSeq(node))return visitor.Seq?.(key,node,path);if(identity.isPair(node))return visitor.Pair?.(key,node,path);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path);if(identity.isAlias(node))return visitor.Alias?.(key,node,path)}function replaceNode(key,path,node){let parent=path[path.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))key==="key"?parent.key=node:parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw new Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit;exports.visitAsync=visitAsync}});var require_directives=__commonJS({"node_modules/yaml/dist/doc/directives.js"(exports){"use strict";var identity=require_identity(),visit=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=tn=>tn.replace(/[!,[\]{}]/g,ch=>escapeChars[ch]),Directives=class _Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},_Directives.defaultYaml,yaml),this.tags=Object.assign({},_Directives.defaultTags,tags)}clone(){let copy=new _Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new _Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},_Directives.defaultTags);break}return res}add(line,onError){this.atNextDocument&&(this.yaml={explicit:_Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},_Directives.defaultTags),this.atNextDocument=!1);let parts=line.trim().split(/[ \t]+/),name=parts.shift();switch(name){case"%TAG":{if(parts.length!==2&&(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2))return!1;let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version]=parts;if(version==="1.1"||version==="1.2")return this.yaml.version=version,!0;{let isValid=/^\d+\.\d+$/.test(version);return onError(6,`Unsupported YAML version ${version}`,isValid),!1}}default:return onError(0,`Unknown directive ${name}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);return verbatim==="!"||verbatim==="!!"?(onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null):(source[source.length-1]!==">"&&onError("Verbatim tags must end with a >"),verbatim)}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);suffix||onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error){return onError(String(error)),null}return handle==="!"?source:(onError(`Could not resolve tag: ${source}`),null)}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc&&tagEntries.length>0&&identity.isNode(doc.contents)){let tags={};visit.visit(doc.contents,(_key,node)=>{identity.isNode(node)&&node.tag&&(tags[node.tag]=!0)}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries)handle==="!!"&&prefix==="tag:yaml.org,2002:"||(!doc||tagNames.some(tn=>tn.startsWith(prefix)))&&lines.push(`%TAG ${handle} ${prefix}`);return lines.join(`
3
3
  `)}};Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports.Directives=Directives}});var require_anchors=__commonJS({"node_modules/yaml/dist/doc/anchors.js"(exports){"use strict";var identity=require_identity(),visit=require_visit();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw new Error(msg)}return!0}function anchorNames(root){let anchors=new Set;return visit.visit(root,{Value(_key,node){node.anchor&&anchors.add(node.anchor)}}),anchors}function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name=`${prefix}${i}`;if(!exclude.has(name))return name}}function createNodeAnchors(doc,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:source=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},setAnchors:()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref=="object"&&ref.anchor&&(identity.isScalar(ref.node)||identity.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error=new Error("Failed to resolve repeated object (this should not happen)");throw error.source=source,error}}},sourceObjects}}exports.anchorIsValid=anchorIsValid;exports.anchorNames=anchorNames;exports.createNodeAnchors=createNodeAnchors;exports.findNewAnchor=findNewAnchor}});var require_applyReviver=__commonJS({"node_modules/yaml/dist/doc/applyReviver.js"(exports){"use strict";function applyReviver(reviver,obj,key,val){if(val&&typeof val=="object")if(Array.isArray(val))for(let i=0,len=val.length;i<len;++i){let v0=val[i],v1=applyReviver(reviver,val,String(i),v0);v1===void 0?delete val[i]:v1!==v0&&(val[i]=v1)}else if(val instanceof Map)for(let k of Array.from(val.keys())){let v0=val.get(k),v1=applyReviver(reviver,val,k,v0);v1===void 0?val.delete(k):v1!==v0&&val.set(k,v1)}else if(val instanceof Set)for(let v0 of Array.from(val)){let v1=applyReviver(reviver,val,v0,v0);v1===void 0?val.delete(v0):v1!==v0&&(val.delete(v0),val.add(v1))}else for(let[k,v0]of Object.entries(val)){let v1=applyReviver(reviver,val,k,v0);v1===void 0?delete val[k]:v1!==v0&&(val[k]=v1)}return reviver.call(obj,key,val)}exports.applyReviver=applyReviver}});var require_toJS=__commonJS({"node_modules/yaml/dist/nodes/toJS.js"(exports){"use strict";var identity=require_identity();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON=="function"){if(!ctx||!identity.hasAnchor(value))return value.toJSON(arg,ctx);let data={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data),ctx.onCreate=res2=>{data.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);return ctx.onCreate&&ctx.onCreate(res),res}return typeof value=="bigint"&&!ctx?.keep?Number(value):value}exports.toJS=toJS}});var require_Node=__commonJS({"node_modules/yaml/dist/nodes/Node.js"(exports){"use strict";var applyReviver=require_applyReviver(),identity=require_identity(),toJS=require_toJS(),NodeBase=class{constructor(type){Object.defineProperty(this,identity.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return this.range&&(copy.range=this.range.slice()),copy}toJS(doc,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity.isDocument(doc))throw new TypeError("A document argument is required");let ctx={anchors:new Map,doc,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount=="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor=="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver=="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}};exports.NodeBase=NodeBase}});var require_Alias=__commonJS({"node_modules/yaml/dist/nodes/Alias.js"(exports){"use strict";var anchors=require_anchors(),visit=require_visit(),identity=require_identity(),Node=require_Node(),toJS=require_toJS(),Alias=class extends Node.NodeBase{constructor(source){super(identity.ALIAS),this.source=source,Object.defineProperty(this,"tag",{set(){throw new Error("Alias nodes cannot have tags")}})}resolve(doc,ctx){if(ctx?.maxAliasCount===0)throw new ReferenceError("Alias resolution is disabled");let nodes;ctx?.aliasResolveCache?nodes=ctx.aliasResolveCache:(nodes=[],visit.visit(doc,{Node:(_key,node)=>{(identity.isAlias(node)||identity.hasAnchor(node))&&nodes.push(node)}}),ctx&&(ctx.aliasResolveCache=nodes));let found;for(let node of nodes){if(node===this)break;node.anchor===this.source&&(found=node)}if(found&&ctx){let{anchors:anchors2,doc:doc2,maxAliasCount}=ctx,data=anchors2.get(found);if(data||(toJS.toJS(found,null,ctx),data=anchors2.get(found)),data?.res===void 0){let msg="This should not happen: Alias anchor was not resolved?";throw new ReferenceError(msg)}if(maxAliasCount>=0&&(data.count+=1,data.aliasCount===0&&(data.aliasCount=getAliasCount(doc2,found,anchors2)),data.count*data.aliasCount>maxAliasCount)){let msg="Excessive alias count indicates a resource exhaustion attack";throw new ReferenceError(msg)}}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let source=this.resolve(ctx.doc,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new ReferenceError(msg)}return ctx.anchors.get(source).res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw new Error(msg)}if(ctx.implicitKey)return`${src} `}return src}};function getAliasCount(doc,node,anchors2){if(identity.isAlias(node)){let source=node.resolve(doc),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity.isCollection(node)){let count=0;for(let item of node.items){let c=getAliasCount(doc,item,anchors2);c>count&&(count=c)}return count}else if(identity.isPair(node)){let kc=getAliasCount(doc,node.key,anchors2),vc=getAliasCount(doc,node.value,anchors2);return Math.max(kc,vc)}return 1}exports.Alias=Alias}});var require_Scalar=__commonJS({"node_modules/yaml/dist/nodes/Scalar.js"(exports){"use strict";var identity=require_identity(),Node=require_Node(),toJS=require_toJS(),isScalarValue=value=>!value||typeof value!="function"&&typeof value!="object",Scalar=class extends Node.NodeBase{constructor(value){super(identity.SCALAR),this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}};Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports.Scalar=Scalar;exports.isScalarValue=isScalarValue}});var require_createNode=__commonJS({"node_modules/yaml/dist/doc/createNode.js"(exports){"use strict";var Alias=require_Alias(),identity=require_identity(),Scalar=require_Scalar(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter(t=>t.tag===tagName),tagObj=match.find(t=>!t.format)??match[0];if(!tagObj)throw new Error(`Tag ${tagName} not found`);return tagObj}return tags.find(t=>t.identify?.(value)&&!t.format)}function createNode(value,tagName,ctx){if(identity.isDocument(value)&&(value=value.contents),identity.isNode(value))return value;if(identity.isPair(value)){let map=ctx.schema[identity.MAP].createNode?.(ctx.schema,null,ctx);return map.items.push(value),map}(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)&&(value=value.valueOf());let{aliasDuplicateObjects,onAnchor,onTagObj,schema,sourceObjects}=ctx,ref;if(aliasDuplicateObjects&&value&&typeof value=="object"){if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);ref={anchor:null,node:null},sourceObjects.set(value,ref)}tagName?.startsWith("!!")&&(tagName=defaultTagPrefix+tagName.slice(2));let tagObj=findTagObject(value,tagName,schema.tags);if(!tagObj){if(value&&typeof value.toJSON=="function"&&(value=value.toJSON()),!value||typeof value!="object"){let node2=new Scalar.Scalar(value);return ref&&(ref.node=node2),node2}tagObj=value instanceof Map?schema[identity.MAP]:Symbol.iterator in Object(value)?schema[identity.SEQ]:schema[identity.MAP]}onTagObj&&(onTagObj(tagObj),delete ctx.onTagObj);let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from=="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);return tagName?node.tag=tagName:tagObj.default||(node.tag=tagObj.tag),ref&&(ref.node=node),node}exports.createNode=createNode}});var require_Collection=__commonJS({"node_modules/yaml/dist/nodes/Collection.js"(exports){"use strict";var createNode=require_createNode(),identity=require_identity(),Node=require_Node();function collectionFromPath(schema,path,value){let v=value;for(let i=path.length-1;i>=0;--i){let k=path[i];if(typeof k=="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw new Error("This should not happen, please report a bug.")},schema,sourceObjects:new Map})}var isEmptyPath=path=>path==null||typeof path=="object"&&!!path[Symbol.iterator]().next().done,Collection=class extends Node.NodeBase{constructor(type,schema){super(type),Object.defineProperty(this,"schema",{value:schema,configurable:!0,enumerable:!1,writable:!0})}clone(schema){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));return schema&&(copy.schema=schema),copy.items=copy.items.map(it=>identity.isNode(it)||identity.isPair(it)?it.clone(schema):it),this.range&&(copy.range=this.range.slice()),copy}addIn(path,value){if(isEmptyPath(path))this.add(value);else{let[key,...rest]=path,node=this.get(key,!0);if(identity.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path){let[key,...rest]=path;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity.isCollection(node))return node.deleteIn(rest);throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path,keepScalar){let[key,...rest]=path,node=this.get(key,!0);return rest.length===0?!keepScalar&&identity.isScalar(node)?node.value:node:identity.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every(node=>{if(!identity.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path){let[key,...rest]=path;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity.isCollection(node)?node.hasIn(rest):!1}setIn(path,value){let[key,...rest]=path;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}};exports.Collection=Collection;exports.collectionFromPath=collectionFromPath;exports.isEmptyPath=isEmptyPath}});var require_stringifyComment=__commonJS({"node_modules/yaml/dist/stringify/stringifyComment.js"(exports){"use strict";var stringifyComment=str=>str.replace(/^(?!$)(?: $)?/gm,"#");function indentComment(comment,indent){return/^\n+$/.test(comment)?comment.substring(1):indent?comment.replace(/^(?! *$)/gm,indent):comment}var lineComment=(str,indent,comment)=>str.endsWith(`
4
4
  `)?indentComment(comment,indent):comment.includes(`
5
5
  `)?`
@@ -140,18 +140,18 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
140
140
  `)}function extractUserMessageText(msg){if(msg.role!=="user")return"";let content=msg.content;return typeof content=="string"?content.trim():content.filter(c=>c.type==="text").map(c=>c.text).join(`
141
141
  `).trim()}function hasUserMessageImages(msg){return msg.role==="user"&&Array.isArray(msg.content)&&msg.content.some(item=>item.type==="image")}function buildCursorRootPromptContent(content){if(typeof content=="string"){let text=content.trim();return text?[{type:"text",text}]:[]}let parts=[];for(let item of content)if(item.type==="text"){let text=item.text.trim();text&&parts.push({type:"text",text})}else parts.push({type:"image",image:`data:${item.mimeType};base64,${item.data}`,mediaType:item.mimeType});return parts}function cursorUserContentKey(content){if(typeof content=="string")return content.trim();let hash=createHash("sha256");for(let item of content)hash.update(item.type),item.type==="text"?hash.update(item.text):(hash.update(item.mimeType),hash.update(item.data));return hash.digest("hex")}function buildCursorAssistantContent(msg){let content=[];for(let item of msg.content)item.type==="text"?item.text&&content.push({type:"text",text:item.text}):item.type==="toolCall"&&content.push({type:"tool-call",toolCallId:item.id,toolName:item.name,args:item.arguments});return content}function findLastUserMessageIndex(messages){for(let i=messages.length-1;i>=0;i--)if(messages[i].role==="user")return i;return-1}function buildRootPromptMessagesJson(messages,systemPromptIds,blobStore,activeUserMessageIndex=findLastUserMessageIndex(messages)){let entries=[...systemPromptIds],pushJson=obj=>{let bytes=new TextEncoder().encode(JSON.stringify(obj));entries.push(storeCursorBlob(blobStore,bytes))};for(let i=0;i<messages.length&&i!==activeUserMessageIndex;i++){let msg=messages[i];if(msg.role==="user"){let content=buildCursorRootPromptContent(msg.content);if(content.length===0)continue;pushJson({role:"user",content})}else if(msg.role==="assistant"){let content=buildCursorAssistantContent(msg);if(content.length===0)continue;pushJson({role:"assistant",content})}else msg.role==="toolResult"&&pushJson({role:"tool",id:msg.toolCallId,content:[{type:"tool-result",toolName:msg.toolName,toolCallId:msg.toolCallId,result:toolResultToText(msg),...msg.isError?{isError:!0}:{}}]})}return entries}function isPlainRecord(value){if(value===null||typeof value!="object"||Array.isArray(value))return!1;let prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}function isJsonValue(value){if(value===null||typeof value=="string"||typeof value=="boolean")return!0;if(typeof value=="number")return Number.isFinite(value);if(Array.isArray(value))return value.every(isJsonValue);if(!isPlainRecord(value))return!1;for(let key in value)if(!isJsonValue(value[key]))return!1;return!0}function encodeCursorMcpArguments(toolCall){let encoded={};for(let name in toolCall.arguments){let value=toolCall.arguments[name];if(value!==void 0){if(!isJsonValue(value))throw new Error(`Cursor tool argument ${toolCall.name}.${name} is not JSON-serializable`);encoded[name]=toBinary(ValueSchema,fromJson(ValueSchema,value))}}return encoded}function createCursorMcpResult(result){return result.isError?create(McpToolResultSchema,{result:{case:"error",value:create(McpToolErrorSchema,{error:toolResultToText(result)})}}):create(McpToolResultSchema,{result:{case:"success",value:create(McpSuccessSchema,{content:result.content.map(item=>item.type==="text"?create(McpToolResultContentItemSchema,{content:{case:"text",value:create(McpTextContentSchema,{text:item.text})}}):create(McpToolResultContentItemSchema,{content:{case:"image",value:create(McpImageContentSchema,{data:Uint8Array.from(Uint8Array.from(atob(item.data),c=>c.charCodeAt(0))),mimeType:item.mimeType})}}))})}})}function createCursorToolCallStep(toolCall,result){let mcpCall=create(McpToolCallSchema,{args:create(McpArgsSchema,{name:toolCall.name,args:encodeCursorMcpArguments(toolCall),toolCallId:toolCall.id,providerIdentifier:"pi-agent",toolName:toolCall.name}),...result?{result:createCursorMcpResult(result)}:{}});return create(ConversationStepSchema,{message:{case:"toolCall",value:create(ToolCallSchema,{tool:{case:"mcpToolCall",value:mcpCall},toolCallId:toolCall.id})}})}function buildConversationTurns(messages,blobStore,activeUserMessageIndex=findLastUserMessageIndex(messages)){let turns=[],historyEnd=activeUserMessageIndex>=0?activeUserMessageIndex:messages.length,toolResults=new Map,pairedToolCallIds=new Set;for(let index=0;index<historyEnd;index++){let message=messages[index];if(message.role==="toolResult")toolResults.set(message.toolCallId,message);else if(message.role==="assistant")for(let item of message.content)item.type==="toolCall"&&pairedToolCallIds.add(item.id)}let i=0;for(;i<messages.length;){let msg=messages[i];if(msg.role!=="user"){i++;continue}if(i===activeUserMessageIndex)break;let userText=extractUserMessageText(msg);if(userText.length===0&&!hasUserMessageImages(msg)){i++;continue}let userMessage=createCursorUserMessage(msg.content,userText,deterministicUuid(`u:${turns.length}:${cursorUserContentKey(msg.content)}`)),userMessageBlobId=storeCursorBlob(blobStore,toBinary(UserMessageSchema,userMessage)),stepBlobIds=[];for(i++;i<messages.length&&messages[i].role!=="user";){let stepMsg=messages[i];if(stepMsg.role==="assistant")for(let item of stepMsg.content){let step;if(item.type==="text"){if(!item.text)continue;step=create(ConversationStepSchema,{message:{case:"assistantMessage",value:create(AssistantMessageSchema,{text:item.text})}})}else{if(item.type==="thinking")continue;if(item.type==="toolCall")step=createCursorToolCallStep(item,toolResults.get(item.id));else continue}stepBlobIds.push(storeCursorBlob(blobStore,toBinary(ConversationStepSchema,step)))}else if(stepMsg.role==="toolResult"&&!pairedToolCallIds.has(stepMsg.toolCallId)){let text=toolResultToText(stepMsg);if(text){let prefix=stepMsg.isError?"[Tool Error]":"[Tool Result]",step=create(ConversationStepSchema,{message:{case:"assistantMessage",value:create(AssistantMessageSchema,{text:`${prefix}
142
142
  ${text}`})}});stepBlobIds.push(storeCursorBlob(blobStore,toBinary(ConversationStepSchema,step)))}}i++}let agentTurn=create(AgentConversationTurnStructureSchema,{userMessage:userMessageBlobId,steps:stepBlobIds}),turn=create(ConversationTurnStructureSchema,{turn:{case:"agentConversationTurn",value:agentTurn}});turns.push(storeCursorBlob(blobStore,toBinary(ConversationTurnStructureSchema,turn)))}return turns}function createCursorUserMessage(content,text,messageId=randomUUID()){let images=typeof content=="string"?[]:extractImages(content);return create(UserMessageSchema,{text,messageId,...images.length>0?{selectedContext:create(SelectedContextSchema,{selectedImages:images})}:{}})}function extractImages(content){return content.filter(item=>item.type==="image").map(image=>create(SelectedImageSchema,{uuid:randomUUID(),mimeType:image.mimeType,dataOrBlobId:{case:"data",value:Uint8Array.from(atob(image.data),c=>c.charCodeAt(0))}}))}function measureCursorModelInputSerializedBytes(messages,activeUserMessageIndex=findLastUserMessageIndex(messages)){let blobStore=new Map,total=0;for(let blobId of buildRootPromptMessagesJson(messages,[],blobStore,activeUserMessageIndex))total+=readCursorBlob(blobStore,blobId).byteLength;return total}function measureCursorHistorySerializedBytes(messages,activeUserMessageIndex=findLastUserMessageIndex(messages)){return buildCursorHistoryWireBytesForTest(messages,activeUserMessageIndex).reduce((total,bytes)=>total+bytes.byteLength,0)}function buildCursorHistoryWireBytesForTest(messages,activeUserMessageIndex=findLastUserMessageIndex(messages)){let blobStore=new Map;return buildRootPromptMessagesJson(messages,[],blobStore,activeUserMessageIndex),buildConversationTurns(messages,blobStore,activeUserMessageIndex),[...blobStore.values()]}function piReadArgs(path,offset,limit){return limit!==void 0&&Math.floor(limit)<=0?null:{path,offset:offset!==void 0?Math.max(1,Math.floor(offset)):void 0,limit:limit!==void 0?Math.floor(limit):void 0}}function piLsPath(basePath){return basePath||"."}function piLimit(limit){return limit===void 0?void 0:Math.max(1,Math.floor(limit))}function piTimeout(timeout){return timeout!==void 0&&timeout>=0?timeout:void 0}function composeShellCommand(command,workingDirectory){return workingDirectory?`cd ${`'${workingDirectory.replace(/'/g,"'\\''")}'`} && { ${command}
143
- }`:command}function omitUndefinedArgs(args){let out={};for(let key of Object.keys(args)){let value=args[key];value!==void 0&&(out[key]=value)}return out}var warmers=new Map;function registerPromptCacheWarmer(api,warmer){warmers.set(api,warmer)}function getPromptCacheWarmer(api){return warmers.get(api)}async function warmPromptCache(model,context,options={}){if(isOpenAIResponsesPromptCacheModel(model)){if((options.cacheRetention??model.cacheRetention)==="none")return{supported:!1};let warmer=getPromptCacheWarmer(model.api);if(warmer===void 0)return{supported:!1};let{usage,usageRaw:usageRaw2}=await warmer(model,context,options);return{supported:!0,usage:{input:usage.input,output:usage.output,cacheRead:usage.cacheRead,cacheWrite:usage.cacheWrite,cost:usage.cost},usageRaw:usageRaw2}}if(model.api!=="anthropic-messages"||!isAnthropicApiBaseUrl(model.baseUrl))return{supported:!1};let anthropicModel=model,[{default:Anthropic},{buildAnthropicWarmPromptCacheParams}]=await Promise.all([import("./sdk-3UTSBCRC.js"),import("./anthropic-messages-M235FJQV.js")]),headers=providerHeadersToRecord(options.headers),client=new Anthropic({apiKey:options.apiKey??null,baseURL:anthropicModel.baseUrl,dangerouslyAllowBrowser:!0,fetch:getAnthropicCompat(anthropicModel).supportsGzipRequestBody?withGzipRequestBodies(options.fetch):options.fetch,defaultHeaders:{...anthropicModel.headers,...headers}}),params=buildAnthropicWarmPromptCacheParams(anthropicModel,context,options),transformed=await options.onPayload?.(params,anthropicModel,{model:anthropicModel,headers});transformed!==void 0&&(params=transformed);let sanitized={...params};delete sanitized.stream,delete sanitized.thinking,delete sanitized.output_config,delete sanitized.tool_choice,sanitized.max_tokens=0;let usageRaw=(await client.beta.messages.create(sanitized,{maxRetries:0,...options.signal?{signal:options.signal}:{},...options.timeoutMs!==void 0?{timeout:options.timeoutMs}:{}})).usage;return{supported:!0,usage:{input:usageRaw.input_tokens,output:usageRaw.output_tokens,cacheRead:usageRaw.cache_read_input_tokens??0,cacheWrite:usageRaw.cache_creation_input_tokens??0},usageRaw}}var DEFAULT_API="faux",DEFAULT_PROVIDER="faux",DEFAULT_MODEL_ID="faux-1",DEFAULT_MODEL_NAME="Faux Model",DEFAULT_BASE_URL="http://localhost:0",DEFAULT_MIN_TOKEN_SIZE=3,DEFAULT_MAX_TOKEN_SIZE=5,DEFAULT_USAGE={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};function fauxText(text){return{type:"text",text}}function fauxThinking(thinking){return{type:"thinking",thinking}}function fauxToolCall(name,arguments_,options={}){return{type:"toolCall",id:options.id??randomId("tool"),name,arguments:arguments_}}function normalizeFauxAssistantContent(content){return typeof content=="string"?[fauxText(content)]:Array.isArray(content)?content:[content]}function fauxAssistantMessage(content,options={}){return{role:"assistant",content:normalizeFauxAssistantContent(content),api:DEFAULT_API,provider:DEFAULT_PROVIDER,model:DEFAULT_MODEL_ID,usage:DEFAULT_USAGE,stopReason:options.stopReason??"stop",...options.stopDetails===void 0?{}:{stopDetails:options.stopDetails},...options.deferred===void 0?{}:{deferred:options.deferred},...options.errorMessage===void 0?{}:{errorMessage:options.errorMessage},...options.abortSource===void 0?{}:{abortSource:options.abortSource},...options.responseId===void 0?{}:{responseId:options.responseId},timestamp:options.timestamp??Date.now()}}function estimateTokens(text){return Math.ceil(text.length/4)}function randomId(prefix){return`${prefix}:${Date.now()}:${Math.random().toString(36).slice(2)}`}function cloneStreamOptionsForLog(options){if(options)return{...options}}function cloneToolForLog(tool){return{name:tool.name,description:tool.description,parameters:structuredClone(tool.parameters),...tool.freeform?{freeform:structuredClone(tool.freeform)}:{}}}function toLoggedContext(transcript){let systemPrompt=getCurrentSystemPrompt(transcript.messages),tools=getCurrentTools(transcript.messages);return{...systemPrompt?{systemPrompt}:{},messages:structuredClone(transcript.messages.filter(message=>message.role!=="system")),...tools.length>0?{tools:tools.map(cloneToolForLog)}:{},...transcript.activeToolNames?{activeToolNames:[...transcript.activeToolNames]}:{}}}function contentToText(content){return typeof content=="string"?content:content.map(block=>block.type==="text"?block.text:`[image:${block.mimeType}:${block.data.length}]`).join(`
143
+ }`:command}function omitUndefinedArgs(args){let out={};for(let key of Object.keys(args)){let value=args[key];value!==void 0&&(out[key]=value)}return out}var warmers=new Map;function registerPromptCacheWarmer(api,warmer){warmers.set(api,warmer)}function getPromptCacheWarmer(api){return warmers.get(api)}async function warmPromptCache(model,context,options={}){if(isOpenAIResponsesPromptCacheModel(model)){if((options.cacheRetention??model.cacheRetention)==="none")return{supported:!1};let warmer=getPromptCacheWarmer(model.api);if(warmer===void 0)return{supported:!1};let{usage,usageRaw:usageRaw2}=await warmer(model,context,options);return{supported:!0,usage:{input:usage.input,output:usage.output,cacheRead:usage.cacheRead,cacheWrite:usage.cacheWrite,cost:usage.cost},usageRaw:usageRaw2}}if(model.api!=="anthropic-messages"||!isAnthropicApiBaseUrl(model.baseUrl))return{supported:!1};let anthropicModel=model,[{default:Anthropic},{buildAnthropicWarmPromptCacheParams}]=await Promise.all([import("./sdk-3UTSBCRC.js"),import("./anthropic-messages-ODSFJCXR.js")]),headers=providerHeadersToRecord(options.headers),client=new Anthropic({apiKey:options.apiKey??null,baseURL:anthropicModel.baseUrl,dangerouslyAllowBrowser:!0,fetch:getAnthropicCompat(anthropicModel).supportsGzipRequestBody?withGzipRequestBodies(options.fetch):options.fetch,defaultHeaders:{...anthropicModel.headers,...headers}}),params=buildAnthropicWarmPromptCacheParams(anthropicModel,context,options),transformed=await options.onPayload?.(params,anthropicModel,{model:anthropicModel,headers});transformed!==void 0&&(params=transformed);let sanitized={...params};delete sanitized.stream,delete sanitized.thinking,delete sanitized.output_config,delete sanitized.tool_choice,sanitized.max_tokens=0;let usageRaw=(await client.beta.messages.create(sanitized,{maxRetries:0,...options.signal?{signal:options.signal}:{},...options.timeoutMs!==void 0?{timeout:options.timeoutMs}:{}})).usage;return{supported:!0,usage:{input:usageRaw.input_tokens,output:usageRaw.output_tokens,cacheRead:usageRaw.cache_read_input_tokens??0,cacheWrite:usageRaw.cache_creation_input_tokens??0},usageRaw}}var DEFAULT_API="faux",DEFAULT_PROVIDER="faux",DEFAULT_MODEL_ID="faux-1",DEFAULT_MODEL_NAME="Faux Model",DEFAULT_BASE_URL="http://localhost:0",DEFAULT_MIN_TOKEN_SIZE=3,DEFAULT_MAX_TOKEN_SIZE=5,DEFAULT_USAGE={input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};function fauxText(text){return{type:"text",text}}function fauxThinking(thinking){return{type:"thinking",thinking}}function fauxToolCall(name,arguments_,options={}){return{type:"toolCall",id:options.id??randomId("tool"),name,arguments:arguments_}}function normalizeFauxAssistantContent(content){return typeof content=="string"?[fauxText(content)]:Array.isArray(content)?content:[content]}function fauxAssistantMessage(content,options={}){return{role:"assistant",content:normalizeFauxAssistantContent(content),api:DEFAULT_API,provider:DEFAULT_PROVIDER,model:DEFAULT_MODEL_ID,usage:DEFAULT_USAGE,stopReason:options.stopReason??"stop",...options.stopDetails===void 0?{}:{stopDetails:options.stopDetails},...options.deferred===void 0?{}:{deferred:options.deferred},...options.errorMessage===void 0?{}:{errorMessage:options.errorMessage},...options.abortSource===void 0?{}:{abortSource:options.abortSource},...options.responseId===void 0?{}:{responseId:options.responseId},timestamp:options.timestamp??Date.now()}}function estimateTokens(text){return Math.ceil(text.length/4)}function randomId(prefix){return`${prefix}:${Date.now()}:${Math.random().toString(36).slice(2)}`}function cloneStreamOptionsForLog(options){if(options)return{...options}}function cloneToolForLog(tool){return{name:tool.name,description:tool.description,parameters:structuredClone(tool.parameters),...tool.freeform?{freeform:structuredClone(tool.freeform)}:{}}}function toLoggedContext(transcript){let systemPrompt=getCurrentSystemPrompt(transcript.messages),tools=getCurrentTools(transcript.messages);return{...systemPrompt?{systemPrompt}:{},messages:structuredClone(transcript.messages.filter(message=>message.role!=="system")),...tools.length>0?{tools:tools.map(cloneToolForLog)}:{},...transcript.activeToolNames?{activeToolNames:[...transcript.activeToolNames]}:{}}}function contentToText(content){return typeof content=="string"?content:content.map(block=>block.type==="text"?block.text:`[image:${block.mimeType}:${block.data.length}]`).join(`
144
144
  `)}function assistantContentToText(content){return content.map(block=>block.type==="text"?block.text:block.type==="thinking"?block.thinking:block.type==="providerNative"?"":`${block.name}:${JSON.stringify(block.arguments)}`).join(`
145
145
  `)}function toolResultToText2(message){return[message.toolName,...message.content.map(block=>contentToText([block]))].join(`
146
146
  `)}function messageToText(message){return message.role==="system"?[getSystemMessageText(message),...message.toolsRemoved?.map(tool=>`tool-:${JSON.stringify(tool)}`)??[],...message.toolsAdded?.map(tool=>`tool+:${JSON.stringify(tool)}`)??[]].filter(part=>part.length>0).join(`
147
147
  `):message.role==="user"?contentToText(message.content):message.role==="assistant"?assistantContentToText(message.content):message.role==="configurationUpdate"?"":toolResultToText2(message)}function serializeContext(context){return context.messages.map(message=>`${message.role}:${messageToText(message)}`).join(`
148
148
 
149
149
  `)}function commonPrefixLength(a,b){let length=Math.min(a.length,b.length),index=0;for(;index<length&&a[index]===b[index];)index++;return index}function withUsageEstimate(message,context,options,promptCache){let promptText=serializeContext(context),promptTokens=estimateTokens(promptText),outputTokens=estimateTokens(assistantContentToText(message.content)),input=promptTokens,cacheRead=0,cacheWrite=0,sessionId=options?.sessionId;if(sessionId&&options?.cacheRetention!=="none"){let previousPrompt=promptCache.get(sessionId);if(previousPrompt){let cachedChars=commonPrefixLength(previousPrompt,promptText);cacheRead=estimateTokens(previousPrompt.slice(0,cachedChars)),cacheWrite=estimateTokens(promptText.slice(cachedChars)),input=Math.max(0,promptTokens-cacheRead)}else cacheWrite=promptTokens;promptCache.set(sessionId,promptText)}return{...message,usage:{input,output:outputTokens,cacheRead,cacheWrite,totalTokens:input+outputTokens+cacheRead+cacheWrite,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}}function splitStringByTokenSize(text,minTokenSize,maxTokenSize){let chunks=[],index=0;for(;index<text.length;){let tokenSize=minTokenSize+Math.floor(Math.random()*(maxTokenSize-minTokenSize+1)),charSize=Math.max(1,tokenSize*4);chunks.push(text.slice(index,index+charSize)),index+=charSize}return chunks.length>0?chunks:[""]}function cloneMessage(message,api,provider,modelId){let cloned=structuredClone(message);return{...cloned,api,provider,model:modelId,timestamp:cloned.timestamp??Date.now(),usage:cloned.usage??DEFAULT_USAGE}}function createDeferredMessage(model,handle){return{role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,usage:DEFAULT_USAGE,stopReason:"deferred",deferred:handle,timestamp:Date.now()}}function createErrorMessage(error,api,provider,modelId){return{role:"assistant",content:[],api,provider,model:modelId,usage:DEFAULT_USAGE,stopReason:"error",errorMessage:error instanceof Error?error.message:String(error),timestamp:Date.now()}}function createAbortedMessage(partial){return{...partial,stopReason:"aborted",errorMessage:"Request was aborted",timestamp:Date.now()}}function scheduleChunk(chunk,tokensPerSecond,schedulerHook){if(schedulerHook)return Promise.resolve(schedulerHook());if(!tokensPerSecond||tokensPerSecond<=0)return new Promise(resolve=>queueMicrotask(resolve));let delayMs=estimateTokens(chunk)/tokensPerSecond*1e3;return new Promise(resolve=>setTimeout(resolve,delayMs))}async function streamWithDeltas(stream,message,minTokenSize,maxTokenSize,tokensPerSecond,schedulerHook,signal){let partial={...message,content:[],stopReason:"pending"};if(signal?.aborted){let aborted=createAbortedMessage(partial);stream.push({type:"error",reason:"aborted",error:aborted}),stream.end(aborted);return}stream.push({type:"start",partial:{...partial}});for(let index=0;index<message.content.length;index++){if(signal?.aborted){let aborted=createAbortedMessage(partial);stream.push({type:"error",reason:"aborted",error:aborted}),stream.end(aborted);return}let block=message.content[index];if(block.type==="thinking"){partial.content=[...partial.content,{type:"thinking",thinking:""}],stream.push({type:"thinking_start",contentIndex:index,partial:{...partial}});for(let chunk of splitStringByTokenSize(block.thinking,minTokenSize,maxTokenSize)){if(await scheduleChunk(chunk,tokensPerSecond,schedulerHook),signal?.aborted){let aborted=createAbortedMessage(partial);stream.push({type:"error",reason:"aborted",error:aborted}),stream.end(aborted);return}partial.content[index].thinking+=chunk,stream.push({type:"thinking_delta",contentIndex:index,delta:chunk,partial:{...partial}})}stream.push({type:"thinking_end",contentIndex:index,content:block.thinking,partial:{...partial}});continue}if(block.type==="text"){partial.content=[...partial.content,{type:"text",text:""}],stream.push({type:"text_start",contentIndex:index,partial:{...partial}});for(let chunk of splitStringByTokenSize(block.text,minTokenSize,maxTokenSize)){if(await scheduleChunk(chunk,tokensPerSecond,schedulerHook),signal?.aborted){let aborted=createAbortedMessage(partial);stream.push({type:"error",reason:"aborted",error:aborted}),stream.end(aborted);return}partial.content[index].text+=chunk,stream.push({type:"text_delta",contentIndex:index,delta:chunk,partial:{...partial}})}stream.push({type:"text_end",contentIndex:index,content:block.text,partial:{...partial}});continue}if(block.type!=="providerNative"){partial.content=[...partial.content,{type:"toolCall",id:block.id,name:block.name,arguments:{}}],stream.push({type:"toolcall_start",contentIndex:index,partial:{...partial}});for(let chunk of splitStringByTokenSize(JSON.stringify(block.arguments),minTokenSize,maxTokenSize)){if(await scheduleChunk(chunk,tokensPerSecond,schedulerHook),signal?.aborted){let aborted=createAbortedMessage(partial);stream.push({type:"error",reason:"aborted",error:aborted}),stream.end(aborted);return}stream.push({type:"toolcall_delta",contentIndex:index,delta:chunk,partial:{...partial}},{parsedThrough:0})}partial.content[index].arguments=block.arguments,stream.push({type:"toolcall_end",contentIndex:index,toolCall:block,partial:{...partial}})}}if(message.stopReason==="pending")throw new Error("Faux response ended without a stop reason");if(message.stopReason==="error"||message.stopReason==="aborted"){stream.push({type:"error",reason:message.stopReason,error:message}),stream.end(message);return}stream.push({type:"done",reason:message.stopReason,message}),stream.end(message)}function createFauxCore(options){let api=options.api??randomId(DEFAULT_API),provider=options.provider??DEFAULT_PROVIDER,responseHeaders=options.responseHeaders??{},minTokenSize=Math.max(1,Math.min(options.tokenSize?.min??DEFAULT_MIN_TOKEN_SIZE,options.tokenSize?.max??DEFAULT_MAX_TOKEN_SIZE)),maxTokenSize=Math.max(minTokenSize,options.tokenSize?.max??DEFAULT_MAX_TOKEN_SIZE),pendingResponses=[],tokensPerSecond=options.tokensPerSecond,schedulerHook=options.schedulerHook,state={callCount:0,deferredFetchCount:0,cancelledDeferred:[]},promptCache=new Map,callLog=[],deferredResponses=new Map,models=(options.models?.length?options.models:[{id:DEFAULT_MODEL_ID,name:DEFAULT_MODEL_NAME,reasoning:!1,input:["text","image"],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384}]).map(definition=>({id:definition.id,name:definition.name??definition.id,api,provider,baseUrl:DEFAULT_BASE_URL,reasoning:definition.reasoning??!1,input:definition.input??["text","image"],inputLimits:definition.inputLimits,cost:definition.cost??{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:definition.contextWindow??128e3,maxTokens:definition.maxTokens??16384})),resolveResponse=async(step,context,streamOptions,requestModel)=>{let resolved=typeof step=="function"?await step(context,streamOptions,state,requestModel):step;return withUsageEstimate(cloneMessage(resolved,api,provider,requestModel.id),context,streamOptions,promptCache)},stream=(requestModel,context,streamOptions)=>{let outer=createAssistantMessageEventStream();enableAssistantCapture(outer);let step=pendingResponses.shift();return state.callCount++,callLog.push({context:toLoggedContext(context),options:cloneStreamOptionsForLog(streamOptions),timestamp:Date.now(),modelId:requestModel.id}),queueMicrotask(async()=>{try{if(await streamOptions?.onResponse?.({status:200,headers:{...responseHeaders}},requestModel),!step){let message2=createErrorMessage(new Error("No more faux responses queued"),api,provider,requestModel.id);message2=withUsageEstimate(message2,context,streamOptions,promptCache),outer.push({type:"error",reason:"error",error:message2}),outer.end(message2);return}if(streamOptions?.deferred){let handle={provider:requestModel.provider,modelId:requestModel.id,api:requestModel.api,id:randomId("deferred"),...options.deferred?.pollAfterMs!==void 0?{pollAfterMs:options.deferred.pollAfterMs}:{}};deferredResponses.set(handle.id,{handle,step,context,options:streamOptions,model:requestModel,pendingFetches:Math.max(0,Math.floor(options.deferred?.pendingFetches??0)),cancelled:!1}),await streamWithDeltas(outer,createDeferredMessage(requestModel,handle),minTokenSize,maxTokenSize,tokensPerSecond,schedulerHook,streamOptions.signal);return}let message=await resolveResponse(step,context,streamOptions,requestModel);await streamWithDeltas(outer,message,minTokenSize,maxTokenSize,tokensPerSecond,schedulerHook,streamOptions?.signal)}catch(error){let message=createErrorMessage(error,api,provider,requestModel.id);outer.push({type:"error",reason:"error",error:message}),outer.end(message)}}),outer},streamSimple=(streamModel,context,streamOptions)=>stream(streamModel,context,streamOptions),fetchDeferred=(requestModel,handle,fetchOptions)=>{let outer=createAssistantMessageEventStream();return enableAssistantCapture(outer),state.deferredFetchCount++,queueMicrotask(async()=>{try{await fetchOptions?.onResponse?.({status:200,headers:{...responseHeaders}},requestModel);let entry=deferredResponses.get(handle.id);if(!entry||entry.handle.provider!==handle.provider||entry.handle.modelId!==handle.modelId||entry.handle.api!==handle.api)throw new Error(`Unknown faux deferred response: ${handle.id}`);if(entry.cancelled)throw new Error(`Faux deferred response was cancelled: ${handle.id}`);if(entry.pendingFetches>0){entry.pendingFetches--,await streamWithDeltas(outer,createDeferredMessage(requestModel,entry.handle),minTokenSize,maxTokenSize,tokensPerSecond,schedulerHook,fetchOptions?.signal);return}if(!entry.final){let{deferred:_deferred,signal:_submissionSignal,onResponse:_submissionOnResponse,...submissionOptions}=entry.options??{};try{entry.final=await resolveResponse(entry.step,entry.context,submissionOptions,entry.model)}catch(error){entry.final=createErrorMessage(error,api,provider,entry.model.id)}}await streamWithDeltas(outer,entry.final,minTokenSize,maxTokenSize,tokensPerSecond,schedulerHook,fetchOptions?.signal)}catch(error){let message=createErrorMessage(error,api,provider,requestModel.id);outer.push({type:"error",reason:"error",error:message}),outer.end(message)}}),outer},cancelDeferred=async(requestModel,handle,cancelOptions)=>{state.cancelledDeferred.push(structuredClone(handle));let entry=deferredResponses.get(handle.id);entry&&(entry.cancelled=!0),await cancelOptions?.onResponse?.({status:200,headers:{...responseHeaders}},requestModel)};function getModel(requestedModelId){return requestedModelId?models.find(candidate=>candidate.id===requestedModelId):models[0]}return{api,provider,models,stream,streamSimple,fetchDeferred,cancelDeferred,getModel,state,setResponses(responses){pendingResponses=[...responses]},appendResponses(responses){pendingResponses.push(...responses)},getPendingResponseCount(){return pendingResponses.length},getCallLog(){return callLog.map(entry=>({context:structuredClone(entry.context),options:cloneStreamOptionsForLog(entry.options),timestamp:entry.timestamp,modelId:entry.modelId}))}}}var registeredFauxProviders=new Map;function getRegisteredFauxProvider(api){return registeredFauxProviders.get(api)}function fauxOverflowError(provider,message){return fauxAssistantMessage([],{stopReason:"error",errorMessage:`${provider}: ${message}`})}function fauxProvider(options={}){let core=createFauxCore(options);return{provider:createProvider({id:core.provider,auth:{apiKey:{name:"Faux",resolve:async()=>({auth:{}})}},models:core.models,api:{stream:core.stream,streamSimple:core.streamSimple,fetchDeferred:core.fetchDeferred,cancelDeferred:core.cancelDeferred}}),api:core.api,models:core.models,getModel:core.getModel,state:core.state,setResponses:core.setResponses,appendResponses:core.appendResponses,getPendingResponseCount:core.getPendingResponseCount,getCallLog:core.getCallLog}}var apiProviderRegistry=new Map,builtinApiProviderRegistry=new Map,getProviderScope=()=>{},providerScopeStrictMode=!1;function installProviderScopeAccessor(accessor){getProviderScope=accessor}function getActiveProviderScope(){let scope=getProviderScope();if(scope?.state==="closed")throw new Error("Provider scope is closed");if(!scope&&providerScopeStrictMode)throw new Error("Provider scope is required in strict mode");return scope}function wrapStream(api,stream){return(model,context,options)=>{if(model.api!==api)throw new Error(`Mismatched api: ${model.api} expected ${api}`);return stream(model,context,options)}}function wrapStreamSimple(api,streamSimple){return(model,context,options)=>{if(model.api!==api)throw new Error(`Mismatched api: ${model.api} expected ${api}`);return streamSimple(model,context,options)}}function createRegisteredProvider(provider,sourceId,survivesClear){return{provider:{api:provider.api,stream:wrapStream(provider.api,provider.stream),streamSimple:wrapStreamSimple(provider.api,provider.streamSimple)},sourceId,...survivesClear?{survivesClear}:{}}}function registerApiProvider(provider,sourceId,options){let scope=getActiveProviderScope();(scope?scope.overlay:apiProviderRegistry).set(provider.api,createRegisteredProvider(provider,sourceId,options?.survivesClear))}function registerBuiltinApiProvider(provider){let registered=builtinApiProviderRegistry.get(provider.api)??createRegisteredProvider(provider);builtinApiProviderRegistry.set(provider.api,registered),apiProviderRegistry.has(provider.api)||apiProviderRegistry.set(provider.api,registered)}function getApiProvider(api){let scope=getActiveProviderScope();if(scope)return scope.overlay.get(api)?.provider??builtinApiProviderRegistry.get(api)?.provider;let faux=getRegisteredFauxProvider(api);return faux?{api:faux.api,stream:wrapStream(faux.api,faux.stream),streamSimple:wrapStreamSimple(faux.api,faux.streamSimple)}:apiProviderRegistry.get(api)?.provider}function getApiProviders(){let scope=getActiveProviderScope();if(scope){let providers=new Map(builtinApiProviderRegistry);for(let[api,entry]of scope.overlay)providers.set(api,entry);return Array.from(providers.values(),entry=>entry.provider)}return Array.from(apiProviderRegistry.values(),entry=>entry.provider)}function unregisterApiProviders(sourceId){let scope=getActiveProviderScope(),registry=scope?scope.overlay:apiProviderRegistry;for(let[api,entry]of registry.entries()){if(entry.sourceId!==sourceId)continue;registry.delete(api);let builtin=builtinApiProviderRegistry.get(api);!scope&&builtin&&registry.set(api,builtin)}}function clearApiProviders(){let scope=getActiveProviderScope(),registry=scope?scope.overlay:apiProviderRegistry;for(let[api,entry]of registry)entry.survivesClear||registry.delete(api)}function envApiKeyAuth(name,envVars){return{name,login:async interaction=>{interaction.signal.throwIfAborted();let key=await interaction.prompt({type:"secret",message:`Enter ${name}`});return interaction.signal.throwIfAborted(),{type:"api_key",key}},resolve:async({ctx,credential,signal})=>{if(signal.throwIfAborted(),credential?.key)return{auth:{apiKey:credential.key},env:credential.env,source:"stored credential"};for(let envVar of envVars){let value=await ctx.env(envVar);if(signal.throwIfAborted(),value)return{auth:{apiKey:value},source:envVar}}}}}function lazyOAuth(input){let promise,loaded=()=>(promise??=input.load(),promise);return{name:input.name,isSubscription:input.isSubscription,loginLabel:input.loginLabel,...input.rejectedTokenStatuses===void 0?{}:{rejectedTokenStatuses:input.rejectedTokenStatuses},login:async(interaction,options)=>(await loaded()).login(interaction,options),refresh:async(credential,signal)=>(await loaded()).refresh(credential,signal),toAuth:async credential=>(await loaded()).toAuth(credential)}}var cursor_variant_aliases_default={$schema:"cursor-variant-aliases/v1",source:"union of GetUsableModels live capture (204 ids) and cursor-agent CLI listing capture (203 ids), 2026-08-18",aliases:{"claude-4-sonnet":{targetId:"claude-4-sonnet",legacyVariantId:"claude-4-sonnet",encoding:"legacy-variant"},"claude-4-sonnet-thinking":{targetId:"claude-4-sonnet-thinking",legacyVariantId:"claude-4-sonnet-thinking",encoding:"legacy-variant"},"claude-4.5-opus-high":{targetId:"claude-4.5-opus",level:"high",legacyVariantId:"claude-4.5-opus-high",encoding:"legacy-variant"},"claude-4.5-opus-high-thinking":{targetId:"claude-4.5-opus-thinking",level:"high",legacyVariantId:"claude-4.5-opus-high-thinking",encoding:"legacy-variant"},"claude-4.5-sonnet":{targetId:"claude-4.5-sonnet",legacyVariantId:"claude-4.5-sonnet",encoding:"legacy-variant"},"claude-4.5-sonnet-thinking":{targetId:"claude-4.5-sonnet-thinking",legacyVariantId:"claude-4.5-sonnet-thinking",encoding:"legacy-variant"},"claude-4.6-opus-high":{targetId:"claude-4.6-opus",level:"high",legacyVariantId:"claude-4.6-opus-high",encoding:"legacy-variant"},"claude-4.6-opus-max":{targetId:"claude-4.6-opus",level:"max",legacyVariantId:"claude-4.6-opus-max",encoding:"legacy-variant"},"claude-4.6-opus-high-thinking":{targetId:"claude-4.6-opus-thinking",level:"high",legacyVariantId:"claude-4.6-opus-high-thinking",encoding:"legacy-variant"},"claude-4.6-opus-max-thinking":{targetId:"claude-4.6-opus-thinking",level:"max",legacyVariantId:"claude-4.6-opus-max-thinking",encoding:"legacy-variant"},"claude-4.6-sonnet-medium":{targetId:"claude-4.6-sonnet",level:"medium",legacyVariantId:"claude-4.6-sonnet-medium",encoding:"legacy-variant"},"claude-4.6-sonnet-medium-thinking":{targetId:"claude-4.6-sonnet-thinking",level:"medium",legacyVariantId:"claude-4.6-sonnet-medium-thinking",encoding:"legacy-variant"},"claude-fable-5-high":{targetId:"claude-fable-5",level:"high",legacyVariantId:"claude-fable-5-high",encoding:"legacy-variant"},"claude-fable-5-low":{targetId:"claude-fable-5",level:"low",legacyVariantId:"claude-fable-5-low",encoding:"legacy-variant"},"claude-fable-5-max":{targetId:"claude-fable-5",level:"max",legacyVariantId:"claude-fable-5-max",encoding:"legacy-variant"},"claude-fable-5-medium":{targetId:"claude-fable-5",level:"medium",legacyVariantId:"claude-fable-5-medium",encoding:"legacy-variant"},"claude-fable-5-xhigh":{targetId:"claude-fable-5",level:"xhigh",legacyVariantId:"claude-fable-5-xhigh",encoding:"legacy-variant"},"claude-fable-5-thinking-high":{targetId:"claude-fable-5-thinking",level:"high",legacyVariantId:"claude-fable-5-thinking-high",encoding:"legacy-variant"},"claude-fable-5-thinking-low":{targetId:"claude-fable-5-thinking",level:"low",legacyVariantId:"claude-fable-5-thinking-low",encoding:"legacy-variant"},"claude-fable-5-thinking-max":{targetId:"claude-fable-5-thinking",level:"max",legacyVariantId:"claude-fable-5-thinking-max",encoding:"legacy-variant"},"claude-fable-5-thinking-medium":{targetId:"claude-fable-5-thinking",level:"medium",legacyVariantId:"claude-fable-5-thinking-medium",encoding:"legacy-variant"},"claude-fable-5-thinking-xhigh":{targetId:"claude-fable-5-thinking",level:"xhigh",legacyVariantId:"claude-fable-5-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-high":{targetId:"claude-opus-4-7",level:"high",legacyVariantId:"claude-opus-4-7-high",encoding:"legacy-variant"},"claude-opus-4-7-low":{targetId:"claude-opus-4-7",level:"low",legacyVariantId:"claude-opus-4-7-low",encoding:"legacy-variant"},"claude-opus-4-7-max":{targetId:"claude-opus-4-7",level:"max",legacyVariantId:"claude-opus-4-7-max",encoding:"legacy-variant"},"claude-opus-4-7-medium":{targetId:"claude-opus-4-7",level:"medium",legacyVariantId:"claude-opus-4-7-medium",encoding:"legacy-variant"},"claude-opus-4-7-xhigh":{targetId:"claude-opus-4-7",level:"xhigh",legacyVariantId:"claude-opus-4-7-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-high-fast":{targetId:"claude-opus-4-7-high-fast",legacyVariantId:"claude-opus-4-7-high-fast",encoding:"legacy-variant"},"claude-opus-4-7-low-fast":{targetId:"claude-opus-4-7-low-fast",legacyVariantId:"claude-opus-4-7-low-fast",encoding:"legacy-variant"},"claude-opus-4-7-max-fast":{targetId:"claude-opus-4-7-max-fast",legacyVariantId:"claude-opus-4-7-max-fast",encoding:"legacy-variant"},"claude-opus-4-7-medium-fast":{targetId:"claude-opus-4-7-medium-fast",legacyVariantId:"claude-opus-4-7-medium-fast",encoding:"legacy-variant"},"claude-opus-4-7-xhigh-fast":{targetId:"claude-opus-4-7-xhigh-fast",legacyVariantId:"claude-opus-4-7-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-high":{targetId:"claude-opus-4-7-thinking",level:"high",legacyVariantId:"claude-opus-4-7-thinking-high",encoding:"legacy-variant"},"claude-opus-4-7-thinking-low":{targetId:"claude-opus-4-7-thinking",level:"low",legacyVariantId:"claude-opus-4-7-thinking-low",encoding:"legacy-variant"},"claude-opus-4-7-thinking-max":{targetId:"claude-opus-4-7-thinking",level:"max",legacyVariantId:"claude-opus-4-7-thinking-max",encoding:"legacy-variant"},"claude-opus-4-7-thinking-medium":{targetId:"claude-opus-4-7-thinking",level:"medium",legacyVariantId:"claude-opus-4-7-thinking-medium",encoding:"legacy-variant"},"claude-opus-4-7-thinking-xhigh":{targetId:"claude-opus-4-7-thinking",level:"xhigh",legacyVariantId:"claude-opus-4-7-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-7-thinking-high-fast":{targetId:"claude-opus-4-7-thinking-high-fast",legacyVariantId:"claude-opus-4-7-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-low-fast":{targetId:"claude-opus-4-7-thinking-low-fast",legacyVariantId:"claude-opus-4-7-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-max-fast":{targetId:"claude-opus-4-7-thinking-max-fast",legacyVariantId:"claude-opus-4-7-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-medium-fast":{targetId:"claude-opus-4-7-thinking-medium-fast",legacyVariantId:"claude-opus-4-7-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-4-7-thinking-xhigh-fast":{targetId:"claude-opus-4-7-thinking-xhigh-fast",legacyVariantId:"claude-opus-4-7-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-8-high":{targetId:"claude-opus-4-8",level:"high",legacyVariantId:"claude-opus-4-8-high",encoding:"legacy-variant"},"claude-opus-4-8-low":{targetId:"claude-opus-4-8",level:"low",legacyVariantId:"claude-opus-4-8-low",encoding:"legacy-variant"},"claude-opus-4-8-max":{targetId:"claude-opus-4-8",level:"max",legacyVariantId:"claude-opus-4-8-max",encoding:"legacy-variant"},"claude-opus-4-8-medium":{targetId:"claude-opus-4-8",level:"medium",legacyVariantId:"claude-opus-4-8-medium",encoding:"legacy-variant"},"claude-opus-4-8-xhigh":{targetId:"claude-opus-4-8",level:"xhigh",legacyVariantId:"claude-opus-4-8-xhigh",encoding:"legacy-variant"},"claude-opus-4-8-high-fast":{targetId:"claude-opus-4-8-high-fast",legacyVariantId:"claude-opus-4-8-high-fast",encoding:"legacy-variant"},"claude-opus-4-8-low-fast":{targetId:"claude-opus-4-8-low-fast",legacyVariantId:"claude-opus-4-8-low-fast",encoding:"legacy-variant"},"claude-opus-4-8-max-fast":{targetId:"claude-opus-4-8-max-fast",legacyVariantId:"claude-opus-4-8-max-fast",encoding:"legacy-variant"},"claude-opus-4-8-medium-fast":{targetId:"claude-opus-4-8-medium-fast",legacyVariantId:"claude-opus-4-8-medium-fast",encoding:"legacy-variant"},"claude-opus-4-8-xhigh-fast":{targetId:"claude-opus-4-8-xhigh-fast",legacyVariantId:"claude-opus-4-8-xhigh-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-high":{targetId:"claude-opus-4-8-thinking",level:"high",legacyVariantId:"claude-opus-4-8-thinking-high",encoding:"legacy-variant"},"claude-opus-4-8-thinking-low":{targetId:"claude-opus-4-8-thinking",level:"low",legacyVariantId:"claude-opus-4-8-thinking-low",encoding:"legacy-variant"},"claude-opus-4-8-thinking-max":{targetId:"claude-opus-4-8-thinking",level:"max",legacyVariantId:"claude-opus-4-8-thinking-max",encoding:"legacy-variant"},"claude-opus-4-8-thinking-medium":{targetId:"claude-opus-4-8-thinking",level:"medium",legacyVariantId:"claude-opus-4-8-thinking-medium",encoding:"legacy-variant"},"claude-opus-4-8-thinking-xhigh":{targetId:"claude-opus-4-8-thinking",level:"xhigh",legacyVariantId:"claude-opus-4-8-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-4-8-thinking-high-fast":{targetId:"claude-opus-4-8-thinking-high-fast",legacyVariantId:"claude-opus-4-8-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-low-fast":{targetId:"claude-opus-4-8-thinking-low-fast",legacyVariantId:"claude-opus-4-8-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-max-fast":{targetId:"claude-opus-4-8-thinking-max-fast",legacyVariantId:"claude-opus-4-8-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-medium-fast":{targetId:"claude-opus-4-8-thinking-medium-fast",legacyVariantId:"claude-opus-4-8-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-4-8-thinking-xhigh-fast":{targetId:"claude-opus-4-8-thinking-xhigh-fast",legacyVariantId:"claude-opus-4-8-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-opus-5-high":{targetId:"claude-opus-5",level:"high",legacyVariantId:"claude-opus-5-high",encoding:"legacy-variant"},"claude-opus-5-low":{targetId:"claude-opus-5",level:"low",legacyVariantId:"claude-opus-5-low",encoding:"legacy-variant"},"claude-opus-5-medium":{targetId:"claude-opus-5",level:"medium",legacyVariantId:"claude-opus-5-medium",encoding:"legacy-variant"},"claude-opus-5-max":{targetId:"claude-opus-5",level:"max",legacyVariantId:"claude-opus-5-max",encoding:"legacy-variant"},"claude-opus-5-high-fast":{targetId:"claude-opus-5-high-fast",legacyVariantId:"claude-opus-5-high-fast",encoding:"legacy-variant"},"claude-opus-5-low-fast":{targetId:"claude-opus-5-low-fast",legacyVariantId:"claude-opus-5-low-fast",encoding:"legacy-variant"},"claude-opus-5-medium-fast":{targetId:"claude-opus-5-medium-fast",legacyVariantId:"claude-opus-5-medium-fast",encoding:"legacy-variant"},"claude-opus-5-max-fast":{targetId:"claude-opus-5-max-fast",legacyVariantId:"claude-opus-5-max-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-high":{targetId:"claude-opus-5-thinking",level:"high",legacyVariantId:"claude-opus-5-thinking-high",encoding:"legacy-variant"},"claude-opus-5-thinking-low":{targetId:"claude-opus-5-thinking",level:"low",legacyVariantId:"claude-opus-5-thinking-low",encoding:"legacy-variant"},"claude-opus-5-thinking-max":{targetId:"claude-opus-5-thinking",level:"max",legacyVariantId:"claude-opus-5-thinking-max",encoding:"legacy-variant"},"claude-opus-5-thinking-medium":{targetId:"claude-opus-5-thinking",level:"medium",legacyVariantId:"claude-opus-5-thinking-medium",encoding:"legacy-variant"},"claude-opus-5-thinking-xhigh":{targetId:"claude-opus-5-thinking",level:"xhigh",legacyVariantId:"claude-opus-5-thinking-xhigh",encoding:"legacy-variant"},"claude-opus-5-thinking-high-fast":{targetId:"claude-opus-5-thinking-high-fast",legacyVariantId:"claude-opus-5-thinking-high-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-low-fast":{targetId:"claude-opus-5-thinking-low-fast",legacyVariantId:"claude-opus-5-thinking-low-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-max-fast":{targetId:"claude-opus-5-thinking-max-fast",legacyVariantId:"claude-opus-5-thinking-max-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-medium-fast":{targetId:"claude-opus-5-thinking-medium-fast",legacyVariantId:"claude-opus-5-thinking-medium-fast",encoding:"legacy-variant"},"claude-opus-5-thinking-xhigh-fast":{targetId:"claude-opus-5-thinking-xhigh-fast",legacyVariantId:"claude-opus-5-thinking-xhigh-fast",encoding:"legacy-variant"},"claude-sonnet-5-high":{targetId:"claude-sonnet-5",level:"high",legacyVariantId:"claude-sonnet-5-high",encoding:"legacy-variant"},"claude-sonnet-5-low":{targetId:"claude-sonnet-5",level:"low",legacyVariantId:"claude-sonnet-5-low",encoding:"legacy-variant"},"claude-sonnet-5-max":{targetId:"claude-sonnet-5",level:"max",legacyVariantId:"claude-sonnet-5-max",encoding:"legacy-variant"},"claude-sonnet-5-medium":{targetId:"claude-sonnet-5",level:"medium",legacyVariantId:"claude-sonnet-5-medium",encoding:"legacy-variant"},"claude-sonnet-5-xhigh":{targetId:"claude-sonnet-5",level:"xhigh",legacyVariantId:"claude-sonnet-5-xhigh",encoding:"legacy-variant"},"claude-sonnet-5-thinking-high":{targetId:"claude-sonnet-5-thinking",level:"high",legacyVariantId:"claude-sonnet-5-thinking-high",encoding:"legacy-variant"},"claude-sonnet-5-thinking-low":{targetId:"claude-sonnet-5-thinking",level:"low",legacyVariantId:"claude-sonnet-5-thinking-low",encoding:"legacy-variant"},"claude-sonnet-5-thinking-max":{targetId:"claude-sonnet-5-thinking",level:"max",legacyVariantId:"claude-sonnet-5-thinking-max",encoding:"legacy-variant"},"claude-sonnet-5-thinking-medium":{targetId:"claude-sonnet-5-thinking",level:"medium",legacyVariantId:"claude-sonnet-5-thinking-medium",encoding:"legacy-variant"},"claude-sonnet-5-thinking-xhigh":{targetId:"claude-sonnet-5-thinking",level:"xhigh",legacyVariantId:"claude-sonnet-5-thinking-xhigh",encoding:"legacy-variant"},"composer-2.5":{targetId:"composer-2.5",legacyVariantId:"composer-2.5",encoding:"legacy-variant"},"composer-2.5-fast":{targetId:"composer-2.5-fast",legacyVariantId:"composer-2.5-fast",encoding:"legacy-variant"},"cursor-grok-4.5-high":{targetId:"cursor-grok-4.5",level:"high",legacyVariantId:"cursor-grok-4.5-high",encoding:"legacy-variant"},"cursor-grok-4.5-low":{targetId:"cursor-grok-4.5",level:"low",legacyVariantId:"cursor-grok-4.5-low",encoding:"legacy-variant"},"cursor-grok-4.5-medium":{targetId:"cursor-grok-4.5",level:"medium",legacyVariantId:"cursor-grok-4.5-medium",encoding:"legacy-variant"},"cursor-grok-4.5-max":{targetId:"cursor-grok-4.5",level:"max",legacyVariantId:"cursor-grok-4.5-max",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-low":{targetId:"cursor-grok-4.5",level:"low",legacyVariantId:"cursor-grok-4.5-thinking-low",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-medium":{targetId:"cursor-grok-4.5",level:"medium",legacyVariantId:"cursor-grok-4.5-thinking-medium",encoding:"legacy-variant"},"cursor-grok-4.5-thinking-max":{targetId:"cursor-grok-4.5",level:"max",legacyVariantId:"cursor-grok-4.5-thinking-max",encoding:"legacy-variant"},"cursor-grok-4.5-high-fast":{targetId:"cursor-grok-4.5-high-fast",legacyVariantId:"cursor-grok-4.5-high-fast",encoding:"legacy-variant"},"cursor-grok-4.5-low-fast":{targetId:"cursor-grok-4.5-low-fast",legacyVariantId:"cursor-grok-4.5-low-fast",encoding:"legacy-variant"},"cursor-grok-4.5-medium-fast":{targetId:"cursor-grok-4.5-medium-fast",legacyVariantId:"cursor-grok-4.5-medium-fast",encoding:"legacy-variant"},"cursor-grok-4.5-max-fast":{targetId:"cursor-grok-4.5-max-fast",legacyVariantId:"cursor-grok-4.5-max-fast",encoding:"legacy-variant"},"cursor-grok-4.6-high":{targetId:"cursor-grok-4.6",level:"high",legacyVariantId:"cursor-grok-4.6-high",encoding:"legacy-variant"},"cursor-grok-4.6-low":{targetId:"cursor-grok-4.6",level:"low",legacyVariantId:"cursor-grok-4.6-low",encoding:"legacy-variant"},"cursor-grok-4.6-medium":{targetId:"cursor-grok-4.6",level:"medium",legacyVariantId:"cursor-grok-4.6-medium",encoding:"legacy-variant"},"cursor-grok-4.6-xhigh":{targetId:"cursor-grok-4.6",level:"xhigh",legacyVariantId:"cursor-grok-4.6-xhigh",encoding:"legacy-variant"},"cursor-grok-4.6-max":{targetId:"cursor-grok-4.6",level:"max",legacyVariantId:"cursor-grok-4.6-max",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-low":{targetId:"cursor-grok-4.6",level:"low",legacyVariantId:"cursor-grok-4.6-thinking-low",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-medium":{targetId:"cursor-grok-4.6",level:"medium",legacyVariantId:"cursor-grok-4.6-thinking-medium",encoding:"legacy-variant"},"cursor-grok-4.6-thinking-max":{targetId:"cursor-grok-4.6",level:"max",legacyVariantId:"cursor-grok-4.6-thinking-max",encoding:"legacy-variant"},"cursor-grok-4.6-high-fast":{targetId:"cursor-grok-4.6-high-fast",legacyVariantId:"cursor-grok-4.6-high-fast",encoding:"legacy-variant"},"cursor-grok-4.6-low-fast":{targetId:"cursor-grok-4.6-low-fast",legacyVariantId:"cursor-grok-4.6-low-fast",encoding:"legacy-variant"},"cursor-grok-4.6-medium-fast":{targetId:"cursor-grok-4.6-medium-fast",legacyVariantId:"cursor-grok-4.6-medium-fast",encoding:"legacy-variant"},"cursor-grok-4.6-xhigh-fast":{targetId:"cursor-grok-4.6-xhigh-fast",legacyVariantId:"cursor-grok-4.6-xhigh-fast",encoding:"legacy-variant"},"cursor-grok-4.6-max-fast":{targetId:"cursor-grok-4.6-max-fast",legacyVariantId:"cursor-grok-4.6-max-fast",encoding:"legacy-variant"},default:{targetId:"default",legacyVariantId:"default",encoding:"legacy-variant"},"gemini-3-flash":{targetId:"gemini-3-flash",legacyVariantId:"gemini-3-flash",encoding:"legacy-variant"},"gemini-3.1-pro":{targetId:"gemini-3.1-pro",legacyVariantId:"gemini-3.1-pro",encoding:"legacy-variant"},"gemini-3.5-flash":{targetId:"gemini-3.5-flash",legacyVariantId:"gemini-3.5-flash",encoding:"legacy-variant"},"gemini-3.6-flash-high":{targetId:"gemini-3.6-flash",level:"high",legacyVariantId:"gemini-3.6-flash-high",encoding:"legacy-variant"},"gemini-3.6-flash-low":{targetId:"gemini-3.6-flash",level:"low",legacyVariantId:"gemini-3.6-flash-low",encoding:"legacy-variant"},"gemini-3.6-flash-medium":{targetId:"gemini-3.6-flash",level:"medium",legacyVariantId:"gemini-3.6-flash-medium",encoding:"legacy-variant"},"gemini-3.6-flash-minimal":{targetId:"gemini-3.6-flash",level:"minimal",legacyVariantId:"gemini-3.6-flash-minimal",encoding:"legacy-variant"},"gemini-3.7-flash-high":{targetId:"gemini-3.7-flash",level:"high",legacyVariantId:"gemini-3.7-flash-high",encoding:"legacy-variant"},"gemini-3.7-flash-low":{targetId:"gemini-3.7-flash",level:"low",legacyVariantId:"gemini-3.7-flash-low",encoding:"legacy-variant"},"gemini-3.7-flash-medium":{targetId:"gemini-3.7-flash",level:"medium",legacyVariantId:"gemini-3.7-flash-medium",encoding:"legacy-variant"},"gemini-3.7-flash-max":{targetId:"gemini-3.7-flash",level:"max",legacyVariantId:"gemini-3.7-flash-max",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-low":{targetId:"gemini-3.7-flash",level:"low",legacyVariantId:"gemini-3.7-flash-thinking-low",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-medium":{targetId:"gemini-3.7-flash",level:"medium",legacyVariantId:"gemini-3.7-flash-thinking-medium",encoding:"legacy-variant"},"gemini-3.7-flash-thinking-max":{targetId:"gemini-3.7-flash",level:"max",legacyVariantId:"gemini-3.7-flash-thinking-max",encoding:"legacy-variant"},"glm-5.2-high":{targetId:"glm-5.2",level:"high",legacyVariantId:"glm-5.2-high",encoding:"legacy-variant"},"glm-5.2-max":{targetId:"glm-5.2",level:"max",legacyVariantId:"glm-5.2-max",encoding:"legacy-variant"},"gpt-5-mini":{targetId:"gpt-5-mini",legacyVariantId:"gpt-5-mini",encoding:"legacy-variant"},"gpt-5.1":{targetId:"gpt-5.1",legacyVariantId:"gpt-5.1",encoding:"legacy-variant"},"gpt-5.1-high":{targetId:"gpt-5.1",level:"high",legacyVariantId:"gpt-5.1-high",encoding:"legacy-variant"},"gpt-5.1-low":{targetId:"gpt-5.1",level:"low",legacyVariantId:"gpt-5.1-low",encoding:"legacy-variant"},"gpt-5.2":{targetId:"gpt-5.2",legacyVariantId:"gpt-5.2",encoding:"legacy-variant"},"gpt-5.2-high":{targetId:"gpt-5.2",level:"high",legacyVariantId:"gpt-5.2-high",encoding:"legacy-variant"},"gpt-5.2-low":{targetId:"gpt-5.2",level:"low",legacyVariantId:"gpt-5.2-low",encoding:"legacy-variant"},"gpt-5.2-xhigh":{targetId:"gpt-5.2",level:"xhigh",legacyVariantId:"gpt-5.2-xhigh",encoding:"legacy-variant"},"gpt-5.2-medium":{targetId:"gpt-5.2",level:"medium",legacyVariantId:"gpt-5.2-medium",encoding:"legacy-variant"},"gpt-5.2-max":{targetId:"gpt-5.2",level:"max",legacyVariantId:"gpt-5.2-max",encoding:"legacy-variant"},"gpt-5.2-thinking-low":{targetId:"gpt-5.2",level:"low",legacyVariantId:"gpt-5.2-thinking-low",encoding:"legacy-variant"},"gpt-5.2-thinking-medium":{targetId:"gpt-5.2",level:"medium",legacyVariantId:"gpt-5.2-thinking-medium",encoding:"legacy-variant"},"gpt-5.2-thinking-max":{targetId:"gpt-5.2",level:"max",legacyVariantId:"gpt-5.2-thinking-max",encoding:"legacy-variant"},"gpt-5.2-fast":{targetId:"gpt-5.2-fast",legacyVariantId:"gpt-5.2-fast",encoding:"legacy-variant"},"gpt-5.2-high-fast":{targetId:"gpt-5.2-high-fast",legacyVariantId:"gpt-5.2-high-fast",encoding:"legacy-variant"},"gpt-5.2-low-fast":{targetId:"gpt-5.2-low-fast",legacyVariantId:"gpt-5.2-low-fast",encoding:"legacy-variant"},"gpt-5.2-xhigh-fast":{targetId:"gpt-5.2-xhigh-fast",legacyVariantId:"gpt-5.2-xhigh-fast",encoding:"legacy-variant"},"gpt-5.2-medium-fast":{targetId:"gpt-5.2-medium-fast",legacyVariantId:"gpt-5.2-medium-fast",encoding:"legacy-variant"},"gpt-5.2-max-fast":{targetId:"gpt-5.2-max-fast",legacyVariantId:"gpt-5.2-max-fast",encoding:"legacy-variant"},"gpt-5.3-codex":{targetId:"gpt-5.3-codex",legacyVariantId:"gpt-5.3-codex",encoding:"legacy-variant"},"gpt-5.3-codex-high":{targetId:"gpt-5.3-codex",level:"high",legacyVariantId:"gpt-5.3-codex-high",encoding:"legacy-variant"},"gpt-5.3-codex-low":{targetId:"gpt-5.3-codex",level:"low",legacyVariantId:"gpt-5.3-codex-low",encoding:"legacy-variant"},"gpt-5.3-codex-xhigh":{targetId:"gpt-5.3-codex",level:"xhigh",legacyVariantId:"gpt-5.3-codex-xhigh",encoding:"legacy-variant"},"gpt-5.3-codex-medium":{targetId:"gpt-5.3-codex",level:"medium",legacyVariantId:"gpt-5.3-codex-medium",encoding:"legacy-variant"},"gpt-5.3-codex-max":{targetId:"gpt-5.3-codex",level:"max",legacyVariantId:"gpt-5.3-codex-max",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-low":{targetId:"gpt-5.3-codex",level:"low",legacyVariantId:"gpt-5.3-codex-thinking-low",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-medium":{targetId:"gpt-5.3-codex",level:"medium",legacyVariantId:"gpt-5.3-codex-thinking-medium",encoding:"legacy-variant"},"gpt-5.3-codex-thinking-max":{targetId:"gpt-5.3-codex",level:"max",legacyVariantId:"gpt-5.3-codex-thinking-max",encoding:"legacy-variant"},"gpt-5.3-codex-fast":{targetId:"gpt-5.3-codex-fast",legacyVariantId:"gpt-5.3-codex-fast",encoding:"legacy-variant"},"gpt-5.3-codex-high-fast":{targetId:"gpt-5.3-codex-high-fast",legacyVariantId:"gpt-5.3-codex-high-fast",encoding:"legacy-variant"},"gpt-5.3-codex-low-fast":{targetId:"gpt-5.3-codex-low-fast",legacyVariantId:"gpt-5.3-codex-low-fast",encoding:"legacy-variant"},"gpt-5.3-codex-xhigh-fast":{targetId:"gpt-5.3-codex-xhigh-fast",legacyVariantId:"gpt-5.3-codex-xhigh-fast",encoding:"legacy-variant"},"gpt-5.3-codex-medium-fast":{targetId:"gpt-5.3-codex-medium-fast",legacyVariantId:"gpt-5.3-codex-medium-fast",encoding:"legacy-variant"},"gpt-5.3-codex-max-fast":{targetId:"gpt-5.3-codex-max-fast",legacyVariantId:"gpt-5.3-codex-max-fast",encoding:"legacy-variant"},"gpt-5.4-high":{targetId:"gpt-5.4",level:"high",legacyVariantId:"gpt-5.4-high",encoding:"legacy-variant"},"gpt-5.4-low":{targetId:"gpt-5.4",level:"low",legacyVariantId:"gpt-5.4-low",encoding:"legacy-variant"},"gpt-5.4-medium":{targetId:"gpt-5.4",level:"medium",legacyVariantId:"gpt-5.4-medium",encoding:"legacy-variant"},"gpt-5.4-xhigh":{targetId:"gpt-5.4",level:"xhigh",legacyVariantId:"gpt-5.4-xhigh",encoding:"legacy-variant"},"gpt-5.4-high-fast":{targetId:"gpt-5.4-high-fast",legacyVariantId:"gpt-5.4-high-fast",encoding:"legacy-variant"},"gpt-5.4-medium-fast":{targetId:"gpt-5.4-medium-fast",legacyVariantId:"gpt-5.4-medium-fast",encoding:"legacy-variant"},"gpt-5.4-xhigh-fast":{targetId:"gpt-5.4-xhigh-fast",legacyVariantId:"gpt-5.4-xhigh-fast",encoding:"legacy-variant"},"gpt-5.4-mini-high":{targetId:"gpt-5.4-mini",level:"high",legacyVariantId:"gpt-5.4-mini-high",encoding:"legacy-variant"},"gpt-5.4-mini-low":{targetId:"gpt-5.4-mini",level:"low",legacyVariantId:"gpt-5.4-mini-low",encoding:"legacy-variant"},"gpt-5.4-mini-medium":{targetId:"gpt-5.4-mini",level:"medium",legacyVariantId:"gpt-5.4-mini-medium",encoding:"legacy-variant"},"gpt-5.4-mini-none":{targetId:"gpt-5.4-mini",level:"off",legacyVariantId:"gpt-5.4-mini-none",encoding:"legacy-variant"},"gpt-5.4-mini-xhigh":{targetId:"gpt-5.4-mini",level:"xhigh",legacyVariantId:"gpt-5.4-mini-xhigh",encoding:"legacy-variant"},"gpt-5.4-nano-high":{targetId:"gpt-5.4-nano",level:"high",legacyVariantId:"gpt-5.4-nano-high",encoding:"legacy-variant"},"gpt-5.4-nano-low":{targetId:"gpt-5.4-nano",level:"low",legacyVariantId:"gpt-5.4-nano-low",encoding:"legacy-variant"},"gpt-5.4-nano-medium":{targetId:"gpt-5.4-nano",level:"medium",legacyVariantId:"gpt-5.4-nano-medium",encoding:"legacy-variant"},"gpt-5.4-nano-none":{targetId:"gpt-5.4-nano",level:"off",legacyVariantId:"gpt-5.4-nano-none",encoding:"legacy-variant"},"gpt-5.4-nano-xhigh":{targetId:"gpt-5.4-nano",level:"xhigh",legacyVariantId:"gpt-5.4-nano-xhigh",encoding:"legacy-variant"},"gpt-5.5-extra-high":{targetId:"gpt-5.5",level:"extra-high",legacyVariantId:"gpt-5.5-extra-high",encoding:"legacy-variant"},"gpt-5.5-high":{targetId:"gpt-5.5",level:"high",legacyVariantId:"gpt-5.5-high",encoding:"legacy-variant"},"gpt-5.5-low":{targetId:"gpt-5.5",level:"low",legacyVariantId:"gpt-5.5-low",encoding:"legacy-variant"},"gpt-5.5-medium":{targetId:"gpt-5.5",level:"medium",legacyVariantId:"gpt-5.5-medium",encoding:"legacy-variant"},"gpt-5.5-none":{targetId:"gpt-5.5",level:"off",legacyVariantId:"gpt-5.5-none",encoding:"legacy-variant"},"gpt-5.5-max":{targetId:"gpt-5.5",level:"max",legacyVariantId:"gpt-5.5-max",encoding:"legacy-variant"},"gpt-5.5-thinking-low":{targetId:"gpt-5.5",level:"low",legacyVariantId:"gpt-5.5-thinking-low",encoding:"legacy-variant"},"gpt-5.5-thinking-medium":{targetId:"gpt-5.5",level:"medium",legacyVariantId:"gpt-5.5-thinking-medium",encoding:"legacy-variant"},"gpt-5.5-thinking-max":{targetId:"gpt-5.5",level:"max",legacyVariantId:"gpt-5.5-thinking-max",encoding:"legacy-variant"},"gpt-5.5-extra-high-fast":{targetId:"gpt-5.5-extra-high-fast",legacyVariantId:"gpt-5.5-extra-high-fast",encoding:"legacy-variant"},"gpt-5.5-high-fast":{targetId:"gpt-5.5-high-fast",legacyVariantId:"gpt-5.5-high-fast",encoding:"legacy-variant"},"gpt-5.5-low-fast":{targetId:"gpt-5.5-low-fast",legacyVariantId:"gpt-5.5-low-fast",encoding:"legacy-variant"},"gpt-5.5-medium-fast":{targetId:"gpt-5.5-medium-fast",legacyVariantId:"gpt-5.5-medium-fast",encoding:"legacy-variant"},"gpt-5.5-none-fast":{targetId:"gpt-5.5-none-fast",legacyVariantId:"gpt-5.5-none-fast",encoding:"legacy-variant"},"gpt-5.5-max-fast":{targetId:"gpt-5.5-max-fast",legacyVariantId:"gpt-5.5-max-fast",encoding:"legacy-variant"},"gpt-5.6-luna-high":{targetId:"gpt-5.6-luna",level:"high",legacyVariantId:"gpt-5.6-luna-high",encoding:"legacy-variant"},"gpt-5.6-luna-low":{targetId:"gpt-5.6-luna",level:"low",legacyVariantId:"gpt-5.6-luna-low",encoding:"legacy-variant"},"gpt-5.6-luna-max":{targetId:"gpt-5.6-luna",level:"max",legacyVariantId:"gpt-5.6-luna-max",encoding:"legacy-variant"},"gpt-5.6-luna-medium":{targetId:"gpt-5.6-luna",level:"medium",legacyVariantId:"gpt-5.6-luna-medium",encoding:"legacy-variant"},"gpt-5.6-luna-none":{targetId:"gpt-5.6-luna",level:"off",legacyVariantId:"gpt-5.6-luna-none",encoding:"legacy-variant"},"gpt-5.6-luna-xhigh":{targetId:"gpt-5.6-luna",level:"xhigh",legacyVariantId:"gpt-5.6-luna-xhigh",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-low":{targetId:"gpt-5.6-luna",level:"low",legacyVariantId:"gpt-5.6-luna-thinking-low",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-medium":{targetId:"gpt-5.6-luna",level:"medium",legacyVariantId:"gpt-5.6-luna-thinking-medium",encoding:"legacy-variant"},"gpt-5.6-luna-thinking-max":{targetId:"gpt-5.6-luna",level:"max",legacyVariantId:"gpt-5.6-luna-thinking-max",encoding:"legacy-variant"},"gpt-5.6-luna-high-fast":{targetId:"gpt-5.6-luna-high-fast",legacyVariantId:"gpt-5.6-luna-high-fast",encoding:"legacy-variant"},"gpt-5.6-luna-low-fast":{targetId:"gpt-5.6-luna-low-fast",legacyVariantId:"gpt-5.6-luna-low-fast",encoding:"legacy-variant"},"gpt-5.6-luna-max-fast":{targetId:"gpt-5.6-luna-max-fast",legacyVariantId:"gpt-5.6-luna-max-fast",encoding:"legacy-variant"},"gpt-5.6-luna-medium-fast":{targetId:"gpt-5.6-luna-medium-fast",legacyVariantId:"gpt-5.6-luna-medium-fast",encoding:"legacy-variant"},"gpt-5.6-luna-none-fast":{targetId:"gpt-5.6-luna-none-fast",legacyVariantId:"gpt-5.6-luna-none-fast",encoding:"legacy-variant"},"gpt-5.6-luna-xhigh-fast":{targetId:"gpt-5.6-luna-xhigh-fast",legacyVariantId:"gpt-5.6-luna-xhigh-fast",encoding:"legacy-variant"},"gpt-5.6-sol-high":{targetId:"gpt-5.6-sol",level:"high",legacyVariantId:"gpt-5.6-sol-high",encoding:"legacy-variant"},"gpt-5.6-sol-low":{targetId:"gpt-5.6-sol",level:"low",legacyVariantId:"gpt-5.6-sol-low",encoding:"legacy-variant"},"gpt-5.6-sol-max":{targetId:"gpt-5.6-sol",level:"max",legacyVariantId:"gpt-5.6-sol-max",encoding:"legacy-variant"},"gpt-5.6-sol-medium":{targetId:"gpt-5.6-sol",level:"medium",legacyVariantId:"gpt-5.6-sol-medium",encoding:"legacy-variant"},"gpt-5.6-sol-none":{targetId:"gpt-5.6-sol",level:"off",legacyVariantId:"gpt-5.6-sol-none",encoding:"legacy-variant"},"gpt-5.6-sol-xhigh":{targetId:"gpt-5.6-sol",level:"xhigh",legacyVariantId:"gpt-5.6-sol-xhigh",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-low":{targetId:"gpt-5.6-sol",level:"low",legacyVariantId:"gpt-5.6-sol-thinking-low",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-medium":{targetId:"gpt-5.6-sol",level:"medium",legacyVariantId:"gpt-5.6-sol-thinking-medium",encoding:"legacy-variant"},"gpt-5.6-sol-thinking-max":{targetId:"gpt-5.6-sol",level:"max",legacyVariantId:"gpt-5.6-sol-thinking-max",encoding:"legacy-variant"},"gpt-5.6-sol-high-fast":{targetId:"gpt-5.6-sol-high-fast",legacyVariantId:"gpt-5.6-sol-high-fast",encoding:"legacy-variant"},"gpt-5.6-sol-low-fast":{targetId:"gpt-5.6-sol-low-fast",legacyVariantId:"gpt-5.6-sol-low-fast",encoding:"legacy-variant"},"gpt-5.6-sol-max-fast":{targetId:"gpt-5.6-sol-max-fast",legacyVariantId:"gpt-5.6-sol-max-fast",encoding:"legacy-variant"},"gpt-5.6-sol-medium-fast":{targetId:"gpt-5.6-sol-medium-fast",legacyVariantId:"gpt-5.6-sol-medium-fast",encoding:"legacy-variant"},"gpt-5.6-sol-none-fast":{targetId:"gpt-5.6-sol-none-fast",legacyVariantId:"gpt-5.6-sol-none-fast",encoding:"legacy-variant"},"gpt-5.6-sol-xhigh-fast":{targetId:"gpt-5.6-sol-xhigh-fast",legacyVariantId:"gpt-5.6-sol-xhigh-fast",encoding:"legacy-variant"},"gpt-5.6-terra-high":{targetId:"gpt-5.6-terra",level:"high",legacyVariantId:"gpt-5.6-terra-high",encoding:"legacy-variant"},"gpt-5.6-terra-low":{targetId:"gpt-5.6-terra",level:"low",legacyVariantId:"gpt-5.6-terra-low",encoding:"legacy-variant"},"gpt-5.6-terra-max":{targetId:"gpt-5.6-terra",level:"max",legacyVariantId:"gpt-5.6-terra-max",encoding:"legacy-variant"},"gpt-5.6-terra-medium":{targetId:"gpt-5.6-terra",level:"medium",legacyVariantId:"gpt-5.6-terra-medium",encoding:"legacy-variant"},"gpt-5.6-terra-none":{targetId:"gpt-5.6-terra",level:"off",legacyVariantId:"gpt-5.6-terra-none",encoding:"legacy-variant"},"gpt-5.6-terra-xhigh":{targetId:"gpt-5.6-terra",level:"xhigh",legacyVariantId:"gpt-5.6-terra-xhigh",encoding:"legacy-variant"},"gpt-5.6-terra-high-fast":{targetId:"gpt-5.6-terra-high-fast",legacyVariantId:"gpt-5.6-terra-high-fast",encoding:"legacy-variant"},"gpt-5.6-terra-low-fast":{targetId:"gpt-5.6-terra-low-fast",legacyVariantId:"gpt-5.6-terra-low-fast",encoding:"legacy-variant"},"gpt-5.6-terra-max-fast":{targetId:"gpt-5.6-terra-max-fast",legacyVariantId:"gpt-5.6-terra-max-fast",encoding:"legacy-variant"},"gpt-5.6-terra-medium-fast":{targetId:"gpt-5.6-terra-medium-fast",legacyVariantId:"gpt-5.6-terra-medium-fast",encoding:"legacy-variant"},"gpt-5.6-terra-none-fast":{targetId:"gpt-5.6-terra-none-fast",legacyVariantId:"gpt-5.6-terra-none-fast",encoding:"legacy-variant"},"gpt-5.6-terra-xhigh-fast":{targetId:"gpt-5.6-terra-xhigh-fast",legacyVariantId:"gpt-5.6-terra-xhigh-fast",encoding:"legacy-variant"},"kimi-k2.7-code":{targetId:"kimi-k2.7-code",legacyVariantId:"kimi-k2.7-code",encoding:"legacy-variant"},"kimi-k3-high":{targetId:"kimi-k3",level:"high",legacyVariantId:"kimi-k3-high",encoding:"legacy-variant"},"kimi-k3-low":{targetId:"kimi-k3",level:"low",legacyVariantId:"kimi-k3-low",encoding:"legacy-variant"},"kimi-k3-max":{targetId:"kimi-k3",level:"max",legacyVariantId:"kimi-k3-max",encoding:"legacy-variant"},auto:{targetId:"auto",legacyVariantId:"auto",encoding:"legacy-variant"},"claude-fable-5-low-fast":{targetId:"claude-fable-5-low-fast",legacyVariantId:"claude-fable-5-low-fast",encoding:"legacy-variant"},"claude-fable-5-medium-fast":{targetId:"claude-fable-5-medium-fast",legacyVariantId:"claude-fable-5-medium-fast",encoding:"legacy-variant"},"claude-fable-5-max-fast":{targetId:"claude-fable-5-max-fast",legacyVariantId:"claude-fable-5-max-fast",encoding:"legacy-variant"},"claude-sonnet-5-low-fast":{targetId:"claude-sonnet-5-low-fast",legacyVariantId:"claude-sonnet-5-low-fast",encoding:"legacy-variant"},"claude-sonnet-5-medium-fast":{targetId:"claude-sonnet-5-medium-fast",legacyVariantId:"claude-sonnet-5-medium-fast",encoding:"legacy-variant"},"claude-sonnet-5-max-fast":{targetId:"claude-sonnet-5-max-fast",legacyVariantId:"claude-sonnet-5-max-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-low":{targetId:"claude-sonnet-4-7",level:"low",legacyVariantId:"claude-sonnet-4-7-low",encoding:"legacy-variant"},"claude-sonnet-4-7-medium":{targetId:"claude-sonnet-4-7",level:"medium",legacyVariantId:"claude-sonnet-4-7-medium",encoding:"legacy-variant"},"claude-sonnet-4-7-max":{targetId:"claude-sonnet-4-7",level:"max",legacyVariantId:"claude-sonnet-4-7-max",encoding:"legacy-variant"},"claude-sonnet-4-7-low-fast":{targetId:"claude-sonnet-4-7-low-fast",legacyVariantId:"claude-sonnet-4-7-low-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-medium-fast":{targetId:"claude-sonnet-4-7-medium-fast",legacyVariantId:"claude-sonnet-4-7-medium-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-max-fast":{targetId:"claude-sonnet-4-7-max-fast",legacyVariantId:"claude-sonnet-4-7-max-fast",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-low":{targetId:"claude-sonnet-4-7-thinking",level:"low",legacyVariantId:"claude-sonnet-4-7-thinking-low",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-medium":{targetId:"claude-sonnet-4-7-thinking",level:"medium",legacyVariantId:"claude-sonnet-4-7-thinking-medium",encoding:"legacy-variant"},"claude-sonnet-4-7-thinking-max":{targetId:"claude-sonnet-4-7-thinking",level:"max",legacyVariantId:"claude-sonnet-4-7-thinking-max",encoding:"legacy-variant"},"claude-mythos-5-low":{targetId:"claude-mythos-5",level:"low",legacyVariantId:"claude-mythos-5-low",encoding:"legacy-variant"},"claude-mythos-5-medium":{targetId:"claude-mythos-5",level:"medium",legacyVariantId:"claude-mythos-5-medium",encoding:"legacy-variant"},"claude-mythos-5-max":{targetId:"claude-mythos-5",level:"max",legacyVariantId:"claude-mythos-5-max",encoding:"legacy-variant"},"claude-mythos-5-low-fast":{targetId:"claude-mythos-5-low-fast",legacyVariantId:"claude-mythos-5-low-fast",encoding:"legacy-variant"},"claude-mythos-5-medium-fast":{targetId:"claude-mythos-5-medium-fast",legacyVariantId:"claude-mythos-5-medium-fast",encoding:"legacy-variant"},"claude-mythos-5-max-fast":{targetId:"claude-mythos-5-max-fast",legacyVariantId:"claude-mythos-5-max-fast",encoding:"legacy-variant"},"claude-mythos-5-thinking-low":{targetId:"claude-mythos-5-thinking",level:"low",legacyVariantId:"claude-mythos-5-thinking-low",encoding:"legacy-variant"},"claude-mythos-5-thinking-medium":{targetId:"claude-mythos-5-thinking",level:"medium",legacyVariantId:"claude-mythos-5-thinking-medium",encoding:"legacy-variant"},"claude-mythos-5-thinking-max":{targetId:"claude-mythos-5-thinking",level:"max",legacyVariantId:"claude-mythos-5-thinking-max",encoding:"legacy-variant"},"gpt-5.4-codex-low":{targetId:"gpt-5.4-codex",level:"low",legacyVariantId:"gpt-5.4-codex-low",encoding:"legacy-variant"},"gpt-5.4-codex-medium":{targetId:"gpt-5.4-codex",level:"medium",legacyVariantId:"gpt-5.4-codex-medium",encoding:"legacy-variant"},"gpt-5.4-codex-max":{targetId:"gpt-5.4-codex",level:"max",legacyVariantId:"gpt-5.4-codex-max",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-low":{targetId:"gpt-5.4-codex",level:"low",legacyVariantId:"gpt-5.4-codex-thinking-low",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-medium":{targetId:"gpt-5.4-codex",level:"medium",legacyVariantId:"gpt-5.4-codex-thinking-medium",encoding:"legacy-variant"},"gpt-5.4-codex-thinking-max":{targetId:"gpt-5.4-codex",level:"max",legacyVariantId:"gpt-5.4-codex-thinking-max",encoding:"legacy-variant"},"gpt-5.4-codex-low-fast":{targetId:"gpt-5.4-codex-low-fast",legacyVariantId:"gpt-5.4-codex-low-fast",encoding:"legacy-variant"},"gpt-5.4-codex-medium-fast":{targetId:"gpt-5.4-codex-medium-fast",legacyVariantId:"gpt-5.4-codex-medium-fast",encoding:"legacy-variant"},"gpt-5.4-codex-max-fast":{targetId:"gpt-5.4-codex-max-fast",legacyVariantId:"gpt-5.4-codex-max-fast",encoding:"legacy-variant"},"gemini-3.7-flash-low-fast":{targetId:"gemini-3.7-flash-low-fast",legacyVariantId:"gemini-3.7-flash-low-fast",encoding:"legacy-variant"},"gemini-3.7-flash-medium-fast":{targetId:"gemini-3.7-flash-medium-fast",legacyVariantId:"gemini-3.7-flash-medium-fast",encoding:"legacy-variant"},"gemini-3.7-flash-max-fast":{targetId:"gemini-3.7-flash-max-fast",legacyVariantId:"gemini-3.7-flash-max-fast",encoding:"legacy-variant"},"gemini-3.7-pro-low":{targetId:"gemini-3.7-pro",level:"low",legacyVariantId:"gemini-3.7-pro-low",encoding:"legacy-variant"},"gemini-3.7-pro-medium":{targetId:"gemini-3.7-pro",level:"medium",legacyVariantId:"gemini-3.7-pro-medium",encoding:"legacy-variant"},"gemini-3.7-pro-max":{targetId:"gemini-3.7-pro",level:"max",legacyVariantId:"gemini-3.7-pro-max",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-low":{targetId:"gemini-3.7-pro",level:"low",legacyVariantId:"gemini-3.7-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-medium":{targetId:"gemini-3.7-pro",level:"medium",legacyVariantId:"gemini-3.7-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.7-pro-thinking-max":{targetId:"gemini-3.7-pro",level:"max",legacyVariantId:"gemini-3.7-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.7-pro-low-fast":{targetId:"gemini-3.7-pro-low-fast",legacyVariantId:"gemini-3.7-pro-low-fast",encoding:"legacy-variant"},"gemini-3.7-pro-medium-fast":{targetId:"gemini-3.7-pro-medium-fast",legacyVariantId:"gemini-3.7-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.7-pro-max-fast":{targetId:"gemini-3.7-pro-max-fast",legacyVariantId:"gemini-3.7-pro-max-fast",encoding:"legacy-variant"},"gemini-3.6-pro-low":{targetId:"gemini-3.6-pro",level:"low",legacyVariantId:"gemini-3.6-pro-low",encoding:"legacy-variant"},"gemini-3.6-pro-medium":{targetId:"gemini-3.6-pro",level:"medium",legacyVariantId:"gemini-3.6-pro-medium",encoding:"legacy-variant"},"gemini-3.6-pro-max":{targetId:"gemini-3.6-pro",level:"max",legacyVariantId:"gemini-3.6-pro-max",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-low":{targetId:"gemini-3.6-pro",level:"low",legacyVariantId:"gemini-3.6-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-medium":{targetId:"gemini-3.6-pro",level:"medium",legacyVariantId:"gemini-3.6-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.6-pro-thinking-max":{targetId:"gemini-3.6-pro",level:"max",legacyVariantId:"gemini-3.6-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.6-pro-low-fast":{targetId:"gemini-3.6-pro-low-fast",legacyVariantId:"gemini-3.6-pro-low-fast",encoding:"legacy-variant"},"gemini-3.6-pro-medium-fast":{targetId:"gemini-3.6-pro-medium-fast",legacyVariantId:"gemini-3.6-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.6-pro-max-fast":{targetId:"gemini-3.6-pro-max-fast",legacyVariantId:"gemini-3.6-pro-max-fast",encoding:"legacy-variant"},"gemini-3.5-pro-low":{targetId:"gemini-3.5-pro",level:"low",legacyVariantId:"gemini-3.5-pro-low",encoding:"legacy-variant"},"gemini-3.5-pro-medium":{targetId:"gemini-3.5-pro",level:"medium",legacyVariantId:"gemini-3.5-pro-medium",encoding:"legacy-variant"},"gemini-3.5-pro-max":{targetId:"gemini-3.5-pro",level:"max",legacyVariantId:"gemini-3.5-pro-max",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-low":{targetId:"gemini-3.5-pro",level:"low",legacyVariantId:"gemini-3.5-pro-thinking-low",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-medium":{targetId:"gemini-3.5-pro",level:"medium",legacyVariantId:"gemini-3.5-pro-thinking-medium",encoding:"legacy-variant"},"gemini-3.5-pro-thinking-max":{targetId:"gemini-3.5-pro",level:"max",legacyVariantId:"gemini-3.5-pro-thinking-max",encoding:"legacy-variant"},"gemini-3.5-pro-low-fast":{targetId:"gemini-3.5-pro-low-fast",legacyVariantId:"gemini-3.5-pro-low-fast",encoding:"legacy-variant"},"gemini-3.5-pro-medium-fast":{targetId:"gemini-3.5-pro-medium-fast",legacyVariantId:"gemini-3.5-pro-medium-fast",encoding:"legacy-variant"},"gemini-3.5-pro-max-fast":{targetId:"gemini-3.5-pro-max-fast",legacyVariantId:"gemini-3.5-pro-max-fast",encoding:"legacy-variant"},"composer-2.6-low":{targetId:"composer-2.6",level:"low",legacyVariantId:"composer-2.6-low",encoding:"legacy-variant"},"composer-2.6-medium":{targetId:"composer-2.6",level:"medium",legacyVariantId:"composer-2.6-medium",encoding:"legacy-variant"},"composer-2.6-max":{targetId:"composer-2.6",level:"max",legacyVariantId:"composer-2.6-max",encoding:"legacy-variant"},"composer-2.6-thinking-low":{targetId:"composer-2.6",level:"low",legacyVariantId:"composer-2.6-thinking-low",encoding:"legacy-variant"},"composer-2.6-thinking-medium":{targetId:"composer-2.6",level:"medium",legacyVariantId:"composer-2.6-thinking-medium",encoding:"legacy-variant"},"composer-2.6-thinking-max":{targetId:"composer-2.6",level:"max",legacyVariantId:"composer-2.6-thinking-max",encoding:"legacy-variant"},"composer-2.6-low-fast":{targetId:"composer-2.6-low-fast",legacyVariantId:"composer-2.6-low-fast",encoding:"legacy-variant"},"composer-2.6-medium-fast":{targetId:"composer-2.6-medium-fast",legacyVariantId:"composer-2.6-medium-fast",encoding:"legacy-variant"},"composer-2.6-max-fast":{targetId:"composer-2.6-max-fast",legacyVariantId:"composer-2.6-max-fast",encoding:"legacy-variant"},"composer-2.6-lite-low":{targetId:"composer-2.6-lite",level:"low",legacyVariantId:"composer-2.6-lite-low",encoding:"legacy-variant"},"composer-2.6-lite-medium":{targetId:"composer-2.6-lite",level:"medium",legacyVariantId:"composer-2.6-lite-medium",encoding:"legacy-variant"},"composer-2.6-lite-max":{targetId:"composer-2.6-lite",level:"max",legacyVariantId:"composer-2.6-lite-max",encoding:"legacy-variant"},"composer-2.6-lite-thinking-low":{targetId:"composer-2.6-lite",level:"low",legacyVariantId:"composer-2.6-lite-thinking-low",encoding:"legacy-variant"},"composer-2.6-lite-thinking-medium":{targetId:"composer-2.6-lite",level:"medium",legacyVariantId:"composer-2.6-lite-thinking-medium",encoding:"legacy-variant"},"composer-2.6-lite-thinking-max":{targetId:"composer-2.6-lite",level:"max",legacyVariantId:"composer-2.6-lite-thinking-max",encoding:"legacy-variant"},"composer-2.6-lite-low-fast":{targetId:"composer-2.6-lite-low-fast",legacyVariantId:"composer-2.6-lite-low-fast",encoding:"legacy-variant"},"composer-2.6-lite-medium-fast":{targetId:"composer-2.6-lite-medium-fast",legacyVariantId:"composer-2.6-lite-medium-fast",encoding:"legacy-variant"},"composer-2.6-lite-max-fast":{targetId:"composer-2.6-lite-max-fast",legacyVariantId:"composer-2.6-lite-max-fast",encoding:"legacy-variant"},"deepseek-v4-low":{targetId:"deepseek-v4",level:"low",legacyVariantId:"deepseek-v4-low",encoding:"legacy-variant"},"deepseek-v4-medium":{targetId:"deepseek-v4",level:"medium",legacyVariantId:"deepseek-v4-medium",encoding:"legacy-variant"},"deepseek-v4-max":{targetId:"deepseek-v4",level:"max",legacyVariantId:"deepseek-v4-max",encoding:"legacy-variant"},"deepseek-v4-thinking-low":{targetId:"deepseek-v4",level:"low",legacyVariantId:"deepseek-v4-thinking-low",encoding:"legacy-variant"},"deepseek-v4-thinking-medium":{targetId:"deepseek-v4",level:"medium",legacyVariantId:"deepseek-v4-thinking-medium",encoding:"legacy-variant"},"deepseek-v4-thinking-max":{targetId:"deepseek-v4",level:"max",legacyVariantId:"deepseek-v4-thinking-max",encoding:"legacy-variant"},"deepseek-v4-low-fast":{targetId:"deepseek-v4-low-fast",legacyVariantId:"deepseek-v4-low-fast",encoding:"legacy-variant"},"deepseek-v4-medium-fast":{targetId:"deepseek-v4-medium-fast",legacyVariantId:"deepseek-v4-medium-fast",encoding:"legacy-variant"},"deepseek-v4-max-fast":{targetId:"deepseek-v4-max-fast",legacyVariantId:"deepseek-v4-max-fast",encoding:"legacy-variant"}}};var ZERO_WIDTH=/[\u200B-\u200D\uFEFF]/g,LEVEL_WORDS=/\s+(Minimal|Low|Medium|High|Extra High|XHigh|Max|None)\b/g;function sanitizeCursorDisplayName(name){return name.replace(ZERO_WIDTH,"").replace(/\s+/g," ").trim()}function cleanCursorGroupName(members,baseId,thinkingMode){let representative=members.find(member=>member.level==="high")??members.find(member=>member.level==="medium")??members.find(member=>member.level==="low")??members[0],name=sanitizeCursorDisplayName(representative.raw.name);return name=name.replace(/\s*\(NO ZDR\)\s*/g," ").trim(),name=name.replace(LEVEL_WORDS,""),name=name.replace(/\s+Fast\b/g,""),thinkingMode!==!0?name=name.replace(/\s+No Thinking\b/g,"").replace(/\s+Thinking\b/g,""):/\bThinking\b/.test(name)||(name=name.includes("")?name.replace(" "," Thinking "):`${name} Thinking`),name=sanitizeCursorDisplayName(name.replaceAll("","(NO ZDR)")),name.length===0?baseId:name}function dropUnservedSizeToken(name,capability){return capability?.evidence!=="served-checkpoint"||capability.window>=1e6?name:sanitizeCursorDisplayName(name.replace(/\s+1M\b/g,""))}var P="parameters",V="variant-id";function ladder(values,encoding=P){let out={};for(let value of values)out[value==="none"?"off":value]={value,encoding};return out}var CLAUDE_ORDER=["thinking","context","effort"],GPT_ORDER=["context","reasoning","fast"];function claude(window,maxWindow,levels,defaultContext){return{evidence:"available-models",window,maxWindow,parameterOrder:CLAUDE_ORDER,defaultContext,requestContext:window>=1e6?"1m":defaultContext,levels:ladder(levels)}}function gpt(levels,order=GPT_ORDER,window=4e5,maxWindow=4e5){return{evidence:"available-models",window,maxWindow,parameterOrder:order,defaultContext:"272k",requestContext:order.includes("context")&&window>=1e6?"1m":void 0,levels:ladder(levels)}}var LEVELS_LOW_MAX=["low","medium","high","xhigh","max"],CONTEXT_TOKEN={3e5:"300k",256e3:"256k"};function served(window,maxWindow,order,levels){let context=order.includes("context")?CONTEXT_TOKEN[window]:void 0;return{evidence:"served-checkpoint",window,...maxWindow!==void 0?{maxWindow}:{},parameterOrder:order,...context!==void 0?{defaultContext:context,requestContext:context}:{},levels:ladder(levels)}}var CURSOR_MODEL_CAPABILITIES={"claude-fable-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-sonnet-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-4-7":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-4-8":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-opus-5":claude(1e6,1e6,["low","medium","high","xhigh","max"],"300k"),"claude-4.6-opus":claude(1e6,1e6,["high","max"],"200k"),"claude-4.6-sonnet":claude(1e6,1e6,["medium"],"200k"),"claude-4.5-opus":{evidence:"available-models",window:2e5,parameterOrder:["thinking"],levels:{high:{value:"high",encoding:V}}},"gpt-5.6-sol":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,1e6,1e6),"gpt-5.6-luna":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,1e6,1e6),"gpt-5.6-terra":gpt(["none","low","medium","high","xhigh","max"],GPT_ORDER,272e3,272e3),"gpt-5.5":{...gpt(["none","low","medium","high"],GPT_ORDER,1e6,1e6),levels:{...ladder(["none","low","medium","high"]),xhigh:{value:"extra-high",encoding:P}}},"gpt-5.3-codex":{...gpt([],["reasoning","fast"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","medium","high"]),xhigh:{value:"extra-high",encoding:P}}},"gpt-5.1":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:ladder(["low","high"])},"gpt-5.2":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","high"]),xhigh:{value:"xhigh",encoding:V}}},"gpt-5.4":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:{...ladder(["low","medium","high"]),xhigh:{value:"xhigh",encoding:V}}},"gpt-5.4-mini":{evidence:"available-models",window:4e5,parameterOrder:[],levels:ladder(["none","low","medium","high","xhigh"],V)},"gpt-5.4-nano":{...gpt([],["reasoning"]),maxWindow:void 0,defaultContext:void 0,levels:ladder(["none","low","medium","high","xhigh"])},"gemini-3.7-flash":{evidence:"cli-live",window:1048576,parameterOrder:["effort"],levels:ladder(["low","medium","high"])},"gemini-3.6-flash":{evidence:"suffix-only",window:1048576,parameterOrder:[],levels:ladder(["minimal","low","medium","high"],V)},"cursor-grok-4.6":{evidence:"available-models",window:5e5,parameterOrder:["effort","fast"],levels:ladder(["low","medium","high","xhigh"])},"cursor-grok-4.5":{evidence:"suffix-only",window:5e5,parameterOrder:[],levels:ladder(["low","medium","high"],V)},"glm-5.2":{evidence:"available-models",window:1e6,parameterOrder:["reasoning"],levels:ladder(["high","max"])},"kimi-k3":{evidence:"available-models",window:1048576,parameterOrder:["reasoning"],levels:ladder(["low","high","max"])},"composer-2.5":{evidence:"available-models",window:2e5,parameterOrder:["fast"],levels:{}},"claude-haiku-4-5":{evidence:"available-models",window:2e5,parameterOrder:["thinking"],levels:{}},"claude-4-sonnet":{evidence:"available-models",window:2e5,parameterOrder:["thinking","context"],defaultContext:"200k",levels:{}},"claude-4.5-sonnet":{evidence:"available-models",window:2e5,parameterOrder:["thinking","context"],defaultContext:"200k",levels:{}},"kimi-k2.7-code":{evidence:"available-models",window:262144,parameterOrder:[],levels:{}},"gemini-3-flash":{evidence:"available-models",window:1e6,parameterOrder:[],levels:{}},"gemini-3.1-pro":{evidence:"available-models",window:1e6,parameterOrder:[],levels:{}},"gemini-3.5-flash":{evidence:"available-models",window:1048576,parameterOrder:[],levels:{}},"gpt-5-mini":{evidence:"available-models",window:4e5,parameterOrder:[],levels:{}},"claude-opus-5-5":served(3e5,1e6,["context","effort","fast"],LEVELS_LOW_MAX),"claude-fable-5-1":served(3e5,1e6,["thinking","context","effort"],LEVELS_LOW_MAX),"claude-sonnet-5-5":served(3e5,1e6,["context","reasoning_effort"],LEVELS_LOW_MAX),"claude-haiku-5-5":served(3e5,1e6,["thinking","context","reasoning_effort"],LEVELS_LOW_MAX),"muse-wonder-1.0":served(3e5,1e6,["context","reasoning_effort"],["minimal",...LEVELS_LOW_MAX]),"muse-spark-1.3":served(3e5,1e6,["context","effort"],["minimal",...LEVELS_LOW_MAX]),"grok-4.7":served(256e3,5e5,["context","reasoning_effort","fast"],["low","medium","high","xhigh"]),"gemini-4-argon":served(2e5,void 0,["reasoning_effort"],["low","medium","high"]),"gemini-3.8-flash":served(2e5,void 0,["reasoning_effort"],["low","medium","high"]),default:served(256e3,void 0,[],[])};var ALIASES=cursor_variant_aliases_default.aliases,LEVEL_TOKENS=["minimal","low","medium","high","extra-high","xhigh","max","none"];function parseCursorVariantId(originalId){let rest=originalId,fast=!1;rest.endsWith("-fast")&&(fast=!0,rest=rest.slice(0,-5));let level,thinking,alternation=LEVEL_TOKENS.join("|"),patterns=[[new RegExp(`-thinking-(${alternation})$`),!0],[new RegExp(`-(${alternation})-thinking$`),!0]];for(let[pattern,flag]of patterns){let match=rest.match(pattern);if(match)return level=match[1],thinking=flag,rest=rest.slice(0,match.index),{baseId:rest,level,thinking,fast,originalId}}if(rest.endsWith("-thinking"))return{baseId:rest.slice(0,-9),level,thinking:!0,fast,originalId};let levelMatch=rest.match(new RegExp(`-(${alternation})$`));return levelMatch&&(level=levelMatch[1],thinking=!1,rest=rest.slice(0,levelMatch.index)),{baseId:rest,level,thinking,fast,originalId}}function getCursorVariantAlias(originalId){return ALIASES[originalId]}function getCursorBaseIdForVariant(originalId){let alias=ALIASES[originalId];if(alias)return parseCursorVariantId(alias.targetId).baseId}function getCursorCapabilityForBase(baseId){return CURSOR_MODEL_CAPABILITIES[baseId]}var ALL_LEVELS=["off","minimal","low","medium","high","xhigh","max"],FALLBACK_WINDOW=2e5,STATIC_TARGETS=new Set(Object.values(cursor_variant_aliases_default.aliases).map(alias=>alias.targetId));function buildLevelMap(members,capability){let observed=new Set(members.map(member=>member.level).filter(level=>level!==void 0)),map={};for(let level of ALL_LEVELS){if(level==="off"){let offSpec=capability?.levels.off;map.off=offSpec!==void 0&&observed.has("none")?offSpec.value:null;continue}let spec=capability?.levels[level];map[level]=spec!==void 0&&(observed.has(level)||observed.has(spec.value))?spec.value:null}return map}function pickRepresentative(members){let withLevels=members.filter(member=>member.level!==void 0&&member.level!=="none"),pool=withLevels.length>0?withLevels:members,order=["medium","low","minimal","high","xhigh","extra-high","max","none"];return[...pool].sort((a,b)=>{let ai=order.indexOf(a.level??"none"),bi=order.indexOf(b.level??"none");return ai!==bi?ai-bi:a.alias.legacyVariantId.localeCompare(b.alias.legacyVariantId)})[0].alias.legacyVariantId}function normalizeDerivedLevel(token){switch(token){case"none":return"off";case"extra-high":return"xhigh";case"minimal":case"low":case"medium":case"high":case"xhigh":case"max":return token;default:return}}function buildDerivedLevelMap(members){let map=Object.fromEntries(ALL_LEVELS.map(level=>[level,null]));for(let member of members){let level=member.alias.level;level!==void 0&&member.level!==void 0&&map[level]===null&&(map[level]=member.level)}return map}function buildDerivedVariantIds(members){let map={};for(let member of members){let level=member.alias.level;level!==void 0&&map[level]===void 0&&(map[level]=member.raw.id)}return map}function deriveCursorVariantAliases(ids){let families=new Map,rawIds=new Set(ids);for(let id of ids){if(getCursorVariantAlias(id)!==void 0)continue;let parsed=parseCursorVariantId(id);if(parsed.fast||parsed.level===void 0||parsed.baseId==="")continue;let level=normalizeDerivedLevel(parsed.level);if(level===void 0)continue;let targetId=parsed.thinking===!0?`${parsed.baseId}-thinking`:parsed.baseId,family=families.get(targetId)??{targetId,levels:new Set,members:[]};family.levels.add(level),family.members.push([id,level,parsed.level]),families.set(targetId,family)}let derived=new Map;for(let family of families.values()){if(family.levels.size<2||STATIC_TARGETS.has(family.targetId)||getCursorVariantAlias(family.targetId)!==void 0||rawIds.has(family.targetId))continue;let chosen=new Map;for(let[id,level,suffix]of family.members){let previous=chosen.get(level);if(previous===void 0){chosen.set(level,id);continue}let previousSuffix=parseCursorVariantId(previous).level;(suffix===level&&previousSuffix!==level||suffix===level==(previousSuffix===level)&&id<previous)&&chosen.set(level,id)}for(let[level,id]of chosen)derived.set(id,{targetId:family.targetId,legacyVariantId:id,encoding:"legacy-variant",level})}return derived}function normalizeCursorCatalog(rawEntries){let derived=deriveCursorVariantAliases(rawEntries.map(raw=>raw.id)),groups=new Map,order=[];for(let raw of rawEntries){let alias=getCursorVariantAlias(raw.id)??derived.get(raw.id);if(!alias){let parsed2=parseCursorVariantId(raw.id),key2=`unknown${parsed2.baseId}${raw.id}`;groups.has(key2)||order.push(key2);let member={raw,alias:{targetId:raw.id,legacyVariantId:raw.id,encoding:"legacy-variant"},level:parsed2.level,thinking:parsed2.thinking,fast:parsed2.fast};groups.set(key2,[member]);continue}let parsed=parseCursorVariantId(raw.id),key=`${alias.targetId}${parsed.fast}`;groups.has(key)||(order.push(key),groups.set(key,[])),groups.get(key).push({raw,alias,level:parsed.level,thinking:parsed.thinking,fast:parsed.fast})}let out=[];for(let key of order){let members=groups.get(key),first=members[0],baseParsed=parseCursorVariantId(first.alias.targetId),derivedGroup=members.every(member=>derived.has(member.raw.id)),baseId=derivedGroup?parseCursorVariantId(first.raw.id).baseId:baseParsed.baseId,capability=CURSOR_MODEL_CAPABILITIES[baseId],isGrouped=members.length>1||first.alias.targetId!==first.raw.id,efforts=members.filter(member=>member.level!==void 0&&member.level!=="none");if(isGrouped&&efforts.length>0&&!first.fast){let thinkingMode=baseId.startsWith("claude-")?first.thinking===!0:void 0;out.push({id:first.alias.targetId,name:dropUnservedSizeToken(cleanCursorGroupName(members,baseId,thinkingMode),capability),reasoning:!0,thinkingLevelMap:derivedGroup?buildDerivedLevelMap(members):buildLevelMap(members,capability),window:capability?.window??FALLBACK_WINDOW,...capability?.maxWindow!==void 0?{maxWindow:capability.maxWindow}:{},input:[...new Set(members.flatMap(member=>member.raw.input))],cursorMaxMode:members.some(member=>member.raw.cursorMaxMode),capabilityId:baseId,...thinkingMode!==void 0?{thinkingMode}:{},representativeVariantId:pickRepresentative(members),legacyAliases:members.map(member=>member.alias.legacyVariantId).sort(),...derivedGroup?{variantIds:buildDerivedVariantIds(members)}:{}});continue}for(let member of members){let memberBase=parseCursorVariantId(member.raw.id).baseId,memberCapability=CURSOR_MODEL_CAPABILITIES[memberBase];out.push({id:member.raw.id,name:dropUnservedSizeToken(sanitizeCursorDisplayName(member.raw.name),memberCapability),reasoning:!1,window:memberCapability?.window??FALLBACK_WINDOW,...memberCapability?.maxWindow!==void 0?{maxWindow:memberCapability.maxWindow}:{},input:[...member.raw.input],cursorMaxMode:member.raw.cursorMaxMode,legacyAliases:[member.alias.legacyVariantId]})}}return out}function identityCompat(model){return model.compat?.cursorReasoning}function suffixAliasId(compat,level,spec){let suffixes=level==="off"?["none"]:spec.value===level?[spec.value]:[spec.value,level];for(let suffix of suffixes){let candidates=compat.thinkingMode===!0?[`${compat.capabilityId}-thinking-${suffix}`,`${compat.capabilityId}-${suffix}-thinking`]:[`${compat.capabilityId}-${suffix}`];for(let candidate of candidates){let alias=getCursorVariantAlias(candidate);if(alias)return alias.legacyVariantId}}}function buildParameters(capabilityId,value,thinkingMode){let capability=CURSOR_MODEL_CAPABILITIES[capabilityId];if(!capability)return[];let out=[];for(let id of capability.parameterOrder)switch(id){case"thinking":out.push({id,value:thinkingMode===!0?"true":"false"});break;case"context":{let context=capability.requestContext??capability.defaultContext;context!==void 0&&out.push({id,value:context});break}case"effort":case"reasoning":case"reasoning_effort":out.push({id,value});break;case"fast":out.push({id,value:"false"});break}return out}function resolveCursorSelectionDescriptor(model,selection){let compat=identityCompat(model),fallback={modelId:model.upstreamModelId??model.id,parameters:[]};if(!compat)return fallback;if(selection===void 0)return{modelId:compat.representativeVariantId,parameters:[]};if(selection.source==="legacy-variant"){let legacyId=selection.legacyVariantId;return legacyId!==void 0&&(getCursorVariantAlias(legacyId)!==void 0||Object.values(compat.variantIds??{}).includes(legacyId))?{modelId:legacyId,parameters:[]}:{modelId:compat.representativeVariantId,parameters:[]}}let derivedVariantId=compat.variantIds?.[selection.level];if(derivedVariantId!==void 0)return{modelId:derivedVariantId,parameters:[]};if(compat.variantIds!==void 0)return{modelId:compat.representativeVariantId,parameters:[]};let capability=CURSOR_MODEL_CAPABILITIES[compat.capabilityId],spec=capability?.levels[selection.level];if(!capability||!spec)return{modelId:compat.representativeVariantId,parameters:[]};let suffixId=suffixAliasId(compat,selection.level,spec);return suffixId!==void 0?{modelId:suffixId,parameters:[]}:spec.encoding==="variant-id"?{modelId:compat.representativeVariantId,parameters:[]}:{modelId:compat.capabilityId,parameters:buildParameters(compat.capabilityId,spec.value,compat.thinkingMode)}}function renderCursorCliModelString(model,selection){let resolved=resolveCursorSelectionDescriptor(model,selection);if(resolved.parameters.length===0)return resolved.modelId;let args=resolved.parameters.map(parameter=>`${parameter.id}=${parameter.value}`).join(",");return`${resolved.modelId}[${args}]`}var THINKING_LEVELS=["off","minimal","low","medium","high","xhigh","max"],LEVEL_BY_NAME=new Map([["none","off"],["off","off"],["minimal","minimal"],["low","low"],["medium","medium"],["high","high"],["xhigh","xhigh"],["max","max"]]);function readEntry(entry){if(typeof entry=="string")return entry.trim()?{value:entry,isDefault:!1}:void 0;if(typeof entry!="object"||entry===null||!("value"in entry))return;let{value}=entry,isDefault="default"in entry&&entry.default===!0;return typeof value=="string"&&value.trim()?{value,isDefault}:void 0}function parseEndpointReasoningEfforts(value){if(!Array.isArray(value))return;let advertised=new Map,unmapped=[],defaultThinkingLevel;for(let raw of value){let entry=readEntry(raw);if(!entry)continue;let level=LEVEL_BY_NAME.get(entry.value.trim().toLowerCase());if(!level){unmapped.includes(entry.value)||unmapped.push(entry.value);continue}advertised.has(level)||advertised.set(level,entry.value),entry.isDefault&&defaultThinkingLevel===void 0&&(defaultThinkingLevel=level)}if(advertised.size===0)return{unmapped};let thinkingLevelMap={};for(let level of THINKING_LEVELS)thinkingLevelMap[level]=advertised.get(level)??null;return defaultThinkingLevel===void 0?{thinkingLevelMap,unmapped}:{thinkingLevelMap,defaultThinkingLevel,unmapped}}function modelSupportsAssistantPrefill(model,settings){return model.supportsAssistantPrefill!==!0?!1:!(model.api==="anthropic-messages"&&settings.thinkingEnabled)}function emit(segments,text,scan,recoveryBoundary=!1){if(text.length===0)return;let previous=segments.at(-1);previous?.scan===scan&&!previous.recoveryBoundary&&!recoveryBoundary?segments[segments.length-1]={text:previous.text+text,scan}:segments.push(recoveryBoundary?{text,scan,recoveryBoundary:!0}:{text,scan})}function isLineBreak(character){return character==="\r"||character===`
150
- `}function createRecoveryCodeMask(){let state={kind:"plain"},atLineStart=!0,leadingSpaces=0,plainIndent="",pendingTickCount=0,pendingDeferredTicks=0,pendingAtLineStart=!1,finished=!1;function flushPlainIndent(segments,scan,recoveryBoundary=!1){emit(segments,plainIndent,scan,recoveryBoundary),plainIndent=""}function updateLinePosition(character){isLineBreak(character)?(atLineStart=!0,leadingSpaces=0):atLineStart=!1}function completePendingTicks(segments){if(pendingTickCount===0)return;let tickCount=pendingTickCount,startedAtLineStart=pendingAtLineStart;pendingTickCount=0,pendingAtLineStart=!1,state.kind==="plain"?startedAtLineStart&&tickCount>=3?(flushPlainIndent(segments,!1,!0),state={kind:"fenced",delimiterLength:tickCount,closingLine:!1}):(flushPlainIndent(segments,!0),pendingDeferredTicks>0&&emit(segments,"`".repeat(pendingDeferredTicks),!1,!0),state={kind:"inline",delimiterLength:tickCount}):state.kind==="inline"?tickCount===state.delimiterLength&&(state={kind:"plain"}):startedAtLineStart&&tickCount>=state.delimiterLength&&(state.closingLine=!0),pendingDeferredTicks=0,atLineStart=!1,leadingSpaces=0}function appendTicks(segments,ticks){pendingTickCount===0&&(pendingAtLineStart=atLineStart),pendingTickCount+=ticks.length;let offset=0;if(state.kind==="plain"&&pendingAtLineStart&&plainIndent.length>0&&pendingDeferredTicks<3){let deferred=Math.min(3-pendingDeferredTicks,ticks.length);pendingDeferredTicks+=deferred,offset=deferred,pendingDeferredTicks===3&&(flushPlainIndent(segments,!1,!0),emit(segments,"```",!1),pendingDeferredTicks=0)}offset<ticks.length&&emit(segments,ticks.slice(offset),!1,state.kind==="plain"&&pendingTickCount===ticks.length)}function processPlainCharacter(segments,character){if(atLineStart&&character===" "&&leadingSpaces<3){plainIndent+=character,leadingSpaces+=1;return}flushPlainIndent(segments,!0),emit(segments,character,!0),updateLinePosition(character)}function processInlineCharacter(segments,character){emit(segments,character,!1),isLineBreak(character)&&(state={kind:"plain"}),updateLinePosition(character)}function processFencedCharacter(segments,character){if(state.kind==="fenced"){if(atLineStart&&character===" "&&leadingSpaces<3){emit(segments,character,!1),leadingSpaces+=1;return}emit(segments,character,!1),state.closingLine&&isLineBreak(character)&&(state={kind:"plain"}),updateLinePosition(character)}}function processText(segments,text){for(let index=0;index<text.length;){if(text[index]==="`"){let end=index+1;for(;text[end]==="`";)end+=1;appendTicks(segments,text.slice(index,end)),index=end;continue}completePendingTicks(segments);let character=text.charAt(index);state.kind==="plain"?processPlainCharacter(segments,character):state.kind==="inline"?processInlineCharacter(segments,character):processFencedCharacter(segments,character),index+=1}}function trackActiveText(text){for(let index=0;index<text.length;index+=1)updateLinePosition(text.charAt(index))}return{feed(text,options){if(finished)throw new Error("Recovery code mask is finished");let segments=[];return options?.activeInvoke?(completePendingTicks(segments),flushPlainIndent(segments,!0),emit(segments,text,!0),trackActiveText(text)):processText(segments,text),segments},finish(){if(finished)return[];let segments=[];return completePendingTicks(segments),state.kind==="plain"&&flushPlainIndent(segments,!0),finished=!0,segments}}}var XTML_TOOLS_OPEN="<|open|>tools<|sep|>",XTML_TOOLS_CLOSE="<|close|>tools<|sep|>",XTML_CALL_OPEN="<|open|>call ",XTML_CALL_CLOSE="<|close|>call<|sep|>",XTML_ARGUMENT_OPEN="<|open|>argument ",XTML_ARGUMENT_CLOSE="<|close|>argument<|sep|>",XTML_SEP="<|sep|>",XTML_OPEN_PREFIX="<|open|>",XTML_CLOSE_PREFIX="<|close|>",CHANNEL_NAME="[a-zA-Z_][a-zA-Z0-9_]*",STRUCTURAL_CHANNEL_NAME="(?:call|argument)\\b",SEPLESS_CHANNEL_NAME=`(?!${STRUCTURAL_CHANNEL_NAME})${CHANNEL_NAME}`,XTML_CHANNEL_MARKER_PATTERN=new RegExp([`<\\|(?:open|close)\\|>(?:${CHANNEL_NAME})?<\\|sep\\|>`,`<\\|(?:open|close)\\|>(?:${SEPLESS_CHANNEL_NAME})?(?=$|[^a-zA-Z0-9_])`,"<\\|sep\\|>"].join("|"),"g"),ANCHORED_CHANNEL_MARKER_PATTERN=new RegExp(`^(?:${XTML_CHANNEL_MARKER_PATTERN.source})`);function matchXtmlChannelMarker(text){return ANCHORED_CHANNEL_MARKER_PATTERN.exec(text)?.[0]}var ATTRIBUTE_PATTERN=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s<]+))/g;function parseXtmlAttributes(header){let attributes={};for(let match of header.matchAll(ATTRIBUTE_PATTERN)){let key=match[1];key&&(attributes[key]=match[2]??match[3]??match[4]??"")}return attributes}function getPartialXtmlSuffix(text,tokens){for(let token of tokens)for(let length=token.length-1;length>0;length-=1){let prefix=token.slice(0,length);if(text.endsWith(prefix))return prefix}return""}function coerceXtmlArgumentValue(raw,type){switch(type){case void 0:case"string":return{ok:!0,value:raw};case"number":{let parsed=Number(raw);return Number.isNaN(parsed)?{ok:!1}:{ok:!0,value:parsed}}case"boolean":return raw==="true"?{ok:!0,value:!0}:raw==="false"?{ok:!0,value:!1}:{ok:!1};case"object":case"array":try{return{ok:!0,value:JSON.parse(raw)}}catch{return{ok:!1}}default:return{ok:!0,value:raw}}}function parseCallBody(body,tool,options){let args={},rest=body;for(;rest=rest.replace(/^\s+/,""),!!rest.startsWith(XTML_ARGUMENT_OPEN);){let headerEnd=rest.indexOf(XTML_SEP,XTML_ARGUMENT_OPEN.length);if(headerEnd===-1)break;let attributes=parseXtmlAttributes(rest.slice(XTML_ARGUMENT_OPEN.length,headerEnd)),key=attributes.key,valueStart=headerEnd+XTML_SEP.length,valueEnd=rest.indexOf(XTML_ARGUMENT_CLOSE,valueStart);if(valueEnd===-1||!key)break;let coerced=coerceXtmlArgumentValue(rest.slice(valueStart,valueEnd),attributes.type);if(!coerced.ok)return options?.onError?.(`kimi-xtml: invalid value for argument "${key}" on tool "${tool.name}".`,{toolCall:rest.slice(0,valueEnd+XTML_ARGUMENT_CLOSE.length)}),null;args[key]=coerced.value,rest=rest.slice(valueEnd+XTML_ARGUMENT_CLOSE.length)}return args}function parseKimiXtmlGeneratedText(text,tools,options){let parsed=[],cursor=0;for(;cursor<text.length;){let blockStart=text.indexOf(XTML_TOOLS_OPEN,cursor);if(blockStart===-1)break;let bodyStart=blockStart+XTML_TOOLS_OPEN.length,blockEnd=text.indexOf(XTML_TOOLS_CLOSE,bodyStart),block=blockEnd===-1?text.slice(bodyStart):text.slice(bodyStart,blockEnd);cursor=blockEnd===-1?text.length:blockEnd+XTML_TOOLS_CLOSE.length;let callCursor=0;for(;callCursor<block.length;){let callStart=block.indexOf(XTML_CALL_OPEN,callCursor);if(callStart===-1)break;let headerEnd=block.indexOf(XTML_SEP,callStart+XTML_CALL_OPEN.length);if(headerEnd===-1)break;let attributes=parseXtmlAttributes(block.slice(callStart+XTML_CALL_OPEN.length,headerEnd)),bodyEnd=block.indexOf(XTML_CALL_CLOSE,headerEnd+XTML_SEP.length),callBody=bodyEnd===-1?block.slice(headerEnd+XTML_SEP.length):block.slice(headerEnd+XTML_SEP.length,bodyEnd);callCursor=bodyEnd===-1?block.length:bodyEnd+XTML_CALL_CLOSE.length;let name=attributes.tool,tool=name?tools.find(candidate=>candidate.name===name):void 0;if(!tool){options?.onError?.(`kimi-xtml: call for unknown tool "${name??""}".`,{toolCall:callBody});continue}let args=parseCallBody(callBody,tool,options);args&&parsed.push({name:tool.name,arguments:args})}}return parsed}var MARKER_PREFIXES=[XTML_OPEN_PREFIX,XTML_CLOSE_PREFIX,XTML_SEP];function findMarkerStart(text){return MARKER_PREFIXES.map(prefix=>text.indexOf(prefix)).filter(index=>index!==-1).sort((a,b)=>a-b)[0]}function couldExtendMarker(buffer,marker){if(marker.endsWith(XTML_SEP))return!1;let rest=buffer.slice(marker.length);return rest.length===0||XTML_SEP.startsWith(rest)}var STRUCTURAL_MARKER_OPENS=[XTML_CALL_OPEN,XTML_ARGUMENT_OPEN];function startsCompleteStructuralMarker(buffer){return STRUCTURAL_MARKER_OPENS.some(open=>buffer.startsWith(open))}function startsPartialStructuralMarker(buffer){return STRUCTURAL_MARKER_OPENS.some(open=>buffer.length<open.length&&open.startsWith(buffer))}function createXtmlRecoveryStreamParser(tools,options){let mask=createRecoveryCodeMask(),buffer="",mode="text",callIndex=-1,callName="",callArgs={},callStarted=!1,callInvalidReason=null,argumentKey="",argumentType;function resetCall(){callName="",callArgs={},callStarted=!1,callInvalidReason=null,argumentKey="",argumentType=void 0}function endCall(events,incomplete){if(!callStarted){resetCall();return}let event={type:"toolcall_end",index:callIndex,name:callName,id:`recovered-xtml-${callIndex}`,arguments:callArgs};incomplete&&(event.incomplete=!0,callInvalidReason&&(event.errorMessage=callInvalidReason)),events.push(event),resetCall(),mode="tools"}function processText(events){let markerIndex=findMarkerStart(buffer);if(markerIndex===void 0){let partial=getPartialXtmlSuffix(buffer,MARKER_PREFIXES),flushable=partial?buffer.slice(0,-partial.length):buffer;return flushable&&events.push({type:"text",text:flushable}),buffer=partial,!1}if(markerIndex>0)return events.push({type:"text",text:buffer.slice(0,markerIndex)}),buffer=buffer.slice(markerIndex),!0;if(startsCompleteStructuralMarker(buffer))return mode="tools",!0;if(startsPartialStructuralMarker(buffer))return!1;let marker=matchXtmlChannelMarker(buffer);return marker?couldExtendMarker(buffer,marker)?!1:(buffer=buffer.slice(marker.length),marker===XTML_TOOLS_OPEN&&(mode="tools"),!0):(events.push({type:"text",text:buffer.slice(0,2)}),buffer=buffer.slice(2),!0)}function process2(events){for(;;){if(mode==="text"){if(!processText(events))return;continue}if(mode==="tools"){let callStart=buffer.indexOf(XTML_CALL_OPEN),toolsEnd=buffer.indexOf(XTML_TOOLS_CLOSE);if(toolsEnd!==-1&&(callStart===-1||toolsEnd<callStart)){buffer=buffer.slice(toolsEnd+XTML_TOOLS_CLOSE.length),mode="text";continue}if(callStart===-1)return;buffer=buffer.slice(callStart+XTML_CALL_OPEN.length),mode="call-header";continue}if(mode==="call-header"||mode==="argument-header"){let sepIndex=buffer.indexOf(XTML_SEP);if(sepIndex===-1)return;let attributes=parseXtmlAttributes(buffer.slice(0,sepIndex));if(buffer=buffer.slice(sepIndex+XTML_SEP.length),mode==="call-header"){let name=attributes.tool??"";if(!tools.some(candidate=>candidate.name===name)){options?.onError?.(`kimi-xtml recovery: call for unknown tool "${name}".`,{}),mode="discard-call";continue}callIndex+=1,callName=name,callStarted=!0,events.push({type:"toolcall_start",index:callIndex,name,id:`recovered-xtml-${callIndex}`}),mode="call-body";continue}argumentKey=attributes.key??"",argumentType=attributes.type,mode="argument-value";continue}if(mode==="call-body"){let argStart=buffer.indexOf(XTML_ARGUMENT_OPEN),callEnd2=buffer.indexOf(XTML_CALL_CLOSE);if(callEnd2!==-1&&(argStart===-1||callEnd2<argStart)){buffer=buffer.slice(callEnd2+XTML_CALL_CLOSE.length),endCall(events,callInvalidReason!==null);continue}if(argStart===-1)return;buffer=buffer.slice(argStart+XTML_ARGUMENT_OPEN.length),mode="argument-header";continue}if(mode==="argument-value"){let valueEnd=buffer.indexOf(XTML_ARGUMENT_CLOSE);if(valueEnd===-1)return;let coerced=coerceXtmlArgumentValue(buffer.slice(0,valueEnd),argumentType);buffer=buffer.slice(valueEnd+XTML_ARGUMENT_CLOSE.length),coerced.ok?argumentKey&&(callArgs[argumentKey]=coerced.value,events.push({type:"toolcall_delta",index:callIndex,argumentsDelta:JSON.stringify(callArgs)})):(callInvalidReason=`kimi-xtml recovery: invalid value for argument "${argumentKey}".`,options?.onError?.(callInvalidReason,{toolCall:callName})),mode="call-body";continue}let callEnd=buffer.indexOf(XTML_CALL_CLOSE);if(callEnd===-1)return;buffer=buffer.slice(callEnd+XTML_CALL_CLOSE.length),resetCall(),mode="tools"}}function consume(segments){let events=[];for(let segment of segments){if(segment.scan){buffer+=segment.text,process2(events);continue}mode==="text"&&buffer&&(events.push({type:"text",text:buffer}),buffer=""),mode==="text"?events.push({type:"text",text:segment.text}):buffer+=segment.text}return events}return{feed(textDelta){return consume(mask.feed(textDelta))},interrupt(){let events=[];return mode==="text"&&buffer&&(events.push({type:"text",text:buffer}),buffer=""),events},finish(){let events=consume(mask.finish());if(mode==="text"){let rest=buffer;for(;;){let marker=matchXtmlChannelMarker(rest);if(!marker)break;rest=rest.slice(marker.length)}XTML_SEP.startsWith(rest)&&rest.length>0&&(rest=""),rest&&events.push({type:"text",text:rest})}else callStarted&&endCall(events,!0);return buffer="",mode="text",events}}}var NAMED_MARKER_PATTERN=/^<\|(open|close)\|>([a-zA-Z_][a-zA-Z0-9_]*)?/;function recoverThinkingContent(input){let mask=createRecoveryCodeMask(),channel="thinking",thinking="",response="",changed=!1,recoveredResponse=!1,append=text=>{channel==="response"?response+=text:thinking+=text},scan=text=>{let offset=0;for(let match of text.matchAll(XTML_CHANNEL_MARKER_PATTERN)){let index=match.index;if(index===void 0)continue;append(text.slice(offset,index));let named=NAMED_MARKER_PATTERN.exec(match[0]),action=named?.[1],name=named?.[2];changed=!0,action==="open"&&name==="response"?(channel="response",recoveredResponse=!0):(action==="open"&&name==="think"||action==="close"&&name==="response")&&(channel="thinking"),offset=index+match[0].length}append(text.slice(offset))};for(let segment of[...mask.feed(input),...mask.finish()])segment.scan?scan(segment.text):append(segment.text);return{thinking,response,changed,recoveredResponse}}function recoveredThinkingBlock(block,thinking){return{...block,thinking}}function strippedVisibleText(input){let mask=createRecoveryCodeMask(),text="",changed=!1;for(let segment of[...mask.feed(input),...mask.finish()]){if(!segment.scan){text+=segment.text;continue}let stripped=segment.text.replace(XTML_CHANNEL_MARKER_PATTERN,"");stripped!==segment.text&&(changed=!0),text+=stripped}return{text,changed}}function recoverKimiXtmlThinking(message){let changed=!1,thinkingChanged=!1,recoveredResponse=!1,content=[];for(let block of message.content){if(block.type==="text"){let stripped=strippedVisibleText(block.text);changed=changed||stripped.changed,content.push(stripped.changed?{...block,text:stripped.text}:block);continue}if(block.type!=="thinking"){content.push(block);continue}let recovered=recoverThinkingContent(block.thinking);changed=changed||recovered.changed,thinkingChanged=thinkingChanged||recovered.changed,recoveredResponse=recoveredResponse||recovered.recoveredResponse,content.push(recoveredThinkingBlock(block,recovered.thinking)),recovered.response.length>0&&content.push({type:"text",text:recovered.response})}return changed?{...message,content,diagnostics:thinkingChanged?[...message.diagnostics??[],{type:"kimi_xtml_thinking_recovery",timestamp:Date.now(),details:{recoveredResponse}}]:message.diagnostics}:message}function wrapStreamWithKimiThinkingRecovery(innerStream){let outerStream=new AssistantMessageEventStream;return(async()=>{try{for await(let event of innerStream){if(event.type==="done"){let message=recoverKimiXtmlThinking(event.message);outerStream.push({type:"done",reason:event.reason,message}),outerStream.end();return}if(event.type==="error"){outerStream.push(event),outerStream.end();return}outerStream.push(event)}outerStream.end(recoverKimiXtmlThinking(await innerStream.result()))}catch(error){outerStream.fail(error)}})(),outerStream}function encodeXmlText(value){return value.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function encodeXmlLineBreaks(value){return value.replaceAll("\r","&#13;").replaceAll(`
150
+ `}function createRecoveryCodeMask(){let state={kind:"plain"},atLineStart=!0,leadingSpaces=0,plainIndent="",pendingTickCount=0,pendingDeferredTicks=0,pendingAtLineStart=!1,finished=!1;function flushPlainIndent(segments,scan,recoveryBoundary=!1){emit(segments,plainIndent,scan,recoveryBoundary),plainIndent=""}function updateLinePosition(character){isLineBreak(character)?(atLineStart=!0,leadingSpaces=0):atLineStart=!1}function completePendingTicks(segments){if(pendingTickCount===0)return;let tickCount=pendingTickCount,startedAtLineStart=pendingAtLineStart;pendingTickCount=0,pendingAtLineStart=!1,state.kind==="plain"?startedAtLineStart&&tickCount>=3?(flushPlainIndent(segments,!1,!0),state={kind:"fenced",delimiterLength:tickCount,closingLine:!1}):(flushPlainIndent(segments,!0),pendingDeferredTicks>0&&emit(segments,"`".repeat(pendingDeferredTicks),!1,!0),state={kind:"inline",delimiterLength:tickCount}):state.kind==="inline"?tickCount===state.delimiterLength&&(state={kind:"plain"}):startedAtLineStart&&tickCount>=state.delimiterLength&&(state.closingLine=!0),pendingDeferredTicks=0,atLineStart=!1,leadingSpaces=0}function appendTicks(segments,ticks){pendingTickCount===0&&(pendingAtLineStart=atLineStart),pendingTickCount+=ticks.length;let offset=0;if(state.kind==="plain"&&pendingAtLineStart&&plainIndent.length>0&&pendingDeferredTicks<3){let deferred=Math.min(3-pendingDeferredTicks,ticks.length);pendingDeferredTicks+=deferred,offset=deferred,pendingDeferredTicks===3&&(flushPlainIndent(segments,!1,!0),emit(segments,"```",!1),pendingDeferredTicks=0)}offset<ticks.length&&emit(segments,ticks.slice(offset),!1,state.kind==="plain"&&pendingTickCount===ticks.length)}function processPlainCharacter(segments,character){if(atLineStart&&character===" "&&leadingSpaces<3){plainIndent+=character,leadingSpaces+=1;return}flushPlainIndent(segments,!0),emit(segments,character,!0),updateLinePosition(character)}function processInlineCharacter(segments,character){emit(segments,character,!1),isLineBreak(character)&&(state={kind:"plain"}),updateLinePosition(character)}function processFencedCharacter(segments,character){if(state.kind==="fenced"){if(atLineStart&&character===" "&&leadingSpaces<3){emit(segments,character,!1),leadingSpaces+=1;return}emit(segments,character,!1),state.closingLine&&isLineBreak(character)&&(state={kind:"plain"}),updateLinePosition(character)}}function processText(segments,text){for(let index=0;index<text.length;){if(text[index]==="`"){let end=index+1;for(;text[end]==="`";)end+=1;appendTicks(segments,text.slice(index,end)),index=end;continue}completePendingTicks(segments);let character=text.charAt(index);state.kind==="plain"?processPlainCharacter(segments,character):state.kind==="inline"?processInlineCharacter(segments,character):processFencedCharacter(segments,character),index+=1}}function trackActiveText(text){for(let index=0;index<text.length;index+=1)updateLinePosition(text.charAt(index))}return{feed(text,options){if(finished)throw new Error("Recovery code mask is finished");let segments=[];return options?.activeInvoke?(completePendingTicks(segments),flushPlainIndent(segments,!0),emit(segments,text,!0),trackActiveText(text)):processText(segments,text),segments},finish(){if(finished)return[];let segments=[];return completePendingTicks(segments),state.kind==="plain"&&flushPlainIndent(segments,!0),finished=!0,segments}}}var XTML_TOOLS_OPEN="<|open|>tools<|sep|>",XTML_TOOLS_CLOSE="<|close|>tools<|sep|>",XTML_CALL_OPEN="<|open|>call ",XTML_CALL_CLOSE="<|close|>call<|sep|>",XTML_ARGUMENT_OPEN="<|open|>argument ",XTML_ARGUMENT_CLOSE="<|close|>argument<|sep|>",XTML_SEP="<|sep|>",XTML_OPEN_PREFIX="<|open|>",XTML_CLOSE_PREFIX="<|close|>",CHANNEL_NAME="[a-zA-Z_][a-zA-Z0-9_]*",STRUCTURAL_CHANNEL_NAME="(?:call|argument)\\b",SEPLESS_CHANNEL_NAME=`(?!${STRUCTURAL_CHANNEL_NAME})${CHANNEL_NAME}`,XTML_CHANNEL_MARKER_PATTERN=new RegExp([`<\\|(?:open|close)\\|>(?:${CHANNEL_NAME})?<\\|sep\\|>`,`<\\|(?:open|close)\\|>(?:${SEPLESS_CHANNEL_NAME})?(?=$|[^a-zA-Z0-9_])`,"<\\|sep\\|>"].join("|"),"g"),ANCHORED_CHANNEL_MARKER_PATTERN=new RegExp(`^(?:${XTML_CHANNEL_MARKER_PATTERN.source})`);function matchXtmlChannelMarker(text){return ANCHORED_CHANNEL_MARKER_PATTERN.exec(text)?.[0]}var ATTRIBUTE_PATTERN=/([\w-]+)\s*=\s*(?:"([^"]*)"|'([^']*)'|([^\s<]+))/g;function parseXtmlAttributes(header){let attributes={};for(let match of header.matchAll(ATTRIBUTE_PATTERN)){let key=match[1];key&&(attributes[key]=match[2]??match[3]??match[4]??"")}return attributes}function getPartialXtmlSuffix(text,tokens){for(let token of tokens)for(let length=token.length-1;length>0;length-=1){let prefix=token.slice(0,length);if(text.endsWith(prefix))return prefix}return""}function coerceXtmlArgumentValue(raw,type){switch(type){case void 0:case"string":return{ok:!0,value:raw};case"number":{let parsed=Number(raw);return Number.isNaN(parsed)?{ok:!1}:{ok:!0,value:parsed}}case"boolean":return raw==="true"?{ok:!0,value:!0}:raw==="false"?{ok:!0,value:!1}:{ok:!1};case"object":case"array":try{return{ok:!0,value:JSON.parse(raw)}}catch{return{ok:!1}}default:return{ok:!0,value:raw}}}function parseCallBody(body,tool,options){let args={},rest=body;for(;rest=rest.replace(/^\s+/,""),!!rest.startsWith(XTML_ARGUMENT_OPEN);){let headerEnd=rest.indexOf(XTML_SEP,XTML_ARGUMENT_OPEN.length);if(headerEnd===-1)break;let attributes=parseXtmlAttributes(rest.slice(XTML_ARGUMENT_OPEN.length,headerEnd)),key=attributes.key,valueStart=headerEnd+XTML_SEP.length,valueEnd=rest.indexOf(XTML_ARGUMENT_CLOSE,valueStart);if(valueEnd===-1||!key)break;let coerced=coerceXtmlArgumentValue(rest.slice(valueStart,valueEnd),attributes.type);if(!coerced.ok)return options?.onError?.(`kimi-xtml: invalid value for argument "${key}" on tool "${tool.name}".`,{toolCall:rest.slice(0,valueEnd+XTML_ARGUMENT_CLOSE.length)}),null;args[key]=coerced.value,rest=rest.slice(valueEnd+XTML_ARGUMENT_CLOSE.length)}return args}function parseKimiXtmlGeneratedText(text,tools,options){let parsed=[],cursor=0;for(;cursor<text.length;){let blockStart=text.indexOf(XTML_TOOLS_OPEN,cursor);if(blockStart===-1)break;let bodyStart=blockStart+XTML_TOOLS_OPEN.length,blockEnd=text.indexOf(XTML_TOOLS_CLOSE,bodyStart),block=blockEnd===-1?text.slice(bodyStart):text.slice(bodyStart,blockEnd);cursor=blockEnd===-1?text.length:blockEnd+XTML_TOOLS_CLOSE.length;let callCursor=0;for(;callCursor<block.length;){let callStart=block.indexOf(XTML_CALL_OPEN,callCursor);if(callStart===-1)break;let headerEnd=block.indexOf(XTML_SEP,callStart+XTML_CALL_OPEN.length);if(headerEnd===-1)break;let attributes=parseXtmlAttributes(block.slice(callStart+XTML_CALL_OPEN.length,headerEnd)),bodyEnd=block.indexOf(XTML_CALL_CLOSE,headerEnd+XTML_SEP.length),callBody=bodyEnd===-1?block.slice(headerEnd+XTML_SEP.length):block.slice(headerEnd+XTML_SEP.length,bodyEnd);callCursor=bodyEnd===-1?block.length:bodyEnd+XTML_CALL_CLOSE.length;let name=attributes.tool,tool=name?tools.find(candidate=>candidate.name===name):void 0;if(!tool){options?.onError?.(`kimi-xtml: call for unknown tool "${name??""}".`,{toolCall:callBody});continue}let args=parseCallBody(callBody,tool,options);args&&parsed.push({name:tool.name,arguments:args})}}return parsed}var MARKER_PREFIXES=[XTML_OPEN_PREFIX,XTML_CLOSE_PREFIX,XTML_SEP];function findMarkerStart(text){return MARKER_PREFIXES.map(prefix=>text.indexOf(prefix)).filter(index=>index!==-1).sort((a,b)=>a-b)[0]}function couldExtendMarker(buffer,marker){if(marker.endsWith(XTML_SEP))return!1;let rest=buffer.slice(marker.length);return rest.length===0||XTML_SEP.startsWith(rest)}var STRUCTURAL_MARKER_OPENS=[XTML_CALL_OPEN,XTML_ARGUMENT_OPEN];function startsCompleteStructuralMarker(buffer){return STRUCTURAL_MARKER_OPENS.some(open=>buffer.startsWith(open))}function startsPartialStructuralMarker(buffer){return STRUCTURAL_MARKER_OPENS.some(open=>buffer.length<open.length&&open.startsWith(buffer))}function createXtmlRecoveryStreamParser(tools,options){let mask=createRecoveryCodeMask(),buffer="",mode="text",callIndex=-1,callName="",callArgs={},callStarted=!1,callInvalidReason=null,argumentKey="",argumentType;function resetCall(){callName="",callArgs={},callStarted=!1,callInvalidReason=null,argumentKey="",argumentType=void 0}function endCall(events,incomplete){if(!callStarted){resetCall();return}let event={type:"toolcall_end",index:callIndex,name:callName,id:`recovered-xtml-${callIndex}`,arguments:callArgs};incomplete&&(event.incomplete=!0,callInvalidReason&&(event.errorMessage=callInvalidReason)),events.push(event),resetCall(),mode="tools"}function processText(events){let markerIndex=findMarkerStart(buffer);if(markerIndex===void 0){let partial=getPartialXtmlSuffix(buffer,MARKER_PREFIXES),flushable=partial?buffer.slice(0,-partial.length):buffer;return flushable&&events.push({type:"text",text:flushable}),buffer=partial,!1}if(markerIndex>0)return events.push({type:"text",text:buffer.slice(0,markerIndex)}),buffer=buffer.slice(markerIndex),!0;if(startsCompleteStructuralMarker(buffer))return mode="tools",!0;if(startsPartialStructuralMarker(buffer))return!1;let marker=matchXtmlChannelMarker(buffer);return marker?couldExtendMarker(buffer,marker)?!1:(buffer=buffer.slice(marker.length),marker===XTML_TOOLS_OPEN&&(mode="tools"),!0):(events.push({type:"text",text:buffer.slice(0,2)}),buffer=buffer.slice(2),!0)}function process2(events){for(;;){if(mode==="text"){if(!processText(events))return;continue}if(mode==="tools"){let callStart=buffer.indexOf(XTML_CALL_OPEN),toolsEnd=buffer.indexOf(XTML_TOOLS_CLOSE);if(toolsEnd!==-1&&(callStart===-1||toolsEnd<callStart)){buffer=buffer.slice(toolsEnd+XTML_TOOLS_CLOSE.length),mode="text";continue}if(callStart===-1)return;buffer=buffer.slice(callStart+XTML_CALL_OPEN.length),mode="call-header";continue}if(mode==="call-header"||mode==="argument-header"){let sepIndex=buffer.indexOf(XTML_SEP);if(sepIndex===-1)return;let attributes=parseXtmlAttributes(buffer.slice(0,sepIndex));if(buffer=buffer.slice(sepIndex+XTML_SEP.length),mode==="call-header"){let name=attributes.tool??"";if(!tools.some(candidate=>candidate.name===name)){options?.onError?.(`kimi-xtml recovery: call for unknown tool "${name}".`,{}),mode="discard-call";continue}callIndex+=1,callName=name,callStarted=!0,events.push({type:"toolcall_start",index:callIndex,name,id:`recovered-xtml-${callIndex}`}),mode="call-body";continue}argumentKey=attributes.key??"",argumentType=attributes.type,mode="argument-value";continue}if(mode==="call-body"){let argStart=buffer.indexOf(XTML_ARGUMENT_OPEN),callEnd2=buffer.indexOf(XTML_CALL_CLOSE);if(callEnd2!==-1&&(argStart===-1||callEnd2<argStart)){buffer=buffer.slice(callEnd2+XTML_CALL_CLOSE.length),endCall(events,callInvalidReason!==null);continue}if(argStart===-1)return;buffer=buffer.slice(argStart+XTML_ARGUMENT_OPEN.length),mode="argument-header";continue}if(mode==="argument-value"){let valueEnd=buffer.indexOf(XTML_ARGUMENT_CLOSE);if(valueEnd===-1)return;let coerced=coerceXtmlArgumentValue(buffer.slice(0,valueEnd),argumentType);buffer=buffer.slice(valueEnd+XTML_ARGUMENT_CLOSE.length),coerced.ok?argumentKey&&(callArgs[argumentKey]=coerced.value,events.push({type:"toolcall_delta",index:callIndex,argumentsDelta:JSON.stringify(callArgs)})):(callInvalidReason=`kimi-xtml recovery: invalid value for argument "${argumentKey}".`,options?.onError?.(callInvalidReason,{toolCall:callName})),mode="call-body";continue}let callEnd=buffer.indexOf(XTML_CALL_CLOSE);if(callEnd===-1)return;buffer=buffer.slice(callEnd+XTML_CALL_CLOSE.length),resetCall(),mode="tools"}}function consume(segments){let events=[];for(let segment of segments){if(segment.scan){buffer+=segment.text,process2(events);continue}mode==="text"&&buffer&&(events.push({type:"text",text:buffer}),buffer=""),mode==="text"?events.push({type:"text",text:segment.text}):buffer+=segment.text}return events}return{feed(textDelta){return consume(mask.feed(textDelta))},interrupt(){let events=[];return mode==="text"&&buffer&&(events.push({type:"text",text:buffer}),buffer=""),events},finish(){let events=consume(mask.finish());if(mode==="text"){let rest=buffer;for(;;){let marker=matchXtmlChannelMarker(rest);if(!marker)break;rest=rest.slice(marker.length)}XTML_SEP.startsWith(rest)&&rest.length>0&&(rest=""),rest&&events.push({type:"text",text:rest})}else callStarted&&endCall(events,!0);return buffer="",mode="text",events}}}var NAMED_MARKER_PATTERN=/^<\|(open|close)\|>([a-zA-Z_][a-zA-Z0-9_]*)?/;function recoverThinkingContent(input){let mask=createRecoveryCodeMask(),channel="thinking",thinking="",response="",changed=!1,recoveredResponse=!1,append=text=>{channel==="response"?response+=text:thinking+=text},scan=text=>{let offset=0;for(let match of text.matchAll(XTML_CHANNEL_MARKER_PATTERN)){let index=match.index;if(index===void 0)continue;append(text.slice(offset,index));let named=NAMED_MARKER_PATTERN.exec(match[0]),action=named?.[1],name=named?.[2];changed=!0,action==="open"&&name==="response"?(channel="response",recoveredResponse=!0):(action==="open"&&name==="think"||action==="close"&&name==="response")&&(channel="thinking"),offset=index+match[0].length}append(text.slice(offset))};for(let segment of[...mask.feed(input),...mask.finish()])segment.scan?scan(segment.text):append(segment.text);return{thinking,response,changed,recoveredResponse}}function recoveredThinkingBlock(block,thinking){return{...block,thinking}}function strippedVisibleText(input){let mask=createRecoveryCodeMask(),text="",changed=!1;for(let segment of[...mask.feed(input),...mask.finish()]){if(!segment.scan){text+=segment.text;continue}let stripped=segment.text.replace(XTML_CHANNEL_MARKER_PATTERN,"");stripped!==segment.text&&(changed=!0),text+=stripped}return{text,changed}}function recoverKimiXtmlThinking(message){let changed=!1,thinkingChanged=!1,recoveredResponse=!1,content=[];for(let block of message.content){if(block.type==="text"){let stripped=strippedVisibleText(block.text);changed=changed||stripped.changed,content.push(stripped.changed?{...block,text:stripped.text}:block);continue}if(block.type!=="thinking"){content.push(block);continue}let recovered=recoverThinkingContent(block.thinking);changed=changed||recovered.changed,thinkingChanged=thinkingChanged||recovered.changed,recoveredResponse=recoveredResponse||recovered.recoveredResponse,content.push(recoveredThinkingBlock(block,recovered.thinking)),recovered.response.length>0&&content.push({type:"text",text:recovered.response})}return changed?{...message,content,diagnostics:thinkingChanged?[...message.diagnostics??[],{type:"kimi_xtml_thinking_recovery",timestamp:Date.now(),details:{recoveredResponse}}]:message.diagnostics}:message}function wrapStreamWithKimiThinkingRecovery(innerStream){let outerStream=new AssistantMessageEventStream,partial,splitsByThinkingIndex=new Map,droppedIndexes=new Set,keepsIndex=contentIndex=>{if(!partial||contentIndex>=partial.content.length||droppedIndexes.has(contentIndex))return!1;for(let index=0;index<contentIndex;index+=1)if(partial.content[index]?.type==="thinking"&&splitsByThinkingIndex.get(index)!==!1)return droppedIndexes.add(contentIndex),!1;return!0};return(async()=>{try{for await(let event of assistantEvents(innerStream,progress=>{keepsIndex(progress.contentIndex)&&pushAssistantProgress(outerStream,progress)})){if("partial"in event&&(partial=event.partial),"contentIndex"in event&&!keepsIndex(event.contentIndex)&&dropAssistantCapture(event),event.type==="thinking_end"){let alone={...event.partial,content:[{type:"thinking",thinking:event.content}]};splitsByThinkingIndex.set(event.contentIndex,recoverKimiXtmlThinking(alone).content.length>1)}if(event.type==="done"){let message=recoverKimiXtmlThinking(event.message);outerStream.push(carryAssistantCapture(event,{type:"done",reason:event.reason,message},message)),outerStream.end();return}if(event.type==="error"){outerStream.push(event),outerStream.end();return}outerStream.push(event)}outerStream.end(recoverKimiXtmlThinking(await innerStream.result()))}catch(error){outerStream.fail(error)}})(),outerStream}function encodeXmlText(value){return value.replaceAll("&","&amp;").replaceAll("<","&lt;").replaceAll(">","&gt;")}function encodeXmlLineBreaks(value){return value.replaceAll("\r","&#13;").replaceAll(`
151
151
  `,"&#10;")}function encodeXmlParameterText(value){let encoded=encodeXmlText(value),contentStart=0;for(;encoded[contentStart]==="\r"||encoded[contentStart]===`
152
152
  `;)contentStart+=1;let contentEnd=encoded.length;for(;contentEnd>contentStart&&(encoded[contentEnd-1]==="\r"||encoded[contentEnd-1]===`
153
153
  `);)contentEnd-=1;return encodeXmlLineBreaks(encoded.slice(0,contentStart))+encoded.slice(contentStart,contentEnd)+encodeXmlLineBreaks(encoded.slice(contentEnd))}function encodeXmlAttribute(value){return encodeXmlText(value).replaceAll('"',"&quot;").replaceAll("'","&apos;")}function decodeXmlEntities(value){return value.replaceAll("&#13;","\r").replaceAll("&#10;",`
154
- `).replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}var ANTML_NAMESPACE="antml:",OPTIONAL_ANTML_NAMESPACE="(?:antml:)?",INVOKE_OPEN_TAG_PREFIX=String.raw`<\s*${OPTIONAL_ANTML_NAMESPACE}invoke\b\s+name\s*=\s*`,INVOKE_OPEN_TAG_BODY=`${INVOKE_OPEN_TAG_PREFIX}(?:"([^"]+)"|'([^']+)')`,INVOKE_OPEN_TAG=new RegExp(`${INVOKE_OPEN_TAG_BODY}\\s*>`,"g"),INVOKE_CLOSE_TAG=new RegExp(String.raw`<\s*\/\s*${OPTIONAL_ANTML_NAMESPACE}invoke\s*>`,"g"),NESTED_INVOKE_OPEN_TAG=new RegExp(String.raw`<\s*${OPTIONAL_ANTML_NAMESPACE}invoke\b[^>]*>`,"g"),PARAMETER_MARKUP=new RegExp(String.raw`<\s*\/?\s*${OPTIONAL_ANTML_NAMESPACE}parameter\b`,"g"),PARAMETER_OPEN_TAG=new RegExp(String.raw`<\s*${OPTIONAL_ANTML_NAMESPACE}parameter\b\s+name\s*=\s*(?:"([^"]+)"|'([^']+)')\s*>`,"g"),PARAMETER_CLOSE_TAG=new RegExp(String.raw`<\s*\/\s*${OPTIONAL_ANTML_NAMESPACE}parameter\s*>`,"g");function findTag(pattern,text,fromIndex){pattern.lastIndex=Math.max(0,fromIndex);let match=pattern.exec(text);return match?{index:match.index,length:match[0].length}:null}function findParameterOpenTagAt(text,index){PARAMETER_OPEN_TAG.lastIndex=index;let match=PARAMETER_OPEN_TAG.exec(text);if(!match||match.index!==index)return null;let name=match[1]??match[2];return name?{index,length:match[0].length,name:decodeXmlEntities(name)}:null}function findParameterBoundary(text,fromIndex){let cursor=fromIndex,nestedInvokeDepth=0;for(;cursor<text.length;){let parameterClose=findTag(PARAMETER_CLOSE_TAG,text,cursor),invokeOpen=findTag(NESTED_INVOKE_OPEN_TAG,text,cursor),invokeClose=findTag(INVOKE_CLOSE_TAG,text,cursor),nextIndex=Math.min(parameterClose?.index??Number.POSITIVE_INFINITY,invokeOpen?.index??Number.POSITIVE_INFINITY,invokeClose?.index??Number.POSITIVE_INFINITY);if(!Number.isFinite(nextIndex))return null;if(invokeOpen&&invokeOpen.index===nextIndex){let nextParameterClose=findTag(PARAMETER_CLOSE_TAG,text,invokeOpen.index+invokeOpen.length),nestedParameterOpen=findTag(PARAMETER_OPEN_TAG,text,invokeOpen.index+invokeOpen.length),nestedInvokeClose=findTag(INVOKE_CLOSE_TAG,text,invokeOpen.index+invokeOpen.length);if(nestedInvokeClose===null||(nestedParameterOpen===null||nestedParameterOpen.index>nestedInvokeClose.index)&&nextParameterClose!==null&&nestedInvokeClose.index>nextParameterClose.index){cursor=invokeOpen.index+invokeOpen.length;continue}nestedInvokeDepth+=1,cursor=invokeOpen.index+invokeOpen.length;continue}if(invokeClose&&invokeClose.index===nextIndex){if(nestedInvokeDepth===0)return{kind:"invoke-close",match:invokeClose};nestedInvokeDepth-=1,cursor=invokeClose.index+invokeClose.length;continue}if(parameterClose){if(nestedInvokeDepth===0)return{kind:"parameter-close",match:parameterClose};cursor=parameterClose.index+parameterClose.length}}return null}function findInvokeOpenTag(text,fromIndex){INVOKE_OPEN_TAG.lastIndex=Math.max(0,fromIndex);let match=INVOKE_OPEN_TAG.exec(text);if(!match||match.index===void 0)return null;let toolName=match[1]??match[2];return toolName?{index:match.index,length:match[0].length,toolName:decodeXmlEntities(toolName)}:null}function findIncompleteInvokeOpenTag(text,fromIndex){let index=Math.max(0,fromIndex),candidate=text.slice(index),match=new RegExp(`^${INVOKE_OPEN_TAG_PREFIX}`).exec(candidate);if(!match)return null;let quoteIndex=match[0].length,quote=candidate[quoteIndex];if(quote!=='"'&&quote!=="'")return null;let toolNameStart=quoteIndex+1,closingQuoteIndex=candidate.indexOf(quote,toolNameStart);if(closingQuoteIndex===-1){let toolName2=decodeXmlEntities(candidate.slice(toolNameStart));return toolName2.length>0?{index,length:candidate.length,toolName:toolName2}:null}let toolName=decodeXmlEntities(candidate.slice(toolNameStart,closingQuoteIndex));return toolName.length===0||candidate.slice(closingQuoteIndex+1).trim().length>0?null:{index,length:candidate.length,toolName}}function scanInvokeBlock(text,openingTag){let parameters=[],cursor=Math.max(0,openingTag.index+openingTag.length);for(;cursor<=text.length;){let invokeClose=findTag(INVOKE_CLOSE_TAG,text,cursor);if(!invokeClose)return null;let parameterMarkup=findTag(PARAMETER_MARKUP,text,cursor),nestedInvokeOpen=findTag(NESTED_INVOKE_OPEN_TAG,text,cursor);if(nestedInvokeOpen&&nestedInvokeOpen.index<invokeClose.index&&(!parameterMarkup||nestedInvokeOpen.index<parameterMarkup.index))return null;if(!parameterMarkup||invokeClose.index<parameterMarkup.index)return{contentEnd:invokeClose.index,end:invokeClose.index+invokeClose.length,parameters};let parameterOpen=findParameterOpenTagAt(text,parameterMarkup.index);if(!parameterOpen)return{contentEnd:invokeClose.index,end:invokeClose.index+invokeClose.length,parameters:null};let valueStart=parameterOpen.index+parameterOpen.length,boundary=findParameterBoundary(text,valueStart);if(!boundary)return null;if(boundary.kind==="invoke-close")return{contentEnd:boundary.match.index,end:boundary.match.index+boundary.match.length,parameters:null};parameters.push({name:parameterOpen.name,rawValue:text.slice(valueStart,boundary.match.index)}),cursor=boundary.match.index+boundary.match.length}return null}function isAttributePrefix(remainder){let attributeMatch=/^(\s*)([A-Za-z]*)/.exec(remainder);if(!attributeMatch)return!1;let attributeName=attributeMatch[2]??"",afterAttributeName=remainder.slice(attributeMatch[0].length);if(attributeName.length<4)return"name".startsWith(attributeName)&&afterAttributeName.trim().length===0;if(attributeName!=="name")return!1;if(afterAttributeName.trim().length===0)return!0;let equalsMatch=/^\s*=\s*(.*)$/.exec(afterAttributeName);if(!equalsMatch)return!1;let valuePrefix=equalsMatch[1]??"";if(valuePrefix.length===0)return!0;let quote=valuePrefix[0];if(quote!=='"'&&quote!=="'")return!1;let closingQuoteIndex=valuePrefix.indexOf(quote,1);return closingQuoteIndex===-1||valuePrefix.slice(closingQuoteIndex+1).trim().length===0}function findParameterMarkup(text,fromIndex){return findTag(PARAMETER_MARKUP,text,fromIndex)}function isWhitespaceOrInvokeClosePrefix(remainder){let compactRemainder=remainder.replace(/\s/g,"");return compactRemainder.length===0||["</invoke>","</antml:invoke>"].some(prefix=>prefix.startsWith(compactRemainder)&&compactRemainder!==prefix)}function isPotentialProtocolStart(candidate){if(!candidate.startsWith("<"))return!1;let body=candidate.slice(1),leadingWhitespace=/^\s*/.exec(body)?.[0]??"",namePart=body.slice(leadingWhitespace.length);if(namePart.length===0||ANTML_NAMESPACE.startsWith(namePart))return!0;for(let namespace of["",ANTML_NAMESPACE]){if(!namePart.startsWith(namespace))continue;let unqualifiedPart=namePart.slice(namespace.length),tagName=["invoke","parameter","function_calls"].find(name=>name.startsWith(unqualifiedPart)||unqualifiedPart.startsWith(name));if(!tagName)continue;if(unqualifiedPart.length<tagName.length)return!0;let remainder=unqualifiedPart.slice(tagName.length);return remainder.includes(">")?!1:tagName==="function_calls"?/^\s*$/.test(remainder):isAttributePrefix(remainder)}return!1}function scanTruncatedInvokeBlock(text,openingTag){let parameters=[],cursor=Math.max(0,openingTag.index+openingTag.length);for(;cursor<=text.length;){let remainder=text.slice(cursor);if(isWhitespaceOrInvokeClosePrefix(remainder))return{parameters,isStructurallyComplete:!0};let leadingWhitespace=/^\s*/.exec(remainder)?.[0].length??0,parameterMarkup=findParameterMarkup(text,cursor+leadingWhitespace);if(!parameterMarkup||parameterMarkup.index!==cursor+leadingWhitespace)return{parameters,isStructurallyComplete:!1};let parameterOpen=findParameterOpenTagAt(text,parameterMarkup.index);if(!parameterOpen)return{parameters,isStructurallyComplete:!1};let valueStart=parameterOpen.index+parameterOpen.length,boundary=findParameterBoundary(text,valueStart);if(boundary?.kind!=="parameter-close")return{parameters,isStructurallyComplete:!1};parameters.push({name:parameterOpen.name,rawValue:text.slice(valueStart,boundary.match.index)}),cursor=boundary.match.index+boundary.match.length}return{parameters,isStructurallyComplete:!1}}function getSafeInvokeTextLength(text){let lastTagIndex=text.lastIndexOf("<");return lastTagIndex===-1?text.length:isPotentialProtocolStart(text.slice(lastTagIndex))?lastTagIndex:text.length}var INVOKE_OPEN_TAG2=/^<\s*(?:antml:)?invoke\b[^>]*>$/,INVOKE_CLOSE_TAG2=/^<\s*\/\s*(?:antml:)?invoke\s*>$/,PARAMETER_OPEN_TAG2=/^<\s*(?:antml:)?parameter\b[^>]*>$/,PARAMETER_CLOSE_TAG2=/^<\s*\/\s*(?:antml:)?parameter\s*>$/;function createInvokeBoundaryMatcher(){let invokeDepth=0,parameterInvokeDepths=[],tagCharacters=null;return{feed(text){for(let character of text){if(tagCharacters===null){character==="<"&&(tagCharacters=[character]);continue}if(character==="<"){tagCharacters=[character];continue}if(tagCharacters.push(character),character!==">")continue;let tag=tagCharacters.join("");if(tagCharacters=null,INVOKE_OPEN_TAG2.test(tag)){invokeDepth+=1;continue}if(PARAMETER_OPEN_TAG2.test(tag)){parameterInvokeDepths.push(invokeDepth);continue}if(PARAMETER_CLOSE_TAG2.test(tag)){let parameterInvokeDepth=parameterInvokeDepths.pop();parameterInvokeDepth!==void 0&&invokeDepth>parameterInvokeDepth&&(invokeDepth=parameterInvokeDepth);continue}if(!(!INVOKE_CLOSE_TAG2.test(tag)||invokeDepth===0)){for(invokeDepth-=1;parameterInvokeDepths.length>0;){let parameterInvokeDepth=parameterInvokeDepths[parameterInvokeDepths.length-1];if(parameterInvokeDepth===void 0||parameterInvokeDepth<=invokeDepth)break;parameterInvokeDepths.pop()}if(invokeDepth===0)return!0}}return!1}}}function createClosingTagMatcher(tagName){let closingTag=new RegExp(`^<\\s*\\/\\s*(?:antml:)?${tagName}\\s*>$`),tagCharacters=null;return{feed(text){let matched=!1;for(let character of text){if(tagCharacters===null){character==="<"&&(tagCharacters=[character]);continue}if(character==="<"){tagCharacters=[character];continue}tagCharacters.push(character),character===">"&&(matched||=closingTag.test(tagCharacters.join("")),tagCharacters=null)}return matched}}}function createTagEndMatcher(){return{feed(text){return text.includes(">")}}}function createPendingFragment(kind,text){let matcher=kind==="invoke"?createInvokeBoundaryMatcher():kind==="function-calls"?createClosingTagMatcher("function_calls"):createTagEndMatcher();return matcher.feed(text),{kind,matcher}}var FUNCTION_CALLS_OPEN_TAG=/<\s*(?:antml:)?function_calls\s*>/,FUNCTION_CALLS_CLOSE_TAG=/<\s*\/\s*(?:antml:)?function_calls\s*>/,FUNCTION_CALLS_COMPLETE_TAG=/^<\s*\/?\s*(?:antml:)?function_calls\s*>/,FUNCTION_CALLS_OPEN_PREFIXES=["<function_calls>","<antml:function_calls>"],FUNCTION_CALLS_CLOSE_PREFIXES=["</function_calls>","</antml:function_calls>"];function shouldEmitRawToolCallTextOnError(options){return options?.emitRawToolCallTextOnError===!0}function emitText(events,text){text.length>0&&events.push({type:"text",text})}function findFunctionCallsTag(pattern,text,fromIndex){let match=pattern.exec(text.slice(fromIndex));return match?.index===void 0?null:{index:fromIndex+match.index,length:match[0].length}}function findFunctionCallsOpenTag(text,fromIndex){return findFunctionCallsTag(FUNCTION_CALLS_OPEN_TAG,text,fromIndex)}function findFunctionCallsCloseTag(text,fromIndex){return findFunctionCallsTag(FUNCTION_CALLS_CLOSE_TAG,text,fromIndex)}function isPotentialFunctionCallsTag(candidate){if(FUNCTION_CALLS_COMPLETE_TAG.test(candidate))return!1;let compactCandidate=candidate.replace(/\s/g,"");return[...FUNCTION_CALLS_OPEN_PREFIXES,...FUNCTION_CALLS_CLOSE_PREFIXES].some(prefix=>prefix.startsWith(compactCandidate))}function isWhitespaceOrFunctionCallsClosePrefix(text){let compactText=text.replace(/\s/g,"");return compactText.length===0||FUNCTION_CALLS_CLOSE_PREFIXES.some(prefix=>prefix.startsWith(compactText)&&compactText!==prefix)}function getSafeStreamTextLength(text){let scannerSafeLength=getSafeInvokeTextLength(text),lastTagIndex=text.lastIndexOf("<");return lastTagIndex===-1?scannerSafeLength:isPotentialFunctionCallsTag(text.slice(lastTagIndex))?Math.min(scannerSafeLength,lastTagIndex):scannerSafeLength}function reportError(options,message,toolCall){options?.onError?.(message,{toolCall})}function overflowPendingFragment(options,label,retainedFragment){return reportError(options,`${label} streaming fragment exceeded the ${65536}-character retained-input limit.`,retainedFragment),shouldEmitRawToolCallTextOnError(options)?[{type:"text",text:retainedFragment}]:[]}function reportTruncatedInvoke(options,config,retainedLength){options?.onError?.(`${config.label} tool call truncated at finish`,{protocol:config.protocol,retainedLength})}function coerceStreamParameters(parameters,tool,config,allowJsonSchemaFallback=!1){let coercedParameters=config.coerce(parameters,tool);if(coercedParameters!==null||!allowJsonSchemaFallback)return coercedParameters;let argumentsRecord={};for(let parameter of parameters){if(Object.hasOwn(argumentsRecord,parameter.name))return null;let rawValue=decodeXmlEntities(parameter.rawValue);try{argumentsRecord[parameter.name]=JSON.parse(rawValue)}catch{argumentsRecord[parameter.name]=rawValue}}return argumentsRecord}var RecoveryWrapperState=class{constructor(opening,resolveTool){this.beforeKnown="",this.tag="",this.recovered=!1,this.opening=opening,this.resolveTool=resolveTool}feed(character){if(this.tag.length===0)return character==="<"?(this.tag="<",[]):this.literal(character);if(character==="<"){let tag2=this.tag;return this.tag="<",this.literal(tag2)}let overflow=this.preAppendOverflow(character);if(overflow)return[overflow];if(this.tag+=character,character!==">")return this.checkOverflow();let tag=this.tag;this.tag="";let invoke=findInvokeOpenTag(tag,0);if(invoke?.index===0&&invoke.length===tag.length){let tool=this.resolveTool(invoke.toolName);if(tool){let textBefore=this.beforeKnown;return this.beforeKnown="",this.recovered=!0,[{type:"known",textBefore,opening:tag,tool}]}}let close=findFunctionCallsCloseTag(tag,0);return close?.index===0&&close.length===tag.length?[{type:"closed",text:this.recovered?"":this.opening+this.beforeKnown+tag}]:this.literal(tag)}finish(){return this.recovered?this.tag:this.opening+this.beforeKnown+this.tag}literal(text){return this.recovered?text.length>0?[{type:"text",text}]:[]:(this.beforeKnown+=text,this.checkOverflow())}checkOverflow(){let retainedLength=this.retainedLength();return retainedLength!==65536?[]:[this.flushOverflow(retainedLength)]}preAppendOverflow(character){let retainedLength=this.retainedLength();return retainedLength+character.length>65536?{...this.flushOverflow(retainedLength),nextCharacter:character}:void 0}retainedLength(){return this.recovered?this.tag.length:this.opening.length+this.beforeKnown.length+this.tag.length}flushOverflow(retainedLength){let text=this.recovered?this.tag:this.opening+this.beforeKnown+this.tag;return this.tag="",{type:"overflow",text,retainedLength,retainsWrapper:this.recovered}}};var CC_MCP_PREFIX=/^mcp(?:__[^_]+)*__/,HASHED_MCP_PREFIX=/^mcp_[a-z0-9]+-/i;function toAliasKey(name){return name.replace(CC_MCP_PREFIX,"").replace(HASHED_MCP_PREFIX,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function createToolResolver(tools){let exactToolMap=new Map(tools.map(tool=>[tool.name,tool])),insensitiveToolMap=new Map,aliasToolMap=new Map;for(let tool of tools){let normalizedName=tool.name.toLowerCase(),existing=insensitiveToolMap.get(normalizedName);insensitiveToolMap.set(normalizedName,existing===void 0||existing===tool?tool:null);let aliasKey=toAliasKey(tool.name),existingAlias=aliasToolMap.get(aliasKey);aliasToolMap.set(aliasKey,existingAlias===void 0||existingAlias===tool?tool:null)}return toolName=>{let exactTool=exactToolMap.get(toolName);if(exactTool)return exactTool;let insensitiveTool=insensitiveToolMap.get(toolName.toLowerCase());return insensitiveTool||(aliasToolMap.get(toAliasKey(toolName))??void 0)}}var MAX_PARTIAL_TAG_VALIDATION_LENGTH=128;function emitText2(events,text){text.length>0&&events.push({type:"text",text})}function exceedsRetainedLimit(retainedLength,incoming){return retainedLength+incoming.length>65536}function createInvokeRecoveryStreamParser(tools,config,options){let resolveTool=createToolResolver(tools),state={kind:"idle",tag:""},nextToolCallIndex=0;function reportOverflow(retainedLength){options?.onError?.("ANTML recovery fragment exceeded the retained-input limit.",{protocol:config.protocol,retainedLength})}function startKnownInvoke(events,opening,tool,wrapper){let index=nextToolCallIndex;nextToolCallIndex+=1;let id=`recovered-antml-${index}`;events.push({type:"toolcall_start",index,name:tool.name,id}),state={kind:"active",tool,index,id,closeMatcher:createPendingFragment("invoke",opening).matcher,wrapper,source:opening}}function restoreAfterActive(active){state=active.wrapper?{kind:"wrapper",scanner:active.wrapper}:{kind:"idle",tag:""}}function finishActive(events,active){let block=scanInvokeBlock(active.source,findInvokeOpenTag(active.source,0)),argumentsRecord=block?.end===active.source.length&&block.parameters?config.coerce(block.parameters,active.tool):null,argumentsValue=argumentsRecord??{};events.push({type:"toolcall_delta",index:active.index,argumentsDelta:JSON.stringify(argumentsValue)}),argumentsRecord!==null?events.push({type:"toolcall_end",index:active.index,name:active.tool.name,id:active.id,arguments:argumentsValue}):(options?.onError?.("Recovered ANTML tool call arguments failed validation.",{protocol:config.protocol,toolName:active.tool.name}),events.push({type:"toolcall_end",index:active.index,name:active.tool.name,id:active.id,arguments:argumentsValue,incomplete:!0,errorMessage:"Recovered tool call arguments failed validation"})),restoreAfterActive(active)}function overflowActive(events,active){reportOverflow(active.source.length),events.push({type:"toolcall_delta",index:active.index,argumentsDelta:"{}"}),events.push({type:"toolcall_end",index:active.index,name:active.tool.name,id:active.id,arguments:{},incomplete:!0,errorMessage:"Tool call stream ended before completion"}),restoreAfterActive(active)}function handleIdleTag(events,idle){let invoke=findInvokeOpenTag(idle.tag,0);if(invoke?.index===0&&invoke.length===idle.tag.length){let tool=resolveTool(invoke.toolName);tool?startKnownInvoke(events,idle.tag,tool):(emitText2(events,idle.tag),state={kind:"idle",tag:""});return}let wrapper=findFunctionCallsOpenTag(idle.tag,0);if(wrapper?.index===0&&wrapper.length===idle.tag.length){state={kind:"wrapper",scanner:new RecoveryWrapperState(idle.tag,resolveTool)};return}emitText2(events,idle.tag),state={kind:"idle",tag:""}}function feedIdleCharacter(events,character,idle){if(idle.tag.length===0&&character!=="<"){emitText2(events,character);return}if(character==="<"&&idle.tag.length>0){emitText2(events,idle.tag),idle.tag="<";return}if(exceedsRetainedLimit(idle.tag.length,character)){reportOverflow(idle.tag.length),emitText2(events,idle.tag),state={kind:"idle",tag:""},feedIdleCharacter(events,character,state);return}idle.tag+=character,character===">"?handleIdleTag(events,idle):idle.tag.length===65536?(reportOverflow(idle.tag.length),emitText2(events,idle.tag),state={kind:"idle",tag:""}):idle.tag.length<=MAX_PARTIAL_TAG_VALIDATION_LENGTH&&!isPotentialProtocolStart(idle.tag)&&(emitText2(events,idle.tag),idle.tag="")}function feedWrapperCharacter(events,scanner,character){for(let action of scanner.feed(character))action.type==="text"||action.type==="closed"?(emitText2(events,action.text),action.type==="closed"&&(state={kind:"idle",tag:""})):action.type==="known"?(emitText2(events,action.textBefore),startKnownInvoke(events,action.opening,action.tool,scanner)):(reportOverflow(action.retainedLength),emitText2(events,action.text),action.retainsWrapper&&action.nextCharacter?feedWrapperCharacter(events,scanner,action.nextCharacter):action.retainsWrapper||(state={kind:"idle",tag:""},action.nextCharacter&&feedIdleCharacter(events,action.nextCharacter,state)))}function feedActiveCharacter(events,active,character){if(exceedsRetainedLimit(active.source.length,character)){overflowActive(events,active),state.kind==="wrapper"?feedWrapperCharacter(events,state.scanner,character):state.kind==="idle"&&feedIdleCharacter(events,character,state);return}active.source+=character,active.closeMatcher.feed(character)?finishActive(events,active):active.source.length===65536&&overflowActive(events,active)}return{feed(textDelta){let events=[];for(let character of textDelta){if(state.kind==="finished")break;state.kind==="idle"?feedIdleCharacter(events,character,state):state.kind==="wrapper"?feedWrapperCharacter(events,state.scanner,character):feedActiveCharacter(events,state,character)}return events},interrupt(){let events=[];return state.kind==="idle"?(emitText2(events,state.tag),state={kind:"idle",tag:""}):state.kind==="wrapper"&&(emitText2(events,state.scanner.finish()),state={kind:"idle",tag:""}),events},finish(){let events=[];return state.kind==="idle"?emitText2(events,state.tag):state.kind==="wrapper"&&emitText2(events,state.scanner.finish()),state={kind:"finished"},events}}}var INVALID={ok:!1},LEADING_RAW_NEWLINE=/^(?:\r\n|\r|\n)/,TRAILING_RAW_NEWLINE=/(?:\r\n|\r|\n)$/;function trimRawBoundaryNewlines(value){return value.replace(LEADING_RAW_NEWLINE,"").replace(TRAILING_RAW_NEWLINE,"")}function coerceParameters(rawParams,tool){if(!IsObject(tool.parameters))return null;let argumentsRecord={};for(let rawParam of rawParams){if(Object.hasOwn(argumentsRecord,rawParam.name))return null;let propertySchema=tool.parameters.properties[rawParam.name],rawValue=trimRawBoundaryNewlines(rawParam.rawValue),result=propertySchema?coerceKnownValue(rawValue,propertySchema):{ok:!0,value:coerceUnknownValue(rawValue)};if(!result.ok)return null;Object.defineProperty(argumentsRecord,rawParam.name,{configurable:!0,enumerable:!0,value:result.value,writable:!0})}return passesToolValidation(tool,argumentsRecord)?argumentsRecord:null}function coerceKnownValue(rawValue,schema){let value=decodeXmlEntities(rawValue);if(IsString(schema))return{ok:!0,value};if(IsNumber(schema)||IsInteger(schema)){if(value.trim().length===0)return INVALID;let parsed=Number(value);return!Number.isFinite(parsed)||IsInteger(schema)&&!Number.isInteger(parsed)?INVALID:{ok:!0,value:parsed}}if(IsBoolean(schema))return value==="true"?{ok:!0,value:!0}:value==="false"?{ok:!0,value:!1}:INVALID;if(IsArray(schema)){let parsed=tryParseJson(value);return parsed.ok&&Array.isArray(parsed.value)?parsed:INVALID}if(IsObject(schema)){let parsed=tryParseJson(value);return parsed.ok&&isJsonObject(parsed.value)?parsed:INVALID}return{ok:!0,value:coerceUnknownValue(rawValue)}}function coerceUnknownValue(rawValue){let value=decodeXmlEntities(rawValue),parsed=tryParseJson(value);return parsed.ok?parsed.value:value}function tryParseJson(value){try{return{ok:!0,value:JSON.parse(value)}}catch(error){if(error instanceof SyntaxError)return INVALID;throw error}}function isJsonObject(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function passesToolValidation(tool,argumentsRecord){return value_exports.Check(tool.parameters,argumentsRecord)}var BROKEN_UNICODE_ESCAPE=/\\u(?![0-9a-fA-F]{4})/g,LONE_SURROGATE=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;function isEscapedBackslashRun(text,backslashIndex){let precedingBackslashes=0;for(let index=backslashIndex-1;index>=0&&text[index]==="\\";index-=1)precedingBackslashes+=1;return precedingBackslashes%2===1}function repairUnicodeEscapes(json){return json.replace(BROKEN_UNICODE_ESCAPE,(match,offset)=>isEscapedBackslashRun(json,offset)?match:"\\\\u")}function repairLoneSurrogates(value){return value.replace(LONE_SURROGATE,"\uFFFD")}function repairStringsDeep(value){if(typeof value=="string")return repairLoneSurrogates(value);if(Array.isArray(value))return value.map(entry=>repairStringsDeep(entry));if(typeof value=="object"&&value!==null){let repaired={};for(let[key,entry]of Object.entries(value))Object.defineProperty(repaired,repairLoneSurrogates(key),{configurable:!0,enumerable:!0,value:repairStringsDeep(entry),writable:!0});return repaired}return value}var INVALID2={ok:!1},ALIAS_GROUPS=[["file_path","path","filename","file"],["old_string","old_str","old_text"],["new_string","new_str","new_text"],["command","cmd"]];function normalizeName(name){return name.toLowerCase().replace(/[^a-z0-9]/g,"")}var ALIAS_LOOKUP=new Map(ALIAS_GROUPS.flatMap(group=>group.map(name=>[normalizeName(name),group])));function setOwn(record,key,value){Object.defineProperty(record,key,{configurable:!0,enumerable:!0,value,writable:!0})}function resolvePropertyName(rawName,properties){if(Object.hasOwn(properties,rawName))return rawName;let normalized=normalizeName(rawName),byNormalized=Object.keys(properties).filter(property=>normalizeName(property)===normalized);if(byNormalized.length===1)return byNormalized[0];if(byNormalized.length>1)return;let aliasGroup=ALIAS_LOOKUP.get(normalized);if(!aliasGroup)return;let byAlias=Object.keys(properties).filter(property=>{let propertyNormalized=normalizeName(property);return propertyNormalized!==normalized&&aliasGroup.some(alias=>normalizeName(alias)===propertyNormalized)});return byAlias.length===1?byAlias[0]:void 0}function getAdditionalPropertiesSchema(schema){let additional=schema.additionalProperties;if(additional===!0)return!0;if(typeof additional=="object"&&additional!==null)return additional}function filterUnknownKeysDeep(value,schema){if(IsArray(schema)&&Array.isArray(value)&&schema.items!==void 0&&!Array.isArray(schema.items))return value.map(entry=>filterUnknownKeysDeep(entry,schema.items));if(IsObject(schema)&&typeof value=="object"&&value!==null&&!Array.isArray(value)){let properties=schema.properties??{},additional=getAdditionalPropertiesSchema(schema),filtered={};for(let[rawKey,entry]of Object.entries(value)){let propertyName=resolvePropertyName(rawKey,properties);if(propertyName!==void 0){let propertySchema=properties[propertyName];setOwn(filtered,propertyName,propertySchema?filterUnknownKeysDeep(entry,propertySchema):entry);continue}additional===!0?setOwn(filtered,rawKey,entry):additional!==void 0&&setOwn(filtered,rawKey,filterUnknownKeysDeep(entry,additional))}return filtered}return value}function tryParseJsonTolerant(value){for(let candidate of[value,repairUnicodeEscapes(value)])try{return{ok:!0,value:repairStringsDeep(JSON.parse(candidate))}}catch(error){if(!(error instanceof SyntaxError))throw error}return INVALID2}function unwrapJsonScalar(value){let parsed=tryParseJsonTolerant(value.trim());return parsed.ok&&(typeof parsed.value=="string"||typeof parsed.value=="number")?String(parsed.value):value}function coerceKnownValue2(rawValue,schema){let value=decodeXmlEntities(rawValue);if(IsString(schema))return{ok:!0,value:repairLoneSurrogates(value)};if(IsNumber(schema)||IsInteger(schema)){let candidate=unwrapJsonScalar(value).trim();if(candidate.length===0)return INVALID2;let parsed=Number(candidate);return!Number.isFinite(parsed)||IsInteger(schema)&&!Number.isInteger(parsed)?INVALID2:{ok:!0,value:parsed}}if(IsBoolean(schema)){let candidate=unwrapJsonScalar(value).trim().toLowerCase();return candidate==="true"?{ok:!0,value:!0}:candidate==="false"?{ok:!0,value:!1}:INVALID2}if(IsArray(schema)){let parsed=tryParseJsonTolerant(value);return parsed.ok&&Array.isArray(parsed.value)?{ok:!0,value:filterUnknownKeysDeep(parsed.value,schema)}:INVALID2}if(IsObject(schema)){let parsed=tryParseJsonTolerant(value);return parsed.ok&&typeof parsed.value=="object"&&parsed.value!==null&&!Array.isArray(parsed.value)?{ok:!0,value:filterUnknownKeysDeep(parsed.value,schema)}:INVALID2}return{ok:!0,value:coerceUnknownValue2(rawValue)}}function coerceUnknownValue2(rawValue){let value=decodeXmlEntities(rawValue),parsed=tryParseJsonTolerant(value);return parsed.ok?parsed.value:repairLoneSurrogates(value)}function coerceAntmlParameters(rawParams,tool){if(!IsObject(tool.parameters))return null;let properties=tool.parameters.properties??{},additional=getAdditionalPropertiesSchema(tool.parameters),argumentsRecord={};for(let rawParam of rawParams){let rawValue=trimRawBoundaryNewlines(rawParam.rawValue),propertyName=resolvePropertyName(rawParam.name,properties);if(propertyName===void 0){if(additional===void 0)continue;let result2=additional===!0?{ok:!0,value:coerceUnknownValue2(rawValue)}:coerceKnownValue2(rawValue,additional);result2.ok&&setOwn(argumentsRecord,rawParam.name,result2.value);continue}let propertySchema=properties[propertyName];if(propertySchema===void 0)continue;let result=coerceKnownValue2(rawValue,propertySchema);if(!result.ok)return null;setOwn(argumentsRecord,propertyName,result.value)}return value_exports.Check(tool.parameters,argumentsRecord)?argumentsRecord:null}var antmlInvokeConfig={protocol:"antml",label:"antml",idPrefix:"antml-tool",coerce:coerceAntmlParameters};var MISSING_ANGLE_INVOKE_PREFIX="antml:invoke",STRAY_FUNCTION_RESULTS_CLOSE="</function_results>",MAX_MISSING_ANGLE_OPENING_LENGTH=128;function isOpeningBoundary(character){return character.length===0||!["<","/"].includes(character)&&!/[A-Za-z0-9_]/u.test(character)}function createAntmlInvokeRecoveryStreamParser(tools,options){let inner=createInvokeRecoveryStreamParser(tools,antmlInvokeConfig,options),pending={kind:"none"},previousCharacter="",activeMissingAngleInvoke=!1,syntheticAnglePending=!1;function collectEvents(events,innerEvents){for(let event of innerEvents){if(syntheticAnglePending&&event.type==="text"&&event.text.startsWith(`<${MISSING_ANGLE_INVOKE_PREFIX}`)){syntheticAnglePending=!1;let text=event.text.slice(1);text.length>0&&events.push({type:"text",text});continue}syntheticAnglePending&&event.type==="toolcall_start"&&(syntheticAnglePending=!1,activeMissingAngleInvoke=!0),activeMissingAngleInvoke&&event.type==="toolcall_end"&&(activeMissingAngleInvoke=!1,event.incomplete||(pending={kind:"trailer",value:""})),events.push(event)}}function collectInner(events,input,syntheticAngle=!1){syntheticAnglePending=syntheticAnglePending||syntheticAngle,collectEvents(events,inner.feed(input))}function flushPending(events){if(pending.kind==="none")return;let value=pending.value;pending={kind:"none"},collectInner(events,value)}function feedCharacter(events,character,openingBoundary){if(pending.kind==="trailer"){pending.value+=character;let candidate=pending.value.trimStart();if(candidate.length===0||STRAY_FUNCTION_RESULTS_CLOSE.startsWith(candidate)){candidate===STRAY_FUNCTION_RESULTS_CLOSE?pending={kind:"none"}:pending.value.length>=MAX_MISSING_ANGLE_OPENING_LENGTH&&flushPending(events);return}let leadingWhitespace=pending.value.slice(0,pending.value.length-candidate.length);pending={kind:"none"},collectInner(events,leadingWhitespace),character==="a"&&openingBoundary?pending={kind:"opening",value:character}:collectInner(events,candidate);return}if(pending.kind==="opening"){if(pending.value+=character,pending.value.length<=MISSING_ANGLE_INVOKE_PREFIX.length&&!MISSING_ANGLE_INVOKE_PREFIX.startsWith(pending.value)){flushPending(events);return}if(pending.value.length>MISSING_ANGLE_INVOKE_PREFIX.length&&character===">"){let opening=pending.value;pending={kind:"none"},collectInner(events,`<${opening}`,!0);return}pending.value.length>=MAX_MISSING_ANGLE_OPENING_LENGTH&&flushPending(events);return}if(character==="a"&&openingBoundary){pending={kind:"opening",value:character};return}collectInner(events,character)}return{feed(textDelta){let events=[];for(let character of textDelta){let openingBoundary=isOpeningBoundary(previousCharacter);previousCharacter=character,feedCharacter(events,character,openingBoundary)}return events},interrupt(){let events=[];return flushPending(events),collectEvents(events,inner.interrupt()),previousCharacter="",events},finish(){let events=[];return flushPending(events),collectEvents(events,inner.finish()),events}}}var RecoveryContentLifecycle=class{constructor(){this.active=null,this.lastEndedInnerIndex=-1}canStart(innerIndex){return this.active===null&&innerIndex>this.lastEndedInnerIndex}start(innerIndex,kind){this.active={innerIndex,kind}}isActive(innerIndex,kind){return this.active?.innerIndex===innerIndex&&this.active.kind===kind}end(innerIndex,kind){return this.isActive(innerIndex,kind)?(this.active=null,this.lastEndedInnerIndex=innerIndex,!0):!1}};function isPlainObject(value){let prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}function clonePlainGraph(value,seen){if(typeof value!="object"||value===null)return value;let existing=seen.get(value);if(existing!==void 0)return existing;if(Array.isArray(value)){let clone2=new Array(value.length);seen.set(value,clone2);for(let key of Object.keys(value))Object.defineProperty(clone2,key,{value:clonePlainGraph(Reflect.get(value,key),seen),writable:!0,enumerable:!0,configurable:!0});return clone2}if(!isPlainObject(value))return value;let clone=Object.create(Object.getPrototypeOf(value));seen.set(value,clone);let enumerableSymbols=Object.getOwnPropertySymbols(value).filter(key=>Object.prototype.propertyIsEnumerable.call(value,key));for(let key of[...Object.keys(value),...enumerableSymbols])Object.defineProperty(clone,key,{value:clonePlainGraph(Reflect.get(value,key),seen),writable:!0,enumerable:!0,configurable:!0});return clone}function removeToolScratch(toolCall){delete toolCall.partialJson}function sanitizeMessage(message){for(let block of message.content)block.type==="toolCall"&&removeToolScratch(block)}function snapshotRecoveryEvent(event){let snapshot=clonePlainGraph(event,new WeakMap);return snapshot.type==="done"?sanitizeMessage(snapshot.message):snapshot.type==="error"?sanitizeMessage(snapshot.error):(sanitizeMessage(snapshot.partial),snapshot.type==="toolcall_end"&&removeToolScratch(snapshot.toolCall)),snapshot}var RecoveryAssistantMessageEventStream=class extends AssistantMessageEventStream{constructor(){super(...arguments),this.sourceClosed=!1}setCancellationHandler(handler){this.cancellationHandler=handler}markSourceClosed(){return this.cancellationPromise?!1:(this.sourceClosed=!0,!0)}push(event){super.push(snapshotRecoveryEvent(event))}[Symbol.asyncIterator](){let iterator=super[Symbol.asyncIterator]();return{next:()=>iterator.next(),return:async()=>(this.sourceClosed||(this.cancellationPromise??=(async()=>{await this.cancellationHandler?.()})(),await this.cancellationPromise),{value:void 0,done:!0})}}};function cloneContentBlock(block){return block.type==="toolCall"?{...block,arguments:{...block.arguments}}:{...block}}function cloneToolCall(toolCall){return{...toolCall,arguments:{...toolCall.arguments}}}var RecoveryNativeProjection=class{constructor(stream,message,protocol="antml"){this.rangesByInnerIndex=new Map,this.nativeLifecycleByInnerIndex=new Map,this.reservedIds=new Set,this.recoveredIds=new Set,this.recoveredIdByParserIndex=new Map,this.highestProjectedInnerIndex=-1,this.nextRecoveredId=0,this.stream=stream,this.message=message,this.recoveredIdPrefix=`recovered-${protocol}-`}reserveVisibleIds(source){for(let block of source.content)block.type==="toolCall"&&this.reservedIds.add(block.id)}synchronizeLower(source,contentIndex){for(let innerIndex=0;innerIndex<contentIndex&&innerIndex<source.content.length;innerIndex+=1)if(!this.rangesByInnerIndex.has(innerIndex)&&!this.appendUnannounced(source,innerIndex))return!1;return!0}synchronizeRemaining(source){for(let innerIndex=0;innerIndex<source.content.length;innerIndex+=1)if(!this.rangesByInnerIndex.has(innerIndex)&&!this.appendUnannounced(source,innerIndex))return!1;return!0}startText(innerIndex,outerIndex){return!!this.recordRange(innerIndex,{start:outerIndex,end:this.message.content.length})}recordProjectedBlock(innerIndex,outerIndex){return this.recordRange(innerIndex,{start:outerIndex,end:outerIndex+1})}extendText(innerIndex){let range=this.rangesByInnerIndex.get(innerIndex);range&&(range.end=this.message.content.length)}projectNativeStart(source,innerIndex){if(this.nativeLifecycleByInnerIndex.has(innerIndex)||this.rangesByInnerIndex.has(innerIndex))return"invalid";let block=source.content[innerIndex];if(block?.type!=="toolCall"||innerIndex<=this.highestProjectedInnerIndex)return"invalid";if(this.recoveredIds.has(block.id))return"collision";this.reservedIds.add(block.id);let outerIndex=this.message.content.length;return this.message.content.push(cloneContentBlock(block)),this.recordRange(innerIndex,{start:outerIndex,end:outerIndex+1})?(this.nativeLifecycleByInnerIndex.set(innerIndex,"started"),this.stream.push({type:"toolcall_start",contentIndex:outerIndex,partial:this.message}),"projected"):"invalid"}projectNativeDelta(source,innerIndex,delta){if(this.nativeLifecycleByInnerIndex.get(innerIndex)!=="started")return!1;let outerIndex=this.rangesByInnerIndex.get(innerIndex)?.start,block=source.content[innerIndex];return outerIndex==null||block?.type!=="toolCall"?!1:(this.message.content[outerIndex]=cloneContentBlock(block),this.stream.push({type:"toolcall_delta",contentIndex:outerIndex,delta,partial:this.message}),!0)}projectNativeEnd(innerIndex,toolCall){if(this.nativeLifecycleByInnerIndex.get(innerIndex)!=="started")return!1;let outerIndex=this.rangesByInnerIndex.get(innerIndex)?.start;if(outerIndex==null)return!1;let finalToolCall=cloneToolCall(toolCall);return this.message.content[outerIndex]=finalToolCall,this.nativeLifecycleByInnerIndex.set(innerIndex,"ended"),this.stream.push({type:"toolcall_end",contentIndex:outerIndex,toolCall:finalToolCall,partial:this.message}),!0}assignRecoveredIds(events){return events.map(event=>{if(event.type==="toolcall_start"){let id=this.allocateRecoveredId();return this.recoveredIdByParserIndex.set(event.index,id),{...event,id}}if(event.type==="toolcall_end"){let id=this.recoveredIdByParserIndex.get(event.index)??event.id;return this.recoveredIdByParserIndex.delete(event.index),{...event,id}}return event})}appendUnannounced(source,innerIndex){let block=source.content[innerIndex];if(!block||innerIndex<=this.highestProjectedInnerIndex||block.type==="toolCall"&&this.recoveredIds.has(block.id))return!1;let outerIndex=this.message.content.length;return this.message.content.push(cloneContentBlock(block)),this.recordRange(innerIndex,{start:outerIndex,end:outerIndex+1})}recordRange(innerIndex,range){return this.rangesByInnerIndex.has(innerIndex)||innerIndex<=this.highestProjectedInnerIndex?!1:(this.rangesByInnerIndex.set(innerIndex,range),this.highestProjectedInnerIndex=innerIndex,!0)}allocateRecoveredId(){for(;;){let id=`${this.recoveredIdPrefix}${this.nextRecoveredId}`;if(this.nextRecoveredId+=1,!this.reservedIds.has(id))return this.reservedIds.add(id),this.recoveredIds.add(id),id}}};var failureDetails={collision:{diagnosticType:"text_tool_call_recovery_collision",errorMessage:"Tool call ID collision in provider stream",status:"collision"},invalid_content_event_order:{diagnosticType:"text_tool_call_recovery_invalid_content_event",errorMessage:"Invalid assistant content event order",status:"invalid_content_event_order"},invalid_native_event_order:{diagnosticType:"text_tool_call_recovery_invalid_native_event",errorMessage:"Invalid native tool call event order",status:"invalid_native_event_order"}};function terminateRecoveryStreamForFailure(stream,projection,options){let{source,failure,protocol}=options,details=failureDetails[failure];projection.sync(source);let message=projection.finalize(source,!1);message.content=message.content.filter(block=>block.type!=="toolCall"),message.stopReason="error",message.errorMessage=details.errorMessage,message.diagnostics=[...source.diagnostics??[],{type:details.diagnosticType,timestamp:Date.now(),details:{protocol,status:details.status}}],stream.push({type:"error",reason:"error",error:message}),stream.end(message)}function errorText(error){return error instanceof Error?error.message:String(error)}function discardSupersededTools(message){let boundary=message.content.findLastIndex(block=>block.type==="providerNative"&&parseServerFallbackReceipt(block.raw)!==void 0);return boundary<0?!1:(message.content=message.content.filter((block,index)=>index>boundary||block.type!=="toolCall"),!0)}var RecoveryStreamTerminal=class{constructor(stream){this.emitted=!1,this.stream=stream}done(projection,source,sawToolCall,reason){if(this.emitted)return;projection.finalizeDanglingToolCalls();let message=projection.finalize(source,sawToolCall),finalReason=(!discardSupersededTools(message)&&sawToolCall||message.content.some(block=>block.type==="toolCall"))&&(reason==="stop"||reason==="length")?"toolUse":reason;message.stopReason=finalReason,this.emit({type:"done",reason:finalReason,message})}sourceError(projection,source,sawToolCall,reason){if(this.emitted)return;if(source.diagnostics?.some(entry=>entry.type===SERVER_FALLBACK_ABORTED_DIAGNOSTIC)){this.emit({type:"error",reason,error:source});return}discardSupersededTools(projection.message),projection.finalizeDanglingToolCalls();let message=projection.finalize(source,sawToolCall);if(reason==="aborted"){message.content=message.content.filter(block=>block.type!=="toolCall"),message.stopReason="aborted",message.errorMessage??="Request was aborted",this.emit({type:"error",reason:"aborted",error:message});return}if(projection.hasFinalizedToolCallContent()){message.stopReason="toolUse",this.emit({type:"done",reason:"toolUse",message});return}message.stopReason="error",this.emit({type:"error",reason:"error",error:message})}iteratorFailure(projection,error){if(this.emitted)return;if(!projection){this.emitted=!0,this.stream.fail(error);return}projection.finalizeDanglingToolCalls();let message=projection.finalize(projection.message,!1);message.stopReason="error",message.errorMessage=errorText(error)||"Assistant message stream failed",this.emit({type:"error",reason:"error",error:message})}exhausted(projection){if(this.emitted)return;if(!projection){this.iteratorFailure(null,new Error("Assistant message stream ended without a terminal event"));return}projection.finalizeDanglingToolCalls();let message=projection.finalize(projection.message,!1);message.stopReason="error",message.errorMessage="Assistant message stream ended without a terminal event",this.emit({type:"error",reason:"error",error:message})}cancelled(projection){if(this.emitted)return;if(!projection){this.iteratorFailure(null,new Error("Assistant message stream consumption was cancelled"));return}projection.finalizeDanglingToolCalls();let message=projection.finalize(projection.message,!1);message.content=message.content.filter(block=>block.type!=="toolCall"),message.stopReason="error",message.errorMessage="Assistant message stream consumption was cancelled",this.emit({type:"error",reason:"error",error:message})}emit(event){this.emitted||(this.emitted=!0,this.stream.push(event),this.stream.end())}};function appendRecoveryDiagnostic(projection,toolCall,protocol){projection.appendDiagnostic({type:"text_tool_call_recovery",timestamp:Date.now(),details:{protocol,toolName:toolCall.name,id:toolCall.id,status:toolCall.incomplete===!0?"incomplete":"complete"}})}var RecoveryTextProjection=class{constructor(tools,projection,nativeProjection,innerIndex,options={}){this.mask=createRecoveryCodeMask(),this.activeInvoke=!1,this.textBuffer="",this.sawToolCall=!1,this.finished=!1,this.projection=projection,this.nativeProjection=nativeProjection,this.innerIndex=innerIndex,this.parser=(options.createParser??createAntmlInvokeRecoveryStreamParser)(tools),this.protocol=options.protocol??"antml"}start(source){let outerIndex=this.projection.startText(this.innerIndex,source.content[this.innerIndex]);return this.nativeProjection.startText(this.innerIndex,outerIndex)}feed(text){for(let index=0;index<text.length;index+=1){let character=text.charAt(index),options=this.activeInvoke?{activeInvoke:!0}:void 0;for(let segment of this.mask.feed(character,options))this.processSegment(segment)}return this.flushText(),this.sawToolCall}finish(){if(this.finished)return this.sawToolCall;for(let segment of this.mask.finish())this.processSegment(segment);return this.projectParserEvents(this.parser.finish()),this.flushText(),this.projection.finishText(),this.nativeProjection.extendText(this.innerIndex),this.finished=!0,this.sawToolCall}processSegment(segment){segment.recoveryBoundary&&this.projectParserEvents(this.parser.interrupt()),segment.scan?this.projectParserEvents(this.parser.feed(segment.text)):this.textBuffer+=segment.text}projectParserEvents(events){for(let event of this.nativeProjection.assignRecoveredIds(events)){if(event.type==="text"){this.textBuffer+=event.text;continue}this.flushText();let result=this.projection.projectParserEvents([event]);if(this.sawToolCall=this.sawToolCall||result.sawToolCall,event.type==="toolcall_start"&&(this.activeInvoke=!0),event.type==="toolcall_end"){this.activeInvoke=!1;for(let toolCall of result.completedToolCalls)appendRecoveryDiagnostic(this.projection,toolCall,this.protocol)}}this.nativeProjection.extendText(this.innerIndex)}flushText(){this.textBuffer.length!==0&&(this.projection.projectParserEvents([{type:"text",text:this.textBuffer}]),this.textBuffer="")}};function cloneUsage(usage){return{...usage,cost:{...usage.cost}}}function cloneLegacyUsage(usage){let{cacheWrite1h:_cacheWrite1h,reasoning:_reasoning,...rest}=usage;return{...rest,cost:{...usage.cost}}}function cloneLegacyMessage(source,content){return{role:"assistant",api:source.api,provider:source.provider,model:source.model,responseId:source.responseId,content,usage:cloneLegacyUsage(source.usage),stopReason:source.stopReason,errorMessage:source.errorMessage,timestamp:source.timestamp}}function cloneAssistantMessageMetadata(source,content,projectedDiagnostics,preserveAll){if(!preserveAll)return cloneLegacyMessage(source,content);let message={...source,content,usage:cloneUsage(source.usage)},diagnostics=[...source.diagnostics??[],...projectedDiagnostics];return diagnostics.length>0?message.diagnostics=diagnostics:delete message.diagnostics,message}function syncAssistantMessageMetadata(target,source,projectedDiagnostics,preserveAll){if(!preserveAll){target.api=source.api,target.provider=source.provider,target.model=source.model,target.responseId=source.responseId,target.usage=cloneLegacyUsage(source.usage),target.stopReason=source.stopReason,target.errorMessage=source.errorMessage,target.timestamp=source.timestamp;return}let content=target.content,targetRecord=target;for(let key of Object.keys(targetRecord))delete targetRecord[key];Object.assign(targetRecord,cloneAssistantMessageMetadata(source,content,projectedDiagnostics,!0))}function cloneThinking(block,thinking=block.thinking){return{...block,thinking}}var StreamThinkingProjection=class{constructor(stream,message,preserveSourceMetadata){this.outerIndexByInnerIndex=new Map,this.stream=stream,this.message=message,this.preserveSourceMetadata=preserveSourceMetadata}start(innerIndex,source){let sourceBlock=source.content[innerIndex],block=this.preserveSourceMetadata&&sourceBlock?.type==="thinking"?cloneThinking(sourceBlock):{type:"thinking",thinking:""},outerIndex=this.message.content.length;return this.message.content.push(block),this.outerIndexByInnerIndex.set(innerIndex,outerIndex),this.stream.push({type:"thinking_start",contentIndex:outerIndex,partial:this.message}),outerIndex}delta(innerIndex,delta,source){let outerIndex=this.outerIndexByInnerIndex.get(innerIndex);if(outerIndex==null)return;let current=this.message.content[outerIndex];if(current?.type!=="thinking")return;let sourceBlock=source.content[innerIndex];this.message.content[outerIndex]=this.preserveSourceMetadata&&sourceBlock?.type==="thinking"?cloneThinking(sourceBlock):cloneThinking(current,current.thinking+delta),this.stream.push({type:"thinking_delta",contentIndex:outerIndex,delta,partial:this.message})}end(innerIndex,content,source){let outerIndex=this.outerIndexByInnerIndex.get(innerIndex);if(outerIndex==null)return;let current=this.message.content[outerIndex];if(current?.type!=="thinking")return;let sourceBlock=source.content[innerIndex];this.message.content[outerIndex]=this.preserveSourceMetadata&&sourceBlock?.type==="thinking"?cloneThinking(sourceBlock,content):cloneThinking(current,content),this.stream.push({type:"thinking_end",contentIndex:outerIndex,content,partial:this.message})}};function isPartialToolCall(block){return block?.type==="toolCall"&&"partialJson"in block&&typeof block.partialJson=="string"}function assertNever(value){throw new Error(`Unexpected parser event: ${JSON.stringify(value)}`)}var StreamMessageProjection=class{constructor(stream,source,options={}){this.currentInnerTextIndex=null,this.textBlockIndexByInnerIndex=new Map,this.lastTextBlockIndexByInnerIndex=new Map,this.toolCallIndexByParserIndex=new Map,this.projectedDiagnostics=[],this.stream=stream,this.source=source,this.preserveSourceMetadata=options.preserveSourceMetadata===!0,this.message=cloneAssistantMessageMetadata(source,[],this.projectedDiagnostics,this.preserveSourceMetadata),this.thinking=new StreamThinkingProjection(stream,this.message,this.preserveSourceMetadata)}sync(source){this.source=source,syncAssistantMessageMetadata(this.message,source,this.projectedDiagnostics,this.preserveSourceMetadata)}appendDiagnostic(diagnostic){this.projectedDiagnostics.push(diagnostic),syncAssistantMessageMetadata(this.message,this.source,this.projectedDiagnostics,this.preserveSourceMetadata)}startText(contentIndex,sourceBlock){this.currentInnerTextIndex=contentIndex;let outerIndex=this.message.content.length;if(this.preserveSourceMetadata){let block=sourceBlock?.type==="text"?{...sourceBlock,text:""}:{type:"text",text:""};this.message.content.push(block),this.textBlockIndexByInnerIndex.set(contentIndex,outerIndex),this.lastTextBlockIndexByInnerIndex.set(contentIndex,outerIndex)}else this.textBlockIndexByInnerIndex.set(contentIndex,null);return this.stream.push({type:"text_start",contentIndex:outerIndex,partial:this.message}),outerIndex}startThinking(contentIndex,source){return this.thinking.start(contentIndex,source)}projectThinkingDelta(contentIndex,delta,source){this.thinking.delta(contentIndex,delta,source)}finishThinking(contentIndex,content,source){this.thinking.end(contentIndex,content,source)}projectParserEvents(events){let sawToolCall=!1,completedToolCalls=[];for(let event of events)switch(event.type){case"text":this.pushText(event.text);break;case"toolcall_start":sawToolCall=!0,this.startToolCall(event);break;case"toolcall_delta":sawToolCall=!0,this.updateToolCall(event.index,event.argumentsDelta);break;case"toolcall_end":{sawToolCall=!0;let completed=this.endToolCall(event);completed&&completedToolCalls.push(completed);break}default:assertNever(event)}return{sawToolCall,completedToolCalls}}finishText(){let outerContentIndex=this.currentInnerTextIndex==null?null:this.textBlockIndexByInnerIndex.get(this.currentInnerTextIndex)??(this.preserveSourceMetadata?this.lastTextBlockIndexByInnerIndex.get(this.currentInnerTextIndex):null)??null;if(outerContentIndex!=null){let block=this.message.content[outerContentIndex];block?.type==="text"&&this.stream.push({type:"text_end",contentIndex:outerContentIndex,content:block.text,partial:this.message})}this.currentInnerTextIndex=null}finalizeDanglingToolCalls(){for(let[contentIndex,block]of this.message.content.entries()){if(!isPartialToolCall(block))continue;let finalToolCall={type:"toolCall",id:block.id,name:block.name,arguments:block.arguments,incomplete:!0,errorMessage:"Tool call stream ended before completion"};this.message.content[contentIndex]=finalToolCall;for(let[parserIndex,mappedContentIndex]of this.toolCallIndexByParserIndex)mappedContentIndex===contentIndex&&this.toolCallIndexByParserIndex.delete(parserIndex);this.stream.push({type:"toolcall_end",contentIndex,toolCall:finalToolCall,partial:this.message})}}finalize(doneMessage,sawToolCall){let finalMessage=cloneAssistantMessageMetadata(doneMessage,this.message.content,this.projectedDiagnostics,this.preserveSourceMetadata);return(sawToolCall||this.hasFinalizedToolCallContent())&&(finalMessage.stopReason==="stop"||finalMessage.stopReason==="length")&&(finalMessage.stopReason="toolUse"),finalMessage}hasFinalizedToolCallContent(){return this.message.content.some(block=>block.type==="toolCall"&&!isPartialToolCall(block))}pushText(text){if(this.currentInnerTextIndex==null)return;let contentIndex=this.textBlockIndexByInnerIndex.get(this.currentInnerTextIndex)??null;if(contentIndex==null)contentIndex=this.message.content.length,this.message.content.push({type:"text",text}),this.textBlockIndexByInnerIndex.set(this.currentInnerTextIndex,contentIndex),this.lastTextBlockIndexByInnerIndex.set(this.currentInnerTextIndex,contentIndex);else{let block=this.message.content[contentIndex];if(block?.type!=="text")return;block.text+=text}this.stream.push({type:"text_delta",contentIndex,delta:text,partial:this.message})}startToolCall(event){if(this.currentInnerTextIndex!=null){let textIndex=this.textBlockIndexByInnerIndex.get(this.currentInnerTextIndex),block=textIndex==null?void 0:this.message.content[textIndex];textIndex===this.message.content.length-1&&block?.type==="text"&&block.text.length===0&&block.textSignature===void 0&&this.message.content.pop()}let contentIndex=this.message.content.length,toolCall={type:"toolCall",id:event.id,name:event.name,arguments:{},partialJson:""};this.message.content.push(toolCall),this.toolCallIndexByParserIndex.set(event.index,contentIndex),this.currentInnerTextIndex!=null&&this.textBlockIndexByInnerIndex.set(this.currentInnerTextIndex,null),this.stream.push({type:"toolcall_start",contentIndex,partial:this.message})}updateToolCall(parserIndex,delta){let contentIndex=this.toolCallIndexByParserIndex.get(parserIndex);if(contentIndex==null)return;let block=this.message.content[contentIndex];isPartialToolCall(block)&&(block.partialJson+=delta,block.arguments=parseStreamingJson(block.partialJson),this.stream.push({type:"toolcall_delta",contentIndex,delta,partial:this.message}))}endToolCall(event){let contentIndex=this.toolCallIndexByParserIndex.get(event.index);if(contentIndex==null)return;let finalToolCall={type:"toolCall",id:event.id,name:event.name,arguments:event.arguments,...event.incomplete===!0?{incomplete:!0}:{},...event.errorMessage===void 0?{}:{errorMessage:event.errorMessage}};return this.message.content[contentIndex]=finalToolCall,this.toolCallIndexByParserIndex.delete(event.index),this.stream.push({type:"toolcall_end",contentIndex,toolCall:finalToolCall,partial:this.message}),finalToolCall}};function wrapStreamWithInvokeRecovery(innerStream,tools,options={}){let outerStream=new RecoveryAssistantMessageEventStream,resolvedOptions=typeof options=="function"?{createParser:options}:options,createParser=resolvedOptions.createParser??createAntmlInvokeRecoveryStreamParser,protocol=resolvedOptions.protocol??"antml";return(async()=>{let innerIterator=innerStream[Symbol.asyncIterator](),innerEvents={[Symbol.asyncIterator]:()=>innerIterator},projection=null,nativeProjection=null,textProjection=null,sawToolCall=!1,cancellationRequested=!1,contentLifecycle=new RecoveryContentLifecycle,terminal=new RecoveryStreamTerminal(outerStream),finishText=()=>{textProjection&&(sawToolCall=textProjection.finish()||sawToolCall,textProjection=null)};outerStream.setCancellationHandler(async()=>{cancellationRequested=!0;try{await innerIterator.return?.(),finishText(),terminal.cancelled(projection)}catch(error){throw finishText(),terminal.iteratorFailure(projection,error),error}});let terminateForFailure=(source,failure)=>{!projection||!outerStream.markSourceClosed()||(finishText(),terminateRecoveryStreamForFailure(outerStream,projection,{source,failure,protocol}))},prepareContentEvent=(source,contentIndex)=>!projection||!nativeProjection?!1:!Number.isSafeInteger(contentIndex)||contentIndex<0||contentIndex>=source.content.length?(terminateForFailure(source,"invalid_native_event_order"),!1):(projection.sync(source),nativeProjection.reserveVisibleIds(source),nativeProjection.synchronizeLower(source,contentIndex)?!0:(terminateForFailure(source,"collision"),!1)),canStart=(source,contentIndex,kind,failure="invalid_content_event_order")=>{if(!Number.isSafeInteger(contentIndex)||contentIndex<0||contentIndex>=source.content.length)return terminateForFailure(source,failure),!1;let block=source.content[contentIndex];return(kind==="text"&&block?.type==="text"||kind==="thinking"&&block?.type==="thinking"||kind==="toolCall"&&block?.type==="toolCall")&&contentLifecycle.canStart(contentIndex)?!0:(terminateForFailure(source,failure),!1)},isActive=(source,contentIndex,kind,failure="invalid_content_event_order")=>contentLifecycle.isActive(contentIndex,kind)?!0:(terminateForFailure(source,failure),!1),synchronizeTerminal=source=>(projection??=new StreamMessageProjection(outerStream,source,{preserveSourceMetadata:!0}),nativeProjection??=new RecoveryNativeProjection(outerStream,projection.message,protocol),projection.sync(source),nativeProjection.reserveVisibleIds(source),finishText(),nativeProjection.synchronizeRemaining(source)?!0:(terminateForFailure(source,"collision"),!1));try{for await(let event of innerEvents)if(!cancellationRequested)switch(event.type){case"start":projection=new StreamMessageProjection(outerStream,event.partial,{preserveSourceMetadata:!0}),nativeProjection=new RecoveryNativeProjection(outerStream,projection.message,protocol),nativeProjection.reserveVisibleIds(event.partial),outerStream.push({type:"start",partial:projection.message});break;case"text_start":{if(!canStart(event.partial,event.contentIndex,"text")||!prepareContentEvent(event.partial,event.contentIndex)||!projection||!nativeProjection)return;let nextText=new RecoveryTextProjection(tools,projection,nativeProjection,event.contentIndex,{createParser,protocol});if(!nextText.start(event.partial)){terminateForFailure(event.partial,"invalid_native_event_order");return}textProjection=nextText,contentLifecycle.start(event.contentIndex,"text");break}case"text_delta":if(!isActive(event.partial,event.contentIndex,"text")||!prepareContentEvent(event.partial,event.contentIndex)||!textProjection)return;sawToolCall=textProjection.feed(event.delta)||sawToolCall;break;case"text_end":if(!isActive(event.partial,event.contentIndex,"text")||!prepareContentEvent(event.partial,event.contentIndex))return;finishText(),contentLifecycle.end(event.contentIndex,"text");break;case"done":if(!synchronizeTerminal(event.message)||!projection||!outerStream.markSourceClosed())return;if(event.reason==="deferred"){outerStream.push(event),outerStream.end(event.message);return}terminal.done(projection,event.message,sawToolCall,event.reason);return;case"error":if(!projection){if(!outerStream.markSourceClosed())return;outerStream.push(event),outerStream.end();return}if(!synchronizeTerminal(event.error)||!outerStream.markSourceClosed())return;terminal.sourceError(projection,event.error,sawToolCall,event.reason);return;case"toolcall_start":{if(!canStart(event.partial,event.contentIndex,"toolCall","invalid_native_event_order")||!prepareContentEvent(event.partial,event.contentIndex)||!nativeProjection)return;let status=nativeProjection.projectNativeStart(event.partial,event.contentIndex);if(status!=="projected"){terminateForFailure(event.partial,status==="collision"?"collision":"invalid_native_event_order");return}contentLifecycle.start(event.contentIndex,"toolCall"),sawToolCall=!0;break}case"toolcall_delta":if(!isActive(event.partial,event.contentIndex,"toolCall","invalid_native_event_order")||!prepareContentEvent(event.partial,event.contentIndex)||!nativeProjection)return;if(!nativeProjection.projectNativeDelta(event.partial,event.contentIndex,event.delta)){terminateForFailure(event.partial,"invalid_native_event_order");return}break;case"toolcall_end":if(!isActive(event.partial,event.contentIndex,"toolCall","invalid_native_event_order")||!prepareContentEvent(event.partial,event.contentIndex)||!nativeProjection)return;if(!nativeProjection.projectNativeEnd(event.contentIndex,event.toolCall)){terminateForFailure(event.partial,"invalid_native_event_order");return}contentLifecycle.end(event.contentIndex,"toolCall"),sawToolCall=!0;break;case"thinking_start":{if(!canStart(event.partial,event.contentIndex,"thinking")||!prepareContentEvent(event.partial,event.contentIndex)||!projection||!nativeProjection)return;let outerIndex=projection.startThinking(event.contentIndex,event.partial);if(!nativeProjection.recordProjectedBlock(event.contentIndex,outerIndex)){terminateForFailure(event.partial,"invalid_native_event_order");return}contentLifecycle.start(event.contentIndex,"thinking");break}case"thinking_delta":if(!isActive(event.partial,event.contentIndex,"thinking")||!prepareContentEvent(event.partial,event.contentIndex)||!projection)return;projection.projectThinkingDelta(event.contentIndex,event.delta,event.partial);break;case"thinking_end":if(!isActive(event.partial,event.contentIndex,"thinking")||!prepareContentEvent(event.partial,event.contentIndex)||!projection)return;projection.finishThinking(event.contentIndex,event.content,event.partial),contentLifecycle.end(event.contentIndex,"thinking");break}if(cancellationRequested||!outerStream.markSourceClosed())return;finishText(),terminal.exhausted(projection)}catch(error){if(cancellationRequested||!outerStream.markSourceClosed())return;finishText(),terminal.iteratorFailure(projection,error)}})(),outerStream}function serializeToolValue(value){return typeof value=="object"&&value!==null?JSON.stringify(value)??"null":String(value)}function renderToolDefinitions(tools){return JSON.stringify(tools.map(tool=>({name:tool.name,description:tool.description,parameters:tool.parameters}))).replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026")}function anthropicXmlFormatToolsSystemPrompt(tools){return tools.length===0?"":`# Tools
154
+ `).replaceAll("&quot;",'"').replaceAll("&apos;","'").replaceAll("&lt;","<").replaceAll("&gt;",">").replaceAll("&amp;","&")}var ANTML_NAMESPACE="antml:",OPTIONAL_ANTML_NAMESPACE="(?:antml:)?",INVOKE_OPEN_TAG_PREFIX=String.raw`<\s*${OPTIONAL_ANTML_NAMESPACE}invoke\b\s+name\s*=\s*`,INVOKE_OPEN_TAG_BODY=`${INVOKE_OPEN_TAG_PREFIX}(?:"([^"]+)"|'([^']+)')`,INVOKE_OPEN_TAG=new RegExp(`${INVOKE_OPEN_TAG_BODY}\\s*>`,"g"),INVOKE_CLOSE_TAG=new RegExp(String.raw`<\s*\/\s*${OPTIONAL_ANTML_NAMESPACE}invoke\s*>`,"g"),NESTED_INVOKE_OPEN_TAG=new RegExp(String.raw`<\s*${OPTIONAL_ANTML_NAMESPACE}invoke\b[^>]*>`,"g"),PARAMETER_MARKUP=new RegExp(String.raw`<\s*\/?\s*${OPTIONAL_ANTML_NAMESPACE}parameter\b`,"g"),PARAMETER_OPEN_TAG=new RegExp(String.raw`<\s*${OPTIONAL_ANTML_NAMESPACE}parameter\b\s+name\s*=\s*(?:"([^"]+)"|'([^']+)')\s*>`,"g"),PARAMETER_CLOSE_TAG=new RegExp(String.raw`<\s*\/\s*${OPTIONAL_ANTML_NAMESPACE}parameter\s*>`,"g");function findTag(pattern,text,fromIndex){pattern.lastIndex=Math.max(0,fromIndex);let match=pattern.exec(text);return match?{index:match.index,length:match[0].length}:null}function findParameterOpenTagAt(text,index){PARAMETER_OPEN_TAG.lastIndex=index;let match=PARAMETER_OPEN_TAG.exec(text);if(!match||match.index!==index)return null;let name=match[1]??match[2];return name?{index,length:match[0].length,name:decodeXmlEntities(name)}:null}function findParameterBoundary(text,fromIndex){let cursor=fromIndex,nestedInvokeDepth=0;for(;cursor<text.length;){let parameterClose=findTag(PARAMETER_CLOSE_TAG,text,cursor),invokeOpen=findTag(NESTED_INVOKE_OPEN_TAG,text,cursor),invokeClose=findTag(INVOKE_CLOSE_TAG,text,cursor),nextIndex=Math.min(parameterClose?.index??Number.POSITIVE_INFINITY,invokeOpen?.index??Number.POSITIVE_INFINITY,invokeClose?.index??Number.POSITIVE_INFINITY);if(!Number.isFinite(nextIndex))return null;if(invokeOpen&&invokeOpen.index===nextIndex){let nextParameterClose=findTag(PARAMETER_CLOSE_TAG,text,invokeOpen.index+invokeOpen.length),nestedParameterOpen=findTag(PARAMETER_OPEN_TAG,text,invokeOpen.index+invokeOpen.length),nestedInvokeClose=findTag(INVOKE_CLOSE_TAG,text,invokeOpen.index+invokeOpen.length);if(nestedInvokeClose===null||(nestedParameterOpen===null||nestedParameterOpen.index>nestedInvokeClose.index)&&nextParameterClose!==null&&nestedInvokeClose.index>nextParameterClose.index){cursor=invokeOpen.index+invokeOpen.length;continue}nestedInvokeDepth+=1,cursor=invokeOpen.index+invokeOpen.length;continue}if(invokeClose&&invokeClose.index===nextIndex){if(nestedInvokeDepth===0)return{kind:"invoke-close",match:invokeClose};nestedInvokeDepth-=1,cursor=invokeClose.index+invokeClose.length;continue}if(parameterClose){if(nestedInvokeDepth===0)return{kind:"parameter-close",match:parameterClose};cursor=parameterClose.index+parameterClose.length}}return null}function findInvokeOpenTag(text,fromIndex){INVOKE_OPEN_TAG.lastIndex=Math.max(0,fromIndex);let match=INVOKE_OPEN_TAG.exec(text);if(!match||match.index===void 0)return null;let toolName=match[1]??match[2];return toolName?{index:match.index,length:match[0].length,toolName:decodeXmlEntities(toolName)}:null}function findIncompleteInvokeOpenTag(text,fromIndex){let index=Math.max(0,fromIndex),candidate=text.slice(index),match=new RegExp(`^${INVOKE_OPEN_TAG_PREFIX}`).exec(candidate);if(!match)return null;let quoteIndex=match[0].length,quote=candidate[quoteIndex];if(quote!=='"'&&quote!=="'")return null;let toolNameStart=quoteIndex+1,closingQuoteIndex=candidate.indexOf(quote,toolNameStart);if(closingQuoteIndex===-1){let toolName2=decodeXmlEntities(candidate.slice(toolNameStart));return toolName2.length>0?{index,length:candidate.length,toolName:toolName2}:null}let toolName=decodeXmlEntities(candidate.slice(toolNameStart,closingQuoteIndex));return toolName.length===0||candidate.slice(closingQuoteIndex+1).trim().length>0?null:{index,length:candidate.length,toolName}}function scanInvokeBlock(text,openingTag){let parameters=[],cursor=Math.max(0,openingTag.index+openingTag.length);for(;cursor<=text.length;){let invokeClose=findTag(INVOKE_CLOSE_TAG,text,cursor);if(!invokeClose)return null;let parameterMarkup=findTag(PARAMETER_MARKUP,text,cursor),nestedInvokeOpen=findTag(NESTED_INVOKE_OPEN_TAG,text,cursor);if(nestedInvokeOpen&&nestedInvokeOpen.index<invokeClose.index&&(!parameterMarkup||nestedInvokeOpen.index<parameterMarkup.index))return null;if(!parameterMarkup||invokeClose.index<parameterMarkup.index)return{contentEnd:invokeClose.index,end:invokeClose.index+invokeClose.length,parameters};let parameterOpen=findParameterOpenTagAt(text,parameterMarkup.index);if(!parameterOpen)return{contentEnd:invokeClose.index,end:invokeClose.index+invokeClose.length,parameters:null};let valueStart=parameterOpen.index+parameterOpen.length,boundary=findParameterBoundary(text,valueStart);if(!boundary)return null;if(boundary.kind==="invoke-close")return{contentEnd:boundary.match.index,end:boundary.match.index+boundary.match.length,parameters:null};parameters.push({name:parameterOpen.name,rawValue:text.slice(valueStart,boundary.match.index)}),cursor=boundary.match.index+boundary.match.length}return null}function isAttributePrefix(remainder){let attributeMatch=/^(\s*)([A-Za-z]*)/.exec(remainder);if(!attributeMatch)return!1;let attributeName=attributeMatch[2]??"",afterAttributeName=remainder.slice(attributeMatch[0].length);if(attributeName.length<4)return"name".startsWith(attributeName)&&afterAttributeName.trim().length===0;if(attributeName!=="name")return!1;if(afterAttributeName.trim().length===0)return!0;let equalsMatch=/^\s*=\s*(.*)$/.exec(afterAttributeName);if(!equalsMatch)return!1;let valuePrefix=equalsMatch[1]??"";if(valuePrefix.length===0)return!0;let quote=valuePrefix[0];if(quote!=='"'&&quote!=="'")return!1;let closingQuoteIndex=valuePrefix.indexOf(quote,1);return closingQuoteIndex===-1||valuePrefix.slice(closingQuoteIndex+1).trim().length===0}function findParameterMarkup(text,fromIndex){return findTag(PARAMETER_MARKUP,text,fromIndex)}function isWhitespaceOrInvokeClosePrefix(remainder){let compactRemainder=remainder.replace(/\s/g,"");return compactRemainder.length===0||["</invoke>","</antml:invoke>"].some(prefix=>prefix.startsWith(compactRemainder)&&compactRemainder!==prefix)}function isPotentialProtocolStart(candidate){if(!candidate.startsWith("<"))return!1;let body=candidate.slice(1),leadingWhitespace=/^\s*/.exec(body)?.[0]??"",namePart=body.slice(leadingWhitespace.length);if(namePart.length===0||ANTML_NAMESPACE.startsWith(namePart))return!0;for(let namespace of["",ANTML_NAMESPACE]){if(!namePart.startsWith(namespace))continue;let unqualifiedPart=namePart.slice(namespace.length),tagName=["invoke","parameter","function_calls"].find(name=>name.startsWith(unqualifiedPart)||unqualifiedPart.startsWith(name));if(!tagName)continue;if(unqualifiedPart.length<tagName.length)return!0;let remainder=unqualifiedPart.slice(tagName.length);return remainder.includes(">")?!1:tagName==="function_calls"?/^\s*$/.test(remainder):isAttributePrefix(remainder)}return!1}function scanTruncatedInvokeBlock(text,openingTag){let parameters=[],cursor=Math.max(0,openingTag.index+openingTag.length);for(;cursor<=text.length;){let remainder=text.slice(cursor);if(isWhitespaceOrInvokeClosePrefix(remainder))return{parameters,isStructurallyComplete:!0};let leadingWhitespace=/^\s*/.exec(remainder)?.[0].length??0,parameterMarkup=findParameterMarkup(text,cursor+leadingWhitespace);if(!parameterMarkup||parameterMarkup.index!==cursor+leadingWhitespace)return{parameters,isStructurallyComplete:!1};let parameterOpen=findParameterOpenTagAt(text,parameterMarkup.index);if(!parameterOpen)return{parameters,isStructurallyComplete:!1};let valueStart=parameterOpen.index+parameterOpen.length,boundary=findParameterBoundary(text,valueStart);if(boundary?.kind!=="parameter-close")return{parameters,isStructurallyComplete:!1};parameters.push({name:parameterOpen.name,rawValue:text.slice(valueStart,boundary.match.index)}),cursor=boundary.match.index+boundary.match.length}return{parameters,isStructurallyComplete:!1}}function getSafeInvokeTextLength(text){let lastTagIndex=text.lastIndexOf("<");return lastTagIndex===-1?text.length:isPotentialProtocolStart(text.slice(lastTagIndex))?lastTagIndex:text.length}var INVOKE_OPEN_TAG2=/^<\s*(?:antml:)?invoke\b[^>]*>$/,INVOKE_CLOSE_TAG2=/^<\s*\/\s*(?:antml:)?invoke\s*>$/,PARAMETER_OPEN_TAG2=/^<\s*(?:antml:)?parameter\b[^>]*>$/,PARAMETER_CLOSE_TAG2=/^<\s*\/\s*(?:antml:)?parameter\s*>$/;function createInvokeBoundaryMatcher(){let invokeDepth=0,parameterInvokeDepths=[],tagCharacters=null;return{feed(text){for(let character of text){if(tagCharacters===null){character==="<"&&(tagCharacters=[character]);continue}if(character==="<"){tagCharacters=[character];continue}if(tagCharacters.push(character),character!==">")continue;let tag=tagCharacters.join("");if(tagCharacters=null,INVOKE_OPEN_TAG2.test(tag)){invokeDepth+=1;continue}if(PARAMETER_OPEN_TAG2.test(tag)){parameterInvokeDepths.push(invokeDepth);continue}if(PARAMETER_CLOSE_TAG2.test(tag)){let parameterInvokeDepth=parameterInvokeDepths.pop();parameterInvokeDepth!==void 0&&invokeDepth>parameterInvokeDepth&&(invokeDepth=parameterInvokeDepth);continue}if(!(!INVOKE_CLOSE_TAG2.test(tag)||invokeDepth===0)){for(invokeDepth-=1;parameterInvokeDepths.length>0;){let parameterInvokeDepth=parameterInvokeDepths[parameterInvokeDepths.length-1];if(parameterInvokeDepth===void 0||parameterInvokeDepth<=invokeDepth)break;parameterInvokeDepths.pop()}if(invokeDepth===0)return!0}}return!1}}}function createClosingTagMatcher(tagName){let closingTag=new RegExp(`^<\\s*\\/\\s*(?:antml:)?${tagName}\\s*>$`),tagCharacters=null;return{feed(text){let matched=!1;for(let character of text){if(tagCharacters===null){character==="<"&&(tagCharacters=[character]);continue}if(character==="<"){tagCharacters=[character];continue}tagCharacters.push(character),character===">"&&(matched||=closingTag.test(tagCharacters.join("")),tagCharacters=null)}return matched}}}function createTagEndMatcher(){return{feed(text){return text.includes(">")}}}function createPendingFragment(kind,text){let matcher=kind==="invoke"?createInvokeBoundaryMatcher():kind==="function-calls"?createClosingTagMatcher("function_calls"):createTagEndMatcher();return matcher.feed(text),{kind,matcher}}var FUNCTION_CALLS_OPEN_TAG=/<\s*(?:antml:)?function_calls\s*>/,FUNCTION_CALLS_CLOSE_TAG=/<\s*\/\s*(?:antml:)?function_calls\s*>/,FUNCTION_CALLS_COMPLETE_TAG=/^<\s*\/?\s*(?:antml:)?function_calls\s*>/,FUNCTION_CALLS_OPEN_PREFIXES=["<function_calls>","<antml:function_calls>"],FUNCTION_CALLS_CLOSE_PREFIXES=["</function_calls>","</antml:function_calls>"];function shouldEmitRawToolCallTextOnError(options){return options?.emitRawToolCallTextOnError===!0}function emitText(events,text){text.length>0&&events.push({type:"text",text})}function findFunctionCallsTag(pattern,text,fromIndex){let match=pattern.exec(text.slice(fromIndex));return match?.index===void 0?null:{index:fromIndex+match.index,length:match[0].length}}function findFunctionCallsOpenTag(text,fromIndex){return findFunctionCallsTag(FUNCTION_CALLS_OPEN_TAG,text,fromIndex)}function findFunctionCallsCloseTag(text,fromIndex){return findFunctionCallsTag(FUNCTION_CALLS_CLOSE_TAG,text,fromIndex)}function isPotentialFunctionCallsTag(candidate){if(FUNCTION_CALLS_COMPLETE_TAG.test(candidate))return!1;let compactCandidate=candidate.replace(/\s/g,"");return[...FUNCTION_CALLS_OPEN_PREFIXES,...FUNCTION_CALLS_CLOSE_PREFIXES].some(prefix=>prefix.startsWith(compactCandidate))}function isWhitespaceOrFunctionCallsClosePrefix(text){let compactText=text.replace(/\s/g,"");return compactText.length===0||FUNCTION_CALLS_CLOSE_PREFIXES.some(prefix=>prefix.startsWith(compactText)&&compactText!==prefix)}function getSafeStreamTextLength(text){let scannerSafeLength=getSafeInvokeTextLength(text),lastTagIndex=text.lastIndexOf("<");return lastTagIndex===-1?scannerSafeLength:isPotentialFunctionCallsTag(text.slice(lastTagIndex))?Math.min(scannerSafeLength,lastTagIndex):scannerSafeLength}function reportError(options,message,toolCall){options?.onError?.(message,{toolCall})}function overflowPendingFragment(options,label,retainedFragment){return reportError(options,`${label} streaming fragment exceeded the ${65536}-character retained-input limit.`,retainedFragment),shouldEmitRawToolCallTextOnError(options)?[{type:"text",text:retainedFragment}]:[]}function reportTruncatedInvoke(options,config,retainedLength){options?.onError?.(`${config.label} tool call truncated at finish`,{protocol:config.protocol,retainedLength})}function coerceStreamParameters(parameters,tool,config,allowJsonSchemaFallback=!1){let coercedParameters=config.coerce(parameters,tool);if(coercedParameters!==null||!allowJsonSchemaFallback)return coercedParameters;let argumentsRecord={};for(let parameter of parameters){if(Object.hasOwn(argumentsRecord,parameter.name))return null;let rawValue=decodeXmlEntities(parameter.rawValue);try{argumentsRecord[parameter.name]=JSON.parse(rawValue)}catch{argumentsRecord[parameter.name]=rawValue}}return argumentsRecord}var RecoveryWrapperState=class{constructor(opening,resolveTool){this.beforeKnown="",this.tag="",this.recovered=!1,this.opening=opening,this.resolveTool=resolveTool}feed(character){if(this.tag.length===0)return character==="<"?(this.tag="<",[]):this.literal(character);if(character==="<"){let tag2=this.tag;return this.tag="<",this.literal(tag2)}let overflow=this.preAppendOverflow(character);if(overflow)return[overflow];if(this.tag+=character,character!==">")return this.checkOverflow();let tag=this.tag;this.tag="";let invoke=findInvokeOpenTag(tag,0);if(invoke?.index===0&&invoke.length===tag.length){let tool=this.resolveTool(invoke.toolName);if(tool){let textBefore=this.beforeKnown;return this.beforeKnown="",this.recovered=!0,[{type:"known",textBefore,opening:tag,tool}]}}let close=findFunctionCallsCloseTag(tag,0);return close?.index===0&&close.length===tag.length?[{type:"closed",text:this.recovered?"":this.opening+this.beforeKnown+tag}]:this.literal(tag)}finish(){return this.recovered?this.tag:this.opening+this.beforeKnown+this.tag}literal(text){return this.recovered?text.length>0?[{type:"text",text}]:[]:(this.beforeKnown+=text,this.checkOverflow())}checkOverflow(){let retainedLength=this.retainedLength();return retainedLength!==65536?[]:[this.flushOverflow(retainedLength)]}preAppendOverflow(character){let retainedLength=this.retainedLength();return retainedLength+character.length>65536?{...this.flushOverflow(retainedLength),nextCharacter:character}:void 0}retainedLength(){return this.recovered?this.tag.length:this.opening.length+this.beforeKnown.length+this.tag.length}flushOverflow(retainedLength){let text=this.recovered?this.tag:this.opening+this.beforeKnown+this.tag;return this.tag="",{type:"overflow",text,retainedLength,retainsWrapper:this.recovered}}};var CC_MCP_PREFIX=/^mcp(?:__[^_]+)*__/,HASHED_MCP_PREFIX=/^mcp_[a-z0-9]+-/i;function toAliasKey(name){return name.replace(CC_MCP_PREFIX,"").replace(HASHED_MCP_PREFIX,"").toLowerCase().replace(/[^a-z0-9]/g,"")}function createToolResolver(tools){let exactToolMap=new Map(tools.map(tool=>[tool.name,tool])),insensitiveToolMap=new Map,aliasToolMap=new Map;for(let tool of tools){let normalizedName=tool.name.toLowerCase(),existing=insensitiveToolMap.get(normalizedName);insensitiveToolMap.set(normalizedName,existing===void 0||existing===tool?tool:null);let aliasKey=toAliasKey(tool.name),existingAlias=aliasToolMap.get(aliasKey);aliasToolMap.set(aliasKey,existingAlias===void 0||existingAlias===tool?tool:null)}return toolName=>{let exactTool=exactToolMap.get(toolName);if(exactTool)return exactTool;let insensitiveTool=insensitiveToolMap.get(toolName.toLowerCase());return insensitiveTool||(aliasToolMap.get(toAliasKey(toolName))??void 0)}}var MAX_PARTIAL_TAG_VALIDATION_LENGTH=128;function emitText2(events,text){text.length>0&&events.push({type:"text",text})}function exceedsRetainedLimit(retainedLength,incoming){return retainedLength+incoming.length>65536}function createInvokeRecoveryStreamParser(tools,config,options){let resolveTool=createToolResolver(tools),state={kind:"idle",tag:""},nextToolCallIndex=0;function reportOverflow(retainedLength){options?.onError?.("ANTML recovery fragment exceeded the retained-input limit.",{protocol:config.protocol,retainedLength})}function startKnownInvoke(events,opening,tool,wrapper){let index=nextToolCallIndex;nextToolCallIndex+=1;let id=`recovered-antml-${index}`;events.push({type:"toolcall_start",index,name:tool.name,id}),state={kind:"active",tool,index,id,closeMatcher:createPendingFragment("invoke",opening).matcher,wrapper,source:opening}}function restoreAfterActive(active){state=active.wrapper?{kind:"wrapper",scanner:active.wrapper}:{kind:"idle",tag:""}}function finishActive(events,active){let block=scanInvokeBlock(active.source,findInvokeOpenTag(active.source,0)),argumentsRecord=block?.end===active.source.length&&block.parameters?config.coerce(block.parameters,active.tool):null,argumentsValue=argumentsRecord??{};events.push({type:"toolcall_delta",index:active.index,argumentsDelta:JSON.stringify(argumentsValue)}),argumentsRecord!==null?events.push({type:"toolcall_end",index:active.index,name:active.tool.name,id:active.id,arguments:argumentsValue}):(options?.onError?.("Recovered ANTML tool call arguments failed validation.",{protocol:config.protocol,toolName:active.tool.name}),events.push({type:"toolcall_end",index:active.index,name:active.tool.name,id:active.id,arguments:argumentsValue,incomplete:!0,errorMessage:"Recovered tool call arguments failed validation"})),restoreAfterActive(active)}function overflowActive(events,active){reportOverflow(active.source.length),events.push({type:"toolcall_delta",index:active.index,argumentsDelta:"{}"}),events.push({type:"toolcall_end",index:active.index,name:active.tool.name,id:active.id,arguments:{},incomplete:!0,errorMessage:"Tool call stream ended before completion"}),restoreAfterActive(active)}function handleIdleTag(events,idle){let invoke=findInvokeOpenTag(idle.tag,0);if(invoke?.index===0&&invoke.length===idle.tag.length){let tool=resolveTool(invoke.toolName);tool?startKnownInvoke(events,idle.tag,tool):(emitText2(events,idle.tag),state={kind:"idle",tag:""});return}let wrapper=findFunctionCallsOpenTag(idle.tag,0);if(wrapper?.index===0&&wrapper.length===idle.tag.length){state={kind:"wrapper",scanner:new RecoveryWrapperState(idle.tag,resolveTool)};return}emitText2(events,idle.tag),state={kind:"idle",tag:""}}function feedIdleCharacter(events,character,idle){if(idle.tag.length===0&&character!=="<"){emitText2(events,character);return}if(character==="<"&&idle.tag.length>0){emitText2(events,idle.tag),idle.tag="<";return}if(exceedsRetainedLimit(idle.tag.length,character)){reportOverflow(idle.tag.length),emitText2(events,idle.tag),state={kind:"idle",tag:""},feedIdleCharacter(events,character,state);return}idle.tag+=character,character===">"?handleIdleTag(events,idle):idle.tag.length===65536?(reportOverflow(idle.tag.length),emitText2(events,idle.tag),state={kind:"idle",tag:""}):idle.tag.length<=MAX_PARTIAL_TAG_VALIDATION_LENGTH&&!isPotentialProtocolStart(idle.tag)&&(emitText2(events,idle.tag),idle.tag="")}function feedWrapperCharacter(events,scanner,character){for(let action of scanner.feed(character))action.type==="text"||action.type==="closed"?(emitText2(events,action.text),action.type==="closed"&&(state={kind:"idle",tag:""})):action.type==="known"?(emitText2(events,action.textBefore),startKnownInvoke(events,action.opening,action.tool,scanner)):(reportOverflow(action.retainedLength),emitText2(events,action.text),action.retainsWrapper&&action.nextCharacter?feedWrapperCharacter(events,scanner,action.nextCharacter):action.retainsWrapper||(state={kind:"idle",tag:""},action.nextCharacter&&feedIdleCharacter(events,action.nextCharacter,state)))}function feedActiveCharacter(events,active,character){if(exceedsRetainedLimit(active.source.length,character)){overflowActive(events,active),state.kind==="wrapper"?feedWrapperCharacter(events,state.scanner,character):state.kind==="idle"&&feedIdleCharacter(events,character,state);return}active.source+=character,active.closeMatcher.feed(character)?finishActive(events,active):active.source.length===65536&&overflowActive(events,active)}return{feed(textDelta){let events=[];for(let character of textDelta){if(state.kind==="finished")break;state.kind==="idle"?feedIdleCharacter(events,character,state):state.kind==="wrapper"?feedWrapperCharacter(events,state.scanner,character):feedActiveCharacter(events,state,character)}return events},interrupt(){let events=[];return state.kind==="idle"?(emitText2(events,state.tag),state={kind:"idle",tag:""}):state.kind==="wrapper"&&(emitText2(events,state.scanner.finish()),state={kind:"idle",tag:""}),events},finish(){let events=[];return state.kind==="idle"?emitText2(events,state.tag):state.kind==="wrapper"&&emitText2(events,state.scanner.finish()),state={kind:"finished"},events}}}var INVALID={ok:!1},LEADING_RAW_NEWLINE=/^(?:\r\n|\r|\n)/,TRAILING_RAW_NEWLINE=/(?:\r\n|\r|\n)$/;function trimRawBoundaryNewlines(value){return value.replace(LEADING_RAW_NEWLINE,"").replace(TRAILING_RAW_NEWLINE,"")}function coerceParameters(rawParams,tool){if(!IsObject(tool.parameters))return null;let argumentsRecord={};for(let rawParam of rawParams){if(Object.hasOwn(argumentsRecord,rawParam.name))return null;let propertySchema=tool.parameters.properties[rawParam.name],rawValue=trimRawBoundaryNewlines(rawParam.rawValue),result=propertySchema?coerceKnownValue(rawValue,propertySchema):{ok:!0,value:coerceUnknownValue(rawValue)};if(!result.ok)return null;Object.defineProperty(argumentsRecord,rawParam.name,{configurable:!0,enumerable:!0,value:result.value,writable:!0})}return passesToolValidation(tool,argumentsRecord)?argumentsRecord:null}function coerceKnownValue(rawValue,schema){let value=decodeXmlEntities(rawValue);if(IsString(schema))return{ok:!0,value};if(IsNumber(schema)||IsInteger(schema)){if(value.trim().length===0)return INVALID;let parsed=Number(value);return!Number.isFinite(parsed)||IsInteger(schema)&&!Number.isInteger(parsed)?INVALID:{ok:!0,value:parsed}}if(IsBoolean(schema))return value==="true"?{ok:!0,value:!0}:value==="false"?{ok:!0,value:!1}:INVALID;if(IsArray(schema)){let parsed=tryParseJson(value);return parsed.ok&&Array.isArray(parsed.value)?parsed:INVALID}if(IsObject(schema)){let parsed=tryParseJson(value);return parsed.ok&&isJsonObject(parsed.value)?parsed:INVALID}return{ok:!0,value:coerceUnknownValue(rawValue)}}function coerceUnknownValue(rawValue){let value=decodeXmlEntities(rawValue),parsed=tryParseJson(value);return parsed.ok?parsed.value:value}function tryParseJson(value){try{return{ok:!0,value:JSON.parse(value)}}catch(error){if(error instanceof SyntaxError)return INVALID;throw error}}function isJsonObject(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function passesToolValidation(tool,argumentsRecord){return value_exports.Check(tool.parameters,argumentsRecord)}var BROKEN_UNICODE_ESCAPE=/\\u(?![0-9a-fA-F]{4})/g,LONE_SURROGATE=/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/g;function isEscapedBackslashRun(text,backslashIndex){let precedingBackslashes=0;for(let index=backslashIndex-1;index>=0&&text[index]==="\\";index-=1)precedingBackslashes+=1;return precedingBackslashes%2===1}function repairUnicodeEscapes(json){return json.replace(BROKEN_UNICODE_ESCAPE,(match,offset)=>isEscapedBackslashRun(json,offset)?match:"\\\\u")}function repairLoneSurrogates(value){return value.replace(LONE_SURROGATE,"\uFFFD")}function repairStringsDeep(value){if(typeof value=="string")return repairLoneSurrogates(value);if(Array.isArray(value))return value.map(entry=>repairStringsDeep(entry));if(typeof value=="object"&&value!==null){let repaired={};for(let[key,entry]of Object.entries(value))Object.defineProperty(repaired,repairLoneSurrogates(key),{configurable:!0,enumerable:!0,value:repairStringsDeep(entry),writable:!0});return repaired}return value}var INVALID2={ok:!1},ALIAS_GROUPS=[["file_path","path","filename","file"],["old_string","old_str","old_text"],["new_string","new_str","new_text"],["command","cmd"]];function normalizeName(name){return name.toLowerCase().replace(/[^a-z0-9]/g,"")}var ALIAS_LOOKUP=new Map(ALIAS_GROUPS.flatMap(group=>group.map(name=>[normalizeName(name),group])));function setOwn(record,key,value){Object.defineProperty(record,key,{configurable:!0,enumerable:!0,value,writable:!0})}function resolvePropertyName(rawName,properties){if(Object.hasOwn(properties,rawName))return rawName;let normalized=normalizeName(rawName),byNormalized=Object.keys(properties).filter(property=>normalizeName(property)===normalized);if(byNormalized.length===1)return byNormalized[0];if(byNormalized.length>1)return;let aliasGroup=ALIAS_LOOKUP.get(normalized);if(!aliasGroup)return;let byAlias=Object.keys(properties).filter(property=>{let propertyNormalized=normalizeName(property);return propertyNormalized!==normalized&&aliasGroup.some(alias=>normalizeName(alias)===propertyNormalized)});return byAlias.length===1?byAlias[0]:void 0}function getAdditionalPropertiesSchema(schema){let additional=schema.additionalProperties;if(additional===!0)return!0;if(typeof additional=="object"&&additional!==null)return additional}function filterUnknownKeysDeep(value,schema){if(IsArray(schema)&&Array.isArray(value)&&schema.items!==void 0&&!Array.isArray(schema.items))return value.map(entry=>filterUnknownKeysDeep(entry,schema.items));if(IsObject(schema)&&typeof value=="object"&&value!==null&&!Array.isArray(value)){let properties=schema.properties??{},additional=getAdditionalPropertiesSchema(schema),filtered={};for(let[rawKey,entry]of Object.entries(value)){let propertyName=resolvePropertyName(rawKey,properties);if(propertyName!==void 0){let propertySchema=properties[propertyName];setOwn(filtered,propertyName,propertySchema?filterUnknownKeysDeep(entry,propertySchema):entry);continue}additional===!0?setOwn(filtered,rawKey,entry):additional!==void 0&&setOwn(filtered,rawKey,filterUnknownKeysDeep(entry,additional))}return filtered}return value}function tryParseJsonTolerant(value){for(let candidate of[value,repairUnicodeEscapes(value)])try{return{ok:!0,value:repairStringsDeep(JSON.parse(candidate))}}catch(error){if(!(error instanceof SyntaxError))throw error}return INVALID2}function unwrapJsonScalar(value){let parsed=tryParseJsonTolerant(value.trim());return parsed.ok&&(typeof parsed.value=="string"||typeof parsed.value=="number")?String(parsed.value):value}function coerceKnownValue2(rawValue,schema){let value=decodeXmlEntities(rawValue);if(IsString(schema))return{ok:!0,value:repairLoneSurrogates(value)};if(IsNumber(schema)||IsInteger(schema)){let candidate=unwrapJsonScalar(value).trim();if(candidate.length===0)return INVALID2;let parsed=Number(candidate);return!Number.isFinite(parsed)||IsInteger(schema)&&!Number.isInteger(parsed)?INVALID2:{ok:!0,value:parsed}}if(IsBoolean(schema)){let candidate=unwrapJsonScalar(value).trim().toLowerCase();return candidate==="true"?{ok:!0,value:!0}:candidate==="false"?{ok:!0,value:!1}:INVALID2}if(IsArray(schema)){let parsed=tryParseJsonTolerant(value);return parsed.ok&&Array.isArray(parsed.value)?{ok:!0,value:filterUnknownKeysDeep(parsed.value,schema)}:INVALID2}if(IsObject(schema)){let parsed=tryParseJsonTolerant(value);return parsed.ok&&typeof parsed.value=="object"&&parsed.value!==null&&!Array.isArray(parsed.value)?{ok:!0,value:filterUnknownKeysDeep(parsed.value,schema)}:INVALID2}return{ok:!0,value:coerceUnknownValue2(rawValue)}}function coerceUnknownValue2(rawValue){let value=decodeXmlEntities(rawValue),parsed=tryParseJsonTolerant(value);return parsed.ok?parsed.value:repairLoneSurrogates(value)}function coerceAntmlParameters(rawParams,tool){if(!IsObject(tool.parameters))return null;let properties=tool.parameters.properties??{},additional=getAdditionalPropertiesSchema(tool.parameters),argumentsRecord={};for(let rawParam of rawParams){let rawValue=trimRawBoundaryNewlines(rawParam.rawValue),propertyName=resolvePropertyName(rawParam.name,properties);if(propertyName===void 0){if(additional===void 0)continue;let result2=additional===!0?{ok:!0,value:coerceUnknownValue2(rawValue)}:coerceKnownValue2(rawValue,additional);result2.ok&&setOwn(argumentsRecord,rawParam.name,result2.value);continue}let propertySchema=properties[propertyName];if(propertySchema===void 0)continue;let result=coerceKnownValue2(rawValue,propertySchema);if(!result.ok)return null;setOwn(argumentsRecord,propertyName,result.value)}return value_exports.Check(tool.parameters,argumentsRecord)?argumentsRecord:null}var antmlInvokeConfig={protocol:"antml",label:"antml",idPrefix:"antml-tool",coerce:coerceAntmlParameters};var MISSING_ANGLE_INVOKE_PREFIX="antml:invoke",STRAY_FUNCTION_RESULTS_CLOSE="</function_results>",MAX_MISSING_ANGLE_OPENING_LENGTH=128;function isOpeningBoundary(character){return character.length===0||!["<","/"].includes(character)&&!/[A-Za-z0-9_]/u.test(character)}function createAntmlInvokeRecoveryStreamParser(tools,options){let inner=createInvokeRecoveryStreamParser(tools,antmlInvokeConfig,options),pending={kind:"none"},previousCharacter="",activeMissingAngleInvoke=!1,syntheticAnglePending=!1;function collectEvents(events,innerEvents){for(let event of innerEvents){if(syntheticAnglePending&&event.type==="text"&&event.text.startsWith(`<${MISSING_ANGLE_INVOKE_PREFIX}`)){syntheticAnglePending=!1;let text=event.text.slice(1);text.length>0&&events.push({type:"text",text});continue}syntheticAnglePending&&event.type==="toolcall_start"&&(syntheticAnglePending=!1,activeMissingAngleInvoke=!0),activeMissingAngleInvoke&&event.type==="toolcall_end"&&(activeMissingAngleInvoke=!1,event.incomplete||(pending={kind:"trailer",value:""})),events.push(event)}}function collectInner(events,input,syntheticAngle=!1){syntheticAnglePending=syntheticAnglePending||syntheticAngle,collectEvents(events,inner.feed(input))}function flushPending(events){if(pending.kind==="none")return;let value=pending.value;pending={kind:"none"},collectInner(events,value)}function feedCharacter(events,character,openingBoundary){if(pending.kind==="trailer"){pending.value+=character;let candidate=pending.value.trimStart();if(candidate.length===0||STRAY_FUNCTION_RESULTS_CLOSE.startsWith(candidate)){candidate===STRAY_FUNCTION_RESULTS_CLOSE?pending={kind:"none"}:pending.value.length>=MAX_MISSING_ANGLE_OPENING_LENGTH&&flushPending(events);return}let leadingWhitespace=pending.value.slice(0,pending.value.length-candidate.length);pending={kind:"none"},collectInner(events,leadingWhitespace),character==="a"&&openingBoundary?pending={kind:"opening",value:character}:collectInner(events,candidate);return}if(pending.kind==="opening"){if(pending.value+=character,pending.value.length<=MISSING_ANGLE_INVOKE_PREFIX.length&&!MISSING_ANGLE_INVOKE_PREFIX.startsWith(pending.value)){flushPending(events);return}if(pending.value.length>MISSING_ANGLE_INVOKE_PREFIX.length&&character===">"){let opening=pending.value;pending={kind:"none"},collectInner(events,`<${opening}`,!0);return}pending.value.length>=MAX_MISSING_ANGLE_OPENING_LENGTH&&flushPending(events);return}if(character==="a"&&openingBoundary){pending={kind:"opening",value:character};return}collectInner(events,character)}return{feed(textDelta){let events=[];for(let character of textDelta){let openingBoundary=isOpeningBoundary(previousCharacter);previousCharacter=character,feedCharacter(events,character,openingBoundary)}return events},interrupt(){let events=[];return flushPending(events),collectEvents(events,inner.interrupt()),previousCharacter="",events},finish(){let events=[];return flushPending(events),collectEvents(events,inner.finish()),events}}}var RecoveryContentLifecycle=class{constructor(){this.active=null,this.lastEndedInnerIndex=-1}canStart(innerIndex){return this.active===null&&innerIndex>this.lastEndedInnerIndex}start(innerIndex,kind){this.active={innerIndex,kind}}isActive(innerIndex,kind){return this.active?.innerIndex===innerIndex&&this.active.kind===kind}end(innerIndex,kind){return this.isActive(innerIndex,kind)?(this.active=null,this.lastEndedInnerIndex=innerIndex,!0):!1}};function isPlainObject(value){let prototype=Object.getPrototypeOf(value);return prototype===Object.prototype||prototype===null}function clonePlainGraph(value,seen){if(typeof value!="object"||value===null)return value;let existing=seen.get(value);if(existing!==void 0)return existing;if(Array.isArray(value)){let clone2=new Array(value.length);seen.set(value,clone2);for(let key of Object.keys(value))Object.defineProperty(clone2,key,{value:clonePlainGraph(Reflect.get(value,key),seen),writable:!0,enumerable:!0,configurable:!0});return clone2}if(!isPlainObject(value))return value;let clone=Object.create(Object.getPrototypeOf(value));seen.set(value,clone);let enumerableSymbols=Object.getOwnPropertySymbols(value).filter(key=>Object.prototype.propertyIsEnumerable.call(value,key));for(let key of[...Object.keys(value),...enumerableSymbols])Object.defineProperty(clone,key,{value:clonePlainGraph(Reflect.get(value,key),seen),writable:!0,enumerable:!0,configurable:!0});return clone}function removeToolScratch(toolCall){delete toolCall.partialJson}function sanitizeMessage(message){for(let block of message.content)block.type==="toolCall"&&removeToolScratch(block)}function snapshotRecoveryEvent(event){let snapshot=clonePlainGraph(event,new WeakMap);return snapshot.type==="done"?sanitizeMessage(snapshot.message):snapshot.type==="error"?sanitizeMessage(snapshot.error):(sanitizeMessage(snapshot.partial),snapshot.type==="toolcall_end"&&removeToolScratch(snapshot.toolCall)),snapshot}var RecoveryAssistantMessageEventStream=class extends AssistantMessageEventStream{constructor(){super({captureBlocks:!0}),this.sourceClosed=!1,this.relayed=!1,setAssistantReader(this,project=>this.withCancellation(this.mapIterator(project)))}setCancellationHandler(handler){this.cancellationHandler=handler}markSourceClosed(){return this.cancellationPromise?!1:(this.sourceClosed=!0,!0)}relaying(source,project){this.relaySource=source,this.relayed=!1;try{return project()}finally{this.relaySource=void 0}}push(event,hint){let source=this.relaySource,relay=hint;source?.type===event.type&&(relay={...hint,carried:this.relayed?null:getAssistantCapture(source)??null},this.relayed=!0),super.push(carryAssistantCapture(event,snapshotRecoveryEvent(event)),relay)}[Symbol.asyncIterator](){return this.withCancellation(super[Symbol.asyncIterator]())}withCancellation(iterator){return{next:()=>iterator.next(),return:async()=>(this.sourceClosed||(this.cancellationPromise??=(async()=>{await this.cancellationHandler?.()})(),await this.cancellationPromise),{value:void 0,done:!0})}}};function cloneContentBlock(block){return block.type==="toolCall"?{...block,arguments:{...block.arguments}}:{...block}}function cloneToolCall(toolCall){return{...toolCall,arguments:{...toolCall.arguments}}}var RecoveryNativeProjection=class{constructor(stream,message,protocol="antml"){this.rangesByInnerIndex=new Map,this.copiedInnerIndexes=new Set,this.pendingProgress=new Map,this.nativeLifecycleByInnerIndex=new Map,this.reservedIds=new Set,this.recoveredIds=new Set,this.recoveredIdByParserIndex=new Map,this.highestProjectedInnerIndex=-1,this.nextRecoveredId=0,this.stream=stream,this.message=message,this.recoveredIdPrefix=`recovered-${protocol}-`}reserveVisibleIds(source){for(let block of source.content)block.type==="toolCall"&&this.reservedIds.add(block.id)}synchronizeLower(source,contentIndex){for(let innerIndex=0;innerIndex<contentIndex&&innerIndex<source.content.length;innerIndex+=1)if(!this.rangesByInnerIndex.has(innerIndex)&&!this.appendUnannounced(source,innerIndex))return!1;return!0}synchronizeRemaining(source){for(let innerIndex=0;innerIndex<source.content.length;innerIndex+=1)if(!this.rangesByInnerIndex.has(innerIndex)&&!this.appendUnannounced(source,innerIndex))return!1;return!0}startText(innerIndex,outerIndex){return!!this.recordRange(innerIndex,{start:outerIndex,end:this.message.content.length},!1)}recordProjectedBlock(innerIndex,outerIndex){return this.recordRange(innerIndex,{start:outerIndex,end:outerIndex+1},!0)}relayProgress(progress){let range=this.rangesByInnerIndex.get(progress.contentIndex);if(!range){let pending=this.pendingProgress.get(progress.contentIndex);pending?pending.push(progress):this.pendingProgress.set(progress.contentIndex,[progress]);return}this.copiedInnerIndexes.has(progress.contentIndex)&&pushAssistantProgress(this.stream,range.start===progress.contentIndex?progress:Object.freeze({...progress,contentIndex:range.start}))}extendText(innerIndex){let range=this.rangesByInnerIndex.get(innerIndex);range&&(range.end=this.message.content.length)}projectNativeStart(source,innerIndex){if(this.nativeLifecycleByInnerIndex.has(innerIndex)||this.rangesByInnerIndex.has(innerIndex))return"invalid";let block=source.content[innerIndex];if(block?.type!=="toolCall"||innerIndex<=this.highestProjectedInnerIndex)return"invalid";if(this.recoveredIds.has(block.id))return"collision";this.reservedIds.add(block.id);let outerIndex=this.message.content.length;return this.message.content.push(cloneContentBlock(block)),this.nativeLifecycleByInnerIndex.set(innerIndex,"started"),this.stream.push({type:"toolcall_start",contentIndex:outerIndex,partial:this.message}),this.recordRange(innerIndex,{start:outerIndex,end:outerIndex+1},!0)?"projected":"invalid"}projectNativeDelta(source,innerIndex,delta){if(this.nativeLifecycleByInnerIndex.get(innerIndex)!=="started")return!1;let outerIndex=this.rangesByInnerIndex.get(innerIndex)?.start,block=source.content[innerIndex];return outerIndex==null||block?.type!=="toolCall"?!1:(this.message.content[outerIndex]=cloneContentBlock(block),this.stream.push({type:"toolcall_delta",contentIndex:outerIndex,delta,partial:this.message}),!0)}projectNativeEnd(innerIndex,toolCall){if(this.nativeLifecycleByInnerIndex.get(innerIndex)!=="started")return!1;let outerIndex=this.rangesByInnerIndex.get(innerIndex)?.start;if(outerIndex==null)return!1;let finalToolCall=cloneToolCall(toolCall);return this.message.content[outerIndex]=finalToolCall,this.nativeLifecycleByInnerIndex.set(innerIndex,"ended"),this.stream.push({type:"toolcall_end",contentIndex:outerIndex,toolCall:finalToolCall,partial:this.message}),!0}assignRecoveredIds(events){return events.map(event=>{if(event.type==="toolcall_start"){let id=this.allocateRecoveredId();return this.recoveredIdByParserIndex.set(event.index,id),{...event,id}}if(event.type==="toolcall_end"){let id=this.recoveredIdByParserIndex.get(event.index)??event.id;return this.recoveredIdByParserIndex.delete(event.index),{...event,id}}return event})}appendUnannounced(source,innerIndex){let block=source.content[innerIndex];if(!block||innerIndex<=this.highestProjectedInnerIndex||block.type==="toolCall"&&this.recoveredIds.has(block.id))return!1;let outerIndex=this.message.content.length;return this.message.content.push(cloneContentBlock(block)),this.recordRange(innerIndex,{start:outerIndex,end:outerIndex+1},!0)}recordRange(innerIndex,range,copiesSource){if(this.rangesByInnerIndex.has(innerIndex)||innerIndex<=this.highestProjectedInnerIndex)return!1;this.rangesByInnerIndex.set(innerIndex,range),this.highestProjectedInnerIndex=innerIndex,copiesSource&&this.copiedInnerIndexes.add(innerIndex);let pending=this.pendingProgress.get(innerIndex)??[];this.pendingProgress.delete(innerIndex);for(let progress of pending)this.relayProgress(progress);return!0}allocateRecoveredId(){for(;;){let id=`${this.recoveredIdPrefix}${this.nextRecoveredId}`;if(this.nextRecoveredId+=1,!this.reservedIds.has(id))return this.reservedIds.add(id),this.recoveredIds.add(id),id}}};function errorText(error){return error instanceof Error?error.message:String(error)}function removeToolCalls(message,removes=()=>!0){let from=message.content.findIndex((block,index)=>block.type==="toolCall"&&removes(index));if(!(from<0))return message.content=message.content.filter((block,index)=>block.type!=="toolCall"||!removes(index)),from}function supersededBoundary(message){return message.content.findLastIndex(block=>block.type==="providerNative"&&parseServerFallbackReceipt(block.raw)!==void 0)}function discardSupersededTools(message){let boundary=supersededBoundary(message);return removeToolCalls(message,index=>index<boundary)}function firstIndex(left,right){return left===void 0?right:right===void 0?left:Math.min(left,right)}function rewriteHint(rewrittenFrom){return rewrittenFrom===void 0?void 0:{rewrittenFrom}}var RecoveryStreamTerminal=class{constructor(stream){this.emitted=!1,this.stream=stream}done(projection,source,sawToolCall,reason){if(this.emitted)return;projection.finalizeDanglingToolCalls();let message=projection.finalize(source,sawToolCall),superseded=supersededBoundary(message)>=0,rewrittenFrom=discardSupersededTools(message),finalReason=(!superseded&&sawToolCall||message.content.some(block=>block.type==="toolCall"))&&(reason==="stop"||reason==="length")?"toolUse":reason;message.stopReason=finalReason,this.emit({type:"done",reason:finalReason,message},rewrittenFrom)}sourceError(projection,source,sawToolCall,reason){if(this.emitted)return;if(source.diagnostics?.some(entry=>entry.type===SERVER_FALLBACK_ABORTED_DIAGNOSTIC)){this.emit({type:"error",reason,error:source},0);return}let rewrittenFrom=discardSupersededTools(projection.message);projection.finalizeDanglingToolCalls();let message=projection.finalize(source,sawToolCall);if(reason==="aborted"){let aborted=removeToolCalls(message);message.stopReason="aborted",message.errorMessage??="Request was aborted",this.emit({type:"error",reason:"aborted",error:message},firstIndex(rewrittenFrom,aborted));return}if(projection.hasFinalizedToolCallContent()){message.stopReason="toolUse",this.emit({type:"done",reason:"toolUse",message},rewrittenFrom);return}message.stopReason="error",this.emit({type:"error",reason:"error",error:message},rewrittenFrom)}iteratorFailure(projection,error){if(this.emitted)return;if(!projection){this.emitted=!0,this.stream.fail(error);return}projection.finalizeDanglingToolCalls();let message=projection.finalize(projection.message,!1);message.stopReason="error",message.errorMessage=errorText(error)||"Assistant message stream failed",this.emit({type:"error",reason:"error",error:message})}exhausted(projection){if(this.emitted)return;if(!projection){this.iteratorFailure(null,new Error("Assistant message stream ended without a terminal event"));return}projection.finalizeDanglingToolCalls();let message=projection.finalize(projection.message,!1);message.stopReason="error",message.errorMessage="Assistant message stream ended without a terminal event",this.emit({type:"error",reason:"error",error:message})}cancelled(projection){if(this.emitted)return;if(!projection){this.iteratorFailure(null,new Error("Assistant message stream consumption was cancelled"));return}projection.finalizeDanglingToolCalls();let message=projection.finalize(projection.message,!1),rewrittenFrom=removeToolCalls(message);message.stopReason="error",message.errorMessage="Assistant message stream consumption was cancelled",this.emit({type:"error",reason:"error",error:message},rewrittenFrom)}emit(event,rewrittenFrom){this.emitted||(this.emitted=!0,this.stream.push(event,rewriteHint(rewrittenFrom)),this.stream.end())}};var failureDetails={collision:{diagnosticType:"text_tool_call_recovery_collision",errorMessage:"Tool call ID collision in provider stream",status:"collision"},invalid_content_event_order:{diagnosticType:"text_tool_call_recovery_invalid_content_event",errorMessage:"Invalid assistant content event order",status:"invalid_content_event_order"},invalid_native_event_order:{diagnosticType:"text_tool_call_recovery_invalid_native_event",errorMessage:"Invalid native tool call event order",status:"invalid_native_event_order"}};function terminateRecoveryStreamForFailure(stream,projection,options){let{source,failure,protocol}=options,details=failureDetails[failure];projection.sync(source);let message=projection.finalize(source,!1),rewrittenFrom=removeToolCalls(message);message.stopReason="error",message.errorMessage=details.errorMessage,message.diagnostics=[...source.diagnostics??[],{type:details.diagnosticType,timestamp:Date.now(),details:{protocol,status:details.status}}],stream.push({type:"error",reason:"error",error:message},rewriteHint(rewrittenFrom)),stream.end(message)}function appendRecoveryDiagnostic(projection,toolCall,protocol){projection.appendDiagnostic({type:"text_tool_call_recovery",timestamp:Date.now(),details:{protocol,toolName:toolCall.name,id:toolCall.id,status:toolCall.incomplete===!0?"incomplete":"complete"}})}var RecoveryTextProjection=class{constructor(tools,projection,nativeProjection,innerIndex,options={}){this.mask=createRecoveryCodeMask(),this.activeInvoke=!1,this.textBuffer="",this.sawToolCall=!1,this.finished=!1,this.projection=projection,this.nativeProjection=nativeProjection,this.innerIndex=innerIndex,this.parser=(options.createParser??createAntmlInvokeRecoveryStreamParser)(tools),this.protocol=options.protocol??"antml"}start(source){let outerIndex=this.projection.startText(this.innerIndex,source.content[this.innerIndex]);return this.nativeProjection.startText(this.innerIndex,outerIndex)}feed(text){for(let index=0;index<text.length;index+=1){let character=text.charAt(index),options=this.activeInvoke?{activeInvoke:!0}:void 0;for(let segment of this.mask.feed(character,options))this.processSegment(segment)}return this.flushText(),this.sawToolCall}finish(){if(this.finished)return this.sawToolCall;for(let segment of this.mask.finish())this.processSegment(segment);return this.projectParserEvents(this.parser.finish()),this.flushText(),this.projection.finishText(),this.nativeProjection.extendText(this.innerIndex),this.finished=!0,this.sawToolCall}processSegment(segment){segment.recoveryBoundary&&this.projectParserEvents(this.parser.interrupt()),segment.scan?this.projectParserEvents(this.parser.feed(segment.text)):this.textBuffer+=segment.text}projectParserEvents(events){for(let event of this.nativeProjection.assignRecoveredIds(events)){if(event.type==="text"){this.textBuffer+=event.text;continue}this.flushText();let result=this.projection.projectParserEvents([event]);if(this.sawToolCall=this.sawToolCall||result.sawToolCall,event.type==="toolcall_start"&&(this.activeInvoke=!0),event.type==="toolcall_end"){this.activeInvoke=!1;for(let toolCall of result.completedToolCalls)appendRecoveryDiagnostic(this.projection,toolCall,this.protocol)}}this.nativeProjection.extendText(this.innerIndex)}flushText(){this.textBuffer.length!==0&&(this.projection.projectParserEvents([{type:"text",text:this.textBuffer}]),this.textBuffer="")}};function cloneUsage(usage){return{...usage,cost:{...usage.cost}}}function cloneLegacyUsage(usage){let{cacheWrite1h:_cacheWrite1h,reasoning:_reasoning,...rest}=usage;return{...rest,cost:{...usage.cost}}}function cloneLegacyMessage(source,content){return{role:"assistant",api:source.api,provider:source.provider,model:source.model,responseId:source.responseId,content,usage:cloneLegacyUsage(source.usage),stopReason:source.stopReason,errorMessage:source.errorMessage,timestamp:source.timestamp}}function cloneAssistantMessageMetadata(source,content,projectedDiagnostics,preserveAll){if(!preserveAll)return cloneLegacyMessage(source,content);let message={...source,content,usage:cloneUsage(source.usage)},diagnostics=[...source.diagnostics??[],...projectedDiagnostics];return diagnostics.length>0?message.diagnostics=diagnostics:delete message.diagnostics,message}function syncAssistantMessageMetadata(target,source,projectedDiagnostics,preserveAll){if(!preserveAll){target.api=source.api,target.provider=source.provider,target.model=source.model,target.responseId=source.responseId,target.usage=cloneLegacyUsage(source.usage),target.stopReason=source.stopReason,target.errorMessage=source.errorMessage,target.timestamp=source.timestamp;return}let content=target.content,targetRecord=target;for(let key of Object.keys(targetRecord))delete targetRecord[key];Object.assign(targetRecord,cloneAssistantMessageMetadata(source,content,projectedDiagnostics,!0))}function cloneThinking(block,thinking=block.thinking){return{...block,thinking}}var StreamThinkingProjection=class{constructor(stream,message,preserveSourceMetadata){this.outerIndexByInnerIndex=new Map,this.stream=stream,this.message=message,this.preserveSourceMetadata=preserveSourceMetadata}start(innerIndex,source){let sourceBlock=source.content[innerIndex],block=this.preserveSourceMetadata&&sourceBlock?.type==="thinking"?cloneThinking(sourceBlock):{type:"thinking",thinking:""},outerIndex=this.message.content.length;return this.message.content.push(block),this.outerIndexByInnerIndex.set(innerIndex,outerIndex),this.stream.push({type:"thinking_start",contentIndex:outerIndex,partial:this.message}),outerIndex}delta(innerIndex,delta,source){let outerIndex=this.outerIndexByInnerIndex.get(innerIndex);if(outerIndex==null)return;let current=this.message.content[outerIndex];if(current?.type!=="thinking")return;let sourceBlock=source.content[innerIndex];this.message.content[outerIndex]=this.preserveSourceMetadata&&sourceBlock?.type==="thinking"?cloneThinking(sourceBlock):cloneThinking(current,current.thinking+delta),this.stream.push({type:"thinking_delta",contentIndex:outerIndex,delta,partial:this.message})}end(innerIndex,content,source){let outerIndex=this.outerIndexByInnerIndex.get(innerIndex);if(outerIndex==null)return;let current=this.message.content[outerIndex];if(current?.type!=="thinking")return;let sourceBlock=source.content[innerIndex];this.message.content[outerIndex]=this.preserveSourceMetadata&&sourceBlock?.type==="thinking"?cloneThinking(sourceBlock,content):cloneThinking(current,content),this.stream.push({type:"thinking_end",contentIndex:outerIndex,content,partial:this.message})}};function isPartialToolCall(block){return block?.type==="toolCall"&&"partialJson"in block&&typeof block.partialJson=="string"}function assertNever(value){throw new Error(`Unexpected parser event: ${JSON.stringify(value)}`)}var StreamMessageProjection=class{constructor(stream,source,options={}){this.currentInnerTextIndex=null,this.textBlockIndexByInnerIndex=new Map,this.lastTextBlockIndexByInnerIndex=new Map,this.toolCallIndexByParserIndex=new Map,this.projectedDiagnostics=[],this.stream=stream,this.source=source,this.preserveSourceMetadata=options.preserveSourceMetadata===!0,this.message=cloneAssistantMessageMetadata(source,[],this.projectedDiagnostics,this.preserveSourceMetadata),this.thinking=new StreamThinkingProjection(stream,this.message,this.preserveSourceMetadata)}sync(source){this.source=source,syncAssistantMessageMetadata(this.message,source,this.projectedDiagnostics,this.preserveSourceMetadata)}appendDiagnostic(diagnostic){this.projectedDiagnostics.push(diagnostic),syncAssistantMessageMetadata(this.message,this.source,this.projectedDiagnostics,this.preserveSourceMetadata)}startText(contentIndex,sourceBlock){this.currentInnerTextIndex=contentIndex;let outerIndex=this.message.content.length;if(this.preserveSourceMetadata){let block=sourceBlock?.type==="text"?{...sourceBlock,text:""}:{type:"text",text:""};this.message.content.push(block),this.textBlockIndexByInnerIndex.set(contentIndex,outerIndex),this.lastTextBlockIndexByInnerIndex.set(contentIndex,outerIndex)}else this.textBlockIndexByInnerIndex.set(contentIndex,null);return this.stream.push({type:"text_start",contentIndex:outerIndex,partial:this.message}),outerIndex}startThinking(contentIndex,source){return this.thinking.start(contentIndex,source)}projectThinkingDelta(contentIndex,delta,source){this.thinking.delta(contentIndex,delta,source)}finishThinking(contentIndex,content,source){this.thinking.end(contentIndex,content,source)}projectParserEvents(events){let sawToolCall=!1,completedToolCalls=[];for(let event of events)switch(event.type){case"text":this.pushText(event.text);break;case"toolcall_start":sawToolCall=!0,this.startToolCall(event);break;case"toolcall_delta":sawToolCall=!0,this.updateToolCall(event.index,event.argumentsDelta);break;case"toolcall_end":{sawToolCall=!0;let completed=this.endToolCall(event);completed&&completedToolCalls.push(completed);break}default:assertNever(event)}return{sawToolCall,completedToolCalls}}finishText(){let outerContentIndex=this.currentInnerTextIndex==null?null:this.textBlockIndexByInnerIndex.get(this.currentInnerTextIndex)??(this.preserveSourceMetadata?this.lastTextBlockIndexByInnerIndex.get(this.currentInnerTextIndex):null)??null;if(outerContentIndex!=null){let block=this.message.content[outerContentIndex];block?.type==="text"&&this.stream.push({type:"text_end",contentIndex:outerContentIndex,content:block.text,partial:this.message})}this.currentInnerTextIndex=null}finalizeDanglingToolCalls(){for(let[contentIndex,block]of this.message.content.entries()){if(!isPartialToolCall(block))continue;let finalToolCall={type:"toolCall",id:block.id,name:block.name,arguments:block.arguments,incomplete:!0,errorMessage:"Tool call stream ended before completion"};this.message.content[contentIndex]=finalToolCall;for(let[parserIndex,mappedContentIndex]of this.toolCallIndexByParserIndex)mappedContentIndex===contentIndex&&this.toolCallIndexByParserIndex.delete(parserIndex);this.stream.push({type:"toolcall_end",contentIndex,toolCall:finalToolCall,partial:this.message})}}finalize(doneMessage,sawToolCall){let finalMessage=cloneAssistantMessageMetadata(doneMessage,this.message.content,this.projectedDiagnostics,this.preserveSourceMetadata);return(sawToolCall||this.hasFinalizedToolCallContent())&&(finalMessage.stopReason==="stop"||finalMessage.stopReason==="length")&&(finalMessage.stopReason="toolUse"),finalMessage}hasFinalizedToolCallContent(){return this.message.content.some(block=>block.type==="toolCall"&&!isPartialToolCall(block))}pushText(text){if(this.currentInnerTextIndex==null)return;let contentIndex=this.textBlockIndexByInnerIndex.get(this.currentInnerTextIndex)??null;if(contentIndex==null)contentIndex=this.message.content.length,this.message.content.push({type:"text",text}),this.textBlockIndexByInnerIndex.set(this.currentInnerTextIndex,contentIndex),this.lastTextBlockIndexByInnerIndex.set(this.currentInnerTextIndex,contentIndex);else{let block=this.message.content[contentIndex];if(block?.type!=="text")return;block.text+=text}this.stream.push({type:"text_delta",contentIndex,delta:text,partial:this.message})}startToolCall(event){if(this.currentInnerTextIndex!=null){let textIndex=this.textBlockIndexByInnerIndex.get(this.currentInnerTextIndex),block=textIndex==null?void 0:this.message.content[textIndex];textIndex===this.message.content.length-1&&block?.type==="text"&&block.text.length===0&&block.textSignature===void 0&&this.message.content.pop()}let contentIndex=this.message.content.length,toolCall={type:"toolCall",id:event.id,name:event.name,arguments:{},partialJson:""};this.message.content.push(toolCall),this.toolCallIndexByParserIndex.set(event.index,contentIndex),this.currentInnerTextIndex!=null&&this.textBlockIndexByInnerIndex.set(this.currentInnerTextIndex,null),this.stream.push({type:"toolcall_start",contentIndex,partial:this.message})}updateToolCall(parserIndex,delta){let contentIndex=this.toolCallIndexByParserIndex.get(parserIndex);if(contentIndex==null)return;let block=this.message.content[contentIndex];isPartialToolCall(block)&&(block.partialJson+=delta,block.arguments=parseStreamingJson(block.partialJson),this.stream.push({type:"toolcall_delta",contentIndex,delta,partial:this.message}))}endToolCall(event){let contentIndex=this.toolCallIndexByParserIndex.get(event.index);if(contentIndex==null)return;let finalToolCall={type:"toolCall",id:event.id,name:event.name,arguments:event.arguments,...event.incomplete===!0?{incomplete:!0}:{},...event.errorMessage===void 0?{}:{errorMessage:event.errorMessage}};return this.message.content[contentIndex]=finalToolCall,this.toolCallIndexByParserIndex.delete(event.index),this.stream.push({type:"toolcall_end",contentIndex,toolCall:finalToolCall,partial:this.message}),finalToolCall}};function wrapStreamWithInvokeRecovery(innerStream,tools,options={}){let outerStream=new RecoveryAssistantMessageEventStream,resolvedOptions=typeof options=="function"?{createParser:options}:options,createParser=resolvedOptions.createParser??createAntmlInvokeRecoveryStreamParser,protocol=resolvedOptions.protocol??"antml";return(async()=>{let projection=null,nativeProjection=null,textProjection=null,sawToolCall=!1,cancellationRequested=!1,innerIterator=assistantEvents(innerStream,progress=>{cancellationRequested||nativeProjection?.relayProgress(progress)})[Symbol.asyncIterator](),innerEvents={[Symbol.asyncIterator]:()=>innerIterator},contentLifecycle=new RecoveryContentLifecycle,terminal=new RecoveryStreamTerminal(outerStream),finishText=()=>{textProjection&&(sawToolCall=textProjection.finish()||sawToolCall,textProjection=null)};outerStream.setCancellationHandler(async()=>{cancellationRequested=!0;try{await innerIterator.return?.(),finishText(),terminal.cancelled(projection)}catch(error){throw finishText(),terminal.iteratorFailure(projection,error),error}});let terminateForFailure=(source,failure)=>{!projection||!outerStream.markSourceClosed()||(finishText(),terminateRecoveryStreamForFailure(outerStream,projection,{source,failure,protocol}))},prepareContentEvent=(source,contentIndex)=>!projection||!nativeProjection?!1:!Number.isSafeInteger(contentIndex)||contentIndex<0||contentIndex>=source.content.length?(terminateForFailure(source,"invalid_native_event_order"),!1):(projection.sync(source),nativeProjection.reserveVisibleIds(source),nativeProjection.synchronizeLower(source,contentIndex)?!0:(terminateForFailure(source,"collision"),!1)),canStart=(source,contentIndex,kind,failure="invalid_content_event_order")=>{if(!Number.isSafeInteger(contentIndex)||contentIndex<0||contentIndex>=source.content.length)return terminateForFailure(source,failure),!1;let block=source.content[contentIndex];return(kind==="text"&&block?.type==="text"||kind==="thinking"&&block?.type==="thinking"||kind==="toolCall"&&block?.type==="toolCall")&&contentLifecycle.canStart(contentIndex)?!0:(terminateForFailure(source,failure),!1)},isActive=(source,contentIndex,kind,failure="invalid_content_event_order")=>contentLifecycle.isActive(contentIndex,kind)?!0:(terminateForFailure(source,failure),!1),synchronizeTerminal=source=>(projection??=new StreamMessageProjection(outerStream,source,{preserveSourceMetadata:!0}),nativeProjection??=new RecoveryNativeProjection(outerStream,projection.message,protocol),projection.sync(source),nativeProjection.reserveVisibleIds(source),finishText(),nativeProjection.synchronizeRemaining(source)?!0:(terminateForFailure(source,"collision"),!1));try{for await(let event of innerEvents)if(!cancellationRequested)switch(event.type){case"start":projection=new StreamMessageProjection(outerStream,event.partial,{preserveSourceMetadata:!0}),nativeProjection=new RecoveryNativeProjection(outerStream,projection.message,protocol),nativeProjection.reserveVisibleIds(event.partial),outerStream.push({type:"start",partial:projection.message});break;case"text_start":{if(!canStart(event.partial,event.contentIndex,"text")||!prepareContentEvent(event.partial,event.contentIndex)||!projection||!nativeProjection)return;let nextText=new RecoveryTextProjection(tools,projection,nativeProjection,event.contentIndex,{createParser,protocol});if(!nextText.start(event.partial)){terminateForFailure(event.partial,"invalid_native_event_order");return}textProjection=nextText,contentLifecycle.start(event.contentIndex,"text");break}case"text_delta":if(!isActive(event.partial,event.contentIndex,"text")||!prepareContentEvent(event.partial,event.contentIndex)||!textProjection)return;sawToolCall=textProjection.feed(event.delta)||sawToolCall;break;case"text_end":if(!isActive(event.partial,event.contentIndex,"text")||!prepareContentEvent(event.partial,event.contentIndex))return;finishText(),contentLifecycle.end(event.contentIndex,"text");break;case"done":if(!synchronizeTerminal(event.message)||!projection||!outerStream.markSourceClosed())return;if(event.reason==="deferred"){outerStream.push(event),outerStream.end(event.message);return}terminal.done(projection,event.message,sawToolCall,event.reason);return;case"error":if(!projection){if(!outerStream.markSourceClosed())return;outerStream.push(event),outerStream.end();return}if(!synchronizeTerminal(event.error)||!outerStream.markSourceClosed())return;terminal.sourceError(projection,event.error,sawToolCall,event.reason);return;case"toolcall_start":{if(!canStart(event.partial,event.contentIndex,"toolCall","invalid_native_event_order")||!prepareContentEvent(event.partial,event.contentIndex)||!nativeProjection)return;let native=nativeProjection,status=outerStream.relaying(event,()=>native.projectNativeStart(event.partial,event.contentIndex));if(status!=="projected"){terminateForFailure(event.partial,status==="collision"?"collision":"invalid_native_event_order");return}contentLifecycle.start(event.contentIndex,"toolCall"),sawToolCall=!0;break}case"toolcall_delta":{if(!isActive(event.partial,event.contentIndex,"toolCall","invalid_native_event_order")||!prepareContentEvent(event.partial,event.contentIndex)||!nativeProjection)return;let native=nativeProjection;if(!outerStream.relaying(event,()=>native.projectNativeDelta(event.partial,event.contentIndex,event.delta))){terminateForFailure(event.partial,"invalid_native_event_order");return}break}case"toolcall_end":{if(!isActive(event.partial,event.contentIndex,"toolCall","invalid_native_event_order")||!prepareContentEvent(event.partial,event.contentIndex)||!nativeProjection)return;let native=nativeProjection;if(!outerStream.relaying(event,()=>native.projectNativeEnd(event.contentIndex,event.toolCall))){terminateForFailure(event.partial,"invalid_native_event_order");return}contentLifecycle.end(event.contentIndex,"toolCall"),sawToolCall=!0;break}case"thinking_start":{if(!canStart(event.partial,event.contentIndex,"thinking")||!prepareContentEvent(event.partial,event.contentIndex)||!projection||!nativeProjection)return;let thinking=projection,outerIndex=outerStream.relaying(event,()=>thinking.startThinking(event.contentIndex,event.partial));if(!nativeProjection.recordProjectedBlock(event.contentIndex,outerIndex)){terminateForFailure(event.partial,"invalid_native_event_order");return}contentLifecycle.start(event.contentIndex,"thinking");break}case"thinking_delta":{if(!isActive(event.partial,event.contentIndex,"thinking")||!prepareContentEvent(event.partial,event.contentIndex)||!projection)return;let thinking=projection;outerStream.relaying(event,()=>thinking.projectThinkingDelta(event.contentIndex,event.delta,event.partial));break}case"thinking_end":{if(!isActive(event.partial,event.contentIndex,"thinking")||!prepareContentEvent(event.partial,event.contentIndex)||!projection)return;let thinking=projection;outerStream.relaying(event,()=>thinking.finishThinking(event.contentIndex,event.content,event.partial)),contentLifecycle.end(event.contentIndex,"thinking");break}}if(cancellationRequested||!outerStream.markSourceClosed())return;finishText(),terminal.exhausted(projection)}catch(error){if(cancellationRequested||!outerStream.markSourceClosed())return;finishText(),terminal.iteratorFailure(projection,error)}})(),outerStream}function serializeToolValue(value){return typeof value=="object"&&value!==null?JSON.stringify(value)??"null":String(value)}function renderToolDefinitions(tools){return JSON.stringify(tools.map(tool=>({name:tool.name,description:tool.description,parameters:tool.parameters}))).replace(/</g,"\\u003c").replace(/>/g,"\\u003e").replace(/&/g,"\\u0026")}function anthropicXmlFormatToolsSystemPrompt(tools){return tools.length===0?"":`# Tools
155
155
 
156
156
  You may call one or more functions to assist with the user query.
157
157
 
@@ -325,4 +325,4 @@ ${yamlBody.length>0?yamlBody:"null"}
325
325
  `).map(line=>` ${line}`),"</tool_response>"].join(`
326
326
  `)}function parseYamlXmlGeneratedText(text,tools,options){if(tools.length===0||text.length===0)return[];let parsedToolCalls=[],toolNames=tools.map(tool=>tool.name),cursor=0;for(;cursor<text.length;){let openingTag=findEarliestXmlToolTag(text.slice(cursor),toolNames);if(!openingTag)break;let absoluteIndex=cursor+openingTag.index;if(openingTag.selfClosing){parsedToolCalls.push({name:openingTag.name,arguments:{}}),cursor=absoluteIndex+openingTag.tag.length;continue}let contentStart=absoluteIndex+openingTag.tag.length,closingTagEnd=findClosingTagEnd(text,contentStart,openingTag.name);if(closingTagEnd===-1)break;let closingTagText=text.slice(contentStart,closingTagEnd),closingTagIndex=new RegExp(`</\\s*${escapeRegExp4(openingTag.name)}\\s*>`).exec(closingTagText)?.index;if(closingTagIndex===void 0){cursor=closingTagEnd;continue}let yamlContent=closingTagText.slice(0,closingTagIndex),parsedArguments=parseYamlMapping(yamlContent);parsedArguments!==null?parsedToolCalls.push({name:openingTag.name,arguments:parsedArguments}):options?.onError?.("Could not process YAML XML tool call, keeping original text.",{toolCall:text.slice(absoluteIndex,closingTagEnd)}),cursor=closingTagEnd}return parsedToolCalls}function createYamlXmlStreamParser(tools,options){let toolNames=tools.map(tool=>tool.name),buffer="",currentToolState=null,nextToolCallIndex=0;function emitSnapshot(events,yamlContent){if(!currentToolState)return;let parsedArguments=parseYamlMapping(yamlContent);if(parsedArguments===null)return;let snapshot=JSON.stringify(parsedArguments);snapshot==="{}"||snapshot===currentToolState.lastArgumentsSnapshot||(currentToolState.lastArgumentsSnapshot===null&&events.push({type:"toolcall_start",index:currentToolState.index,name:currentToolState.name,id:currentToolState.id}),currentToolState.lastArgumentsSnapshot=snapshot,events.push({type:"toolcall_delta",index:currentToolState.index,argumentsDelta:snapshot}))}function processBuffer(){let events=[];for(;buffer.length>0;){if(currentToolState){let closingTagMatch=new RegExp(`</\\s*${escapeRegExp4(currentToolState.name)}\\s*>`).exec(buffer);if(!closingTagMatch||closingTagMatch.index===void 0){emitSnapshot(events,buffer);break}let yamlContent=buffer.slice(0,closingTagMatch.index),originalCallText=`<${currentToolState.name}>${yamlContent}${closingTagMatch[0]}`,parsedArguments=parseYamlMapping(yamlContent);if(buffer=buffer.slice(closingTagMatch.index+closingTagMatch[0].length),parsedArguments===null){options?.onError?.("Could not process YAML XML tool call, keeping original text.",{toolCall:originalCallText}),currentToolState.lastArgumentsSnapshot!==null&&events.push({type:"toolcall_end",index:currentToolState.index,name:currentToolState.name,id:currentToolState.id,arguments:{},incomplete:!0,errorMessage:"Tool call arguments could not be parsed"}),shouldEmitRawToolCallTextOnError4(options)&&events.push({type:"text",text:originalCallText}),currentToolState=null;continue}emitSnapshot(events,yamlContent),currentToolState.lastArgumentsSnapshot===null&&events.push({type:"toolcall_start",index:currentToolState.index,name:currentToolState.name,id:currentToolState.id}),events.push({type:"toolcall_end",index:currentToolState.index,name:currentToolState.name,id:currentToolState.id,arguments:parsedArguments}),currentToolState=null;continue}let openingTag=findEarliestXmlToolTag(buffer,toolNames);if(!openingTag){let textLength=getSafeXmlTextLength(buffer,toolNames);if(textLength===0)break;events.push({type:"text",text:buffer.slice(0,textLength)}),buffer=buffer.slice(textLength);continue}if(openingTag.index>0&&events.push({type:"text",text:buffer.slice(0,openingTag.index)}),buffer=buffer.slice(openingTag.index+openingTag.tag.length),openingTag.selfClosing){let id=`yaml-xml-tool-${nextToolCallIndex}`,index=nextToolCallIndex;nextToolCallIndex+=1,events.push({type:"toolcall_start",index,name:openingTag.name,id}),events.push({type:"toolcall_end",index,name:openingTag.name,id,arguments:{}});continue}currentToolState={id:`yaml-xml-tool-${nextToolCallIndex}`,index:nextToolCallIndex,name:openingTag.name,lastArgumentsSnapshot:null},nextToolCallIndex+=1}return events}return{feed(textDelta){return textDelta.length===0?[]:(buffer+=textDelta,processBuffer())},finish(){let events=processBuffer();if(!currentToolState&&buffer.length>0&&(events.push({type:"text",text:buffer}),buffer=""),currentToolState){let state=currentToolState,parsedArguments=parseYamlMapping(buffer),tool=tools.find(candidate=>candidate.name===state.name),validatedArguments=null;if(parsedArguments!==null&&tool)try{validatedArguments=validateToolArguments(tool,{type:"toolCall",id:state.id,name:state.name,arguments:parsedArguments})}catch{validatedArguments=null}validatedArguments!==null?(emitSnapshot(events,buffer),state.lastArgumentsSnapshot===null&&events.push({type:"toolcall_start",index:state.index,name:state.name,id:state.id}),events.push({type:"toolcall_end",index:state.index,name:state.name,id:state.id,arguments:validatedArguments})):(state.lastArgumentsSnapshot===null&&events.push({type:"toolcall_start",index:state.index,name:state.name,id:state.id}),events.push({type:"toolcall_end",index:state.index,name:state.name,id:state.id,arguments:parsedArguments??{},incomplete:!0,errorMessage:"Tool call was truncated mid-arguments"}),options?.onError?.("Could not complete streaming YAML XML tool call at finish.",{protocol:"yaml-xml",retainedLength:buffer.length})),buffer="",currentToolState=null}return events}}}var hermesProtocol={formatToolsSystemPrompt:hermesFormatToolsSystemPrompt,formatToolResponse:hermesFormatToolResponse,formatToolCall:hermesFormatToolCall,parseGeneratedText:hermesParseGeneratedText,createStreamParser:hermesCreateStreamParser},morphXmlProtocol={formatToolsSystemPrompt:morphXmlFormatToolsSystemPrompt,formatToolResponse:morphXmlFormatToolResponse,formatToolCall:morphXmlFormatToolCall,parseGeneratedText:parseMorphXmlGeneratedText,createStreamParser:createMorphXmlStreamParser},yamlXmlProtocol={formatToolsSystemPrompt:yamlXmlFormatToolsSystemPrompt,formatToolResponse:yamlXmlFormatToolResponse,formatToolCall:yamlXmlFormatToolCall,parseGeneratedText:parseYamlXmlGeneratedText,createStreamParser:createYamlXmlStreamParser},gemma4Protocol={formatToolsSystemPrompt:gemma4FormatToolsSystemPrompt,formatToolResponse:gemma4FormatToolResponse,formatToolCall:gemma4FormatToolCall,parseGeneratedText:gemma4ParseGeneratedText,createStreamParser:gemma4CreateStreamParser},antmlProtocol={formatToolsSystemPrompt:antmlFormatToolsSystemPrompt,formatToolResponse:antmlFormatToolResponse,formatToolCall:antmlFormatToolCall,parseGeneratedText:parseAntmlGeneratedText,createStreamParser:createAntmlStreamParser},kimiXtmlProtocol={formatToolsSystemPrompt:kimiXtmlFormatToolsSystemPrompt,formatToolResponse:kimiXtmlFormatToolResponse,formatToolCall:kimiXtmlFormatToolCall,parseGeneratedText:parseKimiXtmlGeneratedText,createStreamParser:createKimiXtmlStreamParser},anthropicXmlProtocol={formatToolsSystemPrompt:anthropicXmlFormatToolsSystemPrompt,formatToolResponse:anthropicXmlFormatToolResponse,formatToolCall:anthropicXmlFormatToolCall,parseGeneratedText:parseAnthropicXmlGeneratedText,createStreamParser:createAnthropicXmlStreamParser},protocolRegistry={"anthropic-xml":anthropicXmlProtocol,antml:antmlProtocol,hermes:hermesProtocol,xml:morphXmlProtocol,"morph-xml":morphXmlProtocol,"yaml-xml":yamlXmlProtocol,"gemma4-delimiter":gemma4Protocol,"kimi-xtml":kimiXtmlProtocol};function getProtocol(format){let protocol=protocolRegistry[format];if(!protocol)throw new Error(`Unsupported tool call format: ${format}`);return protocol}function transformContext(context,protocol){let transcript=normalizeContext(context),tools=getCurrentTools(transcript.messages),toolPrompt=tools.length>0?protocol.formatToolsSystemPrompt(tools):"",initial=getInitialSystemMessage(transcript.messages),head=initial?withoutToolDeclarations(initial):void 0,messages=[];if(toolPrompt){let leading=head??{role:"system",content:"",timestamp:0},basePrompt=contentText(leading.content);messages.push({...leading,content:basePrompt?`${toolPrompt}
327
327
 
328
- ${basePrompt}`:toolPrompt})}else head&&hasSystemContent(head)&&messages.push(head);for(let message of initial?transcript.messages.slice(1):transcript.messages){if(message.role==="system"){let stripped=withoutToolDeclarations(message);hasSystemContent(stripped)&&messages.push(stripped);continue}messages.push(transformMessage(message,protocol))}return{messages}}function withoutToolDeclarations(message){return{role:"system",content:message.content,...message.sections?{sections:message.sections}:{},timestamp:message.timestamp}}function hasSystemContent(message){return contentText(message.content).length>0||Object.keys(message.sections??{}).length>0}function transformMessage(message,protocol){switch(message.role){case"assistant":return transformAssistantMessage(message,protocol);case"toolResult":return transformToolResultMessage(message,protocol);default:return message}}function transformAssistantMessage(message,protocol){if(!message.content.some(block=>block.type==="toolCall"))return message;let newContent=[];for(let block of message.content)switch(block.type){case"text":{newContent.push(block);break}case"thinking":{newContent.push(block);break}case"toolCall":{let toolCallText=protocol.formatToolCall(block.name,block.arguments);newContent.push({type:"text",text:toolCallText});break}}return{...message,content:newContent}}function transformToolResultMessage(message,protocol){return{role:"user",content:protocol.formatToolResponse(message.toolName,message.toolCallId,message.content),timestamp:message.timestamp}}function wrapStreamWithToolCallMiddleware(innerStream,protocol,tools){let outerStream=new AssistantMessageEventStream,parser=protocol.createStreamParser(tools);return(async()=>{let projection=null,sawToolCall=!1,parserHasPendingInput=!1,flushParser=()=>{if(!projection||!parserHasPendingInput)return;let result=projection.projectParserEvents(parser.finish());sawToolCall=sawToolCall||result.sawToolCall,projection.finishText(),parserHasPendingInput=!1};try{for await(let event of innerStream)switch(event.type){case"start":projection=new StreamMessageProjection(outerStream,event.partial),outerStream.push({type:"start",partial:projection.message});break;case"text_start":if(!projection)break;projection.sync(event.partial),projection.startText(event.contentIndex,event.partial.content[event.contentIndex]);break;case"text_delta":{if(!projection)break;projection.sync(event.partial),event.delta.length>0&&(parserHasPendingInput=!0);let result=projection.projectParserEvents(parser.feed(event.delta));sawToolCall=sawToolCall||result.sawToolCall;break}case"text_end":if(!projection)break;projection.sync(event.partial),flushParser();break;case"thinking_start":if(!projection)break;projection.sync(event.partial),projection.startThinking(event.contentIndex,event.partial);break;case"thinking_delta":if(!projection)break;projection.sync(event.partial),projection.projectThinkingDelta(event.contentIndex,event.delta,event.partial);break;case"thinking_end":if(!projection)break;projection.sync(event.partial),projection.finishThinking(event.contentIndex,event.content,event.partial);break;case"done":{projection??=new StreamMessageProjection(outerStream,event.message),flushParser(),projection.finalizeDanglingToolCalls();let message=projection.finalize(event.message,sawToolCall),reason=(sawToolCall||projection.hasFinalizedToolCallContent())&&(event.reason==="stop"||event.reason==="length")?"toolUse":event.reason;outerStream.push({type:"done",reason,message}),outerStream.end();return}case"error":{if(!projection){outerStream.push(event),outerStream.end(event.error);return}projection.sync(event.error),flushParser(),projection.finalizeDanglingToolCalls();let message=projection.finalize(event.error,sawToolCall);if(projection.hasFinalizedToolCallContent()){let recovered={...message,stopReason:"toolUse"};outerStream.push({type:"done",reason:"toolUse",message:recovered}),outerStream.end(recovered);return}outerStream.push({type:"error",reason:event.reason,error:message}),outerStream.end(message);return}case"toolcall_start":case"toolcall_delta":case"toolcall_end":break}let innerMessage=await innerStream.result();projection??=new StreamMessageProjection(outerStream,innerMessage),flushParser(),projection.finalizeDanglingToolCalls(),outerStream.end(projection.finalize(innerMessage,sawToolCall))}catch(error){flushParser(),projection??=new StreamMessageProjection(outerStream,await innerStream.result()),projection.finalizeDanglingToolCalls();let fallback=projection.message;fallback.stopReason="error",fallback.errorMessage=error instanceof Error?error.message:JSON.stringify(error),outerStream.push({type:"error",reason:"error",error:fallback}),outerStream.end()}})(),outerStream}function getToolCallFormat(model){if(model.api!=="openai-completions")return;let format=model.compat?.toolCallFormat;if(format&&(format==="hermes"||format==="xml"||format==="morph-xml"||format==="yaml-xml"||format==="gemma4-delimiter"||format==="anthropic-xml"||format==="antml"||format==="kimi-xtml"))return format}function shouldRecoverTextToolCalls(model){return getToolCallFormat(model)!==void 0?!1:model.recoverTextToolCalls!==void 0?typeof model.recoverTextToolCalls=="boolean"?model.recoverTextToolCalls:!1:model.api==="cursor-agent"?!1:CLAUDE_MODEL_ID_PATTERN.test(model.id)||KIMI_MODEL_ID_PATTERN.test(model.id)}var CLAUDE_MODEL_ID_PATTERN=/(^|[^a-z0-9])claude([^a-z0-9]|$)/i,KIMI_MODEL_ID_PATTERN=/(^|[^a-z0-9])kimi([^a-z0-9]|$)/i;function hasKimiTextToolCallRecovery(model){return KIMI_MODEL_ID_PATTERN.test(model.id)}function wrapStreamWithModelRecovery(innerStream,model,tools){let recoveredStream=hasKimiTextToolCallRecovery(model)?wrapStreamWithKimiThinkingRecovery(innerStream):innerStream;return!shouldRecoverTextToolCalls(model)||tools.length===0?recoveredStream:wrapStreamWithInvokeRecovery(recoveredStream,tools,hasKimiTextToolCallRecovery(model)?{createParser:createXtmlRecoveryStreamParser,protocol:"kimi-xtml"}:void 0)}function cloneTextContent(content){return{type:"text",text:content.text,...content.textSignature===void 0?{}:{textSignature:content.textSignature}}}function cloneThinkingContent(content){return{type:"thinking",thinking:content.thinking,...content.thinkingSignature===void 0?{}:{thinkingSignature:content.thinkingSignature},...content.redacted===void 0?{}:{redacted:content.redacted}}}function cloneToolCall2(toolCall){return{type:"toolCall",id:toolCall.id,name:toolCall.name,arguments:structuredClone(toolCall.arguments),...toolCall.thoughtSignature===void 0?{}:{thoughtSignature:toolCall.thoughtSignature},...toolCall.namespace===void 0?{}:{namespace:toolCall.namespace}}}function cloneStartMessage(message){return{role:"assistant",content:[],api:message.api,provider:message.provider,model:message.model,...message.responseModel===void 0?{}:{responseModel:message.responseModel},...message.responseId===void 0?{}:{responseId:message.responseId},...message.providerThinkingLevel===void 0?{}:{providerThinkingLevel:message.providerThinkingLevel},...message.diagnostics===void 0?{}:{diagnostics:structuredClone(message.diagnostics)},usage:structuredClone(message.usage),stopReason:"pending",timestamp:message.timestamp}}function assertContentIndex(contentIndex){if(!Number.isSafeInteger(contentIndex)||contentIndex<0)throw new Error(`Invalid assistant message frame contentIndex: ${contentIndex}`)}function eventBlock(event){assertContentIndex(event.contentIndex);let block=event.partial.content[event.contentIndex];if(!block)throw new Error(`${event.type} event has no content block at index ${event.contentIndex}`);return block}function serializedArguments(argumentsValue){let serialized=JSON.stringify(argumentsValue);if(serialized===void 0)throw new Error("Tool-call arguments are not JSON-serializable");return serialized}var EMPTY_PARSED_TOOL_ARGUMENTS=serializedArguments(parseStreamingJson(""));function isJsonPrefix(snapshot,current){if(typeof snapshot=="string")return typeof current=="string"&&current.startsWith(snapshot);if(Array.isArray(snapshot))return Array.isArray(current)&&snapshot.length<=current.length&&snapshot.every((value,index)=>isJsonPrefix(value,current[index]));if(typeof snapshot!="object"||snapshot===null)return Object.is(snapshot,current);if(typeof current!="object"||current===null||Array.isArray(current))return!1;let currentRecord=current;return Object.entries(snapshot).every(([key,value])=>Object.hasOwn(currentRecord,key)&&isJsonPrefix(value,currentRecord[key]))}var AssistantMessageFrameEncoder=class{constructor(){this.started=!1,this.terminal=!1,this.blocks=new Map}encode(event){if(this.terminal)throw new Error(`Assistant message event ${event.type} follows a terminal event`);switch(event.type){case"start":if(this.started)throw new Error("Assistant message stream contains more than one start event");return this.started=!0,{type:"start",partial:cloneStartMessage(event.partial)};case"done":if(!this.started)throw new Error("Assistant message done event appears before start");this.terminal=!0;return;case"error":this.terminal=!0;return}if(!this.started)throw new Error(`Assistant message ${event.type} event appears before start`);switch(event.type){case"text_start":{let content=eventBlock(event);if(content.type!=="text")throw new Error(`text_start event points to ${content.type} block at index ${event.contentIndex}`);return this.startBlock(event.contentIndex,{kind:"text",coveredChars:content.text.length,deltaChars:0}),{type:"text_start",contentIndex:event.contentIndex,content:cloneTextContent(content)}}case"text_delta":return this.encodeTextDelta(event.contentIndex,event.delta,"text");case"text_end":{let content=eventBlock(event);if(content.type!=="text")throw new Error(`text_end event points to ${content.type} block at index ${event.contentIndex}`);return this.endBlock(event.contentIndex,"text"),{type:"text_end",contentIndex:event.contentIndex,content:event.content,...content.textSignature===void 0?{}:{textSignature:content.textSignature}}}case"thinking_start":{let content=eventBlock(event);if(content.type!=="thinking")throw new Error(`thinking_start event points to ${content.type} block at index ${event.contentIndex}`);return this.startBlock(event.contentIndex,{kind:"thinking",coveredChars:content.thinking.length,deltaChars:0}),{type:"thinking_start",contentIndex:event.contentIndex,content:cloneThinkingContent(content)}}case"thinking_delta":return this.encodeTextDelta(event.contentIndex,event.delta,"thinking");case"thinking_end":{let content=eventBlock(event);if(content.type!=="thinking")throw new Error(`thinking_end event points to ${content.type} block at index ${event.contentIndex}`);return this.endBlock(event.contentIndex,"thinking"),{type:"thinking_end",contentIndex:event.contentIndex,content:event.content,...content.thinkingSignature===void 0?{}:{thinkingSignature:content.thinkingSignature},...content.redacted===void 0?{}:{redacted:content.redacted}}}case"toolcall_start":{let content=eventBlock(event);if(content.type!=="toolCall")throw new Error(`toolcall_start event points to ${content.type} block at index ${event.contentIndex}`);let snapshotArguments=serializedArguments(content.arguments),caughtUp=snapshotArguments===EMPTY_PARSED_TOOL_ARGUMENTS;return this.startBlock(event.contentIndex,{kind:"toolCall",caughtUp,catchupJson:"",snapshotArguments:caughtUp?"":snapshotArguments}),{type:"toolcall_start",contentIndex:event.contentIndex,toolCall:cloneToolCall2(content)}}case"toolcall_delta":{let state=this.block(event.contentIndex,"toolCall");if(state.kind!=="toolCall")throw new Error("Unreachable tool-call encoder state");if(state.caughtUp)return event.delta.length===0?void 0:{type:"toolcall_delta",contentIndex:event.contentIndex,delta:event.delta};state.catchupJson+=event.delta;let argumentsValue=parseStreamingJson(state.catchupJson);if(serializedArguments(argumentsValue)!==state.snapshotArguments){let snapshotArguments=parseStreamingJson(state.snapshotArguments);if(!isJsonPrefix(snapshotArguments,argumentsValue))return}state.caughtUp=!0,state.snapshotArguments="";let json=state.catchupJson;return state.catchupJson="",json.length===0?void 0:{type:"toolcall_checkpoint",contentIndex:event.contentIndex,json}}case"toolcall_end":{let content=eventBlock(event);if(content.type!=="toolCall")throw new Error(`toolcall_end event points to ${content.type} block at index ${event.contentIndex}`);if(event.toolCall.type!=="toolCall")throw new Error(`toolcall_end event has invalid tool call at index ${event.contentIndex}`);return this.endBlock(event.contentIndex,"toolCall"),{type:"toolcall_end",contentIndex:event.contentIndex,id:event.toolCall.id,name:event.toolCall.name,arguments:structuredClone(event.toolCall.arguments),...event.toolCall.thoughtSignature===void 0?{}:{thoughtSignature:event.toolCall.thoughtSignature},...event.toolCall.namespace===void 0?{}:{namespace:event.toolCall.namespace}}}}}startBlock(contentIndex,state){if(assertContentIndex(contentIndex),this.blocks.has(contentIndex))throw new Error(`Assistant message block ${contentIndex} starts more than once`);this.blocks.set(contentIndex,state)}block(contentIndex,kind){assertContentIndex(contentIndex);let state=this.blocks.get(contentIndex);if(state===void 0)throw new Error(`Assistant message ${kind} block ${contentIndex} has not started`);if(state.kind!==kind)throw new Error(`Assistant message block ${contentIndex} is ${state.kind}, not ${kind}`);return state}endBlock(contentIndex,kind){this.block(contentIndex,kind),this.blocks.delete(contentIndex)}encodeTextDelta(contentIndex,delta,kind){let state=this.block(contentIndex,kind);if(state.kind==="toolCall")throw new Error("Unreachable text encoder state");let deltaStart=state.deltaChars;state.deltaChars+=delta.length;let covered=Math.max(0,state.coveredChars-deltaStart);if(covered>=delta.length)return;let uncovered=covered===0?delta:delta.slice(covered);return kind==="text"?{type:"text_delta",contentIndex,delta:uncovered}:{type:"thinking_delta",contentIndex,delta:uncovered}}};function appendBlock(message,states,contentIndex,block,state){if(assertContentIndex(contentIndex),contentIndex!==message.content.length){let reason=contentIndex<message.content.length?"already exists":"would leave a gap";throw new Error(`Cannot start assistant message block at index ${contentIndex}: ${reason}`)}message.content.push(structuredClone(block)),states.set(contentIndex,state)}function activeBlock(message,states,contentIndex,expectedKind,frameType){assertContentIndex(contentIndex);let state=states.get(contentIndex),block=message.content[contentIndex];if(!state||!block)throw new Error(`${frameType} frame has no started block at index ${contentIndex}`);if(state.kind!==expectedKind||block.type!==expectedKind)throw new Error(`${frameType} frame expected ${expectedKind} block at index ${contentIndex}, found ${block.type}`);if(state.ended)throw new Error(`${frameType} frame follows the end of block at index ${contentIndex}`);return{block,state}}function reduceAssistantMessageFrames(frames){let message,frameBeforeStart,states=new Map;for(let frame of frames){if(frame.type==="start"){if(message)throw new Error("Assistant message frame sequence contains more than one start frame");if(frameBeforeStart!==void 0)throw new Error(`${frameBeforeStart} frame appears before the start frame`);message=structuredClone(frame.partial);continue}if(!message){frameBeforeStart??=frame.type;continue}switch(frame.type){case"text_start":if(frame.content.type!=="text")throw new Error(`text_start frame contains ${frame.content.type} content`);appendBlock(message,states,frame.contentIndex,frame.content,{kind:"text",ended:!1});break;case"text_delta":{let{block}=activeBlock(message,states,frame.contentIndex,"text",frame.type);if(block.type!=="text")throw new Error("Unreachable text frame state");block.text+=frame.delta;break}case"text_end":{let{block,state}=activeBlock(message,states,frame.contentIndex,"text",frame.type);if(block.type!=="text")throw new Error("Unreachable text frame state");block.text=frame.content,delete block.textSignature,frame.textSignature!==void 0&&(block.textSignature=frame.textSignature),state.ended=!0;break}case"thinking_start":if(frame.content.type!=="thinking")throw new Error(`thinking_start frame contains ${frame.content.type} content`);appendBlock(message,states,frame.contentIndex,frame.content,{kind:"thinking",ended:!1});break;case"thinking_delta":{let{block}=activeBlock(message,states,frame.contentIndex,"thinking",frame.type);if(block.type!=="thinking")throw new Error("Unreachable thinking frame state");block.thinking+=frame.delta;break}case"thinking_end":{let{block,state}=activeBlock(message,states,frame.contentIndex,"thinking",frame.type);if(block.type!=="thinking")throw new Error("Unreachable thinking frame state");block.thinking=frame.content,delete block.thinkingSignature,delete block.redacted,frame.thinkingSignature!==void 0&&(block.thinkingSignature=frame.thinkingSignature),frame.redacted!==void 0&&(block.redacted=frame.redacted),state.ended=!0;break}case"toolcall_start":if(frame.toolCall.type!=="toolCall")throw new Error(`toolcall_start frame contains ${frame.toolCall.type} content`);appendBlock(message,states,frame.contentIndex,frame.toolCall,{kind:"toolCall",ended:!1,json:""});break;case"toolcall_checkpoint":{let{block,state}=activeBlock(message,states,frame.contentIndex,"toolCall",frame.type);if(block.type!=="toolCall"||state.kind!=="toolCall")throw new Error("Unreachable tool-call checkpoint state");state.json=frame.json,block.arguments=parseStreamingJson(frame.json);break}case"toolcall_delta":{let{block,state}=activeBlock(message,states,frame.contentIndex,"toolCall",frame.type);if(block.type!=="toolCall"||state.kind!=="toolCall")throw new Error("Unreachable tool-call frame state");state.json+=frame.delta;break}case"toolcall_end":{let{block,state}=activeBlock(message,states,frame.contentIndex,"toolCall",frame.type);if(block.type!=="toolCall")throw new Error("Unreachable tool-call frame state");block.id=frame.id,block.name=frame.name,block.arguments=structuredClone(frame.arguments),delete block.thoughtSignature,delete block.namespace,frame.thoughtSignature!==void 0&&(block.thoughtSignature=frame.thoughtSignature),frame.namespace!==void 0&&(block.namespace=frame.namespace),state.ended=!0;break}}}if(message){for(let[contentIndex,state]of states){if(state.kind!=="toolCall"||state.ended||state.json.length===0)continue;let block=message.content[contentIndex];if(block?.type!=="toolCall")throw new Error("Unreachable tool-call frame state");block.arguments=parseStreamingJson(state.json)}return message}}var kCursorExecResolved=Symbol.for("provider.block.cursorExecResolved");function isCursorExecResolved(block){return block?.[kCursorExecResolved]===!0}function copyCursorExecResolved(target,source){source[kCursorExecResolved]===!0&&(target[kCursorExecResolved]=!0)}function dropFailedAssistantTurns(messages){let callIdsByKeptAssistants=new Set,callIdsByFailedAssistants=new Set;for(let message of messages){let assistant=asAssistantTurn(message);if(!assistant)continue;let declared=isFailedStop(assistant.stopReason)?callIdsByFailedAssistants:callIdsByKeptAssistants;for(let block of assistant.content)block.type==="toolCall"&&typeof block.id=="string"&&declared.add(block.id)}for(let id of callIdsByKeptAssistants)callIdsByFailedAssistants.delete(id);return messages.filter(message=>{let assistant=asAssistantTurn(message);return assistant?!isFailedStop(assistant.stopReason):message.role==="toolResult"&&"toolCallId"in message&&typeof message.toolCallId=="string"?!callIdsByFailedAssistants.has(message.toolCallId):!0})}function asAssistantTurn(message){if(message.role==="assistant"&&!(!("content"in message)||!Array.isArray(message.content)))return{stopReason:"stopReason"in message?message.stopReason:void 0,content:message.content}}function isFailedStop(stopReason){return stopReason==="error"||stopReason==="aborted"}var OVERFLOW_PATTERNS=[/^Context window exhausted: /,/^The conversation is too long to resend \(about \d+ tokens, limit \d+\)/,/prompt (?:is )?too long/i,/prompt exceeds max length/i,/request_too_large/i,/input is too long for requested model/i,/exceeds (?:(?:the|this) )?(?:model'?s )?context window/i,/exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i,/input token count.*exceeds the maximum/i,/maximum prompt length is \d+/i,/reduce the length of the messages/i,/maximum context length is \d+ tokens/i,/exceeds (?:the )?maximum allowed input length of [\d,]+ tokens?/i,/input \(\d+ tokens\) is longer than the model'?s context length \(\d+ tokens\)/i,/model_max_prompt_tokens_exceeded|exceeds the limit of \d+/i,/exceeds the available context size/i,/greater than the context length/i,/context window exceeds limit/i,/exceeded model token limit/i,/too large for model with \d+ maximum context length/i,/prompt has [\d,]+ tokens?, but the configured context size is [\d,]+ tokens?/i,/model_context_window_exceeded/i,/prompt too long; exceeded (?:max )?context length/i,/range of input length should be/i,/context[_ ]length[_ ]exceeded/i,/too many tokens/i,/token limit exceeded/i,/(?:request[ _])?(?:body|entity|payload)[_ ]too[_ ]large/i,/Request payload is \d+ (?:bytes, over the \d+ byte|tokens, over the \d+ token) limit Kiro accepts\./,/Model context limit reached\. Conversation size exceeds model capacity\./],CEREBRAS_BODYLESS_OVERFLOW_PATTERN=/^4(?:00|13)\s*(?:status code)?\s*\(no body\)/i,NON_OVERFLOW_PATTERNS=[/^(Throttling error|Service unavailable):/i,/rate limit/i,/too many requests/i,/tokens per (?:min|minute|hour|day)/i,/\bTPM\b/i,/\bRPM\b/i,/quota exceeded/i,/retry (?:after|in) \d/i,/^429\b/,/status code 429/i,/overloaded/i],RESOURCE_EXHAUSTED_PATTERN=/resource.?exhausted/i;function isContextOverflow(message,contextWindow){let contextInput=message.usage.contextUsage===void 0?message.usage.input+message.usage.cacheRead:message.usage.contextUsage?.input??0,contextOutput=message.usage.contextUsage===void 0?message.usage.output:message.usage.contextUsage?.output??0;if(message.stopReason==="error"&&message.errorMessage){let isNonOverflow=NON_OVERFLOW_PATTERNS.some(p=>p.test(message.errorMessage));if(!isNonOverflow&&(OVERFLOW_PATTERNS.some(p=>p.test(message.errorMessage))||message.provider==="cerebras"&&CEREBRAS_BODYLESS_OVERFLOW_PATTERN.test(message.errorMessage)))return!0;let usage=message.usage,hasTokenEvidence=(usage.totalTokens||usage.input+usage.output+usage.cacheRead+usage.cacheWrite)>0;if(!isNonOverflow&&hasTokenEvidence&&RESOURCE_EXHAUSTED_PATTERN.test(message.errorMessage)&&(contextWindow===void 0||contextWindow<=0||cursorZeroTokenCount(message)>=contextWindow*.5))return!0}return!!(contextWindow&&message.stopReason==="stop"&&contextInput>contextWindow||contextWindow&&message.stopReason==="length"&&contextOutput===0&&contextInput>=contextWindow*.99)}function isRecoverableLength(message,desiredMaxOutput){let output=message.usage.contextUsage?.output??message.usage.output;return message.stopReason==="length"&&desiredMaxOutput>0&&output<desiredMaxOutput}function getOverflowPatterns(){return[...OVERFLOW_PATTERNS]}var CURSOR_PROVIDERS=new Set(["cursor","cursor-cli-oauth"]);function isCursorProviderMessage(message){return message.provider===void 0||CURSOR_PROVIDERS.has(message.provider)}function cursorZeroTokenCount(message){let usage=message.usage;return usage?usage.totalTokens||(usage.input??0)+(usage.output??0)+(usage.cacheRead??0)+(usage.cacheWrite??0):0}function isCursorPayloadResourceExhausted(message,_estimateTokens){return!isCursorProviderMessage(message)||message.stopReason!=="error"||!/resource.?exhausted/i.test(message.errorMessage||"")?!1:!(cursorZeroTokenCount(message)>0)}function isCursorQuotaResourceExhausted(message,contextWindow){let tokens=cursorZeroTokenCount(message);return isCursorProviderMessage(message)&&message.stopReason==="error"&&RESOURCE_EXHAUSTED_PATTERN.test(message.errorMessage||"")&&contextWindow>0&&tokens>0&&tokens<contextWindow*.5}function isCursorZeroTokenResourceExhausted(message){return!isCursorProviderMessage(message)||message.stopReason!=="error"||!/resource.?exhausted/i.test(message.errorMessage||"")?!1:!(cursorZeroTokenCount(message)>0)}function shouldSkipProviderFallbackForCursorZeroRe(options){return options?.sameModelRemint===!0}function shouldRetryOverflowWithoutCompact(compacted,errorMessage){return compacted?!1:/Nothing to compact/i.test(errorMessage||"")}function cursorOverflowCompactionSettings(settings,provider,reason){return reason!=="overflow"||provider!=="cursor"&&provider!=="cursor-cli-oauth"?settings:{...settings,keepRecentTokens:0,restorationEnabled:!1}}var ANTHROPIC_POLICY_REFUSAL_PATTERN=/This request triggered restrictions on [\s\S]+? and was blocked under Anthropic's Usage Policy\b/i;function isClassifierRefusal(message){return message.stopReason!=="error"&&message.stopReason!=="toolUse"?!1:message.stopDetails?.type==="refusal"||message.stopDetails?.type==="sensitive"?!0:message.errorMessage?ANTHROPIC_POLICY_REFUSAL_PATTERN.test(message.errorMessage):!1}var TOOL_RESULT_PLACEHOLDER="Tool output unavailable (context compacted)";function incompleteToolCallRetryText(name,errorMessage){return errorMessage!==void 0?`${errorMessage}${errorMessage.endsWith(".")?"":"."} Re-issue the tool call with complete arguments.`:`Tool call "${name}" was not executed: the response ended before the tool call was complete. Re-issue the tool call with complete arguments.`}function repairOrphanedToolResults(messages){let toolCallIds=new Set,toolResultIds=new Set;for(let message of messages){if(message.role==="assistant")for(let block of message.content)block.type==="toolCall"&&toolCallIds.add(block.id);message.role==="toolResult"&&toolResultIds.add(message.toolCallId)}let output=[],dangling=new Set([...toolCallIds].filter(id=>!toolResultIds.has(id)));for(let message of messages){if(message.role==="toolResult"){if(!toolCallIds.has(message.toolCallId)){output.push({...message,content:[{type:"text",text:TOOL_RESULT_PLACEHOLDER}]});continue}output.push(message);continue}if(output.push(message),message.role==="assistant"){if(message.stopReason==="error"||message.stopReason==="aborted")continue;for(let block of message.content){if(block.type!=="toolCall"||!dangling.has(block.id))continue;let incomplete=block.incomplete===!0,text=incomplete?incompleteToolCallRetryText(block.name,block.errorMessage):TOOL_RESULT_PLACEHOLDER;output.push({role:"toolResult",toolCallId:block.id,toolName:block.name,content:[{type:"text",text}],isError:incomplete,timestamp:message.timestamp?message.timestamp+1:Date.now()}),dangling.delete(block.id)}}}return output}function StringEnum(values,options){return typebox_exports.Unsafe({type:"string",enum:values,...options?.description&&{description:options.description},...options?.default&&{default:options.default}})}var INVISIBLE_FORMAT_CHARS=new RegExp("\\p{Cf}","gu");function hasVisibleText(text){return text.replace(INVISIBLE_FORMAT_CHARS,"").trim().length>0}function hasVisibleAssistantContent(message){return message.content.some(block=>block.type==="toolCall"||block.type==="text"&&hasVisibleText(block.text))}export{create,messageDesc,fromBinary,fileDesc,toBinary,measureCursorModelInputSerializedBytes,measureCursorHistorySerializedBytes,piReadArgs,piLsPath,piLimit,piTimeout,composeShellCommand,omitUndefinedArgs,registerPromptCacheWarmer,warmPromptCache,fauxText,fauxThinking,fauxToolCall,fauxAssistantMessage,createFauxCore,getRegisteredFauxProvider,fauxOverflowError,fauxProvider,installProviderScopeAccessor,registerApiProvider,registerBuiltinApiProvider,getApiProvider,getApiProviders,unregisterApiProviders,clearApiProviders,envApiKeyAuth,lazyOAuth,CURSOR_MODEL_CAPABILITIES,parseCursorVariantId,getCursorVariantAlias,getCursorBaseIdForVariant,getCursorCapabilityForBase,deriveCursorVariantAliases,normalizeCursorCatalog,resolveCursorSelectionDescriptor,renderCursorCliModelString,parseEndpointReasoningEfforts,modelSupportsAssistantPrefill,createXtmlRecoveryStreamParser,wrapStreamWithInvokeRecovery,Compile,compile_exports,registerToolArgumentValidator,validateToolCall,validateToolArguments,require_dist,getProtocol,transformContext,wrapStreamWithToolCallMiddleware,getToolCallFormat,shouldRecoverTextToolCalls,hasKimiTextToolCallRecovery,wrapStreamWithModelRecovery,AssistantMessageFrameEncoder,reduceAssistantMessageFrames,kCursorExecResolved,isCursorExecResolved,copyCursorExecResolved,dropFailedAssistantTurns,isContextOverflow,isRecoverableLength,getOverflowPatterns,isCursorPayloadResourceExhausted,isCursorQuotaResourceExhausted,isCursorZeroTokenResourceExhausted,shouldSkipProviderFallbackForCursorZeroRe,shouldRetryOverflowWithoutCompact,cursorOverflowCompactionSettings,isClassifierRefusal,TOOL_RESULT_PLACEHOLDER,repairOrphanedToolResults,StringEnum,hasVisibleText,hasVisibleAssistantContent};
328
+ ${basePrompt}`:toolPrompt})}else head&&hasSystemContent(head)&&messages.push(head);for(let message of initial?transcript.messages.slice(1):transcript.messages){if(message.role==="system"){let stripped=withoutToolDeclarations(message);hasSystemContent(stripped)&&messages.push(stripped);continue}messages.push(transformMessage(message,protocol))}return{messages}}function withoutToolDeclarations(message){return{role:"system",content:message.content,...message.sections?{sections:message.sections}:{},timestamp:message.timestamp}}function hasSystemContent(message){return contentText(message.content).length>0||Object.keys(message.sections??{}).length>0}function transformMessage(message,protocol){switch(message.role){case"assistant":return transformAssistantMessage(message,protocol);case"toolResult":return transformToolResultMessage(message,protocol);default:return message}}function transformAssistantMessage(message,protocol){if(!message.content.some(block=>block.type==="toolCall"))return message;let newContent=[];for(let block of message.content)switch(block.type){case"text":{newContent.push(block);break}case"thinking":{newContent.push(block);break}case"toolCall":{let toolCallText=protocol.formatToolCall(block.name,block.arguments);newContent.push({type:"text",text:toolCallText});break}}return{...message,content:newContent}}function transformToolResultMessage(message,protocol){return{role:"user",content:protocol.formatToolResponse(message.toolName,message.toolCallId,message.content),timestamp:message.timestamp}}function wrapStreamWithToolCallMiddleware(innerStream,protocol,tools){let outerStream=new AssistantMessageEventStream({captureBlocks:!0}),parser=protocol.createStreamParser(tools);return(async()=>{let projection=null,sawToolCall=!1,parserHasPendingInput=!1,flushParser=()=>{if(!projection||!parserHasPendingInput)return;let result=projection.projectParserEvents(parser.finish());sawToolCall=sawToolCall||result.sawToolCall,projection.finishText(),parserHasPendingInput=!1};try{for await(let event of innerStream)switch(event.type){case"start":projection=new StreamMessageProjection(outerStream,event.partial),outerStream.push({type:"start",partial:projection.message});break;case"text_start":if(!projection)break;projection.sync(event.partial),projection.startText(event.contentIndex,event.partial.content[event.contentIndex]);break;case"text_delta":{if(!projection)break;projection.sync(event.partial),event.delta.length>0&&(parserHasPendingInput=!0);let result=projection.projectParserEvents(parser.feed(event.delta));sawToolCall=sawToolCall||result.sawToolCall;break}case"text_end":if(!projection)break;projection.sync(event.partial),flushParser();break;case"thinking_start":if(!projection)break;projection.sync(event.partial),projection.startThinking(event.contentIndex,event.partial);break;case"thinking_delta":if(!projection)break;projection.sync(event.partial),projection.projectThinkingDelta(event.contentIndex,event.delta,event.partial);break;case"thinking_end":if(!projection)break;projection.sync(event.partial),projection.finishThinking(event.contentIndex,event.content,event.partial);break;case"done":{projection??=new StreamMessageProjection(outerStream,event.message),flushParser(),projection.finalizeDanglingToolCalls();let message=projection.finalize(event.message,sawToolCall),reason=(sawToolCall||projection.hasFinalizedToolCallContent())&&(event.reason==="stop"||event.reason==="length")?"toolUse":event.reason;outerStream.push({type:"done",reason,message}),outerStream.end();return}case"error":{if(!projection){outerStream.push(event),outerStream.end(event.error);return}projection.sync(event.error),flushParser(),projection.finalizeDanglingToolCalls();let message=projection.finalize(event.error,sawToolCall);if(projection.hasFinalizedToolCallContent()){let recovered={...message,stopReason:"toolUse"};outerStream.push({type:"done",reason:"toolUse",message:recovered}),outerStream.end(recovered);return}outerStream.push({type:"error",reason:event.reason,error:message}),outerStream.end(message);return}case"toolcall_start":case"toolcall_delta":case"toolcall_end":break}let innerMessage=await innerStream.result();projection??=new StreamMessageProjection(outerStream,innerMessage),flushParser(),projection.finalizeDanglingToolCalls(),outerStream.end(projection.finalize(innerMessage,sawToolCall))}catch(error){flushParser(),projection??=new StreamMessageProjection(outerStream,await innerStream.result()),projection.finalizeDanglingToolCalls();let fallback=projection.message;fallback.stopReason="error",fallback.errorMessage=error instanceof Error?error.message:JSON.stringify(error),outerStream.push({type:"error",reason:"error",error:fallback}),outerStream.end()}})(),outerStream}function getToolCallFormat(model){if(model.api!=="openai-completions")return;let format=model.compat?.toolCallFormat;if(format&&(format==="hermes"||format==="xml"||format==="morph-xml"||format==="yaml-xml"||format==="gemma4-delimiter"||format==="anthropic-xml"||format==="antml"||format==="kimi-xtml"))return format}function shouldRecoverTextToolCalls(model){return getToolCallFormat(model)!==void 0?!1:model.recoverTextToolCalls!==void 0?typeof model.recoverTextToolCalls=="boolean"?model.recoverTextToolCalls:!1:model.api==="cursor-agent"?!1:CLAUDE_MODEL_ID_PATTERN.test(model.id)||KIMI_MODEL_ID_PATTERN.test(model.id)}var CLAUDE_MODEL_ID_PATTERN=/(^|[^a-z0-9])claude([^a-z0-9]|$)/i,KIMI_MODEL_ID_PATTERN=/(^|[^a-z0-9])kimi([^a-z0-9]|$)/i;function hasKimiTextToolCallRecovery(model){return KIMI_MODEL_ID_PATTERN.test(model.id)}function wrapStreamWithModelRecovery(innerStream,model,tools){let recoveredStream=hasKimiTextToolCallRecovery(model)?wrapStreamWithKimiThinkingRecovery(innerStream):innerStream;return!shouldRecoverTextToolCalls(model)||tools.length===0?recoveredStream:wrapStreamWithInvokeRecovery(recoveredStream,tools,hasKimiTextToolCallRecovery(model)?{createParser:createXtmlRecoveryStreamParser,protocol:"kimi-xtml"}:void 0)}function cloneTextContent(content){return{type:"text",text:content.text,...content.textSignature===void 0?{}:{textSignature:content.textSignature}}}function cloneThinkingContent(content){return{type:"thinking",thinking:content.thinking,...content.thinkingSignature===void 0?{}:{thinkingSignature:content.thinkingSignature},...content.redacted===void 0?{}:{redacted:content.redacted}}}function cloneToolCall2(toolCall){return{type:"toolCall",id:toolCall.id,name:toolCall.name,arguments:structuredClone(toolCall.arguments),...toolCall.thoughtSignature===void 0?{}:{thoughtSignature:toolCall.thoughtSignature},...toolCall.namespace===void 0?{}:{namespace:toolCall.namespace}}}function cloneStartMessage(message){return{role:"assistant",content:[],api:message.api,provider:message.provider,model:message.model,...message.responseModel===void 0?{}:{responseModel:message.responseModel},...message.responseId===void 0?{}:{responseId:message.responseId},...message.providerThinkingLevel===void 0?{}:{providerThinkingLevel:message.providerThinkingLevel},...message.diagnostics===void 0?{}:{diagnostics:structuredClone(message.diagnostics)},usage:structuredClone(message.usage),stopReason:"pending",timestamp:message.timestamp}}function assertContentIndex(contentIndex){if(!Number.isSafeInteger(contentIndex)||contentIndex<0)throw new Error(`Invalid assistant message frame contentIndex: ${contentIndex}`)}function eventBlock(event){assertContentIndex(event.contentIndex);let block=event.partial.content[event.contentIndex];if(!block)throw new Error(`${event.type} event has no content block at index ${event.contentIndex}`);return block}function serializedArguments(argumentsValue){let serialized=JSON.stringify(argumentsValue);if(serialized===void 0)throw new Error("Tool-call arguments are not JSON-serializable");return serialized}var EMPTY_PARSED_TOOL_ARGUMENTS=serializedArguments(parseStreamingJson(""));function isJsonPrefix(snapshot,current){if(typeof snapshot=="string")return typeof current=="string"&&current.startsWith(snapshot);if(Array.isArray(snapshot))return Array.isArray(current)&&snapshot.length<=current.length&&snapshot.every((value,index)=>isJsonPrefix(value,current[index]));if(typeof snapshot!="object"||snapshot===null)return Object.is(snapshot,current);if(typeof current!="object"||current===null||Array.isArray(current))return!1;let currentRecord=current;return Object.entries(snapshot).every(([key,value])=>Object.hasOwn(currentRecord,key)&&isJsonPrefix(value,currentRecord[key]))}var AssistantMessageFrameEncoder=class{constructor(){this.started=!1,this.terminal=!1,this.blocks=new Map}encode(event){if(this.terminal)throw new Error(`Assistant message event ${event.type} follows a terminal event`);switch(event.type){case"start":if(this.started)throw new Error("Assistant message stream contains more than one start event");return this.started=!0,{type:"start",partial:cloneStartMessage(event.partial)};case"done":if(!this.started)throw new Error("Assistant message done event appears before start");this.terminal=!0;return;case"error":this.terminal=!0;return}if(!this.started)throw new Error(`Assistant message ${event.type} event appears before start`);switch(event.type){case"text_start":{let content=eventBlock(event);if(content.type!=="text")throw new Error(`text_start event points to ${content.type} block at index ${event.contentIndex}`);return this.startBlock(event.contentIndex,{kind:"text",coveredChars:content.text.length,deltaChars:0}),{type:"text_start",contentIndex:event.contentIndex,content:cloneTextContent(content)}}case"text_delta":return this.encodeTextDelta(event.contentIndex,event.delta,"text");case"text_end":{let content=eventBlock(event);if(content.type!=="text")throw new Error(`text_end event points to ${content.type} block at index ${event.contentIndex}`);return this.endBlock(event.contentIndex,"text"),{type:"text_end",contentIndex:event.contentIndex,content:event.content,...content.textSignature===void 0?{}:{textSignature:content.textSignature}}}case"thinking_start":{let content=eventBlock(event);if(content.type!=="thinking")throw new Error(`thinking_start event points to ${content.type} block at index ${event.contentIndex}`);return this.startBlock(event.contentIndex,{kind:"thinking",coveredChars:content.thinking.length,deltaChars:0}),{type:"thinking_start",contentIndex:event.contentIndex,content:cloneThinkingContent(content)}}case"thinking_delta":return this.encodeTextDelta(event.contentIndex,event.delta,"thinking");case"thinking_end":{let content=eventBlock(event);if(content.type!=="thinking")throw new Error(`thinking_end event points to ${content.type} block at index ${event.contentIndex}`);return this.endBlock(event.contentIndex,"thinking"),{type:"thinking_end",contentIndex:event.contentIndex,content:event.content,...content.thinkingSignature===void 0?{}:{thinkingSignature:content.thinkingSignature},...content.redacted===void 0?{}:{redacted:content.redacted}}}case"toolcall_start":{let content=eventBlock(event);if(content.type!=="toolCall")throw new Error(`toolcall_start event points to ${content.type} block at index ${event.contentIndex}`);let snapshotArguments=serializedArguments(content.arguments),caughtUp=snapshotArguments===EMPTY_PARSED_TOOL_ARGUMENTS;return this.startBlock(event.contentIndex,{kind:"toolCall",caughtUp,catchupJson:"",snapshotArguments:caughtUp?"":snapshotArguments}),{type:"toolcall_start",contentIndex:event.contentIndex,toolCall:cloneToolCall2(content)}}case"toolcall_delta":{let state=this.block(event.contentIndex,"toolCall");if(state.kind!=="toolCall")throw new Error("Unreachable tool-call encoder state");if(state.caughtUp)return event.delta.length===0?void 0:{type:"toolcall_delta",contentIndex:event.contentIndex,delta:event.delta};state.catchupJson+=event.delta;let argumentsValue=parseStreamingJson(state.catchupJson);if(serializedArguments(argumentsValue)!==state.snapshotArguments){let snapshotArguments=parseStreamingJson(state.snapshotArguments);if(!isJsonPrefix(snapshotArguments,argumentsValue))return}state.caughtUp=!0,state.snapshotArguments="";let json=state.catchupJson;return state.catchupJson="",json.length===0?void 0:{type:"toolcall_checkpoint",contentIndex:event.contentIndex,json}}case"toolcall_end":{let content=eventBlock(event);if(content.type!=="toolCall")throw new Error(`toolcall_end event points to ${content.type} block at index ${event.contentIndex}`);if(event.toolCall.type!=="toolCall")throw new Error(`toolcall_end event has invalid tool call at index ${event.contentIndex}`);return this.endBlock(event.contentIndex,"toolCall"),{type:"toolcall_end",contentIndex:event.contentIndex,id:event.toolCall.id,name:event.toolCall.name,arguments:structuredClone(event.toolCall.arguments),...event.toolCall.thoughtSignature===void 0?{}:{thoughtSignature:event.toolCall.thoughtSignature},...event.toolCall.namespace===void 0?{}:{namespace:event.toolCall.namespace}}}}}startBlock(contentIndex,state){if(assertContentIndex(contentIndex),this.blocks.has(contentIndex))throw new Error(`Assistant message block ${contentIndex} starts more than once`);this.blocks.set(contentIndex,state)}block(contentIndex,kind){assertContentIndex(contentIndex);let state=this.blocks.get(contentIndex);if(state===void 0)throw new Error(`Assistant message ${kind} block ${contentIndex} has not started`);if(state.kind!==kind)throw new Error(`Assistant message block ${contentIndex} is ${state.kind}, not ${kind}`);return state}endBlock(contentIndex,kind){this.block(contentIndex,kind),this.blocks.delete(contentIndex)}encodeTextDelta(contentIndex,delta,kind){let state=this.block(contentIndex,kind);if(state.kind==="toolCall")throw new Error("Unreachable text encoder state");let deltaStart=state.deltaChars;state.deltaChars+=delta.length;let covered=Math.max(0,state.coveredChars-deltaStart);if(covered>=delta.length)return;let uncovered=covered===0?delta:delta.slice(covered);return kind==="text"?{type:"text_delta",contentIndex,delta:uncovered}:{type:"thinking_delta",contentIndex,delta:uncovered}}};function appendBlock(message,states,contentIndex,block,state){if(assertContentIndex(contentIndex),contentIndex!==message.content.length){let reason=contentIndex<message.content.length?"already exists":"would leave a gap";throw new Error(`Cannot start assistant message block at index ${contentIndex}: ${reason}`)}message.content.push(structuredClone(block)),states.set(contentIndex,state)}function activeBlock(message,states,contentIndex,expectedKind,frameType){assertContentIndex(contentIndex);let state=states.get(contentIndex),block=message.content[contentIndex];if(!state||!block)throw new Error(`${frameType} frame has no started block at index ${contentIndex}`);if(state.kind!==expectedKind||block.type!==expectedKind)throw new Error(`${frameType} frame expected ${expectedKind} block at index ${contentIndex}, found ${block.type}`);if(state.ended)throw new Error(`${frameType} frame follows the end of block at index ${contentIndex}`);return{block,state}}function reduceAssistantMessageFrames(frames){let message,frameBeforeStart,states=new Map;for(let frame of frames){if(frame.type==="start"){if(message)throw new Error("Assistant message frame sequence contains more than one start frame");if(frameBeforeStart!==void 0)throw new Error(`${frameBeforeStart} frame appears before the start frame`);message=structuredClone(frame.partial);continue}if(!message){frameBeforeStart??=frame.type;continue}switch(frame.type){case"text_start":if(frame.content.type!=="text")throw new Error(`text_start frame contains ${frame.content.type} content`);appendBlock(message,states,frame.contentIndex,frame.content,{kind:"text",ended:!1});break;case"text_delta":{let{block}=activeBlock(message,states,frame.contentIndex,"text",frame.type);if(block.type!=="text")throw new Error("Unreachable text frame state");block.text+=frame.delta;break}case"text_end":{let{block,state}=activeBlock(message,states,frame.contentIndex,"text",frame.type);if(block.type!=="text")throw new Error("Unreachable text frame state");block.text=frame.content,delete block.textSignature,frame.textSignature!==void 0&&(block.textSignature=frame.textSignature),state.ended=!0;break}case"thinking_start":if(frame.content.type!=="thinking")throw new Error(`thinking_start frame contains ${frame.content.type} content`);appendBlock(message,states,frame.contentIndex,frame.content,{kind:"thinking",ended:!1});break;case"thinking_delta":{let{block}=activeBlock(message,states,frame.contentIndex,"thinking",frame.type);if(block.type!=="thinking")throw new Error("Unreachable thinking frame state");block.thinking+=frame.delta;break}case"thinking_end":{let{block,state}=activeBlock(message,states,frame.contentIndex,"thinking",frame.type);if(block.type!=="thinking")throw new Error("Unreachable thinking frame state");block.thinking=frame.content,delete block.thinkingSignature,delete block.redacted,frame.thinkingSignature!==void 0&&(block.thinkingSignature=frame.thinkingSignature),frame.redacted!==void 0&&(block.redacted=frame.redacted),state.ended=!0;break}case"toolcall_start":if(frame.toolCall.type!=="toolCall")throw new Error(`toolcall_start frame contains ${frame.toolCall.type} content`);appendBlock(message,states,frame.contentIndex,frame.toolCall,{kind:"toolCall",ended:!1,json:""});break;case"toolcall_checkpoint":{let{block,state}=activeBlock(message,states,frame.contentIndex,"toolCall",frame.type);if(block.type!=="toolCall"||state.kind!=="toolCall")throw new Error("Unreachable tool-call checkpoint state");state.json=frame.json,block.arguments=parseStreamingJson(frame.json);break}case"toolcall_delta":{let{block,state}=activeBlock(message,states,frame.contentIndex,"toolCall",frame.type);if(block.type!=="toolCall"||state.kind!=="toolCall")throw new Error("Unreachable tool-call frame state");state.json+=frame.delta;break}case"toolcall_end":{let{block,state}=activeBlock(message,states,frame.contentIndex,"toolCall",frame.type);if(block.type!=="toolCall")throw new Error("Unreachable tool-call frame state");block.id=frame.id,block.name=frame.name,block.arguments=structuredClone(frame.arguments),delete block.thoughtSignature,delete block.namespace,frame.thoughtSignature!==void 0&&(block.thoughtSignature=frame.thoughtSignature),frame.namespace!==void 0&&(block.namespace=frame.namespace),state.ended=!0;break}}}if(message){for(let[contentIndex,state]of states){if(state.kind!=="toolCall"||state.ended||state.json.length===0)continue;let block=message.content[contentIndex];if(block?.type!=="toolCall")throw new Error("Unreachable tool-call frame state");block.arguments=parseStreamingJson(state.json)}return message}}var kCursorExecResolved=Symbol.for("provider.block.cursorExecResolved");function isCursorExecResolved(block){return block?.[kCursorExecResolved]===!0}function copyCursorExecResolved(target,source){source[kCursorExecResolved]===!0&&(target[kCursorExecResolved]=!0)}function dropFailedAssistantTurns(messages){let callIdsByKeptAssistants=new Set,callIdsByFailedAssistants=new Set;for(let message of messages){let assistant=asAssistantTurn(message);if(!assistant)continue;let declared=isFailedStop(assistant.stopReason)?callIdsByFailedAssistants:callIdsByKeptAssistants;for(let block of assistant.content)block.type==="toolCall"&&typeof block.id=="string"&&declared.add(block.id)}for(let id of callIdsByKeptAssistants)callIdsByFailedAssistants.delete(id);return messages.filter(message=>{let assistant=asAssistantTurn(message);return assistant?!isFailedStop(assistant.stopReason):message.role==="toolResult"&&"toolCallId"in message&&typeof message.toolCallId=="string"?!callIdsByFailedAssistants.has(message.toolCallId):!0})}function asAssistantTurn(message){if(message.role==="assistant"&&!(!("content"in message)||!Array.isArray(message.content)))return{stopReason:"stopReason"in message?message.stopReason:void 0,content:message.content}}function isFailedStop(stopReason){return stopReason==="error"||stopReason==="aborted"}var OVERFLOW_PATTERNS=[/^Context window exhausted: /,/^The conversation is too long to resend \(about \d+ tokens, limit \d+\)/,/prompt (?:is )?too long/i,/prompt exceeds max length/i,/request_too_large/i,/input is too long for requested model/i,/exceeds (?:(?:the|this) )?(?:model'?s )?context window/i,/exceeds (?:the )?(?:model'?s )?maximum context length(?: of [\d,]+ tokens?|\s*\([\d,]+\))/i,/input token count.*exceeds the maximum/i,/maximum prompt length is \d+/i,/reduce the length of the messages/i,/maximum context length is \d+ tokens/i,/exceeds (?:the )?maximum allowed input length of [\d,]+ tokens?/i,/input \(\d+ tokens\) is longer than the model'?s context length \(\d+ tokens\)/i,/model_max_prompt_tokens_exceeded|exceeds the limit of \d+/i,/exceeds the available context size/i,/greater than the context length/i,/context window exceeds limit/i,/exceeded model token limit/i,/too large for model with \d+ maximum context length/i,/prompt has [\d,]+ tokens?, but the configured context size is [\d,]+ tokens?/i,/model_context_window_exceeded/i,/prompt too long; exceeded (?:max )?context length/i,/range of input length should be/i,/context[_ ]length[_ ]exceeded/i,/too many tokens/i,/token limit exceeded/i,/(?:request[ _])?(?:body|entity|payload)[_ ]too[_ ]large/i,/Request payload is \d+ (?:bytes, over the \d+ byte|tokens, over the \d+ token) limit Kiro accepts\./,/Model context limit reached\. Conversation size exceeds model capacity\./],CEREBRAS_BODYLESS_OVERFLOW_PATTERN=/^4(?:00|13)\s*(?:status code)?\s*\(no body\)/i,NON_OVERFLOW_PATTERNS=[/^(Throttling error|Service unavailable):/i,/rate limit/i,/too many requests/i,/tokens per (?:min|minute|hour|day)/i,/\bTPM\b/i,/\bRPM\b/i,/quota exceeded/i,/retry (?:after|in) \d/i,/^429\b/,/status code 429/i,/overloaded/i],RESOURCE_EXHAUSTED_PATTERN=/resource.?exhausted/i;function isContextOverflow(message,contextWindow){let contextInput=message.usage.contextUsage===void 0?message.usage.input+message.usage.cacheRead:message.usage.contextUsage?.input??0,contextOutput=message.usage.contextUsage===void 0?message.usage.output:message.usage.contextUsage?.output??0;if(message.stopReason==="error"&&message.errorMessage){let isNonOverflow=NON_OVERFLOW_PATTERNS.some(p=>p.test(message.errorMessage));if(!isNonOverflow&&(OVERFLOW_PATTERNS.some(p=>p.test(message.errorMessage))||message.provider==="cerebras"&&CEREBRAS_BODYLESS_OVERFLOW_PATTERN.test(message.errorMessage)))return!0;let usage=message.usage,hasTokenEvidence=(usage.totalTokens||usage.input+usage.output+usage.cacheRead+usage.cacheWrite)>0;if(!isNonOverflow&&hasTokenEvidence&&RESOURCE_EXHAUSTED_PATTERN.test(message.errorMessage)&&(contextWindow===void 0||contextWindow<=0||cursorZeroTokenCount(message)>=contextWindow*.5))return!0}return!!(contextWindow&&message.stopReason==="stop"&&contextInput>contextWindow||contextWindow&&message.stopReason==="length"&&contextOutput===0&&contextInput>=contextWindow*.99)}function isRecoverableLength(message,desiredMaxOutput){let output=message.usage.contextUsage?.output??message.usage.output;return message.stopReason==="length"&&desiredMaxOutput>0&&output<desiredMaxOutput}function getOverflowPatterns(){return[...OVERFLOW_PATTERNS]}var CURSOR_PROVIDERS=new Set(["cursor","cursor-cli-oauth"]);function isCursorProviderMessage(message){return message.provider===void 0||CURSOR_PROVIDERS.has(message.provider)}function cursorZeroTokenCount(message){let usage=message.usage;return usage?usage.totalTokens||(usage.input??0)+(usage.output??0)+(usage.cacheRead??0)+(usage.cacheWrite??0):0}function isCursorPayloadResourceExhausted(message,_estimateTokens){return!isCursorProviderMessage(message)||message.stopReason!=="error"||!/resource.?exhausted/i.test(message.errorMessage||"")?!1:!(cursorZeroTokenCount(message)>0)}function isCursorQuotaResourceExhausted(message,contextWindow){let tokens=cursorZeroTokenCount(message);return isCursorProviderMessage(message)&&message.stopReason==="error"&&RESOURCE_EXHAUSTED_PATTERN.test(message.errorMessage||"")&&contextWindow>0&&tokens>0&&tokens<contextWindow*.5}function isCursorZeroTokenResourceExhausted(message){return!isCursorProviderMessage(message)||message.stopReason!=="error"||!/resource.?exhausted/i.test(message.errorMessage||"")?!1:!(cursorZeroTokenCount(message)>0)}function shouldSkipProviderFallbackForCursorZeroRe(options){return options?.sameModelRemint===!0}function shouldRetryOverflowWithoutCompact(compacted,errorMessage){return compacted?!1:/Nothing to compact/i.test(errorMessage||"")}function cursorOverflowCompactionSettings(settings,provider,reason){return reason!=="overflow"||provider!=="cursor"&&provider!=="cursor-cli-oauth"?settings:{...settings,keepRecentTokens:0,restorationEnabled:!1}}var ANTHROPIC_POLICY_REFUSAL_PATTERN=/This request triggered restrictions on [\s\S]+? and was blocked under Anthropic's Usage Policy\b/i;function isClassifierRefusal(message){return message.stopReason!=="error"&&message.stopReason!=="toolUse"?!1:message.stopDetails?.type==="refusal"||message.stopDetails?.type==="sensitive"?!0:message.errorMessage?ANTHROPIC_POLICY_REFUSAL_PATTERN.test(message.errorMessage):!1}var TOOL_RESULT_PLACEHOLDER="Tool output unavailable (context compacted)";function incompleteToolCallRetryText(name,errorMessage){return errorMessage!==void 0?`${errorMessage}${errorMessage.endsWith(".")?"":"."} Re-issue the tool call with complete arguments.`:`Tool call "${name}" was not executed: the response ended before the tool call was complete. Re-issue the tool call with complete arguments.`}function repairOrphanedToolResults(messages){let toolCallIds=new Set,toolResultIds=new Set;for(let message of messages){if(message.role==="assistant")for(let block of message.content)block.type==="toolCall"&&toolCallIds.add(block.id);message.role==="toolResult"&&toolResultIds.add(message.toolCallId)}let output=[],dangling=new Set([...toolCallIds].filter(id=>!toolResultIds.has(id)));for(let message of messages){if(message.role==="toolResult"){if(!toolCallIds.has(message.toolCallId)){output.push({...message,content:[{type:"text",text:TOOL_RESULT_PLACEHOLDER}]});continue}output.push(message);continue}if(output.push(message),message.role==="assistant"){if(message.stopReason==="error"||message.stopReason==="aborted")continue;for(let block of message.content){if(block.type!=="toolCall"||!dangling.has(block.id))continue;let incomplete=block.incomplete===!0,text=incomplete?incompleteToolCallRetryText(block.name,block.errorMessage):TOOL_RESULT_PLACEHOLDER;output.push({role:"toolResult",toolCallId:block.id,toolName:block.name,content:[{type:"text",text}],isError:incomplete,timestamp:message.timestamp?message.timestamp+1:Date.now()}),dangling.delete(block.id)}}}return output}function StringEnum(values,options){return typebox_exports.Unsafe({type:"string",enum:values,...options?.description&&{description:options.description},...options?.default&&{default:options.default}})}var INVISIBLE_FORMAT_CHARS=new RegExp("\\p{Cf}","gu");function hasVisibleText(text){return text.replace(INVISIBLE_FORMAT_CHARS,"").trim().length>0}function hasVisibleAssistantContent(message){return message.content.some(block=>block.type==="toolCall"||block.type==="text"&&hasVisibleText(block.text))}export{create,messageDesc,fromBinary,fileDesc,toBinary,measureCursorModelInputSerializedBytes,measureCursorHistorySerializedBytes,piReadArgs,piLsPath,piLimit,piTimeout,composeShellCommand,omitUndefinedArgs,registerPromptCacheWarmer,warmPromptCache,fauxText,fauxThinking,fauxToolCall,fauxAssistantMessage,createFauxCore,getRegisteredFauxProvider,fauxOverflowError,fauxProvider,installProviderScopeAccessor,registerApiProvider,registerBuiltinApiProvider,getApiProvider,getApiProviders,unregisterApiProviders,clearApiProviders,envApiKeyAuth,lazyOAuth,CURSOR_MODEL_CAPABILITIES,parseCursorVariantId,getCursorVariantAlias,getCursorBaseIdForVariant,getCursorCapabilityForBase,deriveCursorVariantAliases,normalizeCursorCatalog,resolveCursorSelectionDescriptor,renderCursorCliModelString,parseEndpointReasoningEfforts,modelSupportsAssistantPrefill,createXtmlRecoveryStreamParser,wrapStreamWithInvokeRecovery,Compile,compile_exports,registerToolArgumentValidator,validateToolCall,validateToolArguments,require_dist,getProtocol,transformContext,wrapStreamWithToolCallMiddleware,getToolCallFormat,shouldRecoverTextToolCalls,hasKimiTextToolCallRecovery,wrapStreamWithModelRecovery,AssistantMessageFrameEncoder,reduceAssistantMessageFrames,kCursorExecResolved,isCursorExecResolved,copyCursorExecResolved,dropFailedAssistantTurns,isContextOverflow,isRecoverableLength,getOverflowPatterns,isCursorPayloadResourceExhausted,isCursorQuotaResourceExhausted,isCursorZeroTokenResourceExhausted,shouldSkipProviderFallbackForCursorZeroRe,shouldRetryOverflowWithoutCompact,cursorOverflowCompactionSettings,isClassifierRefusal,TOOL_RESULT_PLACEHOLDER,repairOrphanedToolResults,StringEnum,hasVisibleText,hasVisibleAssistantContent};