@code-yeongyu/senpi 2026.11.13 → 2026.11.15-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.
- package/CHANGELOG.md +45 -0
- package/dist/bundle/chunks/{args-H56W53X6.js → args-JWBI5LNO.js} +1 -1
- package/dist/bundle/chunks/{azure-openai-responses-MNN2TINI.js → azure-openai-responses-PEMLRPJ5.js} +1 -1
- package/dist/bundle/chunks/{chunk-HZQHA4PA.js → chunk-3RILB2OD.js} +1 -1
- package/dist/bundle/chunks/{chunk-BKDXY6EM.js → chunk-5NECOJNK.js} +1 -1
- package/dist/bundle/chunks/{chunk-Y4PFEXFN.js → chunk-64FJ4QQJ.js} +1 -1
- package/dist/bundle/chunks/chunk-6QQL3SKM.js +2 -0
- package/dist/bundle/chunks/{chunk-7T2LAWZ4.js → chunk-73HGQTJN.js} +1 -1
- package/dist/bundle/chunks/{chunk-U4FAWC6C.js → chunk-74HCKLRH.js} +1 -1
- package/dist/bundle/chunks/chunk-75O3CWR5.js +2 -0
- package/dist/bundle/chunks/{chunk-AZ27TE3H.js → chunk-7BX3JQ7F.js} +1 -1
- package/dist/bundle/chunks/{chunk-NDI6N4NJ.js → chunk-7CXLNKEH.js} +1 -1
- package/dist/bundle/chunks/{chunk-E6ZBTSC6.js → chunk-A3LGSX7Z.js} +1 -1
- package/dist/bundle/chunks/chunk-AH2YAO7R.js +2 -0
- package/dist/bundle/chunks/{chunk-6FE42M54.js → chunk-BMADOJHZ.js} +2 -2
- package/dist/bundle/chunks/{chunk-7GD2EO6T.js → chunk-FYVQEZYN.js} +1 -1
- package/dist/bundle/chunks/{chunk-EQT4WNCW.js → chunk-HTWWKJJI.js} +2 -2
- package/dist/bundle/chunks/{chunk-SFACYIB6.js → chunk-IK3S2NDB.js} +1 -1
- package/dist/bundle/chunks/{chunk-V4VDIV3U.js → chunk-PWA75RQU.js} +1 -1
- package/dist/bundle/chunks/{chunk-IREUIMFE.js → chunk-PWTXZXHH.js} +1 -1
- package/dist/bundle/chunks/{chunk-KKB3K5CV.js → chunk-Q4RJ4WLE.js} +1 -1
- package/dist/bundle/chunks/{chunk-NXGSYUMV.js → chunk-QSU2456D.js} +2 -2
- package/dist/bundle/chunks/chunk-QVG5SUSV.js +2 -0
- package/dist/bundle/chunks/chunk-RLIY3AUC.js +2 -0
- package/dist/bundle/chunks/{chunk-I4N2OIY4.js → chunk-RRFDLGX6.js} +26 -26
- package/dist/bundle/chunks/{chunk-JLCZIEBC.js → chunk-THYIV26N.js} +1 -1
- package/dist/bundle/chunks/{chunk-NI2AOYP6.js → chunk-TPLEPLEB.js} +3 -2
- package/dist/bundle/chunks/{chunk-CU6HUYL7.js → chunk-WAGFTIT4.js} +1 -1
- package/dist/bundle/chunks/{chunk-UYPH6RHY.js → chunk-Z4PN2MDA.js} +2 -2
- package/dist/bundle/chunks/{chunk-JJYN347Z.js → chunk-ZJUL5ODW.js} +1 -1
- package/dist/bundle/chunks/{cli-main-MY53RXU3.js → cli-main-GNQY2LTU.js} +1 -1
- package/dist/bundle/chunks/credential-accounts-RXZIUKFM.js +2 -0
- package/dist/bundle/chunks/github-copilot.js +1 -1
- package/dist/bundle/chunks/{hand-entry-AXTVMVJK.js → hand-entry-D3DNH6XL.js} +1 -1
- package/dist/bundle/chunks/{headless-host-SU5O2KZ2.js → headless-host-OEK6W65T.js} +1 -1
- package/dist/bundle/chunks/{health-write-TN7EXGLI.js → health-write-44JERGEJ.js} +1 -1
- package/dist/bundle/chunks/{help-fast-path-TFQ4HJNO.js → help-fast-path-JWHUCE4E.js} +1 -1
- package/dist/bundle/chunks/{host-command-FG56Y53E.js → host-command-O2K2WIPO.js} +1 -1
- package/dist/bundle/chunks/{host-session-command-UFEOW7EP.js → host-session-command-K3MR6RJY.js} +1 -1
- package/dist/bundle/chunks/interactive-mode-ATBPY4M5.js +2 -0
- package/dist/bundle/chunks/{login-health-XBTIORM4.js → login-health-V4B6LSCP.js} +1 -1
- package/dist/bundle/chunks/main-OMFVSMUR.js +2 -0
- package/dist/bundle/chunks/{multi-session-host-Q6SHI22A.js → multi-session-host-ACQ5N4UB.js} +6 -6
- package/dist/bundle/chunks/openai-codex-responses-G7ZXJBU6.js +10 -0
- package/dist/bundle/chunks/openai-responses-3TAF7WQF.js +5 -0
- package/dist/bundle/chunks/{package-manager-cli-LILAWI3Q.js → package-manager-cli-2VMRV4HL.js} +3 -3
- package/dist/bundle/chunks/{role-KODRTWH5.js → role-BTH5PVME.js} +1 -1
- package/dist/bundle/chunks/{rotation-stream-2KNROTYB.js → rotation-stream-ZGPXLY62.js} +1 -1
- package/dist/bundle/chunks/rpc-mode-XUK5SYKH.js +2 -0
- package/dist/bundle/chunks/{run-attached-tui-OEFHV5CZ.js → run-attached-tui-RVVYEINN.js} +1 -1
- package/dist/bundle/chunks/{schedule-command-VO4RP2KX.js → schedule-command-6TAAG2KU.js} +1 -1
- package/dist/bundle/chunks/{session-control-endpoint-CCVRJHSC.js → session-control-endpoint-Y5EIFFPY.js} +1 -1
- package/dist/bundle/chunks/{session-picker-VN5I2ZDI.js → session-picker-PRSZJYY4.js} +1 -1
- package/dist/bundle/chunks/session-slot-N4E4OSCX.js +2 -0
- package/dist/bundle/chunks/session-worker.js +74 -72
- package/dist/bundle/chunks/{state-store-7RVODZJU.js → state-store-I6MUHET3.js} +1 -1
- package/dist/bundle/cli.js +2 -2
- package/dist/bundle/index.js +1 -1
- package/dist/bundle/rpc-entry.js +1 -1
- package/dist/bundle/runtime-manifest.json +1 -1
- package/dist/core/agent-session-runtime.js +3 -3
- package/dist/core/agent-session.d.ts +5 -3
- package/dist/core/agent-session.js +20 -8
- package/dist/core/credential-accounts.d.ts +5 -3
- package/dist/core/credential-accounts.js +8 -6
- package/dist/core/credential-pool/classify.js +5 -1
- package/dist/core/extensions/builtin/anthropic-subscription/content-blocks.d.ts +6 -0
- package/dist/core/extensions/builtin/anthropic-subscription/content-blocks.js +14 -0
- package/dist/core/extensions/builtin/anthropic-subscription/prompt-bridge.js +3 -1
- package/dist/core/extensions/builtin/anthropic-subscription/session-sync.js +4 -1
- package/dist/core/extensions/builtin/permission-system/index.js +6 -1
- package/dist/core/extensions/loader.js +17 -1
- package/dist/core/extensions/runner.js +16 -2
- package/dist/core/extensions/tool-call-signal.d.ts +8 -0
- package/dist/core/extensions/tool-call-signal.js +14 -0
- package/dist/core/extensions/two-sided-forwarding.d.ts +6 -0
- package/dist/core/extensions/types.d.ts +26 -1
- package/dist/core/extensions/types.js +10 -0
- package/dist/core/reasoning-baseline.d.ts +8 -1
- package/dist/core/reasoning-baseline.js +24 -0
- package/dist/core/retry-fallback/chains.js +5 -1
- package/dist/core/retry-fallback/controller.d.ts +6 -1
- package/dist/core/retry-fallback/controller.js +11 -3
- package/dist/core/retry-fallback/expansion.js +18 -4
- package/dist/core/retry-fallback/settings.d.ts +7 -6
- package/dist/core/retry-fallback/settings.js +9 -8
- package/dist/core/runtime/bootstrap.d.ts +3 -0
- package/dist/core/runtime/bootstrap.js +1 -0
- package/dist/core/session-cwd.d.ts +15 -1
- package/dist/core/session-cwd.js +22 -1
- package/dist/core/tools/bash.d.ts +12 -0
- package/dist/core/tools/bash.js +30 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +3 -0
- package/dist/modes/rpc/connection-handler.js +4 -0
- package/dist/modes/rpc/method-classes-schema-session.d.ts +3 -0
- package/dist/modes/rpc/method-classes-schema-session.js +6 -2
- package/dist/modes/rpc/method-classes-schema.d.ts +3 -0
- package/dist/modes/rpc/project-expected-cwd.d.ts +29 -0
- package/dist/modes/rpc/project-expected-cwd.js +45 -0
- package/dist/modes/rpc/rpc-error-types.d.ts +7 -1
- package/dist/modes/rpc/rpc-error-types.js +6 -0
- package/dist/modes/rpc/rpc-session-command-types.d.ts +3 -0
- package/dist/modes/rpc/session-router-close.js +6 -1
- package/dist/modes/rpc/session-router-open.js +5 -0
- package/dist/modes/rpc/session-status.d.ts +1 -1
- package/dist/modes/rpc/session-status.js +2 -0
- package/dist/package-manager-cli.d.ts +14 -0
- package/dist/package-manager-cli.js +20 -4
- package/dist/utils/version-check.d.ts +10 -7
- package/dist/utils/version-check.js +24 -5
- package/docs/extensions.md +12 -0
- package/docs/rpc.md +28 -13
- package/docs/settings.md +1 -1
- package/package.json +7 -7
- package/dist/bundle/chunks/chunk-GLTOBXZY.js +0 -2
- package/dist/bundle/chunks/chunk-PBUV2Z3R.js +0 -2
- package/dist/bundle/chunks/chunk-WRBOKYPS.js +0 -2
- package/dist/bundle/chunks/chunk-YT2ZSZOY.js +0 -2
- package/dist/bundle/chunks/credential-accounts-ZB5IXHIG.js +0 -2
- package/dist/bundle/chunks/interactive-mode-PHES47E3.js +0 -2
- package/dist/bundle/chunks/main-PR4FI6HQ.js +0 -2
- package/dist/bundle/chunks/openai-codex-responses-VRGOAFEG.js +0 -10
- package/dist/bundle/chunks/openai-responses-I7PXRWCM.js +0 -4
- package/dist/bundle/chunks/rpc-mode-CGVK4SSA.js +0 -2
- package/dist/bundle/chunks/session-slot-GHJVOSG7.js +0 -2
|
@@ -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{hasFunctions,realmRegistryLookup}from"./chunk-XDEZA6U6.js";import{isOpenAIResponsesPromptCacheModel}from"./chunk-
|
|
2
|
+
import{hasFunctions,realmRegistryLookup}from"./chunk-XDEZA6U6.js";import{isOpenAIResponsesPromptCacheModel}from"./chunk-PWTXZXHH.js";import{SERVER_FALLBACK_ABORTED_DIAGNOSTIC,parseServerFallbackReceipt,withGzipRequestBodies}from"./chunk-Z6TEQEZO.js";import{getAnthropicCompat,supportsAnthropicCacheWarming}from"./chunk-ZG3MNTNX.js";import{parseStreamingJson}from"./chunk-3W47LTXQ.js";import{contentText,createProvider,getCurrentSystemPrompt,getCurrentTools,getInitialSystemMessage,getSystemMessageText,normalizeContext}from"./chunk-OH5TKHW7.js";import{AssistantMessageEventStream,assistantEvents,carryAssistantCapture,createAssistantMessageEventStream,dropAssistantCapture,enableAssistantCapture,getAssistantCapture,pushAssistantProgress,setAssistantReader}from"./chunk-NDNQ23SK.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
|
`)?`
|
|
@@ -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{DynamicBorder,getEditorTheme,keyDisplayText,keyHint,observeVisibleStderrWrites,rawKeyHint,restoreStderr,sharedMarkdownTheme,takeOverStderr,theme}from"./chunk-BKDXY6EM.js";import{usageLimitScope}from"./chunk-HKCFMDJN.js";import{userWordBlocks}from"./chunk-E6ZBTSC6.js";import{isWSL}from"./chunk-ULWRGKP2.js";import{signalSpawnedChild}from"./chunk-KLAX467B.js";import{appendHiddenTuiStdout}from"./chunk-EUCZC2RF.js";import{CURSOR_MARKER,Container,Editor,Input,Markdown,MouseRegion,ProcessTerminal,ScrollView,Spacer,Text,TuiAltScreen,TuiMainScreen,VStack,copyLineSources,getKeybindings,getNativeClipboard,isWarpWslSession,matchesKey,nextRenderRevision,truncateToWidth,visibleWidth}from"./chunk-4PMRUR4L.js";import{redactSensitiveOutput}from"./chunk-62OVOJPI.js";import{SERVER_FALLBACK_ABORTED_DIAGNOSTIC}from"./chunk-Z6TEQEZO.js";import{ACCOUNT_LIMIT_NEXT_STEP_LEAD,describeProviderFailureForUser,stripTurnRetrySuppressionPrefix}from"./chunk-OH5TKHW7.js";import{getDebugLogPath,stripBom}from"./chunk-SODMQEHO.js";import{typebox_exports}from"./chunk-MIENF2YK.js";var CODEX_OPTION=typebox_exports.Object({label:typebox_exports.String({description:"User-facing label (1-5 words)."}),description:typebox_exports.String({description:"One short sentence explaining impact/tradeoff if selected."})},{additionalProperties:!1}),CODEX_QUESTION=typebox_exports.Object({id:typebox_exports.String({pattern:"^[a-z][a-z0-9]*(_[a-z0-9]+)*$",description:"Stable identifier for mapping answers (snake_case)."}),header:typebox_exports.String({minLength:1,maxLength:12,description:"Short header label shown in the UI (12 or fewer chars)."}),question:typebox_exports.String({minLength:1,description:"Single-sentence prompt shown to the user."}),options:typebox_exports.Array(CODEX_OPTION,{minItems:2,maxItems:3,description:'Provide 2-3 mutually exclusive choices. Put the recommended option first and suffix its label with "(Recommended)". Do not include an "Other" option in this list; the client will add a free-form "Other" option automatically.'}),multiSelect:typebox_exports.Optional(typebox_exports.Boolean({description:"Set to true to allow the user to select multiple options instead of just one."}))},{additionalProperties:!1}),CODEX_PARAMS=typebox_exports.Object({questions:typebox_exports.Array(CODEX_QUESTION,{minItems:1,maxItems:3,description:"Questions to show the user. Prefer 1 and do not exceed 3"}),wait_for_answer:typebox_exports.Boolean({description:"Set true to pause here until the user answers; set false to keep working and receive the answer later as a user message."}),required:typebox_exports.Optional(typebox_exports.Boolean({description:"Set true when the answer decides whether you take an action (for example, which of two irreversible paths to take, or whether to proceed): with no answer, that action is not taken."}))},{additionalProperties:!1}),CLAUDE_OPTION=typebox_exports.Object({label:typebox_exports.String({description:"The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice."}),description:typebox_exports.Optional(typebox_exports.String({description:"Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications."}))}),CLAUDE_QUESTION=typebox_exports.Object({question:typebox_exports.String({minLength:1,description:'The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"'}),header:typebox_exports.String({minLength:1,maxLength:12,description:'Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".'}),options:typebox_exports.Optional(typebox_exports.Array(CLAUDE_OPTION,{minItems:2,maxItems:4,description:"The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no Other option, that will be provided automatically."})),multiSelect:typebox_exports.Boolean({description:"Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive."})}),CLAUDE_PARAMS=typebox_exports.Object({questions:typebox_exports.Array(CLAUDE_QUESTION,{minItems:1,maxItems:4,description:"Questions to ask the user (1-4 questions)"}),waitForAnswer:typebox_exports.Boolean({description:"Set true to pause here until the user answers; set false to keep working and receive the answer later as a user message."}),required:typebox_exports.Optional(typebox_exports.Boolean({description:"Set true when the answer decides whether you take an action (for example, which of two irreversible paths to take, or whether to proceed): with no answer, that action is not taken."}))});var WAIT_FLAG_STEER_TEXT="This call omitted wait_for_answer (or waitForAnswer). Set true to pause here until the user answers, false to keep working and receive the answer later as a user message.",DEFAULT_ASK_USER_TIMEOUT_MS=1800*1e3,HEADER_MAX=12,SNAKE_CASE=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/,LIMITS={codex:{maxQuestions:3,minOptions:2,maxOptions:3,optionsRequired:!0},claude:{maxQuestions:4,minOptions:2,maxOptions:4,optionsRequired:!1}},AskUserSchemaError=class extends Error{constructor(message){super(message),this.name="AskUserSchemaError"}};function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function readWaitFlag(variant,args){let value=args[variant==="codex"?"wait_for_answer":"waitForAnswer"];if(typeof value!="boolean")throw new AskUserSchemaError(WAIT_FLAG_STEER_TEXT);return value}function parseOptions(raw,min,max,required,requireDescription){if(raw===void 0){if(required)throw new AskUserSchemaError(`options must contain ${min} to ${max} items`);return[]}if(!Array.isArray(raw))throw new AskUserSchemaError("options must be an array");if(raw.length<min||raw.length>max)throw new AskUserSchemaError(required?`options must contain ${min} to ${max} items`:`options must contain ${min} to ${max} items when present`);let options=[];for(let item of raw){if(!isRecord(item))throw new AskUserSchemaError("each option must be an object");let label=typeof item.label=="string"?item.label.trim():"";if(label.length===0)throw new AskUserSchemaError("option label must be non-empty");let description=typeof item.description=="string"?item.description.trim():void 0;if(requireDescription&&(description===void 0||description.length===0))throw new AskUserSchemaError("option description is required");options.push(description===void 0||description.length===0?{label}:{label,description})}return options}function parseQuestion(variant,raw,index){if(!isRecord(raw))throw new AskUserSchemaError("each question must be an object");let limits=LIMITS[variant],header=typeof raw.header=="string"?raw.header.trim():"";if(header.length===0)throw new AskUserSchemaError("header must be non-empty");if(header.length>HEADER_MAX)throw new AskUserSchemaError("header must be 12 or fewer characters");let question=typeof raw.question=="string"?raw.question.trim():"";if(question.length===0)throw new AskUserSchemaError("question must be non-empty");let options=parseOptions(raw.options,limits.minOptions,limits.maxOptions,limits.optionsRequired,variant==="codex"),id;if(variant==="claude")id=`q${index+1}`;else if(id=typeof raw.id=="string"?raw.id.trim():"",!SNAKE_CASE.test(id))throw new AskUserSchemaError("id must be snake_case");let multiSelect;if(variant==="claude"){if(typeof raw.multiSelect!="boolean")throw new AskUserSchemaError("multiSelect is required");multiSelect=raw.multiSelect}else multiSelect=raw.multiSelect===!0;return{id,header,question,options,multiSelect}}function toCanonical(variant,args,options){if(!isRecord(args))throw new AskUserSchemaError(WAIT_FLAG_STEER_TEXT);let waitForAnswer=readWaitFlag(variant,args);if(args.required!==void 0&&typeof args.required!="boolean")throw new AskUserSchemaError("required must be a boolean when present");let limits=LIMITS[variant];if(!Array.isArray(args.questions)||args.questions.length<1||args.questions.length>limits.maxQuestions)throw new AskUserSchemaError(`questions must contain 1 to ${limits.maxQuestions} items`);return{requestId:options?.requestId??crypto.randomUUID(),questions:args.questions.map((question,index)=>parseQuestion(variant,question,index)),waitForAnswer,timeoutMs:options?.timeoutMs??DEFAULT_ASK_USER_TIMEOUT_MS,...args.required===!0?{required:!0}:{}}}var INLINE_WORDS={comment:text=>text,typed:(_header,text)=>text},reference=label=>`(see [${label}] below)`;function separatedWords(requestId){let words=[],place=(base,text)=>{let taken=words.filter(word=>word.label===base||word.label.startsWith(`${base} (`)).length,label=taken===0?base:`${base} (${taken+1})`;return words.push({label,text}),reference(label)};return{words,comment:text=>place(`The user's comment for question ${requestId}`,text),typed:(header,text)=>place(`The user's answer to ${header} for question ${requestId}`,text)}}function resolveUserWordReferences(text,words){return words.reduce((resolved,word)=>resolved.split(reference(word.label)).join(word.text),text)}function readUserWordBlocks(content){let texts=content.flatMap(block=>block.type==="text"?[block.text]:[]);if(texts.length%2!==0)return;let words=[];for(let index=0;index<texts.length;index+=2){let label=/^\[(.+)\]$/s.exec(texts[index]??"")?.[1],text=texts[index+1];if(label===void 0||text===void 0)return;words.push({label,text})}return words}function headerFor(id,questions){return questions.find(question=>question.id===id)?.header??id}function questionTextFor(id,questions){return questions.find(question=>question.id===id)?.question??id}function typedText(answer){if(answer.selected.length>0)return;let text=answer.text?.trim();return text===void 0||text.length===0?void 0:text}function answerBody(answer,header,words=INLINE_WORDS,offered=[]){if(!answer)return;if(answer.selected.length>0)return answer.selected.join(", ");let text=typedText(answer);if(text!==void 0)return offered.some(option=>option.label===text)?text:words.typed(header,text)}function answeredLines(response,questions,words){let lines=[],seen=new Set;for(let question of questions){let body=answerBody(response.answers[question.id],question.header,words,question.options);body!==void 0&&(lines.push(`${question.header}: ${body}`),seen.add(question.id))}for(let[id,answer]of Object.entries(response.answers)){if(seen.has(id))continue;let header=headerFor(id,questions),body=answerBody(answer,header,words);body!==void 0&&lines.push(`${header}: ${body}`)}return lines}function unansweredLine(response,questions){let unanswered=response.unanswered.map(id=>headerFor(id,questions));return unanswered.length>0?[`Unanswered: ${unanswered.join(", ")}`]:[]}var CANCELLED_BY_USER="The user cancelled the question after answering part of it.",CANCELLED_AFTER_ANSWERS="The question was cancelled after part of it was answered.";function isCancelledWithAnswersLine(line){return line===CANCELLED_BY_USER||line===CANCELLED_AFTER_ANSWERS}function showsPartialAnswers(response){return response.status!=="cancelled"||response.cancelOrigin!=="user"&&response.cancelOrigin!=="ui_failure"?!1:Object.values(response.answers).some(answer=>answerBody(answer,"")!==void 0)}function selectedBlock(prefix,selected){return selected.length===1?[`${prefix} ${selected[0]}`]:[prefix,...selected]}var GATED_NO_ANSWER="No answer: do not take the action it gates. Keep that action pending and end the turn.";function formatGatedNoAnswer(response,questions,words,cancellationReason){let lines=[cancellationReason??(response.status==="timed_out"?`The user did not answer within ${Math.round((response.autoResolvedAfterMs??DEFAULT_ASK_USER_TIMEOUT_MS)/6e4)} minutes. (\uC0AC\uC6A9\uC790\uAC00 \uB2F5\uBCC0\uC744 \uC548\uD558\uACE0 timeout \uC73C\uB85C \uC885\uB8CC\uB428)`:response.status==="cancelled"?"The user dismissed the question.":response.status==="orphaned-after-restart"?"The pending question could not be resumed after a restart.":"This session has no user attached (subagent or headless).")],selected=answeredLines(response,questions,words);return selected.length>0&&lines.push(...selectedBlock("Before going idle the user had selected (not an answer):",selected)),lines.push(GATED_NO_ANSWER),lines.join(`
|
|
2
|
+
import{DynamicBorder,getEditorTheme,keyDisplayText,keyHint,observeVisibleStderrWrites,rawKeyHint,restoreStderr,sharedMarkdownTheme,takeOverStderr,theme}from"./chunk-5NECOJNK.js";import{usageLimitScope}from"./chunk-HKCFMDJN.js";import{userWordBlocks}from"./chunk-A3LGSX7Z.js";import{isWSL}from"./chunk-ULWRGKP2.js";import{signalSpawnedChild}from"./chunk-KLAX467B.js";import{appendHiddenTuiStdout}from"./chunk-EUCZC2RF.js";import{CURSOR_MARKER,Container,Editor,Input,Markdown,MouseRegion,ProcessTerminal,ScrollView,Spacer,Text,TuiAltScreen,TuiMainScreen,VStack,copyLineSources,getKeybindings,getNativeClipboard,isWarpWslSession,matchesKey,nextRenderRevision,truncateToWidth,visibleWidth}from"./chunk-4PMRUR4L.js";import{redactSensitiveOutput}from"./chunk-62OVOJPI.js";import{SERVER_FALLBACK_ABORTED_DIAGNOSTIC}from"./chunk-Z6TEQEZO.js";import{ACCOUNT_LIMIT_NEXT_STEP_LEAD,describeProviderFailureForUser,stripTurnRetrySuppressionPrefix}from"./chunk-OH5TKHW7.js";import{getDebugLogPath,stripBom}from"./chunk-SODMQEHO.js";import{typebox_exports}from"./chunk-MIENF2YK.js";var CODEX_OPTION=typebox_exports.Object({label:typebox_exports.String({description:"User-facing label (1-5 words)."}),description:typebox_exports.String({description:"One short sentence explaining impact/tradeoff if selected."})},{additionalProperties:!1}),CODEX_QUESTION=typebox_exports.Object({id:typebox_exports.String({pattern:"^[a-z][a-z0-9]*(_[a-z0-9]+)*$",description:"Stable identifier for mapping answers (snake_case)."}),header:typebox_exports.String({minLength:1,maxLength:12,description:"Short header label shown in the UI (12 or fewer chars)."}),question:typebox_exports.String({minLength:1,description:"Single-sentence prompt shown to the user."}),options:typebox_exports.Array(CODEX_OPTION,{minItems:2,maxItems:3,description:'Provide 2-3 mutually exclusive choices. Put the recommended option first and suffix its label with "(Recommended)". Do not include an "Other" option in this list; the client will add a free-form "Other" option automatically.'}),multiSelect:typebox_exports.Optional(typebox_exports.Boolean({description:"Set to true to allow the user to select multiple options instead of just one."}))},{additionalProperties:!1}),CODEX_PARAMS=typebox_exports.Object({questions:typebox_exports.Array(CODEX_QUESTION,{minItems:1,maxItems:3,description:"Questions to show the user. Prefer 1 and do not exceed 3"}),wait_for_answer:typebox_exports.Boolean({description:"Set true to pause here until the user answers; set false to keep working and receive the answer later as a user message."}),required:typebox_exports.Optional(typebox_exports.Boolean({description:"Set true when the answer decides whether you take an action (for example, which of two irreversible paths to take, or whether to proceed): with no answer, that action is not taken."}))},{additionalProperties:!1}),CLAUDE_OPTION=typebox_exports.Object({label:typebox_exports.String({description:"The display text for this option that the user will see and select. Should be concise (1-5 words) and clearly describe the choice."}),description:typebox_exports.Optional(typebox_exports.String({description:"Explanation of what this option means or what will happen if chosen. Useful for providing context about trade-offs or implications."}))}),CLAUDE_QUESTION=typebox_exports.Object({question:typebox_exports.String({minLength:1,description:'The complete question to ask the user. Should be clear, specific, and end with a question mark. Example: "Which library should we use for date formatting?" If multiSelect is true, phrase it accordingly, e.g. "Which features do you want to enable?"'}),header:typebox_exports.String({minLength:1,maxLength:12,description:'Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".'}),options:typebox_exports.Optional(typebox_exports.Array(CLAUDE_OPTION,{minItems:2,maxItems:4,description:"The available choices for this question. Must have 2-4 options. Each option should be a distinct, mutually exclusive choice (unless multiSelect is enabled). There should be no Other option, that will be provided automatically."})),multiSelect:typebox_exports.Boolean({description:"Set to true to allow the user to select multiple options instead of just one. Use when choices are not mutually exclusive."})}),CLAUDE_PARAMS=typebox_exports.Object({questions:typebox_exports.Array(CLAUDE_QUESTION,{minItems:1,maxItems:4,description:"Questions to ask the user (1-4 questions)"}),waitForAnswer:typebox_exports.Boolean({description:"Set true to pause here until the user answers; set false to keep working and receive the answer later as a user message."}),required:typebox_exports.Optional(typebox_exports.Boolean({description:"Set true when the answer decides whether you take an action (for example, which of two irreversible paths to take, or whether to proceed): with no answer, that action is not taken."}))});var WAIT_FLAG_STEER_TEXT="This call omitted wait_for_answer (or waitForAnswer). Set true to pause here until the user answers, false to keep working and receive the answer later as a user message.",DEFAULT_ASK_USER_TIMEOUT_MS=1800*1e3,HEADER_MAX=12,SNAKE_CASE=/^[a-z][a-z0-9]*(_[a-z0-9]+)*$/,LIMITS={codex:{maxQuestions:3,minOptions:2,maxOptions:3,optionsRequired:!0},claude:{maxQuestions:4,minOptions:2,maxOptions:4,optionsRequired:!1}},AskUserSchemaError=class extends Error{constructor(message){super(message),this.name="AskUserSchemaError"}};function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function readWaitFlag(variant,args){let value=args[variant==="codex"?"wait_for_answer":"waitForAnswer"];if(typeof value!="boolean")throw new AskUserSchemaError(WAIT_FLAG_STEER_TEXT);return value}function parseOptions(raw,min,max,required,requireDescription){if(raw===void 0){if(required)throw new AskUserSchemaError(`options must contain ${min} to ${max} items`);return[]}if(!Array.isArray(raw))throw new AskUserSchemaError("options must be an array");if(raw.length<min||raw.length>max)throw new AskUserSchemaError(required?`options must contain ${min} to ${max} items`:`options must contain ${min} to ${max} items when present`);let options=[];for(let item of raw){if(!isRecord(item))throw new AskUserSchemaError("each option must be an object");let label=typeof item.label=="string"?item.label.trim():"";if(label.length===0)throw new AskUserSchemaError("option label must be non-empty");let description=typeof item.description=="string"?item.description.trim():void 0;if(requireDescription&&(description===void 0||description.length===0))throw new AskUserSchemaError("option description is required");options.push(description===void 0||description.length===0?{label}:{label,description})}return options}function parseQuestion(variant,raw,index){if(!isRecord(raw))throw new AskUserSchemaError("each question must be an object");let limits=LIMITS[variant],header=typeof raw.header=="string"?raw.header.trim():"";if(header.length===0)throw new AskUserSchemaError("header must be non-empty");if(header.length>HEADER_MAX)throw new AskUserSchemaError("header must be 12 or fewer characters");let question=typeof raw.question=="string"?raw.question.trim():"";if(question.length===0)throw new AskUserSchemaError("question must be non-empty");let options=parseOptions(raw.options,limits.minOptions,limits.maxOptions,limits.optionsRequired,variant==="codex"),id;if(variant==="claude")id=`q${index+1}`;else if(id=typeof raw.id=="string"?raw.id.trim():"",!SNAKE_CASE.test(id))throw new AskUserSchemaError("id must be snake_case");let multiSelect;if(variant==="claude"){if(typeof raw.multiSelect!="boolean")throw new AskUserSchemaError("multiSelect is required");multiSelect=raw.multiSelect}else multiSelect=raw.multiSelect===!0;return{id,header,question,options,multiSelect}}function toCanonical(variant,args,options){if(!isRecord(args))throw new AskUserSchemaError(WAIT_FLAG_STEER_TEXT);let waitForAnswer=readWaitFlag(variant,args);if(args.required!==void 0&&typeof args.required!="boolean")throw new AskUserSchemaError("required must be a boolean when present");let limits=LIMITS[variant];if(!Array.isArray(args.questions)||args.questions.length<1||args.questions.length>limits.maxQuestions)throw new AskUserSchemaError(`questions must contain 1 to ${limits.maxQuestions} items`);return{requestId:options?.requestId??crypto.randomUUID(),questions:args.questions.map((question,index)=>parseQuestion(variant,question,index)),waitForAnswer,timeoutMs:options?.timeoutMs??DEFAULT_ASK_USER_TIMEOUT_MS,...args.required===!0?{required:!0}:{}}}var INLINE_WORDS={comment:text=>text,typed:(_header,text)=>text},reference=label=>`(see [${label}] below)`;function separatedWords(requestId){let words=[],place=(base,text)=>{let taken=words.filter(word=>word.label===base||word.label.startsWith(`${base} (`)).length,label=taken===0?base:`${base} (${taken+1})`;return words.push({label,text}),reference(label)};return{words,comment:text=>place(`The user's comment for question ${requestId}`,text),typed:(header,text)=>place(`The user's answer to ${header} for question ${requestId}`,text)}}function resolveUserWordReferences(text,words){return words.reduce((resolved,word)=>resolved.split(reference(word.label)).join(word.text),text)}function readUserWordBlocks(content){let texts=content.flatMap(block=>block.type==="text"?[block.text]:[]);if(texts.length%2!==0)return;let words=[];for(let index=0;index<texts.length;index+=2){let label=/^\[(.+)\]$/s.exec(texts[index]??"")?.[1],text=texts[index+1];if(label===void 0||text===void 0)return;words.push({label,text})}return words}function headerFor(id,questions){return questions.find(question=>question.id===id)?.header??id}function questionTextFor(id,questions){return questions.find(question=>question.id===id)?.question??id}function typedText(answer){if(answer.selected.length>0)return;let text=answer.text?.trim();return text===void 0||text.length===0?void 0:text}function answerBody(answer,header,words=INLINE_WORDS,offered=[]){if(!answer)return;if(answer.selected.length>0)return answer.selected.join(", ");let text=typedText(answer);if(text!==void 0)return offered.some(option=>option.label===text)?text:words.typed(header,text)}function answeredLines(response,questions,words){let lines=[],seen=new Set;for(let question of questions){let body=answerBody(response.answers[question.id],question.header,words,question.options);body!==void 0&&(lines.push(`${question.header}: ${body}`),seen.add(question.id))}for(let[id,answer]of Object.entries(response.answers)){if(seen.has(id))continue;let header=headerFor(id,questions),body=answerBody(answer,header,words);body!==void 0&&lines.push(`${header}: ${body}`)}return lines}function unansweredLine(response,questions){let unanswered=response.unanswered.map(id=>headerFor(id,questions));return unanswered.length>0?[`Unanswered: ${unanswered.join(", ")}`]:[]}var CANCELLED_BY_USER="The user cancelled the question after answering part of it.",CANCELLED_AFTER_ANSWERS="The question was cancelled after part of it was answered.";function isCancelledWithAnswersLine(line){return line===CANCELLED_BY_USER||line===CANCELLED_AFTER_ANSWERS}function showsPartialAnswers(response){return response.status!=="cancelled"||response.cancelOrigin!=="user"&&response.cancelOrigin!=="ui_failure"?!1:Object.values(response.answers).some(answer=>answerBody(answer,"")!==void 0)}function selectedBlock(prefix,selected){return selected.length===1?[`${prefix} ${selected[0]}`]:[prefix,...selected]}var GATED_NO_ANSWER="No answer: do not take the action it gates. Keep that action pending and end the turn.";function formatGatedNoAnswer(response,questions,words,cancellationReason){let lines=[cancellationReason??(response.status==="timed_out"?`The user did not answer within ${Math.round((response.autoResolvedAfterMs??DEFAULT_ASK_USER_TIMEOUT_MS)/6e4)} minutes. (\uC0AC\uC6A9\uC790\uAC00 \uB2F5\uBCC0\uC744 \uC548\uD558\uACE0 timeout \uC73C\uB85C \uC885\uB8CC\uB428)`:response.status==="cancelled"?"The user dismissed the question.":response.status==="orphaned-after-restart"?"The pending question could not be resumed after a restart.":"This session has no user attached (subagent or headless).")],selected=answeredLines(response,questions,words);return selected.length>0&&lines.push(...selectedBlock("Before going idle the user had selected (not an answer):",selected)),lines.push(GATED_NO_ANSWER),lines.join(`
|
|
3
3
|
`)}function formatGatedCancellation(reason,response,requestId,questions){return formatGatedNoAnswer(response,questions,separatedWords(requestId),reason)}function formatBody(response,questions,words,required=!1){if(required&&response.status!=="answered"&&response.status!=="comment-submitted")return formatGatedNoAnswer(response,questions,words);switch(response.status){case"answered":return[...answeredLines(response,questions,words),...unansweredLine(response,questions)].join(`
|
|
4
4
|
`);case"comment-submitted":{let comment=response.comment?.trim()??"";return[`The user responded: ${comment.length>0?words.comment(comment):""}`,...answeredLines(response,questions,words),...unansweredLine(response,questions)].join(`
|
|
5
5
|
`)}case"timed_out":{let lines=[`The user did not answer within ${Math.round((response.autoResolvedAfterMs??DEFAULT_ASK_USER_TIMEOUT_MS)/6e4)} minutes. (\uC0AC\uC6A9\uC790\uAC00 \uB2F5\uBCC0\uC744 \uC548\uD558\uACE0 timeout \uC73C\uB85C \uC885\uB8CC\uB428)`],selected=answeredLines(response,questions,words);return selected.length>0&&lines.push(...selectedBlock("Before going idle the user had selected:",selected),...unansweredLine(response,questions)),lines.push("Continue the work to completion on your best judgment; do not ask this question again this turn."),lines.join(`
|
|
@@ -1,6 +1,6 @@
|
|
|
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
2
|
import{reportedCount}from"./chunk-GVSBCJFI.js";import{splitDeferredTools}from"./chunk-HK46JMSC.js";import{parseStreamingJson}from"./chunk-3W47LTXQ.js";import{appendGrammarToolInputJsonDelta,getGrammarToolInput,getJsonSchemaToolParameters,resolveGrammarConstrainedSampling,resolveJsonSchemaStrictSampling,shortHash,transformMessages}from"./chunk-UAOOH2V7.js";import{sanitizeSurrogates}from"./chunk-WDTJ6JKE.js";import{calculateCost,getCurrentTools,getDeclaredTools,getSystemMessageText,renderSystemMessageUpdate,resolveTranscript,resolveTranscriptTools,supportsConfigurationUpdate}from"./chunk-OH5TKHW7.js";import{enableAssistantCapture,pushAssistantProgress}from"./chunk-NDNQ23SK.js";function supportsOpenAIResponsesExplicitPromptCacheMode(model){let compat=model.compat;return!compat?.siwc&&compat?.supportsExplicitPromptCacheMode===!0}function isOpenAIResponsesPromptCacheModel(model){if(model.api!=="openai-responses"||!supportsOpenAIResponsesExplicitPromptCacheMode(model))return!1;try{return new URL(model.baseUrl||"https://api.openai.com/v1").hostname==="api.openai.com"}catch{return!1}}function findPromptCacheComparisonResponseId(model,messages){for(let index=messages.length-1;index>=0;index-=1){let message=messages[index];if(message?.role==="assistant"&&!(message.api!==model.api||message.provider!==model.provider||message.model!==model.id)&&!(message.stopReason==="error"||message.stopReason==="aborted")&&typeof message.responseId=="string"&&message.responseId.length>0)return message.responseId.startsWith("resp")?message.responseId:void 0}}function withPromptCacheComparison(options,comparisonResponseId){return comparisonResponseId===void 0?options:{...options,comparison_response_id:comparisonResponseId}}function finiteCount(value){return typeof value=="number"&&Number.isFinite(value)&&value>=0?value:void 0}function parsePromptCacheDiagnostics(raw){if(typeof raw!="object"||raw===null)return;let record=raw;if(typeof record.type!="string"||record.type.length===0)return;let diagnostics={type:record.type};typeof record.reason=="string"&&(diagnostics.reason=record.reason);let cacheMissedTokens=finiteCount(record.cache_missed_tokens);cacheMissedTokens!==void 0&&(diagnostics.cacheMissedTokens=cacheMissedTokens);let comparisonReusableTokens=finiteCount(record.comparison_reusable_tokens);return comparisonReusableTokens!==void 0&&(diagnostics.comparisonReusableTokens=comparisonReusableTokens),diagnostics}var CONTEXT_PROVENANCE_FIELD="__piContextProvenance";function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function getContextProvenance(value){if(!isRecord(value))return;let provenance=value[CONTEXT_PROVENANCE_FIELD];return isRecord(provenance)?provenance:void 0}function copyContextProvenance(source,target){let provenance=getContextProvenance(source);return provenance?Object.assign(target,{[CONTEXT_PROVENANCE_FIELD]:provenance}):target}function contextProvenanceFingerprint(value){if(!isRecord(value))return;let clone={...value};return delete clone[CONTEXT_PROVENANCE_FIELD],JSON.stringify(clone)}function formatResponsesCompletionStall(graceMs){return`Provider stream stalled after the last output item: response.completed timed out after ${graceMs}ms`}var ResponsesCompletionStallError=class extends Error{constructor(graceMs){super(formatResponsesCompletionStall(graceMs)),this.name="ResponsesCompletionStallError",this.graceMs=graceMs}},GRACE_EXPIRED=Symbol("responses-completion-grace-expired");function withResponsesCompletionGrace(source,graceMs=6e4){return{[Symbol.asyncIterator](){let iterator=source[Symbol.asyncIterator](),openItems=0,sawItemDone=!1,finished=!1,observe=event=>{event.type==="response.output_item.added"?openItems++:event.type==="response.output_item.done"&&(openItems=Math.max(0,openItems-1),sawItemDone=!0)},boundedNext=async()=>{let next=iterator.next();if(!sawItemDone||openItems>0||graceMs<=0)return next;let timer,deadline=new Promise(resolve=>{timer=setTimeout(()=>resolve(GRACE_EXPIRED),graceMs)});try{let winner=await Promise.race([next,deadline]);if(winner===GRACE_EXPIRED)throw finished=!0,iterator.return?.().catch(()=>{}),new ResponsesCompletionStallError(graceMs);return winner}finally{timer!==void 0&&clearTimeout(timer)}};return{async next(){if(finished)return{done:!0,value:void 0};let result=await boundedNext();return result.done?finished=!0:observe(result.value),result},async return(value){return finished=!0,await iterator.return?.(value),{done:!0,value:void 0}},async throw(error){if(finished=!0,iterator.throw)return iterator.throw(error);throw error}}}}}function encodeTextSignatureV1(id,phase){let payload={v:1,id};return phase&&(payload.phase=phase),JSON.stringify(payload)}function parseTextSignature(signature){if(signature){if(signature.startsWith("{"))try{let parsed=JSON.parse(signature);if(parsed.v===1&&typeof parsed.id=="string")return parsed.phase==="commentary"||parsed.phase==="final_answer"?{id:parsed.id,phase:parsed.phase}:{id:parsed.id}}catch{}return{id:signature}}}function parseReasoningSignature(signature){if(signature)try{let parsed=JSON.parse(signature);return parsed?.type==="reasoning"?parsed:void 0}catch{return}}function convertToolResultOutput(model,content){let textResult=content.filter(c=>c.type==="text").map(c=>c.text).join(`
|
|
3
|
-
`),images=content.filter(c=>c.type==="image"),hasText=textResult.length>0;if(images.length===0||!model.input.includes("image"))return sanitizeSurrogates(hasText?textResult:images.length>0?"(see attached image)":"(no tool output)");let output=[];hasText&&output.push({type:"input_text",text:sanitizeSurrogates(textResult)});for(let image of images)output.push({type:"input_image",detail:"auto",image_url:`data:${image.mimeType};base64,${image.data}`});return output}var CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL="custom",ULTRAFAST_DOCUMENTED_MODEL_IDS=new Set(["gpt-6-astra","gpt-6.1-sol"]);function isResponseCustomToolCallItem(item){return item.type==="custom_tool_call"}function isFreeformTool(tool){return tool.freeform!==void 0}function isFreeformToolName(toolName,tools){return tools?.some(tool=>tool.name===toolName&&isFreeformTool(tool))??!1}function getFreeformToolInput(argumentsValue){return typeof argumentsValue.input=="string"?argumentsValue.input:JSON.stringify(argumentsValue)}function contextProvenanceForInput(message,seal){let provenance=getContextProvenance(message);if(!provenance)return;let fingerprint=contextProvenanceFingerprint(message);if(fingerprint===void 0)return;let stored=provenance.integrity;return stored===void 0&&seal?(provenance.integrity=fingerprint,provenance):stored===fingerprint?provenance:void 0}function withContextProvenance(item,message,seal){let provenance=contextProvenanceForInput(message,seal);return provenance&&Object.defineProperty(item,CONTEXT_PROVENANCE_FIELD,{value:provenance,enumerable:!1}),item}function resolveResponsesDeferredToolsMode(compat){if(compat?.supportsAdditionalTools)return"additional-tools";if(!compat?.siwc)return compat?.supportsToolSearch?"tool-search":void 0}function resolveResponsesToolPlacement(messages,supportsToolAdditions){let transcriptTools=resolveTranscriptTools(messages,supportsToolAdditions),{deferred}=splitDeferredTools({messages:[...messages],tools:getCurrentTools(messages)},supportsToolAdditions);return{requestTools:transcriptTools.requestTools.filter(tool=>!deferred.has(tool.name)),anchorsAdditions:transcriptTools.anchorsAdditions,deferred}}function convertResponsesMessages(model,context,allowedToolCallProviders,options){let normalizedContext=resolveTranscript(context,options?.supportsMidConvoSystemMessages),messages=[],deferredToolsMode=resolveResponsesDeferredToolsMode(options),toolPlacement=resolveResponsesToolPlacement(normalizedContext.messages,deferredToolsMode!==void 0),declaredTools=getDeclaredTools(normalizedContext.messages),loadedToolNames=new Set,normalizeIdPart=part=>{let sanitized=part.replace(/[^a-zA-Z0-9_-]/g,"_");return(sanitized.length>64?sanitized.slice(0,64):sanitized).replace(/_+$/,"")},buildForeignResponsesItemId=itemId=>{let normalized=`fc_${shortHash(itemId)}`;return normalized.length>64?normalized.slice(0,64):normalized},normalizeToolCallId=(id,_targetModel,source)=>{if(!id.includes("|"))return normalizeIdPart(id);let[callId,itemId]=id.split("|"),normalizedCallId=normalizeIdPart(callId);if(itemId===CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL)return`${normalizedCallId}|${CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL}`;if(!allowedToolCallProviders.has(model.provider))return normalizeIdPart(id);let normalizedItemId=source.provider!==model.provider||source.api!==model.api?buildForeignResponsesItemId(itemId):normalizeIdPart(itemId);return normalizedItemId.startsWith("fc_")||(normalizedItemId=normalizeIdPart(`fc_${normalizedItemId}`)),`${normalizedCallId}|${normalizedItemId}`},transformedMessages=transformMessages(normalizedContext.messages,model,normalizeToolCallId,{preserveThinking:options?.preserveThinking,preserveTextSignatures:options?.preserveTextSignatures}),appendSystemToolAdditions=(message,seed)=>{let tools=toolPlacement.anchorsAdditions?(message.toolsAdded??[]).filter(tool=>!loadedToolNames.has(tool.name)):[];if(tools.length===0)return;for(let tool of tools)loadedToolNames.add(tool.name);if(options?.supportsAdditionalTools){messages.push({type:"additional_tools",role:"developer",tools:convertResponsesTools(tools,options.toolOptions)});return}if(!options?.supportsToolSearch)return;let names=tools.map(tool=>tool.name),callId=`pi_tool_load_${shortHash(`${seed}:${names.join(",")}`)}`;messages.push({type:"tool_search_call",call_id:callId,execution:"client",status:"completed",arguments:{query:names.join(" "),limit:names.length}}),messages.push({type:"tool_search_output",call_id:callId,execution:"client",status:"completed",tools:convertResponsesTools(tools,{...options.toolOptions,toolSearchResult:!0})})},includeInitialSystemMessage=options?.includeSystemPrompt??!0,compat=model.compat,instructionRole=model.compat?.siwc||model.reasoning&&compat?.supportsDeveloperRole!==!1?"developer":"system",msgIndex=0,sourceIndex=0;for(let msg of transformedMessages){let isLeadingSystemMessage=sourceIndex++===0&&msg.role==="system";if(msg.role==="configurationUpdate"){if(!supportsConfigurationUpdate(model))continue;messages[messages.length-1]?.type==="configuration_update"?messages[messages.length-1]={type:"configuration_update",reasoning:{effort:msg.effort}}:messages.push({type:"configuration_update",reasoning:{effort:msg.effort}});continue}if(msg.role==="system"){if(isLeadingSystemMessage||appendSystemToolAdditions(msg,`system:${msgIndex}`),!isLeadingSystemMessage||includeInitialSystemMessage){let text=isLeadingSystemMessage?getSystemMessageText(msg):renderSystemMessageUpdate(msg);if(text.length>0&&isLeadingSystemMessage&&options?.systemPromptCacheBreakpoint===!0){let block={type:"input_text",text:sanitizeSurrogates(text),prompt_cache_breakpoint:{mode:"explicit"}};messages.push({role:instructionRole,content:[block]})}else text.length>0&&messages.push({role:instructionRole,content:sanitizeSurrogates(text)})}}else if(msg.role==="user")if(typeof msg.content=="string")messages.push(withContextProvenance({role:"user",content:[{type:"input_text",text:sanitizeSurrogates(msg.content)}]},msg,options?.sealContextProvenance));else{let content=msg.content.map(item=>item.type==="text"?{type:"input_text",text:sanitizeSurrogates(item.text)}:{type:"input_image",detail:"auto",image_url:`data:${item.mimeType};base64,${item.data}`});if(content.length===0)continue;messages.push(withContextProvenance({role:"user",content},msg,options?.sealContextProvenance))}else if(msg.role==="assistant"){let output=[],assistantMsg=msg,isSameProviderAndApi=assistantMsg.provider===model.provider&&assistantMsg.api===model.api,isSameModel=isSameProviderAndApi&&assistantMsg.model===model.id,isDifferentModel=isSameProviderAndApi&&assistantMsg.model!==model.id,textBlockIndex=0,pushAssistantText=(text,textSignature)=>{let parsedSignature=parseTextSignature(textSignature),fallbackMessageId=textBlockIndex===0?`msg_pi_${msgIndex}`:`msg_pi_${msgIndex}_${textBlockIndex}`;textBlockIndex++;let msgId=parsedSignature?.id;msgId?msgId.length>64&&(msgId=`msg_${shortHash(msgId)}`):msgId=fallbackMessageId,output.push({type:"message",role:"assistant",content:[{type:"output_text",text:sanitizeSurrogates(text),annotations:[]}],status:"completed",id:msgId,phase:parsedSignature?.phase})};for(let block of msg.content)if(block.type==="thinking"){let reasoningItem=parseReasoningSignature(block.thinkingSignature);reasoningItem?output.push(reasoningItem):block.thinkingSignature&&block.thinking.trim()!==""&&pushAssistantText(block.thinking)}else if(block.type==="providerNative"){let raw=block.raw;isSameModel&&block.subtype==="web_search_call"&&raw!==null&&typeof raw=="object"&&"type"in raw&&raw.type==="web_search_call"&&"id"in raw&&typeof raw.id=="string"&&"action"in raw&&"status"in raw&&(raw.status==="completed"||raw.status==="failed")&&output.push(raw)}else if(block.type==="text"){let textBlock=block;pushAssistantText(textBlock.text,textBlock.textSignature)}else if(block.type==="toolCall"){let toolCall=block,[callId,itemIdRaw]=toolCall.id.split("|"),customInputProperty=options?.grammarToolInputProperties?.get(toolCall.name),isPersistedFreeform=itemIdRaw===CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL,isFreeform=isFreeformToolName(toolCall.name,declaredTools)||isPersistedFreeform,itemId=isPersistedFreeform?void 0:itemIdRaw,itemIdPrefix=customInputProperty===void 0?"fc_":"ctc_";(isDifferentModel||!itemId?.startsWith(itemIdPrefix))&&(itemId=void 0);let canReplayNamespace=isSameModel||toolPlacement.deferred.has(toolCall.name);customInputProperty!==void 0?output.push({type:"custom_tool_call",...itemId!==void 0?{id:itemId}:{},call_id:callId,name:toolCall.name,input:sanitizeSurrogates(getGrammarToolInput(toolCall.name,toolCall.arguments,customInputProperty)),...canReplayNamespace&&toolCall.namespace!==void 0?{namespace:toolCall.namespace}:{}}):isFreeform?output.push({type:"custom_tool_call",call_id:callId,name:toolCall.name,input:getFreeformToolInput(toolCall.arguments),...canReplayNamespace&&toolCall.namespace!==void 0?{namespace:toolCall.namespace}:{}}):output.push({type:"function_call",...itemId?.startsWith("fc_")?{id:itemId}:{},call_id:callId,name:toolCall.name,arguments:JSON.stringify(toolCall.arguments),...canReplayNamespace&&toolCall.namespace!==void 0?{namespace:toolCall.namespace}:{}})}if(output.length===0)continue;messages.push(...output.map(item=>withContextProvenance(item,msg,options?.sealContextProvenance)))}else if(msg.role==="toolResult"){let[callId,itemIdRaw]=msg.toolCallId.split("|"),output=convertToolResultOutput(model,msg.content),customInputProperty=options?.grammarToolInputProperties?.get(msg.toolName),isPersistedFreeform=itemIdRaw===CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL;customInputProperty!==void 0?messages.push(withContextProvenance({type:"custom_tool_call_output",call_id:callId,output},msg,options?.sealContextProvenance)):isFreeformToolName(msg.toolName,declaredTools)||isPersistedFreeform?messages.push(withContextProvenance({type:"custom_tool_call_output",call_id:callId,name:msg.toolName,output},msg,options?.sealContextProvenance)):messages.push(withContextProvenance({type:"function_call_output",call_id:callId,output},msg,options?.sealContextProvenance));let deferredTools=[];for(let name of msg.addedToolNames??[]){let tool=toolPlacement.deferred.get(name);!tool||loadedToolNames.has(name)||(loadedToolNames.add(name),deferredTools.push(tool))}if(deferredTools.length>0&&deferredToolsMode==="additional-tools")messages.push(withContextProvenance({type:"additional_tools",role:"developer",tools:convertResponsesTools(deferredTools,options?.toolOptions)},msg,options?.sealContextProvenance));else if(deferredTools.length>0&&deferredToolsMode==="tool-search"){let names=deferredTools.map(tool=>tool.name),searchCallId=`pi_tool_load_${shortHash(`${msg.toolCallId}:${names.join(",")}`)}`;messages.push(withContextProvenance({type:"tool_search_call",call_id:searchCallId,execution:"client",status:"completed",arguments:{query:names.join(" "),limit:names.length}},msg,options?.sealContextProvenance)),messages.push(withContextProvenance({type:"tool_search_output",call_id:searchCallId,execution:"client",status:"completed",tools:convertResponsesTools(deferredTools,{...options?.toolOptions,toolSearchResult:!0})},msg,options?.sealContextProvenance))}}isLeadingSystemMessage||msgIndex++}return messages}function convertResponsesTools(tools,options){let defaultStrict=options?.strict===void 0?!1:options.strict,supportsStrictMode=options?.supportsStrictMode??!0,supportsOpenAIGrammarTools=options?.supportsOpenAIGrammarTools??!1;return[...tools].sort((a,b)=>a.name<b.name?-1:a.name>b.name?1:0).map(tool=>{let grammar=resolveGrammarConstrainedSampling(tool,supportsOpenAIGrammarTools);if(grammar)return{type:"custom",name:tool.name,description:tool.description,format:{type:"grammar",syntax:grammar.format,definition:grammar.definition},...options?.toolSearchResult?{defer_loading:!0}:{}};if(tool.freeform)return{type:"custom",name:tool.name,description:tool.description,format:tool.freeform,...options?.toolSearchResult?{defer_loading:!0}:{}};let strict=resolveJsonSchemaStrictSampling(tool,supportsStrictMode)??defaultStrict,functionTool={type:"function",name:tool.name,description:tool.description,parameters:getJsonSchemaToolParameters(tool,strict===!0),...options?.toolSearchResult?{defer_loading:!0}:{}};return supportsStrictMode&&(functionTool.strict=strict),functionTool})}function getCustomToolCallInput(block){let property=block.customInput?.property;if(property===void 0)return"";let value=block.arguments[property];return typeof value=="string"?value:""}function appendCustomToolCallInput(block,nextInput,close){let customInput=block.customInput;if(!customInput)return;let delta=appendGrammarToolInputJsonDelta(customInput.jsonBuffer,customInput.property,nextInput,close);return block.arguments={[customInput.property]:nextInput},delta}var MAX_NATIVE_IMAGE_BASE64_CHARS=24*1024*1024;function readNativeImageGenerationCall(value){if(!(typeof value!="object"||value===null||!("type"in value)||!("status"in value))&&!(value.type!=="image_generation_call"||typeof value.status!="string"))return{type:"image_generation_call",..."id"in value&&typeof value.id=="string"?{id:value.id}:{},status:value.status,..."result"in value&&(typeof value.result=="string"||value.result===null)?{result:value.result}:{},..."revised_prompt"in value&&typeof value.revised_prompt=="string"?{revised_prompt:value.revised_prompt}:{}}}function isValidBase64(value){return value.length>0&&value.length%4===0&&/^[A-Za-z0-9+/]*={0,2}$/.test(value)}function reconcileNativeImageGenerationCall(item){return item.status!=="completed"?{type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:item.status}:typeof item.result!="string"||!isValidBase64(item.result)?{type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:"malformed"}:{type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:"completed",result:item.result,...item.revised_prompt?.trim()?{revised_prompt:item.revised_prompt}:{}}}async function processResponsesStream(openaiStream,output,stream,model,options){enableAssistantCapture(stream);let sawTerminalResponseEvent=!1,nativeImageBase64Chars=0,outputSlots=new Map,reasoningBlocksById=new Map,nativeImageCharsByOutputIndex=new Map,finalizedNativeImageOutputIndexes=new Set,applyMessagePhaseStopReason=item=>{item.type==="message"&&item.phase==="final_answer"&&(output.stopReason="stop")},getSlot=(outputIndex,type)=>{let slot=outputSlots.get(outputIndex);return slot?.type===type?slot:void 0},pushToolCallDelta=(slot,delta)=>{delta!==void 0&&stream.push({type:"toolcall_delta",contentIndex:slot.contentIndex,delta,partial:output})},createSlot=(outputIndex,item)=>{if(item.type==="reasoning"){let block2={type:"thinking",thinking:""};output.content.push(block2);let slot2={type:"thinking",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"thinking_start",contentIndex:slot2.contentIndex,partial:output}),slot2}if(item.type==="message"){applyMessagePhaseStopReason(item);let block2={type:"text",text:""};output.content.push(block2);let slot2={type:"text",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"text_start",contentIndex:slot2.contentIndex,partial:output}),slot2}if(item.type==="function_call"){let block2={type:"toolCall",id:`${item.call_id}|${item.id}`,name:item.name,arguments:{},...item.namespace!==void 0?{namespace:item.namespace}:{},partialJson:item.arguments||""};output.content.push(block2);let slot2={type:"toolCall",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"toolcall_start",contentIndex:slot2.contentIndex,partial:output},{rawArgumentPrefix:block2.partialJson}),slot2}if(isResponseCustomToolCallItem(item)){let inputProperty=options?.grammarToolInputProperties?.get(item.name)??"input",input=item.input||"",block2={type:"toolCall",id:`${item.call_id}|${item.id??CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL}`,name:item.name,arguments:{[inputProperty]:input},...item.namespace!==void 0?{namespace:item.namespace}:{},customInput:{property:inputProperty,jsonBuffer:{input:"",started:!1,closed:!1}}};output.content.push(block2);let slot2={type:"toolCall",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"toolcall_start",contentIndex:slot2.contentIndex,partial:output}),slot2}let imageItem=readNativeImageGenerationCall(item),block={type:"providerNative",subtype:item.type,raw:imageItem?reconcileNativeImageGenerationCall(imageItem):item},slot={type:"providerNative",block,contentIndex:output.content.length};return imageItem&&reconcileNativeImageSlot(outputIndex,slot,imageItem),output.content.push(block),outputSlots.set(outputIndex,slot),pushAssistantProgress(stream,{type:"message_block_state",contentIndex:slot.contentIndex,phase:"insert",block}),slot},getOrCreateSlot=(outputIndex,item)=>outputSlots.get(outputIndex)??createSlot(outputIndex,item);function scrubNativeImageResults(){for(let block of output.content){if(block.type!=="providerNative"||block.subtype!=="image_generation_call")continue;let item=readNativeImageGenerationCall(block.raw);typeof item?.result=="string"&&(block.raw={type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:"malformed"})}nativeImageBase64Chars=0,nativeImageCharsByOutputIndex.clear()}function reconcileNativeImageSlot(outputIndex,slot,item){let reconciled=reconcileNativeImageGenerationCall(item),previousChars=nativeImageCharsByOutputIndex.get(outputIndex)??0,nextChars=typeof reconciled.result=="string"?reconciled.result.length:0,nextTotal=nativeImageBase64Chars-previousChars+nextChars;if(nextTotal>MAX_NATIVE_IMAGE_BASE64_CHARS)throw scrubNativeImageResults(),new Error("Native image generation results exceed the 24 MiB base64 limit");nativeImageBase64Chars=nextTotal,nextChars>0?nativeImageCharsByOutputIndex.set(outputIndex,nextChars):nativeImageCharsByOutputIndex.delete(outputIndex),slot.block.subtype="image_generation_call",slot.block.raw=reconciled}let backfillNativeImageGenerationCalls=responseOutput=>{for(let[outputIndex,outputItem]of responseOutput.entries()){if(finalizedNativeImageOutputIndexes.has(outputIndex))continue;let imageItem=readNativeImageGenerationCall(outputItem);if(!imageItem)continue;let existingSlot=getSlot(outputIndex,"providerNative"),slot=existingSlot??createSlot(outputIndex,outputItem);existingSlot&&reconcileNativeImageSlot(outputIndex,existingSlot,imageItem),slot&&pushAssistantProgress(stream,{type:"message_block_state",contentIndex:slot.contentIndex,phase:"end",block:slot.block}),outputSlots.delete(outputIndex)}},backfillReasoningSignatures=responseOutput=>{for(let item of responseOutput){if(item.type!=="reasoning"||!item.encrypted_content)continue;let block=reasoningBlocksById.get(item.id);if(!block?.thinkingSignature)continue;let storedItem=parseReasoningSignature(block.thinkingSignature);!storedItem||storedItem.encrypted_content||(block.thinkingSignature=JSON.stringify({...storedItem,encrypted_content:item.encrypted_content}))}},finalizeResponse=response=>{sawTerminalResponseEvent=!0,backfillReasoningSignatures(response.output??[]),backfillNativeImageGenerationCalls(response.output??[]),response?.id&&(output.responseId=response.id);let promptCacheDiagnostics=parsePromptCacheDiagnostics(response?.prompt_cache_diagnostics);if(promptCacheDiagnostics&&(output.promptCacheDiagnostics=promptCacheDiagnostics),response?.usage){let inputDetails=response.usage.input_tokens_details,cachedTokens=inputDetails?.cached_tokens||0,cacheWriteTokens=inputDetails?.cache_write_tokens??inputDetails?.cache_creation_tokens??0,reasoning=reportedCount(response.usage.output_tokens_details?.reasoning_tokens);output.usage={input:Math.max(0,(response.usage.input_tokens||0)-cachedTokens-cacheWriteTokens),output:response.usage.output_tokens||0,cacheRead:cachedTokens,cacheWrite:cacheWriteTokens,...reasoning===void 0?{}:{reasoning},totalTokens:response.usage.total_tokens||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}if(calculateCost(model,output.usage),options?.applyServiceTierPricing){let serviceTier=options.resolveServiceTier?options.resolveServiceTier(response?.service_tier,options.serviceTier):response?.service_tier??options.serviceTier;options.applyServiceTierPricing(output.usage,serviceTier)}let status=response?.status,incompleteDetails=response?.incomplete_details,incompleteReason=typeof incompleteDetails?.reason=="string"?incompleteDetails.reason:void 0;output.rawStopReason=incompleteReason?`${status}.${incompleteReason}`:status;let mappedStop=mapStopReason(status,incompleteReason);output.stopReason=mappedStop.stopReason,mappedStop.errorMessage===void 0?delete output.errorMessage:output.errorMessage=mappedStop.errorMessage,output.content.some(b=>b.type==="toolCall")&&output.stopReason==="stop"&&(output.stopReason="toolUse")};for await(let event of withResponsesCompletionGrace(openaiStream))if(await options?.onProviderStreamEvent?.(event,model),event.type==="response.created")output.responseId=event.response.id;else if(event.type==="response.output_item.added")createSlot(event.output_index,event.item);else if(event.type==="response.reasoning_summary_text.delta"){let slot=getSlot(event.output_index,"thinking");if(!slot)continue;slot.block.thinking+=event.delta,stream.push({type:"thinking_delta",contentIndex:slot.contentIndex,delta:event.delta,partial:output})}else if(event.type==="response.reasoning_summary_part.done"){let slot=getSlot(event.output_index,"thinking");if(!slot)continue;slot.block.thinking+=`
|
|
3
|
+
`),images=content.filter(c=>c.type==="image"),hasText=textResult.length>0;if(images.length===0||!model.input.includes("image"))return sanitizeSurrogates(hasText?textResult:images.length>0?"(see attached image)":"(no tool output)");let output=[];hasText&&output.push({type:"input_text",text:sanitizeSurrogates(textResult)});for(let image of images)output.push({type:"input_image",detail:"auto",image_url:`data:${image.mimeType};base64,${image.data}`});return output}var CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL="custom",ULTRAFAST_DOCUMENTED_MODEL_IDS=new Set(["gpt-6-astra","gpt-6.1-sol"]);function isResponseCustomToolCallItem(item){return item.type==="custom_tool_call"}function isFreeformTool(tool){return tool.freeform!==void 0}function isFreeformToolName(toolName,tools){return tools?.some(tool=>tool.name===toolName&&isFreeformTool(tool))??!1}function getFreeformToolInput(argumentsValue){return typeof argumentsValue.input=="string"?argumentsValue.input:JSON.stringify(argumentsValue)}function contextProvenanceForInput(message,seal){let provenance=getContextProvenance(message);if(!provenance)return;let fingerprint=contextProvenanceFingerprint(message);if(fingerprint===void 0)return;let stored=provenance.integrity;return stored===void 0&&seal?(provenance.integrity=fingerprint,provenance):stored===fingerprint?provenance:void 0}function withContextProvenance(item,message,seal){let provenance=contextProvenanceForInput(message,seal);return provenance&&Object.defineProperty(item,CONTEXT_PROVENANCE_FIELD,{value:provenance,enumerable:!1}),item}function resolveResponsesDeferredToolsMode(compat){if(compat?.supportsAdditionalTools)return"additional-tools";if(!compat?.siwc)return compat?.supportsToolSearch?"tool-search":void 0}function resolveResponsesToolPlacement(messages,supportsToolAdditions){let transcriptTools=resolveTranscriptTools(messages,supportsToolAdditions),{deferred}=splitDeferredTools({messages:[...messages],tools:getCurrentTools(messages)},supportsToolAdditions);return{requestTools:transcriptTools.requestTools.filter(tool=>!deferred.has(tool.name)),anchorsAdditions:transcriptTools.anchorsAdditions,deferred}}function convertResponsesMessages(model,context,allowedToolCallProviders,options){let normalizedContext=resolveTranscript(context,options?.supportsMidConvoSystemMessages),messages=[],deferredToolsMode=resolveResponsesDeferredToolsMode(options),toolPlacement=resolveResponsesToolPlacement(normalizedContext.messages,deferredToolsMode!==void 0),declaredTools=getDeclaredTools(normalizedContext.messages),loadedToolNames=new Set,normalizeIdPart=part=>{let sanitized=part.replace(/[^a-zA-Z0-9_-]/g,"_");return(sanitized.length>64?sanitized.slice(0,64):sanitized).replace(/_+$/,"")},buildForeignResponsesItemId=itemId=>{let normalized=`fc_${shortHash(itemId)}`;return normalized.length>64?normalized.slice(0,64):normalized},normalizeToolCallId=(id,_targetModel,source)=>{if(!id.includes("|"))return normalizeIdPart(id);let[callId,itemId]=id.split("|"),normalizedCallId=normalizeIdPart(callId);if(itemId===CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL)return`${normalizedCallId}|${CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL}`;if(!allowedToolCallProviders.has(model.provider))return normalizeIdPart(id);let normalizedItemId=source.provider!==model.provider||source.api!==model.api?buildForeignResponsesItemId(itemId):normalizeIdPart(itemId);return normalizedItemId.startsWith("fc_")||(normalizedItemId=normalizeIdPart(`fc_${normalizedItemId}`)),`${normalizedCallId}|${normalizedItemId}`},transformedMessages=transformMessages(normalizedContext.messages,model,normalizeToolCallId,{preserveThinking:options?.preserveThinking,preserveTextSignatures:options?.preserveTextSignatures}),appendSystemToolAdditions=(message,seed)=>{let tools=toolPlacement.anchorsAdditions?(message.toolsAdded??[]).filter(tool=>!loadedToolNames.has(tool.name)):[];if(tools.length===0)return;for(let tool of tools)loadedToolNames.add(tool.name);if(options?.supportsAdditionalTools){messages.push({type:"additional_tools",role:"developer",tools:convertResponsesTools(tools,options.toolOptions)});return}if(!options?.supportsToolSearch)return;let names=tools.map(tool=>tool.name),callId=`pi_tool_load_${shortHash(`${seed}:${names.join(",")}`)}`;messages.push({type:"tool_search_call",call_id:callId,execution:"client",status:"completed",arguments:{query:names.join(" "),limit:names.length}}),messages.push({type:"tool_search_output",call_id:callId,execution:"client",status:"completed",tools:convertResponsesTools(tools,{...options.toolOptions,toolSearchResult:!0})})},includeInitialSystemMessage=options?.includeSystemPrompt??!0,compat=model.compat,instructionRole=model.compat?.siwc||model.reasoning&&compat?.supportsDeveloperRole!==!1?"developer":"system",msgIndex=0,sourceIndex=0;for(let msg of transformedMessages){let isLeadingSystemMessage=sourceIndex++===0&&msg.role==="system";if(msg.role==="configurationUpdate"){if(!supportsConfigurationUpdate(model)||model.compat?.siwc)continue;messages[messages.length-1]?.type==="configuration_update"?messages[messages.length-1]={type:"configuration_update",reasoning:{effort:msg.effort}}:messages.push({type:"configuration_update",reasoning:{effort:msg.effort}});continue}if(msg.role==="system"){if(isLeadingSystemMessage||appendSystemToolAdditions(msg,`system:${msgIndex}`),!isLeadingSystemMessage||includeInitialSystemMessage){let text=isLeadingSystemMessage?getSystemMessageText(msg):renderSystemMessageUpdate(msg);if(text.length>0&&isLeadingSystemMessage&&options?.systemPromptCacheBreakpoint===!0){let block={type:"input_text",text:sanitizeSurrogates(text),prompt_cache_breakpoint:{mode:"explicit"}};messages.push({role:instructionRole,content:[block]})}else text.length>0&&messages.push({role:instructionRole,content:sanitizeSurrogates(text)})}}else if(msg.role==="user")if(typeof msg.content=="string")messages.push(withContextProvenance({role:"user",content:[{type:"input_text",text:sanitizeSurrogates(msg.content)}]},msg,options?.sealContextProvenance));else{let content=msg.content.map(item=>item.type==="text"?{type:"input_text",text:sanitizeSurrogates(item.text)}:{type:"input_image",detail:"auto",image_url:`data:${item.mimeType};base64,${item.data}`});if(content.length===0)continue;messages.push(withContextProvenance({role:"user",content},msg,options?.sealContextProvenance))}else if(msg.role==="assistant"){let output=[],assistantMsg=msg,isSameProviderAndApi=assistantMsg.provider===model.provider&&assistantMsg.api===model.api,isSameModel=isSameProviderAndApi&&assistantMsg.model===model.id,isDifferentModel=isSameProviderAndApi&&assistantMsg.model!==model.id,textBlockIndex=0,pushAssistantText=(text,textSignature)=>{let parsedSignature=parseTextSignature(textSignature),fallbackMessageId=textBlockIndex===0?`msg_pi_${msgIndex}`:`msg_pi_${msgIndex}_${textBlockIndex}`;textBlockIndex++;let msgId=parsedSignature?.id;msgId?msgId.length>64&&(msgId=`msg_${shortHash(msgId)}`):msgId=fallbackMessageId,output.push({type:"message",role:"assistant",content:[{type:"output_text",text:sanitizeSurrogates(text),annotations:[]}],status:"completed",id:msgId,phase:parsedSignature?.phase})};for(let block of msg.content)if(block.type==="thinking"){let reasoningItem=parseReasoningSignature(block.thinkingSignature);reasoningItem?output.push(reasoningItem):block.thinkingSignature&&block.thinking.trim()!==""&&pushAssistantText(block.thinking)}else if(block.type==="providerNative"){let raw=block.raw;isSameModel&&block.subtype==="web_search_call"&&raw!==null&&typeof raw=="object"&&"type"in raw&&raw.type==="web_search_call"&&"id"in raw&&typeof raw.id=="string"&&"action"in raw&&"status"in raw&&(raw.status==="completed"||raw.status==="failed")&&output.push(raw)}else if(block.type==="text"){let textBlock=block;pushAssistantText(textBlock.text,textBlock.textSignature)}else if(block.type==="toolCall"){let toolCall=block,[callId,itemIdRaw]=toolCall.id.split("|"),customInputProperty=options?.grammarToolInputProperties?.get(toolCall.name),isPersistedFreeform=itemIdRaw===CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL,isFreeform=isFreeformToolName(toolCall.name,declaredTools)||isPersistedFreeform,itemId=isPersistedFreeform?void 0:itemIdRaw,itemIdPrefix=customInputProperty===void 0?"fc_":"ctc_";(isDifferentModel||!itemId?.startsWith(itemIdPrefix))&&(itemId=void 0);let canReplayNamespace=isSameModel||toolPlacement.deferred.has(toolCall.name);customInputProperty!==void 0?output.push({type:"custom_tool_call",...itemId!==void 0?{id:itemId}:{},call_id:callId,name:toolCall.name,input:sanitizeSurrogates(getGrammarToolInput(toolCall.name,toolCall.arguments,customInputProperty)),...canReplayNamespace&&toolCall.namespace!==void 0?{namespace:toolCall.namespace}:{}}):isFreeform?output.push({type:"custom_tool_call",call_id:callId,name:toolCall.name,input:getFreeformToolInput(toolCall.arguments),...canReplayNamespace&&toolCall.namespace!==void 0?{namespace:toolCall.namespace}:{}}):output.push({type:"function_call",...itemId?.startsWith("fc_")?{id:itemId}:{},call_id:callId,name:toolCall.name,arguments:JSON.stringify(toolCall.arguments),...canReplayNamespace&&toolCall.namespace!==void 0?{namespace:toolCall.namespace}:{}})}if(output.length===0)continue;messages.push(...output.map(item=>withContextProvenance(item,msg,options?.sealContextProvenance)))}else if(msg.role==="toolResult"){let[callId,itemIdRaw]=msg.toolCallId.split("|"),output=convertToolResultOutput(model,msg.content),customInputProperty=options?.grammarToolInputProperties?.get(msg.toolName),isPersistedFreeform=itemIdRaw===CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL;customInputProperty!==void 0?messages.push(withContextProvenance({type:"custom_tool_call_output",call_id:callId,output},msg,options?.sealContextProvenance)):isFreeformToolName(msg.toolName,declaredTools)||isPersistedFreeform?messages.push(withContextProvenance({type:"custom_tool_call_output",call_id:callId,name:msg.toolName,output},msg,options?.sealContextProvenance)):messages.push(withContextProvenance({type:"function_call_output",call_id:callId,output},msg,options?.sealContextProvenance));let deferredTools=[];for(let name of msg.addedToolNames??[]){let tool=toolPlacement.deferred.get(name);!tool||loadedToolNames.has(name)||(loadedToolNames.add(name),deferredTools.push(tool))}if(deferredTools.length>0&&deferredToolsMode==="additional-tools")messages.push(withContextProvenance({type:"additional_tools",role:"developer",tools:convertResponsesTools(deferredTools,options?.toolOptions)},msg,options?.sealContextProvenance));else if(deferredTools.length>0&&deferredToolsMode==="tool-search"){let names=deferredTools.map(tool=>tool.name),searchCallId=`pi_tool_load_${shortHash(`${msg.toolCallId}:${names.join(",")}`)}`;messages.push(withContextProvenance({type:"tool_search_call",call_id:searchCallId,execution:"client",status:"completed",arguments:{query:names.join(" "),limit:names.length}},msg,options?.sealContextProvenance)),messages.push(withContextProvenance({type:"tool_search_output",call_id:searchCallId,execution:"client",status:"completed",tools:convertResponsesTools(deferredTools,{...options?.toolOptions,toolSearchResult:!0})},msg,options?.sealContextProvenance))}}isLeadingSystemMessage||msgIndex++}return messages}function convertResponsesTools(tools,options){let defaultStrict=options?.strict===void 0?!1:options.strict,supportsStrictMode=options?.supportsStrictMode??!0,supportsOpenAIGrammarTools=options?.supportsOpenAIGrammarTools??!1;return[...tools].sort((a,b)=>a.name<b.name?-1:a.name>b.name?1:0).map(tool=>{let grammar=resolveGrammarConstrainedSampling(tool,supportsOpenAIGrammarTools);if(grammar)return{type:"custom",name:tool.name,description:tool.description,format:{type:"grammar",syntax:grammar.format,definition:grammar.definition},...options?.toolSearchResult?{defer_loading:!0}:{}};if(tool.freeform)return{type:"custom",name:tool.name,description:tool.description,format:tool.freeform,...options?.toolSearchResult?{defer_loading:!0}:{}};let strict=resolveJsonSchemaStrictSampling(tool,supportsStrictMode)??defaultStrict,functionTool={type:"function",name:tool.name,description:tool.description,parameters:getJsonSchemaToolParameters(tool,strict===!0),...options?.toolSearchResult?{defer_loading:!0}:{}};return supportsStrictMode&&(functionTool.strict=strict),functionTool})}function getCustomToolCallInput(block){let property=block.customInput?.property;if(property===void 0)return"";let value=block.arguments[property];return typeof value=="string"?value:""}function appendCustomToolCallInput(block,nextInput,close){let customInput=block.customInput;if(!customInput)return;let delta=appendGrammarToolInputJsonDelta(customInput.jsonBuffer,customInput.property,nextInput,close);return block.arguments={[customInput.property]:nextInput},delta}var MAX_NATIVE_IMAGE_BASE64_CHARS=24*1024*1024;function readNativeImageGenerationCall(value){if(!(typeof value!="object"||value===null||!("type"in value)||!("status"in value))&&!(value.type!=="image_generation_call"||typeof value.status!="string"))return{type:"image_generation_call",..."id"in value&&typeof value.id=="string"?{id:value.id}:{},status:value.status,..."result"in value&&(typeof value.result=="string"||value.result===null)?{result:value.result}:{},..."revised_prompt"in value&&typeof value.revised_prompt=="string"?{revised_prompt:value.revised_prompt}:{}}}function isValidBase64(value){return value.length>0&&value.length%4===0&&/^[A-Za-z0-9+/]*={0,2}$/.test(value)}function reconcileNativeImageGenerationCall(item){return item.status!=="completed"?{type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:item.status}:typeof item.result!="string"||!isValidBase64(item.result)?{type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:"malformed"}:{type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:"completed",result:item.result,...item.revised_prompt?.trim()?{revised_prompt:item.revised_prompt}:{}}}async function processResponsesStream(openaiStream,output,stream,model,options){enableAssistantCapture(stream);let sawTerminalResponseEvent=!1,nativeImageBase64Chars=0,outputSlots=new Map,reasoningBlocksById=new Map,nativeImageCharsByOutputIndex=new Map,finalizedNativeImageOutputIndexes=new Set,applyMessagePhaseStopReason=item=>{item.type==="message"&&item.phase==="final_answer"&&(output.stopReason="stop")},getSlot=(outputIndex,type)=>{let slot=outputSlots.get(outputIndex);return slot?.type===type?slot:void 0},pushToolCallDelta=(slot,delta)=>{delta!==void 0&&stream.push({type:"toolcall_delta",contentIndex:slot.contentIndex,delta,partial:output})},createSlot=(outputIndex,item)=>{if(item.type==="reasoning"){let block2={type:"thinking",thinking:""};output.content.push(block2);let slot2={type:"thinking",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"thinking_start",contentIndex:slot2.contentIndex,partial:output}),slot2}if(item.type==="message"){applyMessagePhaseStopReason(item);let block2={type:"text",text:""};output.content.push(block2);let slot2={type:"text",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"text_start",contentIndex:slot2.contentIndex,partial:output}),slot2}if(item.type==="function_call"){let block2={type:"toolCall",id:`${item.call_id}|${item.id}`,name:item.name,arguments:{},...item.namespace!==void 0?{namespace:item.namespace}:{},partialJson:item.arguments||""};output.content.push(block2);let slot2={type:"toolCall",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"toolcall_start",contentIndex:slot2.contentIndex,partial:output},{rawArgumentPrefix:block2.partialJson}),slot2}if(isResponseCustomToolCallItem(item)){let inputProperty=options?.grammarToolInputProperties?.get(item.name)??"input",input=item.input||"",block2={type:"toolCall",id:`${item.call_id}|${item.id??CUSTOM_TOOL_CALL_ITEM_ID_SENTINEL}`,name:item.name,arguments:{[inputProperty]:input},...item.namespace!==void 0?{namespace:item.namespace}:{},customInput:{property:inputProperty,jsonBuffer:{input:"",started:!1,closed:!1}}};output.content.push(block2);let slot2={type:"toolCall",block:block2,contentIndex:output.content.length-1};return outputSlots.set(outputIndex,slot2),stream.push({type:"toolcall_start",contentIndex:slot2.contentIndex,partial:output}),slot2}let imageItem=readNativeImageGenerationCall(item),block={type:"providerNative",subtype:item.type,raw:imageItem?reconcileNativeImageGenerationCall(imageItem):item},slot={type:"providerNative",block,contentIndex:output.content.length};return imageItem&&reconcileNativeImageSlot(outputIndex,slot,imageItem),output.content.push(block),outputSlots.set(outputIndex,slot),pushAssistantProgress(stream,{type:"message_block_state",contentIndex:slot.contentIndex,phase:"insert",block}),slot},getOrCreateSlot=(outputIndex,item)=>outputSlots.get(outputIndex)??createSlot(outputIndex,item);function scrubNativeImageResults(){for(let block of output.content){if(block.type!=="providerNative"||block.subtype!=="image_generation_call")continue;let item=readNativeImageGenerationCall(block.raw);typeof item?.result=="string"&&(block.raw={type:"image_generation_call",...item.id!==void 0?{id:item.id}:{},status:"malformed"})}nativeImageBase64Chars=0,nativeImageCharsByOutputIndex.clear()}function reconcileNativeImageSlot(outputIndex,slot,item){let reconciled=reconcileNativeImageGenerationCall(item),previousChars=nativeImageCharsByOutputIndex.get(outputIndex)??0,nextChars=typeof reconciled.result=="string"?reconciled.result.length:0,nextTotal=nativeImageBase64Chars-previousChars+nextChars;if(nextTotal>MAX_NATIVE_IMAGE_BASE64_CHARS)throw scrubNativeImageResults(),new Error("Native image generation results exceed the 24 MiB base64 limit");nativeImageBase64Chars=nextTotal,nextChars>0?nativeImageCharsByOutputIndex.set(outputIndex,nextChars):nativeImageCharsByOutputIndex.delete(outputIndex),slot.block.subtype="image_generation_call",slot.block.raw=reconciled}let backfillNativeImageGenerationCalls=responseOutput=>{for(let[outputIndex,outputItem]of responseOutput.entries()){if(finalizedNativeImageOutputIndexes.has(outputIndex))continue;let imageItem=readNativeImageGenerationCall(outputItem);if(!imageItem)continue;let existingSlot=getSlot(outputIndex,"providerNative"),slot=existingSlot??createSlot(outputIndex,outputItem);existingSlot&&reconcileNativeImageSlot(outputIndex,existingSlot,imageItem),slot&&pushAssistantProgress(stream,{type:"message_block_state",contentIndex:slot.contentIndex,phase:"end",block:slot.block}),outputSlots.delete(outputIndex)}},backfillReasoningSignatures=responseOutput=>{for(let item of responseOutput){if(item.type!=="reasoning"||!item.encrypted_content)continue;let block=reasoningBlocksById.get(item.id);if(!block?.thinkingSignature)continue;let storedItem=parseReasoningSignature(block.thinkingSignature);!storedItem||storedItem.encrypted_content||(block.thinkingSignature=JSON.stringify({...storedItem,encrypted_content:item.encrypted_content}))}},finalizeResponse=response=>{sawTerminalResponseEvent=!0,backfillReasoningSignatures(response.output??[]),backfillNativeImageGenerationCalls(response.output??[]),response?.id&&(output.responseId=response.id);let promptCacheDiagnostics=parsePromptCacheDiagnostics(response?.prompt_cache_diagnostics);if(promptCacheDiagnostics&&(output.promptCacheDiagnostics=promptCacheDiagnostics),response?.usage){let inputDetails=response.usage.input_tokens_details,cachedTokens=inputDetails?.cached_tokens||0,cacheWriteTokens=inputDetails?.cache_write_tokens??inputDetails?.cache_creation_tokens??0,reasoning=reportedCount(response.usage.output_tokens_details?.reasoning_tokens);output.usage={input:Math.max(0,(response.usage.input_tokens||0)-cachedTokens-cacheWriteTokens),output:response.usage.output_tokens||0,cacheRead:cachedTokens,cacheWrite:cacheWriteTokens,...reasoning===void 0?{}:{reasoning},totalTokens:response.usage.total_tokens||0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}}}if(calculateCost(model,output.usage),options?.applyServiceTierPricing){let serviceTier=options.resolveServiceTier?options.resolveServiceTier(response?.service_tier,options.serviceTier):response?.service_tier??options.serviceTier;options.applyServiceTierPricing(output.usage,serviceTier)}let status=response?.status,incompleteDetails=response?.incomplete_details,incompleteReason=typeof incompleteDetails?.reason=="string"?incompleteDetails.reason:void 0;output.rawStopReason=incompleteReason?`${status}.${incompleteReason}`:status;let mappedStop=mapStopReason(status,incompleteReason);output.stopReason=mappedStop.stopReason,mappedStop.errorMessage===void 0?delete output.errorMessage:output.errorMessage=mappedStop.errorMessage,output.content.some(b=>b.type==="toolCall")&&output.stopReason==="stop"&&(output.stopReason="toolUse")};for await(let event of withResponsesCompletionGrace(openaiStream))if(await options?.onProviderStreamEvent?.(event,model),event.type==="response.created")output.responseId=event.response.id;else if(event.type==="response.output_item.added")createSlot(event.output_index,event.item);else if(event.type==="response.reasoning_summary_text.delta"){let slot=getSlot(event.output_index,"thinking");if(!slot)continue;slot.block.thinking+=event.delta,stream.push({type:"thinking_delta",contentIndex:slot.contentIndex,delta:event.delta,partial:output})}else if(event.type==="response.reasoning_summary_part.done"){let slot=getSlot(event.output_index,"thinking");if(!slot)continue;slot.block.thinking+=`
|
|
4
4
|
|
|
5
5
|
`,stream.push({type:"thinking_delta",contentIndex:slot.contentIndex,delta:`
|
|
6
6
|
|
|
@@ -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{RPC_ERROR_EFFECT_ID_CONFLICT,RPC_ERROR_ENTRY_NOT_FOUND,RPC_ERROR_INVALID_ARGUMENT,RPC_ERROR_RESPONSE_TOO_LARGE,RPC_ERROR_TRANSCRIPT_UNREADABLE,clientMessageIdentity,clientMessageIdentitySchema,readClientMessageIdentity}from"./chunk-WRBOKYPS.js";import{carryExecutionCallKey,compactUpdatesEnabled}from"./chunk-WMDJMN5W.js";import{ProjectTrustStore}from"./chunk-VD7AKTGP.js";import{isAbortGraceInRange}from"./chunk-TQHNFP77.js";import{SecretInputUnavailableError,armSecretInputDeadline,describeUsageLimitEntry,isSecretInputValue,resolveSecretInputTimeout,watchWithErrorHandler}from"./chunk-HKCFMDJN.js";import{isRecord,queuedForm,validMcpFormContent,validateMrtrForm}from"./chunk-MOVB6H22.js";import{COMPACT_EVENTS_CAPABILITY,INTERACTIVE_USER_CAPABILITY,TASK_PARENT_CAPABILITY,hostInstanceId}from"./chunk-IJXKHJYR.js";import{serializeJsonLine}from"./chunk-SF4MQDKZ.js";import{external_exports}from"./chunk-36BLGKRO.js";import{CHAIN_COUNT_LIMIT,ChainCountLimitError,admitChainCall}from"./chunk-NDI6N4NJ.js";import{modelSupportsAssistantPrefill}from"./chunk-SFACYIB6.js";import{hasFunctions,realmRegistry}from"./chunk-XDEZA6U6.js";import{getSupportedThinkingLevels,supportsMax,supportsXhigh}from"./chunk-OH5TKHW7.js";import{sanitizeProviderDiagnostic}from"./chunk-JGKH3D6W.js";import{acquireOwnershipSafeLock}from"./chunk-HW6AAS3R.js";import{CONFIG_DIR_NAME,getAgentDir}from"./chunk-SODMQEHO.js";import{processIsLive,processStartTimeMs,readProcessIdentity}from"./chunk-O5RYI3IW.js";var RELOCATION_TOOL_NAMES=["list_relocation_targets","relocate_session"],RELOCATION_NOT_OFFERED={status:"unavailable",reason:"not_offered",detail:"no app connected to this session offers moving it to another computer"};var SESSION_CONTROL_DELIVERY_TYPE="session_control_delivery";function sessionControlRemoteOriginOf(details){if(!isSessionControlDeliveryDetails(details)||typeof details.remote_origin!="object")return;let origin={...details.remote_origin};if(!(typeof origin.deviceId!="string"||origin.deviceId===""))return typeof origin.deviceName=="string"&&origin.deviceName!==""?{deviceId:origin.deviceId,deviceName:origin.deviceName}:{deviceId:origin.deviceId}}function sessionControlSenderOf(details){if(!isSessionControlDeliveryDetails(details)||typeof details.sender!="object"||details.sender===null)return;let sender={...details.sender},optional=key=>typeof sender[key]=="string"?{[key]:sender[key]}:{};if(sender.kind==="agent"&&typeof sender.session_id=="string")return{kind:"agent",session_id:sender.session_id,...optional("name")};if(sender.kind==="command_line")return{kind:"command_line",...optional("user")};if(sender.kind==="external"&&typeof sender.platform=="string")return{kind:"external",platform:sender.platform,...optional("author")}}function isSessionControlDeliveryDetails(value){return typeof value!="object"||value===null||!("delivery_id"in value)||typeof value.delivery_id!="string"||!("source"in value)||value.source!=="session_control"?!1:"deliverAs"in value&&(value.deliverAs==="steer"||value.deliverAs==="followUp")}var presentations=new Map;function attachMcpGrantPresentation(sessionId,select){let attached=presentations.get(sessionId)??new Set;presentations.set(sessionId,attached);let abort=new AbortController,entry={abort,select:(title,choices,opts)=>select(title,choices,{...opts,signal:opts?.signal===void 0?abort.signal:AbortSignal.any([opts.signal,abort.signal])})};return attached.add(entry),()=>{abort.abort(),attached.delete(entry),attached.size===0&&presentations.delete(sessionId)}}function getMcpGrantPresentation(sessionId){return sessionId===void 0?void 0:presentations.get(sessionId)?.values().next().value?.select}function clearMcpGrantPresentations(sessionId){for(let entry of presentations.get(sessionId)??[])entry.abort.abort();presentations.delete(sessionId)}async function selectMcpGrant(select,title,signal){if(select===void 0||signal?.aborted)return!1;let abort=new AbortController,timeout,cancel=()=>{},stopped=new Promise(resolve2=>{cancel=()=>{abort.abort(),resolve2(void 0)},signal?.addEventListener("abort",cancel,{once:!0}),timeout=setTimeout(cancel,12e4)});try{return await Promise.race([select(title,["Grant and save permanently","Start without them"],{timeout:12e4,signal:abort.signal}),stopped])==="Grant and save permanently"&&!abort.signal.aborted}catch{return!1}finally{clearTimeout(timeout),signal?.removeEventListener("abort",cancel),abort.abort()}}function supportsXhigh2(model){return supportsXhigh(model)}function supportsMax2(model){return supportsMax(model)}function getSupportedThinkingLevels2(model){let supportedLevels=getSupportedThinkingLevels(model);return supportedLevels.length>0?supportedLevels:["off"]}function clampThinkingSelection(selection,requested,level,model){if(selection===void 0)return;let{requested:_staleRequested,clampReason:_staleReason,...base}=selection;return requested===level||model===void 0?{...base,level}:{...base,level,requested,clampReason:model.reasoning?"level-unsupported":"model-not-reasoning"}}function getThinkingClampNotice(selection,model){let clamped=selection;if(!(model===void 0||clamped?.requested===void 0||clamped.clampReason===void 0))return{provider:model.provider,modelId:model.id,requestedLevel:clamped.requested,appliedLevel:clamped.level,reason:clamped.clampReason}}function formatThinkingClampWarning(notice){let model=`${notice.provider}/${notice.modelId}`;return notice.reason==="model-not-reasoning"?`Thinking level "${notice.requestedLevel}" was requested, but ${model} is not marked as a reasoning model, so thinking is "${notice.appliedLevel}". If the model supports reasoning, set "reasoning": true for it in models.json.`:`Thinking level "${notice.requestedLevel}" is not available on ${model}; using "${notice.appliedLevel}".`}function classifyReasoningCapability(model){if(!model.reasoning)return{kind:"none",levels:["off"],nonOffLevels:[]};let levels=getSupportedThinkingLevels2(model),nonOffLevels=levels.filter(level=>level!=="off");return levels.includes("off")?nonOffLevels.length===1?{kind:"on-off",levels,nonOffLevels}:nonOffLevels.length===0?{kind:"none",levels,nonOffLevels}:{kind:"graded",levels,nonOffLevels}:{kind:"always-on",levels,nonOffLevels}}import{AsyncLocalStorage}from"node:async_hooks";var WORD_ROLES=["interactive_user","task_parent","peer_agent"];function maskOfRoles(roles){let mask=0;for(let role of roles){let bit=WORD_ROLES.indexOf(role);bit>=0&&(mask|=1<<bit)}return mask}function rolesOfMask(mask){return WORD_ROLES.filter((_role,bit)=>(mask&1<<bit)!==0)}function decodeWord(word){let mask=word&7;return{epoch:word>>>4,retired:(word&8)!==0,mask,roles:rolesOfMask(mask)}}function packWord(epoch,retired,mask){if(!Number.isSafeInteger(epoch)||epoch<1||epoch>=268435456)throw new Error("authority_epoch_exhausted");return epoch<<4|(retired?8:0)|mask}function createAuthority(incarnation,mask){if(!Number.isSafeInteger(incarnation)||incarnation<1||incarnation>2147483647)throw new Error("authority_incarnation_invalid");let buffer=new SharedArrayBuffer(8),view=new Int32Array(buffer);return view[0]=packWord(1,!1,mask&7),view[1]=incarnation,buffer}function readAuthority(buffer){return decodeWord(Atomics.load(new Int32Array(buffer),0))}function incarnationOf(buffer){return Atomics.load(new Int32Array(buffer),1)}function store(view,word){Atomics.store(view,0,word),Atomics.notify(view,0)}function storeNarrowed(buffer,roles){let view=new Int32Array(buffer),current2=decodeWord(Atomics.load(view,0)),mask=current2.mask&maskOfRoles(roles);return mask===current2.mask?!1:(store(view,packWord(current2.epoch+1,current2.retired,mask)),!0)}function storeRetired(buffer){let view=new Int32Array(buffer),current2=decodeWord(Atomics.load(view,0));return current2.retired?!1:(store(view,packWord(current2.epoch+1,!0,current2.mask)),!0)}function nextIncarnation(k,max=2147483647){return Number.isSafeInteger(k)&&k>=1&&k<max?k+1:void 0}function effectiveRoles(claim,state){return state.retired||claim===void 0?[]:claim.filter(role=>state.roles.includes(role))}var CommandAuthority=class{constructor(connection,descriptor,exec,stale=!1){this.connection=connection,this.descriptor=descriptor,this.exec=exec,this.stale=stale}get incarnation(){return this.descriptor?.incarnation}state(){let buffer=this.descriptor?.mode==="host"?this.descriptor.authority:void 0;if(buffer!==void 0)return this.snapshot??=decodeWord(Atomics.load(new Int32Array(buffer),0)),this.stale?{...this.snapshot,retired:!0}:this.snapshot}has(role,claim){let state=this.state();if(state===void 0)return claim?.includes(role)??!1;let effective=effectiveRoles(claim,state);return this.consulted=effective,effective.includes(role)}receipt(){if(this.exec===void 0)return;let buffer=this.descriptor?.authority,state=this.snapshot??(buffer===void 0?void 0:decodeWord(Atomics.load(new Int32Array(buffer),0)));return{exec:this.exec,incarnation:this.descriptor?.incarnation??null,epoch:state?.epoch??null,roles:this.consulted===void 0?null:[...this.consulted]}}},commandAuthority=new AsyncLocalStorage;function outsideCommand(create){return commandAuthority.exit(create)}function withReceipt(record,target){if(Reflect.get(record,"type")!=="response"||Object.hasOwn(record,"authority"))return record;let store2=commandAuthority.getStore();if(store2===void 0||store2.connection!==target)return record;let authority=store2.receipt();return authority===void 0?record:{...record,authority}}function takeRelayExec(record){if(typeof record!="object"||record===null||!Object.hasOwn(record,"relayExec"))return;let exec=Reflect.get(record,"relayExec");return Reflect.deleteProperty(record,"relayExec"),typeof exec=="number"&&Number.isSafeInteger(exec)&&exec>=1?exec:"malformed"}var BROWSER_ENGINES=["connected","builtin","none"];function isBrowserEngine(value){return BROWSER_ENGINES.some(engine=>engine===value)}function toolBarrierSpecError(value){if(typeof value!="object"||value===null||Array.isArray(value))return"toolBarrier must be an object { id, deadlineMs }.";let{id,deadlineMs}=value;if(typeof id!="string"||id.length===0||id.length>256)return"toolBarrier.id must be a non-empty string of at most 256 characters.";if(typeof deadlineMs!="number"||!Number.isSafeInteger(deadlineMs)||deadlineMs<1||deadlineMs>6e5)return"toolBarrier.deadlineMs must be a whole number of milliseconds in 1..600000."}var ToolBarrier=class{#armed;#onExpired;constructor(onExpired){this.#onExpired=onExpired}arm(spec){let current2=this.#armed;current2&&clearTimeout(current2.timer);let{promise,resolve:resolve2}=Promise.withResolvers(),gate=current2??{opened:promise,open:resolve2},timer=setTimeout(()=>this.#expire(spec.id),spec.deadlineMs);timer.unref?.(),this.#armed={spec:{id:spec.id,deadlineMs:spec.deadlineMs},timer,opened:gate.opened,open:gate.open}}release(id){return this.#armed?.spec.id!==id?!1:(this.#open(),!0)}clear(){this.#armed&&this.#open()}wait(signal){let armed=this.#armed;if(!armed)return;if(!signal)return{id:armed.spec.id,done:armed.opened};if(signal.aborted)return{id:armed.spec.id,done:Promise.resolve()};let aborted=Promise.withResolvers(),onAbort=()=>aborted.resolve();signal.addEventListener("abort",onAbort,{once:!0});let done=Promise.race([armed.opened,aborted.promise]).finally(()=>signal.removeEventListener("abort",onAbort));return{id:armed.spec.id,done}}#expire(id){let armed=this.#armed;armed?.spec.id===id&&(this.#open(),this.#onExpired(armed.spec))}#open(){let armed=this.#armed;armed&&(this.#armed=void 0,clearTimeout(armed.timer),armed.open())}};var SENDER_FIELDS={agent:{required:["session_id"],optional:["name"]},command_line:{required:[],optional:["user"]},external:{required:["platform"],optional:["author"]}},SENDER_SHAPE='sender must be { kind: "agent", session_id, name? }, { kind: "command_line", user? } or { kind: "external", platform, author? }, each value a non-empty string of at most 256 characters.';function boundedId(value){return typeof value=="string"&&value.length>0&&value.length<=256}function isDeliverySender(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;let kind=Reflect.get(value,"kind");if(typeof kind!="string"||!Object.hasOwn(SENDER_FIELDS,kind))return!1;let{required,optional}=SENDER_FIELDS[kind],allowed=new Set(["kind",...required,...optional]);return Object.keys(value).every(key=>allowed.has(key))&&required.every(key=>boundedId(Reflect.get(value,key)))&&optional.every(key=>Reflect.get(value,key)===void 0||boundedId(Reflect.get(value,key)))}function fieldProblem(value,maxTextCharacters){if(!boundedId(value.deliveryId))return"needs deliveryId, a non-empty string of at most 256 characters.";if(typeof value.text!="string"||value.text.trim()===""||value.text.length>maxTextCharacters)return`needs text, a non-empty string of at most ${maxTextCharacters} characters.`;if(value.deliverAs!=="steer"&&value.deliverAs!=="followUp")return'deliverAs must be "steer" or "followUp".';if(value.displayText!==void 0&&(typeof value.displayText!="string"||value.displayText.length>maxTextCharacters))return`displayText must be a string of at most ${maxTextCharacters} characters.`;if(value.expectedTurnId!==void 0&&!boundedId(value.expectedTurnId))return"expectedTurnId must be a non-empty string of at most 256 characters; read it from get_state.currentTurnId.";if(value.chainCount!==void 0&&!(Number.isSafeInteger(value.chainCount)&&value.chainCount>=1))return"chainCount must be a positive integer (1 for a chain's first hop).";if(Object.hasOwn(value,"remote_origin")||Object.hasOwn(value,"remoteOrigin"))return"must not name remote_origin: the engine stamps the device the connection speaks for.";if(value.whenIdle!==void 0&&value.whenIdle!=="start"&&value.whenIdle!=="queue")return'whenIdle must be "start" or "queue"; omit it to start a turn on an idle session.';if(value.sender!==void 0&&!isDeliverySender(value.sender))return SENDER_SHAPE}function admitExternalMessageFieldError(value,maxTextCharacters){if(value.type!=="admit_external_message")return;let problem=fieldProblem(value,maxTextCharacters);return problem===void 0?void 0:`admit_external_message ${problem}`}var nonEmpty=(value,max=256)=>typeof value=="string"&&value.length>0&&value.length<=max,seq=value=>typeof value=="number"&&Number.isInteger(value)&&value>=0,RUN_REF_KINDS=new Set(["dag","task","workpool","team"]);function validRunRef(value){if(typeof value!="object"||value===null)return!1;let ref=value;return typeof ref.kind=="string"&&RUN_REF_KINDS.has(ref.kind)&&nonEmpty(ref.id)}function validatePauseCommand(value){if((value.type==="abort"||value.type==="interrupt")&&value.intent!==void 0&&value.intent!=="stop"&&value.intent!=="abort")return'intent must be "stop" or "abort".';if(value.type==="resume_session"){if(value.expectedSeq!==void 0&&!seq(value.expectedSeq))return"expectedSeq must be a non-negative integer.";if(value.mode!==void 0&&value.mode!=="continue"&&value.mode!=="release")return'mode must be "continue" or "release".';if(value.message!==void 0&&typeof value.message!="string")return"message must be a string.";if(value.effectId!==void 0&&!nonEmpty(value.effectId))return"effectId must be 1-256 characters."}if(value.type==="hold_input"){if(!nonEmpty(value.inputId)||!seq(value.revision)||typeof value.text!="string")return"hold_input needs inputId (1-256 chars), a non-negative integer revision, and text.";if(value.parentSessionId!==void 0&&!nonEmpty(value.parentSessionId))return"parentSessionId must be 1-256 characters.";if(value.origin!==void 0&&value.origin!=="human")return'origin must be "human".'}if(value.type==="withdraw_held_input"&&!nonEmpty(value.inputId))return"withdraw_held_input needs inputId.";if(value.type==="pause_for_run"&&(!nonEmpty(value.parentSessionId)||!seq(value.parentPauseSeq)||!validRunRef(value.runRef)))return"pause_for_run needs parentSessionId, a non-negative integer parentPauseSeq, and runRef { kind, id }.";if(value.type==="resume_for_run"&&(!nonEmpty(value.parentSessionId)||!seq(value.parentPauseSeq)||!nonEmpty(value.resumeId)||!seq(value.childSeqCutoff)))return"resume_for_run needs parentSessionId, parentPauseSeq, resumeId, and childSeqCutoff."}var MAX_RPC_MESSAGE_CHARACTERS=1e6,SESSION_CONTEXT_LIMITS={keys:32,valueBytes:16*1024,totalBytes:32*1024},SESSION_CONTEXT_KEY_PATTERN=/^[a-z][a-z0-9_]*$/;function validContent(content){return typeof content=="string"?!0:Array.isArray(content)&&content.every(item=>{if(typeof item!="object"||item===null)return!1;let value=item;return value.type==="text"?typeof value.text=="string":value.type==="image"&&typeof value.data=="string"&&typeof value.mimeType=="string"})}function validBaseEntry(entry){return typeof entry.id=="string"&&(entry.parentId===null||typeof entry.parentId=="string")&&typeof entry.timestamp=="string"}function validSessionEntry(entry){if(typeof entry!="object"||entry===null||Array.isArray(entry))return!1;let value=entry;if(!validBaseEntry(value))return!1;switch(value.type){case"message":{let message=value.message;if(typeof message!="object"||message===null)return!1;let item=message;return["user","assistant","tool"].includes(item.role)&&validContent(item.content)}case"thinking_level_change":return typeof value.thinkingLevel=="string";case"model_change":return typeof value.provider=="string"&&typeof value.modelId=="string";case"model_change_rejected":return typeof value.provider=="string"&&typeof value.modelId=="string"&&typeof value.detail=="string";case"compaction":return typeof value.summary=="string"&&typeof value.firstKeptEntryId=="string"&&typeof value.tokensBefore=="number";case"branch_summary":return typeof value.fromId=="string"&&typeof value.summary=="string";case"custom":return typeof value.customType=="string";case"custom_message":return typeof value.customType=="string"&&validContent(value.content)&&typeof value.display=="boolean";case"label":return typeof value.targetId=="string"&&(value.label===void 0||typeof value.label=="string");case"session_info":return value.name===void 0||typeof value.name=="string";default:return!1}}function rpcCommandPayloadError(command){if(rpcCommandShapeError(command))return;let value=command;if((value.type==="prompt"||value.type==="steer"||value.type==="follow_up")&&!clientMessageIdentitySchema.safeParse(value).success)return"clientMessageId and clientTurnId must be non-empty strings of at most 256 characters.";if((value.type==="prompt"||value.type==="steer"||value.type==="follow_up")&&value.expectedTurnId!==void 0){if(!(typeof value.expectedTurnId=="string"&&value.expectedTurnId.length>0&&value.expectedTurnId.length<=256))return"expectedTurnId must be a non-empty string of at most 256 characters; read it from get_state.currentTurnId.";if(value.type==="prompt"&&value.streamingBehavior===void 0)return'expectedTurnId on a prompt needs streamingBehavior "steer" or "followUp".'}if(value.type==="prompt"&&value.toolBarrier!==void 0){let barrierError=toolBarrierSpecError(value.toolBarrier);if(barrierError!==void 0)return barrierError}if(value.type==="release_tool_barrier"&&!(typeof value.barrierId=="string"&&value.barrierId.length>0&&value.barrierId.length<=256))return`barrierId must be a non-empty string of at most ${256} characters.`;if((value.type==="dequeue_message"||value.type==="edit_queued_message")&&!(typeof value.queuedId=="string"&&value.queuedId.length>0&&value.queuedId.length<=256))return"queuedId must be a non-empty string of at most 256 characters; read it from get_state or queue_update.";if(value.type==="edit_queued_message"&&!(typeof value.text=="string"&&value.text.length>0&&value.text.length<=MAX_RPC_MESSAGE_CHARACTERS))return`text must be a non-empty string of at most ${MAX_RPC_MESSAGE_CHARACTERS} characters; dequeue_message removes an input.`;if((value.type==="dequeue_message"||value.type==="edit_queued_message")&&value.expectedRevision!==void 0&&!(Number.isSafeInteger(value.expectedRevision)&&value.expectedRevision>=1))return"expectedRevision must be a whole number of at least 1; read it from the input's revision in get_state or queue_update.";if(value.type==="resolve_path"&&!(typeof value.path=="string"&&value.path.trim().length>0&&value.path.length<=4096))return"path must be a non-empty string of at most 4096 characters.";if(value.type==="unload_session"){if(value.children!==void 0&&value.children!=="refuse"&&value.children!=="detach")return'children must be "refuse" or "detach".';for(let flag of["interrupt","clearQueue","force"])if(value[flag]!==void 0&&typeof value[flag]!="boolean")return`${flag} must be a boolean.`}if((value.type==="steer"||value.type==="follow_up")&&value.enqueueOrder!==void 0&&!(typeof value.enqueueOrder=="number"&&Number.isFinite(value.enqueueOrder)))return"enqueueOrder must be a finite number.";if((value.type==="steer"||value.type==="follow_up")&&value.whenIdle!==void 0&&value.whenIdle!=="queue"&&value.whenIdle!=="start")return'whenIdle must be "queue" or "start"; omit it to queue on an idle session.';if((value.type==="abort"||value.type==="set_model"||value.type==="set_thinking_level"||value.type==="get_effect_status")&&(value.effectId!==void 0||value.type==="get_effect_status")&&!(typeof value.effectId=="string"&&value.effectId.length>0&&value.effectId.length<=256))return"effectId must be a non-empty string of at most 256 characters.";let fieldError=validatePauseCommand(value)??admitExternalMessageFieldError(value,MAX_RPC_MESSAGE_CHARACTERS);if(fieldError!==void 0)return fieldError;if(value.type==="get_pending_inputs"&&value.knownClientMessageIds!==void 0){let ids=value.knownClientMessageIds;if(!Array.isArray(ids)||ids.length>64||!ids.every(id=>typeof id=="string"&&id.length>0&&id.length<=256))return"knownClientMessageIds must be an array of at most 64 non-empty strings of at most 256 characters."}if(value.type==="get_effect_status"&&value.sessionPath!==void 0&&typeof value.sessionPath!="string")return"sessionPath must be a string.";if(value.type==="append_user_message"&&!validContent(value.content))return"append_user_message content must be a string or text/image content array.";if(value.type==="append_session_entry"&&!validSessionEntry(value.entry))return"append_session_entry entry is malformed.";if((value.type==="prompt"||value.type==="steer"||value.type==="follow_up")&&typeof value.message!="string")return"message must be a string."}function sessionContextError(context){if(context===void 0)return;if(typeof context!="object"||context===null||Array.isArray(context))return"context must be an object of string values.";let entries=Object.entries(context);if(entries.length>SESSION_CONTEXT_LIMITS.keys)return`context has ${entries.length} keys, at most ${SESSION_CONTEXT_LIMITS.keys} are accepted.`;for(let[key,value]of entries){if(!SESSION_CONTEXT_KEY_PATTERN.test(key))return`context key "${key}" must match ${SESSION_CONTEXT_KEY_PATTERN.source}.`;if(typeof value!="string")return`context value for key "${key}" must be a string.`;let valueBytes=Buffer.byteLength(value);if(valueBytes>SESSION_CONTEXT_LIMITS.valueBytes)return`context value for key "${key}" is ${valueBytes} bytes, at most ${SESSION_CONTEXT_LIMITS.valueBytes} bytes are accepted.`}let totalBytes=Buffer.byteLength(JSON.stringify(context));if(totalBytes>SESSION_CONTEXT_LIMITS.totalBytes)return`context is ${totalBytes} bytes of JSON, at most ${SESSION_CONTEXT_LIMITS.totalBytes} bytes are accepted.`}function sessionKindError(kind){if(!(kind===void 0||kind==="interactive"||kind==="worker"))return'kind must be "interactive" or "worker".'}function sessionAutoTitleError(value){if(!(value===void 0||typeof value=="boolean"))return"auto_title must be a boolean."}function sessionPromptSurfaceError(value){if(!(value===void 0||value==="terminal"||value==="app"||value==="chat"))return'promptSurface must be "terminal", "app" or "chat".'}function sessionBrowserEngineError(value){if(!(value===void 0||isBrowserEngine(value)))return'browserEngine must be "connected", "builtin" or "none".'}var MAX_RETRY_FALLBACK_CHAINS=32,MAX_RETRY_FALLBACK_ENTRIES=32,MAX_RETRY_FALLBACK_SELECTOR_LENGTH=512;function sessionRetryFallbackError(value){if(value===void 0)return;let shape="retryFallback must be { modelFallback: boolean, fallbackChains: Record<string, string[]> }.";if(typeof value!="object"||value===null||Array.isArray(value))return shape;let record=value;if(typeof record.modelFallback!="boolean")return shape;let chains=record.fallbackChains;if(typeof chains!="object"||chains===null||Array.isArray(chains))return shape;let entries=Object.entries(chains);if(entries.length>MAX_RETRY_FALLBACK_CHAINS)return`retryFallback allows at most ${MAX_RETRY_FALLBACK_CHAINS} chains.`;for(let[key,selectors]of entries){if(!isSelector(key)||!Array.isArray(selectors)||!selectors.every(isSelector))return shape;if(selectors.length>MAX_RETRY_FALLBACK_ENTRIES)return`retryFallback allows at most ${MAX_RETRY_FALLBACK_ENTRIES} entries per chain.`}}function isSelector(value){return typeof value=="string"&&value.trim().length>0&&value.length<=MAX_RETRY_FALLBACK_SELECTOR_LENGTH}function rpcCommandShapeError(command){if(typeof command!="object"||command===null||Array.isArray(command))return"RPC command must be a JSON object."}function rpcMessageLengthError(command){if(rpcCommandShapeError(command))return;let input=command;if(!(input.type!=="prompt"&&input.type!=="steer"&&input.type!=="follow_up")&&!(typeof input.message!="string"||input.message.length<=MAX_RPC_MESSAGE_CHARACTERS))return`RPC ${input.type} message exceeds ${MAX_RPC_MESSAGE_CHARACTERS} characters.`}import{createHash as createHash2}from"node:crypto";import{createHash}from"node:crypto";var RPC_EFFECT_ENTRY="rpc_effect",EFFECT_LEDGER_CAPABILITY="effect_ledger",actorSchema=external_exports.object({connectionId:external_exports.string()}),effectOutcomeSchema=external_exports.object({kind:external_exports.enum(["completed","aborted","error","deadline","interrupted_by_reopen","dropped_by_replace","unknown_model","provider_unavailable","unsupported_thinking_level","superseded","context_budget","cleared","cleared_by_abort","already_delivered","not_found","conflict","refused"]),reason:external_exports.string().optional(),detail:external_exports.string().optional(),action:external_exports.string().optional(),abortSource:external_exports.string().optional(),abortedBy:actorSchema.optional()}),rpcEffectRecordSchema=external_exports.object({effectId:external_exports.string().min(1).max(256),kind:external_exports.enum(["abort","unload","set_model","set_thinking_level","dequeue","edit_queued"]),state:external_exports.enum(["accepted","applied","done","failed"]),disposition:external_exports.string().optional(),outcome:effectOutcomeSchema.optional(),answer:external_exports.object({text:external_exports.string().optional(),revision:external_exports.number().int().positive().optional(),currentRevision:external_exports.number().int().positive().optional()}).optional(),by:actorSchema,acceptedAt:external_exports.string(),updatedAt:external_exports.string(),durableSessionId:external_exports.string(),fingerprint:external_exports.string()});function isTerminalEffectState(state){return state==="done"||state==="failed"}var EffectIdConflict=class extends Error{constructor(effectId){super(`effect_id_conflict: effectId ${effectId} was already used for a different request`),this.code="effect_id_conflict",this.reason="effect_id_conflict: this effectId was already used for a different request",this.action="send the request again with a new effectId",this.name="EffectIdConflict",this.effectId=effectId}},SEMANTIC_FIELDS={abort:["awaitIdle","clearQueue","graceMs"],set_model:["provider","modelId","thinkingLevel","scope"],set_thinking_level:["level","scope"],unload:["interrupt","clearQueue","children","force"],dequeue:["queuedId","expectedRevision"],edit_queued:["queuedId","text","expectedRevision"]};function effectFingerprint(command,payload){let semantic={kind:command};for(let field3 of SEMANTIC_FIELDS[command]){let value=Reflect.get(payload,field3);value!==void 0&&(semantic[field3]=value)}return createHash("sha256").update(JSON.stringify(semantic)).digest("hex")}var CLIENT_ADMISSION_ENTRY="rpc_client_message_admission",HOST_MINTED_ID_PREFIX="host:";function isHostMintedId(id){return id?.startsWith(HOST_MINTED_ID_PREFIX)===!0}function clientFacingIdentity(value){if(!isHostMintedId(value.clientMessageId))return value;let{clientMessageId:_minted,...rest}=value;return rest}var DURABLE_CLIENT_MESSAGE_ID_CAPABILITY="durable_client_message_id",admissionIdentitySchema=clientMessageIdentitySchema.extend({clientMessageId:external_exports.string().min(1).max(256),durableSessionId:external_exports.string(),fingerprint:external_exports.string(),disposition:external_exports.enum(["queued","started","handled"]),turnId:external_exports.string().optional(),hostMinted:external_exports.literal(!0).optional()}),preparedInputSchema=clientMessageIdentitySchema.extend({text:external_exports.string(),images:external_exports.array(external_exports.object({type:external_exports.literal("image"),data:external_exports.string(),mimeType:external_exports.string()})).optional(),mode:external_exports.enum(["steer","followUp"]),enqueueOrder:external_exports.number(),source:external_exports.enum(["interactive","rpc","extension"]).optional()}),clientAdmissionRecordSchema=external_exports.discriminatedUnion("state",[admissionIdentitySchema.extend({state:external_exports.literal("queued"),prepared:preparedInputSchema}),admissionIdentitySchema.extend({state:external_exports.literal("running"),prepared:external_exports.undefined().optional()}),admissionIdentitySchema.extend({state:external_exports.literal("completed"),prepared:external_exports.undefined().optional(),outcome:effectOutcomeSchema.optional()})]);function admissionSnapshot(record){let{fingerprint:_fingerprint,prepared:_prepared,...snapshot}=record;return snapshot}var ClientMessageIdConflict=class extends Error{constructor(clientMessageId){super(`client_message_id_conflict: ${clientMessageId}`),this.code="client_message_id_conflict",this.name="ClientMessageIdConflict",this.clientMessageId=clientMessageId}};function clientInputFingerprint(command){let payload={type:command.type,message:command.message,images:command.images?.map(({type,data,mimeType})=>({type,data,mimeType}))??[],clientTurnId:command.clientTurnId,...command.type==="prompt"?{streamingBehavior:command.streamingBehavior,thinkingLevel:command.thinkingLevel,sessionTitlePrompt:command.sessionTitlePrompt,expandPromptTemplates:command.expandPromptTemplates??!0,unknownCommandAsText:command.unknownCommandAsText??!1}:{}};return createHash2("sha256").update(JSON.stringify(payload)).digest("hex")}import{randomUUID}from"node:crypto";async function admitClientInput(command,invoke){await this.ready,this.hasIdentities||=command.clientMessageId!==void 0||command.clientTurnId!==void 0;let hostMinted=command.clientMessageId===void 0&&command.type!=="prompt";if(command.clientMessageId===void 0&&!hostMinted){await invoke({identity:{},queued:()=>{},accepted:()=>{}});return}let clientMessageId=command.clientMessageId??`${HOST_MINTED_ID_PREFIX}${this.session.sessionManager.getSessionId()}:${randomUUID()}`,fingerprint=clientInputFingerprint(command),pending2=this.pending.get(clientMessageId),existing=this.records.get(clientMessageId);if((pending2??existing)?.fingerprint!==void 0&&(pending2??existing)?.fingerprint!==fingerprint)throw new ClientMessageIdConflict(clientMessageId);if(pending2)return pending2.result;if(existing)return admissionSnapshot(existing);let result=Promise.withResolvers();this.pending.set(clientMessageId,{fingerprint,result:result.promise}),result.promise.catch(()=>{});try{await this.session.sessionManager.persistHeaderNow();let base={...clientMessageIdentity(command),clientMessageId,durableSessionId:this.session.sessionManager.getSessionId(),fingerprint,...hostMinted?{hostMinted:!0}:{}},disposition=await invoke({identity:{...clientMessageIdentity(command),clientMessageId},queued:prepared=>this.save({...base,state:"queued",disposition:"queued",prepared}),accepted:(accepted,turnId)=>{let record2=this.records.get(clientMessageId)??{...base,state:accepted==="handled"?"completed":"running",disposition:accepted,...turnId===void 0?{}:{turnId}};return this.records.has(clientMessageId)||this.save(record2),admissionSnapshot(record2)}}),record=this.records.get(clientMessageId);if(!record)throw new Error(`RPC input was ${disposition} without a durable admission`);let snapshot=admissionSnapshot(record);return result.resolve(snapshot),hostMinted?void 0:snapshot}catch(error){throw result.reject(error),error}finally{this.pending.delete(clientMessageId)}}var EFFECT_OUTCOMES={inputInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened while this input's turn was running, so that turn never finished",action:"read the transcript for what the turn produced, then send the input again with a new clientMessageId"},inputCleared:{kind:"cleared",reason:"cleared",detail:"the queue was cleared (clear_queue, or abort or unload_session with clearQueue) before this queued input was delivered",action:"send the input again with a new clientMessageId if it is still needed"},queuedInputAlreadyDelivered:{kind:"already_delivered",reason:"already_delivered",detail:"the queued message had already been handed to the agent, so it can no longer be removed or edited",action:"send a follow-up message to correct it, or abort the turn"},queuedInputNotFound:{kind:"not_found",reason:"not_found",detail:"no queued message has this queuedId in this session",action:"read queuedId values from get_state or queue_update and retry with one that is still queued"},queuedInputConflict:{kind:"conflict",reason:"conflict",detail:"the queued message was changed after the revision this request was based on, so nothing was changed",action:"read the input's current text and revision from get_state or queue_update, then retry with that expectedRevision if the change still applies"},inputDroppedByReplace:{kind:"dropped_by_replace",reason:"dropped_by_replace",detail:"the session was replaced (new_session, switch_session or fork) before this queued input was delivered",action:"send the input again with a new clientMessageId on the current session"},abortInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened, so the turn this abort targeted is no longer running"},setModelInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the host restarted before the model switch was applied",action:"send set_model again with a new effectId"},setModelSuperseded:{kind:"superseded",reason:"superseded",detail:"a newer model selection replaced this switch before it was applied",action:"read the current model, then send set_model with a new effectId if you still want this model"},setModelDroppedByReplace:{kind:"dropped_by_replace",reason:"dropped_by_replace",detail:"the session was replaced (new_session, switch_session or fork) before this model switch was applied",action:"read the current model, then send set_model with a new effectId on the current session"},setThinkingInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the host restarted before the thinking level was applied",action:"send set_thinking_level again with a new effectId"},dequeueInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened before the queued input was removed",action:"re-read queue_update.ordered and retry with a new effectId"},editQueuedInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened before the queued input was edited",action:"re-read queue_update.ordered and retry with a new effectId"}};function unknownModelOutcome(provider,modelId){return{kind:"unknown_model",reason:"unknown_model",detail:`no available model is named ${provider}/${modelId}`,action:"pick a model from get_available_models and send set_model again with a new effectId"}}function providerUnavailableOutcome(detail){return{kind:"provider_unavailable",reason:"provider_unavailable",detail,action:"sign in to the provider or pick another model, then send set_model again with a new effectId"}}function contextBudgetOutcome(detail){return{kind:"context_budget",reason:"context_budget",detail,action:"compact the session or pick a model with a larger context window, then send set_model with a new effectId"}}function modelSwitchErrorOutcome(detail){return{kind:"error",reason:"error",detail,action:"read the error, then send set_model again with a new effectId after correcting its cause"}}function unsupportedThinkingLevelOutcome(detail){return{kind:"unsupported_thinking_level",reason:"unsupported_thinking_level",detail,action:"pick a level from get_available_thinking_levels and send it again with a new effectId"}}function turnErrorOutcome(detail){return{kind:"error",reason:"error",detail:detail??"the turn ended with a provider error",action:"read the error in the transcript, then retry the turn"}}var ADMISSION_STATES={queued:"accepted",running:"applied",completed:"done"};function projectAdmission(record,sessionId){let outcome=record.state==="completed"?record.outcome:void 0;return{effectId:record.clientMessageId,kind:"input",state:outcome?.kind==="dropped_by_replace"||outcome?.kind==="cleared"||outcome?.kind==="cleared_by_abort"?"failed":ADMISSION_STATES[record.state],disposition:record.disposition,...outcome===void 0?{}:{outcome},...sessionId===void 0?{}:{sessionId},durableSessionId:record.durableSessionId}}function projectEffect(record,sessionId){let{fingerprint:_fingerprint,...status}=record;return sessionId===void 0?status:{...status,sessionId}}function effectStatusRecord(subscription,sessionId,status,at){return{type:"effect_status",subscriptionId:subscription.id,seq:subscription.seq,sessionId,effectId:status.effectId,kind:status.kind,state:status.state,...status.disposition===void 0?{}:{disposition:status.disposition},...status.outcome===void 0?{}:{outcome:status.outcome},...status.by===void 0?{}:{by:status.by},at,...subscription.options?.admissionId!==void 0?{admissionId:subscription.options.admissionId,generation:0}:{}}}var sinks=new Set,pending=new WeakMap,dirty=new Map,scheduled=!1;function noteSessionEffect(session,status){let owner;for(let sink of sinks)if(sink.owns(session)){owner=sink;break}if(owner===void 0)return;let list=pending.get(session)??[];list.push(status),pending.set(session,list),dirty.set(session,owner),scheduled||(scheduled=!0,queueMicrotask(flushDirty))}function drainSessionEffects(session){let list=pending.get(session)??[];return list.length>0&&pending.set(session,[]),list}function flushDirty(){scheduled=!1;for(let[session,sink]of[...dirty]){dirty.delete(session);let drained=drainSessionEffects(session);drained.length>0&&sinks.has(sink)&&sink.flush(session,drained)}}function installSessionEffectSink(sink){return sinks.add(sink),()=>{sinks.delete(sink);for(let[session,owner]of[...dirty])owner===sink&&(dirty.delete(session),drainSessionEffects(session))}}var sessions=new WeakMap,ClientAdmissions=class _ClientAdmissions{constructor(session){this.records=new Map,this.pending=new Map,this.restoring=!0,this.hasIdentities=!1,this.session=session;let durableSessionId=session.sessionManager.getSessionId();this.durableSessionId=durableSessionId;for(let entry of session.sessionManager.getEntries()){if(entry.type!=="custom"||entry.customType!==CLIENT_ADMISSION_ENTRY)continue;let parsed=clientAdmissionRecordSchema.safeParse(entry.data);parsed.success&&parsed.data.durableSessionId===durableSessionId&&this.records.set(parsed.data.clientMessageId,parsed.data)}this.hasIdentities=[...this.records.values()].some(record=>record.hostMinted!==!0);for(let record of[...this.records.values()])record.state==="running"&&this.save({...record,state:"completed",outcome:EFFECT_OUTCOMES.inputInterruptedByReopen});this.unsubscribeAgent=session.agent.subscribe(event=>{if(this.durableSessionId!==session.sessionManager.getSessionId()||event.type!=="message_start"||event.message.role!=="user")return;let identity=readClientMessageIdentity(event.message),record=identity.clientMessageId?this.records.get(identity.clientMessageId):void 0;record?.state==="queued"&&this.save({...record,state:"running",prepared:void 0})}),this.unsubscribeSession=session.subscribe(event=>{if(!(this.restoring||this.durableSessionId!==session.sessionManager.getSessionId())){if(event.type==="agent_start")this.lastAbort=void 0;else if(event.type==="agent_end")event.willRetry||(this.turnOutcome=this.endOutcome(event.messages));else if(event.type==="agent_idle"){let outcome=this.turnOutcome??{kind:"completed"};this.turnOutcome=void 0,this.turnAbortedBy=void 0,this.lastAbort=void 0;for(let record of this.records.values())record.state==="running"&&this.save({...record,state:"completed",outcome})}else if(event.type==="queue_update"){let queuedIds=new Set(event.ordered.map(input=>input.clientMessageId)),consumingId=readClientMessageIdentity(session.agent.state.streamingMessage).clientMessageId;for(let record of this.records.values())record.state==="queued"&&!queuedIds.has(record.clientMessageId)&&this.save({...record,state:consumingId===record.clientMessageId?"running":"completed",prepared:void 0})}}}),this.ready=Promise.resolve().then(()=>this.restore())}static clearQueuedFor(session){sessions.get(session)?.clearQueued()}static sealQueuedOnReplace(runtime){return runtime.onBeforeSessionReplace(()=>sessions.get(runtime.session)?.dropQueuedByReplace())}static forSession(session){let admissions=sessions.get(session);return admissions&&admissions.durableSessionId!==session.sessionManager.getSessionId()&&(admissions.unsubscribeAgent(),admissions.unsubscribeSession(),admissions=void 0),admissions||(admissions=new _ClientAdmissions(session),sessions.set(session,admissions)),admissions}record(clientMessageId){return this.records.get(clientMessageId)}editQueuedText(clientMessageId,text){let record=this.records.get(clientMessageId);record?.state==="queued"&&this.save({...record,prepared:{...record.prepared,text}})}noteAbort(by,effectId){this.session.isStreaming&&(this.turnAbortedBy=by);let abort={connectionId:by.connectionId,...effectId===void 0?{}:{effectId}};return this.lastAbort=abort,abort}get abortedBy(){return this.lastAbort}forgetAbort(abort){this.lastAbort===abort&&(this.lastAbort=void 0)}clearQueued(){if(this.durableSessionId===this.session.sessionManager.getSessionId())for(let record of[...this.records.values()])record.state==="queued"&&this.save({...record,state:"completed",prepared:void 0,outcome:EFFECT_OUTCOMES.inputCleared})}dropQueuedByReplace(){if(this.durableSessionId===this.session.sessionManager.getSessionId())for(let record of[...this.records.values()])record.state==="queued"&&this.save({...record,state:"completed",prepared:void 0,outcome:EFFECT_OUTCOMES.inputDroppedByReplace})}endOutcome(messages){let abortSource=this.session.currentAbortSource;if(abortSource!==void 0)return{kind:"aborted",reason:"aborted",detail:"the turn was aborted before it finished",abortSource,...this.turnAbortedBy===void 0?{}:{abortedBy:this.turnAbortedBy}};let last=messages.at(-1);return last?.role==="assistant"&&last.stopReason==="error"?turnErrorOutcome(last.errorMessage):{kind:"completed"}}async restore(){try{let queued=[...this.records.values()].filter(record=>record.state==="queued").sort((left,right)=>left.prepared.enqueueOrder-right.prepared.enqueueOrder);for(let record of queued)await this.session.restoreQueuedInput(record.prepared)}finally{this.restoring=!1}}save(record){this.session.sessionManager.appendCustomEntry(CLIENT_ADMISSION_ENTRY,record),this.records.set(record.clientMessageId,record),noteSessionEffect(this.session,projectAdmission(record))}async admit(command,invoke){let ledger=this;return admitClientInput.call({ready:this.ready,get hasIdentities(){return ledger.hasIdentities},set hasIdentities(value){ledger.hasIdentities=value},session:this.session,records:this.records,pending:this.pending,save:record=>this.save(record)},command,invoke)}};var EFFECT_CRASH_ENV="SENPI_TEST_RPC_EFFECT_CRASH";function effectCrashPoint(phase,kind,state){process.env[EFFECT_CRASH_ENV]===`${phase}:${kind}:${state}`&&process.kill(process.pid,"SIGKILL")}var ledgers=new WeakMap,latestCache=new WeakMap;function latestSessionEffect(session){let entries=session.sessionManager.getEntries(),cached=latestCache.get(session);if(cached?.entries===entries.length)return cached.latest;let latest;for(let index=entries.length-1;index>=0;index--){let entry=entries[index];if(entry?.type==="custom"){if(entry.customType===RPC_EFFECT_ENTRY){let parsed=rpcEffectRecordSchema.safeParse(entry.data);if(parsed.success){latest=projectEffect(parsed.data);break}}else if(entry.customType===CLIENT_ADMISSION_ENTRY){let parsed=clientAdmissionRecordSchema.safeParse(entry.data);if(parsed.success){latest=projectAdmission(parsed.data);break}}}}return latestCache.set(session,{entries:entries.length,latest}),latest}var EffectLedger=class _EffectLedger{constructor(session){this.records=new Map,this.session=session,this.admissions=ClientAdmissions.forSession(session),this.durableSessionId=session.sessionManager.getSessionId();let switchedBy=new Set,thinkingBy=new Set;for(let entry of session.sessionManager.getEntries()){if(entry.type==="model_change"&&entry.effectId!==void 0&&switchedBy.add(entry.effectId),entry.type==="thinking_level_change"&&entry.effectId!==void 0&&thinkingBy.add(entry.effectId),entry.type!=="custom"||entry.customType!==RPC_EFFECT_ENTRY)continue;let parsed=rpcEffectRecordSchema.safeParse(entry.data);parsed.success&&parsed.data.durableSessionId===this.durableSessionId&&this.records.set(parsed.data.effectId,parsed.data)}this.sealOnReopen(switchedBy,thinkingBy),this.unsubscribe=session.subscribe(event=>{if(this.durableSessionId===session.sessionManager.getSessionId()){if(event.type==="model_changed"&&event.origin.effectId!==void 0){let record=this.records.get(event.origin.effectId);record?.kind==="set_model"&&!isTerminalEffectState(record.state)&&this.transition(record.effectId,"done",{disposition:"applied"})}else if(event.type==="model_change_cancelled"&&event.origin.effectId!==void 0){let record=this.records.get(event.origin.effectId);record?.kind==="set_model"&&!isTerminalEffectState(record.state)&&this.transition(record.effectId,"failed",{outcome:event.reason==="context-budget"?contextBudgetOutcome(event.detail??"the target model cannot hold the repaired context"):event.reason==="error"?modelSwitchErrorOutcome(event.detail??"the model switch failed"):EFFECT_OUTCOMES.setModelSuperseded})}else if(event.type==="agent_idle")for(let record of[...this.records.values()])record.kind==="abort"&&record.state==="applied"&&this.transition(record.effectId,"done")}})}static sealOnReplace(runtime){return runtime.onBeforeSessionReplace(()=>{let ledger=ledgers.get(runtime.session);if(!(!ledger||ledger.durableSessionId!==runtime.session.sessionManager.getSessionId()))for(let record of[...ledger.records.values()])record.kind==="set_model"&&!isTerminalEffectState(record.state)&&ledger.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.setModelDroppedByReplace})})}static forSession(session){let ledger=ledgers.get(session);return ledger&&ledger.durableSessionId!==session.sessionManager.getSessionId()&&(ledger.unsubscribe(),ledger=void 0),ledger||(ledger=new _EffectLedger(session),ledgers.set(session,ledger)),ledger}sealOnReopen(switchedBy,thinkingBy){for(let record of[...this.records.values()])if(!isTerminalEffectState(record.state))switch(record.kind){case"abort":this.transition(record.effectId,"done",{disposition:"no_active_turn",outcome:EFFECT_OUTCOMES.abortInterruptedByReopen});break;case"set_model":switchedBy.has(record.effectId)?this.transition(record.effectId,"done",{disposition:"applied"}):this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.setModelInterruptedByReopen});break;case"unload":this.transition(record.effectId,"done");break;case"set_thinking_level":thinkingBy.has(record.effectId)?this.transition(record.effectId,"done",{disposition:"applied"}):this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.setThinkingInterruptedByReopen});break;case"dequeue":this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.dequeueInterruptedByReopen});break;case"edit_queued":this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.editQueuedInterruptedByReopen});break;default:{let unsealed=record.kind;throw new Error(`no reopen seal for effect kind ${unsealed}`)}}}async begin(command,effectId,payload,by){await this.session.sessionManager.persistHeaderNow();let fingerprint=effectFingerprint(command,payload),existing=this.records.get(effectId);if(existing){if(existing.fingerprint!==fingerprint)throw new EffectIdConflict(effectId);return{replay:projectEffect(existing)}}let now=new Date().toISOString(),record={effectId,kind:command,state:"accepted",by,acceptedAt:now,updatedAt:now,durableSessionId:this.durableSessionId,fingerprint};return this.append(record),{record}}transition(effectId,state,patch={}){let current2=this.records.get(effectId);if(!current2)throw new Error(`No effect ${effectId} in session ${this.durableSessionId}`);return this.append({...current2,...patch,state,updatedAt:new Date().toISOString()}),this.statusOf(effectId)}status(effectId,sessionId){let record=this.records.get(effectId);if(record)return projectEffect(record,sessionId);let admission=this.admissions.record(effectId);return admission===void 0?void 0:projectAdmission(admission,sessionId)}statusOf(effectId){let status=this.status(effectId);if(!status)throw new Error(`No effect ${effectId} in session ${this.durableSessionId}`);return status}append(record){effectCrashPoint("before",record.kind,record.state),this.session.sessionManager.appendCustomEntry(RPC_EFFECT_ENTRY,record),this.records.set(record.effectId,record),noteSessionEffect(this.session,projectEffect(record)),effectCrashPoint("after",record.kind,record.state)}};import{randomUUID as randomUUID2}from"node:crypto";import{mkdir,rm,writeFile}from"node:fs/promises";import{join}from"node:path";import{setTimeout as delay}from"node:timers/promises";import{Worker}from"node:worker_threads";var RECURSIVE_WATCH_WORKER_SOURCE=`
|
|
2
|
+
import{RPC_ERROR_EFFECT_ID_CONFLICT,RPC_ERROR_ENTRY_NOT_FOUND,RPC_ERROR_INVALID_ARGUMENT,RPC_ERROR_RESPONSE_TOO_LARGE,RPC_ERROR_TRANSCRIPT_UNREADABLE,clientMessageIdentity,clientMessageIdentitySchema,readClientMessageIdentity}from"./chunk-75O3CWR5.js";import{carryExecutionCallKey,compactUpdatesEnabled}from"./chunk-WMDJMN5W.js";import{ProjectTrustStore}from"./chunk-VD7AKTGP.js";import{isAbortGraceInRange}from"./chunk-TQHNFP77.js";import{SecretInputUnavailableError,armSecretInputDeadline,describeUsageLimitEntry,isSecretInputValue,resolveSecretInputTimeout,watchWithErrorHandler}from"./chunk-HKCFMDJN.js";import{isRecord,queuedForm,validMcpFormContent,validateMrtrForm}from"./chunk-MOVB6H22.js";import{COMPACT_EVENTS_CAPABILITY,INTERACTIVE_USER_CAPABILITY,TASK_PARENT_CAPABILITY,hostInstanceId}from"./chunk-IJXKHJYR.js";import{serializeJsonLine}from"./chunk-SF4MQDKZ.js";import{external_exports}from"./chunk-36BLGKRO.js";import{CHAIN_COUNT_LIMIT,ChainCountLimitError,admitChainCall}from"./chunk-7CXLNKEH.js";import{modelSupportsAssistantPrefill}from"./chunk-IK3S2NDB.js";import{hasFunctions,realmRegistry}from"./chunk-XDEZA6U6.js";import{getSupportedThinkingLevels,supportsMax,supportsXhigh}from"./chunk-OH5TKHW7.js";import{sanitizeProviderDiagnostic}from"./chunk-JGKH3D6W.js";import{acquireOwnershipSafeLock}from"./chunk-HW6AAS3R.js";import{CONFIG_DIR_NAME,getAgentDir}from"./chunk-SODMQEHO.js";import{processIsLive,processStartTimeMs,readProcessIdentity}from"./chunk-O5RYI3IW.js";var RELOCATION_TOOL_NAMES=["list_relocation_targets","relocate_session"],RELOCATION_NOT_OFFERED={status:"unavailable",reason:"not_offered",detail:"no app connected to this session offers moving it to another computer"};var SESSION_CONTROL_DELIVERY_TYPE="session_control_delivery";function sessionControlRemoteOriginOf(details){if(!isSessionControlDeliveryDetails(details)||typeof details.remote_origin!="object")return;let origin={...details.remote_origin};if(!(typeof origin.deviceId!="string"||origin.deviceId===""))return typeof origin.deviceName=="string"&&origin.deviceName!==""?{deviceId:origin.deviceId,deviceName:origin.deviceName}:{deviceId:origin.deviceId}}function sessionControlSenderOf(details){if(!isSessionControlDeliveryDetails(details)||typeof details.sender!="object"||details.sender===null)return;let sender={...details.sender},optional=key=>typeof sender[key]=="string"?{[key]:sender[key]}:{};if(sender.kind==="agent"&&typeof sender.session_id=="string")return{kind:"agent",session_id:sender.session_id,...optional("name")};if(sender.kind==="command_line")return{kind:"command_line",...optional("user")};if(sender.kind==="external"&&typeof sender.platform=="string")return{kind:"external",platform:sender.platform,...optional("author")}}function isSessionControlDeliveryDetails(value){return typeof value!="object"||value===null||!("delivery_id"in value)||typeof value.delivery_id!="string"||!("source"in value)||value.source!=="session_control"?!1:"deliverAs"in value&&(value.deliverAs==="steer"||value.deliverAs==="followUp")}var presentations=new Map;function attachMcpGrantPresentation(sessionId,select){let attached=presentations.get(sessionId)??new Set;presentations.set(sessionId,attached);let abort=new AbortController,entry={abort,select:(title,choices,opts)=>select(title,choices,{...opts,signal:opts?.signal===void 0?abort.signal:AbortSignal.any([opts.signal,abort.signal])})};return attached.add(entry),()=>{abort.abort(),attached.delete(entry),attached.size===0&&presentations.delete(sessionId)}}function getMcpGrantPresentation(sessionId){return sessionId===void 0?void 0:presentations.get(sessionId)?.values().next().value?.select}function clearMcpGrantPresentations(sessionId){for(let entry of presentations.get(sessionId)??[])entry.abort.abort();presentations.delete(sessionId)}async function selectMcpGrant(select,title,signal){if(select===void 0||signal?.aborted)return!1;let abort=new AbortController,timeout,cancel=()=>{},stopped=new Promise(resolve2=>{cancel=()=>{abort.abort(),resolve2(void 0)},signal?.addEventListener("abort",cancel,{once:!0}),timeout=setTimeout(cancel,12e4)});try{return await Promise.race([select(title,["Grant and save permanently","Start without them"],{timeout:12e4,signal:abort.signal}),stopped])==="Grant and save permanently"&&!abort.signal.aborted}catch{return!1}finally{clearTimeout(timeout),signal?.removeEventListener("abort",cancel),abort.abort()}}function supportsXhigh2(model){return supportsXhigh(model)}function supportsMax2(model){return supportsMax(model)}function getSupportedThinkingLevels2(model){let supportedLevels=getSupportedThinkingLevels(model);return supportedLevels.length>0?supportedLevels:["off"]}function clampThinkingSelection(selection,requested,level,model){if(selection===void 0)return;let{requested:_staleRequested,clampReason:_staleReason,...base}=selection;return requested===level||model===void 0?{...base,level}:{...base,level,requested,clampReason:model.reasoning?"level-unsupported":"model-not-reasoning"}}function getThinkingClampNotice(selection,model){let clamped=selection;if(!(model===void 0||clamped?.requested===void 0||clamped.clampReason===void 0))return{provider:model.provider,modelId:model.id,requestedLevel:clamped.requested,appliedLevel:clamped.level,reason:clamped.clampReason}}function formatThinkingClampWarning(notice){let model=`${notice.provider}/${notice.modelId}`;return notice.reason==="model-not-reasoning"?`Thinking level "${notice.requestedLevel}" was requested, but ${model} is not marked as a reasoning model, so thinking is "${notice.appliedLevel}". If the model supports reasoning, set "reasoning": true for it in models.json.`:`Thinking level "${notice.requestedLevel}" is not available on ${model}; using "${notice.appliedLevel}".`}function classifyReasoningCapability(model){if(!model.reasoning)return{kind:"none",levels:["off"],nonOffLevels:[]};let levels=getSupportedThinkingLevels2(model),nonOffLevels=levels.filter(level=>level!=="off");return levels.includes("off")?nonOffLevels.length===1?{kind:"on-off",levels,nonOffLevels}:nonOffLevels.length===0?{kind:"none",levels,nonOffLevels}:{kind:"graded",levels,nonOffLevels}:{kind:"always-on",levels,nonOffLevels}}import{AsyncLocalStorage}from"node:async_hooks";var WORD_ROLES=["interactive_user","task_parent","peer_agent"];function maskOfRoles(roles){let mask=0;for(let role of roles){let bit=WORD_ROLES.indexOf(role);bit>=0&&(mask|=1<<bit)}return mask}function rolesOfMask(mask){return WORD_ROLES.filter((_role,bit)=>(mask&1<<bit)!==0)}function decodeWord(word){let mask=word&7;return{epoch:word>>>4,retired:(word&8)!==0,mask,roles:rolesOfMask(mask)}}function packWord(epoch,retired,mask){if(!Number.isSafeInteger(epoch)||epoch<1||epoch>=268435456)throw new Error("authority_epoch_exhausted");return epoch<<4|(retired?8:0)|mask}function createAuthority(incarnation,mask){if(!Number.isSafeInteger(incarnation)||incarnation<1||incarnation>2147483647)throw new Error("authority_incarnation_invalid");let buffer=new SharedArrayBuffer(8),view=new Int32Array(buffer);return view[0]=packWord(1,!1,mask&7),view[1]=incarnation,buffer}function readAuthority(buffer){return decodeWord(Atomics.load(new Int32Array(buffer),0))}function incarnationOf(buffer){return Atomics.load(new Int32Array(buffer),1)}function store(view,word){Atomics.store(view,0,word),Atomics.notify(view,0)}function storeNarrowed(buffer,roles){let view=new Int32Array(buffer),current2=decodeWord(Atomics.load(view,0)),mask=current2.mask&maskOfRoles(roles);return mask===current2.mask?!1:(store(view,packWord(current2.epoch+1,current2.retired,mask)),!0)}function storeRetired(buffer){let view=new Int32Array(buffer),current2=decodeWord(Atomics.load(view,0));return current2.retired?!1:(store(view,packWord(current2.epoch+1,!0,current2.mask)),!0)}function nextIncarnation(k,max=2147483647){return Number.isSafeInteger(k)&&k>=1&&k<max?k+1:void 0}function effectiveRoles(claim,state){return state.retired||claim===void 0?[]:claim.filter(role=>state.roles.includes(role))}var CommandAuthority=class{constructor(connection,descriptor,exec,stale=!1){this.connection=connection,this.descriptor=descriptor,this.exec=exec,this.stale=stale}get incarnation(){return this.descriptor?.incarnation}state(){let buffer=this.descriptor?.mode==="host"?this.descriptor.authority:void 0;if(buffer!==void 0)return this.snapshot??=decodeWord(Atomics.load(new Int32Array(buffer),0)),this.stale?{...this.snapshot,retired:!0}:this.snapshot}has(role,claim){let state=this.state();if(state===void 0)return claim?.includes(role)??!1;let effective=effectiveRoles(claim,state);return this.consulted=effective,effective.includes(role)}receipt(){if(this.exec===void 0)return;let buffer=this.descriptor?.authority,state=this.snapshot??(buffer===void 0?void 0:decodeWord(Atomics.load(new Int32Array(buffer),0)));return{exec:this.exec,incarnation:this.descriptor?.incarnation??null,epoch:state?.epoch??null,roles:this.consulted===void 0?null:[...this.consulted]}}},commandAuthority=new AsyncLocalStorage;function outsideCommand(create){return commandAuthority.exit(create)}function withReceipt(record,target){if(Reflect.get(record,"type")!=="response"||Object.hasOwn(record,"authority"))return record;let store2=commandAuthority.getStore();if(store2===void 0||store2.connection!==target)return record;let authority=store2.receipt();return authority===void 0?record:{...record,authority}}function takeRelayExec(record){if(typeof record!="object"||record===null||!Object.hasOwn(record,"relayExec"))return;let exec=Reflect.get(record,"relayExec");return Reflect.deleteProperty(record,"relayExec"),typeof exec=="number"&&Number.isSafeInteger(exec)&&exec>=1?exec:"malformed"}var BROWSER_ENGINES=["connected","builtin","none"];function isBrowserEngine(value){return BROWSER_ENGINES.some(engine=>engine===value)}function toolBarrierSpecError(value){if(typeof value!="object"||value===null||Array.isArray(value))return"toolBarrier must be an object { id, deadlineMs }.";let{id,deadlineMs}=value;if(typeof id!="string"||id.length===0||id.length>256)return"toolBarrier.id must be a non-empty string of at most 256 characters.";if(typeof deadlineMs!="number"||!Number.isSafeInteger(deadlineMs)||deadlineMs<1||deadlineMs>6e5)return"toolBarrier.deadlineMs must be a whole number of milliseconds in 1..600000."}var ToolBarrier=class{#armed;#onExpired;constructor(onExpired){this.#onExpired=onExpired}arm(spec){let current2=this.#armed;current2&&clearTimeout(current2.timer);let{promise,resolve:resolve2}=Promise.withResolvers(),gate=current2??{opened:promise,open:resolve2},timer=setTimeout(()=>this.#expire(spec.id),spec.deadlineMs);timer.unref?.(),this.#armed={spec:{id:spec.id,deadlineMs:spec.deadlineMs},timer,opened:gate.opened,open:gate.open}}release(id){return this.#armed?.spec.id!==id?!1:(this.#open(),!0)}clear(){this.#armed&&this.#open()}wait(signal){let armed=this.#armed;if(!armed)return;if(!signal)return{id:armed.spec.id,done:armed.opened};if(signal.aborted)return{id:armed.spec.id,done:Promise.resolve()};let aborted=Promise.withResolvers(),onAbort=()=>aborted.resolve();signal.addEventListener("abort",onAbort,{once:!0});let done=Promise.race([armed.opened,aborted.promise]).finally(()=>signal.removeEventListener("abort",onAbort));return{id:armed.spec.id,done}}#expire(id){let armed=this.#armed;armed?.spec.id===id&&(this.#open(),this.#onExpired(armed.spec))}#open(){let armed=this.#armed;armed&&(this.#armed=void 0,clearTimeout(armed.timer),armed.open())}};var SENDER_FIELDS={agent:{required:["session_id"],optional:["name"]},command_line:{required:[],optional:["user"]},external:{required:["platform"],optional:["author"]}},SENDER_SHAPE='sender must be { kind: "agent", session_id, name? }, { kind: "command_line", user? } or { kind: "external", platform, author? }, each value a non-empty string of at most 256 characters.';function boundedId(value){return typeof value=="string"&&value.length>0&&value.length<=256}function isDeliverySender(value){if(typeof value!="object"||value===null||Array.isArray(value))return!1;let kind=Reflect.get(value,"kind");if(typeof kind!="string"||!Object.hasOwn(SENDER_FIELDS,kind))return!1;let{required,optional}=SENDER_FIELDS[kind],allowed=new Set(["kind",...required,...optional]);return Object.keys(value).every(key=>allowed.has(key))&&required.every(key=>boundedId(Reflect.get(value,key)))&&optional.every(key=>Reflect.get(value,key)===void 0||boundedId(Reflect.get(value,key)))}function fieldProblem(value,maxTextCharacters){if(!boundedId(value.deliveryId))return"needs deliveryId, a non-empty string of at most 256 characters.";if(typeof value.text!="string"||value.text.trim()===""||value.text.length>maxTextCharacters)return`needs text, a non-empty string of at most ${maxTextCharacters} characters.`;if(value.deliverAs!=="steer"&&value.deliverAs!=="followUp")return'deliverAs must be "steer" or "followUp".';if(value.displayText!==void 0&&(typeof value.displayText!="string"||value.displayText.length>maxTextCharacters))return`displayText must be a string of at most ${maxTextCharacters} characters.`;if(value.expectedTurnId!==void 0&&!boundedId(value.expectedTurnId))return"expectedTurnId must be a non-empty string of at most 256 characters; read it from get_state.currentTurnId.";if(value.chainCount!==void 0&&!(Number.isSafeInteger(value.chainCount)&&value.chainCount>=1))return"chainCount must be a positive integer (1 for a chain's first hop).";if(Object.hasOwn(value,"remote_origin")||Object.hasOwn(value,"remoteOrigin"))return"must not name remote_origin: the engine stamps the device the connection speaks for.";if(value.whenIdle!==void 0&&value.whenIdle!=="start"&&value.whenIdle!=="queue")return'whenIdle must be "start" or "queue"; omit it to start a turn on an idle session.';if(value.sender!==void 0&&!isDeliverySender(value.sender))return SENDER_SHAPE}function admitExternalMessageFieldError(value,maxTextCharacters){if(value.type!=="admit_external_message")return;let problem=fieldProblem(value,maxTextCharacters);return problem===void 0?void 0:`admit_external_message ${problem}`}var nonEmpty=(value,max=256)=>typeof value=="string"&&value.length>0&&value.length<=max,seq=value=>typeof value=="number"&&Number.isInteger(value)&&value>=0,RUN_REF_KINDS=new Set(["dag","task","workpool","team"]);function validRunRef(value){if(typeof value!="object"||value===null)return!1;let ref=value;return typeof ref.kind=="string"&&RUN_REF_KINDS.has(ref.kind)&&nonEmpty(ref.id)}function validatePauseCommand(value){if((value.type==="abort"||value.type==="interrupt")&&value.intent!==void 0&&value.intent!=="stop"&&value.intent!=="abort")return'intent must be "stop" or "abort".';if(value.type==="resume_session"){if(value.expectedSeq!==void 0&&!seq(value.expectedSeq))return"expectedSeq must be a non-negative integer.";if(value.mode!==void 0&&value.mode!=="continue"&&value.mode!=="release")return'mode must be "continue" or "release".';if(value.message!==void 0&&typeof value.message!="string")return"message must be a string.";if(value.effectId!==void 0&&!nonEmpty(value.effectId))return"effectId must be 1-256 characters."}if(value.type==="hold_input"){if(!nonEmpty(value.inputId)||!seq(value.revision)||typeof value.text!="string")return"hold_input needs inputId (1-256 chars), a non-negative integer revision, and text.";if(value.parentSessionId!==void 0&&!nonEmpty(value.parentSessionId))return"parentSessionId must be 1-256 characters.";if(value.origin!==void 0&&value.origin!=="human")return'origin must be "human".'}if(value.type==="withdraw_held_input"&&!nonEmpty(value.inputId))return"withdraw_held_input needs inputId.";if(value.type==="pause_for_run"&&(!nonEmpty(value.parentSessionId)||!seq(value.parentPauseSeq)||!validRunRef(value.runRef)))return"pause_for_run needs parentSessionId, a non-negative integer parentPauseSeq, and runRef { kind, id }.";if(value.type==="resume_for_run"&&(!nonEmpty(value.parentSessionId)||!seq(value.parentPauseSeq)||!nonEmpty(value.resumeId)||!seq(value.childSeqCutoff)))return"resume_for_run needs parentSessionId, parentPauseSeq, resumeId, and childSeqCutoff."}var MAX_RPC_MESSAGE_CHARACTERS=1e6,SESSION_CONTEXT_LIMITS={keys:32,valueBytes:16*1024,totalBytes:32*1024},SESSION_CONTEXT_KEY_PATTERN=/^[a-z][a-z0-9_]*$/;function validContent(content){return typeof content=="string"?!0:Array.isArray(content)&&content.every(item=>{if(typeof item!="object"||item===null)return!1;let value=item;return value.type==="text"?typeof value.text=="string":value.type==="image"&&typeof value.data=="string"&&typeof value.mimeType=="string"})}function validBaseEntry(entry){return typeof entry.id=="string"&&(entry.parentId===null||typeof entry.parentId=="string")&&typeof entry.timestamp=="string"}function validSessionEntry(entry){if(typeof entry!="object"||entry===null||Array.isArray(entry))return!1;let value=entry;if(!validBaseEntry(value))return!1;switch(value.type){case"message":{let message=value.message;if(typeof message!="object"||message===null)return!1;let item=message;return["user","assistant","tool"].includes(item.role)&&validContent(item.content)}case"thinking_level_change":return typeof value.thinkingLevel=="string";case"model_change":return typeof value.provider=="string"&&typeof value.modelId=="string";case"model_change_rejected":return typeof value.provider=="string"&&typeof value.modelId=="string"&&typeof value.detail=="string";case"compaction":return typeof value.summary=="string"&&typeof value.firstKeptEntryId=="string"&&typeof value.tokensBefore=="number";case"branch_summary":return typeof value.fromId=="string"&&typeof value.summary=="string";case"custom":return typeof value.customType=="string";case"custom_message":return typeof value.customType=="string"&&validContent(value.content)&&typeof value.display=="boolean";case"label":return typeof value.targetId=="string"&&(value.label===void 0||typeof value.label=="string");case"session_info":return value.name===void 0||typeof value.name=="string";default:return!1}}function rpcCommandPayloadError(command){if(rpcCommandShapeError(command))return;let value=command;if((value.type==="prompt"||value.type==="steer"||value.type==="follow_up")&&!clientMessageIdentitySchema.safeParse(value).success)return"clientMessageId and clientTurnId must be non-empty strings of at most 256 characters.";if((value.type==="prompt"||value.type==="steer"||value.type==="follow_up")&&value.expectedTurnId!==void 0){if(!(typeof value.expectedTurnId=="string"&&value.expectedTurnId.length>0&&value.expectedTurnId.length<=256))return"expectedTurnId must be a non-empty string of at most 256 characters; read it from get_state.currentTurnId.";if(value.type==="prompt"&&value.streamingBehavior===void 0)return'expectedTurnId on a prompt needs streamingBehavior "steer" or "followUp".'}if(value.type==="prompt"&&value.toolBarrier!==void 0){let barrierError=toolBarrierSpecError(value.toolBarrier);if(barrierError!==void 0)return barrierError}if(value.type==="release_tool_barrier"&&!(typeof value.barrierId=="string"&&value.barrierId.length>0&&value.barrierId.length<=256))return`barrierId must be a non-empty string of at most ${256} characters.`;if((value.type==="dequeue_message"||value.type==="edit_queued_message")&&!(typeof value.queuedId=="string"&&value.queuedId.length>0&&value.queuedId.length<=256))return"queuedId must be a non-empty string of at most 256 characters; read it from get_state or queue_update.";if(value.type==="edit_queued_message"&&!(typeof value.text=="string"&&value.text.length>0&&value.text.length<=MAX_RPC_MESSAGE_CHARACTERS))return`text must be a non-empty string of at most ${MAX_RPC_MESSAGE_CHARACTERS} characters; dequeue_message removes an input.`;if((value.type==="dequeue_message"||value.type==="edit_queued_message")&&value.expectedRevision!==void 0&&!(Number.isSafeInteger(value.expectedRevision)&&value.expectedRevision>=1))return"expectedRevision must be a whole number of at least 1; read it from the input's revision in get_state or queue_update.";if(value.type==="resolve_path"&&!(typeof value.path=="string"&&value.path.trim().length>0&&value.path.length<=4096))return"path must be a non-empty string of at most 4096 characters.";if(value.type==="unload_session"){if(value.children!==void 0&&value.children!=="refuse"&&value.children!=="detach")return'children must be "refuse" or "detach".';for(let flag of["interrupt","clearQueue","force"])if(value[flag]!==void 0&&typeof value[flag]!="boolean")return`${flag} must be a boolean.`}if((value.type==="steer"||value.type==="follow_up")&&value.enqueueOrder!==void 0&&!(typeof value.enqueueOrder=="number"&&Number.isFinite(value.enqueueOrder)))return"enqueueOrder must be a finite number.";if((value.type==="steer"||value.type==="follow_up")&&value.whenIdle!==void 0&&value.whenIdle!=="queue"&&value.whenIdle!=="start")return'whenIdle must be "queue" or "start"; omit it to queue on an idle session.';if((value.type==="abort"||value.type==="set_model"||value.type==="set_thinking_level"||value.type==="get_effect_status")&&(value.effectId!==void 0||value.type==="get_effect_status")&&!(typeof value.effectId=="string"&&value.effectId.length>0&&value.effectId.length<=256))return"effectId must be a non-empty string of at most 256 characters.";let fieldError=validatePauseCommand(value)??admitExternalMessageFieldError(value,MAX_RPC_MESSAGE_CHARACTERS);if(fieldError!==void 0)return fieldError;if(value.type==="get_pending_inputs"&&value.knownClientMessageIds!==void 0){let ids=value.knownClientMessageIds;if(!Array.isArray(ids)||ids.length>64||!ids.every(id=>typeof id=="string"&&id.length>0&&id.length<=256))return"knownClientMessageIds must be an array of at most 64 non-empty strings of at most 256 characters."}if(value.type==="get_effect_status"&&value.sessionPath!==void 0&&typeof value.sessionPath!="string")return"sessionPath must be a string.";if(value.type==="append_user_message"&&!validContent(value.content))return"append_user_message content must be a string or text/image content array.";if(value.type==="append_session_entry"&&!validSessionEntry(value.entry))return"append_session_entry entry is malformed.";if((value.type==="prompt"||value.type==="steer"||value.type==="follow_up")&&typeof value.message!="string")return"message must be a string."}function sessionContextError(context){if(context===void 0)return;if(typeof context!="object"||context===null||Array.isArray(context))return"context must be an object of string values.";let entries=Object.entries(context);if(entries.length>SESSION_CONTEXT_LIMITS.keys)return`context has ${entries.length} keys, at most ${SESSION_CONTEXT_LIMITS.keys} are accepted.`;for(let[key,value]of entries){if(!SESSION_CONTEXT_KEY_PATTERN.test(key))return`context key "${key}" must match ${SESSION_CONTEXT_KEY_PATTERN.source}.`;if(typeof value!="string")return`context value for key "${key}" must be a string.`;let valueBytes=Buffer.byteLength(value);if(valueBytes>SESSION_CONTEXT_LIMITS.valueBytes)return`context value for key "${key}" is ${valueBytes} bytes, at most ${SESSION_CONTEXT_LIMITS.valueBytes} bytes are accepted.`}let totalBytes=Buffer.byteLength(JSON.stringify(context));if(totalBytes>SESSION_CONTEXT_LIMITS.totalBytes)return`context is ${totalBytes} bytes of JSON, at most ${SESSION_CONTEXT_LIMITS.totalBytes} bytes are accepted.`}function sessionKindError(kind){if(!(kind===void 0||kind==="interactive"||kind==="worker"))return'kind must be "interactive" or "worker".'}function sessionAutoTitleError(value){if(!(value===void 0||typeof value=="boolean"))return"auto_title must be a boolean."}function sessionPromptSurfaceError(value){if(!(value===void 0||value==="terminal"||value==="app"||value==="chat"))return'promptSurface must be "terminal", "app" or "chat".'}function sessionBrowserEngineError(value){if(!(value===void 0||isBrowserEngine(value)))return'browserEngine must be "connected", "builtin" or "none".'}var MAX_RETRY_FALLBACK_CHAINS=32,MAX_RETRY_FALLBACK_ENTRIES=32,MAX_RETRY_FALLBACK_SELECTOR_LENGTH=512;function sessionRetryFallbackError(value){if(value===void 0)return;let shape="retryFallback must be { modelFallback: boolean, fallbackChains: Record<string, string[]> }.";if(typeof value!="object"||value===null||Array.isArray(value))return shape;let record=value;if(typeof record.modelFallback!="boolean")return shape;let chains=record.fallbackChains;if(typeof chains!="object"||chains===null||Array.isArray(chains))return shape;let entries=Object.entries(chains);if(entries.length>MAX_RETRY_FALLBACK_CHAINS)return`retryFallback allows at most ${MAX_RETRY_FALLBACK_CHAINS} chains.`;for(let[key,selectors]of entries){if(!isSelector(key)||!Array.isArray(selectors)||!selectors.every(isSelector))return shape;if(selectors.length>MAX_RETRY_FALLBACK_ENTRIES)return`retryFallback allows at most ${MAX_RETRY_FALLBACK_ENTRIES} entries per chain.`}}function isSelector(value){return typeof value=="string"&&value.trim().length>0&&value.length<=MAX_RETRY_FALLBACK_SELECTOR_LENGTH}function rpcCommandShapeError(command){if(typeof command!="object"||command===null||Array.isArray(command))return"RPC command must be a JSON object."}function rpcMessageLengthError(command){if(rpcCommandShapeError(command))return;let input=command;if(!(input.type!=="prompt"&&input.type!=="steer"&&input.type!=="follow_up")&&!(typeof input.message!="string"||input.message.length<=MAX_RPC_MESSAGE_CHARACTERS))return`RPC ${input.type} message exceeds ${MAX_RPC_MESSAGE_CHARACTERS} characters.`}import{createHash as createHash2}from"node:crypto";import{createHash}from"node:crypto";var RPC_EFFECT_ENTRY="rpc_effect",EFFECT_LEDGER_CAPABILITY="effect_ledger",actorSchema=external_exports.object({connectionId:external_exports.string()}),effectOutcomeSchema=external_exports.object({kind:external_exports.enum(["completed","aborted","error","deadline","interrupted_by_reopen","dropped_by_replace","unknown_model","provider_unavailable","unsupported_thinking_level","superseded","context_budget","cleared","cleared_by_abort","already_delivered","not_found","conflict","refused"]),reason:external_exports.string().optional(),detail:external_exports.string().optional(),action:external_exports.string().optional(),abortSource:external_exports.string().optional(),abortedBy:actorSchema.optional()}),rpcEffectRecordSchema=external_exports.object({effectId:external_exports.string().min(1).max(256),kind:external_exports.enum(["abort","unload","set_model","set_thinking_level","dequeue","edit_queued"]),state:external_exports.enum(["accepted","applied","done","failed"]),disposition:external_exports.string().optional(),outcome:effectOutcomeSchema.optional(),answer:external_exports.object({text:external_exports.string().optional(),revision:external_exports.number().int().positive().optional(),currentRevision:external_exports.number().int().positive().optional()}).optional(),by:actorSchema,acceptedAt:external_exports.string(),updatedAt:external_exports.string(),durableSessionId:external_exports.string(),fingerprint:external_exports.string()});function isTerminalEffectState(state){return state==="done"||state==="failed"}var EffectIdConflict=class extends Error{constructor(effectId){super(`effect_id_conflict: effectId ${effectId} was already used for a different request`),this.code="effect_id_conflict",this.reason="effect_id_conflict: this effectId was already used for a different request",this.action="send the request again with a new effectId",this.name="EffectIdConflict",this.effectId=effectId}},SEMANTIC_FIELDS={abort:["awaitIdle","clearQueue","graceMs"],set_model:["provider","modelId","thinkingLevel","scope"],set_thinking_level:["level","scope"],unload:["interrupt","clearQueue","children","force"],dequeue:["queuedId","expectedRevision"],edit_queued:["queuedId","text","expectedRevision"]};function effectFingerprint(command,payload){let semantic={kind:command};for(let field3 of SEMANTIC_FIELDS[command]){let value=Reflect.get(payload,field3);value!==void 0&&(semantic[field3]=value)}return createHash("sha256").update(JSON.stringify(semantic)).digest("hex")}var CLIENT_ADMISSION_ENTRY="rpc_client_message_admission",HOST_MINTED_ID_PREFIX="host:";function isHostMintedId(id){return id?.startsWith(HOST_MINTED_ID_PREFIX)===!0}function clientFacingIdentity(value){if(!isHostMintedId(value.clientMessageId))return value;let{clientMessageId:_minted,...rest}=value;return rest}var DURABLE_CLIENT_MESSAGE_ID_CAPABILITY="durable_client_message_id",admissionIdentitySchema=clientMessageIdentitySchema.extend({clientMessageId:external_exports.string().min(1).max(256),durableSessionId:external_exports.string(),fingerprint:external_exports.string(),disposition:external_exports.enum(["queued","started","handled"]),turnId:external_exports.string().optional(),hostMinted:external_exports.literal(!0).optional()}),preparedInputSchema=clientMessageIdentitySchema.extend({text:external_exports.string(),images:external_exports.array(external_exports.object({type:external_exports.literal("image"),data:external_exports.string(),mimeType:external_exports.string()})).optional(),mode:external_exports.enum(["steer","followUp"]),enqueueOrder:external_exports.number(),source:external_exports.enum(["interactive","rpc","extension"]).optional()}),clientAdmissionRecordSchema=external_exports.discriminatedUnion("state",[admissionIdentitySchema.extend({state:external_exports.literal("queued"),prepared:preparedInputSchema}),admissionIdentitySchema.extend({state:external_exports.literal("running"),prepared:external_exports.undefined().optional()}),admissionIdentitySchema.extend({state:external_exports.literal("completed"),prepared:external_exports.undefined().optional(),outcome:effectOutcomeSchema.optional()})]);function admissionSnapshot(record){let{fingerprint:_fingerprint,prepared:_prepared,...snapshot}=record;return snapshot}var ClientMessageIdConflict=class extends Error{constructor(clientMessageId){super(`client_message_id_conflict: ${clientMessageId}`),this.code="client_message_id_conflict",this.name="ClientMessageIdConflict",this.clientMessageId=clientMessageId}};function clientInputFingerprint(command){let payload={type:command.type,message:command.message,images:command.images?.map(({type,data,mimeType})=>({type,data,mimeType}))??[],clientTurnId:command.clientTurnId,...command.type==="prompt"?{streamingBehavior:command.streamingBehavior,thinkingLevel:command.thinkingLevel,sessionTitlePrompt:command.sessionTitlePrompt,expandPromptTemplates:command.expandPromptTemplates??!0,unknownCommandAsText:command.unknownCommandAsText??!1}:{}};return createHash2("sha256").update(JSON.stringify(payload)).digest("hex")}import{randomUUID}from"node:crypto";async function admitClientInput(command,invoke){await this.ready,this.hasIdentities||=command.clientMessageId!==void 0||command.clientTurnId!==void 0;let hostMinted=command.clientMessageId===void 0&&command.type!=="prompt";if(command.clientMessageId===void 0&&!hostMinted){await invoke({identity:{},queued:()=>{},accepted:()=>{}});return}let clientMessageId=command.clientMessageId??`${HOST_MINTED_ID_PREFIX}${this.session.sessionManager.getSessionId()}:${randomUUID()}`,fingerprint=clientInputFingerprint(command),pending2=this.pending.get(clientMessageId),existing=this.records.get(clientMessageId);if((pending2??existing)?.fingerprint!==void 0&&(pending2??existing)?.fingerprint!==fingerprint)throw new ClientMessageIdConflict(clientMessageId);if(pending2)return pending2.result;if(existing)return admissionSnapshot(existing);let result=Promise.withResolvers();this.pending.set(clientMessageId,{fingerprint,result:result.promise}),result.promise.catch(()=>{});try{await this.session.sessionManager.persistHeaderNow();let base={...clientMessageIdentity(command),clientMessageId,durableSessionId:this.session.sessionManager.getSessionId(),fingerprint,...hostMinted?{hostMinted:!0}:{}},disposition=await invoke({identity:{...clientMessageIdentity(command),clientMessageId},queued:prepared=>this.save({...base,state:"queued",disposition:"queued",prepared}),accepted:(accepted,turnId)=>{let record2=this.records.get(clientMessageId)??{...base,state:accepted==="handled"?"completed":"running",disposition:accepted,...turnId===void 0?{}:{turnId}};return this.records.has(clientMessageId)||this.save(record2),admissionSnapshot(record2)}}),record=this.records.get(clientMessageId);if(!record)throw new Error(`RPC input was ${disposition} without a durable admission`);let snapshot=admissionSnapshot(record);return result.resolve(snapshot),hostMinted?void 0:snapshot}catch(error){throw result.reject(error),error}finally{this.pending.delete(clientMessageId)}}var EFFECT_OUTCOMES={inputInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened while this input's turn was running, so that turn never finished",action:"read the transcript for what the turn produced, then send the input again with a new clientMessageId"},inputCleared:{kind:"cleared",reason:"cleared",detail:"the queue was cleared (clear_queue, or abort or unload_session with clearQueue) before this queued input was delivered",action:"send the input again with a new clientMessageId if it is still needed"},queuedInputAlreadyDelivered:{kind:"already_delivered",reason:"already_delivered",detail:"the queued message had already been handed to the agent, so it can no longer be removed or edited",action:"send a follow-up message to correct it, or abort the turn"},queuedInputNotFound:{kind:"not_found",reason:"not_found",detail:"no queued message has this queuedId in this session",action:"read queuedId values from get_state or queue_update and retry with one that is still queued"},queuedInputConflict:{kind:"conflict",reason:"conflict",detail:"the queued message was changed after the revision this request was based on, so nothing was changed",action:"read the input's current text and revision from get_state or queue_update, then retry with that expectedRevision if the change still applies"},inputDroppedByReplace:{kind:"dropped_by_replace",reason:"dropped_by_replace",detail:"the session was replaced (new_session, switch_session or fork) before this queued input was delivered",action:"send the input again with a new clientMessageId on the current session"},abortInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened, so the turn this abort targeted is no longer running"},setModelInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the host restarted before the model switch was applied",action:"send set_model again with a new effectId"},setModelSuperseded:{kind:"superseded",reason:"superseded",detail:"a newer model selection replaced this switch before it was applied",action:"read the current model, then send set_model with a new effectId if you still want this model"},setModelDroppedByReplace:{kind:"dropped_by_replace",reason:"dropped_by_replace",detail:"the session was replaced (new_session, switch_session or fork) before this model switch was applied",action:"read the current model, then send set_model with a new effectId on the current session"},setThinkingInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the host restarted before the thinking level was applied",action:"send set_thinking_level again with a new effectId"},dequeueInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened before the queued input was removed",action:"re-read queue_update.ordered and retry with a new effectId"},editQueuedInterruptedByReopen:{kind:"interrupted_by_reopen",reason:"interrupted_by_reopen",detail:"the session was reopened before the queued input was edited",action:"re-read queue_update.ordered and retry with a new effectId"}};function unknownModelOutcome(provider,modelId){return{kind:"unknown_model",reason:"unknown_model",detail:`no available model is named ${provider}/${modelId}`,action:"pick a model from get_available_models and send set_model again with a new effectId"}}function providerUnavailableOutcome(detail){return{kind:"provider_unavailable",reason:"provider_unavailable",detail,action:"sign in to the provider or pick another model, then send set_model again with a new effectId"}}function contextBudgetOutcome(detail){return{kind:"context_budget",reason:"context_budget",detail,action:"compact the session or pick a model with a larger context window, then send set_model with a new effectId"}}function modelSwitchErrorOutcome(detail){return{kind:"error",reason:"error",detail,action:"read the error, then send set_model again with a new effectId after correcting its cause"}}function unsupportedThinkingLevelOutcome(detail){return{kind:"unsupported_thinking_level",reason:"unsupported_thinking_level",detail,action:"pick a level from get_available_thinking_levels and send it again with a new effectId"}}function turnErrorOutcome(detail){return{kind:"error",reason:"error",detail:detail??"the turn ended with a provider error",action:"read the error in the transcript, then retry the turn"}}var ADMISSION_STATES={queued:"accepted",running:"applied",completed:"done"};function projectAdmission(record,sessionId){let outcome=record.state==="completed"?record.outcome:void 0;return{effectId:record.clientMessageId,kind:"input",state:outcome?.kind==="dropped_by_replace"||outcome?.kind==="cleared"||outcome?.kind==="cleared_by_abort"?"failed":ADMISSION_STATES[record.state],disposition:record.disposition,...outcome===void 0?{}:{outcome},...sessionId===void 0?{}:{sessionId},durableSessionId:record.durableSessionId}}function projectEffect(record,sessionId){let{fingerprint:_fingerprint,...status}=record;return sessionId===void 0?status:{...status,sessionId}}function effectStatusRecord(subscription,sessionId,status,at){return{type:"effect_status",subscriptionId:subscription.id,seq:subscription.seq,sessionId,effectId:status.effectId,kind:status.kind,state:status.state,...status.disposition===void 0?{}:{disposition:status.disposition},...status.outcome===void 0?{}:{outcome:status.outcome},...status.by===void 0?{}:{by:status.by},at,...subscription.options?.admissionId!==void 0?{admissionId:subscription.options.admissionId,generation:0}:{}}}var sinks=new Set,pending=new WeakMap,dirty=new Map,scheduled=!1;function noteSessionEffect(session,status){let owner;for(let sink of sinks)if(sink.owns(session)){owner=sink;break}if(owner===void 0)return;let list=pending.get(session)??[];list.push(status),pending.set(session,list),dirty.set(session,owner),scheduled||(scheduled=!0,queueMicrotask(flushDirty))}function drainSessionEffects(session){let list=pending.get(session)??[];return list.length>0&&pending.set(session,[]),list}function flushDirty(){scheduled=!1;for(let[session,sink]of[...dirty]){dirty.delete(session);let drained=drainSessionEffects(session);drained.length>0&&sinks.has(sink)&&sink.flush(session,drained)}}function installSessionEffectSink(sink){return sinks.add(sink),()=>{sinks.delete(sink);for(let[session,owner]of[...dirty])owner===sink&&(dirty.delete(session),drainSessionEffects(session))}}var sessions=new WeakMap,ClientAdmissions=class _ClientAdmissions{constructor(session){this.records=new Map,this.pending=new Map,this.restoring=!0,this.hasIdentities=!1,this.session=session;let durableSessionId=session.sessionManager.getSessionId();this.durableSessionId=durableSessionId;for(let entry of session.sessionManager.getEntries()){if(entry.type!=="custom"||entry.customType!==CLIENT_ADMISSION_ENTRY)continue;let parsed=clientAdmissionRecordSchema.safeParse(entry.data);parsed.success&&parsed.data.durableSessionId===durableSessionId&&this.records.set(parsed.data.clientMessageId,parsed.data)}this.hasIdentities=[...this.records.values()].some(record=>record.hostMinted!==!0);for(let record of[...this.records.values()])record.state==="running"&&this.save({...record,state:"completed",outcome:EFFECT_OUTCOMES.inputInterruptedByReopen});this.unsubscribeAgent=session.agent.subscribe(event=>{if(this.durableSessionId!==session.sessionManager.getSessionId()||event.type!=="message_start"||event.message.role!=="user")return;let identity=readClientMessageIdentity(event.message),record=identity.clientMessageId?this.records.get(identity.clientMessageId):void 0;record?.state==="queued"&&this.save({...record,state:"running",prepared:void 0})}),this.unsubscribeSession=session.subscribe(event=>{if(!(this.restoring||this.durableSessionId!==session.sessionManager.getSessionId())){if(event.type==="agent_start")this.lastAbort=void 0;else if(event.type==="agent_end")event.willRetry||(this.turnOutcome=this.endOutcome(event.messages));else if(event.type==="agent_idle"){let outcome=this.turnOutcome??{kind:"completed"};this.turnOutcome=void 0,this.turnAbortedBy=void 0,this.lastAbort=void 0;for(let record of this.records.values())record.state==="running"&&this.save({...record,state:"completed",outcome})}else if(event.type==="queue_update"){let queuedIds=new Set(event.ordered.map(input=>input.clientMessageId)),consumingId=readClientMessageIdentity(session.agent.state.streamingMessage).clientMessageId;for(let record of this.records.values())record.state==="queued"&&!queuedIds.has(record.clientMessageId)&&this.save({...record,state:consumingId===record.clientMessageId?"running":"completed",prepared:void 0})}}}),this.ready=Promise.resolve().then(()=>this.restore())}static clearQueuedFor(session){sessions.get(session)?.clearQueued()}static sealQueuedOnReplace(runtime){return runtime.onBeforeSessionReplace(()=>sessions.get(runtime.session)?.dropQueuedByReplace())}static forSession(session){let admissions=sessions.get(session);return admissions&&admissions.durableSessionId!==session.sessionManager.getSessionId()&&(admissions.unsubscribeAgent(),admissions.unsubscribeSession(),admissions=void 0),admissions||(admissions=new _ClientAdmissions(session),sessions.set(session,admissions)),admissions}record(clientMessageId){return this.records.get(clientMessageId)}editQueuedText(clientMessageId,text){let record=this.records.get(clientMessageId);record?.state==="queued"&&this.save({...record,prepared:{...record.prepared,text}})}noteAbort(by,effectId){this.session.isStreaming&&(this.turnAbortedBy=by);let abort={connectionId:by.connectionId,...effectId===void 0?{}:{effectId}};return this.lastAbort=abort,abort}get abortedBy(){return this.lastAbort}forgetAbort(abort){this.lastAbort===abort&&(this.lastAbort=void 0)}clearQueued(){if(this.durableSessionId===this.session.sessionManager.getSessionId())for(let record of[...this.records.values()])record.state==="queued"&&this.save({...record,state:"completed",prepared:void 0,outcome:EFFECT_OUTCOMES.inputCleared})}dropQueuedByReplace(){if(this.durableSessionId===this.session.sessionManager.getSessionId())for(let record of[...this.records.values()])record.state==="queued"&&this.save({...record,state:"completed",prepared:void 0,outcome:EFFECT_OUTCOMES.inputDroppedByReplace})}endOutcome(messages){let abortSource=this.session.currentAbortSource;if(abortSource!==void 0)return{kind:"aborted",reason:"aborted",detail:"the turn was aborted before it finished",abortSource,...this.turnAbortedBy===void 0?{}:{abortedBy:this.turnAbortedBy}};let last=messages.at(-1);return last?.role==="assistant"&&last.stopReason==="error"?turnErrorOutcome(last.errorMessage):{kind:"completed"}}async restore(){try{let queued=[...this.records.values()].filter(record=>record.state==="queued").sort((left,right)=>left.prepared.enqueueOrder-right.prepared.enqueueOrder);for(let record of queued)await this.session.restoreQueuedInput(record.prepared)}finally{this.restoring=!1}}save(record){this.session.sessionManager.appendCustomEntry(CLIENT_ADMISSION_ENTRY,record),this.records.set(record.clientMessageId,record),noteSessionEffect(this.session,projectAdmission(record))}async admit(command,invoke){let ledger=this;return admitClientInput.call({ready:this.ready,get hasIdentities(){return ledger.hasIdentities},set hasIdentities(value){ledger.hasIdentities=value},session:this.session,records:this.records,pending:this.pending,save:record=>this.save(record)},command,invoke)}};var EFFECT_CRASH_ENV="SENPI_TEST_RPC_EFFECT_CRASH";function effectCrashPoint(phase,kind,state){process.env[EFFECT_CRASH_ENV]===`${phase}:${kind}:${state}`&&process.kill(process.pid,"SIGKILL")}var ledgers=new WeakMap,latestCache=new WeakMap;function latestSessionEffect(session){let entries=session.sessionManager.getEntries(),cached=latestCache.get(session);if(cached?.entries===entries.length)return cached.latest;let latest;for(let index=entries.length-1;index>=0;index--){let entry=entries[index];if(entry?.type==="custom"){if(entry.customType===RPC_EFFECT_ENTRY){let parsed=rpcEffectRecordSchema.safeParse(entry.data);if(parsed.success){latest=projectEffect(parsed.data);break}}else if(entry.customType===CLIENT_ADMISSION_ENTRY){let parsed=clientAdmissionRecordSchema.safeParse(entry.data);if(parsed.success){latest=projectAdmission(parsed.data);break}}}}return latestCache.set(session,{entries:entries.length,latest}),latest}var EffectLedger=class _EffectLedger{constructor(session){this.records=new Map,this.session=session,this.admissions=ClientAdmissions.forSession(session),this.durableSessionId=session.sessionManager.getSessionId();let switchedBy=new Set,thinkingBy=new Set;for(let entry of session.sessionManager.getEntries()){if(entry.type==="model_change"&&entry.effectId!==void 0&&switchedBy.add(entry.effectId),entry.type==="thinking_level_change"&&entry.effectId!==void 0&&thinkingBy.add(entry.effectId),entry.type!=="custom"||entry.customType!==RPC_EFFECT_ENTRY)continue;let parsed=rpcEffectRecordSchema.safeParse(entry.data);parsed.success&&parsed.data.durableSessionId===this.durableSessionId&&this.records.set(parsed.data.effectId,parsed.data)}this.sealOnReopen(switchedBy,thinkingBy),this.unsubscribe=session.subscribe(event=>{if(this.durableSessionId===session.sessionManager.getSessionId()){if(event.type==="model_changed"&&event.origin.effectId!==void 0){let record=this.records.get(event.origin.effectId);record?.kind==="set_model"&&!isTerminalEffectState(record.state)&&this.transition(record.effectId,"done",{disposition:"applied"})}else if(event.type==="model_change_cancelled"&&event.origin.effectId!==void 0){let record=this.records.get(event.origin.effectId);record?.kind==="set_model"&&!isTerminalEffectState(record.state)&&this.transition(record.effectId,"failed",{outcome:event.reason==="context-budget"?contextBudgetOutcome(event.detail??"the target model cannot hold the repaired context"):event.reason==="error"?modelSwitchErrorOutcome(event.detail??"the model switch failed"):EFFECT_OUTCOMES.setModelSuperseded})}else if(event.type==="agent_idle")for(let record of[...this.records.values()])record.kind==="abort"&&record.state==="applied"&&this.transition(record.effectId,"done")}})}static sealOnReplace(runtime){return runtime.onBeforeSessionReplace(()=>{let ledger=ledgers.get(runtime.session);if(!(!ledger||ledger.durableSessionId!==runtime.session.sessionManager.getSessionId()))for(let record of[...ledger.records.values()])record.kind==="set_model"&&!isTerminalEffectState(record.state)&&ledger.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.setModelDroppedByReplace})})}static forSession(session){let ledger=ledgers.get(session);return ledger&&ledger.durableSessionId!==session.sessionManager.getSessionId()&&(ledger.unsubscribe(),ledger=void 0),ledger||(ledger=new _EffectLedger(session),ledgers.set(session,ledger)),ledger}sealOnReopen(switchedBy,thinkingBy){for(let record of[...this.records.values()])if(!isTerminalEffectState(record.state))switch(record.kind){case"abort":this.transition(record.effectId,"done",{disposition:"no_active_turn",outcome:EFFECT_OUTCOMES.abortInterruptedByReopen});break;case"set_model":switchedBy.has(record.effectId)?this.transition(record.effectId,"done",{disposition:"applied"}):this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.setModelInterruptedByReopen});break;case"unload":this.transition(record.effectId,"done");break;case"set_thinking_level":thinkingBy.has(record.effectId)?this.transition(record.effectId,"done",{disposition:"applied"}):this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.setThinkingInterruptedByReopen});break;case"dequeue":this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.dequeueInterruptedByReopen});break;case"edit_queued":this.transition(record.effectId,"failed",{outcome:EFFECT_OUTCOMES.editQueuedInterruptedByReopen});break;default:{let unsealed=record.kind;throw new Error(`no reopen seal for effect kind ${unsealed}`)}}}async begin(command,effectId,payload,by){await this.session.sessionManager.persistHeaderNow();let fingerprint=effectFingerprint(command,payload),existing=this.records.get(effectId);if(existing){if(existing.fingerprint!==fingerprint)throw new EffectIdConflict(effectId);return{replay:projectEffect(existing)}}let now=new Date().toISOString(),record={effectId,kind:command,state:"accepted",by,acceptedAt:now,updatedAt:now,durableSessionId:this.durableSessionId,fingerprint};return this.append(record),{record}}transition(effectId,state,patch={}){let current2=this.records.get(effectId);if(!current2)throw new Error(`No effect ${effectId} in session ${this.durableSessionId}`);return this.append({...current2,...patch,state,updatedAt:new Date().toISOString()}),this.statusOf(effectId)}status(effectId,sessionId){let record=this.records.get(effectId);if(record)return projectEffect(record,sessionId);let admission=this.admissions.record(effectId);return admission===void 0?void 0:projectAdmission(admission,sessionId)}statusOf(effectId){let status=this.status(effectId);if(!status)throw new Error(`No effect ${effectId} in session ${this.durableSessionId}`);return status}append(record){effectCrashPoint("before",record.kind,record.state),this.session.sessionManager.appendCustomEntry(RPC_EFFECT_ENTRY,record),this.records.set(record.effectId,record),noteSessionEffect(this.session,projectEffect(record)),effectCrashPoint("after",record.kind,record.state)}};import{randomUUID as randomUUID2}from"node:crypto";import{mkdir,rm,writeFile}from"node:fs/promises";import{join}from"node:path";import{setTimeout as delay}from"node:timers/promises";import{Worker}from"node:worker_threads";var RECURSIVE_WATCH_WORKER_SOURCE=`
|
|
3
3
|
const { watch } = require("node:fs");
|
|
4
4
|
const { parentPort } = require("node:worker_threads");
|
|
5
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{CONFIG_COMMAND_ARGV,HOST_COMMAND_ARGV,SCHEDULE_COMMAND_ARGV,exitAfterOutput,isPackageCommandArgv}from"./chunk-
|
|
2
|
+
import{CONFIG_COMMAND_ARGV,HOST_COMMAND_ARGV,SCHEDULE_COMMAND_ARGV,exitAfterOutput,isPackageCommandArgv}from"./chunk-74HCKLRH.js";import{APP_NAME,CONFIG_DIR_NAME,CONFIG_FLAT_LAYOUT,ENV_PREFIX,brandEnvNames,getAgentDir}from"./chunk-SODMQEHO.js";import{homedir}from"node:os";try{process.cwd()}catch{let fallback=homedir();process.chdir(fallback),console.error(`the current working directory no longer exists; continuing from ${fallback}`)}import{homedir as homedir2}from"node:os";import{join}from"node:path";async function dispatchAgentDirectoryCommand(args){if(!(args[0]!=="config"||args[1]!=="agent-dir")){(args.length!==3||args[2]!=="--json")&&await exitAfterOutput(`${JSON.stringify({version:1,ok:!1,code:"invalid_arguments",message:`Usage: ${APP_NAME} config agent-dir --json`})}
|
|
3
3
|
`,2);try{let dir=getAgentDir(),selector=brandEnvNames("CODING_AGENT_DIR").find(name=>process.env[name]!==void 0),explicit=selector!==void 0&&process.env[selector]?selector:void 0,homeDefault=CONFIG_FLAT_LAYOUT?join(homedir2(),CONFIG_DIR_NAME):join(homedir2(),CONFIG_DIR_NAME,"agent"),rule=explicit!==void 0?"environment":dir===homeDefault?"home-default":"project-local";await exitAfterOutput(`${JSON.stringify({version:1,ok:!0,dir,source:explicit??(rule==="project-local"?"project-local":"default"),rule,brandedPrefix:ENV_PREFIX})}
|
|
4
4
|
`,0)}catch(error){await exitAfterOutput(`${JSON.stringify({version:1,ok:!1,code:"selection_failed",message:error instanceof Error?error.message:"Unable to resolve the agent directory."})}
|
|
5
|
-
`,1)}}}import*as nodeModule from"node:module";async function enableStartupCompileCache(){let enable=nodeModule.enableCompileCache;if(typeof enable!="function")return;let args=process.argv.slice(2);if(!isPackageCommandArgv(args)&&args[0]!==CONFIG_COMMAND_ARGV&&(args.includes("--version")||args.includes("-v")))return;let scheduleWatch=!1;if(args[0]===SCHEDULE_COMMAND_ARGV&&args[1]==="run")for(let index=2;index<args.length;index++){let arg=args[index];arg==="--watch"?scheduleWatch=!0:["--exec","--poll-seconds","--timeout-seconds","--concurrency"].includes(arg??"")&&index++}if(!(isPackageCommandArgv(args)||args[0]===HOST_COMMAND_ARGV||args[0]===SCHEDULE_COMMAND_ARGV&&!scheduleWatch)){if(!scheduleWatch&&args.some(arg=>["--help","-h","--export","--list-models","--list-tips"].includes(arg)))try{let{parseArgs}=await import("./args-
|
|
5
|
+
`,1)}}}import*as nodeModule from"node:module";async function enableStartupCompileCache(){let enable=nodeModule.enableCompileCache;if(typeof enable!="function")return;let args=process.argv.slice(2);if(!isPackageCommandArgv(args)&&args[0]!==CONFIG_COMMAND_ARGV&&(args.includes("--version")||args.includes("-v")))return;let scheduleWatch=!1;if(args[0]===SCHEDULE_COMMAND_ARGV&&args[1]==="run")for(let index=2;index<args.length;index++){let arg=args[index];arg==="--watch"?scheduleWatch=!0:["--exec","--poll-seconds","--timeout-seconds","--concurrency"].includes(arg??"")&&index++}if(!(isPackageCommandArgv(args)||args[0]===HOST_COMMAND_ARGV||args[0]===SCHEDULE_COMMAND_ARGV&&!scheduleWatch)){if(!scheduleWatch&&args.some(arg=>["--help","-h","--export","--list-models","--list-tips"].includes(arg)))try{let{parseArgs}=await import("./args-JWBI5LNO.js"),parsed=parseArgs(args);if(parsed.version||parsed.export||parsed.listModels!==void 0||parsed.listTips||parsed.help&&!(parsed.mode==="rpc"&&parsed.multiSession))return}catch{}try{let result=enable();result.directory!==void 0&&process.env.NODE_COMPILE_CACHE===void 0&&(process.env.NODE_COMPILE_CACHE=result.directory)}catch{}}}export{dispatchAgentDirectoryCommand,enableStartupCompileCache};
|