nixbot

builds

succeeded command-code-1.88.1 checks.x86_64-linux.pkgs-command-code · build #9343 · raw

1bld1: building iij9vb37j7ixfkcwaqvmgzpd4dv6zfvj-command-code-1.88.1.drv2Using versionCheckHook
unpackPhase
3unpacking source archive /nix/store/f9hla4isjqj3k03rmab0y2p261qwa90x-command-code-src-with-lock4source root is command-code-src-with-lock
patchPhase
5Executing npmConfigHook6Configuring npm7Validating consistency between /build/command-code-src-with-lock/package-lock.json and /nix/store/cq21xf3f1yg3a50a2j1czildi0m1w2rm-command-code-1.88.1-npm-deps/package-lock.json8Making cache writable9Setting npm_config_cache to /build/cache10Installing dependencies11npm warn deprecated @opentelemetry/sdk-trace-node@2.12.0: Use @opentelemetry/sdk-trace package12npm warn deprecated @opentelemetry/sdk-trace-base@2.12.0: Use @opentelemetry/sdk-trace package1314added 297 packages, and audited 298 packages in 4s151692 packages are looking for funding17 run `npm fund` for details1819found 0 vulnerabilities20patching script interpreter paths in node_modules21node_modules/marked/bin/marked.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"22node_modules/jiti/lib/jiti-cli.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"23node_modules/semver/bin/semver.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"24node_modules/uuid/dist-node/bin/uuid: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"25node_modules/pixelmatch/bin/pixelmatch: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"26node_modules/giget/dist/cli.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"27node_modules/cli-highlight/bin/highlight: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"28node_modules/is-in-ci/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"29node_modules/mime/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"30node_modules/which/bin/node-which: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"31node_modules/open/xdg-open: interpreter directive changed from "#!/bin/sh" to "/nix/store/nnm9gdr70ihc6zc9298mzz8jpcgaciql-bash-5.3p20/bin/sh"32node_modules/is-inside-container/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"33node_modules/js-yaml/bin/js-yaml.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"34node_modules/is-docker/cli.js: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"35rebuilt dependencies successfully36patching script interpreter paths in node_modules37Finished npmConfigHook
configurePhase
38no configure script, doing nothing
buildPhase
39no Makefile or custom buildPhase, doing nothing
installPhase
40Executing npmInstallHook4142up to date, audited 298 packages in 366ms434492 packages are looking for funding45 run `npm fund` for details4647found 0 vulnerabilities48Finished npmInstallHook
fixupPhase
49shrinking RPATHs of ELF executables and libraries in /nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.150shrinking /nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.1/lib/node_modules/command-code/node_modules/@vscode/ripgrep-linux-x64/bin/rg51shrinking /nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.1/lib/node_modules/command-code/node_modules/@crosscopy/clipboard-linux-x64-gnu/clipboard.linux-x64-gnu.node52checking for references to /build/ in /nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.1...53patching script interpreter paths in /nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.154/nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.1/lib/node_modules/command-code/dist/index.mjs: interpreter directive changed from "#!/usr/bin/env node" to "/nix/store/lr2c5f2y7q62pzfrkclgsy5yj31hsn5l-nodejs-22.23.4/bin/node"
installCheckPhase
55Executing versionCheckPhase56Did not find version 1.88.1 in the output of the command /nix/store/0krkhx3nr1118ywqm38nn348lb40wqb7-command-code-1.88.1/bin/cmd --version57file://{{storeDir}}/lib/node_modules/command-code/dist/cli.mjs:258import*as e from"path";import n,{join as o,dirname as r,parse as s,resolve as a,relative as i,isAbsolute as l,sep as c,basename as d,extname as u,win32 as m,posix as p}from"path";import{fileURLToPath as g,pathToFileURL as h,URL as f}from"url";import{execFile as y,execFileSync as v,execSync as S,spawn as w,spawnSync as k,exec as C}from"child_process";import*as b from"crypto";import{randomUUID as T,X509Certificate as E,createHash as M,randomBytes as P}from"crypto";import x,{createServer as I}from"http";import{createInstance as A}from"i18next";import*as R from"fs";import O,{existsSync as L,readFileSync as D,mkdirSync as N,writeFileSync as F,readdirSync as _,statSync as $,unlinkSync as U,appendFileSync as B,createReadStream as j,watch as W,realpathSync as H,copyFileSync as G}from"fs";import*as V from"os";import z,{homedir as K,tmpdir as q,constants as Y}from"os";import*as J from"fs/promises";import Q,{stat as X,readFile as Z,writeFile as ee,readdir as te,statfs as ne,glob as oe,cp as re,rm as se,mkdir as ae,realpath as ie,rename as le,appendFile as ce,chmod as de,unlink as ue,mkdtemp as me}from"fs/promises";import{isValidTraceId as pe,trace as ge,context as he,SpanStatusCode as fe,SpanKind as ye,isSpanContextValid as ve}from"@opentelemetry/api";import{v4 as Se}from"uuid";import we from"net";import{load as ke}from"js-yaml";import Ce from"string-width";import{z as be}from"zod";import Te from"@sindresorhus/slugify";import Ee from"ignore";import Me from"semver";import{quote as Pe,parse as xe}from"shell-quote";import*as Ie from"diff";import*as Ae from"process";import Re from"process";import{promisify as Oe,isDeepStrictEqual as Le}from"util";import{createAnthropic as De}from"@ai-sdk/anthropic";import{createOpenAI as Ne}from"@ai-sdk/openai";import{createOpenAICompatible as Fe}from"@ai-sdk/openai-compatible";import{APICallError as _e}from"@ai-sdk/provider";import{streamText as $e,jsonSchema as Ue}from"ai";import{inflateRawSync as Be}from"zlib";import{once as je}from"events";import{setTimeout as We}from"timers/promises";import{createInterface as He}from"readline";import Ge from"@opentelemetry/exporter-trace-otlp-http";import Ve from"@opentelemetry/resources";import ze from"@opentelemetry/semantic-conventions";import Ke from"@opentelemetry/sdk-trace-node";import"dotenv/config";import{Command as qe,Option as Ye,InvalidArgumentError as Je}from"commander";import*as Qe from"@clack/prompts";import{cancel as Xe,outro as Ze,multiselect as et,confirm as tt,isCancel as nt,password as ot}from"@clack/prompts";import{Box as rt,Text as st,Static as at,render as it,useStdout as lt,useInput as ct,useApp as dt,measureElement as ut,usePaste as mt}from"ink";import pt,{createContext as gt,memo as ht,useMemo as ft,useState as yt,useRef as vt,useEffect as St,useCallback as wt,useSyncExternalStore as kt,useReducer as Ct,useContext as bt,useLayoutEffect as Tt}from"react";import Et from"figures";import Mt from"chalk";import{Marked as Pt,Lexer as xt}from"marked";import It from"marked-terminal";import At from"strip-ansi";import{createRequire as Rt}from"module";import Ot from"ink-spinner";import Lt from"ansi-escapes";import Dt from"is-unicode-supported";import Nt from"picocolors";import Ft from"dedent";import{useTranslation as _t,I18nextProvider as $t,initReactI18next as Ut}from"react-i18next";import Bt from"open";import jt from"ora";import Wt from"tls";import Ht from"log-symbols";import{wrapAnsi as Gt}from"fast-wrap-ansi";import Vt from"open-editor";import zt from"terminal-link";var Kt,qt,Yt,Jt,Qt,Xt,Zt,en,tn,nn=Object.defineProperty,on=Object.getOwnPropertyNames,__name=(e,n)=>nn(e,"name",{value:n,configurable:!0}),__esm=(e,n)=>function __init(){return e&&(n=(0,e[on(e)[0]])(e=0)),n},__export=(e,n)=>{for(var o in n)nn(e,o,{get:n[o],enumerable:!0})},rn=__esm({"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.7.0_postcss@8.5.25_supports-color@10.2.2_tsx@4.23.1_typescript@5.9.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"(){}});function resolveMcpTimeoutMs(e){const n=e?.envValue??("undefined"!=typeof process?process.env.MCP_TOOL_TIMEOUT:void 0),o=Number.parseInt(n??"",10);return Number.isFinite(o)&&o>0?o:Yt}function synthesizedMcpToolDescription(e){return`MCP tool: ${e}`}function mcpToolDefToSchema(e){const n=e.description||synthesizedMcpToolDescription(e.name),o=n.length>Jt?`${n.slice(0,Jt)}… [truncated]`:n,r=e.annotations?.title,{$schema:s,type:a,properties:i,required:l,...c}=e.inputSchema??{};return{name:e.name,...r?{label:r}:{},description:o,input_schema:{...c,type:"object",properties:e.inputSchema?.properties??{},required:[...e.inputSchema?.required??[]]}}}function formatByteSize(e){const n=e/1024;return n<1?`${e} bytes`:n<1024?`${n.toFixed(1).replace(/\.0$/,"")}KB`:`${(n/1024).toFixed(1).replace(/\.0$/,"")}MB`}function decodeBase64(e){return new Uint8Array(Buffer.from(e,"base64"))}function persistedBinaryText(e){const n=decodeBase64(e.data),o=e.mimeType??"unknown type",r=e.options?.persistBinary;if(!r)return{type:"text",text:`${e.sourcePrefix}Binary content (${o}, ${formatByteSize(n.byteLength)}) omitted — no binary store configured.`};const s=r({bytes:n,mimeType:e.mimeType});return"error"in s?{type:"text",text:`${e.sourcePrefix}Binary content (${o}, ${formatByteSize(n.byteLength)}) could not be saved to disk: ${s.error}`}:{type:"text",text:`${e.sourcePrefix}Binary content (${o}, ${formatByteSize(s.size)}) saved to ${s.filepath}`}}function resourcePrefix(e){const n=e.options?.serverName;return n?`[Resource from ${n} at ${e.uri}] `:`[Resource: ${e.uri}] `}function blockToContents(e,n){if("text"===e.type&&"string"==typeof e.text)return[{type:"text",text:e.text}];if("image"===e.type&&"string"==typeof e.data)return[{type:"image",source:{type:"base64",media_type:e.mimeType??"image/png",data:e.data}}];if("audio"===e.type&&"string"==typeof e.data){const o=n?.serverName;return[persistedBinaryText({data:e.data,mimeType:e.mimeType,sourcePrefix:o?`[Audio from ${o}] `:"[Audio] ",options:n})]}if("resource"===e.type)return resourceToContents(e,n);if("resource_link"===e.type&&"string"==typeof e.uri){const n=e.name??e.uri,o=e.description?` (${e.description})`:"";return[{type:"text",text:`[Resource link: ${n}] ${e.uri}${o}`}]}return[{type:"text",text:JSON.stringify(e)}]}function resourceToContents(e,n){const o=e.resource,r=o?.uri??"unknown",s=resourcePrefix({uri:r,options:n});if(o&&"string"==typeof o.text)return[{type:"text",text:`${s}${o.text}`}];if(o&&"string"==typeof o.blob){const e=o.mimeType??"";return Qt.has(e)?[{type:"text",text:s.trimEnd()},{type:"image",source:{type:"base64",media_type:e,data:o.blob}}]:[persistedBinaryText({data:o.blob,mimeType:o.mimeType,sourcePrefix:s,options:n})]}return[{type:"text",text:`[Resource: ${r}]`}]}function mcpResultToToolRunResult(e,n){const o=e??{},r=o.content,s=Array.isArray(r)?r.flatMap(e=>blockToContents(e,n)):void 0;if(!0===o.isError)return{ok:!1,error:(s??[]).map(e=>"text"===e.type?e.text:"[non-text]").join("\n")||"MCP tool reported an error"};if("toolResult"in o){const e=o.toolResult;return{ok:!0,content:[{type:"text",text:"string"==typeof e?e:JSON.stringify(e)}]}}return void 0===o.structuredContent||(s??[]).some(e=>"text"!==e.type)?s?{ok:!0,content:s}:{ok:!0,content:[{type:"text",text:JSON.stringify(e)}]}:{ok:!0,content:[{type:"text",text:JSON.stringify(o.structuredContent)}]}}function sanitizeMcpToolName(e){return e.replace(/[^a-zA-Z0-9_-]/g,"_")}function isMcpTool(e){return e.startsWith("mcp__")}function parseMcpToolName(e){if(!isMcpTool(e))return null;const n=e.split("__");if(n.length<3)return null;const o=n[1];return o?{serverName:o,toolName:n.slice(2).join("__")}:null}function defaultFetch(){return globalThis.fetch}async function fetchWithTimeout(e,n,o,r=Xt){const s=new AbortController,a=setTimeout(()=>s.abort(),r);try{return await e(n,{...o,signal:s.signal})}finally{clearTimeout(a)}}function queryString(e){return Object.entries(e).map(([e,n])=>`${encodeURIComponent(e)}=${encodeURIComponent(n)}`).join("&")}function encodeTokenRequest(e,n){return"json"===n?{headers:{"content-type":"application/json",accept:"application/json"},body:JSON.stringify(e)}:{headers:{"content-type":"application/x-www-form-urlencoded"},body:queryString(e)}}function isSecureOrLoopback(e){try{const n=new f(e);return"https:"===n.protocol||"http:"===n.protocol&&("localhost"===n.hostname||"127.0.0.1"===n.hostname||"[::1]"===n.hostname||"::1"===n.hostname)}catch{return!1}}function generatePkce(e={}){const n=(e.randomBytesImpl??P)(32).toString("base64url");return{verifier:n,challenge:M("sha256").update(n).digest("base64url")}}function isResourceForServer(e){let n,o;try{n=new f(e.serverUrl),o=new f(e.resource)}catch{return!1}if(n.origin!==o.origin)return!1;const r=__name(e=>e.endsWith("/")?e:`${e}/`,"withSlash");return r(n.pathname).startsWith(r(o.pathname))}function canonicalServerResource(e){const n=e.indexOf("#");return-1===n?e:e.slice(0,n)}function resourceIndicatorFor(e){if(!e.resource)return canonicalServerResource(e.serverUrl);if(!isResourceForServer({serverUrl:e.serverUrl,resource:e.resource}))throw new Error(`OAuth resource "${e.resource}" does not identify the MCP server at "${e.serverUrl}" (must share its origin and be a path prefix). Fix or remove oauth.resource in the server config.`);return e.resource}function toTokenResult(e,n,o){if(!e.access_token)throw new Error("OAuth token response had no access_token");return{accessToken:e.access_token,refreshToken:e.refresh_token??o,expiresAt:"number"==typeof e.expires_in?n()+1e3*e.expires_in:void 0,tokenType:e.token_type,scope:e.scope}}function buildOAuthMetadataUrl(e){const n=new f(e),o="/"===n.pathname?"":n.pathname.replace(/\/+$/,"");return n.pathname=`/.well-known/oauth-authorization-server${o}`,n.search="",n.hash="",n.toString()}function buildOidcMetadataUrl(e){const n=new f(e),o=n.pathname.replace(/\/+$/,"");return n.pathname=`${o}/.well-known/openid-configuration`,n.search="",n.hash="",n.toString()}async function tryFetchMetadata(e,n){try{const o=await n(e,{method:"GET",headers:{accept:"application/json"}});if(!1===o.ok)return null;const r=await o.json();return r.authorization_endpoint&&r.token_endpoint?{authorizationEndpoint:r.authorization_endpoint,tokenEndpoint:r.token_endpoint,registrationEndpoint:r.registration_endpoint,scopes:r.scopes_supported}:null}catch{return null}}async function discoverAuthServer(e){const n=await discoverOAuthMetadataFromIssuer({issuerUrl:e.issuerUrl,fetchImpl:e.fetchImpl});if(!n)throw new Error("discoverAuthServer: missing endpoints in metadata");return n}async function discoverOAuthMetadataFromIssuer(e){const n=e.fetchImpl??defaultFetch();return await tryFetchMetadata(buildOAuthMetadataUrl(e.issuerUrl),n)||tryFetchMetadata(buildOidcMetadataUrl(e.issuerUrl),n)}async function discoverOAuthMetadata(e){const n=e.fetchImpl??defaultFetch(),o=new f(e.serverUrl).origin;return await tryFetchMetadata(`${o}/.well-known/oauth-authorization-server`,n)||tryFetchMetadata(`${o}/.well-known/openid-configuration`,n)}function parseResourceMetadataUrl(e){if(!e)return null;const n=e.match(/resource_metadata\s*=\s*"([^"]+)"|resource_metadata\s*=\s*([^\s,]+)/i);return n?n[1]??n[2]??null:null}async function fetchProtectedResourceMetadata(e,n){try{const o=await n(e,{method:"GET",headers:{accept:"application/json"}});if(!1===o.ok)return null;const r=await o.json();return{resource:"string"==typeof r.resource?r.resource:void 0,authorizationServers:r.authorization_servers,scopesSupported:r.scopes_supported}}catch{return null}}async function checkServerAuthRequirements(e){const n=e.fetchImpl??defaultFetch();try{const o=await fetchWithTimeout(n,e.serverUrl,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",method:"initialize",id:0,params:{protocolVersion:Kt,capabilities:{},clientInfo:qt}})}),r=o.status??200;if(401===r||403===r){const r=parseResourceMetadataUrl(o.headers?.get("www-authenticate")??null);if(r){const o=await fetchProtectedResourceMetadata(r,n),s=o?.authorizationServers?.[0];if(s){const r=await discoverOAuthMetadataFromIssuer({issuerUrl:s,fetchImpl:n});if(r)return{requiresAuth:!0,metadata:{...r,...o?.scopesSupported?{scopes:o.scopesSupported}:{},...o?.resource&&isResourceForServer({serverUrl:e.serverUrl,resource:o.resource})?{resource:o.resource}:{}}}}}return{requiresAuth:!0,metadata:await discoverOAuthMetadata({serverUrl:e.serverUrl,fetchImpl:n})??void 0}}return{requiresAuth:!1}}catch(e){return{requiresAuth:!1,error:`Server unreachable: ${String(e)}`}}}async function registerOAuthClient(e){const n=e.fetchImpl??defaultFetch();try{const o=await n(e.registrationEndpoint,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({client_name:e.clientName,redirect_uris:e.redirectUris,token_endpoint_auth_method:"none",grant_types:["authorization_code","refresh_token"],response_types:["code"]})});if(!1===o.ok)return null;const r=await o.json();return r.client_id?{clientId:r.client_id,clientSecret:r.client_secret}:null}catch{return null}}function buildAuthorizationUrl(e){const n={response_type:"code",client_id:e.clientId,redirect_uri:e.redirectUri,code_challenge:e.challenge,code_challenge_method:"S256"};e.scope&&(n.scope=e.scope),e.state&&(n.state=e.state),e.resource&&(n.resource=e.resource);const o=new f(e.authorizationEndpoint);for(const[e,r]of Object.entries(n))o.searchParams.set(e,r);return o.toString()}async function exchangeCodeForToken(e){const n=e.fetchImpl??defaultFetch(),o={grant_type:"authorization_code",code:e.code,code_verifier:e.verifier,client_id:e.clientId,redirect_uri:e.redirectUri};e.clientSecret&&(o.client_secret=e.clientSecret),e.resource&&(o.resource=e.resource);const{headers:r,body:s}=encodeTokenRequest(o,e.encoding??"form"),a=await fetchWithTimeout(n,e.tokenEndpoint,{method:"POST",headers:r,body:s});if(!1===a.ok){const e=a.text?await a.text():"";throw new Error(`Token exchange failed: ${a.status??"?"} ${e}`.trim())}return toTokenResult(await a.json(),e.now??(()=>Date.now()))}async function refreshAccessToken(e){const n=e.fetchImpl??defaultFetch(),o={grant_type:"refresh_token",refresh_token:e.refreshToken,client_id:e.clientId};e.clientSecret&&(o.client_secret=e.clientSecret),e.resource&&(o.resource=e.resource);const{headers:r,body:s}=encodeTokenRequest(o,e.encoding??"form"),a=await fetchWithTimeout(n,e.tokenEndpoint,{method:"POST",headers:r,body:s});if(!1===a.ok){const e=a.text?await a.text():"";throw new Error(`Token refresh failed: ${a.status??"?"} ${e}`.trim())}return toTokenResult(await a.json(),e.now??(()=>Date.now()),e.refreshToken)}function escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function htmlPage(e,n){return`<!DOCTYPE html><html><head><title>${e}</title></head><body style="font-family: system-ui; padding: 40px; text-align: center;"><h1>${e}</h1><p>${n}</p></body></html>`}function startCallbackServer(e,n){return new Promise((o,r)=>{let s=null,a=null;const i=new Promise((e,n)=>{s=e,a=n});i.catch(()=>{});const l=I((o,r)=>{const i=new f(o.url??"/",`http://${en}:${e}`);if("/callback"!==i.pathname)return r.writeHead(404,{Connection:"close"}),void r.end("Not Found");const l=i.searchParams.get("code"),c=i.searchParams.get("error"),d=i.searchParams.get("error_description"),u=i.searchParams.get("state"),m=__name((e,n)=>{r.writeHead(e,{"Content-Type":"text/html",Connection:"close"}),r.end(n)},"respond");return u!==n?(m(400,htmlPage("Authentication Failed","Invalid state parameter. Please try again.")),void a?.(new Error("OAuth state parameter mismatch"))):c?(m(400,htmlPage("Authentication Failed",escapeHtml(d||c))),void a?.(new Error(d||c))):l?(m(200,htmlPage("Authentication Successful","You can close this window and return to Command Code.")),void s?.(l)):(m(400,htmlPage("Invalid Request","No authorization code received.")),void a?.(new Error("No authorization code received")))});l.on("error",r),l.keepAliveTimeout=1,l.headersTimeout=5e3,l.listen(e,en,()=>{o({server:l,waitForCode:__name(()=>i,"waitForCode")})})})}function defaultOpenBrowser(e){try{if("win32"===process.platform){const n=w("cmd",["/c","start",'""',`"${e}"`],{stdio:"ignore",detached:!0,windowsVerbatimArguments:!0});return n.on("error",()=>{}),void n.unref()}const n="darwin"===process.platform?"open":"xdg-open",o=w(n,[e],{stdio:"ignore",detached:!0});o.on("error",()=>{}),o.unref()}catch{}}async function performOAuthFlow(e){if(!isSecureOrLoopback(e.serverUrl))return{success:!1,error:`MCP server url must use https:// when OAuth is configured (got "${e.serverUrl}"). http:// is only allowed for loopback hosts.`};const n=e.port??Zt,o=e.timeoutMs??12e4,r=e.onStatus??(()=>{}),s=e.openBrowser??defaultOpenBrowser,a=`http://${en}:${n}/callback`;let i,l=null;try{const c=resourceIndicatorFor({serverUrl:e.serverUrl,resource:e.config.resource}),d=generatePkce(),u=P(32).toString("base64url");r("Starting authentication server...");const m=await startCallbackServer(n,u);l=m.server;const p=buildAuthorizationUrl({authorizationEndpoint:e.config.authorizationUrl,clientId:e.config.clientId,redirectUri:a,challenge:d.challenge,scope:e.config.scopes?.length?e.config.scopes.join(" "):void 0,state:u,resource:c});r("Opening browser for authentication..."),await s(p),r("Waiting for authorization...");const g=new Promise((e,n)=>{i=setTimeout(()=>n(new Error("Authentication timed out")),o)}),h=await Promise.race([m.waitForCode(),g]);r("Exchanging authorization code for tokens...");const f=await exchangeCodeForToken({tokenEndpoint:e.config.tokenUrl,code:h,verifier:d.verifier,clientId:e.config.clientId,clientSecret:e.config.clientSecret,redirectUri:a,fetchImpl:e.fetchImpl,now:e.now,resource:c});return await e.vault.set({serverUrl:e.serverUrl,token:{...f,issuerUrl:e.serverUrl}}),r("Authentication successful!"),{success:!0,token:f}}catch(e){return{success:!1,error:String(e)}}finally{i&&clearTimeout(i),l&&(l.closeIdleConnections?.(),l.closeAllConnections?.(),l.close(),l.unref())}}function defaultFetch2(){return globalThis.fetch}function encodeForm(e){return Object.entries(e).map(([e,n])=>`${encodeURIComponent(e)}=${encodeURIComponent(n)}`).join("&")}function createLoopbackCallbackServer(e={}){const n=e.host??tn,o=e.path??"/callback",r=e.successHtml??'<!DOCTYPE html><html><head><title>Authenticated</title></head><body style="font-family:system-ui;padding:40px;text-align:center;"><h1>Authentication complete</h1><p>You can close this window and return to your terminal.</p></body></html>';return new Promise((s,a)=>{let i=null,l=null;const c=new Promise((e,n)=>{i=e,l=n});c.catch(()=>{});const d=I((e,s)=>{const a=new f(e.url??"/",`http://${n}`);if(a.pathname!==o)return s.writeHead(404,{Connection:"close"}),void s.end("Not Found");const c=a.searchParams.get("code"),d=a.searchParams.get("error"),u=a.searchParams.get("error_description"),m=a.searchParams.get("state");return d?(s.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),s.end("<!DOCTYPE html><html><body><h1>Authentication failed</h1></body></html>"),void l?.(new Error(u||d))):c?(s.writeHead(200,{"Content-Type":"text/html",Connection:"close"}),s.end(r),void i?.({code:c,state:m})):(s.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),s.end("<!DOCTYPE html><html><body><h1>Missing authorization code</h1></body></html>"),void l?.(new Error("No authorization code received")))});d.on("error",a),d.keepAliveTimeout=1,d.headersTimeout=5e3,d.listen(e.port??0,n,()=>{const r=d.address(),a="object"==typeof r&&null!==r?r.port:e.port??0;s({redirectUri:`http://${n}:${a}${o}`,waitForCode:__name(()=>c,"waitForCode"),close:__name(()=>{d.closeIdleConnections?.(),d.closeAllConnections?.(),d.close(),d.unref()},"close")})})})}async function requestDeviceCode(e){const n=e.fetchImpl??defaultFetch2(),o={client_id:e.clientId};e.scopes?.length&&(o.scope=e.scopes.join(" "));const r=await n(e.deviceAuthorizationEndpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",accept:"application/json"},body:encodeForm(o)});if(!1===r.ok){const e=r.text?await r.text():"";throw new Error(`Device authorization failed: ${r.status??"?"} ${e}`.trim())}const s=await r.json();if(!s.device_code||!s.user_code||!s.verification_uri)throw new Error("Device authorization response missing required fields");return{deviceCode:s.device_code,userCode:s.user_code,verificationUri:s.verification_uri,verificationUriComplete:s.verification_uri_complete,expiresIn:s.expires_in,interval:s.interval}}async function pollDeviceToken(e){const n=e.fetchImpl??defaultFetch2(),o=e.now??(()=>Date.now()),r=e.sleep??(e=>new Promise(n=>setTimeout(n,e)));let s=e.intervalMs??5e3;const a=o()+(e.timeoutMs??3e5);for(;;){if(o()>=a)throw new Error("Device authorization timed out");await r(s);const i={grant_type:"urn:ietf:params:oauth:grant-type:device_code",device_code:e.deviceCode,client_id:e.clientId};e.clientSecret&&(i.client_secret=e.clientSecret);const l=await n(e.tokenEndpoint,{method:"POST",headers:{"content-type":"application/x-www-form-urlencoded",accept:"application/json"},body:encodeForm(i)}),c=await l.json();if(c.access_token)return{accessToken:c.access_token,refreshToken:c.refresh_token,expiresAt:"number"==typeof c.expires_in?o()+1e3*c.expires_in:void 0,tokenType:c.token_type,scope:c.scope};if("authorization_pending"!==c.error){if("slow_down"!==c.error)throw new Error(`Device authorization failed: ${c.error??"unknown error"}`);s+=5e3}}}var sn,an,ln,cn,dn,un,mn,pn,gn,hn,fn,yn,vn,Sn,wn,kn,Cn,bn,Tn,En,Mn,Pn,xn,In,An,Rn,On,Ln,Dn,Nn,Fn,_n,$n,Un,Bn,jn,Wn,Hn,Gn,Vn,zn,Kn,qn,Yn,Jn,Qn,Xn,Zn,eo,to,no,oo,ro,so,ao,io,lo,co,uo,mo,po,go,ho,fo,yo,vo,So,wo,ko,Co,bo,To,Eo,Mo,Po,xo,Io,Ao,Ro,Oo,Lo,Do,No,Fo,_o,$o,Uo,Bo,jo,Wo,Ho,Go,Vo,zo,Ko,qo,Yo,Jo,Qo,Xo,Zo,er,tr,nr,or,rr,sr,ar,ir,lr,cr,dr,ur,mr,pr,gr,hr,fr,yr,vr,Sr,wr,kr,Cr,br,Tr,Er,Mr,Pr,xr,Ir,Ar,Rr,Or,Lr,Dr,Nr,Fr,_r,$r,Ur,Br,jr,Wr,Hr,Gr,Vr,zr,Kr,qr,Yr,Jr,Qr,Xr,Zr,es,ts,ns,os,rs,ss,as,is,ls,cs,ds,us,ms,ps,gs,hs,fs,ys,vs,Ss,ws,ks,Cs,bs,Ts,Es,Ms,Ps,xs,Is,As,Rs,Os,Ls,Ds,Ns,Fs,_s,$s,Us,Bs,js,Ws,Hs,Gs,Vs,zs,Ks,qs,Ys,Js,Qs,Xs,Zs,ea,ta,na,oa,ra,sa,aa,ia,la,ca,da,ua,ma,pa,ga,ha,fa,ya,va,Sa,wa,ka,Ca,ba,Ta,Ea,Ma,Pa,xa,Ia,Aa,Ra,Oa,La,Da,Na,Fa,_a,$a,Ua,Ba,ja,Wa,Ha,Ga,Va,za,Ka,qa,Ya,Ja,Qa,Xa,Za,ei,ti,ni,oi,ri,si,ai,ii,li,ci,di,ui,mi,pi,gi,hi,fi,yi,vi,Si,wi,ki,Ci,bi,Ti,Ei,Mi,Pi,xi,Ii,Ai,Ri,Oi,Li,Di,Ni,Fi,_i,$i,Ui,Bi,ji,Wi,Hi,Gi,Vi,zi,Ki,qi,Yi,Ji,Qi,Xi,Zi,el,tl,nl,ol,rl,sl,al,il,ll,cl,dl,ul,ml,pl,gl,hl,fl,yl,vl,Sl,wl,kl,Cl,bl,Tl,El,Ml,Pl,xl,Il,Al,Rl,Ol,Ll,Dl,Nl,Fl,_l,$l,Ul,Bl,jl,Wl,Hl,Gl,Vl,zl,Kl,ql,Yl,Jl,Ql,Xl,Zl,ec,tc,nc,oc,rc,sc,ac,ic,lc,cc,dc,uc,mc,pc,gc,hc,fc,yc,vc,Sc,wc,kc,Cc,bc,Tc,Ec,Mc,Pc,xc,Ic,Ac,Rc,Oc,Lc,Dc,Nc,Fc,_c,$c,Uc,Bc,jc,Wc,Hc,Gc,Vc,zc,Kc,qc,Yc,Jc,Qc,Xc,Zc,ed,td,nd,od,rd,sd,ad,id,ld,cd,dd,ud,md,pd,gd,hd,fd,yd,vd,Sd,wd,kd,Cd,bd,Td,Ed,Md,Pd,xd,Id,Ad,Rd,Od,Ld,Dd,Nd,Fd,_d,$d,Ud,Bd,jd,Wd,Hd,Gd,Vd,zd,Kd,qd,Yd,Jd,Qd,Xd,Zd,eu,tu,nu,ou,ru,su,au,iu,lu,cu,du,uu,mu,pu,gu,hu,fu,yu,vu,Su,wu,ku,Cu,bu,Tu,Eu,Mu,Pu,xu,Iu,Au,Ru,Ou,Lu,Du,Nu,Fu,_u,$u,Uu,Bu,ju,Wu,Hu,Gu,Vu,zu,Ku,qu,Yu,Ju,Qu,Xu,Zu,em,tm,nm,om,rm,sm,am,im,lm,cm,dm,um,mm,pm,gm,hm,fm,ym,vm,Sm,wm,km,Cm,bm,Tm,Em,Mm,Pm,xm,Im,Am,Rm,Om,Lm,Dm,Nm,Fm,_m,$m,Um,Bm,jm,Wm,Hm,Gm,Vm,zm,Km,qm,Ym,Jm,Qm,Xm,Zm,ep,tp,np,op,rp,sp,ap,ip,lp,cp,dp,up,mp,pp,gp,hp,fp,yp,vp,Sp,wp,kp,Cp,bp,Tp,Ep,Mp,Pp,xp,Ip,Ap,Rp,Op,Lp,Dp,Np,Fp,_p,$p,Up,Bp,jp,Wp,Hp,Gp,Vp,zp,Kp,qp,Yp,Jp,Qp,Xp,Zp,eg,tg,ng,og,rg,sg,ag,ig,lg,cg,dg,ug,mg,pg,gg,hg,fg,yg,vg,Sg,wg,kg,Cg,bg,Tg,Eg,Mg,Pg,xg,Ig,Ag,Rg,Og,Lg,Dg,Ng,Fg,_g,$g,Ug,Bg,jg,Wg,Hg,Gg,Vg,zg,Kg,qg,Yg,Jg,Qg,Xg,Zg,eh,th,nh,oh,rh,sh,ah,ih,lh,ch,dh,uh,mh,ph,gh,hh,fh,yh,vh,Sh,wh,kh,Ch,bh,Th,Eh,Mh,Ph,xh,Ih,Ah,Rh,Oh,Lh,Dh,Nh,Fh,_h,$h,Uh,Bh,jh,Wh,Hh,Gh,Vh,zh,Kh,qh,Yh,Jh,Qh,Xh,Zh,ef,tf,nf,of,rf,sf,af,lf,cf,df,uf,mf,pf,gf,hf,ff,yf,vf,Sf,wf,kf,Cf,bf,Tf,Ef,Mf,Pf,xf,If,Af,Rf,Of,Lf,Df,Nf,Ff,_f,$f,Uf,Bf,jf,Wf,Hf,Gf,Vf,zf,Kf,qf,Yf,Jf,Qf,Xf,Zf,ey,ty,ny,oy,ry,sy,ay,iy,ly,cy,dy,uy,my,py,gy,hy,fy,yy,vy,Sy,wy,ky,Cy,by,Ty,Ey,My,Py,xy,Iy,Ay,Ry,Oy,Ly,Dy,Ny,Fy,_y,$y,Uy,By,jy,Wy,Hy,Gy,Vy,zy,Ky,qy,Yy,Jy,Qy,Xy,Zy,ev,tv,nv,ov,rv,sv,av,iv,lv,cv,dv,uv,mv,pv,gv,hv,fv,yv,vv,Sv,wv,kv,Cv,bv,Tv,Ev,Mv,Pv,xv,Iv,Av,Rv,Ov,Lv,Dv,Nv,Fv,_v,$v,Uv,Bv,jv,Wv,Hv,Gv,Vv,zv,Kv,qv,Yv,Jv,Qv,Xv,Zv,eS,tS,nS,oS,rS,sS,aS,iS,lS,cS,dS,uS,mS,pS,gS,hS,fS,yS,vS,SS,wS,kS,CS,bS,TS,ES,MS,PS,xS,IS,AS,RS,OS,LS,DS,NS,FS,_S,$S,US,BS,jS,WS,HS,GS,VS,zS,KS,qS,YS,JS,QS,XS,ZS,ew,tw,nw,ow,rw,sw,aw,iw,lw,cw,dw,uw,mw,pw,gw,hw,fw,yw,vw,Sw,ww,kw,Cw,bw,Tw,Ew,Mw,Pw,xw,Iw,Aw,Rw,Ow,Lw,Dw,Nw,Fw,_w,$w,Uw,Bw,jw,Ww,Hw,Gw,Vw,zw,Kw,qw,Yw,Jw,Qw,Xw,Zw,ek,tk,nk,ok,rk,sk,ak,ik,lk,ck,dk,uk,mk,pk,gk,hk,fk,yk,vk,Sk,wk,kk,Ck,bk,Tk,Ek,Mk,Pk,xk,Ik,Ak,Rk,Ok,Lk,Dk,Nk,Fk,_k,$k,Uk,Bk,jk,Wk,Hk,Gk,Vk,zk,Kk,qk,Yk,Jk,Qk,Xk,Zk,eC,tC,nC,oC,rC,sC,aC,iC,lC,cC,dC,uC,mC,pC,gC,hC,fC,yC,vC,SC,wC,kC,CC,bC,TC,EC,MC,PC,xC,IC,AC,RC,OC,LC,DC,NC,FC,_C,$C,UC,BC,jC,WC,HC,GC,VC,zC,KC,qC,YC,JC,QC,XC,ZC,eb,tb,nb,ob,rb,sb,ab,ib,lb,cb,db,ub,mb,pb,gb,hb,fb,yb,vb,Sb,wb,kb,Cb,bb,Tb,Eb,Mb,Pb,xb,Ib,Ab,Rb,Ob,Lb,Db,Nb,Fb,_b,$b,Ub,Bb,jb,Wb,Hb,Gb,Vb,zb,Kb,qb,Yb,Jb,Qb,Xb,Zb,eT,tT,nT,oT,rT,sT,aT,iT,lT,cT,dT,uT,mT,pT,gT,hT,fT,yT,vT,ST,wT,kT,CT,bT,TT,ET,MT,PT,xT,IT,AT,RT,OT,LT,DT,NT,FT,_T,$T,UT,BT,jT,WT,HT,GT,VT,zT,KT,qT,YT,JT,QT,XT,ZT,eE,tE,nE,oE,rE,sE,aE,iE,lE,cE,dE,uE,mE,pE,gE,hE,fE,yE,vE,SE,wE,kE,CE,bE,TE,EE,ME,PE,xE,IE,AE,RE,OE,LE,DE,NE,FE,_E,$E,UE,BE,jE,WE,HE,GE,VE,zE,KE,qE,YE,JE,QE,XE,ZE,eM,tM,nM,oM,rM,sM,aM,iM,lM,cM,dM,uM,mM,pM,gM,hM,fM,yM,vM,SM,wM,kM,CM,bM,TM,EM,MM,PM,xM,IM,AM,RM,OM,LM,DM,NM,FM,_M,$M,UM,BM,jM,WM,HM,GM,VM,zM,KM,qM,YM,JM,QM,XM,ZM,eP,tP,nP,oP,rP,sP,aP,iP,lP,cP,dP,uP,mP,pP,gP,hP,fP,yP,vP,SP,wP,kP,CP,bP,TP,EP,MP,PP,xP,IP,AP,RP,OP,LP,DP,NP,FP,_P,$P,UP,BP,jP,WP,HP,GP,VP,zP,KP,qP,YP,JP,QP,XP,ZP,ex,tx,nx,ox,rx,sx,ax,ix,lx,cx,dx,ux,mx,px,gx,hx,fx,yx,vx,Sx,wx,kx,Cx,bx,Tx,Ex,Mx,Px,xx,Ix,Ax,Rx,Ox,Lx,Dx,Nx,Fx,_x,$x,Ux,Bx,jx,Wx,Hx,Gx,Vx,zx,Kx,qx,Yx,Jx,Qx,Xx,Zx,eI,tI,nI,oI,rI,sI,aI,iI,lI,cI,dI,uI,mI,pI,gI,hI,fI,yI,vI,SI,wI,kI,CI,bI,TI,EI,MI,PI,xI,II,AI,RI,OI,LI,DI,NI,FI,_I,$I,UI,BI,jI,WI,HI,GI,VI,zI,KI,qI,YI,JI,QI,XI,ZI,eA,tA,nA,oA,rA,sA,aA,iA,lA,cA,dA,uA,mA,pA,gA,hA,fA,yA,vA,SA,wA,kA,CA,bA,TA,EA,MA,PA,xA,IA,AA,RA,OA,LA,DA,NA,FA,_A,$A,UA,BA,jA,WA,HA,GA,VA,zA,KA,qA,YA,JA,QA,XA,ZA,eR,tR,nR,oR,rR,sR,aR,iR,lR,cR,dR,uR,mR,pR,gR,hR,fR,yR,vR,SR,wR,kR,CR,bR,TR,ER,MR,PR,xR,IR,AR,RR,OR,LR,DR,NR,FR,_R,$R,UR,BR,jR,WR,HR,GR,VR,zR,KR,qR,YR,JR,QR,XR,ZR,eO,tO,nO,oO,rO,sO,aO,iO,lO,cO,dO,uO,mO,pO,gO,hO,fO,yO,vO,SO,wO,kO,CO,bO,TO,EO,MO,PO,xO,IO,AO,RO,OO,LO,DO,NO,FO,_O,$O,UO,BO,jO,WO,HO,GO,VO,zO,KO,qO,YO,JO,QO,XO,ZO,eL,tL,nL,oL,rL,sL,aL,iL,lL,cL,dL,uL,mL,pL,gL,hL,fL,yL,vL,SL,wL,kL,CL,bL,TL,EL,ML,PL,xL,IL,AL,RL,OL,LL,DL,NL,FL,_L,$L,UL,BL,jL,WL,HL,GL,VL,zL,KL,qL,YL,JL,QL,XL,ZL,eD,tD,nD,oD,rD,sD,aD,iD,lD,cD,dD,uD,mD,pD,gD,hD,fD,yD,vD,SD,wD,kD,CD,bD,TD,ED,MD,PD,xD,ID,AD,RD,OD,LD,DD,ND,FD,_D,$D,UD,BD,jD,WD,HD,GD,VD,zD,KD,qD,YD,JD,QD,XD,ZD,eN,tN,nN,oN,rN,sN,aN,iN,lN,cN,dN,uN,mN,pN,gN,hN,fN,yN,vN,SN,wN,kN,CN,bN,TN,EN,MN,PN,xN,IN,AN,RN,ON,LN,DN,NN,FN,_N,$N,UN,BN,jN,WN,HN,GN,VN,zN,KN=__esm({"../harness/dist/chunk-HJFDNIAC.js"(){rn(),Kt="2025-03-26",qt={name:"commandcode",version:"0.1.0"},Yt=8e4,Jt=2048,__name(resolveMcpTimeoutMs,"resolveMcpTimeoutMs"),__name(synthesizedMcpToolDescription,"synthesizedMcpToolDescription"),__name(mcpToolDefToSchema,"mcpToolDefToSchema"),Qt=new Set(["image/png","image/jpeg","image/gif","image/webp"]),__name(formatByteSize,"formatByteSize"),__name(decodeBase64,"decodeBase64"),__name(persistedBinaryText,"persistedBinaryText"),__name(resourcePrefix,"resourcePrefix"),__name(blockToContents,"blockToContents"),__name(resourceToContents,"resourceToContents"),__name(mcpResultToToolRunResult,"mcpResultToToolRunResult"),__name(sanitizeMcpToolName,"sanitizeMcpToolName"),__name(isMcpTool,"isMcpTool"),__name(parseMcpToolName,"parseMcpToolName"),__name(defaultFetch,"defaultFetch"),Xt=8e4,__name(fetchWithTimeout,"fetchWithTimeout"),__name(queryString,"queryString"),__name(encodeTokenRequest,"encodeTokenRequest"),__name(isSecureOrLoopback,"isSecureOrLoopback"),__name(generatePkce,"generatePkce"),__name(isResourceForServer,"isResourceForServer"),__name(canonicalServerResource,"canonicalServerResource"),__name(resourceIndicatorFor,"resourceIndicatorFor"),__name(toTokenResult,"toTokenResult"),__name(buildOAuthMetadataUrl,"buildOAuthMetadataUrl"),__name(buildOidcMetadataUrl,"buildOidcMetadataUrl"),__name(tryFetchMetadata,"tryFetchMetadata"),__name(discoverAuthServer,"discoverAuthServer"),__name(discoverOAuthMetadataFromIssuer,"discoverOAuthMetadataFromIssuer"),__name(discoverOAuthMetadata,"discoverOAuthMetadata"),__name(parseResourceMetadataUrl,"parseResourceMetadataUrl"),__name(fetchProtectedResourceMetadata,"fetchProtectedResourceMetadata"),__name(checkServerAuthRequirements,"checkServerAuthRequirements"),__name(registerOAuthClient,"registerOAuthClient"),__name(buildAuthorizationUrl,"buildAuthorizationUrl"),__name(exchangeCodeForToken,"exchangeCodeForToken"),__name(refreshAccessToken,"refreshAccessToken"),Zt=8085,en="127.0.0.1",__name(escapeHtml,"escapeHtml"),__name(htmlPage,"htmlPage"),__name(startCallbackServer,"startCallbackServer"),__name(defaultOpenBrowser,"defaultOpenBrowser"),__name(performOAuthFlow,"performOAuthFlow"),tn="127.0.0.1",__name(defaultFetch2,"defaultFetch2"),__name(encodeForm,"encodeForm"),__name(createLoopbackCallbackServer,"createLoopbackCallbackServer"),__name(requestDeviceCode,"requestDeviceCode"),__name(pollDeviceToken,"pollDeviceToken")}}),qN={};function toolKindFor(e){return sn[e]??"other"}function toolTitleFor(e,n){const o=dn[e];return o?o.key?`${o.label}: ${an(ln(n,o.key)??"")}`:o.label:e}function toolLocationsFor(e,n){const o=un[e];if(!o)return[];const r=o.map(e=>ln(n,e)).find(e=>void 0!==e);if(!r)return[];const s="read_file"===e?cn(n,"offset"):void 0;return[s?{path:r,line:s}:{path:r}]}function toolDiffFor(e,n){const o=ln(n,"file_path")??ln(n,"path");if(!o)return[];if("write_file"===e){const e=ln(n,"content");return void 0===e?[]:[{type:"diff",path:o,oldText:null,newText:e}]}if("edit_file"===e){const e=ln(n,"old_string"),r=ln(n,"new_string");return void 0===e||void 0===r?[]:[{type:"diff",path:o,oldText:e,newText:r}]}return[]}function planEntriesFromTodoInput(e){const n=e?.todos;if(!Array.isArray(n))return null;const o=[];for(const e of n){const{content:n,status:r}=e??{};if("string"!=typeof n)return null;o.push({content:n,priority:"medium",status:"in_progress"===r||"completed"===r?r:"pending"})}return o}function permissionModeForAcpModeId(e){const n=mn.find(n=>n.id===e);return n?n.id:null}function effortConfigOption(e){return{id:gn,name:"Effort",description:"Reasoning effort for the current model",category:"thought_level",type:"select",currentValue:e.currentEffort,options:e.availableEfforts.map(e=>({value:e,name:e.charAt(0).toUpperCase()+e.slice(1)}))}}function rawInputFor(e,n,o){return"shell_command"!==e?n:"string"!=typeof n.cwd&&o?.cwd?{...n,cwd:o.cwd}:n}function modelConfigOption(e){return{id:pn,name:"Model",category:"model",type:"select",currentValue:e.currentModelId,options:e.availableModels.map(e=>({value:e.modelId,name:e.name,...e.description?{description:e.description}:{}}))}}function translateAgentEvent(e,n={}){const o=vn[e.type];return o?o(e,n):[]}function acpStopReasonFor(e){return Sn[e]}function collectToolResults(e){const n=new Map;for(const o of e)if("user"===o.role)for(const e of o.content)"tool_result"===e.type&&n.set(e.tool_use_id,e.content);return n}function userBlockUpdate(e){return"text"===e.type&&e.text?{sessionUpdate:"user_message_chunk",content:{type:"text",text:e.text}}:"image"===e.type?{sessionUpdate:"user_message_chunk",content:{type:"image",data:e.source.data,mimeType:e.source.media_type}}:null}function toolUseUpdate(e,n){const o=n.get(e.id),r=toolDiffFor(e.name,e.input),s=toolLocationsFor(e.name,e.input),a=o?hn(o):[];return{sessionUpdate:"tool_call",toolCallId:e.id,title:toolTitleFor(e.name,e.input),kind:toolKindFor(e.name),status:o?"completed":"pending",rawInput:e.input,...a.length>0||r.length>0?{content:[...r,...a]}:{},...s.length>0?{locations:s}:{}}}function assistantBlockUpdate(e,n){return"text"===e.type&&e.text?{sessionUpdate:"agent_message_chunk",content:{type:"text",text:e.text}}:"thinking"===e.type&&e.thinking?{sessionUpdate:"agent_thought_chunk",content:{type:"text",text:e.thinking}}:"tool_use"===e.type?toolUseUpdate(e,n):null}function messageUpdates(e,n){return"user"===e.role?e.meta?.isMeta?[]:e.content.map(userBlockUpdate).filter(e=>null!==e):"assistant"!==e.role?[]:e.content.map(e=>assistantBlockUpdate(e,n)).filter(e=>null!==e)}function replayHistoryUpdates(e){const n=collectToolResults(e);return e.flatMap(e=>messageUpdates(e,n))}function createNdjsonDecoder(){let e="";return{feed:__name(n=>{e+=n;const o=[];let r=e.indexOf("\n");for(;-1!==r;){const n=e.slice(0,r).replace(/\r$/,"");e=e.slice(r+1),n.trim().length>0&&o.push(n),r=e.indexOf("\n")}return o},"feed"),flush:__name(()=>{const n=e.trim();return e="",n.length>0?n:null},"flush")}}function parseIncoming(e){let n;try{n=JSON.parse(e)}catch{return{ok:!1,errorResponse:kn(null,wn.PARSE_ERROR,"Parse error: invalid JSON")}}if(Array.isArray(n))return{ok:!1,errorResponse:kn(null,wn.INVALID_REQUEST,"Invalid request: batch messages are not supported")};if(null===n||"object"!=typeof n)return{ok:!1,errorResponse:kn(null,wn.INVALID_REQUEST,"Invalid request: expected a JSON-RPC object")};const o=n,r=null===o.id||"string"==typeof o.id||"number"==typeof o.id,s="string"==typeof o.method;return s||!s&&r&&("result"in o||"error"in o)?{ok:!0,message:n}:{ok:!1,errorResponse:kn(r?o.id:null,wn.INVALID_REQUEST,"Invalid request: missing method")}}function serializeMessage(e){return JSON.stringify(e)+"\n"}function isRequest(e){return"method"in e&&"id"in e}function isNotification(e){return"method"in e&&!("id"in e)}function isResponse(e){return!("method"in e)&&("result"in e||"error"in e)}function createAcpServer(e){const n=new Map,o=new Map,r=createNdjsonDecoder(),s=new Map;let i=0,c=0;const d=new Set;let u={};function start(){const{input:n}=e;return n.setEncoding?.("utf8"),new Promise(e=>{let o=!1;const s=__name(()=>{if(o)return;o=!0;const n=r.flush();n&&handleLine(n),abortAll(),drainInflight().then(()=>disposeAll()).then(e)},"finish");n.on("data",e=>{for(const n of r.feed(String(e)))handleLine(n)}),n.once("end",s),n.once("close",s),n.on("error",()=>s())})}async function drainInflight(){for(;d.size>0;)await Promise.allSettled([...d])}function abortAll(){for(const e of n.values())cancelSession(e);for(const e of s.values())e({jsonrpc:"2.0",id:null,error:{code:wn.INTERNAL_ERROR,message:"Connection closed"}});s.clear()}async function disposeAll(){const e=[...n.values()].map(async e=>{e.unsubscribe?.(),e.unsubscribe=null,await(e.agent?.dispose?.())});await Promise.allSettled(e)}function log4(n){e.log?.(n)}function handleLine(e){const n=parseIncoming(e);n.ok?handleMessage(n.message):write(n.errorResponse)}function handleMessage(e){if(isResponse(e)){const n="number"==typeof e.id?e.id:-1,o=s.get(n);return void(o&&(s.delete(n),o(e)))}isRequest(e)?track(dispatchRequest(e).catch(n=>{log4(`request failed: ${String(n)}`),respondError(e.id,isAcpFailure(n)?n.acp.code:wn.INTERNAL_ERROR,n instanceof Error?n.message:"Internal error",isAcpFailure(n)?n.acp.data:void 0)})):isNotification(e)&&e.method===bn.SESSION_CANCEL&&handleCancel2(e.params)}__name(start,"start"),__name(drainInflight,"drainInflight"),__name(abortAll,"abortAll"),__name(disposeAll,"disposeAll"),__name(log4,"log"),__name(handleLine,"handleLine"),__name(handleMessage,"handleMessage");const m={[bn.INITIALIZE]:e=>handleInitialize(e),[bn.AUTHENTICATE]:e=>handleAuthenticate(e),[bn.SESSION_NEW]:e=>handleNewSession(e),[bn.SESSION_LOAD]:e=>handleLoadSession(e),[bn.SESSION_RESUME]:e=>handleResumeSession(e),[bn.SESSION_LIST]:e=>handleListSessions(e),[bn.SESSION_CLOSE]:e=>handleCloseSession(e),[bn.SESSION_SET_CONFIG_OPTION]:e=>handleSetConfigOption(e),[bn.SESSION_PROMPT]:e=>handlePrompt(e),[bn.SESSION_SET_MODE]:e=>handleSetMode(e),[bn.SESSION_SET_MODEL]:e=>handleSetModel(e),[bn.SESSION_CANCEL]:e=>(handleCancel2(e),{})};function track(e){d.add(e),e.finally(()=>d.delete(e))}async function dispatchRequest(e){const n=m[e.method];n?respondResult(e.id,await n(e.params)):respondError(e.id,wn.METHOD_NOT_FOUND,`Method not found: ${e.method}`)}function handleInitialize(n){const o="number"==typeof n?.protocolVersion?n.protocolVersion:Cn;return u=n?.clientCapabilities??{},log4(`initialize: client capabilities ${JSON.stringify(u)}`),{protocolVersion:Math.min(o,Cn),agentCapabilities:{loadSession:!0,promptCapabilities:{audio:!1,image:!0,embeddedContext:!0},mcpCapabilities:{http:!0,sse:!1},sessionCapabilities:{...e.listSessions?{list:{}}:{},resume:{},close:{}}},authMethods:(e.authMethods??[]).filter(e=>"terminal"!==e.type||!0===u.auth?.terminal),agentInfo:{name:e.agentName,version:e.agentVersion}}}async function handleAuthenticate(n){const o=n?.methodId??"";if(e.authenticate)return e.authenticate({methodId:o});if(!(await(e.isAuthenticated?.())??1))throw acpFailure(wn.AUTH_REQUIRED,"Not authenticated. Run `cmd login` in a terminal, then retry.");return{}}async function openSession(o){if("string"!=typeof o.cwd||!l(o.cwd))throw acpFailure(wn.INVALID_PARAMS,`${o.method} requires an absolute \`cwd\``);if(!(await(e.isAuthenticated?.())??1))throw acpFailure(wn.AUTH_REQUIRED,"Not authenticated. Run `cmd login` in a terminal first.");const r={id:o.sessionId,cwd:o.cwd,agent:null,unsubscribe:null,prompting:!1,activeTurn:null,cancelled:!1,turnUsage:null,sessionUsage:Mn,alwaysAllowed:new Set,alwaysRejected:new Set,pendingToolCalls:[],pendingPermissionCancels:new Set},s=await e.createAgentSession({sessionId:o.sessionId,cwd:o.cwd,interaction:createInteraction(r),resume:o.resume,mcpServers:o.mcpServers});return r.agent=s,r.unsubscribe=s.subscribe(e=>onAgentEvent(r,e)),n.set(r.id,r),r}async function attachSession(e){const r=n.get(e.sessionId);if(r){if("string"==typeof e.cwd&&a(e.cwd)!==a(r.cwd))throw acpFailure(wn.INVALID_PARAMS,`Session ${r.id} is open in ${r.cwd}; ${e.method} named ${e.cwd}`);return r}const s=o.get(e.sessionId);if(s)return s;const i=openSession({...e,resume:!0}).finally(()=>o.delete(e.sessionId));return o.set(e.sessionId,i),i}async function handleNewSession(e){const n=await openSession({sessionId:T(),cwd:e?.cwd,method:"session/new",resume:!1,mcpServers:e?.mcpServers??[]});log4(`session ${n.id} created (cwd: ${n.cwd})`);const o={sessionId:n.id,...await sessionStateBlocks(n)};return track(publishAvailableCommands(n)),o}async function handleLoadSession(e){const n=e?.sessionId;if("string"!=typeof n||0===n.length)throw acpFailure(wn.INVALID_PARAMS,"session/load requires a `sessionId`");const o=await attachSession({sessionId:n,cwd:e?.cwd,method:"session/load",mcpServers:e?.mcpServers??[]});log4(`session ${o.id} loaded (cwd: ${o.cwd})`);const r=o.agent?.history?.()??[];for(const e of replayHistoryUpdates(r))notifySessionUpdate({sessionId:o.id,update:e});const s=await sessionStateBlocks(o);return track(publishAvailableCommands(o)),s}async function handleResumeSession(e){const n=e?.sessionId;if("string"!=typeof n||0===n.length)throw acpFailure(wn.INVALID_PARAMS,"session/resume requires a `sessionId`");const o=await attachSession({sessionId:n,cwd:e?.cwd,method:"session/resume",mcpServers:e?.mcpServers??[]});log4(`session ${o.id} resumed (cwd: ${o.cwd})`);const r=await sessionStateBlocks(o);return track(publishAvailableCommands(o)),r}async function handleListSessions(n){const o=e.listSessions;if(!o)throw acpFailure(wn.METHOD_NOT_FOUND,"This agent does not list sessions");const r="string"==typeof n?.cwd?n.cwd:void 0;return{sessions:[...await o(r?{cwd:r}:{})]}}async function handleCloseSession(e){const o=requireSession(e?.sessionId);return cancelSession(o),o.unsubscribe?.(),o.unsubscribe=null,n.delete(o.id),await(o.agent?.dispose?.()),log4(`session ${o.id} closed`),{}}async function sessionStateBlocks(e){const n=e.agent;if(!n)return{};const o=n.getModeState?.(),r=await(n.getModelState?.()),s=n.getEffortState?.(),a=[...r?[modelConfigOption(r)]:[],...s?[effortConfigOption(s)]:[]];return{...o?{modes:o}:{},...a.length>0?{configOptions:a}:{},...r?{models:r}:{}}}async function publishAvailableCommands(e){const n=e.agent?.listCommands;if(n)try{const o=[...await n.call(e.agent)];notifySessionUpdate({sessionId:e.id,update:{sessionUpdate:"available_commands_update",availableCommands:o}})}catch(e){log4(`available commands failed: ${String(e)}`)}}function onAgentEvent(e,n){"tool_queued"===n.type&&(e.pendingToolCalls=[...e.pendingToolCalls,{toolCallId:n.toolCallId,toolName:n.toolName,input:n.input}]),isToolCallTerminalEvent(n)&&(e.pendingToolCalls=e.pendingToolCalls.filter(e=>e.toolCallId!==n.toolCallId)),"turn_end"===n.type&&(e.pendingToolCalls=[],e.sessionUsage=Pn(e.sessionUsage,n.usage),e.turnUsage&&(e.turnUsage=Pn(e.turnUsage,n.usage)));for(const o of translateAgentEvent(n,{cwd:e.cwd}))notifySessionUpdate({sessionId:e.id,update:o})}async function handlePrompt(e){const n=requireSession(e?.sessionId);if(n.prompting)throw acpFailure(wn.INVALID_REQUEST,"A prompt is already running for this session");const o=n.agent;if(!o)throw acpFailure(wn.INTERNAL_ERROR,"Session has no agent binding");const r=promptContent(e?.prompt??[]);if(0===r.length)throw acpFailure(wn.INVALID_PARAMS,"session/prompt requires at least one text or image content block");n.prompting=!0,n.cancelled=!1,n.turnUsage=Mn;try{return await servePrompt(n,o,r)}finally{n.prompting=!1}}async function servePrompt(e,n,o){const r=parseSlashCommand(o),s=r&&n.resolveCommand?await n.resolveCommand(r):null;if(e.cancelled)return promptResult(e,"cancelled");if(s?.message&&notifySessionUpdate({sessionId:e.id,update:{sessionUpdate:"agent_message_chunk",content:{type:"text",text:s.message}}}),s&&void 0===s.input)return publishContextUsage(e,s.contextUsage),promptResult(e,"end_turn");const a=void 0!==s?.input?n.runTurn({userInput:s.input,...s.additionalContent?{additionalContent:s.additionalContent}:{}}):n.runTurn({userInput:o});e.activeTurn=a;try{const{stopReason:n,error:o}=await a.result;if("run_error"===n){if(e.cancelled)return promptResult(e,"cancelled");throw acpFailure(wn.INTERNAL_ERROR,o?.message??"The agent run failed",o?{status:o.status,code:o.code}:void 0)}return promptResult(e,e.cancelled?"cancelled":acpStopReasonFor(n))}catch(n){if(e.cancelled)return promptResult(e,"cancelled");throw n}finally{e.activeTurn=null,publishContextUsage(e)}}function publishContextUsage(e,n){const o=n??e.agent?.getContextUsage?.();o&&notifySessionUpdate({sessionId:e.id,update:{sessionUpdate:"usage_update",used:o.used,size:o.size,...void 0!==o.costUsd?{cost:{amount:o.costUsd,currency:"USD"}}:{}}})}function promptResult(e,n){const o=e.turnUsage;e.turnUsage=null;const r=null!==o&&o.inputTokens+o.outputTokens+o.cacheReadTokens+o.cacheWriteTokens>0,s=e.sessionUsage;return{stopReason:n,...s.inputTokens+s.outputTokens>0?{usage:{totalTokens:s.inputTokens+s.outputTokens,inputTokens:s.inputTokens,outputTokens:s.outputTokens,cachedReadTokens:s.cacheReadTokens,cachedWriteTokens:s.cacheWriteTokens}}:{},...r&&o?{_meta:{usage:{inputTokens:o.inputTokens,outputTokens:o.outputTokens,cacheReadTokens:o.cacheReadTokens,cacheWriteTokens:o.cacheWriteTokens}}}:{}}}async function handleSetMode(e){const n=requireSession(e?.sessionId),o=n.agent?.setMode;if(!o)throw acpFailure(wn.METHOD_NOT_FOUND,"This agent does not support session modes");const r=e?.modeId;if("string"!=typeof r||0===r.length)throw acpFailure(wn.INVALID_PARAMS,"session/set_mode requires a `modeId`");const s=n.agent?.getModeState?.();if(s&&!s.availableModes.some(e=>e.id===r))throw acpFailure(wn.INVALID_PARAMS,`Unknown mode: ${r}`);return await o.call(n.agent,r),log4(`session ${n.id} mode -> ${r}`),{}}async function handleSetModel(e){const n=requireSession(e?.sessionId),o=e?.modelId;if("string"!=typeof o||0===o.length)throw acpFailure(wn.INVALID_PARAMS,"session/set_model requires a `modelId`");return await switchModel(n,o),{}}async function handleSetConfigOption(e){const n=requireSession(e?.sessionId),o=e?.configId;if(o!==pn&&o!==gn)throw acpFailure(wn.INVALID_PARAMS,`Unknown config option: ${String(o??"(missing configId)")}`);const r=e?.value;if("string"!=typeof r||0===r.length)throw acpFailure(wn.INVALID_PARAMS,`session/set_config_option \`${o}\` takes a string \`value\``);return{configOptions:(o===pn?await switchModel(n,r):await switchEffort(n,r))??[]}}async function switchEffort(e,n){const o=e.agent?.setEffort,r=e.agent?.getEffortState?.();if(!o||!r)throw acpFailure(wn.METHOD_NOT_FOUND,"The current model has no reasoning effort setting");if(!r.availableEfforts.includes(n))throw acpFailure(wn.INVALID_PARAMS,`Unknown effort: ${n}`);return await o.call(e.agent,n),log4(`session ${e.id} effort -> ${n}`),publishConfigOptions(e)}async function publishConfigOptions(e){const n=(await sessionStateBlocks(e)).configOptions;if(n)return notifySessionUpdate({sessionId:e.id,update:{sessionUpdate:"config_option_update",configOptions:n}}),n}async function switchModel(e,n){const o=e.agent?.setModel;if(!o)throw acpFailure(wn.METHOD_NOT_FOUND,"This agent does not support model selection");if(e.prompting)throw acpFailure(wn.INVALID_REQUEST,"Cannot switch models while a prompt is running");const r=await(e.agent?.getModelState?.());if(r&&!r.availableModels.some(e=>e.modelId===n))throw acpFailure(wn.INVALID_PARAMS,`Unknown model: ${n}`);return await o.call(e.agent,n),log4(`session ${e.id} model -> ${n}`),publishConfigOptions(e)}function handleCancel2(e){const o=e?.sessionId?n.get(e.sessionId):void 0;o&&(log4(`session ${o.id} cancelled`),cancelSession(o))}function cancelSession(e){e.prompting&&(e.cancelled=!0);for(const n of[...e.pendingPermissionCancels])n();e.activeTurn?.interrupt()}function createInteraction(e){return{confirmTool:__name(async({toolName:n,input:o,risk:r})=>"allow"===await requestPermission(e,{toolName:n,input:o,...r?{risk:r}:{}})?"allow":"deny","confirmTool"),askQuestion:__name(n=>requestQuestions(e,n),"askQuestion")}}async function requestQuestions(e,n){const o=[];for(const[r,s]of n.questions.entries()){if(e.cancelled)return{answers:[]};const n=await requestQuestion(e,s);if(null===n)return{answers:[]};o.push({questionIndex:r,selectedOptions:[n]})}return{answers:o,disposition:"answered"}}async function requestQuestion(e,n){const o=pendingToolCallIdFor(e.pendingToolCalls,{toolName:"ask_user_question",input:{}})??"question_"+ ++c,r=n.options.map((e,n)=>({optionId:`option_${n}`,name:e.description?`${e.label}: ${e.description}`:e.label,kind:"allow_once"})),s=await askClient(e,{toolCall:{toolCallId:o,title:n.header?`${n.header}: ${n.question}`:n.question,kind:"other",status:"pending",rawInput:{question:n.question,options:n.options.map(e=>e.label)}},options:r});if("cancelled"===s)return null;const a=Number(/^option_(\d+)$/.exec(s.optionId)?.[1]);return n.options[a]?.label??null}async function requestPermission(e,n){if(e.cancelled)return"cancelled";const o=void 0!==n.risk;if(!o&&e.alwaysAllowed.has(n.toolName))return"allow";if(!o&&e.alwaysRejected.has(n.toolName))return"reject";const r=pendingToolCallIdFor(e.pendingToolCalls,n);r&&(e.pendingToolCalls=e.pendingToolCalls.filter(e=>e.toolCallId!==r));const s=r??"perm_"+ ++c,a=toolLocationsFor(n.toolName,n.input),i=await askClient(e,{toolCall:{toolCallId:s,title:toolTitleFor(n.toolName,n.input),kind:toolKindFor(n.toolName),status:"pending",rawInput:rawInputFor(n.toolName,n.input,{cwd:e.cwd}),...a.length>0?{locations:a}:{}},options:o?Tn:En,...n.risk?{_meta:{risk:n.risk}}:{}});return"cancelled"===i?"cancelled":"allow_always"===i.optionId?(o||e.alwaysAllowed.add(n.toolName),"allow"):"reject_always"===i.optionId?(o||e.alwaysRejected.add(n.toolName),"reject"):"allow_once"===i.optionId?"allow":"reject"}async function askClient(e,n){const o=sendRequest(bn.SESSION_REQUEST_PERMISSION,{sessionId:e.id,...n});let r=__name(()=>{},"cancelHook");const s=new Promise(n=>{r=__name(()=>n("cancelled"),"cancelHook"),e.pendingPermissionCancels.add(r)});try{const n=await Promise.race([o,s]);if("cancelled"===n||e.cancelled)return"cancelled";if(n.error)return"cancelled";const r=n.result?.outcome;return r&&"cancelled"!==r.outcome?{optionId:r.optionId}:"cancelled"}finally{e.pendingPermissionCancels.delete(r)}}function notifySessionUpdate(e){write({jsonrpc:"2.0",method:bn.SESSION_UPDATE,params:e})}function sendRequest(e,n){const o=++i;return new Promise(r=>{s.set(o,r),write({jsonrpc:"2.0",id:o,method:e,params:n})})}function respondResult(e,n){write({jsonrpc:"2.0",id:e,result:n})}function respondError(e,n,o,r){write({jsonrpc:"2.0",id:e,error:{code:n,message:o,...void 0!==r?{data:r}:{}}})}function write(n){e.output.write(serializeMessage(n))}function requireSession(e){const o=e?n.get(e):void 0;if(!o)throw acpFailure(wn.INVALID_PARAMS,`Unknown session: ${e??"(missing sessionId)"}`);return o}return __name(track,"track"),__name(dispatchRequest,"dispatchRequest"),__name(handleInitialize,"handleInitialize"),__name(handleAuthenticate,"handleAuthenticate"),__name(openSession,"openSession"),__name(attachSession,"attachSession"),__name(handleNewSession,"handleNewSession"),__name(handleLoadSession,"handleLoadSession"),__name(handleResumeSession,"handleResumeSession"),__name(handleListSessions,"handleListSessions"),__name(handleCloseSession,"handleCloseSession"),__name(sessionStateBlocks,"sessionStateBlocks"),__name(publishAvailableCommands,"publishAvailableCommands"),__name(onAgentEvent,"onAgentEvent"),__name(handlePrompt,"handlePrompt"),__name(servePrompt,"servePrompt"),__name(publishContextUsage,"publishContextUsage"),__name(promptResult,"promptResult"),__name(handleSetMode,"handleSetMode"),__name(handleSetModel,"handleSetModel"),__name(handleSetConfigOption,"handleSetConfigOption"),__name(switchEffort,"switchEffort"),__name(publishConfigOptions,"publishConfigOptions"),__name(switchModel,"switchModel"),__name(handleCancel2,"handleCancel"),__name(cancelSession,"cancelSession"),__name(createInteraction,"createInteraction"),__name(requestQuestions,"requestQuestions"),__name(requestQuestion,"requestQuestion"),__name(requestPermission,"requestPermission"),__name(askClient,"askClient"),__name(notifySessionUpdate,"notifySessionUpdate"),__name(sendRequest,"sendRequest"),__name(respondResult,"respondResult"),__name(respondError,"respondError"),__name(write,"write"),__name(requireSession,"requireSession"),{start:start}}function acpFailure(e,n,o){return Object.assign(new Error(n),{name:"AcpFailure",acp:{code:e,...void 0!==o?{data:o}:{}}})}function isAcpFailure(e){return e instanceof Error&&"acp"in e}function isToolCallTerminalEvent(e){return"tool_completed"===e.type||"tool_errored"===e.type||"tool_denied"===e.type||"tool_hook_blocked"===e.type}function pendingToolCallIdFor(e,n){const o=e.filter(e=>e.toolName===n.toolName),r=JSON.stringify(n.input),s=o.find(e=>JSON.stringify(e.input)===r);return s?.toolCallId??o[0]?.toolCallId??null}function promptPart(e){if("text"===e.type)return{text:e.text};if("resource_link"===e.type)return{text:`@${mentionPathOf(e.uri)}`};if("resource"===e.type){const n=e.resource;if(!n?.text)return null;const o=lineFragmentOf(n.uri??"");return{text:`<context uri="${n.uri??""}"${o?` line="${o}"`:""}>\n${n.text}\n</context>`}}if("image"===e.type){const{data:n,mimeType:o}=e;return n&&o?{image:{type:"image",source:{type:"base64",media_type:o,data:n}}}:null}return null}function mentionPathOf(e){if(e.startsWith("file:"))try{return g(e)}catch{return e}if(e.startsWith("zed:"))try{return new URL(e).searchParams.get("path")??e}catch{return e}return e}function lineFragmentOf(e){const n=/#L(\d+)/.exec(e);return n?.[1]??null}function promptContent(e){const n=e.map(promptPart),o=n.flatMap(e=>e&&"text"in e?[e.text]:[]).join("\n\n"),r=n.flatMap(e=>e&&"image"in e?[e.image]:[]);return[...o.trim()?[{type:"text",text:o}]:[],...r]}function parseSlashCommand(e){if(1!==e.length)return null;const n=e[0];if(!n||"text"!==n.type)return null;const o=n.text.trim();if(!o.startsWith("/")||o.includes("\n"))return null;const r=/^\/([A-Za-z0-9_:-]+)\s*([\s\S]*)$/.exec(o);return r?.[1]?{name:r[1],rawArguments:r[2]??""}:null}function isThinkingEffort(e){return"string"==typeof e&&Object.hasOwn(xn,e)}function apiEnvFromFlags(e){return e.includes("--local")?"local":e.includes("--staging")?"staging":void 0}function apiEnvFromEnvVar(e){const n=e.COMMANDCODE_API_ENV;return"local"===n||"staging"===n?n:"prod"===n?"prod":void 0}function resolveApiEnvFromArgs(e){return apiEnvFromFlags(e)??"prod"}function resolveApiEnvFlag(e){return"local"===e?"--local":"staging"===e?"--staging":""}function getApiEnv(e={}){const n=e.args??process.argv??[],o=e.env??process.env;return apiEnvFromFlags(n)??apiEnvFromEnvVar(o)??"prod"}function getApiEnvFlag(e={}){return resolveApiEnvFlag(e.apiEnv??getApiEnv(e))}function resolveLocalOffset(e){const n=Number(e.PORT_OFFSET);if(Number.isFinite(n))return n;try{let e=process.cwd();const{root:n}=s(e);for(;;){const s=o(e,".commandcode","dev-ports.json");if(L(s)){const e=JSON.parse(D(s,"utf8"));if(Number.isFinite(e.offset))return e.offset;break}if(e===n)break;e=r(e)}}catch{}return 0}function resolveApiBaseUrl(e){return e.sandbox&&e.customApiUrl?e.customApiUrl:e.local?`http://localhost:${An+(e.localPortOffset??0)}`:e.staging?In.staging:In.prod}function getApiBaseUrl(e={}){const n=e.env??process.env,o=getApiEnv({args:e.argv??process.argv,env:n}),r="local"===o;return resolveApiBaseUrl({sandbox:"true"===n.COMMANDCODE_SANDBOX,customApiUrl:n.COMMANDCODE_API_URL,local:r,staging:"staging"===o,localPortOffset:r?resolveLocalOffset(n):0})}function formatDate(e=new Date){return e.toISOString().split("T")[0]}function delay(e){return new Promise(n=>setTimeout(n,e))}function capitalize(e){return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}function parseJSON(e){try{return JSON.parse(e)}catch{return null}}function isWindowsAbsolutePath(e){return/^[A-Za-z]:[\\/]/.test(e)}function formatTime(e){return e<60?`${e}s`:`${Math.floor(e/60)}m ${e%60}s`}function formatTokens(e){return e<1e3?`${e} tokens`:`${(e/1e3).toFixed(1)}k tokens`}function formatStatusTokenCount(e){return e<1e3?`${e}`:`${(e/1e3).toFixed(1)}k`}function formatElapsedMs(e){return e<6e4?`${Math.floor(e/1e3)}s`:`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`}function resolveBehaviorProfile(e){return On.get(e)}function isRecord(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function isNonEmptyString(e){return"string"==typeof e&&e.length>0}function isStringOrNull(e){return null===e||"string"==typeof e}function isStringArray(e){return Array.isArray(e)&&e.every(e=>"string"==typeof e)}function isStringArrayOrNull(e){return null===e||isStringArray(e)}function isPositiveInteger(e){return"number"==typeof e&&Number.isInteger(e)&&e>0}function isStringRecord(e){return isRecord(e)&&Object.values(e).every(isNonEmptyString)}function parseDisplay(e){const{name:n,value:o}=e;if(!isRecord(o))return;const{label:r,description:s,group:a,order:i,badge:l,notice:c}=o;return isNonEmptyString(r)&&"string"==typeof s&&"string"==typeof a&&"number"==typeof i&&Number.isFinite(i)&&isStringOrNull(l)&&isStringOrNull(c)?{name:n,label:r,description:s,group:a,order:i,badge:l,notice:c}:void 0}function isRate(e){return"number"==typeof e&&Number.isFinite(e)&&e>=0}function isOptionalRate(e){return void 0===e||isRate(e)}function parseRates(e){if(!isRecord(e))return;const{inputCost:n,outputCost:o,cacheReadCost:r,cacheWriteCost:s,cacheWrite1hCost:a}=e;return isRate(n)&&isRate(o)&&isRate(r)&&isOptionalRate(s)&&isOptionalRate(a)?{inputCost:n,outputCost:o,cacheReadCost:r,...void 0===s?{}:{cacheWriteCost:s},...void 0===a?{}:{cacheWrite1hCost:a}}:void 0}function parseContextTier(e){if(!isRecord(e))return;const{maxContext:n}=e;if(void 0!==n&&!isPositiveInteger(n))return;const o=parseRates(e.rates);return o?{...void 0===n?{}:{maxContext:n},rates:o}:void 0}function isOrderedTierList(e){if(void 0!==e[e.length-1]?.maxContext)return!1;const n=e.slice(0,-1);return n.every((e,o)=>{if(void 0===e.maxContext)return!1;const r=0===o?0:n[o-1]?.maxContext??0;return e.maxContext>r})}function parseContextTiers(e){if(!Array.isArray(e)||0===e.length)return;const n=e.map(parseContextTier).filter(e=>void 0!==e);return n.length===e.length&&isOrderedTierList(n)?n:void 0}function parsePricing(e){const n=parseRates(e);if(!n||!isRecord(e))return;if(void 0===e.contextTiers)return n;const o=parseContextTiers(e.contextTiers);return o?{...n,contextTiers:o}:void 0}function parseModel(e){if(!isRecord(e))return{bad:"model is not an object"};const{id:n,name:o,context_length:r,aliases:s,hidden:a,maxOutputTokens:i,inputModalities:l,reasoningEfforts:c,behaviorProfile:d,zdr:u,category:m,minimumPlan:p}=e;if(!isNonEmptyString(n))return{bad:"model.id"};if(!isNonEmptyString(o))return{bad:`${n}.name`};const g=parseDisplay({name:o,value:e.display});if(!g)return{bad:`${n}.display`};if(!isStringArray(s))return{bad:`${n}.aliases`};if(void 0!==a&&"boolean"!=typeof a)return{bad:`${n}.hidden`};if(!isPositiveInteger(r))return{bad:`${n}.context_length`};if(null!==i&&!isPositiveInteger(i))return{bad:`${n}.maxOutputTokens`};if(!isStringArrayOrNull(l))return{bad:`${n}.inputModalities`};if(!isStringArrayOrNull(c))return{bad:`${n}.reasoningEfforts`};if(!isNonEmptyString(d))return{bad:`${n}.behaviorProfile`};if("boolean"!=typeof u)return{bad:`${n}.zdr`};if(!isStringOrNull(m))return{bad:`${n}.category`};if(void 0!==p&&!isStringOrNull(p))return{bad:`${n}.minimumPlan`};const h=parsePricing(e.pricing);return{model:{id:n,aliases:s,display:g,...void 0===a?{}:{hidden:a},contextWindow:r,maxOutputTokens:i,inputModalities:l,reasoningEfforts:c,behaviorProfile:d,zdr:u,category:m,...void 0===h?{}:{pricing:h},...void 0===p?{}:{minimumPlan:p}}}}function parseRoles(e){if(isRecord(e)&&isStringRecord(e.features)&&isStringRecord(e.zdrFeatures))return{...isNonEmptyString(e.default)?{default:e.default}:{},features:e.features,zdrFeatures:e.zdrFeatures}}function firstClaimedName(e){const{model:n,claimed:o}=e,r=[n.id,...n.aliases];return r.find((e,n)=>r.indexOf(e)!==n)??r.find(e=>o.has(e))}function modelIdOf(e){return isRecord(e)&&isNonEmptyString(e.id)?e.id:void 0}function parseModelCatalog(e){if(!isRecord(e))return{ok:!1,reason:"body is not an object"};if(e.schemaVersion!==Fn)return{ok:!1,reason:"unsupported schemaVersion"};if(!isNonEmptyString(e.catalogVersion))return{ok:!1,reason:"catalogVersion"};if(!isPositiveInteger(e.refreshAfterSeconds))return{ok:!1,reason:"refreshAfterSeconds"};const n=parseRoles(e.roles);if(!n)return{ok:!1,reason:"roles"};if(!Array.isArray(e.data))return{ok:!1,reason:"data"};const o=[],r=[],s=new Set;for(const n of e.data){const e=parseModel(n);if("bad"in e){const o=modelIdOf(n);r.push({...void 0===o?{}:{id:o},reason:e.bad});continue}const a=firstClaimedName({model:e.model,claimed:s});if(a)r.push({id:e.model.id,reason:`duplicate id ${a}`});else{for(const n of[e.model.id,...e.model.aliases])s.add(n);o.push(e.model)}}return 0===o.length?{ok:!1,reason:"no readable models"}:{ok:!0,catalog:{schemaVersion:Fn,catalogVersion:e.catalogVersion,refreshAfterSeconds:e.refreshAfterSeconds,roles:n,models:o},dropped:r}}function getEmbeddedModelCatalog(){if(_n)return _n;const e=JSON.parse(Nn),n=parseModelCatalog(e);if(!n.ok)throw new Error(`embedded model catalog is unreadable: ${n.reason}`);return _n={generatedAt:Ln,body:e,catalog:n.catalog}}function findCatalogModel(e){const{catalog:n,modelId:o}=e,r=__name(e=>[e.id,...e.aliases],"names"),s=n.models.find(e=>r(e).includes(o));if(s)return s;const a=o.toLowerCase();return n.models.find(e=>r(e).some(e=>e.toLowerCase()===a))}function clientUpdateReason(e){if(!resolveBehaviorProfile(e.behaviorProfile))return"unknown-behavior-profile"}function resolveCatalogModelStatus(e){const{effective:n,planAccess:o}=e,r=findCatalogModel({catalog:n.catalog,modelId:e.modelId});if(!r)return{state:"not-in-catalog"};const s=clientUpdateReason(r);return s?{state:"client-update-required",reason:s}:r.hidden||"hidden"===o?.state?{state:"hidden"}:"locked"===o?.state?{state:"locked",...void 0===o.reasonCode?{}:{reasonCode:o.reasonCode},...void 0===o.notice?{}:{notice:o.notice}}:{state:"selectable"}}function specCategory(e){if("opensource"===e||"premium"===e)return e}function getCatalogModelCategory(e){const{catalog:n,modelId:o}=e,r=findCatalogModel({catalog:n,modelId:o});if(r)return specCategory(r.category)}function toSpec(e){const{id:n,model:o,catalogVersion:r}=e,s=specCategory(o.category);return{id:n,contextWindow:o.contextWindow,reasoningEfforts:o.reasoningEfforts??[],...null===o.inputModalities?{}:{inputModalities:o.inputModalities},behaviorProfile:o.behaviorProfile,catalogVersion:r,zdr:o.zdr,...void 0===s?{}:{category:s},...o.hidden?{hidden:!0}:{}}}function buildCatalogModelSpecs(e){const n=e.models.map(n=>toSpec({id:n.id,model:n,catalogVersion:e.catalogVersion})),o=new Set(n.map(e=>e.id)),r=e.models.flatMap(n=>n.aliases.filter(e=>!o.has(e)).map(o=>toSpec({id:o,model:n,catalogVersion:e.catalogVersion})));return[...n,...r]}function isKnownCatalogModel(e){return e.effective.specs.some(n=>n.id===e.modelId)}function buildRemoteEffectiveCatalog(e){const{catalog:n,source:o}=e;return{source:o,catalog:n,catalogVersion:n.catalogVersion,specs:buildCatalogModelSpecs(n),remoteDisabled:!1}}function getSnapshotEffectiveCatalog(e){const{remoteDisabled:n}=e,o=$n.get(n);if(o)return o;const{catalog:r}=getEmbeddedModelCatalog(),s=$n.get(!n)?.specs??buildCatalogModelSpecs(r),a={source:"snapshot",catalog:r,catalogVersion:r.catalogVersion,specs:s,remoteDisabled:n};return $n.set(n,a),a}function runnableRoleTarget(e){const{effective:n,catalog:o,modelId:r}=e,s=resolveCatalogModelStatus({effective:n,modelId:r});if("selectable"===s.state||"hidden"===s.state)return findCatalogModel({catalog:o,modelId:r})}function resolveCatalogDefaultModel(e){const{catalog:n}=e,o=n.roles.default;if(!o)return;const r=runnableRoleTarget({effective:e,catalog:n,modelId:o});return r&&!r.hidden?r.id:void 0}function resolveCatalogFallbackDefaultModel(e){const{effective:n,embeddedDefault:o}=e,r=__name(e=>"selectable"===resolveCatalogModelStatus({effective:n,modelId:e}).state,"selectable");if(r(o)){const e=findCatalogModel({catalog:n.catalog,modelId:o});return e?.id??o}const s=[...n.catalog.models].sort((e,n)=>e.display.order-n.display.order).find(e=>r(e.id));return s?.id??o}function resolveCatalogFeatureOverride(e){const{effective:n,modelId:o}=e,{catalog:r}=n,s=runnableRoleTarget({effective:n,catalog:r,modelId:o});if(s)return{id:s.id,zdr:s.zdr,textOnly:null!==s.inputModalities&&!s.inputModalities.includes("image")}}function buildCatalogFeatureRoles(e){const{catalog:n}=e,o=__name(o=>runnableRoleTarget({effective:e,catalog:n,modelId:o}),"target"),r={},s={};for(const[e,a]of Object.entries(n.roles.features)){const n=o(a);n&&(r[e]=n.id,n.zdr&&(s[e]=n.id))}for(const[e,r]of Object.entries(n.roles.zdrFeatures)){const n=o(r);n?.zdr&&(s[e]=n.id)}return{features:r,zdrFeatures:s}}function resolveCatalog(e){return e??getSnapshotEffectiveCatalog({remoteDisabled:!1})}function resolveKnownCatalogModel(e){const{model:n}=e;if(!n)return;const{catalog:o}=resolveCatalog(e.catalog),r=findCatalogModel({catalog:o,modelId:n});if(r)return r;const s=n.replace(Un,"");return s!==n?findCatalogModel({catalog:o,modelId:s}):void 0}function canonicalizeModelId(e){return resolveKnownCatalogModel(e)?.id??e.model}function isKnownTextOnlyModel(e,n){const o=resolveKnownCatalogModel({model:e,catalog:n})?.inputModalities;return null!=o&&!o.includes("image")}function supportsDeferredTools(e,n){const o=resolveKnownCatalogModel({model:e,catalog:n})?.behaviorProfile;return void 0===o||(resolveBehaviorProfile(o)?.supportsDeferredTools??!1)}function getContextLimit(e,n){return getKnownModelContextWindow(e,n)??Bn}function getKnownModelContextWindow(e,n){return resolveKnownCatalogModel({model:e,catalog:n})?.contextWindow}function createModelRegistry(e){const n=new Map(e.models.map(e=>[e.id,e]));let o,r=new Map;const s=e.gatewayModels??(()=>getCurrentEffectiveCatalog().specs),a=__name(e=>{const n=s();return n!==o&&(o=n,r=new Map(n.map(e=>[e.id,e]))),r.get(e)},"gatewaySpec"),i=__name(e=>n.get(e)??a(e),"lookup"),l=e.defaultContextLimit??Bn,c=__name(e=>{if(void 0===e?.provider)return;if(!jn.has(e.provider))return;const n=a(e.id)?.behaviorProfile;return void 0!==n&&resolveBehaviorProfile(n)?n:void 0},"directLaneCatalogProfile"),d=__name(e=>{const n=m(e),o=n?.behaviorProfile??c(n);return void 0===o?g(e):resolveBehaviorProfile(o)?o:void 0},"behaviorProfileName"),u=__name(e=>{const n=d(e);return void 0===n?void 0:resolveBehaviorProfile(n)},"behaviorProfile"),m=__name(n=>{const o=i(n);if(o)return o;const r=e.canonicalize?.({model:n});return r&&r!==n?i(r):void 0},"find"),p=__name(e=>{const n=getSnapshotEffectiveCatalog({remoteDisabled:!1}),o=resolveKnownCatalogModel({model:e,catalog:n})?.id;if(void 0!==o)return n.specs.find(e=>e.id===o)},"catalogSpec"),g=__name(e=>{const n=p(e)?.behaviorProfile;return void 0!==n&&resolveBehaviorProfile(n)?n:knownModelUsesInterleavedThinking(e)?Wn:Rn},"undeclaredProfileName"),h=__name(e=>m(e)?.reasoningEfforts??p(e)?.reasoningEfforts,"declaredEfforts");return{getContextLimit:__name(({model:e})=>m(e)?.contextWindow??p(e)?.contextWindow??l,"getContextLimit"),supportsVision:__name(({model:e})=>{const n=m(e)?.inputModalities??p(e)?.inputModalities;return void 0===n||n.includes("image")},"supportsVision"),supportsThinking:__name(({model:e})=>(h(e)?.length??0)>0,"supportsThinking"),getSupportedEfforts:__name(({model:e})=>{const n=h(e);return void 0===n||0===n.length?null:n},"getSupportedEfforts"),usesInterleavedThinking:__name(({mod