@github/copilot 0.0.336-13 → 0.0.336-14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +499 -499
- package/package.json +2 -2
- package/sdk/index.d.ts +2 -12
- package/sdk/index.js +1 -1
- package/sdk/index.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@github/copilot",
|
|
3
3
|
"description": "GitHub Copilot CLI brings the power of Copilot coding agent directly to your terminal.",
|
|
4
|
-
"version": "0.0.336-
|
|
4
|
+
"version": "0.0.336-14",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"sdk/**/*"
|
|
34
34
|
],
|
|
35
35
|
"buildMetadata": {
|
|
36
|
-
"gitCommit": "
|
|
36
|
+
"gitCommit": "75151b8"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"node-pty": "npm:@devm33/node-pty@^1.0.8",
|
package/sdk/index.d.ts
CHANGED
|
@@ -645,7 +645,6 @@ declare class SessionManager_2 {
|
|
|
645
645
|
private onTimelineEntriesChangeCallback;
|
|
646
646
|
private debounceSave;
|
|
647
647
|
private logger;
|
|
648
|
-
private needsSessionPicker;
|
|
649
648
|
private autoSaveEnabled;
|
|
650
649
|
private usageMetrics;
|
|
651
650
|
static create(initMode: SessionInitMode): Promise<SessionManager_2>;
|
|
@@ -665,16 +664,6 @@ declare class SessionManager_2 {
|
|
|
665
664
|
* @returns The current logger.
|
|
666
665
|
*/
|
|
667
666
|
getLogger(): RunnerLogger;
|
|
668
|
-
/**
|
|
669
|
-
* Check if the session manager is waiting for session picker.
|
|
670
|
-
* @returns true if session picker is needed
|
|
671
|
-
*/
|
|
672
|
-
isWaitingForSessionPicker(): boolean;
|
|
673
|
-
/**
|
|
674
|
-
* Clear the session picker flag and load a specific session.
|
|
675
|
-
* @param sessionId The session ID to load
|
|
676
|
-
*/
|
|
677
|
-
selectSession(sessionId: string): Promise<void>;
|
|
678
667
|
/**
|
|
679
668
|
* Set a callback to be notified when the timeline entries change
|
|
680
669
|
* @param callback The callback to be called with the new timeline entries
|
|
@@ -860,9 +849,10 @@ declare class SessionManager_2 {
|
|
|
860
849
|
updateToolCallTimelineEntryPartialOutput(callId: string, output: string): void;
|
|
861
850
|
/**
|
|
862
851
|
* Resume a specific session by session ID or filename, otherwise errors.
|
|
852
|
+
* This is a public method that can be called to resume a session after picker selection.
|
|
863
853
|
* @param sessionId The session ID (UUID) or filename part to resume. Supports partial matching.
|
|
864
854
|
*/
|
|
865
|
-
|
|
855
|
+
resumeSpecificSession(sessionId: string): Promise<void>;
|
|
866
856
|
/**
|
|
867
857
|
* Resume the last session, if one exists. Otherwise errors.
|
|
868
858
|
* This picks the most recently modified session file.
|
package/sdk/index.js
CHANGED
|
@@ -1341,7 +1341,7 @@ Answer:
|
|
|
1341
1341
|
|
|
1342
1342
|
${c}`;await n.logMCPSetup(e,s),this.logger.log(`Updated session log for ${e} with ${I.length} tools`)}catch(c){this.logger.error(`Failed to update session log for ${e}: ${c}`)}}};G();var uZe={mcpServers:{}},Dq=class{constructor(e,I,l){this.logger=e;this.registry=I;this.remoteEnabled=l?.remoteEnabled??!1,this.mcp3pEnabled=l?.mcp3pEnabled??!1,this.blackbirdMetisIndexEnabled=l?.blackbirdMetisIndexEnabled??!1,this.sessionClient=l?.sessionClient,this.mcpEnvConfig=void 0}remoteEnabled;mcp3pEnabled;blackbirdMetisIndexEnabled;mcpEnvConfig;sessionClient;ReadMcpConfigFromEnv(e){this.mcpEnvConfig=process.env.GITHUB_COPILOT_MCP_JSON,this.mcp3pEnabled=process.env.GITHUB_COPILOT_3P_MCP_ENABLED==="true",this.remoteEnabled=process.env.GITHUB_COPILOT_REMOTE_MCP_ENABLED==="true",this.blackbirdMetisIndexEnabled=process.env.BLACKBIRD_METIS_INDEX_ENABLED==="true";let I=this.validateEnvConfig();return process.env.GITHUB_COPILOT_CLI_MODE==="true"?this.logger.log("CLI mode detected - skipping default MCP servers"):(this.logger.log("Adding default MCP servers to configuration"),this.configureBlackbirdMcp(I,e),this.configureGitHubMcp(I,e),this.configurePlaywrightMcp(I)),I}validateEnvConfig(){if(!this.mcp3pEnabled)return this.logger.log("User-provided MCPs are disabled"),uZe;if(this.logger.log("User-provided MCPs are enabled, checking for environment variable"),!this.mcpEnvConfig)return this.logger.log("No user-provided MCP servers found"),uZe;try{let e=JSON.parse(this.mcpEnvConfig);if(!e.mcpServers)throw new Error("User-provided config had incorrect format. Missing 'mcpServers' property.");for(let I in e.mcpServers)e.mcpServers[I].isDefaultServer=!1;return e}catch(e){return this.logger.error(`Warning: User-provided MCP servers were defined but invalid: ${e}`),uZe}}configureGitHubMcp(e,I){this.remoteEnabled?this.configureRemoteGitHubMcp(e,I):this.configureLocalGitHubMcp(e)}configureRemoteGitHubMcp(e,I){this.logger.log("Using default remote GitHub MCP server configuration");let l="repos,issues,users,pull_requests,code_security,secret_protection,actions";process.env.COPILOT_MCP_COPILOT_SPACES_ENABLED==="true"&&(this.logger.log("Enabling Copilot Spaces in GitHub MCP server configuration"),l=l+",copilot_spaces");let n={Authorization:"Bearer "+process.env.GITHUB_PERSONAL_ACCESS_TOKEN,"X-MCP-Toolsets":l,"X-MCP-Host":"github-coding-agent","X-Initiator":"agent"};I&&I.api?.copilot?.integrationId&&(n["Copilot-Integration-Id"]=I.api.copilot.integrationId),process.env.GITHUB_COPILOT_INTERACTION_ID&&(n["X-Interaction-Id"]=process.env.GITHUB_COPILOT_INTERACTION_ID);let c={type:"http",url:this.getCapiMcpUrl(),headers:n,tools:["*"],isDefaultServer:!0,filterMapping:{get_issue:"markdown",get_issue_comments:"markdown",get_pull_request:"markdown",get_pull_request_comments:"markdown",get_pull_request_reviews:"markdown"}};e.mcpServers[d1]=c}configureLocalGitHubMcp(e){if(e.mcpServers[d1]){this.logger.log("Using user-provided GitHub MCP server configuration");let I=e.mcpServers[d1]??{};i1(I)&&!I.command&&(e.mcpServers[d1]={...I,command:"./copilot-developer-action-main/github-mcp-server/github-mcp-server",isDefaultServer:!0},this.logger.log("Added default command to user-provided GitHub MCP server configuration"))}else{this.logger.log("Using default local GitHub MCP server configuration");let I={command:"./copilot-developer-action-main/github-mcp-server/github-mcp-server",args:["stdio","--read-only"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",GITHUB_HOST:"GITHUB_SERVER_URL"},tools:["*"],isDefaultServer:!0};e.mcpServers[d1]=I}}configurePlaywrightMcp(e){if(!e.mcpServers[pZe]){if((process.env.COPILOT_FEATURE_FLAGS??"").split(",").map(l=>l.trim()).includes("copilot_swe_agent_playwright_use_firewall")){this.logger.log("Playwright MCP server is configured to use the firewall, skipping launch.");return}this.logger.log("Enabling Playwright MCP server");let I={command:"npx",args:[...yme,"--allowed-origins","localhost;localhost:*;127.0.0.1;127.0.0.1:*"],tools:["*"],isDefaultServer:!0};e.mcpServers[pZe]=I}}configureBlackbirdMcp(e,I){this.remoteEnabled?this.configureRemoteBlackbirdMcp(e):this.blackbirdMetisIndexEnabled?this.configureLocalMetisBlackbirdMCP(e,I):this.configureLocalBlackbirdMcp(e)}configureLocalMetisBlackbirdMCP(e,I){this.logger.log("Using local Metis Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${I.blackbird?.mode}`);let l=process.env.AGENT_DIR||"/agent";this.logger.log(`Using agent directory: ${l}`);let n=[];I.blackbird?.mode==="tool"&&(n=["*"]),this.logger.log(`Using blackbird Metis server: ${I.blackbird?.mode}`);let c={command:`${l}/blackbird/mcp`,args:["serve","--index",`${l}/blackbird/metis`],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",COPILOT_API_HMAC_KEY:"CAPI_HMAC_KEY",MODEL_BASED_RETRIEVAL_TOKEN:"BLACKBIRD_AUTH_MODEL_BASED_RETRIEVAL_TOKEN",METIS_API_KEY:"BLACKBIRD_AUTH_METIS_API_KEY"},tools:n,isDefaultServer:!0};e.mcpServers[NF]=c}configureLocalBlackbirdMcp(e){this.logger.log("Using local Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${process.env.BLACKBIRD_MODE}`);let I=[];process.env.BLACKBIRD_MODE==="tool"&&(I=["*"]);let l={command:"./copilot-developer-action-main/blackbird-mcp-server/blackbird-mcp-server",args:["stdio"],env:{GITHUB_PERSONAL_ACCESS_TOKEN:"GITHUB_PERSONAL_ACCESS_TOKEN",CAPI_HOST:"COPILOT_API_URL"},tools:I,isDefaultServer:!0};e.mcpServers[NF]=l}configureRemoteBlackbirdMcp(e){this.logger.log("Using remote Blackbird MCP server configuration"),this.logger.log(`Using blackbird mode: ${process.env.BLACKBIRD_MODE}`);let I=[];process.env.BLACKBIRD_MODE==="tool"&&(I=["*"]);let l={Authorization:"Bearer "+process.env.GITHUB_PERSONAL_ACCESS_TOKEN,"X-MCP-Toolsets":"search_agent","X-MCP-Host":"github-coding-agent"};process.env.GITHUB_COPILOT_INTERACTION_ID&&(l["X-Interaction-Id"]=process.env.GITHUB_COPILOT_INTERACTION_ID);let n={type:"http",url:this.getCapiMcpUrl(),headers:l,tools:I,isDefaultServer:!0};e.mcpServers[NF]=n}getCapiMcpUrl(){return process.env.COPILOT_API_URL?new URL("/mcp/readonly",process.env.COPILOT_API_URL).toString():"https://api.githubcopilot.com/mcp/readonly"}isValidServerType(e){return i1(e)||Mq(e)||Tq(e)||Ox(e)}isValidLocalServerConfig(e){return e.command!==void 0&&e.command.trim()!==""&&Array.isArray(e.args)}isValidRemoteServerConfig(e){return e.url!==void 0&&e.url.trim()!==""}isValidInMemoryServerConfig(e){return e.serverInstance!==void 0&&typeof e.serverInstance=="object"}validateServerConfig(e,I){return this.remoteEnabled&&!this.isValidServerType(I)?(this.logger.error(`Unsupported server type "${I.type}" for server "${e}". Only "Local", "STDIO", "HTTP", "SSE", or "Memory" are supported.`),!1):!this.remoteEnabled&&!i1(I)&&!Ox(I)?(this.logger.error(`Unsupported server type "${I.type}" for server "${e}". Only "Local", "STDIO", or "Memory" are supported.`),!1):I.tools?i1(I)&&!this.isValidLocalServerConfig(I)?(this.logger.error(`Invalid local server configuration for "${e}". Please ensure 'command' and 'args' are provided.`),!1):(Mq(I)||Tq(I))&&!this.isValidRemoteServerConfig(I)?(this.logger.error(`Invalid remote server configuration for "${e}". Please ensure 'url' is provided.`),!1):Ox(I)&&!this.isValidInMemoryServerConfig(I)?(this.logger.error(`Invalid in-memory server configuration for "${e}". Please ensure 'serverInstance' is provided and is an instance of MCPServer.`),!1):!0:(this.logger.error(`No tools specified for server "${e}". Please provide a list of tools or "*" to include all tools.`),!1)}async processHttpServer(e,I){try{let l=this.resolveHeaders(I.headers,process.env),n={...I,headers:l};await this.registry.startHttpMcpClient(e,n),this.logger.log(`Started MCP client for remote server ${e}`)}catch(l){throw this.logger.error(`Failed to start MCP client for remote server ${e}: ${l}`),l}}async processSseServer(e,I){try{let l=this.resolveRemoteServerConfig(I);await this.registry.startSseMcpClient(e,l),this.logger.log(`Started MCP client for remote server ${e}`)}catch(l){throw this.logger.error(`Failed to start MCP client for remote server ${e}: ${l}`),l}}resolveRemoteServerConfig(e){return e.url=this.resolveString(e.url,process.env),e.headers=this.resolveHeaders(e.headers,process.env),{...e,url:e.url,headers:e.headers}}async processInMemoryServer(e,I){try{await this.registry.startInMemoryMcpClient(e,I.serverInstance),this.logger.log(`Started in-memory MCP client for ${e}`)}catch(l){throw this.logger.error(`Failed to start in-memory MCP client for ${e}: ${l}`),l}}async processLocalServer(e,I){let l={...I};if(I.command==="python")try{l=await this.convertPythonToPipx(l)}catch(a){this.logger.error(`Failed to handle Python module for ${e}: ${a}`)}let n=this.buildEnvironment(l),c=this.resolveLocalServerConfig(l,n);this.logger.log(`Starting MCP client for ${e} with command: ${c.command} and args: ${c.args}`);try{await this.registry.startLocalMcpClient(e,n,c.command,c.args),this.logger.log(`Started MCP client for ${e}`)}catch(a){throw this.logger.error(`Failed to start MCP client for ${e}: ${a}`),a}}convertPythonToPipx(e){if(!e||!e.args||e.args.length===0)return e;let I=e.args,l=I.indexOf("-m");if(l===-1||l===I.length-1)throw new Error("Python command with -m flag must specify a module");let n=I[l+1];this.logger.log(`Converting Python module: ${n} to pipx command`);let c=["run",n];for(let a=l+2;a<I.length;a++)c.push(I[a]);for(let a=0;a<l;a++)c.push(I[a]);return{...e,command:"pipx",args:c}}buildEnvironment(e){let I={};if(e.env)for(let[l,n]of Object.entries(e.env)){let c=n.trim();process.env[c]!==void 0&&(I[l]=process.env[c])}return I}resolveLocalServerConfig(e,I){let l=this.resolveString(e.command,I),n=this.resolveArray(e.args,I);return{...e,command:l,args:n}}resolveString(e,I){return I?e.replace(/\$(?:\{([A-Z0-9_]+)(?::-(.*?))?\}|([A-Z0-9_]+))/g,(l,n,c,a)=>{let r=I[n||a];return r!==void 0?r:c!==void 0?c:l}):e}resolveArray(e,I){return e?I?e.map(l=>this.resolveString(l,I)):e:[]}resolveHeaders(e,I){if(!e)return{};if(!I)return e;let l={};for(let[n,c]of Object.entries(e)){let a=this.resolveArray([c],I);l[n]=a[0]}return l}async processServers(e){if(!e)throw new Error("No servers to process");let I=Object.entries(e.mcpServers).map(([l,n])=>this.processServer(l,n));await Promise.all(I)}async processServer(e,I){if(!this.validateServerConfig(e,I)){this.logger.error(`Skipping server "${e}" due to invalid configuration.`);return}try{i1(I)?await this.processLocalServer(e,I):Mq(I)&&this.remoteEnabled?await this.processHttpServer(e,I):Tq(I)&&this.remoteEnabled?await this.processSseServer(e,I):Ox(I)&&await this.processInMemoryServer(e,I)}catch(l){e!==NF&&await this.logServerFailure(e,l)}}async logServerFailure(e,I){if(this.sessionClient)try{await this.sessionClient.logMCPSetup(e,`<error>MCP server failed to start: ${I.message} - for the full output, see the verbose logs</error>`)}catch(l){this.logger.error(`Failed to log failure for MCP Server '${e}': '${l}'`)}}};var Kq=class{constructor(e,I,l){this.logger=e;let n;if(typeof I=="string"){if(n=JSON.parse(I),typeof n!="object")throw new Error("Invalid MCP configuration: must be an object");if(n===null||!("mcpServers"in n)||typeof n.mcpServers!="object")throw new Error("Invalid MCP configuration: missing or invalid mcpServers property");this.config=n}else this.config=I;this.disabledServers=new Set(l||[]),this.registry=new jq(this.logger),this.processor=new Dq(this.logger,this.registry,{mcp3pEnabled:!0,remoteEnabled:!0})}registry;processor;config;startServersPromise=null;allTools=null;disabledServers;async startServers(){return this.startServersPromise||(this.startServersPromise=this.processServersWithExtensions()),this.startServersPromise}async injectDefaultServers(e){}async processServersWithExtensions(){await this.injectDefaultServers(this.config);let e;if(this.disabledServers.size>0){let I={};for(let[l,n]of Object.entries(this.config.mcpServers))this.disabledServers.has(l)?this.logger.log(`Skipping disabled MCP server: ${l}`):I[l]=n;e={...this.config,mcpServers:I}}else e=this.config;return this.processor.processServers(e)}async stopServers(){for(let[e,I]of Object.entries(this.registry.transports))try{await I.close()}catch(l){this.logger.error(`Error closing transport for ${e}: ${l}`)}this.startServersPromise=null,this.allTools=null}async getTools(e,I,l){if(!this.allTools){await this.startServers();let n=new S9(e,I,l),c=[];for(let a of Object.keys(this.registry.clients)){let s=await n.loadTools({mcpClient:this.registry.clients[a],clientName:a,tools:this.config.mcpServers[a]?.tools||["*"],filterMapping:this.config.mcpServers[a]?.filterMapping||"hidden_characters"});c.push(...s)}this.allTools=c}return this.allTools}getConfig(){return this.config}async startServer(e,I){await this.startServers(),this.config.mcpServers[e]=I,await this.processor.processServer(e,I),this.allTools=null}async stopServer(e){let I=this.registry.transports[e];if(I)try{await I.close(),delete this.registry.transports[e]}catch(l){this.logger.error(`Error closing transport for ${e}: ${l}`)}this.registry.clients[e]&&delete this.registry.clients[e],this.allTools=null}async restartServer(e,I){this.isServerRunning(e)&&await this.stopServer(e),delete this.config.mcpServers[e],await this.startServer(e,I)}isServerRunning(e){return e in this.registry.transports&&e in this.registry.clients}isServerDisabled(e){return this.disabledServers.has(e)}async disableServer(e){if(this.disabledServers.has(e)){this.logger.log(`Server ${e} is already disabled`);return}this.disabledServers.add(e),this.logger.log(`Disabled server ${e} for this session`),this.isServerRunning(e)&&await this.stopServer(e),this.allTools=null}async enableServer(e){if(!this.disabledServers.has(e)){this.logger.log(`Server ${e} is not disabled`);return}this.disabledServers.delete(e),this.logger.log(`Enabled server ${e} for this session`);let I=this.getServerConfig(e);I?await this.startServer(e,I):await this.startBuiltInServer(e),this.allTools=null}async startBuiltInServer(e){}getServerConfig(e){return this.config.mcpServers[e]}};G();var iPe=dn(dPe(),1);async function aPI(t={}){let e=await Nue();return Zue((0,iPe.default)({},e,t))}async function bPe(t={}){if(iB())throw new Error("Settings have already been initialized");return aPI(t)}G();async function HV(t,e,I){if(!t||t.length===0)return;let l=!1,n={};for(let c of t)try{let a=await c(e);a&&(l=!0,n={...n,...a})}catch(a){I.error(`Hook execution failed: ${a}`)}return l?n:void 0}G();G();G();var wZe=class{loggers;constructor(e){this.loggers=e}isDebug(){return this.loggers.some(e=>e.isDebug())}debug(e){this.loggers.forEach(I=>I.debug(e))}log(e){this.loggers.forEach(I=>I.log(e))}info(e){this.loggers.forEach(I=>I.info(e))}notice(e){this.loggers.forEach(I=>I.notice(e))}warning(e){this.loggers.forEach(I=>I.warning(e))}error(e){this.loggers.forEach(I=>I.error(e))}startGroup(e,I){this.loggers.forEach(l=>l.startGroup(e,I))}endGroup(e){this.loggers.forEach(I=>I.endGroup(e))}};G();import{appendFile as sPI,access as rPI,mkdir as GPI}from"fs/promises";import{constants as oPI}from"fs";import{dirname as dPI}from"path";var XZe=class extends hp{constructor(I,l,n){super(l,n);this.filePath=I;this.writeQueue=iPI(dPI(this.filePath)).catch(()=>{})}writeQueue=Promise.resolve();log(I){this.write("LOG",I)}debug(I){super.shouldLog(8)&&this.write("DEBUG",this.filterSecrets(I).toString())}info(I){super.shouldLog(4)&&this.write("INFO",this.filterSecrets(I).toString())}notice(I){super.shouldLog(2)&&this.write("NOTICE",this.filterSecrets(I).toString())}warning(I){super.shouldLog(2)&&this.write("WARNING",this.filterSecrets(I).toString())}error(I){super.shouldLog(1)&&this.write("ERROR",this.filterSecrets(I).toString())}startGroup(I,l){super.shouldLog(l||4)&&this.write("START-GROUP",I)}endGroup(I){super.shouldLog(I||4)&&this.write("END-GROUP","")}write(I,l){let c=`${new Date().toISOString()} [${I}] ${l}
|
|
1343
1343
|
`;this.writeQueue=this.writeQueue.then(()=>this.performWrite(c)).catch(()=>{})}async performWrite(I){await sPI(this.filePath,I)}};async function iPI(t){try{await rPI(t,oPI.F_OK)}catch{await GPI(t,{recursive:!0})}}G();var p1=class{id;startTime;selectedModel;logger;constructor({id:e,startTime:I,selectedModel:l}={},n){this.id=e||rd(),this.startTime=I||new Date,this.selectedModel=l,this.logger=n||new eG}};var Px=class extends p1{messages=[];constructor({chatMessages:e,...I}={},l){super(I,l),this.messages=e||[]}async getChatMessages(){return[...this.messages]}async addChatMessage(e){this.messages.push(e)}async onAbort(){}},mPe=class{sessions=new Map;logger;constructor(e){this.logger=e?.logger||new eG}async createSession(){let e=new Px({},this.logger);return this.sessions.set(e.id,e),this.logger.info(`Created new in-memory session with ID: ${e.id}`),e}async getLastSession(){let e=Array.from(this.sessions.values()).pop();if(!e)throw new Error("No sessions available");return e}async getSession(e){let I=this.sessions.get(e);if(!I)throw new Error(`Session with ID ${e} not found`);return I}async listSessions(){return Array.from(this.sessions.values()).map(e=>({id:e.id,startTime:e.startTime,selectedModel:e.selectedModel}))}async saveSession(e){this.logger.info(`Session with ID ${e.id} is in-memory and does not require saving.`)}enableAutoSave(){this.logger.info("Auto-save is not applicable for in-memory sessions.")}async deleteSession(e){this.sessions.delete(e.id)?this.logger.info(`Deleted session with ID: ${e.id}`):this.logger.warning(`Attempted to delete non-existent session with ID: ${e.id}`)}};var n8=class{static name="Copilot";static description="Base Copilot Agent";options;logger;workingDir;session;constructor(e){this.options=e,this.logger=e.logger||new eG,this.workingDir=e.workingDirectory||process.cwd(),this.session=e.session||new Px}async*query(e){let I=new Map,l;try{if(this.options.mcpServers&&Object.keys(this.options.mcpServers).length>0)try{l=new Kq(this.logger,{mcpServers:this.options.mcpServers},this.options.disabledTools),await l.startServers()}catch(be){this.logger.error(`Failed to initialize MCP host: ${be}`)}let n={timestamp:Date.now(),cwd:this.workingDir,prompt:e},a=(await HV(this.options.hooks?.userPromptSubmitted,n,this.logger))?.modifiedPrompt??e;await this.session.addChatMessage({role:"user",content:a});let r=new CF().setProblemStatement(a).setAgentModel(this.buildAgentModelString()).setGithubRepoName("copilot-sdk-session").setGithubRepoCommit("copilot-sdk-commit").setGithubRepoReadWrite(!1).setCopilotIntegrationId(this.options.integrationId||"copilot-sdk-unknown").setCopilotHmacKey(this.options.hmacKey).setCopilotToken(this.options.copilotToken).build();uue();let o=await bPe(r),d=o.service?.agent?.model,i=Jme(d),h=i.agent,p=i.model?{model:i.model}:void 0,Z=Ooe(o,this.logger,h,p),u={location:this.workingDir,timeout:3e4,requireReasoning:!0,toolPartialResultCallback:void 0,permissions:this.options.requestPermission?{requestRequired:!0,request:this.options.requestPermission}:{requestRequired:!1},shellConfig:process.platform==="win32"?xi.powerShell:xi.bash},N=await RMe(u,this.logger),Y=[];if(l)try{Y=await l.getTools(o,this.logger,u.permissions)}catch(be){this.logger.error(`Failed to get MCP tools: ${be}`)}let y=[...N,...Y],Q=this.applyToolFiltering(y,this.options.allowedTools,this.options.disabledTools),A=await fSe(this.workingDir),H={...(FMe()["sweagent-capi"]?.["claude-sonnet-4"]??yMe()).supports,reasoning:!0},v=await cMe(A.found?A.gitRoot:"",e9e(),this.workingDir,{},H,u),ce=(await this.session.getChatMessages()).slice(0,-1),ye={role:"user",content:rMe(a,H)},He=[...ce,ye],Xe={timestamp:Date.now(),cwd:this.workingDir,source:"new",initialPrompt:e};await HV(this.options.hooks?.sessionStart,Xe,this.logger);let me=Z.getCompletionWithTools(v,He,Q,{failIfInitialInputsTooLong:!1,processors:{preRequest:[new CE(this.logger)]},executeToolsInParallel:!1,abortSignal:this.options.abortController?.signal});for await(let be of me){if(this.options.abortController?.signal.aborted){yield{type:"error",error:new Error("Operation was cancelled")};return}let cI=await this.translateEvent(be,I);for(let Se of cI)Se.type==="message"&&Se.role==="assistant"&&await this.session.addChatMessage({role:"assistant",content:Se.content}),yield Se}yield{type:"complete"}}catch(n){let c={timestamp:Date.now(),cwd:this.workingDir,reason:"error",error:n instanceof Error?n:new Error(String(n))};await HV(this.options.hooks?.sessionEnd,c,this.logger),yield{type:"error",error:n instanceof Error?n:new Error(String(n))}}finally{let n={timestamp:Date.now(),cwd:this.workingDir,reason:"complete"};if(await HV(this.options.hooks?.sessionEnd,n,this.logger),l)try{await l.stopServers(),this.logger.log("MCP host stopped successfully")}catch(c){this.logger.error(`Error stopping MCP host: ${c}`)}}}buildAgentModelString(){switch(this.options.modelProvider.type){case"openai":return`openai:${this.options.modelProvider.model}`;case"anthropic":return`anthropic:${this.options.modelProvider.model}`;case"copilot":return`capi:${this.options.modelProvider.model}`;default:throw new Error(`Unsupported provider: ${this.options.modelProvider.type}`)}}applyToolFiltering(e,I,l){let n=e;return I&&I.length>0&&(n=n.filter(c=>I.includes(c.name))),l&&l.length>0&&(n=n.filter(c=>!l.includes(c.name))),n}async translateEvent(e,I){switch(e.kind){case"message":{if(A6(e)&&e.message.content)return[{type:"message",content:typeof e.message.content=="string"?e.message.content:"",role:"assistant"}];if(ZMe(e)){let l=[];for(let n of e.message.tool_calls){let c=OA(n.function.arguments);I.set(n.id,n.function.name);let a={timestamp:Date.now(),cwd:this.workingDir,toolName:n.function.name,toolArgs:c},r=(await HV(this.options.hooks?.preToolUse,a,this.logger))?.modifiedArgs??c;l.push({type:"tool_use",toolName:n.function.name,args:r,toolCallId:n.id})}return l}return[]}case"response":return e.response.content&&typeof e.response.content=="string"?[{type:"message",content:e.response.content,role:"assistant"}]:[];case"model_call_failure":{let l=new Error(e.modelCall?.error||"Model call failed"),n={timestamp:Date.now(),cwd:this.workingDir,error:l,errorContext:"model_call",recoverable:!0};return await HV(this.options.hooks?.errorOccurred,n,this.logger),[{type:"error",error:l}]}case"tool_execution":{let l=I.get(e.toolCallId)||"unknown",n={timestamp:Date.now(),cwd:this.workingDir,toolName:l,toolArgs:{},toolResult:e.toolResult},a=(await HV(this.options.hooks?.postToolUse,n,this.logger))?.modifiedResult??e.toolResult;return[{type:"tool_result",toolName:l,result:a,toolCallId:e.toolCallId}]}default:return[]}}};G();G();G();G();var c6e=dn(DPe(),1);G();import{existsSync as TZe}from"fs";import{mkdir as cqI,readdir as aqI,readFile as sqI,stat as rqI,writeFile as GqI}from"fs/promises";import{homedir as oqI}from"os";import{dirname as dqI,join as eB}from"path";G();G();var eqI=new Error("timeout while waiting for mutex to become available"),FIn=new Error("mutex already locked"),IqI=new Error("request for lock canceled"),tqI=function(t,e,I,l){function n(c){return c instanceof I?c:new I(function(a){a(c)})}return new(I||(I=Promise))(function(c,a){function s(d){try{o(l.next(d))}catch(i){a(i)}}function r(d){try{o(l.throw(d))}catch(i){a(i)}}function o(d){d.done?c(d.value):n(d.value).then(s,r)}o((l=l.apply(t,e||[])).next())})},MZe=class{constructor(e,I=IqI){this._value=e,this._cancelError=I,this._queue=[],this._weightedWaiters=[]}acquire(e=1,I=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return new Promise((l,n)=>{let c={resolve:l,reject:n,weight:e,priority:I},a=PPe(this._queue,s=>I<=s.priority);a===-1&&e<=this._value?this._dispatchItem(c):this._queue.splice(a+1,0,c)})}runExclusive(e){return tqI(this,arguments,void 0,function*(I,l=1,n=0){let[c,a]=yield this.acquire(l,n);try{return yield I(c)}finally{a()}})}waitForUnlock(e=1,I=0){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);return this._couldLockImmediately(e,I)?Promise.resolve():new Promise(l=>{this._weightedWaiters[e-1]||(this._weightedWaiters[e-1]=[]),lqI(this._weightedWaiters[e-1],{resolve:l,priority:I})})}isLocked(){return this._value<=0}getValue(){return this._value}setValue(e){this._value=e,this._dispatchQueue()}release(e=1){if(e<=0)throw new Error(`invalid weight ${e}: must be positive`);this._value+=e,this._dispatchQueue()}cancel(){this._queue.forEach(e=>e.reject(this._cancelError)),this._queue=[]}_dispatchQueue(){for(this._drainUnlockWaiters();this._queue.length>0&&this._queue[0].weight<=this._value;)this._dispatchItem(this._queue.shift()),this._drainUnlockWaiters()}_dispatchItem(e){let I=this._value;this._value-=e.weight,e.resolve([I,this._newReleaser(e.weight)])}_newReleaser(e){let I=!1;return()=>{I||(I=!0,this.release(e))}}_drainUnlockWaiters(){if(this._queue.length===0)for(let e=this._value;e>0;e--){let I=this._weightedWaiters[e-1];I&&(I.forEach(l=>l.resolve()),this._weightedWaiters[e-1]=[])}else{let e=this._queue[0].priority;for(let I=this._value;I>0;I--){let l=this._weightedWaiters[I-1];if(!l)continue;let n=l.findIndex(c=>c.priority<=e);(n===-1?l:l.splice(0,n)).forEach(c=>c.resolve())}}}_couldLockImmediately(e,I){return(this._queue.length===0||this._queue[0].priority<I)&&e<=this._value}};function lqI(t,e){let I=PPe(t,l=>e.priority<=l.priority);t.splice(I+1,0,e)}function PPe(t,e){for(let I=t.length-1;I>=0;I--)if(e(t[I]))return I;return-1}var nqI=function(t,e,I,l){function n(c){return c instanceof I?c:new I(function(a){a(c)})}return new(I||(I=Promise))(function(c,a){function s(d){try{o(l.next(d))}catch(i){a(i)}}function r(d){try{o(l.throw(d))}catch(i){a(i)}}function o(d){d.done?c(d.value):n(d.value).then(s,r)}o((l=l.apply(t,e||[])).next())})},Y8=class{constructor(e){this._semaphore=new MZe(1,e)}acquire(){return nqI(this,arguments,void 0,function*(e=0){let[,I]=yield this._semaphore.acquire(1,e);return I})}runExclusive(e,I=0){return this._semaphore.runExclusive(()=>e(),1,I)}isLocked(){return this._semaphore.isLocked()}waitForUnlock(e=0){return this._semaphore.waitForUnlock(1,e)}release(){this._semaphore.isLocked()&&this._semaphore.release()}cancel(){return this._semaphore.cancel()}},KPe=function(t,e,I,l){function n(c){return c instanceof I?c:new I(function(a){a(c)})}return new(I||(I=Promise))(function(c,a){function s(d){try{o(l.next(d))}catch(i){a(i)}}function r(d){try{o(l.throw(d))}catch(i){a(i)}}function o(d){d.done?c(d.value):n(d.value).then(s,r)}o((l=l.apply(t,e||[])).next())})};function qPe(t,e,I=eqI){return{acquire:(l,n)=>{let c;if(N8(t)?c=l:(c=void 0,n=l),c!==void 0&&c<=0)throw new Error(`invalid weight ${c}: must be positive`);return new Promise((a,s)=>KPe(this,void 0,void 0,function*(){let r=!1,o=setTimeout(()=>{r=!0,s(I)},e);try{let d=yield N8(t)?t.acquire(c,n):t.acquire(n);r?(Array.isArray(d)?d[1]:d)():(clearTimeout(o),a(d))}catch(d){r||(clearTimeout(o),s(d))}}))},runExclusive(l,n,c){return KPe(this,void 0,void 0,function*(){let a=()=>{};try{let s=yield this.acquire(n,c);return Array.isArray(s)?(a=s[1],yield l(s[0])):(a=s,yield l())}finally{a()}})},release(l){t.release(l)},cancel(){return t.cancel()},waitForUnlock:(l,n)=>{let c;if(N8(t)?c=l:(c=void 0,n=l),c!==void 0&&c<=0)throw new Error(`invalid weight ${c}: must be positive`);return new Promise((a,s)=>{let r=setTimeout(()=>s(I),e);(N8(t)?t.waitForUnlock(c,n):t.waitForUnlock(n)).then(()=>{clearTimeout(r),a()})})},isLocked:()=>t.isLocked(),getValue:()=>t.getValue(),setValue:l=>t.setValue(l)}}function N8(t){return t.getValue!==void 0}var V8=class{mutexes=new Map;async runExclusive(e,I,l=5e3){let n=this.mutexes.get(e);n||(n=new Y8,n.refCount=0,this.mutexes.set(e,n));let c=n;try{return c.refCount++,await qPe(n,l).runExclusive(I)}finally{--c.refCount===0&&this.mutexes.delete(e)}}};var jZe=(I=>(I.DEFAULT="config",I.MCP="mcp",I))(jZe||{});function _Pe(t){return Object.values(jZe).includes(t)}var $Pe=".copilot",e6e=new V8;async function iqI(t){let e=dqI(t);try{await cqI(e,{recursive:!0,mode:448})}catch{}}async function bqI(t,e){if(TZe(t))try{let I={},l=await e6e.runExclusive(t,()=>sqI(t,"utf8"));return l.trim().startsWith("{")?I=JSON.parse(l):l.split(`
|
|
1344
|
-
`).forEach(n=>{let[c,a]=n.split("=").map(s=>s.trim());c&&a&&(I[c]=a)}),e(I)}catch(I){throw new Error(`Failed to read configuration from ${t}: ${I}`)}}async function mqI(t,e){try{await iqI(t);let I=JSON.stringify(e,null,2);await e6e.runExclusive(t,()=>GqI(t,I,{mode:384}))}catch(I){throw new Error(`Failed to write configuration to ${t}: ${I}`)}}var I6e=(t,e,{shouldCache:I})=>{let l=new Map,n=()=>{let i=_Pe(e)?process.env.XDG_CONFIG_HOME:process.env.XDG_STATE_HOME;return i?eB(i,$Pe):eB(oqI(),$Pe)},c=()=>{let i=_Pe(e)?"-config":"-state";return`${e}${e=="config"?"":i}`},a=i=>{let h=".json",p=c()+(i?"":h),Z=eB(n(),p,i?`${i}${h}`:"");return!TZe(Z)&&TZe(Z.replace(/\.json$/,""))&&(Z=Z.replace(/\.json$/,"")),Z},s=async()=>{let i=eB(n(),c());try{let p=(await aqI(i)).filter(u=>u.endsWith(".json")),Z=await Promise.all(p.map(async u=>{let N=eB(i,u);try{let Y=await rqI(N);return{file:u,mtime:Y.mtime}}catch{return{file:u,mtime:new Date}}}));return Z.sort((u,N)=>N.mtime.getTime()-u.mtime.getTime()),Z.map(u=>u.file)}catch{}return[]},r=async(i="")=>{if(I&&l.has(i))return l.get(i);let h=await bqI(a(i),t);return I&&h&&l.set(i,h),h},o=async(i,h="")=>{I&&l.set(h,i),await mqI(a(h),i)};return{load:r,write:o,writeKey:async(i,h,p)=>{let Z=await r(p);if(h===void 0){Z&&(delete Z[i],await o(Z,p));return}let u={[i]:h},N;Z?N={...Z,...u}:N=u,await o(N,p)},path:a,directoryFiles:s}},t6e=(t,e)=>I6e(t,e,{shouldCache:!0}),l6e=(t,e)=>I6e(t,e,{shouldCache:!1});var n6e=XI({host:Ee(),login:Ee()}),hqI=XI({banner:Cu(["always","once","never"]).optional(),beep:Oa().optional(),last_logged_in_user:n6e.optional(),logged_in_users:$s(n6e).optional(),model:Cu(R8).optional(),render_markdown:Oa().optional(),screen_reader:Oa().optional(),theme:Ee().optional(),trusted_folders:$s(Ee()).optional(),capi_hmac_key:Ee().optional(),copilot_hmac_key:Ee().optional(),copilot_integration_id:Ee().optional(),copilot_tokens:k6(Ee(),Ee()).optional(),copilot_url:Ee().optional()}),pqI=k6(Ee(),Ume()),ZqI=pqI.transform(t=>(0,c6e.default)(t,(e,I)=>{let l=I.toLowerCase();return l==="github_copilot_integration_id"?"copilot_integration_id":l})),uqI=ZqI.pipe(hqI),WqI=t6e(uqI.parse,"config");var R8=["claude-sonnet-4.5","claude-sonnet-4","gpt-5"];G();var NqI=XI({type:ol("copilot"),text:Ee()}),YqI=XI({type:ol("error"),text:Ee()}),VqI=XI({type:ol("info"),text:Ee()}),RqI=XI({displayText:Ee(),fullPath:Ee(),type:Cu(["file","directory","unresolved","image"]),startIndex:cp()}),yqI=XI({type:ol("user"),text:Ee(),expandedText:Ee().optional(),mentions:$s(RqI).optional(),imageAttachments:$s(XI({type:ol("image_url"),image_url:XI({url:Ee()})})).optional()}),FqI=XI({command:Ee(),description:Ee(),timeout:cp().optional(),sessionId:Ee().optional(),async:Oa().optional()}),gqI=XI({sessionId:Ee(),input:Ee(),delay:cp().optional()}),QqI=XI({sessionId:Ee(),delay:cp()}),AqI=XI({sessionId:Ee()}),wqI=er([FqI,gqI,QqI,AqI]),XqI=XI({command:ol("view"),path:Ee(),view_range:Mme([cp(),cp()]).optional()}),HqI=XI({command:ol("create"),path:Ee(),file_text:Ee()}),EqI=XI({command:ol("str_replace"),path:Ee(),new_str:Ee().optional(),old_str:Ee()}),vqI=XI({command:ol("insert"),path:Ee(),insert_line:cp(),new_str:Ee()}),CqI=Ome("command",[XqI,HqI,EqI,vqI]),a6e=er([wqI,CqI,Sme()]),JqI=XI({type:ol("tool_call_requested"),callId:Ee(),name:Ee(),toolTitle:Ee().optional(),intentionSummary:Ee().nullable(),arguments:a6e,partialOutput:Ee().optional(),isHidden:Oa().optional(),isAlwaysExpanded:Oa().optional(),showNoContent:Oa().optional()}),LqI=XI({type:ol("tool_call_completed"),callId:Ee(),name:Ee(),toolTitle:Ee().optional(),intentionSummary:Ee().nullable(),result:er([XI({type:ol("success"),log:Ee(),markdown:Oa().optional()}),XI({type:ol("failure"),log:Ee(),markdown:Oa().optional()}),XI({type:ol("rejected"),markdown:Oa().optional()}),XI({type:ol("denied"),log:Ee(),markdown:Oa().optional()})]),arguments:a6e,isHidden:Oa().optional(),isAlwaysExpanded:Oa().optional(),showNoContent:Oa().optional()}),kqI=er([NqI,YqI,VqI,yqI,JqI,LqI]),s6e=kqI.and(XI({id:Ee(),timestamp:D9.date()}));var IB=XI({type:ol("text"),text:Ee()}),fqI=XI({type:ol("refusal"),refusal:Ee()}),xqI=XI({type:ol("image_url"),image_url:XI({url:Ee(),detail:Cu(["auto","low","high"]).optional()})}),BqI=XI({type:ol("input_audio"),input_audio:XI({data:Ee(),format:ol("wav").or(ol("mp3"))})}),zqI=XI({type:ol("file"),file:XI({file_date:Ee().optional(),file_id:Ee().optional(),filename:Ee().optional()})}),UqI=er([IB,xqI,BqI,zqI]),SqI=XI({name:Ee(),arguments:Ee()}),OqI=XI({name:Ee(),input:Ee()}),MqI=XI({id:Ee(),type:ol("function"),function:SqI}),TqI=XI({id:Ee(),type:ol("custom"),custom:OqI}),jqI=er([MqI,TqI]),DqI=XI({name:Ee(),arguments:Ee()}),KqI=XI({id:Ee()}),PqI=XI({content:er([Ee(),$s(IB)]),role:ol("developer"),name:Ee().optional()}),qqI=XI({content:er([Ee(),$s(IB)]),role:ol("system"),name:Ee().optional()}),_qI=XI({content:er([Ee(),$s(UqI)]),role:ol("user"),name:Ee().optional()}),$qI=XI({content:er([Ee(),$s(er([IB,fqI]))]).nullable().optional(),role:ol("assistant"),name:Ee().optional(),refusal:Ee().nullable().optional(),audio:KqI.nullable().optional(),function_call:DqI.nullable().optional(),tool_calls:$s(jqI).optional()}),e8I=XI({content:er([Ee(),$s(IB)]),role:ol("tool"),tool_call_id:Ee()}),I8I=XI({content:Ee().nullable(),role:ol("function"),name:Ee()}),t8I=er([PqI,qqI,_qI,$qI,e8I,I8I]),l8I=XI({sessionId:Ee(),startTime:D9.date(),chatMessages:$s(t8I),timeline:$s(s6e),selectedModel:Cu(R8).optional()}),Du=l6e(l8I.parse,"history-session");G();function n8I(t){return`session_${t.sessionId}_${t.startTime.getTime()}`}function r6e(t){let e=/^session_(.+)_(\d+)\.json$/,I=t.match(e);if(!I)return null;let[,l,n]=I;return{sessionId:l,startTime:new Date(parseInt(n,10))}}var V1=class t{currentSession;onTimelineEntriesChangeCallback=null;debounceSave=null;logger;needsSessionPicker=!1;autoSaveEnabled=!1;usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map};static async create(e){let I=new t;switch(e.kind){case"new":break;case"resume-last":await I.resumeLastSession();break;case"resume":await I.resumeSpecificSession(e.sessionId);break;case"resume-with-picker":I.needsSessionPicker=!0;break;default:{let l=e;throw new Error(`unexpected session kind: ${JSON.stringify(l)}`)}}return I}static async hasMultipleSessions(){try{return(await Du.directoryFiles()).length>1}catch{return!1}}constructor(){this.currentSession=this.generateSession(),this.logger=new eG}setLogger(e){this.logger=e}getLogger(){return this.logger}isWaitingForSessionPicker(){return this.needsSessionPicker}async selectSession(e){this.needsSessionPicker=!1,await this.resumeSpecificSession(e)}setOnTimelineEntriesChangeCallback(e){this.onTimelineEntriesChangeCallback=e,this.notifyTimelineEntriesChange()}notifyTimelineEntriesChange(){this.onTimelineEntriesChangeCallback?.([...this.currentSession.timeline])}enableAutoSave(){this.autoSaveEnabled=!0}async forceSave(){await this.saveHistorySession(this.currentSession)}scheduleSave(){this.debounceSave&&clearTimeout(this.debounceSave);let e=this.currentSession;this.debounceSave=setTimeout(()=>{this.autoSaveEnabled&&this.saveHistorySession(e)},100)}getTimelineEntries(){return[...this.currentSession.timeline]}async loadHistorySession(e){try{let I=await Du.load(e);if(!I)return;let l={...I,startTime:new Date(I.startTime)};this.currentSession=l;for(let n of this.currentSession.timeline)n.timestamp=new Date(n.timestamp);this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.enableAutoSave(),this.notifyTimelineEntriesChange()}catch(I){throw this.logger.error(`Error loading history session: ${I}`),I}}async saveHistorySession(e){let I=n8I(e);await Du.write(e,I)}getCurrentSessionId(){return this.currentSession?.sessionId}getCurrentSessionStartTime(){return this.currentSession?.startTime}getSelectedModel(){return this.currentSession?.selectedModel}getCurrentModel(e){return e||this.currentSession?.selectedModel||this.usageMetrics.currentModel||""}setSelectedModel(e){this.currentSession.selectedModel=e,this.scheduleSave()}addTimelineEntry(e){try{this.currentSession.timeline.push({id:rd(),timestamp:new Date,...e}),this.scheduleSave(),this.notifyTimelineEntriesChange()}catch(I){this.logger.error(`Error adding timeline entry: ${I}`)}}clearHistory(){this.currentSession.chatMessages=[],this.currentSession.timeline=[],this.scheduleSave(),this.notifyTimelineEntriesChange()}addChatMessage(e){this.currentSession.chatMessages.push(e),this.scheduleSave()}getChatContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role!=="system")}getSystemContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role==="system")}handleAbortedOperation(){this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.scheduleSave()}completeOrphanedToolCalls(e){if(e.length===0)return e;let I=[];for(let c=e.length-1;c>=0;c--){let a=e[c];if(a.role==="assistant"&&"tool_calls"in a&&a.tool_calls&&a.tool_calls.length>0)for(let s of a.tool_calls)I.push(s.id);else break}if(I.length===0)return e;let l="The execution of this tool, or a previous tool was interrupted.";this.logger.info(`Completing ${I.length} orphaned tool calls.`);let n=I.map(c=>({role:"tool",tool_call_id:c,content:l}));for(let c of I)this.updateToolCallTimelineEntryResult({callId:c,resultType:"rejected",log:l});return[...e,...n]}updateToolCallTimelineEntryResult(e){let I=this.currentSession.timeline.findLastIndex(c=>c.type==="tool_call_requested"&&c.callId===e.callId);if(I===-1){this.logger.error(`Pending tool call with ID ${e.callId} not found`);return}let l=this.currentSession.timeline[I];if(l.type==="tool_call_requested"&&l.name==="str_replace_editor"&&e.log){let s=l.arguments?.path;this.updateCodeChangeMetrics(e.log,s)}let n=this.currentSession.timeline[I];this.currentSession.timeline[I]={type:"tool_call_completed",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,result:{type:e.resultType,log:e.log,markdown:e.markdown},isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.scheduleSave(),this.notifyTimelineEntriesChange()}updateToolCallTimelineEntryPartialOutput(e,I){let l=this.currentSession.timeline.findLastIndex(c=>c.type==="tool_call_requested"&&c.callId===e);if(l===-1){this.logger.error(`Pending tool call with ID ${e} not found`);return}let n=this.currentSession.timeline[l];this.currentSession.timeline[l]={type:"tool_call_requested",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,partialOutput:I,isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.notifyTimelineEntriesChange()}async resumeSpecificSession(e){let I=await Du.directoryFiles();if(I.length===0)throw new Error(`Session not found: ${e}`);let l=null,n=[];for(let c of I){let a=r6e(c);if(a&&a.sessionId===e){l=c;break}}if(!l){for(let c of I){let a=r6e(c);a&&a.sessionId.startsWith(e)&&n.push({file:c,parsed:a})}n.length>0&&(n.sort((c,a)=>a.parsed.startTime.getTime()-c.parsed.startTime.getTime()),l=n[0].file)}if(!l)throw new Error(`Session not found: ${e}`);try{await this.loadHistorySession(l)}catch(c){throw new Error(`Failed to load session ${e}: ${c}`)}}async resumeLastSession(){let e=await Du.directoryFiles();if(e.length===0)throw new Error("No sessions found");let I=e[0];try{await this.loadHistorySession(I)}catch(l){throw new Error(`Failed to resume last session: ${l}`)}}generateSession(){return this.resetUsageMetrics(),{sessionId:this.generateSessionId(),startTime:new Date,chatMessages:[],timeline:[]}}generateSessionId(){return rd()}getUsageMetrics(){return this.usageMetrics}resetUsageMetrics(){this.usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map}}getModelRequestMultiplier(e){return{"claude-sonnet-4":1,"gpt-5":1,"claude-sonnet-4.5":1}[e]??1}trackUserMessage(e){let I=e||"",n=1*this.getModelRequestMultiplier(I);this.usageMetrics.totalPremiumRequests+=n,this.usageMetrics.modelMetrics.has(I)||this.usageMetrics.modelMetrics.set(I,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let c=this.usageMetrics.modelMetrics.get(I);c.requests.count+=1,c.requests.cost+=n,this.usageMetrics.currentModel=I}updateModelUsageMetrics(e,I,l){let n=e||"";if(this.usageMetrics.totalApiDurationMs+=I,l){this.usageMetrics.modelMetrics.has(n)||this.usageMetrics.modelMetrics.set(n,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let c=this.usageMetrics.modelMetrics.get(n);if(c.usage.inputTokens+=l.prompt_tokens||0,c.usage.outputTokens+=l.completion_tokens||0,l.prompt_tokens_details?.cached_tokens){c.usage.cacheReadTokens+=l.prompt_tokens_details.cached_tokens;let a=(l.prompt_tokens||0)-l.prompt_tokens_details.cached_tokens;c.usage.cacheWriteTokens+=Math.max(0,a)}}}updateCodeChangeMetrics(e,I){if(!e||!e.includes("diff --git"))return;let l=e.split(`
|
|
1344
|
+
`).forEach(n=>{let[c,a]=n.split("=").map(s=>s.trim());c&&a&&(I[c]=a)}),e(I)}catch(I){throw new Error(`Failed to read configuration from ${t}: ${I}`)}}async function mqI(t,e){try{await iqI(t);let I=JSON.stringify(e,null,2);await e6e.runExclusive(t,()=>GqI(t,I,{mode:384}))}catch(I){throw new Error(`Failed to write configuration to ${t}: ${I}`)}}var I6e=(t,e,{shouldCache:I})=>{let l=new Map,n=()=>{let i=_Pe(e)?process.env.XDG_CONFIG_HOME:process.env.XDG_STATE_HOME;return i?eB(i,$Pe):eB(oqI(),$Pe)},c=()=>{let i=_Pe(e)?"-config":"-state";return`${e}${e=="config"?"":i}`},a=i=>{let h=".json",p=c()+(i?"":h),Z=eB(n(),p,i?`${i}${h}`:"");return!TZe(Z)&&TZe(Z.replace(/\.json$/,""))&&(Z=Z.replace(/\.json$/,"")),Z},s=async()=>{let i=eB(n(),c());try{let p=(await aqI(i)).filter(u=>u.endsWith(".json")),Z=await Promise.all(p.map(async u=>{let N=eB(i,u);try{let Y=await rqI(N);return{file:u,mtime:Y.mtime}}catch{return{file:u,mtime:new Date}}}));return Z.sort((u,N)=>N.mtime.getTime()-u.mtime.getTime()),Z.map(u=>u.file)}catch{}return[]},r=async(i="")=>{if(I&&l.has(i))return l.get(i);let h=await bqI(a(i),t);return I&&h&&l.set(i,h),h},o=async(i,h="")=>{I&&l.set(h,i),await mqI(a(h),i)};return{load:r,write:o,writeKey:async(i,h,p)=>{let Z=await r(p);if(h===void 0){Z&&(delete Z[i],await o(Z,p));return}let u={[i]:h},N;Z?N={...Z,...u}:N=u,await o(N,p)},path:a,directoryFiles:s}},t6e=(t,e)=>I6e(t,e,{shouldCache:!0}),l6e=(t,e)=>I6e(t,e,{shouldCache:!1});var n6e=XI({host:Ee(),login:Ee()}),hqI=XI({banner:Cu(["always","once","never"]).optional(),beep:Oa().optional(),last_logged_in_user:n6e.optional(),logged_in_users:$s(n6e).optional(),model:Cu(R8).optional(),render_markdown:Oa().optional(),screen_reader:Oa().optional(),theme:Ee().optional(),trusted_folders:$s(Ee()).optional(),capi_hmac_key:Ee().optional(),copilot_hmac_key:Ee().optional(),copilot_integration_id:Ee().optional(),copilot_tokens:k6(Ee(),Ee()).optional(),copilot_url:Ee().optional()}),pqI=k6(Ee(),Ume()),ZqI=pqI.transform(t=>(0,c6e.default)(t,(e,I)=>{let l=I.toLowerCase();return l==="github_copilot_integration_id"?"copilot_integration_id":l})),uqI=ZqI.pipe(hqI),WqI=t6e(uqI.parse,"config");var R8=["claude-sonnet-4.5","claude-sonnet-4","gpt-5"];G();var NqI=XI({type:ol("copilot"),text:Ee()}),YqI=XI({type:ol("error"),text:Ee()}),VqI=XI({type:ol("info"),text:Ee()}),RqI=XI({displayText:Ee(),fullPath:Ee(),type:Cu(["file","directory","unresolved","image"]),startIndex:cp()}),yqI=XI({type:ol("user"),text:Ee(),expandedText:Ee().optional(),mentions:$s(RqI).optional(),imageAttachments:$s(XI({type:ol("image_url"),image_url:XI({url:Ee()})})).optional()}),FqI=XI({command:Ee(),description:Ee(),timeout:cp().optional(),sessionId:Ee().optional(),async:Oa().optional()}),gqI=XI({sessionId:Ee(),input:Ee(),delay:cp().optional()}),QqI=XI({sessionId:Ee(),delay:cp()}),AqI=XI({sessionId:Ee()}),wqI=er([FqI,gqI,QqI,AqI]),XqI=XI({command:ol("view"),path:Ee(),view_range:Mme([cp(),cp()]).optional()}),HqI=XI({command:ol("create"),path:Ee(),file_text:Ee()}),EqI=XI({command:ol("str_replace"),path:Ee(),new_str:Ee().optional(),old_str:Ee()}),vqI=XI({command:ol("insert"),path:Ee(),insert_line:cp(),new_str:Ee()}),CqI=Ome("command",[XqI,HqI,EqI,vqI]),a6e=er([wqI,CqI,Sme()]),JqI=XI({type:ol("tool_call_requested"),callId:Ee(),name:Ee(),toolTitle:Ee().optional(),intentionSummary:Ee().nullable(),arguments:a6e,partialOutput:Ee().optional(),isHidden:Oa().optional(),isAlwaysExpanded:Oa().optional(),showNoContent:Oa().optional()}),LqI=XI({type:ol("tool_call_completed"),callId:Ee(),name:Ee(),toolTitle:Ee().optional(),intentionSummary:Ee().nullable(),result:er([XI({type:ol("success"),log:Ee(),markdown:Oa().optional()}),XI({type:ol("failure"),log:Ee(),markdown:Oa().optional()}),XI({type:ol("rejected"),markdown:Oa().optional()}),XI({type:ol("denied"),log:Ee(),markdown:Oa().optional()})]),arguments:a6e,isHidden:Oa().optional(),isAlwaysExpanded:Oa().optional(),showNoContent:Oa().optional()}),kqI=er([NqI,YqI,VqI,yqI,JqI,LqI]),s6e=kqI.and(XI({id:Ee(),timestamp:D9.date()}));var IB=XI({type:ol("text"),text:Ee()}),fqI=XI({type:ol("refusal"),refusal:Ee()}),xqI=XI({type:ol("image_url"),image_url:XI({url:Ee(),detail:Cu(["auto","low","high"]).optional()})}),BqI=XI({type:ol("input_audio"),input_audio:XI({data:Ee(),format:ol("wav").or(ol("mp3"))})}),zqI=XI({type:ol("file"),file:XI({file_date:Ee().optional(),file_id:Ee().optional(),filename:Ee().optional()})}),UqI=er([IB,xqI,BqI,zqI]),SqI=XI({name:Ee(),arguments:Ee()}),OqI=XI({name:Ee(),input:Ee()}),MqI=XI({id:Ee(),type:ol("function"),function:SqI}),TqI=XI({id:Ee(),type:ol("custom"),custom:OqI}),jqI=er([MqI,TqI]),DqI=XI({name:Ee(),arguments:Ee()}),KqI=XI({id:Ee()}),PqI=XI({content:er([Ee(),$s(IB)]),role:ol("developer"),name:Ee().optional()}),qqI=XI({content:er([Ee(),$s(IB)]),role:ol("system"),name:Ee().optional()}),_qI=XI({content:er([Ee(),$s(UqI)]),role:ol("user"),name:Ee().optional()}),$qI=XI({content:er([Ee(),$s(er([IB,fqI]))]).nullable().optional(),role:ol("assistant"),name:Ee().optional(),refusal:Ee().nullable().optional(),audio:KqI.nullable().optional(),function_call:DqI.nullable().optional(),tool_calls:$s(jqI).optional()}),e8I=XI({content:er([Ee(),$s(IB)]),role:ol("tool"),tool_call_id:Ee()}),I8I=XI({content:Ee().nullable(),role:ol("function"),name:Ee()}),t8I=er([PqI,qqI,_qI,$qI,e8I,I8I]),l8I=XI({sessionId:Ee(),startTime:D9.date(),chatMessages:$s(t8I),timeline:$s(s6e),selectedModel:Cu(R8).optional()}),Du=l6e(l8I.parse,"history-session");G();function n8I(t){return`session_${t.sessionId}_${t.startTime.getTime()}`}function r6e(t){let e=/^session_(.+)_(\d+)\.json$/,I=t.match(e);if(!I)return null;let[,l,n]=I;return{sessionId:l,startTime:new Date(parseInt(n,10))}}var V1=class t{currentSession;onTimelineEntriesChangeCallback=null;debounceSave=null;logger;autoSaveEnabled=!1;usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map};static async create(e){let I=new t;switch(e.kind){case"new":break;case"resume-last":await I.resumeLastSession();break;case"resume":await I.resumeSpecificSession(e.sessionId);break;case"resume-with-picker":break;default:{let l=e;throw new Error(`unexpected session kind: ${JSON.stringify(l)}`)}}return I}static async hasMultipleSessions(){try{return(await Du.directoryFiles()).length>1}catch{return!1}}constructor(){this.currentSession=this.generateSession(),this.logger=new eG}setLogger(e){this.logger=e}getLogger(){return this.logger}setOnTimelineEntriesChangeCallback(e){this.onTimelineEntriesChangeCallback=e,this.notifyTimelineEntriesChange()}notifyTimelineEntriesChange(){this.onTimelineEntriesChangeCallback?.([...this.currentSession.timeline])}enableAutoSave(){this.autoSaveEnabled=!0}async forceSave(){await this.saveHistorySession(this.currentSession)}scheduleSave(){this.debounceSave&&clearTimeout(this.debounceSave);let e=this.currentSession;this.debounceSave=setTimeout(()=>{this.autoSaveEnabled&&this.saveHistorySession(e)},100)}getTimelineEntries(){return[...this.currentSession.timeline]}async loadHistorySession(e){try{let I=await Du.load(e);if(!I)return;let l={...I,startTime:new Date(I.startTime)};this.currentSession=l;for(let n of this.currentSession.timeline)n.timestamp=new Date(n.timestamp);this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.enableAutoSave(),this.notifyTimelineEntriesChange()}catch(I){throw this.logger.error(`Error loading history session: ${I}`),I}}async saveHistorySession(e){let I=n8I(e);await Du.write(e,I)}getCurrentSessionId(){return this.currentSession?.sessionId}getCurrentSessionStartTime(){return this.currentSession?.startTime}getSelectedModel(){return this.currentSession?.selectedModel}getCurrentModel(e){return e||this.currentSession?.selectedModel||this.usageMetrics.currentModel||""}setSelectedModel(e){this.currentSession.selectedModel=e,this.scheduleSave()}addTimelineEntry(e){try{this.currentSession.timeline.push({id:rd(),timestamp:new Date,...e}),this.scheduleSave(),this.notifyTimelineEntriesChange()}catch(I){this.logger.error(`Error adding timeline entry: ${I}`)}}clearHistory(){this.currentSession.chatMessages=[],this.currentSession.timeline=[],this.scheduleSave(),this.notifyTimelineEntriesChange()}addChatMessage(e){this.currentSession.chatMessages.push(e),this.scheduleSave()}getChatContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role!=="system")}getSystemContextMessages(){return this.currentSession.chatMessages.filter(e=>e.role==="system")}handleAbortedOperation(){this.currentSession.chatMessages=this.completeOrphanedToolCalls(this.currentSession.chatMessages),this.scheduleSave()}completeOrphanedToolCalls(e){if(e.length===0)return e;let I=[];for(let c=e.length-1;c>=0;c--){let a=e[c];if(a.role==="assistant"&&"tool_calls"in a&&a.tool_calls&&a.tool_calls.length>0)for(let s of a.tool_calls)I.push(s.id);else break}if(I.length===0)return e;let l="The execution of this tool, or a previous tool was interrupted.";this.logger.info(`Completing ${I.length} orphaned tool calls.`);let n=I.map(c=>({role:"tool",tool_call_id:c,content:l}));for(let c of I)this.updateToolCallTimelineEntryResult({callId:c,resultType:"rejected",log:l});return[...e,...n]}updateToolCallTimelineEntryResult(e){let I=this.currentSession.timeline.findLastIndex(c=>c.type==="tool_call_requested"&&c.callId===e.callId);if(I===-1){this.logger.error(`Pending tool call with ID ${e.callId} not found`);return}let l=this.currentSession.timeline[I];if(l.type==="tool_call_requested"&&l.name==="str_replace_editor"&&e.log){let s=l.arguments?.path;this.updateCodeChangeMetrics(e.log,s)}let n=this.currentSession.timeline[I];this.currentSession.timeline[I]={type:"tool_call_completed",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,result:{type:e.resultType,log:e.log,markdown:e.markdown},isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.scheduleSave(),this.notifyTimelineEntriesChange()}updateToolCallTimelineEntryPartialOutput(e,I){let l=this.currentSession.timeline.findLastIndex(c=>c.type==="tool_call_requested"&&c.callId===e);if(l===-1){this.logger.error(`Pending tool call with ID ${e} not found`);return}let n=this.currentSession.timeline[l];this.currentSession.timeline[l]={type:"tool_call_requested",id:n.id,timestamp:n.timestamp,callId:n.callId,name:n.name,toolTitle:n.toolTitle,intentionSummary:n.intentionSummary,arguments:n.arguments,partialOutput:I,isAlwaysExpanded:n.isAlwaysExpanded,showNoContent:n.showNoContent},this.notifyTimelineEntriesChange()}async resumeSpecificSession(e){let I=await Du.directoryFiles();if(I.length===0)throw new Error(`Session not found: ${e}`);let l=null,n=[];for(let c of I){let a=r6e(c);if(a&&a.sessionId===e){l=c;break}}if(!l){for(let c of I){let a=r6e(c);a&&a.sessionId.startsWith(e)&&n.push({file:c,parsed:a})}n.length>0&&(n.sort((c,a)=>a.parsed.startTime.getTime()-c.parsed.startTime.getTime()),l=n[0].file)}if(!l)throw new Error(`Session not found: ${e}`);try{await this.loadHistorySession(l)}catch(c){throw new Error(`Failed to load session ${e}: ${c}`)}}async resumeLastSession(){let e=await Du.directoryFiles();if(e.length===0)throw new Error("No sessions found");let I=e[0];try{await this.loadHistorySession(I)}catch(l){throw new Error(`Failed to resume last session: ${l}`)}}generateSession(){return this.resetUsageMetrics(),{sessionId:this.generateSessionId(),startTime:new Date,chatMessages:[],timeline:[]}}generateSessionId(){return rd()}getUsageMetrics(){return this.usageMetrics}resetUsageMetrics(){this.usageMetrics={totalPremiumRequests:0,totalApiDurationMs:0,sessionStartTime:Date.now(),codeChanges:{linesAdded:0,linesRemoved:0,filesModified:new Set},modelMetrics:new Map}}getModelRequestMultiplier(e){return{"claude-sonnet-4":1,"gpt-5":1,"claude-sonnet-4.5":1}[e]??1}trackUserMessage(e){let I=e||"",n=1*this.getModelRequestMultiplier(I);this.usageMetrics.totalPremiumRequests+=n,this.usageMetrics.modelMetrics.has(I)||this.usageMetrics.modelMetrics.set(I,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let c=this.usageMetrics.modelMetrics.get(I);c.requests.count+=1,c.requests.cost+=n,this.usageMetrics.currentModel=I}updateModelUsageMetrics(e,I,l){let n=e||"";if(this.usageMetrics.totalApiDurationMs+=I,l){this.usageMetrics.modelMetrics.has(n)||this.usageMetrics.modelMetrics.set(n,{requests:{count:0,cost:0},usage:{inputTokens:0,outputTokens:0,cacheReadTokens:0,cacheWriteTokens:0}});let c=this.usageMetrics.modelMetrics.get(n);if(c.usage.inputTokens+=l.prompt_tokens||0,c.usage.outputTokens+=l.completion_tokens||0,l.prompt_tokens_details?.cached_tokens){c.usage.cacheReadTokens+=l.prompt_tokens_details.cached_tokens;let a=(l.prompt_tokens||0)-l.prompt_tokens_details.cached_tokens;c.usage.cacheWriteTokens+=Math.max(0,a)}}}updateCodeChangeMetrics(e,I){if(!e||!e.includes("diff --git"))return;let l=e.split(`
|
|
1345
1345
|
`),n=0,c=0;for(let a of l)a.startsWith("+")&&!a.startsWith("+++")?n++:a.startsWith("-")&&!a.startsWith("---")&&c++;this.usageMetrics.codeChanges.linesAdded+=n,this.usageMetrics.codeChanges.linesRemoved+=c,I&&this.usageMetrics.codeChanges.filesModified.add(I)}formatTokenCount(e){return e===0?"0":e<1e3?e.toString():e<1e6?`${(e/1e3).toFixed(1)}k`:`${(e/1e6).toFixed(1)}m`}formatDuration(e){let I=Math.floor(e/1e3),l=Math.floor(I/60),n=Math.floor(l/60);if(n>0){let c=l%60,a=e%6e4/1e3;return`${n}h ${c}m ${a.toFixed(1)}s`}else if(l>0){let c=e%6e4/1e3;return`${l}m ${c.toFixed(1)}s`}else return`${(e/1e3).toFixed(1)}s`}getFormattedUsageOutput(){let e=this.usageMetrics,I=this.formatDuration(Date.now()-e.sessionStartTime),l=this.formatDuration(e.totalApiDurationMs),n=Math.round(e.totalPremiumRequests),a=[`Total usage est: ${n} ${n===1?"Premium request":"Premium requests"}`,`Total duration (API): ${l}`,`Total duration (wall): ${I}`,`Total code changes: ${e.codeChanges.linesAdded} lines added, ${e.codeChanges.linesRemoved} lines removed`];if(e.modelMetrics.size>0){a.push("Usage by model:");for(let[s,r]of e.modelMetrics){let{requests:o,usage:d}=r,i=this.formatTokenCount(d.inputTokens),h=this.formatTokenCount(d.outputTokens),p=this.formatTokenCount(d.cacheReadTokens),Z=this.formatTokenCount(d.cacheWriteTokens),u=Math.round(o.cost),N=u===1?"Premium request":"Premium requests",y=(s||"(unknown)").padEnd(20);a.push(` ${y} ${i} input, ${h} output, ${p} cache read, ${Z} cache write (Est. ${u} ${N})`)}}return a.join(`
|
|
1346
1346
|
`)}};var tB=class extends p1{constructor(I,l){super({id:I.getCurrentSessionId(),startTime:I.getCurrentSessionStartTime(),selectedModel:I.getSelectedModel()},l);this.cliSessionManager=I}async getChatMessages(){return this.cliSessionManager.getChatContextMessages()}async addChatMessage(I){this.cliSessionManager.addChatMessage(I)}async onAbort(){this.cliSessionManager.handleAbortedOperation()}async save(){await this.cliSessionManager.forceSave()}},G6e=class{logger;constructor(e={}){this.logger=e.logger||new eG}async createSession(){let e=await V1.create({kind:"new"});return e.setLogger(this.logger),new tB(e,this.logger)}async getLastSession(){let e=await V1.create({kind:"resume-last"});return e.setLogger(this.logger),new tB(e,this.logger)}async getSession(e){let I=await V1.create({kind:"resume",sessionId:e});return I.setLogger(this.logger),new tB(I,this.logger)}async listSessions(){let e=await Du.directoryFiles(),I=[],l=n=>{let c=/^session_(.+)_(\d+)\.json$/,a=n.match(c);if(!a)return null;let[,s,r]=a;return{sessionId:s,startTime:new Date(parseInt(r,10))}};for(let n of e){let c=l(n);if(c){let a=await Du.load(n);I.push({id:c.sessionId,startTime:c.startTime,selectedModel:a?.selectedModel})}}return I.sort((n,c)=>c.startTime.getTime()-n.startTime.getTime())}async saveSession(e){await e.save()}async deleteSession(e){throw new Error("Deleting sessions is not supported in this adapter.")}};G();async function*mtn(t){let{prompt:e,...I}=t;yield*new n8(I).query(e)}G();export{n8 as Agent,hp as BaseLogger,p1 as BaseSession,wZe as CompoundLogger,G2 as ConsoleLogger,tB as CopilotCLISession,G6e as CopilotCLISessionManager,XZe as FileLogger,Px as InMemorySession,mPe as InMemorySessionManager,eG as NoopLogger,HV as executeHooks,g1 as isDebugEnvironment,mtn as query};
|
|
1347
1347
|
/*! Bundled license information:
|