command-code 0.40.17 → 0.41.0

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/dist/index.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import*as e from"path";import t,{join as n,dirname as r,parse as o,relative as s,isAbsolute as a,extname as i,win32 as l,resolve as u,basename as d}from"path";import{fileURLToPath as m,pathToFileURL as g,URL as h}from"url";import f,{z as y,ZodError as w}from"zod";import*as S from"fs";import E,{existsSync as k,readFileSync as C,promises as v,constants as T,mkdirSync as x,writeFileSync as P,statSync as A,appendFileSync as I,readdirSync as M,createReadStream as R}from"fs";import*as _ from"os";import D,{homedir as N,tmpdir as $}from"os";import{Jimp as L,JimpMime as O}from"jimp";import*as F from"fs/promises";import U,{mkdir as B,writeFile as j,rm as H,readFile as W,unlink as G,readdir as z}from"fs/promises";import*as q from"http";import{createServer as V}from"http";import*as K from"crypto";import Y,{randomUUID as Q,createHash as J,randomBytes as X}from"crypto";import Z from"open";import ee from"gray-matter";import"dotenv/config";import te from"dedent";import ne from"chalk";import re from"log-symbols";import oe from"@opentelemetry/sdk-node";import se from"@opentelemetry/exporter-trace-otlp-http";import ae from"@opentelemetry/resources";import ie from"@opentelemetry/semantic-conventions";import le from"@opentelemetry/sdk-trace-node";import ce,{memo as ue,useState as de,useRef as me,useEffect as pe,useMemo as ge,useCallback as he,useLayoutEffect as fe}from"react";import{Box as ye,Text as we,Static as Se,useInput as Ee,useStdout as be,render as ke,useApp as Ce,Newline as ve}from"ink";import Te from"picocolors";import xe from"strip-ansi";import{isValidTraceId as Pe,trace as Ae,context as Ie,SpanKind as Me,SpanStatusCode as Re}from"@opentelemetry/api";import{v4 as _e}from"uuid";import{spawn as De,execSync as Ne,exec as $e,execFile as Le,execFileSync as Oe,spawnSync as Fe}from"child_process";import{Command as Ue,Option as Be,InvalidArgumentError as je}from"commander";import He from"figures";import We from"ora";import*as Ge from"net";import ze from"net";import qe from"tls";import Ve from"stream";import{performance as Ke}from"perf_hooks";import Ye from"@sindresorhus/slugify";import{EventEmitter as Qe}from"events";import{minimatch as Je}from"minimatch";import{glob as Xe}from"glob";import Ze from"ignore";import{parse as et,quote as tt}from"shell-quote";import*as nt from"@clack/prompts";import{multiselect as rt,confirm as ot,note as st,cancel as at,select as it,isCancel as lt,password as ct}from"@clack/prompts";import ut from"ink-spinner";import{createRequire as dt}from"module";import mt from"ansi-escapes";import pt from"string-width";import*as gt from"readline";import ht from"readline";import ft from"semver";import{promisify as yt}from"util";import{inflateRawSync as wt}from"zlib";import St from"strip-json-comments";import Et from"terminal-link";import bt from"ink-select-input";import{Marked as kt}from"marked";import Ct from"marked-terminal";import*as vt from"diff";import Tt from"is-unicode-supported";import xt from"open-editor";import{wrapAnsi as Pt}from"fast-wrap-ansi";import*as At from"process";var It,Mt,Rt,_t,Dt,Nt,$t,Lt,Ot,Ft,Ut,Bt,jt,Ht,Wt,Gt,zt,qt,Vt,Kt,Yt,Qt,Jt,Xt,Zt,en,tn,nn,rn,on,sn,an,ln,cn,un,dn=Object.defineProperty,mn=Object.getOwnPropertyNames,__name=(e,t)=>dn(e,"name",{value:t,configurable:!0}),__esm=(e,t)=>function __init(){return e&&(t=(0,e[mn(e)[0]])(e=0)),t},__export=(e,t)=>{for(var n in t)dn(e,n,{get:t[n],enumerable:!0})},pn=__esm({"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.12_tsx@4.21.0_typescript@5.9.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"(){}});function getBinaryCommand(){return"win32"===process.platform?"cmdc":"cmd"}function getModelCategory({provider:e,model:t}){if(e===Lt.VERCEL_AI_GATEWAY)return Bt.has(t)?"premium":"opensource";if(e===Lt.CAI||e===Lt.CLOUDFLARE_AI_GATEWAY||e===Lt.OPENROUTER)return"opensource";const n=jt[e];if(!n)return null;const r=`${e}:${t}`,o=n.find(e=>e.id===r);return o?.category??null}function getPlanDisplayName(e){return e.replace("individual-","").replace("teams-","Teams ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function getMinimumPlanForModel({fullModelId:e,category:t}){for(const n of zt){const r=Gt[n];if(!r)continue;const o=r.allowedCategories.includes(t),s=r.blockedModels?.includes(e)??!1;if(o&&!s)return n}return null}function buildModelGroups(e){const t=Object.values(Zt).filter(e=>!e.hidden),n=[];for(const r of Object.values(sn)){if(!("co"===e?r.visibleInCoMode:r.visibleInNormalMode))continue;const o=t.filter(e=>r.supportedModelProviders.includes(e.provider));o.length>0&&n.push({providerId:r.id,label:r.label,models:o})}return n}var gn,hn,fn,yn,wn=__esm({"../shared/src/constants.ts"(){pn(),Mt="--xco",Rt={INTERNAL_TEAM_FLAG_HEADER:`x-${(It="--co").replace("--","")}-flag`,OAUTH_TOKEN:"x-oauth-token",OAUTH_PROVIDER:"x-oauth-provider",PROJECT_SLUG:"x-project-slug",TASTE_LEARNING:"x-taste-learning",TASTE_USAGE:"x-taste-usage",CLI_ENVIRONMENT:"x-cli-environment",CLI_VERSION:"x-command-code-version",OSS_PRIMARY_PROVIDER:"x-oss-primary-provider",SESSION_ID:"x-session-id",SYSTEM_PROMPT_BREAKDOWN:"x-system-prompt-breakdown",CMD_ZDR:"x-cmd-zdr"},_t="cli",Dt={V1:{CHAT_COMPLETIONS:"/provider/v1/chat/completions",MODELS:"/provider/v1/models",MESSAGES:"/provider/v1/messages"},ALPHA:{GENERATE:"/alpha/generate",WHOAMI:"/alpha/whoami",NAMESPACES:"/alpha/namespaces",AGENT:{GENERATE:"/alpha/agent/generate"},WEB_SEARCH:"/alpha/web-search",WEB_FETCH:"/alpha/web-fetch",FINGERPRINT:{RECORD:"/alpha/fingerprint/record"},SANDBOX:{START:"/alpha/sandbox/start",STREAM:"/alpha/sandbox/stream",STATUS:"/alpha/sandbox/status",STOP:"/alpha/sandbox/stop",SESSIONS:"/alpha/sandbox/sessions"},SHARE:{CREATE:"/alpha/share/create",DELETE:"/alpha/share/delete",DATA:"/alpha/share/data",APPEND:"/alpha/share/append",CONNECT:"/alpha/share/connect"},DEVREL_THREAD:{CREATE:"/alpha/devrel-thread/create",DELETE:"/alpha/devrel-thread/delete",DATA:"/alpha/devrel-thread/data",UPDATE:"/alpha/devrel-thread/update"},TASTE:{GET:"/alpha/taste/:projectSlug",UPDATE:"/alpha/taste/:projectSlug/update",DELETE:"/alpha/taste/:projectSlug",LEARN:"/alpha/learn"},BILLING:{CREDITS:"/alpha/billing/credits",SUBSCRIPTIONS:"/alpha/billing/subscriptions"},USAGE:{SUMMARY:"/alpha/usage/summary"},LIFECYCLE_EVENTS:{TRACK:"/alpha/lifecycle-events"},COURSES_LEAD:"/alpha/courses-lead",CONVERSIONS:{TRACK:"/alpha/conversions/track"},CONSENT:{SET:"/alpha/consent/set"}},BETA:{TASTE:{PACKAGES:{UPLOAD:"/beta/taste/packages/:namespace",LIST:"/beta/taste/packages",GET:"/beta/taste/packages/:namespace/:packageName",FILES:"/beta/taste/packages/:namespace/:packageName/files",DOWNLOAD:"/beta/taste/packages/:namespace/:packageName/download",DELETE:"/beta/taste/packages/:namespace/:packageName"}}},INTERNAL:{ADMIN:{USERS:"/internal/admin/users",GRANT_CREDITS:"/internal/admin/grant-credits",ORGS:"/internal/admin/orgs",GRANT_ORG_CREDITS:"/internal/admin/grant-org-credits",ENTITY_TYPE:"/internal/admin/entity-type",BAN_USER:"/internal/admin/ban-user",BAN_ORG:"/internal/admin/ban-org",UNBAN_USER:"/internal/admin/unban-user",UNBAN_ORG:"/internal/admin/unban-org",DELETE_USER:"/internal/admin/delete-user",DELETE_ORG:"/internal/admin/delete-org",MIGRATE:{PLAN_IDS:"/internal/admin/migrations/plan-ids"}},PROFILE:{GET:"/internal/profile/:login",PACKAGES:"/internal/profile/:login/packages",PACKAGE_GET:"/internal/profile/:login/packages/:packageName",PACKAGE_DOWNLOAD:"/internal/profile/:login/packages/:packageName/download",FOLLOWERS:"/internal/profile/:login/followers",FOLLOWING:"/internal/profile/:login/following"},API_KEYS:{CREATE:"/internal/api-keys/create",LIST:"/internal/api-keys/list",DELETE:"/internal/api-keys/delete"},FINGERPRINT:{RECORD:"/internal/fingerprint/record"},BILLING:{CREDITS:{GET:"/internal/billing/credits"},CUSTOMERS:{GET:"/internal/billing/customers",UPSERT:"/internal/billing/customers",SETUP_INTENT:"/internal/billing/customers/setup-intent",PAYMENT_METHOD:"/internal/billing/customers/payment-method",SET_DEFAULT_PAYMENT_METHOD:"/internal/billing/customers/payment-method/set-default",INVOICES:"/internal/billing/customers/invoices"},CHECKOUT_ELIGIBILITY:"/internal/billing/checkout/eligibility",SUBSCRIPTIONS:{GET:"/internal/billing/subscriptions"},WEBHOOK:"/internal/billing/webhook"},ORGS:{LIST:"/internal/orgs",GET:"/internal/orgs/:login",CREATE:"/internal/orgs",UPDATE:"/internal/orgs/:id",DELETE:"/internal/orgs/:id",AVATAR:"/internal/orgs/:id/avatar",MEMBERS:{LIST:"/internal/orgs/:id/members",ADD:"/internal/orgs/:id/members",UPDATE:"/internal/orgs/:id/members/:userId",REMOVE:"/internal/orgs/:id/members/:userId"},INVITATIONS:{LIST:"/internal/orgs/:id/invitations",SEND:"/internal/orgs/:id/invitations",ACCEPT:"/internal/invitations/:token/accept",CANCEL:"/internal/invitations/:id"},FOLLOW:"/internal/orgs/:orgId/follow",FOLLOWERS:"/internal/orgs/:orgId/followers"},USER:{SETTINGS:"/internal/user/settings",AVATAR:"/internal/user/avatar",FOLLOW:"/internal/users/:userId/follow",FOLLOWERS:"/internal/users/:userId/followers",FOLLOWING:"/internal/users/:userId/following"},USAGE:{LIST:"/internal/usage",SUMMARY:"/internal/usage/summary",CHARTS:"/internal/usage/charts"},TASTE:{PACKAGES:{LIST:"/internal/taste/packages",BATCH:"/internal/taste/packages",GET:"/internal/taste/packages/:namespace/:packageName",FILES:"/internal/taste/packages/:namespace/:packageName/files",DOWNLOAD:"/internal/taste/packages/:namespace/:packageName/download",DELETE:"/internal/taste/packages/:namespace/:packageName",UPDATE:"/internal/taste/packages/:namespace/:packageName/update",STAR:"/internal/taste/packages/:namespace/:packageName/star",PIN:"/internal/taste/packages/:namespace/:packageName/pin"}}}},Nt={ALPHA:{TASTE:{GET:new RegExp("/alpha/taste/[a-z0-9-]+"),UPDATE:new RegExp("/alpha/taste/[a-z0-9-]+/update"),DELETE:new RegExp("/alpha/taste/[a-z0-9-]+/rules/[a-z0-9-]+"),LIST:new RegExp("/alpha/taste/[a-z0-9-]+/rules")},PACKAGES:{FILES:new RegExp("/alpha/v1/taste/packages/[a-zA-Z0-9_-]+/files"),GET:new RegExp("/alpha/v1/taste/packages/[a-zA-Z0-9_-]+"),DOWNLOAD:new RegExp("/alpha/v1/taste/packages/[a-zA-Z0-9_-]+/download")}},BETA:{TASTE_PACKAGES:{UPLOAD:new RegExp("^/beta/taste/packages/[a-zA-Z0-9_-]+$"),FILES:new RegExp("/beta/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/files"),GET:new RegExp("/beta/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+"),DOWNLOAD:new RegExp("/beta/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/download")}},INTERNAL:{ORGS:{GET:new RegExp("/internal/orgs/[a-zA-Z0-9_-]+"),FOLLOW:new RegExp("/internal/orgs/[a-zA-Z0-9-]+/follow"),FOLLOWERS:new RegExp("/internal/orgs/[a-zA-Z0-9-]+/followers")},USER:{FOLLOW:new RegExp("/internal/users/[a-zA-Z0-9-]+/follow"),FOLLOWERS:new RegExp("/internal/users/[a-zA-Z0-9-]+/followers"),FOLLOWING:new RegExp("/internal/users/[a-zA-Z0-9-]+/following")},TASTE:{PACKAGES:{GET:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+"),FILES:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/files"),DOWNLOAD:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/download"),UPDATE:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/update"),STAR:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/star"),PIN:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/pin")}}}},Object.values(Nt.ALPHA.TASTE),Object.values(Nt.BETA.TASTE_PACKAGES),new RegExp("^/alpha/sandbox/status/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"),new RegExp("^/alpha/sandbox/stop/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"),new RegExp("^/alpha/sandbox/stream/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"),Dt.V1.CHAT_COMPLETIONS,Dt.V1.MESSAGES,Dt.ALPHA.GENERATE,Dt.ALPHA.AGENT.GENERATE,Dt.ALPHA.WHOAMI,Dt.ALPHA.WEB_SEARCH,Dt.ALPHA.WEB_FETCH,Dt.ALPHA.FINGERPRINT.RECORD,Dt.ALPHA.NAMESPACES,Dt.ALPHA.SANDBOX.START,Dt.ALPHA.SHARE.CREATE,Dt.ALPHA.SHARE.DELETE,Dt.ALPHA.SHARE.APPEND,Dt.ALPHA.DEVREL_THREAD.CREATE,Dt.ALPHA.DEVREL_THREAD.DELETE,Dt.ALPHA.DEVREL_THREAD.UPDATE,Dt.ALPHA.TASTE.LEARN,Dt.ALPHA.TASTE.DELETE,Dt.ALPHA.TASTE.GET,Dt.ALPHA.TASTE.UPDATE,Object.values(Dt.BETA.TASTE.PACKAGES),Dt.ALPHA.BILLING.CREDITS,Dt.ALPHA.BILLING.SUBSCRIPTIONS,Dt.ALPHA.USAGE.SUMMARY,Dt.ALPHA.LIFECYCLE_EVENTS.TRACK,Dt.INTERNAL.ADMIN.USERS,Dt.INTERNAL.ADMIN.ORGS,Dt.INTERNAL.ADMIN.ENTITY_TYPE,Dt.INTERNAL.USER.AVATAR,Dt.INTERNAL.USER.SETTINGS,Dt.INTERNAL.API_KEYS.LIST,Dt.INTERNAL.API_KEYS.CREATE,Dt.INTERNAL.API_KEYS.DELETE,Dt.INTERNAL.FINGERPRINT.RECORD,Dt.INTERNAL.USAGE.LIST,Dt.INTERNAL.USAGE.SUMMARY,Dt.INTERNAL.USAGE.CHARTS,Dt.INTERNAL.ADMIN.GRANT_CREDITS,Dt.INTERNAL.ADMIN.GRANT_ORG_CREDITS,Dt.INTERNAL.ADMIN.BAN_USER,Dt.INTERNAL.ADMIN.BAN_ORG,Dt.INTERNAL.ADMIN.UNBAN_USER,Dt.INTERNAL.ADMIN.UNBAN_ORG,Dt.INTERNAL.ADMIN.DELETE_USER,Dt.INTERNAL.ADMIN.DELETE_ORG,Dt.INTERNAL.BILLING.CREDITS.GET,Dt.INTERNAL.BILLING.CUSTOMERS.GET,Dt.INTERNAL.BILLING.CUSTOMERS.UPSERT,Dt.INTERNAL.BILLING.CUSTOMERS.SETUP_INTENT,Dt.INTERNAL.BILLING.CUSTOMERS.PAYMENT_METHOD,Dt.INTERNAL.BILLING.CUSTOMERS.SET_DEFAULT_PAYMENT_METHOD,Dt.INTERNAL.BILLING.CUSTOMERS.INVOICES,Dt.INTERNAL.BILLING.SUBSCRIPTIONS.GET,Dt.INTERNAL.BILLING.CHECKOUT_ELIGIBILITY,Dt.INTERNAL.ORGS.LIST,Dt.INTERNAL.ORGS.GET,Dt.INTERNAL.ORGS.CREATE,Dt.INTERNAL.ORGS.UPDATE,Dt.INTERNAL.ORGS.DELETE,Dt.INTERNAL.ORGS.MEMBERS.LIST,Dt.INTERNAL.ORGS.MEMBERS.ADD,Dt.INTERNAL.ORGS.MEMBERS.UPDATE,Dt.INTERNAL.ORGS.MEMBERS.REMOVE,Dt.INTERNAL.ORGS.INVITATIONS.LIST,Dt.INTERNAL.ORGS.INVITATIONS.SEND,Dt.INTERNAL.ORGS.INVITATIONS.ACCEPT,Dt.INTERNAL.ORGS.INVITATIONS.CANCEL,Dt.INTERNAL.TASTE.PACKAGES.LIST,Dt.INTERNAL.ADMIN.MIGRATE.PLAN_IDS,Object.values(Nt.INTERNAL.ORGS),Object.values(Nt.INTERNAL.USER),Object.values(Nt.INTERNAL.TASTE.PACKAGES),$t={INTERNAL:{PROFILE:{GET:new RegExp("/internal/profile/[a-zA-Z0-9_-]+"),PACKAGES:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/packages"),FOLLOWING:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/following"),FOLLOWERS:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/followers"),PACKAGE_GET:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/packages/[a-zA-Z0-9_-]+"),PACKAGE_DOWNLOAD:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/packages/[a-zA-Z0-9_-]+/download")}}},Object.values($t.INTERNAL.PROFILE),__name(getBinaryCommand,"getBinaryCommand"),Ot={"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"},Ft=[(Lt={ANTHROPIC:"anthropic",OPENAI:"openai",BASETEN:"baseten",VERCEL_AI_GATEWAY:"vercel-ai-gateway",CLOUDFLARE_AI_GATEWAY:"cloudflare-ai-gateway",CAI:"cai",OPENROUTER:"openrouter",SPIDER_WEB:"spider_web"}).CAI,Lt.VERCEL_AI_GATEWAY,Lt.BASETEN,Lt.CLOUDFLARE_AI_GATEWAY,Lt.OPENROUTER],Ut=Ft[0],Lt.ANTHROPIC,Lt.OPENAI,Bt=new Set(["google/gemini-3.5-flash","google/gemini-3.1-flash-lite","sakana/fugu-ultra"]),jt={[Lt.ANTHROPIC]:[{id:"anthropic:claude-sonnet-5",provider:"Anthropic",category:"premium",promptCost:2,completionCost:10,cacheWrite5mCost:2.5,cacheWrite1hCost:4,cacheHitCost:.2},{id:"anthropic:claude-sonnet-4-20250514",provider:"Anthropic",category:"premium",promptCost:3,completionCost:15,cacheWrite5mCost:3.75,cacheWrite1hCost:6,cacheHitCost:.3},{id:"anthropic:claude-sonnet-4-5-20250929",provider:"Anthropic",category:"premium",promptCost:3,completionCost:15,cacheWrite5mCost:3.75,cacheWrite1hCost:6,cacheHitCost:.3},{id:"anthropic:claude-opus-4-5-20251101",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-sonnet-4-6",provider:"Anthropic",category:"premium",promptCost:3,completionCost:15,cacheWrite5mCost:3.75,cacheWrite1hCost:6,cacheHitCost:.3},{id:"anthropic:claude-fable-5",provider:"Anthropic",category:"premium",promptCost:10,completionCost:50,cacheWrite5mCost:12.5,cacheWrite1hCost:20,cacheHitCost:1},{id:"anthropic:claude-opus-4-8",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-opus-4-7",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-opus-4-6",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-haiku-4-5-20251001",provider:"Anthropic",category:"premium",promptCost:1,completionCost:5,cacheWrite5mCost:1.25,cacheWrite1hCost:2,cacheHitCost:.1}],[Lt.OPENAI]:[{id:"openai:gpt-5.5",provider:"OpenAI",category:"premium",promptCost:5,completionCost:30,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.5},{id:"openai:gpt-5.4",provider:"OpenAI",category:"premium",promptCost:2.5,completionCost:15,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.25},{id:"openai:gpt-5.3-codex",provider:"OpenAI",category:"premium",promptCost:2,completionCost:8,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.5},{id:"openai:gpt-5.4-mini",provider:"OpenAI",category:"premium",promptCost:.75,completionCost:4.5,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.075}],[Lt.BASETEN]:[{id:"baseten:zai-org/GLM-5",provider:"Baseten",category:"opensource",promptCost:.95,completionCost:3.15,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:0},{id:"baseten:moonshotai/Kimi-K2.5",provider:"Baseten",category:"opensource",promptCost:.6,completionCost:3,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:0},{id:"baseten:moonshotai/Kimi-K2.6",provider:"Baseten",category:"opensource",promptCost:.95,completionCost:4,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.16},{id:"baseten:MiniMaxAI/MiniMax-M2.5",provider:"Baseten",category:"opensource",promptCost:.5,completionCost:2,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:0}],[Lt.VERCEL_AI_GATEWAY]:[],[Lt.OPENROUTER]:[]},__name(getModelCategory,"getModelCategory"),Ht={"individual-go":{premium:0,opensource:10,total:10},"individual-pro":{premium:15,opensource:15,total:30},"individual-provider":{premium:15,opensource:0,total:15},"individual-max":{premium:100,opensource:50,total:150},"individual-ultra":{premium:200,opensource:100,total:300},"teams-pro":{premium:40,opensource:0,total:40}},Wt={"individual-go":"Go","individual-pro":"Pro","individual-provider":"Provider","individual-max":"Max","individual-ultra":"Ultra","teams-pro":"Teams Pro"},Gt={"individual-go":{allowedCategories:["opensource"]},"individual-pro":{allowedCategories:["premium","opensource"],blockedModels:["anthropic:claude-fable-5","anthropic:claude-opus-4-8","anthropic:claude-opus-4-7","anthropic:claude-opus-4-6","anthropic:claude-opus-4-5-20251101","vercel-ai-gateway:sakana/fugu-ultra"]},"individual-provider":{allowedCategories:["premium","opensource"]},"individual-max":{allowedCategories:["premium","opensource"]},"individual-ultra":{allowedCategories:["premium","opensource"]},"teams-pro":{allowedCategories:["premium","opensource"]}},zt=["individual-go","individual-pro","individual-provider","individual-max","individual-ultra","teams-pro"],__name(getPlanDisplayName,"getPlanDisplayName"),__name(getMinimumPlanForModel,"getMinimumPlanForModel"),qt=[50,75,90],f.enum(["owner","admin","member"]),Vt={LEARN_TASTE:"learn-taste",TASTE:"taste",TERMINAL_SETUP:"terminal-setup"},Kt={MAX_PROMPT_TOKENS:25e3,MAX_PROMPT_CHARS:1e5,DB_PROMPT_MAX_WORDS:10},Yt=["active","trialing","past_due"],Qt="chatComplete",Jt="responses",Xt="MiniMaxAI/MiniMax-M3-Free",(Zt={SONNET_5:{id:"claude-sonnet-5",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Sonnet 5",name:"Claude Sonnet 5",description:"best combo of speed & intelligence (recommended)",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},SONNET_4_6:{id:"claude-sonnet-4-6",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Sonnet 4.6",name:"Claude Sonnet 4.6",description:"prev Sonnet, still fast & capable",reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},FABLE_5:{id:"claude-fable-5",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Fable 5",name:"Claude Fable 5",description:"most capable for demanding reasoning & long-horizon agents",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},OPUS_4_8:{id:"claude-opus-4-8",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Opus 4.8",name:"Claude Opus 4.8",description:"most intelligent Opus for agents and coding",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},OPUS_4_7:{id:"claude-opus-4-7",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Opus 4.7",name:"Claude Opus 4.7",description:"prev flagship, still strong for agents and coding",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},HAIKU_4_5:{id:"claude-haiku-4-5-20251001",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Haiku 4.5",name:"Claude Haiku 4.5",description:"fastest & most compact, great for quick tasks",contextWindow:2e5},GPT_5_5:{id:"gpt-5.5",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.5",name:"GPT-5.5",description:"latest frontier model for general complex work",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh"]},GPT_5_4:{id:"gpt-5.4",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.4",name:"GPT-5.4",description:"frontier model for general complex work",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh"],contextWindow:4e5},GPT_5_3_CODEX:{id:"gpt-5.3-codex",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.3 Codex",name:"GPT-5.3 Codex",description:"frontier coding model",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh"],contextWindow:4e5},GPT_5_4_MINI:{id:"gpt-5.4-mini",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.4 Mini",name:"GPT-5.4 Mini",description:"fast, cost-effective model for everyday tasks",reasoning:!0,reasoningEfforts:["low","medium","high"],contextWindow:4e5},MINIMAX_M3_FREE:{id:Xt,inputModalities:["text","image"],provider:Ut,spec:Qt,label:"MiniMax M3",name:"MiniMax M3",description:"frontier coding, agents & native multimodality",badge:"free",hidden:!0,reasoning:!0,contextWindow:1e6},DEEPSEEK_V4_PRO:{id:"deepseek/deepseek-v4-pro",inputModalities:["text"],provider:Ut,spec:Qt,label:"DeepSeek V4 Pro",name:"DeepSeek V4 Pro",description:"hybrid-attention long-context reasoning",reasoning:!0,reasoningEfforts:["high","max"],contextWindow:1e6},DEEPSEEK_V4_FLASH:{id:"deepseek/deepseek-v4-flash",inputModalities:["text"],provider:Ut,spec:Qt,label:"DeepSeek V4 Flash",name:"DeepSeek V4 Flash",description:"fast hybrid-attention reasoning",reasoning:!0,reasoningEfforts:["high","max"],contextWindow:1e6},KIMI_K2_7_CODE:{id:"moonshotai/Kimi-K2.7-Code",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.7 Code",name:"Kimi K2.7 Code",description:"improved long-horizon coding with vision",reasoning:!0,contextWindow:256e3},KIMI_K2_7_CODE_HIGHSPEED:{id:"moonshotai/Kimi-K2.7-Code-Highspeed",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.7 Code HighSpeed",name:"Kimi K2.7 Code HighSpeed",description:"high-speed long-horizon coding with vision",reasoning:!0,contextWindow:262e3},KIMI_K2_6:{id:"moonshotai/Kimi-K2.6",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.6",name:"Kimi K2.6",description:"long-horizon coding with vision",contextWindow:256e3},KIMI_K2_5:{id:"moonshotai/Kimi-K2.5",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.5",name:"Kimi K2.5",description:"multimodal frontend coding",contextWindow:256e3},GLM_5_2:{id:"zai-org/GLM-5.2",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5.2",name:"GLM-5.2",description:"powerful coding with 1M context and long-horizon tasks",reasoning:!0,reasoningEfforts:["high","max"],contextWindow:1e6},GLM_5_2_FAST:{id:"zai-org/GLM-5.2-Fast",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5.2 Fast",name:"GLM-5.2 Fast",description:"high-throughput GLM-5.2 with 1M context",contextWindow:1e6},GLM_5_1:{id:"zai-org/GLM-5.1",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5.1",name:"GLM-5.1",description:"long-horizon autonomous coding agent"},GLM_5:{id:"zai-org/GLM-5",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5",name:"GLM-5",description:"multi-mode thinking & long-range planning",contextWindow:2e5},MINIMAX_M3:{id:"MiniMaxAI/MiniMax-M3",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"MiniMax M3",name:"MiniMax M3",description:"frontier coding, agents & native multimodality",reasoning:!0,contextWindow:1e6},MINIMAX_M2_7:{id:"MiniMaxAI/MiniMax-M2.7",inputModalities:["text"],provider:Ut,spec:Qt,label:"MiniMax M2.7",name:"MiniMax M2.7",description:"end-to-end software engineering agent"},MINIMAX_M2_5:{id:"MiniMaxAI/MiniMax-M2.5",inputModalities:["text"],provider:Ut,spec:Qt,label:"MiniMax M2.5",name:"MiniMax M2.5",description:"cross-platform full-stack agentic dev",contextWindow:2e5},XIAOMI_MIMO_V2_5_PRO:{id:"xiaomi/mimo-v2.5-pro",inputModalities:["text"],provider:Ut,spec:Qt,label:"MiMo V2.5 Pro",name:"MiMo V2.5 Pro",description:"high-capability long-context agentic coding",contextWindow:1e6},XIAOMI_MIMO_V2_5:{id:"xiaomi/mimo-v2.5",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"MiMo V2.5",name:"MiMo V2.5",description:"efficient long-context agentic coding",contextWindow:1e6},QWEN_3_6_MAX_PREVIEW:{id:"Qwen/Qwen3.6-Max-Preview",inputModalities:["text"],provider:Ut,spec:Qt,label:"Qwen 3.6 Max Preview",name:"Qwen 3.6 Max Preview",description:"vibe coding & efficient agent execution",reasoning:!0},QWEN_3_6_PLUS:{id:"Qwen/Qwen3.6-Plus",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Qwen 3.6 Plus",name:"Qwen 3.6 Plus",description:"agentic coding & reasoning",reasoning:!0},QWEN_3_7_MAX:{id:"Qwen/Qwen3.7-Max",inputModalities:["text"],provider:Ut,spec:Qt,label:"Qwen 3.7 Max",name:"Qwen 3.7 Max",description:"frontier coding & long-horizon agent execution",reasoning:!0,contextWindow:1e6},QWEN_3_7_PLUS:{id:"Qwen/Qwen3.7-Plus",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Qwen 3.7 Plus",name:"Qwen 3.7 Plus",description:"agentic coding & reasoning at lower cost",reasoning:!0,contextWindow:1e6},STEP_3_7_FLASH:{id:"stepfun/Step-3.7-Flash",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Step 3.7 Flash",name:"Step 3.7 Flash",description:"multimodal sparse-MoE reasoning",reasoning:!0,contextWindow:256e3},STEP_3_5_FLASH:{id:"stepfun/Step-3.5-Flash",inputModalities:["text"],provider:Ut,spec:Qt,label:"Step 3.5 Flash",name:"Step 3.5 Flash",description:"fast sparse-MoE agentic reasoning",reasoning:!0,contextWindow:1e6},GEMINI_3_5_FLASH:{id:"google/gemini-3.5-flash",inputModalities:["text","image"],provider:Lt.VERCEL_AI_GATEWAY,spec:Qt,label:"Gemini 3.5 Flash",name:"Gemini 3.5 Flash",description:"Pro-level coding proficiency, parallel agentic execution",vendorLabel:"Google",reasoning:!0,reasoningEfforts:["low","medium","high"],contextWindow:1e6},GEMINI_3_1_FLASH_LITE:{id:"google/gemini-3.1-flash-lite",inputModalities:["text","image"],provider:Lt.VERCEL_AI_GATEWAY,spec:Qt,label:"Gemini 3.1 Flash Lite",name:"Gemini 3.1 Flash Lite",description:"high-volume workhorse model with implicit caching",vendorLabel:"Google",reasoning:!0,reasoningEfforts:["low","medium","high"],contextWindow:1e6},FUGU_ULTRA:{id:"sakana/fugu-ultra",inputModalities:["text","image"],provider:Lt.VERCEL_AI_GATEWAY,spec:Qt,label:"Fugu Ultra",name:"Fugu Ultra",description:"multi-agent orchestration across frontier models",vendorLabel:"Sakana",reasoning:!0,reasoningEfforts:["high","xhigh"],contextWindow:1e6},NEMOTRON_3_ULTRA:{id:"nvidia/nemotron-3-ultra-550b-a55b",inputModalities:["text"],provider:Ut,spec:Qt,label:"Nemotron 3 Ultra",name:"Nemotron 3 Ultra",description:"open reasoning model for long-horizon autonomous agents",reasoning:!0,contextWindow:1e6}}).SONNET_5.id,Zt.SONNET_4_6.id,Zt.FABLE_5.id,Zt.OPUS_4_8.id,Zt.OPUS_4_7.id,Zt.HAIKU_4_5.id,en=[{canonicalId:"zai-org/GLM-5",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5",[Lt.BASETEN]:"zai-org/GLM-5",[Lt.CAI]:"glm-5"}},{canonicalId:"zai-org/GLM-5.2",providers:{[Lt.CAI]:"glm-5.2",[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5.2"}},{canonicalId:"zai-org/GLM-5.2-Fast",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5.2-fast"}},{canonicalId:"zai-org/GLM-5.1",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5.1",[Lt.CAI]:"glm-5.1"}},{canonicalId:"moonshotai/Kimi-K2.5",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.5",[Lt.BASETEN]:"moonshotai/Kimi-K2.5",[Lt.CLOUDFLARE_AI_GATEWAY]:"workers-ai/@cf/moonshotai/kimi-k2.5",[Lt.CAI]:"kimi-k2.5"}},{canonicalId:"moonshotai/Kimi-K2.6",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.6",[Lt.BASETEN]:"moonshotai/Kimi-K2.6",[Lt.CLOUDFLARE_AI_GATEWAY]:"workers-ai/@cf/moonshotai/kimi-k2.6",[Lt.CAI]:"kimi-k2.6"}},{canonicalId:"moonshotai/Kimi-K2.7-Code",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.7-code",[Lt.CAI]:"kimi-k2.7-code"}},{canonicalId:"moonshotai/Kimi-K2.7-Code-Highspeed",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.7-code-highspeed"}},{canonicalId:"MiniMaxAI/MiniMax-M2.5",providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m2.5",[Lt.BASETEN]:"MiniMaxAI/MiniMax-M2.5"}},{canonicalId:"deepseek/deepseek-v4-pro",providers:{[Lt.VERCEL_AI_GATEWAY]:"deepseek/deepseek-v4-pro",[Lt.CAI]:"deepseek-v4-pro"}},{canonicalId:"deepseek/deepseek-v4-flash",providers:{[Lt.VERCEL_AI_GATEWAY]:"deepseek/deepseek-v4-flash",[Lt.CAI]:"deepseek-v4-flash"}},{canonicalId:"Qwen/Qwen3.6-Max-Preview",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen-3.6-max-preview"}},{canonicalId:"Qwen/Qwen3.6-Plus",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen3.6-plus"}},{canonicalId:"Qwen/Qwen3.7-Max",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen3.7-max"}},{canonicalId:"Qwen/Qwen3.7-Plus",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen3.7-plus"}},{canonicalId:"MiniMaxAI/MiniMax-M3",providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m3"}},{canonicalId:Xt,providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m3"}},{canonicalId:"MiniMaxAI/MiniMax-M2.7",providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m2.7"}},{canonicalId:"stepfun/Step-3.7-Flash",providers:{[Lt.VERCEL_AI_GATEWAY]:"stepfun/step-3.7-flash"}},{canonicalId:"stepfun/Step-3.5-Flash",providers:{[Lt.OPENROUTER]:"stepfun/step-3.5-flash"}},{canonicalId:"xiaomi/mimo-v2.5-pro",providers:{[Lt.VERCEL_AI_GATEWAY]:"xiaomi/mimo-v2.5-pro",[Lt.CAI]:"mimo-v2.5-pro"}},{canonicalId:"xiaomi/mimo-v2.5",providers:{[Lt.VERCEL_AI_GATEWAY]:"xiaomi/mimo-v2.5"}},{canonicalId:"google/gemini-3.5-flash",providers:{[Lt.VERCEL_AI_GATEWAY]:"google/gemini-3.5-flash"}},{canonicalId:"google/gemini-3.1-flash-lite",providers:{[Lt.VERCEL_AI_GATEWAY]:"google/gemini-3.1-flash-lite"}},{canonicalId:"nvidia/nemotron-3-ultra-550b-a55b",providers:{[Lt.VERCEL_AI_GATEWAY]:"nvidia/nemotron-3-ultra-550b-a55b"}},{canonicalId:"sakana/fugu-ultra",providers:{[Lt.VERCEL_AI_GATEWAY]:"sakana/fugu-ultra"}}],tn={"claude-sonnet-4-20250514":Zt.SONNET_4_6.id,"claude-sonnet-4-5-20250929":Zt.SONNET_4_6.id,"claude-opus-4-5-20251101":Zt.OPUS_4_7.id,"claude-opus-4-6":Zt.OPUS_4_7.id,"claude-haiku-4-5":Zt.HAIKU_4_5.id},nn=Zt.DEEPSEEK_V4_FLASH.id,rn={[Lt.ANTHROPIC]:"Anthropic",[Lt.OPENAI]:"OpenAI",[Lt.BASETEN]:"Open Source",[Lt.VERCEL_AI_GATEWAY]:"Open Source",[Lt.CAI]:"Open Source"},on=["Open Source","Anthropic","OpenAI","Google"],sn={"command-code":{id:"command-code",label:"Command Code",shortLabel:"cmd",description:"recommended",supportedModelProviders:[Lt.ANTHROPIC,Lt.OPENAI,Lt.CAI,Lt.BASETEN,Lt.VERCEL_AI_GATEWAY],requiresAuth:!1,visibleInCoMode:!0,visibleInNormalMode:!0,showProviderLabelInSelector:!0},anthropic:{id:"anthropic",label:"Anthropic",shortLabel:"anth",description:"Claude Pro/Max",supportedModelProviders:[Lt.ANTHROPIC],requiresAuth:!0,visibleInCoMode:!0,visibleInNormalMode:!1,showProviderLabelInSelector:!1},"github-copilot":{id:"github-copilot",label:"GitHub Copilot",shortLabel:"copilot",description:"Copilot subscription",supportedModelProviders:[Lt.ANTHROPIC,Lt.OPENAI],requiresAuth:!0,visibleInCoMode:!0,visibleInNormalMode:!1,showProviderLabelInSelector:!0},codex:{id:"codex",label:"ChatGPT (Codex)",shortLabel:"codex",description:"ChatGPT Pro/Plus subscription",supportedModelProviders:[Lt.OPENAI],requiresAuth:!0,visibleInCoMode:!0,visibleInNormalMode:!1,showProviderLabelInSelector:!1}},__name(buildModelGroups,"buildModelGroups"),an=buildModelGroups("co"),ln=buildModelGroups("normal"),new Set(["cc2@www3.in","cc3@www3.in","cc4@www3.in","cc5@www3.in","cc6@www3.in","cc7@www3.in","cc8@www3.in","cc9@www3.in","cc10@www3.in"].map(e=>e.toLowerCase())),cn=["**/node_modules/**","**/dist/**","**/build/**","**/.git/**","**/.svn/**","**/.hg/**","**/coverage/**","**/*.log","**/tmp/**","**/temp/**","**/.DS_Store","**/Thumbs.db","**/*.tmp","**/*.cache"],un={TIER_1_THRESHOLD:.5,TIER_2_THRESHOLD:.8,TIER_3_THRESHOLD:.9,TIER_1_KEEP_COUNT:20,TIER_2_KEEP_COUNT:10,KEEP_RECENT_TOKENS:3e4}}});function getIcon(e){if(fn[e])return fn[e];const t=e.split(":")[0];return fn[t]?fn[t]:fn.default}function formatTime(e){return`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`}function parseMessage(e){const t=e.match(/^\[([^\]]+)\]\s*(.*)/);return t?{category:t[1],text:t[2]}:{category:"",text:e}}function showStartup(){if(!yn){yn=!0;try{S.mkdirSync(gn,{recursive:!0});const e=new Date,t=`\n════════════════════════════════════════════════════════════════\n CommandCode Debug Log\n Started: ${e.toLocaleDateString()} ${formatTime(e)}\n Log: ${hn}\n════════════════════════════════════════════════════════════════\n\n`;S.appendFileSync(hn,t,"utf-8")}catch{}}}function dlog(e,t){if("true"===process.env.DEBUG){showStartup();try{const n=formatTime(new Date),{category:r,text:o}=parseMessage(e);let s;if(r){s=`${n} ${getIcon(r)} ${`[${r}]`.padEnd(16)} ${o}`}else s=`${n} ${fn.default} ${e}`;if(t){s+=`\n${("string"==typeof t?t:JSON.stringify(t,null,2)).split("\n").map(e=>` ${e}`).join("\n")}`}s+="\n",S.appendFileSync(hn,s,"utf-8")}catch{}}}function dlogSection(e){if("true"===process.env.DEBUG){showStartup();try{const t=`\n──── ${e} ${"─".repeat(Math.max(0,50-e.length))}\n`;S.appendFileSync(hn,t,"utf-8")}catch{}}}var Sn=__esm({"src/utils/dlog.ts"(){pn(),gn=e.join(_.homedir(),".commandcode","logs"),hn=e.join(gn,"command.log"),fn={Startup:">",CLI:"$",Config:"#",Auth:"@",Onboarding:"*",LearningAgent:"&",Import:"<",API:"~",Sessions:"+",Observer:"!",Flow:"^",Handler:">",Helper:"-",Codex:"+",UI:"|",Hook:"%",ObserverAPI:"~",ContextEngine:"~",Updater:"^",MCP:"&",default:"-"},__name(getIcon,"getIcon"),__name(formatTime,"formatTime"),__name(parseMessage,"parseMessage"),yn=!1,__name(showStartup,"showStartup"),"true"===process.env.DEBUG&&showStartup(),__name(dlog,"dlog"),__name(dlogSection,"dlogSection")}});function bitmapHasAlpha(e){for(let t=3;t<e.length;t+=4)if((e[t]??255)<255)return!0;return!1}async function compressImageForSharing(e,t="image/png"){try{const n=Buffer.from(e,"base64"),r=n.length,o=await L.fromBuffer(n),{width:s,height:a}=o.bitmap;if(!s||!a)return console.warn("[ImageCompression] Could not determine image dimensions"),null;const i=bitmapHasAlpha(o.bitmap.data),l=1200;let u,d,m=s,g=a;(s>l||a>l)&&(s>a?(g=Math.round(a*l/s),m=l):(m=Math.round(s*l/a),g=l),o.resize({w:m,h:g})),t.includes("png")&&i?(u=await o.getBuffer(O.png),d="image/png"):(u=await o.getBuffer(O.jpeg,{quality:95}),d="image/jpeg");const h=u.length;return{compressedBase64:u.toString("base64"),mediaType:d,originalSizeBytes:r,compressedSizeBytes:h,compressionRatio:r/h}}catch(e){return dlog("[ImageCompression] Failed to compress image",{error:e instanceof Error?e.message:String(e)}),null}}var En,bn,kn,Cn,vn,Tn,xn=__esm({"src/utils/image-compression.ts"(){pn(),Sn(),__name(bitmapHasAlpha,"bitmapHasAlpha"),__name(compressImageForSharing,"compressImageForSharing")}}),Pn={};function isClipboardAvailable(){if(void 0!==En)return En;const e=process.platform;return En="darwin"===e||"win32"===e||"linux"===e&&isLinuxClipboardAvailable()}function isLinuxClipboardAvailable(){const e=process.env.DISPLAY;if(e){const t=e.match(/^:(\d+)/);return!t||E.existsSync(`/tmp/.X11-unix/X${t[1]}`)}return!1}function _resetClipboardAvailableCacheForTests(){En=void 0}async function writeTextToClipboard(e){if(!isClipboardAvailable())return!1;try{const t=await import("@crosscopy/clipboard");return await t.default.setText(e),!0}catch{return!1}}function looksLikeWindowsPath(e){return Cn.test(e)||vn.test(e)||e.includes("\\")}function normalizeDroppedImagePath(e){return e.startsWith("file://")&&(e=decodeURIComponent(e.slice(7))),looksLikeWindowsPath(e)?e.replace(Tn,"$1"):e.replace(/\\(.)/g,"$1")}async function detectDroppedImageFile(e){try{if(!e||0===e.trim().length)return null;let t=e.trim();if((t.startsWith("'")&&t.endsWith("'")||t.startsWith('"')&&t.endsWith('"'))&&(t=t.slice(1,-1)),t=normalizeDroppedImagePath(t),t.includes("\n")||t.includes("\r"))return null;const n=i(t).toLowerCase(),r=bn[n];if(!r)return null;const o="win32"===process.platform?l.resolve(t):u(t);if(!E.existsSync(o))return null;const s=E.readFileSync(o).toString("base64");if(!s||0===s.length)return null;if(s.length>32e6)return null;const a=await compressImageForSharing(s,r);return a?{data:a.compressedBase64,mediaType:a.mediaType}:kn.has(n)?{data:s,mediaType:r}:null}catch(e){return null}}async function detectClipboardImage(){try{if(!isClipboardAvailable())return null;const e=await import("@crosscopy/clipboard");if(!e.default.hasImage())return null;let t=null;try{if(t=await e.default.getImageBase64(),!t){const n=e.default.getImageBase64();t=n&&"function"==typeof n.then?await n:n}}catch(e){return null}if(!t||0===t.length)return null;if(t.length>32e6)return console.log("Image too large:",t.length,"bytes"),null;try{const e=await compressImageForSharing(t,"image/png");return e?{data:e.compressedBase64,mediaType:e.mediaType}:(console.log("Failed to compress clipboard image"),null)}catch(e){return console.log("Failed to process clipboard image:",e),null}}catch(e){return null}}async function detectClipboardText(){try{if(!isClipboardAvailable())return null;const e=await import("@crosscopy/clipboard");if(!e.default.hasText())return null;let t=null;try{if(t=await e.default.getText(),!t){const n=e.default.getText();t=n&&"function"==typeof n.then?await n:n}}catch(e){return null}return t&&0!==t.length?t:null}catch(e){return null}}__export(Pn,{_resetClipboardAvailableCacheForTests:()=>_resetClipboardAvailableCacheForTests,detectClipboardImage:()=>detectClipboardImage,detectClipboardText:()=>detectClipboardText,detectDroppedImageFile:()=>detectDroppedImageFile,isClipboardAvailable:()=>isClipboardAvailable,normalizeDroppedImagePath:()=>normalizeDroppedImagePath,writeTextToClipboard:()=>writeTextToClipboard});var An=__esm({"src/utils/clipboard-image.ts"(){pn(),xn(),__name(isClipboardAvailable,"isClipboardAvailable"),__name(isLinuxClipboardAvailable,"isLinuxClipboardAvailable"),__name(_resetClipboardAvailableCacheForTests,"_resetClipboardAvailableCacheForTests"),__name(writeTextToClipboard,"writeTextToClipboard"),bn={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/png",".tiff":"image/png"},kn=new Set([".png",".jpg",".jpeg",".gif",".webp"]),Cn=/^[a-zA-Z]:[\\/]/,vn=/^\\\\[^\\]+\\[^\\]+/,Tn=/\\([ "'()&;<>|$`!#*?[\]{}])/g,__name(looksLikeWindowsPath,"looksLikeWindowsPath"),__name(normalizeDroppedImagePath,"normalizeDroppedImagePath"),__name(detectDroppedImageFile,"detectDroppedImageFile"),__name(detectClipboardImage,"detectClipboardImage"),__name(detectClipboardText,"detectClipboardText")}}),In={};function getPackageJson(){const e=import.meta.url,t=m(e);let s=r(t);const{root:a}=o(s);for(;;){const e=n(s,"package.json");if(k(e))return JSON.parse(C(e,"utf8"));if(s===a)throw new Error("Could not find package.json");s=r(s)}}__export(In,{getPackageJson:()=>getPackageJson});var Mn,Rn=__esm({"src/utils/package.ts"(){pn(),__name(getPackageJson,"getPackageJson")}});function originOf(e){try{return new URL(e).origin}catch{return null}}function getTokenFilePath(){return e.join(D.homedir(),".commandcode",Mn)}async function loadTokenStorage(){try{const e=getTokenFilePath(),t=await F.readFile(e,"utf-8"),n=JSON.parse(t);return 1!==n.version||"object"!=typeof n.tokens?{version:1,tokens:{}}:n}catch(e){return dlog("[MCP] Failed to load token storage",e),{version:1,tokens:{}}}}async function saveTokenStorage(t){const n=getTokenFilePath(),r=e.dirname(n);await F.mkdir(r,{recursive:!0}),await F.writeFile(n,JSON.stringify(t,null,2),{mode:384}),await F.chmod(n,384)}async function storeTokens(e,t){const n=await loadTokenStorage();n.tokens[e]=t,await saveTokenStorage(n)}async function getTokens(e){return(await loadTokenStorage()).tokens[e]||null}async function deleteTokens(e){const t=await loadTokenStorage();return e in t.tokens&&(delete t.tokens[e],t.discoveredClients?.[e]&&delete t.discoveredClients[e],await saveTokenStorage(t),!0)}async function hasTokens(e){return e in(await loadTokenStorage()).tokens}function isTokenExpired(e){return!!e.expiresAt&&Date.now()>=e.expiresAt-6e4}async function getValidAccessToken({serverName:e,expectedUrl:t,refreshCallback:n}){const r=await getTokens(e);if(!r)return null;const o=originOf(t);if(!o)return dlog("[MCP] Refusing to attach token: invalid expectedUrl",t),null;if(!r.issuerUrl)return dlog(`[MCP] Stored token for "${e}" has no issuerUrl; refusing and clearing. Re-authenticate to continue.`),await deleteTokens(e),null;if(originOf(r.issuerUrl)!==o)return dlog(`[MCP] Refusing to attach token for "${e}": configured url ${o} does not match issuer ${r.issuerUrl}`),null;if(!isTokenExpired(r))return r.accessToken;if(r.refreshToken&&n)try{const t=await n(r.refreshToken);return await storeTokens(e,{...t,issuerUrl:r.issuerUrl}),t.accessToken}catch(t){return dlog("[MCP] Token refresh failed",t),await deleteTokens(e),null}return await deleteTokens(e),null}async function migrateLegacyTokens(e){const t=await loadTokenStorage(),n={bound:[],cleared:[]};let r=!1;for(const[o,s]of Object.entries(t.tokens)){if(s.issuerUrl)continue;const a=await e(o);a&&originOf(a)?(t.tokens[o]={...s,issuerUrl:a},n.bound.push(o),dlog(`[MCP] Migrated legacy token "${o}" → issuerUrl=${a}`)):(delete t.tokens[o],n.cleared.push(o),dlog(`[MCP] No trusted URL for legacy token "${o}"; cleared.`)),r=!0}return r&&await saveTokenStorage(t),n}async function listServersWithTokens(){const e=await loadTokenStorage();return Object.keys(e.tokens)}async function storeClientSecret(e,t){const n=await loadTokenStorage();n.clientSecrets||(n.clientSecrets={}),n.clientSecrets[e]=t,await saveTokenStorage(n)}async function getClientSecret(e){const t=await loadTokenStorage();return t.clientSecrets?.[e]??null}async function deleteClientSecret(e){const t=await loadTokenStorage();return!!t.clientSecrets?.[e]&&(delete t.clientSecrets[e],await saveTokenStorage(t),!0)}async function storeDiscoveredClient(e,t){const n=await loadTokenStorage();n.discoveredClients||(n.discoveredClients={}),n.discoveredClients[e]=t,await saveTokenStorage(n)}async function getDiscoveredClient(e){const t=await loadTokenStorage();return t.discoveredClients?.[e]??null}var _n,Dn,Nn,$n=__esm({"src/mcp/auth/token-storage.ts"(){pn(),wn(),Sn(),__name(originOf,"originOf"),Mn="mcp-tokens.json",__name(getTokenFilePath,"getTokenFilePath"),__name(loadTokenStorage,"loadTokenStorage"),__name(saveTokenStorage,"saveTokenStorage"),__name(storeTokens,"storeTokens"),__name(getTokens,"getTokens"),__name(deleteTokens,"deleteTokens"),__name(hasTokens,"hasTokens"),__name(isTokenExpired,"isTokenExpired"),__name(getValidAccessToken,"getValidAccessToken"),__name(migrateLegacyTokens,"migrateLegacyTokens"),__name(listServersWithTokens,"listServersWithTokens"),__name(storeClientSecret,"storeClientSecret"),__name(getClientSecret,"getClientSecret"),__name(deleteClientSecret,"deleteClientSecret"),__name(storeDiscoveredClient,"storeDiscoveredClient"),__name(getDiscoveredClient,"getDiscoveredClient")}});function isSecureOrLoopback(e){try{const t=new URL(e);return"https:"===t.protocol||"http:"===t.protocol&&("localhost"===t.hostname||"127.0.0.1"===t.hostname||"[::1]"===t.hostname)}catch{return!1}}var Ln,On=__esm({"src/mcp/types.ts"(){pn(),__name(isSecureOrLoopback,"isSecureOrLoopback"),_n=y.string().url().refine(isSecureOrLoopback,{message:"URL must use https:// (or http:// for loopback hosts)"}),Dn=y.object({authorizationUrl:_n,tokenUrl:_n,clientId:y.string(),clientSecret:y.string().optional(),scopes:y.array(y.string()).optional()}),Nn=y.preprocess(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e;if("transport"in t)return t;if("type"in t){const{type:e,...n}=t;return{...n,transport:e}}return"string"==typeof t.command?{...t,transport:"stdio"}:"string"==typeof t.url?{...t,transport:"http"}:t},y.object({transport:y.enum(["stdio","http"]),enabled:y.boolean().default(!0),command:y.string().optional(),args:y.array(y.string()).optional(),url:y.string().url().optional(),headers:y.record(y.string(),y.string()).optional(),oauth:Dn.optional(),env:y.record(y.string(),y.string()).optional()}).refine(e=>!e.oauth||!e.url||isSecureOrLoopback(e.url),{message:"OAuth requires the server url to use https:// (or http:// for loopback hosts)",path:["url"]})),y.object({mcpServers:y.record(y.string(),Nn)})}});function fetchWithTimeout(e,t){const n=new AbortController,r=setTimeout(()=>n.abort(),Ln);return fetch(e,{...t,signal:n.signal}).finally(()=>clearTimeout(r))}var Fn,Un,Bn=__esm({"src/mcp/fetch.ts"(){pn(),Ln=8e4,__name(fetchWithTimeout,"fetchWithTimeout")}}),jn={};function generateRandomString(e){return K.randomBytes(e).toString("base64url").slice(0,e)}function generatePKCE(){const e=generateRandomString(64);return{verifier:e,challenge:K.createHash("sha256").update(e).digest("base64url")}}function escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function startCallbackServer(e,t){return new Promise((n,r)=>{let o=null,s=null;const a=new Promise((e,t)=>{o=e,s=t}),i=q.createServer((n,r)=>{const a=new h(n.url||"/",`http://${Un}:${e}`);if("/callback"===a.pathname){const e=a.searchParams.get("code"),n=a.searchParams.get("error"),i=a.searchParams.get("error_description");if(a.searchParams.get("state")!==t)r.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),r.end('\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Authentication Failed</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Authentication Failed</h1>\n\t\t\t\t\t\t\t<p>Invalid state parameter. Please try again.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t'),s?.(new Error("OAuth state parameter mismatch"));else if(n){const e=escapeHtml(i||n);r.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),r.end(`\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Authentication Failed</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Authentication Failed</h1>\n\t\t\t\t\t\t\t<p>${e}</p>\n\t\t\t\t\t\t\t<p>You can close this window.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t`),s?.(new Error(i||n))}else e?(r.writeHead(200,{"Content-Type":"text/html",Connection:"close"}),r.end('\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Authentication Successful</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Authentication Successful</h1>\n\t\t\t\t\t\t\t<p>You can close this window and return to Command Code.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t'),o?.(e)):(r.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),r.end('\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Invalid Request</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Invalid Request</h1>\n\t\t\t\t\t\t\t<p>No authorization code received.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t'),s?.(new Error("No authorization code received")))}else r.writeHead(404,{Connection:"close"}),r.end("Not Found")});i.on("error",r),i.keepAliveTimeout=1,i.headersTimeout=5e3,i.listen(e,Un,()=>{n({server:i,getCode:__name(()=>a,"getCode")})})})}async function exchangeCodeForTokens(e,t,n,r){const o=new URLSearchParams({grant_type:"authorization_code",code:t,redirect_uri:r,client_id:e.clientId,code_verifier:n});e.clientSecret&&o.set("client_secret",e.clientSecret);const s=await fetchWithTimeout(e.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.toString()});if(!s.ok){const e=await s.text();throw new Error(`Token exchange failed: ${s.status} ${e}`)}const a=await s.json();return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresAt:a.expires_in?Date.now()+1e3*a.expires_in:void 0,tokenType:a.token_type,scope:a.scope}}async function refreshAccessToken({config:e,refreshToken:t}){const n=new URLSearchParams({grant_type:"refresh_token",refresh_token:t,client_id:e.clientId});e.clientSecret&&n.set("client_secret",e.clientSecret);const r=await fetchWithTimeout(e.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()});if(!r.ok){const e=await r.text();throw new Error(`Token refresh failed: ${r.status} ${e}`)}const o=await r.json();return{accessToken:o.access_token,refreshToken:o.refresh_token||t,expiresAt:o.expires_in?Date.now()+1e3*o.expires_in:void 0,tokenType:o.token_type,scope:o.scope}}async function performOAuthFlow(e,t,n,r){if(!isSecureOrLoopback(t))return{success:!1,error:`MCP server url must use https:// when OAuth is configured (got "${t}"). http:// is only allowed for loopback hosts (localhost, 127.0.0.1, [::1]).`};const o=r?.port||Fn,s=r?.timeout||12e4,a=r?.onStatus||(()=>{});let i=null;try{const r=generatePKCE(),l=generateRandomString(32),u=`http://${Un}:${o}/callback`;a("Starting authentication server...");const{server:d,getCode:m}=await startCallbackServer(o,l);i=d;const g=new h(n.authorizationUrl);if(g.searchParams.set("response_type","code"),g.searchParams.set("client_id",n.clientId),g.searchParams.set("redirect_uri",u),g.searchParams.set("state",l),g.searchParams.set("code_challenge",r.challenge),g.searchParams.set("code_challenge_method","S256"),n.scopes&&n.scopes.length>0&&g.searchParams.set("scope",n.scopes.join(" ")),n.extraParams)for(const[e,t]of Object.entries(n.extraParams))g.searchParams.set(e,t);a("Opening browser for authentication..."),await Z(g.toString()),a("Waiting for authorization...");const f=m();let y;const w=new Promise((e,t)=>{y=setTimeout(()=>t(new Error("Authentication timed out")),s)}),S=await Promise.race([f,w]);clearTimeout(y),a("Exchanging authorization code for tokens...");const E=await exchangeCodeForTokens(n,S,r.verifier,u);return await storeTokens(e,{...E,issuerUrl:t}),a("Authentication successful!"),{success:!0,tokens:E}}catch(e){return{success:!1,error:e instanceof Error?e.message:String(e)}}finally{i&&(i.closeIdleConnections?.(),i.closeAllConnections?.(),i.close(),i.unref())}}function createRefreshCallback(e){return t=>refreshAccessToken({config:e,refreshToken:t})}__export(jn,{DEFAULT_OAUTH_CALLBACK_PORT:()=>Fn,LOCALHOST_IP:()=>Un,createRefreshCallback:()=>createRefreshCallback,performOAuthFlow:()=>performOAuthFlow,refreshAccessToken:()=>refreshAccessToken});var Hn,Wn=__esm({"src/mcp/auth/oauth-flow.ts"(){pn(),$n(),Bn(),On(),Fn=8085,Un="127.0.0.1",__name(generateRandomString,"generateRandomString"),__name(generatePKCE,"generatePKCE"),__name(escapeHtml,"escapeHtml"),__name(startCallbackServer,"startCallbackServer"),__name(exchangeCodeForTokens,"exchangeCodeForTokens"),__name(refreshAccessToken,"refreshAccessToken"),__name(performOAuthFlow,"performOAuthFlow"),__name(createRefreshCallback,"createRefreshCallback")}});function isCorruptedArchiveError(e){const t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes("zlib")||t.includes("unexpected end")||t.includes("tar_bad_archive")||t.includes("unrecognized archive")||t.includes("invalid tar header")}async function clearGigetCache(e,n){const r=t.join(D.homedir(),".cache","giget","gh",`${e}-${n}`);await U.rm(r,{recursive:!0,force:!0}).catch(()=>{})}async function cleanupStaleTempDirectories(){try{const e=D.tmpdir(),n=await U.readdir(e,{withFileTypes:!0}),r=Date.now();for(const o of n)if(o.isDirectory()&&(o.name.startsWith("commandcode-skill-")||o.name.startsWith("commandcode-skill-discovery-")))try{const n=t.join(e,o.name);r-(await U.stat(n)).mtimeMs>Hn&&await U.rm(n,{recursive:!0,force:!0})}catch(e){}}catch(e){}}function wrapFetchError(e,t,n){const r=e instanceof Error?e.message:String(e),o=r.toLowerCase();return o.includes("could not find commit hash")||o.includes("not found")||o.includes("404")?new Error(`Repository "${t}/${n}" not found on GitHub.\nIf the repo doesn't use "main" branch, specify the branch: ${t}/${n}@<branch>`):o.includes("403")||o.includes("401")||o.includes("forbidden")||o.includes("unauthorized")||o.includes("could not download")?new Error(`Repository "${t}/${n}" is private or inaccessible.\nSkills can only be installed from public repositories.`):o.includes("enotfound")||o.includes("econnrefused")||o.includes("etimedout")?new Error("Network error: unable to reach GitHub. Check your internet connection."):o.includes("zlib")||o.includes("unexpected end")||o.includes("tar_bad_archive")||o.includes("unrecognized archive")||o.includes("invalid tar header")?new Error(`Download of "${t}/${n}" failed (corrupted archive).\nThis is usually a transient GitHub issue. Please try again.`):new Error(`Failed to fetch "${t}/${n}": ${r}`)}var Gn,zn,qn=__esm({"src/services/skill-utils.ts"(){pn(),Hn=864e5,__name(isCorruptedArchiveError,"isCorruptedArchiveError"),__name(clearGigetCache,"clearGigetCache"),__name(cleanupStaleTempDirectories,"cleanupStaleTempDirectories"),__name(wrapFetchError,"wrapFetchError")}}),Vn={};async function findSkillMdFiles(e){const{dir:n,maxDepth:r=5,currentDepth:o=0,relativePath:s="",foundCount:a={value:0}}=e;if(o>r)return[];if(a.value>=Gn)return[];const i=[];try{const e=await U.readdir(n,{withFileTypes:!0}),l=e.find(e=>("SKILL.md"===e.name||"skill.md"===e.name)&&e.isFile());if(l){const e=t.join(n,l.name);try{if((await U.stat(e)).size>zn);else{const r=await U.readFile(e,"utf-8"),{data:o}=ee(r),l=s.split("/").filter(Boolean),u=l[l.length-1]||t.basename(n);i.push({name:o.name||u,path:s||".",description:o.description}),a.value++}}catch(e){process.env.DEBUG&&console.error(`Failed to parse SKILL.md at ${s||"."}: ${e instanceof Error?e.message:String(e)}`)}}const u=e.filter(e=>e.isDirectory());for(const e of u){if("node_modules"===e.name||".git"===e.name||"dist"===e.name||"build"===e.name||".next"===e.name)continue;const l=t.join(n,e.name),u=s?`${s}/${e.name}`:e.name,d=await findSkillMdFiles({dir:l,maxDepth:r,currentDepth:o+1,relativePath:u,foundCount:a});i.push(...d)}}catch(e){process.env.DEBUG&&console.error(`Failed to read directory ${s||"."}: ${e instanceof Error?e.message:String(e)}`)}return i}async function discoverSkillsLocally(e){const{owner:n,repo:r,path:o,branch:s,keepTempDir:a=!1}=e;await cleanupStaleTempDirectories();const i=t.join(D.tmpdir(),`commandcode-skill-discovery-${Q()}`);try{await U.mkdir(i,{recursive:!0});let e=`gh:${n}/${r}`;o&&(e+=`/${o}`),s&&(e+=`#${s}`);const{downloadTemplate:t}=await import("giget");try{await t(e,{dir:i,force:!0,silent:!0})}catch(o){if(!isCorruptedArchiveError(o))throw o;await clearGigetCache(n,r),await t(e,{dir:i,force:!0,silent:!0})}const l=await findSkillMdFiles({dir:i,maxDepth:5});return a?{skills:l,tempDir:i}:(await U.rm(i,{recursive:!0,force:!0}).catch(()=>{}),{skills:l})}catch(e){throw await U.rm(i,{recursive:!0,force:!0}).catch(()=>{}),wrapFetchError(e,n,r)}}__export(Vn,{discoverSkillsLocally:()=>discoverSkillsLocally});var Kn=__esm({"src/services/local-skill-discovery.ts"(){pn(),qn(),Gn=100,zn=1048576,__name(findSkillMdFiles,"findSkillMdFiles"),__name(discoverSkillsLocally,"discoverSkillsLocally")}});pn(),pn();var Yn=process.argv.includes("-d")||process.argv.includes("--debug");Yn&&(process.env.DEBUG="true"),Yn||(process.removeAllListeners("warning"),process.on("warning",()=>{})),globalThis.AI_SDK_LOG_WARNINGS=!1,pn(),pn(),pn(),pn(),pn(),pn();var Qn="https://api.axiom.co/v1/traces",Jn="command-code-cli",Xn="gen_ai.provider.name",Zn="gen_ai.operation.name",er="gen_ai.conversation.id",tr="gen_ai.capability.name",nr="gen_ai.step.name",rr="gen_ai.tool.name",or="gen_ai.request.model",sr="gen_ai.response.model",ar="cmd.command.name",ir="cmd.command.args",lr="cmd.session.project_hash",cr="cmd.session.branch_hash",ur="cmd.iteration.number",dr="cmd.payload.message_count",mr="cmd.payload.user_message_count",pr="cmd.payload.assistant_message_count",gr="cmd.payload.tool_message_count",hr="cmd.payload.assistant_with_tool_use_count",fr="cmd.payload.tool_use_count",yr="cmd.payload.tool_result_count",wr="cmd.payload.orphan_tool_use_count",Sr="cmd.payload.orphan_tool_result_count",Er="cmd.payload.last_message_role",br="cmd.api.attempt.number",kr="cmd.api.attempt.delay_ms_before",Cr="cmd.api.attempt.status",vr="cmd.error.fingerprint",Tr="cmd.error.component",xr="cmd.error.heading";function isContentCaptureEnabled(){const e=process.env.COMMAND_CODE_TELEMETRY_CAPTURE_CONTENT;return"1"===e||"true"===e}__name(isContentCaptureEnabled,"isContentCaptureEnabled"),pn(),pn(),wn(),pn();var Pr=__name(()=>{const e=process.argv.includes("--local"),t=process.argv.includes("--staging");return e?"local":t?"staging":"prod"},"getApiEnv");function getAuthDir(){return t.join(D.homedir(),".commandcode")}function getAuthFile(e){const n=e??Pr(),r="local"===n?"auth.local.json":"staging"===n?"auth.staging.json":"auth.json";return t.join(getAuthDir(),r)}function getConfigFile(e){const n=e??Pr(),r="local"===n?"config.local.json":"staging"===n?"config.staging.json":"config.json";return t.join(getAuthDir(),r)}__name(getAuthDir,"getAuthDir"),__name(getAuthFile,"getAuthFile"),__name(getConfigFile,"getConfigFile"),pn(),wn(),pn();var Ar=new Set(["","b","","",""]),Ir=new Set(["","f","","",""]),Mr=new Set(["","[1~","[7~","OH"]),Rr=new Set(["","[4~","[8~","OF"]),_r=new Set(["[3~"]),Dr=new Set(["",""]),Nr=new Set([String.fromCharCode(27,112),String.fromCharCode(960),""]),$r=/^\x1b\[1;[359]D$/,Lr=/^\x1b\[1;[359]C$/;function isWordLeftSequence(e){return!!Ar.has(e)||!!$r.test(e)}function isWordRightSequence(e){return!!Ir.has(e)||!!Lr.test(e)}function isHomeSequence(e){return Mr.has(e)}function isEndSequence(e){return Rr.has(e)}function isForwardDeleteSequence(e){return _r.has(e)}function isDeleteWordSequence(e){return Dr.has(e)}function isCtrlA(e){return 1===e.length&&1===e.charCodeAt(0)}function isCtrlE(e){return 1===e.length&&5===e.charCodeAt(0)}function isCtrlK(e){return 1===e.length&&11===e.charCodeAt(0)}function isCtrlU(e){return 1===e.length&&21===e.charCodeAt(0)}function isAltP(e){return Nr.has(e)}function isShiftTabUnreliable(){if("win32"!==process.platform)return!1;const e=process.versions.node.split(".").map(Number),t=e[0]??0,n=e[1]??0;return!(t>24||24===t&&n>=2||22===t&&n>=17)}function getModeToggleShortcutHint(){return isShiftTabUnreliable()?"alt+m":"shift+tab"}function isCtrlKey({inputChar:e,key:t,letter:n,ctrlCode:r}){return!(!t.ctrl||e.toLowerCase()!==n.toLowerCase())||void 0!==r&&e.charCodeAt(0)===r}__name(isWordLeftSequence,"isWordLeftSequence"),__name(isWordRightSequence,"isWordRightSequence"),__name(isHomeSequence,"isHomeSequence"),__name(isEndSequence,"isEndSequence"),__name(isForwardDeleteSequence,"isForwardDeleteSequence"),__name(isDeleteWordSequence,"isDeleteWordSequence"),__name(isCtrlA,"isCtrlA"),__name(isCtrlE,"isCtrlE"),__name(isCtrlK,"isCtrlK"),__name(isCtrlU,"isCtrlU"),__name(isAltP,"isAltP"),__name(isShiftTabUnreliable,"isShiftTabUnreliable"),__name(getModeToggleShortcutHint,"getModeToggleShortcutHint"),__name(isCtrlKey,"isCtrlKey");var Or,Fr,Ur,Br,jr=["\n","\r","","[27;2;13~","[27;2;13~","[13;2u"];function isNewlineShortcutKey(e){const{inputChar:t,key:n,isPasting:r}=e;return!r&&(!(!n.return||!n.shift)||!(!n.ctrl||!n.return)||!(!n.ctrl||"j"!==t)||!("\r"!==t||n.return||n.ctrl||n.shift||n.meta)||jr.includes(t))}__name(isNewlineShortcutKey,"isNewlineShortcutKey"),pn(),wn(),pn(),pn(),wn(),(e=>{e.OAuth=y.object({type:y.literal("oauth"),refresh:y.string(),access:y.string(),expires:y.number(),accountId:y.string().optional()}),e.ApiKey=y.object({type:y.literal("api"),key:y.string()}),e.Info=y.discriminatedUnion("type",[e.OAuth,e.ApiKey]);const n=__name(()=>t.join(D.homedir(),".commandcode"),"getAuthDir"),r=__name(()=>{const e=Pr(),r="local"===e?"auth.local.json":"staging"===e?"auth.staging.json":"auth.json";return t.join(n(),r)},"getAuthFile");async function get(e){try{const t=await U.readFile(r(),"utf-8");return JSON.parse(t)[e]}catch{return}}async function set(e,t){const o=n(),s=r();await U.mkdir(o,{recursive:!0});let a={};try{const e=await U.readFile(s,"utf-8");a=JSON.parse(e)}catch{}a[e]=t,await U.writeFile(s,JSON.stringify(a,null,2)),await U.chmod(s,384)}async function remove(e){const t=r();try{const n=await U.readFile(t,"utf-8"),r=JSON.parse(n);delete r[e],0===Object.keys(r).length?await U.unlink(t):(await U.writeFile(t,JSON.stringify(r,null,2)),await U.chmod(t,384))}catch{}}async function list2(){try{const e=await U.readFile(r(),"utf-8");return JSON.parse(e)}catch{return{}}}e.get=get,__name(get,"get"),e.set=set,__name(set,"set"),e.remove=remove,__name(remove,"remove"),e.list=list2,__name(list2,"list")})(Or||(Or={})),pn(),wn(),(e=>{const t="9d1c250a-e61b-44d9-88ed-5944d1962f5e",n="https://console.anthropic.com/v1/oauth/token",r="https://console.anthropic.com/oauth/code/callback";function generateCodeVerifier(){return Y.randomBytes(32).toString("base64url")}function generateCodeChallenge(e){return Y.createHash("sha256").update(e).digest("base64url")}function generateState(){return Y.randomBytes(32).toString("base64url")}function createAuthorizationUrl(){const e=generateCodeVerifier(),n=generateCodeChallenge(e),o=generateState();return{url:`https://claude.ai/oauth/authorize?${new URLSearchParams({code:"true",client_id:t,response_type:"code",redirect_uri:r,scope:"org:create_api_key user:profile user:inference",code_challenge:n,code_challenge_method:"S256",state:o}).toString()}`,verifier:e,state:o}}async function exchangeCodeForTokens2(e,o,s){const a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",client_id:t,code:e,redirect_uri:r,code_verifier:o,state:s})});if(!a.ok){const e=await a.text(),t=new Error(`Token exchange failed: ${e}`);throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"token_exchange_failed"}),context:{component:ms.ANTHROPIC_OAUTH,heading:"OAuth token exchange failed"}}),t}const i=await a.json();await Or.set("anthropic",{type:"oauth",refresh:i.refresh_token,access:i.access_token,expires:Date.now()+1e3*i.expires_in})}async function refreshAccessToken2(){const e=await Or.get("anthropic");if(e&&"oauth"===e.type){if(e.expires>Date.now()+3e5)return e.access;try{const r=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:t,refresh_token:e.refresh})});if(!r.ok)return void trackError({error:sanitizeErrorForTelemetry({error:new Error("OAuth token refresh failed"),label:"token_refresh_failed"}),context:{component:ms.ANTHROPIC_OAUTH,heading:"OAuth token refresh failed"}});const o=await r.json();return await Or.set("anthropic",{type:"oauth",refresh:o.refresh_token,access:o.access_token,expires:Date.now()+1e3*o.expires_in}),o.access_token}catch(e){return void trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"token_refresh_exception"}),context:{component:ms.ANTHROPIC_OAUTH,heading:"OAuth token refresh exception"}})}}}async function getValidAccessToken2(){const e=await Or.get("anthropic");if(e)return"api"===e.type?e.key:"oauth"===e.type?await refreshAccessToken2():void 0}__name(generateCodeVerifier,"generateCodeVerifier"),__name(generateCodeChallenge,"generateCodeChallenge"),__name(generateState,"generateState"),e.createAuthorizationUrl=createAuthorizationUrl,__name(createAuthorizationUrl,"createAuthorizationUrl"),e.exchangeCodeForTokens=exchangeCodeForTokens2,__name(exchangeCodeForTokens2,"exchangeCodeForTokens"),e.refreshAccessToken=refreshAccessToken2,__name(refreshAccessToken2,"refreshAccessToken"),e.getValidAccessToken=getValidAccessToken2,__name(getValidAccessToken2,"getValidAccessToken")})(Fr||(Fr={})),pn(),Sn(),(e=>{const t="app_EMoamEEZ73f0CkXaXp7hrann",n="https://auth.openai.com",r="openid profile email offline_access",o="http://localhost:1455/auth/callback";function base64UrlEncode(e){return Buffer.from(e).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function generateRandomString2(e){const t=Y.randomBytes(e);let n="";for(let r=0;r<e;r++)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"[t[r]%66];return n}function generatePKCE2(){const e=generateRandomString2(64);return{verifier:e,challenge:base64UrlEncode(Y.createHash("sha256").update(e).digest())}}function buildAuthorizeUrl(e,s){const a=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:r,code_challenge:e.challenge,code_challenge_method:"S256",id_token_add_organizations:"true",codex_cli_simplified_flow:"true",state:s,originator:"codex_cli_rs"});return`${n}/oauth/authorize?${a.toString()}`}function parseJwtClaims(e){const t=e.split(".");if(3===t.length)try{return JSON.parse(Buffer.from(t[1],"base64url").toString("utf8"))}catch{return}}function extractAccountId(e){const t=[e.id_token,e.access_token].filter(Boolean);for(const e of t){const t=parseJwtClaims(e);if(!t)continue;const n=t.chatgpt_account_id||t["https://api.openai.com/auth"]?.chatgpt_account_id||t.organizations?.[0]?.id;if(n)return n}}async function exchangeCodeForTokens2(e,r,s){const a=await fetch(`${n}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:e,redirect_uri:o,client_id:t,code_verifier:r.verifier}).toString(),signal:s});if(!a.ok){const e=await a.text();throw new Error(`Codex token exchange failed: ${a.status} ${e}`)}return a.json()}async function refreshTokens(e){const o=await fetch(`${n}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e,client_id:t,scope:r}).toString()});if(!o.ok){const e=await o.text();throw new Error(`Codex token refresh failed: ${o.status} ${e}`)}return o.json()}function waitForCallback(e){const{state:t,signal:n}=e;return new Promise((e,r)=>{let o,s,a=!1;const i=__name(()=>{if(s&&clearTimeout(s),o){if(o.listening)try{o.close(()=>{})}catch{}o=void 0}n?.removeEventListener("abort",u)},"cleanup"),l=__name((t,n)=>{a||(a=!0,i(),t?r(t):e(n))},"finish"),u=__name(()=>{l(new Error("Authentication cancelled"))},"onAbort");n?.aborted?r(new Error("Authentication cancelled")):(n?.addEventListener("abort",u,{once:!0}),o=V(__name((e,n)=>{try{const r=new URL(e.url||"/","http://localhost:1455");if("/auth/callback"!==r.pathname)return n.writeHead(404),void n.end("Not found");const o=r.searchParams.get("code"),s=r.searchParams.get("state"),a=r.searchParams.get("error"),i=r.searchParams.get("error_description");if(a){const e=i||a;return n.writeHead(400,{"Content-Type":"text/html"}),n.end(renderErrorPage(e)),void l(new Error(`Codex OAuth error: ${e}`))}if(!o||!s)return n.writeHead(400,{"Content-Type":"text/html"}),n.end(renderErrorPage("Missing code or state")),void l(new Error("Codex OAuth: missing code or state"));if(s!==t)return n.writeHead(400,{"Content-Type":"text/html"}),n.end(renderErrorPage("State mismatch — possible CSRF attempt")),void l(new Error("Codex OAuth: state mismatch"));n.writeHead(200,{"Content-Type":"text/html"}),n.end("<!doctype html>\n<html>\n <head><title>Command Code — Codex Authorization Successful</title>\n <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0f0f0f;color:#eee}h1{color:#7ee787}</style>\n </head>\n <body><div><h1>Authorization successful</h1><p>You can close this window and return to Command Code.</p></div>\n <script>setTimeout(()=>window.close(),2000)<\/script></body>\n</html>"),l(null,o)}catch(e){n.writeHead(500),n.end("Internal error"),l(e instanceof Error?e:new Error(String(e)))}},"handler")),o.on("error",e=>l(e)),o.listen(1455,"127.0.0.1",()=>{s=setTimeout(()=>{l(new Error("Codex OAuth timed out waiting for browser callback"))},3e5)}))})}function renderSuccessPage(){return"<!doctype html>\n<html>\n <head><title>Command Code — Codex Authorization Successful</title>\n <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0f0f0f;color:#eee}h1{color:#7ee787}</style>\n </head>\n <body><div><h1>Authorization successful</h1><p>You can close this window and return to Command Code.</p></div>\n <script>setTimeout(()=>window.close(),2000)<\/script></body>\n</html>"}function renderErrorPage(e){return`<!doctype html>\n<html>\n <head><title>Command Code — Codex Authorization Failed</title>\n <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0f0f0f;color:#eee}h1{color:#ff7b72}</style>\n </head>\n <body><div><h1>Authorization failed</h1><p>${e.replace(/[&<>]/g,e=>"&"===e?"&amp;":"<"===e?"&lt;":"&gt;")}</p></div></body>\n</html>`}async function refreshAccessToken2(){const e=await Or.get("codex");if(e&&"oauth"===e.type){if(e.expires>Date.now()+3e5)return e.access;dlog("[Auth] codex: refreshing access token");try{const t=await refreshTokens(e.refresh),n=extractAccountId(t)??e.accountId;return await Or.set("codex",{type:"oauth",refresh:t.refresh_token||e.refresh,access:t.access_token,expires:Date.now()+1e3*(t.expires_in??3600),...n?{accountId:n}:{}}),t.access_token}catch(e){return void trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"codex_token_refresh_exception"}),context:{component:ms.CODEX_OAUTH,heading:"Codex token refresh exception"}})}}}async function getValidAccessToken2(){const e=await Or.get("codex");if(e)return"api"===e.type?e.key:"oauth"===e.type?refreshAccessToken2():void 0}async function getAccountId(){const e=await Or.get("codex");if(e&&"oauth"===e.type)return e.accountId}async function login(e){const{onAuth:t,onProgress:n,signal:r}=e;dlog("[Auth] codex: starting browser oauth flow");const o=generatePKCE2(),s=base64UrlEncode(Y.randomBytes(32)),a=buildAuthorizeUrl(o,s),i=waitForCallback({state:s,signal:r});let l;t({authorizeUrl:a}),n?.("Waiting for authorization in browser...");try{l=await i}catch(e){const t=e instanceof Error?e:new Error(String(e));throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"codex_oauth_callback_failed"}),context:{component:ms.CODEX_OAUTH,heading:"Codex oauth callback failed"}}),t}if(r?.aborted)throw new Error("Authentication cancelled");n?.("Exchanging authorization code...");const u=await exchangeCodeForTokens2(l,o,r);if(r?.aborted)throw new Error("Authentication cancelled");if(!u.refresh_token)throw new Error("Codex OAuth: issuer did not return a refresh_token");const d=extractAccountId(u);dlog("[Auth] codex: login success",{hasAccountId:!!d}),await Or.set("codex",{type:"oauth",refresh:u.refresh_token,access:u.access_token,expires:Date.now()+1e3*(u.expires_in??3600),...d?{accountId:d}:{}})}__name(base64UrlEncode,"base64UrlEncode"),__name(generateRandomString2,"generateRandomString"),__name(generatePKCE2,"generatePKCE"),__name(buildAuthorizeUrl,"buildAuthorizeUrl"),e.parseJwtClaims=parseJwtClaims,__name(parseJwtClaims,"parseJwtClaims"),e.extractAccountId=extractAccountId,__name(extractAccountId,"extractAccountId"),__name(exchangeCodeForTokens2,"exchangeCodeForTokens"),__name(refreshTokens,"refreshTokens"),__name(waitForCallback,"waitForCallback"),__name(renderSuccessPage,"renderSuccessPage"),__name(renderErrorPage,"renderErrorPage"),e.refreshAccessToken=refreshAccessToken2,__name(refreshAccessToken2,"refreshAccessToken"),e.getValidAccessToken=getValidAccessToken2,__name(getValidAccessToken2,"getValidAccessToken"),e.getAccountId=getAccountId,__name(getAccountId,"getAccountId"),e.login=login,__name(login,"login")})(Ur||(Ur={})),pn(),wn(),Sn(),(e=>{const t=atob("SXYxLmI1MDdhMDhjODdlY2ZlOTg="),n=["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"];async function startDeviceFlow(e){const n=e?.domain||"github.com",r=`https://${n}/login/device/code`;dlog("[Auth] startDeviceFlow",{domain:n,url:r});const o=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:t,scope:"read:user"})});if(!o.ok){const e=await o.text(),t=new Error(`Device code request failed: ${e}`);throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"device_flow_start_failed"}),context:{component:ms.COPILOT_OAUTH,heading:"Device code flow start failed"}}),t}const s=await o.json();return dlog("[Auth] startDeviceFlow success",{userCode:s.user_code,interval:s.interval,expiresIn:s.expires_in}),s}async function pollForGitHubAccessToken(e){const{deviceCode:n,interval:r,expiresIn:o,signal:s}=e,a=e.domain||"github.com",i=`https://${a}/login/oauth/access_token`,l=Date.now()+1e3*o;let u=1e3*r;for(dlog("[Auth] pollForGitHubAccessToken started",{domain:a,pollInterval:u,deadline:new Date(l).toISOString()});Date.now()<l;){if(s?.aborted)throw new Error("Authentication cancelled");if(await new Promise((e,t)=>{if(!s)return void setTimeout(e,u);const n=__name(()=>{clearTimeout(r),t(new Error("Authentication cancelled"))},"onAbort"),r=setTimeout(()=>{s.removeEventListener("abort",n),e()},u);s.addEventListener("abort",n,{once:!0})}),s?.aborted)throw new Error("Authentication cancelled");const e=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:t,device_code:n,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})}),r=await e.json();if("error"in r){if(dlog("[Auth] poll response error",r.error),"authorization_pending"===r.error)continue;if("slow_down"===r.error){u+=5e3,dlog("[Auth] poll slow_down, new interval",u);continue}if("expired_token"===r.error)throw new Error("Device code expired. Please try again.");if("access_denied"===r.error)throw new Error("Authorization was denied. Please try again.");throw new Error(`GitHub OAuth error: ${r.error}`)}if("access_token"in r)return dlog("[Auth] pollForGitHubAccessToken success, got access_token"),r}throw new Error("Device code expired. Please try again.")}async function refreshCopilotToken(e){const{refreshToken:t,enterpriseDomain:n}=e;dlog("[Auth] refreshCopilotToken called",{hasRefreshToken:!!t,enterpriseDomain:n});let r="https://api.github.com/copilot_internal/v2/token";n&&(r=`https://${n}/api/v3/copilot_internal/v2/token`);const o=await fetch(r,{method:"GET",headers:{Authorization:`token ${t}`,Accept:"application/json",...Ot}});if(!o.ok){const e=await o.text(),t=new Error(`Copilot token refresh failed: ${e}`);throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"copilot_token_refresh_failed"}),context:{component:ms.COPILOT_OAUTH,heading:"Copilot token refresh failed"}}),t}const s=await o.json(),a=1e3*s.expires_at-3e5;return dlog("[Auth] refreshCopilotToken success",{expiresAt:new Date(a).toISOString(),refreshIn:s.refresh_in}),{token:s.token,expires:a}}async function refreshAccessToken2(){const e=await Or.get("github-copilot");if(e&&"oauth"===e.type){if(e.expires>Date.now()+3e5)return dlog("[Auth] refreshAccessToken: token still valid",{expires:new Date(e.expires).toISOString()}),e.access;dlog("[Auth] refreshAccessToken: token expired, refreshing...");try{const t=await refreshCopilotToken({refreshToken:e.refresh});return await Or.set("github-copilot",{type:"oauth",refresh:e.refresh,access:t.token,expires:t.expires}),t.token}catch(e){return trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"copilot_token_refresh_exception"}),context:{component:ms.COPILOT_OAUTH,heading:"Copilot token refresh exception"}}),void dlog("[Auth] refreshAccessToken: refresh failed, keeping auth for retry")}}else dlog("[Auth] refreshAccessToken: no copilot oauth auth found")}async function getValidAccessToken2(){dlog("[Auth] getValidAccessToken called for copilot");const e=await Or.get("github-copilot");if(e){if(dlog("[Auth] getValidAccessToken: found stored auth",{type:e.type}),"api"===e.type)return e.key;if("oauth"===e.type)return await refreshAccessToken2()}dlog("[Auth] getValidAccessToken: no stored auth, checking env vars");for(const e of n){const t=process.env[e];if(t)try{const e=await refreshCopilotToken({refreshToken:t});return await Or.set("github-copilot",{type:"oauth",refresh:t,access:e.token,expires:e.expires}),e.token}catch{continue}}}async function login(e){const{onAuth:t,onProgress:n,signal:r}=e;dlog("[Auth] login: starting copilot device code flow"),n?.("Starting device code flow...");const o=await startDeviceFlow();t({userCode:o.user_code,verificationUri:o.verification_uri}),n?.("Waiting for authorization...");const s=await pollForGitHubAccessToken({deviceCode:o.device_code,interval:o.interval,expiresIn:o.expires_in,signal:r});n?.("Getting Copilot access...");const a=await refreshCopilotToken({refreshToken:s.access_token});dlog("[Auth] login: storing copilot tokens"),await Or.set("github-copilot",{type:"oauth",refresh:s.access_token,access:a.token,expires:a.expires}),dlog("[Auth] login: copilot login complete")}e.startDeviceFlow=startDeviceFlow,__name(startDeviceFlow,"startDeviceFlow"),e.pollForGitHubAccessToken=pollForGitHubAccessToken,__name(pollForGitHubAccessToken,"pollForGitHubAccessToken"),e.refreshCopilotToken=refreshCopilotToken,__name(refreshCopilotToken,"refreshCopilotToken"),e.refreshAccessToken=refreshAccessToken2,__name(refreshAccessToken2,"refreshAccessToken"),e.getValidAccessToken=getValidAccessToken2,__name(getValidAccessToken2,"getValidAccessToken"),e.login=login,__name(login,"login")})(Br||(Br={})),pn(),pn(),pn(),pn();var Hr=!1,Wr=[],Gr=null;function startEarlyInputCapture(){Hr||(Hr=!0,Wr=[],Gr=__name(e=>{const t=e.toString();t&&!isControlSequenceToSkip(t)&&Wr.push(t)},"earlyInputHandler"),process.stdin.on("data",Gr))}function stopEarlyInputCapture(){Hr&&Gr&&(process.stdin.off("data",Gr),Gr=null,Hr=!1)}function consumeBufferedInput(){const e=Wr.join("");return Wr=[],e}function hasBufferedInput(){return Wr.length>0}function isControlSequenceToSkip(e){return!!(e.startsWith("[200~")||e.startsWith("[201~")||e.startsWith("")||e.startsWith(""))}__name(startEarlyInputCapture,"startEarlyInputCapture"),__name(stopEarlyInputCapture,"stopEarlyInputCapture"),__name(consumeBufferedInput,"consumeBufferedInput"),__name(hasBufferedInput,"hasBufferedInput"),__name(isControlSequenceToSkip,"isControlSequenceToSkip"),pn();var zr=/\s|[(){}[\]<>.,;:'"!?+\-=*/\\|&%^$#@~`]/;function isWordBoundary(e){return!e||0===e.length||zr.test(e)}function findPreviousWordBoundary(e,t){if(!e||t<=0)return 0;let n=Math.min(t,e.length);for(;n>0&&isWordBoundary(e[n-1]||"");)n--;for(;n>0&&!isWordBoundary(e[n-1]||"");)n--;return n}function findNextWordBoundary(e,t){if(!e)return 0;if(t>=e.length)return e.length;let n=Math.max(0,t);for(;n<e.length&&isWordBoundary(e[n]||"");)n++;for(;n<e.length&&!isWordBoundary(e[n]||"");)n++;return n}function deleteWordBackwards(e,t){if(!e||t<=0)return{text:e||"",cursor:0};const n=findPreviousWordBoundary(e,t);return{text:e.slice(0,n)+e.slice(t),cursor:n}}function clampCursor(e,t){return Math.max(0,Math.min(e,t))}function findLineStart(e,t){if(!e||t<=0)return 0;for(let n=Math.min(t,e.length)-1;n>=0;n--)if("\n"===e[n])return n+1;return 0}function findLineEnd(e,t){if(!e)return 0;if(t>=e.length)return e.length;for(let n=Math.max(0,t);n<e.length;n++)if("\n"===e[n])return n;return e.length}function moveCursorUp(e,t){if(!e)return 0;const n=findLineStart(e,t);if(0===n)return t;const r=t-n,o=n-1,s=findLineStart(e,o),a=o-s;return s+Math.min(r,a)}function moveCursorDown(e,t){if(!e)return 0;const n=findLineStart(e,t),r=findLineEnd(e,t);if(r===e.length)return t;const o=t-n,s=r+1,a=findLineEnd(e,s)-s;return s+Math.min(o,a)}function insertTextAt(e,t,n){const r=e||"",o=clampCursor(t,r.length);return{text:r.slice(0,o)+n+r.slice(o),cursor:o+n.length}}function deleteCharBefore(e,t){return!e||t<=0?{text:e||"",cursor:0}:{text:e.slice(0,t-1)+e.slice(t),cursor:t-1}}function deleteCharAt(e,t){return!e||t>=e.length?{text:e||"",cursor:t}:{text:e.slice(0,t)+e.slice(t+1),cursor:t}}__name(isWordBoundary,"isWordBoundary"),__name(findPreviousWordBoundary,"findPreviousWordBoundary"),__name(findNextWordBoundary,"findNextWordBoundary"),__name(deleteWordBackwards,"deleteWordBackwards"),__name(clampCursor,"clampCursor"),__name(findLineStart,"findLineStart"),__name(findLineEnd,"findLineEnd"),__name(moveCursorUp,"moveCursorUp"),__name(moveCursorDown,"moveCursorDown"),__name(insertTextAt,"insertTextAt"),__name(deleteCharBefore,"deleteCharBefore"),__name(deleteCharAt,"deleteCharAt"),pn();var qr="[200~",Vr="[201~";function stripBracketedPaste(e){return e.includes(qr)||e.includes(Vr)?e.replaceAll(qr,"").replaceAll(Vr,""):null}function processBracketedPasteInput({input:e,value:t,cursor:n}){const r=stripBracketedPaste(e);if(null===r)return{value:t,cursor:n,handled:!1};if(0===r.length)return{value:t,cursor:n,handled:!0};const o=insertTextAt(t,n,r);return{value:o.text,cursor:o.cursor,handled:!0}}function processWordLeft(e,t){return{value:e,cursor:findPreviousWordBoundary(e,t),handled:!0}}function processWordRight(e,t){return{value:e,cursor:findNextWordBoundary(e,t),handled:!0}}function processLineStart(e,t){return{value:e,cursor:findLineStart(e,t),handled:!0}}function processLineEnd(e,t){return{value:e,cursor:findLineEnd(e,t),handled:!0}}function processDeleteWord(e,t){const n=deleteWordBackwards(e,t);return{value:n.text,cursor:n.cursor,handled:!0}}function processDeleteToEnd(e,t){const n=findLineEnd(e,t);return{value:e.slice(0,t)+e.slice(n),cursor:t,handled:!0}}function processDeleteToStart(e,t){const n=findLineStart(e,t);return{value:e.slice(0,n)+e.slice(t),cursor:n,handled:!0}}function processForwardDelete(e,t){const n=deleteCharAt(e,t);return{value:n.text,cursor:n.cursor,handled:!0}}function processBackspace(e,t){const n=deleteCharBefore(e,t);return{value:n.text,cursor:n.cursor,handled:!0}}__name(stripBracketedPaste,"stripBracketedPaste"),__name(processBracketedPasteInput,"processBracketedPasteInput"),__name(processWordLeft,"processWordLeft"),__name(processWordRight,"processWordRight"),__name(processLineStart,"processLineStart"),__name(processLineEnd,"processLineEnd"),__name(processDeleteWord,"processDeleteWord"),__name(processDeleteToEnd,"processDeleteToEnd"),__name(processDeleteToStart,"processDeleteToStart"),__name(processForwardDelete,"processForwardDelete"),__name(processBackspace,"processBackspace");var Kr=/^[\u007f\b]{2,}$/;function processBackspaceRun(e,t,n){let r=t,o=n;for(let t=0;t<e.length;t++){const e=deleteCharBefore(r,o);r=e.text,o=e.cursor}return{value:r,cursor:o,handled:!0}}function processCursorLeft(e,t,n){return n?t<=0?{value:e,cursor:t,handled:!0}:{value:e,cursor:t-1,handled:!0}:{value:e,cursor:t,handled:!0}}function processCursorRight(e,t,n){return n?t>=e.length?{value:e,cursor:t,handled:!0}:{value:e,cursor:t+1,handled:!0}:{value:e,cursor:t,handled:!0}}function processCursorUp(e,t,n){return n?{value:e,cursor:moveCursorUp(e,t),handled:!0}:{value:e,cursor:t,handled:!0}}function processCursorDown(e,t,n){return n?{value:e,cursor:moveCursorDown(e,t),handled:!0}:{value:e,cursor:t,handled:!0}}function processCharacterInput(e,t,n){const r=n.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]|\x1b.*/g,"");if(0===r.length)return{value:e,cursor:t,handled:!1};const o=insertTextAt(e,t,r);return{value:o.text,cursor:o.cursor,handled:!0}}function processRawInput(e,t,n){return isWordLeftSequence(e)?processWordLeft(t,n):isWordRightSequence(e)?processWordRight(t,n):isHomeSequence(e)?processLineStart(t,n):isEndSequence(e)?processLineEnd(t,n):isCtrlA(e)?processLineStart(t,n):isCtrlE(e)?processLineEnd(t,n):isDeleteWordSequence(e)?processDeleteWord(t,n):isCtrlK(e)?processDeleteToEnd(t,n):isCtrlU(e)?processDeleteToStart(t,n):isForwardDeleteSequence(e)?processForwardDelete(t,n):Kr.test(e)?processBackspaceRun(e,t,n):{value:t,cursor:n,handled:!1}}function isIgnoredKey(e,t){return!!(t.ctrl&&"c"===e||t.tab||t.shift&&t.tab||t.meta&&"m"===e)}function processInkInput(e,t,n,r,o){const s=t;return s.meta&&t.leftArrow?processLineStart(n,r):s.meta&&t.rightArrow?processLineEnd(n,r):s.meta&&"b"===e?processWordLeft(n,r):s.meta&&"f"===e?processWordRight(n,r):t.ctrl&&"a"===e?processLineStart(n,r):t.ctrl&&"e"===e?processLineEnd(n,r):t.ctrl&&"w"===e?processDeleteWord(n,r):t.ctrl&&"k"===e?processDeleteToEnd(n,r):t.ctrl&&"u"===e?processDeleteToStart(n,r):t.leftArrow?processCursorLeft(n,r,o):t.rightArrow?processCursorRight(n,r,o):t.upArrow?processCursorUp(n,r,o):t.downArrow?processCursorDown(n,r,o):t.backspace||t.delete?processBackspace(n,r):!t.ctrl&&!s.meta&&e.length>0?processCharacterInput(n,r,e):{value:n,cursor:r,handled:!1}}function useCursorState({value:e,focus:t,showCursor:n,initialCursor:r}){const[o,s]=de(r??(e||"").length),a=me(o),i=me(e);pe(()=>{const r=i.current;if(i.current=e,e===r)return;if(!t)return;if(!n)return;const l=(e||"").length;o>l&&(s(l),a.current=l)},[e,t,n,o]);const l=he(e=>{s(e),a.current=e},[]);return{cursor:o,setCursor:l,cursorRef:a}}function useRawStdinHandler({focus:e,valueRef:t,cursorRef:n,onUpdate:r,setHandled:o,stripBracketedPaste:s=!1}){const a=me(!1);pe(()=>{if(!e)return;const i=process.stdin,l=__name(e=>{o(!0);const t=clampCursor(e.cursor,e.value.length);r(e.value,t),setTimeout(()=>o(!1),0)},"emitStdinResult"),u=__name(e=>{const r=e.toString();if(s){const e=processBracketedPasteInput({input:r,value:t.current,cursor:n.current});if(e.handled)return void l(e)}const o=processRawInput(r,t.current,n.current);o.handled&&l(o)},"handleRawInput");if(i.on("data",u),!a.current&&hasBufferedInput()){a.current=!0;const e=consumeBufferedInput();e&&u(Buffer.from(e))}return stopEarlyInputCapture(),()=>{i.off("data",u)}},[e,t,n,r,o,s])}function useInkInputHandler({focus:e,showCursor:t,valueRef:n,cursorRef:r,isHandledByStdin:o,onUpdate:s,onSubmit:a}){Ee((e,i)=>{if(o())return;if(isIgnoredKey(e,i))return;if(i.return)return void a?.(n.current);const l=processInkInput(e,i,n.current,r.current,t);if(!l.handled)return;const u=clampCursor(l.cursor,l.value.length);s(l.value,u)},{isActive:e})}function useSyncedRef(e){const t=me(e);return t.current=e,t}function useEchoAwareValueRef(e){const t=me(e),n=me([]),r=n.current.indexOf(e);return-1!==r?n.current.splice(0,r+1):t.current!==e&&(t.current=e,n.current=[]),{valueRef:t,noteEmittedValue:he(e=>{n.current.push(e),n.current.length>64&&n.current.shift()},[])}}__name(processBackspaceRun,"processBackspaceRun"),__name(processCursorLeft,"processCursorLeft"),__name(processCursorRight,"processCursorRight"),__name(processCursorUp,"processCursorUp"),__name(processCursorDown,"processCursorDown"),__name(processCharacterInput,"processCharacterInput"),__name(processRawInput,"processRawInput"),__name(isIgnoredKey,"isIgnoredKey"),__name(processInkInput,"processInkInput"),__name(useCursorState,"useCursorState"),__name(useRawStdinHandler,"useRawStdinHandler"),__name(useInkInputHandler,"useInkInputHandler"),__name(useSyncedRef,"useSyncedRef"),__name(useEchoAwareValueRef,"useEchoAwareValueRef"),pn(),pn();var Yr={PALETTE:{CYAN:"#7AD4D6",GREEN:"#2EBD8E",GRAY:"#8A94A8",WHITE:"#E5E5E5",YELLOW:"#F5B731",RED:"#E84057",BLUE:"#5945B1",MAGENTA:"#F2608A",DIM:"#8A94A8",DIMMER:"#4C556A",DIMMEST:"#353D50"},ACCENT:"#E4CCFF",TASTE_COLORS:{BADGE_BG:"#08575B",BADGE_FG:"#f4f4f4",TEXT:"#02888E"},THINKING_COLOR:"#E4CCFF",QUEUED_COLOR:"#F5B731",DIFF_COLORS:{REMOVED_BG:"#5C0112",ADDED_BG:"#04473A",REMOVED_TEXT:"#E16B7A",ADDED_TEXT:"#4CC88E",REMOVED_HIGHLIGHT_BG:"#7D2233",ADDED_HIGHLIGHT_BG:"#2E6B4A",LINE_NUM:"#8A94A8"},TOOL_BADGE_COLORS:{BG:"#5945B1",FG:"#f4f4f4"},STATUS_PILL_COLORS:{BG:"#2D2B55",FG:"#E4CCFF"},AGENT_BADGE_COLORS:{BG:"#6943FF",FG:"#f4f4f4"},STATUS_COLORS:{SUCCESS:"#35AD68",ERROR:"#E84057",WARNING:"#F5B731",IN_PROGRESS:"#E4CCFF"},IDE_COLOR:"#B1BAF9",MUTED:"#8A94A8",USER_MSG_COLORS:{BG:"#2D2B55",POINTER:"#A599E9",FG:"#E5E5E5"},HIGHLIGHT_BAR_BG:"#2D2B55",AI_ICON_COLOR:"#A599E9",PLAN_MODE_COLOR:"#F5B731",ACCEPT_EDITS_COLOR:"#8367F4",PR_COLORS:{OPEN:"#F5B731",MERGED:"#A78BFA"},RETRY_COLOR:"#F49D2A",MARKDOWN_COLORS:{CODE:"#B1BAF9",HEADING:"#A599E9"},SHIMMER_COLORS:["#A599E9","#E4CCFF","#ABA5CE","#CCC7E1","#FFFFFF","#EADAFF","#ABA5CE","#E4CCFF","#A599E9"],SHIMMER_DEFAULT:"#6E61A3",LOGO_BANNER_COLORS:{TEXT:"#B1BAF9",BG:"#2B2758"}},Qr={dark:Yr,light:{...Yr,PALETTE:{...Yr.PALETTE,CYAN:"#0F6B6D",GREEN:"#047857",GRAY:"#4B5563",WHITE:"#111827",YELLOW:"#92600A",RED:"#BE123C",MAGENTA:"#BE185D",DIM:"#4B5563"},ACCENT:"#5B21B6",TASTE_COLORS:{...Yr.TASTE_COLORS,TEXT:"#0F6B6D"},THINKING_COLOR:"#5B21B6",QUEUED_COLOR:"#92600A",DIFF_COLORS:{...Yr.DIFF_COLORS,REMOVED_BG:"#FEE2E2",ADDED_BG:"#CCFBF1",REMOVED_TEXT:"#BE123C",ADDED_TEXT:"#0F766E",REMOVED_HIGHLIGHT_BG:"#FECDD3",ADDED_HIGHLIGHT_BG:"#99F6E4"},STATUS_PILL_COLORS:{BG:"#4A4570",FG:"#E4CCFF"},STATUS_COLORS:{...Yr.STATUS_COLORS,SUCCESS:"#047857",ERROR:"#BE123C",WARNING:"#92600A",IN_PROGRESS:"#5B21B6"},IDE_COLOR:"#4338CA",MUTED:"#4B5563",USER_MSG_COLORS:{...Yr.USER_MSG_COLORS,BG:"#4A4570",POINTER:"#E4CCFF",FG:"#FFFFFF"},HIGHLIGHT_BAR_BG:"#DDD6FE",AI_ICON_COLOR:"#5B21B6",PLAN_MODE_COLOR:"#92600A",PR_COLORS:{OPEN:"#92600A",MERGED:"#6D28D9"},RETRY_COLOR:"#92600A",MARKDOWN_COLORS:{CODE:"#4338CA",HEADING:"#5B21B6"},SHIMMER_COLORS:["#D8B4FE","#E4CCFF","#F5F3FF","#FFFFFF","#F5F3FF","#E4CCFF","#D8B4FE","#F5F3FF","#FFFFFF"],SHIMMER_DEFAULT:"#E4CCFF",LOGO_BANNER_COLORS:{TEXT:"#B1BAF9",BG:"#2B2758"}}},Jr="dark",Xr={...Yr.PALETTE},Zr=Yr.ACCENT,eo={...Yr.TASTE_COLORS},to=Yr.THINKING_COLOR,no=Yr.QUEUED_COLOR,ro={...Yr.DIFF_COLORS},oo={...Yr.TOOL_BADGE_COLORS},so={...Yr.STATUS_PILL_COLORS},ao={...Yr.AGENT_BADGE_COLORS},io={...Yr.STATUS_COLORS},lo=Yr.IDE_COLOR,co=Yr.MUTED,uo={...Yr.USER_MSG_COLORS},mo=Yr.AI_ICON_COLOR,po=Yr.PLAN_MODE_COLOR,ho=Yr.ACCEPT_EDITS_COLOR,fo={...Yr.PR_COLORS},yo=Yr.RETRY_COLOR,wo={...Yr.MARKDOWN_COLORS},So=[...Yr.SHIMMER_COLORS],Eo=Yr.SHIMMER_DEFAULT,bo={...Yr.LOGO_BANNER_COLORS},ko=Xr.DIM,Co=Yr.HIGHLIGHT_BAR_BG;function isLightTheme(){return"light"===Jr}function applyTuiTheme(e){const t=Qr[e];Jr=e,Object.assign(Xr,t.PALETTE),Zr=t.ACCENT,Object.assign(eo,t.TASTE_COLORS),to=t.THINKING_COLOR,no=t.QUEUED_COLOR,Object.assign(ro,t.DIFF_COLORS),Object.assign(oo,t.TOOL_BADGE_COLORS),Object.assign(so,t.STATUS_PILL_COLORS),Object.assign(ao,t.AGENT_BADGE_COLORS),Object.assign(io,t.STATUS_COLORS),lo=t.IDE_COLOR,co=t.MUTED,Object.assign(uo,t.USER_MSG_COLORS),mo=t.AI_ICON_COLOR,po=t.PLAN_MODE_COLOR,ho=t.ACCEPT_EDITS_COLOR,Object.assign(fo,t.PR_COLORS),yo=t.RETRY_COLOR,Object.assign(wo,t.MARKDOWN_COLORS),So.splice(0,So.length,...t.SHIMMER_COLORS),Eo=t.SHIMMER_DEFAULT,Object.assign(bo,t.LOGO_BANNER_COLORS),ko=Xr.DIM,Co=t.HIGHLIGHT_BAR_BG}function stripBracketedPasteMarkers(e){return e.replace(/\x1B\[200~/g,"").replace(/\[200~/g,"").replace(/\x1B\[201~/g,"").replace(/\[201~/g,"")}function processBracketedPaste(e){const t=e.includes("[200~")||e.includes("[200~"),n=e.includes("[201~")||e.includes("[201~");if(!t&&!n)return{isPasteStart:!1,isPasteEnd:!1,cleanedContent:e};const r=stripBracketedPasteMarkers(e);let o,s,a;if(t){const t=e.match(/(\x1B)?\[200~/);if(t&&void 0!==t.index){o=e.slice(0,t.index);const r=e.slice(t.index+t[0].length);if(n){const e=r.match(/(\x1B)?\[201~/);e&&void 0!==e.index&&(s=r.slice(0,e.index))}else s=r}}if(n){const t=e.match(/(\x1B)?\[201~/);t&&void 0!==t.index&&(a=e.slice(t.index+t[0].length))}return{isPasteStart:t,isPasteEnd:n,cleanedContent:r,textBeforePaste:o,pastedContent:s,textAfterPaste:a}}function enableBracketedPasteMode(){process.stdout.write("[?2004h")}function disableBracketedPasteMode(){process.stdout.write("[?2004l")}function pastedLineCount(e){return(e.endsWith("\n")?e.slice(0,-1):e).split("\n").length}function pastedTextPreview(e){const t=e.trim().split(/\s+/).filter(Boolean);if(0===t.length)return"";const n=t.slice(0,3).join(" "),r=n.slice(0,10).trimEnd();return t.length>3||r.length<n.length?`${r}…`:r}function pastedTextToken(e){const t=pastedLineCount(e),n=pastedTextPreview(e);return n?`[${n} +${t}L]`:`[+${t}L]`}__name(isLightTheme,"isLightTheme"),__name(applyTuiTheme,"applyTuiTheme"),pn(),__name(stripBracketedPasteMarkers,"stripBracketedPasteMarkers"),__name(processBracketedPaste,"processBracketedPaste"),__name(enableBracketedPasteMode,"enableBracketedPasteMode"),__name(disableBracketedPasteMode,"disableBracketedPasteMode"),__name(pastedLineCount,"pastedLineCount"),__name(pastedTextPreview,"pastedTextPreview"),__name(pastedTextToken,"pastedTextToken");var vo=/\[[^\[\]]*\+\d+L\]/g,To=ne.hex(Xr.DIM);function pastedTokenRanges(e){const t=[],n=new RegExp(vo.source,"g");let r;for(;null!==(r=n.exec(e));)t.push([r.index,r.index+r[0].length]);return t}function renderPlainSpan(e,t,n,r,o){let s="";for(let a=t;a<n;a++){const t=e[a];s+=o&&a===r?"\n"===t?Te.inverse(" ")+"\n":Te.inverse(t):t}return s}function renderTokenSpan(e,t,n,r,o){return o&&r>=t&&r<n?To(e.slice(t,r))+Te.inverse(e[r])+To(e.slice(r+1,n)):To(e.slice(t,n))}function renderPlaceholder(e,t){return t?0===e.length?Te.inverse(" "):Te.inverse(e[0])+To(e.slice(1)):To(e)}function renderValue(e,t,n){const r=pastedTokenRanges(e);if(!n&&0===r.length)return e;if(n&&0===e.length)return Te.inverse(" ");let o="",s=0;for(const[a,i]of r)o+=renderPlainSpan(e,s,a,t,n),o+=renderTokenSpan(e,a,i,t,n),s=i;return o+=renderPlainSpan(e,s,e.length,t,n),n&&t===e.length&&(o+=Te.inverse(" ")),o}function wrapWithIndent(e,t,n){if(t<=n)return e;const r=" ".repeat(n),o=t-n,s=t;if(xe(e).length<=s)return e;const a=e.split(/(\s+)/);let i="",l=0,u=!0;for(const e of a){const t=xe(e).length;if(l+t>(u?s:o)&&l>0&&(i+="\n"+r,l=n,u=!1),i+=e,l+=t,e.includes("\n")){const t=e.substring(e.lastIndexOf("\n")+1);l=xe(t).length,u=!0}}return i}function getDisplayValue(e,t,n,r,o){const s=r&&o;return t&&0===e.length?renderPlaceholder(t,s):renderValue(e,n,s)}function getMaskedValue(e,t){return t?t.repeat(e.length):e}__name(pastedTokenRanges,"pastedTokenRanges"),__name(renderPlainSpan,"renderPlainSpan"),__name(renderTokenSpan,"renderTokenSpan"),__name(renderPlaceholder,"renderPlaceholder"),__name(renderValue,"renderValue"),__name(wrapWithIndent,"wrapWithIndent"),__name(getDisplayValue,"getDisplayValue"),__name(getMaskedValue,"getMaskedValue");var xo={white:Te.white,green:Te.green,red:Te.red,blue:Te.blue,yellow:Te.yellow,cyan:Te.cyan,magenta:Te.magenta,gray:Te.gray,grey:Te.gray};function createStdinUpdateHandler(e,t,n,r){return(o,s)=>{e(s),o!==t.current&&(r(o),t.current=o,n.current(o))}}function createInkUpdateHandler(e,t,n,r){return(o,s)=>{e(s),o!==t.current&&(r(o),t.current=o,n.current(o))}}function TextInput({value:e,placeholder:t="",focus:n=!0,mask:r,showCursor:o=!0,onChange:s,onSubmit:a,onCursorChange:i,prefix:l="",prefixColor:u,singleLine:d=!1,maxWidth:m,stripBracketedPaste:g=!1,initialCursor:h}){const f=me(!1),{valueRef:y,noteEmittedValue:w}=useEchoAwareValueRef(e),S=useSyncedRef(s),{cursor:E,setCursor:k,cursorRef:C}=useCursorState({value:e,focus:n,showCursor:o,initialCursor:h});ce.useEffect(()=>{i?.(E)},[E,i]);const v=he(createStdinUpdateHandler(k,y,S,w),[k,y,S,w]),T=he(createInkUpdateHandler(k,y,S,w),[k,y,S,w]),x=he(e=>{f.current=e},[]),P=he(()=>f.current,[]);useRawStdinHandler({focus:n,valueRef:y,cursorRef:C,onUpdate:v,setHandled:x,stripBracketedPaste:g}),useInkInputHandler({focus:n,showCursor:o,valueRef:y,cursorRef:C,isHandledByStdin:P,onUpdate:T,onSubmit:a});const{stdout:A}=be(),I=A?.columns??80,M=getMaskedValue(e,r),R=u?xo[u]:void 0,_=l?R?R(l):l:"",D=getDisplayValue(M,t,E,o,n),N=l?.length??0,$=_+D;if(d){const e=$.replace(/\n/g," ");return null!=m?ce.createElement(ye,{width:m},ce.createElement(we,{wrap:"truncate"},e)):ce.createElement(we,{wrap:"truncate"},e)}const L=wrapWithIndent($,I,N);return ce.createElement(we,{wrap:"wrap"},L)}__name(createStdinUpdateHandler,"createStdinUpdateHandler"),__name(createInkUpdateHandler,"createInkUpdateHandler"),__name(TextInput,"TextInput"),An(),pn(),wn(),pn();var Po=new Set(["dark","light"]);function isCliTheme(e){return"string"==typeof e&&Po.has(e)}function getSupportedEfforts(e){return findModelById(e)?.reasoningEfforts??null}function modelSupportsReasoningEffort(e){return null!==getSupportedEfforts(e)}function getContextLimit(e){const t=getCanonicalModelId(e);return findModelById(t)?.contextWindow??2e5}function findModelById(e){return Object.values(Zt).find(t=>t.id===e)}function getProviderFromModel(e){return findModelById(e)?.provider??Lt.ANTHROPIC}function getAllModelOptions(){return Object.values(Zt)}function getModelGroupLabel(e){return e.vendorLabel??rn[e.provider]??e.provider}function groupModelsByDisplayOrder(e){const t=new Map;for(const n of e){const e=getModelGroupLabel(n),r=t.get(e)??[];r.push(n),t.set(e,r)}return[...on.filter(e=>t.has(e)),...[...t.keys()].filter(e=>!on.includes(e))].map(e=>({label:e,models:t.get(e)}))}function getModelGroupsInOrder(){return groupModelsByDisplayOrder(getAllModelOptions().filter(e=>!e.hidden))}function resolveKnownModelId(e){const t=getCanonicalModelId(e);return findModelById(t)?t:void 0}function modelSupportsVision(e){const t=findModelById(getCanonicalModelId(e));return!t?.inputModalities||t.inputModalities.includes("image")}__name(isCliTheme,"isCliTheme"),Sn(),pn(),wn(),__name(getSupportedEfforts,"getSupportedEfforts"),__name(modelSupportsReasoningEffort,"modelSupportsReasoningEffort"),__name(getContextLimit,"getContextLimit"),__name(findModelById,"findModelById"),__name(getProviderFromModel,"getProviderFromModel"),__name(getAllModelOptions,"getAllModelOptions"),__name(getModelGroupLabel,"getModelGroupLabel"),__name(groupModelsByDisplayOrder,"groupModelsByDisplayOrder"),__name(getModelGroupsInOrder,"getModelGroupsInOrder"),__name(resolveKnownModelId,"resolveKnownModelId"),__name(modelSupportsVision,"modelSupportsVision");var Ao=/[-@]\d{8}$/,Io="workers-ai/@cf/";function ossEntryMatches(e,t){return e.canonicalId.toLowerCase()===t||Object.values(e.providers).some(e=>"string"==typeof e&&e.toLowerCase()===t)}function tryResolveCanonical(e){const t=(tn[e.toLowerCase()]??e).toLowerCase(),n=Object.values(Zt).find(e=>e.id.toLowerCase()===t);if(n)return n.id;const r=en.find(e=>ossEntryMatches(e,t));return r?.canonicalId}function getCanonicalModelId(e){if(!e)return e;const t=e.startsWith(Io)?e.slice(Io.length):e,n=tryResolveCanonical(t);if(n)return n;const r=t.replace(Ao,"");return r===t?t:tryResolveCanonical(r)??t}function getModelDisplayName(e){const t=getCanonicalModelId(e),n=Object.values(Zt).find(e=>e.id===t);return n?.name??e}async function loadUserConfig(){try{const e=getConfigFile();return parseJSON(await F.readFile(e,"utf-8"))||{}}catch{return{}}}async function saveUserConfig(e){try{const t=getConfigFile();S.writeFileSync(t,JSON.stringify(e,null,2)),S.chmodSync(t,384)}catch(e){throw new Error(`Failed to save user config: ${e}`)}}async function updateUserConfig(e){const t=await loadUserConfig(),n=t.model,r={...t,...e,model:e.model??n};await saveUserConfig(r)}__name(ossEntryMatches,"ossEntryMatches"),__name(tryResolveCanonical,"tryResolveCanonical"),__name(getCanonicalModelId,"getCanonicalModelId"),__name(getModelDisplayName,"getModelDisplayName"),__name(loadUserConfig,"loadUserConfig"),__name(saveUserConfig,"saveUserConfig"),__name(updateUserConfig,"updateUserConfig");var Mo=null,Ro=null,_o=null;async function isOAuthEnforced(){if(null!==Mo)return Mo;if(isInternalTeamDisableFlagPresent())return dlog("[Auth] OAuth disabled via --xco flag"),await updateUserConfig({forceOAuth:!1}),Mo=!1,!1;if(isInternalTeamFlagPresent()){dlog("[Auth] OAuth enabled via --co flag");const e=await loadUserConfig(),t=await resolveOAuthProvider({currentProvider:e.provider});return dlog("[Auth] --co resolved provider",t),await updateUserConfig({provider:t,forceOAuth:!0}),Mo=!0,!0}const e=await loadUserConfig();return(Mo=e.forceOAuth??!1)&&dlog("[Auth] using OAuth (persisted from previous --co)"),Mo}__name(isOAuthEnforced,"isOAuthEnforced");var Do=["anthropic","github-copilot","codex"];async function resolveOAuthProvider(e){const{currentProvider:t}=e;if(t&&Do.includes(t))return t;const n=await Or.get("github-copilot"),r=await Or.get("codex"),o=(await Or.get("anthropic"),n?"github-copilot":r?"codex":"anthropic");return dlog("[Auth] resolveOAuthProvider fallback",{from:t,to:o}),o}function validateOAuthToken(e){const{token:t,provider:n}=e;if(n&&Do.includes(n)&&!t)throw new Error("OAuth authentication required. Please use /provider command\nSelect your provider and complete the OAuth setup.")}async function getOAuthCredentials(e){const{provider:t}=e;return"anthropic"===t?{token:await Fr.getValidAccessToken(),oauthProvider:"anthropic"}:"github-copilot"===t?{token:await Br.getValidAccessToken(),oauthProvider:"github-copilot"}:"codex"===t?{token:await Ur.getValidAccessToken(),oauthProvider:"codex"}:{token:void 0,oauthProvider:void 0}}__name(resolveOAuthProvider,"resolveOAuthProvider"),__name(validateOAuthToken,"validateOAuthToken"),__name(getOAuthCredentials,"getOAuthCredentials");var No,$o,Lo,Oo=null;function readDiskDefaultModel(){if(null!==Oo)return Oo;try{const e=getConfigFile(),t=parseJSON(S.readFileSync(e,"utf-8"))||{};Oo=t.model??nn}catch{Oo=nn}return Oo}async function getSelectedModel(){return No||Lo||readDiskDefaultModel()}function setModelOverride(e){No=e}function clearModelOverride(){No=void 0}function setGoalMaxTurnsOverride(e){$o=e}function getGoalMaxTurnsOverride(){return $o}function setSessionModel(e){Lo=e}function hasRuntimeModelSelection(){return void 0!==No||void 0!==Lo}function shouldAdoptResumedModel(e){const{inTuiResume:t}=e;return t||!hasRuntimeModelSelection()}function getConfiguredModel(){return No||Lo||readDiskDefaultModel()}function setSelectedModel(e){setSessionModel(e.model)}async function persistDefaultModel(e){await updateUserConfig({model:e.model}),Oo=e.model}function getReasoningEffort(e){try{const t=getConfigFile(),n=parseJSON(S.readFileSync(t,"utf-8"))||{};return n.reasoningEffort?.[e]}catch{return}}async function setReasoningEffort(e){const{modelId:t,effort:n}=e,r={...(await loadUserConfig()).reasoningEffort??{}};if(void 0===n)return delete r[t],void await updateUserConfig({reasoningEffort:r});r[t]=n,await updateUserConfig({reasoningEffort:r})}function getCliTheme(){if(null!==_o)return _o;try{const e=getConfigFile(),t=parseJSON(S.readFileSync(e,"utf-8"))||{};return _o=isCliTheme(t.theme)?t.theme:"dark"}catch{return _o="dark","dark"}}async function setCliTheme(e){const{theme:t}=e;await updateUserConfig({theme:t}),_o=t}function isExperimentalEnabled(){return process.argv.includes("--experimental")}async function migrateDeprecatedModel(){try{const e=await loadUserConfig();if(!e.model)return;const t=tn[e.model];if(!t)return;dlog(`[Migration] Upgrading model ${e.model} → ${t}`),await saveUserConfig({...e,model:t}),Oo=t}catch(e){dlog(`[Migration] Failed to migrate model: ${e}`)}}function getCompactMode(){if(null!==Ro)return Ro;try{const e=getConfigFile(),t=(parseJSON(S.readFileSync(e,"utf-8"))||{}).compactMode;return Ro="default"===t||"fast"===t?t:"default"}catch{return Ro="default","default"}}async function setCompactMode(e){const{mode:t}=e;Ro=t,await updateUserConfig({compactMode:t})}__name(readDiskDefaultModel,"readDiskDefaultModel"),__name(getSelectedModel,"getSelectedModel"),__name(setModelOverride,"setModelOverride"),__name(clearModelOverride,"clearModelOverride"),__name(setGoalMaxTurnsOverride,"setGoalMaxTurnsOverride"),__name(getGoalMaxTurnsOverride,"getGoalMaxTurnsOverride"),__name(setSessionModel,"setSessionModel"),__name(hasRuntimeModelSelection,"hasRuntimeModelSelection"),__name(shouldAdoptResumedModel,"shouldAdoptResumedModel"),__name(getConfiguredModel,"getConfiguredModel"),__name(setSelectedModel,"setSelectedModel"),__name(persistDefaultModel,"persistDefaultModel"),__name(getReasoningEffort,"getReasoningEffort"),__name(setReasoningEffort,"setReasoningEffort"),__name(getCliTheme,"getCliTheme"),__name(setCliTheme,"setCliTheme"),__name(isExperimentalEnabled,"isExperimentalEnabled"),__name(migrateDeprecatedModel,"migrateDeprecatedModel"),__name(getCompactMode,"getCompactMode"),__name(setCompactMode,"setCompactMode"),pn();var Fo=__name(({url:e,text:t,dimColor:n=!1,color:r})=>{const o=`]8;;${e}${t}]8;;`,s=r??(n?Xr.DIM:void 0);return ce.createElement(we,{dimColor:n&&!!r,color:s},o)},"TerminalLink"),Uo=__name(({onSuccess:e,onCancel:t,onFailure:n})=>{const[r,o]=de(""),[s,a]=de(null),[i,l]=de(!1),[u,d]=de(null),[m,g]=de(!0),[h,f]=de(!1),[y,w]=de(!1);pe(()=>{const{url:e,verifier:t,state:n}=Fr.createAuthorizationUrl();a({url:e,verifier:t,state:n})},[]);const S=he(async e=>{const t=processBracketedPaste(e);if(!t.isPasteStart||y){if(!y||t.isPasteEnd){if(y&&t.isPasteEnd){w(!1);const e=await detectClipboardText();if(e){const t=e.split("#")[0].trim();return void o(t)}if(t.cleanedContent){const e=t.cleanedContent.split("#")[0].trim();o(e)}return}o(e)}}else if(w(!0),t.isPasteEnd){w(!1);const e=await detectClipboardText();if(e){const t=e.split("#")[0].trim();return void o(t)}if(t.cleanedContent){const e=t.cleanedContent.split("#")[0].trim();o(e)}return}},[y]);Ee((e,n)=>{if(n.escape&&t(),m&&!h)if(n.return||"y"===e||"Y"===e){if(!s)return;Z(s.url).then(()=>{f(!0),g(!1)}).catch(()=>{d(`Failed to open browser. Please manually open: ${s.url}`),f(!0),g(!1)})}else"n"!==e&&"N"!==e||t()});const E=__name(async()=>{if(r.trim()&&s&&!i){l(!0),d(null);try{const t=r.split("#")[0].trim();await Fr.exchangeCodeForTokens(t,s.verifier,s.state),await updateUserConfig({provider:"anthropic"}),e()}catch(e){const t=e instanceof Error?e.message:"Authentication failed";d(t),l(!1),n&&n(t)}}},"handleSubmit");return m&&!h?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"Anthropic Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Open the Anthropic auth page?",ce.createElement(we,{color:Xr.DIM}," (Y/n)")))):ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"Anthropic Authentication")),s&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Login: "),ce.createElement(Fo,{url:s.url,text:"Open auth page ↗",color:Xr.CYAN})),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"After authorizing, copy the code and paste it below:")),u&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},"Error: ",u)),ce.createElement(ye,null,ce.createElement(we,null,"Authorization code: "),ce.createElement(TextInput,{mask:"*",focus:!0,value:r,onChange:S,onSubmit:E,placeholder:"Paste code here..."})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Enter to submit or ESC to cancel")))},"AnthropicAuth");function createOSC8Link(e,t,n=!0){return`${n?"":""}]8;;${e}${t||e}]8;;${n?"":""}`}pn(),pn(),__name(createOSC8Link,"createOSC8Link");var Bo=__name(({onSuccess:e,onCancel:t,onFailure:n})=>{const[r,o]=de("confirm"),[s,a]=de(""),[i,l]=de(null),[u,d]=de(""),m=me(null),g=he(async()=>{const t=new AbortController;m.current=t;try{await Ur.login({onAuth:__name(({authorizeUrl:e})=>{a(e),o("waiting"),Z(e).catch(()=>{})},"onAuth"),onProgress:__name(e=>{d(e),e.startsWith("Exchanging")&&o("exchanging")},"onProgress"),signal:t.signal}),await updateUserConfig({provider:"codex"}),o("success"),e()}catch(e){if(t.signal.aborted)return;const r=e instanceof Error?e.message:"Authentication failed";l(r),o("error"),n?.(r)}},[e,n]);return pe(()=>()=>{m.current?.abort()},[]),Ee((e,n)=>{if(n.escape)return m.current?.abort(),void t();if("confirm"===r){if(n.return||"y"===e||"Y"===e)return void g();"n"!==e&&"N"!==e||t()}}),"confirm"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"ChatGPT (Codex) Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"This will open your browser to sign in with ChatGPT.")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Continue?",ce.createElement(we,{color:Xr.DIM}," (Y/n)")))):"waiting"===r||"exchanging"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"ChatGPT (Codex) Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,createOSC8Link(s,"Open auth page ↗"))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},u||"Waiting for authorization...")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to cancel"))):"error"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"ChatGPT (Codex) Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},"Error: ",i)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to go back"))):null},"CodexAuth");pn();var jo=__name(({onSuccess:e,onCancel:t,onFailure:n})=>{const[r,o]=de("confirm"),[s,a]=de(""),[i,l]=de(""),[u,d]=de(null),[m,g]=de(""),h=me(null),f=he(async()=>{const t=new AbortController;h.current=t;try{await Br.login({onAuth:__name(({userCode:e,verificationUri:t})=>{a(e),l(t),o("device-code"),Z(t).catch(()=>{})},"onAuth"),onProgress:__name(e=>{g(e),"Waiting for authorization..."===e&&o("polling")},"onProgress"),signal:t.signal}),await updateUserConfig({provider:"github-copilot"}),o("success"),e()}catch(e){if(t.signal.aborted)return;const r=e instanceof Error?e.message:"Authentication failed";d(r),o("error"),n&&n(r)}},[e,n]);return pe(()=>()=>{h.current?.abort()},[]),Ee((e,n)=>{if(n.escape)return h.current?.abort(),void t();if("confirm"===r){if(n.return||"y"===e||"Y"===e)return void f();"n"!==e&&"N"!==e||t()}}),"confirm"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"GitHub Copilot Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"This will open GitHub to authorize Copilot access.")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Continue?",ce.createElement(we,{color:Xr.DIM}," (Y/n)")))):"device-code"===r||"polling"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"GitHub Copilot Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Enter this code on GitHub:"," ",ce.createElement(we,{bold:!0,color:Xr.GREEN},s))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Open: ",i)),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"polling"===r?"Waiting for authorization...":m||"Starting...")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to cancel"))):"error"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"GitHub Copilot Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},"Error: ",u)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to go back"))):null},"CopilotAuth"),Ho=Object.fromEntries(Object.values(sn).map(e=>[e.id,{id:e.id,displayName:e.label,description:e.description,requiresAuth:e.requiresAuth,hidden:!e.visibleInNormalMode}]));function getProviderDisplayName(e){return e?sn[e]?.label??e:"None"}function getProviderConfig(e){return Ho[e]}function isInternalTeamFlagPresent(){return process.argv.includes(It)}function isInternalTeamDisableFlagPresent(){return process.argv.includes(Mt)}function isInternalTeamFlagEnforced(){if(isInternalTeamDisableFlagPresent())return!1;if(isInternalTeamFlagPresent())return!0;try{const e=getConfigFile();return(parseJSON(S.readFileSync(e,"utf-8"))||{}).forceOAuth??!1}catch{return!1}}function getProviderOptions(){const e=isInternalTeamFlagEnforced();return Object.values(Ho).filter(t=>!t.hidden||e).map(e=>({label:`${e.displayName} (${e.description})`,value:e.id}))}function isInternalTeamDisableOAuthFlagPresent(){return process.argv.includes(Mt)}function formatDate(e=new Date){return e.toISOString().split("T")[0]}function parseJSON(e){try{return JSON.parse(e)}catch{return null}}async function getConfiguredProvider(){try{const e=getConfigFile(),t=await U.readFile(e,"utf-8"),n=JSON.parse(t),r=n.provider||null,o=n.forceOAuth||!1,s=isInternalTeamFlagPresent();if(isInternalTeamDisableOAuthFlagPresent())return await updateUserConfig({provider:sn["command-code"].id,forceOAuth:!1}),sn["command-code"].id;if(s||o){if(r)return await updateUserConfig({forceOAuth:!0}),r;const e=await resolveOAuthProvider({currentProvider:r});return await updateUserConfig({provider:e,forceOAuth:!0}),e}return r}catch{return null}}function getIsExpandToolShortcut(e,t){return isCtrlKey({inputChar:t,key:e,letter:"o",ctrlCode:15})}function formatTime2(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 isLocalDevelopmentBuild(){try{const e=process.argv[1];if(!e)return!1;if(e.includes("/usr/local/bin/dmd"))return!0;const t=E.realpathSync(e);return!(!t.includes("/dist/index.mjs")||t.includes("node_modules"))}catch{return!1}}function getTelemetryEnv(){return isLocalDevelopmentBuild()?"local":Pr()}function getAxiomToken(){switch(getTelemetryEnv()){case"staging":return"xaat-fde9e569-4a3c-4994-aa0d-7a632332d220";case"local":return"xaat-add69148-8f73-4833-921d-bc843285c95f";default:return"xaat-818bfed7-bc54-45bc-8bfa-d1198174064a"}}function isTelemetryEnabled(){if("1"===process.env.DO_NOT_TRACK||"true"===process.env.DO_NOT_TRACK)return!1;try{const e=getConfigFile();return!1!==(parseJSON(S.readFileSync(e,"utf-8"))||{}).telemetry}catch{return!0}}function hasAxiomToken(){return Boolean(getAxiomToken())}Ho.anthropic&&(Ho.anthropic.authComponent=Uo,Ho.anthropic.checkAuth=async()=>!!await Fr.getValidAccessToken()),Ho["github-copilot"]&&(Ho["github-copilot"].authComponent=jo,Ho["github-copilot"].checkAuth=async()=>!!await Br.getValidAccessToken()),Ho.codex&&(Ho.codex.authComponent=Bo,Ho.codex.checkAuth=async()=>!!await Ur.getValidAccessToken()),__name(getProviderDisplayName,"getProviderDisplayName"),__name(getProviderConfig,"getProviderConfig"),__name(isInternalTeamFlagPresent,"isInternalTeamFlagPresent"),__name(isInternalTeamDisableFlagPresent,"isInternalTeamDisableFlagPresent"),__name(isInternalTeamFlagEnforced,"isInternalTeamFlagEnforced"),__name(getProviderOptions,"getProviderOptions"),__name(isInternalTeamDisableOAuthFlagPresent,"isInternalTeamDisableOAuthFlagPresent"),__name(formatDate,"formatDate"),__name(parseJSON,"parseJSON"),__name(getConfiguredProvider,"getConfiguredProvider"),__name(getIsExpandToolShortcut,"getIsExpandToolShortcut"),__name(formatTime2,"formatTime"),__name(formatTokens,"formatTokens"),pn(),__name(isLocalDevelopmentBuild,"isLocalDevelopmentBuild"),__name(getTelemetryEnv,"getTelemetryEnv"),__name(getAxiomToken,"getAxiomToken"),__name(isTelemetryEnabled,"isTelemetryEnabled"),__name(hasAxiomToken,"hasAxiomToken"),Rn();var{NodeSDK:Wo}=oe,{OTLPTraceExporter:Go}=se,{resourceFromAttributes:zo}=ae,{ATTR_SERVICE_NAME:qo,ATTR_SERVICE_VERSION:Vo}=ie,{BatchSpanProcessor:Ko,SimpleSpanProcessor:Yo}=le,Qo=1500;function parseRetryAfter(e){if(!e)return null;const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.min(1e3*t,Qo);const n=Date.parse(e);if(Number.isFinite(n)){const e=n-Date.now();if(e>0)return Math.min(e,Qo)}return null}function installOtlpRetryFetch(){const e=globalThis.fetch;if(!e||e.__commandcodeOtlpWrapped)return;const t=__name(async(t,n)=>{const r="string"==typeof t?t:t.url??"";if("string"!=typeof r||!r.includes(Qn))return e(t,n);let o,s=0;for(;s<=2;){const r=await e(t,n);if(o=r,429!==r.status&&430!==r.status)return r;if(2===s)break;const a=parseRetryAfter(r.headers.get("retry-after")),i=Math.min(200*Math.pow(2,s),Qo),l=a??i;await new Promise(e=>setTimeout(e,l)),s++}return o},"wrapped");t.__commandcodeOtlpWrapped=!0,globalThis.fetch=t}function createAxiomExporter(){return installOtlpRetryFetch(),new Go({url:Qn,headers:{Authorization:`Bearer ${getAxiomToken()}`,"X-Axiom-Dataset":"command_code_cli_tracing"}})}function createServiceResource(){const e=getPackageJson(),n=process.execPath,r=t.basename(n)||"unknown";return zo({[qo]:Jn,[Vo]:e.version,"process.executable.name":r,"process.runtime.name":"node","process.runtime.version":process.version,"process.pid":process.pid})}function createTelemetrySDK(){const e=createAxiomExporter(),t=createServiceResource(),n="1"===process.env.COMMAND_CODE_TELEMETRY_SYNC?new Yo(e):new Ko(e,{maxQueueSize:512,maxExportBatchSize:128,scheduledDelayMillis:500,exportTimeoutMillis:5e3});return new Wo({resource:t,spanProcessors:[n],autoDetectResources:!1})}function resolveNearestAncestor(e){let n=t.dirname(e),r=t.basename(e);for(;n!==t.dirname(n);)try{return t.join(E.realpathSync(n),r)}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code){r=t.join(t.basename(n),r),n=t.dirname(n);continue}return null}return null}function resolveSymlinks(e){try{return E.realpathSync(e)}catch(e){if(!(e instanceof Error&&"code"in e&&"ENOENT"===e.code))return null}try{if(E.lstatSync(e).isSymbolicLink())return null}catch{}return resolveNearestAncestor(e)}function resolvePlansDir(e){try{return E.realpathSync(e)}catch{return e}}function isPlanPath(e){const{filePath:n}=e;if(!n||"string"!=typeof n)return!1;const r=D.homedir(),o=n.startsWith("~/")?t.join(r,n.slice(2)):n,s=resolveSymlinks(t.resolve(o));if(!s)return!1;const a=resolvePlansDir(t.join(r,".commandcode","plans"));return s.startsWith(a+t.sep)||s===a}__name(parseRetryAfter,"parseRetryAfter"),__name(installOtlpRetryFetch,"installOtlpRetryFetch"),__name(createAxiomExporter,"createAxiomExporter"),__name(createServiceResource,"createServiceResource"),__name(createTelemetrySDK,"createTelemetrySDK"),pn(),Rn(),pn(),pn(),pn(),wn(),__name(resolveNearestAncestor,"resolveNearestAncestor"),__name(resolveSymlinks,"resolveSymlinks"),__name(resolvePlansDir,"resolvePlansDir"),__name(isPlanPath,"isPlanPath");var Jo=new Set(["/etc","/root","/proc","/sys","/dev",t.join(D.homedir(),".ssh"),t.join(D.homedir(),".gnupg"),t.join(D.homedir(),".aws")]),Xo=[],Zo="standard";function setCurrentPermissionMode(e){Zo=e}function normalizePathForComparison(e){const n=t.normalize(e);return"win32"===process.platform?n.toLowerCase():n}function areSamePath(e,t){return normalizePathForComparison(e)===normalizePathForComparison(t)}function getCanonicalPath(e){try{return E.realpathSync(e)}catch(n){const r=n.code;return"ENOENT"!==r&&console.error(`Warning: Could not resolve canonical path for "${e}" (${r}). Path comparison may be less reliable.`),t.normalize(e)}}function canonicalizeForLookup(e){try{let n=t.resolve(e);const r=[];for(;!E.existsSync(n);){const o=t.dirname(n);if(o===n)return t.normalize(e);r.unshift(t.basename(n)),n=o}return t.join(getCanonicalPath(n),...r)}catch{return t.normalize(e)}}function formatDirectoryForDisplay(e){const n=canonicalizeForLookup(t.normalize(e)),r=getCanonicalPath(process.cwd()),o=D.homedir();if(isPathInDirectory(n,r)){const e=t.relative(r,n);return e?`./${e}`:"."}if(o&&isPathInDirectory(n,o)){const e=t.relative(o,n);return e?`~/${e}`:"~"}return n}function isPathInDirectory(e,n){const r=normalizePathForComparison(e),o=normalizePathForComparison(n),s=o.endsWith(t.sep)?o:o+t.sep;return r===o||r.startsWith(s)}function findSensitiveDirectoryConflict(e){const n=[t.normalize(e),getCanonicalPath(e)];for(const e of Jo){const r=[t.normalize(e),getCanonicalPath(e)];for(const e of n)for(const t of r)if(isPathInDirectory(e,t)||isPathInDirectory(t,e))return t}return null}function resolveDirectoryPath(e){let n=e.trim();return n.startsWith("~")&&(n=t.join(D.homedir(),n.slice(1))),t.isAbsolute(n)||(n=t.resolve(process.cwd(),n)),t.normalize(n)}function createSkippedResult(e){const{inputPath:t,absolutePath:n,code:r}=e,o=formatDirectoryForDisplay(n);return{status:"skipped",inputPath:t,absolutePath:n,displayPath:o,code:r,message:"ALREADY_IN_WORKSPACE"===r?`${o} is already accessible from the current workspace`:`${o} is already added`}}function createErrorResult(e){const{inputPath:t,code:n,message:r}=e;return{status:"error",inputPath:t,code:n,message:r}}function addDirectory(e){const t=e.trim();if(!t)return createErrorResult({inputPath:e,code:"EMPTY_PATH",message:"Directory path cannot be empty"});const n=resolveDirectoryPath(e);let r,o;try{r=E.statSync(n)}catch(n){return"ENOENT"===n.code?createErrorResult({inputPath:e,code:"NOT_FOUND",message:`Directory does not exist: ${t}`}):createErrorResult({inputPath:e,code:"NOT_READABLE",message:`Directory is not readable: ${t}`})}if(!r.isDirectory())return createErrorResult({inputPath:e,code:"NOT_A_DIRECTORY",message:`${formatDirectoryForDisplay(n)} is not a directory`});try{E.accessSync(n,E.constants.R_OK),o=getCanonicalPath(n)}catch{return createErrorResult({inputPath:e,code:"NOT_READABLE",message:`Directory is not readable: ${t}`})}const s=findSensitiveDirectoryConflict(o);if(s)return createErrorResult({inputPath:e,code:"SENSITIVE_DIRECTORY",message:`Cannot add ${formatDirectoryForDisplay(o)} because it overlaps sensitive path ${formatDirectoryForDisplay(s)}`});const a=getCanonicalPath(process.cwd());return isPathInDirectory(o,a)?createSkippedResult({inputPath:e,absolutePath:o,code:"ALREADY_IN_WORKSPACE"}):Xo.some(e=>isPathInDirectory(o,e)||isPathInDirectory(e,o))?createSkippedResult({inputPath:e,absolutePath:o,code:"ALREADY_ADDED"}):(Xo.push(o),{status:"added",inputPath:e,absolutePath:o,displayPath:formatDirectoryForDisplay(o)})}function getAdditionalDirectories(){return[...Xo]}function removeAdditionalDirectory(e){if(!e.trim())return!1;const t=getCanonicalPath(resolveDirectoryPath(e)),n=Xo.findIndex(e=>areSamePath(t,e));return-1!==n&&(Xo.splice(n,1),!0)}function isPathInAdditionalDirs(e){const t=canonicalizeForLookup(e);return Xo.some(e=>isPathInDirectory(t,e))}function isPathInWorkspace(e){const t=canonicalizeForLookup(e);return!("plan"!==Zo||!isPlanPath({filePath:t}))||(isPathInDirectory(t,getCanonicalPath(process.cwd()))||isPathInAdditionalDirs(t))}function getWorkspaceDirectories(){return[t.resolve(process.cwd()),...getAdditionalDirectories()]}function getCurrentWorkingDirectory(){return global.COMMAND_CODE_CWD||process.cwd()}function getCurrentDate(){return(new Date).toISOString().split("T")[0]}function getEnvironmentInfo(){return`${D.platform()}-${D.arch()}, Node.js ${process.version}`}function getRootDirectoryStructure(){const e=getCurrentWorkingDirectory(),t=new Set(["node_modules","dist","build",".git",".svn",".hg","coverage",".nyc_output",".cache","tmp","temp",".next",".nuxt","out"]);try{return E.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).filter(e=>!e.name.startsWith(".")).filter(e=>!t.has(e.name)).map(e=>e.name).sort()}catch{return[]}}function getAccessibleDirectoryStructure(){return[...getRootDirectoryStructure(),...getAdditionalDirectories().map(e=>`scope:${formatDirectoryForDisplay(e)}`)]}function isGitRepository(){try{return Ne("git rev-parse --git-dir",{stdio:"ignore",cwd:getCurrentWorkingDirectory()}),!0}catch{return!1}}function getCurrentBranch(){try{return Ne("git branch --show-current",{encoding:"utf8",cwd:getCurrentWorkingDirectory(),stdio:["pipe","pipe","ignore"]}).trim()}catch{return""}}function getMainBranch(){const e=getCurrentWorkingDirectory();try{const t=Ne("git symbolic-ref --short refs/remotes/origin/HEAD",{encoding:"utf8",cwd:e,stdio:["pipe","pipe","ignore"]}).trim().replace(/^origin\//,"");if(t)return t}catch{}try{const t=Ne("git branch -r",{encoding:"utf8",cwd:e,stdio:["pipe","pipe","ignore"]});return t.includes("origin/main")?"main":t.includes("origin/master")?"master":"main"}catch{return""}}function getGitStatus(){try{const e=Ne("git status --porcelain",{encoding:"utf8",cwd:getCurrentWorkingDirectory(),stdio:["pipe","pipe","ignore"]}).trim();if(!e)return"Working tree clean";const t=e.split("\n"),n=t.filter(e=>e.startsWith(" M")).length,r=t.filter(e=>e.startsWith("A ")).length,o=t.filter(e=>e.startsWith(" D")).length,s=t.filter(e=>e.startsWith("??")).length,a=[];return n>0&&a.push(`M ${n}`),r>0&&a.push(`A ${r}`),o>0&&a.push(`D ${o}`),s>0&&a.push(`?? ${s}`),a.join(", ")||e}catch{return""}}function getRecentCommits(){try{const e=Ne("git log --oneline -3",{encoding:"utf8",cwd:getCurrentWorkingDirectory(),stdio:["pipe","pipe","ignore"]}).trim();return e?e.split("\n"):[]}catch{return[]}}function getEnvironmentContext(){const e=isGitRepository(),t=getAdditionalDirectories();return{workingDir:getCurrentWorkingDirectory(),date:getCurrentDate(),environment:getEnvironmentInfo(),structure:getAccessibleDirectoryStructure(),isGitRepo:e,currentBranch:e?getCurrentBranch():"",mainBranch:e?getMainBranch():"",gitStatus:e?getGitStatus():"",recentCommits:e?getRecentCommits():[],...t.length>0?{additionalDirectories:t}:{}}}__name(setCurrentPermissionMode,"setCurrentPermissionMode"),__name(normalizePathForComparison,"normalizePathForComparison"),__name(areSamePath,"areSamePath"),__name(getCanonicalPath,"getCanonicalPath"),__name(canonicalizeForLookup,"canonicalizeForLookup"),__name(formatDirectoryForDisplay,"formatDirectoryForDisplay"),__name(isPathInDirectory,"isPathInDirectory"),__name(findSensitiveDirectoryConflict,"findSensitiveDirectoryConflict"),__name(resolveDirectoryPath,"resolveDirectoryPath"),__name(createSkippedResult,"createSkippedResult"),__name(createErrorResult,"createErrorResult"),__name(addDirectory,"addDirectory"),__name(getAdditionalDirectories,"getAdditionalDirectories"),__name(removeAdditionalDirectory,"removeAdditionalDirectory"),__name(isPathInAdditionalDirs,"isPathInAdditionalDirs"),__name(isPathInWorkspace,"isPathInWorkspace"),__name(getWorkspaceDirectories,"getWorkspaceDirectories"),__name(getCurrentWorkingDirectory,"getCurrentWorkingDirectory"),__name(getCurrentDate,"getCurrentDate"),__name(getEnvironmentInfo,"getEnvironmentInfo"),__name(getRootDirectoryStructure,"getRootDirectoryStructure"),__name(getAccessibleDirectoryStructure,"getAccessibleDirectoryStructure"),__name(isGitRepository,"isGitRepository"),__name(getCurrentBranch,"getCurrentBranch"),__name(getMainBranch,"getMainBranch"),__name(getGitStatus,"getGitStatus"),__name(getRecentCommits,"getRecentCommits"),__name(getEnvironmentContext,"getEnvironmentContext");var es=null,ts=null,ns=null,rs=null,os={};function generateSessionId(){return`sess_${_e().replace(/-/g,"").substring(0,16)}`}function hashPath(e){return K.createHash("sha256").update(e).digest("hex").substring(0,12)}function getCliVersion(){try{const e=getPackageJson();if("string"==typeof e.version&&""!==e.version.trim())return e.version}catch{}return"unknown"}function buildSessionAttributes(e){const{sessionId:t,projectPath:n,gitBranch:r,cliVersion:o}=e;return{"session.id":t,"session.start_time":(new Date).toISOString(),[lr]:hashPath(n),[cr]:r?hashPath(r):"unknown","session.cli_version":o,"session.platform":`${_.platform()}-${_.arch()}`,"session.node_version":process.version}}function startSession(){os={},rs=null,ns=null,es=generateSessionId(),ts=Date.now();try{const e=Ae.getTracer(Jn),t=getCliVersion(),n=getCurrentWorkingDirectory(),r=getCurrentBranch(),o=buildSessionAttributes({sessionId:es,projectPath:n,gitBranch:r,cliVersion:t}),s=e.startSpan("session:cli",{attributes:o});ns=s.spanContext(),s.end()}catch{}return es}function getSessionId(){return es}function setActiveIterationSpanContext(e){rs=e}function getActiveIterationSpanContext(){return rs}function getTraceId(){const e=rs?.traceId;return e&&Pe(e)?e:null}function getSessionContext(){return rs?Ae.setSpanContext(Ie.active(),rs):Ie.active()}function endSession(e={}){const{status:t="success"}=e;if(ts)try{const e=Ae.getTracer(Jn),n=ns?[{context:ns,attributes:{"cmd.session.link_kind":"session_cli"}}]:void 0,r=e.startSpan("session:end",{attributes:{"session.id":es||"unknown","session.end_time":(new Date).toISOString(),"session.status":t,...os},links:n,root:!0},Ae.deleteSpan(Ie.active()));r.setStatus({code:"error"===t?Re.ERROR:Re.OK}),r.end()}catch{}rs=null,ns=null,es=null,ts=null,os={}}function updateSessionContext(e){ts&&(os={...os,...e})}__name(generateSessionId,"generateSessionId"),__name(hashPath,"hashPath"),__name(getCliVersion,"getCliVersion"),__name(buildSessionAttributes,"buildSessionAttributes"),__name(startSession,"startSession"),__name(getSessionId,"getSessionId"),__name(setActiveIterationSpanContext,"setActiveIterationSpanContext"),__name(getActiveIterationSpanContext,"getActiveIterationSpanContext"),__name(getTraceId,"getTraceId"),__name(getSessionContext,"getSessionContext"),__name(endSession,"endSession"),__name(updateSessionContext,"updateSessionContext"),pn(),pn();var ss={NETWORK:"network",AUTH:"auth",RATE_LIMIT:"rate_limit",TIMEOUT:"timeout",VALIDATION:"validation",NOT_FOUND:"not_found",PERMISSION:"permission",INTERNAL:"internal",CANCELLED:"cancelled",UNKNOWN:"unknown"},as=new Set(["ENOTFOUND","ECONNRESET","ECONNREFUSED","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","EPIPE"]);function getStatus(e){if("number"==typeof e.status)return e.status;if("number"==typeof e.statusCode)return e.statusCode;const t=(e.message||"").match(/\b(\d{3})\b/);if(t){const e=Number(t[1]);if(e>=400&&e<600)return e}}function categorizeError(e){if(!e||"object"!=typeof e)return ss.UNKNOWN;const t=e,n="string"==typeof t.code?t.code.toUpperCase():void 0,r=(t.name||"").toLowerCase(),o=(t.message||"").toLowerCase(),s=getStatus(t);return n&&as.has(n)?ss.NETWORK:"ETIMEDOUT"===n||o.includes("timeout")||o.includes("timed out")?ss.TIMEOUT:"ENOENT"===n||404===s?ss.NOT_FOUND:"EACCES"===n||"EPERM"===n?ss.PERMISSION:"ABORT_ERR"===n||"aborterror"===r||o.includes("abort")?ss.CANCELLED:401===s||403===s||o.includes("unauthorized")||o.includes("forbidden")?ss.AUTH:429===s||o.includes("rate limit")||o.includes("too many requests")?ss.RATE_LIMIT:void 0!==s&&s>=500&&s<600?ss.INTERNAL:void 0!==s&&s>=400&&s<500||r.includes("zod")||r.includes("validation")||o.includes("invalid")?ss.VALIDATION:"fetcherror"===r||o.includes("fetch failed")||o.includes("network")?ss.NETWORK:ss.UNKNOWN}function normalizeStackFrame(e){return e.replace(/0x[0-9a-fA-F]+/g,"0xN").replace(/:\d+:\d+/g,":N:N").replace(/file:\/\/\/[^\s)]+/g,"file:///N").replace(/(\/[^\s:)]+\/)+/g,"/N/").replace(/\b\d{4,}\b/g,"N")}function errorFingerprint(e){const t=e||{},n=t.name||"Error",r=(t.stack||"").split("\n").slice(1).map(e=>e.trim()).find(e=>e.startsWith("at ")&&!e.includes("node:internal")),o=r?`${n}|${normalizeStackFrame(r)}`:`${n}|${(t.message||"").slice(0,120)}`;return K.createHash("sha1").update(o).digest("hex").substring(0,16)}function setSpanStatus(e,t){"error"===t?e.setStatus({code:Re.ERROR}):e.setStatus({code:Re.OK})}function applyErrorAttributes(e,t){e.setAttribute("error.type",categorizeError(t)),e.setAttribute(vr,errorFingerprint(t))}function createSpan(e){const{name:t,attributes:n}=e,r=Ae.getTracer(Jn),o=Ie.active(),s=void 0!==Ae.getSpan(o)?o:getSessionContext();return r.startSpan(t,{attributes:n},s)}function endSpan(e){const{span:t,status:n="success"}=e;setSpanStatus(t,n),t.end()}function recordError(e){const{span:t,error:n,additionalAttributes:r}=e;if(t.recordException(n),t.setStatus({code:Re.ERROR,message:n.message}),applyErrorAttributes(t,n),r)for(const[e,n]of Object.entries(r))void 0!==n&&t.setAttribute(e,n)}__name(getStatus,"getStatus"),__name(categorizeError,"categorizeError"),__name(normalizeStackFrame,"normalizeStackFrame"),__name(errorFingerprint,"errorFingerprint"),__name(setSpanStatus,"setSpanStatus"),__name(applyErrorAttributes,"applyErrorAttributes"),__name(createSpan,"createSpan"),__name(endSpan,"endSpan"),__name(recordError,"recordError"),pn(),Sn();var ls=!1,cs=null;async function initAxiomAITelemetry(){if(!ls&&!cs)try{const e=await import("axiom/ai").catch(e=>(cs=e instanceof Error?e.message:String(e),null));if(!e)return void dlog("[telemetry] axiom/ai not available — falling back to plain OTel");const t=Ae.getTracer(Jn),n=isContentCaptureEnabled()?e.RedactionPolicy?.AxiomDefault:e.RedactionPolicy?.AxiomStrict??e.RedactionPolicy?.AxiomDefault;e.initAxiomAI?.({tracer:t,redactionPolicy:n}),ls=!0}catch(e){cs=e instanceof Error?e.message:String(e)}}__name(initAxiomAITelemetry,"initAxiomAITelemetry"),pn(),pn(),pn();var us=1e5,ds=5e4;function dedentText(e){const t=e.split("\n");let n=1/0;for(const e of t){if(0===e.trim().length)continue;const t=e.length-e.trimStart().length;t>0&&t<n&&(n=t)}return n===1/0||0===n?e:t.map(e=>0===e.trim().length?e:e.length-e.trimStart().length>=n?e.slice(n):e).join("\n")}function getEffectiveWidth({padding:e=4}={}){let t=80;return process.stdout.columns?t=process.stdout.columns:process.stderr.columns?t=process.stderr.columns:process.env.COLUMNS&&(t=Number(process.env.COLUMNS)),Math.max(40,t-e)}function truncateString({text:e,maxChars:t}){return e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`}function truncateCommand({command:e}){const t=e.replace(/\/Users\/[^/]+/g,"~").replace(/\/home\/[^/]+/g,"~").replace(/C:\\Users\\[^\\]+/g,"~");if(t.length<=100)return t;if(t.includes(" && ")){const e=t.split(" && ")[0].trim();return e.length<=95?`${e} && ...`:truncateString({text:e,maxChars:100})}return truncateString({text:t,maxChars:100})}function truncateToVisualLines({output:e,maxVisualLines:t=2,padding:n=4,maxChars:r}){const o=getEffectiveWidth({padding:n}),s=r??t*o,a=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/\u00A0/g," ").trim().split("\n");let i=0,l=a.length;for(let e=0;e<a.length;e++){const n=a[e];if(0===n.trim().length)continue;const r=Math.max(1,Math.ceil(n.length/o));if(!(i+r<=t)){l=Math.max(1,e);break}i+=r}const u=l<a.length,d=a.slice(l).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/o)),0),m=a.slice(0,l).filter(e=>e.trim().length>0).join("\n");if(m.length>s){const e=m.slice(0,s-3).trimEnd(),t=e.lastIndexOf("\n"),n=t>0?e.slice(0,t):e;return{text:u?n:`${n}...`,isTruncated:!0,remainingLines:d}}return{text:m,isTruncated:u,remainingLines:d}}function normalizeError(e){return e instanceof Error?e:new Error(String(e))}function sanitizeErrorForTelemetry(e){const{error:t,label:n="error"}=e,r=scrubPII(t.message),o=r.length>0?`${n}: ${r}`:n,s=new Error(o);s.name=t.name||"Error";const a=t.code;return void 0!==a&&(s.code=a),s}function scrubPII(e){return e.replace(/[A-Z]:[/\\](?:Users|Documents and Settings)[/\\][^\s:'"`,)}\]]+/gi,"[path]").replace(/\/(?:Users|home|root)\/[^\s:'"`,)}\]]+/g,"[path]").replace(/~\/[^\s:'"`,)}\]]+/g,"[path]").replace(/\b[0-9a-f]{32,}\b/gi,"[token]").replace(/\b(?:sk|key|token|pat|ghp|gho|ghs|ghu|ghr)-[A-Za-z0-9_-]{10,}\b/g,"[apikey]")}function sanitizeArgs(e){return e.map(e=>e.startsWith("--")||e.startsWith("-")&&e.includes("=")?e.split("=")[0]:e.startsWith("-")&&!e.startsWith("--")&&e.length>2?e.substring(0,2):e.startsWith("-")?e:"[arg]")}function sanitizeEndpoint(e){return e.split("?")[0]}function createTrackingHandle(e){const{span:t}=e;return{span:t,end:__name(e=>{if("status"in e)e.error&&recordError({span:t,error:e.error}),endSpan({span:t,status:e.status});else{const{statusCode:n,error:r}=e;t.setAttribute("http.status_code",n),r?(recordError({span:t,error:r}),endSpan({span:t,status:"error"})):endSpan({span:t,status:n>=400?"error":"success"})}},"end")}}function trackCommand(e){const{command:t,args:n}=e,r=n?sanitizeArgs(n):[];endSpan({span:createSpan({name:`command:${t}`,attributes:{[ar]:t,[ir]:r.join(" ")}}),status:"success"})}function trackToolStart(e){const{toolName:t}=e;return createTrackingHandle({span:createSpan({name:`execute_tool ${t}`,attributes:{[rr]:t}})})}function buildContextAttributes(e){const{component:t,heading:n,code:r,...o}=e,s={[Tr]:t,[xr]:n};void 0!==r&&(s["cmd.error.code"]=String(r));for(const[e,t]of Object.entries(o))null!=t&&"object"!=typeof t&&(s[e]=String(t));return s}function trackError(e){const{error:t,context:n}=e,r=normalizeError(t),o=buildContextAttributes(n);o["error.type"]=categorizeError(t),o[vr]=errorFingerprint(t);const s=createSpan({name:`error:${r.name}`,attributes:o});recordError({span:s,error:r});const{traceId:a}=s.spanContext();return s.end(),Pe(a)?a:void 0}function trackEvent(e){const{name:t,context:n}=e;endSpan({span:createSpan({name:t,attributes:buildContextAttributes(n)}),status:"success"})}function trackAPICallStart(e){const{method:t,endpoint:n,cliVersion:r}=e,o=sanitizeEndpoint(n);return createTrackingHandle({span:createSpan({name:`api:${t}:${o}`,attributes:{"http.method":t,"http.url":o,...r?{"cli.version":r}:{}}})})}function getDisplayTraceId(){return getTraceId()||"unknown"}function systemInfo(e){const{userName:t,userId:n,orgLogin:r,orgId:o,platform:s,arch:a}=e,i={"os.type":s,"os.arch":a};t&&(i["user.name"]=t),n&&(i["user.id"]=n),r&&(i["cmd.org.login"]=r),o&&(i["cmd.org.id"]=o),updateSessionContext(i)}__name(dedentText,"dedentText"),__name(getEffectiveWidth,"getEffectiveWidth"),__name(truncateString,"truncateString"),__name(truncateCommand,"truncateCommand"),__name(truncateToVisualLines,"truncateToVisualLines"),__name(normalizeError,"normalizeError"),__name(sanitizeErrorForTelemetry,"sanitizeErrorForTelemetry"),__name(scrubPII,"scrubPII"),__name(sanitizeArgs,"sanitizeArgs"),__name(sanitizeEndpoint,"sanitizeEndpoint"),__name(createTrackingHandle,"createTrackingHandle"),__name(trackCommand,"trackCommand"),__name(trackToolStart,"trackToolStart"),__name(buildContextAttributes,"buildContextAttributes"),__name(trackError,"trackError"),__name(trackEvent,"trackEvent"),__name(trackAPICallStart,"trackAPICallStart"),__name(getDisplayTraceId,"getDisplayTraceId"),__name(systemInfo,"systemInfo"),pn();var ms={AUTH_FLOW:"auth-flow",ANTHROPIC_OAUTH:"anthropic-oauth",COPILOT_OAUTH:"copilot-oauth",CODEX_OAUTH:"codex-oauth",ANTHROPIC_CLIENT:"anthropic-client",UNHANDLED_REJECTION:"unhandled-rejection",UNCAUGHT_EXCEPTION:"uncaught-exception",SESSION_MANAGER:"session-manager",UPDATE_COMMAND:"update-command",LEARN_TASTE_COMMAND:"learn-taste-command",UPDATER:"updater",LEARNING_AGENT:"learning-agent",TASTE_REMOTE_STORAGE:"taste-remote-storage",CHECKPOINT_MANAGER:"checkpoint-manager",FILE_HISTORY:"file-history",API_REQUEST:"api-request",CONTEXT_ENGINE:"context-engine",AGENT_LOOP:"agent-loop",CLI_ERROR_HANDLER:"cli-error-handler",TOOL_REPAIR:"tool-repair"},ps=null,gs=!1,hs=[];function initTelemetry(){if(gs)return!0;if(!isTelemetryEnabled())return!1;if(!hasAxiomToken())return!1;try{return(ps=createTelemetrySDK()).start(),gs=!0,initAxiomAITelemetry(),!0}catch{return ps=null,gs=!1,!1}}async function shutdownTelemetry(e=2e3){if(ps&&gs)try{endSession(),await Promise.allSettled(hs),await Promise.race([ps.shutdown(),new Promise(t=>setTimeout(t,e))])}catch{}finally{ps=null,gs=!1}}function shutdownTelemetrySync(){if(gs)try{endSession()}catch{}}function isTelemetryInitialized(){return gs}function registerStartupTask(e){hs.push(e)}__name(initTelemetry,"initTelemetry"),__name(shutdownTelemetry,"shutdownTelemetry"),__name(shutdownTelemetrySync,"shutdownTelemetrySync"),__name(isTelemetryInitialized,"isTelemetryInitialized"),__name(registerStartupTask,"registerStartupTask");var{red:fs,yellow:ys,dim:ws}=ne,Ss=__name(e=>{const{heading:t="ERROR: ",error:n,displayError:r=!0,exit:o=!0,skipTelemetry:s=!1}=e;if(n){if(s||trackError({error:sanitizeErrorForTelemetry({error:n,label:"cli_error"}),context:{component:ms.CLI_ERROR_HANDLER,heading:t}}),console.log(),r){if(console.log(`${re.error} ${fs(t)}`),console.log(`${re.error} ${fs("ERROR →")} ${n.name}`),console.log(`${re.info} ${fs("REASON →")} ${n.message}`),console.log(`${re.info} ${fs("ERROR STACK ↓ \n")} ${n.stack}\n`),isTelemetryInitialized()){const e=getDisplayTraceId();console.log(`${re.info} ${ws(`Trace ID: ${e}`)}`),console.log(`${ws(" Share this ID with support to help debug your issue.")}\n`)}}else console.log(`${re.warning} ${ys(t)}\n`);if(!o)return!1;process.exit(0)}},"handleError");function handleUnhandledErrors(){process.on("unhandledRejection",e=>{const t=e instanceof Error?e:new Error(String(e));trackError({error:sanitizeErrorForTelemetry({error:t,label:"unhandled_rejection"}),context:{component:ms.UNHANDLED_REJECTION,heading:"Unhandled Promise Rejection"}}),Ss({heading:te`CRITICAL: Unhandled Promise Rejection!
2
+ import*as e from"path";import t,{join as n,dirname as r,parse as o,relative as s,isAbsolute as a,extname as i,win32 as l,resolve as u,basename as d}from"path";import{fileURLToPath as m,pathToFileURL as g,URL as h}from"url";import f,{z as y,ZodError as w}from"zod";import*as S from"fs";import E,{existsSync as k,readFileSync as C,promises as v,constants as T,mkdirSync as x,writeFileSync as P,statSync as A,appendFileSync as I,readdirSync as M,createReadStream as R}from"fs";import*as _ from"os";import D,{homedir as N,tmpdir as $}from"os";import{Jimp as L,JimpMime as O}from"jimp";import*as F from"fs/promises";import U,{mkdir as B,writeFile as j,rm as H,readFile as W,unlink as G,readdir as z}from"fs/promises";import*as q from"http";import{createServer as V}from"http";import*as K from"crypto";import Y,{randomUUID as Q,createHash as J,randomBytes as X}from"crypto";import Z from"open";import ee from"gray-matter";import"dotenv/config";import te from"dedent";import ne from"chalk";import re from"log-symbols";import oe from"@opentelemetry/sdk-node";import se from"@opentelemetry/exporter-trace-otlp-http";import ae from"@opentelemetry/resources";import ie from"@opentelemetry/semantic-conventions";import le from"@opentelemetry/sdk-trace-node";import ce,{memo as ue,useState as de,useRef as me,useEffect as pe,useMemo as ge,useCallback as he,useLayoutEffect as fe}from"react";import{Box as ye,Text as we,Static as Se,useInput as Ee,useStdout as be,render as ke,useApp as Ce,Newline as ve}from"ink";import Te from"picocolors";import xe from"strip-ansi";import{isValidTraceId as Pe,trace as Ae,context as Ie,SpanKind as Me,SpanStatusCode as Re}from"@opentelemetry/api";import{v4 as _e}from"uuid";import{spawn as De,execSync as Ne,exec as $e,execFile as Le,execFileSync as Oe,spawnSync as Fe}from"child_process";import{Command as Ue,Option as Be,InvalidArgumentError as je}from"commander";import He from"figures";import We from"ora";import*as Ge from"net";import ze from"net";import qe from"tls";import Ve from"stream";import{performance as Ke}from"perf_hooks";import Ye from"@sindresorhus/slugify";import{EventEmitter as Qe}from"events";import{minimatch as Je}from"minimatch";import{glob as Xe}from"glob";import Ze from"ignore";import{parse as et,quote as tt}from"shell-quote";import*as nt from"@clack/prompts";import{multiselect as rt,confirm as ot,note as st,cancel as at,select as it,isCancel as lt,password as ct}from"@clack/prompts";import ut from"ink-spinner";import{createRequire as dt}from"module";import mt from"ansi-escapes";import pt from"string-width";import*as gt from"readline";import ht from"readline";import ft from"semver";import{promisify as yt}from"util";import{inflateRawSync as wt}from"zlib";import St from"strip-json-comments";import Et from"terminal-link";import bt from"ink-select-input";import{Marked as kt}from"marked";import Ct from"marked-terminal";import*as vt from"diff";import Tt from"is-unicode-supported";import xt from"open-editor";import{wrapAnsi as Pt}from"fast-wrap-ansi";import*as At from"process";var It,Mt,Rt,_t,Dt,Nt,$t,Lt,Ot,Ft,Ut,Bt,jt,Ht,Wt,Gt,zt,qt,Vt,Kt,Yt,Qt,Jt,Xt,Zt,en,tn,nn,rn,on,sn,an,ln,cn,un,dn=Object.defineProperty,mn=Object.getOwnPropertyNames,__name=(e,t)=>dn(e,"name",{value:t,configurable:!0}),__esm=(e,t)=>function __init(){return e&&(t=(0,e[mn(e)[0]])(e=0)),t},__export=(e,t)=>{for(var n in t)dn(e,n,{get:t[n],enumerable:!0})},pn=__esm({"../../node_modules/.pnpm/tsup@8.5.1_jiti@2.6.1_postcss@8.5.12_tsx@4.21.0_typescript@5.9.3_yaml@2.8.3/node_modules/tsup/assets/esm_shims.js"(){}});function getBinaryCommand(){return"win32"===process.platform?"cmdc":"cmd"}function getModelCategory({provider:e,model:t}){if(e===Lt.VERCEL_AI_GATEWAY)return Bt.has(t)?"premium":"opensource";if(e===Lt.CLOUDFLARE_AI_GATEWAY||e===Lt.OPENROUTER)return"opensource";const n=jt[e];if(!n)return null;const r=`${e}:${t}`,o=n.find(e=>e.id===r);return o?.category??null}function getPlanDisplayName(e){return e.replace("individual-","").replace("teams-","Teams ").split(" ").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function getMinimumPlanForModel({fullModelId:e,category:t}){for(const n of zt){const r=Gt[n];if(!r)continue;const o=r.allowedCategories.includes(t),s=r.blockedModels?.includes(e)??!1;if(o&&!s)return n}return null}function buildModelGroups(e){const t=Object.values(Zt).filter(e=>!e.hidden),n=[];for(const r of Object.values(sn)){if(!("co"===e?r.visibleInCoMode:r.visibleInNormalMode))continue;const o=t.filter(e=>r.supportedModelProviders.includes(e.provider));o.length>0&&n.push({providerId:r.id,label:r.label,models:o})}return n}var gn,hn,fn,yn,wn=__esm({"../shared/src/constants.ts"(){pn(),Mt="--xco",Rt={INTERNAL_TEAM_FLAG_HEADER:`x-${(It="--co").replace("--","")}-flag`,OAUTH_TOKEN:"x-oauth-token",OAUTH_PROVIDER:"x-oauth-provider",PROJECT_SLUG:"x-project-slug",TASTE_LEARNING:"x-taste-learning",TASTE_USAGE:"x-taste-usage",CLI_ENVIRONMENT:"x-cli-environment",CLI_VERSION:"x-command-code-version",OSS_PRIMARY_PROVIDER:"x-oss-primary-provider",SESSION_ID:"x-session-id",SYSTEM_PROMPT_BREAKDOWN:"x-system-prompt-breakdown",CMD_ZDR:"x-cmd-zdr"},_t="cli",Dt={V1:{CHAT_COMPLETIONS:"/provider/v1/chat/completions",MODELS:"/provider/v1/models",MESSAGES:"/provider/v1/messages"},ALPHA:{GENERATE:"/alpha/generate",WHOAMI:"/alpha/whoami",NAMESPACES:"/alpha/namespaces",AGENT:{GENERATE:"/alpha/agent/generate"},WEB_SEARCH:"/alpha/web-search",WEB_FETCH:"/alpha/web-fetch",FINGERPRINT:{RECORD:"/alpha/fingerprint/record"},SANDBOX:{START:"/alpha/sandbox/start",STREAM:"/alpha/sandbox/stream",STATUS:"/alpha/sandbox/status",STOP:"/alpha/sandbox/stop",SESSIONS:"/alpha/sandbox/sessions"},SHARE:{CREATE:"/alpha/share/create",DELETE:"/alpha/share/delete",DATA:"/alpha/share/data",APPEND:"/alpha/share/append",CONNECT:"/alpha/share/connect"},DEVREL_THREAD:{CREATE:"/alpha/devrel-thread/create",DELETE:"/alpha/devrel-thread/delete",DATA:"/alpha/devrel-thread/data",UPDATE:"/alpha/devrel-thread/update"},TASTE:{GET:"/alpha/taste/:projectSlug",UPDATE:"/alpha/taste/:projectSlug/update",DELETE:"/alpha/taste/:projectSlug",LEARN:"/alpha/learn"},BILLING:{CREDITS:"/alpha/billing/credits",SUBSCRIPTIONS:"/alpha/billing/subscriptions"},USAGE:{SUMMARY:"/alpha/usage/summary"},LIFECYCLE_EVENTS:{TRACK:"/alpha/lifecycle-events"},COURSES_LEAD:"/alpha/courses-lead",CONVERSIONS:{TRACK:"/alpha/conversions/track"},CONSENT:{SET:"/alpha/consent/set"}},BETA:{TASTE:{PACKAGES:{UPLOAD:"/beta/taste/packages/:namespace",LIST:"/beta/taste/packages",GET:"/beta/taste/packages/:namespace/:packageName",FILES:"/beta/taste/packages/:namespace/:packageName/files",DOWNLOAD:"/beta/taste/packages/:namespace/:packageName/download",DELETE:"/beta/taste/packages/:namespace/:packageName"}}},INTERNAL:{ADMIN:{USERS:"/internal/admin/users",GRANT_CREDITS:"/internal/admin/grant-credits",ORGS:"/internal/admin/orgs",GRANT_ORG_CREDITS:"/internal/admin/grant-org-credits",ENTITY_TYPE:"/internal/admin/entity-type",BAN_USER:"/internal/admin/ban-user",BAN_ORG:"/internal/admin/ban-org",UNBAN_USER:"/internal/admin/unban-user",UNBAN_ORG:"/internal/admin/unban-org",DELETE_USER:"/internal/admin/delete-user",DELETE_ORG:"/internal/admin/delete-org",MIGRATE:{PLAN_IDS:"/internal/admin/migrations/plan-ids"}},PROFILE:{GET:"/internal/profile/:login",PACKAGES:"/internal/profile/:login/packages",PACKAGE_GET:"/internal/profile/:login/packages/:packageName",PACKAGE_DOWNLOAD:"/internal/profile/:login/packages/:packageName/download",FOLLOWERS:"/internal/profile/:login/followers",FOLLOWING:"/internal/profile/:login/following"},API_KEYS:{CREATE:"/internal/api-keys/create",LIST:"/internal/api-keys/list",DELETE:"/internal/api-keys/delete"},FINGERPRINT:{RECORD:"/internal/fingerprint/record"},BILLING:{CREDITS:{GET:"/internal/billing/credits"},CUSTOMERS:{GET:"/internal/billing/customers",UPSERT:"/internal/billing/customers",SETUP_INTENT:"/internal/billing/customers/setup-intent",PAYMENT_METHOD:"/internal/billing/customers/payment-method",SET_DEFAULT_PAYMENT_METHOD:"/internal/billing/customers/payment-method/set-default",INVOICES:"/internal/billing/customers/invoices"},CHECKOUT_ELIGIBILITY:"/internal/billing/checkout/eligibility",SUBSCRIPTIONS:{GET:"/internal/billing/subscriptions"},WEBHOOK:"/internal/billing/webhook"},ORGS:{LIST:"/internal/orgs",GET:"/internal/orgs/:login",CREATE:"/internal/orgs",UPDATE:"/internal/orgs/:id",DELETE:"/internal/orgs/:id",AVATAR:"/internal/orgs/:id/avatar",MEMBERS:{LIST:"/internal/orgs/:id/members",ADD:"/internal/orgs/:id/members",UPDATE:"/internal/orgs/:id/members/:userId",REMOVE:"/internal/orgs/:id/members/:userId"},INVITATIONS:{LIST:"/internal/orgs/:id/invitations",SEND:"/internal/orgs/:id/invitations",ACCEPT:"/internal/invitations/:token/accept",CANCEL:"/internal/invitations/:id"},FOLLOW:"/internal/orgs/:orgId/follow",FOLLOWERS:"/internal/orgs/:orgId/followers"},USER:{SETTINGS:"/internal/user/settings",AVATAR:"/internal/user/avatar",FOLLOW:"/internal/users/:userId/follow",FOLLOWERS:"/internal/users/:userId/followers",FOLLOWING:"/internal/users/:userId/following"},USAGE:{LIST:"/internal/usage",SUMMARY:"/internal/usage/summary",CHARTS:"/internal/usage/charts"},TASTE:{PACKAGES:{LIST:"/internal/taste/packages",BATCH:"/internal/taste/packages",GET:"/internal/taste/packages/:namespace/:packageName",FILES:"/internal/taste/packages/:namespace/:packageName/files",DOWNLOAD:"/internal/taste/packages/:namespace/:packageName/download",DELETE:"/internal/taste/packages/:namespace/:packageName",UPDATE:"/internal/taste/packages/:namespace/:packageName/update",STAR:"/internal/taste/packages/:namespace/:packageName/star",PIN:"/internal/taste/packages/:namespace/:packageName/pin"}}}},Nt={ALPHA:{TASTE:{GET:new RegExp("/alpha/taste/[a-z0-9-]+"),UPDATE:new RegExp("/alpha/taste/[a-z0-9-]+/update"),DELETE:new RegExp("/alpha/taste/[a-z0-9-]+/rules/[a-z0-9-]+"),LIST:new RegExp("/alpha/taste/[a-z0-9-]+/rules")},PACKAGES:{FILES:new RegExp("/alpha/v1/taste/packages/[a-zA-Z0-9_-]+/files"),GET:new RegExp("/alpha/v1/taste/packages/[a-zA-Z0-9_-]+"),DOWNLOAD:new RegExp("/alpha/v1/taste/packages/[a-zA-Z0-9_-]+/download")}},BETA:{TASTE_PACKAGES:{UPLOAD:new RegExp("^/beta/taste/packages/[a-zA-Z0-9_-]+$"),FILES:new RegExp("/beta/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/files"),GET:new RegExp("/beta/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+"),DOWNLOAD:new RegExp("/beta/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/download")}},INTERNAL:{ORGS:{GET:new RegExp("/internal/orgs/[a-zA-Z0-9_-]+"),FOLLOW:new RegExp("/internal/orgs/[a-zA-Z0-9-]+/follow"),FOLLOWERS:new RegExp("/internal/orgs/[a-zA-Z0-9-]+/followers")},USER:{FOLLOW:new RegExp("/internal/users/[a-zA-Z0-9-]+/follow"),FOLLOWERS:new RegExp("/internal/users/[a-zA-Z0-9-]+/followers"),FOLLOWING:new RegExp("/internal/users/[a-zA-Z0-9-]+/following")},TASTE:{PACKAGES:{GET:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+"),FILES:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/files"),DOWNLOAD:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/download"),UPDATE:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/update"),STAR:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/star"),PIN:new RegExp("/internal/taste/packages/[a-zA-Z0-9_-]+/[a-zA-Z0-9_-]+/pin")}}}},Object.values(Nt.ALPHA.TASTE),Object.values(Nt.BETA.TASTE_PACKAGES),new RegExp("^/alpha/sandbox/status/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"),new RegExp("^/alpha/sandbox/stop/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"),new RegExp("^/alpha/sandbox/stream/[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$"),Dt.V1.CHAT_COMPLETIONS,Dt.V1.MESSAGES,Dt.ALPHA.GENERATE,Dt.ALPHA.AGENT.GENERATE,Dt.ALPHA.WHOAMI,Dt.ALPHA.WEB_SEARCH,Dt.ALPHA.WEB_FETCH,Dt.ALPHA.FINGERPRINT.RECORD,Dt.ALPHA.NAMESPACES,Dt.ALPHA.SANDBOX.START,Dt.ALPHA.SHARE.CREATE,Dt.ALPHA.SHARE.DELETE,Dt.ALPHA.SHARE.APPEND,Dt.ALPHA.DEVREL_THREAD.CREATE,Dt.ALPHA.DEVREL_THREAD.DELETE,Dt.ALPHA.DEVREL_THREAD.UPDATE,Dt.ALPHA.TASTE.LEARN,Dt.ALPHA.TASTE.DELETE,Dt.ALPHA.TASTE.GET,Dt.ALPHA.TASTE.UPDATE,Object.values(Dt.BETA.TASTE.PACKAGES),Dt.ALPHA.BILLING.CREDITS,Dt.ALPHA.BILLING.SUBSCRIPTIONS,Dt.ALPHA.USAGE.SUMMARY,Dt.ALPHA.LIFECYCLE_EVENTS.TRACK,Dt.INTERNAL.ADMIN.USERS,Dt.INTERNAL.ADMIN.ORGS,Dt.INTERNAL.ADMIN.ENTITY_TYPE,Dt.INTERNAL.USER.AVATAR,Dt.INTERNAL.USER.SETTINGS,Dt.INTERNAL.API_KEYS.LIST,Dt.INTERNAL.API_KEYS.CREATE,Dt.INTERNAL.API_KEYS.DELETE,Dt.INTERNAL.FINGERPRINT.RECORD,Dt.INTERNAL.USAGE.LIST,Dt.INTERNAL.USAGE.SUMMARY,Dt.INTERNAL.USAGE.CHARTS,Dt.INTERNAL.ADMIN.GRANT_CREDITS,Dt.INTERNAL.ADMIN.GRANT_ORG_CREDITS,Dt.INTERNAL.ADMIN.BAN_USER,Dt.INTERNAL.ADMIN.BAN_ORG,Dt.INTERNAL.ADMIN.UNBAN_USER,Dt.INTERNAL.ADMIN.UNBAN_ORG,Dt.INTERNAL.ADMIN.DELETE_USER,Dt.INTERNAL.ADMIN.DELETE_ORG,Dt.INTERNAL.BILLING.CREDITS.GET,Dt.INTERNAL.BILLING.CUSTOMERS.GET,Dt.INTERNAL.BILLING.CUSTOMERS.UPSERT,Dt.INTERNAL.BILLING.CUSTOMERS.SETUP_INTENT,Dt.INTERNAL.BILLING.CUSTOMERS.PAYMENT_METHOD,Dt.INTERNAL.BILLING.CUSTOMERS.SET_DEFAULT_PAYMENT_METHOD,Dt.INTERNAL.BILLING.CUSTOMERS.INVOICES,Dt.INTERNAL.BILLING.SUBSCRIPTIONS.GET,Dt.INTERNAL.BILLING.CHECKOUT_ELIGIBILITY,Dt.INTERNAL.ORGS.LIST,Dt.INTERNAL.ORGS.GET,Dt.INTERNAL.ORGS.CREATE,Dt.INTERNAL.ORGS.UPDATE,Dt.INTERNAL.ORGS.DELETE,Dt.INTERNAL.ORGS.MEMBERS.LIST,Dt.INTERNAL.ORGS.MEMBERS.ADD,Dt.INTERNAL.ORGS.MEMBERS.UPDATE,Dt.INTERNAL.ORGS.MEMBERS.REMOVE,Dt.INTERNAL.ORGS.INVITATIONS.LIST,Dt.INTERNAL.ORGS.INVITATIONS.SEND,Dt.INTERNAL.ORGS.INVITATIONS.ACCEPT,Dt.INTERNAL.ORGS.INVITATIONS.CANCEL,Dt.INTERNAL.TASTE.PACKAGES.LIST,Dt.INTERNAL.ADMIN.MIGRATE.PLAN_IDS,Object.values(Nt.INTERNAL.ORGS),Object.values(Nt.INTERNAL.USER),Object.values(Nt.INTERNAL.TASTE.PACKAGES),$t={INTERNAL:{PROFILE:{GET:new RegExp("/internal/profile/[a-zA-Z0-9_-]+"),PACKAGES:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/packages"),FOLLOWING:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/following"),FOLLOWERS:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/followers"),PACKAGE_GET:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/packages/[a-zA-Z0-9_-]+"),PACKAGE_DOWNLOAD:new RegExp("/internal/profile/[a-zA-Z0-9_-]+/packages/[a-zA-Z0-9_-]+/download")}}},Object.values($t.INTERNAL.PROFILE),__name(getBinaryCommand,"getBinaryCommand"),Ot={"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"},Ft=[(Lt={ANTHROPIC:"anthropic",OPENAI:"openai",BASETEN:"baseten",VERCEL_AI_GATEWAY:"vercel-ai-gateway",CLOUDFLARE_AI_GATEWAY:"cloudflare-ai-gateway",OPENROUTER:"openrouter",SPIDER_WEB:"spider_web"}).VERCEL_AI_GATEWAY,Lt.BASETEN,Lt.CLOUDFLARE_AI_GATEWAY,Lt.OPENROUTER],Ut=Ft[0],Lt.ANTHROPIC,Lt.OPENAI,Bt=new Set(["google/gemini-3.5-flash","google/gemini-3.1-flash-lite","sakana/fugu-ultra"]),jt={[Lt.ANTHROPIC]:[{id:"anthropic:claude-sonnet-5",provider:"Anthropic",category:"premium",promptCost:2,completionCost:10,cacheWrite5mCost:2.5,cacheWrite1hCost:4,cacheHitCost:.2},{id:"anthropic:claude-sonnet-4-20250514",provider:"Anthropic",category:"premium",promptCost:3,completionCost:15,cacheWrite5mCost:3.75,cacheWrite1hCost:6,cacheHitCost:.3},{id:"anthropic:claude-sonnet-4-5-20250929",provider:"Anthropic",category:"premium",promptCost:3,completionCost:15,cacheWrite5mCost:3.75,cacheWrite1hCost:6,cacheHitCost:.3},{id:"anthropic:claude-opus-4-5-20251101",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-sonnet-4-6",provider:"Anthropic",category:"premium",promptCost:3,completionCost:15,cacheWrite5mCost:3.75,cacheWrite1hCost:6,cacheHitCost:.3},{id:"anthropic:claude-fable-5",provider:"Anthropic",category:"premium",promptCost:10,completionCost:50,cacheWrite5mCost:12.5,cacheWrite1hCost:20,cacheHitCost:1},{id:"anthropic:claude-opus-4-8",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-opus-4-7",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-opus-4-6",provider:"Anthropic",category:"premium",promptCost:5,completionCost:25,cacheWrite5mCost:6.25,cacheWrite1hCost:10,cacheHitCost:.5},{id:"anthropic:claude-haiku-4-5-20251001",provider:"Anthropic",category:"premium",promptCost:1,completionCost:5,cacheWrite5mCost:1.25,cacheWrite1hCost:2,cacheHitCost:.1}],[Lt.OPENAI]:[{id:"openai:gpt-5.5",provider:"OpenAI",category:"premium",promptCost:5,completionCost:30,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.5},{id:"openai:gpt-5.4",provider:"OpenAI",category:"premium",promptCost:2.5,completionCost:15,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.25},{id:"openai:gpt-5.3-codex",provider:"OpenAI",category:"premium",promptCost:2,completionCost:8,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.5},{id:"openai:gpt-5.4-mini",provider:"OpenAI",category:"premium",promptCost:.75,completionCost:4.5,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.075}],[Lt.BASETEN]:[{id:"baseten:zai-org/GLM-5",provider:"Baseten",category:"opensource",promptCost:.95,completionCost:3.15,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:0},{id:"baseten:moonshotai/Kimi-K2.5",provider:"Baseten",category:"opensource",promptCost:.6,completionCost:3,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:0},{id:"baseten:moonshotai/Kimi-K2.6",provider:"Baseten",category:"opensource",promptCost:.95,completionCost:4,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:.16},{id:"baseten:MiniMaxAI/MiniMax-M2.5",provider:"Baseten",category:"opensource",promptCost:.5,completionCost:2,cacheWrite5mCost:0,cacheWrite1hCost:0,cacheHitCost:0}],[Lt.VERCEL_AI_GATEWAY]:[],[Lt.OPENROUTER]:[]},__name(getModelCategory,"getModelCategory"),Ht={"individual-go":{premium:0,opensource:10,total:10},"individual-pro":{premium:15,opensource:15,total:30},"individual-provider":{premium:15,opensource:0,total:15},"individual-max":{premium:100,opensource:50,total:150},"individual-ultra":{premium:200,opensource:100,total:300},"teams-pro":{premium:40,opensource:0,total:40}},Wt={"individual-go":"Go","individual-pro":"Pro","individual-provider":"Provider","individual-max":"Max","individual-ultra":"Ultra","teams-pro":"Teams Pro"},Gt={"individual-go":{allowedCategories:["opensource"]},"individual-pro":{allowedCategories:["premium","opensource"],blockedModels:["anthropic:claude-fable-5","anthropic:claude-opus-4-8","anthropic:claude-opus-4-7","anthropic:claude-opus-4-6","anthropic:claude-opus-4-5-20251101","vercel-ai-gateway:sakana/fugu-ultra"]},"individual-provider":{allowedCategories:["premium","opensource"]},"individual-max":{allowedCategories:["premium","opensource"]},"individual-ultra":{allowedCategories:["premium","opensource"]},"teams-pro":{allowedCategories:["premium","opensource"]}},zt=["individual-go","individual-pro","individual-provider","individual-max","individual-ultra","teams-pro"],__name(getPlanDisplayName,"getPlanDisplayName"),__name(getMinimumPlanForModel,"getMinimumPlanForModel"),qt=[50,75,90],f.enum(["owner","admin","member"]),Vt={LEARN_TASTE:"learn-taste",TASTE:"taste",TERMINAL_SETUP:"terminal-setup"},Kt={MAX_PROMPT_TOKENS:25e3,MAX_PROMPT_CHARS:1e5,DB_PROMPT_MAX_WORDS:10},Yt=["active","trialing","past_due"],Qt="chatComplete",Jt="responses",Xt="MiniMaxAI/MiniMax-M3-Free",(Zt={SONNET_5:{id:"claude-sonnet-5",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Sonnet 5",name:"Claude Sonnet 5",description:"best combo of speed & intelligence (recommended)",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},SONNET_4_6:{id:"claude-sonnet-4-6",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Sonnet 4.6",name:"Claude Sonnet 4.6",description:"prev Sonnet, still fast & capable",reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},FABLE_5:{id:"claude-fable-5",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Fable 5",name:"Claude Fable 5",description:"most capable for demanding reasoning & long-horizon agents",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},OPUS_4_8:{id:"claude-opus-4-8",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Opus 4.8",name:"Claude Opus 4.8",description:"most intelligent Opus for agents and coding",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},OPUS_4_7:{id:"claude-opus-4-7",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Opus 4.7",name:"Claude Opus 4.7",description:"prev flagship, still strong for agents and coding",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh","max"],contextWindow:1e6},HAIKU_4_5:{id:"claude-haiku-4-5-20251001",inputModalities:["text","image"],provider:Lt.ANTHROPIC,spec:Qt,label:"Claude Haiku 4.5",name:"Claude Haiku 4.5",description:"fastest & most compact, great for quick tasks",contextWindow:2e5},GPT_5_5:{id:"gpt-5.5",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.5",name:"GPT-5.5",description:"latest frontier model for general complex work",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh"]},GPT_5_4:{id:"gpt-5.4",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.4",name:"GPT-5.4",description:"frontier model for general complex work",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh"],contextWindow:4e5},GPT_5_3_CODEX:{id:"gpt-5.3-codex",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.3 Codex",name:"GPT-5.3 Codex",description:"frontier coding model",reasoning:!0,reasoningEfforts:["low","medium","high","xhigh"],contextWindow:4e5},GPT_5_4_MINI:{id:"gpt-5.4-mini",inputModalities:["text","image"],provider:Lt.OPENAI,spec:Jt,label:"GPT-5.4 Mini",name:"GPT-5.4 Mini",description:"fast, cost-effective model for everyday tasks",reasoning:!0,reasoningEfforts:["low","medium","high"],contextWindow:4e5},MINIMAX_M3_FREE:{id:Xt,inputModalities:["text","image"],provider:Ut,spec:Qt,label:"MiniMax M3",name:"MiniMax M3",description:"frontier coding, agents & native multimodality",badge:"free",hidden:!0,reasoning:!0,contextWindow:1e6},DEEPSEEK_V4_PRO:{id:"deepseek/deepseek-v4-pro",inputModalities:["text"],provider:Ut,spec:Qt,label:"DeepSeek V4 Pro",name:"DeepSeek V4 Pro",description:"hybrid-attention long-context reasoning",reasoning:!0,reasoningEfforts:["high","max"],contextWindow:1e6},DEEPSEEK_V4_FLASH:{id:"deepseek/deepseek-v4-flash",inputModalities:["text"],provider:Ut,spec:Qt,label:"DeepSeek V4 Flash",name:"DeepSeek V4 Flash",description:"fast hybrid-attention reasoning",reasoning:!0,reasoningEfforts:["high","max"],contextWindow:1e6},KIMI_K2_7_CODE:{id:"moonshotai/Kimi-K2.7-Code",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.7 Code",name:"Kimi K2.7 Code",description:"improved long-horizon coding with vision",reasoning:!0,contextWindow:256e3},KIMI_K2_7_CODE_HIGHSPEED:{id:"moonshotai/Kimi-K2.7-Code-Highspeed",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.7 Code HighSpeed",name:"Kimi K2.7 Code HighSpeed",description:"high-speed long-horizon coding with vision",reasoning:!0,contextWindow:262e3},KIMI_K2_6:{id:"moonshotai/Kimi-K2.6",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.6",name:"Kimi K2.6",description:"long-horizon coding with vision",contextWindow:256e3},KIMI_K2_5:{id:"moonshotai/Kimi-K2.5",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Kimi K2.5",name:"Kimi K2.5",description:"multimodal frontend coding",contextWindow:256e3},GLM_5_2:{id:"zai-org/GLM-5.2",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5.2",name:"GLM-5.2",description:"powerful coding with 1M context and long-horizon tasks",reasoning:!0,reasoningEfforts:["high","max"],contextWindow:1e6},GLM_5_2_FAST:{id:"zai-org/GLM-5.2-Fast",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5.2 Fast",name:"GLM-5.2 Fast",description:"high-throughput GLM-5.2 with 1M context",contextWindow:1e6},GLM_5_1:{id:"zai-org/GLM-5.1",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5.1",name:"GLM-5.1",description:"long-horizon autonomous coding agent"},GLM_5:{id:"zai-org/GLM-5",inputModalities:["text"],provider:Ut,spec:Qt,label:"GLM-5",name:"GLM-5",description:"multi-mode thinking & long-range planning",contextWindow:2e5},MINIMAX_M3:{id:"MiniMaxAI/MiniMax-M3",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"MiniMax M3",name:"MiniMax M3",description:"frontier coding, agents & native multimodality",reasoning:!0,contextWindow:1e6},MINIMAX_M2_7:{id:"MiniMaxAI/MiniMax-M2.7",inputModalities:["text"],provider:Ut,spec:Qt,label:"MiniMax M2.7",name:"MiniMax M2.7",description:"end-to-end software engineering agent"},MINIMAX_M2_5:{id:"MiniMaxAI/MiniMax-M2.5",inputModalities:["text"],provider:Ut,spec:Qt,label:"MiniMax M2.5",name:"MiniMax M2.5",description:"cross-platform full-stack agentic dev",contextWindow:2e5},XIAOMI_MIMO_V2_5_PRO:{id:"xiaomi/mimo-v2.5-pro",inputModalities:["text"],provider:Ut,spec:Qt,label:"MiMo V2.5 Pro",name:"MiMo V2.5 Pro",description:"high-capability long-context agentic coding",contextWindow:1e6},XIAOMI_MIMO_V2_5:{id:"xiaomi/mimo-v2.5",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"MiMo V2.5",name:"MiMo V2.5",description:"efficient long-context agentic coding",contextWindow:1e6},QWEN_3_6_MAX_PREVIEW:{id:"Qwen/Qwen3.6-Max-Preview",inputModalities:["text"],provider:Ut,spec:Qt,label:"Qwen 3.6 Max Preview",name:"Qwen 3.6 Max Preview",description:"vibe coding & efficient agent execution",reasoning:!0},QWEN_3_6_PLUS:{id:"Qwen/Qwen3.6-Plus",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Qwen 3.6 Plus",name:"Qwen 3.6 Plus",description:"agentic coding & reasoning",reasoning:!0},QWEN_3_7_MAX:{id:"Qwen/Qwen3.7-Max",inputModalities:["text"],provider:Ut,spec:Qt,label:"Qwen 3.7 Max",name:"Qwen 3.7 Max",description:"frontier coding & long-horizon agent execution",reasoning:!0,contextWindow:1e6},QWEN_3_7_PLUS:{id:"Qwen/Qwen3.7-Plus",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Qwen 3.7 Plus",name:"Qwen 3.7 Plus",description:"agentic coding & reasoning at lower cost",reasoning:!0,contextWindow:1e6},STEP_3_7_FLASH:{id:"stepfun/Step-3.7-Flash",inputModalities:["text","image"],provider:Ut,spec:Qt,label:"Step 3.7 Flash",name:"Step 3.7 Flash",description:"multimodal sparse-MoE reasoning",reasoning:!0,contextWindow:256e3},STEP_3_5_FLASH:{id:"stepfun/Step-3.5-Flash",inputModalities:["text"],provider:Ut,spec:Qt,label:"Step 3.5 Flash",name:"Step 3.5 Flash",description:"fast sparse-MoE agentic reasoning",reasoning:!0,contextWindow:1e6},GEMINI_3_5_FLASH:{id:"google/gemini-3.5-flash",inputModalities:["text","image"],provider:Lt.VERCEL_AI_GATEWAY,spec:Qt,label:"Gemini 3.5 Flash",name:"Gemini 3.5 Flash",description:"Pro-level coding proficiency, parallel agentic execution",vendorLabel:"Google",reasoning:!0,reasoningEfforts:["low","medium","high"],contextWindow:1e6},GEMINI_3_1_FLASH_LITE:{id:"google/gemini-3.1-flash-lite",inputModalities:["text","image"],provider:Lt.VERCEL_AI_GATEWAY,spec:Qt,label:"Gemini 3.1 Flash Lite",name:"Gemini 3.1 Flash Lite",description:"high-volume workhorse model with implicit caching",vendorLabel:"Google",reasoning:!0,reasoningEfforts:["low","medium","high"],contextWindow:1e6},FUGU_ULTRA:{id:"sakana/fugu-ultra",inputModalities:["text","image"],provider:Lt.VERCEL_AI_GATEWAY,spec:Qt,label:"Fugu Ultra",name:"Fugu Ultra",description:"multi-agent orchestration across frontier models",vendorLabel:"Sakana",reasoning:!0,reasoningEfforts:["high","xhigh"],contextWindow:1e6},NEMOTRON_3_ULTRA:{id:"nvidia/nemotron-3-ultra-550b-a55b",inputModalities:["text"],provider:Ut,spec:Qt,label:"Nemotron 3 Ultra",name:"Nemotron 3 Ultra",description:"open reasoning model for long-horizon autonomous agents",reasoning:!0,contextWindow:1e6}}).SONNET_5.id,Zt.SONNET_4_6.id,Zt.FABLE_5.id,Zt.OPUS_4_8.id,Zt.OPUS_4_7.id,Zt.HAIKU_4_5.id,en=[{canonicalId:"zai-org/GLM-5",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5",[Lt.BASETEN]:"zai-org/GLM-5"}},{canonicalId:"zai-org/GLM-5.2",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5.2"}},{canonicalId:"zai-org/GLM-5.2-Fast",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5.2-fast"}},{canonicalId:"zai-org/GLM-5.1",providers:{[Lt.VERCEL_AI_GATEWAY]:"zai/glm-5.1"}},{canonicalId:"moonshotai/Kimi-K2.5",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.5",[Lt.BASETEN]:"moonshotai/Kimi-K2.5",[Lt.CLOUDFLARE_AI_GATEWAY]:"workers-ai/@cf/moonshotai/kimi-k2.5"}},{canonicalId:"moonshotai/Kimi-K2.6",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.6",[Lt.BASETEN]:"moonshotai/Kimi-K2.6",[Lt.CLOUDFLARE_AI_GATEWAY]:"workers-ai/@cf/moonshotai/kimi-k2.6"}},{canonicalId:"moonshotai/Kimi-K2.7-Code",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.7-code"}},{canonicalId:"moonshotai/Kimi-K2.7-Code-Highspeed",providers:{[Lt.VERCEL_AI_GATEWAY]:"moonshotai/kimi-k2.7-code-highspeed"}},{canonicalId:"MiniMaxAI/MiniMax-M2.5",providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m2.5",[Lt.BASETEN]:"MiniMaxAI/MiniMax-M2.5"}},{canonicalId:"deepseek/deepseek-v4-pro",providers:{[Lt.VERCEL_AI_GATEWAY]:"deepseek/deepseek-v4-pro"}},{canonicalId:"deepseek/deepseek-v4-flash",providers:{[Lt.VERCEL_AI_GATEWAY]:"deepseek/deepseek-v4-flash"}},{canonicalId:"Qwen/Qwen3.6-Max-Preview",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen-3.6-max-preview"}},{canonicalId:"Qwen/Qwen3.6-Plus",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen3.6-plus"}},{canonicalId:"Qwen/Qwen3.7-Max",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen3.7-max"}},{canonicalId:"Qwen/Qwen3.7-Plus",providers:{[Lt.VERCEL_AI_GATEWAY]:"alibaba/qwen3.7-plus"}},{canonicalId:"MiniMaxAI/MiniMax-M3",providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m3"}},{canonicalId:Xt,providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m3"}},{canonicalId:"MiniMaxAI/MiniMax-M2.7",providers:{[Lt.VERCEL_AI_GATEWAY]:"minimax/minimax-m2.7"}},{canonicalId:"stepfun/Step-3.7-Flash",providers:{[Lt.VERCEL_AI_GATEWAY]:"stepfun/step-3.7-flash"}},{canonicalId:"stepfun/Step-3.5-Flash",providers:{[Lt.OPENROUTER]:"stepfun/step-3.5-flash"}},{canonicalId:"xiaomi/mimo-v2.5-pro",providers:{[Lt.VERCEL_AI_GATEWAY]:"xiaomi/mimo-v2.5-pro"}},{canonicalId:"xiaomi/mimo-v2.5",providers:{[Lt.VERCEL_AI_GATEWAY]:"xiaomi/mimo-v2.5"}},{canonicalId:"google/gemini-3.5-flash",providers:{[Lt.VERCEL_AI_GATEWAY]:"google/gemini-3.5-flash"}},{canonicalId:"google/gemini-3.1-flash-lite",providers:{[Lt.VERCEL_AI_GATEWAY]:"google/gemini-3.1-flash-lite"}},{canonicalId:"nvidia/nemotron-3-ultra-550b-a55b",providers:{[Lt.VERCEL_AI_GATEWAY]:"nvidia/nemotron-3-ultra-550b-a55b"}},{canonicalId:"sakana/fugu-ultra",providers:{[Lt.VERCEL_AI_GATEWAY]:"sakana/fugu-ultra"}}],tn={"claude-sonnet-4-20250514":Zt.SONNET_4_6.id,"claude-sonnet-4-5-20250929":Zt.SONNET_4_6.id,"claude-opus-4-5-20251101":Zt.OPUS_4_7.id,"claude-opus-4-6":Zt.OPUS_4_7.id,"claude-haiku-4-5":Zt.HAIKU_4_5.id},nn=Zt.DEEPSEEK_V4_FLASH.id,rn={[Lt.ANTHROPIC]:"Anthropic",[Lt.OPENAI]:"OpenAI",[Lt.BASETEN]:"Open Source",[Lt.VERCEL_AI_GATEWAY]:"Open Source"},on=["Open Source","Anthropic","OpenAI","Google"],sn={"command-code":{id:"command-code",label:"Command Code",shortLabel:"cmd",description:"recommended",supportedModelProviders:[Lt.ANTHROPIC,Lt.OPENAI,Lt.BASETEN,Lt.VERCEL_AI_GATEWAY],requiresAuth:!1,visibleInCoMode:!0,visibleInNormalMode:!0,showProviderLabelInSelector:!0},anthropic:{id:"anthropic",label:"Anthropic",shortLabel:"anth",description:"Claude Pro/Max",supportedModelProviders:[Lt.ANTHROPIC],requiresAuth:!0,visibleInCoMode:!0,visibleInNormalMode:!1,showProviderLabelInSelector:!1},"github-copilot":{id:"github-copilot",label:"GitHub Copilot",shortLabel:"copilot",description:"Copilot subscription",supportedModelProviders:[Lt.ANTHROPIC,Lt.OPENAI],requiresAuth:!0,visibleInCoMode:!0,visibleInNormalMode:!1,showProviderLabelInSelector:!0},codex:{id:"codex",label:"ChatGPT (Codex)",shortLabel:"codex",description:"ChatGPT Pro/Plus subscription",supportedModelProviders:[Lt.OPENAI],requiresAuth:!0,visibleInCoMode:!0,visibleInNormalMode:!1,showProviderLabelInSelector:!1}},__name(buildModelGroups,"buildModelGroups"),an=buildModelGroups("co"),ln=buildModelGroups("normal"),new Set(["cc2@www3.in","cc3@www3.in","cc4@www3.in","cc5@www3.in","cc6@www3.in","cc7@www3.in","cc8@www3.in","cc9@www3.in","cc10@www3.in"].map(e=>e.toLowerCase())),cn=["**/node_modules/**","**/dist/**","**/build/**","**/.git/**","**/.svn/**","**/.hg/**","**/coverage/**","**/*.log","**/tmp/**","**/temp/**","**/.DS_Store","**/Thumbs.db","**/*.tmp","**/*.cache"],un={TIER_1_THRESHOLD:.5,TIER_2_THRESHOLD:.8,TIER_3_THRESHOLD:.9,TIER_1_KEEP_COUNT:20,TIER_2_KEEP_COUNT:10,KEEP_RECENT_TOKENS:3e4}}});function getIcon(e){if(fn[e])return fn[e];const t=e.split(":")[0];return fn[t]?fn[t]:fn.default}function formatTime(e){return`${e.getHours().toString().padStart(2,"0")}:${e.getMinutes().toString().padStart(2,"0")}:${e.getSeconds().toString().padStart(2,"0")}.${e.getMilliseconds().toString().padStart(3,"0")}`}function parseMessage(e){const t=e.match(/^\[([^\]]+)\]\s*(.*)/);return t?{category:t[1],text:t[2]}:{category:"",text:e}}function showStartup(){if(!yn){yn=!0;try{S.mkdirSync(gn,{recursive:!0});const e=new Date,t=`\n════════════════════════════════════════════════════════════════\n CommandCode Debug Log\n Started: ${e.toLocaleDateString()} ${formatTime(e)}\n Log: ${hn}\n════════════════════════════════════════════════════════════════\n\n`;S.appendFileSync(hn,t,"utf-8")}catch{}}}function dlog(e,t){if("true"===process.env.DEBUG){showStartup();try{const n=formatTime(new Date),{category:r,text:o}=parseMessage(e);let s;if(r){s=`${n} ${getIcon(r)} ${`[${r}]`.padEnd(16)} ${o}`}else s=`${n} ${fn.default} ${e}`;if(t){s+=`\n${("string"==typeof t?t:JSON.stringify(t,null,2)).split("\n").map(e=>` ${e}`).join("\n")}`}s+="\n",S.appendFileSync(hn,s,"utf-8")}catch{}}}function dlogSection(e){if("true"===process.env.DEBUG){showStartup();try{const t=`\n──── ${e} ${"─".repeat(Math.max(0,50-e.length))}\n`;S.appendFileSync(hn,t,"utf-8")}catch{}}}var Sn=__esm({"src/utils/dlog.ts"(){pn(),gn=e.join(_.homedir(),".commandcode","logs"),hn=e.join(gn,"command.log"),fn={Startup:">",CLI:"$",Config:"#",Auth:"@",Onboarding:"*",LearningAgent:"&",Import:"<",API:"~",Sessions:"+",Observer:"!",Flow:"^",Handler:">",Helper:"-",Codex:"+",UI:"|",Hook:"%",ObserverAPI:"~",ContextEngine:"~",Updater:"^",MCP:"&",default:"-"},__name(getIcon,"getIcon"),__name(formatTime,"formatTime"),__name(parseMessage,"parseMessage"),yn=!1,__name(showStartup,"showStartup"),"true"===process.env.DEBUG&&showStartup(),__name(dlog,"dlog"),__name(dlogSection,"dlogSection")}});function bitmapHasAlpha(e){for(let t=3;t<e.length;t+=4)if((e[t]??255)<255)return!0;return!1}async function compressImageForSharing(e,t="image/png"){try{const n=Buffer.from(e,"base64"),r=n.length,o=await L.fromBuffer(n),{width:s,height:a}=o.bitmap;if(!s||!a)return console.warn("[ImageCompression] Could not determine image dimensions"),null;const i=bitmapHasAlpha(o.bitmap.data),l=1200;let u,d,m=s,g=a;(s>l||a>l)&&(s>a?(g=Math.round(a*l/s),m=l):(m=Math.round(s*l/a),g=l),o.resize({w:m,h:g})),t.includes("png")&&i?(u=await o.getBuffer(O.png),d="image/png"):(u=await o.getBuffer(O.jpeg,{quality:95}),d="image/jpeg");const h=u.length;return{compressedBase64:u.toString("base64"),mediaType:d,originalSizeBytes:r,compressedSizeBytes:h,compressionRatio:r/h}}catch(e){return dlog("[ImageCompression] Failed to compress image",{error:e instanceof Error?e.message:String(e)}),null}}var En,bn,kn,Cn,vn,Tn,xn=__esm({"src/utils/image-compression.ts"(){pn(),Sn(),__name(bitmapHasAlpha,"bitmapHasAlpha"),__name(compressImageForSharing,"compressImageForSharing")}}),Pn={};function isClipboardAvailable(){if(void 0!==En)return En;const e=process.platform;return En="darwin"===e||"win32"===e||"linux"===e&&isLinuxClipboardAvailable()}function isLinuxClipboardAvailable(){const e=process.env.DISPLAY;if(e){const t=e.match(/^:(\d+)/);return!t||E.existsSync(`/tmp/.X11-unix/X${t[1]}`)}return!1}function _resetClipboardAvailableCacheForTests(){En=void 0}async function writeTextToClipboard(e){if(!isClipboardAvailable())return!1;try{const t=await import("@crosscopy/clipboard");return await t.default.setText(e),!0}catch{return!1}}function looksLikeWindowsPath(e){return Cn.test(e)||vn.test(e)||e.includes("\\")}function normalizeDroppedImagePath(e){return e.startsWith("file://")&&(e=decodeURIComponent(e.slice(7))),looksLikeWindowsPath(e)?e.replace(Tn,"$1"):e.replace(/\\(.)/g,"$1")}async function detectDroppedImageFile(e){try{if(!e||0===e.trim().length)return null;let t=e.trim();if((t.startsWith("'")&&t.endsWith("'")||t.startsWith('"')&&t.endsWith('"'))&&(t=t.slice(1,-1)),t=normalizeDroppedImagePath(t),t.includes("\n")||t.includes("\r"))return null;const n=i(t).toLowerCase(),r=bn[n];if(!r)return null;const o="win32"===process.platform?l.resolve(t):u(t);if(!E.existsSync(o))return null;const s=E.readFileSync(o).toString("base64");if(!s||0===s.length)return null;if(s.length>32e6)return null;const a=await compressImageForSharing(s,r);return a?{data:a.compressedBase64,mediaType:a.mediaType}:kn.has(n)?{data:s,mediaType:r}:null}catch(e){return null}}async function detectClipboardImage(){try{if(!isClipboardAvailable())return null;const e=await import("@crosscopy/clipboard");if(!e.default.hasImage())return null;let t=null;try{if(t=await e.default.getImageBase64(),!t){const n=e.default.getImageBase64();t=n&&"function"==typeof n.then?await n:n}}catch(e){return null}if(!t||0===t.length)return null;if(t.length>32e6)return console.log("Image too large:",t.length,"bytes"),null;try{const e=await compressImageForSharing(t,"image/png");return e?{data:e.compressedBase64,mediaType:e.mediaType}:(console.log("Failed to compress clipboard image"),null)}catch(e){return console.log("Failed to process clipboard image:",e),null}}catch(e){return null}}async function detectClipboardText(){try{if(!isClipboardAvailable())return null;const e=await import("@crosscopy/clipboard");if(!e.default.hasText())return null;let t=null;try{if(t=await e.default.getText(),!t){const n=e.default.getText();t=n&&"function"==typeof n.then?await n:n}}catch(e){return null}return t&&0!==t.length?t:null}catch(e){return null}}__export(Pn,{_resetClipboardAvailableCacheForTests:()=>_resetClipboardAvailableCacheForTests,detectClipboardImage:()=>detectClipboardImage,detectClipboardText:()=>detectClipboardText,detectDroppedImageFile:()=>detectDroppedImageFile,isClipboardAvailable:()=>isClipboardAvailable,normalizeDroppedImagePath:()=>normalizeDroppedImagePath,writeTextToClipboard:()=>writeTextToClipboard});var An=__esm({"src/utils/clipboard-image.ts"(){pn(),xn(),__name(isClipboardAvailable,"isClipboardAvailable"),__name(isLinuxClipboardAvailable,"isLinuxClipboardAvailable"),__name(_resetClipboardAvailableCacheForTests,"_resetClipboardAvailableCacheForTests"),__name(writeTextToClipboard,"writeTextToClipboard"),bn={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/png",".tiff":"image/png"},kn=new Set([".png",".jpg",".jpeg",".gif",".webp"]),Cn=/^[a-zA-Z]:[\\/]/,vn=/^\\\\[^\\]+\\[^\\]+/,Tn=/\\([ "'()&;<>|$`!#*?[\]{}])/g,__name(looksLikeWindowsPath,"looksLikeWindowsPath"),__name(normalizeDroppedImagePath,"normalizeDroppedImagePath"),__name(detectDroppedImageFile,"detectDroppedImageFile"),__name(detectClipboardImage,"detectClipboardImage"),__name(detectClipboardText,"detectClipboardText")}}),In={};function getPackageJson(){const e=import.meta.url,t=m(e);let s=r(t);const{root:a}=o(s);for(;;){const e=n(s,"package.json");if(k(e))return JSON.parse(C(e,"utf8"));if(s===a)throw new Error("Could not find package.json");s=r(s)}}__export(In,{getPackageJson:()=>getPackageJson});var Mn,Rn=__esm({"src/utils/package.ts"(){pn(),__name(getPackageJson,"getPackageJson")}});function originOf(e){try{return new URL(e).origin}catch{return null}}function getTokenFilePath(){return e.join(D.homedir(),".commandcode",Mn)}async function loadTokenStorage(){try{const e=getTokenFilePath(),t=await F.readFile(e,"utf-8"),n=JSON.parse(t);return 1!==n.version||"object"!=typeof n.tokens?{version:1,tokens:{}}:n}catch(e){return dlog("[MCP] Failed to load token storage",e),{version:1,tokens:{}}}}async function saveTokenStorage(t){const n=getTokenFilePath(),r=e.dirname(n);await F.mkdir(r,{recursive:!0}),await F.writeFile(n,JSON.stringify(t,null,2),{mode:384}),await F.chmod(n,384)}async function storeTokens(e,t){const n=await loadTokenStorage();n.tokens[e]=t,await saveTokenStorage(n)}async function getTokens(e){return(await loadTokenStorage()).tokens[e]||null}async function deleteTokens(e){const t=await loadTokenStorage();return e in t.tokens&&(delete t.tokens[e],t.discoveredClients?.[e]&&delete t.discoveredClients[e],await saveTokenStorage(t),!0)}async function hasTokens(e){return e in(await loadTokenStorage()).tokens}function isTokenExpired(e){return!!e.expiresAt&&Date.now()>=e.expiresAt-6e4}async function getValidAccessToken({serverName:e,expectedUrl:t,refreshCallback:n}){const r=await getTokens(e);if(!r)return null;const o=originOf(t);if(!o)return dlog("[MCP] Refusing to attach token: invalid expectedUrl",t),null;if(!r.issuerUrl)return dlog(`[MCP] Stored token for "${e}" has no issuerUrl; refusing and clearing. Re-authenticate to continue.`),await deleteTokens(e),null;if(originOf(r.issuerUrl)!==o)return dlog(`[MCP] Refusing to attach token for "${e}": configured url ${o} does not match issuer ${r.issuerUrl}`),null;if(!isTokenExpired(r))return r.accessToken;if(r.refreshToken&&n)try{const t=await n(r.refreshToken);return await storeTokens(e,{...t,issuerUrl:r.issuerUrl}),t.accessToken}catch(t){return dlog("[MCP] Token refresh failed",t),await deleteTokens(e),null}return await deleteTokens(e),null}async function migrateLegacyTokens(e){const t=await loadTokenStorage(),n={bound:[],cleared:[]};let r=!1;for(const[o,s]of Object.entries(t.tokens)){if(s.issuerUrl)continue;const a=await e(o);a&&originOf(a)?(t.tokens[o]={...s,issuerUrl:a},n.bound.push(o),dlog(`[MCP] Migrated legacy token "${o}" → issuerUrl=${a}`)):(delete t.tokens[o],n.cleared.push(o),dlog(`[MCP] No trusted URL for legacy token "${o}"; cleared.`)),r=!0}return r&&await saveTokenStorage(t),n}async function listServersWithTokens(){const e=await loadTokenStorage();return Object.keys(e.tokens)}async function storeClientSecret(e,t){const n=await loadTokenStorage();n.clientSecrets||(n.clientSecrets={}),n.clientSecrets[e]=t,await saveTokenStorage(n)}async function getClientSecret(e){const t=await loadTokenStorage();return t.clientSecrets?.[e]??null}async function deleteClientSecret(e){const t=await loadTokenStorage();return!!t.clientSecrets?.[e]&&(delete t.clientSecrets[e],await saveTokenStorage(t),!0)}async function storeDiscoveredClient(e,t){const n=await loadTokenStorage();n.discoveredClients||(n.discoveredClients={}),n.discoveredClients[e]=t,await saveTokenStorage(n)}async function getDiscoveredClient(e){const t=await loadTokenStorage();return t.discoveredClients?.[e]??null}var _n,Dn,Nn,$n=__esm({"src/mcp/auth/token-storage.ts"(){pn(),wn(),Sn(),__name(originOf,"originOf"),Mn="mcp-tokens.json",__name(getTokenFilePath,"getTokenFilePath"),__name(loadTokenStorage,"loadTokenStorage"),__name(saveTokenStorage,"saveTokenStorage"),__name(storeTokens,"storeTokens"),__name(getTokens,"getTokens"),__name(deleteTokens,"deleteTokens"),__name(hasTokens,"hasTokens"),__name(isTokenExpired,"isTokenExpired"),__name(getValidAccessToken,"getValidAccessToken"),__name(migrateLegacyTokens,"migrateLegacyTokens"),__name(listServersWithTokens,"listServersWithTokens"),__name(storeClientSecret,"storeClientSecret"),__name(getClientSecret,"getClientSecret"),__name(deleteClientSecret,"deleteClientSecret"),__name(storeDiscoveredClient,"storeDiscoveredClient"),__name(getDiscoveredClient,"getDiscoveredClient")}});function isSecureOrLoopback(e){try{const t=new URL(e);return"https:"===t.protocol||"http:"===t.protocol&&("localhost"===t.hostname||"127.0.0.1"===t.hostname||"[::1]"===t.hostname)}catch{return!1}}var Ln,On=__esm({"src/mcp/types.ts"(){pn(),__name(isSecureOrLoopback,"isSecureOrLoopback"),_n=y.string().url().refine(isSecureOrLoopback,{message:"URL must use https:// (or http:// for loopback hosts)"}),Dn=y.object({authorizationUrl:_n,tokenUrl:_n,clientId:y.string(),clientSecret:y.string().optional(),scopes:y.array(y.string()).optional()}),Nn=y.preprocess(e=>{if(!e||"object"!=typeof e||Array.isArray(e))return e;const t=e;if("transport"in t)return t;if("type"in t){const{type:e,...n}=t;return{...n,transport:e}}return"string"==typeof t.command?{...t,transport:"stdio"}:"string"==typeof t.url?{...t,transport:"http"}:t},y.object({transport:y.enum(["stdio","http"]),enabled:y.boolean().default(!0),command:y.string().optional(),args:y.array(y.string()).optional(),url:y.string().url().optional(),headers:y.record(y.string(),y.string()).optional(),oauth:Dn.optional(),env:y.record(y.string(),y.string()).optional()}).refine(e=>!e.oauth||!e.url||isSecureOrLoopback(e.url),{message:"OAuth requires the server url to use https:// (or http:// for loopback hosts)",path:["url"]})),y.object({mcpServers:y.record(y.string(),Nn)})}});function fetchWithTimeout(e,t){const n=new AbortController,r=setTimeout(()=>n.abort(),Ln);return fetch(e,{...t,signal:n.signal}).finally(()=>clearTimeout(r))}var Fn,Un,Bn=__esm({"src/mcp/fetch.ts"(){pn(),Ln=8e4,__name(fetchWithTimeout,"fetchWithTimeout")}}),jn={};function generateRandomString(e){return K.randomBytes(e).toString("base64url").slice(0,e)}function generatePKCE(){const e=generateRandomString(64);return{verifier:e,challenge:K.createHash("sha256").update(e).digest("base64url")}}function escapeHtml(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#39;")}function startCallbackServer(e,t){return new Promise((n,r)=>{let o=null,s=null;const a=new Promise((e,t)=>{o=e,s=t}),i=q.createServer((n,r)=>{const a=new h(n.url||"/",`http://${Un}:${e}`);if("/callback"===a.pathname){const e=a.searchParams.get("code"),n=a.searchParams.get("error"),i=a.searchParams.get("error_description");if(a.searchParams.get("state")!==t)r.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),r.end('\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Authentication Failed</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Authentication Failed</h1>\n\t\t\t\t\t\t\t<p>Invalid state parameter. Please try again.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t'),s?.(new Error("OAuth state parameter mismatch"));else if(n){const e=escapeHtml(i||n);r.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),r.end(`\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Authentication Failed</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Authentication Failed</h1>\n\t\t\t\t\t\t\t<p>${e}</p>\n\t\t\t\t\t\t\t<p>You can close this window.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t`),s?.(new Error(i||n))}else e?(r.writeHead(200,{"Content-Type":"text/html",Connection:"close"}),r.end('\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Authentication Successful</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Authentication Successful</h1>\n\t\t\t\t\t\t\t<p>You can close this window and return to Command Code.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t'),o?.(e)):(r.writeHead(400,{"Content-Type":"text/html",Connection:"close"}),r.end('\n\t\t\t\t\t\t<!DOCTYPE html>\n\t\t\t\t\t\t<html>\n\t\t\t\t\t\t<head><title>Invalid Request</title></head>\n\t\t\t\t\t\t<body style="font-family: system-ui; padding: 40px; text-align: center;">\n\t\t\t\t\t\t\t<h1>Invalid Request</h1>\n\t\t\t\t\t\t\t<p>No authorization code received.</p>\n\t\t\t\t\t\t</body>\n\t\t\t\t\t\t</html>\n\t\t\t\t\t'),s?.(new Error("No authorization code received")))}else r.writeHead(404,{Connection:"close"}),r.end("Not Found")});i.on("error",r),i.keepAliveTimeout=1,i.headersTimeout=5e3,i.listen(e,Un,()=>{n({server:i,getCode:__name(()=>a,"getCode")})})})}async function exchangeCodeForTokens(e,t,n,r){const o=new URLSearchParams({grant_type:"authorization_code",code:t,redirect_uri:r,client_id:e.clientId,code_verifier:n});e.clientSecret&&o.set("client_secret",e.clientSecret);const s=await fetchWithTimeout(e.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:o.toString()});if(!s.ok){const e=await s.text();throw new Error(`Token exchange failed: ${s.status} ${e}`)}const a=await s.json();return{accessToken:a.access_token,refreshToken:a.refresh_token,expiresAt:a.expires_in?Date.now()+1e3*a.expires_in:void 0,tokenType:a.token_type,scope:a.scope}}async function refreshAccessToken({config:e,refreshToken:t}){const n=new URLSearchParams({grant_type:"refresh_token",refresh_token:t,client_id:e.clientId});e.clientSecret&&n.set("client_secret",e.clientSecret);const r=await fetchWithTimeout(e.tokenUrl,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:n.toString()});if(!r.ok){const e=await r.text();throw new Error(`Token refresh failed: ${r.status} ${e}`)}const o=await r.json();return{accessToken:o.access_token,refreshToken:o.refresh_token||t,expiresAt:o.expires_in?Date.now()+1e3*o.expires_in:void 0,tokenType:o.token_type,scope:o.scope}}async function performOAuthFlow(e,t,n,r){if(!isSecureOrLoopback(t))return{success:!1,error:`MCP server url must use https:// when OAuth is configured (got "${t}"). http:// is only allowed for loopback hosts (localhost, 127.0.0.1, [::1]).`};const o=r?.port||Fn,s=r?.timeout||12e4,a=r?.onStatus||(()=>{});let i=null;try{const r=generatePKCE(),l=generateRandomString(32),u=`http://${Un}:${o}/callback`;a("Starting authentication server...");const{server:d,getCode:m}=await startCallbackServer(o,l);i=d;const g=new h(n.authorizationUrl);if(g.searchParams.set("response_type","code"),g.searchParams.set("client_id",n.clientId),g.searchParams.set("redirect_uri",u),g.searchParams.set("state",l),g.searchParams.set("code_challenge",r.challenge),g.searchParams.set("code_challenge_method","S256"),n.scopes&&n.scopes.length>0&&g.searchParams.set("scope",n.scopes.join(" ")),n.extraParams)for(const[e,t]of Object.entries(n.extraParams))g.searchParams.set(e,t);a("Opening browser for authentication..."),await Z(g.toString()),a("Waiting for authorization...");const f=m();let y;const w=new Promise((e,t)=>{y=setTimeout(()=>t(new Error("Authentication timed out")),s)}),S=await Promise.race([f,w]);clearTimeout(y),a("Exchanging authorization code for tokens...");const E=await exchangeCodeForTokens(n,S,r.verifier,u);return await storeTokens(e,{...E,issuerUrl:t}),a("Authentication successful!"),{success:!0,tokens:E}}catch(e){return{success:!1,error:e instanceof Error?e.message:String(e)}}finally{i&&(i.closeIdleConnections?.(),i.closeAllConnections?.(),i.close(),i.unref())}}function createRefreshCallback(e){return t=>refreshAccessToken({config:e,refreshToken:t})}__export(jn,{DEFAULT_OAUTH_CALLBACK_PORT:()=>Fn,LOCALHOST_IP:()=>Un,createRefreshCallback:()=>createRefreshCallback,performOAuthFlow:()=>performOAuthFlow,refreshAccessToken:()=>refreshAccessToken});var Hn,Wn=__esm({"src/mcp/auth/oauth-flow.ts"(){pn(),$n(),Bn(),On(),Fn=8085,Un="127.0.0.1",__name(generateRandomString,"generateRandomString"),__name(generatePKCE,"generatePKCE"),__name(escapeHtml,"escapeHtml"),__name(startCallbackServer,"startCallbackServer"),__name(exchangeCodeForTokens,"exchangeCodeForTokens"),__name(refreshAccessToken,"refreshAccessToken"),__name(performOAuthFlow,"performOAuthFlow"),__name(createRefreshCallback,"createRefreshCallback")}});function isCorruptedArchiveError(e){const t=(e instanceof Error?e.message:String(e)).toLowerCase();return t.includes("zlib")||t.includes("unexpected end")||t.includes("tar_bad_archive")||t.includes("unrecognized archive")||t.includes("invalid tar header")}async function clearGigetCache(e,n){const r=t.join(D.homedir(),".cache","giget","gh",`${e}-${n}`);await U.rm(r,{recursive:!0,force:!0}).catch(()=>{})}async function cleanupStaleTempDirectories(){try{const e=D.tmpdir(),n=await U.readdir(e,{withFileTypes:!0}),r=Date.now();for(const o of n)if(o.isDirectory()&&(o.name.startsWith("commandcode-skill-")||o.name.startsWith("commandcode-skill-discovery-")))try{const n=t.join(e,o.name);r-(await U.stat(n)).mtimeMs>Hn&&await U.rm(n,{recursive:!0,force:!0})}catch(e){}}catch(e){}}function wrapFetchError(e,t,n){const r=e instanceof Error?e.message:String(e),o=r.toLowerCase();return o.includes("could not find commit hash")||o.includes("not found")||o.includes("404")?new Error(`Repository "${t}/${n}" not found on GitHub.\nIf the repo doesn't use "main" branch, specify the branch: ${t}/${n}@<branch>`):o.includes("403")||o.includes("401")||o.includes("forbidden")||o.includes("unauthorized")||o.includes("could not download")?new Error(`Repository "${t}/${n}" is private or inaccessible.\nSkills can only be installed from public repositories.`):o.includes("enotfound")||o.includes("econnrefused")||o.includes("etimedout")?new Error("Network error: unable to reach GitHub. Check your internet connection."):o.includes("zlib")||o.includes("unexpected end")||o.includes("tar_bad_archive")||o.includes("unrecognized archive")||o.includes("invalid tar header")?new Error(`Download of "${t}/${n}" failed (corrupted archive).\nThis is usually a transient GitHub issue. Please try again.`):new Error(`Failed to fetch "${t}/${n}": ${r}`)}var Gn,zn,qn=__esm({"src/services/skill-utils.ts"(){pn(),Hn=864e5,__name(isCorruptedArchiveError,"isCorruptedArchiveError"),__name(clearGigetCache,"clearGigetCache"),__name(cleanupStaleTempDirectories,"cleanupStaleTempDirectories"),__name(wrapFetchError,"wrapFetchError")}}),Vn={};async function findSkillMdFiles(e){const{dir:n,maxDepth:r=5,currentDepth:o=0,relativePath:s="",foundCount:a={value:0}}=e;if(o>r)return[];if(a.value>=Gn)return[];const i=[];try{const e=await U.readdir(n,{withFileTypes:!0}),l=e.find(e=>("SKILL.md"===e.name||"skill.md"===e.name)&&e.isFile());if(l){const e=t.join(n,l.name);try{if((await U.stat(e)).size>zn);else{const r=await U.readFile(e,"utf-8"),{data:o}=ee(r),l=s.split("/").filter(Boolean),u=l[l.length-1]||t.basename(n);i.push({name:o.name||u,path:s||".",description:o.description}),a.value++}}catch(e){process.env.DEBUG&&console.error(`Failed to parse SKILL.md at ${s||"."}: ${e instanceof Error?e.message:String(e)}`)}}const u=e.filter(e=>e.isDirectory());for(const e of u){if("node_modules"===e.name||".git"===e.name||"dist"===e.name||"build"===e.name||".next"===e.name)continue;const l=t.join(n,e.name),u=s?`${s}/${e.name}`:e.name,d=await findSkillMdFiles({dir:l,maxDepth:r,currentDepth:o+1,relativePath:u,foundCount:a});i.push(...d)}}catch(e){process.env.DEBUG&&console.error(`Failed to read directory ${s||"."}: ${e instanceof Error?e.message:String(e)}`)}return i}async function discoverSkillsLocally(e){const{owner:n,repo:r,path:o,branch:s,keepTempDir:a=!1}=e;await cleanupStaleTempDirectories();const i=t.join(D.tmpdir(),`commandcode-skill-discovery-${Q()}`);try{await U.mkdir(i,{recursive:!0});let e=`gh:${n}/${r}`;o&&(e+=`/${o}`),s&&(e+=`#${s}`);const{downloadTemplate:t}=await import("giget");try{await t(e,{dir:i,force:!0,silent:!0})}catch(o){if(!isCorruptedArchiveError(o))throw o;await clearGigetCache(n,r),await t(e,{dir:i,force:!0,silent:!0})}const l=await findSkillMdFiles({dir:i,maxDepth:5});return a?{skills:l,tempDir:i}:(await U.rm(i,{recursive:!0,force:!0}).catch(()=>{}),{skills:l})}catch(e){throw await U.rm(i,{recursive:!0,force:!0}).catch(()=>{}),wrapFetchError(e,n,r)}}__export(Vn,{discoverSkillsLocally:()=>discoverSkillsLocally});var Kn=__esm({"src/services/local-skill-discovery.ts"(){pn(),qn(),Gn=100,zn=1048576,__name(findSkillMdFiles,"findSkillMdFiles"),__name(discoverSkillsLocally,"discoverSkillsLocally")}});pn(),pn();var Yn=process.argv.includes("-d")||process.argv.includes("--debug");Yn&&(process.env.DEBUG="true"),Yn||(process.removeAllListeners("warning"),process.on("warning",()=>{})),globalThis.AI_SDK_LOG_WARNINGS=!1,pn(),pn(),pn(),pn(),pn(),pn();var Qn="https://api.axiom.co/v1/traces",Jn="command-code-cli",Xn="gen_ai.provider.name",Zn="gen_ai.operation.name",er="gen_ai.conversation.id",tr="gen_ai.capability.name",nr="gen_ai.step.name",rr="gen_ai.tool.name",or="gen_ai.request.model",sr="gen_ai.response.model",ar="cmd.command.name",ir="cmd.command.args",lr="cmd.session.project_hash",cr="cmd.session.branch_hash",ur="cmd.iteration.number",dr="cmd.payload.message_count",mr="cmd.payload.user_message_count",pr="cmd.payload.assistant_message_count",gr="cmd.payload.tool_message_count",hr="cmd.payload.assistant_with_tool_use_count",fr="cmd.payload.tool_use_count",yr="cmd.payload.tool_result_count",wr="cmd.payload.orphan_tool_use_count",Sr="cmd.payload.orphan_tool_result_count",Er="cmd.payload.last_message_role",br="cmd.api.attempt.number",kr="cmd.api.attempt.delay_ms_before",Cr="cmd.api.attempt.status",vr="cmd.error.fingerprint",Tr="cmd.error.component",xr="cmd.error.heading";function isContentCaptureEnabled(){const e=process.env.COMMAND_CODE_TELEMETRY_CAPTURE_CONTENT;return"1"===e||"true"===e}__name(isContentCaptureEnabled,"isContentCaptureEnabled"),pn(),pn(),wn(),pn();var Pr=__name(()=>{const e=process.argv.includes("--local"),t=process.argv.includes("--staging");return e?"local":t?"staging":"prod"},"getApiEnv");function getAuthDir(){return t.join(D.homedir(),".commandcode")}function getAuthFile(e){const n=e??Pr(),r="local"===n?"auth.local.json":"staging"===n?"auth.staging.json":"auth.json";return t.join(getAuthDir(),r)}function getConfigFile(e){const n=e??Pr(),r="local"===n?"config.local.json":"staging"===n?"config.staging.json":"config.json";return t.join(getAuthDir(),r)}__name(getAuthDir,"getAuthDir"),__name(getAuthFile,"getAuthFile"),__name(getConfigFile,"getConfigFile"),pn(),wn(),pn();var Ar=new Set(["","b","","",""]),Ir=new Set(["","f","","",""]),Mr=new Set(["","[1~","[7~","OH"]),Rr=new Set(["","[4~","[8~","OF"]),_r=new Set(["[3~"]),Dr=new Set(["",""]),Nr=new Set([String.fromCharCode(27,112),String.fromCharCode(960),""]),$r=/^\x1b\[1;[359]D$/,Lr=/^\x1b\[1;[359]C$/;function isWordLeftSequence(e){return!!Ar.has(e)||!!$r.test(e)}function isWordRightSequence(e){return!!Ir.has(e)||!!Lr.test(e)}function isHomeSequence(e){return Mr.has(e)}function isEndSequence(e){return Rr.has(e)}function isForwardDeleteSequence(e){return _r.has(e)}function isDeleteWordSequence(e){return Dr.has(e)}function isCtrlA(e){return 1===e.length&&1===e.charCodeAt(0)}function isCtrlE(e){return 1===e.length&&5===e.charCodeAt(0)}function isCtrlK(e){return 1===e.length&&11===e.charCodeAt(0)}function isCtrlU(e){return 1===e.length&&21===e.charCodeAt(0)}function isAltP(e){return Nr.has(e)}function isShiftTabUnreliable(){if("win32"!==process.platform)return!1;const e=process.versions.node.split(".").map(Number),t=e[0]??0,n=e[1]??0;return!(t>24||24===t&&n>=2||22===t&&n>=17)}function getModeToggleShortcutHint(){return isShiftTabUnreliable()?"alt+m":"shift+tab"}function isCtrlKey({inputChar:e,key:t,letter:n,ctrlCode:r}){return!(!t.ctrl||e.toLowerCase()!==n.toLowerCase())||void 0!==r&&e.charCodeAt(0)===r}__name(isWordLeftSequence,"isWordLeftSequence"),__name(isWordRightSequence,"isWordRightSequence"),__name(isHomeSequence,"isHomeSequence"),__name(isEndSequence,"isEndSequence"),__name(isForwardDeleteSequence,"isForwardDeleteSequence"),__name(isDeleteWordSequence,"isDeleteWordSequence"),__name(isCtrlA,"isCtrlA"),__name(isCtrlE,"isCtrlE"),__name(isCtrlK,"isCtrlK"),__name(isCtrlU,"isCtrlU"),__name(isAltP,"isAltP"),__name(isShiftTabUnreliable,"isShiftTabUnreliable"),__name(getModeToggleShortcutHint,"getModeToggleShortcutHint"),__name(isCtrlKey,"isCtrlKey");var Or,Fr,Ur,Br,jr=["\n","\r","","[27;2;13~","[27;2;13~","[13;2u"];function isNewlineShortcutKey(e){const{inputChar:t,key:n,isPasting:r}=e;return!r&&(!(!n.return||!n.shift)||!(!n.ctrl||!n.return)||!(!n.ctrl||"j"!==t)||!("\r"!==t||n.return||n.ctrl||n.shift||n.meta)||jr.includes(t))}__name(isNewlineShortcutKey,"isNewlineShortcutKey"),pn(),wn(),pn(),pn(),wn(),(e=>{e.OAuth=y.object({type:y.literal("oauth"),refresh:y.string(),access:y.string(),expires:y.number(),accountId:y.string().optional()}),e.ApiKey=y.object({type:y.literal("api"),key:y.string()}),e.Info=y.discriminatedUnion("type",[e.OAuth,e.ApiKey]);const n=__name(()=>t.join(D.homedir(),".commandcode"),"getAuthDir"),r=__name(()=>{const e=Pr(),r="local"===e?"auth.local.json":"staging"===e?"auth.staging.json":"auth.json";return t.join(n(),r)},"getAuthFile");async function get(e){try{const t=await U.readFile(r(),"utf-8");return JSON.parse(t)[e]}catch{return}}async function set(e,t){const o=n(),s=r();await U.mkdir(o,{recursive:!0});let a={};try{const e=await U.readFile(s,"utf-8");a=JSON.parse(e)}catch{}a[e]=t,await U.writeFile(s,JSON.stringify(a,null,2)),await U.chmod(s,384)}async function remove(e){const t=r();try{const n=await U.readFile(t,"utf-8"),r=JSON.parse(n);delete r[e],0===Object.keys(r).length?await U.unlink(t):(await U.writeFile(t,JSON.stringify(r,null,2)),await U.chmod(t,384))}catch{}}async function list2(){try{const e=await U.readFile(r(),"utf-8");return JSON.parse(e)}catch{return{}}}e.get=get,__name(get,"get"),e.set=set,__name(set,"set"),e.remove=remove,__name(remove,"remove"),e.list=list2,__name(list2,"list")})(Or||(Or={})),pn(),wn(),(e=>{const t="9d1c250a-e61b-44d9-88ed-5944d1962f5e",n="https://console.anthropic.com/v1/oauth/token",r="https://console.anthropic.com/oauth/code/callback";function generateCodeVerifier(){return Y.randomBytes(32).toString("base64url")}function generateCodeChallenge(e){return Y.createHash("sha256").update(e).digest("base64url")}function generateState(){return Y.randomBytes(32).toString("base64url")}function createAuthorizationUrl(){const e=generateCodeVerifier(),n=generateCodeChallenge(e),o=generateState();return{url:`https://claude.ai/oauth/authorize?${new URLSearchParams({code:"true",client_id:t,response_type:"code",redirect_uri:r,scope:"org:create_api_key user:profile user:inference",code_challenge:n,code_challenge_method:"S256",state:o}).toString()}`,verifier:e,state:o}}async function exchangeCodeForTokens2(e,o,s){const a=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"authorization_code",client_id:t,code:e,redirect_uri:r,code_verifier:o,state:s})});if(!a.ok){const e=await a.text(),t=new Error(`Token exchange failed: ${e}`);throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"token_exchange_failed"}),context:{component:ms.ANTHROPIC_OAUTH,heading:"OAuth token exchange failed"}}),t}const i=await a.json();await Or.set("anthropic",{type:"oauth",refresh:i.refresh_token,access:i.access_token,expires:Date.now()+1e3*i.expires_in})}async function refreshAccessToken2(){const e=await Or.get("anthropic");if(e&&"oauth"===e.type){if(e.expires>Date.now()+3e5)return e.access;try{const r=await fetch(n,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({grant_type:"refresh_token",client_id:t,refresh_token:e.refresh})});if(!r.ok)return void trackError({error:sanitizeErrorForTelemetry({error:new Error("OAuth token refresh failed"),label:"token_refresh_failed"}),context:{component:ms.ANTHROPIC_OAUTH,heading:"OAuth token refresh failed"}});const o=await r.json();return await Or.set("anthropic",{type:"oauth",refresh:o.refresh_token,access:o.access_token,expires:Date.now()+1e3*o.expires_in}),o.access_token}catch(e){return void trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"token_refresh_exception"}),context:{component:ms.ANTHROPIC_OAUTH,heading:"OAuth token refresh exception"}})}}}async function getValidAccessToken2(){const e=await Or.get("anthropic");if(e)return"api"===e.type?e.key:"oauth"===e.type?await refreshAccessToken2():void 0}__name(generateCodeVerifier,"generateCodeVerifier"),__name(generateCodeChallenge,"generateCodeChallenge"),__name(generateState,"generateState"),e.createAuthorizationUrl=createAuthorizationUrl,__name(createAuthorizationUrl,"createAuthorizationUrl"),e.exchangeCodeForTokens=exchangeCodeForTokens2,__name(exchangeCodeForTokens2,"exchangeCodeForTokens"),e.refreshAccessToken=refreshAccessToken2,__name(refreshAccessToken2,"refreshAccessToken"),e.getValidAccessToken=getValidAccessToken2,__name(getValidAccessToken2,"getValidAccessToken")})(Fr||(Fr={})),pn(),Sn(),(e=>{const t="app_EMoamEEZ73f0CkXaXp7hrann",n="https://auth.openai.com",r="openid profile email offline_access",o="http://localhost:1455/auth/callback";function base64UrlEncode(e){return Buffer.from(e).toString("base64").replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function generateRandomString2(e){const t=Y.randomBytes(e);let n="";for(let r=0;r<e;r++)n+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~"[t[r]%66];return n}function generatePKCE2(){const e=generateRandomString2(64);return{verifier:e,challenge:base64UrlEncode(Y.createHash("sha256").update(e).digest())}}function buildAuthorizeUrl(e,s){const a=new URLSearchParams({response_type:"code",client_id:t,redirect_uri:o,scope:r,code_challenge:e.challenge,code_challenge_method:"S256",id_token_add_organizations:"true",codex_cli_simplified_flow:"true",state:s,originator:"codex_cli_rs"});return`${n}/oauth/authorize?${a.toString()}`}function parseJwtClaims(e){const t=e.split(".");if(3===t.length)try{return JSON.parse(Buffer.from(t[1],"base64url").toString("utf8"))}catch{return}}function extractAccountId(e){const t=[e.id_token,e.access_token].filter(Boolean);for(const e of t){const t=parseJwtClaims(e);if(!t)continue;const n=t.chatgpt_account_id||t["https://api.openai.com/auth"]?.chatgpt_account_id||t.organizations?.[0]?.id;if(n)return n}}async function exchangeCodeForTokens2(e,r,s){const a=await fetch(`${n}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"authorization_code",code:e,redirect_uri:o,client_id:t,code_verifier:r.verifier}).toString(),signal:s});if(!a.ok){const e=await a.text();throw new Error(`Codex token exchange failed: ${a.status} ${e}`)}return a.json()}async function refreshTokens(e){const o=await fetch(`${n}/oauth/token`,{method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},body:new URLSearchParams({grant_type:"refresh_token",refresh_token:e,client_id:t,scope:r}).toString()});if(!o.ok){const e=await o.text();throw new Error(`Codex token refresh failed: ${o.status} ${e}`)}return o.json()}function waitForCallback(e){const{state:t,signal:n}=e;return new Promise((e,r)=>{let o,s,a=!1;const i=__name(()=>{if(s&&clearTimeout(s),o){if(o.listening)try{o.close(()=>{})}catch{}o=void 0}n?.removeEventListener("abort",u)},"cleanup"),l=__name((t,n)=>{a||(a=!0,i(),t?r(t):e(n))},"finish"),u=__name(()=>{l(new Error("Authentication cancelled"))},"onAbort");n?.aborted?r(new Error("Authentication cancelled")):(n?.addEventListener("abort",u,{once:!0}),o=V(__name((e,n)=>{try{const r=new URL(e.url||"/","http://localhost:1455");if("/auth/callback"!==r.pathname)return n.writeHead(404),void n.end("Not found");const o=r.searchParams.get("code"),s=r.searchParams.get("state"),a=r.searchParams.get("error"),i=r.searchParams.get("error_description");if(a){const e=i||a;return n.writeHead(400,{"Content-Type":"text/html"}),n.end(renderErrorPage(e)),void l(new Error(`Codex OAuth error: ${e}`))}if(!o||!s)return n.writeHead(400,{"Content-Type":"text/html"}),n.end(renderErrorPage("Missing code or state")),void l(new Error("Codex OAuth: missing code or state"));if(s!==t)return n.writeHead(400,{"Content-Type":"text/html"}),n.end(renderErrorPage("State mismatch — possible CSRF attempt")),void l(new Error("Codex OAuth: state mismatch"));n.writeHead(200,{"Content-Type":"text/html"}),n.end("<!doctype html>\n<html>\n <head><title>Command Code — Codex Authorization Successful</title>\n <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0f0f0f;color:#eee}h1{color:#7ee787}</style>\n </head>\n <body><div><h1>Authorization successful</h1><p>You can close this window and return to Command Code.</p></div>\n <script>setTimeout(()=>window.close(),2000)<\/script></body>\n</html>"),l(null,o)}catch(e){n.writeHead(500),n.end("Internal error"),l(e instanceof Error?e:new Error(String(e)))}},"handler")),o.on("error",e=>l(e)),o.listen(1455,"127.0.0.1",()=>{s=setTimeout(()=>{l(new Error("Codex OAuth timed out waiting for browser callback"))},3e5)}))})}function renderSuccessPage(){return"<!doctype html>\n<html>\n <head><title>Command Code — Codex Authorization Successful</title>\n <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0f0f0f;color:#eee}h1{color:#7ee787}</style>\n </head>\n <body><div><h1>Authorization successful</h1><p>You can close this window and return to Command Code.</p></div>\n <script>setTimeout(()=>window.close(),2000)<\/script></body>\n</html>"}function renderErrorPage(e){return`<!doctype html>\n<html>\n <head><title>Command Code — Codex Authorization Failed</title>\n <style>body{font-family:system-ui;display:flex;justify-content:center;align-items:center;height:100vh;margin:0;background:#0f0f0f;color:#eee}h1{color:#ff7b72}</style>\n </head>\n <body><div><h1>Authorization failed</h1><p>${e.replace(/[&<>]/g,e=>"&"===e?"&amp;":"<"===e?"&lt;":"&gt;")}</p></div></body>\n</html>`}async function refreshAccessToken2(){const e=await Or.get("codex");if(e&&"oauth"===e.type){if(e.expires>Date.now()+3e5)return e.access;dlog("[Auth] codex: refreshing access token");try{const t=await refreshTokens(e.refresh),n=extractAccountId(t)??e.accountId;return await Or.set("codex",{type:"oauth",refresh:t.refresh_token||e.refresh,access:t.access_token,expires:Date.now()+1e3*(t.expires_in??3600),...n?{accountId:n}:{}}),t.access_token}catch(e){return void trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"codex_token_refresh_exception"}),context:{component:ms.CODEX_OAUTH,heading:"Codex token refresh exception"}})}}}async function getValidAccessToken2(){const e=await Or.get("codex");if(e)return"api"===e.type?e.key:"oauth"===e.type?refreshAccessToken2():void 0}async function getAccountId(){const e=await Or.get("codex");if(e&&"oauth"===e.type)return e.accountId}async function login(e){const{onAuth:t,onProgress:n,signal:r}=e;dlog("[Auth] codex: starting browser oauth flow");const o=generatePKCE2(),s=base64UrlEncode(Y.randomBytes(32)),a=buildAuthorizeUrl(o,s),i=waitForCallback({state:s,signal:r});let l;t({authorizeUrl:a}),n?.("Waiting for authorization in browser...");try{l=await i}catch(e){const t=e instanceof Error?e:new Error(String(e));throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"codex_oauth_callback_failed"}),context:{component:ms.CODEX_OAUTH,heading:"Codex oauth callback failed"}}),t}if(r?.aborted)throw new Error("Authentication cancelled");n?.("Exchanging authorization code...");const u=await exchangeCodeForTokens2(l,o,r);if(r?.aborted)throw new Error("Authentication cancelled");if(!u.refresh_token)throw new Error("Codex OAuth: issuer did not return a refresh_token");const d=extractAccountId(u);dlog("[Auth] codex: login success",{hasAccountId:!!d}),await Or.set("codex",{type:"oauth",refresh:u.refresh_token,access:u.access_token,expires:Date.now()+1e3*(u.expires_in??3600),...d?{accountId:d}:{}})}__name(base64UrlEncode,"base64UrlEncode"),__name(generateRandomString2,"generateRandomString"),__name(generatePKCE2,"generatePKCE"),__name(buildAuthorizeUrl,"buildAuthorizeUrl"),e.parseJwtClaims=parseJwtClaims,__name(parseJwtClaims,"parseJwtClaims"),e.extractAccountId=extractAccountId,__name(extractAccountId,"extractAccountId"),__name(exchangeCodeForTokens2,"exchangeCodeForTokens"),__name(refreshTokens,"refreshTokens"),__name(waitForCallback,"waitForCallback"),__name(renderSuccessPage,"renderSuccessPage"),__name(renderErrorPage,"renderErrorPage"),e.refreshAccessToken=refreshAccessToken2,__name(refreshAccessToken2,"refreshAccessToken"),e.getValidAccessToken=getValidAccessToken2,__name(getValidAccessToken2,"getValidAccessToken"),e.getAccountId=getAccountId,__name(getAccountId,"getAccountId"),e.login=login,__name(login,"login")})(Ur||(Ur={})),pn(),wn(),Sn(),(e=>{const t=atob("SXYxLmI1MDdhMDhjODdlY2ZlOTg="),n=["COPILOT_GITHUB_TOKEN","GH_TOKEN","GITHUB_TOKEN"];async function startDeviceFlow(e){const n=e?.domain||"github.com",r=`https://${n}/login/device/code`;dlog("[Auth] startDeviceFlow",{domain:n,url:r});const o=await fetch(r,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:t,scope:"read:user"})});if(!o.ok){const e=await o.text(),t=new Error(`Device code request failed: ${e}`);throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"device_flow_start_failed"}),context:{component:ms.COPILOT_OAUTH,heading:"Device code flow start failed"}}),t}const s=await o.json();return dlog("[Auth] startDeviceFlow success",{userCode:s.user_code,interval:s.interval,expiresIn:s.expires_in}),s}async function pollForGitHubAccessToken(e){const{deviceCode:n,interval:r,expiresIn:o,signal:s}=e,a=e.domain||"github.com",i=`https://${a}/login/oauth/access_token`,l=Date.now()+1e3*o;let u=1e3*r;for(dlog("[Auth] pollForGitHubAccessToken started",{domain:a,pollInterval:u,deadline:new Date(l).toISOString()});Date.now()<l;){if(s?.aborted)throw new Error("Authentication cancelled");if(await new Promise((e,t)=>{if(!s)return void setTimeout(e,u);const n=__name(()=>{clearTimeout(r),t(new Error("Authentication cancelled"))},"onAbort"),r=setTimeout(()=>{s.removeEventListener("abort",n),e()},u);s.addEventListener("abort",n,{once:!0})}),s?.aborted)throw new Error("Authentication cancelled");const e=await fetch(i,{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({client_id:t,device_code:n,grant_type:"urn:ietf:params:oauth:grant-type:device_code"})}),r=await e.json();if("error"in r){if(dlog("[Auth] poll response error",r.error),"authorization_pending"===r.error)continue;if("slow_down"===r.error){u+=5e3,dlog("[Auth] poll slow_down, new interval",u);continue}if("expired_token"===r.error)throw new Error("Device code expired. Please try again.");if("access_denied"===r.error)throw new Error("Authorization was denied. Please try again.");throw new Error(`GitHub OAuth error: ${r.error}`)}if("access_token"in r)return dlog("[Auth] pollForGitHubAccessToken success, got access_token"),r}throw new Error("Device code expired. Please try again.")}async function refreshCopilotToken(e){const{refreshToken:t,enterpriseDomain:n}=e;dlog("[Auth] refreshCopilotToken called",{hasRefreshToken:!!t,enterpriseDomain:n});let r="https://api.github.com/copilot_internal/v2/token";n&&(r=`https://${n}/api/v3/copilot_internal/v2/token`);const o=await fetch(r,{method:"GET",headers:{Authorization:`token ${t}`,Accept:"application/json",...Ot}});if(!o.ok){const e=await o.text(),t=new Error(`Copilot token refresh failed: ${e}`);throw trackError({error:sanitizeErrorForTelemetry({error:t,label:"copilot_token_refresh_failed"}),context:{component:ms.COPILOT_OAUTH,heading:"Copilot token refresh failed"}}),t}const s=await o.json(),a=1e3*s.expires_at-3e5;return dlog("[Auth] refreshCopilotToken success",{expiresAt:new Date(a).toISOString(),refreshIn:s.refresh_in}),{token:s.token,expires:a}}async function refreshAccessToken2(){const e=await Or.get("github-copilot");if(e&&"oauth"===e.type){if(e.expires>Date.now()+3e5)return dlog("[Auth] refreshAccessToken: token still valid",{expires:new Date(e.expires).toISOString()}),e.access;dlog("[Auth] refreshAccessToken: token expired, refreshing...");try{const t=await refreshCopilotToken({refreshToken:e.refresh});return await Or.set("github-copilot",{type:"oauth",refresh:e.refresh,access:t.token,expires:t.expires}),t.token}catch(e){return trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"copilot_token_refresh_exception"}),context:{component:ms.COPILOT_OAUTH,heading:"Copilot token refresh exception"}}),void dlog("[Auth] refreshAccessToken: refresh failed, keeping auth for retry")}}else dlog("[Auth] refreshAccessToken: no copilot oauth auth found")}async function getValidAccessToken2(){dlog("[Auth] getValidAccessToken called for copilot");const e=await Or.get("github-copilot");if(e){if(dlog("[Auth] getValidAccessToken: found stored auth",{type:e.type}),"api"===e.type)return e.key;if("oauth"===e.type)return await refreshAccessToken2()}dlog("[Auth] getValidAccessToken: no stored auth, checking env vars");for(const e of n){const t=process.env[e];if(t)try{const e=await refreshCopilotToken({refreshToken:t});return await Or.set("github-copilot",{type:"oauth",refresh:t,access:e.token,expires:e.expires}),e.token}catch{continue}}}async function login(e){const{onAuth:t,onProgress:n,signal:r}=e;dlog("[Auth] login: starting copilot device code flow"),n?.("Starting device code flow...");const o=await startDeviceFlow();t({userCode:o.user_code,verificationUri:o.verification_uri}),n?.("Waiting for authorization...");const s=await pollForGitHubAccessToken({deviceCode:o.device_code,interval:o.interval,expiresIn:o.expires_in,signal:r});n?.("Getting Copilot access...");const a=await refreshCopilotToken({refreshToken:s.access_token});dlog("[Auth] login: storing copilot tokens"),await Or.set("github-copilot",{type:"oauth",refresh:s.access_token,access:a.token,expires:a.expires}),dlog("[Auth] login: copilot login complete")}e.startDeviceFlow=startDeviceFlow,__name(startDeviceFlow,"startDeviceFlow"),e.pollForGitHubAccessToken=pollForGitHubAccessToken,__name(pollForGitHubAccessToken,"pollForGitHubAccessToken"),e.refreshCopilotToken=refreshCopilotToken,__name(refreshCopilotToken,"refreshCopilotToken"),e.refreshAccessToken=refreshAccessToken2,__name(refreshAccessToken2,"refreshAccessToken"),e.getValidAccessToken=getValidAccessToken2,__name(getValidAccessToken2,"getValidAccessToken"),e.login=login,__name(login,"login")})(Br||(Br={})),pn(),pn(),pn(),pn();var Hr=!1,Wr=[],Gr=null;function startEarlyInputCapture(){Hr||(Hr=!0,Wr=[],Gr=__name(e=>{const t=e.toString();t&&!isControlSequenceToSkip(t)&&Wr.push(t)},"earlyInputHandler"),process.stdin.on("data",Gr))}function stopEarlyInputCapture(){Hr&&Gr&&(process.stdin.off("data",Gr),Gr=null,Hr=!1)}function consumeBufferedInput(){const e=Wr.join("");return Wr=[],e}function hasBufferedInput(){return Wr.length>0}function isControlSequenceToSkip(e){return!!(e.startsWith("[200~")||e.startsWith("[201~")||e.startsWith("")||e.startsWith(""))}__name(startEarlyInputCapture,"startEarlyInputCapture"),__name(stopEarlyInputCapture,"stopEarlyInputCapture"),__name(consumeBufferedInput,"consumeBufferedInput"),__name(hasBufferedInput,"hasBufferedInput"),__name(isControlSequenceToSkip,"isControlSequenceToSkip"),pn();var zr=/\s|[(){}[\]<>.,;:'"!?+\-=*/\\|&%^$#@~`]/;function isWordBoundary(e){return!e||0===e.length||zr.test(e)}function findPreviousWordBoundary(e,t){if(!e||t<=0)return 0;let n=Math.min(t,e.length);for(;n>0&&isWordBoundary(e[n-1]||"");)n--;for(;n>0&&!isWordBoundary(e[n-1]||"");)n--;return n}function findNextWordBoundary(e,t){if(!e)return 0;if(t>=e.length)return e.length;let n=Math.max(0,t);for(;n<e.length&&isWordBoundary(e[n]||"");)n++;for(;n<e.length&&!isWordBoundary(e[n]||"");)n++;return n}function deleteWordBackwards(e,t){if(!e||t<=0)return{text:e||"",cursor:0};const n=findPreviousWordBoundary(e,t);return{text:e.slice(0,n)+e.slice(t),cursor:n}}function clampCursor(e,t){return Math.max(0,Math.min(e,t))}function findLineStart(e,t){if(!e||t<=0)return 0;for(let n=Math.min(t,e.length)-1;n>=0;n--)if("\n"===e[n])return n+1;return 0}function findLineEnd(e,t){if(!e)return 0;if(t>=e.length)return e.length;for(let n=Math.max(0,t);n<e.length;n++)if("\n"===e[n])return n;return e.length}function moveCursorUp(e,t){if(!e)return 0;const n=findLineStart(e,t);if(0===n)return t;const r=t-n,o=n-1,s=findLineStart(e,o),a=o-s;return s+Math.min(r,a)}function moveCursorDown(e,t){if(!e)return 0;const n=findLineStart(e,t),r=findLineEnd(e,t);if(r===e.length)return t;const o=t-n,s=r+1,a=findLineEnd(e,s)-s;return s+Math.min(o,a)}function insertTextAt(e,t,n){const r=e||"",o=clampCursor(t,r.length);return{text:r.slice(0,o)+n+r.slice(o),cursor:o+n.length}}function deleteCharBefore(e,t){return!e||t<=0?{text:e||"",cursor:0}:{text:e.slice(0,t-1)+e.slice(t),cursor:t-1}}function deleteCharAt(e,t){return!e||t>=e.length?{text:e||"",cursor:t}:{text:e.slice(0,t)+e.slice(t+1),cursor:t}}__name(isWordBoundary,"isWordBoundary"),__name(findPreviousWordBoundary,"findPreviousWordBoundary"),__name(findNextWordBoundary,"findNextWordBoundary"),__name(deleteWordBackwards,"deleteWordBackwards"),__name(clampCursor,"clampCursor"),__name(findLineStart,"findLineStart"),__name(findLineEnd,"findLineEnd"),__name(moveCursorUp,"moveCursorUp"),__name(moveCursorDown,"moveCursorDown"),__name(insertTextAt,"insertTextAt"),__name(deleteCharBefore,"deleteCharBefore"),__name(deleteCharAt,"deleteCharAt"),pn();var qr="[200~",Vr="[201~";function stripBracketedPaste(e){return e.includes(qr)||e.includes(Vr)?e.replaceAll(qr,"").replaceAll(Vr,""):null}function processBracketedPasteInput({input:e,value:t,cursor:n}){const r=stripBracketedPaste(e);if(null===r)return{value:t,cursor:n,handled:!1};if(0===r.length)return{value:t,cursor:n,handled:!0};const o=insertTextAt(t,n,r);return{value:o.text,cursor:o.cursor,handled:!0}}function processWordLeft(e,t){return{value:e,cursor:findPreviousWordBoundary(e,t),handled:!0}}function processWordRight(e,t){return{value:e,cursor:findNextWordBoundary(e,t),handled:!0}}function processLineStart(e,t){return{value:e,cursor:findLineStart(e,t),handled:!0}}function processLineEnd(e,t){return{value:e,cursor:findLineEnd(e,t),handled:!0}}function processDeleteWord(e,t){const n=deleteWordBackwards(e,t);return{value:n.text,cursor:n.cursor,handled:!0}}function processDeleteToEnd(e,t){const n=findLineEnd(e,t);return{value:e.slice(0,t)+e.slice(n),cursor:t,handled:!0}}function processDeleteToStart(e,t){const n=findLineStart(e,t);return{value:e.slice(0,n)+e.slice(t),cursor:n,handled:!0}}function processForwardDelete(e,t){const n=deleteCharAt(e,t);return{value:n.text,cursor:n.cursor,handled:!0}}function processBackspace(e,t){const n=deleteCharBefore(e,t);return{value:n.text,cursor:n.cursor,handled:!0}}__name(stripBracketedPaste,"stripBracketedPaste"),__name(processBracketedPasteInput,"processBracketedPasteInput"),__name(processWordLeft,"processWordLeft"),__name(processWordRight,"processWordRight"),__name(processLineStart,"processLineStart"),__name(processLineEnd,"processLineEnd"),__name(processDeleteWord,"processDeleteWord"),__name(processDeleteToEnd,"processDeleteToEnd"),__name(processDeleteToStart,"processDeleteToStart"),__name(processForwardDelete,"processForwardDelete"),__name(processBackspace,"processBackspace");var Kr=/^[\u007f\b]{2,}$/;function processBackspaceRun(e,t,n){let r=t,o=n;for(let t=0;t<e.length;t++){const e=deleteCharBefore(r,o);r=e.text,o=e.cursor}return{value:r,cursor:o,handled:!0}}function processCursorLeft(e,t,n){return n?t<=0?{value:e,cursor:t,handled:!0}:{value:e,cursor:t-1,handled:!0}:{value:e,cursor:t,handled:!0}}function processCursorRight(e,t,n){return n?t>=e.length?{value:e,cursor:t,handled:!0}:{value:e,cursor:t+1,handled:!0}:{value:e,cursor:t,handled:!0}}function processCursorUp(e,t,n){return n?{value:e,cursor:moveCursorUp(e,t),handled:!0}:{value:e,cursor:t,handled:!0}}function processCursorDown(e,t,n){return n?{value:e,cursor:moveCursorDown(e,t),handled:!0}:{value:e,cursor:t,handled:!0}}function processCharacterInput(e,t,n){const r=n.replace(/[\x00-\x09\x0B\x0C\x0E-\x1F\x7F]|\x1b.*/g,"");if(0===r.length)return{value:e,cursor:t,handled:!1};const o=insertTextAt(e,t,r);return{value:o.text,cursor:o.cursor,handled:!0}}function processRawInput(e,t,n){return isWordLeftSequence(e)?processWordLeft(t,n):isWordRightSequence(e)?processWordRight(t,n):isHomeSequence(e)?processLineStart(t,n):isEndSequence(e)?processLineEnd(t,n):isCtrlA(e)?processLineStart(t,n):isCtrlE(e)?processLineEnd(t,n):isDeleteWordSequence(e)?processDeleteWord(t,n):isCtrlK(e)?processDeleteToEnd(t,n):isCtrlU(e)?processDeleteToStart(t,n):isForwardDeleteSequence(e)?processForwardDelete(t,n):Kr.test(e)?processBackspaceRun(e,t,n):{value:t,cursor:n,handled:!1}}function isIgnoredKey(e,t){return!!(t.ctrl&&"c"===e||t.tab||t.shift&&t.tab||t.meta&&"m"===e)}function processInkInput(e,t,n,r,o){const s=t;return s.meta&&t.leftArrow?processLineStart(n,r):s.meta&&t.rightArrow?processLineEnd(n,r):s.meta&&"b"===e?processWordLeft(n,r):s.meta&&"f"===e?processWordRight(n,r):t.ctrl&&"a"===e?processLineStart(n,r):t.ctrl&&"e"===e?processLineEnd(n,r):t.ctrl&&"w"===e?processDeleteWord(n,r):t.ctrl&&"k"===e?processDeleteToEnd(n,r):t.ctrl&&"u"===e?processDeleteToStart(n,r):t.leftArrow?processCursorLeft(n,r,o):t.rightArrow?processCursorRight(n,r,o):t.upArrow?processCursorUp(n,r,o):t.downArrow?processCursorDown(n,r,o):t.backspace||t.delete?processBackspace(n,r):!t.ctrl&&!s.meta&&e.length>0?processCharacterInput(n,r,e):{value:n,cursor:r,handled:!1}}function useCursorState({value:e,focus:t,showCursor:n,initialCursor:r}){const[o,s]=de(r??(e||"").length),a=me(o),i=me(e);pe(()=>{const r=i.current;if(i.current=e,e===r)return;if(!t)return;if(!n)return;const l=(e||"").length;o>l&&(s(l),a.current=l)},[e,t,n,o]);const l=he(e=>{s(e),a.current=e},[]);return{cursor:o,setCursor:l,cursorRef:a}}function useRawStdinHandler({focus:e,valueRef:t,cursorRef:n,onUpdate:r,setHandled:o,stripBracketedPaste:s=!1}){const a=me(!1);pe(()=>{if(!e)return;const i=process.stdin,l=__name(e=>{o(!0);const t=clampCursor(e.cursor,e.value.length);r(e.value,t),setTimeout(()=>o(!1),0)},"emitStdinResult"),u=__name(e=>{const r=e.toString();if(s){const e=processBracketedPasteInput({input:r,value:t.current,cursor:n.current});if(e.handled)return void l(e)}const o=processRawInput(r,t.current,n.current);o.handled&&l(o)},"handleRawInput");if(i.on("data",u),!a.current&&hasBufferedInput()){a.current=!0;const e=consumeBufferedInput();e&&u(Buffer.from(e))}return stopEarlyInputCapture(),()=>{i.off("data",u)}},[e,t,n,r,o,s])}function useInkInputHandler({focus:e,showCursor:t,valueRef:n,cursorRef:r,isHandledByStdin:o,onUpdate:s,onSubmit:a}){Ee((e,i)=>{if(o())return;if(isIgnoredKey(e,i))return;if(i.return)return void a?.(n.current);const l=processInkInput(e,i,n.current,r.current,t);if(!l.handled)return;const u=clampCursor(l.cursor,l.value.length);s(l.value,u)},{isActive:e})}function useSyncedRef(e){const t=me(e);return t.current=e,t}function useEchoAwareValueRef(e){const t=me(e),n=me([]),r=n.current.indexOf(e);return-1!==r?n.current.splice(0,r+1):t.current!==e&&(t.current=e,n.current=[]),{valueRef:t,noteEmittedValue:he(e=>{n.current.push(e),n.current.length>64&&n.current.shift()},[])}}__name(processBackspaceRun,"processBackspaceRun"),__name(processCursorLeft,"processCursorLeft"),__name(processCursorRight,"processCursorRight"),__name(processCursorUp,"processCursorUp"),__name(processCursorDown,"processCursorDown"),__name(processCharacterInput,"processCharacterInput"),__name(processRawInput,"processRawInput"),__name(isIgnoredKey,"isIgnoredKey"),__name(processInkInput,"processInkInput"),__name(useCursorState,"useCursorState"),__name(useRawStdinHandler,"useRawStdinHandler"),__name(useInkInputHandler,"useInkInputHandler"),__name(useSyncedRef,"useSyncedRef"),__name(useEchoAwareValueRef,"useEchoAwareValueRef"),pn(),pn();var Yr={PALETTE:{CYAN:"#7AD4D6",GREEN:"#2EBD8E",GRAY:"#8A94A8",WHITE:"#E5E5E5",YELLOW:"#F5B731",RED:"#E84057",BLUE:"#5945B1",MAGENTA:"#F2608A",DIM:"#8A94A8",DIMMER:"#4C556A",DIMMEST:"#353D50"},ACCENT:"#E4CCFF",TASTE_COLORS:{BADGE_BG:"#08575B",BADGE_FG:"#f4f4f4",TEXT:"#02888E"},THINKING_COLOR:"#E4CCFF",QUEUED_COLOR:"#F5B731",DIFF_COLORS:{REMOVED_BG:"#5C0112",ADDED_BG:"#04473A",REMOVED_TEXT:"#E16B7A",ADDED_TEXT:"#4CC88E",REMOVED_HIGHLIGHT_BG:"#7D2233",ADDED_HIGHLIGHT_BG:"#2E6B4A",LINE_NUM:"#8A94A8"},TOOL_BADGE_COLORS:{BG:"#5945B1",FG:"#f4f4f4"},STATUS_PILL_COLORS:{BG:"#2D2B55",FG:"#E4CCFF"},AGENT_BADGE_COLORS:{BG:"#6943FF",FG:"#f4f4f4"},STATUS_COLORS:{SUCCESS:"#35AD68",ERROR:"#E84057",WARNING:"#F5B731",IN_PROGRESS:"#E4CCFF"},IDE_COLOR:"#B1BAF9",MUTED:"#8A94A8",USER_MSG_COLORS:{BG:"#2D2B55",POINTER:"#A599E9",FG:"#E5E5E5"},HIGHLIGHT_BAR_BG:"#2D2B55",AI_ICON_COLOR:"#A599E9",PLAN_MODE_COLOR:"#F5B731",ACCEPT_EDITS_COLOR:"#8367F4",PR_COLORS:{OPEN:"#F5B731",MERGED:"#A78BFA"},RETRY_COLOR:"#F49D2A",MARKDOWN_COLORS:{CODE:"#B1BAF9",HEADING:"#A599E9"},SHIMMER_COLORS:["#A599E9","#E4CCFF","#ABA5CE","#CCC7E1","#FFFFFF","#EADAFF","#ABA5CE","#E4CCFF","#A599E9"],SHIMMER_DEFAULT:"#6E61A3",LOGO_BANNER_COLORS:{TEXT:"#B1BAF9",BG:"#2B2758"}},Qr={dark:Yr,light:{...Yr,PALETTE:{...Yr.PALETTE,CYAN:"#0F6B6D",GREEN:"#047857",GRAY:"#4B5563",WHITE:"#111827",YELLOW:"#92600A",RED:"#BE123C",MAGENTA:"#BE185D",DIM:"#4B5563"},ACCENT:"#5B21B6",TASTE_COLORS:{...Yr.TASTE_COLORS,TEXT:"#0F6B6D"},THINKING_COLOR:"#5B21B6",QUEUED_COLOR:"#92600A",DIFF_COLORS:{...Yr.DIFF_COLORS,REMOVED_BG:"#FEE2E2",ADDED_BG:"#CCFBF1",REMOVED_TEXT:"#BE123C",ADDED_TEXT:"#0F766E",REMOVED_HIGHLIGHT_BG:"#FECDD3",ADDED_HIGHLIGHT_BG:"#99F6E4"},STATUS_PILL_COLORS:{BG:"#4A4570",FG:"#E4CCFF"},STATUS_COLORS:{...Yr.STATUS_COLORS,SUCCESS:"#047857",ERROR:"#BE123C",WARNING:"#92600A",IN_PROGRESS:"#5B21B6"},IDE_COLOR:"#4338CA",MUTED:"#4B5563",USER_MSG_COLORS:{...Yr.USER_MSG_COLORS,BG:"#4A4570",POINTER:"#E4CCFF",FG:"#FFFFFF"},HIGHLIGHT_BAR_BG:"#DDD6FE",AI_ICON_COLOR:"#5B21B6",PLAN_MODE_COLOR:"#92600A",PR_COLORS:{OPEN:"#92600A",MERGED:"#6D28D9"},RETRY_COLOR:"#92600A",MARKDOWN_COLORS:{CODE:"#4338CA",HEADING:"#5B21B6"},SHIMMER_COLORS:["#D8B4FE","#E4CCFF","#F5F3FF","#FFFFFF","#F5F3FF","#E4CCFF","#D8B4FE","#F5F3FF","#FFFFFF"],SHIMMER_DEFAULT:"#E4CCFF",LOGO_BANNER_COLORS:{TEXT:"#B1BAF9",BG:"#2B2758"}}},Jr="dark",Xr={...Yr.PALETTE},Zr=Yr.ACCENT,eo={...Yr.TASTE_COLORS},to=Yr.THINKING_COLOR,no=Yr.QUEUED_COLOR,ro={...Yr.DIFF_COLORS},oo={...Yr.TOOL_BADGE_COLORS},so={...Yr.STATUS_PILL_COLORS},ao={...Yr.AGENT_BADGE_COLORS},io={...Yr.STATUS_COLORS},lo=Yr.IDE_COLOR,co=Yr.MUTED,uo={...Yr.USER_MSG_COLORS},mo=Yr.AI_ICON_COLOR,po=Yr.PLAN_MODE_COLOR,ho=Yr.ACCEPT_EDITS_COLOR,fo={...Yr.PR_COLORS},yo=Yr.RETRY_COLOR,wo={...Yr.MARKDOWN_COLORS},So=[...Yr.SHIMMER_COLORS],Eo=Yr.SHIMMER_DEFAULT,bo={...Yr.LOGO_BANNER_COLORS},ko=Xr.DIM,Co=Yr.HIGHLIGHT_BAR_BG;function isLightTheme(){return"light"===Jr}function applyTuiTheme(e){const t=Qr[e];Jr=e,Object.assign(Xr,t.PALETTE),Zr=t.ACCENT,Object.assign(eo,t.TASTE_COLORS),to=t.THINKING_COLOR,no=t.QUEUED_COLOR,Object.assign(ro,t.DIFF_COLORS),Object.assign(oo,t.TOOL_BADGE_COLORS),Object.assign(so,t.STATUS_PILL_COLORS),Object.assign(ao,t.AGENT_BADGE_COLORS),Object.assign(io,t.STATUS_COLORS),lo=t.IDE_COLOR,co=t.MUTED,Object.assign(uo,t.USER_MSG_COLORS),mo=t.AI_ICON_COLOR,po=t.PLAN_MODE_COLOR,ho=t.ACCEPT_EDITS_COLOR,Object.assign(fo,t.PR_COLORS),yo=t.RETRY_COLOR,Object.assign(wo,t.MARKDOWN_COLORS),So.splice(0,So.length,...t.SHIMMER_COLORS),Eo=t.SHIMMER_DEFAULT,Object.assign(bo,t.LOGO_BANNER_COLORS),ko=Xr.DIM,Co=t.HIGHLIGHT_BAR_BG}function stripBracketedPasteMarkers(e){return e.replace(/\x1B\[200~/g,"").replace(/\[200~/g,"").replace(/\x1B\[201~/g,"").replace(/\[201~/g,"")}function processBracketedPaste(e){const t=e.includes("[200~")||e.includes("[200~"),n=e.includes("[201~")||e.includes("[201~");if(!t&&!n)return{isPasteStart:!1,isPasteEnd:!1,cleanedContent:e};const r=stripBracketedPasteMarkers(e);let o,s,a;if(t){const t=e.match(/(\x1B)?\[200~/);if(t&&void 0!==t.index){o=e.slice(0,t.index);const r=e.slice(t.index+t[0].length);if(n){const e=r.match(/(\x1B)?\[201~/);e&&void 0!==e.index&&(s=r.slice(0,e.index))}else s=r}}if(n){const t=e.match(/(\x1B)?\[201~/);t&&void 0!==t.index&&(a=e.slice(t.index+t[0].length))}return{isPasteStart:t,isPasteEnd:n,cleanedContent:r,textBeforePaste:o,pastedContent:s,textAfterPaste:a}}function enableBracketedPasteMode(){process.stdout.write("[?2004h")}function disableBracketedPasteMode(){process.stdout.write("[?2004l")}function pastedLineCount(e){return(e.endsWith("\n")?e.slice(0,-1):e).split("\n").length}function pastedTextPreview(e){const t=e.trim().split(/\s+/).filter(Boolean);if(0===t.length)return"";const n=t.slice(0,3).join(" "),r=n.slice(0,10).trimEnd();return t.length>3||r.length<n.length?`${r}…`:r}function pastedTextToken(e){const t=pastedLineCount(e),n=pastedTextPreview(e);return n?`[${n} +${t}L]`:`[+${t}L]`}__name(isLightTheme,"isLightTheme"),__name(applyTuiTheme,"applyTuiTheme"),pn(),__name(stripBracketedPasteMarkers,"stripBracketedPasteMarkers"),__name(processBracketedPaste,"processBracketedPaste"),__name(enableBracketedPasteMode,"enableBracketedPasteMode"),__name(disableBracketedPasteMode,"disableBracketedPasteMode"),__name(pastedLineCount,"pastedLineCount"),__name(pastedTextPreview,"pastedTextPreview"),__name(pastedTextToken,"pastedTextToken");var vo=/\[[^\[\]]*\+\d+L\]/g,To=ne.hex(Xr.DIM);function pastedTokenRanges(e){const t=[],n=new RegExp(vo.source,"g");let r;for(;null!==(r=n.exec(e));)t.push([r.index,r.index+r[0].length]);return t}function renderPlainSpan(e,t,n,r,o){let s="";for(let a=t;a<n;a++){const t=e[a];s+=o&&a===r?"\n"===t?Te.inverse(" ")+"\n":Te.inverse(t):t}return s}function renderTokenSpan(e,t,n,r,o){return o&&r>=t&&r<n?To(e.slice(t,r))+Te.inverse(e[r])+To(e.slice(r+1,n)):To(e.slice(t,n))}function renderPlaceholder(e,t){return t?0===e.length?Te.inverse(" "):Te.inverse(e[0])+To(e.slice(1)):To(e)}function renderValue(e,t,n){const r=pastedTokenRanges(e);if(!n&&0===r.length)return e;if(n&&0===e.length)return Te.inverse(" ");let o="",s=0;for(const[a,i]of r)o+=renderPlainSpan(e,s,a,t,n),o+=renderTokenSpan(e,a,i,t,n),s=i;return o+=renderPlainSpan(e,s,e.length,t,n),n&&t===e.length&&(o+=Te.inverse(" ")),o}function wrapWithIndent(e,t,n){if(t<=n)return e;const r=" ".repeat(n),o=t-n,s=t;if(xe(e).length<=s)return e;const a=e.split(/(\s+)/);let i="",l=0,u=!0;for(const e of a){const t=xe(e).length;if(l+t>(u?s:o)&&l>0&&(i+="\n"+r,l=n,u=!1),i+=e,l+=t,e.includes("\n")){const t=e.substring(e.lastIndexOf("\n")+1);l=xe(t).length,u=!0}}return i}function getDisplayValue(e,t,n,r,o){const s=r&&o;return t&&0===e.length?renderPlaceholder(t,s):renderValue(e,n,s)}function getMaskedValue(e,t){return t?t.repeat(e.length):e}__name(pastedTokenRanges,"pastedTokenRanges"),__name(renderPlainSpan,"renderPlainSpan"),__name(renderTokenSpan,"renderTokenSpan"),__name(renderPlaceholder,"renderPlaceholder"),__name(renderValue,"renderValue"),__name(wrapWithIndent,"wrapWithIndent"),__name(getDisplayValue,"getDisplayValue"),__name(getMaskedValue,"getMaskedValue");var xo={white:Te.white,green:Te.green,red:Te.red,blue:Te.blue,yellow:Te.yellow,cyan:Te.cyan,magenta:Te.magenta,gray:Te.gray,grey:Te.gray};function createStdinUpdateHandler(e,t,n,r){return(o,s)=>{e(s),o!==t.current&&(r(o),t.current=o,n.current(o))}}function createInkUpdateHandler(e,t,n,r){return(o,s)=>{e(s),o!==t.current&&(r(o),t.current=o,n.current(o))}}function TextInput({value:e,placeholder:t="",focus:n=!0,mask:r,showCursor:o=!0,onChange:s,onSubmit:a,onCursorChange:i,prefix:l="",prefixColor:u,singleLine:d=!1,maxWidth:m,stripBracketedPaste:g=!1,initialCursor:h}){const f=me(!1),{valueRef:y,noteEmittedValue:w}=useEchoAwareValueRef(e),S=useSyncedRef(s),{cursor:E,setCursor:k,cursorRef:C}=useCursorState({value:e,focus:n,showCursor:o,initialCursor:h});ce.useEffect(()=>{i?.(E)},[E,i]);const v=he(createStdinUpdateHandler(k,y,S,w),[k,y,S,w]),T=he(createInkUpdateHandler(k,y,S,w),[k,y,S,w]),x=he(e=>{f.current=e},[]),P=he(()=>f.current,[]);useRawStdinHandler({focus:n,valueRef:y,cursorRef:C,onUpdate:v,setHandled:x,stripBracketedPaste:g}),useInkInputHandler({focus:n,showCursor:o,valueRef:y,cursorRef:C,isHandledByStdin:P,onUpdate:T,onSubmit:a});const{stdout:A}=be(),I=A?.columns??80,M=getMaskedValue(e,r),R=u?xo[u]:void 0,_=l?R?R(l):l:"",D=getDisplayValue(M,t,E,o,n),N=l?.length??0,$=_+D;if(d){const e=$.replace(/\n/g," ");return null!=m?ce.createElement(ye,{width:m},ce.createElement(we,{wrap:"truncate"},e)):ce.createElement(we,{wrap:"truncate"},e)}const L=wrapWithIndent($,I,N);return ce.createElement(we,{wrap:"wrap"},L)}__name(createStdinUpdateHandler,"createStdinUpdateHandler"),__name(createInkUpdateHandler,"createInkUpdateHandler"),__name(TextInput,"TextInput"),An(),pn(),wn(),pn();var Po=new Set(["dark","light"]);function isCliTheme(e){return"string"==typeof e&&Po.has(e)}function getSupportedEfforts(e){return findModelById(e)?.reasoningEfforts??null}function modelSupportsReasoningEffort(e){return null!==getSupportedEfforts(e)}function getContextLimit(e){const t=getCanonicalModelId(e);return findModelById(t)?.contextWindow??2e5}function findModelById(e){return Object.values(Zt).find(t=>t.id===e)}function getProviderFromModel(e){return findModelById(e)?.provider??Lt.ANTHROPIC}function getAllModelOptions(){return Object.values(Zt)}function getModelGroupLabel(e){return e.vendorLabel??rn[e.provider]??e.provider}function groupModelsByDisplayOrder(e){const t=new Map;for(const n of e){const e=getModelGroupLabel(n),r=t.get(e)??[];r.push(n),t.set(e,r)}return[...on.filter(e=>t.has(e)),...[...t.keys()].filter(e=>!on.includes(e))].map(e=>({label:e,models:t.get(e)}))}function getModelGroupsInOrder(){return groupModelsByDisplayOrder(getAllModelOptions().filter(e=>!e.hidden))}function resolveKnownModelId(e){const t=getCanonicalModelId(e);return findModelById(t)?t:void 0}function modelSupportsVision(e){const t=findModelById(getCanonicalModelId(e));return!t?.inputModalities||t.inputModalities.includes("image")}__name(isCliTheme,"isCliTheme"),Sn(),pn(),wn(),__name(getSupportedEfforts,"getSupportedEfforts"),__name(modelSupportsReasoningEffort,"modelSupportsReasoningEffort"),__name(getContextLimit,"getContextLimit"),__name(findModelById,"findModelById"),__name(getProviderFromModel,"getProviderFromModel"),__name(getAllModelOptions,"getAllModelOptions"),__name(getModelGroupLabel,"getModelGroupLabel"),__name(groupModelsByDisplayOrder,"groupModelsByDisplayOrder"),__name(getModelGroupsInOrder,"getModelGroupsInOrder"),__name(resolveKnownModelId,"resolveKnownModelId"),__name(modelSupportsVision,"modelSupportsVision");var Ao=/[-@]\d{8}$/,Io="workers-ai/@cf/";function ossEntryMatches(e,t){return e.canonicalId.toLowerCase()===t||Object.values(e.providers).some(e=>"string"==typeof e&&e.toLowerCase()===t)}function tryResolveCanonical(e){const t=(tn[e.toLowerCase()]??e).toLowerCase(),n=Object.values(Zt).find(e=>e.id.toLowerCase()===t);if(n)return n.id;const r=en.find(e=>ossEntryMatches(e,t));return r?.canonicalId}function getCanonicalModelId(e){if(!e)return e;const t=e.startsWith(Io)?e.slice(Io.length):e,n=tryResolveCanonical(t);if(n)return n;const r=t.replace(Ao,"");return r===t?t:tryResolveCanonical(r)??t}function getModelDisplayName(e){const t=getCanonicalModelId(e),n=Object.values(Zt).find(e=>e.id===t);return n?.name??e}async function loadUserConfig(){try{const e=getConfigFile();return parseJSON(await F.readFile(e,"utf-8"))||{}}catch{return{}}}async function saveUserConfig(e){try{const t=getConfigFile();S.writeFileSync(t,JSON.stringify(e,null,2)),S.chmodSync(t,384)}catch(e){throw new Error(`Failed to save user config: ${e}`)}}async function updateUserConfig(e){const t=await loadUserConfig(),n=t.model,r={...t,...e,model:e.model??n};await saveUserConfig(r)}__name(ossEntryMatches,"ossEntryMatches"),__name(tryResolveCanonical,"tryResolveCanonical"),__name(getCanonicalModelId,"getCanonicalModelId"),__name(getModelDisplayName,"getModelDisplayName"),__name(loadUserConfig,"loadUserConfig"),__name(saveUserConfig,"saveUserConfig"),__name(updateUserConfig,"updateUserConfig");var Mo=null,Ro=null,_o=null;async function isOAuthEnforced(){if(null!==Mo)return Mo;if(isInternalTeamDisableFlagPresent())return dlog("[Auth] OAuth disabled via --xco flag"),await updateUserConfig({forceOAuth:!1}),Mo=!1,!1;if(isInternalTeamFlagPresent()){dlog("[Auth] OAuth enabled via --co flag");const e=await loadUserConfig(),t=await resolveOAuthProvider({currentProvider:e.provider});return dlog("[Auth] --co resolved provider",t),await updateUserConfig({provider:t,forceOAuth:!0}),Mo=!0,!0}const e=await loadUserConfig();return(Mo=e.forceOAuth??!1)&&dlog("[Auth] using OAuth (persisted from previous --co)"),Mo}__name(isOAuthEnforced,"isOAuthEnforced");var Do=["anthropic","github-copilot","codex"];async function resolveOAuthProvider(e){const{currentProvider:t}=e;if(t&&Do.includes(t))return t;const n=await Or.get("github-copilot"),r=await Or.get("codex"),o=(await Or.get("anthropic"),n?"github-copilot":r?"codex":"anthropic");return dlog("[Auth] resolveOAuthProvider fallback",{from:t,to:o}),o}function validateOAuthToken(e){const{token:t,provider:n}=e;if(n&&Do.includes(n)&&!t)throw new Error("OAuth authentication required. Please use /provider command\nSelect your provider and complete the OAuth setup.")}async function getOAuthCredentials(e){const{provider:t}=e;return"anthropic"===t?{token:await Fr.getValidAccessToken(),oauthProvider:"anthropic"}:"github-copilot"===t?{token:await Br.getValidAccessToken(),oauthProvider:"github-copilot"}:"codex"===t?{token:await Ur.getValidAccessToken(),oauthProvider:"codex"}:{token:void 0,oauthProvider:void 0}}__name(resolveOAuthProvider,"resolveOAuthProvider"),__name(validateOAuthToken,"validateOAuthToken"),__name(getOAuthCredentials,"getOAuthCredentials");var No,$o,Lo,Oo=null;function readDiskDefaultModel(){if(null!==Oo)return Oo;try{const e=getConfigFile(),t=parseJSON(S.readFileSync(e,"utf-8"))||{};Oo=t.model??nn}catch{Oo=nn}return Oo}async function getSelectedModel(){return No||Lo||readDiskDefaultModel()}function setModelOverride(e){No=e}function clearModelOverride(){No=void 0}function setGoalMaxTurnsOverride(e){$o=e}function getGoalMaxTurnsOverride(){return $o}function setSessionModel(e){Lo=e}function hasRuntimeModelSelection(){return void 0!==No||void 0!==Lo}function shouldAdoptResumedModel(e){const{inTuiResume:t}=e;return t||!hasRuntimeModelSelection()}function getConfiguredModel(){return No||Lo||readDiskDefaultModel()}function setSelectedModel(e){setSessionModel(e.model)}async function persistDefaultModel(e){await updateUserConfig({model:e.model}),Oo=e.model}function getReasoningEffort(e){try{const t=getConfigFile(),n=parseJSON(S.readFileSync(t,"utf-8"))||{};return n.reasoningEffort?.[e]}catch{return}}async function setReasoningEffort(e){const{modelId:t,effort:n}=e,r={...(await loadUserConfig()).reasoningEffort??{}};if(void 0===n)return delete r[t],void await updateUserConfig({reasoningEffort:r});r[t]=n,await updateUserConfig({reasoningEffort:r})}function getCliTheme(){if(null!==_o)return _o;try{const e=getConfigFile(),t=parseJSON(S.readFileSync(e,"utf-8"))||{};return _o=isCliTheme(t.theme)?t.theme:"dark"}catch{return _o="dark","dark"}}async function setCliTheme(e){const{theme:t}=e;await updateUserConfig({theme:t}),_o=t}function isExperimentalEnabled(){return process.argv.includes("--experimental")}async function migrateDeprecatedModel(){try{const e=await loadUserConfig();if(!e.model)return;const t=tn[e.model];if(!t)return;dlog(`[Migration] Upgrading model ${e.model} → ${t}`),await saveUserConfig({...e,model:t}),Oo=t}catch(e){dlog(`[Migration] Failed to migrate model: ${e}`)}}function getCompactMode(){if(null!==Ro)return Ro;try{const e=getConfigFile(),t=(parseJSON(S.readFileSync(e,"utf-8"))||{}).compactMode;return Ro="default"===t||"fast"===t?t:"default"}catch{return Ro="default","default"}}async function setCompactMode(e){const{mode:t}=e;Ro=t,await updateUserConfig({compactMode:t})}__name(readDiskDefaultModel,"readDiskDefaultModel"),__name(getSelectedModel,"getSelectedModel"),__name(setModelOverride,"setModelOverride"),__name(clearModelOverride,"clearModelOverride"),__name(setGoalMaxTurnsOverride,"setGoalMaxTurnsOverride"),__name(getGoalMaxTurnsOverride,"getGoalMaxTurnsOverride"),__name(setSessionModel,"setSessionModel"),__name(hasRuntimeModelSelection,"hasRuntimeModelSelection"),__name(shouldAdoptResumedModel,"shouldAdoptResumedModel"),__name(getConfiguredModel,"getConfiguredModel"),__name(setSelectedModel,"setSelectedModel"),__name(persistDefaultModel,"persistDefaultModel"),__name(getReasoningEffort,"getReasoningEffort"),__name(setReasoningEffort,"setReasoningEffort"),__name(getCliTheme,"getCliTheme"),__name(setCliTheme,"setCliTheme"),__name(isExperimentalEnabled,"isExperimentalEnabled"),__name(migrateDeprecatedModel,"migrateDeprecatedModel"),__name(getCompactMode,"getCompactMode"),__name(setCompactMode,"setCompactMode"),pn();var Fo=__name(({url:e,text:t,dimColor:n=!1,color:r})=>{const o=`]8;;${e}${t}]8;;`,s=r??(n?Xr.DIM:void 0);return ce.createElement(we,{dimColor:n&&!!r,color:s},o)},"TerminalLink"),Uo=__name(({onSuccess:e,onCancel:t,onFailure:n})=>{const[r,o]=de(""),[s,a]=de(null),[i,l]=de(!1),[u,d]=de(null),[m,g]=de(!0),[h,f]=de(!1),[y,w]=de(!1);pe(()=>{const{url:e,verifier:t,state:n}=Fr.createAuthorizationUrl();a({url:e,verifier:t,state:n})},[]);const S=he(async e=>{const t=processBracketedPaste(e);if(!t.isPasteStart||y){if(!y||t.isPasteEnd){if(y&&t.isPasteEnd){w(!1);const e=await detectClipboardText();if(e){const t=e.split("#")[0].trim();return void o(t)}if(t.cleanedContent){const e=t.cleanedContent.split("#")[0].trim();o(e)}return}o(e)}}else if(w(!0),t.isPasteEnd){w(!1);const e=await detectClipboardText();if(e){const t=e.split("#")[0].trim();return void o(t)}if(t.cleanedContent){const e=t.cleanedContent.split("#")[0].trim();o(e)}return}},[y]);Ee((e,n)=>{if(n.escape&&t(),m&&!h)if(n.return||"y"===e||"Y"===e){if(!s)return;Z(s.url).then(()=>{f(!0),g(!1)}).catch(()=>{d(`Failed to open browser. Please manually open: ${s.url}`),f(!0),g(!1)})}else"n"!==e&&"N"!==e||t()});const E=__name(async()=>{if(r.trim()&&s&&!i){l(!0),d(null);try{const t=r.split("#")[0].trim();await Fr.exchangeCodeForTokens(t,s.verifier,s.state),await updateUserConfig({provider:"anthropic"}),e()}catch(e){const t=e instanceof Error?e.message:"Authentication failed";d(t),l(!1),n&&n(t)}}},"handleSubmit");return m&&!h?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"Anthropic Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Open the Anthropic auth page?",ce.createElement(we,{color:Xr.DIM}," (Y/n)")))):ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"Anthropic Authentication")),s&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Login: "),ce.createElement(Fo,{url:s.url,text:"Open auth page ↗",color:Xr.CYAN})),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"After authorizing, copy the code and paste it below:")),u&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},"Error: ",u)),ce.createElement(ye,null,ce.createElement(we,null,"Authorization code: "),ce.createElement(TextInput,{mask:"*",focus:!0,value:r,onChange:S,onSubmit:E,placeholder:"Paste code here..."})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Enter to submit or ESC to cancel")))},"AnthropicAuth");function createOSC8Link(e,t,n=!0){return`${n?"":""}]8;;${e}${t||e}]8;;${n?"":""}`}pn(),pn(),__name(createOSC8Link,"createOSC8Link");var Bo=__name(({onSuccess:e,onCancel:t,onFailure:n})=>{const[r,o]=de("confirm"),[s,a]=de(""),[i,l]=de(null),[u,d]=de(""),m=me(null),g=he(async()=>{const t=new AbortController;m.current=t;try{await Ur.login({onAuth:__name(({authorizeUrl:e})=>{a(e),o("waiting"),Z(e).catch(()=>{})},"onAuth"),onProgress:__name(e=>{d(e),e.startsWith("Exchanging")&&o("exchanging")},"onProgress"),signal:t.signal}),await updateUserConfig({provider:"codex"}),o("success"),e()}catch(e){if(t.signal.aborted)return;const r=e instanceof Error?e.message:"Authentication failed";l(r),o("error"),n?.(r)}},[e,n]);return pe(()=>()=>{m.current?.abort()},[]),Ee((e,n)=>{if(n.escape)return m.current?.abort(),void t();if("confirm"===r){if(n.return||"y"===e||"Y"===e)return void g();"n"!==e&&"N"!==e||t()}}),"confirm"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"ChatGPT (Codex) Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"This will open your browser to sign in with ChatGPT.")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Continue?",ce.createElement(we,{color:Xr.DIM}," (Y/n)")))):"waiting"===r||"exchanging"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"ChatGPT (Codex) Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,createOSC8Link(s,"Open auth page ↗"))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},u||"Waiting for authorization...")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to cancel"))):"error"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"ChatGPT (Codex) Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},"Error: ",i)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to go back"))):null},"CodexAuth");pn();var jo=__name(({onSuccess:e,onCancel:t,onFailure:n})=>{const[r,o]=de("confirm"),[s,a]=de(""),[i,l]=de(""),[u,d]=de(null),[m,g]=de(""),h=me(null),f=he(async()=>{const t=new AbortController;h.current=t;try{await Br.login({onAuth:__name(({userCode:e,verificationUri:t})=>{a(e),l(t),o("device-code"),Z(t).catch(()=>{})},"onAuth"),onProgress:__name(e=>{g(e),"Waiting for authorization..."===e&&o("polling")},"onProgress"),signal:t.signal}),await updateUserConfig({provider:"github-copilot"}),o("success"),e()}catch(e){if(t.signal.aborted)return;const r=e instanceof Error?e.message:"Authentication failed";d(r),o("error"),n&&n(r)}},[e,n]);return pe(()=>()=>{h.current?.abort()},[]),Ee((e,n)=>{if(n.escape)return h.current?.abort(),void t();if("confirm"===r){if(n.return||"y"===e||"Y"===e)return void f();"n"!==e&&"N"!==e||t()}}),"confirm"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"GitHub Copilot Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"This will open GitHub to authorize Copilot access.")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Continue?",ce.createElement(we,{color:Xr.DIM}," (Y/n)")))):"device-code"===r||"polling"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"GitHub Copilot Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Enter this code on GitHub:"," ",ce.createElement(we,{bold:!0,color:Xr.GREEN},s))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Open: ",i)),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"polling"===r?"Waiting for authorization...":m||"Starting...")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to cancel"))):"error"===r?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{bold:!0,color:Xr.CYAN},"GitHub Copilot Authentication")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},"Error: ",u)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Press ESC to go back"))):null},"CopilotAuth"),Ho=Object.fromEntries(Object.values(sn).map(e=>[e.id,{id:e.id,displayName:e.label,description:e.description,requiresAuth:e.requiresAuth,hidden:!e.visibleInNormalMode}]));function getProviderDisplayName(e){return e?sn[e]?.label??e:"None"}function getProviderConfig(e){return Ho[e]}function isInternalTeamFlagPresent(){return process.argv.includes(It)}function isInternalTeamDisableFlagPresent(){return process.argv.includes(Mt)}function isInternalTeamFlagEnforced(){if(isInternalTeamDisableFlagPresent())return!1;if(isInternalTeamFlagPresent())return!0;try{const e=getConfigFile();return(parseJSON(S.readFileSync(e,"utf-8"))||{}).forceOAuth??!1}catch{return!1}}function getProviderOptions(){const e=isInternalTeamFlagEnforced();return Object.values(Ho).filter(t=>!t.hidden||e).map(e=>({label:`${e.displayName} (${e.description})`,value:e.id}))}function isInternalTeamDisableOAuthFlagPresent(){return process.argv.includes(Mt)}function formatDate(e=new Date){return e.toISOString().split("T")[0]}function parseJSON(e){try{return JSON.parse(e)}catch{return null}}async function getConfiguredProvider(){try{const e=getConfigFile(),t=await U.readFile(e,"utf-8"),n=JSON.parse(t),r=n.provider||null,o=n.forceOAuth||!1,s=isInternalTeamFlagPresent();if(isInternalTeamDisableOAuthFlagPresent())return await updateUserConfig({provider:sn["command-code"].id,forceOAuth:!1}),sn["command-code"].id;if(s||o){if(r)return await updateUserConfig({forceOAuth:!0}),r;const e=await resolveOAuthProvider({currentProvider:r});return await updateUserConfig({provider:e,forceOAuth:!0}),e}return r}catch{return null}}function getIsExpandToolShortcut(e,t){return isCtrlKey({inputChar:t,key:e,letter:"o",ctrlCode:15})}function formatTime2(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 isLocalDevelopmentBuild(){try{const e=process.argv[1];if(!e)return!1;if(e.includes("/usr/local/bin/dmd"))return!0;const t=E.realpathSync(e);return!(!t.includes("/dist/index.mjs")||t.includes("node_modules"))}catch{return!1}}function getTelemetryEnv(){return isLocalDevelopmentBuild()?"local":Pr()}function getAxiomToken(){switch(getTelemetryEnv()){case"staging":return"xaat-fde9e569-4a3c-4994-aa0d-7a632332d220";case"local":return"xaat-add69148-8f73-4833-921d-bc843285c95f";default:return"xaat-818bfed7-bc54-45bc-8bfa-d1198174064a"}}function isTelemetryEnabled(){if("1"===process.env.DO_NOT_TRACK||"true"===process.env.DO_NOT_TRACK)return!1;try{const e=getConfigFile();return!1!==(parseJSON(S.readFileSync(e,"utf-8"))||{}).telemetry}catch{return!0}}function hasAxiomToken(){return Boolean(getAxiomToken())}Ho.anthropic&&(Ho.anthropic.authComponent=Uo,Ho.anthropic.checkAuth=async()=>!!await Fr.getValidAccessToken()),Ho["github-copilot"]&&(Ho["github-copilot"].authComponent=jo,Ho["github-copilot"].checkAuth=async()=>!!await Br.getValidAccessToken()),Ho.codex&&(Ho.codex.authComponent=Bo,Ho.codex.checkAuth=async()=>!!await Ur.getValidAccessToken()),__name(getProviderDisplayName,"getProviderDisplayName"),__name(getProviderConfig,"getProviderConfig"),__name(isInternalTeamFlagPresent,"isInternalTeamFlagPresent"),__name(isInternalTeamDisableFlagPresent,"isInternalTeamDisableFlagPresent"),__name(isInternalTeamFlagEnforced,"isInternalTeamFlagEnforced"),__name(getProviderOptions,"getProviderOptions"),__name(isInternalTeamDisableOAuthFlagPresent,"isInternalTeamDisableOAuthFlagPresent"),__name(formatDate,"formatDate"),__name(parseJSON,"parseJSON"),__name(getConfiguredProvider,"getConfiguredProvider"),__name(getIsExpandToolShortcut,"getIsExpandToolShortcut"),__name(formatTime2,"formatTime"),__name(formatTokens,"formatTokens"),pn(),__name(isLocalDevelopmentBuild,"isLocalDevelopmentBuild"),__name(getTelemetryEnv,"getTelemetryEnv"),__name(getAxiomToken,"getAxiomToken"),__name(isTelemetryEnabled,"isTelemetryEnabled"),__name(hasAxiomToken,"hasAxiomToken"),Rn();var{NodeSDK:Wo}=oe,{OTLPTraceExporter:Go}=se,{resourceFromAttributes:zo}=ae,{ATTR_SERVICE_NAME:qo,ATTR_SERVICE_VERSION:Vo}=ie,{BatchSpanProcessor:Ko,SimpleSpanProcessor:Yo}=le,Qo=1500;function parseRetryAfter(e){if(!e)return null;const t=Number(e);if(Number.isFinite(t)&&t>=0)return Math.min(1e3*t,Qo);const n=Date.parse(e);if(Number.isFinite(n)){const e=n-Date.now();if(e>0)return Math.min(e,Qo)}return null}function installOtlpRetryFetch(){const e=globalThis.fetch;if(!e||e.__commandcodeOtlpWrapped)return;const t=__name(async(t,n)=>{const r="string"==typeof t?t:t.url??"";if("string"!=typeof r||!r.includes(Qn))return e(t,n);let o,s=0;for(;s<=2;){const r=await e(t,n);if(o=r,429!==r.status&&430!==r.status)return r;if(2===s)break;const a=parseRetryAfter(r.headers.get("retry-after")),i=Math.min(200*Math.pow(2,s),Qo),l=a??i;await new Promise(e=>setTimeout(e,l)),s++}return o},"wrapped");t.__commandcodeOtlpWrapped=!0,globalThis.fetch=t}function createAxiomExporter(){return installOtlpRetryFetch(),new Go({url:Qn,headers:{Authorization:`Bearer ${getAxiomToken()}`,"X-Axiom-Dataset":"command_code_cli_tracing"}})}function createServiceResource(){const e=getPackageJson(),n=process.execPath,r=t.basename(n)||"unknown";return zo({[qo]:Jn,[Vo]:e.version,"process.executable.name":r,"process.runtime.name":"node","process.runtime.version":process.version,"process.pid":process.pid})}function createTelemetrySDK(){const e=createAxiomExporter(),t=createServiceResource(),n="1"===process.env.COMMAND_CODE_TELEMETRY_SYNC?new Yo(e):new Ko(e,{maxQueueSize:512,maxExportBatchSize:128,scheduledDelayMillis:500,exportTimeoutMillis:5e3});return new Wo({resource:t,spanProcessors:[n],autoDetectResources:!1})}function resolveNearestAncestor(e){let n=t.dirname(e),r=t.basename(e);for(;n!==t.dirname(n);)try{return t.join(E.realpathSync(n),r)}catch(e){if(e instanceof Error&&"code"in e&&"ENOENT"===e.code){r=t.join(t.basename(n),r),n=t.dirname(n);continue}return null}return null}function resolveSymlinks(e){try{return E.realpathSync(e)}catch(e){if(!(e instanceof Error&&"code"in e&&"ENOENT"===e.code))return null}try{if(E.lstatSync(e).isSymbolicLink())return null}catch{}return resolveNearestAncestor(e)}function resolvePlansDir(e){try{return E.realpathSync(e)}catch{return e}}function isPlanPath(e){const{filePath:n}=e;if(!n||"string"!=typeof n)return!1;const r=D.homedir(),o=n.startsWith("~/")?t.join(r,n.slice(2)):n,s=resolveSymlinks(t.resolve(o));if(!s)return!1;const a=resolvePlansDir(t.join(r,".commandcode","plans"));return s.startsWith(a+t.sep)||s===a}__name(parseRetryAfter,"parseRetryAfter"),__name(installOtlpRetryFetch,"installOtlpRetryFetch"),__name(createAxiomExporter,"createAxiomExporter"),__name(createServiceResource,"createServiceResource"),__name(createTelemetrySDK,"createTelemetrySDK"),pn(),Rn(),pn(),pn(),pn(),wn(),__name(resolveNearestAncestor,"resolveNearestAncestor"),__name(resolveSymlinks,"resolveSymlinks"),__name(resolvePlansDir,"resolvePlansDir"),__name(isPlanPath,"isPlanPath");var Jo=new Set(["/etc","/root","/proc","/sys","/dev",t.join(D.homedir(),".ssh"),t.join(D.homedir(),".gnupg"),t.join(D.homedir(),".aws")]),Xo=[],Zo="standard";function setCurrentPermissionMode(e){Zo=e}function normalizePathForComparison(e){const n=t.normalize(e);return"win32"===process.platform?n.toLowerCase():n}function areSamePath(e,t){return normalizePathForComparison(e)===normalizePathForComparison(t)}function getCanonicalPath(e){try{return E.realpathSync(e)}catch(n){const r=n.code;return"ENOENT"!==r&&console.error(`Warning: Could not resolve canonical path for "${e}" (${r}). Path comparison may be less reliable.`),t.normalize(e)}}function canonicalizeForLookup(e){try{let n=t.resolve(e);const r=[];for(;!E.existsSync(n);){const o=t.dirname(n);if(o===n)return t.normalize(e);r.unshift(t.basename(n)),n=o}return t.join(getCanonicalPath(n),...r)}catch{return t.normalize(e)}}function formatDirectoryForDisplay(e){const n=canonicalizeForLookup(t.normalize(e)),r=getCanonicalPath(process.cwd()),o=D.homedir();if(isPathInDirectory(n,r)){const e=t.relative(r,n);return e?`./${e}`:"."}if(o&&isPathInDirectory(n,o)){const e=t.relative(o,n);return e?`~/${e}`:"~"}return n}function isPathInDirectory(e,n){const r=normalizePathForComparison(e),o=normalizePathForComparison(n),s=o.endsWith(t.sep)?o:o+t.sep;return r===o||r.startsWith(s)}function findSensitiveDirectoryConflict(e){const n=[t.normalize(e),getCanonicalPath(e)];for(const e of Jo){const r=[t.normalize(e),getCanonicalPath(e)];for(const e of n)for(const t of r)if(isPathInDirectory(e,t)||isPathInDirectory(t,e))return t}return null}function resolveDirectoryPath(e){let n=e.trim();return n.startsWith("~")&&(n=t.join(D.homedir(),n.slice(1))),t.isAbsolute(n)||(n=t.resolve(process.cwd(),n)),t.normalize(n)}function createSkippedResult(e){const{inputPath:t,absolutePath:n,code:r}=e,o=formatDirectoryForDisplay(n);return{status:"skipped",inputPath:t,absolutePath:n,displayPath:o,code:r,message:"ALREADY_IN_WORKSPACE"===r?`${o} is already accessible from the current workspace`:`${o} is already added`}}function createErrorResult(e){const{inputPath:t,code:n,message:r}=e;return{status:"error",inputPath:t,code:n,message:r}}function addDirectory(e){const t=e.trim();if(!t)return createErrorResult({inputPath:e,code:"EMPTY_PATH",message:"Directory path cannot be empty"});const n=resolveDirectoryPath(e);let r,o;try{r=E.statSync(n)}catch(n){return"ENOENT"===n.code?createErrorResult({inputPath:e,code:"NOT_FOUND",message:`Directory does not exist: ${t}`}):createErrorResult({inputPath:e,code:"NOT_READABLE",message:`Directory is not readable: ${t}`})}if(!r.isDirectory())return createErrorResult({inputPath:e,code:"NOT_A_DIRECTORY",message:`${formatDirectoryForDisplay(n)} is not a directory`});try{E.accessSync(n,E.constants.R_OK),o=getCanonicalPath(n)}catch{return createErrorResult({inputPath:e,code:"NOT_READABLE",message:`Directory is not readable: ${t}`})}const s=findSensitiveDirectoryConflict(o);if(s)return createErrorResult({inputPath:e,code:"SENSITIVE_DIRECTORY",message:`Cannot add ${formatDirectoryForDisplay(o)} because it overlaps sensitive path ${formatDirectoryForDisplay(s)}`});const a=getCanonicalPath(process.cwd());return isPathInDirectory(o,a)?createSkippedResult({inputPath:e,absolutePath:o,code:"ALREADY_IN_WORKSPACE"}):Xo.some(e=>isPathInDirectory(o,e)||isPathInDirectory(e,o))?createSkippedResult({inputPath:e,absolutePath:o,code:"ALREADY_ADDED"}):(Xo.push(o),{status:"added",inputPath:e,absolutePath:o,displayPath:formatDirectoryForDisplay(o)})}function getAdditionalDirectories(){return[...Xo]}function removeAdditionalDirectory(e){if(!e.trim())return!1;const t=getCanonicalPath(resolveDirectoryPath(e)),n=Xo.findIndex(e=>areSamePath(t,e));return-1!==n&&(Xo.splice(n,1),!0)}function isPathInAdditionalDirs(e){const t=canonicalizeForLookup(e);return Xo.some(e=>isPathInDirectory(t,e))}function isPathInWorkspace(e){const t=canonicalizeForLookup(e);return!("plan"!==Zo||!isPlanPath({filePath:t}))||(isPathInDirectory(t,getCanonicalPath(process.cwd()))||isPathInAdditionalDirs(t))}function getWorkspaceDirectories(){return[t.resolve(process.cwd()),...getAdditionalDirectories()]}function getCurrentWorkingDirectory(){return global.COMMAND_CODE_CWD||process.cwd()}function getCurrentDate(){return(new Date).toISOString().split("T")[0]}function getEnvironmentInfo(){return`${D.platform()}-${D.arch()}, Node.js ${process.version}`}function getRootDirectoryStructure(){const e=getCurrentWorkingDirectory(),t=new Set(["node_modules","dist","build",".git",".svn",".hg","coverage",".nyc_output",".cache","tmp","temp",".next",".nuxt","out"]);try{return E.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).filter(e=>!e.name.startsWith(".")).filter(e=>!t.has(e.name)).map(e=>e.name).sort()}catch{return[]}}function getAccessibleDirectoryStructure(){return[...getRootDirectoryStructure(),...getAdditionalDirectories().map(e=>`scope:${formatDirectoryForDisplay(e)}`)]}function isGitRepository(){try{return Ne("git rev-parse --git-dir",{stdio:"ignore",cwd:getCurrentWorkingDirectory()}),!0}catch{return!1}}function getCurrentBranch(){try{return Ne("git branch --show-current",{encoding:"utf8",cwd:getCurrentWorkingDirectory(),stdio:["pipe","pipe","ignore"]}).trim()}catch{return""}}function getMainBranch(){const e=getCurrentWorkingDirectory();try{const t=Ne("git symbolic-ref --short refs/remotes/origin/HEAD",{encoding:"utf8",cwd:e,stdio:["pipe","pipe","ignore"]}).trim().replace(/^origin\//,"");if(t)return t}catch{}try{const t=Ne("git branch -r",{encoding:"utf8",cwd:e,stdio:["pipe","pipe","ignore"]});return t.includes("origin/main")?"main":t.includes("origin/master")?"master":"main"}catch{return""}}function getGitStatus(){try{const e=Ne("git status --porcelain",{encoding:"utf8",cwd:getCurrentWorkingDirectory(),stdio:["pipe","pipe","ignore"]}).trim();if(!e)return"Working tree clean";const t=e.split("\n"),n=t.filter(e=>e.startsWith(" M")).length,r=t.filter(e=>e.startsWith("A ")).length,o=t.filter(e=>e.startsWith(" D")).length,s=t.filter(e=>e.startsWith("??")).length,a=[];return n>0&&a.push(`M ${n}`),r>0&&a.push(`A ${r}`),o>0&&a.push(`D ${o}`),s>0&&a.push(`?? ${s}`),a.join(", ")||e}catch{return""}}function getRecentCommits(){try{const e=Ne("git log --oneline -3",{encoding:"utf8",cwd:getCurrentWorkingDirectory(),stdio:["pipe","pipe","ignore"]}).trim();return e?e.split("\n"):[]}catch{return[]}}function getEnvironmentContext(){const e=isGitRepository(),t=getAdditionalDirectories();return{workingDir:getCurrentWorkingDirectory(),date:getCurrentDate(),environment:getEnvironmentInfo(),structure:getAccessibleDirectoryStructure(),isGitRepo:e,currentBranch:e?getCurrentBranch():"",mainBranch:e?getMainBranch():"",gitStatus:e?getGitStatus():"",recentCommits:e?getRecentCommits():[],...t.length>0?{additionalDirectories:t}:{}}}__name(setCurrentPermissionMode,"setCurrentPermissionMode"),__name(normalizePathForComparison,"normalizePathForComparison"),__name(areSamePath,"areSamePath"),__name(getCanonicalPath,"getCanonicalPath"),__name(canonicalizeForLookup,"canonicalizeForLookup"),__name(formatDirectoryForDisplay,"formatDirectoryForDisplay"),__name(isPathInDirectory,"isPathInDirectory"),__name(findSensitiveDirectoryConflict,"findSensitiveDirectoryConflict"),__name(resolveDirectoryPath,"resolveDirectoryPath"),__name(createSkippedResult,"createSkippedResult"),__name(createErrorResult,"createErrorResult"),__name(addDirectory,"addDirectory"),__name(getAdditionalDirectories,"getAdditionalDirectories"),__name(removeAdditionalDirectory,"removeAdditionalDirectory"),__name(isPathInAdditionalDirs,"isPathInAdditionalDirs"),__name(isPathInWorkspace,"isPathInWorkspace"),__name(getWorkspaceDirectories,"getWorkspaceDirectories"),__name(getCurrentWorkingDirectory,"getCurrentWorkingDirectory"),__name(getCurrentDate,"getCurrentDate"),__name(getEnvironmentInfo,"getEnvironmentInfo"),__name(getRootDirectoryStructure,"getRootDirectoryStructure"),__name(getAccessibleDirectoryStructure,"getAccessibleDirectoryStructure"),__name(isGitRepository,"isGitRepository"),__name(getCurrentBranch,"getCurrentBranch"),__name(getMainBranch,"getMainBranch"),__name(getGitStatus,"getGitStatus"),__name(getRecentCommits,"getRecentCommits"),__name(getEnvironmentContext,"getEnvironmentContext");var es=null,ts=null,ns=null,rs=null,os={};function generateSessionId(){return`sess_${_e().replace(/-/g,"").substring(0,16)}`}function hashPath(e){return K.createHash("sha256").update(e).digest("hex").substring(0,12)}function getCliVersion(){try{const e=getPackageJson();if("string"==typeof e.version&&""!==e.version.trim())return e.version}catch{}return"unknown"}function buildSessionAttributes(e){const{sessionId:t,projectPath:n,gitBranch:r,cliVersion:o}=e;return{"session.id":t,"session.start_time":(new Date).toISOString(),[lr]:hashPath(n),[cr]:r?hashPath(r):"unknown","session.cli_version":o,"session.platform":`${_.platform()}-${_.arch()}`,"session.node_version":process.version}}function startSession(){os={},rs=null,ns=null,es=generateSessionId(),ts=Date.now();try{const e=Ae.getTracer(Jn),t=getCliVersion(),n=getCurrentWorkingDirectory(),r=getCurrentBranch(),o=buildSessionAttributes({sessionId:es,projectPath:n,gitBranch:r,cliVersion:t}),s=e.startSpan("session:cli",{attributes:o});ns=s.spanContext(),s.end()}catch{}return es}function getSessionId(){return es}function setActiveIterationSpanContext(e){rs=e}function getActiveIterationSpanContext(){return rs}function getTraceId(){const e=rs?.traceId;return e&&Pe(e)?e:null}function getSessionContext(){return rs?Ae.setSpanContext(Ie.active(),rs):Ie.active()}function endSession(e={}){const{status:t="success"}=e;if(ts)try{const e=Ae.getTracer(Jn),n=ns?[{context:ns,attributes:{"cmd.session.link_kind":"session_cli"}}]:void 0,r=e.startSpan("session:end",{attributes:{"session.id":es||"unknown","session.end_time":(new Date).toISOString(),"session.status":t,...os},links:n,root:!0},Ae.deleteSpan(Ie.active()));r.setStatus({code:"error"===t?Re.ERROR:Re.OK}),r.end()}catch{}rs=null,ns=null,es=null,ts=null,os={}}function updateSessionContext(e){ts&&(os={...os,...e})}__name(generateSessionId,"generateSessionId"),__name(hashPath,"hashPath"),__name(getCliVersion,"getCliVersion"),__name(buildSessionAttributes,"buildSessionAttributes"),__name(startSession,"startSession"),__name(getSessionId,"getSessionId"),__name(setActiveIterationSpanContext,"setActiveIterationSpanContext"),__name(getActiveIterationSpanContext,"getActiveIterationSpanContext"),__name(getTraceId,"getTraceId"),__name(getSessionContext,"getSessionContext"),__name(endSession,"endSession"),__name(updateSessionContext,"updateSessionContext"),pn(),pn();var ss={NETWORK:"network",AUTH:"auth",RATE_LIMIT:"rate_limit",TIMEOUT:"timeout",VALIDATION:"validation",NOT_FOUND:"not_found",PERMISSION:"permission",INTERNAL:"internal",CANCELLED:"cancelled",UNKNOWN:"unknown"},as=new Set(["ENOTFOUND","ECONNRESET","ECONNREFUSED","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","EPIPE"]);function getStatus(e){if("number"==typeof e.status)return e.status;if("number"==typeof e.statusCode)return e.statusCode;const t=(e.message||"").match(/\b(\d{3})\b/);if(t){const e=Number(t[1]);if(e>=400&&e<600)return e}}function categorizeError(e){if(!e||"object"!=typeof e)return ss.UNKNOWN;const t=e,n="string"==typeof t.code?t.code.toUpperCase():void 0,r=(t.name||"").toLowerCase(),o=(t.message||"").toLowerCase(),s=getStatus(t);return n&&as.has(n)?ss.NETWORK:"ETIMEDOUT"===n||o.includes("timeout")||o.includes("timed out")?ss.TIMEOUT:"ENOENT"===n||404===s?ss.NOT_FOUND:"EACCES"===n||"EPERM"===n?ss.PERMISSION:"ABORT_ERR"===n||"aborterror"===r||o.includes("abort")?ss.CANCELLED:401===s||403===s||o.includes("unauthorized")||o.includes("forbidden")?ss.AUTH:429===s||o.includes("rate limit")||o.includes("too many requests")?ss.RATE_LIMIT:void 0!==s&&s>=500&&s<600?ss.INTERNAL:void 0!==s&&s>=400&&s<500||r.includes("zod")||r.includes("validation")||o.includes("invalid")?ss.VALIDATION:"fetcherror"===r||o.includes("fetch failed")||o.includes("network")?ss.NETWORK:ss.UNKNOWN}function normalizeStackFrame(e){return e.replace(/0x[0-9a-fA-F]+/g,"0xN").replace(/:\d+:\d+/g,":N:N").replace(/file:\/\/\/[^\s)]+/g,"file:///N").replace(/(\/[^\s:)]+\/)+/g,"/N/").replace(/\b\d{4,}\b/g,"N")}function errorFingerprint(e){const t=e||{},n=t.name||"Error",r=(t.stack||"").split("\n").slice(1).map(e=>e.trim()).find(e=>e.startsWith("at ")&&!e.includes("node:internal")),o=r?`${n}|${normalizeStackFrame(r)}`:`${n}|${(t.message||"").slice(0,120)}`;return K.createHash("sha1").update(o).digest("hex").substring(0,16)}function setSpanStatus(e,t){"error"===t?e.setStatus({code:Re.ERROR}):e.setStatus({code:Re.OK})}function applyErrorAttributes(e,t){e.setAttribute("error.type",categorizeError(t)),e.setAttribute(vr,errorFingerprint(t))}function createSpan(e){const{name:t,attributes:n}=e,r=Ae.getTracer(Jn),o=Ie.active(),s=void 0!==Ae.getSpan(o)?o:getSessionContext();return r.startSpan(t,{attributes:n},s)}function endSpan(e){const{span:t,status:n="success"}=e;setSpanStatus(t,n),t.end()}function recordError(e){const{span:t,error:n,additionalAttributes:r}=e;if(t.recordException(n),t.setStatus({code:Re.ERROR,message:n.message}),applyErrorAttributes(t,n),r)for(const[e,n]of Object.entries(r))void 0!==n&&t.setAttribute(e,n)}__name(getStatus,"getStatus"),__name(categorizeError,"categorizeError"),__name(normalizeStackFrame,"normalizeStackFrame"),__name(errorFingerprint,"errorFingerprint"),__name(setSpanStatus,"setSpanStatus"),__name(applyErrorAttributes,"applyErrorAttributes"),__name(createSpan,"createSpan"),__name(endSpan,"endSpan"),__name(recordError,"recordError"),pn(),Sn();var ls=!1,cs=null;async function initAxiomAITelemetry(){if(!ls&&!cs)try{const e=await import("axiom/ai").catch(e=>(cs=e instanceof Error?e.message:String(e),null));if(!e)return void dlog("[telemetry] axiom/ai not available — falling back to plain OTel");const t=Ae.getTracer(Jn),n=isContentCaptureEnabled()?e.RedactionPolicy?.AxiomDefault:e.RedactionPolicy?.AxiomStrict??e.RedactionPolicy?.AxiomDefault;e.initAxiomAI?.({tracer:t,redactionPolicy:n}),ls=!0}catch(e){cs=e instanceof Error?e.message:String(e)}}__name(initAxiomAITelemetry,"initAxiomAITelemetry"),pn(),pn(),pn();var us=1e5,ds=5e4;function dedentText(e){const t=e.split("\n");let n=1/0;for(const e of t){if(0===e.trim().length)continue;const t=e.length-e.trimStart().length;t>0&&t<n&&(n=t)}return n===1/0||0===n?e:t.map(e=>0===e.trim().length?e:e.length-e.trimStart().length>=n?e.slice(n):e).join("\n")}function getEffectiveWidth({padding:e=4}={}){let t=80;return process.stdout.columns?t=process.stdout.columns:process.stderr.columns?t=process.stderr.columns:process.env.COLUMNS&&(t=Number(process.env.COLUMNS)),Math.max(40,t-e)}function truncateString({text:e,maxChars:t}){return e.length<=t?e:t<=3?e.slice(0,t):`${e.slice(0,t-3)}...`}function truncateCommand({command:e}){const t=e.replace(/\/Users\/[^/]+/g,"~").replace(/\/home\/[^/]+/g,"~").replace(/C:\\Users\\[^\\]+/g,"~");if(t.length<=100)return t;if(t.includes(" && ")){const e=t.split(" && ")[0].trim();return e.length<=95?`${e} && ...`:truncateString({text:e,maxChars:100})}return truncateString({text:t,maxChars:100})}function truncateToVisualLines({output:e,maxVisualLines:t=2,padding:n=4,maxChars:r}){const o=getEffectiveWidth({padding:n}),s=r??t*o,a=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n").replace(/\u00A0/g," ").trim().split("\n");let i=0,l=a.length;for(let e=0;e<a.length;e++){const n=a[e];if(0===n.trim().length)continue;const r=Math.max(1,Math.ceil(n.length/o));if(!(i+r<=t)){l=Math.max(1,e);break}i+=r}const u=l<a.length,d=a.slice(l).reduce((e,t)=>e+Math.max(1,Math.ceil(t.length/o)),0),m=a.slice(0,l).filter(e=>e.trim().length>0).join("\n");if(m.length>s){const e=m.slice(0,s-3).trimEnd(),t=e.lastIndexOf("\n"),n=t>0?e.slice(0,t):e;return{text:u?n:`${n}...`,isTruncated:!0,remainingLines:d}}return{text:m,isTruncated:u,remainingLines:d}}function normalizeError(e){return e instanceof Error?e:new Error(String(e))}function sanitizeErrorForTelemetry(e){const{error:t,label:n="error"}=e,r=scrubPII(t.message),o=r.length>0?`${n}: ${r}`:n,s=new Error(o);s.name=t.name||"Error";const a=t.code;return void 0!==a&&(s.code=a),s}function scrubPII(e){return e.replace(/[A-Z]:[/\\](?:Users|Documents and Settings)[/\\][^\s:'"`,)}\]]+/gi,"[path]").replace(/\/(?:Users|home|root)\/[^\s:'"`,)}\]]+/g,"[path]").replace(/~\/[^\s:'"`,)}\]]+/g,"[path]").replace(/\b[0-9a-f]{32,}\b/gi,"[token]").replace(/\b(?:sk|key|token|pat|ghp|gho|ghs|ghu|ghr)-[A-Za-z0-9_-]{10,}\b/g,"[apikey]")}function sanitizeArgs(e){return e.map(e=>e.startsWith("--")||e.startsWith("-")&&e.includes("=")?e.split("=")[0]:e.startsWith("-")&&!e.startsWith("--")&&e.length>2?e.substring(0,2):e.startsWith("-")?e:"[arg]")}function sanitizeEndpoint(e){return e.split("?")[0]}function createTrackingHandle(e){const{span:t}=e;return{span:t,end:__name(e=>{if("status"in e)e.error&&recordError({span:t,error:e.error}),endSpan({span:t,status:e.status});else{const{statusCode:n,error:r}=e;t.setAttribute("http.status_code",n),r?(recordError({span:t,error:r}),endSpan({span:t,status:"error"})):endSpan({span:t,status:n>=400?"error":"success"})}},"end")}}function trackCommand(e){const{command:t,args:n}=e,r=n?sanitizeArgs(n):[];endSpan({span:createSpan({name:`command:${t}`,attributes:{[ar]:t,[ir]:r.join(" ")}}),status:"success"})}function trackToolStart(e){const{toolName:t}=e;return createTrackingHandle({span:createSpan({name:`execute_tool ${t}`,attributes:{[rr]:t}})})}function buildContextAttributes(e){const{component:t,heading:n,code:r,...o}=e,s={[Tr]:t,[xr]:n};void 0!==r&&(s["cmd.error.code"]=String(r));for(const[e,t]of Object.entries(o))null!=t&&"object"!=typeof t&&(s[e]=String(t));return s}function trackError(e){const{error:t,context:n}=e,r=normalizeError(t),o=buildContextAttributes(n);o["error.type"]=categorizeError(t),o[vr]=errorFingerprint(t);const s=createSpan({name:`error:${r.name}`,attributes:o});recordError({span:s,error:r});const{traceId:a}=s.spanContext();return s.end(),Pe(a)?a:void 0}function trackEvent(e){const{name:t,context:n}=e;endSpan({span:createSpan({name:t,attributes:buildContextAttributes(n)}),status:"success"})}function trackAPICallStart(e){const{method:t,endpoint:n,cliVersion:r}=e,o=sanitizeEndpoint(n);return createTrackingHandle({span:createSpan({name:`api:${t}:${o}`,attributes:{"http.method":t,"http.url":o,...r?{"cli.version":r}:{}}})})}function getDisplayTraceId(){return getTraceId()||"unknown"}function systemInfo(e){const{userName:t,userId:n,orgLogin:r,orgId:o,platform:s,arch:a}=e,i={"os.type":s,"os.arch":a};t&&(i["user.name"]=t),n&&(i["user.id"]=n),r&&(i["cmd.org.login"]=r),o&&(i["cmd.org.id"]=o),updateSessionContext(i)}__name(dedentText,"dedentText"),__name(getEffectiveWidth,"getEffectiveWidth"),__name(truncateString,"truncateString"),__name(truncateCommand,"truncateCommand"),__name(truncateToVisualLines,"truncateToVisualLines"),__name(normalizeError,"normalizeError"),__name(sanitizeErrorForTelemetry,"sanitizeErrorForTelemetry"),__name(scrubPII,"scrubPII"),__name(sanitizeArgs,"sanitizeArgs"),__name(sanitizeEndpoint,"sanitizeEndpoint"),__name(createTrackingHandle,"createTrackingHandle"),__name(trackCommand,"trackCommand"),__name(trackToolStart,"trackToolStart"),__name(buildContextAttributes,"buildContextAttributes"),__name(trackError,"trackError"),__name(trackEvent,"trackEvent"),__name(trackAPICallStart,"trackAPICallStart"),__name(getDisplayTraceId,"getDisplayTraceId"),__name(systemInfo,"systemInfo"),pn();var ms={AUTH_FLOW:"auth-flow",ANTHROPIC_OAUTH:"anthropic-oauth",COPILOT_OAUTH:"copilot-oauth",CODEX_OAUTH:"codex-oauth",ANTHROPIC_CLIENT:"anthropic-client",UNHANDLED_REJECTION:"unhandled-rejection",UNCAUGHT_EXCEPTION:"uncaught-exception",SESSION_MANAGER:"session-manager",UPDATE_COMMAND:"update-command",LEARN_TASTE_COMMAND:"learn-taste-command",UPDATER:"updater",LEARNING_AGENT:"learning-agent",TASTE_REMOTE_STORAGE:"taste-remote-storage",CHECKPOINT_MANAGER:"checkpoint-manager",FILE_HISTORY:"file-history",API_REQUEST:"api-request",CONTEXT_ENGINE:"context-engine",AGENT_LOOP:"agent-loop",CLI_ERROR_HANDLER:"cli-error-handler",TOOL_REPAIR:"tool-repair"},ps=null,gs=!1,hs=[];function initTelemetry(){if(gs)return!0;if(!isTelemetryEnabled())return!1;if(!hasAxiomToken())return!1;try{return(ps=createTelemetrySDK()).start(),gs=!0,initAxiomAITelemetry(),!0}catch{return ps=null,gs=!1,!1}}async function shutdownTelemetry(e=2e3){if(ps&&gs)try{endSession(),await Promise.allSettled(hs),await Promise.race([ps.shutdown(),new Promise(t=>setTimeout(t,e))])}catch{}finally{ps=null,gs=!1}}function shutdownTelemetrySync(){if(gs)try{endSession()}catch{}}function isTelemetryInitialized(){return gs}function registerStartupTask(e){hs.push(e)}__name(initTelemetry,"initTelemetry"),__name(shutdownTelemetry,"shutdownTelemetry"),__name(shutdownTelemetrySync,"shutdownTelemetrySync"),__name(isTelemetryInitialized,"isTelemetryInitialized"),__name(registerStartupTask,"registerStartupTask");var{red:fs,yellow:ys,dim:ws}=ne,Ss=__name(e=>{const{heading:t="ERROR: ",error:n,displayError:r=!0,exit:o=!0,skipTelemetry:s=!1}=e;if(n){if(s||trackError({error:sanitizeErrorForTelemetry({error:n,label:"cli_error"}),context:{component:ms.CLI_ERROR_HANDLER,heading:t}}),console.log(),r){if(console.log(`${re.error} ${fs(t)}`),console.log(`${re.error} ${fs("ERROR →")} ${n.name}`),console.log(`${re.info} ${fs("REASON →")} ${n.message}`),console.log(`${re.info} ${fs("ERROR STACK ↓ \n")} ${n.stack}\n`),isTelemetryInitialized()){const e=getDisplayTraceId();console.log(`${re.info} ${ws(`Trace ID: ${e}`)}`),console.log(`${ws(" Share this ID with support to help debug your issue.")}\n`)}}else console.log(`${re.warning} ${ys(t)}\n`);if(!o)return!1;process.exit(0)}},"handleError");function handleUnhandledErrors(){process.on("unhandledRejection",e=>{const t=e instanceof Error?e:new Error(String(e));trackError({error:sanitizeErrorForTelemetry({error:t,label:"unhandled_rejection"}),context:{component:ms.UNHANDLED_REJECTION,heading:"Unhandled Promise Rejection"}}),Ss({heading:te`CRITICAL: Unhandled Promise Rejection!
3
3
  This is an unexpected error. Please file a bug report at https://github.com/CommandCodeAI/command-code/issues/new`,error:t,skipTelemetry:!0,exit:!1}),shutdownTelemetry().finally(()=>{process.exit(1)})}),process.on("uncaughtException",e=>{trackError({error:sanitizeErrorForTelemetry({error:e,label:"uncaught_exception"}),context:{component:ms.UNCAUGHT_EXCEPTION,heading:"Uncaught Exception"}}),Ss({heading:te`CRITICAL: Uncaught Exception!
4
4
  This is an unexpected error. Please file a bug report at https://github.com/CommandCodeAI/command-code/issues/new`,error:e,skipTelemetry:!0,exit:!1}),shutdownTelemetry().finally(()=>{process.exit(1)})})}__name(handleUnhandledErrors,"handleUnhandledErrors"),pn(),pn(),pn(),wn(),pn();var Es="COMMAND_CODE_API_KEY";function getApiKeyFromEnv(){const e=process.env[Es]?.trim();return e&&e.length>0?e:null}async function readAuthFile(e){try{const t=getAuthFile(e),n=await U.readFile(t,"utf-8");return JSON.parse(n)}catch{return null}}async function getAuthKey(e){const t=getApiKeyFromEnv();if(t)return t;const n=await readAuthFile(e);return n&&n.apiKey||null}async function getPersistedAuth(e){const t=await readAuthFile(e);return t?.apiKey?{authenticated:!0,userName:t.userName,apiKey:t.apiKey}:{authenticated:!1}}async function getUserName(e){const t=await readAuthFile(e);return t&&t.userName||""}async function checkAuthStatus(e){const t=getApiKeyFromEnv();if(t)return{authenticated:!0,apiKey:t,fromEnv:!0};const n=await readAuthFile(e);return n&&n.apiKey?{authenticated:!0,apiKey:n.apiKey,userName:n.userName}:{authenticated:!1,apiKey:null}}function isGenericUserName(e){return!e||"API Key"===e||"Manual API Key"===e}function formatUserSuffix(e){return isGenericUserName(e)?"":` as ${e}`}function formatColoredUserSuffix(e){return isGenericUserName(e)?"":` as ${Te.cyan(e)}`}function formatAlreadyLoggedIn(e){return`Already logged in${formatUserSuffix(e)}`}function getStartedLine(){return`${Te.dim("Run")} ${Te.cyan(getBinaryCommand())} ${Te.dim("to get started.")}`}function getLoginSuccessSuffix(e,t){return isGenericUserName(e)?t?"":" successfully":formatColoredUserSuffix(e)}function formatLoginSuccessStyled(e){const{userName:t,authFileName:n,providerLabel:r,providerWarning:o}=e,s=getLoginSuccessSuffix(t,r),a=r?` with ${Te.cyan(r)}`:"",i=[`${Te.green(He.tick)} ${Te.bold("Logged in")}${s}${a}`];return o&&i.push(` ${Te.yellow(He.warning)} ${Te.yellow(o)}`),i.push("",`${Te.dim("API key stored in")} ${Te.cyan(`~/.commandcode/${n}`)}`,getStartedLine()),i.join("\n")}function formatAlreadyLoggedInStyled(e){const t=formatColoredUserSuffix(e);return[`${Te.green(He.tick)} ${Te.bold("Already logged in")}${t}`,"",getStartedLine()].join("\n")}function formatLogoutSuccess(e){return isGenericUserName(e)?"Logged out successfully":`Logged out as ${e}`}function formatLogoutFailed(e){return`Logout failed: ${e}`}function formatLogoutWarnings(e){return 0===e.length?"":`Warnings: ${e.join(", ")}`}function detectConfigParseError(){try{const e=getConfigFile();if(!S.existsSync(e))return null;const t=S.readFileSync(e,"utf-8");return""===t.trim()?null:null===parseJSON(t)?`config.json at ${e} is not valid JSON`:null}catch{return null}}async function buildStatusJson(e){const t=getPackageJson().version;if(e.error)return{authenticated:!1,version:t,error:e.error};if(!e.authenticated)return{authenticated:!1,version:t};const n=detectConfigParseError();if(n)return{authenticated:!0,version:t,error:n};const r={authenticated:!0,version:t};e.userName&&!isGenericUserName(e.userName)&&(r.user=e.userName);try{const e=await getConfiguredProvider();e&&(r.provider=e)}catch{}try{const e=getConfiguredModel();if(e){r.model=e;const t=findModelById(getCanonicalModelId(e))?.contextWindow;t&&(r.context_window=t)}}catch{}return r}async function statusAction(e){if(e.json){const e=Pr();let t;try{t=await checkAuthStatus(e)}catch(e){t={authenticated:!1,apiKey:null,error:e instanceof Error?e.message:"Unknown error"}}const n=await buildStatusJson(t),r=!n.authenticated||n.error?1:0;return void process.stdout.write(`${JSON.stringify(n)}\n`,()=>process.exit(r))}const t=We("Checking authentication status...").start();try{const e=Pr(),n=await checkAuthStatus(e);n.error&&(t.fail(Te.red(`Status check failed: ${n.error}`)),process.exit(1)),n.authenticated||(t.fail(Te.red("Not authenticated")),console.log(""),console.log(`${Te.dim("Run")} ${Te.cyan(`${getBinaryCommand()} auth login`)} ${Te.dim("to authenticate.")}`),console.log(""),process.exit(1));const r=isGenericUserName(n.userName)?"":` as ${Te.cyan(n.userName)}`;t.succeed("Authentication verified"),console.log(`${Te.green(He.tick)} ${Te.bold("Authenticated")}${r}`),console.log(` ${Te.dim("Provider:")} ${Te.cyan("Command Code")}`),n.fromEnv&&console.log(` ${Te.dim("Source:")} ${Te.cyan(`$${Es}`)} ${Te.dim("(env var)")}`),console.log(""),process.exit(0)}catch(e){t.fail(Te.red(`Status check failed: ${e instanceof Error?e.message:"Unknown error"}`)),process.exit(1)}}__name(getApiKeyFromEnv,"getApiKeyFromEnv"),__name(readAuthFile,"readAuthFile"),__name(getAuthKey,"getAuthKey"),__name(getPersistedAuth,"getPersistedAuth"),__name(getUserName,"getUserName"),__name(checkAuthStatus,"checkAuthStatus"),pn(),wn(),__name(isGenericUserName,"isGenericUserName"),__name(formatUserSuffix,"formatUserSuffix"),__name(formatColoredUserSuffix,"formatColoredUserSuffix"),__name(formatAlreadyLoggedIn,"formatAlreadyLoggedIn"),__name(getStartedLine,"getStartedLine"),__name(getLoginSuccessSuffix,"getLoginSuccessSuffix"),__name(formatLoginSuccessStyled,"formatLoginSuccessStyled"),__name(formatAlreadyLoggedInStyled,"formatAlreadyLoggedInStyled"),__name(formatLogoutSuccess,"formatLogoutSuccess"),__name(function formatNotAuthenticated(){return"Not currently authenticated"},"formatNotAuthenticated"),__name(formatLogoutFailed,"formatLogoutFailed"),__name(formatLogoutWarnings,"formatLogoutWarnings"),__name(function formatAuthCancelled(){return"Authentication cancelled"},"formatAuthCancelled"),Rn(),__name(detectConfigParseError,"detectConfigParseError"),__name(buildStatusJson,"buildStatusJson"),__name(statusAction,"statusAction");var bs=new Ue("status").description("Show authentication status").option("--json","Output status as JSON for automation").allowUnknownOption().allowExcessArguments().action(statusAction);pn(),Rn(),pn();var ks=class _APIError extends Error{static{__name(this,"APIError")}status;headers;error;code;param;type;request_id;constructor(e,t,n,r){super(_APIError.makeMessage(e,t,n)),this.status=e,this.headers=r,this.request_id=r?.["lb-request-id"];const o=t;this.error=o,this.code=o?.code,null!=o?.status&&(this.status=o.status)}static makeMessage(e,t,n){const r=t?.message?"string"==typeof t.message?t.message:JSON.stringify(t.message):t?JSON.stringify(t):n;return e&&r?`${e} ${r}`:e?`${e} status code (no body)`:r||"(no status code or body)"}static generate(e,t,n,r){if(!e)return new Cs({cause:t instanceof Error?t:void 0});const o=t?.error;switch(e){case 400:return new vs(e,o,n,r);case 401:return new Ts(e,o,n,r);case 403:return new xs(e,o,n,r);case 404:return new Ps(e,o,n,r);case 409:return new As(e,o,n,r);case 422:return new Is(e,o,n,r);case 429:return new Ms(e,o,n,r);default:return e>=500?new Rs(e,o,n,r):new _APIError(e,o,n,r)}}},Cs=class extends ks{static{__name(this,"APIConnectionError")}status=void 0;constructor({message:e,cause:t}){super(void 0,void 0,e||"Connection error.",void 0),t&&(this.cause=t)}},vs=class extends ks{static{__name(this,"BadRequestError")}status=400},Ts=class extends ks{static{__name(this,"AuthenticationError")}status=401},xs=class extends ks{static{__name(this,"PermissionDeniedError")}status=403},Ps=class extends ks{static{__name(this,"NotFoundError")}status=404},As=class extends ks{static{__name(this,"ConflictError")}status=409},Is=class extends ks{static{__name(this,"UnprocessableEntityError")}status=422},Ms=class extends ks{static{__name(this,"RateLimitError")}status=429},Rs=class extends ks{static{__name(this,"InternalServerError")}};pn(),pn();var _s=y.object({messageId:y.string().optional(),timestamp:y.string(),model:y.string().optional(),duration:y.number().optional(),usage:y.object({inputTokens:y.number(),outputTokens:y.number(),totalTokens:y.number(),cacheReadTokens:y.number().optional(),cacheWriteTokens:y.number().optional(),estimatedCost:y.number().optional()}).optional(),source:y.string().optional(),entrypoint:y.string().optional(),context:y.object({sessionId:y.string().optional(),threadId:y.string().optional(),userId:y.string().optional()}).optional(),highlight:y.boolean().optional(),isSummary:y.boolean().optional(),isAutomated:y.boolean().optional(),isMeta:y.boolean().optional(),hookContexts:y.record(y.string(),y.object({preToolUse:y.string().optional(),postToolUse:y.string().optional()})).optional()});function parseModelString(e){if(e.includes(":")){const t=e.indexOf(":");return{provider:e.slice(0,t),modelId:e.slice(t+1)}}return{provider:"anthropic",modelId:e}}y.object({message:y.any(),meta:_s}),y.object({sessionId:y.string().uuid("sessionId must be a UUID"),messages:y.array(y.any()).optional()}),y.object({secret:y.string(),url:y.string()}),y.object({sessionId:y.string().uuid("sessionId must be a UUID"),secret:y.string()}),y.object({sessionId:y.string(),secret:y.string(),key:y.string(),content:y.any()}),y.object({sessionId:y.string().uuid("sessionId must be a UUID"),secret:y.string(),message:y.any()}),y.object({shortId:y.string().regex(/^[a-f0-9]{8}$/,"Invalid shortId")}),y.object({info:y.any().optional(),messages:y.array(y.any())}),pn(),pn(),pn(),__name(parseModelString,"parseModelString"),pn(),y.object({to:y.union([y.email(),y.array(y.email())]),subject:y.string(),html:y.string().optional(),text:y.string().optional(),template:y.string().optional(),templateData:y.record(y.any(),y.any()).optional(),cc:y.array(y.email()).optional(),bcc:y.array(y.email()).optional(),replyTo:y.array(y.email()).optional(),tags:y.array(y.object({name:y.string(),value:y.string()})).optional()}),y.object({success:y.boolean(),messageId:y.string().optional(),error:y.string().optional()}),pn(),wn(),pn(),pn(),pn();var Ds=Symbol.for("drizzle:entityKind");function is(e,t){if(!e||"object"!=typeof e)return!1;if(e instanceof t)return!0;if(!Object.prototype.hasOwnProperty.call(t,Ds))throw new Error(`Class "${t.name??"<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`);let n=Object.getPrototypeOf(e).constructor;if(n)for(;n;){if(Ds in n&&n[Ds]===t[Ds])return!0;n=Object.getPrototypeOf(n)}return!1}__name(is,"is");var Ns=class{static{__name(this,"Column")}constructor(e,t){this.table=e,this.config=t,this.name=t.name,this.keyAsName=t.keyAsName,this.notNull=t.notNull,this.default=t.default,this.defaultFn=t.defaultFn,this.onUpdateFn=t.onUpdateFn,this.hasDefault=t.hasDefault,this.primary=t.primaryKey,this.isUnique=t.isUnique,this.uniqueName=t.uniqueName,this.uniqueType=t.uniqueType,this.dataType=t.dataType,this.columnType=t.columnType,this.generated=t.generated,this.generatedIdentity=t.generatedIdentity}static[Ds]="Column";name;keyAsName;primary;notNull;default;defaultFn;onUpdateFn;hasDefault;isUnique;uniqueName;uniqueType;dataType;columnType;enumValues=void 0;generated=void 0;generatedIdentity=void 0;config;mapFromDriverValue(e){return e}mapToDriverValue(e){return e}shouldDisableInsert(){return void 0!==this.config.generated&&"byDefault"!==this.config.generated.type}};pn(),pn(),pn(),pn();var $s=class{static{__name(this,"ColumnBuilder")}static[Ds]="ColumnBuilder";config;constructor(e,t,n){this.config={name:e,keyAsName:""===e,notNull:!1,default:void 0,hasDefault:!1,primaryKey:!1,isUnique:!1,uniqueName:void 0,uniqueType:void 0,dataType:t,columnType:n,generated:void 0}}$type(){return this}notNull(){return this.config.notNull=!0,this}default(e){return this.config.default=e,this.config.hasDefault=!0,this}$defaultFn(e){return this.config.defaultFn=e,this.config.hasDefault=!0,this}$default=this.$defaultFn;$onUpdateFn(e){return this.config.onUpdateFn=e,this.config.hasDefault=!0,this}$onUpdate=this.$onUpdateFn;primaryKey(){return this.config.primaryKey=!0,this.config.notNull=!0,this}setName(e){""===this.config.name&&(this.config.name=e)}};pn(),pn();var Ls=Symbol.for("drizzle:Name"),Os=class{static{__name(this,"ForeignKeyBuilder")}static[Ds]="PgForeignKeyBuilder";reference;_onUpdate="no action";_onDelete="no action";constructor(e,t){this.reference=()=>{const{name:t,columns:n,foreignColumns:r}=e();return{name:t,columns:n,foreignTable:r[0].table,foreignColumns:r}},t&&(this._onUpdate=t.onUpdate,this._onDelete=t.onDelete)}onUpdate(e){return this._onUpdate=void 0===e?"no action":e,this}onDelete(e){return this._onDelete=void 0===e?"no action":e,this}build(e){return new Fs(e,this)}},Fs=class{static{__name(this,"ForeignKey")}constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}static[Ds]="PgForeignKey";reference;onUpdate;onDelete;getName(){const{name:e,columns:t,foreignColumns:n}=this.reference(),r=t.map(e=>e.name),o=n.map(e=>e.name),s=[this.table[Ls],...r,n[0].table[Ls],...o];return e??`${s.join("_")}_fk`}};function iife(e,...t){return e(...t)}function unique(e){return new Bs(e)}function uniqueKeyName(e,t){return`${e[Ls]}_${t.join("_")}_unique`}pn(),__name(iife,"iife"),pn(),__name(unique,"unique"),__name(uniqueKeyName,"uniqueKeyName");var Us=class{static{__name(this,"UniqueConstraintBuilder")}constructor(e,t){this.name=t,this.columns=e}static[Ds]="PgUniqueConstraintBuilder";columns;nullsNotDistinctConfig=!1;nullsNotDistinct(){return this.nullsNotDistinctConfig=!0,this}build(e){return new js(e,this.columns,this.nullsNotDistinctConfig,this.name)}},Bs=class{static{__name(this,"UniqueOnConstraintBuilder")}static[Ds]="PgUniqueOnConstraintBuilder";name;constructor(e){this.name=e}on(...e){return new Us(e,this.name)}},js=class{static{__name(this,"UniqueConstraint")}constructor(e,t,n,r){this.table=e,this.columns=t,this.name=r??uniqueKeyName(this.table,this.columns.map(e=>e.name)),this.nullsNotDistinct=n}static[Ds]="PgUniqueConstraint";columns;name;nullsNotDistinct=!1;getName(){return this.name}};function parsePgArrayValue(e,t,n){for(let r=t;r<e.length;r++){const o=e[r];if("\\"!==o){if('"'===o)return[e.slice(t,r).replace(/\\/g,""),r+1];if(!n&&(","===o||"}"===o))return[e.slice(t,r).replace(/\\/g,""),r]}else r++}return[e.slice(t).replace(/\\/g,""),e.length]}function parsePgNestedArray(e,t=0){const n=[];let r=t,o=!1;for(;r<e.length;){const s=e[r];if(","===s){(o||r===t)&&n.push(""),o=!0,r++;continue}if(o=!1,"\\"===s){r+=2;continue}if('"'===s){const[t,o]=parsePgArrayValue(e,r+1,!0);n.push(t),r=o;continue}if("}"===s)return[n,r+1];if("{"===s){const[t,o]=parsePgNestedArray(e,r+1);n.push(t),r=o;continue}const[a,i]=parsePgArrayValue(e,r,!1);n.push(a),r=i}return[n,r]}function parsePgArray(e){const[t]=parsePgNestedArray(e,1);return t}function makePgArray(e){return`{${e.map(e=>Array.isArray(e)?makePgArray(e):"string"==typeof e?`"${e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}"`:`${e}`).join(",")}}`}pn(),__name(parsePgArrayValue,"parsePgArrayValue"),__name(parsePgNestedArray,"parsePgNestedArray"),__name(parsePgArray,"parsePgArray"),__name(makePgArray,"makePgArray");var Hs=class extends $s{static{__name(this,"PgColumnBuilder")}foreignKeyConfigs=[];static[Ds]="PgColumnBuilder";array(e){return new qs(this.config.name,this,e)}references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e,t){return this.config.isUnique=!0,this.config.uniqueName=e,this.config.uniqueType=t?.nulls,this}generatedAlwaysAs(e){return this.config.generated={as:e,type:"always",mode:"stored"},this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:n,actions:r})=>iife((n,r)=>{const o=new Os(()=>{const t=n();return{columns:[e],foreignColumns:[t]}});return r.onUpdate&&o.onUpdate(r.onUpdate),r.onDelete&&o.onDelete(r.onDelete),o.build(t)},n,r))}buildExtraConfigColumn(e){return new Gs(e,this.config)}},Ws=class extends Ns{static{__name(this,"PgColumn")}constructor(e,t){t.uniqueName||(t.uniqueName=uniqueKeyName(e,[t.name])),super(e,t),this.table=e}static[Ds]="PgColumn"},Gs=class extends Ws{static{__name(this,"ExtraConfigColumn")}static[Ds]="ExtraConfigColumn";getSQLType(){return this.getSQLType()}indexConfig={order:this.config.order??"asc",nulls:this.config.nulls??"last",opClass:this.config.opClass};defaultConfig={order:"asc",nulls:"last",opClass:void 0};asc(){return this.indexConfig.order="asc",this}desc(){return this.indexConfig.order="desc",this}nullsFirst(){return this.indexConfig.nulls="first",this}nullsLast(){return this.indexConfig.nulls="last",this}op(e){return this.indexConfig.opClass=e,this}},zs=class{static{__name(this,"IndexedColumn")}static[Ds]="IndexedColumn";constructor(e,t,n,r){this.name=e,this.keyAsName=t,this.type=n,this.indexConfig=r}name;keyAsName;type;indexConfig},qs=class extends Hs{static{__name(this,"PgArrayBuilder")}static[Ds]="PgArrayBuilder";constructor(e,t,n){super(e,"array","PgArray"),this.config.baseBuilder=t,this.config.size=n}build(e){const t=this.config.baseBuilder.build(e);return new Vs(e,this.config,t)}},Vs=class _PgArray extends Ws{static{__name(this,"PgArray")}constructor(e,t,n,r){super(e,t),this.baseColumn=n,this.range=r,this.size=t.size}size;static[Ds]="PgArray";getSQLType(){return`${this.baseColumn.getSQLType()}[${"number"==typeof this.size?this.size:""}]`}mapFromDriverValue(e){return"string"==typeof e&&(e=parsePgArray(e)),e.map(e=>this.baseColumn.mapFromDriverValue(e))}mapToDriverValue(e,t=!1){const n=e.map(e=>null===e?null:is(this.baseColumn,_PgArray)?this.baseColumn.mapToDriverValue(e,!0):this.baseColumn.mapToDriverValue(e));return t?n:makePgArray(n)}},Ks=class extends Hs{static{__name(this,"PgEnumObjectColumnBuilder")}static[Ds]="PgEnumObjectColumnBuilder";constructor(e,t){super(e,"string","PgEnumObjectColumn"),this.config.enum=t}build(e){return new Ys(e,this.config)}},Ys=class extends Ws{static{__name(this,"PgEnumObjectColumn")}static[Ds]="PgEnumObjectColumn";enum;enumValues=this.config.enum.enumValues;constructor(e,t){super(e,t),this.enum=t.enum}getSQLType(){return this.enum.enumName}},Qs=Symbol.for("drizzle:isPgEnum");function isPgEnum(e){return!!e&&"function"==typeof e&&Qs in e&&!0===e[Qs]}__name(isPgEnum,"isPgEnum");var Js=class extends Hs{static{__name(this,"PgEnumColumnBuilder")}static[Ds]="PgEnumColumnBuilder";constructor(e,t){super(e,"string","PgEnumColumn"),this.config.enum=t}build(e){return new Xs(e,this.config)}},Xs=class extends Ws{static{__name(this,"PgEnumColumn")}static[Ds]="PgEnumColumn";enum=this.config.enum;enumValues=this.config.enum.enumValues;constructor(e,t){super(e,t),this.enum=t.enum}getSQLType(){return this.enum.enumName}};function pgEnum(e,t){return Array.isArray(t)?pgEnumWithSchema(e,[...t],void 0):pgEnumObjectWithSchema(e,t,void 0)}function pgEnumWithSchema(e,t,n){const r=Object.assign(e=>new Js(e??"",r),{enumName:e,enumValues:t,schema:n,[Qs]:!0});return r}function pgEnumObjectWithSchema(e,t,n){const r=Object.assign(e=>new Ks(e??"",r),{enumName:e,enumValues:Object.values(t),schema:n,[Qs]:!0});return r}__name(pgEnum,"pgEnum"),__name(pgEnumWithSchema,"pgEnumWithSchema"),__name(pgEnumObjectWithSchema,"pgEnumObjectWithSchema"),pn();var Zs=class{static{__name(this,"Subquery")}static[Ds]="Subquery";constructor(e,t,n,r=!1,o=[]){this._={brand:"Subquery",sql:e,selectedFields:t,alias:n,isWith:r,usedTables:o}}};(class extends Zs{static{__name(this,"WithSubquery")}static[Ds]="WithSubquery"}),pn(),pn();var tracer_startActiveSpan=(e,t)=>t();pn();var ea=Symbol.for("drizzle:ViewBaseConfig");pn();var ta=Symbol.for("drizzle:Schema"),na=Symbol.for("drizzle:Columns"),ra=Symbol.for("drizzle:ExtraConfigColumns"),oa=Symbol.for("drizzle:OriginalName"),sa=Symbol.for("drizzle:BaseName"),aa=Symbol.for("drizzle:IsAlias"),ia=Symbol.for("drizzle:ExtraConfigBuilder"),la=Symbol.for("drizzle:IsDrizzleTable"),ca=class{static{__name(this,"Table")}static[Ds]="Table";static Symbol={Name:Ls,Schema:ta,OriginalName:oa,Columns:na,ExtraConfigColumns:ra,BaseName:sa,IsAlias:aa,ExtraConfigBuilder:ia};[Ls];[oa];[ta];[na];[ra];[sa];[aa]=!1;[la]=!0;[ia]=void 0;constructor(e,t,n){this[Ls]=this[oa]=e,this[ta]=t,this[sa]=n}};function isSQLWrapper(e){return null!=e&&"function"==typeof e.getSQL}function mergeQueries(e){const t={sql:"",params:[]};for(const n of e)t.sql+=n.sql,t.params.push(...n.params),n.typings?.length&&(t.typings||(t.typings=[]),t.typings.push(...n.typings));return t}(class{static{__name(this,"FakePrimitiveParam")}static[Ds]="FakePrimitiveParam"}),__name(isSQLWrapper,"isSQLWrapper"),__name(mergeQueries,"mergeQueries");var ua=class{static{__name(this,"StringChunk")}static[Ds]="StringChunk";value;constructor(e){this.value=Array.isArray(e)?e:[e]}getSQL(){return new da([this])}},da=class _SQL{static{__name(this,"SQL")}constructor(e){this.queryChunks=e;for(const t of e)if(is(t,ca)){const e=t[ca.Symbol.Schema];this.usedTables.push(void 0===e?t[ca.Symbol.Name]:e+"."+t[ca.Symbol.Name])}}static[Ds]="SQL";decoder=pa;shouldInlineParams=!1;usedTables=[];append(e){return this.queryChunks.push(...e.queryChunks),this}toQuery(e){return tracer_startActiveSpan("drizzle.buildSQL",t=>{const n=this.buildQueryFromSourceParams(this.queryChunks,e);return t?.setAttributes({"drizzle.query.text":n.sql,"drizzle.query.params":JSON.stringify(n.params)}),n})}buildQueryFromSourceParams(e,t){const n=Object.assign({},t,{inlineParams:t.inlineParams||this.shouldInlineParams,paramStartIndex:t.paramStartIndex||{value:0}}),{casing:r,escapeName:o,escapeParam:s,prepareTyping:a,inlineParams:i,paramStartIndex:l}=n;return mergeQueries(e.map(e=>{if(is(e,ua))return{sql:e.value.join(""),params:[]};if(is(e,ma))return{sql:o(e.value),params:[]};if(void 0===e)return{sql:"",params:[]};if(Array.isArray(e)){const t=[new ua("(")];for(const[n,r]of e.entries())t.push(r),n<e.length-1&&t.push(new ua(", "));return t.push(new ua(")")),this.buildQueryFromSourceParams(t,n)}if(is(e,_SQL))return this.buildQueryFromSourceParams(e.queryChunks,{...n,inlineParams:i||e.shouldInlineParams});if(is(e,ca)){const t=e[ca.Symbol.Schema],n=e[ca.Symbol.Name];return{sql:void 0===t||e[aa]?o(n):o(t)+"."+o(n),params:[]}}if(is(e,Ns)){const n=r.getColumnCasing(e);if("indexes"===t.invokeSource)return{sql:o(n),params:[]};const s=e.table[ca.Symbol.Schema];return{sql:e.table[aa]||void 0===s?o(e.table[ca.Symbol.Name])+"."+o(n):o(s)+"."+o(e.table[ca.Symbol.Name])+"."+o(n),params:[]}}if(is(e,wa)){const t=e[ea].schema,n=e[ea].name;return{sql:void 0===t||e[ea].isAlias?o(n):o(t)+"."+o(n),params:[]}}if(is(e,ha)){if(is(e.value,fa))return{sql:s(l.value++,e),params:[e],typings:["none"]};const t=null===e.value?null:e.encoder.mapToDriverValue(e.value);if(is(t,_SQL))return this.buildQueryFromSourceParams([t],n);if(i)return{sql:this.mapInlineParam(t,n),params:[]};let r=["none"];return a&&(r=[a(e.encoder)]),{sql:s(l.value++,t),params:[t],typings:r}}return is(e,fa)?{sql:s(l.value++,e),params:[e],typings:["none"]}:is(e,_SQL.Aliased)&&void 0!==e.fieldAlias?{sql:o(e.fieldAlias),params:[]}:is(e,Zs)?e._.isWith?{sql:o(e._.alias),params:[]}:this.buildQueryFromSourceParams([new ua("("),e._.sql,new ua(") "),new ma(e._.alias)],n):isPgEnum(e)?e.schema?{sql:o(e.schema)+"."+o(e.enumName),params:[]}:{sql:o(e.enumName),params:[]}:isSQLWrapper(e)?e.shouldOmitSQLParens?.()?this.buildQueryFromSourceParams([e.getSQL()],n):this.buildQueryFromSourceParams([new ua("("),e.getSQL(),new ua(")")],n):i?{sql:this.mapInlineParam(e,n),params:[]}:{sql:s(l.value++,e),params:[e],typings:["none"]}}))}mapInlineParam(e,{escapeString:t}){if(null===e)return"null";if("number"==typeof e||"boolean"==typeof e)return e.toString();if("string"==typeof e)return t(e);if("object"==typeof e){const n=e.toString();return t("[object Object]"===n?JSON.stringify(e):n)}throw new Error("Unexpected param value: "+e)}getSQL(){return this}as(e){return void 0===e?this:new _SQL.Aliased(this,e)}mapWith(e){return this.decoder="function"==typeof e?{mapFromDriverValue:e}:e,this}inlineParams(){return this.shouldInlineParams=!0,this}if(e){return e?this:void 0}},ma=class{static{__name(this,"Name")}constructor(e){this.value=e}static[Ds]="Name";brand;getSQL(){return new da([this])}},pa={mapFromDriverValue:__name(e=>e,"mapFromDriverValue")},ga={mapToDriverValue:__name(e=>e,"mapToDriverValue")},ha=class{static{__name(this,"Param")}constructor(e,t=ga){this.value=e,this.encoder=t}static[Ds]="Param";brand;getSQL(){return new da([this])}};function sql(e,...t){const n=[];(t.length>0||e.length>0&&""!==e[0])&&n.push(new ua(e[0]));for(const[r,o]of t.entries())n.push(o,new ua(e[r+1]));return new da(n)}__name(sql,"sql"),(e=>{function empty(){return new da([])}function fromList(e){return new da(e)}function raw(e){return new da([new ua(e)])}function join31(e,t){const n=[];for(const[r,o]of e.entries())r>0&&void 0!==t&&n.push(t),n.push(o);return new da(n)}function identifier(e){return new ma(e)}function placeholder2(e){return new fa(e)}function param2(e,t){return new ha(e,t)}__name(empty,"empty"),e.empty=empty,__name(fromList,"fromList"),e.fromList=fromList,__name(raw,"raw"),e.raw=raw,__name(join31,"join"),e.join=join31,__name(identifier,"identifier"),e.identifier=identifier,__name(placeholder2,"placeholder2"),e.placeholder=placeholder2,__name(param2,"param2"),e.param=param2})(sql||(sql={})),(e=>{class Aliased{static{__name(this,"Aliased")}constructor(e,t){this.sql=e,this.fieldAlias=t}static[Ds]="SQL.Aliased";isSelectionField=!1;getSQL(){return this.sql}clone(){return new Aliased(this.sql,this.fieldAlias)}}e.Aliased=Aliased})(da||(da={}));var fa=class{static{__name(this,"Placeholder")}constructor(e){this.name=e}static[Ds]="Placeholder";getSQL(){return new da([this])}},ya=Symbol.for("drizzle:IsDrizzleView"),wa=class{static{__name(this,"View")}static[Ds]="View";[ea];[ya]=!0;constructor({name:e,schema:t,selectedFields:n,query:r}){this[ea]={name:e,originalName:e,schema:t,selectedFields:n,query:r,isExisting:!r,isAlias:!1}}getSQL(){return new da([this])}};Ns.prototype.getSQL=function(){return new da([this])},ca.prototype.getSQL=function(){return new da([this])},Zs.prototype.getSQL=function(){return new da([this])},pn();var Sa=class{static{__name(this,"CheckBuilder")}constructor(e,t){this.name=e,this.value=t}static[Ds]="PgCheckBuilder";brand;build(e){return new Ea(e,this)}},Ea=class{static{__name(this,"Check")}constructor(e,t){this.table=e,this.name=t.name,this.value=t.value}static[Ds]="PgCheck";name;value};function check(e,t){return new Sa(e,t)}function getTableColumns(e){return e[ca.Symbol.Columns]}function getColumnNameAndConfig(e,t){return{name:"string"==typeof e&&e.length>0?e:"",config:"object"==typeof e?e:t}}__name(check,"check"),pn(),pn(),__name(getTableColumns,"getTableColumns"),__name(getColumnNameAndConfig,"getColumnNameAndConfig"),"undefined"!=typeof TextDecoder&&new TextDecoder,pn();var ba=class extends Hs{static{__name(this,"PgIntColumnBaseBuilder")}static[Ds]="PgIntColumnBaseBuilder";generatedAlwaysAsIdentity(e){if(e){const{name:t,...n}=e;this.config.generatedIdentity={type:"always",sequenceName:t,sequenceOptions:n}}else this.config.generatedIdentity={type:"always"};return this.config.hasDefault=!0,this.config.notNull=!0,this}generatedByDefaultAsIdentity(e){if(e){const{name:t,...n}=e;this.config.generatedIdentity={type:"byDefault",sequenceName:t,sequenceOptions:n}}else this.config.generatedIdentity={type:"byDefault"};return this.config.hasDefault=!0,this.config.notNull=!0,this}},ka=class extends ba{static{__name(this,"PgBigInt53Builder")}static[Ds]="PgBigInt53Builder";constructor(e){super(e,"number","PgBigInt53")}build(e){return new Ca(e,this.config)}},Ca=class extends Ws{static{__name(this,"PgBigInt53")}static[Ds]="PgBigInt53";getSQLType(){return"bigint"}mapFromDriverValue(e){return"number"==typeof e?e:Number(e)}},va=class extends ba{static{__name(this,"PgBigInt64Builder")}static[Ds]="PgBigInt64Builder";constructor(e){super(e,"bigint","PgBigInt64")}build(e){return new Ta(e,this.config)}},Ta=class extends Ws{static{__name(this,"PgBigInt64")}static[Ds]="PgBigInt64";getSQLType(){return"bigint"}mapFromDriverValue(e){return BigInt(e)}};function bigint(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return"number"===r.mode?new ka(n):new va(n)}__name(bigint,"bigint"),pn();var xa=class extends Hs{static{__name(this,"PgBigSerial53Builder")}static[Ds]="PgBigSerial53Builder";constructor(e){super(e,"number","PgBigSerial53"),this.config.hasDefault=!0,this.config.notNull=!0}build(e){return new Pa(e,this.config)}},Pa=class extends Ws{static{__name(this,"PgBigSerial53")}static[Ds]="PgBigSerial53";getSQLType(){return"bigserial"}mapFromDriverValue(e){return"number"==typeof e?e:Number(e)}},Aa=class extends Hs{static{__name(this,"PgBigSerial64Builder")}static[Ds]="PgBigSerial64Builder";constructor(e){super(e,"bigint","PgBigSerial64"),this.config.hasDefault=!0}build(e){return new Ia(e,this.config)}},Ia=class extends Ws{static{__name(this,"PgBigSerial64")}static[Ds]="PgBigSerial64";getSQLType(){return"bigserial"}mapFromDriverValue(e){return BigInt(e)}};function bigserial(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return"number"===r.mode?new xa(n):new Aa(n)}__name(bigserial,"bigserial"),pn();var Ma=class extends Hs{static{__name(this,"PgBooleanBuilder")}static[Ds]="PgBooleanBuilder";constructor(e){super(e,"boolean","PgBoolean")}build(e){return new Ra(e,this.config)}},Ra=class extends Ws{static{__name(this,"PgBoolean")}static[Ds]="PgBoolean";getSQLType(){return"boolean"}};function boolean(e){return new Ma(e??"")}__name(boolean,"boolean"),pn();var _a=class extends Hs{static{__name(this,"PgCharBuilder")}static[Ds]="PgCharBuilder";constructor(e,t){super(e,"string","PgChar"),this.config.length=t.length,this.config.enumValues=t.enum}build(e){return new Da(e,this.config)}},Da=class extends Ws{static{__name(this,"PgChar")}static[Ds]="PgChar";length=this.config.length;enumValues=this.config.enumValues;getSQLType(){return void 0===this.length?"char":`char(${this.length})`}};function char(e,t={}){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new _a(n,r)}__name(char,"char"),pn();var Na=class extends Hs{static{__name(this,"PgCidrBuilder")}static[Ds]="PgCidrBuilder";constructor(e){super(e,"string","PgCidr")}build(e){return new $a(e,this.config)}},$a=class extends Ws{static{__name(this,"PgCidr")}static[Ds]="PgCidr";getSQLType(){return"cidr"}};function cidr(e){return new Na(e??"")}__name(cidr,"cidr"),pn();var La=class extends Hs{static{__name(this,"PgCustomColumnBuilder")}static[Ds]="PgCustomColumnBuilder";constructor(e,t,n){super(e,"custom","PgCustomColumn"),this.config.fieldConfig=t,this.config.customTypeParams=n}build(e){return new Oa(e,this.config)}},Oa=class extends Ws{static{__name(this,"PgCustomColumn")}static[Ds]="PgCustomColumn";sqlName;mapTo;mapFrom;constructor(e,t){super(e,t),this.sqlName=t.customTypeParams.dataType(t.fieldConfig),this.mapTo=t.customTypeParams.toDriver,this.mapFrom=t.customTypeParams.fromDriver}getSQLType(){return this.sqlName}mapFromDriverValue(e){return"function"==typeof this.mapFrom?this.mapFrom(e):e}mapToDriverValue(e){return"function"==typeof this.mapTo?this.mapTo(e):e}};function customType(e){return(t,n)=>{const{name:r,config:o}=getColumnNameAndConfig(t,n);return new La(r,o,e)}}__name(customType,"customType"),pn(),pn();var Fa=class extends Hs{static{__name(this,"PgDateColumnBaseBuilder")}static[Ds]="PgDateColumnBaseBuilder";defaultNow(){return this.default(sql`now()`)}},Ua=class extends Fa{static{__name(this,"PgDateBuilder")}static[Ds]="PgDateBuilder";constructor(e){super(e,"date","PgDate")}build(e){return new Ba(e,this.config)}},Ba=class extends Ws{static{__name(this,"PgDate")}static[Ds]="PgDate";getSQLType(){return"date"}mapFromDriverValue(e){return"string"==typeof e?new Date(e):e}mapToDriverValue(e){return e.toISOString()}},ja=class extends Fa{static{__name(this,"PgDateStringBuilder")}static[Ds]="PgDateStringBuilder";constructor(e){super(e,"string","PgDateString")}build(e){return new Ha(e,this.config)}},Ha=class extends Ws{static{__name(this,"PgDateString")}static[Ds]="PgDateString";getSQLType(){return"date"}mapFromDriverValue(e){return"string"==typeof e?e:e.toISOString().slice(0,-14)}};function date(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return"date"===r?.mode?new Ua(n):new ja(n)}__name(date,"date"),pn();var Wa=class extends Hs{static{__name(this,"PgDoublePrecisionBuilder")}static[Ds]="PgDoublePrecisionBuilder";constructor(e){super(e,"number","PgDoublePrecision")}build(e){return new Ga(e,this.config)}},Ga=class extends Ws{static{__name(this,"PgDoublePrecision")}static[Ds]="PgDoublePrecision";getSQLType(){return"double precision"}mapFromDriverValue(e){return"string"==typeof e?Number.parseFloat(e):e}};function doublePrecision(e){return new Wa(e??"")}__name(doublePrecision,"doublePrecision"),pn();var za=class extends Hs{static{__name(this,"PgInetBuilder")}static[Ds]="PgInetBuilder";constructor(e){super(e,"string","PgInet")}build(e){return new qa(e,this.config)}},qa=class extends Ws{static{__name(this,"PgInet")}static[Ds]="PgInet";getSQLType(){return"inet"}};function inet(e){return new za(e??"")}__name(inet,"inet"),pn();var Va=class extends ba{static{__name(this,"PgIntegerBuilder")}static[Ds]="PgIntegerBuilder";constructor(e){super(e,"number","PgInteger")}build(e){return new Ka(e,this.config)}},Ka=class extends Ws{static{__name(this,"PgInteger")}static[Ds]="PgInteger";getSQLType(){return"integer"}mapFromDriverValue(e){return"string"==typeof e?Number.parseInt(e):e}};function integer(e){return new Va(e??"")}__name(integer,"integer"),pn();var Ya=class extends Hs{static{__name(this,"PgIntervalBuilder")}static[Ds]="PgIntervalBuilder";constructor(e,t){super(e,"string","PgInterval"),this.config.intervalConfig=t}build(e){return new Qa(e,this.config)}},Qa=class extends Ws{static{__name(this,"PgInterval")}static[Ds]="PgInterval";fields=this.config.intervalConfig.fields;precision=this.config.intervalConfig.precision;getSQLType(){return`interval${this.fields?` ${this.fields}`:""}${this.precision?`(${this.precision})`:""}`}};function interval(e,t={}){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new Ya(n,r)}__name(interval,"interval"),pn();var Ja=class extends Hs{static{__name(this,"PgJsonBuilder")}static[Ds]="PgJsonBuilder";constructor(e){super(e,"json","PgJson")}build(e){return new Xa(e,this.config)}},Xa=class extends Ws{static{__name(this,"PgJson")}static[Ds]="PgJson";constructor(e,t){super(e,t)}getSQLType(){return"json"}mapToDriverValue(e){return JSON.stringify(e)}mapFromDriverValue(e){if("string"==typeof e)try{return JSON.parse(e)}catch{return e}return e}};function json(e){return new Ja(e??"")}__name(json,"json"),pn();var Za=class extends Hs{static{__name(this,"PgJsonbBuilder")}static[Ds]="PgJsonbBuilder";constructor(e){super(e,"json","PgJsonb")}build(e){return new ei(e,this.config)}},ei=class extends Ws{static{__name(this,"PgJsonb")}static[Ds]="PgJsonb";constructor(e,t){super(e,t)}getSQLType(){return"jsonb"}mapToDriverValue(e){return JSON.stringify(e)}mapFromDriverValue(e){if("string"==typeof e)try{return JSON.parse(e)}catch{return e}return e}};function jsonb(e){return new Za(e??"")}__name(jsonb,"jsonb"),pn();var ti=class extends Hs{static{__name(this,"PgLineBuilder")}static[Ds]="PgLineBuilder";constructor(e){super(e,"array","PgLine")}build(e){return new ni(e,this.config)}},ni=class extends Ws{static{__name(this,"PgLineTuple")}static[Ds]="PgLine";getSQLType(){return"line"}mapFromDriverValue(e){const[t,n,r]=e.slice(1,-1).split(",");return[Number.parseFloat(t),Number.parseFloat(n),Number.parseFloat(r)]}mapToDriverValue(e){return`{${e[0]},${e[1]},${e[2]}}`}},ri=class extends Hs{static{__name(this,"PgLineABCBuilder")}static[Ds]="PgLineABCBuilder";constructor(e){super(e,"json","PgLineABC")}build(e){return new oi(e,this.config)}},oi=class extends Ws{static{__name(this,"PgLineABC")}static[Ds]="PgLineABC";getSQLType(){return"line"}mapFromDriverValue(e){const[t,n,r]=e.slice(1,-1).split(",");return{a:Number.parseFloat(t),b:Number.parseFloat(n),c:Number.parseFloat(r)}}mapToDriverValue(e){return`{${e.a},${e.b},${e.c}}`}};function line(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return r?.mode&&"tuple"!==r.mode?new ri(n):new ti(n)}__name(line,"line"),pn();var si=class extends Hs{static{__name(this,"PgMacaddrBuilder")}static[Ds]="PgMacaddrBuilder";constructor(e){super(e,"string","PgMacaddr")}build(e){return new ai(e,this.config)}},ai=class extends Ws{static{__name(this,"PgMacaddr")}static[Ds]="PgMacaddr";getSQLType(){return"macaddr"}};function macaddr(e){return new si(e??"")}__name(macaddr,"macaddr"),pn();var ii=class extends Hs{static{__name(this,"PgMacaddr8Builder")}static[Ds]="PgMacaddr8Builder";constructor(e){super(e,"string","PgMacaddr8")}build(e){return new li(e,this.config)}},li=class extends Ws{static{__name(this,"PgMacaddr8")}static[Ds]="PgMacaddr8";getSQLType(){return"macaddr8"}};function macaddr8(e){return new ii(e??"")}__name(macaddr8,"macaddr8"),pn();var ci=class extends Hs{static{__name(this,"PgNumericBuilder")}static[Ds]="PgNumericBuilder";constructor(e,t,n){super(e,"string","PgNumeric"),this.config.precision=t,this.config.scale=n}build(e){return new ui(e,this.config)}},ui=class extends Ws{static{__name(this,"PgNumeric")}static[Ds]="PgNumeric";precision;scale;constructor(e,t){super(e,t),this.precision=t.precision,this.scale=t.scale}mapFromDriverValue(e){return"string"==typeof e?e:String(e)}getSQLType(){return void 0!==this.precision&&void 0!==this.scale?`numeric(${this.precision}, ${this.scale})`:void 0===this.precision?"numeric":`numeric(${this.precision})`}},di=class extends Hs{static{__name(this,"PgNumericNumberBuilder")}static[Ds]="PgNumericNumberBuilder";constructor(e,t,n){super(e,"number","PgNumericNumber"),this.config.precision=t,this.config.scale=n}build(e){return new mi(e,this.config)}},mi=class extends Ws{static{__name(this,"PgNumericNumber")}static[Ds]="PgNumericNumber";precision;scale;constructor(e,t){super(e,t),this.precision=t.precision,this.scale=t.scale}mapFromDriverValue(e){return"number"==typeof e?e:Number(e)}mapToDriverValue=String;getSQLType(){return void 0!==this.precision&&void 0!==this.scale?`numeric(${this.precision}, ${this.scale})`:void 0===this.precision?"numeric":`numeric(${this.precision})`}},pi=class extends Hs{static{__name(this,"PgNumericBigIntBuilder")}static[Ds]="PgNumericBigIntBuilder";constructor(e,t,n){super(e,"bigint","PgNumericBigInt"),this.config.precision=t,this.config.scale=n}build(e){return new gi(e,this.config)}},gi=class extends Ws{static{__name(this,"PgNumericBigInt")}static[Ds]="PgNumericBigInt";precision;scale;constructor(e,t){super(e,t),this.precision=t.precision,this.scale=t.scale}mapFromDriverValue=BigInt;mapToDriverValue=String;getSQLType(){return void 0!==this.precision&&void 0!==this.scale?`numeric(${this.precision}, ${this.scale})`:void 0===this.precision?"numeric":`numeric(${this.precision})`}};function numeric(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t),o=r?.mode;return"number"===o?new di(n,r?.precision,r?.scale):"bigint"===o?new pi(n,r?.precision,r?.scale):new ci(n,r?.precision,r?.scale)}__name(numeric,"numeric"),pn();var hi=class extends Hs{static{__name(this,"PgPointTupleBuilder")}static[Ds]="PgPointTupleBuilder";constructor(e){super(e,"array","PgPointTuple")}build(e){return new fi(e,this.config)}},fi=class extends Ws{static{__name(this,"PgPointTuple")}static[Ds]="PgPointTuple";getSQLType(){return"point"}mapFromDriverValue(e){if("string"==typeof e){const[t,n]=e.slice(1,-1).split(",");return[Number.parseFloat(t),Number.parseFloat(n)]}return[e.x,e.y]}mapToDriverValue(e){return`(${e[0]},${e[1]})`}},yi=class extends Hs{static{__name(this,"PgPointObjectBuilder")}static[Ds]="PgPointObjectBuilder";constructor(e){super(e,"json","PgPointObject")}build(e){return new wi(e,this.config)}},wi=class extends Ws{static{__name(this,"PgPointObject")}static[Ds]="PgPointObject";getSQLType(){return"point"}mapFromDriverValue(e){if("string"==typeof e){const[t,n]=e.slice(1,-1).split(",");return{x:Number.parseFloat(t),y:Number.parseFloat(n)}}return e}mapToDriverValue(e){return`(${e.x},${e.y})`}};function point(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return r?.mode&&"tuple"!==r.mode?new yi(n):new hi(n)}function hexToBytes(e){const t=[];for(let n=0;n<e.length;n+=2)t.push(Number.parseInt(e.slice(n,n+2),16));return new Uint8Array(t)}function bytesToFloat64(e,t){const n=new ArrayBuffer(8),r=new DataView(n);for(let n=0;n<8;n++)r.setUint8(n,e[t+n]);return r.getFloat64(0,!0)}function parseEWKB(e){const t=hexToBytes(e);let n=0;const r=t[n];n+=1;const o=new DataView(t.buffer),s=o.getUint32(n,1===r);if(n+=4,536870912&s&&(o.getUint32(n,1===r),n+=4),1==(65535&s)){const e=bytesToFloat64(t,n);n+=8;const r=bytesToFloat64(t,n);return n+=8,[e,r]}throw new Error("Unsupported geometry type")}__name(point,"point"),pn(),pn(),__name(hexToBytes,"hexToBytes"),__name(bytesToFloat64,"bytesToFloat64"),__name(parseEWKB,"parseEWKB");var Si=class extends Hs{static{__name(this,"PgGeometryBuilder")}static[Ds]="PgGeometryBuilder";constructor(e){super(e,"array","PgGeometry")}build(e){return new Ei(e,this.config)}},Ei=class extends Ws{static{__name(this,"PgGeometry")}static[Ds]="PgGeometry";getSQLType(){return"geometry(point)"}mapFromDriverValue(e){return parseEWKB(e)}mapToDriverValue(e){return`point(${e[0]} ${e[1]})`}},bi=class extends Hs{static{__name(this,"PgGeometryObjectBuilder")}static[Ds]="PgGeometryObjectBuilder";constructor(e){super(e,"json","PgGeometryObject")}build(e){return new ki(e,this.config)}},ki=class extends Ws{static{__name(this,"PgGeometryObject")}static[Ds]="PgGeometryObject";getSQLType(){return"geometry(point)"}mapFromDriverValue(e){const t=parseEWKB(e);return{x:t[0],y:t[1]}}mapToDriverValue(e){return`point(${e.x} ${e.y})`}};function geometry(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return r?.mode&&"tuple"!==r.mode?new bi(n):new Si(n)}__name(geometry,"geometry"),pn();var Ci=class extends Hs{static{__name(this,"PgRealBuilder")}static[Ds]="PgRealBuilder";constructor(e,t){super(e,"number","PgReal"),this.config.length=t}build(e){return new vi(e,this.config)}},vi=class extends Ws{static{__name(this,"PgReal")}static[Ds]="PgReal";constructor(e,t){super(e,t)}getSQLType(){return"real"}mapFromDriverValue=__name(e=>"string"==typeof e?Number.parseFloat(e):e,"mapFromDriverValue")};function real(e){return new Ci(e??"")}__name(real,"real"),pn();var Ti=class extends Hs{static{__name(this,"PgSerialBuilder")}static[Ds]="PgSerialBuilder";constructor(e){super(e,"number","PgSerial"),this.config.hasDefault=!0,this.config.notNull=!0}build(e){return new xi(e,this.config)}},xi=class extends Ws{static{__name(this,"PgSerial")}static[Ds]="PgSerial";getSQLType(){return"serial"}};function serial(e){return new Ti(e??"")}__name(serial,"serial"),pn();var Pi=class extends ba{static{__name(this,"PgSmallIntBuilder")}static[Ds]="PgSmallIntBuilder";constructor(e){super(e,"number","PgSmallInt")}build(e){return new Ai(e,this.config)}},Ai=class extends Ws{static{__name(this,"PgSmallInt")}static[Ds]="PgSmallInt";getSQLType(){return"smallint"}mapFromDriverValue=__name(e=>"string"==typeof e?Number(e):e,"mapFromDriverValue")};function smallint(e){return new Pi(e??"")}__name(smallint,"smallint"),pn();var Ii=class extends Hs{static{__name(this,"PgSmallSerialBuilder")}static[Ds]="PgSmallSerialBuilder";constructor(e){super(e,"number","PgSmallSerial"),this.config.hasDefault=!0,this.config.notNull=!0}build(e){return new Mi(e,this.config)}},Mi=class extends Ws{static{__name(this,"PgSmallSerial")}static[Ds]="PgSmallSerial";getSQLType(){return"smallserial"}};function smallserial(e){return new Ii(e??"")}__name(smallserial,"smallserial"),pn();var Ri=class extends Hs{static{__name(this,"PgTextBuilder")}static[Ds]="PgTextBuilder";constructor(e,t){super(e,"string","PgText"),this.config.enumValues=t.enum}build(e){return new _i(e,this.config)}},_i=class extends Ws{static{__name(this,"PgText")}static[Ds]="PgText";enumValues=this.config.enumValues;getSQLType(){return"text"}};function text(e,t={}){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new Ri(n,r)}__name(text,"text"),pn();var Di=class extends Fa{static{__name(this,"PgTimeBuilder")}constructor(e,t,n){super(e,"string","PgTime"),this.withTimezone=t,this.precision=n,this.config.withTimezone=t,this.config.precision=n}static[Ds]="PgTimeBuilder";build(e){return new Ni(e,this.config)}},Ni=class extends Ws{static{__name(this,"PgTime")}static[Ds]="PgTime";withTimezone;precision;constructor(e,t){super(e,t),this.withTimezone=t.withTimezone,this.precision=t.precision}getSQLType(){return`time${void 0===this.precision?"":`(${this.precision})`}${this.withTimezone?" with time zone":""}`}};function time(e,t={}){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new Di(n,r.withTimezone??!1,r.precision)}__name(time,"time"),pn();var $i=class extends Fa{static{__name(this,"PgTimestampBuilder")}static[Ds]="PgTimestampBuilder";constructor(e,t,n){super(e,"date","PgTimestamp"),this.config.withTimezone=t,this.config.precision=n}build(e){return new Li(e,this.config)}},Li=class extends Ws{static{__name(this,"PgTimestamp")}static[Ds]="PgTimestamp";withTimezone;precision;constructor(e,t){super(e,t),this.withTimezone=t.withTimezone,this.precision=t.precision}getSQLType(){return`timestamp${void 0===this.precision?"":` (${this.precision})`}${this.withTimezone?" with time zone":""}`}mapFromDriverValue(e){return"string"==typeof e?new Date(this.withTimezone?e:e+"+0000"):e}mapToDriverValue=__name(e=>e.toISOString(),"mapToDriverValue")},Oi=class extends Fa{static{__name(this,"PgTimestampStringBuilder")}static[Ds]="PgTimestampStringBuilder";constructor(e,t,n){super(e,"string","PgTimestampString"),this.config.withTimezone=t,this.config.precision=n}build(e){return new Fi(e,this.config)}},Fi=class extends Ws{static{__name(this,"PgTimestampString")}static[Ds]="PgTimestampString";withTimezone;precision;constructor(e,t){super(e,t),this.withTimezone=t.withTimezone,this.precision=t.precision}getSQLType(){return`timestamp${void 0===this.precision?"":`(${this.precision})`}${this.withTimezone?" with time zone":""}`}mapFromDriverValue(e){if("string"==typeof e)return e;const t=e.toISOString().slice(0,-1).replace("T"," ");if(this.withTimezone){const n=e.getTimezoneOffset();return`${t}${n<=0?"+":"-"}${Math.floor(Math.abs(n)/60).toString().padStart(2,"0")}`}return t}};function timestamp(e,t={}){const{name:n,config:r}=getColumnNameAndConfig(e,t);return"string"===r?.mode?new Oi(n,r.withTimezone??!1,r.precision):new $i(n,r?.withTimezone??!1,r?.precision)}__name(timestamp,"timestamp"),pn();var Ui=class extends Hs{static{__name(this,"PgUUIDBuilder")}static[Ds]="PgUUIDBuilder";constructor(e){super(e,"string","PgUUID")}defaultRandom(){return this.default(sql`gen_random_uuid()`)}build(e){return new Bi(e,this.config)}},Bi=class extends Ws{static{__name(this,"PgUUID")}static[Ds]="PgUUID";getSQLType(){return"uuid"}};function uuid(e){return new Ui(e??"")}__name(uuid,"uuid"),pn();var ji=class extends Hs{static{__name(this,"PgVarcharBuilder")}static[Ds]="PgVarcharBuilder";constructor(e,t){super(e,"string","PgVarchar"),this.config.length=t.length,this.config.enumValues=t.enum}build(e){return new Hi(e,this.config)}},Hi=class extends Ws{static{__name(this,"PgVarchar")}static[Ds]="PgVarchar";length=this.config.length;enumValues=this.config.enumValues;getSQLType(){return void 0===this.length?"varchar":`varchar(${this.length})`}};function varchar(e,t={}){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new ji(n,r)}__name(varchar,"varchar"),pn();var Wi=class extends Hs{static{__name(this,"PgBinaryVectorBuilder")}static[Ds]="PgBinaryVectorBuilder";constructor(e,t){super(e,"string","PgBinaryVector"),this.config.dimensions=t.dimensions}build(e){return new Gi(e,this.config)}},Gi=class extends Ws{static{__name(this,"PgBinaryVector")}static[Ds]="PgBinaryVector";dimensions=this.config.dimensions;getSQLType(){return`bit(${this.dimensions})`}};function bit(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new Wi(n,r)}__name(bit,"bit"),pn();var zi=class extends Hs{static{__name(this,"PgHalfVectorBuilder")}static[Ds]="PgHalfVectorBuilder";constructor(e,t){super(e,"array","PgHalfVector"),this.config.dimensions=t.dimensions}build(e){return new qi(e,this.config)}},qi=class extends Ws{static{__name(this,"PgHalfVector")}static[Ds]="PgHalfVector";dimensions=this.config.dimensions;getSQLType(){return`halfvec(${this.dimensions})`}mapToDriverValue(e){return JSON.stringify(e)}mapFromDriverValue(e){return e.slice(1,-1).split(",").map(e=>Number.parseFloat(e))}};function halfvec(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new zi(n,r)}__name(halfvec,"halfvec"),pn();var Vi=class extends Hs{static{__name(this,"PgSparseVectorBuilder")}static[Ds]="PgSparseVectorBuilder";constructor(e,t){super(e,"string","PgSparseVector"),this.config.dimensions=t.dimensions}build(e){return new Ki(e,this.config)}},Ki=class extends Ws{static{__name(this,"PgSparseVector")}static[Ds]="PgSparseVector";dimensions=this.config.dimensions;getSQLType(){return`sparsevec(${this.dimensions})`}};function sparsevec(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new Vi(n,r)}__name(sparsevec,"sparsevec"),pn();var Yi=class extends Hs{static{__name(this,"PgVectorBuilder")}static[Ds]="PgVectorBuilder";constructor(e,t){super(e,"array","PgVector"),this.config.dimensions=t.dimensions}build(e){return new Qi(e,this.config)}},Qi=class extends Ws{static{__name(this,"PgVector")}static[Ds]="PgVector";dimensions=this.config.dimensions;getSQLType(){return`vector(${this.dimensions})`}mapToDriverValue(e){return JSON.stringify(e)}mapFromDriverValue(e){return e.slice(1,-1).split(",").map(e=>Number.parseFloat(e))}};function vector(e,t){const{name:n,config:r}=getColumnNameAndConfig(e,t);return new Yi(n,r)}function getPgColumnBuilders(){return{bigint:bigint,bigserial:bigserial,boolean:boolean,char:char,cidr:cidr,customType:customType,date:date,doublePrecision:doublePrecision,inet:inet,integer:integer,interval:interval,json:json,jsonb:jsonb,line:line,macaddr:macaddr,macaddr8:macaddr8,numeric:numeric,point:point,geometry:geometry,real:real,serial:serial,smallint:smallint,smallserial:smallserial,text:text,time:time,timestamp:timestamp,uuid:uuid,varchar:varchar,bit:bit,halfvec:halfvec,sparsevec:sparsevec,vector:vector}}__name(vector,"vector"),pn(),pn(),__name(getPgColumnBuilders,"getPgColumnBuilders");var Ji=Symbol.for("drizzle:PgInlineForeignKeys"),Xi=Symbol.for("drizzle:EnableRLS"),Zi=class extends ca{static{__name(this,"PgTable")}static[Ds]="PgTable";static Symbol=Object.assign({},ca.Symbol,{InlineForeignKeys:Ji,EnableRLS:Xi});[Ji]=[];[Xi]=!1;[ca.Symbol.ExtraConfigBuilder]=void 0;[ca.Symbol.ExtraConfigColumns]={}};function pgTableWithSchema(e,t,n,r,o=e){const s=new Zi(e,r,o),a="function"==typeof t?t(getPgColumnBuilders()):t,i=Object.fromEntries(Object.entries(a).map(([e,t])=>{const n=t;n.setName(e);const r=n.build(s);return s[Ji].push(...n.buildForeignKeys(r,s)),[e,r]})),l=Object.fromEntries(Object.entries(a).map(([e,t])=>{const n=t;return n.setName(e),[e,n.buildExtraConfigColumn(s)]})),u=Object.assign(s,i);return u[ca.Symbol.Columns]=i,u[ca.Symbol.ExtraConfigColumns]=l,n&&(u[Zi.Symbol.ExtraConfigBuilder]=n),Object.assign(u,{enableRLS:__name(()=>(u[Zi.Symbol.EnableRLS]=!0,u),"enableRLS")})}__name(pgTableWithSchema,"pgTableWithSchema");var el=__name((e,t,n)=>pgTableWithSchema(e,t,n,void 0),"pgTable");pn();var tl=class{static{__name(this,"IndexBuilderOn")}constructor(e,t){this.unique=e,this.name=t}static[Ds]="PgIndexBuilderOn";on(...e){return new nl(e.map(e=>{if(is(e,da))return e;const t=new zs(e.name,!!e.keyAsName,e.columnType,e.indexConfig);return e.indexConfig=JSON.parse(JSON.stringify(e.defaultConfig)),t}),this.unique,!1,this.name)}onOnly(...e){return new nl(e.map(e=>{if(is(e,da))return e;const t=new zs(e.name,!!e.keyAsName,e.columnType,e.indexConfig);return e.indexConfig=e.defaultConfig,t}),this.unique,!0,this.name)}using(e,...t){return new nl(t.map(e=>{if(is(e,da))return e;const t=new zs(e.name,!!e.keyAsName,e.columnType,e.indexConfig);return e.indexConfig=JSON.parse(JSON.stringify(e.defaultConfig)),t}),this.unique,!0,this.name,e)}},nl=class{static{__name(this,"IndexBuilder")}static[Ds]="PgIndexBuilder";config;constructor(e,t,n,r,o="btree"){this.config={name:r,columns:e,unique:t,only:n,method:o}}concurrently(){return this.config.concurrently=!0,this}with(e){return this.config.with=e,this}where(e){return this.config.where=e,this}build(e){return new rl(this.config,e)}},rl=class{static{__name(this,"Index")}static[Ds]="PgIndex";config;constructor(e,t){this.config={...e,table:t}}};function index(e){return new tl(!1,e)}function uniqueIndex(e){return new tl(!0,e)}__name(index,"index"),__name(uniqueIndex,"uniqueIndex"),pn();var ol=class{static{__name(this,"PgPolicy")}constructor(e,t){this.name=e,t&&(this.as=t.as,this.for=t.for,this.to=t.to,this.using=t.using,this.withCheck=t.withCheck)}static[Ds]="PgPolicy";as;for;to;using;withCheck;_linkedTable;link(e){return this._linkedTable=e,this}};function pgPolicy(e,t){return new ol(e,t)}__name(pgPolicy,"pgPolicy"),pn(),pn(),pn();var sl=class{static{__name(this,"ForeignKeyBuilder")}static[Ds]="MySqlForeignKeyBuilder";reference;_onUpdate;_onDelete;constructor(e,t){this.reference=()=>{const{name:t,columns:n,foreignColumns:r}=e();return{name:t,columns:n,foreignTable:r[0].table,foreignColumns:r}},t&&(this._onUpdate=t.onUpdate,this._onDelete=t.onDelete)}onUpdate(e){return this._onUpdate=e,this}onDelete(e){return this._onDelete=e,this}build(e){return new al(e,this)}},al=class{static{__name(this,"ForeignKey")}constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}static[Ds]="MySqlForeignKey";reference;onUpdate;onDelete;getName(){const{name:e,columns:t,foreignColumns:n}=this.reference(),r=t.map(e=>e.name),o=n.map(e=>e.name),s=[this.table[Ls],...r,n[0].table[Ls],...o];return e??`${s.join("_")}_fk`}};function uniqueKeyName2(e,t){return`${e[Ls]}_${t.join("_")}_unique`}pn(),__name(uniqueKeyName2,"uniqueKeyName");var il=class{static{__name(this,"UniqueConstraintBuilder")}constructor(e,t){this.name=t,this.columns=e}static[Ds]="MySqlUniqueConstraintBuilder";columns;build(e){return new ll(e,this.columns,this.name)}};(class{static{__name(this,"UniqueOnConstraintBuilder")}static[Ds]="MySqlUniqueOnConstraintBuilder";name;constructor(e){this.name=e}on(...e){return new il(e,this.name)}});var ll=class{static{__name(this,"UniqueConstraint")}constructor(e,t,n){this.table=e,this.columns=t,this.name=n??uniqueKeyName2(this.table,this.columns.map(e=>e.name))}static[Ds]="MySqlUniqueConstraint";columns;name;nullsNotDistinct=!1;getName(){return this.name}},cl=class extends $s{static{__name(this,"MySqlColumnBuilder")}static[Ds]="MySqlColumnBuilder";foreignKeyConfigs=[];references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e){return this.config.isUnique=!0,this.config.uniqueName=e,this}generatedAlwaysAs(e,t){return this.config.generated={as:e,type:"always",mode:t?.mode??"virtual"},this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:n,actions:r})=>((n,r)=>{const o=new sl(()=>{const t=n();return{columns:[e],foreignColumns:[t]}});return r.onUpdate&&o.onUpdate(r.onUpdate),r.onDelete&&o.onDelete(r.onDelete),o.build(t)})(n,r))}},ul=class extends Ns{static{__name(this,"MySqlColumn")}constructor(e,t){t.uniqueName||(t.uniqueName=uniqueKeyName2(e,[t.name])),super(e,t),this.table=e}static[Ds]="MySqlColumn"};(class extends cl{static{__name(this,"MySqlColumnBuilderWithAutoIncrement")}static[Ds]="MySqlColumnBuilderWithAutoIncrement";constructor(e,t,n){super(e,t,n),this.config.autoIncrement=!1}autoincrement(){return this.config.autoIncrement=!0,this.config.hasDefault=!0,this}}),class extends ul{static{__name(this,"MySqlColumnWithAutoIncrement")}static[Ds]="MySqlColumnWithAutoIncrement";autoIncrement=this.config.autoIncrement},pn(),class extends cl{static{__name(this,"MySqlCharBuilder")}static[Ds]="MySqlCharBuilder";constructor(e,t){super(e,"string","MySqlChar"),this.config.length=t.length,this.config.enum=t.enum}build(e){return new dl(e,this.config)}};var dl=class extends ul{static{__name(this,"MySqlChar")}static[Ds]="MySqlChar";length=this.config.length;enumValues=this.config.enum;getSQLType(){return void 0===this.length?"char":`char(${this.length})`}};pn(),class extends cl{static{__name(this,"MySqlVarBinaryBuilder")}static[Ds]="MySqlVarBinaryBuilder";constructor(e,t){super(e,"string","MySqlVarBinary"),this.config.length=t?.length}build(e){return new ml(e,this.config)}};var ml=class extends ul{static{__name(this,"MySqlVarBinary")}static[Ds]="MySqlVarBinary";length=this.config.length;mapFromDriverValue(e){if("string"==typeof e)return e;if(Buffer.isBuffer(e))return e.toString();const t=[];for(const n of e)t.push(49===n?"1":"0");return t.join("")}getSQLType(){return void 0===this.length?"varbinary":`varbinary(${this.length})`}};pn(),class extends cl{static{__name(this,"MySqlVarCharBuilder")}static[Ds]="MySqlVarCharBuilder";constructor(e,t){super(e,"string","MySqlVarChar"),this.config.length=t.length,this.config.enum=t.enum}build(e){return new pl(e,this.config)}};var pl=class extends ul{static{__name(this,"MySqlVarChar")}static[Ds]="MySqlVarChar";length=this.config.length;enumValues=this.config.enum;getSQLType(){return void 0===this.length?"varchar":`varchar(${this.length})`}};pn(),pn();var gl=class{static{__name(this,"ForeignKeyBuilder")}static[Ds]="SQLiteForeignKeyBuilder";reference;_onUpdate;_onDelete;constructor(e,t){this.reference=()=>{const{name:t,columns:n,foreignColumns:r}=e();return{name:t,columns:n,foreignTable:r[0].table,foreignColumns:r}},t&&(this._onUpdate=t.onUpdate,this._onDelete=t.onDelete)}onUpdate(e){return this._onUpdate=e,this}onDelete(e){return this._onDelete=e,this}build(e){return new hl(e,this)}},hl=class{static{__name(this,"ForeignKey")}constructor(e,t){this.table=e,this.reference=t.reference,this.onUpdate=t._onUpdate,this.onDelete=t._onDelete}static[Ds]="SQLiteForeignKey";reference;onUpdate;onDelete;getName(){const{name:e,columns:t,foreignColumns:n}=this.reference(),r=t.map(e=>e.name),o=n.map(e=>e.name),s=[this.table[Ls],...r,n[0].table[Ls],...o];return e??`${s.join("_")}_fk`}};function uniqueKeyName3(e,t){return`${e[Ls]}_${t.join("_")}_unique`}pn(),__name(uniqueKeyName3,"uniqueKeyName");var fl=class{static{__name(this,"UniqueConstraintBuilder")}constructor(e,t){this.name=t,this.columns=e}static[Ds]="SQLiteUniqueConstraintBuilder";columns;build(e){return new yl(e,this.columns,this.name)}};(class{static{__name(this,"UniqueOnConstraintBuilder")}static[Ds]="SQLiteUniqueOnConstraintBuilder";name;constructor(e){this.name=e}on(...e){return new fl(e,this.name)}});var yl=class{static{__name(this,"UniqueConstraint")}constructor(e,t,n){this.table=e,this.columns=t,this.name=n??uniqueKeyName3(this.table,this.columns.map(e=>e.name))}static[Ds]="SQLiteUniqueConstraint";columns;name;getName(){return this.name}},wl=class extends $s{static{__name(this,"SQLiteColumnBuilder")}static[Ds]="SQLiteColumnBuilder";foreignKeyConfigs=[];references(e,t={}){return this.foreignKeyConfigs.push({ref:e,actions:t}),this}unique(e){return this.config.isUnique=!0,this.config.uniqueName=e,this}generatedAlwaysAs(e,t){return this.config.generated={as:e,type:"always",mode:t?.mode??"virtual"},this}buildForeignKeys(e,t){return this.foreignKeyConfigs.map(({ref:n,actions:r})=>((n,r)=>{const o=new gl(()=>{const t=n();return{columns:[e],foreignColumns:[t]}});return r.onUpdate&&o.onUpdate(r.onUpdate),r.onDelete&&o.onDelete(r.onDelete),o.build(t)})(n,r))}},Sl=class extends Ns{static{__name(this,"SQLiteColumn")}constructor(e,t){t.uniqueName||(t.uniqueName=uniqueKeyName3(e,[t.name])),super(e,t),this.table=e}static[Ds]="SQLiteColumn"};pn(),class extends wl{static{__name(this,"SQLiteTextBuilder")}static[Ds]="SQLiteTextBuilder";constructor(e,t){super(e,"string","SQLiteText"),this.config.enumValues=t.enum,this.config.length=t.length}build(e){return new El(e,this.config)}};var El=class extends Sl{static{__name(this,"SQLiteText")}static[Ds]="SQLiteText";enumValues=this.config.enumValues;length=this.config.length;constructor(e,t){super(e,t)}getSQLType(){return"text"+(this.config.length?`(${this.config.length})`:"")}};(class extends wl{static{__name(this,"SQLiteTextJsonBuilder")}static[Ds]="SQLiteTextJsonBuilder";constructor(e){super(e,"json","SQLiteTextJson")}build(e){return new bl(e,this.config)}});var bl=class extends Sl{static{__name(this,"SQLiteTextJson")}static[Ds]="SQLiteTextJson";getSQLType(){return"text"}mapFromDriverValue(e){return JSON.parse(e)}mapToDriverValue(e){return JSON.stringify(e)}},kl=y.union([y.string(),y.number(),y.boolean(),y.null()]),Cl=y.lazy(()=>y.union([kl,y.array(Cl),y.record(Cl)]));function c(e,t){const n=getTableColumns(e),r=Object.entries(n);let o=Object.fromEntries(r.map(([e,t])=>[e,p(t)]));t&&(o=Object.assign(o,Object.fromEntries(Object.entries(t).map(([e,t])=>[e,"function"==typeof t?t(o):t]))));for(const[e,t]of r)t.notNull?t.hasDefault&&(o[e]=o[e].optional()):o[e]=o[e].nullable().optional();return y.object(o)}function b(e,t){const n=getTableColumns(e),r=Object.entries(n);let o=Object.fromEntries(r.map(([e,t])=>[e,p(t)]));t&&(o=Object.assign(o,Object.fromEntries(Object.entries(t).map(([e,t])=>[e,"function"==typeof t?t(o):t]))));for(const[e,t]of r)t.notNull||(o[e]=o[e].nullable());return y.object(o)}function p(e){let t;if("enumValues"in(n=e)&&Array.isArray(n.enumValues)&&n.enumValues.length>0&&(t=e.enumValues.length?y.enum(e.enumValues):y.string()),!t)if(is(e,Bi))t=y.string().uuid();else if("custom"===e.dataType)t=y.any();else if("json"===e.dataType)t=Cl;else if("array"===e.dataType)t=y.array(p(e.baseColumn));else if("number"===e.dataType)t=y.number();else if("bigint"===e.dataType)t=y.bigint();else if("boolean"===e.dataType)t=y.boolean();else if("date"===e.dataType)t=y.date();else if("string"===e.dataType){let n=y.string();(is(e,Da)||is(e,Hi)||is(e,pl)||is(e,ml)||is(e,dl)||is(e,El))&&"number"==typeof e.length&&(n=n.max(e.length)),t=n}var n;return t||(t=y.any()),t}__name(c,"c"),__name(b,"b"),__name(p,"p"),pn();var vl=sql`(SELECT NULLIF(current_setting('app.current_user_id', true), '')::uuid)`,Tl=el("users",{id:uuid("id").primaryKey(),name:text("name").notNull(),email:text("email").notNull().unique(),emailVerified:boolean("email_verified").default(!1).notNull(),image:text("image"),createdAt:timestamp("created_at").defaultNow().notNull(),updatedAt:timestamp("updated_at").defaultNow().$onUpdate(()=>new Date).notNull(),userName:text("user_name").notNull().unique(),termsAcceptedAt:date("terms_accepted_at").defaultNow(),bio:text("bio").default(""),role:text("role").default("user").notNull(),banned:boolean("banned").default(!1),banReason:text("ban_reason"),banExpires:timestamp("ban_expires"),info:text("info").default(""),authId:uuid("auth_id").$defaultFn(()=>_e()).notNull().unique(),location:text("location").default(""),website:text("website").default(""),twitter:text("twitter").default(""),company:text("company").default(""),followerCount:integer("follower_count").default(0).notNull(),followingCount:integer("following_count").default(0).notNull(),metadata:jsonb("metadata").default({}).$type()},e=>[pgPolicy("users_select_own",{for:"select",to:"app_user",using:sql`id = ${vl}`}),pgPolicy("users_update_own",{for:"update",to:"app_user",using:sql`id = ${vl}`}),pgPolicy("users_select_public",{for:"select",to:"public_user",using:sql`true`}),index("users_created_at_idx").on(e.createdAt)]);el("sessions",{id:uuid("id").primaryKey(),expiresAt:timestamp("expires_at").notNull(),token:text("token").notNull().unique(),createdAt:timestamp("created_at").defaultNow().notNull(),updatedAt:timestamp("updated_at").$onUpdate(()=>new Date).notNull(),ipAddress:text("ip_address"),userAgent:text("user_agent"),userId:uuid("user_id").notNull().references(()=>Tl.id,{onDelete:"cascade"}),impersonatedBy:uuid("impersonated_by").references(()=>Tl.id,{onDelete:"set null"})},e=>[index("sessions_user_id_expires_at_idx").on(e.userId,e.expiresAt),pgPolicy("sessions_select_own",{for:"select",to:"app_user",using:sql`user_id = ${vl}`}),pgPolicy("sessions_insert_own",{for:"insert",to:"app_user",withCheck:sql`user_id = ${vl}`}),pgPolicy("sessions_delete_own",{for:"delete",to:"app_user",using:sql`user_id = ${vl}`}),pgPolicy("sessions_update_own",{for:"update",to:"app_user",using:sql`user_id = ${vl}`})]),el("accounts",{id:uuid("id").primaryKey(),accountId:text("account_id").notNull(),providerId:text("provider_id").notNull(),userId:uuid("user_id").notNull().references(()=>Tl.id,{onDelete:"cascade"}),accessToken:text("access_token"),refreshToken:text("refresh_token"),idToken:text("id_token"),accessTokenExpiresAt:timestamp("access_token_expires_at"),refreshTokenExpiresAt:timestamp("refresh_token_expires_at"),scope:text("scope"),password:text("password"),createdAt:timestamp("created_at").defaultNow().notNull(),updatedAt:timestamp("updated_at").$onUpdate(()=>new Date).notNull()},e=>[index("accounts_user_id_idx").on(e.userId),pgPolicy("accounts_select_own",{for:"select",to:"app_user",using:sql`user_id = ${vl}`}),pgPolicy("accounts_insert_own",{for:"insert",to:"app_user",withCheck:sql`user_id = ${vl}`}),pgPolicy("accounts_update_own",{for:"update",to:"app_user",using:sql`user_id = ${vl}`}),pgPolicy("accounts_delete_own",{for:"delete",to:"app_user",using:sql`user_id = ${vl}`})]),el("verifications",{id:uuid("id").primaryKey(),identifier:text("identifier").notNull(),value:text("value").notNull(),expiresAt:timestamp("expires_at").notNull(),createdAt:timestamp("created_at").defaultNow().notNull(),updatedAt:timestamp("updated_at").defaultNow().$onUpdate(()=>new Date).notNull()},e=>[pgPolicy("verifications_insert_public",{for:"insert",to:"app_user",withCheck:sql`true`}),pgPolicy("verifications_select_public",{for:"select",to:"app_user",using:sql`EXISTS (
5
5
  SELECT 1 FROM users
@@ -297,4 +297,4 @@ import*as e from"path";import t,{join as n,dirname as r,parse as o,relative as s
297
297
  ░█▀▀░█▀▄▀█░█▀▄░
298
298
  ░█░░░█░▀░█░█░█░
299
299
  ░▀▀▀░▀░░░▀░▀▀░░
300
- `,VS=getMaxLineWidth(qS),KS=WS,YS=__name(e=>{const t=e??getTerminalWidth();return t>=HS?"full":t>=KS?"compact":"minimal"},"getHeaderLayout");pn();var QS=__name(({children:e})=>{const t=[];let n="",r=!0;const o=__name(()=>{0!==n.length&&(t.push({text:n,panel:r}),n="")},"flush");for(const t of e){const e="░"===t;0===n.length?r=e:e!==r&&(o(),r=e),n+=t}return o(),ce.createElement(we,null,t.map((e,t)=>ce.createElement(we,{key:t,backgroundColor:bo.BG,color:e.panel?bo.BG:bo.TEXT},e.panel?e.text.replaceAll("░"," "):e.text)))},"CommandLogoBanner");pn();var JS=__name(({title:e,hashPrefix:t=!1,subPrefix:n=!1,suffix:r,padding:o=0,titleColor:s=Xr.GRAY,dividerChar:a="─",dividerColor:i=Xr.GRAY,boxProps:l})=>{const u=Math.max(0,(process.stdout.columns??80)-2*o),d=t?`# ${a}${a} `:n?`${a}${a} `:"",m=e?`${e} `:"",g=r?` ${r}`:"",h=d.length+m.length+g.length,f=a.repeat(Math.max(0,u-h));return ce.createElement(ye,{paddingLeft:o,paddingRight:o,marginBottom:1,...l},(t||n)&&ce.createElement(we,{color:i},d),e&&ce.createElement(we,{color:s},m),ce.createElement(we,{color:i},f),r&&ce.createElement(we,{color:Xr.DIM},g))},"Divider");pn();var XS=[{type:"user",text:"I always prefer pnpm",duration:2e3},{type:"learned",text:"LEARNED: pnpm (95% preference)",details:".commandcode/taste/taste.md",duration:2e3},{type:"user",text:"I prefer commander over meow",duration:2e3},{type:"updated",text:"Updated: commander boosted (60% → 95%), meow adjusted (90% → 35%)",details:".commandcode/taste/cli/taste.md",duration:2e3},{type:"user",text:"I prefer TypeScript for Node CLIs",duration:2e3},{type:"learned",text:"LEARNED: TypeScript for CLIs (90% preference)",details:".commandcode/taste/cli/taste.md",duration:2e3}],ZS=__name(({onComplete:e,onExit:t})=>{const[n,r]=de(0),[o,s]=de(!1),a=n>=XS.length;return pe(()=>{if(n>=XS.length)return;if(o)return;const e=XS[n],t=setTimeout(()=>{r(e=>Math.min(e+1,XS.length))},e.duration);return()=>clearTimeout(t)},[n,o]),Ee((n,o)=>{""===n||o.ctrl&&"c"===n?t?t():e():o.escape?e():a?(o.return||" "===n)&&e():" "===n?s(e=>!e):o.return&&r(e=>Math.min(e+1,XS.length))}),ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Meet Your Coding Taste")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Command Code learns your coding style as you work.")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Here's how your preferences evolve in real-time:")),ce.createElement(ye,{flexDirection:"column",marginY:1},XS.slice(0,n).map((e,t)=>"user"===e.type?ce.createElement(ye,{key:t},ce.createElement(we,null,He.pointer," ",e.text)):ce.createElement(ye,{key:t,flexDirection:"column",marginBottom:1,marginLeft:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"⎿ "),ce.createElement(we,{color:eo.TEXT},e.text)),e.details&&ce.createElement(ye,{marginLeft:3},ce.createElement(we,{color:Xr.DIM},"Saved(",e.details,")"))))),a?ce.createElement(ye,{flexDirection:"column",marginY:1},ce.createElement(ye,null,ce.createElement(we,{bold:!0,color:eo.TEXT},"Demo Complete!")),ce.createElement(ye,null,ce.createElement(we,null,"Command Code will now use these preferences to generate")),ce.createElement(ye,null,ce.createElement(we,null,"better suggestions tailored to your coding style. The")),ce.createElement(ye,null,ce.createElement(we,null,"more you code, the smarter it gets.")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Enter to get started →"))):ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"[SPACE: pause] [ENTER: next] [ESC: skip]"+(o?" (paused)":""))))},"TasteDemoComponent"),eE=__name(({onClose:e,onExit:t})=>{const[n,r]=de(id.getEvents()),[o,s]=de(0);Ee((n,r)=>{""===n||r.ctrl&&"c"===n?t():r.ctrl&&"t"===n&&e()},{isActive:!0}),pe(()=>{const e=__name(()=>{r(id.getEvents())},"handleNewEvent"),t=__name(()=>{r([])},"handleCleared");return id.on("new-event",e),id.on("cleared",t),()=>{id.off("new-event",e),id.off("cleared",t)}},[]),pe(()=>{const e=__name(()=>{xy(),s(e=>e+1)},"handleResize");return process.stdout.on("resize",e),()=>{process.stdout.off("resize",e)}},[]);const a=__name(e=>["learned","refactored"].includes(e),"isLearningEvent"),i=ge(()=>n.find(e=>"analyzing"===e.type),[n]),l=ge(()=>n.find(e=>"analyzed"===e.type),[n]),u=ge(()=>n.find(e=>"no_learnings"===e.type),[n]),d=ge(()=>n.find(e=>"learned"===e.type||"refactored"===e.type),[n]),m=u?n.indexOf(u):1/0,g=d?n.indexOf(d):1/0,h=!!u&&m<g,f=!!i||!!l||h,y=ge(()=>n.filter(e=>"analyzing"!==e.type&&"analyzed"!==e.type&&"no_learnings"!==e.type),[n]),w=ge(()=>[...y].reverse(),[y]),S=__name(e=>{const t=e.match(/^(learned|upgraded|downgraded|refactored|moved):\s*(.*)$/i);if(t){const e=t[1].toLowerCase();let n=t[2];const r=n.match(/^(.+?)\.?\s+Confidence:\s*(\d+\.?\d*)$/);let o=n,s=null;if(r){o=r[1].trim();const e=(100*parseFloat(r[2])).toFixed(2);s=`confidence: ${parseFloat(e).toString()}%`}const a={learned:"LEARNED",upgraded:"Reinforced",downgraded:"Downgraded",refactored:"Refactored",moved:"Moved"}[e]||e.charAt(0).toUpperCase()+e.slice(1);return{type:e,label:a,content:o,confidence:s}}return{type:null,label:null,content:e,confidence:null}},"formatLearningMessage"),E=__name(e=>{const t=e.match(/^(.+?)\s*\((\d+)%\s*(?:→|->)\s*(\d+)%\)$/);if(!t)return null;const n=t[1].trim(),r=parseInt(t[2],10),o=parseInt(t[3],10);return{text:n,oldPercent:r,newPercent:o,diff:o-r}},"parsePercentageChange"),k=__name(e=>{if(!e)return null;const t=e.match(/moved to (.+)/);if(!t)return null;const n=t[1],r=n.split("/"),o=r[r.length-1];return{category:r.slice(0,-1).join("/"),oldPath:o,newPath:n,fullPath:`.commandcode/taste/${n}`}},"formatMovedDetails"),C=ge(()=>(process.stdout.rows??24)-1,[o]);return ce.createElement(ye,{flexDirection:"column",width:"100%",height:C,justifyContent:"flex-start",alignItems:"flex-start",padding:0,margin:0},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(QS,null,GS())),ce.createElement(JS,{hashPrefix:!0,title:"Taste Feed",titleColor:"white",suffix:"ctrl+t to close"}),ce.createElement(ye,{flexDirection:"column"},0===n.length?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(ye,null,ce.createElement(we,null,"Start using Command Code and it will begin recording your coding taste.")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Your preferences, patterns, and style will appear here in real-time."))),ce.createElement(ve,{count:2}),ce.createElement(JS,{title:"DEMO",titleColor:"white",subPrefix:!0}),ce.createElement(ZS,{onComplete:()=>{e()},onExit:t})):ce.createElement(ye,{flexDirection:"column"},y.length>0&&ce.createElement(ye,{flexDirection:"column",gap:1},w.map(e=>{if(a(e.type)){const{type:t,label:n,content:r,confidence:o}=S(e.message),s="moved"===t?k(e.details):null,a="upgraded"===t||"downgraded"===t?E(r):null,i=s?.fullPath??e.details;let l=ce.createElement(ce.Fragment,null,ce.createElement(we,null," ",r),o&&ce.createElement(we,{color:Xr.DIM}," ","(",o,")"));return a&&(l=ce.createElement(ce.Fragment,null,ce.createElement(we,null," ",a.text," ("),ce.createElement(we,{color:Xr.DIM},"confidence:"," "),ce.createElement(we,{color:Xr.DIM},a.oldPercent,"%"),ce.createElement(we,null," ",He.arrowRight," "),ce.createElement(we,{color:a.diff>0?Xr.GREEN:Xr.RED},a.newPercent,"%"),ce.createElement(we,null,")"))),s&&(l=ce.createElement(ce.Fragment,null,ce.createElement(we,null," ",s.category," ","package ("),ce.createElement(we,{color:Xr.DIM},s.oldPath),ce.createElement(we,null," ",He.arrowRight," ",s.newPath),ce.createElement(we,null,")"))),ce.createElement(ye,{key:e.id},ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:eo.BADGE_BG,color:eo.BADGE_FG,bold:!0},`${Oy}${n}${Oy}`)),i&&ce.createElement(we,{color:Xr.DIM}," ","(",i,")")),ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},"⎿"," "),l)))}return ce.createElement(ye,{key:e.id},ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",e.message))})),f&&ce.createElement(ye,{flexDirection:"column",marginTop:y.length>0?1:0},i&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",i.message)),l&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",l.message)),h&&u&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",u.message))))))},"LearningFeedFull");function useListNavigation({items:e,onSelect:t,onCancel:n,validate:r,initialIndex:o=0,searchCursorIndex:s=0,searchQuery:a,onSearchChange:i,isActive:l=!0,disableSearch:u=!1,selectByNumber:d=!1,onReset:m}){const[g,h]=de(o),[f,y]=de(null);pe(()=>{a||h(o)},[o,a]);const w=e.length-1,S=__name(e=>{i(e),h(s)},"updateSearch");return Ee((o,s)=>{if(s.escape)return!u&&a?void S(""):void n();if(u||!s.backspace&&!s.delete){if(u&&m&&"r"===o&&!s.ctrl&&!s.meta){const t=e[g];return void(t&&m(t))}if(0!==e.length){if(s.upArrow)return y(null),void h(e=>Math.max(e-1,0));if(s.downArrow)return y(null),void h(e=>Math.min(e+1,w));if(s.return){const n=e[g];if(!n)return;if(r){const e=r(n);if(e)return void y(e)}return void t(n)}if(d&&1===o.length&&o>="1"&&o<="9"&&!s.ctrl&&!s.meta){const n=Number(o)-1,s=e[n];if(!s)return;if(h(n),r){const e=r(s);if(e)return void y(e)}return void t(s)}!u&&!s.ctrl&&!s.meta&&!s.tab&&o&&1===o.length&&o>=" "&&S(a+o)}}else S(a.slice(0,-1))},{isActive:l}),{cursor:g,error:f,setError:y}}pn(),pn(),pn(),__name(useListNavigation,"useListNavigation");var tE=[{scope:"project",label:"This project"},{scope:"global",label:"User"}],nE=__name(({onClose:e,onSettingsChange:t,staticKey:n})=>{const[r,o]=de(!0),[s,a]=de(void 0),[i,l]=de(void 0),[u,d]=de(!0),m="local"===i,g=he(async()=>{try{const e=await getTasteLearningSettings();o(e.global),a(e.project),l(e.projectSource)}catch{}},[]);pe(()=>{g().finally(()=>d(!1))},[g]);const h=__name(async(e,n,r)=>{e();try{await r(),t?.(),await g()}catch(e){n()}},"persist"),f=__name(e=>{if("global"===e.scope){const e=!r;return h(()=>o(e),()=>o(!e),()=>setTasteLearning({tasteLearning:e,scope:"global"}))}if(m)return;const t=s,n=!(t??r);return h(()=>a(n),()=>a(t),()=>setTasteLearning({tasteLearning:n,scope:"project"}))},"toggleRow"),y=__name(e=>{if("global"===e.scope){if(r)return;return h(()=>o(!0),()=>o(!1),()=>setTasteLearning({tasteLearning:!0,scope:"global"}))}if(m)return;const t=s;return void 0!==t?h(()=>a(void 0),()=>a(t),()=>clearProjectTasteLearning()):void 0},"resetRow"),{cursor:w}=useListNavigation({items:tE,onSelect:__name(e=>{f(e)},"onSelect"),onReset:__name(e=>{y(e)},"onReset"),onCancel:e,searchQuery:"",onSearchChange:__name(()=>{},"onSearchChange"),disableSearch:!0,isActive:!u});if(u)return ce.createElement(ye,{key:n,borderStyle:"single",borderColor:Xr.BLUE,padding:1,flexDirection:"column"},ce.createElement(we,{color:Xr.BLUE,bold:!0},"Taste Settings"),ce.createElement(we,{color:Xr.DIM},"Loading configuration..."));const S=__name(e=>"project"===e.scope?s??r:r,"valueFor");return ce.createElement(ye,{key:n,borderStyle:"single",borderColor:Xr.GRAY,padding:1,flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Taste Learning"),ce.createElement(we,{color:Xr.DIM},"Learn from your interactions."),ce.createElement(ye,{marginTop:1}),tE.map((e,t)=>{const n=t===w,r=S(e),o="project"===e.scope&&m;return ce.createElement(ye,{key:e.scope},ce.createElement(we,{color:n?Xr.CYAN:Xr.GRAY},n?`${He.pointer} `:" "),ce.createElement(we,{color:n?Xr.CYAN:Xr.WHITE},e.label.padEnd(16)),ce.createElement(we,{color:r?Xr.GREEN:Xr.DIM},r?"enabled":"disabled"),o?ce.createElement(we,{color:Xr.DIM}," ","(set in settings.local.json)"):null)}),ce.createElement(ye,{marginTop:1}),ce.createElement(we,{color:Xr.DIM},"Taste data stored in .commandcode/taste/taste.md"),m?ce.createElement(we,{color:Xr.DIM},"This project is pinned by .commandcode/settings.local.json — edit that file to change it."):null,ce.createElement(we,{color:Xr.DIM},"↑/↓ navigate · enter to toggle · r reset to default · esc to close"))},"TasteConfig");function TasteConfigView({staticKey:e,onClose:t,loadTasteStatus:n}){return ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(nE,{onClose:t,onSettingsChange:n,staticKey:e})))}function fuzzyMatch(e,t){let n=0;for(const r of e)if(r===t[n]&&(n++,n===t.length))return!0;return!1}function fuzzyScore(e,t){let n=0;for(const r of e)fuzzyMatch(r.text.toLowerCase(),t)&&(n+=r.weight);return n}function fuzzyFilter(e,t,n){if(!t.trim())return e;const r=t.toLowerCase().split("");return e.map(e=>({item:e,score:fuzzyScore(n(e),r)})).filter(({score:e})=>e>0).sort((e,t)=>t.score-e.score).map(({item:e})=>e)}__name(TasteConfigView,"TasteConfigView"),pn(),pn(),wn(),pn(),__name(fuzzyMatch,"fuzzyMatch"),__name(fuzzyScore,"fuzzyScore"),__name(fuzzyFilter,"fuzzyFilter"),pn();var rE=__name(({query:e,resultCount:t,placeholder:n="Type to search..."})=>ce.createElement(ye,{width:"100%"},ce.createElement(we,{color:Xr.GRAY},He.pointerSmall," "),ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY},e||n),e&&void 0!==t&&ce.createElement(we,{dimColor:!0}," (",t," found)")),"SearchInput");function useTerminalHeight(){const{stdout:e}=be(),[t,n]=de(()=>e?.rows??24);return pe(()=>{const t=__name(()=>n(e?.rows??24),"onResize");return e.on("resize",t),()=>{e.off("resize",t)}},[e]),t}function skillIdentifier(e){const n=t.basename(e);return"skill.md"===n.toLowerCase()?t.basename(t.dirname(e)):n}pn(),__name(useTerminalHeight,"useTerminalHeight"),pn(),wn(),pn(),pn(),__name(skillIdentifier,"skillIdentifier");var oE=new Set(["Invalid YAML","Missing fields","Missing SKILL.md"]);function categoryColor(e){return oE.has(e)?Xr.RED:Xr.YELLOW}function formatWarningsAsMarkdown(e){const t=groupWarnings(e),n=[`# Skipped skills (${e.length})`,""];for(const e of t){n.push(`## ${e.category} (${e.items.length})`,"");for(const t of e.items)n.push(`- \`${skillIdentifier(t.path)}\` — \`${t.path}\``),n.push(` - ${t.reason}`);n.push("")}return n.join("\n").replace(/\n+$/,"")+"\n"}async function copyAllWarnings(e,t){try{const{isClipboardAvailable:n}=await Promise.resolve().then(()=>(An(),Pn));if(!n())return void t({text:"Clipboard unavailable — copy the skipped skill paths manually",color:Xr.YELLOW});const r=await import("@crosscopy/clipboard");await r.default.setText(formatWarningsAsMarkdown(e));const o=e.length;t({text:`Copied ${o} issue${1===o?"":"s"} to clipboard`,color:Xr.GREEN})}catch{t({text:"Clipboard write failed",color:Xr.YELLOW})}}__name(categoryColor,"categoryColor"),__name(formatWarningsAsMarkdown,"formatWarningsAsMarkdown"),__name(copyAllWarnings,"copyAllWarnings");var sE=__name(({warnings:e,onClose:t,isActive:n=!0})=>{const r=groupWarnings(e),o=e.length>0,[s,a]=de(null),i=me(null),l=me(!0);pe(()=>()=>{l.current=!1,i.current&&(clearTimeout(i.current),i.current=null)},[]);const u=__name(e=>{l.current&&(i.current&&clearTimeout(i.current),a(e),i.current=setTimeout(()=>{l.current&&(a(null),i.current=null)},3e3))},"showStatus");return Ee((n,r)=>r.escape||" "===n&&o?(xy(),void t()):void("c"===n&&o&&copyAllWarnings(e,u)),{isActive:n}),ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Skills"," "),ce.createElement(we,{color:Xr.DIM},"› "),ce.createElement(we,{color:Zr,bold:!0},"Skipped"," "),ce.createElement(we,{color:Xr.WHITE},e.length)),o&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Press c to copy all issues")),o?ce.createElement(ye,{flexDirection:"column"},r.map(e=>ce.createElement(ye,{key:e.category,flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:categoryColor(e.category)},e.category)),e.items.map(e=>ce.createElement(ye,{key:e.path,flexDirection:"column",marginBottom:1},ce.createElement(ye,{paddingLeft:2},ce.createElement(Fo,{url:g(e.path).href,text:skillIdentifier(e.path),color:Xr.WHITE})),ce.createElement(ye,{paddingLeft:4},ce.createElement(we,{color:Xr.WHITE},e.reason))))))):ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"No issues — every skill loaded.")),s&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:s.color},s.text)),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},o?"c copy all issues · esc back to skills":"esc back to skills")))},"SkillsConfigIssues"),aE=__name(({warnings:e=[],onClose:t})=>{const[n,r]=de("list");return Ee((o,s)=>{"list"===n&&(s.escape&&t?t():" "===o&&!s.ctrl&&!s.meta&&e.length>0&&r("issues"))},{isActive:"list"===n}),"issues"===n?ce.createElement(sE,{warnings:e,onClose:()=>r("list"),isActive:!0}):ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Skills"),e.length>0&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.YELLOW},e.length," skipped"))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"No skills found")),ce.createElement(we,{color:Xr.DIM},"Create skills in:"),ce.createElement(we,{color:Xr.DIM}," ","~/",".commandcode","/","skills","/ (user)"),ce.createElement(we,{color:Xr.DIM}," ","~/.agents/","skills","/ (user, .agents)"),ce.createElement(we,{color:Xr.DIM}," ",".commandcode","/","skills","/ (project)"),ce.createElement(we,{color:Xr.DIM}," ",".agents/","skills","/ (project, .agents)"),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},e.length>0&&"space to view issues · ","Press ",ce.createElement(we,{bold:!0},"Esc")," to close")))},"SkillsConfigEmpty");function clampScrollOffset(e){const{cursor:t,total:n,maxVisible:r,currentOffset:o}=e;if(n<=r)return 0;let s=o;t<s?s=t:t>=s+r&&(s=t-r+1);const a=Math.max(0,n-r);return Math.min(Math.max(0,s),a)}function sliceSectionForWindow(e){const{section:t,sectionBase:n,windowStart:r,windowEnd:o}=e,s=Math.min(Math.max(r-n,0),t.length),a=Math.min(Math.max(o-n,0),t.length);return{rows:t.slice(s,a),baseIndex:n+s}}pn(),__name(clampScrollOffset,"clampScrollOffset"),__name(sliceSectionForWindow,"sliceSectionForWindow"),pn();var iE=__name(e=>Math.ceil(e.length/4),"estimateTokens"),lE=__name(e=>e.includes("/.agents/skills/")||e.includes("\\.agents\\skills\\"),"isAgentsSkill"),cE={user:"user settings",projectShared:"project shared",projectLocal:"project local"},uE=__name(()=>"win32"===process.platform?'No editor found. Set $EDITOR: setx EDITOR "code"':"No editor found. Set $EDITOR: echo 'export EDITOR=\"code\"' >> "+("darwin"===process.platform?"~/.zshrc":"~/.bashrc"),"getEditorSetupMessage");pn();var dE=__name(({title:e,subtitle:t,skills:n,baseIndex:r,cursor:o,disabled:s})=>ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(ye,null,ce.createElement(we,{color:co,bold:!0},e," "),ce.createElement(we,{color:co},t)),n.map((e,t)=>{const n=r+t===o,a=s.has(e.label),i=lE(e.filePath),l=n?Co:void 0;return ce.createElement(ye,{key:e.filePath},ce.createElement(we,{color:a?Xr.DIM:Xr.GREEN,backgroundColor:l},a?"[off] ":"[on] "),ce.createElement(we,{color:a?Xr.DIM:Xr.WHITE,backgroundColor:l},e.label),i&&ce.createElement(we,{color:Xr.DIM,backgroundColor:l}," [.agents]"),ce.createElement(we,{color:Xr.DIM,backgroundColor:l}," · ~",iE(e.description)," tokens "))})),"SkillSection");pn();var mE=__name(e=>[{text:e.label,weight:100}],"SKILL_SEARCH_FIELDS"),pE=__name(({onClose:e})=>{const[t,n]=de([]),[r,o]=de([]),[s,a]=de(!0),[i,l]=de(null),[u,d]=de(""),[m,g]=de(new Set),[h,f]=de(new Map),[y,w]=de(!1),[S,E]=de(null),[k,C]=de("list"),[v,T]=de(0),x=useTerminalHeight(),P=me(!1);pe(()=>{__name(async()=>{try{const e=findGitRoot(),t=getBundledSkillsDir(),[{global:r,project:s,warnings:a},i]=await Promise.all([loadAllSkillSummariesWithWarnings(),loadDisabledSkills({projectRoot:e})]),l=__name(e=>isBundledSkillPath({filePath:e,bundledDir:t}),"isBundled"),u=[...s.map(e=>({label:e.name,location:"project",description:e.description,filePath:e.filePath})),...r.filter(e=>!l(e.filePath)).map(e=>({label:e.name,location:"user",description:e.description,filePath:e.filePath})),...r.filter(e=>l(e.filePath)).map(e=>({label:e.name,location:"bundled",description:e.description,filePath:e.filePath}))];u.sort((e,t)=>{if(e.location!==t.location){const n={project:0,user:1,bundled:2};return n[e.location]-n[t.location]}return e.label.localeCompare(t.label)}),n(u),o(a),g(new Set(i.names)),f(new Map(i.bySkill)),w(i.noProjectRoot)}catch(e){l(e instanceof Error?e.message:"Failed to load skills")}finally{a(!1)}},"load")()},[]);const A=ge(()=>fuzzyFilter(t.filter(e=>"project"===e.location),u,mE),[t,u]),I=ge(()=>fuzzyFilter(t.filter(e=>"user"===e.location),u,mE),[t,u]),M=ge(()=>fuzzyFilter(t.filter(e=>"bundled"===e.location),u,mE),[t,u]),R=ge(()=>[...A,...I,...M],[A,I,M]),_=x-1,D=(A.length>0?1:0)+(I.length>0?1:0)+(M.length>0?1:0),N=Math.max(4,_-12-2*D),$=__name(async e=>{if(P.current)return;const t=m.has(e.label),n=h.get(e.label);if(t&&void 0!==n&&"projectLocal"!==n&&!y)return void E(`Cannot enable: "${e.label}" is disabled in ${cE[n]}. Edit that file to override.`);P.current=!0;const r=new Set(m);t&&r.delete(e.label),t||r.add(e.label),g(r),E(null);try{const n=findGitRoot(),r=await setSkillEnabled(e.label,t,{projectRoot:n}),o=new Map(h);t&&o.delete(e.label),t||o.set(e.label,r),f(o),"user"===r&&E("Saved to user settings — no project found.")}catch(e){g(m),E(`Failed to save: ${e instanceof Error?e.message:String(e)}`)}finally{P.current=!1}},"toggleSkill");pe(()=>{"issues"===k&&d("")},[k]);const L="list"===k&&t.length>0,{cursor:O}=useListNavigation({items:R,onSelect:$,onCancel:e,searchQuery:u,onSearchChange:d,initialIndex:0,isActive:L});if(pe(()=>{T(e=>clampScrollOffset({cursor:O,total:R.length,maxVisible:N,currentOffset:e}))},[O,R.length,N]),Ee((t,n)=>{if(!n.tab)return;const r=R[O];r&&(async()=>{try{await xt([{file:r.filePath,line:1}]),e()}catch(e){if(e instanceof Error&&e.message.includes("$EDITOR environment variable"))return void l(uE());l(e instanceof Error?e.message:"Failed to open skill in editor")}})()},{isActive:L}),Ee((e,n)=>{"list"===k&&0!==t.length&&" "===e&&!n.ctrl&&!n.meta&&r.length>0&&0===u.length&&C("issues")},{isActive:"list"===k&&t.length>0}),s)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(we,{color:Zr,bold:!0},"Skills"),ce.createElement(we,{color:Xr.DIM},"Loading skills..."));if(i)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(we,{color:Xr.RED,bold:!0},"Skills"),ce.createElement(we,{color:Xr.DIM},i),ce.createElement(ye,{marginTop:1}),ce.createElement(we,{color:Xr.DIM},"Press ",ce.createElement(we,{bold:!0},"Esc")," to close"));if(0===t.length)return ce.createElement(aE,{warnings:r,onClose:e});if("issues"===k)return ce.createElement(sE,{warnings:r,onClose:()=>C("list"),isActive:!0});const F=t.filter(e=>m.has(e.label)).length,U=v,B=v+N,j=sliceSectionForWindow({section:A,sectionBase:0,windowStart:U,windowEnd:B}),H=sliceSectionForWindow({section:I,sectionBase:A.length,windowStart:U,windowEnd:B}),W=sliceSectionForWindow({section:M,sectionBase:A.length+I.length,windowStart:U,windowEnd:B}),G=R.length>N;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Skills"," "),ce.createElement(we,{color:Xr.DIM},t.length," skill",1===t.length?"":"s"),F>0&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.YELLOW},F," off")),r.length>0&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.YELLOW},r.length," skipped"))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{dimColor:!0},y?"No project found — toggles will be saved to user settings.":"Toggle skills on or off for this project.")),ce.createElement(ye,{marginBottom:1,flexDirection:"column",width:"100%"},ce.createElement(rE,{query:u,resultCount:u?R.length:void 0,placeholder:"Type to search skills..."})),0===R.length?ce.createElement(ye,{marginY:1},ce.createElement(we,{color:Xr.GRAY},'No skills match "',u,'"')):ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},j.rows.length>0&&ce.createElement(dE,{title:"Project skills",subtitle:"(.commandcode/skills or .agents/skills)",skills:j.rows,baseIndex:j.baseIndex,cursor:O,disabled:m}),H.rows.length>0&&ce.createElement(dE,{title:"User skills",subtitle:"(~/.commandcode/skills or ~/.agents/skills)",skills:H.rows,baseIndex:H.baseIndex,cursor:O,disabled:m}),W.rows.length>0&&ce.createElement(dE,{title:"Bundled skills",subtitle:"(ships with Command Code)",skills:W.rows,baseIndex:W.baseIndex,cursor:O,disabled:m})),G&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",U+1,"–",Math.min(B,R.length)," of"," ",R.length,U>0?" · ↑ more":"",B<R.length?" · ↓ more":""))),S&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.YELLOW},S)),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"type to search · ↑/↓ navigate · enter to toggle · tab to edit",r.length>0&&!u&&ce.createElement(ce.Fragment,null," · space to view issues"),u?" · esc to clear":" · esc to close"),ce.createElement(we,{color:Xr.DIM},"add skills:"," ",ce.createElement(we,{color:Xr.CYAN},getBinaryCommand()," skills add ","<owner/repo>"))))},"SkillsConfig");function SkillsConfigView({staticKey:e,onClose:t}){return ce.useEffect(()=>{hardResetForResize()},[]),ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(pE,{onClose:t,staticKey:e})))}function getUsageColor(e){return e>=80?Xr.RED:e>=50?Xr.YELLOW:Xr.GREEN}function buildBlockBar({percentage:e,width:t}){const n=Math.max(0,Math.min(100,e));let r=Math.round(n/100*t);n>.5&&0===r&&(r=1),n<99.5&&r===t&&(r=t-1);const o=t-r;return{filled:"█".repeat(r),empty:"░".repeat(o)}}function getStudioUsageUrl(e){const t=e?.org?.login??e?.user?.userName;return t?`https://commandcode.ai/${t}/settings/usage`:null}__name(SkillsConfigView,"SkillsConfigView"),pn(),pn(),pn(),__name(getUsageColor,"getUsageColor"),__name(buildBlockBar,"buildBlockBar"),__name(getStudioUsageUrl,"getStudioUsageUrl");var gE=__name(e=>e.replace(/^https?:\/\//,""),"stripScheme");function WindowLimitMeter({label:e,used:t,cap:n,resetAt:r,width:o,now:s}){const a=n>0?Math.min(100,t/n*100):0,i=getUsageColor(a),l=buildBlockBar({percentage:a,width:o}),u=r>s?` · resets in ${formatDuration(r-s)}`:"";return ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},e.padEnd(7)," "),ce.createElement(we,{color:i},l.filled),ce.createElement(we,{color:co},l.empty),ce.createElement(we,{bold:!0,color:i},` ${Math.round(a)}%`),ce.createElement(we,{color:Xr.DIM},u))}function getProgressBarWidth({terminalWidth:e}){return e<50?Math.max(10,e-10):e<70?Math.max(15,e-15):Math.min(30,e-15)}function getDaysColor(e){if(null!==e)return e<3?Xr.RED:e<7?Xr.YELLOW:void 0}__name(WindowLimitMeter,"WindowLimitMeter"),__name(getProgressBarWidth,"getProgressBarWidth"),__name(getDaysColor,"getDaysColor");var hE=__name(({plan:e,status:t})=>ce.createElement(ye,{marginBottom:0},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:Xr.BLUE,color:"#f4f4f4",bold:!0},`${Oy}USAGE${Oy}`)),e&&ce.createElement(ce.Fragment,null,ce.createElement(we,null," "),ce.createElement(we,{color:Xr.GRAY},`${e.name} Plan`)),t&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:"active"===t?Xr.GREEN:Xr.YELLOW},t))),"UsageBadge"),fE=__name(({showRetry:e})=>ce.createElement(ye,{marginTop:1},e&&ce.createElement(we,{color:Xr.DIM},ce.createElement(we,{bold:!0},"r")," to retry · "),ce.createElement(we,{color:Xr.DIM},"Press ",ce.createElement(we,{bold:!0},"Esc")," to close")),"UsageFooter"),yE=__name(({onClose:e})=>{const[t,n]=de("loading"),[r,o]=de(null),[s,a]=de(!1),i=getProgressBarWidth({terminalWidth:useTerminalWidth()}),l=he(async e=>{try{a(!1);const t=await fetchUsageData();if(e.aborted)return;if(!t.whoami){const e=t.errors.some(isAuthErrorMessage);return a(e),void n("error")}o(t),n("loaded")}catch{if(e.aborted)return;n("error")}},[]),u=ce.useRef(null);Ee((r,o)=>{if(o.escape&&e(),"r"===r&&"error"===t){n("loading"),u.current?.abort();const e=new AbortController;u.current=e,l(e.signal)}}),pe(()=>{const e=new AbortController;return u.current=e,l(e.signal),()=>e.abort()},[l]);const d=r?.subscription?.data??null,m=d?getPlanInfo({planId:d.planId??""}):null;if("loading"===t)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(hE,{plan:m,status:d?.status??null}),ce.createElement(we,{color:Xr.DIM},"Loading…"),ce.createElement(fE,null));if("error"===t)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(hE,{plan:m,status:d?.status??null}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},s?"Not authenticated. Run /login to connect your account.":"Something went wrong.")),ce.createElement(fE,{showRetry:!s}));if(!r)return null;const g=r.credits||r.subscription,h=getStudioUsageUrl(r.whoami);if(!g)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(hE,{plan:m,status:d?.status??null}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"No billing data found."),h&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," Visit "),ce.createElement(Fo,{url:h,text:"Studio",color:Xr.CYAN}),ce.createElement(we,{color:Xr.DIM}," for usage details."))),ce.createElement(fE,null));const f=r.credits?.credits,y=r.credits?.windowLimits,w=r.summary,S=Date.now(),E=Math.max(0,f?.monthlyCredits??0)+Math.max(0,f?.purchasedCredits??0)+Math.max(0,f?.freeCredits??0),k=Math.max(0,w?.totalCost??0),C=getUsagePercent({used:k,total:k+E}),v=E>0||k>0,T=d?.currentPeriodEnd?getDaysRemaining(d.currentPeriodEnd):null,x=getDaysColor(T),P=getUsageColor(C),A=buildBlockBar({percentage:C,width:i});return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,{marginBottom:1},ce.createElement(hE,{plan:m,status:d?.status??null})),v?ce.createElement(ye,null,ce.createElement(we,{color:P},A.filled),ce.createElement(we,{color:co},A.empty),ce.createElement(we,{bold:!0,color:P},` ${Math.round(C)}% used`)):ce.createElement(we,{color:Xr.DIM},"Plan details unavailable"),v&&ce.createElement(ye,null,d?.currentPeriodEnd&&ce.createElement(we,{color:Xr.DIM},"Cycle: "),ce.createElement(we,null,formatCredits(E)),ce.createElement(we,{color:Xr.DIM}," left"),w&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,null,w.totalCount.toLocaleString()),ce.createElement(we,{color:Xr.DIM}," requests")),null!==T&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),0===T?ce.createElement(we,{color:x},"renewal today"):ce.createElement(ce.Fragment,null,ce.createElement(we,{color:x},`${T} day${1===T?"":"s"}`),ce.createElement(we,{color:Xr.DIM}," to renewal")))),y?.limited&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM},"Usage limits"),y.fiveHour&&ce.createElement(WindowLimitMeter,{label:"5-hour",used:y.fiveHour.used,cap:y.fiveHour.cap,resetAt:y.fiveHour.resetAt,width:i,now:S}),y.weekly&&ce.createElement(WindowLimitMeter,{label:"Weekly",used:y.weekly.used,cap:y.weekly.cap,resetAt:y.weekly.resetAt,width:i,now:S})),h&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Full breakdown at "),ce.createElement(Fo,{url:h,text:gE(h),color:Xr.CYAN})),ce.createElement(fE,null))},"UsageOverlay");function UsageView({staticKey:e,onClose:t}){return ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(yE,{onClose:t})))}__name(UsageView,"UsageView"),pn(),pn(),wn();var wE="System prompt",SE="Messages";function countMessagesByRole({messages:e}){let t=0,n=0;for(const r of e)"user"===r.message.role&&!isHiddenTranscriptMessage({message:r})&&t++,"assistant"===r.message.role&&n++;return{user:t,assistant:n}}function countToolCalls({messages:e}){let t=0,n=0;for(const r of e){if(isHiddenTranscriptMessage({message:r}))continue;const e=r.message.content;if(Array.isArray(e))for(const r of e)"tool-call"===r.type&&t++,"tool-result"===r.type&&n++}return{calls:t,results:n}}function countImages({messages:e}){let t=0;for(const n of e){if(isHiddenTranscriptMessage({message:n}))continue;const e=n.message.content;if(Array.isArray(e))for(const n of e)"image"===n.type&&t++}return t}function estimateConversationTokens({messages:e}){let t=0;for(const n of e)isHiddenTranscriptMessage({message:n})||(t+=estimateTokens(n.message));return t}function buildAutoCompactStatus({tokensUsed:e,tokenLimit:t}){const n=e/t,r=[{tier:1,threshold:un.TIER_1_THRESHOLD,description:`Prune to last ${un.TIER_1_KEEP_COUNT} tool calls`},{tier:2,threshold:un.TIER_2_THRESHOLD,description:`Prune to last ${un.TIER_2_KEEP_COUNT} tool calls`},{tier:3,threshold:un.TIER_3_THRESHOLD,description:"Full summarization"}];let o=0;const s=r.map(r=>{const s=Math.round(r.threshold*t),a=Math.max(0,s-e);let i="upcoming";return n>=r.threshold&&(i="passed",o=r.tier),{tier:r.tier,threshold:r.threshold,tokensAt:s,description:r.description,status:i,tokensAway:a}}),a=s.findIndex(e=>"upcoming"===e.status);return{tiers:-1!==a?s.map((e,t)=>t===a?{...e,status:"current"}:e):s,currentTier:o,keepRecentTokens:un.KEEP_RECENT_TOKENS}}function getPrimaryTip({percentage:e,conversationPct:t}){return e>=90?"Tier 3 auto-compact imminent — /compact now to control what gets summarized":e>=80?"Auto-compact Tier 3 triggers at 90% — /compact to free space before it kicks in":t>60&&e>40?`${t}% is conversation — /compact to reclaim tokens`:e>=50?"/compact to free space · /model to switch models":null}function getSecondaryTip({mcpToolCount:e,imageCount:t,messageCount:n,percentage:r}){return e>0&&r>30?`${e} MCP tools loaded — disconnect unused servers to save tokens`:t>0&&r>30?`${t} image${t>1?"s":""} in context — images use ~1.5k tokens each`:n>50&&r>40?`${n} messages — consider starting a new session for a fresh context`:null}function generateTips({percentage:e,conversationTokens:t,totalTokens:n,mcpToolCount:r,messageCount:o,imageCount:s}){if(0===n)return[];const a=getPrimaryTip({percentage:e,conversationPct:Math.min(100,Math.round(t/n*100))}),i=getSecondaryTip({mcpToolCount:r,imageCount:s,messageCount:o,percentage:e}),l=[];return a&&l.push(a),i&&l.push(i),0===l.length&&l.push("/compact to summarize and free context · /model to switch models"),l}async function collectMemoryItems(){const e=(await discoverMemoryFiles(process.cwd())).filter(e=>e.exists),t=[];for(const n of e){const e=await loadMemoryFile(n.path),r=e?estimateTokens(e):0,o=process.env.HOME??"",s=o&&n.path.startsWith(o)?`~${n.path.slice(o.length)}`:n.path;t.push({name:n.description,tokens:r,source:s})}return t}function collectBuiltInTools(){const e=[];for(const t of mf){const n=JSON.stringify(t.input_schema??{}),r=estimateTokens(`${t.name} ${t.description??""} ${n}`);e.push({name:t.name,tokens:r})}for(const t of pf){const n=estimateTokens(`${t.name} ${t.type}`);e.push({name:t.name,tokens:n})}return e}function collectMcpTools(){const e=getMcpConnectionManager().getConnectedServers(),t=[];for(const n of e)if("connected"===n.status)for(const e of n.tools){const r=JSON.stringify(e.inputSchema??{}),o=estimateTokens(`${e.name} ${e.description??""} ${r}`);t.push({name:e.name,tokens:o,source:n.name})}return t}async function collectSkillItems(){const[e,{names:t}]=await Promise.all([loadAllSkillSummaries(),loadDisabledSkills()]);return deduplicateSkills({project:e.project.filter(e=>!t.has(e.name)),global:e.global.filter(e=>!t.has(e.name))}).map(e=>({name:e.name,tokens:estimateTokens(`${e.name} ${e.description}`)}))}async function collectAgentItems(){const e=await loadAllAgents(),t=[];for(const n of e.project){const e=estimateTokens(`${n.name} ${n.description} ${n.systemPrompt}`);t.push({name:n.name,tokens:e,source:"project"})}for(const n of e.personal){const e=estimateTokens(`${n.name} ${n.description} ${n.systemPrompt}`);t.push({name:n.name,tokens:e,source:"user"})}return t}function sumTokens(e){let t=0;for(const n of e)t+=n.tokens;return t}async function analyzeContext({contextEngine:e}){const t=e.getContextTokensUsed(),n=e.getSystemPromptBreakdown(),r=getConfiguredModel(),o=getContextLimit(r),s=e.getHistory(),a=countMessagesByRole({messages:s}),i=countToolCalls({messages:s}),l=countImages({messages:s}),u=estimateConversationTokens({messages:s}),d=collectBuiltInTools(),m=collectMcpTools(),[g,h,f]=await Promise.all([collectSkillItems(),collectAgentItems(),collectMemoryItems()]),y=sumTokens(d),w=sumTokens(m),S=sumTokens(g),E=sumTokens(h),k=sumTokens(f),C=t>0,v=n?n.memory:k,T=null!==n&&Math.abs(k-n.memory)>50,x=n?n.taste:0,P=y+w+S+E,A=C?t:u+P+v+x,I=!C&&s.length>0,M=Math.min(A/o*100,100),R=Math.max(0,o-A),_=[];if(A>0){const e=n?n.systemPrompt:Math.max(0,A-u-P-v-x);if(e>0&&_.push({name:wE,tokens:e,detail:n?"identity":"identity + taste"}),v>0&&_.push({name:"Memory",tokens:v,detail:T?"memory files (modified, refreshes next request)":"memory files"}),x>0&&_.push({name:"Taste",tokens:x,detail:"taste.md"}),y>0&&_.push({name:"System tools",tokens:y,detail:`${d.length} built-in`}),w>0){const e=Array.from(new Set(m.map(e=>e.source).filter(e=>"string"==typeof e)));let t=`${m.length} tools`;e.length>3&&(t=`${e.length} servers`),e.length>=1&&e.length<=3&&(t=e.join(", ")),_.push({name:"MCP",tokens:w,detail:t})}S>0&&_.push({name:"Skills",tokens:S,detail:`${g.length} loaded`}),E>0&&_.push({name:"Subagents",tokens:E,detail:`${h.length} loaded`});const r=e+v+x+P,o=C?Math.max(0,t-r):u;o>0&&_.push({name:SE,tokens:o,detail:`${a.user} user · ${a.assistant} assistant`})}_.sort((e,t)=>e.name===wE?-1:t.name===wE||e.name===SE?1:t.name===SE?-1:t.tokens-e.tokens);const D=s.length>0?s[0]?.meta.timestamp??null:null;return{tokensUsed:A,tokenLimit:o,percentage:M,tokensRemaining:R,isEstimated:I,model:r,breakdown:_,autoCompact:buildAutoCompactStatus({tokensUsed:A,tokenLimit:o}),stats:{messageCount:s.length,userMessages:a.user,assistantMessages:a.assistant,toolCalls:i.calls,toolResults:i.results,imageCount:l,sessionStartTime:D},tips:generateTips({percentage:M,conversationTokens:u,totalTokens:A,mcpToolCount:m.length,messageCount:s.length,imageCount:l})}}function formatK(e){if(e<1e3)return String(e);if(e>=1e6){const t=Math.round(e/1e5)/10;return Number.isInteger(t)?`${t}M`:`${t.toFixed(1)}M`}const t=e/1e3;return Number.isInteger(t)?`${t}k`:`${t.toFixed(1)}k`}function formatBreakdownValue(e){return e<1e3?String(e):`${(e/1e3).toFixed(1)}k`}function getLayoutSizes({terminalWidth:e}){const t=Math.max(20,e),n=Math.min(50,Math.max(30,Math.floor(.5*t)));return{labelWidth:16,progressBarWidth:Math.max(10,Math.min(n,t-10)),showBreakdownDetail:t>=70}}function ContextProgress({analysis:e,progressBarWidth:t}){const n=getUsageColor(e.percentage),r=buildBlockBar({percentage:e.percentage,width:t});return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:Xr.BLUE,color:"#f4f4f4",bold:!0},`${Oy}CONTEXT${Oy}`)),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.GRAY},getModelDisplayName(e.model))),ce.createElement(ye,null,ce.createElement(we,{color:n},r.filled),ce.createElement(we,{color:co},r.empty),ce.createElement(we,{bold:!0,color:n},` ${e.percentage.toFixed(1)}%`)),ce.createElement(ye,null,ce.createElement(we,null,formatK(e.tokensUsed)),ce.createElement(we,{color:Xr.GRAY},` / ${formatK(e.tokenLimit)}`),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:n},formatK(e.tokensRemaining)),ce.createElement(we,{color:Xr.GRAY}," remaining"),e.isEstimated&&ce.createElement(we,{color:Xr.DIM}," (estimated)")))}function CompactionDistance({analysis:e}){if(e.percentage<40)return null;const t=e.autoCompact.tiers.find(e=>3===e.tier);if(!t||"passed"===t.status)return null;const{tokensAway:n}=t;let r=Xr.GRAY;return n<=5e4&&(r=Xr.YELLOW),n<=2e4&&(r=Xr.RED),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:r},`~${formatK(n)}`),ce.createElement(we,{color:Xr.DIM}," until auto-compact"))}function BreakdownRow({item:e,labelWidth:t,numWidth:n,showDetail:r}){return ce.createElement(ye,null,ce.createElement(we,null,e.name.padEnd(t)),ce.createElement(we,{bold:!0},formatBreakdownValue(e.tokens).padStart(n)),ce.createElement(we,{color:Xr.GRAY}," tokens"),r&&e.detail&&ce.createElement(we,{color:Xr.DIM},` · ${e.detail}`))}function ContextBreakdown({analysis:e,labelWidth:t,showBreakdownDetail:n}){const r=e.breakdown.filter(e=>e.tokens>0);if(0===r.length)return null;const o=Math.max(4,...r.map(e=>formatBreakdownValue(e.tokens).length));return ce.createElement(ye,{flexDirection:"column",marginTop:1},r.map(e=>ce.createElement(BreakdownRow,{key:e.name,item:e,labelWidth:t,numWidth:o,showDetail:n})))}function ContextTips({tips:e}){return 0===e.length?null:ce.createElement(ye,{flexDirection:"column",marginTop:1},e.map(e=>ce.createElement(ye,{key:e},ce.createElement(we,{color:Xr.CYAN},He.pointer),ce.createElement(we,{color:Xr.GRAY}," ",e))))}function ContextMessage({analysis:e}){const t=getLayoutSizes({terminalWidth:useTerminalWidth()});return ce.createElement(ye,{flexDirection:"column",paddingTop:1},ce.createElement(ContextProgress,{analysis:e,progressBarWidth:t.progressBarWidth}),ce.createElement(CompactionDistance,{analysis:e}),ce.createElement(ContextBreakdown,{analysis:e,labelWidth:t.labelWidth,showBreakdownDetail:t.showBreakdownDetail}),ce.createElement(ContextTips,{tips:e.tips}))}function ContextConfigView({staticKey:e,contextEngineRef:t,onClose:n,setInput:r}){const[o,s]=de(null),[a,i]=de(null);return pe(()=>{let e=!0;return __name(async()=>{if(t.current)try{const n=await analyzeContext({contextEngine:t.current});e&&s(n)}catch{e&&i("Failed to analyze context.")}else e&&i("No active conversation. Start chatting first.")},"load")(),()=>{e=!1}},[t]),Ee((e,t)=>{t.escape&&(r(""),n())}),ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},a?ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Context"),ce.createElement(we,{color:Xr.DIM},a)):o?ce.createElement(ContextMessage,{analysis:o}):ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Context"),ce.createElement(we,{color:Xr.DIM},"Loading context analysis...")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Esc to return to conversation"))))}__name(countMessagesByRole,"countMessagesByRole"),__name(countToolCalls,"countToolCalls"),__name(countImages,"countImages"),__name(estimateConversationTokens,"estimateConversationTokens"),__name(buildAutoCompactStatus,"buildAutoCompactStatus"),__name(getPrimaryTip,"getPrimaryTip"),__name(getSecondaryTip,"getSecondaryTip"),__name(generateTips,"generateTips"),__name(collectMemoryItems,"collectMemoryItems"),__name(collectBuiltInTools,"collectBuiltInTools"),__name(collectMcpTools,"collectMcpTools"),__name(collectSkillItems,"collectSkillItems"),__name(collectAgentItems,"collectAgentItems"),__name(sumTokens,"sumTokens"),__name(analyzeContext,"analyzeContext"),pn(),__name(formatK,"formatK"),__name(formatBreakdownValue,"formatBreakdownValue"),__name(getLayoutSizes,"getLayoutSizes"),__name(ContextProgress,"ContextProgress"),__name(CompactionDistance,"CompactionDistance"),__name(BreakdownRow,"BreakdownRow"),__name(ContextBreakdown,"ContextBreakdown"),__name(ContextTips,"ContextTips"),__name(ContextMessage,"ContextMessage"),__name(ContextConfigView,"ContextConfigView"),pn(),pn(),wn(),Rn();var EE="https://commandcode.ai/studio";function getVersionStatus(){try{return{current:getPackageJson().version,updateAvailable:null}}catch{return{current:"Unknown",updateAvailable:null}}}async function getAuthStatus(){try{const e=await checkAuthStatus(),t=e.userName||null;return{authenticated:e.authenticated,username:t}}catch{return{authenticated:!1,username:null}}}async function getModelStatus(){try{const e=await getSelectedModel(),t=getProviderDisplayName((await loadUserConfig()).provider||null);return{id:e,displayName:getModelDisplayName(e),provider:t}}catch{return{id:"Unknown",displayName:"Unknown",provider:"Unknown"}}}async function getSkillsAgentsStatus(){let e=0,t=0,n=0,r=0,o=0;try{const r=await loadAllSkillSummaries();e=r.global.length,t=r.project.length;const{names:o}=await loadDisabledSkills();n=[...r.global,...r.project].filter(e=>o.has(e.name)).length}catch{}try{const e=await loadAllAgents();r=e.personal.length,o=e.project.length}catch{}return{personalSkills:e,projectSkills:t,disabledSkills:n,personalAgents:r,projectAgents:o}}function execGitAsync(e){return new Promise(t=>{Le("git",e,{encoding:"utf8",cwd:process.cwd(),timeout:3e3},(e,n)=>{t(e?null:n.trim()||null)})})}async function getGitStatus2(){const e=await execGitAsync(["rev-parse","--abbrev-ref","HEAD"]);if(!e)return{branch:null,worktreePath:null,remoteUrl:null,remoteHttpUrl:null};const[t,n]=await Promise.all([execGitAsync(["rev-parse","--show-toplevel"]),execGitAsync(["remote","get-url","origin"])]);return{branch:e,worktreePath:t,remoteUrl:n?formatRemoteUrl(n):null,remoteHttpUrl:n?buildHttpUrl(n):null}}function parseSSHUrl(e){const t=e.match(/@([^:]+):(.+?)(?:\.git)?$/);return t?.[1]&&t[2]?{host:t[1],path:t[2]}:null}function formatRemoteUrl(e){const t=parseSSHUrl(e);if(t)return t.path;const n=e.match(/\/\/[^/]+\/(.+?)(?:\.git)?$/);return n?.[1]?n[1]:e}function buildHttpUrl(e){const t=parseSSHUrl(e);if(t)return`https://${t.host}/${t.path}`;const n=e.match(/^ssh:\/\/[^@]+@([^/]+)\/(.+?)(?:\.git)?$/);return n?.[1]&&n[2]?`https://${n[1]}/${n[2]}`:/^https?:\/\//.test(e)?e.replace(/\.git$/,""):e}function getPrStatus(e){try{const t=getCachedPR(e);return t?{number:t.number,url:t.url,state:t.state}:null}catch{return null}}async function hasTasteMdFiles(e){if(!k(e))return!1;try{return(await z(e,{recursive:!0,encoding:"utf-8"})).some(e=>e.endsWith(".md"))}catch{return!1}}async function getTasteStatus(){const e=t.join(process.cwd(),".commandcode","taste"),n=t.join(e,"taste.md"),r=k(n),o=r||await hasTasteMdFiles(e);let s=!0;try{s=await isTasteLearningEnabled()}catch{}return{fileExists:o,filePath:r?n:e,learningEnabled:s}}function detectProxy(){const e=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;return e?sanitizeProxyUrl(e):null}function sanitizeProxyUrl(e){try{const t=new URL(e);return t.username="",t.password="",t.toString().replace(/\/$/,"")}catch{return"[malformed proxy URL]"}}function getSystemStatus(){let e,t,n,r;try{e=sw(D.platform()),t=bw(),n=kw(),r=Cw()}catch{e="Unknown",t="Unknown",n="Unknown",r="N/A"}return{cwd:process.cwd(),os:e,arch:D.arch(),shell:n,terminal:t,nodeVersion:process.version,ide:"N/A"!==r?r:null,proxy:detectProxy()}}async function gatherStatusData(){const e=safeSync(getVersionStatus,{current:"Unknown",updateAvailable:null}),t=safeSync(getSystemStatus,{cwd:process.cwd(),os:"Unknown",arch:D.arch(),shell:"Unknown",terminal:"Unknown",nodeVersion:process.version,ide:null,proxy:null}),[n,r,o,s,a]=await Promise.all([safeAsync(getAuthStatus,{authenticated:!1,username:null}),safeAsync(getModelStatus,{id:"Unknown",displayName:"Unknown",provider:"Unknown"}),safeAsync(getTasteStatus,{fileExists:!1,filePath:"",learningEnabled:!1}),safeAsync(getSkillsAgentsStatus,{personalSkills:0,projectSkills:0,disabledSkills:0,personalAgents:0,projectAgents:0}),safeAsync(getGitStatus2,{branch:null,worktreePath:null,remoteUrl:null,remoteHttpUrl:null})]),i=safeSync(()=>getPrStatus(a.branch),null);return{version:e,auth:n,model:r,git:a,pr:i,taste:o,skillsAgents:s,system:t}}function safeSync(e,t){try{return e()}catch{return t}}async function safeAsync(e,t){try{return await e()}catch{return t}}function formatCountValue(e,t){const n=e+t;return 0===n?"None":`${n} (${e} user, ${t} project)`}function formatSkillsValue(e){const{personal:t,project:n,disabled:r}=e,o=t+n;return 0===o?"None":0===r?formatCountValue(t,n):`${o-r} active · ${r} off · (${t} user, ${n} project installed)`}function formatSystemValue({system:e}){const t=[`${e.os} ${e.arch}`];return e.ide&&t.push(e.ide),!e.terminal||e.ide&&e.ide.toLowerCase().startsWith(e.terminal.toLowerCase())||t.push(e.terminal),t.push(e.shell),t.push(`Node ${e.nodeVersion}`),t.join(" · ")}__name(getVersionStatus,"getVersionStatus"),__name(getAuthStatus,"getAuthStatus"),__name(getModelStatus,"getModelStatus"),__name(getSkillsAgentsStatus,"getSkillsAgentsStatus"),__name(execGitAsync,"execGitAsync"),__name(getGitStatus2,"getGitStatus"),__name(parseSSHUrl,"parseSSHUrl"),__name(formatRemoteUrl,"formatRemoteUrl"),__name(buildHttpUrl,"buildHttpUrl"),__name(getPrStatus,"getPrStatus"),__name(hasTasteMdFiles,"hasTasteMdFiles"),__name(getTasteStatus,"getTasteStatus"),__name(detectProxy,"detectProxy"),__name(sanitizeProxyUrl,"sanitizeProxyUrl"),__name(getSystemStatus,"getSystemStatus"),__name(gatherStatusData,"gatherStatusData"),__name(safeSync,"safeSync"),__name(safeAsync,"safeAsync"),pn(),wn(),__name(formatCountValue,"formatCountValue"),__name(formatSkillsValue,"formatSkillsValue"),__name(formatSystemValue,"formatSystemValue");var bE=__name(({label:e,value:t,valueColor:n,dimValue:r})=>ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},`${e}:`.padEnd(14)),r?ce.createElement(we,{dimColor:!0},t):ce.createElement(we,{color:n},t)),"Row");function StatusMessage({statusData:e}){const t=e,n=t.version.updateAvailable?`v${t.version.current} → v${t.version.updateAvailable} available`:`v${t.version.current}`,r=`${t.model.provider} · ${t.model.displayName}`,o=t.git.branch||"N/A",s=t.git.worktreePath?toRelativePath(t.git.worktreePath):null,a=t.auth.authenticated?He.tick:He.cross,i=t.auth.authenticated?Xr.WHITE:io.ERROR,l=t.skillsAgents.personalSkills+t.skillsAgents.projectSkills,u=t.skillsAgents.personalAgents+t.skillsAgents.projectAgents,d=t.taste.fileExists?"Active · "+(t.taste.learningEnabled?"Learning on":"Learning off"):"No taste.md";return ce.createElement(ye,{flexDirection:"column",paddingX:0},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Command Code"," "),ce.createElement(we,{dimColor:!0},n)),ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},"Visit "),ce.createElement(Fo,{url:EE,text:EE,color:Xr.CYAN}),ce.createElement(we,{dimColor:!0}," for usage and billing")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{dimColor:!0},"Account:".padEnd(14)),t.auth.authenticated&&t.auth.username?ce.createElement(ce.Fragment,null,ce.createElement(Fo,{url:`https://commandcode.ai/${t.auth.username}/`,text:t.auth.username,color:Xr.CYAN}),ce.createElement(we,{color:i}," ",a)):t.auth.authenticated?ce.createElement(ce.Fragment,null,ce.createElement(we,null,"Authenticated"),ce.createElement(we,{color:i}," ",a)):ce.createElement(ce.Fragment,null,ce.createElement(we,{color:io.WARNING},"Not signed in"),ce.createElement(we,{color:i}," ",a),ce.createElement(we,{dimColor:!0}," — run "),ce.createElement(we,{bold:!0},"/login"))),ce.createElement(bE,{label:"Model",value:r}),ce.createElement(bE,{label:"Branch",value:o,dimValue:!t.git.branch}),s?ce.createElement(bE,{label:"Worktree",value:s}):null,t.git.remoteUrl?ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},"Repository:".padEnd(14)),ce.createElement(Fo,{url:t.git.remoteHttpUrl||`https://github.com/${t.git.remoteUrl}`,text:t.git.remoteUrl,color:Xr.CYAN}),t.pr?ce.createElement(ce.Fragment,null,ce.createElement(we,{dimColor:!0}," · "),ce.createElement(Fo,{url:t.pr.url,text:`#${t.pr.number}`,color:"OPEN"===t.pr.state?Xr.CYAN:Xr.GRAY}),ce.createElement(we,{dimColor:!0}," ","(",t.pr.state.toLowerCase(),")")):null):t.pr?ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},"Pull Request:".padEnd(14)),ce.createElement(Fo,{url:t.pr.url,text:`#${t.pr.number}`,color:"OPEN"===t.pr.state?Xr.CYAN:Xr.GRAY}),ce.createElement(we,{dimColor:!0}," (",t.pr.state.toLowerCase(),")")):null,ce.createElement(bE,{label:"Taste",value:d,dimValue:!t.taste.fileExists}),ce.createElement(bE,{label:"Directory",value:toRelativePath(t.system.cwd)}),ce.createElement(bE,{label:"Skills",value:formatSkillsValue({personal:t.skillsAgents.personalSkills,project:t.skillsAgents.projectSkills,disabled:t.skillsAgents.disabledSkills}),dimValue:0===l}),ce.createElement(bE,{label:"Agents",value:formatCountValue(t.skillsAgents.personalAgents,t.skillsAgents.projectAgents),dimValue:0===u}),ce.createElement(bE,{label:"System",value:formatSystemValue({system:t.system})}),t.system.proxy?ce.createElement(bE,{label:"Proxy",value:t.system.proxy}):null)}function StatusConfigView({staticKey:e,onClose:t,setInput:n}){const[r,o]=de({phase:"loading"});return pe(()=>{let e=!1;return gatherStatusData().then(t=>{e||o({phase:"ready",data:t})}).catch(t=>{if(e)return;const n=t instanceof Error?t.message:"Failed to gather status";o({phase:"error",message:n})}),()=>{e=!0}},[]),Ee((e,r)=>{r.escape&&(n(""),t())}),ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},"ready"===r.phase?ce.createElement(StatusMessage,{statusData:r.data}):"error"===r.phase?ce.createElement(we,{dimColor:!0},"Could not load status: ",r.message):ce.createElement(we,{dimColor:!0},"Gathering status…"),ce.createElement(ye,{marginTop:1},ce.createElement(we,{dimColor:!0},"Press Esc to return to conversation"))))}__name(StatusMessage,"StatusMessage"),__name(StatusConfigView,"StatusConfigView"),pn(),pn();var kE=null!==Vp()||!!process.env.VSCODE_PID;function moveFocusDown(e,t){const{suggestionCount:n,activeDirCount:r}=t;return"input"===e.zone?n>0?{...e,zone:"suggestions",suggestionIndex:0}:r>0?{...e,zone:"active-dir",activeDirIndex:0}:e:"suggestions"===e.zone?e.suggestionIndex<n-1?{...e,suggestionIndex:e.suggestionIndex+1}:r>0?{...e,zone:"active-dir",activeDirIndex:0}:{...e,zone:"input"}:e.activeDirIndex<r-1?{...e,activeDirIndex:e.activeDirIndex+1}:{...e,zone:"input"}}function moveFocusUp(e,t){const{suggestionCount:n,activeDirCount:r}=t;return"input"===e.zone?r>0?{...e,zone:"active-dir",activeDirIndex:r-1}:n>0?{...e,zone:"suggestions",suggestionIndex:n-1}:e:"suggestions"===e.zone?e.suggestionIndex>0?{...e,suggestionIndex:e.suggestionIndex-1}:{...e,zone:"input"}:e.activeDirIndex>0?{...e,activeDirIndex:e.activeDirIndex-1}:n>0?{...e,zone:"suggestions",suggestionIndex:n-1}:{...e,zone:"input"}}function getAdjustedSuggestionOffset(e){const{selectedIndex:t,currentOffset:n,maxVisible:r,totalSuggestions:o}=e;return o<=r?0:t<n?t:t>=n+r?t-r+1:n}function getSuggestionBase(e){const n=resolveDirectoryPath(e),r=/[\\/]$/.test(e),o=e.replace(/\\/g,"/");if(o.endsWith("/."))return{searchDirectory:n,prefix:".",outputPrefix:`${o.slice(0,-1)}`};if(r)return{searchDirectory:n,prefix:"",outputPrefix:o};const s=o.lastIndexOf("/");return-1===s?{searchDirectory:t.dirname(n),prefix:t.basename(n),outputPrefix:""}:{searchDirectory:t.dirname(n),prefix:t.basename(n),outputPrefix:o.slice(0,s+1)}}function getDirectorySuggestions(e){const t=e.trim();if(!t)return[];try{const{searchDirectory:e,prefix:n,outputPrefix:r}=getSuggestionBase(t),o=n.startsWith(".")||r.includes("/.");return E.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).filter(e=>!!o||!e.name.startsWith(".")).filter(e=>!n||e.name.toLowerCase().startsWith(n.toLowerCase())).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${r}${e.name}/`)}catch(e){const t=e.code;return"ENOENT"!==t&&"ENOTDIR"!==t&&console.error(`Warning: Could not list directory suggestions: ${t}`),[]}}function getFooterText(e){return"active-dir"===e.focusZone?"[Del] Remove [↑↓] Navigate [Tab] Autocomplete [Esc] Close":"[Enter] Add [↑↓] Navigate [Tab] Autocomplete [Esc] Close"}pn(),pn(),__name(function createInitialFocusState(){return{zone:"input",suggestionIndex:0,activeDirIndex:0}},"createInitialFocusState"),__name(moveFocusDown,"moveFocusDown"),__name(moveFocusUp,"moveFocusUp"),__name(getAdjustedSuggestionOffset,"getAdjustedSuggestionOffset"),__name(getSuggestionBase,"getSuggestionBase"),__name(getDirectorySuggestions,"getDirectorySuggestions"),__name(getFooterText,"getFooterText");var CE=__name(({onClose:e})=>{const[t,n]=de(""),[r,o]=de(null),[s,a]=de([]),[i,l]=de(getAdditionalDirectories()),[u,d]=de({zone:"input",suggestionIndex:0,activeDirIndex:0}),[m,g]=de(0);pe(()=>{a(t?getDirectorySuggestions(t):[]),d(e=>({...e,zone:"input"})),g(0)},[t]),pe(()=>{if(!r||"success"!==r.tone)return;const e=setTimeout(()=>{o(null)},5e3);return()=>clearTimeout(e)},[r]);const h=__name(e=>{const t=addDirectory(e);"error"!==t.status?"skipped"!==t.status?(o({tone:"success",text:`Added ${t.displayPath} to directory scope`}),n(""),l(getAdditionalDirectories()),d({zone:"input",suggestionIndex:0,activeDirIndex:0})):o({tone:"warning",text:t.message}):o({tone:"error",text:t.message})},"submitPath"),f=__name(e=>{if(!removeAdditionalDirectory(e))return o({tone:"error",text:`${formatDirectoryForDisplay(e)} is no longer in workspace scope`}),void l(getAdditionalDirectories());o({tone:"success",text:`Removed ${formatDirectoryForDisplay(e)} from directory scope`}),l(getAdditionalDirectories()),d(e=>{if("active-dir"!==e.zone)return e;const t=Math.max(0,e.activeDirIndex-1);return{...e,activeDirIndex:t}})},"handleRemove");Ee((t,r)=>{if(r.escape)e();else{if(r.return)return"suggestions"===u.zone&&s[u.suggestionIndex]?void h(s[u.suggestionIndex]):void 0;if((r.delete||r.backspace)&&"active-dir"===u.zone&&i[u.activeDirIndex])f(i[u.activeDirIndex]);else{if(r.tab&&s.length>0){const e=s[u.suggestionIndex]??s[0];return void(e&&(n(e),d(e=>({...e,zone:"input"})),o(null)))}r.downArrow?d(e=>moveFocusDown(e,{suggestionCount:s.length,activeDirCount:i.length})):r.upArrow&&d(e=>moveFocusUp(e,{suggestionCount:s.length,activeDirCount:i.length}))}}}),pe(()=>{"suggestions"===u.zone&&g(e=>getAdjustedSuggestionOffset({selectedIndex:u.suggestionIndex,currentOffset:e,maxVisible:8,totalSuggestions:s.length}))},[u,s.length]),pe(()=>{d(e=>"suggestions"===e.zone&&e.suggestionIndex>=s.length?{...e,zone:"input",suggestionIndex:Math.max(0,s.length-1)}:"active-dir"===e.zone&&e.activeDirIndex>=i.length?{...e,zone:"input",activeDirIndex:Math.max(0,i.length-1)}:e)},[s.length,i.length]);const y=s.slice(m,m+8),w=getFooterText({focusZone:u.zone});return ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:Xr.CYAN,paddingX:1,paddingY:0},ce.createElement(we,{bold:!0,color:Xr.CYAN},"Add directory to workspace"),ce.createElement(we,{color:Xr.GRAY},"Command Code will be able to read files in this directory and make edits when accept edits mode is on."),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.GRAY},"Added directories"),0===i.length?ce.createElement(we,{color:Xr.GRAY}," None yet"):i.map((e,t)=>{const n="active-dir"===u.zone&&u.activeDirIndex===t;return ce.createElement(we,{key:e,color:n?Xr.YELLOW:Xr.GREEN,bold:n&&isLightTheme()},n?` ${He.pointer} `:" ",formatDirectoryForDisplay(e))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0,color:Xr.WHITE},"Path")),ce.createElement(ye,null,ce.createElement(TextInput,{value:t,focus:"input"===u.zone,prefix:`${"input"===u.zone?He.pointer:" "} `,prefixColor:"input"===u.zone?Xr.CYAN:Xr.GRAY,onChange:e=>{n(e),o(null)},onSubmit:h})),!t&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Examples: ../shared ~/docs /abs/path")),r&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:{error:Xr.RED,warning:Xr.YELLOW,success:Xr.GREEN}[r.tone]},r.text)),s.length>0&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Suggestions"),y.map((e,t)=>{const n=m+t,r="suggestions"===u.zone&&u.suggestionIndex===n;return ce.createElement(we,{key:e,color:r?Xr.CYAN:Xr.GRAY,bold:r&&isLightTheme()},r?` ${He.pointer} `:" ",e)})),ce.createElement(ye,{marginTop:1},ce.createElement(BracketedText,{text:w,color:Xr.DIM})))},"AddDirModal");pn(),pn(),wn(),pn(),pn(),wn();var vE=__name(()=>t.join(D.homedir(),".commandcode","agents"),"getRootAgentDir"),TE=__name(()=>t.join(process.cwd(),".commandcode","agents"),"getLocalAgentDir"),xE=__name(({config:e,onSaveComplete:n,viewOnly:r=!1})=>{const[o,s]=de("idle"),[a,i]=de(""),l=[...mf.map(e=>e.name),...pf.map(e=>e.name)],u=__name(async()=>{if(!e.agentType||!e.sysPrompt)return s("error"),void i("Agent configuration is incomplete");s("saving");try{const r="personal"===e.location?vE():TE();await U.mkdir(r,{recursive:!0});const o=`${e.agentType}.md`,s=t.join(r,o),a=Array.from(e.selectedTools).map(e=>ff[e]||e).join(", "),i=0===e.selectedTools.size?"none":e.selectedTools.size===l.length?'"*"':JSON.stringify(a),u=`---\nname: "${e.agentType}"\ndescription: ${JSON.stringify(e.ccToolDefinition)}\ntools: ${i}\n---\n\n${e.sysPrompt}\n`;await U.writeFile(s,u,"utf-8"),n(e.agentType)}catch(e){console.error("Error saving agent:",e),s("error"),i(e instanceof Error?e.message:"Unknown error occurred")}},"handleSaveAgent");Ee((e,t)=>{r||!t.return||"idle"!==o&&"error"!==o||u()});const d=Array.from(e.selectedTools).map(e=>ff[e]||e).join(", "),m="personal"===e.location?`~/.commandcode/agents/${e.agentType}`:`.commandcode/agents/${e.agentType}`;return ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Name:"),ce.createElement(we,{color:Xr.GRAY},e.agentType)),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Location:"),ce.createElement(we,{color:Xr.GRAY},m)),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Tools:"),ce.createElement(we,{color:Xr.GRAY},0===e.selectedTools.size?"None":e.selectedTools.size===l.length?"*":d))),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Description"),ce.createElement(we,{color:Xr.GRAY},"(Tells ","Command Code"," when to use this agent):")),ce.createElement(we,{color:Xr.GRAY},e.ccToolDefinition),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"System Prompt:")),ce.createElement(we,{color:Xr.GRAY},e.sysPrompt),!r&&ce.createElement(ye,{marginTop:1},"idle"===o&&ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.GREEN,dimColor:!0},"Press"),ce.createElement(we,{color:Xr.GREEN,bold:!0},"Enter"),ce.createElement(we,{color:Xr.GREEN,dimColor:!0},"to save • Esc to cancel")),"saving"===o&&ce.createElement(we,{color:Xr.YELLOW},"Saving agent..."),"saved"===o&&ce.createElement(we,{color:Xr.GREEN},He.tick," ",a),"error"===o&&ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.RED},He.cross," Error: ",a),ce.createElement(we,{color:Xr.GRAY},"Press Enter to retry"))))},"AgentSummary"),PE=__name(({agent:e,onBack:t,setRevalidateAgent:n,isReadOnly:r=!1})=>{const[o,s]=de("menu"),a=[...mf.map(e=>e.name),...pf.map(e=>e.name)];let i=new Set;if("*"===e.tools||'"*"'===e.tools)i=new Set(a);else if(e.tools&&"none"!==e.tools){const t=e.tools.replace(/^"|"$/g,"").split(",").map(e=>e.trim()).map(e=>yf[e]||e);i=new Set(t)}const l={location:e.location,method:"manual",agentType:e.name,sysPrompt:e.sysPrompt,ccToolDefinition:e.description,recommendedMethodDescription:"",selectedTools:i},u=[{label:"1. View agent",value:"view"},...r?[]:[{label:"2. Delete agent",value:"delete"}],{label:r?"2. Back":"3. Back",value:"back"}],d=__name(e=>{"back"===e.value?t():"view"===e.value?s("view"):"edit"===e.value?s("edit"):"delete"===e.value&&s("delete")},"handleMenuSelect"),m=[{label:"1. Yes, delete",value:"confirm-delete"},{label:"2. No, cancel",value:"cancel"}],g=__name(async r=>{if("confirm-delete"===r.value)try{await U.unlink(e.filePath),n(!0),t()}catch(e){console.error(`Failed to delete agent: ${e}`),s("menu")}else s("menu")},"handleDeleteSelect");return Ee((e,n)=>{if(n.escape)"menu"===o?t():s("menu");else if(n.return&&"view"===o)s("menu");else if(1===e.length&&e>="1"&&e<="9"){const t=Number(e)-1;if("menu"===o){const e=u[t];e&&d(e)}else if("delete"===o){const e=m[t];e&&g(e)}}}),"view"===o?ce.createElement(ye,{flexDirection:"column"},ce.createElement(xE,{config:l,onSaveComplete:()=>s("menu"),viewOnly:!0}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Press Enter to go back"))):"edit"===o?ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.YELLOW},"Edit functionality coming soon..."),ce.createElement(we,{color:Xr.GRAY},"Press Esc to go back")):"delete"===o?ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.RED},"Delete agent"),ce.createElement(we,{color:Xr.GRAY},"Are you sure you want to delete the agent ",e.name,"?")),ce.createElement(ye,null,ce.createElement(bt,{items:m,onSelect:g,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e},` ${t} `)}))):ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE,bold:!0},e.name),ce.createElement(ye,{marginTop:1},ce.createElement(bt,{items:u,onSelect:d,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e},` ${t} `)})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Press ↑↓ to navigate · Enter to select · Esc to go back")))},"AgentDetails"),AE=__name(({handleSelect:e,createdAgentName:n})=>{const[r,o]=de([]),[s,a]=de([]),[i,l]=de([]),[u,d]=de(!0),[m,g]=de(!1),[h,f]=de(null),[y,w]=de(!1),[S,E]=de(0),[k,C]=de(0),v=useTerminalHeight(),T=__name(()=>t.join(D.homedir(),".commandcode","agents"),"getRootAgentDir"),x=__name(async(e,n)=>{try{g(!1);const r=(await U.readdir(e)).filter(e=>e.endsWith(".md"));return(await Promise.all(r.map(async r=>{try{const o=t.join(e,r),s=await U.readFile(o,"utf-8"),{data:a,content:i}=ee(s);let l=a.tools||"";return"*"!==l&&'"*"'!==l||(l="*"),{name:a.name||r.replace(".md",""),description:a.description||"",tools:l,sysPrompt:i.trim(),location:n,filePath:o}}catch(e){return console.error(`Error loading agent from ${r}:`,e),null}}))).filter(e=>null!==e)}catch{return[]}},"loadAgentsFromDirectory");pe(()=>{__name(async()=>{d(!0);const[e,...t]=await Promise.all([x(T(),"personal"),...getProjectAgentDirs().map(e=>x(e,"project"))]),n=new Set,r=[];for(const e of t.flat())n.has(e.name)||(n.add(e.name),r.push(e));const s=Ag.map(e=>({name:e.name,description:e.description,tools:Array.isArray(e.tools)?e.tools.join(", "):e.tools,sysPrompt:e.systemPrompt,location:"personal",filePath:`__builtin__:${e.name}`}));o(e),a(r),l(s),d(!1)},"loadAgents")()},[m]);const P=[{label:"Create new agent",value:"create_new_agent"}];r.forEach(e=>{P.push({label:e.name,value:e.filePath})}),s.forEach(e=>{P.push({label:e.name,value:e.filePath})});const A=r.length+s.length,I=(r.length>0?1:0)+(s.length>0?1:0),M=__name(e=>0===e?"action":e<=r.length?"user":"project","sectionOf"),R=v-1,_=Math.max(4,R-11-i.length-2*I),N=__name(t=>{if("create_new_agent"===t.value)e(t);else{const e=[...r,...s].find(e=>e.filePath===t.value);e&&(f(e),w(!0))}},"handleAgentSelect");if(Ee((e,t)=>{if(t.upArrow)E(e=>Math.max(0,e-1));else if(t.downArrow)E(e=>Math.min(P.length-1,e+1));else if(t.return){const e=P[S];e&&N(e)}},{isActive:!u&&!y}),pe(()=>{E(e=>Math.min(e,Math.max(0,P.length-1)))},[P.length]),pe(()=>{C(e=>clampScrollOffset({cursor:S,total:P.length,maxVisible:_,currentOffset:e}))},[S,P.length,_]),u)return ce.createElement(we,{color:Xr.GRAY},"Loading agents...");if(y&&h){const e=h.filePath.startsWith("__builtin__:");return ce.createElement(PE,{agent:h,onBack:()=>{w(!1),f(null)},setRevalidateAgent:g,isReadOnly:e})}const $=k,L=k+_,O=P.slice($,L),F=P.length>_;let B=null;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Agents"),A>0?ce.createElement(we,{color:Xr.GRAY}," ","(",A," agent",A>1?"s":"",")"):ce.createElement(we,{color:Xr.GRAY}," (No custom agents)")),n&&ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{color:Xr.GREEN,dimColor:!0},"Created agent: ",n)),ce.createElement(ye,{flexDirection:"column"},O.map((e,t)=>{const n=$+t,r=M(n),o="action"!==r&&r!==B;B=r;const s=n===S,a="user"===r?"User agents":"Project agents";return ce.createElement(ce.Fragment,{key:e.value},o&&ce.createElement(ye,{marginTop:0===t?0:1},ce.createElement(we,{color:co,bold:!0},a)),ce.createElement(ye,null,ce.createElement(we,{color:s?Xr.WHITE:Xr.GRAY,backgroundColor:s?Co:void 0,bold:s},e.label," ")))})),F&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",$+1,"–",Math.min(L,P.length)," of ",P.length,$>0?" · ↑ more":"",L<P.length?" · ↓ more":"")),i.length>0&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:co,bold:!0},"Default agents"),i.map(e=>ce.createElement(we,{key:e.filePath,color:Xr.DIM},e.name.charAt(0).toUpperCase()+e.name.slice(1)))),ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM},"Create specialized subagents that Command Code can delegate to."),ce.createElement(we,{color:Xr.DIM},"Each subagent has its own context window, custom system prompt, and specific tools.")))},"ManageAgents");pn(),wn(),pn(),pn(),wn();var IE=__name(({onSelect:e})=>ce.createElement(bt,{items:[{label:"1. Project (.commandcode/agents/)",value:"project"},{label:"2. Personal (~/.commandcode/agents/)",value:"personal"}],onSelect:t=>{"project"!==t.value&&"personal"!==t.value||e(t.value)},indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},e?">":" "),itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},` ${t}`)}),"LocationSelector");pn(),wn(),An();var ME=__name(({step:e,agentType:t,sysPrompt:n,ccToolDefinition:r,onAgentTypeChange:o,onSysPromptChange:s,onCCToolDefinitionChange:a,onAgentTypeSubmit:i,onSysPromptSubmit:l,onCCToolDefinitionSubmit:u})=>{const[d,m]=de(!1),[g,h]=de(!1),f=he(async e=>{const t=processBracketedPaste(e);if(!t.isPasteStart||d){if(!d||t.isPasteEnd){if(d&&t.isPasteEnd){m(!1);const e=await detectClipboardText();return void(e?s(e):t.cleanedContent&&s(t.cleanedContent))}s(e)}}else if(m(!0),t.isPasteEnd){m(!1);const e=await detectClipboardText();return void(e?s(e):t.cleanedContent&&s(t.cleanedContent))}},[d,s]),y=he(async e=>{const t=processBracketedPaste(e);if(!t.isPasteStart||g){if(!g||t.isPasteEnd){if(g&&t.isPasteEnd){h(!1);const e=await detectClipboardText();return void(e?a(e):t.cleanedContent&&a(t.cleanedContent))}a(e)}}else if(h(!0),t.isPasteEnd){h(!1);const e=await detectClipboardText();return void(e?a(e):t.cleanedContent&&a(t.cleanedContent))}},[g,a]);return"agentType"===e?ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE},"Enter a unique identifier for your agent:"),t&&(Object.values(ff).some(e=>Ye(e)===Ye(t))||Object.keys(ff).some(e=>Ye(e)===Ye(t)))&&ce.createElement(we,{color:Xr.RED},He.warning," This name conflicts with an existing tool name. Please choose a different name."),t&&isReservedAgentName(Ye(t))&&ce.createElement(we,{color:Xr.RED},He.warning," This name is reserved. Reserved names: ",Pg.join(", "))),ce.createElement(TextInput,{showCursor:!0,value:t||"",onSubmit:()=>{if(null===t||0===t.trim().length)return;const e=Ye(t);Object.values(ff).some(t=>Ye(t)===e)||Object.keys(ff).some(t=>Ye(t)===e)||isReservedAgentName(e)||i()},onChange:o,placeholder:"e.g. code-reviewer, unit-tester"})):"sysPrompt"===e?ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE},"Enter the system prompt for your agent:"),ce.createElement(we,{color:Xr.GRAY},"Be comprehensive for best results.")),ce.createElement(TextInput,{showCursor:!0,value:n||"",onSubmit:()=>{null!==n&&0!==n.trim().length&&l()},onChange:f,placeholder:"You are a helpful coding reviewer..."})):"ccToolDefinition"===e?ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.WHITE},"When should ","Command Code"," use this agent?"),ce.createElement(TextInput,{showCursor:!0,value:r,onSubmit:()=>{0!==r.trim().length&&u()},onChange:y,placeholder:"e.g., Use this agent when you are done writing code..."})):null},"ManualFlow");pn();var RE=__name(({onSelect:e})=>ce.createElement(bt,{items:[{label:"1. Generate with Command Code (recommended)",value:"recommended"},{label:"2. Manual configuration",value:"manual"}],onSelect:t=>{"recommended"!==t.value&&"manual"!==t.value||e(t.value)},indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},e?">":" "),itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},` ${t}`)}),"MethodSelector");pn(),pn();var _E=["·","○","◇","☆","✧","☆","◇","○","⌘"],DE=[12,5,4,4,4,4,4,5,16],NE=[5,4,4,4,4,4,5];function getWaveSymbol(e){const t=e%88;let n=0;for(let e=0;e<DE.length;e++)if(n+=DE[e],t<n)return _E[e];const r=t-58;n=0;for(let e=0;e<NE.length;e++)if(n+=NE[e],r<n)return _E[7-e];return _E[0]}function ShimmerText({text:e,offset:t,bg:n}){const r=ge(()=>e.split(""),[e]),o=__name(e=>{const n=e-(t-5);return n>=0&&n<So.length?So[n]:Eo},"getCharColor");return ce.createElement(we,null,r.map((e,t)=>ce.createElement(we,{key:`${t}:${e}`,color:o(t),backgroundColor:n},e)))}function CMDIcon({frame:e,color:t}){return ce.createElement(we,{color:t??Zr,bold:!0},`${getWaveSymbol(e)} `)}function formatToken(e){return e<1e3?`${e}`:`${(e/1e3).toFixed(1)}k`}function formatTime3(e){return e<6e4?`${Math.floor(e/1e3)}s`:`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`}__name(getWaveSymbol,"getWaveSymbol"),__name(ShimmerText,"ShimmerText"),__name(CMDIcon,"CMDIcon"),__name(formatToken,"formatToken"),__name(formatTime3,"formatTime");var $E=__name(({status:e,timeElapsed:t,tokens:n})=>{const[r,o]=de(0),[s,a]=de(0),i=me(n);i.current=n;const l=getTerminalWidth(),[u,d]=de(()=>l>=72?"all":l>=42?"medium":"none");pe(()=>{d(e=>"all"===e?l<68?l>=42?"medium":"none":"all":"medium"===e?l>=72?"all":l<38?"none":"medium":l>=72?"all":l>=42?"medium":"none")},[l]),pe(()=>{const e=setInterval(()=>{o(e=>(e+1)%88),a(e=>{const t=i.current;if(e===t)return e;const n=t-e,r=e+Math.sign(n)*Math.max(1,Math.ceil(Math.abs(n)/10));return n>0?Math.min(r,t):Math.max(r,t)})},80);return()=>clearInterval(e)},[]);const m=r%(e.length+10),g="all"===u,h="medium"===u;return Nf.statusRender({width:l,layoutMode:u,status:e,frame:r}),ce.createElement(ye,{width:l,height:1,paddingLeft:0,marginLeft:0},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:so.BG,color:so.FG}," "),ce.createElement(we,{backgroundColor:so.BG},ce.createElement(CMDIcon,{frame:4*r,color:so.FG})),ce.createElement(ShimmerText,{text:e,offset:m,bg:so.BG}),ce.createElement(we,{backgroundColor:so.BG,color:so.FG}," ")),g&&ce.createElement(ye,{columnGap:1,marginLeft:1},ce.createElement(we,{bold:!0,color:Xr.GRAY},"esc"),ce.createElement(we,{color:Xr.DIM},"to interrupt"),ce.createElement(we,{color:Xr.DIM},"•"),ce.createElement(we,{color:Xr.DIM},formatTime3(t)),ce.createElement(we,{color:Xr.DIM},"•"),ce.createElement(we,{color:Xr.GRAY},He.arrowDown),ce.createElement(we,{color:Xr.DIM},formatToken(Math.round(s)))),h&&ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},formatToken(Math.round(s)))))},"Status");An();var LE=__name(({description:e,onChange:t,onSubmit:n,loading:r,errorMessage:o})=>{const[s,a]=de(!1),[i,l]=de(0),[u,d]=de(0);pe(()=>{if(!r)return;const e=setInterval(()=>d(e=>e+1),50);return()=>clearInterval(e)},[r]);const m=he(()=>{0!==e.trim().length&&n()},[e,n]),g=he(async e=>{const n=processBracketedPaste(e);if(!n.isPasteStart||s){if(!s||n.isPasteEnd){if(s&&n.isPasteEnd){a(!1);const e=await detectClipboardText();return void(e?(l(e=>e+1),t(e)):n.cleanedContent&&(l(e=>e+1),t(n.cleanedContent)))}t(e)}}else if(a(!0),n.isPasteEnd){a(!1);const e=await detectClipboardText();return void(e?(l(e=>e+1),t(e)):n.cleanedContent&&(l(e=>e+1),t(n.cleanedContent)))}},[s,t]);return ce.createElement(ye,{flexDirection:"column"},r?ce.createElement(ye,null,ce.createElement(CMDIcon,{frame:u}),ce.createElement(we,{color:Xr.WHITE},"Generating agent from description...")):ce.createElement(TextInput,{key:i,showCursor:!0,value:e,placeholder:"e.g. Help me review my code...",onChange:g,onSubmit:m}),o&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.RED},`${He.warning} ${o}`)))},"RecommendedFlow");pn();var OE=__name(({selectedTools:e,onToggleTool:t,onToggleCategory:n,onComplete:r})=>{const[o,s]=de(!1),[a,i]=de(0),[l,u]=de(0),d=useTerminalHeight(),m=ge(()=>[...mf.map(e=>e.name),...pf.map(e=>e.name)],[]),g=ge(()=>[{name:"All tools",tools:m},{name:"Read-only tools",tools:m.filter(e=>"read_file"===e||"read_directory"===e||"read_multiple_files"===e||"grep"===e)},{name:"Edit tools",tools:m.filter(e=>"edit_file"===e||"write_file"===e)},{name:"Execution tools",tools:m.filter(e=>"shell_command"===e)},{name:"Search tools",tools:m.filter(e=>"web_search"===e||"web_fetch"===e)},{name:"Other tools",tools:m.filter(e=>!["read_file","read_directory","read_multiple_files","grep","edit_file","write_file","shell_command","web_search","web_fetch"].includes(e))}].filter(e=>e.tools.length>0),[m]),h=ge(()=>{const e=[];return e.push({type:"continue",value:"continue"}),e.push({type:"divider",value:"divider-1"}),o?(g.forEach(t=>{e.push({type:"category",value:t.name})}),e.push({type:"divider",value:"divider-3"}),e.push({type:"toggle",value:"hide-advanced"}),e.push({type:"spacer",value:"spacer-1"}),e.push({type:"label",value:"Individual Tools:"}),m.forEach(t=>{e.push({type:"tool",value:t})})):(g.forEach(t=>{e.push({type:"category",value:t.name})}),e.push({type:"divider",value:"divider-2"}),e.push({type:"toggle",value:"show-advanced"})),e},[o,g,e,m]),f=h.map((t,n)=>{if("divider"===t.type)return{label:"─".repeat(30),value:n,type:"divider"};if("spacer"===t.type)return{label:"",value:n,type:"spacer"};if("label"===t.type)return{label:t.value,value:n,type:"label"};if("continue"===t.type)return{label:"[ Continue ]",value:n,type:"continue"};if("toggle"===t.type)return{label:"show-advanced"===t.value?"[ Show advanced options ]":"[ Hide advanced options ]",value:n,type:"toggle"};if("category"===t.type){const r=g.find(e=>e.name===t.value),o=r?.tools.every(t=>e.has(t));return r?.tools.some(t=>e.has(t)),{label:`${o?"[x]":"[ ]"} ${t.value}`,value:n,type:"category"}}return"tool"===t.type?{label:` ${e.has(t.value)?"[x]":"[ ]"} ${ff[t.value]||t.value}`,value:n,type:"tool"}:{label:"",value:n,type:"unknown"}}),y=f.filter(e=>"divider"!==e.type&&"spacer"!==e.type&&"label"!==e.type),w=Math.max(5,d-1-10),S=y[a]?.value??0;pe(()=>{u(e=>clampScrollOffset({cursor:S,total:f.length,maxVisible:w,currentOffset:e}))},[S,f.length,w]);const E=l,k=l+w,C=f.slice(E,k),v=f.length>w;return Ee((e,l)=>{if(l.upArrow)i(e=>{const t=e-1;return t<0?y.length-1:t});else if(l.downArrow)i(e=>{const t=e+1;return t>=y.length?0:t});else if(l.return||" "===e){const e=y[a];if(e){const a=h[e.value];if(!a)return;"continue"===a.type?r():"toggle"===a.type?(s(!o),i(0)):"category"===a.type?n(a.value):"tool"===a.type&&t(a.value)}}}),ce.createElement(ye,{flexDirection:"column"},C.map(e=>{const t=y.findIndex(t=>t.value===e.value),n=-1!==t&&t===a;if("divider"===e.type)return ce.createElement(ye,{key:`divider-${e.value}`},ce.createElement(we,{color:Xr.GRAY}," ",e.label));if("spacer"===e.type)return ce.createElement(ye,{key:`spacer-${e.value}`,height:1});if("label"===e.type)return ce.createElement(ye,{key:`label-${e.value}`},ce.createElement(we,{color:Xr.GRAY}," ",e.label));const r="continue"===e.type;return ce.createElement(ye,{key:`item-${e.value}`},ce.createElement(we,{color:n?Xr.WHITE:Xr.GRAY,bold:r&&n},n?">":" "," ",e.label))}),v&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.GRAY}," ","Showing ",E+1,"–",Math.min(k,f.length)," of"," ",f.length,E>0?" · ↑ more":"",k<f.length?" · ↓ more":"")),ce.createElement(ye,{marginTop:1},e.size===m.length&&ce.createElement(we,{color:Xr.GRAY},"All tools selected"),e.size>0&&e.size<m.length&&ce.createElement(we,{color:Xr.GRAY},e.size," tools selected"),0===e.size&&ce.createElement(we,{color:Xr.GRAY},"No tools selected")))},"ToolsSelector"),FE=__name(({onComplete:e})=>{const[t,n]=de("location"),[r,o]=de(!1),[s,a]=de(null),[i,l]=de("agentType"),u=ge(()=>[...mf.map(e=>e.name),...pf.map(e=>e.name)],[]),d=__name(()=>({location:null,method:null,agentType:null,sysPrompt:null,ccToolDefinition:"",recommendedMethodDescription:"",selectedTools:new Set(u)}),"getInitialConfig"),[m,g]=de(d()),h=__name(t=>{n("location"),l("agentType"),g(d()),e(t)},"resetToDefaults"),f=__name(()=>{if("location"===t)return"Choose location";if("method"===t)return"Creation method";if("configuration"===t){if("recommended"===m.method)return"Describe what this agent should do and when it should be used (be comprehensive for best results)";if("agentType"===i)return"Agent type (identifier)";if("sysPrompt"===i)return"System prompt";if("ccToolDefinition"===i)return"Description (Tell Command Code when to use this agent)"}return"tools"===t?"Select tools":"summary"===t?"Confirm and save":""},"getSubText"),y=__name(e=>{g({...m,location:e}),n("method")},"handleLocationSelect"),w=__name(e=>{g({...m,method:e}),n("configuration")},"handleMethodSelect"),S=__name(async()=>{try{a(null),o(!0);const e=await getConfiguredProvider(),t=await isOAuthEnforced(),{token:r,oauthProvider:s}=await getOAuthCredentials({provider:e});validateOAuthToken({token:r,provider:e});const i={[Rt.INTERNAL_TEAM_FLAG_HEADER]:t.toString()};r&&(i[Rt.OAUTH_TOKEN]=`Bearer ${r}`,s&&(i[Rt.OAUTH_PROVIDER]=s));const l=getApiBaseUrl(),u=new Nu({baseUrl:l}),d=parseModelString(getConfiguredModel()).modelId,h=await u.post({headers:i,endpoint:Dt.ALPHA.AGENT.GENERATE,body:{description:m.recommendedMethodDescription,model:d}});g({...m,agentType:Ye(h.agentName),sysPrompt:h.systemPrompt,ccToolDefinition:h.toolDescription}),n("tools")}catch(e){if(e instanceof vs&&400===e.status&&e.message?.toLowerCase().includes("insufficient credits")){const e=await getBillingLink({billingLink:null,setBillingLink:__name(()=>{},"setBillingLink")})??"https://commandcode.ai/billing";a(`You have insufficient credits to make this request. Please purchase more credits to continue using Command Code: ${e}`)}else a("An error occurred while generating the agent. Please try again.")}finally{o(!1)}},"handleRecommendedSubmit"),E=__name(()=>{g({...m,agentType:Ye(m.agentType)}),l("sysPrompt")},"handleManualAgentTypeSubmit"),k=__name(()=>{l("ccToolDefinition")},"handleManualSysPromptSubmit"),C=__name(()=>{n("tools")},"handleManualCCToolDefinitionSubmit"),v=__name(()=>{n("summary")},"handleToolsComplete"),T=__name(e=>{const t=new Set(m.selectedTools);t.has(e)?t.delete(e):t.add(e),g({...m,selectedTools:t})},"handleToggleTool"),x=__name(e=>{const t=[{name:"All tools",tools:u},{name:"Read-only tools",tools:u.filter(e=>"read_file"===e||"read_directory"===e||"read_multiple_files"===e||"grep"===e)},{name:"Edit tools",tools:u.filter(e=>"edit_file"===e||"write_file"===e)},{name:"Execution tools",tools:u.filter(e=>"shell_command"===e)},{name:"Search tools",tools:u.filter(e=>"web_search"===e||"web_fetch"===e)},{name:"Other tools",tools:u.filter(e=>!["read_file","read_directory","read_multiple_files","grep","edit_file","write_file","shell_command","web_search","web_fetch"].includes(e))}].find(t=>t.name===e);if(!t)return;const n=new Set(m.selectedTools);t.tools.every(e=>n.has(e))?t.tools.forEach(e=>n.delete(e)):t.tools.forEach(e=>n.add(e)),g({...m,selectedTools:n})},"handleToggleCategory");return ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Create new agent"),ce.createElement(we,{color:Xr.GRAY},f())),ce.createElement(ye,null,"location"===t&&ce.createElement(IE,{onSelect:y}),"method"===t&&ce.createElement(RE,{onSelect:w}),"configuration"===t&&"recommended"===m.method&&ce.createElement(LE,{description:m.recommendedMethodDescription,onChange:e=>g({...m,recommendedMethodDescription:e}),loading:r,errorMessage:s,onSubmit:S}),"configuration"===t&&"manual"===m.method&&ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ME,{step:i,agentType:m.agentType,sysPrompt:m.sysPrompt,ccToolDefinition:m.ccToolDefinition,onAgentTypeChange:e=>g({...m,agentType:e}),onSysPromptChange:e=>g({...m,sysPrompt:e}),onCCToolDefinitionChange:e=>g({...m,ccToolDefinition:e}),onAgentTypeSubmit:E,onSysPromptSubmit:k,onCCToolDefinitionSubmit:C})),"tools"===t&&ce.createElement(OE,{selectedTools:m.selectedTools,onToggleTool:T,onToggleCategory:x,onComplete:v}),"summary"===t&&ce.createElement(xE,{config:m,onSaveComplete:h})))},"AgentNew"),UE=__name(({onCancel:e})=>{const[t,n]=de(null),[r,o]=de(null),s=__name(e=>{n(e.value),o(null)},"handleSelect");return Ee((t,n)=>{n.escape&&e()}),ce.createElement(ye,{width:"100%",flexDirection:"column"},null===t&&ce.createElement(AE,{handleSelect:s,createdAgentName:r}),"create_new_agent"===t&&ce.createElement(FE,{onComplete:e=>{o(e),n(null)}}))},"AgentsConfig");function isToggleShortcut(e,t){return""===e||!0===t.ctrl&&"b"===e}function useShellTaskSnapshot(){const[e,t]=de(()=>listShellTasks({includeStopped:!0}));return pe(()=>{const e=__name(()=>t(listShellTasks({includeStopped:!0})),"refresh");e();const n=setInterval(e,1e3);return()=>clearInterval(n)},[]),e}function getTaskLabel(e){return"monitor"===e.kind?e.description??e.command:e.command}function getStatusColor(e){switch(e.status){case"running":return Xr.GREEN;case"completed":return Xr.CYAN;case"failed":return Xr.RED;case"stopped":return"max-duration"===e.stopReason?Xr.YELLOW:Xr.GRAY}}function getStatusText(e){return"max-duration"===e.stopReason?"auto-stopped":e.status}function countLabel(e,t,n){return 0===e?"":1===e?`1 ${t}`:`${e} ${n}`}function compactTaskSummary(e){const t=e.filter(e=>"running"===e.status),n=t.filter(e=>"monitor"===e.kind).length,r=t.filter(e=>"shell"===e.kind).length;return[countLabel(n,"monitor","monitors"),countLabel(r,"shell","shells")].filter(Boolean).join(", ")}function getVisibleTasks(e){return[...e].sort((e,t)=>"running"===e.status&&"running"!==t.status?-1:"running"!==e.status&&"running"===t.status?1:t.startedAt.localeCompare(e.startedAt))}function latestOutputLines(e){return e.trimEnd().split("\n").filter(e=>e.trim().length>0).slice(-5)}function TaskRow({task:e,selected:t}){const n=truncateString({text:getTaskLabel(e),maxChars:56}),r=t?Co:void 0,o=t?He.pointer:" ";return ce.createElement(ye,null,ce.createElement(we,{color:t?Xr.WHITE:Xr.DIM,backgroundColor:r},o," "),ce.createElement(we,{color:t?Xr.WHITE:void 0,backgroundColor:r},n),ce.createElement(we,{color:Xr.DIM,backgroundColor:r}," ",e.id),ce.createElement(we,{color:Xr.DIM,backgroundColor:r}," ","pid ",e.pid),ce.createElement(we,{color:getStatusColor(e),backgroundColor:r}," ",getStatusText(e)))}function TaskGroup({title:e,tasks:t,selectedTaskId:n}){return 0===t.length?null:ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM,bold:!0},e," (",t.length,")"),t.map(e=>ce.createElement(TaskRow,{key:e.id,task:e,selected:e.id===n})))}function TaskDetails({task:e,output:t}){const n=latestOutputLines(t);return ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM},"Task ",e.id," · ",e.kind," · ",e.cwd),ce.createElement(we,{color:Xr.DIM},"Output ",e.outputPath),n.length>0?ce.createElement(ye,{flexDirection:"column",marginTop:1},n.map((t,n)=>ce.createElement(we,{key:`${e.id}-${n}`,color:Xr.DIM},truncateString({text:t,maxChars:100})))):ce.createElement(we,{color:Xr.DIM},"No output yet."))}function BackgroundTasksPanel({onExpandedChange:e}={}){const t=useShellTaskSnapshot(),n=t.filter(e=>"running"===e.status),[r,o]=de(!1),[s,a]=de(0),[i,l]=de(""),u=ge(()=>getVisibleTasks(t),[t]),d=u[s]??u[0];if(pe(()=>{e?.(r)},[r,e]),pe(()=>{if(0===u.length)return o(!1),void a(0);a(e=>Math.min(e,Math.max(0,u.length-1)))},[u.length]),pe(()=>{let e=!1;if(r&&d)return readShellTaskOutputTail({outputPath:d.outputPath,maxBytes:4096}).then(t=>{e||l(t)}).catch(()=>{e||l("")}),()=>{e=!0};l("")},[r,d?.id,d?.outputPath,t]),Ee((e,t)=>{isToggleShortcut(e,t)&&(n.length>0||r)?o(e=>!e):r&&0!==u.length&&(t.escape?o(!1):t.upArrow?a(e=>Math.max(0,e-1)):t.downArrow?a(e=>Math.min(u.length-1,e+1)):"x"===e&&"running"===d?.status&&stopShellTaskById(d.id))},{isActive:n.length>0||r}),0===n.length&&!r)return null;const m=compactTaskSummary(t);if(!r)return ce.createElement(ye,{marginLeft:1},ce.createElement(we,{backgroundColor:so.BG,color:so.FG,bold:!0}," ",m," "),ce.createElement(we,{color:Xr.DIM}," ctrl+b to view"));const g=u.filter(e=>"monitor"===e.kind),h=u.filter(e=>"shell"===e.kind);return ce.createElement(ye,{flexDirection:"column",marginTop:1,marginBottom:1,borderStyle:"single",borderColor:Xr.DIMMER,paddingX:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.WHITE,bold:!0},"Background tasks"),ce.createElement(we,{color:Xr.DIM}," · ",m||"none running")),ce.createElement(TaskGroup,{title:"Monitors",tasks:g,selectedTaskId:d?.id}),ce.createElement(TaskGroup,{title:"Shells",tasks:h,selectedTaskId:d?.id}),d&&ce.createElement(TaskDetails,{task:d,output:i}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ select · x stop · esc close · ctrl+b hide")))}pn(),__name(isToggleShortcut,"isToggleShortcut"),__name(useShellTaskSnapshot,"useShellTaskSnapshot"),__name(getTaskLabel,"getTaskLabel"),__name(getStatusColor,"getStatusColor"),__name(getStatusText,"getStatusText"),__name(countLabel,"countLabel"),__name(compactTaskSummary,"compactTaskSummary"),__name(getVisibleTasks,"getVisibleTasks"),__name(latestOutputLines,"latestOutputLines"),__name(TaskRow,"TaskRow"),__name(TaskGroup,"TaskGroup"),__name(TaskDetails,"TaskDetails"),__name(BackgroundTasksPanel,"BackgroundTasksPanel"),pn();var BE=[{label:"Compact Normal (default)",value:"default",description:"Summarize session when context limit reached."},{label:"Compact Fast",value:"fast",description:"Fast tiered compaction. Higher quality, uses more tokens."}],jE=__name(({onSelect:e,onCancel:t})=>{const[n,r]=de(null);pe(()=>{loadUserConfig().then(e=>{r(e.compactMode??"default")})},[]);const o=__name(t=>{e(t.value)},"handleSelect");if(Ee((e,n)=>{n.escape&&t()}),null===n)return null;const s=BE.findIndex(e=>e.value===n);return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Select a compact mode to compact sessions")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Choose how Command Code handles automatic context compaction.")),ce.createElement(bt,{items:BE,onSelect:o,initialIndex:s>=0?s:0,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>{const r=BE.find(e=>e.label===t),o=r?.value===n,s=BE.findIndex(e=>e.label===t),a=e?Co:void 0;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:e||!o?Xr.WHITE:Xr.GREEN,backgroundColor:a,bold:e||o},` ${s+1}. ${r?.label??t} `),o&&ce.createElement(we,{color:Xr.GREEN}," ",He.tick)),ce.createElement(we,{color:e?Xr.WHITE:Xr.DIM,backgroundColor:a},` ${r?.description??""} `))}}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to cancel")))},"CompactModeSelector");pn(),wn(),pn(),wn();var HE=__name(({model:e,providerId:t,isHighlighted:n,isCurrent:r,showProviderLabel:o,showDefaultBadge:s=!0})=>{const a=sn[t],i=o??a?.showProviderLabelInSelector??!1,l=e.vendorLabel??rn[e.provider],u=s&&e.id===nn,d="free"===e.badge,m=u?`${e.label} (default)`:e.label,g=d?" (FREE)":"",h=" ".repeat(Math.max(0,32-m.length-g.length)),f=n?Co:void 0,y=e.description?`${i?`${l} · `:""}${e.description}`:"",w=useTerminalWidth()>=70&&y;return ce.createElement(ye,null,ce.createElement(we,{backgroundColor:f,color:r?Xr.GREEN:Xr.WHITE,bold:r},m),d&&ce.createElement(we,{backgroundColor:f,color:Xr.GREEN,bold:!0},g),w&&ce.createElement(ce.Fragment,null,ce.createElement(we,{backgroundColor:f},h),ce.createElement(we,{backgroundColor:f,color:Xr.DIM},y)),ce.createElement(we,{backgroundColor:f,color:Xr.GREEN},r?` ${He.tick} `:" "))},"ModelRow"),WE=__name(e=>[{text:e.name,weight:100},{text:e.label,weight:50},{text:e.provider,weight:25},{text:e.description||"",weight:10}],"MODEL_SEARCH_FIELDS");function searchGroups(e,t){if(!t.trim())return e;const n=[];for(const r of e){const e=fuzzyFilter(r.models,t,WE);e.length>0&&n.push({...r,models:e})}return n}function groupByModelProvider(e,t){return groupModelsByDisplayOrder(e).map(e=>({providerId:t,label:e.label,models:e.models}))}__name(searchGroups,"searchGroups"),__name(groupByModelProvider,"groupByModelProvider");var GE=__name(({featureLabel:e,defaultLabel:t,currentModelId:n,onPick:r,onBack:o})=>{const[s,a]=de(""),i=ge(()=>isInternalTeamFlagEnforced(),[]),[l,u]=de(()=>getCachedBillingContext());pe(()=>{if(l)return;let e=!0;return getBillingContext().then(t=>{e&&u(t)}),()=>{e=!1}},[l]);const d=null!==l,m=ge(()=>i?an:groupByModelProvider(ln.flatMap(e=>e.models),sn["command-code"].id),[i]),g=ge(()=>l?m.map(e=>({...e,models:e.models.filter(e=>checkModelAccess({model:{id:e.id,provider:e.provider,name:e.name},planId:l.planId,purchasedCredits:l.purchasedCredits,freeCredits:l.freeCredits}).allowed)})).filter(e=>e.models.length>0):[],[m,l]),h=ge(()=>searchGroups(g,s),[g,s]),f=ge(()=>{const e=[];for(const t of h)for(const n of t.models)e.push({kind:"model",providerId:t.providerId,model:n});return[{kind:"reset"},...e]},[h]),y=ge(()=>{if(!n)return 0;const e=f.findIndex(e=>"model"===e.kind&&e.model.id===n);return e>=0?e:0},[f,n]),{cursor:w}=useListNavigation({items:f,initialIndex:y,searchCursorIndex:1,searchQuery:s,onSearchChange:a,onSelect:__name(e=>{d&&r("reset"===e.kind?void 0:e.model.id)},"onSelect"),onCancel:o}),[S,E]=de(0),k=useTerminalHeight()-1,C=Math.max(4,k-11-2*h.length);pe(()=>{E(e=>clampScrollOffset({cursor:w,total:f.length,maxVisible:C,currentOffset:e}))},[w,f.length,C]);const v=S,T=S+C,x=0===v;let P=1;const A=h.map(e=>{const t=sliceSectionForWindow({section:e.models,sectionBase:P,windowStart:v,windowEnd:T});return P+=e.models.length,{group:e,groupWindow:t}}).filter(e=>e.groupWindow.rows.length>0),I=f.length>C;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},e," › select model")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{dimColor:!0},"Pick a model for this task, or reset it to the default.")),isCmdZdrEnabled()&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.YELLOW},"Your pick is saved but stays paused until CMD_ZDR is unset.")),ce.createElement(ye,{marginBottom:2,flexDirection:"column",width:"100%"},ce.createElement(rE,{query:s,resultCount:s?f.length-1:void 0,placeholder:"Type to search models..."})),d?ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},x&&ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{bold:!0,dimColor:!0},"Default"),ce.createElement(ye,null,ce.createElement(we,{backgroundColor:0===w?Co:void 0,color:n?Xr.WHITE:Xr.GREEN},t," "),!n&&ce.createElement(we,{color:Xr.GREEN},He.tick))),A.map(({group:e,groupWindow:t},r)=>ce.createElement(ye,{key:`${e.providerId}-${e.label}`,flexDirection:"column",marginTop:0!==r||x?1:0},ce.createElement(we,{bold:!0,dimColor:!0},e.label),t.rows.map((r,o)=>ce.createElement(HE,{key:`${e.providerId}-${e.label}-${r.id}`,model:r,providerId:e.providerId,isHighlighted:t.baseIndex+o===w,isCurrent:r.id===n,showProviderLabel:!!i&&void 0,showDefaultBadge:!1}))))),I&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",v+1,"–",Math.min(T,f.length)," of"," ",f.length,v>0?" · ↑ more":"",T<f.length?" · ↓ more":""))):ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Loading available models…")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"type to search · ↑/↓ navigate · enter select"),s?ce.createElement(we,{color:Xr.DIM}," · esc to clear"):ce.createElement(we,{color:Xr.DIM}," · esc back")))},"FeatureModelPicker");function sanitizeFeatureOverrides(e){const t={};for(const{key:n}of Vh){const r=e?.[n];"string"==typeof r&&r&&(t[n]=r)}return t}__name(sanitizeFeatureOverrides,"sanitizeFeatureOverrides");var zE=__name(({onClose:e})=>{const[t,n]=de(null),[r,o]=de(null),[s,a]=de(null);pe(()=>{loadUserConfig().then(e=>{n(sanitizeFeatureOverrides(e.featureModels))})},[]);const i=r?"picker":"list",{cursor:l}=useListNavigation({items:Vh,initialIndex:0,searchQuery:"",onSearchChange:__name(()=>{},"onSearchChange"),disableSearch:!0,isActive:"list"===i&&null!==t,onSelect:__name(e=>{a(null),o(e.key)},"onSelect"),onCancel:e,onReset:__name(async e=>{try{await setFeatureModel({feature:e.key,model:void 0}),n(t=>{const n={...t??{}};return delete n[e.key],n}),a({text:`${e.label} reset to default`})}catch{a({text:`Couldn't reset ${e.label} — try again`,error:!0})}},"onReset")});if(null===t)return null;const u=Vh.find(e=>e.key===r)??null;if("picker"===i&&u)return ce.createElement(GE,{featureLabel:u.label,defaultLabel:getFeatureDefaultLabel(u),currentModelId:t[u.key],onBack:()=>o(null),onPick:async e=>{try{await setFeatureModel({feature:u.key,model:e}),n(t=>{const n={...t??{}};return void 0===e?delete n[u.key]:n[u.key]=e,n}),a({text:void 0===e?`${u.label} reset to default`:`${u.label} → ${getModelDisplayName(e)}`})}catch{a({text:`Couldn't save ${u.label} — try again`,error:!0})}o(null)}});const d=isCmdZdrEnabled();return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Configure models")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Pick a model for each task. Applies to all sessions."," ",createOSC8Link("https://commandcode.ai/docs/troubleshooting/faqs#why-do-i-see-small-background-requests","Why background requests?",!1))),d&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.YELLOW},"Model overrides were reverted to ZDR safe defaults. Your overrides will be restored when CMD_ZDR is unset.")),Vh.map((e,n)=>{const r=t[e.key],o=e.defaultLabel?`Default (${getFeatureDefaultLabel(e)})`:`Uses current model (${getFeatureDefaultLabel(e)})`,s=r?getModelDisplayName(r):null,a=!!r&&!d,i=a&&s?s:o,u=n===l;return ce.createElement(ye,{key:e.key},ce.createElement(we,{backgroundColor:u?Co:void 0,color:Xr.WHITE},e.label.padEnd(20)),ce.createElement(we,{backgroundColor:u?Co:void 0},ce.createElement(we,{color:a?Xr.GREEN:Xr.DIM},i),s&&d&&ce.createElement(we,{color:Xr.DIM},` · ${s} paused`)))}),s&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:s.error?Xr.RED:Xr.GREEN},s.text)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑/↓ navigate · enter to change · r to reset · esc to close")))},"ConfigureModelsSelector");function settingsFilePaths(e){return[getProjectLocalPath(e),getProjectSharedPath(e),getUserSettingsPath()]}function readInputSettings(e){try{const t=S.readFileSync(e,"utf-8");return parseJSON(t)?.input}catch{return}}function shouldCollapsePastedText(e=process.cwd()){for(const t of settingsFilePaths(e)){const e=readInputSettings(t)?.collapsePastedText;if("boolean"==typeof e)return e}return!0}pn(),pn(),An(),pn(),__name(settingsFilePaths,"settingsFilePaths"),__name(readInputSettings,"readInputSettings"),__name(shouldCollapsePastedText,"shouldCollapsePastedText"),pn();var qE=n($(),"commandcode-images"),VE={"image/png":".png","image/jpeg":".jpg","image/gif":".gif","image/webp":".webp"};function saveTempImage(e,t){try{k(qE)||x(qE,{recursive:!0});const r=VE[e.mediaType]||".png",o=`image-${t}-${Date.now()}${r}`,s=n(qE,o),a=Buffer.from(e.data,"base64");return P(s,a),s}catch{return null}}function stripInputAfterSuffix(e,t){return t&&e.endsWith(t)?e.slice(0,e.length-t.length):e}function extractAppendedChunk(e,t,n){const r=t+n;return e.length>=r.length&&e.startsWith(r)?e.slice(r.length):null}function accumulateDelta(e,t,n){const r=n+t;return e===t||e===r?t:r&&e.startsWith(r)?t+e.slice(r.length):t&&e.startsWith(t)?t+e.slice(t.length):t+e}function useBracketedPaste(e){const{input:t,detectedContent:n,setInput:r,setDetectedImages:o,setDetectedContent:s,incrementInputKey:a,setInitialCursor:i,collapsePastedText:l=!0}=e,u=he((e,t,n="")=>{o(t=>[...t,e]),r(t+n),i(t.length),a()},[o,r,i,a]),d=me(!1),m=me(""),g=me(null),h=me(""),f=me(""),y=he(async(e,t,n)=>{let o=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");const d=await detectDroppedImageFile(o);if(d)return void u(d,t,n);let m=o;if(0===m.length){const e=await detectClipboardImage();if(e)return void u(e,t,n);const r=await detectClipboardText();m=r?r.replace(/\r\n/g,"\n").replace(/\r/g,"\n"):""}if(!m&&!n)return;if(!m)return r(t+n),i(t.length),void a();if(l&&m.length>300){const e=t+pastedTextToken(m);return s(e=>[...e,m]),r(e+n),i(e.length),void a()}const g=t+m;r(g+n),i(g.length),a()},[u,n.length,s,r,i,a,l]),w=he(()=>{g.current&&clearTimeout(g.current),g.current=setTimeout(async()=>{if(d.current){const e=m.current,t=h.current,n=f.current;m.current="",h.current="",f.current="",d.current=!1,g.current=null,e?await y(e,t,n):n&&await y("",t,n)}},500)},[y]);return{handlePaste:he(async e=>{const n=processBracketedPaste(e);if(n.isPasteStart&&n.isPasteEnd)return d.current&&(d.current=!1,m.current="",h.current="",f.current="",g.current&&(clearTimeout(g.current),g.current=null)),await y(n.pastedContent??n.cleanedContent,n.textBeforePaste??"",n.textAfterPaste??""),!0;if(n.isPasteStart&&!d.current){d.current=!0;const e=n.textBeforePaste??t,r=t.slice(e.length);h.current=e,f.current=r;const o=n.pastedContent??n.cleanedContent;return m.current=stripInputAfterSuffix(o,r),w(),!0}if(d.current&&!n.isPasteEnd){const e=h.current,t=f.current;if(void 0!==n.pastedContent)m.current=stripInputAfterSuffix(n.pastedContent,t);else if(n.cleanedContent){const r=extractAppendedChunk(n.cleanedContent,e,t);m.current=null!==r?m.current+r:accumulateDelta(n.cleanedContent,m.current,e)}return w(),!0}if(d.current&&n.isPasteEnd){g.current&&(clearTimeout(g.current),g.current=null);const e=h.current,t=f.current,r=n.textAfterPaste??"";let o=n.cleanedContent??"";if(r&&o.endsWith(r)&&(o=o.slice(0,o.length-r.length)),void 0!==n.pastedContent)m.current=stripInputAfterSuffix(n.pastedContent,t);else if(o){const n=extractAppendedChunk(o,e,t);m.current=null!==n?m.current+n:accumulateDelta(o,m.current,e)}const s=m.current,a=e,i=r||t;return m.current="",h.current="",f.current="",d.current=!1,await y(s,a,i),!0}if(n.isPasteEnd&&!n.isPasteStart&&!d.current)return!0;const r=e.slice(t.length);if(r.length>0){const e=await detectDroppedImageFile(r);if(e)return u(e,t),!0}return!1},[t,y,w,u]),resetPasteState:he(()=>{d.current=!1,m.current="",h.current="",f.current="",g.current&&(clearTimeout(g.current),g.current=null)},[]),isPasting:he(()=>d.current,[])}}function useExternalEditor({input:e,setInput:t,setInputKey:n,detectedContent:r,setDetectedContent:o,onEditorClose:s}){const[a,i]=de(!1),[l,u]=de(null),d=he(async()=>{if(!a){i(!0),u(null);try{let a=e.replace(/\n+$/,"");r.forEach(e=>{const t=pastedTextToken(e);a.includes(t)&&(a=a.replace(t,e))});const i=await openInEditor2(a);t(i),o([]),n(e=>e+1),s?.()}catch(e){u(e instanceof Yy?"No text editor found. Set your EDITOR environment variable.\n\nSee: https://commandcode.ai/docs/core-concepts/interactive-mode#setting-up-your-editor":`Editor error: ${e instanceof Error?e.message:String(e)}`)}finally{i(!1)}}},[e,t,n,r,o,s,a]),m=he(()=>{u(null)},[]);return{isEditorOpen:a,editorError:l,handleOpenInEditor:d,clearEditorError:m}}__name(saveTempImage,"saveTempImage"),pn(),An(),__name(stripInputAfterSuffix,"stripInputAfterSuffix"),__name(extractAppendedChunk,"extractAppendedChunk"),__name(accumulateDelta,"accumulateDelta"),__name(useBracketedPaste,"useBracketedPaste"),pn(),__name(useExternalEditor,"useExternalEditor"),pn();var KE=__name((e={})=>{const{enabled:t=!0}=e,[n,r]=de(null),o=me(!1);return pe(()=>{if(!t||o.current)return;let e=!0;return o.current=!0,qy().then(t=>{e&&r(t)}),()=>{e=!1}},[t]),{pr:n}},"usePRDetection");function pushEntry(e,t){e.push(t),e.length>50&&e.shift()}function commitBurst({stack:e,burstStart:t,inBurst:n,timer:r}){r.current&&(clearTimeout(r.current),r.current=null),n.current=!1,pushEntry(e,t)}function useUndoStack({input:e,setInput:t,initialCursorRef:n,incrementInputKey:r}){const o=me([]),s=me(""),a=me(!1),i=me(null),l=me(!1),u=me("");return pe(()=>{if(l.current)return l.current=!1,void(u.current=e);if(e===u.current)return;const t=u.current;return u.current=e,a.current||(s.current=t,a.current=!0),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{a.current=!1,i.current=null,pushEntry(o.current,s.current)},400),()=>{i.current&&(clearTimeout(i.current),i.current=null)}},[e]),{commitUndo:__name(()=>{a.current&&commitBurst({stack:o.current,burstStart:s.current,inBurst:a,timer:i});const e=o.current.pop();void 0!==e&&(l.current=!0,t(e),n.current=e.length,r())},"commitUndo")}}pn(),__name(pushEntry,"pushEntry"),__name(commitBurst,"commitBurst"),__name(useUndoStack,"useUndoStack"),pn();var YE=__name(({onSelectFile:e,onClose:t,searchQuery:n=""})=>{const[o,s]=de(process.cwd()),[a,i]=de([]),[l,d]=de(0),[m,g]=de(0),h=n.trim()?15:10;pe(()=>{invalidateFileIndex()},[]);const f=he(e=>{try{const t=[];"/"!==e&&t.push({name:"..",path:r(e),isDirectory:!0}),t.push(...listDirectory(e,process.cwd())),i(t),d(0),g(0)}catch{}},[]);pe(()=>{if(n.trim()){const e=searchFiles(n);i(e),d(0),g(0)}else f(o)},[o,f,n]),Ee((r,o)=>{if(o.escape)t();else if(o.upArrow)d(e=>{const t=Math.max(0,e-1);return t<m&&g(t),t});else if(o.downArrow)d(e=>{const t=Math.min(a.length-1,e+1);return t>=m+h&&g(t-h+1),t});else{if(o.rightArrow){const e=a[l];if(!e)return;return void(e.isDirectory&&!n.trim()&&s(u(e.path)))}if(o.return){const t=a[l];if(!t)return;return void e(t.path)}}});const y=a.slice(m,m+h);return ce.createElement(ye,{flexDirection:"column",paddingLeft:1},ce.createElement(ye,{marginBottom:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},n.trim()?`Searching for: "${n}"`:`Files: ${o}`),ce.createElement(we,{color:Xr.DIM},n.trim()?"↑↓ navigate • Enter to select • Esc to close":"↑↓ navigate • → to open folder • Enter to select • Esc to close")),0===y.length?ce.createElement(we,{color:Xr.DIM},n.trim()?`No files found matching "${n}"`:"No files found in this directory"):y.map((e,t)=>{const n=m+t,r=e.name,o=n===l;return ce.createElement(we,{key:e.path,color:o?Xr.GREEN:Xr.DIM,bold:o&&isLightTheme()},e.isDirectory?`${r}/`:r)}))},"FileList");pn();var QE=__name((e={})=>{const{enabled:t=!0,paused:n=!1}=e,[r,o]=de(null),[s,a]=de(!1),i=me(!1),l=me(null),u=me(n),[d,m]=de(!1),[g,h]=de("connected"),f=me(null),y=me(null),w=he((e,t)=>{y.current&&(clearTimeout(y.current),y.current=null),h(e),m(!0),void 0!==t&&(y.current=setTimeout(()=>{m(!1)},t))},[]),S=he(()=>{y.current&&(clearTimeout(y.current),y.current=null)},[]),E=he(async(e=!1)=>{if(!i.current){i.current=!0;try{let t=l.current,n=t?.isConnected??!1;if(!n){t?.disconnect(),t=new rg,l.current=t;const r=e?200:500;n=await t.connect(r)}const r=f.current;if(null===r?n&&w("connected",3e3):r!==n&&(n?w("connected",2e3):w("disconnected",5e3)),f.current=n,a(n),n&&t){const n=e?500:1e3,r=await t.getContext(n);null!==r||t.isConnected||(t.disconnect(),l.current=null),o(r)}else o(null)}catch{!0===f.current&&w("disconnected",5e3),f.current=!1,a(!1),o(null),l.current?.disconnect(),l.current=null}finally{i.current=!1}}},[w]);pe(()=>{const e=u.current;u.current=n,e&&!n&&t&&null!==Vp()&&E(!1)},[n,t,E]),pe(()=>{if(!t)return;if(null===Vp())return;let e=null,n=!1,r=0;function schedule(t){n||(e=setTimeout(()=>{tick(!1)},t))}async function tick(e){if(u.current)return void schedule(500);if(await E(e),n)return;if(l.current?.isConnected)return r=0,void schedule(500);r+=1;const t=Math.min(r,6);schedule(Math.min(3e4,500*2**t)+250*Math.random())}return __name(schedule,"schedule"),__name(tick,"tick"),tick(!0),()=>{n=!0,e&&clearTimeout(e),S(),l.current?.disconnect(),l.current=null}},[t,E,S]);const k=Vp(),C={visible:d,message:"connected"===g?`${k?nw[k]??"IDE":"IDE"} ${He.tick}`:"run /ide",type:g};return{context:r,connected:s,refresh:E,connectionIndicator:C}},"useVSCodeContext");function getImageHintText({selectedIndex:e,imageCount:t,inHistory:n}){return-1!==e?t>1?"← → · Delete to remove · Esc to deselect":"Delete to remove · Esc to deselect":n?"↓ · ↑ imgs":"↑ to select"}function buildImageRows({imageCount:e,rowWidth:t}){const n=[];let r=[],o=0;for(let s=0;s<e;s++){const e=`[Image #${s+1}]`.length,a=e+(r.length>0?1:0);r.length>0&&o+a>t?(n.push(r),r=[s],o=e):(r.push(s),o+=a)}return r.length>0&&n.push(r),n}function shouldSelectImageOnUpArrow({isOnFirstLine:e,imageCount:t,selectedImageIndex:n,historyIndex:r}){return e&&t>0&&-1===n&&-1===r}function nextImageIndex({currentIndex:e,imageCount:t}){return e===t-1?0:e+1}function prevImageIndex({currentIndex:e,imageCount:t}){return 0===e?t-1:e-1}function removeImageAt({images:e,index:t}){const n=e.filter((e,n)=>n!==t);return{remainingImages:n,nextSelectedIndex:n.length>0?n.length-1:-1}}function ImageLabel({index:e,isSelected:t,filePath:n,showSpaceBefore:r}){const o=`[Image #${e+1}]`,s=n?createOSC8Link(`file://${n}`,o,!1):o;return ce.createElement(we,null,r?" ":"",t?ce.createElement(we,{inverse:!0},o):s)}function ImageRowsDisplay({detectedImages:e,selectedImageIndex:t,imageTempPaths:n,termWidth:r,inHistory:o}){if(0===e.length)return null;const s=getImageHintText({selectedIndex:t,imageCount:e.length,inHistory:o}),a=Math.max(1,r-(s.length+2)),i=buildImageRows({imageCount:e.length,rowWidth:a});return ce.createElement(ye,{flexDirection:"column",width:"100%",alignItems:"flex-end"},i.map((e,r)=>ce.createElement(ye,{key:r,flexDirection:"row"},ce.createElement(ye,{flexShrink:0,marginRight:1},0===r&&ce.createElement(we,{color:Xr.DIM},s)),ce.createElement(ye,{flexDirection:"row"},e.map((e,r)=>ce.createElement(ImageLabel,{key:e,index:e,isSelected:e===t,filePath:n[e],showSpaceBefore:r>0}))))))}pn(),pn(),__name(getImageHintText,"getImageHintText"),__name(buildImageRows,"buildImageRows"),__name(shouldSelectImageOnUpArrow,"shouldSelectImageOnUpArrow"),__name(nextImageIndex,"nextImageIndex"),__name(prevImageIndex,"prevImageIndex"),__name(removeImageAt,"removeImageAt"),__name(ImageLabel,"ImageLabel"),__name(ImageRowsDisplay,"ImageRowsDisplay"),pn(),wn(),pn();var JE=__name(e=>{if(e>=1e6){const t=e/1e6;return`${t%1==0?t.toFixed(0):t.toFixed(1)}M`}return`${Math.round(e/1e3)}k`},"formatTokens"),XE=__name(({usage:e})=>{if(!e)return null;const t=Math.min(e.current/e.limit*100,100),n=Math.max(0,Math.round(90-t));if(n>20&&e.current>=18e4)return ce.createElement(ye,{paddingRight:3},ce.createElement(we,{color:Xr.DIM},"~",JE(e.current)," tokens in context · try"," "),ce.createElement(we,{color:Xr.DIM,bold:!0},"/compact"));if(n>20)return null;const r=__name(e=>e>=90?Xr.RED:e>=70?Xr.YELLOW:Xr.DIM,"getColor"),o=t>=90?6:Math.round(t/100*6),s=6-o,a=He.square.repeat(o),i=He.squareLightShade.repeat(s),l=r(t);return ce.createElement(ye,{paddingRight:3},ce.createElement(we,{color:l},`Context left before auto-compact ${n}% `),ce.createElement(we,{color:l},a),s>0&&ce.createElement(we,{color:Xr.DIM},i))},"ContextUsage");pn();var ZE=__name(()=>{const[e,t]=de("continuous learning"),[n,r]=de(!1),[o,s]=de(!1),a=me([]),i=me(0),l=me(null),u=me(!1);pe(()=>{const e=__name(e=>"analyzing"===e.type?(u.current=!0,r(!0),s(!1),a.current=[],i.current=0,l.current&&(clearTimeout(l.current),l.current=null),void t(e.message)):u.current&&"analyzed"!==e.type?void a.current.push(e):"analyzed"===e.type?(u.current=!1,void(a.current.length>0?(i.current=0,n()):(r(!1),s(!1),t("continuous learning")))):void 0,"handleNewEvent"),n=__name(()=>{if(i.current>=a.current.length)return r(!1),s(!1),t("continuous learning"),void(a.current=[]);const e=a.current[i.current];t(e.message);const o="learned"===e.type||"refactored"===e.type;s(o);const u="learned"===e.type||"refactored"===e.type||"no_learnings"===e.type||"error"===e.type?15e3:2e3;l.current=setTimeout(()=>{i.current++,n()},u)},"cycleThroughNextEvent");return id.on("new-event",e),()=>{id.off("new-event",e),l.current&&clearTimeout(l.current)}},[]);const d=` ${n?He.squareSmallFilled:He.squareSmall} TASTE`,m=9+e.length+d.length>100;let g=e;g=truncateString(m?{text:e,maxChars:100}:{text:e,maxChars:100-d.length-9-10});const h=o?void 0:Xr.DIM;return ce.createElement(ye,{paddingRight:2},!m&&ce.createElement(ce.Fragment,null,ce.createElement(BracketWrap,{color:Xr.DIM},"ctrl+t"),ce.createElement(we,{color:Xr.DIM}," ")),ce.createElement(we,{color:h},g),!m&&ce.createElement(we,{color:eo.TEXT},d))},"LearningFeedMini");pn();var eb=__name(({mode:e,pendingExitKey:t})=>{const n=getModeToggleShortcutHint();return t?ce.createElement(we,{color:Xr.DIM},"Press Ctrl+C again to exit"):"bypass"===e?ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:Xr.RED},"» permission bypass on "),ce.createElement(BracketWrap,{color:Xr.DIM},n)):"auto-accept"===e?ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:ho},"» accept edits on "),ce.createElement(BracketWrap,{color:Xr.DIM},n)):"plan"===e?ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:po},"plan mode "),ce.createElement(BracketWrap,{color:Xr.DIM},n)):ce.createElement(we,{color:Xr.DIM},"? for shortcuts")},"ModeIndicator");pn();var tb=__name(({prInfo:e,showSeparator:t=!0})=>{if(!e)return null;if("OPEN"!==e.state&&"MERGED"!==e.state)return null;const n="OPEN"===e.state?Xr.DIM:fo.MERGED;return ce.createElement(ce.Fragment,null,t&&ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:n},"PR "),ce.createElement(Fo,{url:e.url,text:`#${e.number}`,color:n}))},"PRLinkBadge"),nb=__name(()=>ce.createElement(ye,{paddingRight:3},ce.createElement(we,{color:Xr.DIM,wrap:"truncate"},He.pointerSmall," ","stashed")),"StashBadge"),rb=__name(({indicator:e,showSeparator:t=!0})=>e?.visible?ce.createElement(ce.Fragment,null,t&&ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:"connected"===e.type?Xr.GREEN:Xr.YELLOW},e.message)):null,"ConnectionIndicatorBadge"),ob=__name(({termWidth:e,indicatorText:t,isIDEIndicator:n,permissionMode:r="standard",prInfo:o,tasteLearning:s,contextUsage:a,connectionIndicator:i,pendingExitKey:l,updateStatus:u,updateFailedInfo:d,currentProvider:m,showProviderInfo:g,isBashMode:h,shareInfo:f,showShareNotification:y,unshareNotificationMessage:w,tasteNotificationMessage:S,creditWarning:E,hasStashedPrompt:k})=>{const C=e>=60,v=C&&s&&!k;return ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column",paddingLeft:2},"auto-accept"!==r&&"plan"!==r&&"bypass"!==r||l?ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between",width:e-1},ce.createElement(ye,{flexDirection:"row",columnGap:0},n&&!l?ce.createElement(we,{color:lo},t):ce.createElement(eb,{mode:r,pendingExitKey:l}),!l&&ce.createElement(tb,{prInfo:o}),!l&&ce.createElement(rb,{indicator:i})),(C||k)&&ce.createElement(ye,{flexDirection:"column",alignItems:"flex-end"},k?ce.createElement(nb,null):v&&ce.createElement(ZE,null),!k&&C&&a&&ce.createElement(XE,{usage:a}))):ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between",width:e-1},ce.createElement(eb,{mode:r}),k?ce.createElement(nb,null):v&&ce.createElement(ZE,null)),ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between",width:e-1},ce.createElement(ye,{flexDirection:"row",columnGap:0},ce.createElement(we,{color:n?lo:Xr.DIM},t),ce.createElement(tb,{prInfo:o}),ce.createElement(rb,{indicator:i})),ce.createElement(ye,{flexDirection:"row",columnGap:2},C&&a&&ce.createElement(XE,{usage:a})))),(u||d||g&&m)&&ce.createElement(ye,{flexDirection:"row",columnGap:1},u&&ce.createElement(we,null,He.tick," ","Command Code"," updated:"," ",ce.createElement(we,{color:Xr.DIM},"v",u.updatedFrom),ce.createElement(we,{color:Xr.DIM}," ",He.arrowRight," "),ce.createElement(we,null,"v",u.updatedTo)),!u&&d&&ce.createElement(we,{color:Xr.YELLOW,dimColor:!0},He.info," Update available:"," ",d.currentVersion," ",He.arrowRight," ",d.latestVersion),g&&m&&ce.createElement(we,{color:Xr.GREEN,dimColor:!0},He.bullet," Provider:"," ",getProviderDisplayName(m)))),h&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Xr.GREEN},"! for bash mode")),y&&f&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Zr},"SHARED: ",f.url," (copied to clipboard)")),w&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:w.includes("NOT SHARED")?Xr.RED:Zr},w)),S&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Zr},S)),E&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Xr.YELLOW},He.warning," ",E)))},"BottomIndicator");function basename8(e){return t.win32.basename(e)}pn(),__name(basename8,"basename");var sb=(()=>{const e=[...nS].map(e=>e.startsWith("/")?e.slice(1):e);return 0===e.length?null:new RegExp(`^(?:${e.join("|")})(?:\\s+\\S*)?$`,"i")})(),ab=__name(e=>sb?.test(e.trimEnd())??!1,"isSubmenuQuery"),ib=__name(e=>{if(!e.startsWith("/"))return{showCommandMenu:!1,commandSearchQuery:""};const t=e.slice(1);return ab(t)?{showCommandMenu:!0,commandSearchQuery:t}:/[\s/]/.test(t)?{showCommandMenu:!1,commandSearchQuery:""}:{showCommandMenu:!0,commandSearchQuery:t}},"getSlashCommandMenuState"),lb=__name(({canOpenMenu:e,deletedFromMiddle:t,menuState:n,showCommandMenu:r})=>!(t&&!r)&&(r||e)&&n.showCommandMenu,"getNextSlashCommandMenuVisibility");function resolvePastedTextTokens({input:e,detectedContent:t}){return t.reduce((e,t)=>{const n=pastedTextToken(t);return e.includes(n)?e.replace(n,()=>t):e},e)}__name(resolvePastedTextTokens,"resolvePastedTextTokens");var cb=__name((e,t)=>!(!e||!t?.selection&&!t?.activeFile?.relativePath),"hasIDEContext"),ub=__name((e,t,n)=>{const r=e?t?.selection:null;if(r)return`${r.lineCount} lines selected`;const o=e?t?.activeFile:null;if(o?.relativePath){const e=basename8(o.relativePath),t=n<80?15:n<120?25:40;return`In ${e.length>t?e.slice(0,t-1)+"…":e}`}return"? for shortcuts"},"getIndicatorText");function getModelShortName(e){const t=findModelById(e);if(t){const e=t.name.toLowerCase().replaceAll(" ","-");return"free"===t.badge?`${e} (free)`:e}return e}function getModelHintLayout(e){const{currentModel:t,terminalWidth:n}=e,r=getCommandMenuDescriptionWidth(n),o=modelSupportsReasoningEffort(t)?getReasoningEffort(t):null,s=o?` with ${o} effort`:"";return{descriptionWidth:r,text:truncateString({text:`${getModelShortName(t)}${s} (current)`,maxChars:r})}}pn(),__name(getModelShortName,"getModelShortName"),__name(getModelHintLayout,"getModelHintLayout"),pn();var db=__name((e,t)=>e.padEnd(t),"padCell"),mb=__name(e=>e instanceof Error&&e.message?e.message:"Unknown error","getDeleteErrorMessage"),pb=__name(e=>{const t=new Date(e),n=(new Date).getTime()-t.getTime(),r=Math.floor(n/6e4),o=Math.floor(n/36e5),s=Math.floor(n/864e5);return r<1?"just now":r<60?`${r} min ago`:o<24?`${o}h ago`:`${s}d ago`},"formatRelativeTime"),gb=__name(e=>e.replace(/\s+/g," ").trim(),"normalizeSummary"),hb=__name(e=>truncateString({text:gb(e),maxChars:50}),"truncateMessage"),fb=__name(e=>e.title?gb(e.title):hb(e.firstMessage),"getSessionSummary"),yb=__name(({onSelectSession:e,onClose:t})=>{const[n,r]=de([]),[o,s]=de(0),[a,i]=de(0),[l,u]=de(!0),[d,m]=de(!1),[g,h]=de(!1),[f,y]=de(null),[w]=de(()=>getCurrentGitBranch()),S=useTerminalHeight(),E=Math.max(6,S-14),k=he(async()=>{u(!0);const e=await Sh.listSessions();r(e),u(!1)},[]);pe(()=>{k()},[k]);const C=he(async e=>{try{await Sh.deleteSession(e),h(!1),y(null),s(0),i(0),await k()}catch(e){h(!1),y(`Failed to delete session: ${mb(e)}`)}},[k]),v=d&&w?n.filter(e=>e.gitBranch===w):n;if(Ee((n,r)=>{if(g)if(r.return){if(v.length>0&&o<v.length){const e=v[o];C(e.id)}}else h(!1);else if(r.delete||r.ctrl&&"d"===n)v.length>0&&(y(null),h(!0));else{if(!r.escape)return r.ctrl&&"b"===n?(m(e=>!e),s(0),void i(0)):void(r.upArrow?s(e=>{const t=Math.max(0,e-1);return t<a&&i(t),t}):r.downArrow?s(e=>{const t=Math.min(v.length-1,e+1);return t>=a+E&&i(t-E+1),t}):r.return&&v.length>0&&o<v.length&&e(v[o].id));t()}}),l)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2},ce.createElement(we,{color:Xr.GRAY},"Loading sessions..."));if(0===v.length)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2},ce.createElement(we,{color:Xr.GRAY},d&&w?`No sessions found for branch "${w}"`:"No previous sessions found"),ce.createElement(we,{color:Xr.DIM},d?"Press ctrl+b to show all branches, ESC to cancel":"Press ESC to go back"));const T=v.slice(a,a+E),x=o<v.length?v[o]:null,P=g&&x?`Delete "${fb(x)}"? Press Enter to confirm, any other key to cancel.`:null;return ce.createElement(ye,{flexDirection:"column",paddingLeft:1,width:"100%"},ce.createElement(we,{color:Xr.CYAN,bold:!0},"Resume Session"),ce.createElement(ye,{marginTop:1}),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:co,bold:!0},db("#",6),db("Modified",12),db("Git Branch",22),db("Messages",12),"Summary")),ce.createElement(ye,{flexDirection:"column"},T.map((e,t)=>{const n=a+t,r=o===n,s=truncateString({text:e.gitBranch||"-",maxChars:20});return ce.createElement(we,{key:e.id,color:r?Xr.WHITE:Xr.GRAY,backgroundColor:r?Co:void 0,bold:r,wrap:"truncate-end"},db(`${n+1}.`,6),db(pb(e.lastModified),12),db(s,22),db(String(e.messageCount),12),e.forkProvenance?ce.createElement(ForkSummary,{session:e,isSelected:r}):fb(e)," ")})),ce.createElement(ye,{marginTop:1}),P&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},P)),f&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},f)),v.length>E&&ce.createElement(we,{color:Xr.DIM},"Showing ",a+1,"–",Math.min(a+E,v.length)," ","of ",v.length,a>0?" · ↑ more":"",a+E<v.length?" · ↓ more":""),ce.createElement(we,{color:Xr.DIM},"↑↓ navigate · Enter select · Del delete · ctrl+b ",d?`[branch: ${w??"unknown"}]`:"branch filter"," · ESC cancel"))},"SessionsResumeTable");pn();var wb=__name(e=>{if(!e.activeFile&&!e.selection)return"";const t=["<ide-context>"];if(e.activeFile){const{relativePath:n,language:r,cursor:o}=e.activeFile;t.push(`File: ${n} (${r}, line ${o.line})`)}if(e.selection){const{text:n,startLine:r,endLine:o}=e.selection,s=e.activeFile?.language??"";t.push(`Selected lines ${r}-${o}:`),t.push(`\`\`\`${s}`);const a=n.replace(/```/g,"` ` `").replace(/<\/ide-context>/gi,"&lt;/ide-context&gt;").replace(/[\u202A-\u202E\u2066-\u2069\u200B-\u200D\uFEFF]/g,"");t.push(a),t.push("```")}return t.push("</ide-context>"),t.join("\n")+"\n"},"formatContextForPrompt"),Sb=["","","[118;5u"];function removeAltPCharacter(e){return e.includes("π")?e.replace(/π/g,""):null}function isPrecededByWhitespace(e){return!e||" "===e||"\n"===e||"\t"===e}__name(removeAltPCharacter,"removeAltPCharacter"),__name(isPrecededByWhitespace,"isPrecededByWhitespace");var Eb=__name(()=>ce.createElement(ye,{flexDirection:"column",paddingLeft:1},ce.createElement(we,{color:Xr.DIM,bold:!0},"Available Shortcuts:"),ce.createElement(ye,{columnGap:4},ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"! for bash mode"),ce.createElement(we,{color:Xr.DIM},"/ for commands"),ce.createElement(we,{color:Xr.DIM},"@ for file paths"),ce.createElement(we,{color:Xr.DIM},getModeToggleShortcutHint()," to toggle auto-accept")),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"double tap esc to clear input"),ce.createElement(we,{color:Xr.DIM},"ctrl + j / shift + ⏎ for newline"),ce.createElement(we,{color:Xr.DIM},"ctrl + g to open in editor"),ce.createElement(we,{color:Xr.DIM},"ctrl + z to undo"),ce.createElement(we,{color:Xr.DIM},"ctrl + s to stash prompt")))),"ShortcutMenu"),bb=__name(({input:e,onSubmit:t,setInput:n,showCursor:r=!0,placeholder:o="Enter your input…",showFileList:a,setShowFileList:i,fileSearchQuery:l,setFileSearchQuery:u,onCommand:d,contextUsage:m,tasteLearning:g=!1,tasteUsage:h=!1,shareInfo:f,showShareNotification:y,unshareNotificationMessage:w,tasteNotificationMessage:S,creditWarning:E,updateStatus:k,updateFailedInfo:C,currentProvider:v,currentModel:T,showProviderInfo:x,permissionMode:P="standard",onToggleAutoAccept:A,hintMessage:I,historyManager:M,pendingExitKey:R=null,onOverlayVisibilityChange:_,onDoubleEscapeEmpty:D,onAltP:N,isProcessing:$=!1,ideContextEnabled:L=!0})=>{const[O,F]=de(0),[U,B]=de(!1),[j,H]=de(!1),[W,G]=de(!1),[z,q]=de(""),[V,K]=de(null),[Y,Q]=de(!1),J=me(0),X=me(0),[Z,ee]=de([]),[te,ne]=de([]),[re,oe]=de(-1),[se,ae]=de(""),[ie,le]=de(null),ue=me(!1),fe=me(!1),Se=me(!1),ke=me(void 0),[Ce,ve]=de(-1),[Te,xe]=de(""),Pe=me(0),{commitUndo:Ae}=useUndoStack({input:e,setInput:n,initialCursorRef:ke,incrementInputKey:__name(()=>F(e=>e+1),"incrementInputKey")}),{isEditorOpen:Ie,editorError:Me,handleOpenInEditor:Re,clearEditorError:_e}=useExternalEditor({input:e,setInput:n,setInputKey:F,detectedContent:Z,setDetectedContent:ee,onEditorClose:__name(()=>{ue.current=!1},"onEditorClose")}),De=ge(()=>shouldCollapsePastedText(),[]),{handlePaste:Ne,resetPasteState:$e,isPasting:Le}=useBracketedPaste({input:e,detectedContent:Z,setInput:n,setDetectedImages:ne,setDetectedContent:ee,incrementInputKey:__name(()=>F(e=>e+1),"incrementInputKey"),setInitialCursor:__name(e=>{ke.current=e},"setInitialCursor"),collapsePastedText:De}),{context:Oe,connected:Fe,refresh:Ue,connectionIndicator:Be}=QE({enabled:L,paused:$}),{stdout:je}=be(),We=je?.columns??80,{pr:Ge}=KE();pe(()=>{const e=a||W||Y;_?.(e)},[a,W,Y,_]),pe(()=>{if(!Se.current)return;Se.current=!1;const t=ib(e);!W&&t.showCommandMenu||(G(t.showCommandMenu),q(t.showCommandMenu?t.commandSearchQuery:""))},[e,W]);const ze=he(()=>{ne([]),oe(-1)},[]),qe=he(()=>{G(!1),K(null)},[]),Ve=he(()=>{qe(),q(""),i(!1),u(""),Q(!1),ve(-1),xe(""),ae(""),ke.current=void 0,F(e=>e+1)},[qe,u,i]),Ke=he(t=>!(null===ie||!t?.replaceCurrentInput&&e.trim().length>0||(ue.current=!0,n(ie),le(null),Ve(),setTimeout(()=>{ue.current=!1},0),0)),[e,Ve,n,ie]),Ye=he(()=>{n(""),H(!1),qe(),q(""),Q(!1),ee([]),ze(),ae(""),$e(),ve(-1),xe(""),F(e=>e+1)},[n,$e,ze,qe]),Qe=he(()=>{ue.current=!0;const{text:t,cursor:r}=insertTextAt(e,Pe.current,"\n");n(t),ke.current=r,F(e=>e+1),setTimeout(()=>{ue.current=!1},0)},[e,n]);Ee(async(t,r)=>{if(-1!==re&&r.leftArrow)return void oe(prevImageIndex({currentIndex:re,imageCount:te.length}));if(-1!==re&&r.rightArrow)return void oe(nextImageIndex({currentIndex:re,imageCount:te.length}));if(r.upArrow){if(a||W||Y)return;const t=e.indexOf("\n"),r=-1===t||Pe.current<=t;if(shouldSelectImageOnUpArrow({isOnFirstLine:r,imageCount:te.length,selectedImageIndex:re,historyIndex:Ce}))return void oe(te.length-1);if(-1!==re&&oe(-1),0!==e.length&&-1===Ce&&!r)return;const o=M?.count()??0;if(0===o)return;-1===Ce&&xe(e);const s=Math.min(Ce+1,o-1);return void(s!==Ce&&(ve(s),n(M?.getAt(s)||""),F(e=>e+1)))}if(r.downArrow){if(a||W||Y)return;if(-1===Ce)return;const t=e.lastIndexOf("\n");if(!(-1===t||Pe.current>t))return;const r=Ce-1;return ve(r),n(-1===r?Te:M?.getAt(r)||""),void F(e=>e+1)}if(""===t||r.ctrl&&"c"===t)return void ze();if(isCtrlKey({inputChar:t,key:r,letter:"g",ctrlCode:7}))return ue.current=!0,void Re();if(isCtrlKey({inputChar:t,key:r,letter:"s",ctrlCode:19})){const t=e.trim().length>0;if(!t&&null===ie)return;if(!t&&Ke())return;ue.current=!0;const r=ie??"";return le(t?e:null),n(r),Ve(),void setTimeout(()=>{ue.current=!1},0)}if(getIsExpandToolShortcut(r,t))return ue.current=!0,n(e),F(e=>e+1),void setTimeout(()=>{ue.current=!1},0);if(isNewlineShortcutKey({inputChar:t,key:r,isPasting:Le()}))return fe.current=!0,Qe(),void setTimeout(()=>{fe.current=!1},0);if(r.meta&&r.backspace)return void Ye();if(r.meta&&"w"===t)return ue.current=!0,void Ye();const o=r.ctrl&&"v"===t||Sb.includes(t),s=r.meta&&"v"===t;if(o||s){if(o&&"darwin"===process.platform){const t=e;ue.current=!0;const r=await detectClipboardImage();return r&&(ne(e=>[...e,r]),n(t),F(e=>e+1)),void(ue.current=!1)}}else if(!r.ctrl&&!r.meta||"u"!==t)if(r.ctrl&&"z"===t?.toLowerCase())Ae();else{if(-1!==re&&(r.delete||r.backspace)){const{remainingImages:e,nextSelectedIndex:t}=removeImageAt({images:te,index:re});return ne([...e]),void oe(t)}if(r.escape){if(-1!==re)return void oe(-1);if(W)return;if(Y)return Q(!1),n(se),void F(e=>e+1);const t=Date.now();return t-J.current<500?(e.length>0?Ye():D?.(),J.current=0,X.current=0):(J.current=t,U||j||(X.current=t)),B(!1),void H(!1)}U&&(r.backspace||r.delete)&&0===e.length&&B(!1)}});const Je=he(async t=>{if(Ie)return;const r=removeAltPCharacter(t);if(null!==r)return n(r),void N?.();const o=processBracketedPaste(t);if((o.isPasteStart||o.isPasteEnd||Le())&&await Ne(t))return void(Se.current=!0);if(ue.current)return void(ue.current=!1);-1!==Ce&&ve(-1);const s=1===t.length,l=t.slice(-1);if(s){if("?"===l&&!U)return B(!0),n(""),void F(e=>e+1);if("!"===l&&!j)return B(!1),H(!0),n(""),void F(e=>e+1)}const d=ib(t),m=t.length<e.length&&!e.startsWith(t),g=!m&&t.length<e.length,h=t.length===e.length+1||g,f=lb({canOpenMenu:h,deletedFromMiddle:m,menuState:d,showCommandMenu:W});W===f&&z===d.commandSearchQuery||(G(f),q(f?d.commandSearchQuery:"")),"@"!==l||a||isPrecededByWhitespace(t.length>1?t[t.length-2]:"")&&(i(!0),u(""));const y=t.lastIndexOf("@");if(t.length<e.length&&-1!==y&&" "===e.charAt(e.length-1)&&" "!==t.charAt(t.length-1)){const e=t.substring(y+1),n=!e.includes(" "),r=y>0?t[y-1]:"";n&&isPrecededByWhitespace(r)&&(i(!0),u(e))}if(a)if(t.length<e.length){const e=t.lastIndexOf("@");if(-1===e)i(!1),u("");else{const n=t.substring(e+1);u(n)}}else{const e=t.lastIndexOf("@");if(-1!==e){const n=t.substring(e+1),r=n.indexOf(" ");if(-1!==r){const e=n.substring(0,r);u(e),i(!1)}else u(n)}}U&&(t!==e||t.length<e.length)&&B(!1),Me&&_e(),0===t.length&&(H(!1),qe(),q(""),Q(!1),ee([]),u(""),ae(""),$e()),n(t)},[U,e,n,a,i,W,z,j,te,Ce,Ne,$e,N,Me,_e,Ie,qe]),Xe=he(async()=>{if(Ue(),X.current=0,U)return void B(!1);const r=e.trim(),o=!j&&r.startsWith("/");let s=r;!j&&Z.length>0&&(s=resolvePastedTextTokens({input:s,detectedContent:Z}));const a=!j&&te.length>0?[...te]:[],i=Oe?wb(Oe):void 0;if(o&&d&&(n(""),"handled"===(await d(s,a,i)).status))return M?.add(s),H(!1),qe(),q(""),ze(),ee([]),ve(-1),xe(""),void Ke({replaceCurrentInput:!0});ve(-1),xe(""),s.length>0&&M?.add(s);const l=Oe?.selection?{lines:Oe.selection.lineCount,file:basename8(Oe.activeFile?.relativePath??Oe.activeFile?.path??"")||"unknown",ide:nw[Vp()??""]??"IDE"}:void 0;t({input:s,role:j?"bash":"user",images:a,ideContext:i,ideHint:l}),H(!1),qe(),q(""),ze(),ee([]),Ke({replaceCurrentInput:!0})},[t,d,U,e,j,te,Z,M,Ue,ze,qe,Ke,n]),Ze=he(t=>{const r=s(process.cwd(),t),o=r.includes(" ")?`"${r}"`:r;let d;if(a&&""!==l){const t=e.lastIndexOf("@");d=-1!==t?e.substring(0,t+1)+o+" ":o+" "}else d=`${e}${o} `;n(d),i(!1),u(""),F(e=>e+1)},[n,i,e,a,l,u]),et=he(()=>{i(!1),u("")},[i,u]),tt=he(e=>{const t=nS.has(e),r="/design"===e.trimEnd();if(t||r){const t=e.trimEnd();n(t+" "),q(t.substring(1)+" ")}else qe(),q(""),n(e+" ");F(e=>e+1)},[n,qe]),nt=he(t=>{if("/resume"===t||"/sessions"===t)return M?.add(t),ve(-1),xe(""),ae(e),qe(),q(""),Q(!0),n(""),void F(e=>e+1);if("/design help"===t)return qe(),q(""),n(""),F(e=>e+1),M?.add(t),void d?.("/design help");if(tS.has(t))return qe(),q(""),M?.add(t),ve(-1),xe(""),n(""),F(e=>e+1),void d?.(t);const r=nS.has(t),o=rS.has(t);r?tt(t):(qe(),q(""),o?(M?.add(t),ve(-1),xe(""),n(""),F(e=>e+1),d?.(t)):(n(t+" "),F(e=>e+1)))},[d,n,e,M,tt,qe]),rt=he(()=>{qe(),q(""),ve(-1),xe(""),F(e=>e+1)},[]),ot=he(e=>{Q(!1),n(""),ae(""),ve(-1),xe(""),F(e=>e+1),d&&d(`/resume:${e}`)},[d,n]),st=he(()=>{Q(!1),n(se),ve(-1),xe(""),F(e=>e+1)},[se,n]),at=he(e=>{Pe.current=e,ke.current=void 0},[]),it=ge(()=>{const t=Ge&&("OPEN"===Ge.state||"MERGED"===Ge.state);return"auto-accept"===P||"plan"===P||"bypass"===P||Fe||t?!U&&!Y:!U&&0===e.length&&!j&&!Y},[U,e,j,Y,P,Fe,Ge]),lt=null!==ie,ct=me(new Map),ut=ge(()=>te.map((e,t)=>{if(ct.current.has(e))return ct.current.get(e)??null;const n=saveTempImage(e,t+1);return ct.current.set(e,n),n}),[te]),dt=__name(()=>U||a||W||Y?0:it||R||j?3:4,"getBottomMargin");return ce.createElement(ye,{width:"100%",flexDirection:"column",marginBottom:dt()},!Y&&ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(ImageRowsDisplay,{detectedImages:te,selectedImageIndex:re,imageTempPaths:ut,termWidth:We,inHistory:-1!==Ce}),ce.createElement(we,{color:j?Xr.GREEN:Xr.GRAY},He.line.repeat(We)),(()=>{const t=__name(()=>{if(!fe.current)return Date.now()-X.current<100?(X.current=0,void Qe()):void(a||W||Y||Ie||Xe());fe.current=!1},"handleTextInputSubmit"),n=__name(n=>ce.createElement(TextInput,{key:O,value:e,placeholder:Ie?"Save and close the editor to continue...":o,onChange:Je,onSubmit:t,showCursor:!Ie&&r&&-1===re,onCursorChange:at,initialCursor:ke.current,prefix:`${j?"!":He.pointer} `,prefixColor:j?Xr.GREEN:Xr.WHITE,singleLine:n?.singleLine,maxWidth:n?.maxWidth}),"renderTextInput");if(W&&T&&"/model"===V){const e=getModelHintLayout({currentModel:T,terminalWidth:We});return ce.createElement(ye,{flexDirection:"row",width:"100%"},ce.createElement(ye,{width:25},n({singleLine:!0,maxWidth:25})),ce.createElement(ye,{width:e.descriptionWidth},ce.createElement(we,{color:Xr.DIM,wrap:"truncate"},e.text)))}return n()})(),ce.createElement(we,{color:j?Xr.GREEN:Xr.GRAY},He.line.repeat(We))),U&&ce.createElement(Eb,null),a&&ce.createElement(YE,{onSelectFile:Ze,onClose:et,searchQuery:l}),W&&ce.createElement(aS,{onSelectCommand:nt,onInsertCommand:tt,onSubmitSearch:Xe,onClose:rt,searchQuery:z,onSelectedCommandChange:K}),Y&&ce.createElement(yb,{onSelectSession:ot,onClose:st}),!W&&(it||R||lt)&&ce.createElement(ob,{termWidth:We,indicatorText:ub(Fe,Oe,We),isIDEIndicator:cb(Fe,Oe),permissionMode:P,prInfo:Ge,tasteLearning:g,contextUsage:m,connectionIndicator:Be,pendingExitKey:R,updateStatus:k,updateFailedInfo:C,currentProvider:v,showProviderInfo:x,isBashMode:j,shareInfo:f,showShareNotification:y,unshareNotificationMessage:w,tasteNotificationMessage:S,creditWarning:E,hasStashedPrompt:lt}),Me&&ce.createElement(ye,{paddingLeft:1,flexDirection:"column"},ce.createElement(we,{color:Xr.YELLOW},Me)))},"InputBox");function getQueuedDisplayText(e){return e.displayMessage??e.input}function shouldCollapseQueuedMessage(e){return e.startsWith("Monitor check due:")||e.startsWith("Monitor update:")||e.startsWith("Monitor alert")}function getQueuedDisplayRows(e){const t=[];for(const n of e){if(n.isMeta)continue;const e=getQueuedDisplayText(n),r=shouldCollapseQueuedMessage(e)?t.find(t=>t.text===e):void 0;r?r.count+=1:t.push({text:e,count:1})}return t}pn(),__name(getQueuedDisplayText,"getQueuedDisplayText"),__name(shouldCollapseQueuedMessage,"shouldCollapseQueuedMessage"),__name(getQueuedDisplayRows,"getQueuedDisplayRows");var kb=__name(({messages:e})=>{const t=e.filter(e=>!e.isMeta).length;if(0===t)return null;const n=getQueuedDisplayRows(e);return ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(ye,{marginBottom:0},ce.createElement(we,{color:no,inverse:!0},` Queued (${t}) `)),n.map(e=>ce.createElement(ye,{key:e.text},ce.createElement(we,{color:Xr.DIM},He.pointerSmall," "),ce.createElement(we,{color:Xr.DIM},truncateString({text:e.count>1?`${e.text} (${e.count})`:e.text,maxChars:80})))))},"QueuedMessages"),Cb=ce.memo(({queuedMessages:e,isProcessing:t,executionState:n,status:r,input:o,setInput:s,onSubmit:a,showFileList:i,setShowFileList:l,fileSearchQuery:u,setFileSearchQuery:d,onCommand:m,outputTokens:g=0,contextUsage:h,tasteLearning:f,tasteUsage:y,shareInfo:w,showShareNotification:S,unshareNotificationMessage:E,tasteNotificationMessage:k,updateStatus:C,updateFailedInfo:v,creditWarning:T,currentProvider:x,currentModel:P,showProviderInfo:A,permissionMode:I,onToggleAutoAccept:M,hintMessage:R,historyManager:_,pendingExitKey:D,onResetPendingExitKey:N,onDoubleEscapeEmpty:$,retryAttempt:L,onAltP:O,inputActive:F=!0})=>{const[U,B]=de(0),j=me(o);return pe(()=>{D&&o!==j.current&&o.length>0&&N?.(),j.current=o},[o,D,N]),pe(()=>{if(!t)return void B(0);const e=setInterval(()=>{B(e=>e+1e3)},1e3);return()=>{clearInterval(e)}},[t]),ce.createElement(ye,{flexDirection:"column"},ce.createElement(kb,{messages:e}),ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between"},ce.createElement(ye,{flexDirection:"column"},(t||n.isExecuting)&&null===L&&ce.createElement($E,{tokens:g,timeElapsed:U,status:n.isExecuting?`Executing: ${n.currentCommand}`:r}),R&&ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM}," ","⎿"," ","Tip: ",R)))),F?ce.createElement(bb,{input:o,setInput:s,onSubmit:a,placeholder:"Ask your question...",showFileList:i,setShowFileList:l,fileSearchQuery:u,setFileSearchQuery:d,onCommand:m,contextUsage:h,tasteLearning:f,tasteUsage:y,shareInfo:w,showShareNotification:S,unshareNotificationMessage:E,tasteNotificationMessage:k,updateStatus:C,updateFailedInfo:v,creditWarning:T,currentProvider:x,currentModel:P,showProviderInfo:A,permissionMode:I,onToggleAutoAccept:M,hintMessage:R,historyManager:_,pendingExitKey:!D||t||n.isExecuting?null:D,onDoubleEscapeEmpty:$,onAltP:O,isProcessing:t}):ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},"Background tasks focused · ↑↓ select · x stop · esc close")))});pn();var vb=__name(({onComplete:e,onCancel:t})=>{const[n,r]=de(!1),[o,s]=de(""),{authState:a,statusMessage:i,browserUrl:l,apiKeyInput:u,setApiKeyInput:d,handleApiKeySubmit:m,cancel:g}=useAuthFlow({onSuccess:__name((t,n)=>{const o=t.userName&&"API Key"!==t.userName&&"Manual API Key"!==t.userName?t.userName:"";s(o),isInternalTeamFlagEnforced()?r(!0):e(!0,o?`Logged in as ${o}`:"Logged in successfully")},"onSuccess"),onFailure:__name((t,n)=>{e(!1,n)},"onFailure"),onCancel:__name(()=>{t()},"onCancel")});return Ee((t,r)=>{if(r.ctrl&&"c"===t){if(n)return void e(!0,o?`Logged in as ${o}. Note: Anthropic authentication skipped.`:"Logged in successfully. Note: Anthropic authentication skipped.");g()}}),n?ce.createElement(Uo,{onSuccess:()=>{e(!0,o?`Logged in as ${o} with Anthropic`:"Logged in successfully with Anthropic")},onCancel:()=>{e(!0,o?`Logged in as ${o}. Note: Anthropic authentication skipped.`:"Logged in successfully. Note: Anthropic authentication skipped.")},onFailure:t=>{e(!0,o?`Logged in as ${o}. Anthropic auth failed: ${t}`:`Logged in successfully. Anthropic auth failed: ${t}`)}}):ce.createElement(vh,{authState:a,statusMessage:i,browserUrl:l,apiKeyInput:u,setApiKeyInput:d,handleApiKeySubmit:m})},"LoginOverlay");function buildOAuthMetadataUrl(e){const t=new h(e),n="/"===t.pathname?"":t.pathname.replace(/\/+$/,"");return t.pathname=`/.well-known/oauth-authorization-server${n}`,t.search="",t.hash="",t.toString()}function buildOidcMetadataUrl(e){const t=new h(e),n=t.pathname.replace(/\/+$/,"");return t.pathname=`${n}/.well-known/openid-configuration`,t.search="",t.hash="",t.toString()}async function tryFetchAsMetadata(e){try{const t=await fetchWithTimeout(e,{method:"GET",headers:{Accept:"application/json"}});if(!t.ok)return null;const n=await t.json();return n.authorization_endpoint&&n.token_endpoint?{authorizationEndpoint:n.authorization_endpoint,tokenEndpoint:n.token_endpoint,registrationEndpoint:n.registration_endpoint,scopes:n.scopes_supported}:null}catch(t){return dlog(`[MCP] OAuth metadata fetch failed for ${e}`,t),null}}async function discoverOAuthMetadataFromIssuer(e){return await tryFetchAsMetadata(buildOAuthMetadataUrl(e))||await tryFetchAsMetadata(buildOidcMetadataUrl(e))}async function discoverOAuthMetadata(e){const t=new h(e),n=`${t.protocol}//${t.host}`;return await tryFetchAsMetadata(`${n}/.well-known/oauth-authorization-server`)||await tryFetchAsMetadata(`${n}/.well-known/openid-configuration`)}function parseResourceMetadataUrl(e){if(!e)return null;const t=e.match(/resource_metadata\s*=\s*"([^"]+)"|resource_metadata\s*=\s*([^\s,]+)/i);return t?t[1]??t[2]??null:null}async function fetchProtectedResourceMetadata(e){try{const t=await fetchWithTimeout(e,{method:"GET",headers:{Accept:"application/json"}});if(!t.ok)return null;const n=await t.json();return{authorizationServers:n.authorization_servers,scopesSupported:n.scopes_supported}}catch(e){return dlog("[MCP] Protected resource metadata fetch failed",e),null}}async function checkServerAuthRequirements(e){try{const t=await fetchWithTimeout(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",method:"initialize",id:0,params:{protocolVersion:Sg,capabilities:{},clientInfo:Eg}})});if(401===t.status||403===t.status){const n=parseResourceMetadataUrl(t.headers?.get?.("www-authenticate")??null);if(n){const e=await fetchProtectedResourceMetadata(n),t=e?.authorizationServers?.[0];if(t){const n=await discoverOAuthMetadataFromIssuer(t);if(n)return e?.scopesSupported&&(n.scopes=e.scopesSupported),{requiresAuth:!0,metadata:n}}}return{requiresAuth:!0,metadata:await discoverOAuthMetadata(e)||void 0}}return{requiresAuth:!1}}catch(e){return{requiresAuth:!1,error:`Server unreachable: ${e instanceof Error?e.message:String(e)}`}}}async function registerOAuthClient({registrationEndpoint:e,clientName:t,redirectUris:n}){try{const r=await fetchWithTimeout(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:t,redirect_uris:n,token_endpoint_auth_method:"none",grant_types:["authorization_code","refresh_token"],response_types:["code"]})});if(r.ok){const e=await r.json();return{clientId:e.client_id,clientSecret:e.client_secret}}}catch(e){dlog("[MCP] OAuth client registration failed",e)}return null}async function discoverAndAuthenticate({serverName:e,serverUrl:t,onStatus:n}){const r=n??(()=>{});r("Probing server for OAuth requirements...");const o=await checkServerAuthRequirements(t);if(o.error)return{success:!1,error:o.error};if(!o.requiresAuth)return{success:!1,error:"Server does not require authentication"};if(!o.metadata)return{success:!1,error:"Server returned 401 but did not advertise OAuth metadata. Add `oauth` config manually via `mcp add-json`."};const{authorizationEndpoint:s,tokenEndpoint:a,registrationEndpoint:i,scopes:l}=o.metadata;if(!i)return{success:!1,error:"Server requires pre-registered OAuth credentials (no Dynamic Client Registration endpoint advertised). Register an OAuth client with the server, then add it via `mcp add-json` with an `oauth.clientId` field."};const u=`http://${Un}:${Fn}/callback`;r("Registering OAuth client...");const d=await registerOAuthClient({registrationEndpoint:i,clientName:Eg.name,redirectUris:[u]});if(!d)return{success:!1,error:"Dynamic client registration failed at "+i};const m={authorizationUrl:s,tokenUrl:a,clientId:d.clientId,clientSecret:d.clientSecret,scopes:l},g=await performOAuthFlow(e,t,m,{onStatus:n});return g.success&&(await storeDiscoveredClient(e,{authorizationUrl:s,tokenUrl:a,clientId:d.clientId,scopes:l}),d.clientSecret?await storeClientSecret(e,d.clientSecret):await deleteClientSecret(e)),g}pn(),pn(),On(),pn(),$n(),Wn(),pn(),Bn(),Sn(),__name(buildOAuthMetadataUrl,"buildOAuthMetadataUrl"),__name(buildOidcMetadataUrl,"buildOidcMetadataUrl"),__name(tryFetchAsMetadata,"tryFetchAsMetadata"),__name(discoverOAuthMetadataFromIssuer,"discoverOAuthMetadataFromIssuer"),__name(discoverOAuthMetadata,"discoverOAuthMetadata"),__name(parseResourceMetadataUrl,"parseResourceMetadataUrl"),__name(fetchProtectedResourceMetadata,"fetchProtectedResourceMetadata"),__name(checkServerAuthRequirements,"checkServerAuthRequirements"),__name(registerOAuthClient,"registerOAuthClient"),pn(),Wn(),$n(),__name(discoverAndAuthenticate,"discoverAndAuthenticate"),wn();var Tb=__name(({onClose:e})=>{const[t,n]=de([]),[r,o]=de(!0),[s,a]=de(0),[i,l]=de("list"),[u,d]=de(null),[m,g]=de(0),h=useTerminalHeight(),f=he(async()=>{o(!0);try{const e=await listMcpServers(),t=getMcpConnectionManager().getConnectedServers(),r=await Promise.all(e.map(async e=>{const n=t.find(t=>t.name===e.name);let r,o,s="disconnected";return!1===e.config.enabled?s="disabled":n&&"connected"===n.status?(s="connected",r=n.tools.length):n&&"error"===n.status?(s="error",o=n.error):(e.config.oauth||"http"===e.config.transport)&&(await hasTokens(e.name)?s="authenticated":e.config.oauth&&(s="requires_auth")),{name:e.name,config:e.config,scope:e.scope,status:s,toolCount:r,error:o}}));n(r)}catch{}finally{o(!1)}},[]);pe(()=>{f()},[f]);const y=ge(()=>{const e=[];for(const n of["local","project","user"])e.push(...t.filter(e=>e.scope===n));return e},[t]),w=y[s]??null,S=h-1,E=ge(()=>new Set(y.map(e=>e.scope)).size,[y]),k=Math.max(4,S-8-2*E);pe(()=>{g(e=>clampScrollOffset({cursor:s,total:y.length,maxVisible:k,currentOffset:e}))},[s,y.length,k]),Ee((t,n)=>{if(n.ctrl&&"c"===t)e();else if(n.escape)"actions"===i||"confirm-remove"===i?(l("list"),d(null)):e();else if("list"===i){if(n.upArrow&&(a(e=>Math.max(0,e-1)),d(null)),n.downArrow){if(0===y.length)return;const e=Math.max(0,y.length-1);a(t=>Math.min(e,t+1)),d(null)}n.return&&w&&(l("actions"),d(null))}});const C=__name((e,t)=>{const n=__name((e,n)=>ce.createElement(we,{color:e,backgroundColor:t},n),"icon");switch(e){case"connected":return n(Xr.GREEN,He.tick);case"authenticated":return n(Xr.CYAN,He.tick);case"requires_auth":return n(Xr.YELLOW,He.warning);case"error":return n(Xr.RED,He.cross);default:return n(Xr.GRAY,He.circle)}},"getStatusIcon"),v=__name(e=>{switch(e.status){case"connected":return"connected"+(void 0!==e.toolCount?` · ${e.toolCount} tools`:"");case"authenticated":return"authenticated · not connected";case"requires_auth":return"requires authentication";case"error":return e.error||"error";case"disabled":return"disabled";default:return"not connected"}},"getStatusText"),T=__name(e=>{switch(e){case"local":return"Local MCPs";case"project":return"Project MCPs";case"user":return"User MCPs"}},"getScopeLabel"),x=__name(e=>{switch(e){case"local":return"~/.commandcode/projects/*/mcp.json";case"project":return".mcp.json";case"user":return"~/.commandcode/mcp.json"}},"getScopePath"),P=__name(async e=>{if(w)if("back"!==e.value)if("connected"!==e.value)if("authenticated"!==e.value)if("connect"!==e.value)if("auth"!==e.value)if("remove"!==e.value)if("disable"!==e.value)if("enable"!==e.value);else{d({text:`Enabling ${w.name}...`,color:Xr.CYAN,loading:!0});try{if(!await updateMcpServerStatus({name:w.name,enabled:!0,scope:w.scope}))return void d({text:`${He.cross} Failed to enable ${w.name}, server may no longer exist in ${w.scope} scope`,color:Xr.YELLOW});await f(),d({text:`${He.tick} Enabled ${w.name}`,color:Xr.GREEN})}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else{d({text:`Disabling ${w.name}...`,color:Xr.CYAN,loading:!0});try{const e=getMcpConnectionManager();if(!await updateMcpServerStatus({name:w.name,enabled:!1,scope:w.scope}))return void d({text:`${He.cross} Failed to disable ${w.name}, server may no longer exist in ${w.scope} scope`,color:Xr.YELLOW});await e.disconnectServer(w.name),await f(),d({text:`${He.tick} Disabled ${w.name}`,color:Xr.GREEN})}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else l("confirm-remove");else{if(!(w.config.oauth||"http"===w.config.transport&&w.config.url))return void d({text:"Authentication requires an http server with a url",color:Xr.YELLOW});d({text:`Authenticating ${w.name}...`,color:Xr.CYAN,loading:!0});try{let e;if(w.config.oauth){const t={authorizationUrl:w.config.oauth.authorizationUrl,tokenUrl:w.config.oauth.tokenUrl,clientId:w.config.oauth.clientId,clientSecret:w.config.oauth.clientSecret,scopes:w.config.oauth.scopes};e=await performOAuthFlow(w.name,w.config.url??"",t,{onStatus:__name(()=>{},"onStatus")})}else e=await discoverAndAuthenticate({serverName:w.name,serverUrl:w.config.url});if(e.success){d({text:`${He.tick} Authenticated with ${w.name}`,color:Xr.GREEN});try{const e=getMcpConnectionManager();await e.ensureServerConnection(w.name)}catch{}await f()}else d({text:`${He.cross} Auth failed: ${e.error}`,color:Xr.RED})}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else{d({text:`Connecting ${w.name}...`,color:Xr.CYAN,loading:!0});try{const e=getMcpConnectionManager();await e.ensureServerConnection(w.name),d({text:`${He.tick} Connected to ${w.name}`,color:Xr.GREEN}),await f()}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else d({text:"Already authenticated",color:Xr.GREEN});else d({text:"Already connected",color:Xr.GREEN});else l("list")},"handleActionSelect"),A=__name(async e=>{if(w)if("yes"===e.value)try{const e=getMcpConnectionManager();"connected"===w.status&&await e.disconnectServer(w.name),await removeMcpServer({name:w.name,scope:w.scope}),l("list"),await f(),a(e=>Math.min(e,Math.max(0,y.length-2)))}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED}),l("actions")}else l("actions")},"handleRemoveConfirm");if(r)return ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Manage MCP servers"),ce.createElement(we,{color:Xr.DIM},"Loading..."));if("confirm-remove"===i&&w)return ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.RED,bold:!0},"Remove ",w.name,"?"),ce.createElement(we,{color:Xr.DIM},"This will remove the server from ",w.scope," ","config."),ce.createElement(ye,{marginTop:1},ce.createElement(bt,{items:[{label:"Yes, remove",value:"yes"},{label:"Cancel",value:"no"}],onSelect:A,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e}," ",t," ")})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ navigate · Enter to select · Esc to cancel")));if("actions"===i&&w){const e=[],t="disabled"===w.status,n="connected"===w.status,r="authenticated"===w.status||n;t&&e.push({label:"Enable",value:"enable"}),!t&&n&&e.push({label:"Connected",value:"connected"}),t||n||e.push({label:"Connect",value:"connect"});const o=!t&&(w.config.oauth||"http"===w.config.transport);return o&&r&&e.push({label:"Authenticated",value:"authenticated"}),o&&!r&&e.push({label:"Authenticate",value:"auth"}),t||e.push({label:"Disable",value:"disable"}),e.push({label:"Remove",value:"remove"}),e.push({label:"Back",value:"back"}),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},w.name),ce.createElement(ye,null,C(w.status),ce.createElement(we,{color:Xr.DIM}," ",v(w))),ce.createElement(ye,{marginTop:1},ce.createElement(bt,{items:e,onSelect:P,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e}," ",t," ")})),u&&ce.createElement(ye,{marginTop:1},u.loading&&ce.createElement(we,{color:u.color},ce.createElement(ut,{type:"dots"})," "),ce.createElement(we,{color:u.color},u.text)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ navigate · Enter to select · Esc to go back")))}let I=null;const M=m,R=m+k,_=y.slice(M,R),D=y.length>k;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Manage MCP servers"),ce.createElement(we,{color:Xr.DIM},t.length," ",1===t.length?"server":"servers"),0===t.length?ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"No MCP servers configured."),ce.createElement(we,{color:Xr.DIM},'Use "',getBinaryCommand(),' mcp add" to add a server.'),ce.createElement(Fo,{url:"https://commandcode.ai/docs/mcp",text:"View MCP Docs ↗",color:Xr.CYAN,dimColor:!0})):ce.createElement(ye,{marginTop:1,flexDirection:"column"},_.map((e,t)=>{const n=M+t,r=e.scope!==I;I=e.scope;const o=n===s;return ce.createElement(ce.Fragment,{key:e.name},r&&ce.createElement(ye,{marginTop:0===t?0:1},ce.createElement(we,{bold:!0},T(e.scope)),ce.createElement(we,{color:Xr.DIM}," ","(",x(e.scope),")")),ce.createElement(ye,null,ce.createElement(we,{color:o?Xr.WHITE:void 0,backgroundColor:o?Co:void 0,bold:o},e.name),ce.createElement(we,{color:Xr.DIM,backgroundColor:o?Co:void 0}," · "),C(e.status,o?Co:void 0),ce.createElement(we,{color:"connected"===e.status?Xr.GREEN:"authenticated"===e.status?Xr.CYAN:"requires_auth"===e.status?Xr.YELLOW:Xr.GRAY,backgroundColor:o?Co:void 0}," ",v(e)," ")))})),D&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",M+1,"–",Math.min(R,y.length)," of"," ",y.length,M>0?" · ↑ more":"",R<y.length?" · ↓ more":"")),u&&ce.createElement(ye,{marginTop:1},u.loading&&ce.createElement(we,{color:u.color},ce.createElement(ut,{type:"dots"})," "),ce.createElement(we,{color:u.color},u.text)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},0===t.length?"Esc to close":"↑↓ navigate · Enter to select · Esc to close")))},"McpManager");pn(),wn();var xb=__name(({onClose:e})=>{const[t,n]=de([]),[r,o]=de(0),[s,a]=de(!0),[i,l]=de(null);pe(()=>{__name(async()=>{try{const e=await discoverMemoryFiles(process.cwd());n(e),a(!1)}catch(e){l(e instanceof Error?e.message:"Failed to discover memory files"),a(!1)}},"loadMemoryFiles")()},[]);const u=__name(async t=>{try{await openInEditor(t.path),e()}catch(t){console.error("Error opening memory file. Please ensure you have an editor set up."),e()}},"handleOpenInEditor"),d=t.filter(e=>"project"===e.type||"user"===e.type);if(Ee((t,n)=>{n.escape?e():n.upArrow?o(e=>Math.max(0,e-1)):n.downArrow?o(e=>Math.min(d.length-1,e+1)):(n.return&&d[r]&&u(d[r]),"1"===t&&d[0]&&u(d[0]),"2"===t&&d[1]&&u(d[1]))}),s)return ce.createElement(ye,{paddingLeft:1,paddingTop:1},ce.createElement(we,{color:Xr.DIM},"Loading memory files..."));if(i)return ce.createElement(ye,{paddingLeft:1,paddingTop:1},ce.createElement(we,{color:Xr.RED},He.cross," ",i));const m=d.map((e,t)=>{const n=t+1;let r="",o="";return"project"===e.type?(r=`${n}. Project memory`,o=e.exists?"Checked in at ./AGENTS.md":"Not found at ./AGENTS.md"):"user"===e.type&&(r=`${n}. User memory`,o=e.exists?"Saved in ~/.commandcode/AGENTS.md":"Not found in ~/.commandcode/AGENTS.md"),{label:r,value:e.path,description:o}});return ce.createElement(ye,{flexDirection:"column",width:"100%",borderStyle:"single",borderColor:Xr.GRAY,paddingTop:1,paddingBottom:1,paddingLeft:2,paddingRight:2},ce.createElement(ye,null,ce.createElement(we,{color:Xr.WHITE,bold:!0},"Select memory to edit:")),ce.createElement(ye,{columnGap:4,marginTop:1},ce.createElement(ye,{flexDirection:"column"},m.map((e,t)=>ce.createElement(we,{key:t,color:r===t?Xr.WHITE:Xr.DIM},r===t?"> ":" ",e.label))),ce.createElement(ye,{flexDirection:"column"},m.map((e,t)=>ce.createElement(we,{key:t,color:r===t?Xr.WHITE:Xr.DIM},e.description)))))},"MemorySelector");pn(),pn();var Pb={"Interrupted by user":"Interrupted by user","Insufficient credits":"You have insufficient credits to make this request. Please purchase more credits to continue using Command Code: https://commandcode.ai/billing"};function UserMessage({content:e,images:t,imageCount:n=0,ideHint:r}){const o="Interrupted by user"===e,s="Insufficient credits"===e,a=e.startsWith("Error:"),i=o||s||a,l=i&&Pb[e]||e,u=null!=t?t.length:n,d=me(null);null===d.current&&t&&t.length>0&&(d.current=t.map((e,t)=>saveTempImage(e,t+1)));const m=d.current??[];return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{backgroundColor:i?void 0:uo.BG,paddingRight:1},ce.createElement(we,{color:i?Xr.RED:uo.POINTER,bold:!i},He.pointer),ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:i?Xr.RED:uo.FG,wrap:"wrap"},l))),u>0&&ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},"⎿"," ",Array.from({length:u},(e,t)=>{const n=m[t],r=`[Image #${t+1}]`;return null!=n?createOSC8Link(`file://${n}`,r,!1):r}).join(" "))),r&&!i&&ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:ko},$y),ce.createElement(we,{color:Xr.DIM}," ","Selected ",r.lines," ",1===r.lines?"line":"lines"," from"," ",r.file," in ",r.ide)))}function AutoCompactMessage({content:e}){return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},He.bullet," ",e))}function ZdrPausedMessage(){return ce.createElement(ye,{marginTop:1,marginBottom:1},ce.createElement(we,null,ce.createElement(we,{color:Xr.DIM},He.bullet," "),ce.createElement(we,{color:Xr.DIM},"Per-task model overrides reverted to ZDR safe defaults. Run"," "),ce.createElement(we,{color:wo.CODE},"/configure-models"),ce.createElement(we,{color:Xr.DIM}," to review · esc to dismiss")))}function TasteSkipMessage(){return ce.createElement(ye,{marginTop:1,marginBottom:1},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:eo.BADGE_BG,color:eo.BADGE_FG,bold:!0},Fy)),ce.createElement(we,{color:Xr.DIM}," Skipped. Run "),ce.createElement(we,{color:wo.CODE},"/learn-taste"),ce.createElement(we,{color:Xr.DIM}," or "),ce.createElement(we,{color:wo.CODE},"cmd learn-taste"),ce.createElement(we,{color:Xr.DIM}," anytime."))}function HookWarningMessage({content:e}){return ce.createElement(ye,null,ce.createElement(we,{color:Xr.YELLOW},He.warning),ce.createElement(ye,{marginLeft:1,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.YELLOW},e)))}function HookLineMessage({content:e}){return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},` ${e}`))}function HookLineContinuationMessage({content:e}){return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},` ${e}`))}function HookFrameMessage({lines:e,header:t}){return ce.createElement(ye,{flexDirection:"column"},void 0!==t&&ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},` ${t}`)),e.map((e,t)=>ce.createElement(ye,{key:t,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},e.primary?` └ ${e.text}`:` ${e.text}`))))}function GoalLineMessage({content:e,subline:t}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:ko},$y),ce.createElement(we,{color:Xr.DIM,wrap:"wrap"}," ",e)),t?ce.createElement(ye,{marginLeft:4,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},t)):null)}function GoalAcceptMessage({command:e,acceptLine:t,hint:n}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(UserMessage,{content:e}),ce.createElement(GoalLineMessage,{content:t,subline:n}))}function GoalCompleteMessage({elapsed:e,turns:t,goal:n}){const r=`${t} ${1===t?"turn":"turns"}`;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,null,ce.createElement(we,{color:Xr.GREEN},He.tick," Goal achieved"),ce.createElement(we,{color:Xr.DIM},` (${e} · ${r})`))),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},"Goal: ",n)))}function GoalStatusMessage({state:e,headline:t,goal:n,detail:r,hint:o}){const s="completed"===e?He.tick:"paused"===e?"⏸":"idle"===e?He.circle:He.bullet,a="completed"===e?Xr.GREEN:"paused"===e?Xr.YELLOW:Xr.DIM;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:a},s," ",t)),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},n)),r?ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},r)):null,o?ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},o)):null)}function BranchResultMessage({title:e}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},e?ce.createElement(we,null,ce.createElement(we,{color:Xr.GREEN},"⑂ Forked."),ce.createElement(we,null," You're now in "),ce.createElement(we,{bold:!0},'"',e,'"')):ce.createElement(we,null,ce.createElement(we,{color:Xr.GREEN},"⑂ Forked."),ce.createElement(we,null," You're now in the new session"))),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},"Original session saved · /resume to switch back")))}function SessionFileMessage({sessionId:e,fileLine:t}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},He.bullet," Session ID: "),ce.createElement(we,null,e)),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:ko},$y," "),ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},t)))}function InfoMessage({content:e,metadata:t}){if(t?.isTasteSkip)return ce.createElement(TasteSkipMessage,null);if(t?.isAutoCompact)return ce.createElement(AutoCompactMessage,{content:e});if(t?.hookFrame&&t.hookFrame.length>0)return ce.createElement(HookFrameMessage,{lines:t.hookFrame,header:t.hookFrameHeader});if(t?.isHookLine)return ce.createElement(HookLineMessage,{content:e});if(t?.isHookLineContinuation)return ce.createElement(HookLineContinuationMessage,{content:e});if(t?.isHookWarning)return ce.createElement(HookWarningMessage,{content:e});if(t?.isSuccess)return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.GREEN},He.tick," ",e));if(t?.isGoalAccept)return ce.createElement(GoalAcceptMessage,{command:e,acceptLine:t.goalAcceptLine??"",hint:t.goalSubline});if(t?.isGoalComplete)return ce.createElement(GoalCompleteMessage,{elapsed:t.goalElapsed??"",turns:t.goalTurns??1,goal:t.goalText??""});if(t?.isGoalStatus)return ce.createElement(GoalStatusMessage,{state:t.goalState??"running",headline:t.goalHeadline??"",goal:t.goalText??"",detail:t.goalDetail,hint:t.goalSubline});if(t?.isBranchResult)return ce.createElement(BranchResultMessage,{title:t.branchTitle});if(t?.isSessionFile)return ce.createElement(SessionFileMessage,{sessionId:t.sessionFileId??"",fileLine:t.sessionFileLine??""});if(t?.isGoalNotice){const n="cleared"===t.goalNoticeKind?He.tick:"none"===t.goalNoticeKind?He.circle:"paused"===t.goalNoticeKind?"⏸":He.bullet;return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},n," ",e))}return t?.isGoalLine?ce.createElement(GoalLineMessage,{content:e,subline:t.goalSubline}):ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},He.bullet," ",e))}__name(UserMessage,"UserMessage"),__name(AutoCompactMessage,"AutoCompactMessage"),__name(ZdrPausedMessage,"ZdrPausedMessage"),__name(TasteSkipMessage,"TasteSkipMessage"),__name(HookWarningMessage,"HookWarningMessage"),__name(HookLineMessage,"HookLineMessage"),__name(HookLineContinuationMessage,"HookLineContinuationMessage"),__name(HookFrameMessage,"HookFrameMessage"),__name(GoalLineMessage,"GoalLineMessage"),__name(GoalAcceptMessage,"GoalAcceptMessage"),__name(GoalCompleteMessage,"GoalCompleteMessage"),__name(GoalStatusMessage,"GoalStatusMessage"),__name(BranchResultMessage,"BranchResultMessage"),__name(SessionFileMessage,"SessionFileMessage"),__name(InfoMessage,"InfoMessage"),pn(),wn(),Rn(),pn();var Ab=Tt()?"⠶":"#";function AssistantMessage({content:e}){return ce.createElement(ye,null,ce.createElement(we,{color:mo},Ab),ce.createElement(ye,{marginLeft:1,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(Markdown,null,e)))}function BashMessage({command:e,output:t,isPending:n=!1,hasError:r=!1}){let o=Xr.GREEN,s=He.tick,a="default",i=t||"(No output)";n&&(o=Xr.YELLOW,s=He.arrowRight,a=Xr.YELLOW,i="Executing…"),r&&(o=Xr.RED,s=He.cross,a=Xr.RED);const l=ge(()=>buildTreeConnectors(i),[i]);return ce.createElement(ye,null,ce.createElement(we,{color:o},s),ce.createElement(ye,{flexDirection:"column",marginLeft:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.GRAY},"$ "),ce.createElement(we,{color:o,bold:!0},e)),ce.createElement(ye,{columnGap:1,marginLeft:1},ce.createElement(we,{color:ko},l),ce.createElement(we,{color:a,wrap:"wrap"},i))))}function CommandResultMessage({message:e,details:t,hasError:n=!1}){const r=n?Xr.YELLOW:void 0,o=ge(()=>buildTreeConnectors(e),[e]);return ce.createElement(ye,{flexDirection:"column",marginBottom:0,marginTop:-1},ce.createElement(ye,{columnGap:1},ce.createElement(we,{color:ko},o),ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:r},e))),t&&ce.createElement(ye,{marginLeft:3},ce.createElement(we,{color:Xr.DIM},"See ",t)))}function ErrorMessage({content:e}){const t=e.includes("Interrupted by user");return ce.createElement(ye,null,ce.createElement(we,{color:Xr.RED},t?He.pointer:He.warning),ce.createElement(ye,{marginLeft:1,flexGrow:1,flexShrink:1,minWidth:0},t?ce.createElement(we,{color:Xr.RED,wrap:"wrap"},e):ce.createElement(Markdown,{color:Xr.RED},e)))}__name(AssistantMessage,"AssistantMessage"),pn(),__name(BashMessage,"BashMessage"),pn(),__name(CommandResultMessage,"CommandResultMessage"),pn(),__name(ErrorMessage,"ErrorMessage"),pn();var Ib={connected:{char:He.tick,color:Xr.GREEN},installed:{char:He.tick,color:Xr.GREEN},up_to_date:{char:He.tick,color:Xr.GREEN},needs_reload:{char:He.circle,color:Xr.YELLOW},failed:{char:He.cross,color:Xr.RED},not_in_ide:{char:He.circle,color:Xr.YELLOW}};function IDEStatusMessage({status:e,ide:t,details:n}){const{prefix:r,ide:o,suffix:s}=getStatusHeadline(e,t),a=Ib[e];return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,null,ce.createElement(we,{color:a.color},a.char),ce.createElement(we,null," ",r),o&&ce.createElement(we,{color:Xr.CYAN},o),s&&ce.createElement(we,null,s))),n?.map((e,t)=>ce.createElement(we,{key:t,color:Xr.DIM}," ",e)))}function ReasoningMessage({content:e,expandedOutput:t,expandKey:n,isStreaming:r=!1}){const o=e?Math.max(1,Math.round(e.length/500)):1,s=Boolean(e),a=(s?e.split("\n"):[]).length,i=`${r?"Thinking…":`Thought for ${o} second${1!==o?"s":""}`}${r&&!t&&a>0?` (${a} line${1!==a?"s":""})`:""}`,l=t&&s,u=!t&&s,d=r&&t&&e.length>560,m=d?e.length-560:0,g=80*Math.floor(m/80),h=d?(e.slice(0,g).match(/\n/g)??[]).length:0,f=d?e.slice(g):e;return ce.createElement(ye,{flexDirection:"column",width:"90%"},ce.createElement(ye,null,ce.createElement(we,{color:to},"✻"," "),ce.createElement(we,{color:to},u?`${i} `:i),u&&ce.createElement(BracketWrap,{color:Xr.DIM},`${n}+o to expand`)),l&&d&&ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:Xr.DIM},h>0?`… (${h} more line${1!==h?"s":""})`:"…")),l&&ce.createElement(ye,{marginLeft:2,flexDirection:"column"},ce.createElement(we,{color:to,wrap:"wrap",italic:!0},f)))}__name(IDEStatusMessage,"IDEStatusMessage"),pn(),__name(ReasoningMessage,"ReasoningMessage"),pn(),pn(),wn();function HelpMessage(){const e=getInvokedCommandName(),t=ge(()=>pg.filter(e=>!("/provider"===e.key&&!isInternalTeamFlagEnforced())),[]);return ce.createElement(ye,{flexDirection:"column",paddingY:1},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Command Code"),ce.createElement(we,{color:Xr.GRAY}," v","0.40.17")),ce.createElement(we,{color:Xr.GRAY},ig)),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Usage"),ce.createElement(ye,{paddingLeft:2},ce.createElement(we,null,e," <command> [options]"))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Options"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},mg.map(t=>ce.createElement(ye,{key:t.key},ce.createElement(we,null,t.key.replace(/^cmd/,e).padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},t.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Commands"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},gg.map(t=>ce.createElement(ye,{key:t.key},ce.createElement(we,null,t.key.replace(/^cmd/,e).padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},t.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Slash Commands"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},t.map(e=>ce.createElement(ye,{key:e.key},ce.createElement(we,null,e.key.padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},e.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Keyboard Shortcuts"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},dg.map(e=>ce.createElement(ye,{key:e.key},ce.createElement(we,null,e.key.padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},e.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Examples"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},fg.map(t=>ce.createElement(ye,{key:t.key},ce.createElement(we,null,t.key.replace(/^cmd/,e).padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},t.description))))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.CYAN},He.pointer),ce.createElement(we,{color:Xr.GRAY}," ",yg.replace(/cmd/,e))),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{bold:!0},"Links"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},hg.map(e=>ce.createElement(ye,{key:e.key},ce.createElement(we,null,e.key.padEnd(lg)),ce.createElement(we,{color:Xr.CYAN},e.description))))))}function SystemMessage({content:e}){return e.includes("KEYBOARD SHORTCUTS")&&e.includes("COMMANDS")?ce.createElement(HelpMessage,null):ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{wrap:"wrap"},ce.createElement(Markdown,null,e)))}function renderFeedEntry(e,t){if("user"===e.role){const t=Array.isArray(e.metadata?.images)?e.metadata.images:void 0,n=e.metadata?.ideHint;return ce.createElement(UserMessage,{content:e.input,images:t,ideHint:n})}return"assistant"===e.role?ce.createElement(AssistantMessage,{content:e.input}):"reasoning"===e.role?ce.createElement(ReasoningMessage,{content:e.input,expandedOutput:t,expandKey:"ctrl",isStreaming:"running"===e.metadata?.status}):"tool"===e.role?ce.createElement(ToolMessage,{name:mh(e.name||""),input:e.input,output:e.output||"",isPending:ch(e),hasError:lh(e),metadata:e.metadata,expandedOutput:t}):"bash"===e.role?ce.createElement(BashMessage,{command:e.command||"",output:e.output||"",isPending:ch(e),hasError:lh(e)}):"system"===e.role?ce.createElement(SystemMessage,{content:e.input}):"info"===e.role?ce.createElement(InfoMessage,{content:e.input,metadata:e.metadata}):"error"===e.role?ce.createElement(ErrorMessage,{content:e.input}):"command-result"===e.role?ce.createElement(CommandResultMessage,{message:e.input,details:e.details,hasError:e.hasError??!1}):"ide-status"===e.role?ce.createElement(IDEStatusMessage,{status:e.status,ide:e.ide,details:e.details}):null}function getModelShortName2(e){const t=findModelById(e);if(t){const e=t.name.toLowerCase().replaceAll(" ","-");return"free"===t.badge?`${e} (free)`:e}return e}function getProviderShortName(e){return e?sn[e]?.shortLabel??e.slice(0,4):""}function TranscriptDivider({count:e,width:t}){const n=` ${e} hidden messages [${kE?"ctrl+y":"ctrl+e"} to expand more] `,r=Math.max(0,Math.floor((t-n.length)/2)),o="─".repeat(r);return ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:co},o),ce.createElement(BracketedText,{text:n,color:co}),ce.createElement(we,{color:co},o))}__name(HelpMessage,"HelpMessage"),__name(SystemMessage,"SystemMessage"),__name(renderFeedEntry,"renderFeedEntry"),__name(getModelShortName2,"getModelShortName"),__name(getProviderShortName,"getProviderShortName"),__name(TranscriptDivider,"TranscriptDivider");var Mb=ce.memo(({feed:e,showHeader:t=!1,staticKey:n,expandedToolOutput:r=!1,currentModel:o,currentProvider:s,hiddenCount:a=0})=>{const i=a>0?{role:"transcript-divider",count:a}:null,l=[...t?["header"]:[],...i?[i]:[],...e],u=useTerminalWidth(),d=ge(()=>GS(u),[u]),m=ge(()=>YS(u),[u]),g=ge(()=>getPackageJson().version||"0.0.0",[]),h=ge(()=>getGitHeaderInfo(),[]),f=ge(()=>{const e=process.cwd(),t=process.env.HOME??process.env.USERPROFILE??"";return e.replace(t,"~")},[]),y=o?getModelShortName2(o):"sonnet-4.6",w="taste-1",S=ge(()=>{if(!o)return"";if(!modelSupportsReasoningEffort(o))return"";const e=getReasoningEffort(o);return e?` with ${e} effort`:""},[o,n]),E=isInternalTeamFlagEnforced()&&!process.env.CMD_DEMO,k=E?" · co":"",C=E&&s?` · ${getProviderShortName(s)}`:"";return ce.createElement(Se,{items:l,key:n,style:{width:"100%"}},e=>{if("object"==typeof e&&"transcript-divider"===e.role)return ce.createElement(TranscriptDivider,{key:"transcript-divider",count:e.count,width:u});if("header"===e)return"compact"===m?ce.createElement(ye,{key:"header",marginBottom:1,flexDirection:"row"},ce.createElement(ye,{width:VS,flexShrink:0},ce.createElement(QS,null,qS)),ce.createElement(ye,{flexDirection:"column",marginLeft:2},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Command Code"),ce.createElement(we,{color:co}," ","v",g)),ce.createElement(we,{color:co},"models: ",y,S," ·"," ",w,k),ce.createElement(we,{color:co},f,h&&h.isLocal&&h.branch&&` (${h.branch})`))):ce.createElement(ye,{key:"header",marginBottom:1,flexDirection:"column"},ce.createElement(QS,null,d.trimEnd()),ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(ye,null,ce.createElement(we,{color:co},"# "),ce.createElement(we,{bold:!0},"Command Code"),ce.createElement(we,{color:co}," v",g)),ce.createElement(we,{color:co},"# models: ",y,S," · ",w,C,k),ce.createElement(ye,null,ce.createElement(we,{color:co},"# ",f,h&&h.isLocal&&h.branch&&ce.createElement(we,{color:co}," ","(branch:"," ",h.branch,")")))));const t=e,n=renderFeedEntry(t,r);return ce.createElement(ye,{key:t.id,paddingBottom:1,width:"90%"},n)})});pn();var Rb=ue(__name(function LiveAgentStatusInner2({entry:e}){const t=mh(e.name||"Agent"),n=e.input||"",r=n.split(/[.\n]/)[0],o=r?r+(n.includes(".")||n.includes("\n")?".":""):n,s=e.metadata?.tokensUsed||0,a=e.metadata?.elapsedSeconds||0,i=e.metadata?.recentTools||[],[l,u]=de(".");return pe(()=>{const e=setInterval(()=>{u(e=>"..."===e?".":e+".")},500);return()=>clearInterval(e)},[]),ce.createElement(ye,{flexDirection:"column",marginBottom:1,width:"90%"},ce.createElement(ye,null,ce.createElement(we,{backgroundColor:ao.BG,color:ao.FG,bold:!0},` ${t} `),o&&ce.createElement(we,null," (",o,")")),ce.createElement(ye,{columnGap:1,marginLeft:1},ce.createElement(we,null,"⎿"," "),ce.createElement(we,{color:Xr.GRAY},"Running (",formatTime2(a)," |"," ",formatTokens(s),")",l)),i.length>0&&ce.createElement(ye,{flexDirection:"column",marginLeft:1},i.map((e,t)=>{const n=mh(e.name);return ce.createElement(ye,{key:t,columnGap:1},ce.createElement(we,{color:Xr.GRAY},"⎿"),ce.createElement(we,{color:Xr.GRAY}," ",n),e.input&&ce.createElement(we,{color:Xr.GRAY},"(",e.input,")"))})))},"LiveAgentStatusInner")),_b=ue(__name(function LiveAgentStatus2({entry:e}){return"tool"!==e.role?null:ce.createElement(Rb,{entry:e})},"LiveAgentStatus"));pn(),wn(),pn();var Db={low:"Fast responses with lighter reasoning",medium:"Balances speed and reasoning depth for everyday tasks",high:"Greater reasoning depth for complex problems",xhigh:"Extra reasoning depth for complex problems",max:"Maximum reasoning budget for the hardest problems"},Nb={value:void 0,label:"Default",description:"Use the provider default reasoning level"},$b=__name(({modelLabel:e,supportedEfforts:t,currentEffort:n,onSelect:r,onCancel:o})=>{const s=ge(()=>[Nb,...t.map(e=>({value:e,label:e,description:Db[e]}))],[t]),a=ge(()=>{if(void 0===n)return 0;const e=s.findIndex(e=>e.value===n);return e>=0?e:0},[s,n]),i=__name((e,t)=>`${e+1}. ${t}`,"labelText"),l=ge(()=>Math.max(...s.map((e,t)=>i(t,e.label).length))+4,[s]),{cursor:u}=useListNavigation({items:s,onSelect:__name(e=>r(e.value),"onSelect"),onCancel:o,initialIndex:a,searchQuery:"",onSearchChange:__name(()=>{},"onSearchChange"),disableSearch:!0,selectByNumber:!0});return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Zr,bold:!0},`Select reasoning effort for ${e}`)),ce.createElement(ye,{flexDirection:"column"},s.map((e,t)=>{const r=t===u,o=e.value===n;return ce.createElement(ye,{key:e.label},ce.createElement(we,{color:r||!o?Xr.WHITE:Xr.GREEN,backgroundColor:r?Co:void 0,bold:r||o},i(t,e.label).padEnd(l)),ce.createElement(we,{color:r?Xr.WHITE:Xr.DIM,backgroundColor:r?Co:void 0},e.description," "),o&&ce.createElement(we,{color:Xr.GREEN}," ",He.tick))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑/↓ navigate · enter to select · esc to go back")))},"ReasoningEffortSelector");Sn();var Lb="Loading plan info…",Ob=__name(e=>[{text:e.name,weight:100},{text:e.label,weight:50},{text:e.provider,weight:25},{text:e.description||"",weight:10}],"MODEL_SEARCH_FIELDS");function searchGroups2(e,t){if(!t.trim())return e;const n=[];for(const r of e){const e=fuzzyFilter(r.models,t,Ob);e.length>0&&n.push({...r,models:e})}return n}function flattenGroups(e){const t=[];for(const n of e)for(const e of n.models)t.push({providerId:n.providerId,model:e});return t}function groupByModelProvider2(e,t){return groupModelsByDisplayOrder(e).map(e=>({providerId:t,label:e.label,models:e.models}))}__name(searchGroups2,"searchGroups"),__name(flattenGroups,"flattenGroups"),__name(groupByModelProvider2,"groupByModelProvider");var Fb=__name(({onSelect:e,onCancel:t,currentModel:n,currentProvider:r,planId:o,purchasedCredits:s=0,freeCredits:a=0,refreshBanner:i})=>{const[l,u]=de(""),[d,m]=de(null),[g,h]=de(()=>new Set),f=ge(()=>isInternalTeamFlagEnforced(),[]),y=ge(()=>f?an:groupByModelProvider2(ln.flatMap(e=>e.models),sn["command-code"].id),[f]),w=ge(()=>searchGroups2(y,l),[y,l]),S=ge(()=>flattenGroups(w),[w]),[E,k]=de(0),C=useTerminalHeight()-1,v=Math.max(4,C-14-2*w.length),T=void 0!==o,x=ge(()=>T?null:getCachedBillingContext(),[T]),[P,A]=de(x),[I,M]=de(!T&&!x);pe(()=>{if(T)return;if(P)return;let e=!0;return getBillingContext().then(t=>{e&&(A(t),M(!1))}),()=>{e=!1}},[T,P]);const R=!T&&!0===P?.fetchFailed,_=T?o:P?.planId??null,D=T?s:P?.purchasedCredits??0,N=T?a:P?.freeCredits??0,$=f?sn.anthropic.id:sn["command-code"].id,L=r??$,O=n?Math.max(0,S.findIndex(e=>e.model.id===n&&e.providerId===L)):0,[F,U]=de("model"),[B,j]=de(null),{cursor:H,error:W,setError:G}=useListNavigation({items:S,onSelect:__name(t=>{const n=getSupportedEfforts(t.model.id);if(n&&n.length>0)return j(t),void U("effort");e(t.model.id,t.providerId)},"onSelect"),onCancel:t,initialIndex:O,searchQuery:l,onSearchChange:u,isActive:"model"===F,validate:__name(e=>{if(g.has(e.providerId))return`Run /provider to authenticate with ${getProviderConfig(e.providerId)?.displayName??e.providerId} first`;if(d&&!f){const t=sn[d]?.supportedModelProviders;if(t&&!t.includes(e.model.provider))return`${sn[d]?.label??d} does not support ${e.model.provider} models. Switch provider via /provider.`}if(I)return Lb;const t=checkModelAccess({model:{id:e.model.id,provider:e.model.provider,name:e.model.name},planId:_,purchasedCredits:D,freeCredits:N});return t.allowed?null:t.errorMessage??"Model not available for your plan"},"validate")});pe(()=>{k(e=>clampScrollOffset({cursor:H,total:S.length,maxVisible:v,currentOffset:e}))},[H,S.length,v]);const z=me(!1),q=__name(t=>{if(!B||z.current)return;z.current=!0;const{model:r,providerId:o}=B,s=getReasoningEffort(r.id),a=t!==s,l=r.id===n;(async()=>{try{a&&(await setReasoningEffort({modelId:r.id,effort:t}),l&&i?.())}catch(e){dlog(`[Model] Failed to persist reasoning effort: ${e}`)}finally{e(r.id,o)}})()},"handleEffortSelect"),V=__name(()=>{z.current||(j(null),U("model"))},"handleEffortCancel");if(pe(()=>{if(I)return;if(W!==Lb)return;const e=S[H];if(!e||R)return void G(null);const t=checkModelAccess({model:{id:e.model.id,provider:e.model.provider,name:e.model.name},planId:_,purchasedCredits:D,freeCredits:N});G(t.allowed?null:t.errorMessage??"Model not available for your plan")},[I,R,W,G,S,H,_,D,N]),pe(()=>{(async()=>{await isOAuthEnforced()&&m(await getConfiguredProvider())})()},[]),pe(()=>{(async()=>{const e=new Set(y.map(e=>e.providerId)),t=new Set;for(const n of e){const e=getProviderConfig(n);e?.requiresAuth&&e.checkAuth&&(await e.checkAuth()||t.add(n))}h(t)})()},[y]),"effort"===F&&B){const e=getSupportedEfforts(B.model.id)??[];return ce.createElement($b,{modelLabel:B.model.label,supportedEfforts:e,currentEffort:getReasoningEffort(B.model.id),onSelect:q,onCancel:V})}const K=E,Y=E+v;let Q=0;const J=w.map(e=>{const t=sliceSectionForWindow({section:e.models,sectionBase:Q,windowStart:K,windowEnd:Y});return Q+=e.models.length,{group:e,groupWindow:t}}).filter(e=>e.groupWindow.rows.length>0),X=S.length>v;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Select model")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{dimColor:!0},f?"Select a model and provider. Sets the default for new sessions; other open sessions are unaffected. Provider is saved.":"Switch between Command Code models. Sets the default for new sessions; other open sessions are unaffected.")),ce.createElement(ye,{marginBottom:2,flexDirection:"column",width:"100%"},ce.createElement(rE,{query:l,resultCount:l?S.length:void 0,placeholder:"Type to search models..."})),0===S.length?ce.createElement(ye,{marginY:1},ce.createElement(we,{color:Xr.GRAY},'No models match "',l,'"')):ce.createElement(ye,{flexDirection:"column"},J.map(({group:e,groupWindow:t},r)=>ce.createElement(ye,{key:`${e.providerId}-${e.label}`,flexDirection:"column",marginTop:r>0?1:0},f?ce.createElement(we,{bold:!0,color:Zr},e.label):ce.createElement(we,{bold:!0,dimColor:!0},e.label),t.rows.map((r,o)=>ce.createElement(HE,{key:`${e.providerId}-${e.label}-${r.id}`,model:r,providerId:e.providerId,isHighlighted:t.baseIndex+o===H,isCurrent:r.id===n&&e.providerId===L,showProviderLabel:!!f&&void 0}))))),X&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",K+1,"–",Math.min(Y,S.length)," of ",S.length,K>0?" · ↑ more":"",Y<S.length?" · ↓ more":"")),W&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},W)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"type to search · ↑/↓ navigate · enter to select"),l?ce.createElement(we,{color:Xr.DIM}," · esc to clear"):ce.createElement(we,{color:Xr.DIM}," · esc to cancel")))},"ModelSelector");pn(),Sn();var Ub=__name(({currentModel:e,onClose:t,refreshBanner:n})=>{const r=getSupportedEfforts(e)??[],o=findModelById(e)?.label??getModelDisplayName(e),s=me(!1),a=__name(r=>{if(s.current)return;s.current=!0;const o=r!==getReasoningEffort(e);(async()=>{try{o&&(await setReasoningEffort({modelId:e,effort:r}),n())}catch(e){dlog(`[Effort] Failed to persist reasoning effort: ${e}`)}finally{t()}})()},"handleSelect"),i=__name(()=>{s.current||t()},"handleCancel");return ce.createElement($b,{modelLabel:o,supportedEfforts:r,currentEffort:getReasoningEffort(e),onSelect:a,onCancel:i})},"EffortSelector");pn();var Bb=__name(({onSelect:e,onCancel:t,currentProvider:n})=>{const r=getProviderOptions(),o=__name(t=>{e(t.value)},"handleSelect");Ee((e,n)=>{n.escape&&t()});const s=n?r.findIndex(e=>e.value===n):0,a=n&&-1===s;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Select AI Provider")),n&&ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:Xr.DIM},"Current: "),ce.createElement(we,{color:Xr.GREEN},getProviderDisplayName(n)),a&&ce.createElement(we,{color:Xr.YELLOW}," ","[OAuth enforced]"))),ce.createElement(ye,{marginBottom:0},ce.createElement(we,{color:Xr.DIM},"Available Providers:")),ce.createElement(bt,{items:r,onSelect:o,initialIndex:s>=0?s:0,indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.CYAN:Xr.GRAY,bold:e&&isLightTheme()},e?He.triangleRightSmall:" "),itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.CYAN:Xr.DIM,bold:e&&isLightTheme()},` ${t}`)}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press ESC to cancel")))},"ProviderSelector");function RetryMessage({attempt:e}){const[t,n]=de(0);if(pe(()=>{if(null===e)return;const t=setInterval(()=>{n(e=>(e+1)%4)},500);return()=>clearInterval(t)},[e]),null===e)return null;const r=".".repeat(t).padEnd(3," ");return ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:yo,dimColor:!0},"Connection Issue. Retrying (attempt ",e,")",r))}pn(),__name(RetryMessage,"RetryMessage"),pn();var jb=[{mode:"both",label:"Both",description:"Restore conversation and code (recommended)"},{mode:"conversation",label:"Conversation only",description:"Rewind conversation, keep current code"},{mode:"files",label:"Code only",description:"Restore code, keep conversation"}],Hb=__name(({checkpoints:e,onSelect:t,onCancel:n})=>{const r=ge(()=>[...e].sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime()),[e]),[o,s]=de(Math.max(0,r.length-1)),[a,i]=de(Math.max(0,r.length-8)),[l,u]=de("checkpoint"),[d,m]=de(null),[g,h]=de(0),f=ge(()=>{if(!d)return!0;const e=r.findIndex(e=>e.messageId===d.messageId);if(-1===e)return!0;for(let t=e;t<r.length;t++)if(r[t].filesModified.length>0)return!0;return!1},[d,r]),y=ge(()=>f?jb:jb.filter(e=>"conversation"===e.mode),[f]);if(pe(()=>{if(r.length>0){const e=r.length-1;s(e),i(Math.max(0,r.length-8))}},[r.length,8]),Ee((e,f)=>{f.escape?"mode"===l?(u("checkpoint"),m(null),h(0)):n():"checkpoint"===l?f.upArrow?s(e=>{const t=Math.max(0,e-1);return t<a&&i(t),t}):f.downArrow?s(e=>{const t=Math.min(r.length-1,e+1);return t>=a+8&&i(t-8+1),t}):f.return&&r.length>0&&(m(r[o]),u("mode"),h(0)):"mode"===l&&(f.upArrow?h(e=>Math.max(0,e-1)):f.downArrow?h(e=>Math.min(y.length-1,e+1)):f.return&&d&&y[g]&&t({messageId:d.messageId,mode:y[g].mode}))}),0===r.length)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingTop:1},ce.createElement(we,{color:Zr,bold:!0},"Rewind"),ce.createElement(we,{color:Xr.DIM},"No checkpoints available. Start a conversation to create checkpoints."),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to close")));if("mode"===l&&d)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingTop:1},ce.createElement(we,{color:Zr,bold:!0},"Rewind"),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Restore to: "),ce.createElement(we,{color:Xr.WHITE},truncateString({text:d.userPrompt||"checkpoint",maxChars:50}))),ce.createElement(ye,{flexDirection:"column"},y.map((e,t)=>{const n=g===t,r=t===y.length-1;return ce.createElement(ye,{key:e.mode,flexDirection:"column"},ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:n?Zr:void 0},n?"> ":" "),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:n?Zr:Xr.WHITE},e.label),ce.createElement(we,{color:Xr.DIM},e.description))),!r&&ce.createElement(we,null," "))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Enter"),ce.createElement(we,{color:Xr.DIM}," to confirm, "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to go back")));const w=r.slice(a,a+8);return ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingTop:1},ce.createElement(we,{color:Zr,bold:!0},"Rewind"),ce.createElement(we,{color:Xr.DIM},"Select a checkpoint to restore your session"),r.length>8&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",a+1,"-",Math.min(a+8,r.length)," ","of ",r.length)),ce.createElement(ye,{marginTop:1}),ce.createElement(ye,{flexDirection:"column"},w.map((e,t)=>{const n=a+t,s=o===n,i=e.filesModified.length,l=t===w.length-1,u=n===r.length-1;return ce.createElement(ye,{key:e.messageId,flexDirection:"column"},ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:s?Zr:void 0},s?"> ":" "),ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:s?Zr:Xr.WHITE},truncateString({text:e.userPrompt||"(no prompt)",maxChars:60})),ce.createElement(we,{color:Xr.DIM}," • "),ce.createElement(we,{color:Xr.DIM},getRelativeTimeString({timestamp:e.timestamp}),u&&" (latest)")),ce.createElement(we,{color:Xr.DIM},i>0?`${i} file${i>1?"s":""} changed`:"No code changes"))),!l&&ce.createElement(we,null," "))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Enter"),ce.createElement(we,{color:Xr.DIM}," to select, "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to cancel")))},"RewindSelector");pn();var Wb=[{label:"Complete brief",desc:"If the target, goal, audience, or artifact is clear, act without asking."},{label:"Composition",desc:"Choose layout from the work pattern: monitor, operate, compare, configure, learn, decide, or explore."},{label:"Scope",desc:"Broad prompts get the full mode pass. Narrow prompts stay narrow."},{label:"Truth",desc:"Only claim changes that exist in files and are visible or verifiable."},{label:"Templates",desc:"design-html and report-html are documentation templates, not UI inspiration."},{label:"Reports",desc:"Follow-up modes read markdown reports, apply relevant findings, then still run their own full mode pass."}],Gb=['/design redesign "Make this dashboard feel like an operator console"','/design motion "Animate the whole page and add missing interactions"','/design checkup "Audit this UI and generate the design report"','/design "Build a landing page for a privacy-first contract review tool"'],zb=__name(({onCancel:e})=>(Ee((t,n)=>{n.escape&&e()}),ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingRight:2},ce.createElement(ye,{marginBottom:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Use"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},'/design <mode> "target or request"'),ce.createElement(we,{color:Xr.DIM},'/design "freeform request" also works. The closest mode is inferred.'))),ce.createElement(ye,{marginBottom:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Modes"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},Jw.map(e=>ce.createElement(ye,{key:e.name,columnGap:2},ce.createElement(ye,{width:18,flexShrink:0},ce.createElement(we,{color:Xr.CYAN},"/design ",e.name)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},e.description)))))),ce.createElement(ye,{marginBottom:1,marginTop:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Working rules"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},Wb.map(e=>ce.createElement(ye,{key:e.label,columnGap:2},ce.createElement(ye,{width:16,flexShrink:0},ce.createElement(we,{color:Xr.CYAN},e.label)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},e.desc)))))),ce.createElement(ye,{marginBottom:1,marginTop:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Quick examples:"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},Gb.map(e=>ce.createElement(we,{key:e,color:Xr.DIM},e)))),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Esc to close. Type /design help anytime to return.")))),"DesignGuide");pn(),Sn(),pn(),pn();var qb=__name(e=>{const[t,n]=de(e),[r,o]=de(null),[s,a]=de(void 0);return pe(()=>{const t=__name(()=>{n(e.map(e=>({...e,active:!1,complete:!1,items:[],insights:[],message:""}))),o(null),a(void 0)},"handleReset"),r=__name(e=>{if("error"===e.type)return o(e.message),void a(e.traceId);n(t=>{if("step_start"===e.type){const n=t.findIndex(t=>t.id===e.step);return n<0?t:t.map((t,r)=>r<n?{...t,active:!1,complete:!0}:r===n?{...t,active:!0,message:e.message||"",...e.label&&{label:e.label},..."complete"===e.step&&{complete:!0},...void 0!==e.learningCount&&void 0!==e.categories&&void 0!==e.storage&&t.summary&&{summary:{learningCount:e.learningCount,categories:e.categories,storage:e.storage}}}:t)}if("progress"===e.type){const n=t.findIndex(e=>e.active);return n<0?t:t.map((t,r)=>r===n?{...t,items:[...t.items,e.message]}:t)}if("insight"===e.type){const n=t.findIndex(e=>"learning"===e.id);return n<0?t:t.map((t,r)=>r===n?{...t,insights:[...t.insights,e.message]}:t)}return t})},"handleNewEvent");return id.on("reset",t),id.on("new-event",r),()=>{id.off("reset",t),id.off("new-event",r)}},[e]),{steps:t,importError:r,importTraceId:s,setImportError:o}},"useProgressEvents");async function createRequestClient(){const e=getApiBaseUrl(),t=new Nu({baseUrl:e}),n=await getConfiguredProvider(),r=await isOAuthEnforced();let o,s;try{const e=await getOAuthCredentials({provider:n});o=e.token,s=e.oauthProvider,validateOAuthToken({token:o,provider:n})}catch(e){dlog("Failed to get or validate OAuth token:",e instanceof Error?e.message:String(e))}const a={[Rt.PROJECT_SLUG]:Sh.getCurrentProjectDirName(),[Rt.INTERNAL_TEAM_FLAG_HEADER]:r.toString()};return o&&(a[Rt.OAUTH_TOKEN]=`Bearer ${o}`,s&&(a[Rt.OAUTH_PROVIDER]=s)),{request:t,headers:a}}function splitPromptsIntoBatches(e){const t=[];let n=[],r=0;for(const o of e){const e=estimateTokens(o);e>2e3?(n.length>0&&(t.push(n),n=[],r=0),t.push([o])):r+e>2e3?(n.length>0&&t.push(n),n=[o],r=e):(n.push(o),r+=e)}return n.length>0&&t.push(n),t}pn(),pn(),Sn(),pn(),wn(),Sn(),pn(),pn(),wn(),Sn(),__name(createRequestClient,"createRequestClient"),pn(),__name(splitPromptsIntoBatches,"splitPromptsIntoBatches"),__name(function calculateObservationsPerBatch(e){return 4},"calculateObservationsPerBatch"),pn(),pn(),Sn(),pn();var Vb="Learning cancelled";function buildObserverPrompt(e,t){return`Produce ${t} varied observations for these prompts:\n\n${e.map((e,t)=>`${t+1}. ${e}`).join("\n")}\n\nVaried observations:`}function createInsightEmitter(){let e="",t=0;const n=__name(()=>{if(e.includes("\n")){const t=e.split("\n");for(let e=0;e<t.length-1;e++){const n=t[e].trim();n&&(dlog(`[ObserverAPI] emitting insight: ${n}`),id.addEvent({type:"insight",message:n}))}e=t[t.length-1]}},"emitCompletedLines");return{addText:__name(r=>{t++,dlog(`[ObserverAPI] text chunk ${t}: "${r.substring(0,50)}..."`),e+=r,n()},"addText"),emitRemaining:__name(()=>{e.trim()&&(dlog(`[ObserverAPI] emitting final insight: ${e.trim()}`),id.addEvent({type:"insight",message:e.trim()}))},"emitRemaining"),getChunkCount:__name(()=>t,"getChunkCount")}}async function callObserverAPI(e,t,n,r){if(r?.aborted)return;const o=getTasteObserverModel({sessionModel:getConfiguredModel()});dlog(`[ObserverAPI] calling ${Dt.ALPHA.GENERATE} with model: ${o}`);const s=_e(),a={...t,[Rt.SESSION_ID]:t[Rt.SESSION_ID]??s},i={config:getEnvironmentContext(),memory:"",taste:"",skills:"",params:{tools:[],messages:[{role:"user",content:n}],model:o,system:"You scan prompts and produce casual observations like a dev friend glancing at someone's work.\n\nPLAIN TEXT ONLY. No markdown, no formatting.\n\nBe natural and VARIED. Don't repeat the same sentence starters.\n\nGood (notice the variety):\npnpm over npm, nice\ndebugging that auth flow\nreact + typescript stack\ncircular deps came up\ntui flicker stuff\nah the classic memory leak\nsession persistence wip\nfighting with imports again\nhaiku model issues huh\n\nBad (too repetitive - NEVER do this):\nI see you prefer pnpm\nI see debugging auth\nI see react stack\nI see circular deps\noh, TUI issues\noh, memory leak\n\nRules:\n- plain text, lowercase is fine\n- vary your sentence starts - mix it up\n- max 6 words per observation\n- one observation per line\n- sound human, not robotic\n- output only the observations, no preamble",max_tokens:200,temperature:.7,stream:!0},threadId:s},l=await e.post({endpoint:Dt.ALPHA.GENERATE,body:i,headers:a,stream:!0,signal:r});dlog("[ObserverAPI] got response stream");const u=createInsightEmitter();await consumeSSEStream(l,{onText:__name(e=>{u.addText(e)},"onText")}),dlog(`[ObserverAPI] stream complete, ${u.getChunkCount()} chunks received`),u.emitRemaining(),dlog("[ObserverAPI] done")}async function processBatch(e,t,n,r,o,s){s?.throwIfAborted();let a=0;for(const e of n)a+=estimateTokens(e);dlog(`[Observer] batch ${r}/${o}: ${n.length} prompts`);const i=buildObserverPrompt(n,4);await callObserverAPI(e,t,i,s)}async function observeSessionPrompts(e){if(id.observerHasRun)return;id.markObserverRun();const{prompts:t,signal:n}=e;if(!n?.aborted)try{const{request:e,headers:r}=await createRequestClient(),o={...r,[Rt.SESSION_ID]:`observer-${_e()}`},s=splitPromptsIntoBatches(t);dlog(`[Observer] ${t.length} prompts → ${s.length} batches`);const a=Math.min(s.length,6);for(let t=0;t<a;t++){if(n?.aborted){dlog("[Observer] stopped (cancelled)");break}if(id.learningComplete){dlog(`[Observer] stopped at batch ${t} (learning complete)`);break}const r=s[t];try{await processBatch(e,o,r,t+1,s.length,n)}catch{if(n?.aborted)break}}dlog("[Observer] done")}catch(e){dlog(`[Observer] failed (non-critical): ${e instanceof Error?e.message:String(e)}`),id.addEvent({type:"progress",message:"Continuing without live observations..."})}}function isAbortError(e){return e instanceof Error&&("AbortError"===e.name||e.message===Vb||"Interrupted by user"===e.message)}wn(),__name(buildObserverPrompt,"buildObserverPrompt"),__name(createInsightEmitter,"createInsightEmitter"),__name(callObserverAPI,"callObserverAPI"),__name(processBatch,"processBatch"),__name(observeSessionPrompts,"observeSessionPrompts"),__name(isAbortError,"isAbortError"),__name(function cancelledResult(){return{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],status:"cancelled"}},"cancelledResult");var Kb=class{static{__name(this,"SessionImporter")}static async findClaudeCodeSessions(t=0){const n=[];try{const r=e.join(_.homedir(),".claude","projects");await F.access(r);const o=getProjectDirName2(process.cwd());dlog(`[Import] scanning project: ${o}`);const s=(await F.readdir(r)).filter(e=>e===o);for(const o of s){const s=e.join(r,o);try{if(!(await F.stat(s)).isDirectory())continue;const r=(await F.readdir(s)).filter(e=>e.endsWith(".jsonl")&&!e.includes(".checkpoints"));dlog(`[Import] found ${r.length} sessions`);for(const o of r){const r=e.join(s,o),a=await F.stat(r),i=o.replace(".jsonl","");if(n.push({id:i,filePath:r,createdAt:a.birthtime,lastModified:a.mtime,messageCount:0,agent:"claude-code"}),t>0&&n.length>=t)break}if(t>0&&n.length>=t)break}catch{continue}}}catch{dlog("[Import] no claude sessions dir")}return n}static async findCodexSessions(e=0,t){try{id.addEvent({type:"progress",message:"Scanning Codex sessions..."});const n=await findCodexSessions(process.cwd(),e=>{t?.(e),"reading"===e.phase&&id.addEvent({type:"progress",message:`Scanning Codex: ${e.processedFiles}/${e.totalFiles} files (${e.matchedSessions} matched)`})},e);return dlog(`[Import] found ${n.length} Codex sessions`),n}catch(e){return dlog("[Import] no codex sessions",e),[]}}static async findCursorSessions(e=0){try{id.addEvent({type:"progress",message:"Scanning Cursor sessions..."});const t=await findCursorSessions(process.cwd(),e);return dlog(`[Import] found ${t.length} Cursor sessions`),t}catch(e){return dlog("[Import] no cursor sessions",e),[]}}static async extractUserPrompts(e){const t=[];try{const n=(await F.readFile(e,"utf-8")).trim().split("\n");for(const e of n)if(e.trim())try{const n=JSON.parse(e);if("user"===n.type&&n.message){const e=n.message;let r="";e.content&&"string"==typeof e.content&&(r=e.content),r.trim()&&t.push(r.trim())}}catch{continue}t.length>0&&dlog(`[Import] extracted ${t.length} prompts from session`)}catch(t){dlog(`[Import] failed: ${e}`,t)}return t}static splitPromptsIntoBatches(e,t=15e4){const n=[];let r=[],o=0;for(const s of e){const e=estimateTokens(s);if(e>t){r.length>0&&(n.push(r),r=[],o=0);const e=this.splitLargePrompt(s,t);for(const t of e)n.push([t])}else o+e<=t?(r.push(s),o+=e):(r.length>0&&n.push(r),r=[s],o=e)}return r.length>0&&n.push(r),n}static splitLargePrompt(e,t){const n=[],r=e.split("\n");let o="",s=0;for(const e of r){const r=estimateTokens(e);s+r<=t?(o+=(o?"\n":"")+e,s+=r):(o&&n.push(o),o=e,s=r)}return o&&n.push(o),n}static async importAndLearn(e={}){const{signal:t}=e,n=[],r=[],o=[],s=[],a=[];try{t?.throwIfAborted(),id.addEvent({type:"step_start",step:"importing",label:"Started Learning Taste",message:"Scanning for coding sessions..."});const e=await loadProjectSettings(),i=e.tasteOnboarding?.learnedSessions||{};t?.throwIfAborted();const l=i["claude-code"]?.length||0,u=i.codex?.length||0,d=i.cursor?.length||0;dlog(`[Import] loaded settings: claude-code=${l} learned, codex=${u} learned, cursor=${d} learned`);const m=await findNewSessions(i);t?.throwIfAborted();const g=m["claude-code"]||[],h=m.codex||[],f=m.cursor||[],y=g.length+h.length+f.length;if(dlog(`[Import] findNewSessions returned: claude-code=${g.length} new, codex=${h.length} new, cursor=${f.length} new`),0===y){const e=await this.findClaudeCodeSessions();t?.throwIfAborted();const n=await findCodexSessions(process.cwd());t?.throwIfAborted();const r=await findCursorSessions(process.cwd());t?.throwIfAborted();const o=e.length+n.length+r.length,s=[{name:"Claude Code",count:e.length},{name:"Codex",count:n.length},{name:"Cursor",count:r.length}].filter(e=>e.count>0).sort((e,t)=>t.count-e.count).map(e=>`${e.count} ${e.name}`);id.addEvent({type:"step_start",step:"complete",label:"Taste Already Learned",message:o>0?`From ${s.join(" + ")} sessions`:"No sessions found for this project"});const a=[];return e.length>0&&a.push({agent:"claude-code",sessionIds:e.map(e=>e.id),displayName:"Claude Code"}),n.length>0&&a.push({agent:"codex",sessionIds:n.map(e=>e.id),displayName:"Codex"}),r.length>0&&a.push({agent:"cursor",sessionIds:r.map(e=>e.id),displayName:"Cursor"}),{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],totalSessions:o,learnedSessions:l+u+d,agentSessions:a,status:"already-learned"}}if(g.length>0){const e=await this.findClaudeCodeSessions();t?.throwIfAborted();const n=e.filter(e=>g.includes(e.id));o.push(...n)}if(h.length>0){const e=await this.findCodexSessions();t?.throwIfAborted();const n=e.filter(e=>h.includes(e.id));s.push(...n)}if(f.length>0){const e=await this.findCursorSessions();t?.throwIfAborted();const n=e.filter(e=>f.includes(e.id));a.push(...n)}const w=o.length+s.length+a.length;dlog(`[Import] total sessions: ${w} (claude-code: ${o.length}, codex: ${s.length}, cursor: ${a.length})`),id.addEvent({type:"step_start",step:"batching",label:"Organizing your sessions",message:""});const S=[{name:"Claude Code",sessions:o,extractPrompts:this.extractUserPrompts},{name:"Codex",sessions:s,extractPrompts:extractCodexPrompts},{name:"Cursor",sessions:a,extractPrompts:extractCursorPrompts}].filter(e=>e.sessions.length>0).sort((e,t)=>t.sessions.length-e.sessions.length);for(const e of S){id.addEvent({type:"progress",message:`${e.name}: ${e.sessions.length} sessions`});for(const o of e.sessions){t?.throwIfAborted();try{const n=await e.extractPrompts(o.filePath);t?.throwIfAborted(),n.length>0&&r.push(...n)}catch(t){n.push(`${e.name} import failed: ${t instanceof Error?t.message:String(t)}`)}}}if(0===r.length)return{success:!1,totalPrompts:0,preferencesLearned:0,errors:["No prompts found in sessions"]};const E=this.splitPromptsIntoBatches(r);dlog(`[Import] batched: ${r.length} prompts → ${E.length} batches`);const k=observeSessionPrompts({prompts:r,signal:t}).catch(e=>{dlog(`[Import] observer error: ${e instanceof Error?e.message:String(e)}`)});id.addEvent({type:"step_start",step:"learning",label:"Learning your coding taste",message:`Processing ${E.length} batch${1===E.length?"":"es"}`});try{const e=getApiBaseUrl(),i=new Nu({baseUrl:e});let l=!0;for(let e=0;e<E.length;e++){t?.throwIfAborted();const n=E[e],r=e+1,o=E.length;o>1&&id.addEvent({type:"progress",message:`Processing batch ${r}/${o}...`});const s=this.formatBatchLearning(n),a=new ay({request:i,sessionId:crypto.randomUUID(),projectRoot:process.cwd()});a.setAbortSignal(t);const u=[{role:"user",content:s}];dlog(`[Import] batch ${r}/${o}: ${n.length} prompts`);const d=await a.checkAndProcess({messages:u});t?.throwIfAborted(),d.success||(l=!1,dlog(`[Import] batch ${r}/${o} failed`))}if(dlog(`[Import] all batches complete, success: ${l}`),id.markLearningComplete(),await k,l){if(o.length>0){const e=o.map(e=>e.id);await markSessionsAsLearned("claude-code",e),dlog(`[Import] marked ${e.length} claude-code sessions as learned`)}if(s.length>0){const e=s.map(e=>e.id);await markSessionsAsLearned("codex",e),dlog(`[Import] marked ${e.length} codex sessions as learned`)}if(a.length>0){const e=a.map(e=>e.id);await markSessionsAsLearned("cursor",e),dlog(`[Import] marked ${e.length} cursor sessions as learned`)}}else dlog("[Import] NOT marking sessions as learned due to batch failures");const u=await this.extractLearningSummary();t?.throwIfAborted();const d=[];if(o.length>0&&d.push(`Claude Code (${o.length})`),s.length>0&&d.push(`Codex (${s.length})`),a.length>0&&d.push(`Cursor (${a.length})`),!l){const e=id.getEvents(),t=e.some(e=>"error"===e.type&&e.message?.toLowerCase().includes("insufficient credits")),i="Learning failed - sessions not marked as learned";n.push(i);const l=e.find(e=>"error"===e.type&&e.traceId)?.traceId;return t||id.addEvent({type:"error",message:i,traceId:l}),{success:!1,totalPrompts:r.length,preferencesLearned:u.totalLearnings,errors:n,totalSessions:w,agentSessions:[...o.length>0?[{agent:"claude-code",sessionIds:o.map(e=>e.id),displayName:"Claude Code"}]:[],...s.length>0?[{agent:"codex",sessionIds:s.map(e=>e.id),displayName:"Codex"}]:[],...a.length>0?[{agent:"cursor",sessionIds:a.map(e=>e.id),displayName:"Cursor"}]:[]]}}return id.addEvent({type:"step_start",step:"complete",label:"Learning Complete",message:`Learned from ${d.join(" + ")}`,learningCount:u.totalLearnings,categories:u.categories,storage:".commandcode/taste/taste.md"}),{success:!0,totalPrompts:r.length,preferencesLearned:u.totalLearnings,errors:n,totalSessions:w,agentSessions:[...o.length>0?[{agent:"claude-code",sessionIds:o.map(e=>e.id),displayName:"Claude Code"}]:[],...s.length>0?[{agent:"codex",sessionIds:s.map(e=>e.id),displayName:"Codex"}]:[],...a.length>0?[{agent:"cursor",sessionIds:a.map(e=>e.id),displayName:"Cursor"}]:[]]}}catch(e){if(isAbortError(e))return id.markLearningComplete(),{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],status:"cancelled"};const t=`Learning agent failed: ${e instanceof Error?e.message:String(e)}`;n.push(t);const o=trackError({error:e instanceof Error?e:new Error(String(e)),context:{component:ms.LEARNING_AGENT,heading:"Taste onboarding learning failed"}});return id.addEvent({type:"error",message:t,traceId:o}),{success:!1,totalPrompts:r.length,preferencesLearned:0,errors:n}}}catch(e){if(isAbortError(e))return id.markLearningComplete(),{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],status:"cancelled"};const t=e instanceof Error?e.message:String(e);return n.push(t),{success:!1,totalPrompts:0,preferencesLearned:0,errors:n}}}static async extractLearningSummary(){try{const t=e.join(process.cwd(),".commandcode","taste","taste.md"),n=await F.readFile(t,"utf-8"),r=n.match(/^- .+Confidence:/gm),o=r?r.length:0;return{totalLearnings:o,categories:n.split("\n").filter(e=>e.startsWith("# ")).map(e=>e.replace(/^# /,"").trim()).filter(e=>e&&!e.toLowerCase().startsWith("taste"))}}catch{return{totalLearnings:0,categories:[]}}}static formatBatchLearning(e){return e.map((e,t)=>`${t+1}. ${e}`).join("\n\n")}},Yb="Learning timed out. Try again with /learn-taste",Qb={isImporting:!1,waitingForInput:!1,error:null},Jb=__name(e=>{let t;return{promise:new Promise((n,r)=>{t=setTimeout(()=>r(new Error(Yb)),e)}),cancel:__name(()=>{t&&clearTimeout(t)},"cancel")}},"createTimeout"),Xb=__name(e=>{const t=me(null),n=me(e);n.current=e;const[r,o]=de({isImporting:!0,waitingForInput:!1,alreadyLearned:!1,learnedSessionCount:0,totalSessionCount:0,agentSessions:[],error:null}),s=he(e=>{e.abort(new Error(Vb)),id.markLearningComplete()},[]),a=he(()=>{const e=t.current;!e||e.signal.aborted||(s(e),o(e=>({...e,...Qb})))},[s]);return pe(()=>{const e=new AbortController,r=Jb(12e4);t.current=e;let a=!1;return id.reset(),id.markImportStarted(),(async()=>{try{const t=await Promise.race([Kb.importAndLearn({signal:e.signal}),r.promise]);if(e.signal.aborted)return;if("cancelled"===t.status)return void o(e=>({...e,...Qb}));if(t.success)return void o(e=>({...e,isImporting:!1,waitingForInput:!0}));if("already-learned"===t.status)return void o(e=>({...e,isImporting:!1,alreadyLearned:!0,learnedSessionCount:t.learnedSessions||0,totalSessionCount:t.totalSessions||0,agentSessions:t.agentSessions||[],waitingForInput:!0}));const s=t.errors.join("\n");o(e=>({...e,isImporting:!1,waitingForInput:!0,error:s})),n.current&&n.current(s)}catch(t){if(e.signal.aborted)return;const r=t instanceof Error?t.message:String(t);r===Yb&&(e.abort(new Error(r)),id.markLearningComplete()),o(e=>({...e,isImporting:!1,waitingForInput:!0,error:r})),n.current&&n.current(r)}finally{r.cancel(),a=!0}})(),()=>{r.cancel(),a||s(e),t.current===e&&(t.current=null)}},[]),{...r,cancelImport:a}},"useImportProcess");pn();var Zb=__name(({onEscape:e,onEnter:t,enabled:n=!0})=>{Ee((r,o)=>{n&&(o.escape&&e(),(o.return||"\n"===r)&&t())})},"useKeyboardInput");pn(),Sn();var ek=__name(({autoLearn:e,onShouldSkip:t})=>{const[n,r]=de(null),[o,s]=de(null),[a,i]=de(void 0),l=me(!1);return pe(()=>{if(l.current)return;let n=null;return(async()=>{try{l.current=!0,dlog("[Hook:Conditions] loading...");const n=await checkOnboardingConditions();r(n),n.shouldTrigger||e?dlog(`[Hook:Conditions] result: ${n.reason}, sessions: ${n.sessionCount}`):(dlog("[Hook:Conditions] no trigger, skipping"),t())}catch(e){const r=e instanceof Error?e.message:String(e);dlog("[Hook:Conditions] error",r);const o=trackError({error:e instanceof Error?e:new Error(r),context:{component:ms.LEARN_TASTE_COMMAND,heading:"Onboarding conditions check failed"}});i(o),s(r),n=setTimeout(()=>t(),2e3)}})(),()=>{n&&clearTimeout(n)}},[e,t]),{conditions:n,error:o,traceId:a,isLoading:!n&&!o}},"useOnboardingConditions");async function completeOnboarding(e){try{await markOnboardingCompleted(),dlog("[Helper] onboarding marked complete")}catch(e){dlog(`[Helper] complete error: ${e instanceof Error?e.message:String(e)}`)}finally{id.reset(),e()}}async function skipOnboarding(e){try{await markOnboardingSkipped(),dlog("[Helper] onboarding marked skipped")}catch(e){dlog(`[Helper] skip error: ${e instanceof Error?e.message:String(e)}`)}finally{id.reset(),e()}}pn(),Sn(),pn(),Sn(),__name(completeOnboarding,"completeOnboarding"),__name(skipOnboarding,"skipOnboarding");var tk=__name(({onStepChange:e,onError:t,onCompleteCallback:n})=>{const r=me(n),o=he(()=>{dlog("[Handler] import started → learning"),e("learning")},[e]),s=he(async()=>{dlog("[Handler] import complete → done"),e("done"),await completeOnboarding(()=>r.current())},[e]),a=he(e=>{dlog(`[Handler] import error: ${e}`),t(e)},[t]),i=he(async()=>{dlog("[Handler] error dismissed by user → done"),e("done"),await skipOnboarding(()=>r.current({skipped:!0}))},[e]),l=he(async()=>{dlog("[Handler] skipped → done"),e("done"),await skipOnboarding(()=>r.current({skipped:!0}))},[e]);return n!==r.current&&(r.current=n),{handleImportStart:o,handleImportComplete:s,handleImportError:a,handleErrorDismiss:i,handleSkip:l}},"useOnboardingHandlers");pn(),Sn();var nk=__name(({conditions:e,autoLearn:t})=>{const[n,r]=de("checking"),o=me(!1);return pe(()=>{if(e&&!o.current){if(o.current=!0,t)return dlog("[Flow] autoLearn → learning"),void r("learning");dlog(`[Flow] → asking (${e.reason})`),r("asking")}},[e,t]),pe(()=>{dlog(`[Flow] step: ${n}`)},[n]),{step:n,setStep:r}},"useOnboardingFlow");pn(),pn();var rk=__name(({error:e,traceId:t})=>ce.createElement(ye,{padding:1},ce.createElement(ye,{flexDirection:"column",borderColor:Xr.RED,padding:1},ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Error initializing onboarding: ",e)),t&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Trace ID: ",t)),ce.createElement(ye,null,ce.createElement(we,null,"Continuing without onboarding...")))),"OnboardingError");pn(),pn();var ok=__name(()=>ce.createElement(we,null,"Skip"),"SkipOptionText"),sk=__name(({sessionCount:e,agentSessions:t,onImport:n,onSkip:r})=>{const[o,s]=de(1);return Ee((e,t)=>{t.escape?r():"n"!==e&&"N"!==e?t.upArrow||t.downArrow?s(e=>1===e?2:1):"1"!==e?"2"!==e?t.return&&(1===o?n():r()):r():n():dismissOnboardingForeverForProject().then(()=>r())}),ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:eo.TEXT,paddingX:1,paddingY:0},ce.createElement(we,{color:eo.TEXT,bold:!0},"Build Your Coding Taste"),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,null,"Found"," ",1===e?"one session":`${e} sessions`," ","from"," ",t.map(e=>e.displayName).join(", ")," ","for this project."),ce.createElement(ye,{marginTop:1},ce.createElement(we,null,"Analyze"," ",1===e?"that session":"those sessions"," ","to build your coding taste package?"))),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:1===o?eo.TEXT:Xr.GRAY},1===o?He.pointer:" "," 1. Yes, learn (recommended)")),ce.createElement(ye,null,ce.createElement(we,{color:2===o?eo.TEXT:Xr.GRAY},2===o?He.pointer:" "," 2."," ",ce.createElement(ok,null)))),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ · "),ce.createElement(we,{color:wo.CODE},"enter"),ce.createElement(we,{color:Xr.DIM}," ok · "),ce.createElement(we,{color:wo.CODE},"esc"),ce.createElement(we,{color:Xr.DIM}," skip · "),ce.createElement(we,{color:wo.CODE},"n"),ce.createElement(we,{color:Xr.DIM}," never")))},"ImportChoice");pn(),pn();var ak=__name(({error:e,traceId:t})=>ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:Xr.RED,paddingX:2,paddingY:1,marginBottom:2},ce.createElement(we,{color:Xr.RED,bold:!0},"Oops, something went wrong:"),ce.createElement(ye,{marginTop:1},ce.createElement(we,null,e)),t&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Trace ID: ",t))),"ErrorSection");pn(),pn(),pn(),pn(),pn(),pn();var ik=__name(()=>ce.createElement(we,{backgroundColor:eo.BADGE_BG,color:eo.BADGE_FG},Fy),"TasteBadge");pn(),pn();var lk=["percolating","excavating","deciphering","triangulating","osmosing","metabolizing","grokking","spelunking","interpolating","marinating","crystallizing","synthesizing","calibrating","fermenting","coalescing","transmuting","simmering","distilling","ruminating","perusing","assimilating","untangling","decoding","absorbing","harmonizing","digesting","contemplating","extrapolating","materializing","finalizing"],ck="⎿",uk=__name(()=>{const[e,t]=de(()=>Math.floor(Math.random()*lk.length));return pe(()=>{const e=setInterval(()=>{t(Math.floor(Math.random()*lk.length))},2e3);return()=>clearInterval(e)},[]),ce.createElement(we,{color:Xr.YELLOW},lk[e],"...")},"PulsingText");pn();var dk=[He.bullet,He.squareSmallFilled,He.lozenge,He.star,He.triangleRight,He.triangleUp,He.circleFilled,He.pointer],mk=__name(e=>String(e).padStart(3," "),"padNum"),pk=__name(e=>dk[e%dk.length],"getSymbol"),gk=__name((e,t,n,r)=>r?`${e} observations (↑↓ scroll)`:`↑${mk(t)} ↓${mk(n)} (↑↓ scroll)`,"buildStatusLine"),hk=__name(({insights:e})=>{const[t,n]=de(0),[r,o]=de(!0),s=e.length,a=s>10,i=Math.max(0,s-10);if(pe(()=>{r&&a&&n(i)},[s,r,a,i]),Ee((e,t)=>{if(a)return t.upArrow?(o(!1),void n(e=>Math.max(0,e-1))):void(t.downArrow&&n(e=>{const t=Math.min(i,e+1);return t===i&&o(!0),t}))}),0===s)return null;const l=e.slice(t,t+10),u=t,d=s-t-10;return ce.createElement(ye,{flexDirection:"column",marginLeft:4,marginBottom:0},a&&ce.createElement(we,{color:Xr.DIM},gk(s,u,d,r)),l.map((e,n)=>{const r=t+n;return ce.createElement(ye,{key:r,marginBottom:0},ce.createElement(we,{color:Xr.DIM},pk(r)," ",e))}))},"ScrollableInsights");pn();var fk=__name(()=>{const[e,t]=de(!0);return pe(()=>{const e=setInterval(()=>{t(e=>!e)},500);return()=>clearInterval(e)},[]),ce.createElement(we,{color:Xr.YELLOW},e?He.circleFilled:He.circle)},"PulsingDot"),yk=__name(({label:e,message:t,active:n,complete:r,items:o,insights:s,isIntro:a,isAllComplete:i,summary:l})=>{if(a)return ce.createElement(ye,{flexDirection:"column",marginBottom:0},ce.createElement(ik,null),ce.createElement(ye,{marginTop:0},ce.createElement(we,{color:Xr.DIM},ck),ce.createElement(ye,{marginLeft:2},i?ce.createElement(we,{color:eo.TEXT},"learned your coding taste"):ce.createElement(uk,null))));const u=__name(()=>r?ce.createElement(we,{color:oo.BG},He.square):n?ce.createElement(fk,null):ce.createElement(we,{color:Xr.DIM},He.circle),"getStatusIcon"),d=o.length>0||s.length>0||t||l&&l.learningCount>0;return!r||n||d?ce.createElement(ye,{flexDirection:"column",marginBottom:0},(n||r)&&ce.createElement(ye,{marginBottom:0},ce.createElement(ye,{marginRight:1},u()),ce.createElement(we,{color:r?Xr.WHITE:n?Xr.YELLOW:Xr.DIM},e)),r&&t&&(!l||0===l.learningCount)&&ce.createElement(ye,{marginLeft:3,marginBottom:0},ce.createElement(we,{color:Xr.DIM},t)),o.length>0&&ce.createElement(ye,{flexDirection:"column",marginLeft:1,marginBottom:0},o.map((e,t)=>ce.createElement(we,{key:t,color:Xr.DIM},`${He.bullet} ${e}`))),s.length>0&&ce.createElement(hk,{insights:s}),r&&l&&l.learningCount>0&&ce.createElement(ye,{flexDirection:"column",marginLeft:1,marginBottom:0},ce.createElement(ye,{marginBottom:1,flexDirection:"row"},ce.createElement(we,null,ck),ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:eo.TEXT},"Learned ",l.learningCount," preference",1===l.learningCount?"":"s",l.categories.length>0?` across ${l.categories.length} ${1===l.categories.length?"category":"categories"}`:""))),ce.createElement(ye,{flexDirection:"column",marginLeft:1},ce.createElement(we,{color:Xr.DIM},He.pointerSmall," Stored in ",l.storage),ce.createElement(we,{color:Xr.DIM},"Command Code automatically uses & updates taste files.")))):null},"StepItem"),wk=__name(({steps:e})=>{const t=e.find(e=>"complete"===e.id)?.complete??!1;return ce.createElement(ye,{flexDirection:"column",marginBottom:1},e.map((e,n)=>ce.createElement(ye,{key:e.id,marginLeft:0===n?0:3},ce.createElement(yk,{label:e.label,message:e.message,active:e.active,complete:e.complete,items:e.items,insights:e.insights,summary:e.summary,isIntro:0===n,isAllComplete:t}))))},"StepsSection"),Sk=__name(({steps:e})=>ce.createElement(wk,{steps:e}),"ProgressSection");pn();var Ek=__name(({isImporting:e=!1,waitingForInput:t=!1})=>ce.createElement(ce.Fragment,null,e&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"ESC to cancel")),t&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0},"Press ENTER to continue"))),"HelpTextSection");pn();var bk=[{id:"importing",label:"Initializing Taste Profile",message:"",active:!1,complete:!1,items:[],insights:[]},{id:"batching",label:"Organizing your sessions",message:"",active:!1,complete:!1,items:[],insights:[]},{id:"learning",label:"Learning your coding taste",message:"",active:!1,complete:!1,items:[],insights:[]},{id:"complete",label:"Learned your coding taste!",message:"",active:!1,complete:!1,items:[],insights:[],summary:{learningCount:0,categories:[],storage:".commandcode/taste/taste.md"}}],kk=__name(({onComplete:e,onCancel:t,onError:n,onErrorDismiss:r})=>{const{steps:o,importError:s,importTraceId:a}=qb(bk),{isImporting:i,waitingForInput:l,error:u,cancelImport:d}=Xb(n);return Zb({onEscape:__name(()=>{if(i)return d(),void t?.();l&&((u||s)&&r?r():e())},"onEscape"),onEnter:__name(()=>{l&&((u||s)&&r?r():e())},"onEnter"),enabled:i||l}),ce.createElement(ye,{flexDirection:"column",padding:1},s&&ce.createElement(ak,{error:s,traceId:a}),!s&&ce.createElement(Sk,{steps:o}),ce.createElement(Ek,{isImporting:i,waitingForInput:l}))},"ImportProgress"),Ck=__name(({step:e,conditions:t,onImportStart:n,onImportComplete:r,onImportError:o,onErrorDismiss:s,onSkip:a})=>"asking"===e?t&&"has_sessions"===t.reason?ce.createElement(sk,{sessionCount:t.sessionCount,agentSessions:t.agentSessions,onImport:n,onSkip:a}):null:"learning"===e?ce.createElement(kk,{onComplete:r,onCancel:a,onError:o,onErrorDismiss:s}):null,"OnboardingStepRenderer"),vk=__name(({onComplete:e,autoLearn:t=!1})=>{pe(()=>(dlog("[UI:Onboarding] mounted"),()=>{dlog("[UI:Onboarding] unmounted")}),[]);const{conditions:n,error:r,traceId:o,isLoading:s}=ek({autoLearn:t,onShouldSkip:e}),{step:a,setStep:i}=nk({conditions:n,autoLearn:t}),{handleImportStart:l,handleImportComplete:u,handleImportError:d,handleErrorDismiss:m,handleSkip:g}=tk({onStepChange:__name(e=>{i(e)},"onStepChange"),onError:__name(()=>{},"onError"),onCompleteCallback:e});return dlog(`[UI:Onboarding] render: ${a}${n?.reason?` (${n.reason})`:""}${r?" ERROR":""}`),s?null:r?ce.createElement(rk,{error:r,traceId:o}):"done"===a?null:ce.createElement(Ck,{step:a,conditions:n,onImportStart:l,onImportComplete:u,onImportError:d,onErrorDismiss:m,onSkip:g})},"TasteOnboarding");pn();var Tk=[{label:"Dark theme",value:"dark",description:"Use purple accent colors on dark backgrounds."},{label:"Light theme",value:"light",description:"Use higher-contrast colors for white terminal backgrounds."}],xk=__name(({onSelect:e,onCancel:t})=>{const[n,r]=de(null);pe(()=>{r(getCliTheme())},[]);const o=__name(t=>{const n=Tk.find(e=>e.value===t.value)?.value;n&&e(n)},"handleSelect");if(Ee((e,n)=>{n.escape&&t()}),null===n)return null;const s=Tk.findIndex(e=>e.value===n);return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Select a theme")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Choose the color palette for this terminal.")),ce.createElement(bt,{items:Tk,onSelect:o,initialIndex:s>=0?s:0,indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.CYAN:Xr.GRAY,bold:e&&isLightTheme()},e?He.pointer:" "),itemComponent:({isSelected:e,label:t})=>{const r=Tk.find(e=>e.label===t),o=r?.value===n,s=Tk.findIndex(e=>e.label===t);return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:e?Xr.CYAN:o?Xr.GREEN:Xr.DIM,bold:e&&isLightTheme()},` ${s+1}. ${r?.label??t}`),o&&ce.createElement(we,{color:Xr.GREEN}," ",He.tick)),ce.createElement(we,{color:Xr.DIM},` ${r?.description??""}`))}}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to cancel")))},"ThemeSelector");function getEntryCharCount(e){return("input"in e?e.input??"":"").length+("output"in e?e.output??"":"").length+("command"in e?e.command??"":"").length}function getBudgetedFeed(e,t){if(0===e.length)return[];const n=[...e].reverse();let r=t;const o=[];for(const e of n)if(o.unshift(e),r-=getEntryCharCount(e),r<=0)break;return o}__name(getEntryCharCount,"getEntryCharCount"),__name(getBudgetedFeed,"getBudgetedFeed");var Pk=ue(__name(function MainView2({feed:e,liveEntries:t,queuedMessages:n,isCmdCodeBusy:r,staticKey:o,setStaticKey:s,transcriptMode:a,tasteOnboardingEntryId:i,autoLearnTaste:l,showTasteSkipBanner:u,showZdrNotice:d,retryAttempt:m,input:g,setInput:h,fileSearchQuery:f,setFileSearchQuery:y,showFileList:w,setShowFileList:S,showProviderSelector:E,showModelSelector:k,showEffortSelector:C,showMemorySelector:v,showMcpManager:T,showAgentsConfig:x,showRewindSelector:P,showLoginOverlay:A,showUsageOverlay:I,showAddDirModal:M,showCompactModeSelector:R,showConfigureModels:_,setShowConfigureModels:D,showThemeSelector:N,authComponentInfo:$,status:L,currentProvider:O,currentModel:F,showProviderNotification:U,shareInfo:B,showShareNotification:j,unshareNotificationMessage:H,updateStatus:W,updateFailedInfo:G,creditWarning:z,permissionMode:q,hintMessage:V,pendingExitKey:K,tasteLearningEnabled:Y,interactionTokens:Q,contextUsage:J,historyManagerRef:X,executionState:Z,contextEngineRef:ee,onSubmit:te,onCommand:ne,onToggleAutoAccept:re,onResetPendingExitKey:oe,onDoubleEscapeEmpty:se,onTasteOnboardingComplete:ae,permissionPanel:ie,questionPanel:le,designSuggestionPanel:ue,onRewindSelect:me,onRewindCancel:pe,onLoginComplete:fe,onLoginCancel:Se,setShowProviderSelector:Ee,setShowModelSelector:be,setShowEffortSelector:ke,setShowMemorySelector:Ce,setShowMcpManager:ve,setShowAgentsConfig:Te,setShowAddDirModal:xe,setShowUsageOverlay:Pe,handleProviderSelect:Ae,handleProviderCancel:Ie,handleModelSelect:Me,handleModelCancel:Re,handleCompactModeSelect:_e,handleCompactModeCancel:De,handleThemeSelect:Ne,handleThemeCancel:$e,handleAuthSuccess:Le,handleAuthCancel:Oe,showDesignGuide:Fe,setShowDesignGuide:Ue}){const Be=ge(()=>e.filter(e=>"taste-onboarding"!==e.role),[e]),je=he(()=>Ue(!1),[Ue]),He=useTerminalWidth(),[We,Ge]=de(!1),ze=ge(()=>"off"===a?Be:getBudgetedFeed(Be,"limited"===a?15e3:5e4),[Be,a]),qe=ge(()=>"off"===a?0:Math.max(0,Be.length-ze.length),[Be.length,ze.length,a]),Ve=ge(()=>0===qe?ze:ze.filter(e=>"user"!==e.role),[ze,qe]),Ke=he(()=>Te(!1),[Te]),Ye=he(()=>Ce(!1),[Ce]),Qe=he(()=>ve(!1),[ve]),Je=he(()=>xe(!1),[xe]),Xe=he(()=>be(!0),[be]),Ze=he(()=>ke(!1),[ke]),et=he(()=>{hardResetForResize(),s(e=>e+1)},[s]),tt=!("off"!==a||ie||le||ue||E||k||C||$||v||T||x||P||A||I||M||R||_||N||Fe||i);return ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(Mb,{staticKey:o,feed:Ve,showHeader:!0,expandedToolOutput:"off"!==a,currentModel:F,currentProvider:O,hiddenCount:qe}),i&&ce.createElement(vk,{onComplete:ae,autoLearn:l}),u&&ce.createElement(TasteSkipMessage,null),d&&ce.createElement(ZdrPausedMessage,null),t.map(e=>e.metadata?.isAgent?ce.createElement(_b,{key:e.id,entry:e}):ce.createElement(ye,{key:e.id,marginBottom:1,width:"90%"},renderFeedEntry(e,"off"!==a))),ce.createElement(RetryMessage,{attempt:m}),ue,le,ie,"off"!==a&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"─".repeat(He))),ce.createElement(ye,{paddingRight:1},ce.createElement(we,{backgroundColor:oo.BG,color:oo.FG,bold:!0},`${Oy}DETAILED TRANSCRIPT${Oy}`),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{bold:!0},"ctrl+o"),ce.createElement(we,{color:Xr.DIM}," to toggle"),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{bold:!0},kE?"ctrl+y":"ctrl+e"),ce.createElement(we,{color:Xr.DIM}," ","to"," ","limited"===a?"show all":"collapse"),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{bold:!0},"esc"),ce.createElement(we,{color:Xr.DIM}," to exit"))),tt&&ce.createElement(ce.Fragment,null,ce.createElement(BackgroundTasksPanel,{onExpandedChange:Ge}),ce.createElement(Cb,{queuedMessages:n,isProcessing:r,executionState:Z,status:L,input:g,setInput:h,onSubmit:te,showFileList:w,setShowFileList:S,fileSearchQuery:f,setFileSearchQuery:y,onCommand:ne,outputTokens:Q,contextUsage:J,tasteLearning:Y,shareInfo:B,showShareNotification:j,unshareNotificationMessage:H,updateStatus:W,updateFailedInfo:G,creditWarning:z,currentProvider:O,currentModel:F,showProviderInfo:U,permissionMode:q,onToggleAutoAccept:re,hintMessage:V,historyManager:X.current,pendingExitKey:K,onResetPendingExitKey:oe,onDoubleEscapeEmpty:se,retryAttempt:m,onAltP:Xe,renderKey:o,inputActive:!We})),E&&ce.createElement(ye,{marginY:1},ce.createElement(Bb,{onSelect:Ae,onCancel:Ie,currentProvider:O})),k&&ce.createElement(ye,{marginY:1},ce.createElement(Fb,{onSelect:Me,onCancel:Re,currentModel:F,currentProvider:O,refreshBanner:et})),C&&ce.createElement(ye,{marginY:1},ce.createElement(Ub,{currentModel:F,onClose:Ze,refreshBanner:et})),Fe&&ce.createElement(ye,{marginY:1},ce.createElement(zb,{onCancel:je})),R&&ce.createElement(ye,{marginY:1},ce.createElement(jE,{onSelect:_e,onCancel:De})),_&&ce.createElement(ye,{marginY:1},ce.createElement(zE,{onClose:()=>D(!1)})),N&&ce.createElement(ye,{marginY:1},ce.createElement(xk,{onSelect:Ne,onCancel:$e})),x&&ce.createElement(ye,{marginY:1},ce.createElement(UE,{onCancel:Ke})),v&&ce.createElement(ye,{marginY:1},ce.createElement(xb,{onClose:Ye})),T&&ce.createElement(ye,{marginY:1},ce.createElement(Tb,{onClose:Qe})),P&&ee.current&&ce.createElement(ye,{marginY:1},ce.createElement(Hb,{checkpoints:ee.current.listCheckpoints(),onSelect:me,onCancel:pe})),$&&ce.createElement(ye,{marginY:1},ce.createElement($.Component,{onSuccess:Le,onCancel:Oe})),A&&ce.createElement(ye,{marginY:1},ce.createElement(vb,{onComplete:fe,onCancel:Se})),M&&ce.createElement(ye,{marginY:1},ce.createElement(CE,{onClose:Je})))},"MainView"));function renderView({feedState:e,sessionState:t,statusState:n,authState:r,uiOverlays:o,onboarding:s,exitState:a,pendingOps:i,permissionState:l,contextEngineRef:u,historyManagerRef:d,executionState:m,actionCallbacks:g,onSubmit:h,onCommand:f,input:y,setInput:w,fileSearchQuery:S,setFileSearchQuery:E,updateFailedInfo:k,creditWarning:C,handleTrust:v,handleNoTrust:T,handleToggleAutoAccept:x,handleDoubleEscapeEmpty:P,handleTasteOnboardingComplete:A,loadTasteStatus:I}){if(a.shouldExit)return null;if(s.checkingProject)return null;if(s.showTrustPrompt)return ce.createElement(SS,{staticKey:o.staticKey,onTrust:v,onExit:T});if(o.showSessionSelector)return ce.createElement(CS,{onSelectSession:g.onSelectSession,onNewSession:g.onNewSession});if(!s.projectTrusted)return null;const M=o.pendingDesignSuggestion?ce.createElement(fS,{suggestion:o.pendingDesignSuggestion,onSelect:e=>{f(`/design ${e}`)},onClose:()=>o.setPendingDesignSuggestion(null)}):null,R=i.pendingQuestion?ce.createElement(QuestionView,{pendingQuestion:i.pendingQuestion,permissionMode:l.permissionMode,setPermissionMode:l.setPermissionMode,dangerouslySkipPermissions:l.dangerouslySkipPermissions,setPendingQuestion:i.setPendingQuestion,setStatus:n.setStatus,setStaticKey:o.setStaticKey}):null,_=i.pendingPermission?ce.createElement(OS,{pendingPermission:i.pendingPermission,permissionMode:l.permissionMode,setPendingPermission:i.setPendingPermission,setStatus:n.setStatus,respondToPrompt:l.respondToPrompt,showHintMessage:n.showHintMessage,handleToggleAutoAccept:x}):null,{closeFullScreenOverlay:D}=o;return o.showLearningFeed?ce.createElement(eE,{onClose:()=>D(o.setShowLearningFeed),onExit:()=>a.setShouldExit(!0)}):o.showTasteConfig?ce.createElement(TasteConfigView,{staticKey:o.staticKey,onClose:()=>D(o.setShowTasteConfig),loadTasteStatus:I}):o.showSkillsConfig?ce.createElement(SkillsConfigView,{staticKey:o.staticKey,onClose:()=>D(o.setShowSkillsConfig)}):o.showUsageOverlay?ce.createElement(UsageView,{staticKey:o.staticKey,onClose:()=>D(o.setShowUsageOverlay)}):o.showContextView?ce.createElement(ContextConfigView,{staticKey:o.staticKey,contextEngineRef:u,onClose:()=>D(o.setShowContextView),setInput:w}):o.showStatusView?ce.createElement(StatusConfigView,{staticKey:o.staticKey,onClose:()=>D(o.setShowStatusView),setInput:w}):ce.createElement(Pk,{feed:e.feed,liveEntries:e.liveEntries,queuedMessages:e.queuedMessages,isCmdCodeBusy:e.isCmdCodeBusy,staticKey:o.staticKey,setStaticKey:o.setStaticKey,transcriptMode:o.transcriptMode,tasteOnboardingEntryId:s.tasteOnboardingEntryId,autoLearnTaste:s.autoLearnTaste,showTasteSkipBanner:o.showTasteSkipBanner,showZdrNotice:o.showZdrNotice,retryAttempt:n.retryAttempt,input:y,setInput:w,fileSearchQuery:S,setFileSearchQuery:E,showFileList:o.showFileList,setShowFileList:o.setShowFileList,showProviderSelector:o.showProviderSelector,showModelSelector:o.showModelSelector,showEffortSelector:o.showEffortSelector,showMemorySelector:o.showMemorySelector,showMcpManager:o.showMcpManager,showAgentsConfig:o.showAgentsConfig,showRewindSelector:o.showRewindSelector,showLoginOverlay:o.showLoginOverlay,showUsageOverlay:o.showUsageOverlay,setShowUsageOverlay:o.setShowUsageOverlay,showAddDirModal:o.showAddDirModal,showCompactModeSelector:o.showCompactModeSelector,showConfigureModels:o.showConfigureModels,setShowConfigureModels:o.setShowConfigureModels,showThemeSelector:o.showThemeSelector,authComponentInfo:r.authComponentInfo,status:n.status,currentProvider:r.currentProvider,currentModel:r.currentModel,showProviderNotification:r.showProviderNotification,shareInfo:n.shareInfo,showShareNotification:n.showShareNotification,unshareNotificationMessage:n.unshareNotificationMessage,updateStatus:n.updateStatus,updateFailedInfo:k,creditWarning:C,permissionMode:l.permissionMode,hintMessage:n.hintMessage,pendingExitKey:a.pendingExitKey,tasteLearningEnabled:n.tasteLearningEnabled,interactionTokens:n.interactionTokens,contextUsage:n.contextUsage,historyManagerRef:d,executionState:m,contextEngineRef:u,onSubmit:h,onCommand:f,onToggleAutoAccept:x,onResetPendingExitKey:a.resetPendingExitKey,onDoubleEscapeEmpty:P,onTasteOnboardingComplete:A,permissionPanel:_,questionPanel:R,designSuggestionPanel:M,onRewindSelect:g.onRewindSelect,onRewindCancel:g.onRewindCancel,onLoginComplete:g.onLoginComplete,onLoginCancel:g.onLoginCancel,setShowProviderSelector:o.setShowProviderSelector,setShowModelSelector:o.setShowModelSelector,setShowEffortSelector:o.setShowEffortSelector,setShowMemorySelector:o.setShowMemorySelector,setShowMcpManager:o.setShowMcpManager,setShowAgentsConfig:o.setShowAgentsConfig,setShowRewindSelector:o.setShowRewindSelector,setShowLoginOverlay:o.setShowLoginOverlay,setShowAddDirModal:o.setShowAddDirModal,handleProviderSelect:g.handleProviderSelect,handleProviderCancel:g.handleProviderCancel,handleModelSelect:g.handleModelSelect,handleModelCancel:g.handleModelCancel,handleCompactModeSelect:g.handleCompactModeSelect,handleCompactModeCancel:g.handleCompactModeCancel,handleThemeSelect:g.handleThemeSelect,handleThemeCancel:g.handleThemeCancel,handleAuthSuccess:g.handleAuthSuccess,handleAuthCancel:g.handleAuthCancel,showDesignGuide:o.showDesignGuide,setShowDesignGuide:o.setShowDesignGuide})}__name(renderView,"renderView");var Ak=__name(({resume:e=!1,resumeSessionId:t,continue:n=!1,trust:r=!1,dangerouslySkipPermissions:o=!1,updateStatus:s,updateFailedInfo:a,initialPrompt:i,skipOnboarding:l=!1,initialPermissionMode:u,sessionTitleHolder:d})=>{const{exit:m}=Ce(),{stdout:g}=be();pe(()=>{prefetchBillingContext()},[]);const[h,f]=de(""),[y,w]=de(""),S=me(!1),E=me(!1),k=me(null),C=me(null),v=useUiOverlays(),T=useFeed(),x=useSession(),P=useStatus(s),A=useAuth(),I=usePendingOps(),M=useOnboarding(),R=useExit(),{executeBash:_,executionState:D}=Af(),N=usePermissionMode({initialPermissionMode:u,dangerouslySkipPermissions:o,setPendingPermission:I.setPendingPermission,setStatus:P.setStatus,contextEngineRef:C}),{createContextEngineCallbacks:$}=useContextEngine({sessionId:x.sessionId,sessionLoaded:x.sessionLoaded,showSessionSelector:v.showSessionSelector,projectTrusted:M.projectTrusted,setFeed:T.setFeed,setLiveEntries:T.setLiveEntries,setQueuedMessages:T.setQueuedMessages,queuedMessagesRef:T.queuedMessagesRef,setStatus:P.setStatus,pinnedStatusRef:P.pinnedStatusRef,setRetryAttempt:P.setRetryAttempt,setInteractionTokens:P.setInteractionTokens,setContextUsage:P.setContextUsage,setCurrentProvider:A.setCurrentProvider,shareInfoRef:P.shareInfoRef,permissionsService:N.permissionsService,permissionModeRef:N.permissionModeRef,setPendingQuestion:I.setPendingQuestion,contextEngineRef:C}),{onCommand:L}=useCommandCtx({feedState:T,sessionState:x,statusState:P,authState:A,uiOverlays:v,onboarding:M,exitState:R,permissionState:N,contextEngineRef:C,isSubmittingRef:S,executeBash:_,createContextEngineCallbacks:$,setInput:f}),{loadTasteStatus:O,loadCurrentProvider:F,onSubmit:U}=useStartup({resume:e,resumeSessionId:t,continueLatest:n,trust:r,initialPrompt:i,stdout:g,feedState:T,sessionState:x,statusState:P,authState:A,onboarding:M,uiOverlays:v,permissionState:N,contextEngineRef:C,isSubmittingRef:S,initialPromptSubmittedRef:E,historyManagerRef:k,executeBash:_,createContextEngineCallbacks:$,setInput:f,onCommand:L});useMonitorOutputWakeup({onSubmit:U}),useLifecycle({exit:m,feedState:T,exitState:R,statusState:P,authState:A,onboarding:M,uiOverlays:v,skipOnboarding:l,contextEngineRef:C,sessionTitleHolder:d});const{handleToggleAutoAccept:B,handleDoubleEscapeEmpty:j,handleTasteOnboardingComplete:H,handleTrust:W,handleNoTrust:G}=useHandlers({resume:e,feedState:T,onboarding:M,uiOverlays:v,exitState:R,pendingOps:I,permissionState:N,statusState:P,authState:A,contextEngineRef:C,loadTasteStatus:O,loadCurrentProvider:F,setInput:__name(e=>f(e),"setInput")}),z=useMainActionCallbacks({feedState:T,sessionState:x,statusState:P,authState:A,uiOverlays:v,permissionState:N,contextEngineRef:C,createContextEngineCallbacks:$,setInput:f}),{creditWarning:q}=useCreditWarning({interactionTokens:P.interactionTokens});return renderView({feedState:T,sessionState:x,statusState:P,authState:A,uiOverlays:v,onboarding:M,exitState:R,pendingOps:I,permissionState:N,contextEngineRef:C,historyManagerRef:k,executionState:D,actionCallbacks:z,onSubmit:U,onCommand:L,input:h,setInput:f,fileSearchQuery:y,setFileSearchQuery:w,updateFailedInfo:a,creditWarning:q,handleTrust:W,handleNoTrust:G,handleToggleAutoAccept:B,handleDoubleEscapeEmpty:j,handleTasteOnboardingComplete:H,loadTasteStatus:O})},"InteractiveCLI");pn(),wn();var Ik="CMD_RELOAD_FILE",Mk="CMD_RELOAD_WRAPPER_PID",Rk=["-d","--debug","--local","--staging","--experimental",It,Mt],_k=new Set(["standard","plan","auto-accept"]);function canRespawn(){if(process.versions.bun)return!1;const e=process.argv[1];return"string"==typeof e&&e.length>0}function isWrappedChild(e=process.env,t=process.ppid){return!!e[Ik]&&e[Mk]===String(t)}function buildRelaunchArgs({invocation:e,request:t,resumable:n,argv:r}){const o=[];e.trust&&o.push("--trust"),e.dangerouslySkipPermissions&&o.push("--dangerously-skip-permissions"),e.skipOnboarding&&o.push("--skip-onboarding"),void 0!==e.maxTurns&&o.push("--max-turns",String(e.maxTurns));for(const e of t.addDir??[])o.push("--add-dir",e);for(const e of Rk)r.includes(e)&&o.push(e);return t.permissionMode&&_k.has(t.permissionMode)&&o.push("--permission-mode",t.permissionMode),t.model&&o.push("--model",t.model),n&&o.push("--resume",t.sessionId),o}async function writeReloadHandoff(e){const t=process.env[Ik];if(t)try{await U.writeFile(t,JSON.stringify(e))}catch{}}async function consumeReloadHandoff(e){try{const t=JSON.parse(await U.readFile(e,"utf-8"));if("string"!=typeof t?.sessionId)return null;const n=Array.isArray(t.addDir)&&t.addDir.every(e=>"string"==typeof e);return{sessionId:t.sessionId,permissionMode:"string"==typeof t.permissionMode?t.permissionMode:void 0,model:"string"==typeof t.model?t.model:void 0,addDir:n?t.addDir:void 0}}catch{return null}finally{await U.unlink(e).catch(()=>{})}}function restoreTerminal(){try{process.stdin.isTTY&&process.stdin.setRawMode(!1)}catch{}try{process.stdout.write("[?25h")}catch{}}__name(canRespawn,"canRespawn"),__name(isWrappedChild,"isWrappedChild"),__name(buildRelaunchArgs,"buildRelaunchArgs"),__name(writeReloadHandoff,"writeReloadHandoff"),__name(consumeReloadHandoff,"consumeReloadHandoff"),__name(restoreTerminal,"restoreTerminal");var Dk=ne.hex(Xr.DIM);function printReloadFallbackHint(){process.stdout.write(Dk("Couldn't restart automatically in this build — exiting instead.\n"))}async function shutdownWrapperRuntime(){try{await getMcpConnectionManager().disconnectAll()}catch{}try{await shutdownTelemetry()}catch{}process.removeAllListeners("SIGINT"),process.removeAllListeners("SIGTERM"),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{}),process.stdin.pause()}async function runRelaunchLoop(e){await shutdownWrapperRuntime();const n=await U.mkdtemp(t.join(D.tmpdir(),"cmd-reload-")),r=t.join(n,"handoff.json");let o=e;for(;;){const e=await Sh.sessionTranscriptExists(o.sessionId),t=buildRelaunchArgs({invocation:getOriginalInvocation(),request:o,resumable:e,argv:process.argv.slice(2)}),s=De(process.execPath,[process.argv[1],...t],{stdio:"inherit",env:{...process.env,[Ik]:r,[Mk]:String(process.pid)}});let a,i;try{[a,i]=await new Promise((e,t)=>{s.once("exit",(t,n)=>e([t,n])),s.once("error",t)})}catch(e){restoreTerminal(),process.stderr.write(Dk(`\nCouldn't relaunch Command Code: ${e.message}\n`)),await U.rm(n,{recursive:!0,force:!0}).catch(()=>{}),process.exit(1)}if(75!==a){if(restoreTerminal(),await U.rm(n,{recursive:!0,force:!0}).catch(()=>{}),i){const e=D.constants.signals[i];process.exit(e?128+e:1)}process.exit(a??1)}else o=await consumeReloadHandoff(r)??o}}async function handlePendingReload(e){canRespawn()?(isWrappedChild()&&(await writeReloadHandoff(e),process.exit(75)),await runRelaunchLoop(e)):printReloadFallbackHint()}__name(printReloadFallbackHint,"printReloadFallbackHint"),__name(shutdownWrapperRuntime,"shutdownWrapperRuntime"),__name(runRelaunchLoop,"runRelaunchLoop"),__name(handlePendingReload,"handlePendingReload");var Nk=__name(e=>e.replace(/\x1B\[[0-9;]*[A-Za-z]/g,"").replace(/[\x00-\x1F\x7F]/g," ").trim(),"sanitizeTitleForOutput"),$k=ne.hex(Xr.DIM),Lk=__name(()=>{const e=getInvokedCommandName();return"win32"===process.platform&&"cmd"===e?"cmdc":e},"getResumeCommandName"),Ok=__name(e=>{const t=Lk(),n=tt([e]);return`${$k("Resume this session with:")}\n${$k(`${t} --resume ${n}`)}\n`},"formatResumeHint"),Fk=__name(e=>e?{isValid:!0}:{isValid:!1,errorMessage:["Error: Interactive mode requires a TTY terminal.","Please run this command directly in your terminal, not through a pipe or redirect."].join("\n")},"validateTtyEnvironment"),Uk=__name(e=>Boolean(e.resume||e.continue),"shouldValidateSessions"),Bk=__name(({isInitialized:e,sessionCount:t})=>e&&0===t?{canProceed:!1,exitCode:0,message:"No conversations found to resume."}:{canProceed:!0},"validateSessionAvailability"),jk=__name(({options:e,resumeSessionId:t,sessionTitleHolder:n})=>{let r;return e.permissionMode?r=e.permissionMode:e.plan&&(r="plan"),{resume:"boolean"==typeof e.resume?e.resume:void 0,resumeSessionId:t,continue:e.continue,trust:e.trust,dangerouslySkipPermissions:e.dangerouslySkipPermissions,initialPrompt:e.initialPrompt,skipOnboarding:e.skipOnboarding,initialPermissionMode:r,sessionTitleHolder:n}},"buildInteractiveCLIProps"),Hk=__name(()=>({stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1}),"getInkRenderOptions"),Wk=__name(()=>{enableBracketedPasteMode(),process.on("exit",()=>{disableBracketedPasteMode()})},"setupBracketedPasteMode"),Gk=__name(()=>{Wk()},"initializeTerminal"),zk=__name(async e=>{const{resumeSessionId:t,useContinue:n}=e,r=n?(await Sh.listSessions())[0]?.id:void 0,o=t??r;if(!o)return console.error("--fork-session ignored: no session to fork (use with --resume <id|name> or --continue)."),null;try{const{newId:e}=await Sh.forkSessionFiles({sourceId:o});return e}catch(e){const t=e instanceof Error?e.message:String(e);return console.error(`--fork-session failed: ${t}. Resuming the original session.`),null}},"forkSourceAtColdStart"),qk=__name(async(e={})=>{const t=Fk(process.stdin.isTTY);let n;if(t.isValid||(console.error(t.errorMessage),process.exit(1)),Gk(),"string"==typeof e.resume){const t=e.resume.trim();if(await Sh.isProjectInitialized()||(console.error("Project not initialized. Run cmd to start a conversation first."),process.exit(1)),await Sh.sessionExists(t))n=t;else{const e=await Sh.findSessionByName(t);e||(console.error(`No session named "${t}" found.`),process.exit(1)),n=e.id}}if(Uk(e)&&!n){const e=await Sh.isProjectInitialized(),t=e?await Sh.listSessions():[],n=Bk({isInitialized:e,sessionCount:t.length});n.canProceed||(console.log(n.message),process.exit(n.exitCode))}if(e.forkSession){const t=await zk({resumeSessionId:n,useContinue:Boolean(e.continue)});t&&(n=t,e.continue=!1)}startEarlyInputCapture(),applyTuiTheme(getCliTheme());const r={},o=jk({options:e,resumeSessionId:n,sessionTitleHolder:r}),s=Hk(),a=ke(ce.createElement(Ak,{...o}),s);registerInkControl({clear:a.clear,stdout:process.stdout,instance:await resolveInkInstance(process.stdout)}),await a.waitUntilExit();const i=consumePendingReload();i&&await handlePendingReload(i);const l=r.sessionId;if(l&&await Sh.sessionExists(l)){const e=await(r.loadTitle?.()),t=e?Nk(e):"";process.stdout.write(Ok(t||l))}},"interactiveMode");pn(),wn();var Vk=__name(async()=>{const e=getBinaryCommand();try{return await runLogin(),!!await getAuthKey()||(console.error(`${He.cross} Authentication failed. Please try again with: ${e} login`),!1)}catch(t){return isUserCancellation(t)||(console.error(`${He.cross} Login failed: ${getErrorMessage2(t)}`),console.error(`Please try again with: ${e} login`)),!1}},"attemptLogin");async function ensureAuthenticated(){try{return!!await getAuthKey()||Vk()}catch(e){return console.error("Error checking authentication:",e),!1}}__name(ensureAuthenticated,"ensureAuthenticated"),pn(),wn();var Kk={bold:__name((e,t)=>t?`${e}`:e,"bold"),dim:__name((e,t)=>t?`${e}`:e,"dim"),green:__name((e,t)=>t?`${e}`:e,"green")};function modelNameOf(e){const t=e.lastIndexOf("/");return(-1===t?e:e.slice(t+1)).toLowerCase()}function displayModelId(e){return e.replace(Ao,"")}function resolveModelFlag({model:e}){const t=resolveKnownModelId(e);if(t)return t;const n=modelNameOf(e),r=getAllModelOptions().filter(e=>modelNameOf(e.id)===n);return 1===r.length?r[0].id:void 0}function editDistance(e,t){const n=e.length+1,r=t.length+1;let o=Array.from({length:r},(e,t)=>t);for(let s=1;s<n;s++){const n=[s];for(let a=1;a<r;a++){const r=e[s-1]===t[a-1]?0:1;n[a]=Math.min(o[a]+1,n[a-1]+1,o[a-1]+r)}o=n}return o[r-1]}function suggestModel(e){const t=e.trim().toLowerCase();if(!t)return;let n;for(const e of getAllModelOptions()){const r=displayModelId(e.id),o=Math.min(editDistance(t,r.toLowerCase()),editDistance(t,modelNameOf(r)));(!n||o<n.distance)&&(n={id:r,distance:o})}if(!n)return;const r=Math.min(4,Math.ceil(t.length/3));return n.distance<=r?n.id:void 0}function formatModelList(e={}){const t=e.color??!1,n=getModelGroupsInOrder(),r=n.flatMap(e=>e.models),o=Math.max(...r.map(e=>displayModelId(e.id).length)),s=n.map(e=>{const n=e.models.map(e=>{const n=displayModelId(e.id).padEnd(o),r=Kk.dim(e.description,t);return`${n} ${"free"===e.badge?`${Kk.green("FREE",t)} `:""}${r}${e.id===nn?` ${Kk.green("(default)",t)}`:""}`});return[Kk.bold(e.label,t),"",...n].join("\n")});return[`${Kk.bold("Available models",t)} ${Kk.dim(`· ${r.length} models`,t)}`,"",s.join("\n\n"),"",Kk.dim('Pass the full id, or just the short name after the last "/":',t),`${getBinaryCommand()} --model moonshotai/Kimi-K2.5`,`${getBinaryCommand()} --model kimi-k2.5`,"","Docs: https://commandcode.ai/docs/reference/cli/models"].join("\n")}function printModelList(){const e=Boolean(process.stdout.isTTY)&&void 0===process.env.NO_COLOR;process.stdout.write(`${formatModelList({color:e})}\n`)}function resolveModelFlagOrExit({model:e}){const t=resolveModelFlag({model:e});if(t)return t;const n=suggestModel(e),r=n?` Did you mean "${n}"?`:"";process.stderr.write(`Error: unknown model "${e}".${r}\nRun "${getBinaryCommand()} --list-models" to see all available models\n`),process.exit(1)}function isTTY(){return Boolean(process.stdout.isTTY&&process.stdin.isTTY&&!process.env.CI)}__name(modelNameOf,"modelNameOf"),__name(displayModelId,"displayModelId"),__name(resolveModelFlag,"resolveModelFlag"),__name(editDistance,"editDistance"),__name(suggestModel,"suggestModel"),__name(formatModelList,"formatModelList"),__name(printModelList,"printModelList"),__name(resolveModelFlagOrExit,"resolveModelFlagOrExit"),pn(),Rn(),pn(),__name(isTTY,"isTTY");var Yk=!1;function setupTelemetry(){initTelemetry()&&(startSession(),registerStartupTask(trackSystemInfo()),trackCliSessionExistsEvent(),registerCleanupHandlers())}async function trackSystemInfo(){try{const e=_.platform(),t=_.arch();let n,r,o,s;try{const e=await getAuthenticatedEntity();e.success&&(n=e.user?.userName,r=e.user?.id,o=e.org?.login,s=e.org?.id)}catch{}if(!r)try{const e=await loadCredentials();r=e?.userId}catch{}systemInfo({userName:n,userId:r,orgLogin:o,orgId:s,platform:e,arch:t})}catch{}}function registerCleanupHandlers(){process.on("beforeExit",async()=>{await shutdownTelemetry()}),process.on("exit",()=>{shutdownTelemetrySync()}),process.on("SIGINT",handleShutdownSignal),process.on("SIGTERM",handleShutdownSignal)}async function disconnectMcpServers(){try{await getMcpConnectionManager().disconnectAll()}catch{}}function handleShutdownSignal(){Yk||(Yk=!0,Promise.allSettled([disconnectMcpServers(),shutdownTelemetry()]).finally(()=>{process.exit(0)}))}async function shutdownAndExit(e=0){Yk=!0;try{await Promise.allSettled([disconnectMcpServers(),shutdownTelemetry(500)])}finally{process.exit(e)}}async function trackCliSessionExistsEvent(){try{if(!await getAuthKey())return;const e=getSessionId();if(!e)return;const t=getPackageJson().version||"unknown",n=_.platform(),r=_.arch(),o=isTTY()?"interactive":"non-interactive";await trackLifecycleEvent({eventType:"cli_session_exists",metadata:{sessionId:e,cliVersion:t,mode:o,os:`${n}-${r}`}})}catch{}}__name(setupTelemetry,"setupTelemetry"),__name(trackSystemInfo,"trackSystemInfo"),__name(registerCleanupHandlers,"registerCleanupHandlers"),__name(disconnectMcpServers,"disconnectMcpServers"),__name(handleShutdownSignal,"handleShutdownSignal"),__name(shutdownAndExit,"shutdownAndExit"),__name(trackCliSessionExistsEvent,"trackCliSessionExistsEvent");var Qk=__name(e=>e&&!e.startsWith("-")?e:void 0,"parsePrompt"),Jk=__name(async()=>{await ensureAuthenticated()||process.exit(1)},"requireAuth"),Xk=__name(e=>{const t={};return e.trust&&(t.trust=!0),e.dangerouslySkipPermissions&&(t.dangerouslySkipPermissions=!0,t.trust=!0),e.skipOnboarding&&(t.skipOnboarding=!0),e.plan&&(t.plan=!0),e.permissionMode&&(t.permissionMode=e.permissionMode),e.forkSession&&(t.forkSession=!0),t},"buildRuntimeOptions"),Zk=__name(({options:e,runtimeOptions:t,initialPrompt:n})=>{const r=e.resume??e.sessions;return r?{resume:r,...t}:e.continue?{continue:!0,...t}:{...t,initialPrompt:n}},"getInteractiveConfig"),eC=__name((e,t)=>"string"==typeof e.print&&e.print.trim()?e.print:t&&!t.startsWith("-")?t:"","extractPrintQuery");async function interactiveModeAction(e,t){if(t.listModels)return void printModelList();if(t.addDir&&t.addDir.length>0)for(const e of t.addDir)addDirectory(e);const n=t.model?resolveModelFlagOrExit({model:t.model}):void 0;if(void 0!==t.print){const r=eC(t,e);return void await printMode({query:r,dangerouslySkipPermissions:t.dangerouslySkipPermissions,maxTurns:t.maxTurns,verbose:t.verbose,model:n,benchmarkOutput:t.benchmarkOutput,resume:t.resume,continue:t.continue})}n&&setModelOverride(n),setGoalMaxTurnsOverride(t.maxTurns);const r=Qk(e);await Jk();const o=Xk(t),s=Zk({options:t,runtimeOptions:o,initialPrompt:r});setOriginalInvocation({trust:o.trust,dangerouslySkipPermissions:o.dangerouslySkipPermissions,skipOnboarding:o.skipOnboarding,maxTurns:t.maxTurns}),await qk(s),await shutdownAndExit(0)}__name(interactiveModeAction,"interactiveModeAction"),pn(),Sn();var tC=new Set(["update"]),nC=__name(()=>process.argv.slice(2).find(e=>!e.startsWith("-")),"getInvokedCommand");globalThis.COMMAND_CODE_CWD=process.cwd();var rC=__name(()=>process.cwd(),"getCwd"),oC=__name(()=>process.argv.slice(2),"getArgs"),sC=__name(e=>e.includes("--local")?"local":e.includes("--staging")?"staging":"production","getEnv"),aC=__name(()=>{const e=rC(),t=oC(),n=sC(t);dlog(`[Startup] cwd: ${e}`),dlog(`[Startup] args: ${t.join(" ")}`),dlog(`[Startup] env: ${n}`),dlog(`[Startup] traceId: ${getTraceId()??"unavailable"}`)},"logStartupInfo");async function preRun(){if(aC(),process.argv.includes("--ide-setup")){const e=await runIDESetup();formatSetupResult(e).forEach(e=>console.log(e)),process.exit("failed"===e.status?1:0)}const e=tC.has(nC()??"");e||(notifyCompletedUpdate(),maybeRunPendingUpdate()),await migrateDeprecatedModel(),await getAuthKey()&&detectAndTrackFirstInstall().catch(()=>{}),e||checkForUpdateAsync(),setTimeout(()=>ensureExtensionInstalled().catch(()=>{}),100).unref()}__name(preRun,"preRun"),pn(),wn(),Sn(),Rn();var iC=getPackageJson(),lC=__name((e,t=[])=>[...t,e],"collectAddDir");function displayCustomHelp(){const e=iC.version,t=getInvokedCommandName(),n=pg.filter(e=>!("/provider"===e.key&&!isInternalTeamFlagEnforced()));console.log(),console.log(ne.bold("Command Code")+ne.gray(` v${e}`)),console.log(ne.gray(ig)),console.log(),console.log(ne.bold("Usage")),console.log(` ${t} <command> [options]`),console.log(),console.log(ne.bold("Options"));for(const e of mg){const n=e.key.replace(/^cmd/,t);console.log(" "+n.padEnd(lg)+ne.gray(e.description))}console.log(),console.log(ne.bold("Commands"));for(const e of gg){const n=e.key.replace(/^cmd/,t);console.log(" "+n.padEnd(lg)+ne.gray(e.description))}console.log(),console.log(ne.bold("Slash Commands"));for(const e of n)console.log(" "+e.key.padEnd(lg)+ne.gray(e.description));console.log(),console.log(ne.bold("Keyboard Shortcuts"));for(const e of dg)console.log(" "+e.key.padEnd(lg)+ne.gray(e.description));console.log(),console.log(ne.bold("Examples"));for(const e of fg){const n=e.key.replace(/^cmd/,t);console.log(" "+n.padEnd(lg)+ne.gray(e.description))}console.log(),console.log(ne.cyan("❯")+" "+ne.gray(yg.replace(/cmd/,t))),console.log(),console.log(ne.bold("Links"));for(const e of hg)console.log(" "+e.key.padEnd(lg)+ne.cyan(e.description));console.log()}function createProgram(){const e=new Ue;return e.name(getInvokedCommandName()).description("Command Code with your coding taste.").version(iC.version,"-v, --version","display the version number").argument("[prompt]","Your prompt to run in interactive mode").option("-r, --resume [name]","Resume a session by id or name, or pick from history").option("--sessions [name]","Alias of --resume — resume a session by id or name, or pick from history").option("-c, --continue"," Continue the most recent session in the current directory").option("--fork-session","With --resume/--continue, fork the session into a new one (original left untouched)").option("-t, --trust","Trust the project (skip initial trust permission prompt)").addOption(new Be("--dangerously-skip-permissions","Bypass all permission prompts (use with caution)").hideHelp()).addOption(new Be("--yolo","Bypass all permission prompts (alias for --dangerously-skip-permissions)").implies({dangerouslySkipPermissions:!0})).option("--plan","Start in plan mode (read-only exploration and planning)").addOption(new Be("--auto-accept","Start in auto-accept mode").implies({permissionMode:"auto-accept"})).addOption(new Be("--permission-mode <mode>","Set permission mode").choices(["standard","plan","auto-accept"])).option("--skip-onboarding","Skip taste onboarding (for non-interactive/automated runs)").option("-p, --print [query]","Run in non-interactive mode, output response and exit").option("--max-turns <number>","Max agentic turns (model API round trips): print mode limit (default 10); interactive mode sets the /goal turn budget (default 100)",e=>{const t=parseInt(e,10);if(isNaN(t)||t<1)throw new je("--max-turns must be a positive integer");return t}).option("--verbose","Stream tool execution progress to stderr in print mode").option("--ide-setup",cg).option("--add-dir <directory>","Add directory to workspace context",lC,[]).option("-m, --model <model>","Run on a specific model this session (e.g. claude-sonnet-4-6, kimi-k2.5). Unknown ids are rejected; see --list-models.").option("--list-models","List the models available for use").addOption(new Be("--benchmark-output <path>","Path to write benchmark metrics JSON").hideHelp()).addOption(new Be("--experimental","Enable experimental features").hideHelp()).addOption(new Be(It).hideHelp()).addOption(new Be(Mt).hideHelp()).addOption(new Be("-d, --debug","Enable debug mode").hideHelp()).addOption(new Be("--local","Use local server").hideHelp()).addOption(new Be("--staging","Use staging server").hideHelp()).helpOption("-h, --help","Display help message").allowUnknownOption(),e.configureHelp({formatHelp:__name(()=>(displayCustomHelp(),""),"formatHelp")}),e}function setupCommanderHooks(e){e.hook("preAction",(e,t)=>{dlogSection("cmd");const n=t.name(),r=t.parent?.name();dlog(`[cmd] ${r&&r!==n?"subcommand":"running"}: ${n}`);const o=t.opts(),s=Object.entries(o).filter(([,e])=>void 0!==e&&!1!==e).map(([e,t])=>!0===t?`--${e}`:`--${e}=${t}`).join(" ");s&&dlog(`[cmd] options: ${s}`);const a=t.args;a.length>0&&dlog(`[cmd] arguments: ${a.join(" ")}`)}),e.hook("postAction",()=>{dlogSection("Done")})}async function openGitHubIssue(e){const t=buildGitHubIssueUrl(e),n=We("Opening GitHub issues...").start();try{await Z(t,{wait:!1,background:!0}),n.succeed(`Opened ${createOSC8Link(t,"GitHub issue")} in your browser`),console.log("")}catch(e){n.fail("Failed to open browser"),console.log(""),console.log(createOSC8Link(t,"Open GitHub issue manually")),console.log("")}}__name(displayCustomHelp,"displayCustomHelp"),__name(createProgram,"createProgram"),__name(setupCommanderHooks,"setupCommanderHooks"),pn(),__name(openGitHubIssue,"openGitHubIssue");var cC=new Ue("feedback").description("Open GitHub issues to share feedback or report bugs").argument("[title]","Optional issue title").action(openGitHubIssue);pn();var uC=new Ue("help").description("Display help information").allowUnknownOption().allowExcessArguments().action(function(){this.parent?.help()});async function runInfo(e){const t=getSystemInfo(),{waitUntilExit:n}=ke(ce.createElement(hw,{verbose:e.verbose,text:e.text,systemInfo:t}));await n()}pn(),pn(),__name(runInfo,"runInfo");var dC=new Ue("info").description("Display system information").option("--verbose","Show detailed CPU and network information").option("--text","Print plain text without colors").allowUnknownOption().allowExcessArguments().action(async e=>{await runInfo(e)});function runLearnTaste(){const{unmount:e}=ke(ce.createElement(kk,{onComplete:__name(()=>{e(),process.exit(0)},"onComplete"),onCancel:__name(()=>{e(),process.exit(0)},"onCancel"),onErrorDismiss:__name(()=>{e(),process.exit(1)},"onErrorDismiss")}))}pn(),wn(),pn(),__name(runLearnTaste,"runLearnTaste"),Sn();var mC=new Ue(Vt.LEARN_TASTE).description("Learn from your previous sessions - updates your taste profile").allowUnknownOption().allowExcessArguments().action(async()=>{try{runLearnTaste()}catch(e){trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"learn_taste_render_failed"}),context:{component:ms.LEARN_TASTE_COMMAND,heading:"Learn taste render failed"}}),dlog(`[/learn-taste] render failed: ${e instanceof Error?e.message:String(e)}`),await shutdownTelemetry(),process.exit(1)}});function addMcpCommand(){const e=new Ue("add");return e.description("Add an MCP server").argument("<name>","Server name (unique identifier)").argument("[url]","Server URL (required for http transport)").option("-t, --transport <type>","Transport type (stdio or http)","stdio").addOption(new Be("-s, --scope <scope>","Configuration scope").choices(["local","project","user"]).default("local")).option("-e, --env <KEY=value>","Environment variable (repeatable)",collectKeyValue,{}).option("-H, --header <header>","HTTP header (repeatable, http only)",collectHeaders,{}).allowUnknownOption().allowExcessArguments().action(async(e,t,n,r)=>{const o=getInvokedCommandName();try{let s;/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(e)&&!e.includes("__")||(console.error(ne.red(`Error: Invalid server name '${e}'`)),console.error(ne.gray("Names must start with a letter or number, contain only letters, numbers, hyphens, and single underscores")),process.exit(1)),"stdio"!==n.transport&&"http"!==n.transport&&(console.error(ne.red(`Error: Invalid transport type '${n.transport}'`)),console.error(ne.gray("Valid options: stdio, http")),process.exit(1));let a=!1;if("http"===n.transport){t||(console.error(ne.red("Error: URL is required for http transport")),console.error(ne.gray(`Usage: ${getBinaryCommand()} mcp add --transport http <name> <url>`)),process.exit(1));try{new URL(t)}catch{console.error(ne.red(`Error: Invalid URL '${t}'`)),process.exit(1)}s={transport:"http",enabled:!0,url:t,...Object.keys(n.header).length>0&&{headers:n.header},...Object.keys(n.env).length>0&&{env:n.env}},console.log(ne.gray("Checking server authentication requirements..."));const r=await checkServerAuthRequirements(t);if(r.error&&console.log(ne.yellow(`Warning: ${r.error}`)),r.requiresAuth&&r.metadata){console.log(ne.cyan("Server requires OAuth authentication.")),isSecureOrLoopback(t)||(console.error(ne.red(`Error: Server '${e}' requires OAuth, but URL '${t}' is not secure.`)),console.error(ne.gray("OAuth requires https:// (http:// is only allowed for loopback hosts: localhost, 127.0.0.1, [::1]).")),console.error(ne.gray("Switch the URL to https:// or use a non-OAuth server.")),process.exit(1));let n,o="command-code";if(r.metadata.registrationEndpoint){console.log(ne.gray("Registering OAuth client..."));const e=await registerOAuthClient({registrationEndpoint:r.metadata.registrationEndpoint,clientName:"Command Code CLI",redirectUris:[`http://127.0.0.1:${Fn}/callback`]});e&&(o=e.clientId,n=e.clientSecret)}s.oauth={authorizationUrl:r.metadata.authorizationEndpoint,tokenUrl:r.metadata.tokenEndpoint,clientId:o,clientSecret:n,scopes:r.metadata.scopes},console.log(ne.gray("A browser window will open for authentication.\n"));const i=await performOAuthFlow(e,t,{authorizationUrl:r.metadata.authorizationEndpoint,tokenUrl:r.metadata.tokenEndpoint,clientId:o,clientSecret:n,scopes:r.metadata.scopes},{onStatus:__name(e=>{console.log(ne.gray(` ${e}`))},"onStatus")});i.success?console.log(ne.green("✓ Successfully authenticated")):(a=!0,console.log(ne.yellow(`Warning: Authentication failed: ${i.error}`)),console.log(ne.gray(`You can retry with: ${getBinaryCommand()} mcp auth ${e}`)),console.log(ne.gray("Or authenticate via the /mcp menu in a session")))}}else{const o=r.args,a=process.argv.indexOf("--");let i,l=[];if(-1!==a){const e=process.argv.slice(a+1);0===e.length&&(console.error(ne.red("Error: Command is required for stdio transport")),console.error(ne.gray(`Usage: ${getBinaryCommand()} mcp add --transport stdio <name> -- <command> [args...]`)),process.exit(1)),i=e[0],l=e.slice(1)}else if(t){i=t;const n=o.indexOf(e);-1!==n&&o.length>n+2&&(l=o.slice(n+2))}else console.error(ne.red("Error: Command is required for stdio transport")),console.error(ne.gray(`Usage: ${getBinaryCommand()} mcp add --transport stdio <name> -- <command> [args...]`)),console.error(ne.gray(` or: ${getBinaryCommand()} mcp add <name> <command> [args...]`)),process.exit(1);looksLikeHttpUrl2(i)&&(console.error(ne.red(`Error: '${i}' looks like a URL, not a local command.`)),console.error(ne.gray(`Did you mean: cmd mcp add --transport http ${e} ${i}`)),process.exit(1)),s={transport:"stdio",enabled:!0,command:i,...l.length>0&&{args:l},...Object.keys(n.env).length>0&&{env:n.env}}}await addMcpServer({name:e,serverConfig:s,scope:n.scope});const i="user"===n.scope?"global":"project"===n.scope?"project":"local";if(a?console.log(ne.yellow(`✓ Added MCP server '${e}' to ${i} config (authentication pending)`)):console.log(ne.green(`✓ Added MCP server '${e}' to ${i} config`)),"http"===s.transport)console.log(ne.gray(` URL: ${s.url}`));else{const e=[s.command,...s.args||[]].join(" ");console.log(ne.gray(` Command: ${e}`))}console.log(""),console.log(ne.cyan("Next steps:")),console.log(ne.gray(`Start ${o} and run /mcp to manage configured MCP servers.`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function looksLikeHttpUrl2(e){try{const t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol}catch{return!1}}function collectKeyValue(e,t){const[n,...r]=e.split("=");return n&&0!==r.length||(console.error(ne.red(`Error: Invalid format '${e}', expected KEY=value`)),process.exit(1)),t[n]=r.join("="),t}function collectHeaders(e,t){const n=e.indexOf(":");-1===n&&(console.error(ne.red(`Error: Invalid header format '${e}', expected 'Header: value'`)),process.exit(1));const r=e.substring(0,n).trim(),o=e.substring(n+1).trim();return r||(console.error(ne.red(`Error: Empty header name in '${e}'`)),process.exit(1)),t[r]=o,t}function listMcpCommand(){const e=new Ue("list");return e.description("List configured MCP servers").action(async()=>{try{const e=await listMcpServers();if(0===e.length)return console.log(ne.yellow("\nNo MCP servers configured\n")),console.log(ne.gray("Add a server with:")),console.log(ne.gray(` ${getBinaryCommand()} mcp add --transport http <name> <url>`)),console.log(ne.gray(` ${getBinaryCommand()} mcp add --transport stdio <name> -- <command>`)),void console.log(ne.gray("\nDocs: https://commandcode.ai/docs/mcp"));console.log(ne.hex("#E4CCFF").bold("\nMCP Servers\n"));const t=Math.max(4,...e.map(e=>e.name.length)),n=5,r=7;console.log(ne.dim(` ${"NAME".padEnd(t)} ${"TYPE".padEnd(n)} ${"SCOPE".padEnd(r)} AUTH STATUS`));for(const o of e){const e=o.config.enabled?ne.green("enabled"):ne.gray("disabled");let s;s=o.config.oauth?await hasTokens(o.name)?ne.green(He.tick):ne.red(He.cross):o.config.headers||o.config.env?ne.green(He.tick):ne.gray("-"),console.log(` ${ne.white(o.name.padEnd(t))} ${ne.cyan(o.config.transport.padEnd(n))} ${ne.gray(o.scope.padEnd(r))} ${s} ${e}`)}console.log(ne.dim(`\nTotal: ${e.length} server${1!==e.length?"s":""}\n`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function getMcpCommand(){const e=new Ue("get");return e.description("Show details for an MCP server").argument("<name>","Server name").action(async e=>{try{const t=await getMcpServer({name:e});t||(console.error(ne.red(`Error: MCP server '${e}' not found`)),process.exit(1));const{config:n,scope:r}=t;if(console.log(ne.hex("#E4CCFF").bold(`\nMCP Server: ${e}\n`)),console.log(` ${ne.dim("Scope:")} ${r}`),console.log(` ${ne.dim("Transport:")} ${n.transport}`),console.log(` ${ne.dim("Status:")} ${n.enabled?ne.green("enabled"):ne.gray("disabled")}`),"http"===n.transport){if(console.log(` ${ne.dim("URL:")} ${n.url}`),n.headers&&Object.keys(n.headers).length>0){console.log(` ${ne.dim("Headers:")}`);for(const[e,t]of Object.entries(n.headers)){const n=e.toLowerCase().includes("auth")||e.toLowerCase().includes("token")||e.toLowerCase().includes("key")?"***":t;console.log(` ${e}: ${n}`)}}}else console.log(` ${ne.dim("Command:")} ${n.command}`),n.args&&n.args.length>0&&console.log(` ${ne.dim("Args:")} ${n.args.join(" ")}`);if(n.env&&Object.keys(n.env).length>0){console.log(` ${ne.dim("Environment:")}`);for(const[e,t]of Object.entries(n.env)){const n=e.toLowerCase().includes("key")||e.toLowerCase().includes("secret")||e.toLowerCase().includes("token")||e.toLowerCase().includes("password")?"***":t;console.log(` ${e}=${n}`)}}console.log("")}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function removeMcpCommand(){const e=new Ue("remove");return e.description("Remove an MCP server").argument("<name>","Server name").addOption(new Be("-s, --scope <scope>","Scope to remove from (auto-detects if not specified)").choices(["local","project","user"])).action(async(e,t)=>{try{const n=await getMcpServer({name:e});n||(console.error(ne.red(`Error: MCP server '${e}' not found`)),process.exit(1));const r=t.scope||n.scope;t.scope&&t.scope!==n.scope&&(console.error(ne.red(`Error: Server '${e}' is defined in '${n.scope}' scope, not '${t.scope}'`)),process.exit(1)),await removeMcpServer({name:e,scope:r})||(console.error(ne.red(`Error: Failed to remove server '${e}'`)),process.exit(1));const o="user"===r?"global":"project"===r?"project":"local";console.log(ne.green(`✓ Removed MCP server '${e}' from ${o} config`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function addJsonMcpCommand(){const e=new Ue("add-json");return e.description("Add an MCP server from JSON configuration").argument("<name>","Server name (unique identifier)").argument("<json>","Server configuration as JSON string").addOption(new Be("-s, --scope <scope>","Configuration scope").choices(["local","project","user"]).default("local")).option("--client-secret <secret>","OAuth client secret (injected into oauth config)").action(async(e,t,n)=>{const r=getInvokedCommandName();try{let o,s;/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(e)&&!e.includes("__")||(console.error(ne.red(`Error: Invalid server name '${e}'`)),console.error(ne.gray("Names must start with a letter or number, contain only letters, numbers, hyphens, and single underscores")),process.exit(1));try{o=JSON.parse(t)}catch{console.error(ne.red("Error: Invalid JSON")),console.error(ne.gray("Make sure to quote the JSON string properly")),console.error(ne.gray(`Example: ${r} mcp add-json github '{"type":"stdio","command":"npx"}'`)),process.exit(1)}o?.oauth?.callbackPort&&(s=o.oauth.callbackPort,delete o.oauth.callbackPort),n.clientSecret&&o?.oauth&&(o.oauth.clientSecret=n.clientSecret);const a=Nn.safeParse(o);if(!a.success){console.error(ne.red("Error: Invalid server configuration"));for(const e of a.error.issues)console.error(ne.gray(` ${e.path.join(".")}: ${e.message}`));process.exit(1)}const i=a.data;let l=!1;if("http"!==i.transport||i.url||(console.error(ne.red("Error: URL is required for http type")),process.exit(1)),"stdio"!==i.transport||i.command||(console.error(ne.red("Error: Command is required for stdio type")),process.exit(1)),await addMcpServer({name:e,serverConfig:i,scope:n.scope}),i.oauth){console.log(ne.cyan("Starting OAuth authentication...")),console.log(ne.gray("A browser window will open for authentication.\n"));const t={authorizationUrl:i.oauth.authorizationUrl,tokenUrl:i.oauth.tokenUrl,clientId:i.oauth.clientId,clientSecret:i.oauth.clientSecret,scopes:i.oauth.scopes},n=await performOAuthFlow(e,i.url??"",t,{...s&&{port:s},onStatus:__name(e=>{console.log(ne.gray(` ${e}`))},"onStatus")});n.success?console.log(ne.green(`\n✓ Successfully authenticated with '${e}'`)):(l=!0,console.error(ne.yellow(`\nWarning: Authentication failed: ${n.error}`)),console.error(ne.gray(`You can retry with: ${r} mcp auth ${e}`)),console.error(ne.gray("Or authenticate via the /mcp menu in a session")))}const u="user"===n.scope?"global":"project"===n.scope?"project":"local";if(l?console.log(ne.yellow(`✓ Added MCP server '${e}' to ${u} config (authentication pending)`)):console.log(ne.green(`✓ Added MCP server '${e}' to ${u} config`)),"http"===i.transport)console.log(ne.gray(` URL: ${i.url}`));else{const e=[i.command,...i.args||[]].join(" ");console.log(ne.gray(` Command: ${e}`))}console.log(""),console.log(ne.cyan("Next steps:")),console.log(ne.gray(`Start ${r} and run /mcp to manage configured MCP servers.`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function authMcpCommand(){const e=new Ue("auth");return e.description("Manage OAuth authentication for MCP servers").argument("[server]","Server name to authenticate").option("--status","Check authentication status").option("--clear","Clear stored authentication").option("--list","List servers with stored authentication").action(async(e,t)=>{const n=getInvokedCommandName();try{if(t.list){const e=await listServersWithTokens();if(0===e.length)return void console.log(ne.yellow("No servers with stored authentication."));console.log(ne.hex("#E4CCFF").bold("\nAuthenticated MCP Servers\n"));for(const t of e){const e=await getTokens(t),n=!e||isTokenExpired(e)?ne.yellow("expired"):ne.green("valid");console.log(` ${t}: ${n}`)}return void console.log("")}if(e||(console.error(ne.red("Error: Server name is required")),console.error(ne.gray(`Usage: ${n} mcp auth <server>`)),console.error(ne.gray(` ${n} mcp auth --list`)),process.exit(1)),t.status){if(!await hasTokens(e))return void console.log(ne.yellow(`No authentication stored for '${e}'`));const t=await getTokens(e);if(!t)return void console.log(ne.yellow(`No authentication stored for '${e}'`));if(isTokenExpired(t))console.log(ne.yellow(`Authentication for '${e}' has expired`)),t.refreshToken&&console.log(ne.gray(" A refresh token is available for re-authentication"));else{if(console.log(ne.green(`Authentication for '${e}' is valid`)),t.expiresAt){const e=Math.round((t.expiresAt-Date.now())/1e3/60);console.log(ne.gray(` Expires in ${e} minutes`))}t.scope&&console.log(ne.gray(` Scopes: ${t.scope}`))}return}if(t.clear)return void(await deleteTokens(e)?console.log(ne.green(`✓ Cleared authentication for '${e}'`)):console.log(ne.yellow(`No authentication stored for '${e}'`)));const r=await getMcpServer({name:e});r||(console.error(ne.red(`Error: MCP server '${e}' not found`)),console.error(ne.gray(`Use "${n} mcp list" to see configured servers`)),process.exit(1)),console.log(ne.cyan(`Authenticating with '${e}'...`)),console.log(ne.gray("A browser window will open for authentication.\n"));const o=__name(e=>{console.log(ne.gray(` ${e}`))},"onStatus");let s;if(r.config.oauth){const t={authorizationUrl:r.config.oauth.authorizationUrl,tokenUrl:r.config.oauth.tokenUrl,clientId:r.config.oauth.clientId,clientSecret:r.config.oauth.clientSecret,scopes:r.config.oauth.scopes};s=await performOAuthFlow(e,r.config.url??"",t,{onStatus:o})}else"http"===r.config.transport&&r.config.url||(console.error(ne.red("Error: Discovery-based auth requires an http server with a url")),process.exit(1)),s=await discoverAndAuthenticate({serverName:e,serverUrl:r.config.url,onStatus:o});if(s.success)return console.log(ne.green(`\n✓ Successfully authenticated with '${e}'`)),void console.log(ne.gray("Restart the session to connect with the authenticated server."));console.error(ne.red(`\nError: Authentication failed: ${s.error}`)),console.log(ne.gray(`Try again with "${n} mcp auth ${e}"`)),process.exit(1)}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function createMcpCommand(){const e=new Ue("mcp");return e.description("Manage MCP (Model Context Protocol) servers").allowUnknownOption().allowExcessArguments(),e.addCommand(addMcpCommand()),e.addCommand(listMcpCommand()),e.addCommand(getMcpCommand()),e.addCommand(removeMcpCommand()),e.addCommand(addJsonMcpCommand()),e.addCommand(authMcpCommand()),e}async function runCommand(e){return new Promise((t,n)=>{const r=De(e.cmd,e.args,{stdio:["ignore","pipe","pipe"],env:process.env});let o="",s="";r.stdout.on("data",e=>{o+=String(e)}),r.stderr.on("data",e=>{s+=String(e)}),r.on("error",n),r.on("close",r=>{0!==r?n(new Error(`${e.cmd} ${e.args.join(" ")} failed${s?`: ${s.trim()}`:""}`)):t({stdout:o,stderr:s})})})}async function detectDefaultBranch(e){try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.repoDir,"symbolic-ref","refs/remotes/origin/HEAD","--short"]}),n=t.trim().replace(/^origin\//,"");if(n)return n}catch{}for(const t of["main","master"])try{return await runCommand({cmd:"git",args:["-C",e.repoDir,"rev-parse","--verify",t]}),t}catch{}try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.repoDir,"rev-parse","--abbrev-ref","HEAD"]});return t.trim()}catch{return"main"}}async function findGitRoot4(e){try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.dir,"rev-parse","--show-toplevel"]});return t.trim()}catch{return null}}async function countLearnings(e){try{return(await F.readFile(e,"utf-8")).split("\n").filter(e=>e.trim().startsWith("- ")&&e.includes("Confidence:")).length}catch{return 0}}async function resolveSource(t){const n=t.source.trim(),r=e.resolve(n);try{if(!(await F.stat(r)).isDirectory())throw new Error(`Source must be a repository directory: ${n}`);return{type:"local",displayName:r,repoDir:r,repoName:e.basename(r),github:await inferGitHubRepo({repoDir:r})}}catch(e){if(e instanceof Error&&e.message.startsWith("Source must be"))throw e}const o=parseGitHubSource({source:n});if(!o){const e=n.startsWith("git@")?" SSH URLs are not supported. Use HTTPS or owner/repo instead.":"";throw new Error(`Unsupported source '${n}'.${e} Use a local path, GitHub HTTPS URL, or owner/repo.`)}const s=String(t.maxCommits??200),a=`https://github.com/${o.owner}/${o.repo}.git`,i=await F.mkdtemp(e.join(_.tmpdir(),"taste-learn-"));try{await runCommand({cmd:"git",args:["clone","--depth",s,"--single-branch",...t.branch?["--branch",t.branch]:[],"--",a,i]})}catch{throw await F.rm(i,{recursive:!0,force:!0}).catch(()=>{}),new Error(`Repository not found: ${o.owner}/${o.repo}. Check the owner and repo name, or verify it's a public repository.`)}return{type:"github",displayName:`${o.owner}/${o.repo}`,repoDir:i,repoName:o.repo,github:o,cleanup:__name(async()=>{await F.rm(i,{recursive:!0,force:!0})},"cleanup")}}function getTastePathForDir(t){return e.join(t.projectRoot,".commandcode","taste")}async function resolveDisplayName(t){if(t.startsWith("/")||t.startsWith(".")){const n=e.resolve(t),r=await findGitRoot4({dir:n});return r?e.basename(r):e.basename(n)}return t}function parseGitHubSource(e){const t=e.source.match(/^([\w.-]+)\/([\w.-]+)$/);if(t)return{owner:t[1],repo:t[2].replace(/\.git$/,"")};try{const t=new URL(e.source);if("github.com"!==t.hostname)return null;const n=t.pathname.split("/").filter(Boolean);return n.length<2?null:{owner:n[0],repo:n[1].replace(/\.git$/,"")}}catch{return null}}async function inferGitHubRepo(e){try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.repoDir,"remote","get-url","origin"]});return parseGitHubSource({source:t.trim()})??void 0}catch{return}}async function feedToLearningAgent(e){const t=await getConfiguredProvider(),n=await getOAuthCredentials({provider:t});if(await isOAuthEnforced()&&!n?.token)throw new Error(`Authentication required. Run: ${getBinaryCommand()} login`);n?.token&&validateOAuthToken({token:n.token,provider:t});const r=getApiBaseUrl(),o=new Nu({baseUrl:r}),s=new ay({request:o,sessionId:crypto.randomUUID(),projectRoot:e.outputDir}),a=[{role:"user",content:e.compiledContext}];await s.checkAndProcess({messages:a})}function logLearnSummary(e){const{summary:t}=e;console.log(ne.cyan("\n ─── Results ───\n")),console.log(` Source: ${t.sourceName}`),console.log(` Signals: ${t.signalCount} extracted`),console.log(` Context: ${t.contextLength} chars compiled`),console.log(` Taste dir: ${t.tasteDir}`),console.log("")}function shouldContinueExtraction(e){return!(e.offset>=e.commitsLength||e.signalCount>=e.signalCap||e.commitsWithDiffs>=50)}async function extractAllSignals(e){e.onProgress?.("Collecting commits");const t=await collectCommits(e);if(0===t.length)return e.onProgress?.("No commits found"),{signals:[],commitCount:0};e.onProgress?.(`Found ${t.length} commits to analyze`);const n=e.maxSignals??50,r=[];let o=0;for(let s=0;shouldContinueExtraction({offset:s,commitsLength:t.length,signalCount:r.length,signalCap:n,commitsWithDiffs:o});s+=10){const a=t.slice(s,s+10);if(0===a.length)break;const i=await runBounded(5,a,async t=>({commit:t,subs:await getSubstitutions(e.repoDir,t.hash)}));for(const{commit:e,subs:t}of i){if(0===t.length)continue;o++;const s=groupCrossFilePatterns(t);for(const t of s.slice(0,5)){if(t.removed.length>200||t.added.length>200)continue;const o=[`Commit: ${e.subject}`];o.push(`File: ${t.file}`),t.context&&o.push(`In: ${t.context}`);const s=buildSnippet(t.codeBefore,t.added,t.codeAfter);if(s&&o.push(s),r.push({text:`${truncate3(t.removed,60)} → ${truncate3(t.added,60)}`,evidence:o,category:inferCategory(t.removed,t.added)}),r.length>=n)break}if(r.length>=n)break}}return e.onProgress?.(`Extracted ${r.length} diff signals from ${o} commits`),{signals:r,commitCount:t.length}}async function collectCommits(e){const t=buildAuthorPattern(e.author,e.authorAliases),n=t?.includes("|")??!1,r=t?[...n?["--extended-regexp"]:[],"--author",t,"--regexp-ignore-case"]:[],o=e.branch?[e.branch]:[],s=e.author?e.maxCommits:3*e.maxCommits,{stdout:a}=await runCommand({cmd:"git",args:["-C",e.repoDir,"log",...o,"--no-merges",...r,"--pretty=format:%H%x1f%aI%x1f%aN%x1f%s%x1e","-n",String(s)]});return a.split("").map(e=>e.trim()).filter(Boolean).map(e=>{const[t="",n="",r="",o=""]=e.split("");return{hash:t.trim(),subject:o.trim(),authorDate:n.trim(),authorName:r.trim()}}).filter(e=>!isDependencyBot(e.authorName,e.subject)).slice(0,e.maxCommits)}async function getSubstitutions(e,t){try{const{stdout:n}=await runCommand({cmd:"git",args:["-C",e,"show","--format=","-U3","--diff-algorithm=histogram","-b","--ignore-blank-lines","-M",t]}),r=[];let o="",s="",a=[],i=[],l=[];const u=2;let d=null;const m=__name(()=>{d&&(r.push({removed:d.removed,added:d.added,file:d.file,context:d.context,codeBefore:d.codeBefore.length>0?d.codeBefore:void 0,codeAfter:d.codeAfter.length>0?d.codeAfter:void 0}),d=null)},"commitPending"),g=__name(()=>{if(a.length>0&&i.length>0){const e=a.join("\n").trim(),t=i.join("\n").trim();e===t||isVersionBump(e,t)||isTrivialChange(e,t)||(m(),d={removed:e,added:t,file:o,context:s||void 0,codeBefore:[...l],codeAfter:[]})}a=[],i=[]},"flush");for(const e of n.split("\n")){if(e.startsWith("diff --git")){g(),m(),o=e.match(/b\/(.+)$/)?.[1]??"",s="",l=[],isNoiseFile(o)&&(o="");continue}if(e.startsWith("@@")){g(),m(),s=e.match(/@@ .+ @@\s*(.+)/)?.[1]?.trim()??"",l=[];continue}if(!o)continue;if(e.startsWith("-")&&!e.startsWith("---")){i.length>0&&g(),a.push(e.slice(1));continue}if(e.startsWith("+")&&!e.startsWith("+++")){i.push(e.slice(1));continue}g();const t=e.startsWith(" ")?e.slice(1):e;if(!t.trim())continue;const n=d;null!==n&&n.codeAfter.length<u&&(n.codeAfter.push(t),n.codeAfter.length>=u&&m()),l.push(t),l.length>u&&l.shift()}return g(),m(),r}catch(e){return process.env.DEBUG&&console.error(`[taste-learn] getSubstitutions failed for ${t}:`,e instanceof Error?e.message:e),[]}}function groupCrossFilePatterns(e){const t=new Map;for(const n of e){const e=`${n.removed.trim()}\0${n.added.trim()}`,r=t.get(e)??[];r.push(n),t.set(e,r)}const n=[];for(const[,e]of t)if(e.length>=2){const t=e.map(e=>e.file).join(", ");n.push({...e[0],file:t,context:`Same change across ${e.length} files`})}else n.push(e[0]);return n}pn(),pn(),wn(),__name(addMcpCommand,"addMcpCommand"),__name(looksLikeHttpUrl2,"looksLikeHttpUrl"),__name(collectKeyValue,"collectKeyValue"),__name(collectHeaders,"collectHeaders"),pn(),wn(),__name(listMcpCommand,"listMcpCommand"),pn(),__name(getMcpCommand,"getMcpCommand"),pn(),__name(removeMcpCommand,"removeMcpCommand"),pn(),__name(addJsonMcpCommand,"addJsonMcpCommand"),pn(),__name(authMcpCommand,"authMcpCommand"),__name(createMcpCommand,"createMcpCommand"),pn(),wn(),pn(),pn(),wn(),pn(),__name(runCommand,"runCommand"),pn(),__name(detectDefaultBranch,"detectDefaultBranch"),__name(findGitRoot4,"findGitRoot"),__name(countLearnings,"countLearnings"),__name(resolveSource,"resolveSource"),__name(getTastePathForDir,"getTastePathForDir"),__name(resolveDisplayName,"resolveDisplayName"),__name(parseGitHubSource,"parseGitHubSource"),__name(inferGitHubRepo,"inferGitHubRepo"),pn(),wn(),__name(feedToLearningAgent,"feedToLearningAgent"),__name(logLearnSummary,"logLearnSummary"),pn(),pn(),__name(shouldContinueExtraction,"shouldContinueExtraction"),__name(extractAllSignals,"extractAllSignals"),__name(collectCommits,"collectCommits"),__name(getSubstitutions,"getSubstitutions"),__name(groupCrossFilePatterns,"groupCrossFilePatterns");var pC=5,gC=3;function buildSnippet(e,t,n){const r=e??[],o=n??[],s=t.split("\n").map(e=>e.trimEnd());if(0===s.length&&0===r.length&&0===o.length)return;let a,i=0;s.length>gC?(a=s.slice(0,gC-1),i=s.length-a.length):a=s;const l=a.length+(i>0?1:0),u=Math.max(0,pC-l),d=Math.min(r.length,Math.ceil(u/2)),m=Math.min(o.length,u-d),g=[];for(const e of r.slice(-d))g.push(` ${e.trimEnd()}`);for(const e of a)g.push(`→ ${e}`);i>0&&g.push(`→ ... (+${i} more changed ${1===i?"line":"lines"})`);for(const e of o.slice(0,m))g.push(` ${e.trimEnd()}`);return 0!==g.length?`Snippet:\n${g.join("\n")}`:void 0}__name(buildSnippet,"buildSnippet");var hC=[/package-lock\.json$/,/pnpm-lock\.yaml$/,/yarn\.lock$/,/CHANGELOG\.(md|yml|yaml)$/i,/\.versionbot\//,/\.min\.(js|css)$/,/dist\//,/\.map$/];function isNoiseFile(e){return hC.some(t=>t.test(e))}function isTrivialChange(e,t){return e.trim().length<3&&t.trim().length<3}function isVersionBump(e,t){const n=/^"?version"?\s*:\s*"?\d+\.\d+/;return n.test(e.trim())&&n.test(t.trim())}function inferCategory(e,t){const n=`${e} ${t}`.toLowerCase();return/import|require|from\s+['"]/.test(n)?"imports":/function|=>|async|return/.test(n)?"code-style":/class|interface|type\s+/.test(n)?"types":/test|describe|it\(|expect/.test(n)?"testing":/console|log|debug|error/.test(n)?"logging":/try|catch|throw|Error/.test(n)?"error-handling":"code-style"}function buildAuthorPattern(e,t){return t&&t.length>0?t.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"):e??void 0}__name(isNoiseFile,"isNoiseFile"),__name(isTrivialChange,"isTrivialChange"),__name(isVersionBump,"isVersionBump"),__name(inferCategory,"inferCategory"),__name(buildAuthorPattern,"buildAuthorPattern");var fC=new Set(["renovate[bot]","renovate","dependabot[bot]","dependabot","greenkeeper[bot]","snyk-bot"]),yC=[/^update .+ digest to /i,/^update .+ action to /i,/^update .+ to v?\d/i,/^update lock file maintenance/i,/^update dependency .+ to /i,/^chore\(deps\)/i,/^bump .+ from .+ to /i,/^lock file maintenance/i];function isDependencyBot(e,t){const n=e.toLowerCase();return!!fC.has(n)||!(!n.includes("[bot]")||!yC.some(e=>e.test(t)))}function truncate3(e,t){const n=e.replace(/\n/g," ").trim();return n.length<=t?n:`${n.slice(0,t-3)}...`}async function runBounded(e,t,n){const r=[];let o=0;const s=__name(async()=>{for(;o<t.length;){const e=o++;r[e]=await n(t[e])}},"next");return await Promise.all(Array.from({length:Math.min(e,t.length)},()=>s())),r}function compileTasteContext(e){const{signals:t,repoName:n,author:r,commitCount:o}=e,s=r?`Target author: ${r}\n`:"",a=[];if(a.push(`# Dynamic Taste Analysis — Code Change Patterns\n\nRepository: ${n}\n${s}Commits analyzed: ${o}\nSignals extracted: ${t.length}\n\nThis analysis was generated by examining actual code changes (diffs, substitutions, refactoring patterns) rather than static file contents. Every signal below comes from real commits.`),t.length>0){const e=["## Correction Diffs — What Wrong→Right Looks Like"];for(const n of t.slice(0,50)){e.push(`\n**${n.text}**`);for(const t of n.evidence)e.push(`- ${t}`)}a.push(e.join("\n"))}const i=r?` for ${r}`:"";return a.push(`## Instructions for Taste Learning\n\nYou are analyzing code change patterns from a real repository${i}. Based on the correction diffs above, generate deeply personal and opinionated coding taste.\n\n**Critical guidelines:**\n\n1. **Be specific, not generic.** Instead of "Use TypeScript", write "Use branded types for IDs and explicit return types on every function. Prefer \`readonly\` arrays and objects by default."\n\n2. **Extract the WHY from patterns.** If you see verbose names being replaced with concise ones, don't just say "use short names" — say "Prefer concise variable names that derive meaning from context rather than encoding type information."\n\n3. **Look for recurring themes.** If multiple substitutions show the same pattern (e.g., nested if→guard clauses), that's a strong taste signal worth capturing.\n\n4. **Make it actionable.** Every taste entry should be specific enough that another developer could follow it and produce code that looks like it belongs in this repository.\n\n5. **Prioritize quality corrections** — these are the purest taste signals (wrong→right pairs with explicit WHY context from commit messages).\n\n6. **Capture anti-patterns too.** If you see code being removed in refactors, note what the developer avoids: "Never nest deeper than 2 levels — flatten with early returns."\n\n7. **Don't repeat generic tool preferences** like "Use pnpm" or "Use TypeScript" unless the substitutions show something specific about HOW they use those tools.\n\n8. **Prioritize opinionated preferences.** The goal is taste that makes someone's code distinctly theirs — not industry best practices.\n\nWrite the taste entries to the taste.md file using the standard format with confidence scores.`),a.join("\n\n")}async function runLearnPipeline(t){const n=__name(()=>({outputDir:"",tasteDir:"",sourceName:t.source,signalCount:0,contextLength:0}),"abortedResult");if(t.needsAuth){id.addEvent({type:"auth_required",step:"auth",message:"Login to synthesize your taste profile",label:"Signing in"});try{await id.waitForAuth()}catch{return id.emitStepStart({step:"complete",label:"Login skipped",message:"Login skipped",learningCount:0,storage:""}),id.markLearningComplete(),{summary:n()}}}t.isLocalSource||id.emitStepStart({step:"cloning",label:"Cloning repository",message:`Cloning ${t.source}`});const r=await resolveSource({source:t.source,maxCommits:t.maxCommits});if(t.signal.aborted)return{summary:n(),resolved:r};const o="github"===r.type,s=r.repoName,a=await findGitRoot4({dir:r.repoDir});if(!a)throw new Error(`Not a git repository: ${r.repoDir}. Run inside a git repo or pass the path: npx taste learn /path/to/repo`);const i=o?e.resolve(process.cwd(),s):a;o&&id.emitStepStart({step:"collecting",label:"Collecting commits",message:`Cloned ${r.displayName} → ${i}`});const l=t.branch??await detectDefaultBranch({repoDir:a});await F.mkdir(i,{recursive:!0}),id.emitStepStart({step:"collecting",label:"Collecting commits",message:`Fetching up to ${t.maxCommits} commits from ${l}`});const{signals:u,commitCount:d}=await extractAllSignals({repoDir:a,maxCommits:t.maxCommits,maxSignals:t.maxSignals,branch:l,onProgress:__name(e=>{id.emitProgress({step:"extracting",message:e})},"onProgress")});if(t.signal.aborted)return{summary:n(),resolved:r};if(0===u.length)throw new Error("No signals extracted. Check the repository has commit history.");id.emitStepStart({step:"extracting",label:"Extracting taste signals",message:`${u.length} before/after code changes extracted`}),id.emitStepStart({step:"compiling",label:"Compiling taste context",message:`Formatting ${u.length} signals for the learning agent`});const m=compileTasteContext({signals:u,repoName:s,commitCount:d});if(t.signal.aborted)return{summary:n(),resolved:r};id.emitStepStart({step:"learning",label:"Learning taste",message:"Interpreting code change patterns with AI"}),await feedToLearningAgent({compiledContext:m,outputDir:i});const g=getTastePathForDir({projectRoot:i}),h=e.join(g,"taste.md"),f=await countLearnings(h);return id.emitStepStart({step:"complete",label:"Taste learned",message:"Taste learned",learningCount:f,storage:h}),id.markLearningComplete(),{summary:{outputDir:i,tasteDir:g,sourceName:r.displayName,signalCount:u.length,contextLength:m.length},resolved:r}}__name(isDependencyBot,"isDependencyBot"),__name(truncate3,"truncate"),__name(runBounded,"runBounded"),pn(),__name(compileTasteContext,"compileTasteContext"),__name(runLearnPipeline,"runLearnPipeline"),pn(),pn(),pn();var wC=[/MallocStackLogging: can't turn off malloc stack logging because it was not enabled/i];function shouldIgnoreChunk(e){return wC.some(t=>t.test(e))}function chunkToString(e){return"string"==typeof e?e:Buffer.isBuffer(e)?e.toString("utf-8"):""}async function withFilteredStderrNoise(e){const t=process.stderr.write.bind(process.stderr);process.stderr.write=(e,...n)=>{const r=chunkToString(e);return!(!r||!shouldIgnoreChunk(r))||("function"==typeof n[0]?t(e,n[0]):t(e,n[0],n[1]))};try{return await e()}finally{process.stderr.write=t}}function toRepoLearnErrorMessage(e){return e instanceof Error?e.message:String(e)}function isRepoLearnMetricLikeText(e){const t=e.trim().toLowerCase();return/^\d+\s/.test(t)||/^saved\s/.test(t)||/^output\s/.test(t)||/^target\s/.test(t)||/\bcandidates\b/.test(t)||/\bevidence records\b/.test(t)||/\bhistory and review signals\b/.test(t)}function truncateRepoLearnPanelText(e,t=12){return truncateString({text:e,maxChars:Math.min(96,getEffectiveWidth({padding:t}))})}__name(shouldIgnoreChunk,"shouldIgnoreChunk"),__name(chunkToString,"chunkToString"),__name(withFilteredStderrNoise,"withFilteredStderrNoise"),pn(),__name(toRepoLearnErrorMessage,"toRepoLearnErrorMessage"),__name(isRepoLearnMetricLikeText,"isRepoLearnMetricLikeText"),__name(truncateRepoLearnPanelText,"truncateRepoLearnPanelText"),pn(),pn();var SC=[{id:"collecting",label:"Collecting commits from repository"},{id:"extracting",label:"Extracting taste signals from diffs"},{id:"compiling",label:"Compiling taste context"},{id:"learning",label:"Learning taste from change patterns"},{id:"complete",label:"Taste learned"}],EC=[{id:"cloning",label:"Cloning repository"},...SC],bC=[He.bullet,He.squareSmallFilled,He.lozenge,He.star,He.triangleRight,He.triangleUp];function createInitialRepoLearnSteps(e){return(e??SC).map(e=>({...e,status:"pending"}))}__name(createInitialRepoLearnSteps,"createInitialRepoLearnSteps"),pn();var kC={learningCount:0,storage:"",topLearnings:[]};function getStepStatus(e,t){return e<t?"complete":e===t?"active":"pending"}function deriveStepStates(e,t){return e.map((e,n)=>({...e,status:getStepStatus(n,t)}))}function parseSummaryMetric(e){if(e.startsWith("Maintainer: "))return{maintainerLabel:e.replace(/^Maintainer:\s+/,"")};const t=e.match(/^(\d+)\s+maintainer-specific preferences$/);if(t)return{maintainerCount:Number(t[1])};const n=e.match(/^(\d+)\s+repository conventions$/);return n?{repoCount:Number(n[1])}:null}__name(getStepStatus,"getStepStatus"),__name(deriveStepStates,"deriveStepStates"),__name(parseSummaryMetric,"parseSummaryMetric");var CC=__name(e=>e.map(e=>({...e,status:"complete"})),"markAllStepsComplete"),vC=__name(e=>e??kC,"withBase");function useRepoLearnState(e){const t=e??SC,[n,r]=de(()=>createInitialRepoLearnSteps(t)),[o,s]=de(""),[a,i]=de([]),[l,u]=de(null),[d,m]=de(!1),[g,h]=de(!1),[f,y]=de(null),[w,S]=de(0),E=me(null),[k,C]=de(null),v=he(()=>{E.current=Date.now()},[]);return pe(()=>{const e=__name(()=>{r(createInitialRepoLearnSteps(t)),s(""),i([]),u(null),h(!1),y(null),S(0),E.current=null,C(null),m(!1)},"handleReset"),n=__name(e=>{if("error"===e.type)return y(e.message),h(!0),r(CC),void s("");if("auth_required"!==e.type){if("step_start"===e.type&&e.step){const n=t.findIndex(t=>t.id===e.step);return n>=0&&r(deriveStepStates(t,n)),s(e.message||e.label||""),void("complete"===e.step&&u(t=>{const n=vC(t);return{...n,learningCount:e.learningCount??n.learningCount,storage:e.storage??n.storage}}))}"progress"!==e.type||"complete"!==e.step?"progress"!==e.type?"insight"===e.type&&(isRepoLearnMetricLikeText(e.message)||("complete"!==e.step?(S(e=>e+1),i(t=>[...t,e.message].slice(-4))):u(t=>{const n=vC(t);return{...n,topLearnings:[...n.topLearnings,e.message].slice(0,3)}}))):s(e.message):u(t=>{const n=vC(t),r=parseSummaryMetric(e.message);return r?{...n,...r}:n})}else m(!0)},"handleEvent"),o=__name(()=>{h(e=>e||(r(CC),!0)),s(""),E.current&&C(Math.round((Date.now()-E.current)/1e3))},"handleComplete");return id.on("reset",e),id.on("new-event",n),id.on("learning-complete",o),()=>{id.off("reset",e),id.off("new-event",n),id.off("learning-complete",o)}},[t]),{steps:n,currentMessage:o,insights:a,insightCount:w,summary:l,done:g,error:f,showLogin:d,setShowLogin:m,elapsedSeconds:k,markStarted:v}}__name(useRepoLearnState,"useRepoLearnState"),pn(),pn();var TC=__name(({isComplete:e,hasError:t})=>ce.createElement(ye,{flexDirection:"column",marginTop:1,marginBottom:0},ce.createElement(ik,null),ce.createElement(ye,{marginTop:0},ce.createElement(we,{color:Xr.DIM},ck),ce.createElement(ye,{marginLeft:2},t?ce.createElement(we,{color:Xr.DIM},"learning interrupted"):e?ce.createElement(we,{color:eo.TEXT},"learned your coding taste"):ce.createElement(uk,null)))),"RepoLearnTastePill");pn();var xC=__name(({status:e})=>"active"===e?ce.createElement(ye,null,ce.createElement(we,{color:Xr.YELLOW},ce.createElement(ut,{type:"dots"})),ce.createElement(we,null," ")):"complete"===e?ce.createElement(we,{color:oo.BG},He.square," "):ce.createElement(we,{color:Xr.DIM},He.circle," "),"StepStatusIndicator"),PC=__name(({steps:e,currentMessage:t})=>ce.createElement(ye,{flexDirection:"column",marginTop:1},e.map(e=>{const n="active"===e.status;return ce.createElement(ye,{key:e.id,flexDirection:"column",marginBottom:0,marginLeft:3},ce.createElement(ye,null,ce.createElement(ye,{marginRight:1},ce.createElement(xC,{status:e.status})),ce.createElement(we,{bold:n,color:"complete"===e.status?Xr.WHITE:n?Xr.YELLOW:Xr.DIM},e.label)),n&&t?ce.createElement(ye,{marginLeft:3},ce.createElement(we,{color:Xr.DIM},truncateRepoLearnPanelText(t))):null)})),"RepoLearnStepList");pn();var AC=__name(({insights:e,insightCount:t})=>0===e.length?null:ce.createElement(ye,{flexDirection:"column",marginTop:1,marginLeft:4},ce.createElement(we,{color:Xr.CYAN},t>0?`Recent signals · ${t} ${1===t?"preference":"preferences"} learned`:"Recent signals"),e.map((e,t)=>ce.createElement(we,{key:`${t}-${e}`,color:Xr.DIM},bC[t%bC.length]," ",truncateRepoLearnPanelText(e,14)))),"RepoLearnRollingInsights");pn();var IC=__name(({message:e})=>ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:Xr.RED,paddingX:2,paddingY:1,marginTop:1},ce.createElement(we,{color:Xr.RED,bold:!0},"Oops, something went wrong:"),ce.createElement(ye,{marginTop:1},ce.createElement(we,null,e))),"RepoLearnErrorPanel");pn();var MC=__name(({summary:e,elapsedSeconds:n})=>{if(!e)return null;const r=t.relative(process.cwd(),e.storage),o=e.learningCount>0;return ce.createElement(ye,{flexDirection:"column",marginLeft:3},ce.createElement(ye,{marginBottom:1,flexDirection:"row"},ce.createElement(we,{color:Xr.DIM},ck),ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:eo.TEXT},o?`Learned ${e.learningCount} ${1===e.learningCount?"preference":"preferences"}`:"Taste profile initialized",n?` in ${n} ${1===n?"second":"seconds"}`:""))),ce.createElement(ye,{flexDirection:"column",marginLeft:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," Taste stored in"," "),ce.createElement(Fo,{url:`file://${e.storage}`,text:r||".commandcode/taste/taste.md",color:Xr.CYAN})),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," Share your coding taste:"," ",ce.createElement(we,{color:Xr.CYAN},"npx taste push --all")))),ce.createElement(ye,{marginTop:1,marginLeft:1},ce.createElement(we,{color:Xr.DIM},o?"Command Code automatically uses & updates taste files as you code.":"Command Code will learn your preferences as you code.")))},"RepoLearnCompletionSummary");pn();var RC=__name(({done:e,error:t})=>t?ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0},"Press ESC to exit")):e?ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0},"Press ENTER to continue")):ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"ESC to cancel")),"RepoLearnFooter");pn();var _C=__name(({text:e,repoName:t})=>{const n=useTerminalWidth(),r=ge(()=>GS(n),[n]);return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(QS,null,r.trimEnd())),e?ce.createElement(we,{color:Xr.WHITE},e):ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.WHITE},"Learning your coding taste from"," ",ce.createElement(we,{bold:!0,color:Xr.CYAN},t??"repository")),ce.createElement(we,{color:Xr.DIM},"This may take a few minutes depending on repository size")))},"RepoLearnHeader");function StatusPanel({error:e,done:t,summary:n,elapsedSeconds:r,insights:o,insightCount:s}){return e?ce.createElement(IC,{message:e}):t?ce.createElement(MC,{summary:n,elapsedSeconds:r}):ce.createElement(AC,{insights:o,insightCount:s})}function RepoLearnProgressApp({runTask:e,onExit:t,stepOrder:n,headerText:r,repoName:o}){const s=useRepoLearnState(n),a=me(!1);return pe(()=>{a.current||(a.current=!0,s.markStarted(),e().catch(()=>{}))},[e,s.markStarted]),Ee((e,n)=>{if(s.showLogin)return;const r=n.escape||""===e,o=n.return||"\n"===e||"\r"===e;r?t({published:!1,cancelled:!0}):(s.done||s.error)&&o&&t({published:!1,cancelled:!!s.error})}),s.showLogin?ce.createElement(ye,{flexDirection:"column"},ce.createElement(_C,{text:r,repoName:o}),ce.createElement(vb,{onComplete:(e,t)=>{s.setShowLogin(!1),e?id.resolveAuth():id.rejectAuth(t)},onCancel:()=>{s.setShowLogin(!1),id.rejectAuth("Login cancelled"),t({published:!1,cancelled:!0})}})):ce.createElement(ye,{flexDirection:"column"},ce.createElement(_C,{text:r,repoName:o}),ce.createElement(TC,{isComplete:s.done&&!s.error,hasError:Boolean(s.error)}),ce.createElement(PC,{steps:s.steps,currentMessage:s.currentMessage}),ce.createElement(StatusPanel,{error:s.error,done:s.done,summary:s.summary,elapsedSeconds:s.elapsedSeconds,insights:s.insights,insightCount:s.insightCount}),ce.createElement(RC,{done:s.done,error:s.error}))}async function runRepoLearnProgress(e){return withFilteredStderrNoise(()=>renderProgressUI(e))}function renderProgressUI(e){return new Promise((t,n)=>{id.reset();const r=new AbortController;let o,s,a=!1,i=!1;const l=__name(async()=>{try{o=await e.runTask(r.signal)}catch(e){r.signal.aborted||(s=e,id.addEvent({type:"error",message:toRepoLearnErrorMessage(e)}),id.markLearningComplete())}},"handleRunTask"),u=__name(({published:e,cancelled:l})=>{i||(i=!0,a=e,r.abort(),d.unmount(),id.reset(),s?n(s):t({result:o,published:a,cancelled:l}))},"handleExit"),d=ke(ce.createElement(RepoLearnProgressApp,{stepOrder:e.stepOrder,headerText:e.headerText,repoName:e.repoName,runTask:l,onExit:u}));d.waitUntilExit().catch(e=>{id.reset(),n(e)})})}__name(StatusPanel,"StatusPanel"),__name(RepoLearnProgressApp,"RepoLearnProgressApp"),__name(runRepoLearnProgress,"runRepoLearnProgress"),__name(renderProgressUI,"renderProgressUI"),wn();var DC=__name(e=>t=>{const n=parseInt(t,10);if(isNaN(n)||n<1)throw new Error(`${e} must be a positive integer`);return n},"parsePositiveInt");function createLearnCommand(){return new Ue("learn").description("Learn coding taste from repository change history").argument("[source]","Local path, GitHub URL, or owner/repo (defaults to current directory)").option("--max-commits <number>","Maximum commits to analyze",DC("--max-commits"),200).addOption(new Be("--max-signals <number>","Maximum diff signals to extract").default(50).argParser(DC("--max-signals")).hideHelp()).option("--branch <name>","Branch to analyze (defaults to main/master)").action(async(e,t)=>{try{await learnTaste({source:e??".",maxCommits:t.maxCommits??200,maxSignals:t.maxSignals??50,branch:t.branch})}catch(e){const t=e instanceof Error?e.message:String(e);console.error(`Error: ${t}`),process.exit(1)}})}async function learnTaste(t){const n=await F.stat(e.resolve(t.source)).then(e=>e.isDirectory()).catch(()=>!1),r=isTTY(),o=await resolveDisplayName(t.source),s=!await getAuthKey();if(s&&!r)return console.log(""),console.log(" Login required to learn taste."),console.log(""),console.log(` Run: ${getBinaryCommand()} login`),console.log(` Then: npx taste learn ${t.source}`),void console.log("");let a;const i=__name(()=>{a?.().finally(()=>process.exit(130))},"sigintHandler");process.once("SIGINT",i);let l=!1;try{const e=__name(async e=>{const{summary:r,resolved:o}=await runLearnPipeline({...t,isLocalSource:n,needsAuth:s,signal:e});return a=o?.cleanup,r},"runTask");if(r){const t=n?void 0:[...EC];({cancelled:l}=await runRepoLearnProgress({runTask:e,repoName:o,stepOrder:t}))}else logLearnSummary({summary:await e((new AbortController).signal)})}finally{process.off("SIGINT",i),a&&await a()}r&&!l||process.exit(0),xy(),await qk({skipOnboarding:!0}),await shutdownAndExit(0)}function getTastePath(t){const{target:n}=t;if("local-project"===n)return e.join(process.cwd(),".commandcode","taste");if("local-global"===n)return e.join(_.homedir(),".commandcode","taste");throw new Error(`Remote storage not yet implemented: ${n}`)}function getRootTasteFile(t){const{target:n}=t;return e.join(getTastePath({target:n}),"taste.md")}function getCategoryPath(t){const{target:n,category:r}=t;return e.join(getTastePath({target:n}),r)}function getCategoryTasteFile(t){const{target:n,category:r}=t;return e.join(getCategoryPath({target:n,category:r}),"taste.md")}__name(createLearnCommand,"createLearnCommand"),__name(learnTaste,"learnTaste"),pn(),wn(),pn(),pn(),wn(),__name(getTastePath,"getTastePath"),__name(getRootTasteFile,"getRootTasteFile"),__name(getCategoryPath,"getCategoryPath"),__name(getCategoryTasteFile,"getCategoryTasteFile"),pn(),pn();var NC=/confidence:/i;function findLookaheadEnd(e,t){const n=e.slice(t),r=n.findIndex(e=>{const t=e.trim();return t.startsWith("#")||t.startsWith("-")||NC.test(t)});if(-1===r)return{endIdx:e.length,inclusive:!1};const o=n[r].trim();return{endIdx:t+r,inclusive:NC.test(o)&&!o.startsWith("#")&&!o.startsWith("-")}}function joinMultiLineLearning(e,t,n){const{endIdx:r,inclusive:o}=findLookaheadEnd(e,t),s=o?r+1:r;return{combined:[n,...e.slice(t,s).map(e=>e.trim()).filter(e=>e.length>0)].join(" "),nextIdx:s}}function processRawLine(e,t){const n=e[t],r=t+1,o=n.trim();if(!o.startsWith("-"))return{entry:{text:n,originalLineNum:r},nextIdx:t+1};if(NC.test(o))return{entry:{text:n,originalLineNum:r},nextIdx:t+1};const{combined:s,nextIdx:a}=joinMultiLineLearning(e,t+1,n);return{entry:{text:s,originalLineNum:r},nextIdx:a}}function preprocessLines(e){const t=[];let n=0;for(;n<e.length;){const{entry:r,nextIdx:o}=processRawLine(e,n);t.push(r),n=o}return t}function validateLearningLine(e){const{line:t,lineNum:n}=e,r=[],o=t.substring(1).trim();if(!NC.test(o))return r.push({line:n,severity:"error",message:'Learning is missing "Confidence:" field',suggestion:'Format: "- Learning text. Confidence: 0.95" (value between 0.0 and 1.0)'}),r;const s=Array.from(o.matchAll(/confidence:\s*(\S+)/gi)),a=s.length>0?s[s.length-1]:null;if(!a)return r.push({line:n,severity:"error",message:"Confidence field is present but has no value",suggestion:'Add a number after "Confidence:" (e.g., Confidence: 0.95)'}),r;const i=a[1],l=parseFloat(i);if(isNaN(l))return r.push({line:n,severity:"error",message:`Confidence value "${i}" is not a valid number`,suggestion:"Use a decimal number between 0.0 and 1.0 (e.g., 0.95)"}),r;(l<0||l>1)&&r.push({line:n,severity:"error",message:`Confidence value ${l} is out of range`,suggestion:"Confidence must be between 0.0 and 1.0"}),l>=0&&l<=1&&0===l&&r.push({line:n,severity:"warning",message:"Confidence is 0.0 - this learning may not be useful",suggestion:"Consider removing learnings with 0 confidence"});const u=void 0!==a.index?o.substring(0,a.index).trim():o.trim();return u&&0!==u.length?(u.length<3&&r.push({line:n,severity:"warning",message:"Learning text is very short",suggestion:"Provide more descriptive text for clarity"}),r):(r.push({line:n,severity:"error",message:'Learning has no text before "Confidence:"',suggestion:'Add descriptive text (e.g., "Use pnpm for package management")'}),r)}function hasReferenceAfterCategory(e){const{lines:t,categoryLineIndex:n}=e,r=t.slice(n+1,n+4),o=r.findIndex(e=>e.trim().startsWith("# "));return(-1===o?r:r.slice(0,o)).some(e=>e.includes("See [")&&e.includes("taste.md"))}function buildResult(e){const{issues:t,filePath:n}=e,r=t.filter(e=>"error"===e.severity),o=t.filter(e=>"warning"===e.severity),s=0===r.length;if(0===t.length)return{valid:s,issues:[...t],summary:`${He.tick} ${n} is valid`};const a=[];r.length>0&&a.push(`${r.length} error${r.length>1?"s":""}`),o.length>0&&a.push(`${o.length} warning${o.length>1?"s":""}`);const i=r.length>0?He.cross:He.warning;return{valid:s,issues:[...t],summary:`${i} ${n} has ${a.join(", ")}`}}function formatSingleIssue(e,t){const n=[`${e.line?ne.dim(` Line ${e.line}: `):" "}${t(e.message)}`];return e.suggestion&&n.push(ne.dim(` → ${e.suggestion}`)),n}function formatIssueGroup(e,t,n){return 0===e.length?[]:[n,...e.flatMap(e=>formatSingleIssue(e,t)),""]}function formatValidationIssues(e){const{result:t,verbose:n=!0}=e;if(0===t.issues.length){const e=t.summary.charAt(0),n=t.summary.substring(2);return`${ne.green(e)} ${ne.dim(n)}`}if(!n)return t.summary;const r=t.issues.filter(e=>"error"===e.severity),o=t.issues.filter(e=>"warning"===e.severity);return[r.length>0?ne.red(t.summary):ne.yellow(t.summary),"",...formatIssueGroup(r,ne.red,ne.bold(ne.red("Errors:"))),...formatIssueGroup(o,ne.yellow,ne.bold(ne.yellow("Warnings:")))].join("\n").trim()}__name(findLookaheadEnd,"findLookaheadEnd"),__name(joinMultiLineLearning,"joinMultiLineLearning"),__name(processRawLine,"processRawLine"),__name(preprocessLines,"preprocessLines"),__name(validateLearningLine,"validateLearningLine"),__name(hasReferenceAfterCategory,"hasReferenceAfterCategory"),__name(buildResult,"buildResult"),pn(),__name(formatSingleIssue,"formatSingleIssue"),__name(formatIssueGroup,"formatIssueGroup"),__name(formatValidationIssues,"formatValidationIssues");var $C=new Set(["# Taste (Continuously Learned by [CommandCode][cmd])","# Taste (Continuously Learned by CommandCode.ai)","# Taste (Continuously Learned by CommandCode)"]);function warnIfEmptyCategory(e,t){!e.currentCategory||e.learningsInCurrentCategory>0||hasReferenceAfterCategory({lines:t,categoryLineIndex:e.categoryLineNumber-1})||e.issues.push({line:e.categoryLineNumber,severity:"warning",message:`Category '${e.currentCategory}' has no learnings`,suggestion:"Add at least one learning or remove this category"})}function processHeading(e){const{line:t,lineNum:n,state:r,rawLines:o}=e;$C.has(t.trim())||(r.hasAnyCategory=!0,warnIfEmptyCategory(r,o),r.currentCategory=t.trim().substring(2).trim(),r.categoryLineNumber=n,r.learningsInCurrentCategory=0)}function processLearning(e){const{line:t,lineNum:n,state:r}=e;r.currentCategory?(r.learningsInCurrentCategory++,r.issues.push(...validateLearningLine({line:t.trim(),lineNum:n}))):r.issues.push({line:n,severity:"error",message:"Learning found outside of any category",suggestion:'Add a category header (e.g., "# cli") before this learning'})}__name(warnIfEmptyCategory,"warnIfEmptyCategory"),__name(processHeading,"processHeading"),__name(processLearning,"processLearning");var LC=/^see \[[^\]]+\/taste\.md\]\([^\)]+\/taste\.md\)$/i,OC=/^\[cmd\]: https:\/\/commandcode\.ai\/$/i;function processLine(e){const{line:t,lineNum:n,state:r,rawLines:o}=e,s=t.trim();s&&(s.startsWith("# ")?processHeading({line:t,lineNum:n,state:r,rawLines:o}):s.startsWith("-")?processLearning({line:t,lineNum:n,state:r}):LC.test(s)||OC.test(s)||r.issues.push({line:n,severity:"error",message:"Invalid content - must be a category header (# name) or learning (- text)",suggestion:"Remove this line or format it as a category (# name) or learning (- text. Confidence: 0.XX)"}))}function checkFinalCategory(e){const{state:t,rawLines:n}=e;!t.currentCategory||t.learningsInCurrentCategory>0||!t.categoryLineNumber||hasReferenceAfterCategory({lines:n,categoryLineIndex:t.categoryLineNumber-1})||t.issues.push({line:t.categoryLineNumber,severity:"warning",message:`Category '${t.currentCategory}' has no learnings`,suggestion:"Add at least one learning or remove this category"})}function validateTasteFile(e){const{content:t,filePath:n}=e,r=[];if(!t.trim())return r.push({severity:"error",message:"File is empty",suggestion:"Add at least one category with learnings"}),buildResult({issues:r,filePath:n});const o=t.split("\n"),s=preprocessLines(o),a={currentCategory:null,categoryLineNumber:null,learningsInCurrentCategory:0,hasAnyCategory:!1,issues:r};for(const{text:e,originalLineNum:t}of s)processLine({line:e,lineNum:t,state:a,rawLines:o});return checkFinalCategory({state:a,rawLines:o}),buildResult({issues:r,filePath:n})}__name(processLine,"processLine"),__name(checkFinalCategory,"checkFinalCategory"),__name(validateTasteFile,"validateTasteFile");var FC=__name(e=>"local-global"===e?"global":"project","locationLabel"),UC=__name(({file:e,error:t})=>({success:!1,filesLinted:[],errors:[{file:e,error:t}],totalErrors:0,totalWarnings:0}),"failResult");function resolvePackageFile(e,t){const n=getCategoryTasteFile({target:t,category:e});return k(n)?{result:{path:n,displayName:`${e}/taste.md`}}:{error:{file:e,error:`Taste package '${e}' not found in ${FC(t)}`}}}function collectSpecificFiles(e){const{packages:t,target:n}=e,r=t.map(e=>resolvePackageFile(e,n));return{files:r.filter(e=>"result"in e).map(e=>e.result),errors:r.filter(e=>"error"in e).map(e=>e.error)}}async function collectAllFiles(e){const{tastePath:t,target:n}=e,r=[],o=getRootTasteFile({target:n});k(o)&&r.push({path:o,displayName:"taste.md"});const s=(await F.readdir(t,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>({entry:e,categoryFile:getCategoryTasteFile({target:n,category:e.name})})).filter(({categoryFile:e})=>k(e)).map(({entry:e,categoryFile:t})=>({path:t,displayName:`${e.name}/taste.md`}));return r.push(...s),r}async function lintFile(e){let t=await F.readFile(e.path,"utf-8");const n=migrateHeader({content:t});n!==t&&(await F.writeFile(e.path,n,"utf-8"),t=n);const r=validateTasteFile({content:t,filePath:e.displayName}),o=r.issues.filter(e=>"error"===e.severity).length,s=r.issues.filter(e=>"warning"===e.severity).length,a=formatValidationIssues({result:r});return{file:e.displayName,valid:r.valid,errors:o,warnings:s,formatted:a}}async function lintSpecificPackages(e){const{packages:t,target:n}=e,{files:r,errors:o}=collectSpecificFiles({packages:t,target:n});if(0===r.length&&o.length>0)return{success:!1,filesLinted:[],errors:o,totalErrors:0,totalWarnings:0};if(0===r.length)return UC({file:"all",error:`No taste files found in ${FC(n)}`});const s=await Promise.all(r.map(lintFile)),a=s.reduce((e,t)=>e+t.errors,0),i=s.reduce((e,t)=>e+t.warnings,0);return{success:s.every(e=>e.valid)&&0===o.length,filesLinted:s,errors:o,totalErrors:a,totalWarnings:i}}async function lintAllFiles(e){const{tastePath:t,target:n}=e,r=await collectAllFiles({tastePath:t,target:n});if(0===r.length)return UC({file:"all",error:`No taste files found in ${FC(n)}`});const o=await Promise.all(r.map(lintFile)),s=o.reduce((e,t)=>e+t.errors,0),a=o.reduce((e,t)=>e+t.warnings,0);return{success:o.every(e=>e.valid),filesLinted:o,errors:[],totalErrors:s,totalWarnings:a}}async function lint(e){const{packages:t,target:n}=e,r=getTastePath({target:n});return k(r)?t.length>0?lintSpecificPackages({packages:t,target:n}):lintAllFiles({tastePath:r,target:n}):UC({file:"all",error:`No taste directory found in ${FC(n)}`})}function resolveConflictStrategy(e){const t=[e.skip&&"skip",e.merge&&"merge",e.overwrite&&"overwrite"].filter(Boolean);return t.length>1&&exitWithError(`Cannot combine --${t[0]} and --${t[1]}. Choose one conflict strategy.`),t[0]}__name(resolvePackageFile,"resolvePackageFile"),__name(collectSpecificFiles,"collectSpecificFiles"),__name(collectAllFiles,"collectAllFiles"),__name(lintFile,"lintFile"),__name(lintSpecificPackages,"lintSpecificPackages"),__name(lintAllFiles,"lintAllFiles"),__name(lint,"lint"),pn(),__name(resolveConflictStrategy,"resolveConflictStrategy");var BC=ne.bgGreen.black.bold(" TASTE ");function shortenPath(e){const t=process.env.HOME??process.env.USERPROFILE??"";return t&&e.startsWith(t)?`~${e.slice(t.length)}`:e}function exitWithError(e){console.error(`${ne.red("Error:")} ${e.replace(/^Error:\s*/i,"")}`),process.exit(1)}function formatUsageLine(e){const t=e.match(/^(\s*(?:Usage:|or:)?\s*)(cmd)(\s+.+?)(\s+\(.*\))?$/);return t?`${ne.dim(t[1])}${ne.green(t[2])}${ne.white(t[3]??"")}${t[4]?ne.dim(t[4]):""}`:ne.dim(e)}function exitWithUsage({message:e,usage:t}){console.error(`${ne.red("Error:")} ${e.replace(/^Error:\s*/i,"")}`);for(const e of t)console.error(formatUsageLine(e));process.exit(1)}function resolveRemoteDefault(e){return e.global||e.remote?e:{...e,remote:!0}}__name(shortenPath,"shortenPath"),__name(exitWithError,"exitWithError"),__name(formatUsageLine,"formatUsageLine"),__name(exitWithUsage,"exitWithUsage"),__name(resolveRemoteDefault,"resolveRemoteDefault");var jC=__name((e,t)=>t,"linkFallback");function getPackageLink({owner:e,packageName:t}){return Et(`commandcode.ai/${e}/${t}`,`https://commandcode.ai/${e}/${t}`,{fallback:jC})}function getProfileLink(e){return Et(`commandcode.ai/${e}`,`https://commandcode.ai/${e}`,{fallback:jC})}function wrapLine(e,t=0){const n=(process.stdout.columns||80)-t;return Pt(e,n,{trim:!1})}function formatMergeParts(e){const t=[];return e.added>0&&t.push(`${e.added} ${1===e.added?"learning":"learnings"} added`),e.updated>0&&t.push(`${e.updated} ${1===e.updated?"learning":"learnings"} updated`),e.unchanged>0&&t.push(`${e.unchanged} ${1===e.unchanged?"learning":"learnings"} unchanged`),t}function hasMergeConflictRisk(e){return(e.added>0||e.updated>0)&&e.unchanged>0}function hasMergeConflictRiskInRecord(e){return Object.values(e).some(hasMergeConflictRisk)}function logMergeReviewTip(){console.log(ne.yellow("\nTip: Review merged learnings to ensure no conflicting rules."))}function parseOwnerPackage(e){if(!e.includes("/"))return;const[t,n]=e.split("/");return t&&n?{owner:t,packageName:n}:void 0}function handleResultErrors(e){for(const t of e){const e=t.error.replace(/^Taste package(?: '.*?')? /,`Taste package '${t.pkg}' `);console.error(`${ne.red("Error:")} ${e}`)}process.exit(1)}function getTimeAgo(e){const t=Date.now()-e.getTime(),n=Math.floor(t/6e4),r=Math.floor(t/36e5),o=Math.floor(t/864e5);return n<1?"just now":n<60?`${n} minute${n>1?"s":""} ago`:r<24?`${r} hour${r>1?"s":""} ago`:`${o} day${o>1?"s":""} ago`}async function flushAndExit(e){await Promise.race([shutdownTelemetry(),new Promise(e=>setTimeout(e,500))]).catch(()=>{}),process.exit(e)}function withErrorHandler(e){return async(...t)=>{try{await e(...t),await flushAndExit(0)}catch(e){const t=e instanceof Error?e.message:String(e);console.error(ne.red(`Error: ${t}`)),await flushAndExit(1)}}}function createLintCommand(){return new Ue("lint").argument("[package]","Taste package name").option("-g, --global","Validate taste packages from global storage (~/.commandcode)").option("--all","Validate all taste packages").description(`Validate taste package format ${ne.dim("(structure, style, etc.)")}`).action(withErrorHandler(async(e,t)=>runLint({packageName:e,options:t})))}function validateLintOptions({packageName:e,options:t}){e||t.all||exitWithUsage({message:"Specify a taste package name or use --all to validate everything",usage:[`${getBinaryCommand()} taste lint <package> validate a taste package`,`${getBinaryCommand()} taste lint --all validate all taste packages`]}),e&&t.all&&exitWithError("Use either a package name or --all, not both")}function logLintResults(e){for(const t of e.filesLinted)console.log(t.formatted);e.filesLinted.length>1&&logLintSummary(e),e.success||process.exit(1)}function logLintSummary({filesLinted:e,totalErrors:t,totalWarnings:n}){if(console.log(""),0===t&&0===n)return void console.log(`${ne.green(He.tick)} All ${ne.green(e.length)} taste files are valid`);const r=[];t>0&&r.push(ne.red(`${t} error${t>1?"s":""}`)),n>0&&r.push(ne.yellow(`${n} warning${n>1?"s":""}`)),console.log(`Summary: ${r.join(", ")} across ${e.length} files`)}async function runLint({packageName:e,options:t}){console.log(""),validateLintOptions({packageName:e,options:t});const n=await lint({packages:e?[e]:[],target:t.global?"local-global":"local-project"});if(n.errors.length>0){for(const e of n.errors)console.error(ne.red(`Error: ${e.error}`));process.exit(1)}logLintResults(n)}function parseSection(e){const{section:t,sourcePath:n}=e,r=t.split("\n"),o=r[0].trim(),s=r.map(e=>parseLearning({line:e})).filter(e=>null!==e);return 0===s.length?null:{category:normalizeCategory({category:o}),learnings:s,sourcePath:n}}function parsePackages(e){const{content:t,sourcePath:n}=e;return t.split(/^# /gm).filter(e=>e.trim()).filter(e=>!e.includes("See [")).map(e=>parseSection({section:e,sourcePath:n})).filter(e=>null!==e)}function parseLearning(e){const{line:t}=e,n=t.match(/^-?\s*(.+?)[\.:,]?\s*confidence:\s*(\d*\.?\d+)/i);if(!n)return null;const r=parseFloat(n[2]);return isNaN(r)||r<0||r>1?null:{text:n[1].trim(),confidence:r}}function normalizeCategory(e){const{category:t}=e;return t.toLowerCase().replace(/\s+/g,"-")}function denormalizeCategory(e){const{slug:t}=e;return t.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function formatPackage(e){const{pkg:t}=e;let n=`# ${denormalizeCategory({slug:t.category})}\n`;for(const e of t.learnings)n+=`- ${e.text}. Confidence: ${e.confidence.toFixed(2)}\n`;return n}async function readAndMigrateFile(e){const{filePath:t}=e,n=await F.readFile(t,"utf-8"),r=migrateHeader({content:n});return r===n?n:(await F.writeFile(t,r,"utf-8"),r)}function trimTrailingBlanks(e){const{lines:t,until:n}=e;let r=e.from;for(;r>n&&""===t[r].trim();)r--;return r}function findCategoryRange(e){const{lines:t,pattern:n}=e,r=t.findIndex(e=>n.test(e));if(-1===r)return null;const o=t.findIndex((e,t)=>t>r&&e.startsWith("# "));if(-1===o)return{start:r,end:t.length-1};const s=trimTrailingBlanks({lines:t,from:o-1,until:r});return{start:r,end:s}}function ensureHeader(e){if(!e)return ud+"\n\n";const t=e.trim();return t.startsWith(ld)||t.startsWith(dd)||t.startsWith(md)?e:ud+"\n\n"+e}function ensureTrailingNewlines(e){return e?e.endsWith("\n\n")?e:e.endsWith("\n")?e+"\n":e+"\n\n":e}__name(getPackageLink,"getPackageLink"),__name(getProfileLink,"getProfileLink"),__name(wrapLine,"wrapLine"),__name(formatMergeParts,"formatMergeParts"),__name(hasMergeConflictRisk,"hasMergeConflictRisk"),__name(hasMergeConflictRiskInRecord,"hasMergeConflictRiskInRecord"),__name(logMergeReviewTip,"logMergeReviewTip"),__name(parseOwnerPackage,"parseOwnerPackage"),__name(handleResultErrors,"handleResultErrors"),__name(getTimeAgo,"getTimeAgo"),__name(flushAndExit,"flushAndExit"),__name(withErrorHandler,"withErrorHandler"),__name(createLintCommand,"createLintCommand"),__name(validateLintOptions,"validateLintOptions"),__name(logLintResults,"logLintResults"),__name(logLintSummary,"logLintSummary"),__name(runLint,"runLint"),pn(),pn(),pn(),pn(),__name(parseSection,"parseSection"),__name(parsePackages,"parsePackages"),__name(parseLearning,"parseLearning"),__name(normalizeCategory,"normalizeCategory"),__name(denormalizeCategory,"denormalizeCategory"),pn(),__name(formatPackage,"formatPackage"),pn(),__name(readAndMigrateFile,"readAndMigrateFile"),__name(trimTrailingBlanks,"trimTrailingBlanks"),__name(findCategoryRange,"findCategoryRange"),__name(ensureHeader,"ensureHeader"),__name(ensureTrailingNewlines,"ensureTrailingNewlines");var HC="local-global";async function loadCategoryPackages(e){if(!e.isDirectory())return[];const t=getCategoryTasteFile({target:HC,category:e.name});return k(t)?parsePackages({content:await readAndMigrateFile({filePath:t}),sourcePath:t}).map(t=>({...t,category:e.name})):[]}async function getPackageInfo(e){try{const t=await F.stat(e.sourcePath);return{category:e.category,learningCount:e.learnings.length,lastUpdated:t.mtime,filePath:e.sourcePath}}catch{return{category:e.category,learningCount:e.learnings.length,lastUpdated:new Date,filePath:e.sourcePath}}}async function getAllPackages(){const e=getTastePath({target:HC});if(!k(e))return[];const t=await F.readdir(e,{withFileTypes:!0});return(await Promise.all(t.map(loadCategoryPackages))).flat()}async function getPackage(e){const{category:t}=e,n=getCategoryTasteFile({target:HC,category:t});return k(n)&&parsePackages({content:await readAndMigrateFile({filePath:n}),sourcePath:n})[0]||null}async function writePackage(t){const{pkg:n}=t,r=getTastePath({target:HC});await F.mkdir(r,{recursive:!0});const o=getCategoryTasteFile({target:HC,category:n.category}),s=e.dirname(o);await F.mkdir(s,{recursive:!0});const a=formatPackage({pkg:n});await F.writeFile(o,a,"utf-8")}async function listPackages(){const e=await getAllPackages();return await Promise.all(e.map(getPackageInfo))}__name(loadCategoryPackages,"loadCategoryPackages"),__name(getPackageInfo,"getPackageInfo"),__name(getAllPackages,"getAllPackages"),__name(getPackage,"getPackage"),__name(writePackage,"writePackage"),__name(listPackages,"listPackages"),pn(),pn();var WC="local-project";async function removeCategoryFromRoot(e){const{category:t,rootFile:n}=e;if(!k(n))return null;const r=migrateHeader({content:await F.readFile(n,"utf-8")}).split("\n"),o=findCategoryRange({lines:r,pattern:new RegExp(`^# ${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}$`,"i")});if(!o)return null;const s=r.slice(0,o.start),a=o.end<r.length-1?r.slice(o.end+1):[],i={before:s.join("\n").trim(),after:a.join("\n").trim()},l=[...s,...a].join("\n").trim();return""===l&&await F.rm(n,{force:!0}),""!==l&&await F.writeFile(n,l+"\n","utf-8"),i}async function removePackage(t){const{category:n}=t,r=getRootTasteFile({target:WC}),o=await removeCategoryFromRoot({category:n,rootFile:r}),s=getCategoryTasteFile({target:WC,category:n}),a=e.dirname(s);return k(a)&&await F.rm(a,{recursive:!0,force:!0}),o}async function writeToRoot(e){const{pkg:t,rootFile:n,categoryPosition:r}=e,o=formatPackage({pkg:t});if(r){let e=ensureHeader(migrateHeader({content:r.before}));e=ensureTrailingNewlines(e);const t=r.after?"\n\n"+r.after:"";return e+=o.trim()+t,void await F.writeFile(n,e.trim()+"\n","utf-8")}let s="";k(n)&&(s=await F.readFile(n,"utf-8"),s=migrateHeader({content:s})),s=ensureHeader(s),s=ensureTrailingNewlines(s),s+=o,await F.writeFile(n,s.trim()+"\n","utf-8")}async function writeToSubdirectory(t){const{pkg:n,rootFile:r,categoryPosition:o}=t,s=getCategoryTasteFile({target:WC,category:n.category}),a=e.dirname(s);await F.mkdir(a,{recursive:!0});const i=formatPackage({pkg:n});await F.writeFile(s,i,"utf-8");const l=`# ${n.category}\nSee [${n.category}/taste.md](${n.category}/taste.md)\n`;if(o){let e=ensureHeader(migrateHeader({content:o.before}));e=ensureTrailingNewlines(e);const t=o.after?"\n\n"+o.after:"";return e+=l.trim()+t,void await F.writeFile(r,e.trim()+"\n","utf-8")}let u="";k(r)&&(u=await F.readFile(r,"utf-8"),u=migrateHeader({content:u})),u=ensureHeader(u),u=ensureTrailingNewlines(u),u+=l,await F.writeFile(r,u.trim()+"\n","utf-8")}__name(removeCategoryFromRoot,"removeCategoryFromRoot"),__name(removePackage,"removePackage"),__name(writeToRoot,"writeToRoot"),__name(writeToSubdirectory,"writeToSubdirectory");var GC="local-project";async function loadCategoryPackages2(e){if(!e.isDirectory())return[];const t=getCategoryTasteFile({target:GC,category:e.name});return k(t)?parsePackages({content:await readAndMigrateFile({filePath:t}),sourcePath:t}).map(t=>({...t,category:e.name})):[]}async function getAllPackages2(){const e=getTastePath({target:GC});if(!k(e))return[];const t=[],n=getRootTasteFile({target:GC});if(k(n)){const e=parsePackages({content:await readAndMigrateFile({filePath:n}),sourcePath:n});t.push(...e)}const r=await F.readdir(e,{withFileTypes:!0}),o=(await Promise.all(r.map(loadCategoryPackages2))).flat();return t.push(...o),t}async function getPackage2(e){const{category:t}=e;return(await getAllPackages2()).find(e=>e.category===t)||null}async function writePackage2(e){const{pkg:t}=e,n=getTastePath({target:GC});await F.mkdir(n,{recursive:!0});const r=getRootTasteFile({target:GC}),o=await removePackage({category:t.category});t.learnings.length<=5?await writeToRoot({pkg:t,rootFile:r,categoryPosition:o}):await writeToSubdirectory({pkg:t,rootFile:r,categoryPosition:o})}function exists(){const e=getTastePath({target:GC});return k(e)}async function appendCategoryFile(e,t){const n=getCategoryTasteFile({target:"local-project",category:t.category});if(!k(n))return;const r=await F.readFile(n,"utf-8"),o=new Blob([r],{type:"text/markdown"}),s=new File([o],"taste.md",{type:"text/markdown"});e.append(`files[${t.category}/taste.md]`,s)}async function prepareUploadFormData(t){const{packageName:n,pkg:r,description:o,type:s="category",isPublic:a=!1,overwrite:i=!1}=t,l=new FormData;l.append("name",n),o&&l.append("description",o),l.append("type",s),l.append("isPublic",String(a)),l.append("overwrite",String(i));const u=formatPackage({pkg:r}),d=new Blob([u],{type:"text/markdown"}),m=new File([d],"taste.md",{type:"text/markdown"});if(l.append("files[taste.md]",m),"category"===s)return l;const g=getTastePath({target:"local-project"}),h=e.join(g,r.category);if(!k(h))return l;const f=getCategoryTasteFile({target:"local-project",category:r.category});if(!k(f))return l;const y=await F.readFile(f,"utf-8"),w=new Blob([y],{type:"text/markdown"}),S=new File([w],"taste.md",{type:"text/markdown"});return l.append(`files[${r.category}/taste.md]`,S),l}async function prepareMultiplePackagesUpload(e){const{pkgs:t,projectName:n,description:r,isPublic:o=!1,overwrite:s=!1}=e,a=new FormData;a.append("name",n),r&&a.append("description",r),a.append("type","project"),a.append("isPublic",String(o)),a.append("overwrite",String(s));const i=getRootTasteFile({target:"local-project"});if(k(i)){const e=await F.readFile(i,"utf-8"),t=new Blob([e],{type:"text/markdown"}),n=new File([t],"taste.md",{type:"text/markdown"});a.append("files[taste.md]",n)}const l=t.map(e=>appendCategoryFile(a,e));return await Promise.all(l),a}function parseLearningLine(e){const t=e.match(/^-\s+(.+?)\.\s+Confidence:\s+([\d.]+)/);if(!t)return null;const n=t[1].trim(),r=parseFloat(t[2]);return!n||isNaN(r)?null:{text:n,confidence:r}}function parseTasteContent(e){return e.split("\n").filter(e=>{const t=e.trim();return t&&!t.startsWith("#")&&t.startsWith("-")}).map(e=>parseLearningLine(e.trim())).filter(e=>null!==e)}async function parseApiError(e){const{response:t,fallback:n}=e;try{const e=await t.json();return e.error?.message||e.message||n}catch{return n}}function throwTrackedError(e){const{message:t,label:n,heading:r,status:o,extra:s}=e,a=new Error(t);throw trackError({error:sanitizeErrorForTelemetry({error:a,label:n}),context:{component:ms.TASTE_REMOTE_STORAGE,heading:r,"http.status":o,...s}}),a}async function requireAuthKey(){const e=await getAuthKey();if(!e)throw new Error(`No API key found. Please authenticate with: ${getBinaryCommand()} login`);return e}async function downloadPackage(e){const{owner:t,packageName:n}=e,r=getApiBaseUrl(),o=await tryPublicDownload({baseUrl:r,owner:t,packageName:n});if(o)return o;const s=await getAuthKey();if(!s)throw new Error(`Package not found. If this is a private package, please authenticate with \`${getBinaryCommand()} login\``);return tryAuthenticatedDownload({baseUrl:r,owner:t,packageName:n,apiKey:s})}async function tryPublicDownload(e){const{baseUrl:t,owner:n,packageName:r}=e,o=`${t}${Dt.INTERNAL.PROFILE.PACKAGE_DOWNLOAD.replace(":login",n).replace(":packageName",r)}`;let s;try{s=await fetch(o,{method:"GET"})}catch{return null}if(s.ok){const{data:e}=await s.json();return{type:e.type||"category",files:e.files||[],isPublic:!0}}if(404===s.status)return null;throwTrackedError({message:await parseApiError({response:s,fallback:`Failed to download taste package (${s.status})`}),label:"download_public_error",heading:"Failed to download taste package (public)",status:s.status})}async function tryAuthenticatedDownload(e){const{baseUrl:t,owner:n,packageName:r,apiKey:o}=e,s=`${t}${Dt.BETA.TASTE.PACKAGES.DOWNLOAD.replace(":namespace",n).replace(":packageName",r)}`,a=await fetch(s,{method:"GET",headers:{Authorization:`Bearer ${o}`}});if(a.ok){const{data:e}=await a.json();return{type:e.type||"category",files:e.files||[],isPublic:e.isPublic??!1}}if(404===a.status)return null;throwTrackedError({message:await parseApiError({response:a,fallback:"Failed to download taste package"}),label:"download_auth_error",heading:"Failed to download taste package (authenticated)",status:a.status})}async function fetchSinglePackage(e){try{return await getPackage3({category:e.name})}catch(t){const n=t instanceof Error?t:new Error(String(t));return trackError({error:sanitizeErrorForTelemetry({error:n,label:"download_package_error"}),context:{component:ms.TASTE_REMOTE_STORAGE,heading:"Failed to download package","package.name":e.name}}),console.warn(`Warning: Failed to download package '${e.name}': ${n.message}`),null}}async function getAllPackages3(){const e=await requireAuthKey(),t=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.LIST}`,n=await fetch(t,{method:"GET",headers:{Authorization:`Bearer ${e}`}});n.ok||throwTrackedError({message:await parseApiError({response:n,fallback:"Failed to list taste packages"}),label:"list_packages_error",heading:"Failed to list taste packages",status:n.status});const{data:r}=await n.json(),o=r.packages||[];if(0===o.length)return[];const s=[];for(let e=0;e<o.length;e+=5){const t=o.slice(e,e+5),n=await Promise.all(t.map(fetchSinglePackage));s.push(...n.filter(e=>null!==e))}return s}async function getPackage3(e){const{category:t}=e;let n;await requireAuthKey();try{n=await getAuthenticatedEntity()}catch(e){const n=e instanceof Error?e:new Error(String(e));throw dlog(`[Auth] getPackage: entity endpoint unavailable — ${n.message}`),trackError({error:sanitizeErrorForTelemetry({error:n,label:"get_entity_error"}),context:{component:ms.TASTE_REMOTE_STORAGE,heading:"getAuthenticatedEntity failed in getPackage"}}),new Error(`Could not resolve your account to fetch '${t}'. Check your connection and try again.`)}if(!n.success||!n.user?.userName)throw new Error("Failed to get authenticated user information");return downloadRemotePackage({owner:n.user.userName,packageName:t})}async function downloadRemotePackage(e){const{owner:t,packageName:n}=e,r=await downloadPackage({owner:t,packageName:n});if(!r)return null;const o=r.files||[];if(0===o.length)return null;const s=o.find(e=>"taste.md"===e.file);if(!s)throw new Error(`No taste.md file found in package '${n}'`);return{category:n,learnings:parseTasteContent(s.content),sourcePath:`remote:${n}`,isPublic:r.isPublic??!1}}async function writePackage3(e){const{pkg:t,owner:n,isPublic:r=!1,overwrite:o=!1}=e,s=await requireAuthKey(),a=await prepareUploadFormData({packageName:t.category,pkg:t,type:"category",isPublic:r,overwrite:o}),i=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.UPLOAD.replace(":namespace",n)}`,l=await fetch(i,{method:"POST",headers:{Authorization:`Bearer ${s}`},body:a});l.ok||throwTrackedError({message:await parseApiError({response:l,fallback:"Failed to upload taste package"}),label:"upload_package_error",heading:"Failed to upload taste package",status:l.status}),await l.json()}async function writePackages(e){const{packages:t,projectName:n,owner:r,isPublic:o=!1,overwrite:s=!1}=e,a=await requireAuthKey(),i=await prepareMultiplePackagesUpload({pkgs:t,projectName:n,isPublic:o,overwrite:s}),l=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.UPLOAD.replace(":namespace",r)}`,u=await fetch(l,{method:"POST",headers:{Authorization:`Bearer ${a}`},body:i});u.ok||throwTrackedError({message:await parseApiError({response:u,fallback:"Failed to upload taste packages"}),label:"upload_packages_error",heading:"Failed to upload taste packages",status:u.status,extra:{"package.count":t.length}}),await u.json()}async function listPackages2(){const e=await requireAuthKey(),t=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.LIST}`,n=await fetch(t,{method:"GET",headers:{Authorization:`Bearer ${e}`}});n.ok||throwTrackedError({message:await parseApiError({response:n,fallback:"Failed to list taste packages"}),label:"list_packages_error",heading:"Failed to list packages",status:n.status});const{data:r}=await n.json();return(r.packages||[]).map(e=>({category:e.name,learningCount:e.learningCount||0,lastUpdated:e.createdAt?new Date(e.createdAt):new Date,filePath:"",isPublic:e.isPublic??!1,starCount:e.starCount??0,downloadCount:e.downloadCount??0,type:e.type??"category"}))}async function list(e){const{location:t}=e;if("local-global"===t)return listPackages();if("remote-project"===t||"remote-user"===t)return listPackages2();if("local-project"===t){const e=getRootTasteFile({target:"local-project"}),t=await getAllPackages2();return Promise.all(t.map(async t=>{let n;if(t.sourcePath!==e)try{n=(await F.stat(t.sourcePath)).mtime}catch{}return{category:t.category,learningCount:t.learnings.length,lastUpdated:n,filePath:t.sourcePath}}))}throw new Error(`Invalid location: ${t}`)}function createListCommand(){return new Ue("list").alias("ls").option("-g, --global","List global packages").addOption(new Be("-l, --local","Use local server").hideHelp()).option("--remote","List remote packages").addOption(new Be("--staging","Use staging environment").hideHelp()).description(`List available packages ${ne.dim("(project, global, or remote)")}`).action(withErrorHandler(async e=>runList({options:e})))}__name(loadCategoryPackages2,"loadCategoryPackages"),__name(getAllPackages2,"getAllPackages"),__name(getPackage2,"getPackage"),__name(writePackage2,"writePackage"),__name(exists,"exists"),pn(),pn(),__name(appendCategoryFile,"appendCategoryFile"),__name(prepareUploadFormData,"prepareUploadFormData"),__name(prepareMultiplePackagesUpload,"prepareMultiplePackagesUpload"),wn(),pn(),__name(parseLearningLine,"parseLearningLine"),__name(parseTasteContent,"parseTasteContent"),pn(),wn(),__name(parseApiError,"parseApiError"),__name(throwTrackedError,"throwTrackedError"),__name(requireAuthKey,"requireAuthKey"),pn(),wn(),__name(downloadPackage,"downloadPackage"),__name(tryPublicDownload,"tryPublicDownload"),__name(tryAuthenticatedDownload,"tryAuthenticatedDownload"),Sn(),__name(fetchSinglePackage,"fetchSinglePackage"),__name(getAllPackages3,"getAllPackages"),__name(getPackage3,"getPackage"),__name(downloadRemotePackage,"downloadRemotePackage"),__name(writePackage3,"writePackage"),__name(writePackages,"writePackages"),__name(listPackages2,"listPackages"),__name(list,"list"),__name(createListCommand,"createListCommand");var zC={remote:{location:"remote-project",name:"remote",subtitle:"commandcode.ai account"},global:{location:"local-global",name:"global",subtitle:"~/.commandcode/taste"},project:{location:"local-project",name:"project",subtitle:".commandcode/taste"}};function resolveStorage(e){return e.remote?zC.remote:e.global?zC.global:zC.project}function getPackageDisplayLength(e){let t=e.category.length;return e.isPublic&&(t+=9),e.isPublic&&e.starCount&&(t+=` ${He.star}${e.starCount}`.length),e.downloadCount&&(t+=` ${He.arrowDown}${e.downloadCount}`.length),t}function formatPackageLine({pkg:e,maxLen:t}){const n=" ".repeat(t-getPackageDisplayLength(e)+2),r=e.lastUpdated?getTimeAgo(e.lastUpdated):null,o=r?`, updated ${r}`:"";return` ${ne.white(e.category)}${e.isPublic?ne.green(" [public]"):""}${e.isPublic&&e.starCount?ne.yellow(` ${He.star}${e.starCount}`):""}${e.downloadCount?ne.gray(` ${He.arrowDown}${e.downloadCount}`):""}${n}${ne.dim.gray(`(${e.learningCount} learnings${o})`)}`}function validateListOptions(e){e.global&&e.remote&&exitWithError("Error: Cannot specify both --global and --remote flags")}async function fetchPackages({options:e}){const t=resolveStorage(e),n=e.remote?We(`Fetching ${t.name} packages`).start():null,r=await list({location:t.location});return n?.stop(),{packages:r,storage:t}}async function getStorageLabel({options:e,fallback:t}){if(!e.remote)return t;const n=await getUserName();return n?getProfileLink(n):t}function printPackageTable({packages:e,subtitle:t}){console.log(`\n${BC} Packages`),console.log(`${ne.gray("⎿")} ${ne.dim(t)}\n`);const n=Math.max(...e.map(getPackageDisplayLength));let r=0;for(const t of e)r+=t.learningCount,console.log(formatPackageLine({pkg:t,maxLen:n}));console.log(ne.dim(`\nTotal: ${e.length} packages, ${r} learnings\n`))}async function runList({options:e}){console.log(""),validateListOptions(e);const{packages:t,storage:n}=await fetchPackages({options:e});0!==t.length?printPackageTable({packages:t,subtitle:await getStorageLabel({options:e,fallback:n.subtitle})}):console.log(ne.yellow(`No taste packages found in ${n.name}`))}async function fetchAllPackages(e){const{target:t}=e;return"local-project"===t?getAllPackages2():"local-global"===t?getAllPackages():getAllPackages3()}function handleOpenError(e){return e instanceof Error&&e.message.includes("$EDITOR environment variable")?{success:!1,error:getEditorSetupInstructions()}:{success:!1,error:e instanceof Error?e.message:String(e)}}async function readCategoryLineNumber(t){const{filePath:n,category:r}=t,o=await F.readFile(n,"utf-8");if("taste.md"===e.basename(n)&&e.basename(e.dirname(n))===r)return 1;const s=o.split("\n").findIndex(e=>e.trim().toLowerCase()===`# ${r.toLowerCase()}`);return s>=0?s+1:1}async function findCategoryLineNumber(e){try{return await readCategoryLineNumber(e)}catch{return 1}}async function openPackage(e){const{packageName:t,target:n}=e,r=(await fetchAllPackages({target:n})).find(e=>e.category===t);if(!r){let e="project";return"local-global"===n&&(e="global"),"remote-project"!==n&&"remote-user"!==n||(e="remote"),{success:!1,error:`Taste package '${t}' not found in ${e}`}}const o=r.sourcePath,s=await findCategoryLineNumber({filePath:o,category:t});return await xt([{file:o,line:s}]),{success:!0,filePath:o,lineNumber:s}}__name(resolveStorage,"resolveStorage"),__name(getPackageDisplayLength,"getPackageDisplayLength"),__name(formatPackageLine,"formatPackageLine"),__name(validateListOptions,"validateListOptions"),__name(fetchPackages,"fetchPackages"),__name(getStorageLabel,"getStorageLabel"),__name(printPackageTable,"printPackageTable"),__name(runList,"runList"),pn(),wn(),pn(),__name(fetchAllPackages,"fetchAllPackages"),__name(handleOpenError,"handleOpenError"),__name(readCategoryLineNumber,"readCategoryLineNumber"),__name(findCategoryLineNumber,"findCategoryLineNumber"),__name(openPackage,"openPackage");var qC=new Set(["local-project","local-global","remote-project","remote-user"]);async function open12(e){const{package:t,target:n}=e;if(!qC.has(n))return{success:!1,error:`Invalid target: ${n}`};try{return await openPackage({packageName:t,target:n})}catch(e){return handleOpenError(e)}}function getEditorSetupInstructions(){const e=At.platform;if("win32"===e)return'Error: No default editor found\n\nTo permanently set your default editor, run one of these commands:\n\nCommand Prompt (as Administrator):\n setx EDITOR "code" # VS Code\n setx EDITOR "notepad" # Notepad\n setx EDITOR "vim" # Vim (if installed via WSL/Git Bash)\n\nPowerShell:\n [Environment]::SetEnvironmentVariable("EDITOR", "code", "User")\n\nThen restart your terminal.';const t="darwin"===e?"~/.zshrc":"~/.bashrc";return`Error: No default editor found\n\nTo permanently set your default editor, run one of these commands:\n echo 'export EDITOR="code"' >> ${t} # VS Code\n echo 'export EDITOR="vim"' >> ${t} # Vim\n echo 'export EDITOR="nano"' >> ${t} # Nano\n echo 'export EDITOR="subl"' >> ${t} # Sublime Text\n\nFor bash users ${"darwin"===e?"(or ~/.bash_profile for bash)":"(or ~/.zshrc for zsh)"}, replace ${t} with the appropriate file.\n\nThen restart your terminal or run: source ${t}`}function createOpenCommand(){return new Ue("open").argument("[package]","Taste package name, or owner/package to open in browser").option("-g, --global","Open taste package from global storage (~/.commandcode)").description(`Open a taste package in your editor ${ne.dim("(use owner/package to open in browser)")}`).action(withErrorHandler(async(e,t)=>runOpen({packageName:e,options:t})))}function validateOpenOptions(e){e||exitWithUsage({message:"Specify a taste package name to open",usage:[`${getBinaryCommand()} taste open <package> open taste package in editor`,`${getBinaryCommand()} taste open <package> -g open global taste package in editor`,`${getBinaryCommand()} taste open owner/package open package page in browser`]})}async function runOpen({packageName:e,options:t}){console.log(""),validateOpenOptions(e);const n=parseOwnerPackage(e);n?await openInBrowser(n):await openInEditor3({packageName:e,options:t})}async function openInBrowser(e){const t=`https://commandcode.ai/${e.owner}/${e.packageName}`;await Z(t);const n=getPackageLink({owner:e.owner,packageName:e.packageName});console.log(`${ne.green(He.tick)} Opened ${n} in browser`)}async function openInEditor3({packageName:e,options:t}){const n=t.global?"local-global":"local-project",r=await open12({package:e,target:n});r.success||exitWithError(r.error??"Unknown error"),console.log(`${ne.green(He.tick)} Opened ${ne.green(`'${e}'`)} taste package from ${t.global?"global":"project"}`)}__name(open12,"open"),__name(getEditorSetupInstructions,"getEditorSetupInstructions"),__name(createOpenCommand,"createOpenCommand"),__name(validateOpenOptions,"validateOpenOptions"),__name(runOpen,"runOpen"),__name(openInBrowser,"openInBrowser"),__name(openInEditor3,"openInEditor"),pn(),wn(),pn(),pn(),pn();var VC=null,KC=!1;function setActiveSpinner(e){VC=e}function stopActiveSpinner(e){VC&&(VC.stop(e),VC=null)}function setPrompted(e){KC=e}function wasPrompted(){return KC}function beginPrompt(e,t){stopActiveSpinner(),nt.intro(ne.dim(e)),t&&nt.log.message(ne.dim(t)),setPrompted(!0)}function handleCancel(e){nt.isCancel(e)&&(nt.cancel("Operation cancelled"),process.exit(0))}function startStrategySpinner(e){if("skip"===e){const e=nt.spinner();return e.start("Skipping"),void e.stop("Skipped")}const t="merge"===e?"Merging":"Overwriting",n="merge"===e?"Merged":"Overwritten",r=nt.spinner();r.start(t),setActiveSpinner({stop:__name(e=>r.stop(e??n),"stop"),cancel:__name(e=>r.cancel(e),"cancel"),error:__name(e=>r.error(e),"error")})}async function promptMergeStrategy(e){const{packageName:t,owner:n,localPkg:r,remoteLearningsCount:o}=e,s="This package already exists locally";if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(s),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, using default merge strategy"),"merge";beginPrompt(`Pulling ${ne.green(`'${t}'`)} from ${n}`,s),nt.log.message(`Local: ${r.learnings.length} learnings\nRemote: ${o} learnings ${ne.dim(`(from ${n})`)}`);const a=await nt.select({message:"What would you like to do?",options:[{value:"merge",label:"Merge",hint:"Combine both versions intelligently (default)"},{value:"overwrite",label:"Overwrite",hint:`Replace local with remote (${r.learnings.length} → ${o} learnings)`},{value:"skip",label:"Skip",hint:"Keep local version, ignore remote"}],initialValue:"merge"});handleCancel(a);const i=a;return startStrategySpinner(i),i}async function promptGlobalPushStrategy(e){const{packageName:t,localLearningsCount:n,globalPkg:r}=e,o="This package already exists in global storage";if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(o),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, using default merge strategy"),"merge";beginPrompt(`Pushing ${ne.green(`'${t}'`)} to global`,o),nt.log.message(`Local: ${n} learnings\nGlobal: ${r.learnings.length} learnings`);const s=await nt.select({message:"What would you like to do?",options:[{value:"merge",label:"Merge",hint:"Combine both versions intelligently (default)"},{value:"overwrite",label:"Overwrite",hint:`Replace global with local (${r.learnings.length} → ${n} learnings)`},{value:"skip",label:"Skip",hint:"Keep global version, cancel push"}],initialValue:"merge"});handleCancel(s);const a=s;return startStrategySpinner(a),a}async function promptGlobalPullStrategy(e){const{packageName:t,localPkg:n,globalLearningsCount:r}=e,o="This package already exists locally";if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(o),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, using default merge strategy"),"merge";beginPrompt(`Pulling ${ne.green(`'${t}'`)} from global`,o),nt.log.message(`Local: ${n.learnings.length} learnings\nGlobal: ${r} learnings`);const s=await nt.select({message:"What would you like to do?",options:[{value:"merge",label:"Merge",hint:"Combine both versions intelligently (default)"},{value:"overwrite",label:"Overwrite",hint:`Replace local with global (${n.learnings.length} → ${r} learnings)`},{value:"skip",label:"Skip",hint:"Keep local version, ignore global"}],initialValue:"merge"});handleCancel(s);const a=s;return startStrategySpinner(a),a}async function promptTypeMismatchStrategy(e){const{packageName:t,owner:n,localLearningsCount:r,remoteLearningsCount:o}=e,s=`Pushing local project taste to individual package '${t}'`;if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(s),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, skipping push"),"skip";const a=Et(`commandcode.ai/${n}/${t}`,`https://commandcode.ai/${n}/${t}`,{fallback:__name((e,t)=>t,"fallback")});beginPrompt(`Pushing ${ne.green(`'${t}'`)} to ${n}`,s),nt.log.message(`Local: ${t} (${r} learnings)\nRemote: ${t} (${o} learnings) in ${n}`),nt.log.info(`Current package: ${ne.cyan(a)} ${ne.dim("(review)")}`);const i=await nt.select({message:"What would you like to do?",options:[{value:"skip",label:"Skip",hint:"Keep remote version, cancel push"},{value:"overwrite",label:"Overwrite",hint:"Replace individual remote package with local project taste"}],initialValue:"skip"});handleCancel(i);const l=i;return startStrategySpinner(l),l}async function promptSameTypeStrategy(e){const{packageName:t,owner:n,localLearningsCount:r,remoteLearningsCount:o}=e,s=`This package already exists in ${n}`;if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(s),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, skipping push"),"skip";const a=Et(`commandcode.ai/${n}/${t}`,`https://commandcode.ai/${n}/${t}`,{fallback:__name((e,t)=>t,"fallback")});beginPrompt(`Pushing ${ne.green(`'${t}'`)} to ${n}`,s),nt.log.message(`Local: ${r} learnings\nRemote: ${o} learnings`),nt.log.info(`Current package: ${ne.cyan(a)} ${ne.dim("(review)")}`);const i=await nt.select({message:"What would you like to do?",options:[{value:"skip",label:"Skip",hint:"Keep remote version, cancel push"},{value:"overwrite",label:"Overwrite",hint:`Replace remote with local (${o} → ${r} learnings)`}],initialValue:"skip"});handleCancel(i);const l=i;return startStrategySpinner(l),l}function mergeSingleLearning(e,t,n,r){const o=t.get(e.text);return o?e.confidence>o.confidence?(n.set(e.text,e),void r.updated++):void r.unchanged++:(n.set(e.text,e),void r.added++)}function mergePackages(e){const{source:t,target:n}=e,r={added:0,updated:0,unchanged:0},o=new Map(n.map(e=>[e.text,e])),s=new Map(o);for(const e of t)mergeSingleLearning(e,o,s,r);const a=new Set(t.map(e=>e.text)),i=n.filter(e=>!a.has(e.text)).length;return r.unchanged+=i,{merged:Array.from(s.values()),details:r}}function validateSinglePackage(e,t){const n=validateTasteFile({content:formatPackage({pkg:e}),filePath:`${e.category}/taste.md`});if(!n.valid){const r=formatValidationIssues({result:n,verbose:!0});return{pkg:e.category,error:`Validation failed for taste package in ${t}:\n${r}`}}return n.issues.filter(e=>"warning"===e.severity).length>0&&(console.warn(`\nWarning: Taste package '${e.category}' in ${t} has validation warnings:\n`),console.warn(formatValidationIssues({result:n,verbose:!0})+"\n")),null}function validateSingleRemoteFile(e,t){const n=validateTasteFile({content:e.content,filePath:e.file});if(!n.valid){const r=formatValidationIssues({result:n,verbose:!0});return{pkg:t,error:`Validation failed for ${e.file}:\n${r}`}}return n.issues.filter(e=>"warning"===e.severity).length>0&&(console.warn(`\nWarning: File '${e.file}' has validation warnings:\n`),console.warn(formatValidationIssues({result:n,verbose:!0})+"\n")),null}function validatePackages(e){const{packages:t,label:n}=e;return t.map(e=>validateSinglePackage(e,n)).filter(e=>null!==e)}function validateRemoteFiles(e){const{files:t,packageName:n}=e;return t.map(e=>validateSingleRemoteFile(e,n)).filter(e=>null!==e)}function mergeOrKeep(e){const{source:t,existing:n}=e;if(!n)return{pkg:t,details:{added:t.learnings.length,updated:0,unchanged:0}};const r=mergePackages({source:t.learnings,target:n.learnings});return{pkg:{...t,learnings:r.merged},details:r.details}}async function resolveRemotePullStrategy(e){const{flagStrategy:t,overwrite:n,existingPkg:r,tastePkg:o,owner:s}=e;return"skip"===t?r?"skip":"merge":"merge"===t?"merge":"overwrite"===t||n?"overwrite":r?promptMergeStrategy({packageName:o.category,owner:s,localPkg:r,remoteLearningsCount:o.learnings.length}):"merge"}async function executePackageStrategy(e){const{tastePkg:t,owner:n,overwrite:r,flagStrategy:o,result:s}=e,a=await getPackage2({category:t.category}),i=await resolveRemotePullStrategy({flagStrategy:o,overwrite:r,existingPkg:a,tastePkg:t,owner:n});if("skip"===i)return void s.skipped?.push(t.category);if("overwrite"===i&&(await writePackage2({pkg:t}),s.packagesPulled.push(t.category),s.overwritten.push(t.category)),"merge"===i){const{pkg:e,details:n}=mergeOrKeep({source:t,existing:a});await writePackage2({pkg:e}),s.packagesPulled.push(t.category),s.mergeDetails[t.category]=n}const l=getCategoryTasteFile({target:"local-project",category:t.category});s.filePaths[t.category]=l}async function processPackage(e){const{tastePkg:t,result:n}=e;try{await executePackageStrategy(e)}catch(e){n.success=!1,n.errors.push({pkg:t.category,error:e instanceof Error?e.message:String(e)})}}async function pullProjectPackage(e){const{files:t,packageName:n,owner:r,overwrite:o,flagStrategy:s,result:a}=e,i=t.find(e=>"taste.md"===e.file);if(i){const e=parsePackages({content:i.content,sourcePath:`remote:${n}/taste.md`});for(const t of e)await processPackage({tastePkg:t,owner:r,overwrite:o,flagStrategy:s,result:a})}const l=t.filter(e=>"taste.md"!==e.file);for(const e of l){const t=e.file.replace("/taste.md",""),i={category:t,learnings:parseTasteContent(e.content),sourcePath:`remote:${n}/${t}`};await processPackage({tastePkg:i,owner:r,overwrite:o,flagStrategy:s,result:a})}}async function pullCategoryPackage(e){const{files:t,packageName:n,owner:r,overwrite:o,flagStrategy:s,result:a}=e,i=t.find(e=>"taste.md"===e.file);if(!i)return a.success=!1,void a.errors.push({pkg:n,error:"No taste.md file found in category package"});const l={category:n,learnings:parseTasteContent(i.content),sourcePath:`remote:${n}`};await processPackage({tastePkg:l,owner:r,overwrite:o,flagStrategy:s,result:a})}__name(setActiveSpinner,"setActiveSpinner"),__name(stopActiveSpinner,"stopActiveSpinner"),__name(setPrompted,"setPrompted"),__name(wasPrompted,"wasPrompted"),__name(beginPrompt,"beginPrompt"),__name(handleCancel,"handleCancel"),__name(startStrategySpinner,"startStrategySpinner"),__name(promptMergeStrategy,"promptMergeStrategy"),__name(promptGlobalPushStrategy,"promptGlobalPushStrategy"),__name(promptGlobalPullStrategy,"promptGlobalPullStrategy"),__name(promptTypeMismatchStrategy,"promptTypeMismatchStrategy"),__name(promptSameTypeStrategy,"promptSameTypeStrategy"),pn(),pn(),__name(mergeSingleLearning,"mergeSingleLearning"),__name(mergePackages,"mergePackages"),__name(validateSinglePackage,"validateSinglePackage"),__name(validateSingleRemoteFile,"validateSingleRemoteFile"),__name(validatePackages,"validatePackages"),__name(validateRemoteFiles,"validateRemoteFiles"),__name(mergeOrKeep,"mergeOrKeep"),pn(),__name(resolveRemotePullStrategy,"resolveRemotePullStrategy"),__name(executePackageStrategy,"executePackageStrategy"),__name(processPackage,"processPackage"),__name(pullProjectPackage,"pullProjectPackage"),__name(pullCategoryPackage,"pullCategoryPackage");var YC=__name(({pkg:e,error:t})=>({success:!1,packagesPulled:[],errors:[{pkg:e,error:t}],mergeDetails:{},overwritten:[],filePaths:{}}),"fail"),QC=__name(()=>({success:!0,packagesPulled:[],skipped:[],errors:[],mergeDetails:{},overwritten:[],filePaths:{}}),"emptyResult"),JC=__name(e=>"local-global"===e?"global":"remote-project"===e?"remote project":"remote-user"===e?"remote":"source","sourceName");async function resolvePullStrategy(e){const{flagStrategy:t,overwrite:n,existingPkg:r,source:o,tastePkg:s}=e;return"skip"===t?r?"skip":"merge":"merge"===t?"merge":"overwrite"===t||n?"overwrite":r&&"local-global"===o?promptGlobalPullStrategy({packageName:s.category,localPkg:r,globalLearningsCount:s.learnings.length}):"merge"}async function executePullStrategy(e){const{tastePkg:t,source:n,flagStrategy:r,overwrite:o,result:s}=e,a=await getPackage2({category:t.category}),i=await resolvePullStrategy({flagStrategy:r,overwrite:o,existingPkg:a,source:n,tastePkg:t});if("skip"===i)return void s.skipped.push(t.category);if("overwrite"===i&&(await writePackage2({pkg:t}),s.packagesPulled.push(t.category),s.overwritten.push(t.category)),"merge"===i){const{pkg:e,details:n}=mergeOrKeep({source:t,existing:a});await writePackage2({pkg:e}),s.packagesPulled.push(t.category),s.mergeDetails[t.category]=n}const l=getCategoryTasteFile({target:"local-project",category:t.category});s.filePaths[t.category]=l}async function pullSinglePackage(e){const{tastePkg:t,result:n}=e;try{await executePullStrategy(e)}catch(e){n.success=!1,n.errors.push({pkg:t.category,error:e instanceof Error?e.message:String(e)})}}async function pull(e){const{packages:t,source:n,overwrite:r=!1,strategy:o}=e;if("local-global"!==n&&"remote-project"!==n&&"remote-user"!==n)return YC({pkg:"all",error:`Invalid source: ${n}`});const s=JC(n);let a;try{a="local-global"===n?await getAllPackages():await getAllPackages3()}catch(e){return YC({pkg:"all",error:e instanceof Error?e.message:String(e)})}if(0===a.length)return YC({pkg:"all",error:`No taste packages found in ${s}`});const i=validatePackages({packages:a,label:s});if(i.length>0)return{success:!1,packagesPulled:[],errors:[...i],mergeDetails:{},overwritten:[],filePaths:{}};const l=t.length>0?a.filter(e=>t.includes(e.category)):a;if(t.length>0&&0===l.length)return{success:!1,packagesPulled:[],errors:t.map(e=>({pkg:e,error:`Taste package not found in ${s}`})),mergeDetails:{},overwritten:[],filePaths:{}};const u=QC();for(const e of l)await pullSinglePackage({tastePkg:e,source:n,flagStrategy:o,overwrite:r,result:u});return u}async function executePullRemote(e){const{owner:t,packageName:n,overwrite:r,flagStrategy:o,result:s}=e,a=await downloadPackage({owner:t,packageName:n});if(!a)return YC({pkg:n,error:"Taste package not found in remote"});const{type:i,files:l}=a,u=validateRemoteFiles({files:l,packageName:n});if(u.length>0)return{success:!1,packagesPulled:[],errors:[...u],mergeDetails:{},overwritten:[],filePaths:{}};const d={files:l,packageName:n,owner:t,overwrite:r,flagStrategy:o,result:s};return"project"===i?(await pullProjectPackage(d),s):(await pullCategoryPackage(d),s)}async function pullRemote(e){const{owner:t,packageName:n,overwrite:r=!1,strategy:o}=e,s=QC();try{return await executePullRemote({owner:t,packageName:n,overwrite:r,flagStrategy:o,result:s})}catch(e){return YC({pkg:n,error:e instanceof Error?e.message:String(e)})}}function logResult(e){if(wasPrompted())return nt.outro(e),void setPrompted(!1);console.log(e)}function buildPullMessage(e){const{pkgName:t,sourceName:n,filePath:r,options:o,mergeDetails:s}=e,a=wasPrompted()?"":`${He.tick} `,i=r?ne.dim(`\n ${shortenPath(r)}`):"";if(o.overwrite)return`${ne.green(a)}Replaced ${ne.green(`'${t}'`)} taste package in project`+i;if(s){const e=formatMergeParts(s);return`${ne.green(a)}Pulled ${ne.green(`'${t}'`)} taste package from ${n} ${ne.gray(`(${e.join(", ")})`)}`+i}return`${ne.green(a)}Pulled ${ne.green(`'${t}'`)} taste package from ${n}`+i}function logPullSingleSuccess(e){const{result:t,sourceName:n,options:r}=e;if(1!==t.packagesPulled.length)return!1;const o=t.packagesPulled[0],s=t.filePaths?.[o],a=t.mergeDetails?.[o];return logResult(buildPullMessage({pkgName:o,sourceName:n,filePath:s,options:r,mergeDetails:a})),!r.overwrite&&!!a&&hasMergeConflictRisk(a)}function logPullSummary(e){const{result:t,sourceName:n}=e,r=t.overwritten??[],o=t.skipped??[],s=t.packagesPulled.filter(e=>!r.includes(e)),a=t.packagesPulled.length+o.length,i=`${a} ${1===a?"package":"packages"}`,l=[];return s.length>0&&l.push(wrapLine(`${ne.green("Pulled")} (${s.length}) ${s.join(", ")}`,wasPrompted()?4:0)),r.length>0&&l.push(wrapLine(`${ne.yellow("Overwritten")} (${r.length}) ${r.join(", ")}`,wasPrompted()?4:0)),o.length>0&&l.push(wrapLine(`${ne.dim("Skipped")} (${o.length}) ${ne.dim(o.join(", "))}`,wasPrompted()?4:0)),wasPrompted()?(l.length>0&&nt.log.message(l.join("\n")),nt.outro(`${i} from ${n}`),setPrompted(!1),hasMergeConflictRiskInRecord(t.mergeDetails??{})):(console.log(`${ne.green(He.tick)} ${i} from ${n}`),l.length>0&&console.log(l.join("\n")),hasMergeConflictRiskInRecord(t.mergeDetails??{}))}function logPullSuccess(e){const{result:t,sourceName:n,options:r}=e,o=t.skipped??[];t.packagesPulled.length+o.length>1?logPullSummary({result:t,sourceName:n})&&logMergeReviewTip():o.length>0?logResult(ne.yellow(`Skipped '${o[0]}' — kept local version`)):logPullSingleSuccess({result:t,sourceName:n,options:r})&&logMergeReviewTip()}function createPullCommand(){return new Ue("pull").argument("[package]","Taste package name, or owner/package to pull from remote").option("-g, --global","Pull taste package from global storage (~/.commandcode)").addOption(new Be("--local","Use local server").hideHelp()).option("--remote","Pull taste package from commandcode.ai remote").option("--all","Pull all taste packages from global").option("--overwrite","Replace local package without prompting").option("--skip","Keep local package, skip conflicting pull").option("--merge","Auto-merge conflicting learnings without prompting").addOption(new Be("--staging","Use staging environment").hideHelp()).description(`Pull taste packages from remote or global into the project ${ne.dim("(prompts on conflicts)")}`).action(withErrorHandler(async(e,t)=>{setPrompted(!1);const n=resolveRemoteDefault(t),{result:r,owner:o}=await runPull({packageName:e,options:n});r.success||handleResultErrors(r.errors),logPullSuccess({result:r,sourceName:n.remote?o??"remote":"global",options:n})}))}function validatePullOptions(e){const{packageName:t,options:n}=e;n.global&&n.remote&&exitWithError("--global and --remote are mutually exclusive — pick one source"),n.remote&&n.all&&exitWithUsage({message:"--all is not supported for remote pull — specify a package instead",usage:[`${getBinaryCommand()} taste pull <owner>/<package> pull a taste package from remote`]}),n.remote&&!t&&exitWithUsage({message:"Specify a taste package to pull from remote",usage:[`${getBinaryCommand()} taste pull <owner>/<package> pull a taste package from remote`,`${getBinaryCommand()} taste pull <package> -g pull a taste package from global`,`${getBinaryCommand()} taste pull --all -g pull all taste packages from global`]}),n.remote&&t&&!t.includes("/")&&exitWithUsage({message:`Remote pull requires owner/package format — got '${t}'`,usage:[`${getBinaryCommand()} taste pull <owner>/<package> e.g. ${getBinaryCommand()} taste pull ahmadawais/code-style`]}),t||n.all||exitWithUsage({message:"Specify a taste package name or use --all to pull everything",usage:[`${getBinaryCommand()} taste pull <owner>/<package> pull a taste package from remote`,`${getBinaryCommand()} taste pull <package> -g pull a taste package from global`,`${getBinaryCommand()} taste pull --all -g pull all taste packages from global`]}),t&&n.all&&exitWithError("Use either a package name or --all, not both"),resolveConflictStrategy(n)}async function runPull(e){const{packageName:t,options:n}=e;console.log("");const r=resolveRemoteDefault(n);validatePullOptions({packageName:t,options:r});const o=resolveConflictStrategy(r);return r.remote&&t?pullRemoteSingle({packageName:t,options:r,strategy:o}):pullGlobal({packageName:t,options:r,strategy:o})}async function pullRemoteSingle(e){const{packageName:t,options:n,strategy:r}=e,o=parseOwnerPackage(t);o||exitWithError("Invalid format — use owner/package (e.g. ahmadawais/code-style)"),setActiveSpinner(We("Pulling taste package").start());const s=await pullRemote({owner:o.owner,packageName:o.packageName,overwrite:n.overwrite,strategy:r});return stopActiveSpinner(),{result:s,owner:o.owner}}async function pullGlobal(e){const{packageName:t,options:n,strategy:r}=e;setActiveSpinner(We("Pulling taste package").start());const o=n.all||!t?[]:[t],s=await pull({packages:o,source:"local-global",overwrite:n.overwrite,strategy:r});return stopActiveSpinner(),{result:s}}async function fetchUserNamespaces(){const e=getApiBaseUrl(),t=new Nu({baseUrl:e}),n=await t.get({endpoint:Dt.ALPHA.NAMESPACES});if(!n.success)throw new Error("Failed to fetch namespaces");if("org"===n.type)return{userName:n.org.login,orgs:[]};const r=n.orgs.map(e=>({id:e.id,login:e.login,name:e.name}));return{userName:n.user.userName,orgs:r}}function logResult2(e){if(wasPrompted())return nt.outro(e),void setPrompted(!1);console.log(e)}function logPushAllSuccess(t){const{result:n,options:r}=t;if(!r.all)return!1;if(0===n.packagesPushed.length){const e=n.skipped?.length??0;if(e>0){const t=wasPrompted()?"":`${He.tick} `,n=`${e} ${1===e?"package":"packages"}`;logResult2(`${ne.green(t)}Skipped ${n}`)}return!1}const o=n.packagesPushed.length,s=`${o} ${1===o?"package":"packages"}`,a=n.filePaths?.[n.packagesPushed[0]],i=r.global&&a?shortenPath(e.dirname(e.dirname(a))):a,l=wasPrompted()?"":`${He.tick} `;if(!i)return logResult2(`${ne.green(l)}Pushed ${s} to remote`),!1;if(r.overwrite||Boolean(n.overwritten?.length)){let e=0;if(n.mergeDetails)for(const t of Object.values(n.mergeDetails))e+=t.updated??0;const t=e>0?` ${ne.gray(`(${e} ${1===e?"learning":"learnings"} replaced)`)}`:"";return logResult2(`${ne.green(l)}Replaced ${s} in ${i}${t}`),!1}if(!n.mergeDetails||0===Object.keys(n.mergeDetails).length)return logResult2(`${ne.green(l)}Pushed ${s} to ${i}`),!1;let u=0,d=0,m=0;for(const e of Object.values(n.mergeDetails))u+=e.added??0,d+=e.updated??0,m+=e.unchanged??0;const g=formatMergeParts({added:u,updated:d,unchanged:m}),h=g.length>0?` ${ne.gray(`(${g.join(", ")})`)}`:"";return logResult2(`${ne.green(l)}Pushed ${s} to ${i}${h}`),(u>0||d>0)&&m>0}function logPushSingleSuccess(e){const{result:t,options:n}=e;if(n.all)return!1;if(1!==t.packagesPushed.length)return!1;const r=t.packagesPushed[0],o=t.filePaths?.[r],s=n.remote&&o,a=s?o:"global",i=wasPrompted()?"":`${He.tick} `,l=!s&&o?ne.dim(`\n ${shortenPath(o)}`):"";if(n.overwrite)return logResult2(`${ne.green(i)}Replaced ${ne.green(`'${r}'`)} taste package in ${a}`+l),!1;if(t.mergeDetails?.[r]){const e=t.mergeDetails[r],n=formatMergeParts(e);return logResult2(`${ne.green(i)}Pushed ${ne.green(`'${r}'`)} taste package to ${a} ${ne.gray(`(${n.join(", ")})`)}`+l),hasMergeConflictRisk(e)}return logResult2(`${ne.green(i)}Pushed ${ne.green(`'${r}'`)} taste package to ${a}`+l),!1}function logPushMultiSuccess(e){const{result:t,options:n}=e;if(n.all)return!1;if(t.packagesPushed.length<=1)return!1;const r=n.remote?"remote":"global",o=wasPrompted()?"":`${He.tick} `;return logResult2(wrapLine(`${ne.green(o)}Pushed ${ne.green(t.packagesPushed.length)} taste packages ${ne.green(`(${t.packagesPushed.join(", ")})`)} to ${r}`)),!(n.overwrite||!t.mergeDetails)&&hasMergeConflictRiskInRecord(t.mergeDetails)}function logPushUrls(e){const{result:t,options:n}=e;if(!n.remote||!t.filePaths)return;const r=new Set;for(const e of t.packagesPushed){const n=t.filePaths[e];if(!n||!n.includes("/"))continue;const[o,s]=n.split("/");if(!o||!s)continue;const a=getPackageLink({owner:o,packageName:s});r.has(a)||(r.add(a),console.log(ne.gray(` ${a}`)))}}function logConflictSummary(e){const{result:t}=e,n=t.overwritten??[],r=t.skipped??[],o=t.packagesPushed.filter(e=>!n.includes(e)),s=t.packagesPushed.length+r.length,a=[];o.length>0&&a.push(wrapLine(`${ne.green("Merged")} (${o.length}) ${o.join(", ")}`,4)),n.length>0&&a.push(wrapLine(`${ne.yellow("Overwritten")} (${n.length}) ${n.join(", ")}`,4)),r.length>0&&a.push(wrapLine(`${ne.dim("Skipped")} (${r.length}) ${ne.dim(r.join(", "))}`,4)),a.length>0&&nt.log.message(a.join("\n"));const i=`${s} ${1===s?"package":"packages"}`;nt.outro(i)}function logPushBreakdown(e){const t=e.overwritten??[],n=e.skipped??[];if(0===n.length&&0===t.length)return;const r=e.packagesPushed.filter(e=>!t.includes(e)),o=[];r.length>0&&o.push(wrapLine(`${ne.green("Pushed")} (${r.length}) ${r.join(", ")}`)),t.length>0&&o.push(wrapLine(`${ne.yellow("Overwritten")} (${t.length}) ${t.join(", ")}`)),n.length>0&&o.push(wrapLine(`${ne.dim("Skipped")} (${n.length}) ${ne.dim(n.join(", "))}`)),o.length>0&&console.log(o.join("\n"))}function logPushSuccess(e){const{result:t,options:n}=e;if(wasPrompted())return setPrompted(!1),logConflictSummary({result:t}),void logPushUrls({result:t,options:n});const r=logPushAllSuccess({result:t,options:n})||logPushSingleSuccess({result:t,options:n})||logPushMultiSuccess({result:t,options:n});n.all&&logPushBreakdown(t),logPushUrls({result:t,options:n}),r&&logMergeReviewTip()}__name(resolvePullStrategy,"resolvePullStrategy"),__name(executePullStrategy,"executePullStrategy"),__name(pullSinglePackage,"pullSinglePackage"),__name(pull,"pull"),__name(executePullRemote,"executePullRemote"),__name(pullRemote,"pullRemote"),pn(),__name(logResult,"logResult"),__name(buildPullMessage,"buildPullMessage"),__name(logPullSingleSuccess,"logPullSingleSuccess"),__name(logPullSummary,"logPullSummary"),__name(logPullSuccess,"logPullSuccess"),__name(createPullCommand,"createPullCommand"),__name(validatePullOptions,"validatePullOptions"),__name(runPull,"runPull"),__name(pullRemoteSingle,"pullRemoteSingle"),__name(pullGlobal,"pullGlobal"),pn(),wn(),Sn(),pn(),wn(),__name(fetchUserNamespaces,"fetchUserNamespaces"),pn(),__name(logResult2,"logResult"),__name(logPushAllSuccess,"logPushAllSuccess"),__name(logPushSingleSuccess,"logPushSingleSuccess"),__name(logPushMultiSuccess,"logPushMultiSuccess"),__name(logPushUrls,"logPushUrls"),__name(logConflictSummary,"logConflictSummary"),__name(logPushBreakdown,"logPushBreakdown"),__name(logPushSuccess,"logPushSuccess"),pn(),pn();var XC=__name(({pkg:e,error:t})=>({success:!1,packagesPushed:[],skipped:[],errors:[{pkg:e,error:t}],mergeDetails:{},overwritten:[],filePaths:{}}),"fail"),ZC=__name(e=>e.reduce((e,t)=>t.file.endsWith("taste.md")?e+parseTasteContent(t.content).length:e,0),"countRemoteLearnings");async function resolvePushAllStrategy(e){const{flagStrategy:t,overwrite:n,existingProject:r,packagesToPush:o,projectName:s,owner:a}=e;if("skip"===t)return"skip";if("overwrite"===t||n)return"overwrite";if("merge"===t)return"overwrite";if(!r)return"overwrite";const i=r.type??"category",l=o.reduce((e,t)=>e+t.learnings.length,0),u=ZC(r.files);return"project"!==i?promptTypeMismatchStrategy({packageName:s,owner:a,localLearningsCount:l,remoteLearningsCount:u}):promptSameTypeStrategy({packageName:s,owner:a,localLearningsCount:l,remoteLearningsCount:u})}async function executePushAllRemote(t){const{packagesToPush:n,owner:r,overwrite:o,isPublic:s,isPublicExplicitlySet:a,flagStrategy:i}=t,l=e.basename(process.cwd()),u={success:!0,packagesPushed:[],skipped:[],errors:[],mergeDetails:{},overwritten:[],filePaths:{}},d=await downloadPackage({owner:r,packageName:l}),m=await resolvePushAllStrategy({flagStrategy:i,overwrite:o,existingProject:d,packagesToPush:n,projectName:l,owner:r});if("skip"===m)return u.skipped.push(...n.map(e=>e.category)),u;await writePackages({packages:n,projectName:l,owner:r,isPublic:a?s:d?.isPublic??!1,overwrite:"overwrite"===m});for(const e of n)u.packagesPushed.push(e.category),u.filePaths[e.category]=`${r}/${l}`,u.mergeDetails[e.category]={added:e.learnings.length,updated:0,unchanged:0};return d&&u.overwritten.push(...n.map(e=>e.category)),u}async function pushAllRemote(e){try{return await executePushAllRemote(e)}catch(e){return XC({pkg:"all",error:e instanceof Error?e.message:String(e)})}}__name(resolvePushAllStrategy,"resolvePushAllStrategy"),__name(executePushAllRemote,"executePushAllRemote"),__name(pushAllRemote,"pushAllRemote");var ev=__name(({pkg:e,error:t})=>({success:!1,packagesPushed:[],skipped:[],errors:[{pkg:e,error:t}],mergeDetails:{},overwritten:[],filePaths:{}}),"fail"),tv=__name(()=>({success:!0,packagesPushed:[],skipped:[],errors:[],mergeDetails:{},overwritten:[],filePaths:{}}),"emptyResult");async function writePkg(e){const{pkg:t,target:n,owner:r,isPublic:o,overwrite:s}=e;if("local-global"!==n){if(!r)throw new Error("Failed to get owner for remote push");await writePackage3({pkg:t,owner:r,isPublic:o,overwrite:s})}else await writePackage({pkg:t})}__name(writePkg,"writePkg");var nv=__name(e=>{const{target:t,category:n,owner:r}=e;return"local-global"===t?getCategoryTasteFile({target:"local-global",category:n}):"remote-project"!==t&&"remote-user"!==t||!r?void 0:`${r}/${n}`},"getDestPath");async function getUserOwner(){try{const e=await getAuthenticatedEntity();if(e.success&&e.user?.userName)return e.user.userName}catch{}}async function resolveSinglePushStrategy(e){const{flagStrategy:t,overwrite:n,existingPkg:r,target:o,tastePkg:s}=e;return"skip"===t?r?"skip":"merge":"merge"===t?"merge":"overwrite"===t||n?"overwrite":r&&"local-global"===o?promptGlobalPushStrategy({packageName:s.category,localLearningsCount:s.learnings.length,globalPkg:r}):"merge"}async function executePushStrategy(e){const{tastePkg:t,target:n,flagStrategy:r,overwrite:o,userOwner:s,isPublic:a,result:i}=e,l="local-global"===n?await getPackage({category:t.category}):await getPackage3({category:t.category}),u=await resolveSinglePushStrategy({flagStrategy:r,overwrite:o,existingPkg:l,target:n,tastePkg:t});if("skip"===u)return void i.skipped.push(t.category);if("overwrite"===u&&(await writePkg({pkg:t,target:n,owner:s,isPublic:a,overwrite:!0}),i.packagesPushed.push(t.category),i.overwritten.push(t.category),i.mergeDetails[t.category]={added:0,updated:t.learnings.length,unchanged:0}),"merge"===u){const{pkg:e,details:r}=mergeOrKeep({source:t,existing:l});await writePkg({pkg:e,target:n,owner:s,isPublic:a}),i.packagesPushed.push(t.category),i.mergeDetails[t.category]=r}const d=nv({target:n,category:t.category,owner:s});d&&(i.filePaths[t.category]=d)}async function pushSinglePackage(e){const{tastePkg:t,result:n}=e;try{await executePushStrategy(e)}catch(e){n.success=!1,n.errors.push({pkg:t.category,error:e instanceof Error?e.message:String(e)})}}async function push(e){const t=void 0!==e.isPublic,{packages:n,target:r,overwrite:o=!1,isPublic:s=!1,strategy:a}=e;if(!exists())return ev({pkg:"all",error:"No taste directory found in project"});const i=await getAllPackages2();if(0===i.length)return ev({pkg:"all",error:"No taste packages found in project"});const l=validatePackages({packages:i,label:"project"});if(l.length>0)return{success:!1,packagesPushed:[],skipped:[],errors:[...l],mergeDetails:{},overwritten:[],filePaths:{}};const u=n.length>0?i.filter(e=>n.includes(e.category)):i;if(n.length>0&&0===u.length)return{success:!1,packagesPushed:[],skipped:[],errors:n.map(e=>({pkg:e,error:"Taste package not found in project"})),mergeDetails:{},overwritten:[],filePaths:{}};const d="remote-project"===r||"remote-user"===r?e.owner??await getUserOwner():void 0;if("remote-project"===r&&0===n.length)return d?pushAllRemote({packagesToPush:u,owner:d,overwrite:o,isPublic:s,isPublicExplicitlySet:t,flagStrategy:a}):ev({pkg:"all",error:"Failed to get owner for remote push"});if("local-global"!==r&&"remote-project"!==r&&"remote-user"!==r)return ev({pkg:"all",error:`Invalid target: ${r}`});const m=tv();for(const e of u)await pushSinglePackage({tastePkg:e,target:r,flagStrategy:a,overwrite:o,userOwner:d,isPublic:s,result:m});return m}async function executeRemotePush(e){const t=void 0!==e.isPublic,{owner:n,packageName:r,overwrite:o=!1,isPublic:s=!1,strategy:a}=e,i=await getPackage2({category:r});if(!i)return ev({pkg:r,error:`Taste package '${r}' not found in local project`});const l=validateTasteFile({content:formatPackage({pkg:i}),filePath:`${i.category}/taste.md`});if(!l.valid){const e=formatValidationIssues({result:l,verbose:!0});return ev({pkg:r,error:`Validation failed:\n${e}`})}l.issues.filter(e=>"warning"===e.severity).length>0&&(console.warn(`\nWarning: Taste package '${r}' has validation warnings:\n`),console.warn(formatValidationIssues({result:l,verbose:!0})+"\n"));const u=await downloadRemotePackage({owner:n,packageName:r}),d=await resolveSinglePushStrategy({flagStrategy:a,overwrite:o,existingPkg:u,target:"remote-project",tastePkg:i}),m=t?s:u?.isPublic??!1,g=tv();if("skip"===d)return g.skipped.push(r),g;if("overwrite"===d&&(await writePackage3({pkg:i,owner:n,isPublic:m,overwrite:!0}),g.packagesPushed.push(r),g.overwritten.push(r)),"merge"===d){const{pkg:e,details:t}=mergeOrKeep({source:i,existing:u});await writePackage3({pkg:e,owner:n,isPublic:m}),g.packagesPushed.push(r),g.mergeDetails[r]=t}return g.filePaths[r]=`${n}/${r}`,g}async function pushRemote(e){const{packageName:t}=e;if(!exists())return ev({pkg:t,error:"No taste directory found in project"});try{return await executeRemotePush(e)}catch(e){return ev({pkg:t,error:e instanceof Error?e.message:String(e)})}}async function promptOwnerSelection(e){const{userName:t,orgs:n}=e;if(0===n.length)return t;const r=[{value:t,label:t,hint:"Personal"},...n.map(e=>({value:e.login,label:e.name||e.login,hint:"Organization"}))],o=await nt.select({message:"Owner",options:r,initialValue:t});return nt.isCancel(o)&&(nt.cancel("Operation cancelled"),process.exit(0)),o}function createPushCommand(){return new Ue("push").description(`Push taste packages to remote ${ne.dim("(commandcode.ai)")} or global ${ne.dim("(~/.commandcode)")}`).argument("[package]","Taste package name to push (omit with --all)").option("--all","Push all taste packages to remote").option("--remote","Push to commandcode.ai remote (default)").option("-g, --global","Push to local global storage (~/.commandcode)").addOption(new Be("--local","Use local server").hideHelp()).option("--public","Make package publicly discoverable on commandcode.ai").option("--private","Make package private (not publicly discoverable)").option("--owner <owner>","Push under a specific owner or organization").option("--overwrite","Replace existing package without prompting").option("--skip","Keep existing package, skip conflicting push").option("--merge","Auto-merge conflicting learnings without prompting").addOption(new Be("--staging","Push to staging environment").hideHelp()).action(withErrorHandler(async(e,t)=>{setPrompted(!1);const n=resolveRemoteDefault(t),r=await runPush({packageName:e,options:n});r.success||handleResultErrors(r.errors),logPushSuccess({result:r,options:n})}))}function validatePushOptions(e){const{packageName:t,options:n}=e;n.global&&n.remote&&exitWithError("--global and --remote are mutually exclusive — pick one destination"),n.public&&n.private&&exitWithError("--public and --private are mutually exclusive — pick one visibility"),n.owner&&n.global&&exitWithError("--owner only applies to remote pushes, not --global"),t||n.all||exitWithUsage({message:"Specify a taste package name or use --all to push everything",usage:[`${getBinaryCommand()} taste push <package> push a taste package to remote (default)`,`${getBinaryCommand()} taste push --all push all taste packages to remote`,`${getBinaryCommand()} taste push <package> -g push a taste package to global (~/.commandcode)`]}),t&&n.all&&exitWithError("Use either a package name or --all, not both"),resolveConflictStrategy(n)}__name(getUserOwner,"getUserOwner"),__name(resolveSinglePushStrategy,"resolveSinglePushStrategy"),__name(executePushStrategy,"executePushStrategy"),__name(pushSinglePackage,"pushSinglePackage"),__name(push,"push"),__name(executeRemotePush,"executeRemotePush"),__name(pushRemote,"pushRemote"),pn(),__name(promptOwnerSelection,"promptOwnerSelection"),__name(createPushCommand,"createPushCommand"),__name(validatePushOptions,"validatePushOptions");var rv=__name(e=>!!e.public||!e.private&&void 0,"resolveVisibility");async function validateOwnerAccess(e){let t;try{t=await fetchUserNamespaces()}catch(e){return void dlog(`[Auth] validateOwnerAccess: namespace service unavailable, skipping — ${e instanceof Error?e.message:String(e)}`)}const n=[t.userName,...t.orgs.map(e=>e.login)];n.includes(e)||exitWithError(`No push access to '${e}'. Available: ${n.join(", ")}`)}async function resolveOwnerForPush(e){const{packageName:t,owner:n}=e,r=parseOwnerPackage(t);if(r)return await validateOwnerAccess(r.owner),r;if(n)return await validateOwnerAccess(n),{owner:n,packageName:t};nt.intro(ne.dim(`pushing ${t}`)),setPrompted(!0);const o=nt.spinner();o.start("Resolving"),(await list({location:"local-project"})).some(e=>e.category===t)||(o.error("Failed"),nt.outro(ne.red(`Taste package '${t}' not found in project`)),process.exit(1));const s=await fetchUserNamespaces();return o.stop(s.orgs.length>0?"Select owner to push to":""),{owner:s.orgs.length>0?await promptOwnerSelection(s):s.userName,packageName:t}}async function runPush(e){const{packageName:t,options:n}=e;console.log("");const r=resolveRemoteDefault(n);validatePushOptions({packageName:t,options:r});const o=resolveConflictStrategy(r);return r.remote&&r.all?pushRemoteAll({options:r,strategy:o}):r.remote?pushRemoteSingle({packageName:t,options:r,strategy:o}):pushGlobal({packageName:t,options:r,strategy:o})}async function pushRemoteAll(t){const{options:n,strategy:r}=t;n.owner&&await validateOwnerAccess(n.owner);const o=(await getAllPackages2()).length,s=`${o} ${1===o?"package":"packages"}`,a=e.basename(process.cwd()),i=resolveStrategyLabel({strategy:r,isRemote:!0});console.log(ne.dim(` Pushing ${s} to ${a} (remote)${i}`)),console.log(""),setActiveSpinner(We("Pushing taste packages").start());const l=await push({packages:[],target:"remote-project",overwrite:n.overwrite,isPublic:rv(n),strategy:r,owner:n.owner});return stopActiveSpinner(),l}async function pushRemoteSingle(e){const{packageName:t,options:n,strategy:r}=e,{owner:o,packageName:s}=await resolveOwnerForPush({packageName:t,owner:n.owner});startPushSpinner({owner:o,pkgName:s});const a=await pushRemote({owner:o,packageName:s,overwrite:n.overwrite,isPublic:rv(n),strategy:r});return stopActiveSpinner(`Pushed to ${o}/${s}`),a}function resolveStrategyLabel(e){const{strategy:t,isRemote:n=!1}=e;return"overwrite"===t?" · overwrite":"skip"===t?" · skip conflicts":"merge"===t?" · auto-merge":n?"":" · will prompt on conflicts"}function startPushSpinner(e){const{owner:t,pkgName:n}=e;if(wasPrompted()){const e=nt.spinner();return e.start(`Pushing to ${t}/${n}`),void setActiveSpinner(e)}setActiveSpinner(We("Pushing taste package").start())}async function pushGlobal(e){const{packageName:t,options:n,strategy:r}=e,o=n.all||!t?[]:[t],s=await getAllPackages2(),a=o.length>0?o.length:s.length,i=`${a} ${1===a?"package":"packages"}`,l=shortenPath(getTastePath({target:"local-global"})),u=resolveStrategyLabel({strategy:r});console.log(ne.dim(` Pushing ${i} to ${l}${u}`)),console.log(""),setActiveSpinner(We("Pushing taste packages").start());const d=await push({packages:o,target:"local-global",overwrite:n.overwrite,strategy:r});return stopActiveSpinner(),d}function createTasteCommand(){const e=new Ue(Vt.TASTE);return e.description("Manage taste learning packages").allowUnknownOption().allowExcessArguments(),e.addCommand(createPushCommand()),e.addCommand(createPullCommand()),e.addCommand(createListCommand()),e.addCommand(createLintCommand()),e.addCommand(createOpenCommand()),isExperimentalEnabled()&&e.addCommand(createLearnCommand()),e}function formatVersion(e,t,n=!1){const r=n?Te.bold(Te.green(t)):Te.white(t);return`${Te.dim(e)} ${r}`}function showVersionDetails(e){console.log(formatVersion("Current:",e.currentVersion)),console.log(formatVersion("Latest: ",e.latestVersion,!0)),console.log(""),console.log(`Run ${Te.bold(Te.green(`${getBinaryCommand()} update`))} to install.`)}function showUpdateSuccessHint(){console.log(Te.dim(`Run ${Te.cyan(getBinaryCommand())} to start using the new version.`))}function showManualUpdateHint(e){console.log(Te.dim("Try updating manually:")),console.log(Te.cyan(`npm i -g command-code@${e}`))}function showCheckFailure(){console.log(Te.dim("Please check your internet connection or try again later."))}async function checkAction(){const e=We("Checking for updates...").start(),t=await checkForUpdateAvailable();if(!t)return e.fail("Failed to check for updates"),void showCheckFailure();t.updateAvailable?(e.stop(),console.log(""),console.log(`${Te.green(He.tick)} Update available`),showVersionDetails(t)):e.succeed(`Up to date ${Te.dim(`(${t.currentVersion})`)}`)}async function performUpdateAction(){const e=We("Checking for updates...").start(),t=await checkForUpdateAvailable();if(!t)return e.fail("Failed to check for updates"),void showCheckFailure();t.updateAvailable?(e.text=`Updating ${t.currentVersion} ${He.arrowRight} ${t.latestVersion}...`,(await performAutoUpdate({silent:!0,updateInfo:t})).success||(e.fail("Update failed"),trackError({error:sanitizeErrorForTelemetry({error:new Error("Update failed"),label:"cli_update_failed"}),context:{component:ms.UPDATE_COMMAND,heading:"CLI update failed","update.current_version":t.currentVersion,"update.target_version":t.latestVersion}}),showManualUpdateHint(t.latestVersion),await shutdownTelemetry(),process.exit(1)),e.succeed(`Updated to v${t.latestVersion}`),showUpdateSuccessHint()):e.succeed(`Up to date ${Te.dim(`(${t.currentVersion})`)}`)}async function updateAction(e){e.checkOnly?await checkAction():await performUpdateAction()}__name(validateOwnerAccess,"validateOwnerAccess"),__name(resolveOwnerForPush,"resolveOwnerForPush"),__name(runPush,"runPush"),__name(pushRemoteAll,"pushRemoteAll"),__name(pushRemoteSingle,"pushRemoteSingle"),__name(resolveStrategyLabel,"resolveStrategyLabel"),__name(startPushSpinner,"startPushSpinner"),__name(pushGlobal,"pushGlobal"),__name(createTasteCommand,"createTasteCommand"),pn(),wn(),__name(formatVersion,"formatVersion"),__name(showVersionDetails,"showVersionDetails"),__name(showUpdateSuccessHint,"showUpdateSuccessHint"),__name(showManualUpdateHint,"showManualUpdateHint"),__name(showCheckFailure,"showCheckFailure"),__name(checkAction,"checkAction"),__name(performUpdateAction,"performUpdateAction"),__name(updateAction,"updateAction");var ov=new Ue("update").description("Update Command Code to the latest version").option("--check-only","Check for updates without installing").allowUnknownOption().allowExcessArguments().action(updateAction);pn(),wn();var sv=__name((e,t)=>`${He.info} ${e}: ${Te.cyan(t)}`,"formatInfoLine"),av=__name(e=>Te.bold(`${e}:`),"formatSectionHeader"),iv=__name(e=>Te.red(e),"formatError"),lv=__name(e=>e instanceof Error?e.message:"Unknown error","formatErrorMessage"),cv=__name(e=>["",av("User Information"),sv("Name",e.name),sv("Email",e.email),sv("Username",e.userName)],"buildUserOutput"),uv=__name(e=>["",av("Organization"),sv("Name",e.name),sv("Login",e.login)],"buildOrgOutput"),dv=__name(e=>{e.forEach(e=>console.log(e))},"printLines"),mv=__name((e,t)=>{dv(cv(e)),t&&dv(uv(t)),console.log("")},"displayUserInfo"),pv=__name(e=>null!==e&&e.length>0,"validateApiKey"),gv=__name(e=>e.success&&null!==e.user,"validateUserData"),hv=`Not authenticated. Please login using "${getBinaryCommand()} auth login"`;async function whoamiAction(){const e=We("Fetching user information...").start();try{const t=await getAuthKey();pv(t)||(e.fail(iv(hv)),process.exit(1));const n=await getAuthenticatedEntity();gv(n)||(e.fail(iv("Failed to fetch user info")),process.exit(1)),e.succeed("User information loaded"),mv(n.user,n.org)}catch(t){e.fail(iv(`Error: ${lv(t)}`)),process.exit(1)}}__name(whoamiAction,"whoamiAction");var fv=new Ue("whoami").description("Display current user information").allowUnknownOption().allowExcessArguments().action(whoamiAction);function normalizeGitUrl(e){let t=e.trim();const n=t.match(/^git@([^:]+):(.+?)(?:\.git)?$/);return n?`https://${n[1]}/${n[2]}`:(t=t.replace(/\.git$/,""),t)}function validateGitRepo(){try{if("true"!==Ne("git rev-parse --is-inside-work-tree",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim())throw new Error("Not inside a git repository.")}catch{throw new Error("Sandbox requires a git repository with a GitHub remote.")}let e;try{e=Ne("git remote get-url origin",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{throw new Error("No GitHub remote found. Add one with: git remote add origin https://github.com/you/repo")}const t=normalizeGitUrl(e);let n;try{n=Ne("git branch --show-current",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{throw new Error("Failed to determine current branch.")}if(!n)throw new Error("Detached HEAD state. Please checkout a branch first.");if(!/^[\w./-]+$/.test(n))throw new Error("Branch name contains invalid characters. Please use a simpler branch name.");try{if(!Ne(`git ls-remote --heads origin ${n}`,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim())throw new Error(`Branch "${n}" not found on remote. Push it first: git push -u origin ${n}`)}catch(e){if(e instanceof Error&&e.message.includes("not found on remote"))throw e;throw new Error(`Branch "${n}" not found on remote. Push it first: git push -u origin ${n}`)}return{repoUrl:t,branch:n,isClean:""===Ne("git status --porcelain",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}}pn(),pn(),wn(),pn(),__name(normalizeGitUrl,"normalizeGitUrl"),__name(validateGitRepo,"validateGitRepo"),pn(),pn();var yv=["completed","failed","cancelled","timed_out"];function isTerminalStatus(e){return yv.includes(e)}__name(isTerminalStatus,"isTerminalStatus"),wn();var wv={setting_up:"Setting up sandbox...",cloning:"Cloning repository..."};function stopAllSpinners({state:e}){e.workingSpinner&&(e.workingSpinner.stop(),e.workingSpinner=null),e.currentSpinner&&(e.currentSpinner.stop(),e.currentSpinner=null)}function renderStatusEvent({event:e,state:t}){const n=e.data.status,r=wv[n],o="setup"===t.phase;if(t.isResume&&o&&!isTerminalStatus(n)&&"running"!==n)r&&t.workingSpinner&&(t.workingSpinner.text=r);else{if(r&&o&&(t.currentSpinner&&t.currentSpinner.succeed(),t.currentSpinner=We({stream:process.stderr,text:r}).start()),"running"===n)return t.currentSpinner&&(t.currentSpinner.succeed(),t.currentSpinner=null),t.phase="running",void(t.workingSpinner||(t.workingSpinner=We({stream:process.stderr}).start()));if("completed"===n){t.workingSpinner&&(t.workingSpinner.succeed("Session completed"),t.workingSpinner=null),t.currentSpinner&&(t.currentSpinner.succeed(),t.currentSpinner=null),t.phase="done";const n=e.data.prUrl;return void(n&&console.error(`PR: ${Te.cyan(n)}`))}if("failed"===n){const n=e.data.message||"Unknown error";return t.workingSpinner&&(t.workingSpinner.fail(n),t.workingSpinner=null),t.currentSpinner&&(t.currentSpinner.fail(n),t.currentSpinner=null),void(t.phase="done")}if("timed_out"===n)return t.workingSpinner&&(t.workingSpinner.fail("Session timed out"),t.workingSpinner=null),t.currentSpinner&&(t.currentSpinner.fail("Timed out"),t.currentSpinner=null),void(t.phase="done");"cancelled"===n&&(stopAllSpinners({state:t}),t.phase="done",console.error(`\n${Te.yellow("Cancelled.")}`))}}function renderEvent({event:e,state:t}){if("status"!==e.type){if("pty"===e.type){const n=e.data.content;return void(n&&(t.workingSpinner&&t.workingSpinner.stop(),process.stdout.write(n),t.workingSpinner&&t.workingSpinner.start()))}if("error"===e.type){t.currentSpinner&&(t.currentSpinner.fail(),t.currentSpinner=null);const n=e.data.message;console.error(`${He.cross} ${Te.red(n)}`)}}else renderStatusEvent({event:e,state:t})}function setupInputHandling({callbacks:e}){const t=__name(t=>{3===t[0]?e.onCancel():4===t[0]&&e.onDetach()},"onStdinData"),n=process.rawListeners("SIGINT").slice();return process.removeAllListeners("SIGINT"),process.stdin.isTTY?(process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.on("data",t),process.on("SIGINT",()=>{})):process.on("SIGINT",()=>e.onCancel()),()=>{process.stdin.isTTY&&(process.stdin.removeListener("data",t),process.stdin.setRawMode(!1),process.stdin.pause()),process.removeAllListeners("SIGINT");for(const e of n)process.on("SIGINT",e)}}function setupResizeForwarding({ws:e}){const t=__name(()=>{e.readyState===WebSocket.OPEN&&e.send(JSON.stringify({action:"resize",cols:process.stdout.columns,rows:process.stdout.rows}))},"onResize");return process.stdout.on("resize",t),()=>process.stdout.removeListener("resize",t)}function sendTerminalSize({ws:e}){e.send(JSON.stringify({action:"resize",cols:process.stdout.columns||120,rows:process.stdout.rows||30}))}async function streamSession({sessionId:e,prompt:t,lastEventId:n=0,isResume:r=!1}){const o=getApiBaseUrl().replace(/^http/,"ws"),s=await getAuthKey();if(!s)throw new Error(`Not authenticated. Run: ${getBinaryCommand()} login`);const a=new URLSearchParams({token:s,...n>0?{lastEventId:String(n)}:{}}),i=`${o}/alpha/sandbox/stream/${e}?${a.toString()}`;return new Promise((t,o)=>{const s=new WebSocket(i),a={currentSpinner:null,workingSpinner:null,phase:"setup",lastEventId:n,isResume:r};r&&(a.currentSpinner=We({stream:process.stderr,text:"Reconnecting..."}).start());const l=__name(()=>{a.phase="done",stopAllSpinners({state:a}),s.close(),console.error(`\n${Te.yellow("Detached.")} Session still running.`),console.error(`Resume with: ${Te.cyan(`${getBinaryCommand()} --experimental sandbox --id ${e}`)}`),g(),t()},"detach"),u=__name(()=>{a.phase="done",stopAllSpinners({state:a}),s.readyState===WebSocket.OPEN&&s.send(JSON.stringify({action:"cancel"})),s.close(),console.error(`\n${Te.yellow("Sandbox stopped.")}`),g(),t()},"cancelSandbox"),d=setupResizeForwarding({ws:s}),m=setupInputHandling({callbacks:{onCancel:u,onDetach:l}});process.once("SIGTERM",l);const g=__name(()=>{d(),m(),process.removeListener("SIGTERM",l)},"teardown");s.addEventListener("open",()=>{sendTerminalSize({ws:s}),a.currentSpinner&&(a.currentSpinner.stop(),a.currentSpinner=null),console.error(""),console.error(`${Te.yellow("[Ctrl+C]")} ${Te.dim("stop")} ${Te.yellow("[Ctrl+D]")} ${Te.dim("detach")}`),console.error(`${Te.dim("Session:")} ${Te.gray(e)}`),console.error(""),r&&(a.workingSpinner=We({stream:process.stderr}).start())}),s.addEventListener("message",e=>{try{const n="string"==typeof e.data?e.data:e.data.toString(),r=JSON.parse(n);renderEvent({event:r,state:a}),void 0!==r.id&&(a.lastEventId=r.id),"status"===r.type&&isTerminalStatus(r.data.status)&&(s.close(),g(),t())}catch{}}),s.addEventListener("error",()=>{g(),a.currentSpinner&&(a.currentSpinner.fail("Connection error"),a.currentSpinner=null),o(new Error("WebSocket connection failed"))}),s.addEventListener("close",()=>{"done"!==a.phase&&(a.phase="done",stopAllSpinners({state:a}),g(),console.error(`\n${Te.yellow("Disconnected.")} Session still running.`),console.error(`Resume with: ${Te.cyan(`${getBinaryCommand()} --experimental sandbox --id ${e}`)}`),t())})})}function readLocalConfigFiles(){let e="",t="";try{e=S.readFileSync(getAuthFile(),"utf-8")}catch{}try{t=S.readFileSync(getConfigFile(),"utf-8")}catch{}return{auth:e,config:t}}async function askQuestion(e){const t=ht.createInterface({input:process.stdin,output:process.stderr});return new Promise(n=>{t.question(e,e=>{t.close(),n(e)})})}async function startSandboxSession({repoUrl:e,branch:t,prompt:n,isInternalTeam:r,configFiles:o}){return new Nu({baseUrl:getApiBaseUrl()}).post({endpoint:Dt.ALPHA.SANDBOX.START,body:{repoUrl:e,branch:t,prompt:n,isInternalTeam:r,configFiles:o}})}async function sandboxMode({prompt:e,resume:t}){t&&(await streamSession({sessionId:t,isResume:!0}),process.exit(0)),await ensureAuthenticated()||process.exit(1);const n=validateGitRepo();n.isClean||console.error(Te.yellow("Warning: You have uncommitted changes. The sandbox clones from remote, so local changes won't be included."));const r=isInternalTeamFlagPresent(),o=readLocalConfigFiles(),s=e||await askQuestion(`${Te.bold("What do you want to do?")}\n${Te.cyan(">")} `);if(!s.trim())return void console.error(Te.yellow("No prompt provided. Aborting."));const a=s.trim().slice(0,Kt.MAX_PROMPT_CHARS),i=We({stream:process.stderr,text:"Starting sandbox session..."}).start();try{const e=await startSandboxSession({repoUrl:n.repoUrl,branch:n.branch,prompt:a,isInternalTeam:r,configFiles:o});i.succeed("Sandbox started"),await streamSession({sessionId:e.sessionId,prompt:a}),process.exit(0)}catch(e){i.fail("Failed to start sandbox session");const t=e instanceof ks,r=t?e.code:void 0;if(401===(t?e.status:void 0)||"UNAUTHORIZED"===r)console.error(Te.red(`\nAuthentication failed. Try logging in again: ${getBinaryCommand()} login`));else if("GITHUB_APP_NOT_INSTALLED"===r){const e=Te.cyan(Te.underline(n.repoUrl)),t=Te.cyan(Te.underline("https://github.com/apps/command-code-ai/installations/new"));console.error(`\n${Te.red("✖")} Command Code GitHub App isn't installed on ${e}`),console.error(` Install it here: ${t}`),console.error(Te.dim(" Then run this command again."))}else{const n=t&&"string"==typeof e.message?e.message:"Something went wrong. Please try again.";console.error(Te.red(`\n${n}`))}process.exit(1)}}function createSandboxCommand(){return new Ue("sandbox").description("Run a task autonomously in a sandbox").argument("[prompt]","Task description").option("--id <sessionId>","Resume an existing sandbox session").enablePositionalOptions().action(async(e,t)=>{try{await sandboxMode({prompt:e,resume:t.id})}catch(e){const t=e instanceof Error?e.message:"Unknown error";console.error(Te.red(t)),process.exit(1)}})}function validateSafeString(e,t){if(e.includes("..")||e.includes("\\"))throw new Error(`Invalid ${t}: path traversal sequences are not allowed.\nExpected format: owner/repo or owner/repo/path`);if(!/^[a-zA-Z0-9._/-]+$/.test(e))throw new Error(`Invalid ${t}: contains unsupported characters.\nOnly letters, numbers, hyphens, underscores, dots, and slashes are allowed.`)}function parseGitHubRepo(e){let t,n=e.replace(/^https?:\/\/github\.com\//,"");const r=n.lastIndexOf("@");r>0&&r<n.length-1&&(t=n.slice(r+1),n=n.slice(0,r),validateSafeString(t,"branch name"));const o=n.split("/");if(o.length<2)throw new Error("Invalid GitHub repository format. Expected: owner/repo or owner/repo/path");const[s,a,...i]=o;validateSafeString(s,"owner"),validateSafeString(a,"repository");const l=i.length>0?i.join("/"):void 0;return l&&validateSafeString(l,"path"),{owner:s,repo:a,path:l,branch:t}}function buildGigetSource(e){const{owner:t,repo:n,path:r,branch:o}=e;let s=`gh:${t}/${n}`;return r&&(s+=`/${r}`),o&&(s+=`#${o}`),s}async function fetchSkillFromGitHub(e){await cleanupStaleTempDirectories();const n=parseGitHubRepo(e),{owner:r,repo:o,path:s}=n;let a;if(s){const e=s.split("/").filter(Boolean);a=e[e.length-1]}else a=o;const i=t.join(D.tmpdir(),`commandcode-skill-${Q()}`);await U.mkdir(i,{recursive:!0});try{const e=buildGigetSource(n),{downloadTemplate:s}=await import("giget");try{await s(e,{dir:i,force:!0,silent:!0})}catch(t){if(!isCorruptedArchiveError(t))throw t;await clearGigetCache(r,o),await s(e,{dir:i,force:!0,silent:!0})}const l=t.join(i,"SKILL.md"),u=t.join(i,"skill.md");let d=!1;try{await U.access(l),d=!0}catch{}if(!d)try{await U.access(u),d=!0}catch{}if(!d)throw new Error(`SKILL.md not found in ${e}. Make sure the repository contains a SKILL.md file.`);return{tempDir:i,skillName:a}}catch(e){if(await U.rm(i,{recursive:!0,force:!0}).catch(()=>{}),e instanceof Error&&e.message.includes("SKILL.md not found"))throw e;throw wrapFetchError(e,r,o)}}async function discoverSkillsInRepo(e,t){const n=parseGitHubRepo(e),{owner:r,repo:o,path:s,branch:a}=n,{keepTempDir:i=!1}=t||{},{discoverSkillsLocally:l}=await Promise.resolve().then(()=>(Kn(),Vn)),u=await l({owner:r,repo:o,path:s,branch:a,keepTempDir:i});if(0===u.skills.length)throw new Error(`No skills found in repository ${r}/${o}${s?` at path "${s}"`:""}. Ensure the repository contains SKILL.md files.`);return u}async function resolveSkillMdPath(e){const n=t.join(e,"SKILL.md");try{return await U.access(n),n}catch{}const r=t.join(e,"skill.md");try{return await U.access(r),r}catch{}throw new Error(`SKILL.md not found in ${e}`)}function validateSkillName(e){const t=e.trim();if(!t||0===t.length)throw new Error("Invalid skill name: name cannot be empty");if(t.includes("/")||t.includes("\\"))throw new Error(`Invalid skill name: "${e}". Skill names cannot contain path separators (/ or \\).`);if(t.includes(".."))throw new Error(`Invalid skill name: "${e}". Skill names cannot contain parent directory references (..).`);if(t.startsWith("."))throw new Error(`Invalid skill name: "${e}". Skill names cannot start with a dot.`);if(!/^[a-z0-9-]+$/.test(t))throw new Error(`Invalid skill name: "${e}". Skill names must contain only lowercase letters, numbers, and hyphens.`);return t}async function validateSkillContent(e){const t=await resolveSkillMdPath(e),n=await U.readFile(t,"utf-8"),{data:r}=ee(n),o=Fl.parse(r);return{name:validateSkillName(o.name),description:o.description}}async function skillExists(e){const{skillName:n,location:r}=e,o="global"===r?getGlobalSkillsDir():getProjectSkillsDir(),s=t.join(o,n);try{return await U.access(s),!0}catch{return!1}}async function discoverSkills(e,t){return discoverSkillsInRepo(e,t)}async function installSkill(e){const{repoInput:n,options:r={}}=e,{global:o=!1,force:s=!1,skillName:a,discoveredSkill:i,cachedTempDir:l}=r;let u,d,m=n;if(a){let e;if(i)e=i;else{const t=await discoverSkillsInRepo(n);if(0===t.skills.length)throw new Error(`No skills found in repository: ${n}`);const r=t.skills.find(e=>e.name.toLowerCase()===a.toLowerCase());if(!r){const e=t.skills.map(e=>e.name).join(", ");throw new Error(`Skill "${a}" not found in repository. Available skills: ${e}`)}e=r}const t=parseGitHubRepo(n),r=[t.path,e.path&&"."!==e.path?e.path:void 0].filter(Boolean).join("/"),o=r?`${t.owner}/${t.repo}/${r}`:`${t.owner}/${t.repo}`;m=t.branch?`${o}@${t.branch}`:o}if(l&&i){u=i.path&&"."!==i.path?t.join(l,i.path):l,d=!1;try{await resolveSkillMdPath(u)}catch{const e=i.path&&"."!==i.path?`at ${i.path}`:"at root";throw new Error(`SKILL.md not found in cached directory ${e}. Make sure the repository contains a SKILL.md file.`)}}else u=(await fetchSkillFromGitHub(m)).tempDir,d=!0;try{const{name:e,description:n}=await validateSkillContent(u),r=e,a=o?"global":"project",i="global"===a?getGlobalSkillsDir():getProjectSkillsDir(),l=await skillExists({skillName:r,location:a});if(l&&!s)throw new Error(`Skill "${r}" already exists in ${"global"===a?"~/.commandcode/skills/":".commandcode/skills/"}. Use --force to overwrite.`);await U.mkdir(i,{recursive:!0});const d=t.join(i,r),{randomUUID:m}=await import("crypto"),g=t.join(i,`.${r}.tmp.${m()}`);try{await U.cp(u,g,{recursive:!0,force:!0,dereference:!1}),l&&s&&await U.rm(d,{recursive:!0,force:!0}),await U.rename(g,d)}catch(e){if(await U.rm(g,{recursive:!0,force:!0}).catch(()=>{}),e instanceof Error&&"code"in e&&("EEXIST"===e.code||"ENOTEMPTY"===e.code))throw new Error(`Skill "${r}" was created by another process during installation. Use --force to overwrite.`);throw e}let h;try{h=await resolveSkillMdPath(d)}catch{h=t.join(d,"SKILL.md")}return{name:r,description:n,location:a,path:h}}finally{d&&await U.rm(u,{recursive:!0,force:!0}).catch(()=>{})}}async function removeSkill(e){const{global:n=!1}=e,r=validateSkillName(e.skillName),o=n?"global":"project",s="global"===o?getGlobalSkillsDir():getProjectSkillsDir(),a=t.join(s,r);if(!await skillExists({skillName:r,location:o}))throw new Error(`Skill "${r}" not found in ${"global"===o?"global (~/.commandcode/skills/)":"project (.commandcode/skills/)"} skills.${"global"===o?"":" Use -g/--global to check global skills."}`);await U.rm(a,{recursive:!0,force:!0})}async function listSkills(){const{global:e,project:t,warnings:n}=await loadAllSkillSummariesWithWarnings(),r=getBundledSkillsDir(),o=[],s=[];for(const t of e){const e={name:t.name,description:t.description,location:isBundledSkillPath({filePath:t.filePath,bundledDir:r})?"bundled":"global",path:t.filePath};("bundled"===e.location?o:s).push(e)}return{global:s,project:t.map(e=>({name:e.name,description:e.description,location:"project",path:e.filePath})),bundled:o,warnings:n}}__name(stopAllSpinners,"stopAllSpinners"),__name(renderStatusEvent,"renderStatusEvent"),__name(renderEvent,"renderEvent"),__name(setupInputHandling,"setupInputHandling"),__name(setupResizeForwarding,"setupResizeForwarding"),__name(sendTerminalSize,"sendTerminalSize"),__name(streamSession,"streamSession"),__name(readLocalConfigFiles,"readLocalConfigFiles"),__name(askQuestion,"askQuestion"),__name(startSandboxSession,"startSandboxSession"),__name(sandboxMode,"sandboxMode"),__name(createSandboxCommand,"createSandboxCommand"),pn(),pn(),wn(),pn(),pn(),qn(),__name(validateSafeString,"validateSafeString"),__name(parseGitHubRepo,"parseGitHubRepo"),__name(buildGigetSource,"buildGigetSource"),__name(fetchSkillFromGitHub,"fetchSkillFromGitHub"),__name(discoverSkillsInRepo,"discoverSkillsInRepo"),__name(resolveSkillMdPath,"resolveSkillMdPath"),__name(validateSkillName,"validateSkillName"),__name(validateSkillContent,"validateSkillContent"),__name(skillExists,"skillExists"),__name(discoverSkills,"discoverSkills"),__name(installSkill,"installSkill"),__name(removeSkill,"removeSkill"),__name(listSkills,"listSkills");var Sv=[`${Te.dim("Usage:")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("<owner/repo>")}`,"",`${Te.dim("Examples:")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/my-skills")} ${Te.dim("# single-skill repo")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/skills/path/to/skill")} ${Te.dim("# specific path in repo")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/multi-skills -s my-skill")} ${Te.dim("# pick one from multi-skill repo")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/repo@branch")} ${Te.dim("# specific branch")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/repo --global")} ${Te.dim("# install to ~/.commandcode/skills/")}`],Ev=__name((e,t)=>`${Te.green(He.tick)} Installed ${Te.cyan(e)} ${Te.dim(`${He.arrowRight} ${t}/`)}`,"formatInstalled"),bv=__name(e=>`${Te.red(He.cross)} ${e}`,"formatError");async function cleanupAndExit(e,t){e&&await H(e,{recursive:!0,force:!0}).catch(()=>{}),process.exit(t)}function validateRepoFormat(e){(e.startsWith(".")||e.startsWith("/")||e.startsWith("~"))&&(console.error(bv("Local paths are not supported. Skills must be installed from GitHub.")),console.log(""),Sv.forEach(e=>console.log(e)),process.exit(1));const t=e.replace(/^https?:\/\/github\.com\//,""),n=t.lastIndexOf("@");(n>0?t.slice(0,n):t).split("/").filter(Boolean).length<2&&(console.error(bv(`Invalid repository: "${e}"`)),console.log(""),console.log(`Expected format: ${Te.cyan("owner/repo")} or ${Te.cyan("owner/repo/path")}`),console.log(""),Sv.forEach(e=>console.log(e)),process.exit(1))}async function addAction(e,t){const n=process.stdout.isTTY&&process.stdin.isTTY,r=t.global?"~/.commandcode/skills":".commandcode/skills";let o;validateRepoFormat(e);const s=We({text:`Fetching ${Te.cyan(e)}...`,color:"cyan"});try{let a=[];s.start();const i=await discoverSkills(e,{keepTempDir:!0}),{skills:l,tempDir:u}=i;if(o=u,s.stop(),0===l.length&&(console.error(bv(`No skills found in ${Te.cyan(e)}`)),console.log(Te.dim("The repository must contain at least one SKILL.md file.")),await cleanupAndExit(o,1)),t.skill){const n=l.find(e=>e.name.toLowerCase()===t.skill.toLowerCase());n||(console.error(bv(`Skill "${t.skill}" not found in ${Te.cyan(e)}`)),console.log(""),console.log(Te.dim("Available skills:")),l.forEach(e=>console.log(` ${Te.cyan(e.name)}`)),await cleanupAndExit(o,1)),a=[n]}else if(1===l.length)a=[l[0]];else if(n){const t=await rt({message:`Select skills to install from ${e}`,options:l.map(e=>({value:e.name,label:e.name})),required:!0});"symbol"==typeof t&&(console.log(Te.dim("Cancelled")),await cleanupAndExit(o,0));const n=t;a=l.filter(e=>n.includes(e.name))}else a=l;let d=0;for(const n of a)try{const s=We({text:`Installing ${Te.cyan(n.name)}...`,color:"cyan"});s.start();const a=await installSkill({repoInput:e,options:{global:t.global,force:t.force,skillName:n.name,discoveredSkill:n,cachedTempDir:o}});s.stop(),console.log(Ev(a.name,r))}catch(e){d++;const t=e instanceof Error?e.message:String(e);console.error(bv(`Failed to install "${n.name}"`)),console.log(Te.dim(` ${t}`))}await cleanupAndExit(o,d>0?1:0)}catch(e){s.stop();const t=e instanceof Error?e.message:String(e);console.error(bv(t)),await cleanupAndExit(o,1)}}__name(cleanupAndExit,"cleanupAndExit"),__name(validateRepoFormat,"validateRepoFormat"),__name(addAction,"addAction");var kv=new Ue("add").description("Install a skill from a GitHub repository").argument("<repo>","GitHub repository (owner/repo or owner/repo/path)").option("-g, --global","Install to global skills (~/.commandcode/skills/)").option("-f, --force","Overwrite if skill already exists").option("-s, --skill <name>","Specific skill name to install from repo").addHelpText("after",`\n${Sv.join("\n")}`).configureOutput({outputError:__name((e,t)=>{e.includes("missing required argument")?(console.error(bv("No repository specified.")),console.log(""),Sv.forEach(e=>console.log(e))):t(e)},"outputError")}).action(addAction);pn(),wn();var Cv=__name((e,t)=>`${Te.green(He.tick)} Removed ${Te.cyan(e)} from ${t} skills`,"formatRemoved"),vv=__name(e=>`${Te.red(He.cross)} ${e}`,"formatError");function validateSkillNameEarly(e){return e.includes("/")||e.includes("\\")?`"${e}" is not a valid skill name — it cannot contain path separators.`:e.includes("..")?`"${e}" is not a valid skill name — it cannot contain "..".`:e.startsWith(".")?`"${e}" is not a valid skill name — it cannot start with a dot.`:/^[a-z0-9-]+$/.test(e.trim())?null:`"${e}" is not a valid skill name — use only lowercase letters, numbers, and hyphens.`}async function removeAction(e,t){try{const n=process.stdout.isTTY&&process.stdin.isTTY,r=t.global?"global":"project",o=validateSkillNameEarly(e);if(o&&(console.error(vv(o)),console.log(Te.dim(`Run ${Te.cyan(`${getBinaryCommand()} skills list`)} to see installed skills.`)),process.exit(1)),!t.yes&&n){const t=await ot({message:`Remove ${Te.cyan(e)} from ${r} skills?`});"symbol"!=typeof t&&t||(console.log(Te.dim("Cancelled")),process.exit(0))}await removeSkill({skillName:e,global:t.global}),console.log(Cv(e,r)),process.exit(0)}catch(n){const r=n instanceof Error?n.message:"Failed to remove skill";r.includes("not found")?(console.error(vv(`Skill "${e}" not found in ${t.global?"global":"project"} skills`)),t.global||console.log(Te.dim(`Try ${Te.cyan(`${getBinaryCommand()} skills remove ${e} --global`)} to check global skills.`)),console.log(Te.dim(`Run ${Te.cyan(`${getBinaryCommand()} skills list`)} to see installed skills.`))):console.error(vv(r)),process.exit(1)}}__name(validateSkillNameEarly,"validateSkillNameEarly"),__name(removeAction,"removeAction");var Tv=new Ue("remove").description("Remove an installed skill").argument("<skill-name>","Name of the skill to remove").option("-g, --global","Remove from global skills (~/.commandcode/skills/)").option("-y, --yes","Skip confirmation prompt").action(removeAction);pn(),wn();var xv=__name((e,t)=>{const n=t.length>60?t.substring(0,57)+"...":t;return` ${Te.cyan(e)} ${Te.dim(`· ${n}`)}`},"formatSkillLine"),Pv=__name((e,t)=>`${Te.bold(Te.white(e))} ${Te.dim(`(${t})`)}`,"formatSectionHeader"),Av=__name(e=>{if(0===e.length)return;const t=groupWarnings(e);console.log(""),console.log(`${Te.bold(Te.yellow("Skipped"))} ${Te.dim(`(${e.length})`)}`);for(const e of t){console.log(""),console.log(` ${Te.bold(e.category)} ${Te.dim(`(${e.items.length})`)}`);for(const t of e.items)console.log(` ${Te.bold(skillIdentifier(t.path))}`),console.log(` ${Te.dim(t.reason)}`)}},"printWarnings"),Iv=__name(()=>{const e=process.cwd(),n=t.join(e,".commandcode","skills"),r=t.join(e,".agents","skills"),o=getProjectSkillsDir(),s=getProjectAgentsCompatSkillsDir(),a=["",Te.dim("No skills installed."),"",Te.dim("Looking in:"),Te.dim(` ${getGlobalSkillsDir()} ${Te.white("(global)")}`),Te.dim(` ${getGlobalAgentsCompatSkillsDir()} ${Te.white("(global, .agents)")}`)];return n!==o&&a.push(Te.dim(` ${n} ${Te.white("(cwd)")}`)),r!==s&&a.push(Te.dim(` ${r} ${Te.white("(cwd, .agents)")}`)),a.push(Te.dim(` ${o} ${Te.white("(project)")}`),Te.dim(` ${s} ${Te.white("(project, .agents)")}`),"",`Install a skill: ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.dim("<owner/repo>")}`,""),a},"formatEmptyHint"),Mv=__name(e=>{e.forEach(e=>console.log(e))},"printLines");async function listAction(){const e="true"===process.env.DEBUG;try{const{global:t,project:n,bundled:r,warnings:o}=await listSkills(),s=t.length+n.length,a=__name(()=>{e||0===o.length||(console.log(""),console.log(Te.dim(`${o.length} skill${1===o.length?"":"s"} skipped · run with ${Te.cyan("--debug")} to see issues`)))},"printDebugHint");0===s&&(Mv(Iv()),r.length>0&&(console.log(Pv("Bundled",r.length)),r.forEach(e=>{console.log(xv(e.name,e.description))}),console.log("")),e&&(Av(o),o.length>0&&console.log("")),e||(a(),console.log("")),process.exit(0)),console.log(""),console.log(heading({text:"Skills",sub:Te.dim(`${s} installed`)})),n.length>0&&(console.log(""),console.log(Pv("Project",n.length)),n.forEach(e=>{console.log(xv(e.name,e.description))})),t.length>0&&(console.log(""),console.log(Pv("Global",t.length)),t.forEach(e=>{console.log(xv(e.name,e.description))})),r.length>0&&(console.log(""),console.log(Pv("Bundled",r.length)),r.forEach(e=>{console.log(xv(e.name,e.description))})),e&&Av(o),e||a(),console.log(""),process.exit(0)}catch(e){const t=e instanceof Error?e.message:"Unknown error";console.error(`${Te.red(He.cross)} Failed to list skills: ${t}`),process.exit(1)}}__name(listAction,"listAction");var Rv=new Ue("list").description("List all installed skills. Run with -d/--debug to also see why any skills were skipped.").action(listAction),_v=new Ue("skills").description("Manage skills from GitHub repositories").addCommand(kv).addCommand(Tv).addCommand(Rv);pn(),pn(),pn();var Dv="command-code:device-fingerprint:v1";pn();var Nv=yt(Le);async function safeExec(e,t){try{const{stdout:n}=await Nv(e,t,{timeout:800,encoding:"utf8"});return n.trim()}catch{return""}}async function readMachineId(){try{if("darwin"===process.platform){const e=(await safeExec("ioreg",["-rd1","-c","IOPlatformExpertDevice"])).match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/);return e?.[1]??""}if("linux"===process.platform){for(const e of["/etc/machine-id","/var/lib/dbus/machine-id"])if(k(e)){const t=C(e,"utf8").trim();if(t)return t}return""}if("win32"===process.platform){const e=(await safeExec("reg",["query","HKLM\\SOFTWARE\\Microsoft\\Cryptography","/v","MachineGuid"])).match(/MachineGuid\s+REG_SZ\s+([\w-]+)/i);return e?.[1]??""}}catch{}return""}function readMacAddresses(){try{const e=D.networkInterfaces(),t=new Set;for(const n of Object.values(e))for(const e of n??[]){if(e.internal)continue;const n=e.mac?.toLowerCase();n&&"00:00:00:00:00:00"!==n&&t.add(n)}return[...t]}catch{return[]}}async function readGitEmail(){const e=await safeExec("git",["config","--global","user.email"]);if(e)return e;try{const e=`${D.homedir()}/.gitconfig`;if(k(e)){const t=C(e,"utf8").match(/email\s*=\s*(.+)/i);return t?.[1]?.trim()??""}}catch{}return""}function detectContainer(){try{if(k("/.dockerenv"))return!0;if(process.env.KUBERNETES_SERVICE_HOST)return!0;if(k("/proc/1/cgroup")){const e=C("/proc/1/cgroup","utf8");if(/docker|kubepods|containerd|lxc/.test(e))return!0}}catch{}return!1}function readTimezone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}async function gatherRawSignals(){let e="";try{e=D.userInfo().username??""}catch{e=process.env.USER??process.env.USERNAME??""}const t=(()=>{try{return D.cpus()}catch{return[]}})(),[n,r]=await Promise.all([readMachineId(),readGitEmail()]);return{machineId:n,macAddresses:readMacAddresses(),osUser:e,hostname:(()=>{try{return D.hostname()}catch{return""}})(),gitEmail:r,platform:process.platform,arch:process.arch,osRelease:(()=>{try{return D.release()}catch{return""}})(),cpuModel:t[0]?.model?.trim()??"",cpuCount:t.length,totalMemBytes:(()=>{try{return D.totalmem()}catch{return 0}})(),isContainer:detectContainer(),timezone:readTimezone()}}function hashSignal(e){const t=e.trim();if(t)return J("sha256").update(Dv).update("\0").update(t.toLowerCase()).digest("hex")}function buildMachineFingerprint(e){const t=[...new Set(e.macAddresses.map(e=>e.toLowerCase()))].filter(Boolean).sort(),n=[e.machineId.trim(),t.join(","),e.machineId.trim()?"":e.hostname.trim(),e.machineId.trim()?"":e.cpuModel.trim()].filter(Boolean);return{thumbmark:J("sha256").update(Dv).update("\0machine\0").update(n.join("|")||"unknown").digest("hex"),components:{machineIdHash:hashSignal(e.machineId),macHashes:t.map(e=>hashSignal(e)).filter(Boolean),osUserHash:hashSignal(e.osUser),hostnameHash:hashSignal(e.hostname),gitEmailHash:hashSignal(e.gitEmail),platform:e.platform,arch:e.arch,osRelease:e.osRelease,cpuModel:e.cpuModel,cpuCount:e.cpuCount,memGiB:Math.round(e.totalMemBytes/1024**3),isContainer:e.isContainer,timezone:e.timezone||void 0,runtime:"cli",collectorVersion:1}}}async function getMachineFingerprint(){return buildMachineFingerprint(await gatherRawSignals())}__name(safeExec,"safeExec"),__name(readMachineId,"readMachineId"),__name(readMacAddresses,"readMacAddresses"),__name(readGitEmail,"readGitEmail"),__name(detectContainer,"detectContainer"),__name(readTimezone,"readTimezone"),__name(gatherRawSignals,"gatherRawSignals"),__name(hashSignal,"hashSignal"),__name(buildMachineFingerprint,"buildMachineFingerprint"),__name(getMachineFingerprint,"getMachineFingerprint");var $v=!1;async function recordCliFingerprint(){if(!$v){$v=!0;try{if(!await getAuthKey())return;const{thumbmark:e,components:t}=await getMachineFingerprint(),n=new Nu({baseUrl:getApiBaseUrl(),timeout:4e3});await n.post({endpoint:Dt.ALPHA.FINGERPRINT.RECORD,body:{thumbmark:e,components:t}})}catch{}}}function recordCliFingerprintInBackground(){recordCliFingerprint().catch(()=>{})}__name(recordCliFingerprint,"recordCliFingerprint"),__name(recordCliFingerprintInBackground,"recordCliFingerprintInBackground"),handleUnhandledErrors(),setupTelemetry(),setImmediate(()=>recordCliFingerprintInBackground()),await preRun();var Lv=createProgram();Lv.action(interactiveModeAction),Lv.addCommand(uC),Lv.addCommand(dC),Lv.addCommand(fv),Lv.addCommand(ov),Lv.addCommand(cC),Lv.addCommand(createTasteCommand()),Lv.addCommand(createMcpCommand()),Lv.addCommand(mC),Lv.addCommand(bs),Lv.addCommand(Dh),Lv.addCommand(Uh),Lv.addCommand(_v),isExperimentalEnabled()&&Lv.addCommand(createSandboxCommand()),setupCommanderHooks(Lv),Lv.parse();
300
+ `,VS=getMaxLineWidth(qS),KS=WS,YS=__name(e=>{const t=e??getTerminalWidth();return t>=HS?"full":t>=KS?"compact":"minimal"},"getHeaderLayout");pn();var QS=__name(({children:e})=>{const t=[];let n="",r=!0;const o=__name(()=>{0!==n.length&&(t.push({text:n,panel:r}),n="")},"flush");for(const t of e){const e="░"===t;0===n.length?r=e:e!==r&&(o(),r=e),n+=t}return o(),ce.createElement(we,null,t.map((e,t)=>ce.createElement(we,{key:t,backgroundColor:bo.BG,color:e.panel?bo.BG:bo.TEXT},e.panel?e.text.replaceAll("░"," "):e.text)))},"CommandLogoBanner");pn();var JS=__name(({title:e,hashPrefix:t=!1,subPrefix:n=!1,suffix:r,padding:o=0,titleColor:s=Xr.GRAY,dividerChar:a="─",dividerColor:i=Xr.GRAY,boxProps:l})=>{const u=Math.max(0,(process.stdout.columns??80)-2*o),d=t?`# ${a}${a} `:n?`${a}${a} `:"",m=e?`${e} `:"",g=r?` ${r}`:"",h=d.length+m.length+g.length,f=a.repeat(Math.max(0,u-h));return ce.createElement(ye,{paddingLeft:o,paddingRight:o,marginBottom:1,...l},(t||n)&&ce.createElement(we,{color:i},d),e&&ce.createElement(we,{color:s},m),ce.createElement(we,{color:i},f),r&&ce.createElement(we,{color:Xr.DIM},g))},"Divider");pn();var XS=[{type:"user",text:"I always prefer pnpm",duration:2e3},{type:"learned",text:"LEARNED: pnpm (95% preference)",details:".commandcode/taste/taste.md",duration:2e3},{type:"user",text:"I prefer commander over meow",duration:2e3},{type:"updated",text:"Updated: commander boosted (60% → 95%), meow adjusted (90% → 35%)",details:".commandcode/taste/cli/taste.md",duration:2e3},{type:"user",text:"I prefer TypeScript for Node CLIs",duration:2e3},{type:"learned",text:"LEARNED: TypeScript for CLIs (90% preference)",details:".commandcode/taste/cli/taste.md",duration:2e3}],ZS=__name(({onComplete:e,onExit:t})=>{const[n,r]=de(0),[o,s]=de(!1),a=n>=XS.length;return pe(()=>{if(n>=XS.length)return;if(o)return;const e=XS[n],t=setTimeout(()=>{r(e=>Math.min(e+1,XS.length))},e.duration);return()=>clearTimeout(t)},[n,o]),Ee((n,o)=>{""===n||o.ctrl&&"c"===n?t?t():e():o.escape?e():a?(o.return||" "===n)&&e():" "===n?s(e=>!e):o.return&&r(e=>Math.min(e+1,XS.length))}),ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Meet Your Coding Taste")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Command Code learns your coding style as you work.")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Here's how your preferences evolve in real-time:")),ce.createElement(ye,{flexDirection:"column",marginY:1},XS.slice(0,n).map((e,t)=>"user"===e.type?ce.createElement(ye,{key:t},ce.createElement(we,null,He.pointer," ",e.text)):ce.createElement(ye,{key:t,flexDirection:"column",marginBottom:1,marginLeft:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"⎿ "),ce.createElement(we,{color:eo.TEXT},e.text)),e.details&&ce.createElement(ye,{marginLeft:3},ce.createElement(we,{color:Xr.DIM},"Saved(",e.details,")"))))),a?ce.createElement(ye,{flexDirection:"column",marginY:1},ce.createElement(ye,null,ce.createElement(we,{bold:!0,color:eo.TEXT},"Demo Complete!")),ce.createElement(ye,null,ce.createElement(we,null,"Command Code will now use these preferences to generate")),ce.createElement(ye,null,ce.createElement(we,null,"better suggestions tailored to your coding style. The")),ce.createElement(ye,null,ce.createElement(we,null,"more you code, the smarter it gets.")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Enter to get started →"))):ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"[SPACE: pause] [ENTER: next] [ESC: skip]"+(o?" (paused)":""))))},"TasteDemoComponent"),eE=__name(({onClose:e,onExit:t})=>{const[n,r]=de(id.getEvents()),[o,s]=de(0);Ee((n,r)=>{""===n||r.ctrl&&"c"===n?t():r.ctrl&&"t"===n&&e()},{isActive:!0}),pe(()=>{const e=__name(()=>{r(id.getEvents())},"handleNewEvent"),t=__name(()=>{r([])},"handleCleared");return id.on("new-event",e),id.on("cleared",t),()=>{id.off("new-event",e),id.off("cleared",t)}},[]),pe(()=>{const e=__name(()=>{xy(),s(e=>e+1)},"handleResize");return process.stdout.on("resize",e),()=>{process.stdout.off("resize",e)}},[]);const a=__name(e=>["learned","refactored"].includes(e),"isLearningEvent"),i=ge(()=>n.find(e=>"analyzing"===e.type),[n]),l=ge(()=>n.find(e=>"analyzed"===e.type),[n]),u=ge(()=>n.find(e=>"no_learnings"===e.type),[n]),d=ge(()=>n.find(e=>"learned"===e.type||"refactored"===e.type),[n]),m=u?n.indexOf(u):1/0,g=d?n.indexOf(d):1/0,h=!!u&&m<g,f=!!i||!!l||h,y=ge(()=>n.filter(e=>"analyzing"!==e.type&&"analyzed"!==e.type&&"no_learnings"!==e.type),[n]),w=ge(()=>[...y].reverse(),[y]),S=__name(e=>{const t=e.match(/^(learned|upgraded|downgraded|refactored|moved):\s*(.*)$/i);if(t){const e=t[1].toLowerCase();let n=t[2];const r=n.match(/^(.+?)\.?\s+Confidence:\s*(\d+\.?\d*)$/);let o=n,s=null;if(r){o=r[1].trim();const e=(100*parseFloat(r[2])).toFixed(2);s=`confidence: ${parseFloat(e).toString()}%`}const a={learned:"LEARNED",upgraded:"Reinforced",downgraded:"Downgraded",refactored:"Refactored",moved:"Moved"}[e]||e.charAt(0).toUpperCase()+e.slice(1);return{type:e,label:a,content:o,confidence:s}}return{type:null,label:null,content:e,confidence:null}},"formatLearningMessage"),E=__name(e=>{const t=e.match(/^(.+?)\s*\((\d+)%\s*(?:→|->)\s*(\d+)%\)$/);if(!t)return null;const n=t[1].trim(),r=parseInt(t[2],10),o=parseInt(t[3],10);return{text:n,oldPercent:r,newPercent:o,diff:o-r}},"parsePercentageChange"),k=__name(e=>{if(!e)return null;const t=e.match(/moved to (.+)/);if(!t)return null;const n=t[1],r=n.split("/"),o=r[r.length-1];return{category:r.slice(0,-1).join("/"),oldPath:o,newPath:n,fullPath:`.commandcode/taste/${n}`}},"formatMovedDetails"),C=ge(()=>(process.stdout.rows??24)-1,[o]);return ce.createElement(ye,{flexDirection:"column",width:"100%",height:C,justifyContent:"flex-start",alignItems:"flex-start",padding:0,margin:0},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(QS,null,GS())),ce.createElement(JS,{hashPrefix:!0,title:"Taste Feed",titleColor:"white",suffix:"ctrl+t to close"}),ce.createElement(ye,{flexDirection:"column"},0===n.length?ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(ye,null,ce.createElement(we,null,"Start using Command Code and it will begin recording your coding taste.")),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Your preferences, patterns, and style will appear here in real-time."))),ce.createElement(ve,{count:2}),ce.createElement(JS,{title:"DEMO",titleColor:"white",subPrefix:!0}),ce.createElement(ZS,{onComplete:()=>{e()},onExit:t})):ce.createElement(ye,{flexDirection:"column"},y.length>0&&ce.createElement(ye,{flexDirection:"column",gap:1},w.map(e=>{if(a(e.type)){const{type:t,label:n,content:r,confidence:o}=S(e.message),s="moved"===t?k(e.details):null,a="upgraded"===t||"downgraded"===t?E(r):null,i=s?.fullPath??e.details;let l=ce.createElement(ce.Fragment,null,ce.createElement(we,null," ",r),o&&ce.createElement(we,{color:Xr.DIM}," ","(",o,")"));return a&&(l=ce.createElement(ce.Fragment,null,ce.createElement(we,null," ",a.text," ("),ce.createElement(we,{color:Xr.DIM},"confidence:"," "),ce.createElement(we,{color:Xr.DIM},a.oldPercent,"%"),ce.createElement(we,null," ",He.arrowRight," "),ce.createElement(we,{color:a.diff>0?Xr.GREEN:Xr.RED},a.newPercent,"%"),ce.createElement(we,null,")"))),s&&(l=ce.createElement(ce.Fragment,null,ce.createElement(we,null," ",s.category," ","package ("),ce.createElement(we,{color:Xr.DIM},s.oldPath),ce.createElement(we,null," ",He.arrowRight," ",s.newPath),ce.createElement(we,null,")"))),ce.createElement(ye,{key:e.id},ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:eo.BADGE_BG,color:eo.BADGE_FG,bold:!0},`${Oy}${n}${Oy}`)),i&&ce.createElement(we,{color:Xr.DIM}," ","(",i,")")),ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},"⎿"," "),l)))}return ce.createElement(ye,{key:e.id},ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",e.message))})),f&&ce.createElement(ye,{flexDirection:"column",marginTop:y.length>0?1:0},i&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",i.message)),l&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",l.message)),h&&u&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," ",u.message))))))},"LearningFeedFull");function useListNavigation({items:e,onSelect:t,onCancel:n,validate:r,initialIndex:o=0,searchCursorIndex:s=0,searchQuery:a,onSearchChange:i,isActive:l=!0,disableSearch:u=!1,selectByNumber:d=!1,onReset:m}){const[g,h]=de(o),[f,y]=de(null);pe(()=>{a||h(o)},[o,a]);const w=e.length-1,S=__name(e=>{i(e),h(s)},"updateSearch");return Ee((o,s)=>{if(s.escape)return!u&&a?void S(""):void n();if(u||!s.backspace&&!s.delete){if(u&&m&&"r"===o&&!s.ctrl&&!s.meta){const t=e[g];return void(t&&m(t))}if(0!==e.length){if(s.upArrow)return y(null),void h(e=>Math.max(e-1,0));if(s.downArrow)return y(null),void h(e=>Math.min(e+1,w));if(s.return){const n=e[g];if(!n)return;if(r){const e=r(n);if(e)return void y(e)}return void t(n)}if(d&&1===o.length&&o>="1"&&o<="9"&&!s.ctrl&&!s.meta){const n=Number(o)-1,s=e[n];if(!s)return;if(h(n),r){const e=r(s);if(e)return void y(e)}return void t(s)}!u&&!s.ctrl&&!s.meta&&!s.tab&&o&&1===o.length&&o>=" "&&S(a+o)}}else S(a.slice(0,-1))},{isActive:l}),{cursor:g,error:f,setError:y}}pn(),pn(),pn(),__name(useListNavigation,"useListNavigation");var tE=[{scope:"project",label:"This project"},{scope:"global",label:"User"}],nE=__name(({onClose:e,onSettingsChange:t,staticKey:n})=>{const[r,o]=de(!0),[s,a]=de(void 0),[i,l]=de(void 0),[u,d]=de(!0),m="local"===i,g=he(async()=>{try{const e=await getTasteLearningSettings();o(e.global),a(e.project),l(e.projectSource)}catch{}},[]);pe(()=>{g().finally(()=>d(!1))},[g]);const h=__name(async(e,n,r)=>{e();try{await r(),t?.(),await g()}catch(e){n()}},"persist"),f=__name(e=>{if("global"===e.scope){const e=!r;return h(()=>o(e),()=>o(!e),()=>setTasteLearning({tasteLearning:e,scope:"global"}))}if(m)return;const t=s,n=!(t??r);return h(()=>a(n),()=>a(t),()=>setTasteLearning({tasteLearning:n,scope:"project"}))},"toggleRow"),y=__name(e=>{if("global"===e.scope){if(r)return;return h(()=>o(!0),()=>o(!1),()=>setTasteLearning({tasteLearning:!0,scope:"global"}))}if(m)return;const t=s;return void 0!==t?h(()=>a(void 0),()=>a(t),()=>clearProjectTasteLearning()):void 0},"resetRow"),{cursor:w}=useListNavigation({items:tE,onSelect:__name(e=>{f(e)},"onSelect"),onReset:__name(e=>{y(e)},"onReset"),onCancel:e,searchQuery:"",onSearchChange:__name(()=>{},"onSearchChange"),disableSearch:!0,isActive:!u});if(u)return ce.createElement(ye,{key:n,borderStyle:"single",borderColor:Xr.BLUE,padding:1,flexDirection:"column"},ce.createElement(we,{color:Xr.BLUE,bold:!0},"Taste Settings"),ce.createElement(we,{color:Xr.DIM},"Loading configuration..."));const S=__name(e=>"project"===e.scope?s??r:r,"valueFor");return ce.createElement(ye,{key:n,borderStyle:"single",borderColor:Xr.GRAY,padding:1,flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Taste Learning"),ce.createElement(we,{color:Xr.DIM},"Learn from your interactions."),ce.createElement(ye,{marginTop:1}),tE.map((e,t)=>{const n=t===w,r=S(e),o="project"===e.scope&&m;return ce.createElement(ye,{key:e.scope},ce.createElement(we,{color:n?Xr.CYAN:Xr.GRAY},n?`${He.pointer} `:" "),ce.createElement(we,{color:n?Xr.CYAN:Xr.WHITE},e.label.padEnd(16)),ce.createElement(we,{color:r?Xr.GREEN:Xr.DIM},r?"enabled":"disabled"),o?ce.createElement(we,{color:Xr.DIM}," ","(set in settings.local.json)"):null)}),ce.createElement(ye,{marginTop:1}),ce.createElement(we,{color:Xr.DIM},"Taste data stored in .commandcode/taste/taste.md"),m?ce.createElement(we,{color:Xr.DIM},"This project is pinned by .commandcode/settings.local.json — edit that file to change it."):null,ce.createElement(we,{color:Xr.DIM},"↑/↓ navigate · enter to toggle · r reset to default · esc to close"))},"TasteConfig");function TasteConfigView({staticKey:e,onClose:t,loadTasteStatus:n}){return ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(nE,{onClose:t,onSettingsChange:n,staticKey:e})))}function fuzzyMatch(e,t){let n=0;for(const r of e)if(r===t[n]&&(n++,n===t.length))return!0;return!1}function fuzzyScore(e,t){let n=0;for(const r of e)fuzzyMatch(r.text.toLowerCase(),t)&&(n+=r.weight);return n}function fuzzyFilter(e,t,n){if(!t.trim())return e;const r=t.toLowerCase().split("");return e.map(e=>({item:e,score:fuzzyScore(n(e),r)})).filter(({score:e})=>e>0).sort((e,t)=>t.score-e.score).map(({item:e})=>e)}__name(TasteConfigView,"TasteConfigView"),pn(),pn(),wn(),pn(),__name(fuzzyMatch,"fuzzyMatch"),__name(fuzzyScore,"fuzzyScore"),__name(fuzzyFilter,"fuzzyFilter"),pn();var rE=__name(({query:e,resultCount:t,placeholder:n="Type to search..."})=>ce.createElement(ye,{width:"100%"},ce.createElement(we,{color:Xr.GRAY},He.pointerSmall," "),ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY},e||n),e&&void 0!==t&&ce.createElement(we,{dimColor:!0}," (",t," found)")),"SearchInput");function useTerminalHeight(){const{stdout:e}=be(),[t,n]=de(()=>e?.rows??24);return pe(()=>{const t=__name(()=>n(e?.rows??24),"onResize");return e.on("resize",t),()=>{e.off("resize",t)}},[e]),t}function skillIdentifier(e){const n=t.basename(e);return"skill.md"===n.toLowerCase()?t.basename(t.dirname(e)):n}pn(),__name(useTerminalHeight,"useTerminalHeight"),pn(),wn(),pn(),pn(),__name(skillIdentifier,"skillIdentifier");var oE=new Set(["Invalid YAML","Missing fields","Missing SKILL.md"]);function categoryColor(e){return oE.has(e)?Xr.RED:Xr.YELLOW}function formatWarningsAsMarkdown(e){const t=groupWarnings(e),n=[`# Skipped skills (${e.length})`,""];for(const e of t){n.push(`## ${e.category} (${e.items.length})`,"");for(const t of e.items)n.push(`- \`${skillIdentifier(t.path)}\` — \`${t.path}\``),n.push(` - ${t.reason}`);n.push("")}return n.join("\n").replace(/\n+$/,"")+"\n"}async function copyAllWarnings(e,t){try{const{isClipboardAvailable:n}=await Promise.resolve().then(()=>(An(),Pn));if(!n())return void t({text:"Clipboard unavailable — copy the skipped skill paths manually",color:Xr.YELLOW});const r=await import("@crosscopy/clipboard");await r.default.setText(formatWarningsAsMarkdown(e));const o=e.length;t({text:`Copied ${o} issue${1===o?"":"s"} to clipboard`,color:Xr.GREEN})}catch{t({text:"Clipboard write failed",color:Xr.YELLOW})}}__name(categoryColor,"categoryColor"),__name(formatWarningsAsMarkdown,"formatWarningsAsMarkdown"),__name(copyAllWarnings,"copyAllWarnings");var sE=__name(({warnings:e,onClose:t,isActive:n=!0})=>{const r=groupWarnings(e),o=e.length>0,[s,a]=de(null),i=me(null),l=me(!0);pe(()=>()=>{l.current=!1,i.current&&(clearTimeout(i.current),i.current=null)},[]);const u=__name(e=>{l.current&&(i.current&&clearTimeout(i.current),a(e),i.current=setTimeout(()=>{l.current&&(a(null),i.current=null)},3e3))},"showStatus");return Ee((n,r)=>r.escape||" "===n&&o?(xy(),void t()):void("c"===n&&o&&copyAllWarnings(e,u)),{isActive:n}),ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Skills"," "),ce.createElement(we,{color:Xr.DIM},"› "),ce.createElement(we,{color:Zr,bold:!0},"Skipped"," "),ce.createElement(we,{color:Xr.WHITE},e.length)),o&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Press c to copy all issues")),o?ce.createElement(ye,{flexDirection:"column"},r.map(e=>ce.createElement(ye,{key:e.category,flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:categoryColor(e.category)},e.category)),e.items.map(e=>ce.createElement(ye,{key:e.path,flexDirection:"column",marginBottom:1},ce.createElement(ye,{paddingLeft:2},ce.createElement(Fo,{url:g(e.path).href,text:skillIdentifier(e.path),color:Xr.WHITE})),ce.createElement(ye,{paddingLeft:4},ce.createElement(we,{color:Xr.WHITE},e.reason))))))):ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"No issues — every skill loaded.")),s&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:s.color},s.text)),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},o?"c copy all issues · esc back to skills":"esc back to skills")))},"SkillsConfigIssues"),aE=__name(({warnings:e=[],onClose:t})=>{const[n,r]=de("list");return Ee((o,s)=>{"list"===n&&(s.escape&&t?t():" "===o&&!s.ctrl&&!s.meta&&e.length>0&&r("issues"))},{isActive:"list"===n}),"issues"===n?ce.createElement(sE,{warnings:e,onClose:()=>r("list"),isActive:!0}):ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Skills"),e.length>0&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.YELLOW},e.length," skipped"))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"No skills found")),ce.createElement(we,{color:Xr.DIM},"Create skills in:"),ce.createElement(we,{color:Xr.DIM}," ","~/",".commandcode","/","skills","/ (user)"),ce.createElement(we,{color:Xr.DIM}," ","~/.agents/","skills","/ (user, .agents)"),ce.createElement(we,{color:Xr.DIM}," ",".commandcode","/","skills","/ (project)"),ce.createElement(we,{color:Xr.DIM}," ",".agents/","skills","/ (project, .agents)"),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},e.length>0&&"space to view issues · ","Press ",ce.createElement(we,{bold:!0},"Esc")," to close")))},"SkillsConfigEmpty");function clampScrollOffset(e){const{cursor:t,total:n,maxVisible:r,currentOffset:o}=e;if(n<=r)return 0;let s=o;t<s?s=t:t>=s+r&&(s=t-r+1);const a=Math.max(0,n-r);return Math.min(Math.max(0,s),a)}function sliceSectionForWindow(e){const{section:t,sectionBase:n,windowStart:r,windowEnd:o}=e,s=Math.min(Math.max(r-n,0),t.length),a=Math.min(Math.max(o-n,0),t.length);return{rows:t.slice(s,a),baseIndex:n+s}}pn(),__name(clampScrollOffset,"clampScrollOffset"),__name(sliceSectionForWindow,"sliceSectionForWindow"),pn();var iE=__name(e=>Math.ceil(e.length/4),"estimateTokens"),lE=__name(e=>e.includes("/.agents/skills/")||e.includes("\\.agents\\skills\\"),"isAgentsSkill"),cE={user:"user settings",projectShared:"project shared",projectLocal:"project local"},uE=__name(()=>"win32"===process.platform?'No editor found. Set $EDITOR: setx EDITOR "code"':"No editor found. Set $EDITOR: echo 'export EDITOR=\"code\"' >> "+("darwin"===process.platform?"~/.zshrc":"~/.bashrc"),"getEditorSetupMessage");pn();var dE=__name(({title:e,subtitle:t,skills:n,baseIndex:r,cursor:o,disabled:s})=>ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(ye,null,ce.createElement(we,{color:co,bold:!0},e," "),ce.createElement(we,{color:co},t)),n.map((e,t)=>{const n=r+t===o,a=s.has(e.label),i=lE(e.filePath),l=n?Co:void 0;return ce.createElement(ye,{key:e.filePath},ce.createElement(we,{color:a?Xr.DIM:Xr.GREEN,backgroundColor:l},a?"[off] ":"[on] "),ce.createElement(we,{color:a?Xr.DIM:Xr.WHITE,backgroundColor:l},e.label),i&&ce.createElement(we,{color:Xr.DIM,backgroundColor:l}," [.agents]"),ce.createElement(we,{color:Xr.DIM,backgroundColor:l}," · ~",iE(e.description)," tokens "))})),"SkillSection");pn();var mE=__name(e=>[{text:e.label,weight:100}],"SKILL_SEARCH_FIELDS"),pE=__name(({onClose:e})=>{const[t,n]=de([]),[r,o]=de([]),[s,a]=de(!0),[i,l]=de(null),[u,d]=de(""),[m,g]=de(new Set),[h,f]=de(new Map),[y,w]=de(!1),[S,E]=de(null),[k,C]=de("list"),[v,T]=de(0),x=useTerminalHeight(),P=me(!1);pe(()=>{__name(async()=>{try{const e=findGitRoot(),t=getBundledSkillsDir(),[{global:r,project:s,warnings:a},i]=await Promise.all([loadAllSkillSummariesWithWarnings(),loadDisabledSkills({projectRoot:e})]),l=__name(e=>isBundledSkillPath({filePath:e,bundledDir:t}),"isBundled"),u=[...s.map(e=>({label:e.name,location:"project",description:e.description,filePath:e.filePath})),...r.filter(e=>!l(e.filePath)).map(e=>({label:e.name,location:"user",description:e.description,filePath:e.filePath})),...r.filter(e=>l(e.filePath)).map(e=>({label:e.name,location:"bundled",description:e.description,filePath:e.filePath}))];u.sort((e,t)=>{if(e.location!==t.location){const n={project:0,user:1,bundled:2};return n[e.location]-n[t.location]}return e.label.localeCompare(t.label)}),n(u),o(a),g(new Set(i.names)),f(new Map(i.bySkill)),w(i.noProjectRoot)}catch(e){l(e instanceof Error?e.message:"Failed to load skills")}finally{a(!1)}},"load")()},[]);const A=ge(()=>fuzzyFilter(t.filter(e=>"project"===e.location),u,mE),[t,u]),I=ge(()=>fuzzyFilter(t.filter(e=>"user"===e.location),u,mE),[t,u]),M=ge(()=>fuzzyFilter(t.filter(e=>"bundled"===e.location),u,mE),[t,u]),R=ge(()=>[...A,...I,...M],[A,I,M]),_=x-1,D=(A.length>0?1:0)+(I.length>0?1:0)+(M.length>0?1:0),N=Math.max(4,_-12-2*D),$=__name(async e=>{if(P.current)return;const t=m.has(e.label),n=h.get(e.label);if(t&&void 0!==n&&"projectLocal"!==n&&!y)return void E(`Cannot enable: "${e.label}" is disabled in ${cE[n]}. Edit that file to override.`);P.current=!0;const r=new Set(m);t&&r.delete(e.label),t||r.add(e.label),g(r),E(null);try{const n=findGitRoot(),r=await setSkillEnabled(e.label,t,{projectRoot:n}),o=new Map(h);t&&o.delete(e.label),t||o.set(e.label,r),f(o),"user"===r&&E("Saved to user settings — no project found.")}catch(e){g(m),E(`Failed to save: ${e instanceof Error?e.message:String(e)}`)}finally{P.current=!1}},"toggleSkill");pe(()=>{"issues"===k&&d("")},[k]);const L="list"===k&&t.length>0,{cursor:O}=useListNavigation({items:R,onSelect:$,onCancel:e,searchQuery:u,onSearchChange:d,initialIndex:0,isActive:L});if(pe(()=>{T(e=>clampScrollOffset({cursor:O,total:R.length,maxVisible:N,currentOffset:e}))},[O,R.length,N]),Ee((t,n)=>{if(!n.tab)return;const r=R[O];r&&(async()=>{try{await xt([{file:r.filePath,line:1}]),e()}catch(e){if(e instanceof Error&&e.message.includes("$EDITOR environment variable"))return void l(uE());l(e instanceof Error?e.message:"Failed to open skill in editor")}})()},{isActive:L}),Ee((e,n)=>{"list"===k&&0!==t.length&&" "===e&&!n.ctrl&&!n.meta&&r.length>0&&0===u.length&&C("issues")},{isActive:"list"===k&&t.length>0}),s)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(we,{color:Zr,bold:!0},"Skills"),ce.createElement(we,{color:Xr.DIM},"Loading skills..."));if(i)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(we,{color:Xr.RED,bold:!0},"Skills"),ce.createElement(we,{color:Xr.DIM},i),ce.createElement(ye,{marginTop:1}),ce.createElement(we,{color:Xr.DIM},"Press ",ce.createElement(we,{bold:!0},"Esc")," to close"));if(0===t.length)return ce.createElement(aE,{warnings:r,onClose:e});if("issues"===k)return ce.createElement(sE,{warnings:r,onClose:()=>C("list"),isActive:!0});const F=t.filter(e=>m.has(e.label)).length,U=v,B=v+N,j=sliceSectionForWindow({section:A,sectionBase:0,windowStart:U,windowEnd:B}),H=sliceSectionForWindow({section:I,sectionBase:A.length,windowStart:U,windowEnd:B}),W=sliceSectionForWindow({section:M,sectionBase:A.length+I.length,windowStart:U,windowEnd:B}),G=R.length>N;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Skills"," "),ce.createElement(we,{color:Xr.DIM},t.length," skill",1===t.length?"":"s"),F>0&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.YELLOW},F," off")),r.length>0&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.YELLOW},r.length," skipped"))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{dimColor:!0},y?"No project found — toggles will be saved to user settings.":"Toggle skills on or off for this project.")),ce.createElement(ye,{marginBottom:1,flexDirection:"column",width:"100%"},ce.createElement(rE,{query:u,resultCount:u?R.length:void 0,placeholder:"Type to search skills..."})),0===R.length?ce.createElement(ye,{marginY:1},ce.createElement(we,{color:Xr.GRAY},'No skills match "',u,'"')):ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},j.rows.length>0&&ce.createElement(dE,{title:"Project skills",subtitle:"(.commandcode/skills or .agents/skills)",skills:j.rows,baseIndex:j.baseIndex,cursor:O,disabled:m}),H.rows.length>0&&ce.createElement(dE,{title:"User skills",subtitle:"(~/.commandcode/skills or ~/.agents/skills)",skills:H.rows,baseIndex:H.baseIndex,cursor:O,disabled:m}),W.rows.length>0&&ce.createElement(dE,{title:"Bundled skills",subtitle:"(ships with Command Code)",skills:W.rows,baseIndex:W.baseIndex,cursor:O,disabled:m})),G&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",U+1,"–",Math.min(B,R.length)," of"," ",R.length,U>0?" · ↑ more":"",B<R.length?" · ↓ more":""))),S&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.YELLOW},S)),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"type to search · ↑/↓ navigate · enter to toggle · tab to edit",r.length>0&&!u&&ce.createElement(ce.Fragment,null," · space to view issues"),u?" · esc to clear":" · esc to close"),ce.createElement(we,{color:Xr.DIM},"add skills:"," ",ce.createElement(we,{color:Xr.CYAN},getBinaryCommand()," skills add ","<owner/repo>"))))},"SkillsConfig");function SkillsConfigView({staticKey:e,onClose:t}){return ce.useEffect(()=>{hardResetForResize()},[]),ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(pE,{onClose:t,staticKey:e})))}function getUsageColor(e){return e>=80?Xr.RED:e>=50?Xr.YELLOW:Xr.GREEN}function buildBlockBar({percentage:e,width:t}){const n=Math.max(0,Math.min(100,e));let r=Math.round(n/100*t);n>.5&&0===r&&(r=1),n<99.5&&r===t&&(r=t-1);const o=t-r;return{filled:"█".repeat(r),empty:"░".repeat(o)}}function getStudioUsageUrl(e){const t=e?.org?.login??e?.user?.userName;return t?`https://commandcode.ai/${t}/settings/usage`:null}__name(SkillsConfigView,"SkillsConfigView"),pn(),pn(),pn(),__name(getUsageColor,"getUsageColor"),__name(buildBlockBar,"buildBlockBar"),__name(getStudioUsageUrl,"getStudioUsageUrl");var gE=__name(e=>e.replace(/^https?:\/\//,""),"stripScheme");function WindowLimitMeter({label:e,used:t,cap:n,resetAt:r,width:o,now:s}){const a=n>0?Math.min(100,t/n*100):0,i=getUsageColor(a),l=buildBlockBar({percentage:a,width:o}),u=r>s?` · resets in ${formatDuration(r-s)}`:"";return ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},e.padEnd(7)," "),ce.createElement(we,{color:i},l.filled),ce.createElement(we,{color:co},l.empty),ce.createElement(we,{bold:!0,color:i},` ${Math.round(a)}%`),ce.createElement(we,{color:Xr.DIM},u))}function getProgressBarWidth({terminalWidth:e}){return e<50?Math.max(10,e-10):e<70?Math.max(15,e-15):Math.min(30,e-15)}function getDaysColor(e){if(null!==e)return e<3?Xr.RED:e<7?Xr.YELLOW:void 0}__name(WindowLimitMeter,"WindowLimitMeter"),__name(getProgressBarWidth,"getProgressBarWidth"),__name(getDaysColor,"getDaysColor");var hE=__name(({plan:e,status:t})=>ce.createElement(ye,{marginBottom:0},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:Xr.BLUE,color:"#f4f4f4",bold:!0},`${Oy}USAGE${Oy}`)),e&&ce.createElement(ce.Fragment,null,ce.createElement(we,null," "),ce.createElement(we,{color:Xr.GRAY},`${e.name} Plan`)),t&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:"active"===t?Xr.GREEN:Xr.YELLOW},t))),"UsageBadge"),fE=__name(({showRetry:e})=>ce.createElement(ye,{marginTop:1},e&&ce.createElement(we,{color:Xr.DIM},ce.createElement(we,{bold:!0},"r")," to retry · "),ce.createElement(we,{color:Xr.DIM},"Press ",ce.createElement(we,{bold:!0},"Esc")," to close")),"UsageFooter"),yE=__name(({onClose:e})=>{const[t,n]=de("loading"),[r,o]=de(null),[s,a]=de(!1),i=getProgressBarWidth({terminalWidth:useTerminalWidth()}),l=he(async e=>{try{a(!1);const t=await fetchUsageData();if(e.aborted)return;if(!t.whoami){const e=t.errors.some(isAuthErrorMessage);return a(e),void n("error")}o(t),n("loaded")}catch{if(e.aborted)return;n("error")}},[]),u=ce.useRef(null);Ee((r,o)=>{if(o.escape&&e(),"r"===r&&"error"===t){n("loading"),u.current?.abort();const e=new AbortController;u.current=e,l(e.signal)}}),pe(()=>{const e=new AbortController;return u.current=e,l(e.signal),()=>e.abort()},[l]);const d=r?.subscription?.data??null,m=d?getPlanInfo({planId:d.planId??""}):null;if("loading"===t)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(hE,{plan:m,status:d?.status??null}),ce.createElement(we,{color:Xr.DIM},"Loading…"),ce.createElement(fE,null));if("error"===t)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(hE,{plan:m,status:d?.status??null}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},s?"Not authenticated. Run /login to connect your account.":"Something went wrong.")),ce.createElement(fE,{showRetry:!s}));if(!r)return null;const g=r.credits||r.subscription,h=getStudioUsageUrl(r.whoami);if(!g)return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(hE,{plan:m,status:d?.status??null}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"No billing data found."),h&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," Visit "),ce.createElement(Fo,{url:h,text:"Studio",color:Xr.CYAN}),ce.createElement(we,{color:Xr.DIM}," for usage details."))),ce.createElement(fE,null));const f=r.credits?.credits,y=r.credits?.windowLimits,w=r.summary,S=Date.now(),E=Math.max(0,f?.monthlyCredits??0)+Math.max(0,f?.purchasedCredits??0)+Math.max(0,f?.freeCredits??0),k=Math.max(0,w?.totalCost??0),C=getUsagePercent({used:k,total:k+E}),v=E>0||k>0,T=d?.currentPeriodEnd?getDaysRemaining(d.currentPeriodEnd):null,x=getDaysColor(T),P=getUsageColor(C),A=buildBlockBar({percentage:C,width:i});return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,{marginBottom:1},ce.createElement(hE,{plan:m,status:d?.status??null})),v?ce.createElement(ye,null,ce.createElement(we,{color:P},A.filled),ce.createElement(we,{color:co},A.empty),ce.createElement(we,{bold:!0,color:P},` ${Math.round(C)}% used`)):ce.createElement(we,{color:Xr.DIM},"Plan details unavailable"),v&&ce.createElement(ye,null,d?.currentPeriodEnd&&ce.createElement(we,{color:Xr.DIM},"Cycle: "),ce.createElement(we,null,formatCredits(E)),ce.createElement(we,{color:Xr.DIM}," left"),w&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,null,w.totalCount.toLocaleString()),ce.createElement(we,{color:Xr.DIM}," requests")),null!==T&&ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.DIM}," · "),0===T?ce.createElement(we,{color:x},"renewal today"):ce.createElement(ce.Fragment,null,ce.createElement(we,{color:x},`${T} day${1===T?"":"s"}`),ce.createElement(we,{color:Xr.DIM}," to renewal")))),y?.limited&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM},"Usage limits"),y.fiveHour&&ce.createElement(WindowLimitMeter,{label:"5-hour",used:y.fiveHour.used,cap:y.fiveHour.cap,resetAt:y.fiveHour.resetAt,width:i,now:S}),y.weekly&&ce.createElement(WindowLimitMeter,{label:"Weekly",used:y.weekly.used,cap:y.weekly.cap,resetAt:y.weekly.resetAt,width:i,now:S})),h&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Full breakdown at "),ce.createElement(Fo,{url:h,text:gE(h),color:Xr.CYAN})),ce.createElement(fE,null))},"UsageOverlay");function UsageView({staticKey:e,onClose:t}){return ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(yE,{onClose:t})))}__name(UsageView,"UsageView"),pn(),pn(),wn();var wE="System prompt",SE="Messages";function countMessagesByRole({messages:e}){let t=0,n=0;for(const r of e)"user"===r.message.role&&!isHiddenTranscriptMessage({message:r})&&t++,"assistant"===r.message.role&&n++;return{user:t,assistant:n}}function countToolCalls({messages:e}){let t=0,n=0;for(const r of e){if(isHiddenTranscriptMessage({message:r}))continue;const e=r.message.content;if(Array.isArray(e))for(const r of e)"tool-call"===r.type&&t++,"tool-result"===r.type&&n++}return{calls:t,results:n}}function countImages({messages:e}){let t=0;for(const n of e){if(isHiddenTranscriptMessage({message:n}))continue;const e=n.message.content;if(Array.isArray(e))for(const n of e)"image"===n.type&&t++}return t}function estimateConversationTokens({messages:e}){let t=0;for(const n of e)isHiddenTranscriptMessage({message:n})||(t+=estimateTokens(n.message));return t}function buildAutoCompactStatus({tokensUsed:e,tokenLimit:t}){const n=e/t,r=[{tier:1,threshold:un.TIER_1_THRESHOLD,description:`Prune to last ${un.TIER_1_KEEP_COUNT} tool calls`},{tier:2,threshold:un.TIER_2_THRESHOLD,description:`Prune to last ${un.TIER_2_KEEP_COUNT} tool calls`},{tier:3,threshold:un.TIER_3_THRESHOLD,description:"Full summarization"}];let o=0;const s=r.map(r=>{const s=Math.round(r.threshold*t),a=Math.max(0,s-e);let i="upcoming";return n>=r.threshold&&(i="passed",o=r.tier),{tier:r.tier,threshold:r.threshold,tokensAt:s,description:r.description,status:i,tokensAway:a}}),a=s.findIndex(e=>"upcoming"===e.status);return{tiers:-1!==a?s.map((e,t)=>t===a?{...e,status:"current"}:e):s,currentTier:o,keepRecentTokens:un.KEEP_RECENT_TOKENS}}function getPrimaryTip({percentage:e,conversationPct:t}){return e>=90?"Tier 3 auto-compact imminent — /compact now to control what gets summarized":e>=80?"Auto-compact Tier 3 triggers at 90% — /compact to free space before it kicks in":t>60&&e>40?`${t}% is conversation — /compact to reclaim tokens`:e>=50?"/compact to free space · /model to switch models":null}function getSecondaryTip({mcpToolCount:e,imageCount:t,messageCount:n,percentage:r}){return e>0&&r>30?`${e} MCP tools loaded — disconnect unused servers to save tokens`:t>0&&r>30?`${t} image${t>1?"s":""} in context — images use ~1.5k tokens each`:n>50&&r>40?`${n} messages — consider starting a new session for a fresh context`:null}function generateTips({percentage:e,conversationTokens:t,totalTokens:n,mcpToolCount:r,messageCount:o,imageCount:s}){if(0===n)return[];const a=getPrimaryTip({percentage:e,conversationPct:Math.min(100,Math.round(t/n*100))}),i=getSecondaryTip({mcpToolCount:r,imageCount:s,messageCount:o,percentage:e}),l=[];return a&&l.push(a),i&&l.push(i),0===l.length&&l.push("/compact to summarize and free context · /model to switch models"),l}async function collectMemoryItems(){const e=(await discoverMemoryFiles(process.cwd())).filter(e=>e.exists),t=[];for(const n of e){const e=await loadMemoryFile(n.path),r=e?estimateTokens(e):0,o=process.env.HOME??"",s=o&&n.path.startsWith(o)?`~${n.path.slice(o.length)}`:n.path;t.push({name:n.description,tokens:r,source:s})}return t}function collectBuiltInTools(){const e=[];for(const t of mf){const n=JSON.stringify(t.input_schema??{}),r=estimateTokens(`${t.name} ${t.description??""} ${n}`);e.push({name:t.name,tokens:r})}for(const t of pf){const n=estimateTokens(`${t.name} ${t.type}`);e.push({name:t.name,tokens:n})}return e}function collectMcpTools(){const e=getMcpConnectionManager().getConnectedServers(),t=[];for(const n of e)if("connected"===n.status)for(const e of n.tools){const r=JSON.stringify(e.inputSchema??{}),o=estimateTokens(`${e.name} ${e.description??""} ${r}`);t.push({name:e.name,tokens:o,source:n.name})}return t}async function collectSkillItems(){const[e,{names:t}]=await Promise.all([loadAllSkillSummaries(),loadDisabledSkills()]);return deduplicateSkills({project:e.project.filter(e=>!t.has(e.name)),global:e.global.filter(e=>!t.has(e.name))}).map(e=>({name:e.name,tokens:estimateTokens(`${e.name} ${e.description}`)}))}async function collectAgentItems(){const e=await loadAllAgents(),t=[];for(const n of e.project){const e=estimateTokens(`${n.name} ${n.description} ${n.systemPrompt}`);t.push({name:n.name,tokens:e,source:"project"})}for(const n of e.personal){const e=estimateTokens(`${n.name} ${n.description} ${n.systemPrompt}`);t.push({name:n.name,tokens:e,source:"user"})}return t}function sumTokens(e){let t=0;for(const n of e)t+=n.tokens;return t}async function analyzeContext({contextEngine:e}){const t=e.getContextTokensUsed(),n=e.getSystemPromptBreakdown(),r=getConfiguredModel(),o=getContextLimit(r),s=e.getHistory(),a=countMessagesByRole({messages:s}),i=countToolCalls({messages:s}),l=countImages({messages:s}),u=estimateConversationTokens({messages:s}),d=collectBuiltInTools(),m=collectMcpTools(),[g,h,f]=await Promise.all([collectSkillItems(),collectAgentItems(),collectMemoryItems()]),y=sumTokens(d),w=sumTokens(m),S=sumTokens(g),E=sumTokens(h),k=sumTokens(f),C=t>0,v=n?n.memory:k,T=null!==n&&Math.abs(k-n.memory)>50,x=n?n.taste:0,P=y+w+S+E,A=C?t:u+P+v+x,I=!C&&s.length>0,M=Math.min(A/o*100,100),R=Math.max(0,o-A),_=[];if(A>0){const e=n?n.systemPrompt:Math.max(0,A-u-P-v-x);if(e>0&&_.push({name:wE,tokens:e,detail:n?"identity":"identity + taste"}),v>0&&_.push({name:"Memory",tokens:v,detail:T?"memory files (modified, refreshes next request)":"memory files"}),x>0&&_.push({name:"Taste",tokens:x,detail:"taste.md"}),y>0&&_.push({name:"System tools",tokens:y,detail:`${d.length} built-in`}),w>0){const e=Array.from(new Set(m.map(e=>e.source).filter(e=>"string"==typeof e)));let t=`${m.length} tools`;e.length>3&&(t=`${e.length} servers`),e.length>=1&&e.length<=3&&(t=e.join(", ")),_.push({name:"MCP",tokens:w,detail:t})}S>0&&_.push({name:"Skills",tokens:S,detail:`${g.length} loaded`}),E>0&&_.push({name:"Subagents",tokens:E,detail:`${h.length} loaded`});const r=e+v+x+P,o=C?Math.max(0,t-r):u;o>0&&_.push({name:SE,tokens:o,detail:`${a.user} user · ${a.assistant} assistant`})}_.sort((e,t)=>e.name===wE?-1:t.name===wE||e.name===SE?1:t.name===SE?-1:t.tokens-e.tokens);const D=s.length>0?s[0]?.meta.timestamp??null:null;return{tokensUsed:A,tokenLimit:o,percentage:M,tokensRemaining:R,isEstimated:I,model:r,breakdown:_,autoCompact:buildAutoCompactStatus({tokensUsed:A,tokenLimit:o}),stats:{messageCount:s.length,userMessages:a.user,assistantMessages:a.assistant,toolCalls:i.calls,toolResults:i.results,imageCount:l,sessionStartTime:D},tips:generateTips({percentage:M,conversationTokens:u,totalTokens:A,mcpToolCount:m.length,messageCount:s.length,imageCount:l})}}function formatK(e){if(e<1e3)return String(e);if(e>=1e6){const t=Math.round(e/1e5)/10;return Number.isInteger(t)?`${t}M`:`${t.toFixed(1)}M`}const t=e/1e3;return Number.isInteger(t)?`${t}k`:`${t.toFixed(1)}k`}function formatBreakdownValue(e){return e<1e3?String(e):`${(e/1e3).toFixed(1)}k`}function getLayoutSizes({terminalWidth:e}){const t=Math.max(20,e),n=Math.min(50,Math.max(30,Math.floor(.5*t)));return{labelWidth:16,progressBarWidth:Math.max(10,Math.min(n,t-10)),showBreakdownDetail:t>=70}}function ContextProgress({analysis:e,progressBarWidth:t}){const n=getUsageColor(e.percentage),r=buildBlockBar({percentage:e.percentage,width:t});return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:Xr.BLUE,color:"#f4f4f4",bold:!0},`${Oy}CONTEXT${Oy}`)),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:Xr.GRAY},getModelDisplayName(e.model))),ce.createElement(ye,null,ce.createElement(we,{color:n},r.filled),ce.createElement(we,{color:co},r.empty),ce.createElement(we,{bold:!0,color:n},` ${e.percentage.toFixed(1)}%`)),ce.createElement(ye,null,ce.createElement(we,null,formatK(e.tokensUsed)),ce.createElement(we,{color:Xr.GRAY},` / ${formatK(e.tokenLimit)}`),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:n},formatK(e.tokensRemaining)),ce.createElement(we,{color:Xr.GRAY}," remaining"),e.isEstimated&&ce.createElement(we,{color:Xr.DIM}," (estimated)")))}function CompactionDistance({analysis:e}){if(e.percentage<40)return null;const t=e.autoCompact.tiers.find(e=>3===e.tier);if(!t||"passed"===t.status)return null;const{tokensAway:n}=t;let r=Xr.GRAY;return n<=5e4&&(r=Xr.YELLOW),n<=2e4&&(r=Xr.RED),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:r},`~${formatK(n)}`),ce.createElement(we,{color:Xr.DIM}," until auto-compact"))}function BreakdownRow({item:e,labelWidth:t,numWidth:n,showDetail:r}){return ce.createElement(ye,null,ce.createElement(we,null,e.name.padEnd(t)),ce.createElement(we,{bold:!0},formatBreakdownValue(e.tokens).padStart(n)),ce.createElement(we,{color:Xr.GRAY}," tokens"),r&&e.detail&&ce.createElement(we,{color:Xr.DIM},` · ${e.detail}`))}function ContextBreakdown({analysis:e,labelWidth:t,showBreakdownDetail:n}){const r=e.breakdown.filter(e=>e.tokens>0);if(0===r.length)return null;const o=Math.max(4,...r.map(e=>formatBreakdownValue(e.tokens).length));return ce.createElement(ye,{flexDirection:"column",marginTop:1},r.map(e=>ce.createElement(BreakdownRow,{key:e.name,item:e,labelWidth:t,numWidth:o,showDetail:n})))}function ContextTips({tips:e}){return 0===e.length?null:ce.createElement(ye,{flexDirection:"column",marginTop:1},e.map(e=>ce.createElement(ye,{key:e},ce.createElement(we,{color:Xr.CYAN},He.pointer),ce.createElement(we,{color:Xr.GRAY}," ",e))))}function ContextMessage({analysis:e}){const t=getLayoutSizes({terminalWidth:useTerminalWidth()});return ce.createElement(ye,{flexDirection:"column",paddingTop:1},ce.createElement(ContextProgress,{analysis:e,progressBarWidth:t.progressBarWidth}),ce.createElement(CompactionDistance,{analysis:e}),ce.createElement(ContextBreakdown,{analysis:e,labelWidth:t.labelWidth,showBreakdownDetail:t.showBreakdownDetail}),ce.createElement(ContextTips,{tips:e.tips}))}function ContextConfigView({staticKey:e,contextEngineRef:t,onClose:n,setInput:r}){const[o,s]=de(null),[a,i]=de(null);return pe(()=>{let e=!0;return __name(async()=>{if(t.current)try{const n=await analyzeContext({contextEngine:t.current});e&&s(n)}catch{e&&i("Failed to analyze context.")}else e&&i("No active conversation. Start chatting first.")},"load")(),()=>{e=!1}},[t]),Ee((e,t)=>{t.escape&&(r(""),n())}),ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},a?ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Context"),ce.createElement(we,{color:Xr.DIM},a)):o?ce.createElement(ContextMessage,{analysis:o}):ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Context"),ce.createElement(we,{color:Xr.DIM},"Loading context analysis...")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Esc to return to conversation"))))}__name(countMessagesByRole,"countMessagesByRole"),__name(countToolCalls,"countToolCalls"),__name(countImages,"countImages"),__name(estimateConversationTokens,"estimateConversationTokens"),__name(buildAutoCompactStatus,"buildAutoCompactStatus"),__name(getPrimaryTip,"getPrimaryTip"),__name(getSecondaryTip,"getSecondaryTip"),__name(generateTips,"generateTips"),__name(collectMemoryItems,"collectMemoryItems"),__name(collectBuiltInTools,"collectBuiltInTools"),__name(collectMcpTools,"collectMcpTools"),__name(collectSkillItems,"collectSkillItems"),__name(collectAgentItems,"collectAgentItems"),__name(sumTokens,"sumTokens"),__name(analyzeContext,"analyzeContext"),pn(),__name(formatK,"formatK"),__name(formatBreakdownValue,"formatBreakdownValue"),__name(getLayoutSizes,"getLayoutSizes"),__name(ContextProgress,"ContextProgress"),__name(CompactionDistance,"CompactionDistance"),__name(BreakdownRow,"BreakdownRow"),__name(ContextBreakdown,"ContextBreakdown"),__name(ContextTips,"ContextTips"),__name(ContextMessage,"ContextMessage"),__name(ContextConfigView,"ContextConfigView"),pn(),pn(),wn(),Rn();var EE="https://commandcode.ai/studio";function getVersionStatus(){try{return{current:getPackageJson().version,updateAvailable:null}}catch{return{current:"Unknown",updateAvailable:null}}}async function getAuthStatus(){try{const e=await checkAuthStatus(),t=e.userName||null;return{authenticated:e.authenticated,username:t}}catch{return{authenticated:!1,username:null}}}async function getModelStatus(){try{const e=await getSelectedModel(),t=getProviderDisplayName((await loadUserConfig()).provider||null);return{id:e,displayName:getModelDisplayName(e),provider:t}}catch{return{id:"Unknown",displayName:"Unknown",provider:"Unknown"}}}async function getSkillsAgentsStatus(){let e=0,t=0,n=0,r=0,o=0;try{const r=await loadAllSkillSummaries();e=r.global.length,t=r.project.length;const{names:o}=await loadDisabledSkills();n=[...r.global,...r.project].filter(e=>o.has(e.name)).length}catch{}try{const e=await loadAllAgents();r=e.personal.length,o=e.project.length}catch{}return{personalSkills:e,projectSkills:t,disabledSkills:n,personalAgents:r,projectAgents:o}}function execGitAsync(e){return new Promise(t=>{Le("git",e,{encoding:"utf8",cwd:process.cwd(),timeout:3e3},(e,n)=>{t(e?null:n.trim()||null)})})}async function getGitStatus2(){const e=await execGitAsync(["rev-parse","--abbrev-ref","HEAD"]);if(!e)return{branch:null,worktreePath:null,remoteUrl:null,remoteHttpUrl:null};const[t,n]=await Promise.all([execGitAsync(["rev-parse","--show-toplevel"]),execGitAsync(["remote","get-url","origin"])]);return{branch:e,worktreePath:t,remoteUrl:n?formatRemoteUrl(n):null,remoteHttpUrl:n?buildHttpUrl(n):null}}function parseSSHUrl(e){const t=e.match(/@([^:]+):(.+?)(?:\.git)?$/);return t?.[1]&&t[2]?{host:t[1],path:t[2]}:null}function formatRemoteUrl(e){const t=parseSSHUrl(e);if(t)return t.path;const n=e.match(/\/\/[^/]+\/(.+?)(?:\.git)?$/);return n?.[1]?n[1]:e}function buildHttpUrl(e){const t=parseSSHUrl(e);if(t)return`https://${t.host}/${t.path}`;const n=e.match(/^ssh:\/\/[^@]+@([^/]+)\/(.+?)(?:\.git)?$/);return n?.[1]&&n[2]?`https://${n[1]}/${n[2]}`:/^https?:\/\//.test(e)?e.replace(/\.git$/,""):e}function getPrStatus(e){try{const t=getCachedPR(e);return t?{number:t.number,url:t.url,state:t.state}:null}catch{return null}}async function hasTasteMdFiles(e){if(!k(e))return!1;try{return(await z(e,{recursive:!0,encoding:"utf-8"})).some(e=>e.endsWith(".md"))}catch{return!1}}async function getTasteStatus(){const e=t.join(process.cwd(),".commandcode","taste"),n=t.join(e,"taste.md"),r=k(n),o=r||await hasTasteMdFiles(e);let s=!0;try{s=await isTasteLearningEnabled()}catch{}return{fileExists:o,filePath:r?n:e,learningEnabled:s}}function detectProxy(){const e=process.env.HTTPS_PROXY||process.env.https_proxy||process.env.HTTP_PROXY||process.env.http_proxy;return e?sanitizeProxyUrl(e):null}function sanitizeProxyUrl(e){try{const t=new URL(e);return t.username="",t.password="",t.toString().replace(/\/$/,"")}catch{return"[malformed proxy URL]"}}function getSystemStatus(){let e,t,n,r;try{e=sw(D.platform()),t=bw(),n=kw(),r=Cw()}catch{e="Unknown",t="Unknown",n="Unknown",r="N/A"}return{cwd:process.cwd(),os:e,arch:D.arch(),shell:n,terminal:t,nodeVersion:process.version,ide:"N/A"!==r?r:null,proxy:detectProxy()}}async function gatherStatusData(){const e=safeSync(getVersionStatus,{current:"Unknown",updateAvailable:null}),t=safeSync(getSystemStatus,{cwd:process.cwd(),os:"Unknown",arch:D.arch(),shell:"Unknown",terminal:"Unknown",nodeVersion:process.version,ide:null,proxy:null}),[n,r,o,s,a]=await Promise.all([safeAsync(getAuthStatus,{authenticated:!1,username:null}),safeAsync(getModelStatus,{id:"Unknown",displayName:"Unknown",provider:"Unknown"}),safeAsync(getTasteStatus,{fileExists:!1,filePath:"",learningEnabled:!1}),safeAsync(getSkillsAgentsStatus,{personalSkills:0,projectSkills:0,disabledSkills:0,personalAgents:0,projectAgents:0}),safeAsync(getGitStatus2,{branch:null,worktreePath:null,remoteUrl:null,remoteHttpUrl:null})]),i=safeSync(()=>getPrStatus(a.branch),null);return{version:e,auth:n,model:r,git:a,pr:i,taste:o,skillsAgents:s,system:t}}function safeSync(e,t){try{return e()}catch{return t}}async function safeAsync(e,t){try{return await e()}catch{return t}}function formatCountValue(e,t){const n=e+t;return 0===n?"None":`${n} (${e} user, ${t} project)`}function formatSkillsValue(e){const{personal:t,project:n,disabled:r}=e,o=t+n;return 0===o?"None":0===r?formatCountValue(t,n):`${o-r} active · ${r} off · (${t} user, ${n} project installed)`}function formatSystemValue({system:e}){const t=[`${e.os} ${e.arch}`];return e.ide&&t.push(e.ide),!e.terminal||e.ide&&e.ide.toLowerCase().startsWith(e.terminal.toLowerCase())||t.push(e.terminal),t.push(e.shell),t.push(`Node ${e.nodeVersion}`),t.join(" · ")}__name(getVersionStatus,"getVersionStatus"),__name(getAuthStatus,"getAuthStatus"),__name(getModelStatus,"getModelStatus"),__name(getSkillsAgentsStatus,"getSkillsAgentsStatus"),__name(execGitAsync,"execGitAsync"),__name(getGitStatus2,"getGitStatus"),__name(parseSSHUrl,"parseSSHUrl"),__name(formatRemoteUrl,"formatRemoteUrl"),__name(buildHttpUrl,"buildHttpUrl"),__name(getPrStatus,"getPrStatus"),__name(hasTasteMdFiles,"hasTasteMdFiles"),__name(getTasteStatus,"getTasteStatus"),__name(detectProxy,"detectProxy"),__name(sanitizeProxyUrl,"sanitizeProxyUrl"),__name(getSystemStatus,"getSystemStatus"),__name(gatherStatusData,"gatherStatusData"),__name(safeSync,"safeSync"),__name(safeAsync,"safeAsync"),pn(),wn(),__name(formatCountValue,"formatCountValue"),__name(formatSkillsValue,"formatSkillsValue"),__name(formatSystemValue,"formatSystemValue");var bE=__name(({label:e,value:t,valueColor:n,dimValue:r})=>ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},`${e}:`.padEnd(14)),r?ce.createElement(we,{dimColor:!0},t):ce.createElement(we,{color:n},t)),"Row");function StatusMessage({statusData:e}){const t=e,n=t.version.updateAvailable?`v${t.version.current} → v${t.version.updateAvailable} available`:`v${t.version.current}`,r=`${t.model.provider} · ${t.model.displayName}`,o=t.git.branch||"N/A",s=t.git.worktreePath?toRelativePath(t.git.worktreePath):null,a=t.auth.authenticated?He.tick:He.cross,i=t.auth.authenticated?Xr.WHITE:io.ERROR,l=t.skillsAgents.personalSkills+t.skillsAgents.projectSkills,u=t.skillsAgents.personalAgents+t.skillsAgents.projectAgents,d=t.taste.fileExists?"Active · "+(t.taste.learningEnabled?"Learning on":"Learning off"):"No taste.md";return ce.createElement(ye,{flexDirection:"column",paddingX:0},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Command Code"," "),ce.createElement(we,{dimColor:!0},n)),ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},"Visit "),ce.createElement(Fo,{url:EE,text:EE,color:Xr.CYAN}),ce.createElement(we,{dimColor:!0}," for usage and billing")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{dimColor:!0},"Account:".padEnd(14)),t.auth.authenticated&&t.auth.username?ce.createElement(ce.Fragment,null,ce.createElement(Fo,{url:`https://commandcode.ai/${t.auth.username}/`,text:t.auth.username,color:Xr.CYAN}),ce.createElement(we,{color:i}," ",a)):t.auth.authenticated?ce.createElement(ce.Fragment,null,ce.createElement(we,null,"Authenticated"),ce.createElement(we,{color:i}," ",a)):ce.createElement(ce.Fragment,null,ce.createElement(we,{color:io.WARNING},"Not signed in"),ce.createElement(we,{color:i}," ",a),ce.createElement(we,{dimColor:!0}," — run "),ce.createElement(we,{bold:!0},"/login"))),ce.createElement(bE,{label:"Model",value:r}),ce.createElement(bE,{label:"Branch",value:o,dimValue:!t.git.branch}),s?ce.createElement(bE,{label:"Worktree",value:s}):null,t.git.remoteUrl?ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},"Repository:".padEnd(14)),ce.createElement(Fo,{url:t.git.remoteHttpUrl||`https://github.com/${t.git.remoteUrl}`,text:t.git.remoteUrl,color:Xr.CYAN}),t.pr?ce.createElement(ce.Fragment,null,ce.createElement(we,{dimColor:!0}," · "),ce.createElement(Fo,{url:t.pr.url,text:`#${t.pr.number}`,color:"OPEN"===t.pr.state?Xr.CYAN:Xr.GRAY}),ce.createElement(we,{dimColor:!0}," ","(",t.pr.state.toLowerCase(),")")):null):t.pr?ce.createElement(ye,null,ce.createElement(we,{dimColor:!0},"Pull Request:".padEnd(14)),ce.createElement(Fo,{url:t.pr.url,text:`#${t.pr.number}`,color:"OPEN"===t.pr.state?Xr.CYAN:Xr.GRAY}),ce.createElement(we,{dimColor:!0}," (",t.pr.state.toLowerCase(),")")):null,ce.createElement(bE,{label:"Taste",value:d,dimValue:!t.taste.fileExists}),ce.createElement(bE,{label:"Directory",value:toRelativePath(t.system.cwd)}),ce.createElement(bE,{label:"Skills",value:formatSkillsValue({personal:t.skillsAgents.personalSkills,project:t.skillsAgents.projectSkills,disabled:t.skillsAgents.disabledSkills}),dimValue:0===l}),ce.createElement(bE,{label:"Agents",value:formatCountValue(t.skillsAgents.personalAgents,t.skillsAgents.projectAgents),dimValue:0===u}),ce.createElement(bE,{label:"System",value:formatSystemValue({system:t.system})}),t.system.proxy?ce.createElement(bE,{label:"Proxy",value:t.system.proxy}):null)}function StatusConfigView({staticKey:e,onClose:t,setInput:n}){const[r,o]=de({phase:"loading"});return pe(()=>{let e=!1;return gatherStatusData().then(t=>{e||o({phase:"ready",data:t})}).catch(t=>{if(e)return;const n=t instanceof Error?t.message:"Failed to gather status";o({phase:"error",message:n})}),()=>{e=!0}},[]),Ee((e,r)=>{r.escape&&(n(""),t())}),ce.createElement(ce.Fragment,null,ce.createElement(yS,{staticKey:e}),ce.createElement(ye,{flexDirection:"column",width:"100%"},"ready"===r.phase?ce.createElement(StatusMessage,{statusData:r.data}):"error"===r.phase?ce.createElement(we,{dimColor:!0},"Could not load status: ",r.message):ce.createElement(we,{dimColor:!0},"Gathering status…"),ce.createElement(ye,{marginTop:1},ce.createElement(we,{dimColor:!0},"Press Esc to return to conversation"))))}__name(StatusMessage,"StatusMessage"),__name(StatusConfigView,"StatusConfigView"),pn(),pn();var kE=null!==Vp()||!!process.env.VSCODE_PID;function moveFocusDown(e,t){const{suggestionCount:n,activeDirCount:r}=t;return"input"===e.zone?n>0?{...e,zone:"suggestions",suggestionIndex:0}:r>0?{...e,zone:"active-dir",activeDirIndex:0}:e:"suggestions"===e.zone?e.suggestionIndex<n-1?{...e,suggestionIndex:e.suggestionIndex+1}:r>0?{...e,zone:"active-dir",activeDirIndex:0}:{...e,zone:"input"}:e.activeDirIndex<r-1?{...e,activeDirIndex:e.activeDirIndex+1}:{...e,zone:"input"}}function moveFocusUp(e,t){const{suggestionCount:n,activeDirCount:r}=t;return"input"===e.zone?r>0?{...e,zone:"active-dir",activeDirIndex:r-1}:n>0?{...e,zone:"suggestions",suggestionIndex:n-1}:e:"suggestions"===e.zone?e.suggestionIndex>0?{...e,suggestionIndex:e.suggestionIndex-1}:{...e,zone:"input"}:e.activeDirIndex>0?{...e,activeDirIndex:e.activeDirIndex-1}:n>0?{...e,zone:"suggestions",suggestionIndex:n-1}:{...e,zone:"input"}}function getAdjustedSuggestionOffset(e){const{selectedIndex:t,currentOffset:n,maxVisible:r,totalSuggestions:o}=e;return o<=r?0:t<n?t:t>=n+r?t-r+1:n}function getSuggestionBase(e){const n=resolveDirectoryPath(e),r=/[\\/]$/.test(e),o=e.replace(/\\/g,"/");if(o.endsWith("/."))return{searchDirectory:n,prefix:".",outputPrefix:`${o.slice(0,-1)}`};if(r)return{searchDirectory:n,prefix:"",outputPrefix:o};const s=o.lastIndexOf("/");return-1===s?{searchDirectory:t.dirname(n),prefix:t.basename(n),outputPrefix:""}:{searchDirectory:t.dirname(n),prefix:t.basename(n),outputPrefix:o.slice(0,s+1)}}function getDirectorySuggestions(e){const t=e.trim();if(!t)return[];try{const{searchDirectory:e,prefix:n,outputPrefix:r}=getSuggestionBase(t),o=n.startsWith(".")||r.includes("/.");return E.readdirSync(e,{withFileTypes:!0}).filter(e=>e.isDirectory()).filter(e=>!!o||!e.name.startsWith(".")).filter(e=>!n||e.name.toLowerCase().startsWith(n.toLowerCase())).sort((e,t)=>e.name.localeCompare(t.name)).map(e=>`${r}${e.name}/`)}catch(e){const t=e.code;return"ENOENT"!==t&&"ENOTDIR"!==t&&console.error(`Warning: Could not list directory suggestions: ${t}`),[]}}function getFooterText(e){return"active-dir"===e.focusZone?"[Del] Remove [↑↓] Navigate [Tab] Autocomplete [Esc] Close":"[Enter] Add [↑↓] Navigate [Tab] Autocomplete [Esc] Close"}pn(),pn(),__name(function createInitialFocusState(){return{zone:"input",suggestionIndex:0,activeDirIndex:0}},"createInitialFocusState"),__name(moveFocusDown,"moveFocusDown"),__name(moveFocusUp,"moveFocusUp"),__name(getAdjustedSuggestionOffset,"getAdjustedSuggestionOffset"),__name(getSuggestionBase,"getSuggestionBase"),__name(getDirectorySuggestions,"getDirectorySuggestions"),__name(getFooterText,"getFooterText");var CE=__name(({onClose:e})=>{const[t,n]=de(""),[r,o]=de(null),[s,a]=de([]),[i,l]=de(getAdditionalDirectories()),[u,d]=de({zone:"input",suggestionIndex:0,activeDirIndex:0}),[m,g]=de(0);pe(()=>{a(t?getDirectorySuggestions(t):[]),d(e=>({...e,zone:"input"})),g(0)},[t]),pe(()=>{if(!r||"success"!==r.tone)return;const e=setTimeout(()=>{o(null)},5e3);return()=>clearTimeout(e)},[r]);const h=__name(e=>{const t=addDirectory(e);"error"!==t.status?"skipped"!==t.status?(o({tone:"success",text:`Added ${t.displayPath} to directory scope`}),n(""),l(getAdditionalDirectories()),d({zone:"input",suggestionIndex:0,activeDirIndex:0})):o({tone:"warning",text:t.message}):o({tone:"error",text:t.message})},"submitPath"),f=__name(e=>{if(!removeAdditionalDirectory(e))return o({tone:"error",text:`${formatDirectoryForDisplay(e)} is no longer in workspace scope`}),void l(getAdditionalDirectories());o({tone:"success",text:`Removed ${formatDirectoryForDisplay(e)} from directory scope`}),l(getAdditionalDirectories()),d(e=>{if("active-dir"!==e.zone)return e;const t=Math.max(0,e.activeDirIndex-1);return{...e,activeDirIndex:t}})},"handleRemove");Ee((t,r)=>{if(r.escape)e();else{if(r.return)return"suggestions"===u.zone&&s[u.suggestionIndex]?void h(s[u.suggestionIndex]):void 0;if((r.delete||r.backspace)&&"active-dir"===u.zone&&i[u.activeDirIndex])f(i[u.activeDirIndex]);else{if(r.tab&&s.length>0){const e=s[u.suggestionIndex]??s[0];return void(e&&(n(e),d(e=>({...e,zone:"input"})),o(null)))}r.downArrow?d(e=>moveFocusDown(e,{suggestionCount:s.length,activeDirCount:i.length})):r.upArrow&&d(e=>moveFocusUp(e,{suggestionCount:s.length,activeDirCount:i.length}))}}}),pe(()=>{"suggestions"===u.zone&&g(e=>getAdjustedSuggestionOffset({selectedIndex:u.suggestionIndex,currentOffset:e,maxVisible:8,totalSuggestions:s.length}))},[u,s.length]),pe(()=>{d(e=>"suggestions"===e.zone&&e.suggestionIndex>=s.length?{...e,zone:"input",suggestionIndex:Math.max(0,s.length-1)}:"active-dir"===e.zone&&e.activeDirIndex>=i.length?{...e,zone:"input",activeDirIndex:Math.max(0,i.length-1)}:e)},[s.length,i.length]);const y=s.slice(m,m+8),w=getFooterText({focusZone:u.zone});return ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:Xr.CYAN,paddingX:1,paddingY:0},ce.createElement(we,{bold:!0,color:Xr.CYAN},"Add directory to workspace"),ce.createElement(we,{color:Xr.GRAY},"Command Code will be able to read files in this directory and make edits when accept edits mode is on."),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.GRAY},"Added directories"),0===i.length?ce.createElement(we,{color:Xr.GRAY}," None yet"):i.map((e,t)=>{const n="active-dir"===u.zone&&u.activeDirIndex===t;return ce.createElement(we,{key:e,color:n?Xr.YELLOW:Xr.GREEN,bold:n&&isLightTheme()},n?` ${He.pointer} `:" ",formatDirectoryForDisplay(e))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0,color:Xr.WHITE},"Path")),ce.createElement(ye,null,ce.createElement(TextInput,{value:t,focus:"input"===u.zone,prefix:`${"input"===u.zone?He.pointer:" "} `,prefixColor:"input"===u.zone?Xr.CYAN:Xr.GRAY,onChange:e=>{n(e),o(null)},onSubmit:h})),!t&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Examples: ../shared ~/docs /abs/path")),r&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:{error:Xr.RED,warning:Xr.YELLOW,success:Xr.GREEN}[r.tone]},r.text)),s.length>0&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Suggestions"),y.map((e,t)=>{const n=m+t,r="suggestions"===u.zone&&u.suggestionIndex===n;return ce.createElement(we,{key:e,color:r?Xr.CYAN:Xr.GRAY,bold:r&&isLightTheme()},r?` ${He.pointer} `:" ",e)})),ce.createElement(ye,{marginTop:1},ce.createElement(BracketedText,{text:w,color:Xr.DIM})))},"AddDirModal");pn(),pn(),wn(),pn(),pn(),wn();var vE=__name(()=>t.join(D.homedir(),".commandcode","agents"),"getRootAgentDir"),TE=__name(()=>t.join(process.cwd(),".commandcode","agents"),"getLocalAgentDir"),xE=__name(({config:e,onSaveComplete:n,viewOnly:r=!1})=>{const[o,s]=de("idle"),[a,i]=de(""),l=[...mf.map(e=>e.name),...pf.map(e=>e.name)],u=__name(async()=>{if(!e.agentType||!e.sysPrompt)return s("error"),void i("Agent configuration is incomplete");s("saving");try{const r="personal"===e.location?vE():TE();await U.mkdir(r,{recursive:!0});const o=`${e.agentType}.md`,s=t.join(r,o),a=Array.from(e.selectedTools).map(e=>ff[e]||e).join(", "),i=0===e.selectedTools.size?"none":e.selectedTools.size===l.length?'"*"':JSON.stringify(a),u=`---\nname: "${e.agentType}"\ndescription: ${JSON.stringify(e.ccToolDefinition)}\ntools: ${i}\n---\n\n${e.sysPrompt}\n`;await U.writeFile(s,u,"utf-8"),n(e.agentType)}catch(e){console.error("Error saving agent:",e),s("error"),i(e instanceof Error?e.message:"Unknown error occurred")}},"handleSaveAgent");Ee((e,t)=>{r||!t.return||"idle"!==o&&"error"!==o||u()});const d=Array.from(e.selectedTools).map(e=>ff[e]||e).join(", "),m="personal"===e.location?`~/.commandcode/agents/${e.agentType}`:`.commandcode/agents/${e.agentType}`;return ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Name:"),ce.createElement(we,{color:Xr.GRAY},e.agentType)),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Location:"),ce.createElement(we,{color:Xr.GRAY},m)),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Tools:"),ce.createElement(we,{color:Xr.GRAY},0===e.selectedTools.size?"None":e.selectedTools.size===l.length?"*":d))),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Description"),ce.createElement(we,{color:Xr.GRAY},"(Tells ","Command Code"," when to use this agent):")),ce.createElement(we,{color:Xr.GRAY},e.ccToolDefinition),ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"System Prompt:")),ce.createElement(we,{color:Xr.GRAY},e.sysPrompt),!r&&ce.createElement(ye,{marginTop:1},"idle"===o&&ce.createElement(ye,{gap:1},ce.createElement(we,{color:Xr.GREEN,dimColor:!0},"Press"),ce.createElement(we,{color:Xr.GREEN,bold:!0},"Enter"),ce.createElement(we,{color:Xr.GREEN,dimColor:!0},"to save • Esc to cancel")),"saving"===o&&ce.createElement(we,{color:Xr.YELLOW},"Saving agent..."),"saved"===o&&ce.createElement(we,{color:Xr.GREEN},He.tick," ",a),"error"===o&&ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.RED},He.cross," Error: ",a),ce.createElement(we,{color:Xr.GRAY},"Press Enter to retry"))))},"AgentSummary"),PE=__name(({agent:e,onBack:t,setRevalidateAgent:n,isReadOnly:r=!1})=>{const[o,s]=de("menu"),a=[...mf.map(e=>e.name),...pf.map(e=>e.name)];let i=new Set;if("*"===e.tools||'"*"'===e.tools)i=new Set(a);else if(e.tools&&"none"!==e.tools){const t=e.tools.replace(/^"|"$/g,"").split(",").map(e=>e.trim()).map(e=>yf[e]||e);i=new Set(t)}const l={location:e.location,method:"manual",agentType:e.name,sysPrompt:e.sysPrompt,ccToolDefinition:e.description,recommendedMethodDescription:"",selectedTools:i},u=[{label:"1. View agent",value:"view"},...r?[]:[{label:"2. Delete agent",value:"delete"}],{label:r?"2. Back":"3. Back",value:"back"}],d=__name(e=>{"back"===e.value?t():"view"===e.value?s("view"):"edit"===e.value?s("edit"):"delete"===e.value&&s("delete")},"handleMenuSelect"),m=[{label:"1. Yes, delete",value:"confirm-delete"},{label:"2. No, cancel",value:"cancel"}],g=__name(async r=>{if("confirm-delete"===r.value)try{await U.unlink(e.filePath),n(!0),t()}catch(e){console.error(`Failed to delete agent: ${e}`),s("menu")}else s("menu")},"handleDeleteSelect");return Ee((e,n)=>{if(n.escape)"menu"===o?t():s("menu");else if(n.return&&"view"===o)s("menu");else if(1===e.length&&e>="1"&&e<="9"){const t=Number(e)-1;if("menu"===o){const e=u[t];e&&d(e)}else if("delete"===o){const e=m[t];e&&g(e)}}}),"view"===o?ce.createElement(ye,{flexDirection:"column"},ce.createElement(xE,{config:l,onSaveComplete:()=>s("menu"),viewOnly:!0}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Press Enter to go back"))):"edit"===o?ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.YELLOW},"Edit functionality coming soon..."),ce.createElement(we,{color:Xr.GRAY},"Press Esc to go back")):"delete"===o?ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.RED},"Delete agent"),ce.createElement(we,{color:Xr.GRAY},"Are you sure you want to delete the agent ",e.name,"?")),ce.createElement(ye,null,ce.createElement(bt,{items:m,onSelect:g,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e},` ${t} `)}))):ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE,bold:!0},e.name),ce.createElement(ye,{marginTop:1},ce.createElement(bt,{items:u,onSelect:d,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e},` ${t} `)})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},"Press ↑↓ to navigate · Enter to select · Esc to go back")))},"AgentDetails"),AE=__name(({handleSelect:e,createdAgentName:n})=>{const[r,o]=de([]),[s,a]=de([]),[i,l]=de([]),[u,d]=de(!0),[m,g]=de(!1),[h,f]=de(null),[y,w]=de(!1),[S,E]=de(0),[k,C]=de(0),v=useTerminalHeight(),T=__name(()=>t.join(D.homedir(),".commandcode","agents"),"getRootAgentDir"),x=__name(async(e,n)=>{try{g(!1);const r=(await U.readdir(e)).filter(e=>e.endsWith(".md"));return(await Promise.all(r.map(async r=>{try{const o=t.join(e,r),s=await U.readFile(o,"utf-8"),{data:a,content:i}=ee(s);let l=a.tools||"";return"*"!==l&&'"*"'!==l||(l="*"),{name:a.name||r.replace(".md",""),description:a.description||"",tools:l,sysPrompt:i.trim(),location:n,filePath:o}}catch(e){return console.error(`Error loading agent from ${r}:`,e),null}}))).filter(e=>null!==e)}catch{return[]}},"loadAgentsFromDirectory");pe(()=>{__name(async()=>{d(!0);const[e,...t]=await Promise.all([x(T(),"personal"),...getProjectAgentDirs().map(e=>x(e,"project"))]),n=new Set,r=[];for(const e of t.flat())n.has(e.name)||(n.add(e.name),r.push(e));const s=Ag.map(e=>({name:e.name,description:e.description,tools:Array.isArray(e.tools)?e.tools.join(", "):e.tools,sysPrompt:e.systemPrompt,location:"personal",filePath:`__builtin__:${e.name}`}));o(e),a(r),l(s),d(!1)},"loadAgents")()},[m]);const P=[{label:"Create new agent",value:"create_new_agent"}];r.forEach(e=>{P.push({label:e.name,value:e.filePath})}),s.forEach(e=>{P.push({label:e.name,value:e.filePath})});const A=r.length+s.length,I=(r.length>0?1:0)+(s.length>0?1:0),M=__name(e=>0===e?"action":e<=r.length?"user":"project","sectionOf"),R=v-1,_=Math.max(4,R-11-i.length-2*I),N=__name(t=>{if("create_new_agent"===t.value)e(t);else{const e=[...r,...s].find(e=>e.filePath===t.value);e&&(f(e),w(!0))}},"handleAgentSelect");if(Ee((e,t)=>{if(t.upArrow)E(e=>Math.max(0,e-1));else if(t.downArrow)E(e=>Math.min(P.length-1,e+1));else if(t.return){const e=P[S];e&&N(e)}},{isActive:!u&&!y}),pe(()=>{E(e=>Math.min(e,Math.max(0,P.length-1)))},[P.length]),pe(()=>{C(e=>clampScrollOffset({cursor:S,total:P.length,maxVisible:_,currentOffset:e}))},[S,P.length,_]),u)return ce.createElement(we,{color:Xr.GRAY},"Loading agents...");if(y&&h){const e=h.filePath.startsWith("__builtin__:");return ce.createElement(PE,{agent:h,onBack:()=>{w(!1),f(null)},setRevalidateAgent:g,isReadOnly:e})}const $=k,L=k+_,O=P.slice($,L),F=P.length>_;let B=null;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Agents"),A>0?ce.createElement(we,{color:Xr.GRAY}," ","(",A," agent",A>1?"s":"",")"):ce.createElement(we,{color:Xr.GRAY}," (No custom agents)")),n&&ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{color:Xr.GREEN,dimColor:!0},"Created agent: ",n)),ce.createElement(ye,{flexDirection:"column"},O.map((e,t)=>{const n=$+t,r=M(n),o="action"!==r&&r!==B;B=r;const s=n===S,a="user"===r?"User agents":"Project agents";return ce.createElement(ce.Fragment,{key:e.value},o&&ce.createElement(ye,{marginTop:0===t?0:1},ce.createElement(we,{color:co,bold:!0},a)),ce.createElement(ye,null,ce.createElement(we,{color:s?Xr.WHITE:Xr.GRAY,backgroundColor:s?Co:void 0,bold:s},e.label," ")))})),F&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",$+1,"–",Math.min(L,P.length)," of ",P.length,$>0?" · ↑ more":"",L<P.length?" · ↓ more":"")),i.length>0&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:co,bold:!0},"Default agents"),i.map(e=>ce.createElement(we,{key:e.filePath,color:Xr.DIM},e.name.charAt(0).toUpperCase()+e.name.slice(1)))),ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM},"Create specialized subagents that Command Code can delegate to."),ce.createElement(we,{color:Xr.DIM},"Each subagent has its own context window, custom system prompt, and specific tools.")))},"ManageAgents");pn(),wn(),pn(),pn(),wn();var IE=__name(({onSelect:e})=>ce.createElement(bt,{items:[{label:"1. Project (.commandcode/agents/)",value:"project"},{label:"2. Personal (~/.commandcode/agents/)",value:"personal"}],onSelect:t=>{"project"!==t.value&&"personal"!==t.value||e(t.value)},indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},e?">":" "),itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},` ${t}`)}),"LocationSelector");pn(),wn(),An();var ME=__name(({step:e,agentType:t,sysPrompt:n,ccToolDefinition:r,onAgentTypeChange:o,onSysPromptChange:s,onCCToolDefinitionChange:a,onAgentTypeSubmit:i,onSysPromptSubmit:l,onCCToolDefinitionSubmit:u})=>{const[d,m]=de(!1),[g,h]=de(!1),f=he(async e=>{const t=processBracketedPaste(e);if(!t.isPasteStart||d){if(!d||t.isPasteEnd){if(d&&t.isPasteEnd){m(!1);const e=await detectClipboardText();return void(e?s(e):t.cleanedContent&&s(t.cleanedContent))}s(e)}}else if(m(!0),t.isPasteEnd){m(!1);const e=await detectClipboardText();return void(e?s(e):t.cleanedContent&&s(t.cleanedContent))}},[d,s]),y=he(async e=>{const t=processBracketedPaste(e);if(!t.isPasteStart||g){if(!g||t.isPasteEnd){if(g&&t.isPasteEnd){h(!1);const e=await detectClipboardText();return void(e?a(e):t.cleanedContent&&a(t.cleanedContent))}a(e)}}else if(h(!0),t.isPasteEnd){h(!1);const e=await detectClipboardText();return void(e?a(e):t.cleanedContent&&a(t.cleanedContent))}},[g,a]);return"agentType"===e?ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE},"Enter a unique identifier for your agent:"),t&&(Object.values(ff).some(e=>Ye(e)===Ye(t))||Object.keys(ff).some(e=>Ye(e)===Ye(t)))&&ce.createElement(we,{color:Xr.RED},He.warning," This name conflicts with an existing tool name. Please choose a different name."),t&&isReservedAgentName(Ye(t))&&ce.createElement(we,{color:Xr.RED},He.warning," This name is reserved. Reserved names: ",Pg.join(", "))),ce.createElement(TextInput,{showCursor:!0,value:t||"",onSubmit:()=>{if(null===t||0===t.trim().length)return;const e=Ye(t);Object.values(ff).some(t=>Ye(t)===e)||Object.keys(ff).some(t=>Ye(t)===e)||isReservedAgentName(e)||i()},onChange:o,placeholder:"e.g. code-reviewer, unit-tester"})):"sysPrompt"===e?ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE},"Enter the system prompt for your agent:"),ce.createElement(we,{color:Xr.GRAY},"Be comprehensive for best results.")),ce.createElement(TextInput,{showCursor:!0,value:n||"",onSubmit:()=>{null!==n&&0!==n.trim().length&&l()},onChange:f,placeholder:"You are a helpful coding reviewer..."})):"ccToolDefinition"===e?ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.WHITE},"When should ","Command Code"," use this agent?"),ce.createElement(TextInput,{showCursor:!0,value:r,onSubmit:()=>{0!==r.trim().length&&u()},onChange:y,placeholder:"e.g., Use this agent when you are done writing code..."})):null},"ManualFlow");pn();var RE=__name(({onSelect:e})=>ce.createElement(bt,{items:[{label:"1. Generate with Command Code (recommended)",value:"recommended"},{label:"2. Manual configuration",value:"manual"}],onSelect:t=>{"recommended"!==t.value&&"manual"!==t.value||e(t.value)},indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},e?">":" "),itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,bold:e&&isLightTheme()},` ${t}`)}),"MethodSelector");pn(),pn();var _E=["·","○","◇","☆","✧","☆","◇","○","⌘"],DE=[12,5,4,4,4,4,4,5,16],NE=[5,4,4,4,4,4,5];function getWaveSymbol(e){const t=e%88;let n=0;for(let e=0;e<DE.length;e++)if(n+=DE[e],t<n)return _E[e];const r=t-58;n=0;for(let e=0;e<NE.length;e++)if(n+=NE[e],r<n)return _E[7-e];return _E[0]}function ShimmerText({text:e,offset:t,bg:n}){const r=ge(()=>e.split(""),[e]),o=__name(e=>{const n=e-(t-5);return n>=0&&n<So.length?So[n]:Eo},"getCharColor");return ce.createElement(we,null,r.map((e,t)=>ce.createElement(we,{key:`${t}:${e}`,color:o(t),backgroundColor:n},e)))}function CMDIcon({frame:e,color:t}){return ce.createElement(we,{color:t??Zr,bold:!0},`${getWaveSymbol(e)} `)}function formatToken(e){return e<1e3?`${e}`:`${(e/1e3).toFixed(1)}k`}function formatTime3(e){return e<6e4?`${Math.floor(e/1e3)}s`:`${Math.floor(e/6e4)}m ${Math.floor(e%6e4/1e3)}s`}__name(getWaveSymbol,"getWaveSymbol"),__name(ShimmerText,"ShimmerText"),__name(CMDIcon,"CMDIcon"),__name(formatToken,"formatToken"),__name(formatTime3,"formatTime");var $E=__name(({status:e,timeElapsed:t,tokens:n})=>{const[r,o]=de(0),[s,a]=de(0),i=me(n);i.current=n;const l=getTerminalWidth(),[u,d]=de(()=>l>=72?"all":l>=42?"medium":"none");pe(()=>{d(e=>"all"===e?l<68?l>=42?"medium":"none":"all":"medium"===e?l>=72?"all":l<38?"none":"medium":l>=72?"all":l>=42?"medium":"none")},[l]),pe(()=>{const e=setInterval(()=>{o(e=>(e+1)%88),a(e=>{const t=i.current;if(e===t)return e;const n=t-e,r=e+Math.sign(n)*Math.max(1,Math.ceil(Math.abs(n)/10));return n>0?Math.min(r,t):Math.max(r,t)})},80);return()=>clearInterval(e)},[]);const m=r%(e.length+10),g="all"===u,h="medium"===u;return Nf.statusRender({width:l,layoutMode:u,status:e,frame:r}),ce.createElement(ye,{width:l,height:1,paddingLeft:0,marginLeft:0},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:so.BG,color:so.FG}," "),ce.createElement(we,{backgroundColor:so.BG},ce.createElement(CMDIcon,{frame:4*r,color:so.FG})),ce.createElement(ShimmerText,{text:e,offset:m,bg:so.BG}),ce.createElement(we,{backgroundColor:so.BG,color:so.FG}," ")),g&&ce.createElement(ye,{columnGap:1,marginLeft:1},ce.createElement(we,{bold:!0,color:Xr.GRAY},"esc"),ce.createElement(we,{color:Xr.DIM},"to interrupt"),ce.createElement(we,{color:Xr.DIM},"•"),ce.createElement(we,{color:Xr.DIM},formatTime3(t)),ce.createElement(we,{color:Xr.DIM},"•"),ce.createElement(we,{color:Xr.GRAY},He.arrowDown),ce.createElement(we,{color:Xr.DIM},formatToken(Math.round(s)))),h&&ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},formatToken(Math.round(s)))))},"Status");An();var LE=__name(({description:e,onChange:t,onSubmit:n,loading:r,errorMessage:o})=>{const[s,a]=de(!1),[i,l]=de(0),[u,d]=de(0);pe(()=>{if(!r)return;const e=setInterval(()=>d(e=>e+1),50);return()=>clearInterval(e)},[r]);const m=he(()=>{0!==e.trim().length&&n()},[e,n]),g=he(async e=>{const n=processBracketedPaste(e);if(!n.isPasteStart||s){if(!s||n.isPasteEnd){if(s&&n.isPasteEnd){a(!1);const e=await detectClipboardText();return void(e?(l(e=>e+1),t(e)):n.cleanedContent&&(l(e=>e+1),t(n.cleanedContent)))}t(e)}}else if(a(!0),n.isPasteEnd){a(!1);const e=await detectClipboardText();return void(e?(l(e=>e+1),t(e)):n.cleanedContent&&(l(e=>e+1),t(n.cleanedContent)))}},[s,t]);return ce.createElement(ye,{flexDirection:"column"},r?ce.createElement(ye,null,ce.createElement(CMDIcon,{frame:u}),ce.createElement(we,{color:Xr.WHITE},"Generating agent from description...")):ce.createElement(TextInput,{key:i,showCursor:!0,value:e,placeholder:"e.g. Help me review my code...",onChange:g,onSubmit:m}),o&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.RED},`${He.warning} ${o}`)))},"RecommendedFlow");pn();var OE=__name(({selectedTools:e,onToggleTool:t,onToggleCategory:n,onComplete:r})=>{const[o,s]=de(!1),[a,i]=de(0),[l,u]=de(0),d=useTerminalHeight(),m=ge(()=>[...mf.map(e=>e.name),...pf.map(e=>e.name)],[]),g=ge(()=>[{name:"All tools",tools:m},{name:"Read-only tools",tools:m.filter(e=>"read_file"===e||"read_directory"===e||"read_multiple_files"===e||"grep"===e)},{name:"Edit tools",tools:m.filter(e=>"edit_file"===e||"write_file"===e)},{name:"Execution tools",tools:m.filter(e=>"shell_command"===e)},{name:"Search tools",tools:m.filter(e=>"web_search"===e||"web_fetch"===e)},{name:"Other tools",tools:m.filter(e=>!["read_file","read_directory","read_multiple_files","grep","edit_file","write_file","shell_command","web_search","web_fetch"].includes(e))}].filter(e=>e.tools.length>0),[m]),h=ge(()=>{const e=[];return e.push({type:"continue",value:"continue"}),e.push({type:"divider",value:"divider-1"}),o?(g.forEach(t=>{e.push({type:"category",value:t.name})}),e.push({type:"divider",value:"divider-3"}),e.push({type:"toggle",value:"hide-advanced"}),e.push({type:"spacer",value:"spacer-1"}),e.push({type:"label",value:"Individual Tools:"}),m.forEach(t=>{e.push({type:"tool",value:t})})):(g.forEach(t=>{e.push({type:"category",value:t.name})}),e.push({type:"divider",value:"divider-2"}),e.push({type:"toggle",value:"show-advanced"})),e},[o,g,e,m]),f=h.map((t,n)=>{if("divider"===t.type)return{label:"─".repeat(30),value:n,type:"divider"};if("spacer"===t.type)return{label:"",value:n,type:"spacer"};if("label"===t.type)return{label:t.value,value:n,type:"label"};if("continue"===t.type)return{label:"[ Continue ]",value:n,type:"continue"};if("toggle"===t.type)return{label:"show-advanced"===t.value?"[ Show advanced options ]":"[ Hide advanced options ]",value:n,type:"toggle"};if("category"===t.type){const r=g.find(e=>e.name===t.value),o=r?.tools.every(t=>e.has(t));return r?.tools.some(t=>e.has(t)),{label:`${o?"[x]":"[ ]"} ${t.value}`,value:n,type:"category"}}return"tool"===t.type?{label:` ${e.has(t.value)?"[x]":"[ ]"} ${ff[t.value]||t.value}`,value:n,type:"tool"}:{label:"",value:n,type:"unknown"}}),y=f.filter(e=>"divider"!==e.type&&"spacer"!==e.type&&"label"!==e.type),w=Math.max(5,d-1-10),S=y[a]?.value??0;pe(()=>{u(e=>clampScrollOffset({cursor:S,total:f.length,maxVisible:w,currentOffset:e}))},[S,f.length,w]);const E=l,k=l+w,C=f.slice(E,k),v=f.length>w;return Ee((e,l)=>{if(l.upArrow)i(e=>{const t=e-1;return t<0?y.length-1:t});else if(l.downArrow)i(e=>{const t=e+1;return t>=y.length?0:t});else if(l.return||" "===e){const e=y[a];if(e){const a=h[e.value];if(!a)return;"continue"===a.type?r():"toggle"===a.type?(s(!o),i(0)):"category"===a.type?n(a.value):"tool"===a.type&&t(a.value)}}}),ce.createElement(ye,{flexDirection:"column"},C.map(e=>{const t=y.findIndex(t=>t.value===e.value),n=-1!==t&&t===a;if("divider"===e.type)return ce.createElement(ye,{key:`divider-${e.value}`},ce.createElement(we,{color:Xr.GRAY}," ",e.label));if("spacer"===e.type)return ce.createElement(ye,{key:`spacer-${e.value}`,height:1});if("label"===e.type)return ce.createElement(ye,{key:`label-${e.value}`},ce.createElement(we,{color:Xr.GRAY}," ",e.label));const r="continue"===e.type;return ce.createElement(ye,{key:`item-${e.value}`},ce.createElement(we,{color:n?Xr.WHITE:Xr.GRAY,bold:r&&n},n?">":" "," ",e.label))}),v&&ce.createElement(ye,null,ce.createElement(we,{color:Xr.GRAY}," ","Showing ",E+1,"–",Math.min(k,f.length)," of"," ",f.length,E>0?" · ↑ more":"",k<f.length?" · ↓ more":"")),ce.createElement(ye,{marginTop:1},e.size===m.length&&ce.createElement(we,{color:Xr.GRAY},"All tools selected"),e.size>0&&e.size<m.length&&ce.createElement(we,{color:Xr.GRAY},e.size," tools selected"),0===e.size&&ce.createElement(we,{color:Xr.GRAY},"No tools selected")))},"ToolsSelector"),FE=__name(({onComplete:e})=>{const[t,n]=de("location"),[r,o]=de(!1),[s,a]=de(null),[i,l]=de("agentType"),u=ge(()=>[...mf.map(e=>e.name),...pf.map(e=>e.name)],[]),d=__name(()=>({location:null,method:null,agentType:null,sysPrompt:null,ccToolDefinition:"",recommendedMethodDescription:"",selectedTools:new Set(u)}),"getInitialConfig"),[m,g]=de(d()),h=__name(t=>{n("location"),l("agentType"),g(d()),e(t)},"resetToDefaults"),f=__name(()=>{if("location"===t)return"Choose location";if("method"===t)return"Creation method";if("configuration"===t){if("recommended"===m.method)return"Describe what this agent should do and when it should be used (be comprehensive for best results)";if("agentType"===i)return"Agent type (identifier)";if("sysPrompt"===i)return"System prompt";if("ccToolDefinition"===i)return"Description (Tell Command Code when to use this agent)"}return"tools"===t?"Select tools":"summary"===t?"Confirm and save":""},"getSubText"),y=__name(e=>{g({...m,location:e}),n("method")},"handleLocationSelect"),w=__name(e=>{g({...m,method:e}),n("configuration")},"handleMethodSelect"),S=__name(async()=>{try{a(null),o(!0);const e=await getConfiguredProvider(),t=await isOAuthEnforced(),{token:r,oauthProvider:s}=await getOAuthCredentials({provider:e});validateOAuthToken({token:r,provider:e});const i={[Rt.INTERNAL_TEAM_FLAG_HEADER]:t.toString()};r&&(i[Rt.OAUTH_TOKEN]=`Bearer ${r}`,s&&(i[Rt.OAUTH_PROVIDER]=s));const l=getApiBaseUrl(),u=new Nu({baseUrl:l}),d=parseModelString(getConfiguredModel()).modelId,h=await u.post({headers:i,endpoint:Dt.ALPHA.AGENT.GENERATE,body:{description:m.recommendedMethodDescription,model:d}});g({...m,agentType:Ye(h.agentName),sysPrompt:h.systemPrompt,ccToolDefinition:h.toolDescription}),n("tools")}catch(e){if(e instanceof vs&&400===e.status&&e.message?.toLowerCase().includes("insufficient credits")){const e=await getBillingLink({billingLink:null,setBillingLink:__name(()=>{},"setBillingLink")})??"https://commandcode.ai/billing";a(`You have insufficient credits to make this request. Please purchase more credits to continue using Command Code: ${e}`)}else a("An error occurred while generating the agent. Please try again.")}finally{o(!1)}},"handleRecommendedSubmit"),E=__name(()=>{g({...m,agentType:Ye(m.agentType)}),l("sysPrompt")},"handleManualAgentTypeSubmit"),k=__name(()=>{l("ccToolDefinition")},"handleManualSysPromptSubmit"),C=__name(()=>{n("tools")},"handleManualCCToolDefinitionSubmit"),v=__name(()=>{n("summary")},"handleToolsComplete"),T=__name(e=>{const t=new Set(m.selectedTools);t.has(e)?t.delete(e):t.add(e),g({...m,selectedTools:t})},"handleToggleTool"),x=__name(e=>{const t=[{name:"All tools",tools:u},{name:"Read-only tools",tools:u.filter(e=>"read_file"===e||"read_directory"===e||"read_multiple_files"===e||"grep"===e)},{name:"Edit tools",tools:u.filter(e=>"edit_file"===e||"write_file"===e)},{name:"Execution tools",tools:u.filter(e=>"shell_command"===e)},{name:"Search tools",tools:u.filter(e=>"web_search"===e||"web_fetch"===e)},{name:"Other tools",tools:u.filter(e=>!["read_file","read_directory","read_multiple_files","grep","edit_file","write_file","shell_command","web_search","web_fetch"].includes(e))}].find(t=>t.name===e);if(!t)return;const n=new Set(m.selectedTools);t.tools.every(e=>n.has(e))?t.tools.forEach(e=>n.delete(e)):t.tools.forEach(e=>n.add(e)),g({...m,selectedTools:n})},"handleToggleCategory");return ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.WHITE,bold:!0},"Create new agent"),ce.createElement(we,{color:Xr.GRAY},f())),ce.createElement(ye,null,"location"===t&&ce.createElement(IE,{onSelect:y}),"method"===t&&ce.createElement(RE,{onSelect:w}),"configuration"===t&&"recommended"===m.method&&ce.createElement(LE,{description:m.recommendedMethodDescription,onChange:e=>g({...m,recommendedMethodDescription:e}),loading:r,errorMessage:s,onSubmit:S}),"configuration"===t&&"manual"===m.method&&ce.createElement(ye,{flexDirection:"column",gap:1},ce.createElement(ME,{step:i,agentType:m.agentType,sysPrompt:m.sysPrompt,ccToolDefinition:m.ccToolDefinition,onAgentTypeChange:e=>g({...m,agentType:e}),onSysPromptChange:e=>g({...m,sysPrompt:e}),onCCToolDefinitionChange:e=>g({...m,ccToolDefinition:e}),onAgentTypeSubmit:E,onSysPromptSubmit:k,onCCToolDefinitionSubmit:C})),"tools"===t&&ce.createElement(OE,{selectedTools:m.selectedTools,onToggleTool:T,onToggleCategory:x,onComplete:v}),"summary"===t&&ce.createElement(xE,{config:m,onSaveComplete:h})))},"AgentNew"),UE=__name(({onCancel:e})=>{const[t,n]=de(null),[r,o]=de(null),s=__name(e=>{n(e.value),o(null)},"handleSelect");return Ee((t,n)=>{n.escape&&e()}),ce.createElement(ye,{width:"100%",flexDirection:"column"},null===t&&ce.createElement(AE,{handleSelect:s,createdAgentName:r}),"create_new_agent"===t&&ce.createElement(FE,{onComplete:e=>{o(e),n(null)}}))},"AgentsConfig");function isToggleShortcut(e,t){return""===e||!0===t.ctrl&&"b"===e}function useShellTaskSnapshot(){const[e,t]=de(()=>listShellTasks({includeStopped:!0}));return pe(()=>{const e=__name(()=>t(listShellTasks({includeStopped:!0})),"refresh");e();const n=setInterval(e,1e3);return()=>clearInterval(n)},[]),e}function getTaskLabel(e){return"monitor"===e.kind?e.description??e.command:e.command}function getStatusColor(e){switch(e.status){case"running":return Xr.GREEN;case"completed":return Xr.CYAN;case"failed":return Xr.RED;case"stopped":return"max-duration"===e.stopReason?Xr.YELLOW:Xr.GRAY}}function getStatusText(e){return"max-duration"===e.stopReason?"auto-stopped":e.status}function countLabel(e,t,n){return 0===e?"":1===e?`1 ${t}`:`${e} ${n}`}function compactTaskSummary(e){const t=e.filter(e=>"running"===e.status),n=t.filter(e=>"monitor"===e.kind).length,r=t.filter(e=>"shell"===e.kind).length;return[countLabel(n,"monitor","monitors"),countLabel(r,"shell","shells")].filter(Boolean).join(", ")}function getVisibleTasks(e){return[...e].sort((e,t)=>"running"===e.status&&"running"!==t.status?-1:"running"!==e.status&&"running"===t.status?1:t.startedAt.localeCompare(e.startedAt))}function latestOutputLines(e){return e.trimEnd().split("\n").filter(e=>e.trim().length>0).slice(-5)}function TaskRow({task:e,selected:t}){const n=truncateString({text:getTaskLabel(e),maxChars:56}),r=t?Co:void 0,o=t?He.pointer:" ";return ce.createElement(ye,null,ce.createElement(we,{color:t?Xr.WHITE:Xr.DIM,backgroundColor:r},o," "),ce.createElement(we,{color:t?Xr.WHITE:void 0,backgroundColor:r},n),ce.createElement(we,{color:Xr.DIM,backgroundColor:r}," ",e.id),ce.createElement(we,{color:Xr.DIM,backgroundColor:r}," ","pid ",e.pid),ce.createElement(we,{color:getStatusColor(e),backgroundColor:r}," ",getStatusText(e)))}function TaskGroup({title:e,tasks:t,selectedTaskId:n}){return 0===t.length?null:ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM,bold:!0},e," (",t.length,")"),t.map(e=>ce.createElement(TaskRow,{key:e.id,task:e,selected:e.id===n})))}function TaskDetails({task:e,output:t}){const n=latestOutputLines(t);return ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(we,{color:Xr.DIM},"Task ",e.id," · ",e.kind," · ",e.cwd),ce.createElement(we,{color:Xr.DIM},"Output ",e.outputPath),n.length>0?ce.createElement(ye,{flexDirection:"column",marginTop:1},n.map((t,n)=>ce.createElement(we,{key:`${e.id}-${n}`,color:Xr.DIM},truncateString({text:t,maxChars:100})))):ce.createElement(we,{color:Xr.DIM},"No output yet."))}function BackgroundTasksPanel({onExpandedChange:e}={}){const t=useShellTaskSnapshot(),n=t.filter(e=>"running"===e.status),[r,o]=de(!1),[s,a]=de(0),[i,l]=de(""),u=ge(()=>getVisibleTasks(t),[t]),d=u[s]??u[0];if(pe(()=>{e?.(r)},[r,e]),pe(()=>{if(0===u.length)return o(!1),void a(0);a(e=>Math.min(e,Math.max(0,u.length-1)))},[u.length]),pe(()=>{let e=!1;if(r&&d)return readShellTaskOutputTail({outputPath:d.outputPath,maxBytes:4096}).then(t=>{e||l(t)}).catch(()=>{e||l("")}),()=>{e=!0};l("")},[r,d?.id,d?.outputPath,t]),Ee((e,t)=>{isToggleShortcut(e,t)&&(n.length>0||r)?o(e=>!e):r&&0!==u.length&&(t.escape?o(!1):t.upArrow?a(e=>Math.max(0,e-1)):t.downArrow?a(e=>Math.min(u.length-1,e+1)):"x"===e&&"running"===d?.status&&stopShellTaskById(d.id))},{isActive:n.length>0||r}),0===n.length&&!r)return null;const m=compactTaskSummary(t);if(!r)return ce.createElement(ye,{marginLeft:1},ce.createElement(we,{backgroundColor:so.BG,color:so.FG,bold:!0}," ",m," "),ce.createElement(we,{color:Xr.DIM}," ctrl+b to view"));const g=u.filter(e=>"monitor"===e.kind),h=u.filter(e=>"shell"===e.kind);return ce.createElement(ye,{flexDirection:"column",marginTop:1,marginBottom:1,borderStyle:"single",borderColor:Xr.DIMMER,paddingX:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.WHITE,bold:!0},"Background tasks"),ce.createElement(we,{color:Xr.DIM}," · ",m||"none running")),ce.createElement(TaskGroup,{title:"Monitors",tasks:g,selectedTaskId:d?.id}),ce.createElement(TaskGroup,{title:"Shells",tasks:h,selectedTaskId:d?.id}),d&&ce.createElement(TaskDetails,{task:d,output:i}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ select · x stop · esc close · ctrl+b hide")))}pn(),__name(isToggleShortcut,"isToggleShortcut"),__name(useShellTaskSnapshot,"useShellTaskSnapshot"),__name(getTaskLabel,"getTaskLabel"),__name(getStatusColor,"getStatusColor"),__name(getStatusText,"getStatusText"),__name(countLabel,"countLabel"),__name(compactTaskSummary,"compactTaskSummary"),__name(getVisibleTasks,"getVisibleTasks"),__name(latestOutputLines,"latestOutputLines"),__name(TaskRow,"TaskRow"),__name(TaskGroup,"TaskGroup"),__name(TaskDetails,"TaskDetails"),__name(BackgroundTasksPanel,"BackgroundTasksPanel"),pn();var BE=[{label:"Compact Normal (default)",value:"default",description:"Summarize session when context limit reached."},{label:"Compact Fast",value:"fast",description:"Fast tiered compaction. Higher quality, uses more tokens."}],jE=__name(({onSelect:e,onCancel:t})=>{const[n,r]=de(null);pe(()=>{loadUserConfig().then(e=>{r(e.compactMode??"default")})},[]);const o=__name(t=>{e(t.value)},"handleSelect");if(Ee((e,n)=>{n.escape&&t()}),null===n)return null;const s=BE.findIndex(e=>e.value===n);return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Select a compact mode to compact sessions")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Choose how Command Code handles automatic context compaction.")),ce.createElement(bt,{items:BE,onSelect:o,initialIndex:s>=0?s:0,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>{const r=BE.find(e=>e.label===t),o=r?.value===n,s=BE.findIndex(e=>e.label===t),a=e?Co:void 0;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:e||!o?Xr.WHITE:Xr.GREEN,backgroundColor:a,bold:e||o},` ${s+1}. ${r?.label??t} `),o&&ce.createElement(we,{color:Xr.GREEN}," ",He.tick)),ce.createElement(we,{color:e?Xr.WHITE:Xr.DIM,backgroundColor:a},` ${r?.description??""} `))}}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to cancel")))},"CompactModeSelector");pn(),wn(),pn(),wn();var HE=__name(({model:e,providerId:t,isHighlighted:n,isCurrent:r,showProviderLabel:o,showDefaultBadge:s=!0})=>{const a=sn[t],i=o??a?.showProviderLabelInSelector??!1,l=e.vendorLabel??rn[e.provider],u=s&&e.id===nn,d="free"===e.badge,m=u?`${e.label} (default)`:e.label,g=d?" (FREE)":"",h=" ".repeat(Math.max(0,32-m.length-g.length)),f=n?Co:void 0,y=e.description?`${i?`${l} · `:""}${e.description}`:"",w=useTerminalWidth()>=70&&y;return ce.createElement(ye,null,ce.createElement(we,{backgroundColor:f,color:r?Xr.GREEN:Xr.WHITE,bold:r},m),d&&ce.createElement(we,{backgroundColor:f,color:Xr.GREEN,bold:!0},g),w&&ce.createElement(ce.Fragment,null,ce.createElement(we,{backgroundColor:f},h),ce.createElement(we,{backgroundColor:f,color:Xr.DIM},y)),ce.createElement(we,{backgroundColor:f,color:Xr.GREEN},r?` ${He.tick} `:" "))},"ModelRow"),WE=__name(e=>[{text:e.name,weight:100},{text:e.label,weight:50},{text:e.provider,weight:25},{text:e.description||"",weight:10}],"MODEL_SEARCH_FIELDS");function searchGroups(e,t){if(!t.trim())return e;const n=[];for(const r of e){const e=fuzzyFilter(r.models,t,WE);e.length>0&&n.push({...r,models:e})}return n}function groupByModelProvider(e,t){return groupModelsByDisplayOrder(e).map(e=>({providerId:t,label:e.label,models:e.models}))}__name(searchGroups,"searchGroups"),__name(groupByModelProvider,"groupByModelProvider");var GE=__name(({featureLabel:e,defaultLabel:t,currentModelId:n,onPick:r,onBack:o})=>{const[s,a]=de(""),i=ge(()=>isInternalTeamFlagEnforced(),[]),[l,u]=de(()=>getCachedBillingContext());pe(()=>{if(l)return;let e=!0;return getBillingContext().then(t=>{e&&u(t)}),()=>{e=!1}},[l]);const d=null!==l,m=ge(()=>i?an:groupByModelProvider(ln.flatMap(e=>e.models),sn["command-code"].id),[i]),g=ge(()=>l?m.map(e=>({...e,models:e.models.filter(e=>checkModelAccess({model:{id:e.id,provider:e.provider,name:e.name},planId:l.planId,purchasedCredits:l.purchasedCredits,freeCredits:l.freeCredits}).allowed)})).filter(e=>e.models.length>0):[],[m,l]),h=ge(()=>searchGroups(g,s),[g,s]),f=ge(()=>{const e=[];for(const t of h)for(const n of t.models)e.push({kind:"model",providerId:t.providerId,model:n});return[{kind:"reset"},...e]},[h]),y=ge(()=>{if(!n)return 0;const e=f.findIndex(e=>"model"===e.kind&&e.model.id===n);return e>=0?e:0},[f,n]),{cursor:w}=useListNavigation({items:f,initialIndex:y,searchCursorIndex:1,searchQuery:s,onSearchChange:a,onSelect:__name(e=>{d&&r("reset"===e.kind?void 0:e.model.id)},"onSelect"),onCancel:o}),[S,E]=de(0),k=useTerminalHeight()-1,C=Math.max(4,k-11-2*h.length);pe(()=>{E(e=>clampScrollOffset({cursor:w,total:f.length,maxVisible:C,currentOffset:e}))},[w,f.length,C]);const v=S,T=S+C,x=0===v;let P=1;const A=h.map(e=>{const t=sliceSectionForWindow({section:e.models,sectionBase:P,windowStart:v,windowEnd:T});return P+=e.models.length,{group:e,groupWindow:t}}).filter(e=>e.groupWindow.rows.length>0),I=f.length>C;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},e," › select model")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{dimColor:!0},"Pick a model for this task, or reset it to the default.")),isCmdZdrEnabled()&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.YELLOW},"Your pick is saved but stays paused until CMD_ZDR is unset.")),ce.createElement(ye,{marginBottom:2,flexDirection:"column",width:"100%"},ce.createElement(rE,{query:s,resultCount:s?f.length-1:void 0,placeholder:"Type to search models..."})),d?ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column"},x&&ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{bold:!0,dimColor:!0},"Default"),ce.createElement(ye,null,ce.createElement(we,{backgroundColor:0===w?Co:void 0,color:n?Xr.WHITE:Xr.GREEN},t," "),!n&&ce.createElement(we,{color:Xr.GREEN},He.tick))),A.map(({group:e,groupWindow:t},r)=>ce.createElement(ye,{key:`${e.providerId}-${e.label}`,flexDirection:"column",marginTop:0!==r||x?1:0},ce.createElement(we,{bold:!0,dimColor:!0},e.label),t.rows.map((r,o)=>ce.createElement(HE,{key:`${e.providerId}-${e.label}-${r.id}`,model:r,providerId:e.providerId,isHighlighted:t.baseIndex+o===w,isCurrent:r.id===n,showProviderLabel:!!i&&void 0,showDefaultBadge:!1}))))),I&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",v+1,"–",Math.min(T,f.length)," of"," ",f.length,v>0?" · ↑ more":"",T<f.length?" · ↓ more":""))):ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"Loading available models…")),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"type to search · ↑/↓ navigate · enter select"),s?ce.createElement(we,{color:Xr.DIM}," · esc to clear"):ce.createElement(we,{color:Xr.DIM}," · esc back")))},"FeatureModelPicker");function sanitizeFeatureOverrides(e){const t={};for(const{key:n}of Vh){const r=e?.[n];"string"==typeof r&&r&&(t[n]=r)}return t}__name(sanitizeFeatureOverrides,"sanitizeFeatureOverrides");var zE=__name(({onClose:e})=>{const[t,n]=de(null),[r,o]=de(null),[s,a]=de(null);pe(()=>{loadUserConfig().then(e=>{n(sanitizeFeatureOverrides(e.featureModels))})},[]);const i=r?"picker":"list",{cursor:l}=useListNavigation({items:Vh,initialIndex:0,searchQuery:"",onSearchChange:__name(()=>{},"onSearchChange"),disableSearch:!0,isActive:"list"===i&&null!==t,onSelect:__name(e=>{a(null),o(e.key)},"onSelect"),onCancel:e,onReset:__name(async e=>{try{await setFeatureModel({feature:e.key,model:void 0}),n(t=>{const n={...t??{}};return delete n[e.key],n}),a({text:`${e.label} reset to default`})}catch{a({text:`Couldn't reset ${e.label} — try again`,error:!0})}},"onReset")});if(null===t)return null;const u=Vh.find(e=>e.key===r)??null;if("picker"===i&&u)return ce.createElement(GE,{featureLabel:u.label,defaultLabel:getFeatureDefaultLabel(u),currentModelId:t[u.key],onBack:()=>o(null),onPick:async e=>{try{await setFeatureModel({feature:u.key,model:e}),n(t=>{const n={...t??{}};return void 0===e?delete n[u.key]:n[u.key]=e,n}),a({text:void 0===e?`${u.label} reset to default`:`${u.label} → ${getModelDisplayName(e)}`})}catch{a({text:`Couldn't save ${u.label} — try again`,error:!0})}o(null)}});const d=isCmdZdrEnabled();return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Configure models")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Pick a model for each task. Applies to all sessions."," ",createOSC8Link("https://commandcode.ai/docs/troubleshooting/faqs#why-do-i-see-small-background-requests","Why background requests?",!1))),d&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.YELLOW},"Model overrides were reverted to ZDR safe defaults. Your overrides will be restored when CMD_ZDR is unset.")),Vh.map((e,n)=>{const r=t[e.key],o=e.defaultLabel?`Default (${getFeatureDefaultLabel(e)})`:`Uses current model (${getFeatureDefaultLabel(e)})`,s=r?getModelDisplayName(r):null,a=!!r&&!d,i=a&&s?s:o,u=n===l;return ce.createElement(ye,{key:e.key},ce.createElement(we,{backgroundColor:u?Co:void 0,color:Xr.WHITE},e.label.padEnd(20)),ce.createElement(we,{backgroundColor:u?Co:void 0},ce.createElement(we,{color:a?Xr.GREEN:Xr.DIM},i),s&&d&&ce.createElement(we,{color:Xr.DIM},` · ${s} paused`)))}),s&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:s.error?Xr.RED:Xr.GREEN},s.text)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑/↓ navigate · enter to change · r to reset · esc to close")))},"ConfigureModelsSelector");function settingsFilePaths(e){return[getProjectLocalPath(e),getProjectSharedPath(e),getUserSettingsPath()]}function readInputSettings(e){try{const t=S.readFileSync(e,"utf-8");return parseJSON(t)?.input}catch{return}}function shouldCollapsePastedText(e=process.cwd()){for(const t of settingsFilePaths(e)){const e=readInputSettings(t)?.collapsePastedText;if("boolean"==typeof e)return e}return!0}pn(),pn(),An(),pn(),__name(settingsFilePaths,"settingsFilePaths"),__name(readInputSettings,"readInputSettings"),__name(shouldCollapsePastedText,"shouldCollapsePastedText"),pn();var qE=n($(),"commandcode-images"),VE={"image/png":".png","image/jpeg":".jpg","image/gif":".gif","image/webp":".webp"};function saveTempImage(e,t){try{k(qE)||x(qE,{recursive:!0});const r=VE[e.mediaType]||".png",o=`image-${t}-${Date.now()}${r}`,s=n(qE,o),a=Buffer.from(e.data,"base64");return P(s,a),s}catch{return null}}function stripInputAfterSuffix(e,t){return t&&e.endsWith(t)?e.slice(0,e.length-t.length):e}function extractAppendedChunk(e,t,n){const r=t+n;return e.length>=r.length&&e.startsWith(r)?e.slice(r.length):null}function accumulateDelta(e,t,n){const r=n+t;return e===t||e===r?t:r&&e.startsWith(r)?t+e.slice(r.length):t&&e.startsWith(t)?t+e.slice(t.length):t+e}function useBracketedPaste(e){const{input:t,detectedContent:n,setInput:r,setDetectedImages:o,setDetectedContent:s,incrementInputKey:a,setInitialCursor:i,collapsePastedText:l=!0}=e,u=he((e,t,n="")=>{o(t=>[...t,e]),r(t+n),i(t.length),a()},[o,r,i,a]),d=me(!1),m=me(""),g=me(null),h=me(""),f=me(""),y=he(async(e,t,n)=>{let o=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");const d=await detectDroppedImageFile(o);if(d)return void u(d,t,n);let m=o;if(0===m.length){const e=await detectClipboardImage();if(e)return void u(e,t,n);const r=await detectClipboardText();m=r?r.replace(/\r\n/g,"\n").replace(/\r/g,"\n"):""}if(!m&&!n)return;if(!m)return r(t+n),i(t.length),void a();if(l&&m.length>300){const e=t+pastedTextToken(m);return s(e=>[...e,m]),r(e+n),i(e.length),void a()}const g=t+m;r(g+n),i(g.length),a()},[u,n.length,s,r,i,a,l]),w=he(()=>{g.current&&clearTimeout(g.current),g.current=setTimeout(async()=>{if(d.current){const e=m.current,t=h.current,n=f.current;m.current="",h.current="",f.current="",d.current=!1,g.current=null,e?await y(e,t,n):n&&await y("",t,n)}},500)},[y]);return{handlePaste:he(async e=>{const n=processBracketedPaste(e);if(n.isPasteStart&&n.isPasteEnd)return d.current&&(d.current=!1,m.current="",h.current="",f.current="",g.current&&(clearTimeout(g.current),g.current=null)),await y(n.pastedContent??n.cleanedContent,n.textBeforePaste??"",n.textAfterPaste??""),!0;if(n.isPasteStart&&!d.current){d.current=!0;const e=n.textBeforePaste??t,r=t.slice(e.length);h.current=e,f.current=r;const o=n.pastedContent??n.cleanedContent;return m.current=stripInputAfterSuffix(o,r),w(),!0}if(d.current&&!n.isPasteEnd){const e=h.current,t=f.current;if(void 0!==n.pastedContent)m.current=stripInputAfterSuffix(n.pastedContent,t);else if(n.cleanedContent){const r=extractAppendedChunk(n.cleanedContent,e,t);m.current=null!==r?m.current+r:accumulateDelta(n.cleanedContent,m.current,e)}return w(),!0}if(d.current&&n.isPasteEnd){g.current&&(clearTimeout(g.current),g.current=null);const e=h.current,t=f.current,r=n.textAfterPaste??"";let o=n.cleanedContent??"";if(r&&o.endsWith(r)&&(o=o.slice(0,o.length-r.length)),void 0!==n.pastedContent)m.current=stripInputAfterSuffix(n.pastedContent,t);else if(o){const n=extractAppendedChunk(o,e,t);m.current=null!==n?m.current+n:accumulateDelta(o,m.current,e)}const s=m.current,a=e,i=r||t;return m.current="",h.current="",f.current="",d.current=!1,await y(s,a,i),!0}if(n.isPasteEnd&&!n.isPasteStart&&!d.current)return!0;const r=e.slice(t.length);if(r.length>0){const e=await detectDroppedImageFile(r);if(e)return u(e,t),!0}return!1},[t,y,w,u]),resetPasteState:he(()=>{d.current=!1,m.current="",h.current="",f.current="",g.current&&(clearTimeout(g.current),g.current=null)},[]),isPasting:he(()=>d.current,[])}}function useExternalEditor({input:e,setInput:t,setInputKey:n,detectedContent:r,setDetectedContent:o,onEditorClose:s}){const[a,i]=de(!1),[l,u]=de(null),d=he(async()=>{if(!a){i(!0),u(null);try{let a=e.replace(/\n+$/,"");r.forEach(e=>{const t=pastedTextToken(e);a.includes(t)&&(a=a.replace(t,e))});const i=await openInEditor2(a);t(i),o([]),n(e=>e+1),s?.()}catch(e){u(e instanceof Yy?"No text editor found. Set your EDITOR environment variable.\n\nSee: https://commandcode.ai/docs/core-concepts/interactive-mode#setting-up-your-editor":`Editor error: ${e instanceof Error?e.message:String(e)}`)}finally{i(!1)}}},[e,t,n,r,o,s,a]),m=he(()=>{u(null)},[]);return{isEditorOpen:a,editorError:l,handleOpenInEditor:d,clearEditorError:m}}__name(saveTempImage,"saveTempImage"),pn(),An(),__name(stripInputAfterSuffix,"stripInputAfterSuffix"),__name(extractAppendedChunk,"extractAppendedChunk"),__name(accumulateDelta,"accumulateDelta"),__name(useBracketedPaste,"useBracketedPaste"),pn(),__name(useExternalEditor,"useExternalEditor"),pn();var KE=__name((e={})=>{const{enabled:t=!0}=e,[n,r]=de(null),o=me(!1);return pe(()=>{if(!t||o.current)return;let e=!0;return o.current=!0,qy().then(t=>{e&&r(t)}),()=>{e=!1}},[t]),{pr:n}},"usePRDetection");function pushEntry(e,t){e.push(t),e.length>50&&e.shift()}function commitBurst({stack:e,burstStart:t,inBurst:n,timer:r}){r.current&&(clearTimeout(r.current),r.current=null),n.current=!1,pushEntry(e,t)}function useUndoStack({input:e,setInput:t,initialCursorRef:n,incrementInputKey:r}){const o=me([]),s=me(""),a=me(!1),i=me(null),l=me(!1),u=me("");return pe(()=>{if(l.current)return l.current=!1,void(u.current=e);if(e===u.current)return;const t=u.current;return u.current=e,a.current||(s.current=t,a.current=!0),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{a.current=!1,i.current=null,pushEntry(o.current,s.current)},400),()=>{i.current&&(clearTimeout(i.current),i.current=null)}},[e]),{commitUndo:__name(()=>{a.current&&commitBurst({stack:o.current,burstStart:s.current,inBurst:a,timer:i});const e=o.current.pop();void 0!==e&&(l.current=!0,t(e),n.current=e.length,r())},"commitUndo")}}pn(),__name(pushEntry,"pushEntry"),__name(commitBurst,"commitBurst"),__name(useUndoStack,"useUndoStack"),pn();var YE=__name(({onSelectFile:e,onClose:t,searchQuery:n=""})=>{const[o,s]=de(process.cwd()),[a,i]=de([]),[l,d]=de(0),[m,g]=de(0),h=n.trim()?15:10;pe(()=>{invalidateFileIndex()},[]);const f=he(e=>{try{const t=[];"/"!==e&&t.push({name:"..",path:r(e),isDirectory:!0}),t.push(...listDirectory(e,process.cwd())),i(t),d(0),g(0)}catch{}},[]);pe(()=>{if(n.trim()){const e=searchFiles(n);i(e),d(0),g(0)}else f(o)},[o,f,n]),Ee((r,o)=>{if(o.escape)t();else if(o.upArrow)d(e=>{const t=Math.max(0,e-1);return t<m&&g(t),t});else if(o.downArrow)d(e=>{const t=Math.min(a.length-1,e+1);return t>=m+h&&g(t-h+1),t});else{if(o.rightArrow){const e=a[l];if(!e)return;return void(e.isDirectory&&!n.trim()&&s(u(e.path)))}if(o.return){const t=a[l];if(!t)return;return void e(t.path)}}});const y=a.slice(m,m+h);return ce.createElement(ye,{flexDirection:"column",paddingLeft:1},ce.createElement(ye,{marginBottom:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},n.trim()?`Searching for: "${n}"`:`Files: ${o}`),ce.createElement(we,{color:Xr.DIM},n.trim()?"↑↓ navigate • Enter to select • Esc to close":"↑↓ navigate • → to open folder • Enter to select • Esc to close")),0===y.length?ce.createElement(we,{color:Xr.DIM},n.trim()?`No files found matching "${n}"`:"No files found in this directory"):y.map((e,t)=>{const n=m+t,r=e.name,o=n===l;return ce.createElement(we,{key:e.path,color:o?Xr.GREEN:Xr.DIM,bold:o&&isLightTheme()},e.isDirectory?`${r}/`:r)}))},"FileList");pn();var QE=__name((e={})=>{const{enabled:t=!0,paused:n=!1}=e,[r,o]=de(null),[s,a]=de(!1),i=me(!1),l=me(null),u=me(n),[d,m]=de(!1),[g,h]=de("connected"),f=me(null),y=me(null),w=he((e,t)=>{y.current&&(clearTimeout(y.current),y.current=null),h(e),m(!0),void 0!==t&&(y.current=setTimeout(()=>{m(!1)},t))},[]),S=he(()=>{y.current&&(clearTimeout(y.current),y.current=null)},[]),E=he(async(e=!1)=>{if(!i.current){i.current=!0;try{let t=l.current,n=t?.isConnected??!1;if(!n){t?.disconnect(),t=new rg,l.current=t;const r=e?200:500;n=await t.connect(r)}const r=f.current;if(null===r?n&&w("connected",3e3):r!==n&&(n?w("connected",2e3):w("disconnected",5e3)),f.current=n,a(n),n&&t){const n=e?500:1e3,r=await t.getContext(n);null!==r||t.isConnected||(t.disconnect(),l.current=null),o(r)}else o(null)}catch{!0===f.current&&w("disconnected",5e3),f.current=!1,a(!1),o(null),l.current?.disconnect(),l.current=null}finally{i.current=!1}}},[w]);pe(()=>{const e=u.current;u.current=n,e&&!n&&t&&null!==Vp()&&E(!1)},[n,t,E]),pe(()=>{if(!t)return;if(null===Vp())return;let e=null,n=!1,r=0;function schedule(t){n||(e=setTimeout(()=>{tick(!1)},t))}async function tick(e){if(u.current)return void schedule(500);if(await E(e),n)return;if(l.current?.isConnected)return r=0,void schedule(500);r+=1;const t=Math.min(r,6);schedule(Math.min(3e4,500*2**t)+250*Math.random())}return __name(schedule,"schedule"),__name(tick,"tick"),tick(!0),()=>{n=!0,e&&clearTimeout(e),S(),l.current?.disconnect(),l.current=null}},[t,E,S]);const k=Vp(),C={visible:d,message:"connected"===g?`${k?nw[k]??"IDE":"IDE"} ${He.tick}`:"run /ide",type:g};return{context:r,connected:s,refresh:E,connectionIndicator:C}},"useVSCodeContext");function getImageHintText({selectedIndex:e,imageCount:t,inHistory:n}){return-1!==e?t>1?"← → · Delete to remove · Esc to deselect":"Delete to remove · Esc to deselect":n?"↓ · ↑ imgs":"↑ to select"}function buildImageRows({imageCount:e,rowWidth:t}){const n=[];let r=[],o=0;for(let s=0;s<e;s++){const e=`[Image #${s+1}]`.length,a=e+(r.length>0?1:0);r.length>0&&o+a>t?(n.push(r),r=[s],o=e):(r.push(s),o+=a)}return r.length>0&&n.push(r),n}function shouldSelectImageOnUpArrow({isOnFirstLine:e,imageCount:t,selectedImageIndex:n,historyIndex:r}){return e&&t>0&&-1===n&&-1===r}function nextImageIndex({currentIndex:e,imageCount:t}){return e===t-1?0:e+1}function prevImageIndex({currentIndex:e,imageCount:t}){return 0===e?t-1:e-1}function removeImageAt({images:e,index:t}){const n=e.filter((e,n)=>n!==t);return{remainingImages:n,nextSelectedIndex:n.length>0?n.length-1:-1}}function ImageLabel({index:e,isSelected:t,filePath:n,showSpaceBefore:r}){const o=`[Image #${e+1}]`,s=n?createOSC8Link(`file://${n}`,o,!1):o;return ce.createElement(we,null,r?" ":"",t?ce.createElement(we,{inverse:!0},o):s)}function ImageRowsDisplay({detectedImages:e,selectedImageIndex:t,imageTempPaths:n,termWidth:r,inHistory:o}){if(0===e.length)return null;const s=getImageHintText({selectedIndex:t,imageCount:e.length,inHistory:o}),a=Math.max(1,r-(s.length+2)),i=buildImageRows({imageCount:e.length,rowWidth:a});return ce.createElement(ye,{flexDirection:"column",width:"100%",alignItems:"flex-end"},i.map((e,r)=>ce.createElement(ye,{key:r,flexDirection:"row"},ce.createElement(ye,{flexShrink:0,marginRight:1},0===r&&ce.createElement(we,{color:Xr.DIM},s)),ce.createElement(ye,{flexDirection:"row"},e.map((e,r)=>ce.createElement(ImageLabel,{key:e,index:e,isSelected:e===t,filePath:n[e],showSpaceBefore:r>0}))))))}pn(),pn(),__name(getImageHintText,"getImageHintText"),__name(buildImageRows,"buildImageRows"),__name(shouldSelectImageOnUpArrow,"shouldSelectImageOnUpArrow"),__name(nextImageIndex,"nextImageIndex"),__name(prevImageIndex,"prevImageIndex"),__name(removeImageAt,"removeImageAt"),__name(ImageLabel,"ImageLabel"),__name(ImageRowsDisplay,"ImageRowsDisplay"),pn(),wn(),pn();var JE=__name(e=>{if(e>=1e6){const t=e/1e6;return`${t%1==0?t.toFixed(0):t.toFixed(1)}M`}return`${Math.round(e/1e3)}k`},"formatTokens"),XE=__name(({usage:e})=>{if(!e)return null;const t=Math.min(e.current/e.limit*100,100),n=Math.max(0,Math.round(90-t));if(n>20&&e.current>=18e4)return ce.createElement(ye,{paddingRight:3},ce.createElement(we,{color:Xr.DIM},"~",JE(e.current)," tokens in context · try"," "),ce.createElement(we,{color:Xr.DIM,bold:!0},"/compact"));if(n>20)return null;const r=__name(e=>e>=90?Xr.RED:e>=70?Xr.YELLOW:Xr.DIM,"getColor"),o=t>=90?6:Math.round(t/100*6),s=6-o,a=He.square.repeat(o),i=He.squareLightShade.repeat(s),l=r(t);return ce.createElement(ye,{paddingRight:3},ce.createElement(we,{color:l},`Context left before auto-compact ${n}% `),ce.createElement(we,{color:l},a),s>0&&ce.createElement(we,{color:Xr.DIM},i))},"ContextUsage");pn();var ZE=__name(()=>{const[e,t]=de("continuous learning"),[n,r]=de(!1),[o,s]=de(!1),a=me([]),i=me(0),l=me(null),u=me(!1);pe(()=>{const e=__name(e=>"analyzing"===e.type?(u.current=!0,r(!0),s(!1),a.current=[],i.current=0,l.current&&(clearTimeout(l.current),l.current=null),void t(e.message)):u.current&&"analyzed"!==e.type?void a.current.push(e):"analyzed"===e.type?(u.current=!1,void(a.current.length>0?(i.current=0,n()):(r(!1),s(!1),t("continuous learning")))):void 0,"handleNewEvent"),n=__name(()=>{if(i.current>=a.current.length)return r(!1),s(!1),t("continuous learning"),void(a.current=[]);const e=a.current[i.current];t(e.message);const o="learned"===e.type||"refactored"===e.type;s(o);const u="learned"===e.type||"refactored"===e.type||"no_learnings"===e.type||"error"===e.type?15e3:2e3;l.current=setTimeout(()=>{i.current++,n()},u)},"cycleThroughNextEvent");return id.on("new-event",e),()=>{id.off("new-event",e),l.current&&clearTimeout(l.current)}},[]);const d=` ${n?He.squareSmallFilled:He.squareSmall} TASTE`,m=9+e.length+d.length>100;let g=e;g=truncateString(m?{text:e,maxChars:100}:{text:e,maxChars:100-d.length-9-10});const h=o?void 0:Xr.DIM;return ce.createElement(ye,{paddingRight:2},!m&&ce.createElement(ce.Fragment,null,ce.createElement(BracketWrap,{color:Xr.DIM},"ctrl+t"),ce.createElement(we,{color:Xr.DIM}," ")),ce.createElement(we,{color:h},g),!m&&ce.createElement(we,{color:eo.TEXT},d))},"LearningFeedMini");pn();var eb=__name(({mode:e,pendingExitKey:t})=>{const n=getModeToggleShortcutHint();return t?ce.createElement(we,{color:Xr.DIM},"Press Ctrl+C again to exit"):"bypass"===e?ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:Xr.RED},"» permission bypass on "),ce.createElement(BracketWrap,{color:Xr.DIM},n)):"auto-accept"===e?ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:ho},"» accept edits on "),ce.createElement(BracketWrap,{color:Xr.DIM},n)):"plan"===e?ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:po},"plan mode "),ce.createElement(BracketWrap,{color:Xr.DIM},n)):ce.createElement(we,{color:Xr.DIM},"? for shortcuts")},"ModeIndicator");pn();var tb=__name(({prInfo:e,showSeparator:t=!0})=>{if(!e)return null;if("OPEN"!==e.state&&"MERGED"!==e.state)return null;const n="OPEN"===e.state?Xr.DIM:fo.MERGED;return ce.createElement(ce.Fragment,null,t&&ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:n},"PR "),ce.createElement(Fo,{url:e.url,text:`#${e.number}`,color:n}))},"PRLinkBadge"),nb=__name(()=>ce.createElement(ye,{paddingRight:3},ce.createElement(we,{color:Xr.DIM,wrap:"truncate"},He.pointerSmall," ","stashed")),"StashBadge"),rb=__name(({indicator:e,showSeparator:t=!0})=>e?.visible?ce.createElement(ce.Fragment,null,t&&ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{color:"connected"===e.type?Xr.GREEN:Xr.YELLOW},e.message)):null,"ConnectionIndicatorBadge"),ob=__name(({termWidth:e,indicatorText:t,isIDEIndicator:n,permissionMode:r="standard",prInfo:o,tasteLearning:s,contextUsage:a,connectionIndicator:i,pendingExitKey:l,updateStatus:u,updateFailedInfo:d,currentProvider:m,showProviderInfo:g,isBashMode:h,shareInfo:f,showShareNotification:y,unshareNotificationMessage:w,tasteNotificationMessage:S,creditWarning:E,hasStashedPrompt:k})=>{const C=e>=60,v=C&&s&&!k;return ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"column",paddingLeft:2},"auto-accept"!==r&&"plan"!==r&&"bypass"!==r||l?ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between",width:e-1},ce.createElement(ye,{flexDirection:"row",columnGap:0},n&&!l?ce.createElement(we,{color:lo},t):ce.createElement(eb,{mode:r,pendingExitKey:l}),!l&&ce.createElement(tb,{prInfo:o}),!l&&ce.createElement(rb,{indicator:i})),(C||k)&&ce.createElement(ye,{flexDirection:"column",alignItems:"flex-end"},k?ce.createElement(nb,null):v&&ce.createElement(ZE,null),!k&&C&&a&&ce.createElement(XE,{usage:a}))):ce.createElement(ce.Fragment,null,ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between",width:e-1},ce.createElement(eb,{mode:r}),k?ce.createElement(nb,null):v&&ce.createElement(ZE,null)),ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between",width:e-1},ce.createElement(ye,{flexDirection:"row",columnGap:0},ce.createElement(we,{color:n?lo:Xr.DIM},t),ce.createElement(tb,{prInfo:o}),ce.createElement(rb,{indicator:i})),ce.createElement(ye,{flexDirection:"row",columnGap:2},C&&a&&ce.createElement(XE,{usage:a})))),(u||d||g&&m)&&ce.createElement(ye,{flexDirection:"row",columnGap:1},u&&ce.createElement(we,null,He.tick," ","Command Code"," updated:"," ",ce.createElement(we,{color:Xr.DIM},"v",u.updatedFrom),ce.createElement(we,{color:Xr.DIM}," ",He.arrowRight," "),ce.createElement(we,null,"v",u.updatedTo)),!u&&d&&ce.createElement(we,{color:Xr.YELLOW,dimColor:!0},He.info," Update available:"," ",d.currentVersion," ",He.arrowRight," ",d.latestVersion),g&&m&&ce.createElement(we,{color:Xr.GREEN,dimColor:!0},He.bullet," Provider:"," ",getProviderDisplayName(m)))),h&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Xr.GREEN},"! for bash mode")),y&&f&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Zr},"SHARED: ",f.url," (copied to clipboard)")),w&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:w.includes("NOT SHARED")?Xr.RED:Zr},w)),S&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Zr},S)),E&&ce.createElement(ye,{paddingLeft:2},ce.createElement(we,{color:Xr.YELLOW},He.warning," ",E)))},"BottomIndicator");function basename8(e){return t.win32.basename(e)}pn(),__name(basename8,"basename");var sb=(()=>{const e=[...nS].map(e=>e.startsWith("/")?e.slice(1):e);return 0===e.length?null:new RegExp(`^(?:${e.join("|")})(?:\\s+\\S*)?$`,"i")})(),ab=__name(e=>sb?.test(e.trimEnd())??!1,"isSubmenuQuery"),ib=__name(e=>{if(!e.startsWith("/"))return{showCommandMenu:!1,commandSearchQuery:""};const t=e.slice(1);return ab(t)?{showCommandMenu:!0,commandSearchQuery:t}:/[\s/]/.test(t)?{showCommandMenu:!1,commandSearchQuery:""}:{showCommandMenu:!0,commandSearchQuery:t}},"getSlashCommandMenuState"),lb=__name(({canOpenMenu:e,deletedFromMiddle:t,menuState:n,showCommandMenu:r})=>!(t&&!r)&&(r||e)&&n.showCommandMenu,"getNextSlashCommandMenuVisibility");function resolvePastedTextTokens({input:e,detectedContent:t}){return t.reduce((e,t)=>{const n=pastedTextToken(t);return e.includes(n)?e.replace(n,()=>t):e},e)}__name(resolvePastedTextTokens,"resolvePastedTextTokens");var cb=__name((e,t)=>!(!e||!t?.selection&&!t?.activeFile?.relativePath),"hasIDEContext"),ub=__name((e,t,n)=>{const r=e?t?.selection:null;if(r)return`${r.lineCount} lines selected`;const o=e?t?.activeFile:null;if(o?.relativePath){const e=basename8(o.relativePath),t=n<80?15:n<120?25:40;return`In ${e.length>t?e.slice(0,t-1)+"…":e}`}return"? for shortcuts"},"getIndicatorText");function getModelShortName(e){const t=findModelById(e);if(t){const e=t.name.toLowerCase().replaceAll(" ","-");return"free"===t.badge?`${e} (free)`:e}return e}function getModelHintLayout(e){const{currentModel:t,terminalWidth:n}=e,r=getCommandMenuDescriptionWidth(n),o=modelSupportsReasoningEffort(t)?getReasoningEffort(t):null,s=o?` with ${o} effort`:"";return{descriptionWidth:r,text:truncateString({text:`${getModelShortName(t)}${s} (current)`,maxChars:r})}}pn(),__name(getModelShortName,"getModelShortName"),__name(getModelHintLayout,"getModelHintLayout"),pn();var db=__name((e,t)=>e.padEnd(t),"padCell"),mb=__name(e=>e instanceof Error&&e.message?e.message:"Unknown error","getDeleteErrorMessage"),pb=__name(e=>{const t=new Date(e),n=(new Date).getTime()-t.getTime(),r=Math.floor(n/6e4),o=Math.floor(n/36e5),s=Math.floor(n/864e5);return r<1?"just now":r<60?`${r} min ago`:o<24?`${o}h ago`:`${s}d ago`},"formatRelativeTime"),gb=__name(e=>e.replace(/\s+/g," ").trim(),"normalizeSummary"),hb=__name(e=>truncateString({text:gb(e),maxChars:50}),"truncateMessage"),fb=__name(e=>e.title?gb(e.title):hb(e.firstMessage),"getSessionSummary"),yb=__name(({onSelectSession:e,onClose:t})=>{const[n,r]=de([]),[o,s]=de(0),[a,i]=de(0),[l,u]=de(!0),[d,m]=de(!1),[g,h]=de(!1),[f,y]=de(null),[w]=de(()=>getCurrentGitBranch()),S=useTerminalHeight(),E=Math.max(6,S-14),k=he(async()=>{u(!0);const e=await Sh.listSessions();r(e),u(!1)},[]);pe(()=>{k()},[k]);const C=he(async e=>{try{await Sh.deleteSession(e),h(!1),y(null),s(0),i(0),await k()}catch(e){h(!1),y(`Failed to delete session: ${mb(e)}`)}},[k]),v=d&&w?n.filter(e=>e.gitBranch===w):n;if(Ee((n,r)=>{if(g)if(r.return){if(v.length>0&&o<v.length){const e=v[o];C(e.id)}}else h(!1);else if(r.delete||r.ctrl&&"d"===n)v.length>0&&(y(null),h(!0));else{if(!r.escape)return r.ctrl&&"b"===n?(m(e=>!e),s(0),void i(0)):void(r.upArrow?s(e=>{const t=Math.max(0,e-1);return t<a&&i(t),t}):r.downArrow?s(e=>{const t=Math.min(v.length-1,e+1);return t>=a+E&&i(t-E+1),t}):r.return&&v.length>0&&o<v.length&&e(v[o].id));t()}}),l)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2},ce.createElement(we,{color:Xr.GRAY},"Loading sessions..."));if(0===v.length)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2},ce.createElement(we,{color:Xr.GRAY},d&&w?`No sessions found for branch "${w}"`:"No previous sessions found"),ce.createElement(we,{color:Xr.DIM},d?"Press ctrl+b to show all branches, ESC to cancel":"Press ESC to go back"));const T=v.slice(a,a+E),x=o<v.length?v[o]:null,P=g&&x?`Delete "${fb(x)}"? Press Enter to confirm, any other key to cancel.`:null;return ce.createElement(ye,{flexDirection:"column",paddingLeft:1,width:"100%"},ce.createElement(we,{color:Xr.CYAN,bold:!0},"Resume Session"),ce.createElement(ye,{marginTop:1}),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:co,bold:!0},db("#",6),db("Modified",12),db("Git Branch",22),db("Messages",12),"Summary")),ce.createElement(ye,{flexDirection:"column"},T.map((e,t)=>{const n=a+t,r=o===n,s=truncateString({text:e.gitBranch||"-",maxChars:20});return ce.createElement(we,{key:e.id,color:r?Xr.WHITE:Xr.GRAY,backgroundColor:r?Co:void 0,bold:r,wrap:"truncate-end"},db(`${n+1}.`,6),db(pb(e.lastModified),12),db(s,22),db(String(e.messageCount),12),e.forkProvenance?ce.createElement(ForkSummary,{session:e,isSelected:r}):fb(e)," ")})),ce.createElement(ye,{marginTop:1}),P&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},P)),f&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.RED},f)),v.length>E&&ce.createElement(we,{color:Xr.DIM},"Showing ",a+1,"–",Math.min(a+E,v.length)," ","of ",v.length,a>0?" · ↑ more":"",a+E<v.length?" · ↓ more":""),ce.createElement(we,{color:Xr.DIM},"↑↓ navigate · Enter select · Del delete · ctrl+b ",d?`[branch: ${w??"unknown"}]`:"branch filter"," · ESC cancel"))},"SessionsResumeTable");pn();var wb=__name(e=>{if(!e.activeFile&&!e.selection)return"";const t=["<ide-context>"];if(e.activeFile){const{relativePath:n,language:r,cursor:o}=e.activeFile;t.push(`File: ${n} (${r}, line ${o.line})`)}if(e.selection){const{text:n,startLine:r,endLine:o}=e.selection,s=e.activeFile?.language??"";t.push(`Selected lines ${r}-${o}:`),t.push(`\`\`\`${s}`);const a=n.replace(/```/g,"` ` `").replace(/<\/ide-context>/gi,"&lt;/ide-context&gt;").replace(/[\u202A-\u202E\u2066-\u2069\u200B-\u200D\uFEFF]/g,"");t.push(a),t.push("```")}return t.push("</ide-context>"),t.join("\n")+"\n"},"formatContextForPrompt"),Sb=["","","[118;5u"];function removeAltPCharacter(e){return e.includes("π")?e.replace(/π/g,""):null}function isPrecededByWhitespace(e){return!e||" "===e||"\n"===e||"\t"===e}__name(removeAltPCharacter,"removeAltPCharacter"),__name(isPrecededByWhitespace,"isPrecededByWhitespace");var Eb=__name(()=>ce.createElement(ye,{flexDirection:"column",paddingLeft:1},ce.createElement(we,{color:Xr.DIM,bold:!0},"Available Shortcuts:"),ce.createElement(ye,{columnGap:4},ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"! for bash mode"),ce.createElement(we,{color:Xr.DIM},"/ for commands"),ce.createElement(we,{color:Xr.DIM},"@ for file paths"),ce.createElement(we,{color:Xr.DIM},getModeToggleShortcutHint()," to toggle auto-accept")),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"double tap esc to clear input"),ce.createElement(we,{color:Xr.DIM},"ctrl + j / shift + ⏎ for newline"),ce.createElement(we,{color:Xr.DIM},"ctrl + g to open in editor"),ce.createElement(we,{color:Xr.DIM},"ctrl + z to undo"),ce.createElement(we,{color:Xr.DIM},"ctrl + s to stash prompt")))),"ShortcutMenu"),bb=__name(({input:e,onSubmit:t,setInput:n,showCursor:r=!0,placeholder:o="Enter your input…",showFileList:a,setShowFileList:i,fileSearchQuery:l,setFileSearchQuery:u,onCommand:d,contextUsage:m,tasteLearning:g=!1,tasteUsage:h=!1,shareInfo:f,showShareNotification:y,unshareNotificationMessage:w,tasteNotificationMessage:S,creditWarning:E,updateStatus:k,updateFailedInfo:C,currentProvider:v,currentModel:T,showProviderInfo:x,permissionMode:P="standard",onToggleAutoAccept:A,hintMessage:I,historyManager:M,pendingExitKey:R=null,onOverlayVisibilityChange:_,onDoubleEscapeEmpty:D,onAltP:N,isProcessing:$=!1,ideContextEnabled:L=!0})=>{const[O,F]=de(0),[U,B]=de(!1),[j,H]=de(!1),[W,G]=de(!1),[z,q]=de(""),[V,K]=de(null),[Y,Q]=de(!1),J=me(0),X=me(0),[Z,ee]=de([]),[te,ne]=de([]),[re,oe]=de(-1),[se,ae]=de(""),[ie,le]=de(null),ue=me(!1),fe=me(!1),Se=me(!1),ke=me(void 0),[Ce,ve]=de(-1),[Te,xe]=de(""),Pe=me(0),{commitUndo:Ae}=useUndoStack({input:e,setInput:n,initialCursorRef:ke,incrementInputKey:__name(()=>F(e=>e+1),"incrementInputKey")}),{isEditorOpen:Ie,editorError:Me,handleOpenInEditor:Re,clearEditorError:_e}=useExternalEditor({input:e,setInput:n,setInputKey:F,detectedContent:Z,setDetectedContent:ee,onEditorClose:__name(()=>{ue.current=!1},"onEditorClose")}),De=ge(()=>shouldCollapsePastedText(),[]),{handlePaste:Ne,resetPasteState:$e,isPasting:Le}=useBracketedPaste({input:e,detectedContent:Z,setInput:n,setDetectedImages:ne,setDetectedContent:ee,incrementInputKey:__name(()=>F(e=>e+1),"incrementInputKey"),setInitialCursor:__name(e=>{ke.current=e},"setInitialCursor"),collapsePastedText:De}),{context:Oe,connected:Fe,refresh:Ue,connectionIndicator:Be}=QE({enabled:L,paused:$}),{stdout:je}=be(),We=je?.columns??80,{pr:Ge}=KE();pe(()=>{const e=a||W||Y;_?.(e)},[a,W,Y,_]),pe(()=>{if(!Se.current)return;Se.current=!1;const t=ib(e);!W&&t.showCommandMenu||(G(t.showCommandMenu),q(t.showCommandMenu?t.commandSearchQuery:""))},[e,W]);const ze=he(()=>{ne([]),oe(-1)},[]),qe=he(()=>{G(!1),K(null)},[]),Ve=he(()=>{qe(),q(""),i(!1),u(""),Q(!1),ve(-1),xe(""),ae(""),ke.current=void 0,F(e=>e+1)},[qe,u,i]),Ke=he(t=>!(null===ie||!t?.replaceCurrentInput&&e.trim().length>0||(ue.current=!0,n(ie),le(null),Ve(),setTimeout(()=>{ue.current=!1},0),0)),[e,Ve,n,ie]),Ye=he(()=>{n(""),H(!1),qe(),q(""),Q(!1),ee([]),ze(),ae(""),$e(),ve(-1),xe(""),F(e=>e+1)},[n,$e,ze,qe]),Qe=he(()=>{ue.current=!0;const{text:t,cursor:r}=insertTextAt(e,Pe.current,"\n");n(t),ke.current=r,F(e=>e+1),setTimeout(()=>{ue.current=!1},0)},[e,n]);Ee(async(t,r)=>{if(-1!==re&&r.leftArrow)return void oe(prevImageIndex({currentIndex:re,imageCount:te.length}));if(-1!==re&&r.rightArrow)return void oe(nextImageIndex({currentIndex:re,imageCount:te.length}));if(r.upArrow){if(a||W||Y)return;const t=e.indexOf("\n"),r=-1===t||Pe.current<=t;if(shouldSelectImageOnUpArrow({isOnFirstLine:r,imageCount:te.length,selectedImageIndex:re,historyIndex:Ce}))return void oe(te.length-1);if(-1!==re&&oe(-1),0!==e.length&&-1===Ce&&!r)return;const o=M?.count()??0;if(0===o)return;-1===Ce&&xe(e);const s=Math.min(Ce+1,o-1);return void(s!==Ce&&(ve(s),n(M?.getAt(s)||""),F(e=>e+1)))}if(r.downArrow){if(a||W||Y)return;if(-1===Ce)return;const t=e.lastIndexOf("\n");if(!(-1===t||Pe.current>t))return;const r=Ce-1;return ve(r),n(-1===r?Te:M?.getAt(r)||""),void F(e=>e+1)}if(""===t||r.ctrl&&"c"===t)return void ze();if(isCtrlKey({inputChar:t,key:r,letter:"g",ctrlCode:7}))return ue.current=!0,void Re();if(isCtrlKey({inputChar:t,key:r,letter:"s",ctrlCode:19})){const t=e.trim().length>0;if(!t&&null===ie)return;if(!t&&Ke())return;ue.current=!0;const r=ie??"";return le(t?e:null),n(r),Ve(),void setTimeout(()=>{ue.current=!1},0)}if(getIsExpandToolShortcut(r,t))return ue.current=!0,n(e),F(e=>e+1),void setTimeout(()=>{ue.current=!1},0);if(isNewlineShortcutKey({inputChar:t,key:r,isPasting:Le()}))return fe.current=!0,Qe(),void setTimeout(()=>{fe.current=!1},0);if(r.meta&&r.backspace)return void Ye();if(r.meta&&"w"===t)return ue.current=!0,void Ye();const o=r.ctrl&&"v"===t||Sb.includes(t),s=r.meta&&"v"===t;if(o||s){if(o&&"darwin"===process.platform){const t=e;ue.current=!0;const r=await detectClipboardImage();return r&&(ne(e=>[...e,r]),n(t),F(e=>e+1)),void(ue.current=!1)}}else if(!r.ctrl&&!r.meta||"u"!==t)if(r.ctrl&&"z"===t?.toLowerCase())Ae();else{if(-1!==re&&(r.delete||r.backspace)){const{remainingImages:e,nextSelectedIndex:t}=removeImageAt({images:te,index:re});return ne([...e]),void oe(t)}if(r.escape){if(-1!==re)return void oe(-1);if(W)return;if(Y)return Q(!1),n(se),void F(e=>e+1);const t=Date.now();return t-J.current<500?(e.length>0?Ye():D?.(),J.current=0,X.current=0):(J.current=t,U||j||(X.current=t)),B(!1),void H(!1)}U&&(r.backspace||r.delete)&&0===e.length&&B(!1)}});const Je=he(async t=>{if(Ie)return;const r=removeAltPCharacter(t);if(null!==r)return n(r),void N?.();const o=processBracketedPaste(t);if((o.isPasteStart||o.isPasteEnd||Le())&&await Ne(t))return void(Se.current=!0);if(ue.current)return void(ue.current=!1);-1!==Ce&&ve(-1);const s=1===t.length,l=t.slice(-1);if(s){if("?"===l&&!U)return B(!0),n(""),void F(e=>e+1);if("!"===l&&!j)return B(!1),H(!0),n(""),void F(e=>e+1)}const d=ib(t),m=t.length<e.length&&!e.startsWith(t),g=!m&&t.length<e.length,h=t.length===e.length+1||g,f=lb({canOpenMenu:h,deletedFromMiddle:m,menuState:d,showCommandMenu:W});W===f&&z===d.commandSearchQuery||(G(f),q(f?d.commandSearchQuery:"")),"@"!==l||a||isPrecededByWhitespace(t.length>1?t[t.length-2]:"")&&(i(!0),u(""));const y=t.lastIndexOf("@");if(t.length<e.length&&-1!==y&&" "===e.charAt(e.length-1)&&" "!==t.charAt(t.length-1)){const e=t.substring(y+1),n=!e.includes(" "),r=y>0?t[y-1]:"";n&&isPrecededByWhitespace(r)&&(i(!0),u(e))}if(a)if(t.length<e.length){const e=t.lastIndexOf("@");if(-1===e)i(!1),u("");else{const n=t.substring(e+1);u(n)}}else{const e=t.lastIndexOf("@");if(-1!==e){const n=t.substring(e+1),r=n.indexOf(" ");if(-1!==r){const e=n.substring(0,r);u(e),i(!1)}else u(n)}}U&&(t!==e||t.length<e.length)&&B(!1),Me&&_e(),0===t.length&&(H(!1),qe(),q(""),Q(!1),ee([]),u(""),ae(""),$e()),n(t)},[U,e,n,a,i,W,z,j,te,Ce,Ne,$e,N,Me,_e,Ie,qe]),Xe=he(async()=>{if(Ue(),X.current=0,U)return void B(!1);const r=e.trim(),o=!j&&r.startsWith("/");let s=r;!j&&Z.length>0&&(s=resolvePastedTextTokens({input:s,detectedContent:Z}));const a=!j&&te.length>0?[...te]:[],i=Oe?wb(Oe):void 0;if(o&&d&&(n(""),"handled"===(await d(s,a,i)).status))return M?.add(s),H(!1),qe(),q(""),ze(),ee([]),ve(-1),xe(""),void Ke({replaceCurrentInput:!0});ve(-1),xe(""),s.length>0&&M?.add(s);const l=Oe?.selection?{lines:Oe.selection.lineCount,file:basename8(Oe.activeFile?.relativePath??Oe.activeFile?.path??"")||"unknown",ide:nw[Vp()??""]??"IDE"}:void 0;t({input:s,role:j?"bash":"user",images:a,ideContext:i,ideHint:l}),H(!1),qe(),q(""),ze(),ee([]),Ke({replaceCurrentInput:!0})},[t,d,U,e,j,te,Z,M,Ue,ze,qe,Ke,n]),Ze=he(t=>{const r=s(process.cwd(),t),o=r.includes(" ")?`"${r}"`:r;let d;if(a&&""!==l){const t=e.lastIndexOf("@");d=-1!==t?e.substring(0,t+1)+o+" ":o+" "}else d=`${e}${o} `;n(d),i(!1),u(""),F(e=>e+1)},[n,i,e,a,l,u]),et=he(()=>{i(!1),u("")},[i,u]),tt=he(e=>{const t=nS.has(e),r="/design"===e.trimEnd();if(t||r){const t=e.trimEnd();n(t+" "),q(t.substring(1)+" ")}else qe(),q(""),n(e+" ");F(e=>e+1)},[n,qe]),nt=he(t=>{if("/resume"===t||"/sessions"===t)return M?.add(t),ve(-1),xe(""),ae(e),qe(),q(""),Q(!0),n(""),void F(e=>e+1);if("/design help"===t)return qe(),q(""),n(""),F(e=>e+1),M?.add(t),void d?.("/design help");if(tS.has(t))return qe(),q(""),M?.add(t),ve(-1),xe(""),n(""),F(e=>e+1),void d?.(t);const r=nS.has(t),o=rS.has(t);r?tt(t):(qe(),q(""),o?(M?.add(t),ve(-1),xe(""),n(""),F(e=>e+1),d?.(t)):(n(t+" "),F(e=>e+1)))},[d,n,e,M,tt,qe]),rt=he(()=>{qe(),q(""),ve(-1),xe(""),F(e=>e+1)},[]),ot=he(e=>{Q(!1),n(""),ae(""),ve(-1),xe(""),F(e=>e+1),d&&d(`/resume:${e}`)},[d,n]),st=he(()=>{Q(!1),n(se),ve(-1),xe(""),F(e=>e+1)},[se,n]),at=he(e=>{Pe.current=e,ke.current=void 0},[]),it=ge(()=>{const t=Ge&&("OPEN"===Ge.state||"MERGED"===Ge.state);return"auto-accept"===P||"plan"===P||"bypass"===P||Fe||t?!U&&!Y:!U&&0===e.length&&!j&&!Y},[U,e,j,Y,P,Fe,Ge]),lt=null!==ie,ct=me(new Map),ut=ge(()=>te.map((e,t)=>{if(ct.current.has(e))return ct.current.get(e)??null;const n=saveTempImage(e,t+1);return ct.current.set(e,n),n}),[te]),dt=__name(()=>U||a||W||Y?0:it||R||j?3:4,"getBottomMargin");return ce.createElement(ye,{width:"100%",flexDirection:"column",marginBottom:dt()},!Y&&ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(ImageRowsDisplay,{detectedImages:te,selectedImageIndex:re,imageTempPaths:ut,termWidth:We,inHistory:-1!==Ce}),ce.createElement(we,{color:j?Xr.GREEN:Xr.GRAY},He.line.repeat(We)),(()=>{const t=__name(()=>{if(!fe.current)return Date.now()-X.current<100?(X.current=0,void Qe()):void(a||W||Y||Ie||Xe());fe.current=!1},"handleTextInputSubmit"),n=__name(n=>ce.createElement(TextInput,{key:O,value:e,placeholder:Ie?"Save and close the editor to continue...":o,onChange:Je,onSubmit:t,showCursor:!Ie&&r&&-1===re,onCursorChange:at,initialCursor:ke.current,prefix:`${j?"!":He.pointer} `,prefixColor:j?Xr.GREEN:Xr.WHITE,singleLine:n?.singleLine,maxWidth:n?.maxWidth}),"renderTextInput");if(W&&T&&"/model"===V){const e=getModelHintLayout({currentModel:T,terminalWidth:We});return ce.createElement(ye,{flexDirection:"row",width:"100%"},ce.createElement(ye,{width:25},n({singleLine:!0,maxWidth:25})),ce.createElement(ye,{width:e.descriptionWidth},ce.createElement(we,{color:Xr.DIM,wrap:"truncate"},e.text)))}return n()})(),ce.createElement(we,{color:j?Xr.GREEN:Xr.GRAY},He.line.repeat(We))),U&&ce.createElement(Eb,null),a&&ce.createElement(YE,{onSelectFile:Ze,onClose:et,searchQuery:l}),W&&ce.createElement(aS,{onSelectCommand:nt,onInsertCommand:tt,onSubmitSearch:Xe,onClose:rt,searchQuery:z,onSelectedCommandChange:K}),Y&&ce.createElement(yb,{onSelectSession:ot,onClose:st}),!W&&(it||R||lt)&&ce.createElement(ob,{termWidth:We,indicatorText:ub(Fe,Oe,We),isIDEIndicator:cb(Fe,Oe),permissionMode:P,prInfo:Ge,tasteLearning:g,contextUsage:m,connectionIndicator:Be,pendingExitKey:R,updateStatus:k,updateFailedInfo:C,currentProvider:v,showProviderInfo:x,isBashMode:j,shareInfo:f,showShareNotification:y,unshareNotificationMessage:w,tasteNotificationMessage:S,creditWarning:E,hasStashedPrompt:lt}),Me&&ce.createElement(ye,{paddingLeft:1,flexDirection:"column"},ce.createElement(we,{color:Xr.YELLOW},Me)))},"InputBox");function getQueuedDisplayText(e){return e.displayMessage??e.input}function shouldCollapseQueuedMessage(e){return e.startsWith("Monitor check due:")||e.startsWith("Monitor update:")||e.startsWith("Monitor alert")}function getQueuedDisplayRows(e){const t=[];for(const n of e){if(n.isMeta)continue;const e=getQueuedDisplayText(n),r=shouldCollapseQueuedMessage(e)?t.find(t=>t.text===e):void 0;r?r.count+=1:t.push({text:e,count:1})}return t}pn(),__name(getQueuedDisplayText,"getQueuedDisplayText"),__name(shouldCollapseQueuedMessage,"shouldCollapseQueuedMessage"),__name(getQueuedDisplayRows,"getQueuedDisplayRows");var kb=__name(({messages:e})=>{const t=e.filter(e=>!e.isMeta).length;if(0===t)return null;const n=getQueuedDisplayRows(e);return ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(ye,{marginBottom:0},ce.createElement(we,{color:no,inverse:!0},` Queued (${t}) `)),n.map(e=>ce.createElement(ye,{key:e.text},ce.createElement(we,{color:Xr.DIM},He.pointerSmall," "),ce.createElement(we,{color:Xr.DIM},truncateString({text:e.count>1?`${e.text} (${e.count})`:e.text,maxChars:80})))))},"QueuedMessages"),Cb=ce.memo(({queuedMessages:e,isProcessing:t,executionState:n,status:r,input:o,setInput:s,onSubmit:a,showFileList:i,setShowFileList:l,fileSearchQuery:u,setFileSearchQuery:d,onCommand:m,outputTokens:g=0,contextUsage:h,tasteLearning:f,tasteUsage:y,shareInfo:w,showShareNotification:S,unshareNotificationMessage:E,tasteNotificationMessage:k,updateStatus:C,updateFailedInfo:v,creditWarning:T,currentProvider:x,currentModel:P,showProviderInfo:A,permissionMode:I,onToggleAutoAccept:M,hintMessage:R,historyManager:_,pendingExitKey:D,onResetPendingExitKey:N,onDoubleEscapeEmpty:$,retryAttempt:L,onAltP:O,inputActive:F=!0})=>{const[U,B]=de(0),j=me(o);return pe(()=>{D&&o!==j.current&&o.length>0&&N?.(),j.current=o},[o,D,N]),pe(()=>{if(!t)return void B(0);const e=setInterval(()=>{B(e=>e+1e3)},1e3);return()=>{clearInterval(e)}},[t]),ce.createElement(ye,{flexDirection:"column"},ce.createElement(kb,{messages:e}),ce.createElement(ye,{flexDirection:"row",justifyContent:"space-between"},ce.createElement(ye,{flexDirection:"column"},(t||n.isExecuting)&&null===L&&ce.createElement($E,{tokens:g,timeElapsed:U,status:n.isExecuting?`Executing: ${n.currentCommand}`:r}),R&&ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM}," ","⎿"," ","Tip: ",R)))),F?ce.createElement(bb,{input:o,setInput:s,onSubmit:a,placeholder:"Ask your question...",showFileList:i,setShowFileList:l,fileSearchQuery:u,setFileSearchQuery:d,onCommand:m,contextUsage:h,tasteLearning:f,tasteUsage:y,shareInfo:w,showShareNotification:S,unshareNotificationMessage:E,tasteNotificationMessage:k,updateStatus:C,updateFailedInfo:v,creditWarning:T,currentProvider:x,currentModel:P,showProviderInfo:A,permissionMode:I,onToggleAutoAccept:M,hintMessage:R,historyManager:_,pendingExitKey:!D||t||n.isExecuting?null:D,onDoubleEscapeEmpty:$,onAltP:O,isProcessing:t}):ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},"Background tasks focused · ↑↓ select · x stop · esc close")))});pn();var vb=__name(({onComplete:e,onCancel:t})=>{const[n,r]=de(!1),[o,s]=de(""),{authState:a,statusMessage:i,browserUrl:l,apiKeyInput:u,setApiKeyInput:d,handleApiKeySubmit:m,cancel:g}=useAuthFlow({onSuccess:__name((t,n)=>{const o=t.userName&&"API Key"!==t.userName&&"Manual API Key"!==t.userName?t.userName:"";s(o),isInternalTeamFlagEnforced()?r(!0):e(!0,o?`Logged in as ${o}`:"Logged in successfully")},"onSuccess"),onFailure:__name((t,n)=>{e(!1,n)},"onFailure"),onCancel:__name(()=>{t()},"onCancel")});return Ee((t,r)=>{if(r.ctrl&&"c"===t){if(n)return void e(!0,o?`Logged in as ${o}. Note: Anthropic authentication skipped.`:"Logged in successfully. Note: Anthropic authentication skipped.");g()}}),n?ce.createElement(Uo,{onSuccess:()=>{e(!0,o?`Logged in as ${o} with Anthropic`:"Logged in successfully with Anthropic")},onCancel:()=>{e(!0,o?`Logged in as ${o}. Note: Anthropic authentication skipped.`:"Logged in successfully. Note: Anthropic authentication skipped.")},onFailure:t=>{e(!0,o?`Logged in as ${o}. Anthropic auth failed: ${t}`:`Logged in successfully. Anthropic auth failed: ${t}`)}}):ce.createElement(vh,{authState:a,statusMessage:i,browserUrl:l,apiKeyInput:u,setApiKeyInput:d,handleApiKeySubmit:m})},"LoginOverlay");function buildOAuthMetadataUrl(e){const t=new h(e),n="/"===t.pathname?"":t.pathname.replace(/\/+$/,"");return t.pathname=`/.well-known/oauth-authorization-server${n}`,t.search="",t.hash="",t.toString()}function buildOidcMetadataUrl(e){const t=new h(e),n=t.pathname.replace(/\/+$/,"");return t.pathname=`${n}/.well-known/openid-configuration`,t.search="",t.hash="",t.toString()}async function tryFetchAsMetadata(e){try{const t=await fetchWithTimeout(e,{method:"GET",headers:{Accept:"application/json"}});if(!t.ok)return null;const n=await t.json();return n.authorization_endpoint&&n.token_endpoint?{authorizationEndpoint:n.authorization_endpoint,tokenEndpoint:n.token_endpoint,registrationEndpoint:n.registration_endpoint,scopes:n.scopes_supported}:null}catch(t){return dlog(`[MCP] OAuth metadata fetch failed for ${e}`,t),null}}async function discoverOAuthMetadataFromIssuer(e){return await tryFetchAsMetadata(buildOAuthMetadataUrl(e))||await tryFetchAsMetadata(buildOidcMetadataUrl(e))}async function discoverOAuthMetadata(e){const t=new h(e),n=`${t.protocol}//${t.host}`;return await tryFetchAsMetadata(`${n}/.well-known/oauth-authorization-server`)||await tryFetchAsMetadata(`${n}/.well-known/openid-configuration`)}function parseResourceMetadataUrl(e){if(!e)return null;const t=e.match(/resource_metadata\s*=\s*"([^"]+)"|resource_metadata\s*=\s*([^\s,]+)/i);return t?t[1]??t[2]??null:null}async function fetchProtectedResourceMetadata(e){try{const t=await fetchWithTimeout(e,{method:"GET",headers:{Accept:"application/json"}});if(!t.ok)return null;const n=await t.json();return{authorizationServers:n.authorization_servers,scopesSupported:n.scopes_supported}}catch(e){return dlog("[MCP] Protected resource metadata fetch failed",e),null}}async function checkServerAuthRequirements(e){try{const t=await fetchWithTimeout(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({jsonrpc:"2.0",method:"initialize",id:0,params:{protocolVersion:Sg,capabilities:{},clientInfo:Eg}})});if(401===t.status||403===t.status){const n=parseResourceMetadataUrl(t.headers?.get?.("www-authenticate")??null);if(n){const e=await fetchProtectedResourceMetadata(n),t=e?.authorizationServers?.[0];if(t){const n=await discoverOAuthMetadataFromIssuer(t);if(n)return e?.scopesSupported&&(n.scopes=e.scopesSupported),{requiresAuth:!0,metadata:n}}}return{requiresAuth:!0,metadata:await discoverOAuthMetadata(e)||void 0}}return{requiresAuth:!1}}catch(e){return{requiresAuth:!1,error:`Server unreachable: ${e instanceof Error?e.message:String(e)}`}}}async function registerOAuthClient({registrationEndpoint:e,clientName:t,redirectUris:n}){try{const r=await fetchWithTimeout(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({client_name:t,redirect_uris:n,token_endpoint_auth_method:"none",grant_types:["authorization_code","refresh_token"],response_types:["code"]})});if(r.ok){const e=await r.json();return{clientId:e.client_id,clientSecret:e.client_secret}}}catch(e){dlog("[MCP] OAuth client registration failed",e)}return null}async function discoverAndAuthenticate({serverName:e,serverUrl:t,onStatus:n}){const r=n??(()=>{});r("Probing server for OAuth requirements...");const o=await checkServerAuthRequirements(t);if(o.error)return{success:!1,error:o.error};if(!o.requiresAuth)return{success:!1,error:"Server does not require authentication"};if(!o.metadata)return{success:!1,error:"Server returned 401 but did not advertise OAuth metadata. Add `oauth` config manually via `mcp add-json`."};const{authorizationEndpoint:s,tokenEndpoint:a,registrationEndpoint:i,scopes:l}=o.metadata;if(!i)return{success:!1,error:"Server requires pre-registered OAuth credentials (no Dynamic Client Registration endpoint advertised). Register an OAuth client with the server, then add it via `mcp add-json` with an `oauth.clientId` field."};const u=`http://${Un}:${Fn}/callback`;r("Registering OAuth client...");const d=await registerOAuthClient({registrationEndpoint:i,clientName:Eg.name,redirectUris:[u]});if(!d)return{success:!1,error:"Dynamic client registration failed at "+i};const m={authorizationUrl:s,tokenUrl:a,clientId:d.clientId,clientSecret:d.clientSecret,scopes:l},g=await performOAuthFlow(e,t,m,{onStatus:n});return g.success&&(await storeDiscoveredClient(e,{authorizationUrl:s,tokenUrl:a,clientId:d.clientId,scopes:l}),d.clientSecret?await storeClientSecret(e,d.clientSecret):await deleteClientSecret(e)),g}pn(),pn(),On(),pn(),$n(),Wn(),pn(),Bn(),Sn(),__name(buildOAuthMetadataUrl,"buildOAuthMetadataUrl"),__name(buildOidcMetadataUrl,"buildOidcMetadataUrl"),__name(tryFetchAsMetadata,"tryFetchAsMetadata"),__name(discoverOAuthMetadataFromIssuer,"discoverOAuthMetadataFromIssuer"),__name(discoverOAuthMetadata,"discoverOAuthMetadata"),__name(parseResourceMetadataUrl,"parseResourceMetadataUrl"),__name(fetchProtectedResourceMetadata,"fetchProtectedResourceMetadata"),__name(checkServerAuthRequirements,"checkServerAuthRequirements"),__name(registerOAuthClient,"registerOAuthClient"),pn(),Wn(),$n(),__name(discoverAndAuthenticate,"discoverAndAuthenticate"),wn();var Tb=__name(({onClose:e})=>{const[t,n]=de([]),[r,o]=de(!0),[s,a]=de(0),[i,l]=de("list"),[u,d]=de(null),[m,g]=de(0),h=useTerminalHeight(),f=he(async()=>{o(!0);try{const e=await listMcpServers(),t=getMcpConnectionManager().getConnectedServers(),r=await Promise.all(e.map(async e=>{const n=t.find(t=>t.name===e.name);let r,o,s="disconnected";return!1===e.config.enabled?s="disabled":n&&"connected"===n.status?(s="connected",r=n.tools.length):n&&"error"===n.status?(s="error",o=n.error):(e.config.oauth||"http"===e.config.transport)&&(await hasTokens(e.name)?s="authenticated":e.config.oauth&&(s="requires_auth")),{name:e.name,config:e.config,scope:e.scope,status:s,toolCount:r,error:o}}));n(r)}catch{}finally{o(!1)}},[]);pe(()=>{f()},[f]);const y=ge(()=>{const e=[];for(const n of["local","project","user"])e.push(...t.filter(e=>e.scope===n));return e},[t]),w=y[s]??null,S=h-1,E=ge(()=>new Set(y.map(e=>e.scope)).size,[y]),k=Math.max(4,S-8-2*E);pe(()=>{g(e=>clampScrollOffset({cursor:s,total:y.length,maxVisible:k,currentOffset:e}))},[s,y.length,k]),Ee((t,n)=>{if(n.ctrl&&"c"===t)e();else if(n.escape)"actions"===i||"confirm-remove"===i?(l("list"),d(null)):e();else if("list"===i){if(n.upArrow&&(a(e=>Math.max(0,e-1)),d(null)),n.downArrow){if(0===y.length)return;const e=Math.max(0,y.length-1);a(t=>Math.min(e,t+1)),d(null)}n.return&&w&&(l("actions"),d(null))}});const C=__name((e,t)=>{const n=__name((e,n)=>ce.createElement(we,{color:e,backgroundColor:t},n),"icon");switch(e){case"connected":return n(Xr.GREEN,He.tick);case"authenticated":return n(Xr.CYAN,He.tick);case"requires_auth":return n(Xr.YELLOW,He.warning);case"error":return n(Xr.RED,He.cross);default:return n(Xr.GRAY,He.circle)}},"getStatusIcon"),v=__name(e=>{switch(e.status){case"connected":return"connected"+(void 0!==e.toolCount?` · ${e.toolCount} tools`:"");case"authenticated":return"authenticated · not connected";case"requires_auth":return"requires authentication";case"error":return e.error||"error";case"disabled":return"disabled";default:return"not connected"}},"getStatusText"),T=__name(e=>{switch(e){case"local":return"Local MCPs";case"project":return"Project MCPs";case"user":return"User MCPs"}},"getScopeLabel"),x=__name(e=>{switch(e){case"local":return"~/.commandcode/projects/*/mcp.json";case"project":return".mcp.json";case"user":return"~/.commandcode/mcp.json"}},"getScopePath"),P=__name(async e=>{if(w)if("back"!==e.value)if("connected"!==e.value)if("authenticated"!==e.value)if("connect"!==e.value)if("auth"!==e.value)if("remove"!==e.value)if("disable"!==e.value)if("enable"!==e.value);else{d({text:`Enabling ${w.name}...`,color:Xr.CYAN,loading:!0});try{if(!await updateMcpServerStatus({name:w.name,enabled:!0,scope:w.scope}))return void d({text:`${He.cross} Failed to enable ${w.name}, server may no longer exist in ${w.scope} scope`,color:Xr.YELLOW});await f(),d({text:`${He.tick} Enabled ${w.name}`,color:Xr.GREEN})}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else{d({text:`Disabling ${w.name}...`,color:Xr.CYAN,loading:!0});try{const e=getMcpConnectionManager();if(!await updateMcpServerStatus({name:w.name,enabled:!1,scope:w.scope}))return void d({text:`${He.cross} Failed to disable ${w.name}, server may no longer exist in ${w.scope} scope`,color:Xr.YELLOW});await e.disconnectServer(w.name),await f(),d({text:`${He.tick} Disabled ${w.name}`,color:Xr.GREEN})}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else l("confirm-remove");else{if(!(w.config.oauth||"http"===w.config.transport&&w.config.url))return void d({text:"Authentication requires an http server with a url",color:Xr.YELLOW});d({text:`Authenticating ${w.name}...`,color:Xr.CYAN,loading:!0});try{let e;if(w.config.oauth){const t={authorizationUrl:w.config.oauth.authorizationUrl,tokenUrl:w.config.oauth.tokenUrl,clientId:w.config.oauth.clientId,clientSecret:w.config.oauth.clientSecret,scopes:w.config.oauth.scopes};e=await performOAuthFlow(w.name,w.config.url??"",t,{onStatus:__name(()=>{},"onStatus")})}else e=await discoverAndAuthenticate({serverName:w.name,serverUrl:w.config.url});if(e.success){d({text:`${He.tick} Authenticated with ${w.name}`,color:Xr.GREEN});try{const e=getMcpConnectionManager();await e.ensureServerConnection(w.name)}catch{}await f()}else d({text:`${He.cross} Auth failed: ${e.error}`,color:Xr.RED})}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else{d({text:`Connecting ${w.name}...`,color:Xr.CYAN,loading:!0});try{const e=getMcpConnectionManager();await e.ensureServerConnection(w.name),d({text:`${He.tick} Connected to ${w.name}`,color:Xr.GREEN}),await f()}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED})}}else d({text:"Already authenticated",color:Xr.GREEN});else d({text:"Already connected",color:Xr.GREEN});else l("list")},"handleActionSelect"),A=__name(async e=>{if(w)if("yes"===e.value)try{const e=getMcpConnectionManager();"connected"===w.status&&await e.disconnectServer(w.name),await removeMcpServer({name:w.name,scope:w.scope}),l("list"),await f(),a(e=>Math.min(e,Math.max(0,y.length-2)))}catch(e){d({text:`${He.cross} Failed: ${e instanceof Error?e.message:String(e)}`,color:Xr.RED}),l("actions")}else l("actions")},"handleRemoveConfirm");if(r)return ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Manage MCP servers"),ce.createElement(we,{color:Xr.DIM},"Loading..."));if("confirm-remove"===i&&w)return ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Xr.RED,bold:!0},"Remove ",w.name,"?"),ce.createElement(we,{color:Xr.DIM},"This will remove the server from ",w.scope," ","config."),ce.createElement(ye,{marginTop:1},ce.createElement(bt,{items:[{label:"Yes, remove",value:"yes"},{label:"Cancel",value:"no"}],onSelect:A,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e}," ",t," ")})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ navigate · Enter to select · Esc to cancel")));if("actions"===i&&w){const e=[],t="disabled"===w.status,n="connected"===w.status,r="authenticated"===w.status||n;t&&e.push({label:"Enable",value:"enable"}),!t&&n&&e.push({label:"Connected",value:"connected"}),t||n||e.push({label:"Connect",value:"connect"});const o=!t&&(w.config.oauth||"http"===w.config.transport);return o&&r&&e.push({label:"Authenticated",value:"authenticated"}),o&&!r&&e.push({label:"Authenticate",value:"auth"}),t||e.push({label:"Disable",value:"disable"}),e.push({label:"Remove",value:"remove"}),e.push({label:"Back",value:"back"}),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},w.name),ce.createElement(ye,null,C(w.status),ce.createElement(we,{color:Xr.DIM}," ",v(w))),ce.createElement(ye,{marginTop:1},ce.createElement(bt,{items:e,onSelect:P,indicatorComponent:()=>null,itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.WHITE:Xr.GRAY,backgroundColor:e?Co:void 0,bold:e}," ",t," ")})),u&&ce.createElement(ye,{marginTop:1},u.loading&&ce.createElement(we,{color:u.color},ce.createElement(ut,{type:"dots"})," "),ce.createElement(we,{color:u.color},u.text)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ navigate · Enter to select · Esc to go back")))}let I=null;const M=m,R=m+k,_=y.slice(M,R),D=y.length>k;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:Zr,bold:!0},"Manage MCP servers"),ce.createElement(we,{color:Xr.DIM},t.length," ",1===t.length?"server":"servers"),0===t.length?ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},"No MCP servers configured."),ce.createElement(we,{color:Xr.DIM},'Use "',getBinaryCommand(),' mcp add" to add a server.'),ce.createElement(Fo,{url:"https://commandcode.ai/docs/mcp",text:"View MCP Docs ↗",color:Xr.CYAN,dimColor:!0})):ce.createElement(ye,{marginTop:1,flexDirection:"column"},_.map((e,t)=>{const n=M+t,r=e.scope!==I;I=e.scope;const o=n===s;return ce.createElement(ce.Fragment,{key:e.name},r&&ce.createElement(ye,{marginTop:0===t?0:1},ce.createElement(we,{bold:!0},T(e.scope)),ce.createElement(we,{color:Xr.DIM}," ","(",x(e.scope),")")),ce.createElement(ye,null,ce.createElement(we,{color:o?Xr.WHITE:void 0,backgroundColor:o?Co:void 0,bold:o},e.name),ce.createElement(we,{color:Xr.DIM,backgroundColor:o?Co:void 0}," · "),C(e.status,o?Co:void 0),ce.createElement(we,{color:"connected"===e.status?Xr.GREEN:"authenticated"===e.status?Xr.CYAN:"requires_auth"===e.status?Xr.YELLOW:Xr.GRAY,backgroundColor:o?Co:void 0}," ",v(e)," ")))})),D&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",M+1,"–",Math.min(R,y.length)," of"," ",y.length,M>0?" · ↑ more":"",R<y.length?" · ↓ more":"")),u&&ce.createElement(ye,{marginTop:1},u.loading&&ce.createElement(we,{color:u.color},ce.createElement(ut,{type:"dots"})," "),ce.createElement(we,{color:u.color},u.text)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},0===t.length?"Esc to close":"↑↓ navigate · Enter to select · Esc to close")))},"McpManager");pn(),wn();var xb=__name(({onClose:e})=>{const[t,n]=de([]),[r,o]=de(0),[s,a]=de(!0),[i,l]=de(null);pe(()=>{__name(async()=>{try{const e=await discoverMemoryFiles(process.cwd());n(e),a(!1)}catch(e){l(e instanceof Error?e.message:"Failed to discover memory files"),a(!1)}},"loadMemoryFiles")()},[]);const u=__name(async t=>{try{await openInEditor(t.path),e()}catch(t){console.error("Error opening memory file. Please ensure you have an editor set up."),e()}},"handleOpenInEditor"),d=t.filter(e=>"project"===e.type||"user"===e.type);if(Ee((t,n)=>{n.escape?e():n.upArrow?o(e=>Math.max(0,e-1)):n.downArrow?o(e=>Math.min(d.length-1,e+1)):(n.return&&d[r]&&u(d[r]),"1"===t&&d[0]&&u(d[0]),"2"===t&&d[1]&&u(d[1]))}),s)return ce.createElement(ye,{paddingLeft:1,paddingTop:1},ce.createElement(we,{color:Xr.DIM},"Loading memory files..."));if(i)return ce.createElement(ye,{paddingLeft:1,paddingTop:1},ce.createElement(we,{color:Xr.RED},He.cross," ",i));const m=d.map((e,t)=>{const n=t+1;let r="",o="";return"project"===e.type?(r=`${n}. Project memory`,o=e.exists?"Checked in at ./AGENTS.md":"Not found at ./AGENTS.md"):"user"===e.type&&(r=`${n}. User memory`,o=e.exists?"Saved in ~/.commandcode/AGENTS.md":"Not found in ~/.commandcode/AGENTS.md"),{label:r,value:e.path,description:o}});return ce.createElement(ye,{flexDirection:"column",width:"100%",borderStyle:"single",borderColor:Xr.GRAY,paddingTop:1,paddingBottom:1,paddingLeft:2,paddingRight:2},ce.createElement(ye,null,ce.createElement(we,{color:Xr.WHITE,bold:!0},"Select memory to edit:")),ce.createElement(ye,{columnGap:4,marginTop:1},ce.createElement(ye,{flexDirection:"column"},m.map((e,t)=>ce.createElement(we,{key:t,color:r===t?Xr.WHITE:Xr.DIM},r===t?"> ":" ",e.label))),ce.createElement(ye,{flexDirection:"column"},m.map((e,t)=>ce.createElement(we,{key:t,color:r===t?Xr.WHITE:Xr.DIM},e.description)))))},"MemorySelector");pn(),pn();var Pb={"Interrupted by user":"Interrupted by user","Insufficient credits":"You have insufficient credits to make this request. Please purchase more credits to continue using Command Code: https://commandcode.ai/billing"};function UserMessage({content:e,images:t,imageCount:n=0,ideHint:r}){const o="Interrupted by user"===e,s="Insufficient credits"===e,a=e.startsWith("Error:"),i=o||s||a,l=i&&Pb[e]||e,u=null!=t?t.length:n,d=me(null);null===d.current&&t&&t.length>0&&(d.current=t.map((e,t)=>saveTempImage(e,t+1)));const m=d.current??[];return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{backgroundColor:i?void 0:uo.BG,paddingRight:1},ce.createElement(we,{color:i?Xr.RED:uo.POINTER,bold:!i},He.pointer),ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:i?Xr.RED:uo.FG,wrap:"wrap"},l))),u>0&&ce.createElement(ye,{marginLeft:1},ce.createElement(we,{color:Xr.DIM},"⎿"," ",Array.from({length:u},(e,t)=>{const n=m[t],r=`[Image #${t+1}]`;return null!=n?createOSC8Link(`file://${n}`,r,!1):r}).join(" "))),r&&!i&&ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:ko},$y),ce.createElement(we,{color:Xr.DIM}," ","Selected ",r.lines," ",1===r.lines?"line":"lines"," from"," ",r.file," in ",r.ide)))}function AutoCompactMessage({content:e}){return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},He.bullet," ",e))}function ZdrPausedMessage(){return ce.createElement(ye,{marginTop:1,marginBottom:1},ce.createElement(we,null,ce.createElement(we,{color:Xr.DIM},He.bullet," "),ce.createElement(we,{color:Xr.DIM},"Per-task model overrides reverted to ZDR safe defaults. Run"," "),ce.createElement(we,{color:wo.CODE},"/configure-models"),ce.createElement(we,{color:Xr.DIM}," to review · esc to dismiss")))}function TasteSkipMessage(){return ce.createElement(ye,{marginTop:1,marginBottom:1},ce.createElement(ye,{flexShrink:0},ce.createElement(we,{backgroundColor:eo.BADGE_BG,color:eo.BADGE_FG,bold:!0},Fy)),ce.createElement(we,{color:Xr.DIM}," Skipped. Run "),ce.createElement(we,{color:wo.CODE},"/learn-taste"),ce.createElement(we,{color:Xr.DIM}," or "),ce.createElement(we,{color:wo.CODE},"cmd learn-taste"),ce.createElement(we,{color:Xr.DIM}," anytime."))}function HookWarningMessage({content:e}){return ce.createElement(ye,null,ce.createElement(we,{color:Xr.YELLOW},He.warning),ce.createElement(ye,{marginLeft:1,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.YELLOW},e)))}function HookLineMessage({content:e}){return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},` ${e}`))}function HookLineContinuationMessage({content:e}){return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},` ${e}`))}function HookFrameMessage({lines:e,header:t}){return ce.createElement(ye,{flexDirection:"column"},void 0!==t&&ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},` ${t}`)),e.map((e,t)=>ce.createElement(ye,{key:t,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},e.primary?` └ ${e.text}`:` ${e.text}`))))}function GoalLineMessage({content:e,subline:t}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:ko},$y),ce.createElement(we,{color:Xr.DIM,wrap:"wrap"}," ",e)),t?ce.createElement(ye,{marginLeft:4,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},t)):null)}function GoalAcceptMessage({command:e,acceptLine:t,hint:n}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(UserMessage,{content:e}),ce.createElement(GoalLineMessage,{content:t,subline:n}))}function GoalCompleteMessage({elapsed:e,turns:t,goal:n}){const r=`${t} ${1===t?"turn":"turns"}`;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,null,ce.createElement(we,{color:Xr.GREEN},He.tick," Goal achieved"),ce.createElement(we,{color:Xr.DIM},` (${e} · ${r})`))),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},"Goal: ",n)))}function GoalStatusMessage({state:e,headline:t,goal:n,detail:r,hint:o}){const s="completed"===e?He.tick:"paused"===e?"⏸":"idle"===e?He.circle:He.bullet,a="completed"===e?Xr.GREEN:"paused"===e?Xr.YELLOW:Xr.DIM;return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:a},s," ",t)),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},n)),r?ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},r)):null,o?ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},o)):null)}function BranchResultMessage({title:e}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},e?ce.createElement(we,null,ce.createElement(we,{color:Xr.GREEN},"⑂ Forked."),ce.createElement(we,null," You're now in "),ce.createElement(we,{bold:!0},'"',e,'"')):ce.createElement(we,null,ce.createElement(we,{color:Xr.GREEN},"⑂ Forked."),ce.createElement(we,null," You're now in the new session"))),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},"Original session saved · /resume to switch back")))}function SessionFileMessage({sessionId:e,fileLine:t}){return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},He.bullet," Session ID: "),ce.createElement(we,null,e)),ce.createElement(ye,{marginLeft:2,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:ko},$y," "),ce.createElement(we,{color:Xr.DIM,wrap:"wrap"},t)))}function InfoMessage({content:e,metadata:t}){if(t?.isTasteSkip)return ce.createElement(TasteSkipMessage,null);if(t?.isAutoCompact)return ce.createElement(AutoCompactMessage,{content:e});if(t?.hookFrame&&t.hookFrame.length>0)return ce.createElement(HookFrameMessage,{lines:t.hookFrame,header:t.hookFrameHeader});if(t?.isHookLine)return ce.createElement(HookLineMessage,{content:e});if(t?.isHookLineContinuation)return ce.createElement(HookLineContinuationMessage,{content:e});if(t?.isHookWarning)return ce.createElement(HookWarningMessage,{content:e});if(t?.isSuccess)return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.GREEN},He.tick," ",e));if(t?.isGoalAccept)return ce.createElement(GoalAcceptMessage,{command:e,acceptLine:t.goalAcceptLine??"",hint:t.goalSubline});if(t?.isGoalComplete)return ce.createElement(GoalCompleteMessage,{elapsed:t.goalElapsed??"",turns:t.goalTurns??1,goal:t.goalText??""});if(t?.isGoalStatus)return ce.createElement(GoalStatusMessage,{state:t.goalState??"running",headline:t.goalHeadline??"",goal:t.goalText??"",detail:t.goalDetail,hint:t.goalSubline});if(t?.isBranchResult)return ce.createElement(BranchResultMessage,{title:t.branchTitle});if(t?.isSessionFile)return ce.createElement(SessionFileMessage,{sessionId:t.sessionFileId??"",fileLine:t.sessionFileLine??""});if(t?.isGoalNotice){const n="cleared"===t.goalNoticeKind?He.tick:"none"===t.goalNoticeKind?He.circle:"paused"===t.goalNoticeKind?"⏸":He.bullet;return ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},n," ",e))}return t?.isGoalLine?ce.createElement(GoalLineMessage,{content:e,subline:t.goalSubline}):ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:Xr.DIM},He.bullet," ",e))}__name(UserMessage,"UserMessage"),__name(AutoCompactMessage,"AutoCompactMessage"),__name(ZdrPausedMessage,"ZdrPausedMessage"),__name(TasteSkipMessage,"TasteSkipMessage"),__name(HookWarningMessage,"HookWarningMessage"),__name(HookLineMessage,"HookLineMessage"),__name(HookLineContinuationMessage,"HookLineContinuationMessage"),__name(HookFrameMessage,"HookFrameMessage"),__name(GoalLineMessage,"GoalLineMessage"),__name(GoalAcceptMessage,"GoalAcceptMessage"),__name(GoalCompleteMessage,"GoalCompleteMessage"),__name(GoalStatusMessage,"GoalStatusMessage"),__name(BranchResultMessage,"BranchResultMessage"),__name(SessionFileMessage,"SessionFileMessage"),__name(InfoMessage,"InfoMessage"),pn(),wn(),Rn(),pn();var Ab=Tt()?"⠶":"#";function AssistantMessage({content:e}){return ce.createElement(ye,null,ce.createElement(we,{color:mo},Ab),ce.createElement(ye,{marginLeft:1,flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(Markdown,null,e)))}function BashMessage({command:e,output:t,isPending:n=!1,hasError:r=!1}){let o=Xr.GREEN,s=He.tick,a="default",i=t||"(No output)";n&&(o=Xr.YELLOW,s=He.arrowRight,a=Xr.YELLOW,i="Executing…"),r&&(o=Xr.RED,s=He.cross,a=Xr.RED);const l=ge(()=>buildTreeConnectors(i),[i]);return ce.createElement(ye,null,ce.createElement(we,{color:o},s),ce.createElement(ye,{flexDirection:"column",marginLeft:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.GRAY},"$ "),ce.createElement(we,{color:o,bold:!0},e)),ce.createElement(ye,{columnGap:1,marginLeft:1},ce.createElement(we,{color:ko},l),ce.createElement(we,{color:a,wrap:"wrap"},i))))}function CommandResultMessage({message:e,details:t,hasError:n=!1}){const r=n?Xr.YELLOW:void 0,o=ge(()=>buildTreeConnectors(e),[e]);return ce.createElement(ye,{flexDirection:"column",marginBottom:0,marginTop:-1},ce.createElement(ye,{columnGap:1},ce.createElement(we,{color:ko},o),ce.createElement(ye,{flexGrow:1,flexShrink:1,minWidth:0},ce.createElement(we,{color:r},e))),t&&ce.createElement(ye,{marginLeft:3},ce.createElement(we,{color:Xr.DIM},"See ",t)))}function ErrorMessage({content:e}){const t=e.includes("Interrupted by user");return ce.createElement(ye,null,ce.createElement(we,{color:Xr.RED},t?He.pointer:He.warning),ce.createElement(ye,{marginLeft:1,flexGrow:1,flexShrink:1,minWidth:0},t?ce.createElement(we,{color:Xr.RED,wrap:"wrap"},e):ce.createElement(Markdown,{color:Xr.RED},e)))}__name(AssistantMessage,"AssistantMessage"),pn(),__name(BashMessage,"BashMessage"),pn(),__name(CommandResultMessage,"CommandResultMessage"),pn(),__name(ErrorMessage,"ErrorMessage"),pn();var Ib={connected:{char:He.tick,color:Xr.GREEN},installed:{char:He.tick,color:Xr.GREEN},up_to_date:{char:He.tick,color:Xr.GREEN},needs_reload:{char:He.circle,color:Xr.YELLOW},failed:{char:He.cross,color:Xr.RED},not_in_ide:{char:He.circle,color:Xr.YELLOW}};function IDEStatusMessage({status:e,ide:t,details:n}){const{prefix:r,ide:o,suffix:s}=getStatusHeadline(e,t),a=Ib[e];return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,null,ce.createElement(we,{color:a.color},a.char),ce.createElement(we,null," ",r),o&&ce.createElement(we,{color:Xr.CYAN},o),s&&ce.createElement(we,null,s))),n?.map((e,t)=>ce.createElement(we,{key:t,color:Xr.DIM}," ",e)))}function ReasoningMessage({content:e,expandedOutput:t,expandKey:n,isStreaming:r=!1}){const o=e?Math.max(1,Math.round(e.length/500)):1,s=Boolean(e),a=(s?e.split("\n"):[]).length,i=`${r?"Thinking…":`Thought for ${o} second${1!==o?"s":""}`}${r&&!t&&a>0?` (${a} line${1!==a?"s":""})`:""}`,l=t&&s,u=!t&&s,d=r&&t&&e.length>560,m=d?e.length-560:0,g=80*Math.floor(m/80),h=d?(e.slice(0,g).match(/\n/g)??[]).length:0,f=d?e.slice(g):e;return ce.createElement(ye,{flexDirection:"column",width:"90%"},ce.createElement(ye,null,ce.createElement(we,{color:to},"✻"," "),ce.createElement(we,{color:to},u?`${i} `:i),u&&ce.createElement(BracketWrap,{color:Xr.DIM},`${n}+o to expand`)),l&&d&&ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:Xr.DIM},h>0?`… (${h} more line${1!==h?"s":""})`:"…")),l&&ce.createElement(ye,{marginLeft:2,flexDirection:"column"},ce.createElement(we,{color:to,wrap:"wrap",italic:!0},f)))}__name(IDEStatusMessage,"IDEStatusMessage"),pn(),__name(ReasoningMessage,"ReasoningMessage"),pn(),pn(),wn();function HelpMessage(){const e=getInvokedCommandName(),t=ge(()=>pg.filter(e=>!("/provider"===e.key&&!isInternalTeamFlagEnforced())),[]);return ce.createElement(ye,{flexDirection:"column",paddingY:1},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Command Code"),ce.createElement(we,{color:Xr.GRAY}," v","0.41.0")),ce.createElement(we,{color:Xr.GRAY},ig)),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Usage"),ce.createElement(ye,{paddingLeft:2},ce.createElement(we,null,e," <command> [options]"))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Options"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},mg.map(t=>ce.createElement(ye,{key:t.key},ce.createElement(we,null,t.key.replace(/^cmd/,e).padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},t.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Commands"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},gg.map(t=>ce.createElement(ye,{key:t.key},ce.createElement(we,null,t.key.replace(/^cmd/,e).padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},t.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Slash Commands"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},t.map(e=>ce.createElement(ye,{key:e.key},ce.createElement(we,null,e.key.padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},e.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Keyboard Shortcuts"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},dg.map(e=>ce.createElement(ye,{key:e.key},ce.createElement(we,null,e.key.padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},e.description))))),ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(we,{bold:!0},"Examples"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},fg.map(t=>ce.createElement(ye,{key:t.key},ce.createElement(we,null,t.key.replace(/^cmd/,e).padEnd(lg)),ce.createElement(we,{color:Xr.GRAY},t.description))))),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.CYAN},He.pointer),ce.createElement(we,{color:Xr.GRAY}," ",yg.replace(/cmd/,e))),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{bold:!0},"Links"),ce.createElement(ye,{flexDirection:"column",paddingLeft:2},hg.map(e=>ce.createElement(ye,{key:e.key},ce.createElement(we,null,e.key.padEnd(lg)),ce.createElement(we,{color:Xr.CYAN},e.description))))))}function SystemMessage({content:e}){return e.includes("KEYBOARD SHORTCUTS")&&e.includes("COMMANDS")?ce.createElement(HelpMessage,null):ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{wrap:"wrap"},ce.createElement(Markdown,null,e)))}function renderFeedEntry(e,t){if("user"===e.role){const t=Array.isArray(e.metadata?.images)?e.metadata.images:void 0,n=e.metadata?.ideHint;return ce.createElement(UserMessage,{content:e.input,images:t,ideHint:n})}return"assistant"===e.role?ce.createElement(AssistantMessage,{content:e.input}):"reasoning"===e.role?ce.createElement(ReasoningMessage,{content:e.input,expandedOutput:t,expandKey:"ctrl",isStreaming:"running"===e.metadata?.status}):"tool"===e.role?ce.createElement(ToolMessage,{name:mh(e.name||""),input:e.input,output:e.output||"",isPending:ch(e),hasError:lh(e),metadata:e.metadata,expandedOutput:t}):"bash"===e.role?ce.createElement(BashMessage,{command:e.command||"",output:e.output||"",isPending:ch(e),hasError:lh(e)}):"system"===e.role?ce.createElement(SystemMessage,{content:e.input}):"info"===e.role?ce.createElement(InfoMessage,{content:e.input,metadata:e.metadata}):"error"===e.role?ce.createElement(ErrorMessage,{content:e.input}):"command-result"===e.role?ce.createElement(CommandResultMessage,{message:e.input,details:e.details,hasError:e.hasError??!1}):"ide-status"===e.role?ce.createElement(IDEStatusMessage,{status:e.status,ide:e.ide,details:e.details}):null}function getModelShortName2(e){const t=findModelById(e);if(t){const e=t.name.toLowerCase().replaceAll(" ","-");return"free"===t.badge?`${e} (free)`:e}return e}function getProviderShortName(e){return e?sn[e]?.shortLabel??e.slice(0,4):""}function TranscriptDivider({count:e,width:t}){const n=` ${e} hidden messages [${kE?"ctrl+y":"ctrl+e"} to expand more] `,r=Math.max(0,Math.floor((t-n.length)/2)),o="─".repeat(r);return ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:co},o),ce.createElement(BracketedText,{text:n,color:co}),ce.createElement(we,{color:co},o))}__name(HelpMessage,"HelpMessage"),__name(SystemMessage,"SystemMessage"),__name(renderFeedEntry,"renderFeedEntry"),__name(getModelShortName2,"getModelShortName"),__name(getProviderShortName,"getProviderShortName"),__name(TranscriptDivider,"TranscriptDivider");var Mb=ce.memo(({feed:e,showHeader:t=!1,staticKey:n,expandedToolOutput:r=!1,currentModel:o,currentProvider:s,hiddenCount:a=0})=>{const i=a>0?{role:"transcript-divider",count:a}:null,l=[...t?["header"]:[],...i?[i]:[],...e],u=useTerminalWidth(),d=ge(()=>GS(u),[u]),m=ge(()=>YS(u),[u]),g=ge(()=>getPackageJson().version||"0.0.0",[]),h=ge(()=>getGitHeaderInfo(),[]),f=ge(()=>{const e=process.cwd(),t=process.env.HOME??process.env.USERPROFILE??"";return e.replace(t,"~")},[]),y=o?getModelShortName2(o):"sonnet-4.6",w="taste-1",S=ge(()=>{if(!o)return"";if(!modelSupportsReasoningEffort(o))return"";const e=getReasoningEffort(o);return e?` with ${e} effort`:""},[o,n]),E=isInternalTeamFlagEnforced()&&!process.env.CMD_DEMO,k=E?" · co":"",C=E&&s?` · ${getProviderShortName(s)}`:"";return ce.createElement(Se,{items:l,key:n,style:{width:"100%"}},e=>{if("object"==typeof e&&"transcript-divider"===e.role)return ce.createElement(TranscriptDivider,{key:"transcript-divider",count:e.count,width:u});if("header"===e)return"compact"===m?ce.createElement(ye,{key:"header",marginBottom:1,flexDirection:"row"},ce.createElement(ye,{width:VS,flexShrink:0},ce.createElement(QS,null,qS)),ce.createElement(ye,{flexDirection:"column",marginLeft:2},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Command Code"),ce.createElement(we,{color:co}," ","v",g)),ce.createElement(we,{color:co},"models: ",y,S," ·"," ",w,k),ce.createElement(we,{color:co},f,h&&h.isLocal&&h.branch&&` (${h.branch})`))):ce.createElement(ye,{key:"header",marginBottom:1,flexDirection:"column"},ce.createElement(QS,null,d.trimEnd()),ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(ye,null,ce.createElement(we,{color:co},"# "),ce.createElement(we,{bold:!0},"Command Code"),ce.createElement(we,{color:co}," v",g)),ce.createElement(we,{color:co},"# models: ",y,S," · ",w,C,k),ce.createElement(ye,null,ce.createElement(we,{color:co},"# ",f,h&&h.isLocal&&h.branch&&ce.createElement(we,{color:co}," ","(branch:"," ",h.branch,")")))));const t=e,n=renderFeedEntry(t,r);return ce.createElement(ye,{key:t.id,paddingBottom:1,width:"90%"},n)})});pn();var Rb=ue(__name(function LiveAgentStatusInner2({entry:e}){const t=mh(e.name||"Agent"),n=e.input||"",r=n.split(/[.\n]/)[0],o=r?r+(n.includes(".")||n.includes("\n")?".":""):n,s=e.metadata?.tokensUsed||0,a=e.metadata?.elapsedSeconds||0,i=e.metadata?.recentTools||[],[l,u]=de(".");return pe(()=>{const e=setInterval(()=>{u(e=>"..."===e?".":e+".")},500);return()=>clearInterval(e)},[]),ce.createElement(ye,{flexDirection:"column",marginBottom:1,width:"90%"},ce.createElement(ye,null,ce.createElement(we,{backgroundColor:ao.BG,color:ao.FG,bold:!0},` ${t} `),o&&ce.createElement(we,null," (",o,")")),ce.createElement(ye,{columnGap:1,marginLeft:1},ce.createElement(we,null,"⎿"," "),ce.createElement(we,{color:Xr.GRAY},"Running (",formatTime2(a)," |"," ",formatTokens(s),")",l)),i.length>0&&ce.createElement(ye,{flexDirection:"column",marginLeft:1},i.map((e,t)=>{const n=mh(e.name);return ce.createElement(ye,{key:t,columnGap:1},ce.createElement(we,{color:Xr.GRAY},"⎿"),ce.createElement(we,{color:Xr.GRAY}," ",n),e.input&&ce.createElement(we,{color:Xr.GRAY},"(",e.input,")"))})))},"LiveAgentStatusInner")),_b=ue(__name(function LiveAgentStatus2({entry:e}){return"tool"!==e.role?null:ce.createElement(Rb,{entry:e})},"LiveAgentStatus"));pn(),wn(),pn();var Db={low:"Fast responses with lighter reasoning",medium:"Balances speed and reasoning depth for everyday tasks",high:"Greater reasoning depth for complex problems",xhigh:"Extra reasoning depth for complex problems",max:"Maximum reasoning budget for the hardest problems"},Nb={value:void 0,label:"Default",description:"Use the provider default reasoning level"},$b=__name(({modelLabel:e,supportedEfforts:t,currentEffort:n,onSelect:r,onCancel:o})=>{const s=ge(()=>[Nb,...t.map(e=>({value:e,label:e,description:Db[e]}))],[t]),a=ge(()=>{if(void 0===n)return 0;const e=s.findIndex(e=>e.value===n);return e>=0?e:0},[s,n]),i=__name((e,t)=>`${e+1}. ${t}`,"labelText"),l=ge(()=>Math.max(...s.map((e,t)=>i(t,e.label).length))+4,[s]),{cursor:u}=useListNavigation({items:s,onSelect:__name(e=>r(e.value),"onSelect"),onCancel:o,initialIndex:a,searchQuery:"",onSearchChange:__name(()=>{},"onSearchChange"),disableSearch:!0,selectByNumber:!0});return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Zr,bold:!0},`Select reasoning effort for ${e}`)),ce.createElement(ye,{flexDirection:"column"},s.map((e,t)=>{const r=t===u,o=e.value===n;return ce.createElement(ye,{key:e.label},ce.createElement(we,{color:r||!o?Xr.WHITE:Xr.GREEN,backgroundColor:r?Co:void 0,bold:r||o},i(t,e.label).padEnd(l)),ce.createElement(we,{color:r?Xr.WHITE:Xr.DIM,backgroundColor:r?Co:void 0},e.description," "),o&&ce.createElement(we,{color:Xr.GREEN}," ",He.tick))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑/↓ navigate · enter to select · esc to go back")))},"ReasoningEffortSelector");Sn();var Lb="Loading plan info…",Ob=__name(e=>[{text:e.name,weight:100},{text:e.label,weight:50},{text:e.provider,weight:25},{text:e.description||"",weight:10}],"MODEL_SEARCH_FIELDS");function searchGroups2(e,t){if(!t.trim())return e;const n=[];for(const r of e){const e=fuzzyFilter(r.models,t,Ob);e.length>0&&n.push({...r,models:e})}return n}function flattenGroups(e){const t=[];for(const n of e)for(const e of n.models)t.push({providerId:n.providerId,model:e});return t}function groupByModelProvider2(e,t){return groupModelsByDisplayOrder(e).map(e=>({providerId:t,label:e.label,models:e.models}))}__name(searchGroups2,"searchGroups"),__name(flattenGroups,"flattenGroups"),__name(groupByModelProvider2,"groupByModelProvider");var Fb=__name(({onSelect:e,onCancel:t,currentModel:n,currentProvider:r,planId:o,purchasedCredits:s=0,freeCredits:a=0,refreshBanner:i})=>{const[l,u]=de(""),[d,m]=de(null),[g,h]=de(()=>new Set),f=ge(()=>isInternalTeamFlagEnforced(),[]),y=ge(()=>f?an:groupByModelProvider2(ln.flatMap(e=>e.models),sn["command-code"].id),[f]),w=ge(()=>searchGroups2(y,l),[y,l]),S=ge(()=>flattenGroups(w),[w]),[E,k]=de(0),C=useTerminalHeight()-1,v=Math.max(4,C-14-2*w.length),T=void 0!==o,x=ge(()=>T?null:getCachedBillingContext(),[T]),[P,A]=de(x),[I,M]=de(!T&&!x);pe(()=>{if(T)return;if(P)return;let e=!0;return getBillingContext().then(t=>{e&&(A(t),M(!1))}),()=>{e=!1}},[T,P]);const R=!T&&!0===P?.fetchFailed,_=T?o:P?.planId??null,D=T?s:P?.purchasedCredits??0,N=T?a:P?.freeCredits??0,$=f?sn.anthropic.id:sn["command-code"].id,L=r??$,O=n?Math.max(0,S.findIndex(e=>e.model.id===n&&e.providerId===L)):0,[F,U]=de("model"),[B,j]=de(null),{cursor:H,error:W,setError:G}=useListNavigation({items:S,onSelect:__name(t=>{const n=getSupportedEfforts(t.model.id);if(n&&n.length>0)return j(t),void U("effort");e(t.model.id,t.providerId)},"onSelect"),onCancel:t,initialIndex:O,searchQuery:l,onSearchChange:u,isActive:"model"===F,validate:__name(e=>{if(g.has(e.providerId))return`Run /provider to authenticate with ${getProviderConfig(e.providerId)?.displayName??e.providerId} first`;if(d&&!f){const t=sn[d]?.supportedModelProviders;if(t&&!t.includes(e.model.provider))return`${sn[d]?.label??d} does not support ${e.model.provider} models. Switch provider via /provider.`}if(I)return Lb;const t=checkModelAccess({model:{id:e.model.id,provider:e.model.provider,name:e.model.name},planId:_,purchasedCredits:D,freeCredits:N});return t.allowed?null:t.errorMessage??"Model not available for your plan"},"validate")});pe(()=>{k(e=>clampScrollOffset({cursor:H,total:S.length,maxVisible:v,currentOffset:e}))},[H,S.length,v]);const z=me(!1),q=__name(t=>{if(!B||z.current)return;z.current=!0;const{model:r,providerId:o}=B,s=getReasoningEffort(r.id),a=t!==s,l=r.id===n;(async()=>{try{a&&(await setReasoningEffort({modelId:r.id,effort:t}),l&&i?.())}catch(e){dlog(`[Model] Failed to persist reasoning effort: ${e}`)}finally{e(r.id,o)}})()},"handleEffortSelect"),V=__name(()=>{z.current||(j(null),U("model"))},"handleEffortCancel");if(pe(()=>{if(I)return;if(W!==Lb)return;const e=S[H];if(!e||R)return void G(null);const t=checkModelAccess({model:{id:e.model.id,provider:e.model.provider,name:e.model.name},planId:_,purchasedCredits:D,freeCredits:N});G(t.allowed?null:t.errorMessage??"Model not available for your plan")},[I,R,W,G,S,H,_,D,N]),pe(()=>{(async()=>{await isOAuthEnforced()&&m(await getConfiguredProvider())})()},[]),pe(()=>{(async()=>{const e=new Set(y.map(e=>e.providerId)),t=new Set;for(const n of e){const e=getProviderConfig(n);e?.requiresAuth&&e.checkAuth&&(await e.checkAuth()||t.add(n))}h(t)})()},[y]),"effort"===F&&B){const e=getSupportedEfforts(B.model.id)??[];return ce.createElement($b,{modelLabel:B.model.label,supportedEfforts:e,currentEffort:getReasoningEffort(B.model.id),onSelect:q,onCancel:V})}const K=E,Y=E+v;let Q=0;const J=w.map(e=>{const t=sliceSectionForWindow({section:e.models,sectionBase:Q,windowStart:K,windowEnd:Y});return Q+=e.models.length,{group:e,groupWindow:t}}).filter(e=>e.groupWindow.rows.length>0),X=S.length>v;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Select model")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{dimColor:!0},f?"Select a model and provider. Sets the default for new sessions; other open sessions are unaffected. Provider is saved.":"Switch between Command Code models. Sets the default for new sessions; other open sessions are unaffected.")),ce.createElement(ye,{marginBottom:2,flexDirection:"column",width:"100%"},ce.createElement(rE,{query:l,resultCount:l?S.length:void 0,placeholder:"Type to search models..."})),0===S.length?ce.createElement(ye,{marginY:1},ce.createElement(we,{color:Xr.GRAY},'No models match "',l,'"')):ce.createElement(ye,{flexDirection:"column"},J.map(({group:e,groupWindow:t},r)=>ce.createElement(ye,{key:`${e.providerId}-${e.label}`,flexDirection:"column",marginTop:r>0?1:0},f?ce.createElement(we,{bold:!0,color:Zr},e.label):ce.createElement(we,{bold:!0,dimColor:!0},e.label),t.rows.map((r,o)=>ce.createElement(HE,{key:`${e.providerId}-${e.label}-${r.id}`,model:r,providerId:e.providerId,isHighlighted:t.baseIndex+o===H,isCurrent:r.id===n&&e.providerId===L,showProviderLabel:!!f&&void 0}))))),X&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",K+1,"–",Math.min(Y,S.length)," of ",S.length,K>0?" · ↑ more":"",Y<S.length?" · ↓ more":"")),W&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.GRAY},W)),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"type to search · ↑/↓ navigate · enter to select"),l?ce.createElement(we,{color:Xr.DIM}," · esc to clear"):ce.createElement(we,{color:Xr.DIM}," · esc to cancel")))},"ModelSelector");pn(),Sn();var Ub=__name(({currentModel:e,onClose:t,refreshBanner:n})=>{const r=getSupportedEfforts(e)??[],o=findModelById(e)?.label??getModelDisplayName(e),s=me(!1),a=__name(r=>{if(s.current)return;s.current=!0;const o=r!==getReasoningEffort(e);(async()=>{try{o&&(await setReasoningEffort({modelId:e,effort:r}),n())}catch(e){dlog(`[Effort] Failed to persist reasoning effort: ${e}`)}finally{t()}})()},"handleSelect"),i=__name(()=>{s.current||t()},"handleCancel");return ce.createElement($b,{modelLabel:o,supportedEfforts:r,currentEffort:getReasoningEffort(e),onSelect:a,onCancel:i})},"EffortSelector");pn();var Bb=__name(({onSelect:e,onCancel:t,currentProvider:n})=>{const r=getProviderOptions(),o=__name(t=>{e(t.value)},"handleSelect");Ee((e,n)=>{n.escape&&t()});const s=n?r.findIndex(e=>e.value===n):0,a=n&&-1===s;return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,{marginBottom:1,flexDirection:"row",justifyContent:"space-between"},ce.createElement(ye,null,ce.createElement(we,{bold:!0},"Select AI Provider")),n&&ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:Xr.DIM},"Current: "),ce.createElement(we,{color:Xr.GREEN},getProviderDisplayName(n)),a&&ce.createElement(we,{color:Xr.YELLOW}," ","[OAuth enforced]"))),ce.createElement(ye,{marginBottom:0},ce.createElement(we,{color:Xr.DIM},"Available Providers:")),ce.createElement(bt,{items:r,onSelect:o,initialIndex:s>=0?s:0,indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.CYAN:Xr.GRAY,bold:e&&isLightTheme()},e?He.triangleRightSmall:" "),itemComponent:({isSelected:e,label:t})=>ce.createElement(we,{color:e?Xr.CYAN:Xr.DIM,bold:e&&isLightTheme()},` ${t}`)}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press ESC to cancel")))},"ProviderSelector");function RetryMessage({attempt:e}){const[t,n]=de(0);if(pe(()=>{if(null===e)return;const t=setInterval(()=>{n(e=>(e+1)%4)},500);return()=>clearInterval(t)},[e]),null===e)return null;const r=".".repeat(t).padEnd(3," ");return ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:yo,dimColor:!0},"Connection Issue. Retrying (attempt ",e,")",r))}pn(),__name(RetryMessage,"RetryMessage"),pn();var jb=[{mode:"both",label:"Both",description:"Restore conversation and code (recommended)"},{mode:"conversation",label:"Conversation only",description:"Rewind conversation, keep current code"},{mode:"files",label:"Code only",description:"Restore code, keep conversation"}],Hb=__name(({checkpoints:e,onSelect:t,onCancel:n})=>{const r=ge(()=>[...e].sort((e,t)=>new Date(e.timestamp).getTime()-new Date(t.timestamp).getTime()),[e]),[o,s]=de(Math.max(0,r.length-1)),[a,i]=de(Math.max(0,r.length-8)),[l,u]=de("checkpoint"),[d,m]=de(null),[g,h]=de(0),f=ge(()=>{if(!d)return!0;const e=r.findIndex(e=>e.messageId===d.messageId);if(-1===e)return!0;for(let t=e;t<r.length;t++)if(r[t].filesModified.length>0)return!0;return!1},[d,r]),y=ge(()=>f?jb:jb.filter(e=>"conversation"===e.mode),[f]);if(pe(()=>{if(r.length>0){const e=r.length-1;s(e),i(Math.max(0,r.length-8))}},[r.length,8]),Ee((e,f)=>{f.escape?"mode"===l?(u("checkpoint"),m(null),h(0)):n():"checkpoint"===l?f.upArrow?s(e=>{const t=Math.max(0,e-1);return t<a&&i(t),t}):f.downArrow?s(e=>{const t=Math.min(r.length-1,e+1);return t>=a+8&&i(t-8+1),t}):f.return&&r.length>0&&(m(r[o]),u("mode"),h(0)):"mode"===l&&(f.upArrow?h(e=>Math.max(0,e-1)):f.downArrow?h(e=>Math.min(y.length-1,e+1)):f.return&&d&&y[g]&&t({messageId:d.messageId,mode:y[g].mode}))}),0===r.length)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingTop:1},ce.createElement(we,{color:Zr,bold:!0},"Rewind"),ce.createElement(we,{color:Xr.DIM},"No checkpoints available. Start a conversation to create checkpoints."),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to close")));if("mode"===l&&d)return ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingTop:1},ce.createElement(we,{color:Zr,bold:!0},"Rewind"),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Restore to: "),ce.createElement(we,{color:Xr.WHITE},truncateString({text:d.userPrompt||"checkpoint",maxChars:50}))),ce.createElement(ye,{flexDirection:"column"},y.map((e,t)=>{const n=g===t,r=t===y.length-1;return ce.createElement(ye,{key:e.mode,flexDirection:"column"},ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:n?Zr:void 0},n?"> ":" "),ce.createElement(ye,{flexDirection:"column"},ce.createElement(we,{color:n?Zr:Xr.WHITE},e.label),ce.createElement(we,{color:Xr.DIM},e.description))),!r&&ce.createElement(we,null," "))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Enter"),ce.createElement(we,{color:Xr.DIM}," to confirm, "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to go back")));const w=r.slice(a,a+8);return ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingTop:1},ce.createElement(we,{color:Zr,bold:!0},"Rewind"),ce.createElement(we,{color:Xr.DIM},"Select a checkpoint to restore your session"),r.length>8&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Showing ",a+1,"-",Math.min(a+8,r.length)," ","of ",r.length)),ce.createElement(ye,{marginTop:1}),ce.createElement(ye,{flexDirection:"column"},w.map((e,t)=>{const n=a+t,s=o===n,i=e.filesModified.length,l=t===w.length-1,u=n===r.length-1;return ce.createElement(ye,{key:e.messageId,flexDirection:"column"},ce.createElement(ye,{flexDirection:"row"},ce.createElement(we,{color:s?Zr:void 0},s?"> ":" "),ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:s?Zr:Xr.WHITE},truncateString({text:e.userPrompt||"(no prompt)",maxChars:60})),ce.createElement(we,{color:Xr.DIM}," • "),ce.createElement(we,{color:Xr.DIM},getRelativeTimeString({timestamp:e.timestamp}),u&&" (latest)")),ce.createElement(we,{color:Xr.DIM},i>0?`${i} file${i>1?"s":""} changed`:"No code changes"))),!l&&ce.createElement(we,null," "))})),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Enter"),ce.createElement(we,{color:Xr.DIM}," to select, "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to cancel")))},"RewindSelector");pn();var Wb=[{label:"Complete brief",desc:"If the target, goal, audience, or artifact is clear, act without asking."},{label:"Composition",desc:"Choose layout from the work pattern: monitor, operate, compare, configure, learn, decide, or explore."},{label:"Scope",desc:"Broad prompts get the full mode pass. Narrow prompts stay narrow."},{label:"Truth",desc:"Only claim changes that exist in files and are visible or verifiable."},{label:"Templates",desc:"design-html and report-html are documentation templates, not UI inspiration."},{label:"Reports",desc:"Follow-up modes read markdown reports, apply relevant findings, then still run their own full mode pass."}],Gb=['/design redesign "Make this dashboard feel like an operator console"','/design motion "Animate the whole page and add missing interactions"','/design checkup "Audit this UI and generate the design report"','/design "Build a landing page for a privacy-first contract review tool"'],zb=__name(({onCancel:e})=>(Ee((t,n)=>{n.escape&&e()}),ce.createElement(ye,{flexDirection:"column",paddingLeft:2,paddingRight:2},ce.createElement(ye,{marginBottom:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Use"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},ce.createElement(we,{color:Xr.DIM},'/design <mode> "target or request"'),ce.createElement(we,{color:Xr.DIM},'/design "freeform request" also works. The closest mode is inferred.'))),ce.createElement(ye,{marginBottom:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Modes"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},Jw.map(e=>ce.createElement(ye,{key:e.name,columnGap:2},ce.createElement(ye,{width:18,flexShrink:0},ce.createElement(we,{color:Xr.CYAN},"/design ",e.name)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},e.description)))))),ce.createElement(ye,{marginBottom:1,marginTop:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Working rules"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},Wb.map(e=>ce.createElement(ye,{key:e.label,columnGap:2},ce.createElement(ye,{width:16,flexShrink:0},ce.createElement(we,{color:Xr.CYAN},e.label)),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},e.desc)))))),ce.createElement(ye,{marginBottom:1,marginTop:1,flexDirection:"column"},ce.createElement(we,{bold:!0,color:Zr},"Quick examples:"),ce.createElement(ye,{paddingLeft:2,flexDirection:"column"},Gb.map(e=>ce.createElement(we,{key:e,color:Xr.DIM},e)))),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press Esc to close. Type /design help anytime to return.")))),"DesignGuide");pn(),Sn(),pn(),pn();var qb=__name(e=>{const[t,n]=de(e),[r,o]=de(null),[s,a]=de(void 0);return pe(()=>{const t=__name(()=>{n(e.map(e=>({...e,active:!1,complete:!1,items:[],insights:[],message:""}))),o(null),a(void 0)},"handleReset"),r=__name(e=>{if("error"===e.type)return o(e.message),void a(e.traceId);n(t=>{if("step_start"===e.type){const n=t.findIndex(t=>t.id===e.step);return n<0?t:t.map((t,r)=>r<n?{...t,active:!1,complete:!0}:r===n?{...t,active:!0,message:e.message||"",...e.label&&{label:e.label},..."complete"===e.step&&{complete:!0},...void 0!==e.learningCount&&void 0!==e.categories&&void 0!==e.storage&&t.summary&&{summary:{learningCount:e.learningCount,categories:e.categories,storage:e.storage}}}:t)}if("progress"===e.type){const n=t.findIndex(e=>e.active);return n<0?t:t.map((t,r)=>r===n?{...t,items:[...t.items,e.message]}:t)}if("insight"===e.type){const n=t.findIndex(e=>"learning"===e.id);return n<0?t:t.map((t,r)=>r===n?{...t,insights:[...t.insights,e.message]}:t)}return t})},"handleNewEvent");return id.on("reset",t),id.on("new-event",r),()=>{id.off("reset",t),id.off("new-event",r)}},[e]),{steps:t,importError:r,importTraceId:s,setImportError:o}},"useProgressEvents");async function createRequestClient(){const e=getApiBaseUrl(),t=new Nu({baseUrl:e}),n=await getConfiguredProvider(),r=await isOAuthEnforced();let o,s;try{const e=await getOAuthCredentials({provider:n});o=e.token,s=e.oauthProvider,validateOAuthToken({token:o,provider:n})}catch(e){dlog("Failed to get or validate OAuth token:",e instanceof Error?e.message:String(e))}const a={[Rt.PROJECT_SLUG]:Sh.getCurrentProjectDirName(),[Rt.INTERNAL_TEAM_FLAG_HEADER]:r.toString()};return o&&(a[Rt.OAUTH_TOKEN]=`Bearer ${o}`,s&&(a[Rt.OAUTH_PROVIDER]=s)),{request:t,headers:a}}function splitPromptsIntoBatches(e){const t=[];let n=[],r=0;for(const o of e){const e=estimateTokens(o);e>2e3?(n.length>0&&(t.push(n),n=[],r=0),t.push([o])):r+e>2e3?(n.length>0&&t.push(n),n=[o],r=e):(n.push(o),r+=e)}return n.length>0&&t.push(n),t}pn(),pn(),Sn(),pn(),wn(),Sn(),pn(),pn(),wn(),Sn(),__name(createRequestClient,"createRequestClient"),pn(),__name(splitPromptsIntoBatches,"splitPromptsIntoBatches"),__name(function calculateObservationsPerBatch(e){return 4},"calculateObservationsPerBatch"),pn(),pn(),Sn(),pn();var Vb="Learning cancelled";function buildObserverPrompt(e,t){return`Produce ${t} varied observations for these prompts:\n\n${e.map((e,t)=>`${t+1}. ${e}`).join("\n")}\n\nVaried observations:`}function createInsightEmitter(){let e="",t=0;const n=__name(()=>{if(e.includes("\n")){const t=e.split("\n");for(let e=0;e<t.length-1;e++){const n=t[e].trim();n&&(dlog(`[ObserverAPI] emitting insight: ${n}`),id.addEvent({type:"insight",message:n}))}e=t[t.length-1]}},"emitCompletedLines");return{addText:__name(r=>{t++,dlog(`[ObserverAPI] text chunk ${t}: "${r.substring(0,50)}..."`),e+=r,n()},"addText"),emitRemaining:__name(()=>{e.trim()&&(dlog(`[ObserverAPI] emitting final insight: ${e.trim()}`),id.addEvent({type:"insight",message:e.trim()}))},"emitRemaining"),getChunkCount:__name(()=>t,"getChunkCount")}}async function callObserverAPI(e,t,n,r){if(r?.aborted)return;const o=getTasteObserverModel({sessionModel:getConfiguredModel()});dlog(`[ObserverAPI] calling ${Dt.ALPHA.GENERATE} with model: ${o}`);const s=_e(),a={...t,[Rt.SESSION_ID]:t[Rt.SESSION_ID]??s},i={config:getEnvironmentContext(),memory:"",taste:"",skills:"",params:{tools:[],messages:[{role:"user",content:n}],model:o,system:"You scan prompts and produce casual observations like a dev friend glancing at someone's work.\n\nPLAIN TEXT ONLY. No markdown, no formatting.\n\nBe natural and VARIED. Don't repeat the same sentence starters.\n\nGood (notice the variety):\npnpm over npm, nice\ndebugging that auth flow\nreact + typescript stack\ncircular deps came up\ntui flicker stuff\nah the classic memory leak\nsession persistence wip\nfighting with imports again\nhaiku model issues huh\n\nBad (too repetitive - NEVER do this):\nI see you prefer pnpm\nI see debugging auth\nI see react stack\nI see circular deps\noh, TUI issues\noh, memory leak\n\nRules:\n- plain text, lowercase is fine\n- vary your sentence starts - mix it up\n- max 6 words per observation\n- one observation per line\n- sound human, not robotic\n- output only the observations, no preamble",max_tokens:200,temperature:.7,stream:!0},threadId:s},l=await e.post({endpoint:Dt.ALPHA.GENERATE,body:i,headers:a,stream:!0,signal:r});dlog("[ObserverAPI] got response stream");const u=createInsightEmitter();await consumeSSEStream(l,{onText:__name(e=>{u.addText(e)},"onText")}),dlog(`[ObserverAPI] stream complete, ${u.getChunkCount()} chunks received`),u.emitRemaining(),dlog("[ObserverAPI] done")}async function processBatch(e,t,n,r,o,s){s?.throwIfAborted();let a=0;for(const e of n)a+=estimateTokens(e);dlog(`[Observer] batch ${r}/${o}: ${n.length} prompts`);const i=buildObserverPrompt(n,4);await callObserverAPI(e,t,i,s)}async function observeSessionPrompts(e){if(id.observerHasRun)return;id.markObserverRun();const{prompts:t,signal:n}=e;if(!n?.aborted)try{const{request:e,headers:r}=await createRequestClient(),o={...r,[Rt.SESSION_ID]:`observer-${_e()}`},s=splitPromptsIntoBatches(t);dlog(`[Observer] ${t.length} prompts → ${s.length} batches`);const a=Math.min(s.length,6);for(let t=0;t<a;t++){if(n?.aborted){dlog("[Observer] stopped (cancelled)");break}if(id.learningComplete){dlog(`[Observer] stopped at batch ${t} (learning complete)`);break}const r=s[t];try{await processBatch(e,o,r,t+1,s.length,n)}catch{if(n?.aborted)break}}dlog("[Observer] done")}catch(e){dlog(`[Observer] failed (non-critical): ${e instanceof Error?e.message:String(e)}`),id.addEvent({type:"progress",message:"Continuing without live observations..."})}}function isAbortError(e){return e instanceof Error&&("AbortError"===e.name||e.message===Vb||"Interrupted by user"===e.message)}wn(),__name(buildObserverPrompt,"buildObserverPrompt"),__name(createInsightEmitter,"createInsightEmitter"),__name(callObserverAPI,"callObserverAPI"),__name(processBatch,"processBatch"),__name(observeSessionPrompts,"observeSessionPrompts"),__name(isAbortError,"isAbortError"),__name(function cancelledResult(){return{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],status:"cancelled"}},"cancelledResult");var Kb=class{static{__name(this,"SessionImporter")}static async findClaudeCodeSessions(t=0){const n=[];try{const r=e.join(_.homedir(),".claude","projects");await F.access(r);const o=getProjectDirName2(process.cwd());dlog(`[Import] scanning project: ${o}`);const s=(await F.readdir(r)).filter(e=>e===o);for(const o of s){const s=e.join(r,o);try{if(!(await F.stat(s)).isDirectory())continue;const r=(await F.readdir(s)).filter(e=>e.endsWith(".jsonl")&&!e.includes(".checkpoints"));dlog(`[Import] found ${r.length} sessions`);for(const o of r){const r=e.join(s,o),a=await F.stat(r),i=o.replace(".jsonl","");if(n.push({id:i,filePath:r,createdAt:a.birthtime,lastModified:a.mtime,messageCount:0,agent:"claude-code"}),t>0&&n.length>=t)break}if(t>0&&n.length>=t)break}catch{continue}}}catch{dlog("[Import] no claude sessions dir")}return n}static async findCodexSessions(e=0,t){try{id.addEvent({type:"progress",message:"Scanning Codex sessions..."});const n=await findCodexSessions(process.cwd(),e=>{t?.(e),"reading"===e.phase&&id.addEvent({type:"progress",message:`Scanning Codex: ${e.processedFiles}/${e.totalFiles} files (${e.matchedSessions} matched)`})},e);return dlog(`[Import] found ${n.length} Codex sessions`),n}catch(e){return dlog("[Import] no codex sessions",e),[]}}static async findCursorSessions(e=0){try{id.addEvent({type:"progress",message:"Scanning Cursor sessions..."});const t=await findCursorSessions(process.cwd(),e);return dlog(`[Import] found ${t.length} Cursor sessions`),t}catch(e){return dlog("[Import] no cursor sessions",e),[]}}static async extractUserPrompts(e){const t=[];try{const n=(await F.readFile(e,"utf-8")).trim().split("\n");for(const e of n)if(e.trim())try{const n=JSON.parse(e);if("user"===n.type&&n.message){const e=n.message;let r="";e.content&&"string"==typeof e.content&&(r=e.content),r.trim()&&t.push(r.trim())}}catch{continue}t.length>0&&dlog(`[Import] extracted ${t.length} prompts from session`)}catch(t){dlog(`[Import] failed: ${e}`,t)}return t}static splitPromptsIntoBatches(e,t=15e4){const n=[];let r=[],o=0;for(const s of e){const e=estimateTokens(s);if(e>t){r.length>0&&(n.push(r),r=[],o=0);const e=this.splitLargePrompt(s,t);for(const t of e)n.push([t])}else o+e<=t?(r.push(s),o+=e):(r.length>0&&n.push(r),r=[s],o=e)}return r.length>0&&n.push(r),n}static splitLargePrompt(e,t){const n=[],r=e.split("\n");let o="",s=0;for(const e of r){const r=estimateTokens(e);s+r<=t?(o+=(o?"\n":"")+e,s+=r):(o&&n.push(o),o=e,s=r)}return o&&n.push(o),n}static async importAndLearn(e={}){const{signal:t}=e,n=[],r=[],o=[],s=[],a=[];try{t?.throwIfAborted(),id.addEvent({type:"step_start",step:"importing",label:"Started Learning Taste",message:"Scanning for coding sessions..."});const e=await loadProjectSettings(),i=e.tasteOnboarding?.learnedSessions||{};t?.throwIfAborted();const l=i["claude-code"]?.length||0,u=i.codex?.length||0,d=i.cursor?.length||0;dlog(`[Import] loaded settings: claude-code=${l} learned, codex=${u} learned, cursor=${d} learned`);const m=await findNewSessions(i);t?.throwIfAborted();const g=m["claude-code"]||[],h=m.codex||[],f=m.cursor||[],y=g.length+h.length+f.length;if(dlog(`[Import] findNewSessions returned: claude-code=${g.length} new, codex=${h.length} new, cursor=${f.length} new`),0===y){const e=await this.findClaudeCodeSessions();t?.throwIfAborted();const n=await findCodexSessions(process.cwd());t?.throwIfAborted();const r=await findCursorSessions(process.cwd());t?.throwIfAborted();const o=e.length+n.length+r.length,s=[{name:"Claude Code",count:e.length},{name:"Codex",count:n.length},{name:"Cursor",count:r.length}].filter(e=>e.count>0).sort((e,t)=>t.count-e.count).map(e=>`${e.count} ${e.name}`);id.addEvent({type:"step_start",step:"complete",label:"Taste Already Learned",message:o>0?`From ${s.join(" + ")} sessions`:"No sessions found for this project"});const a=[];return e.length>0&&a.push({agent:"claude-code",sessionIds:e.map(e=>e.id),displayName:"Claude Code"}),n.length>0&&a.push({agent:"codex",sessionIds:n.map(e=>e.id),displayName:"Codex"}),r.length>0&&a.push({agent:"cursor",sessionIds:r.map(e=>e.id),displayName:"Cursor"}),{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],totalSessions:o,learnedSessions:l+u+d,agentSessions:a,status:"already-learned"}}if(g.length>0){const e=await this.findClaudeCodeSessions();t?.throwIfAborted();const n=e.filter(e=>g.includes(e.id));o.push(...n)}if(h.length>0){const e=await this.findCodexSessions();t?.throwIfAborted();const n=e.filter(e=>h.includes(e.id));s.push(...n)}if(f.length>0){const e=await this.findCursorSessions();t?.throwIfAborted();const n=e.filter(e=>f.includes(e.id));a.push(...n)}const w=o.length+s.length+a.length;dlog(`[Import] total sessions: ${w} (claude-code: ${o.length}, codex: ${s.length}, cursor: ${a.length})`),id.addEvent({type:"step_start",step:"batching",label:"Organizing your sessions",message:""});const S=[{name:"Claude Code",sessions:o,extractPrompts:this.extractUserPrompts},{name:"Codex",sessions:s,extractPrompts:extractCodexPrompts},{name:"Cursor",sessions:a,extractPrompts:extractCursorPrompts}].filter(e=>e.sessions.length>0).sort((e,t)=>t.sessions.length-e.sessions.length);for(const e of S){id.addEvent({type:"progress",message:`${e.name}: ${e.sessions.length} sessions`});for(const o of e.sessions){t?.throwIfAborted();try{const n=await e.extractPrompts(o.filePath);t?.throwIfAborted(),n.length>0&&r.push(...n)}catch(t){n.push(`${e.name} import failed: ${t instanceof Error?t.message:String(t)}`)}}}if(0===r.length)return{success:!1,totalPrompts:0,preferencesLearned:0,errors:["No prompts found in sessions"]};const E=this.splitPromptsIntoBatches(r);dlog(`[Import] batched: ${r.length} prompts → ${E.length} batches`);const k=observeSessionPrompts({prompts:r,signal:t}).catch(e=>{dlog(`[Import] observer error: ${e instanceof Error?e.message:String(e)}`)});id.addEvent({type:"step_start",step:"learning",label:"Learning your coding taste",message:`Processing ${E.length} batch${1===E.length?"":"es"}`});try{const e=getApiBaseUrl(),i=new Nu({baseUrl:e});let l=!0;for(let e=0;e<E.length;e++){t?.throwIfAborted();const n=E[e],r=e+1,o=E.length;o>1&&id.addEvent({type:"progress",message:`Processing batch ${r}/${o}...`});const s=this.formatBatchLearning(n),a=new ay({request:i,sessionId:crypto.randomUUID(),projectRoot:process.cwd()});a.setAbortSignal(t);const u=[{role:"user",content:s}];dlog(`[Import] batch ${r}/${o}: ${n.length} prompts`);const d=await a.checkAndProcess({messages:u});t?.throwIfAborted(),d.success||(l=!1,dlog(`[Import] batch ${r}/${o} failed`))}if(dlog(`[Import] all batches complete, success: ${l}`),id.markLearningComplete(),await k,l){if(o.length>0){const e=o.map(e=>e.id);await markSessionsAsLearned("claude-code",e),dlog(`[Import] marked ${e.length} claude-code sessions as learned`)}if(s.length>0){const e=s.map(e=>e.id);await markSessionsAsLearned("codex",e),dlog(`[Import] marked ${e.length} codex sessions as learned`)}if(a.length>0){const e=a.map(e=>e.id);await markSessionsAsLearned("cursor",e),dlog(`[Import] marked ${e.length} cursor sessions as learned`)}}else dlog("[Import] NOT marking sessions as learned due to batch failures");const u=await this.extractLearningSummary();t?.throwIfAborted();const d=[];if(o.length>0&&d.push(`Claude Code (${o.length})`),s.length>0&&d.push(`Codex (${s.length})`),a.length>0&&d.push(`Cursor (${a.length})`),!l){const e=id.getEvents(),t=e.some(e=>"error"===e.type&&e.message?.toLowerCase().includes("insufficient credits")),i="Learning failed - sessions not marked as learned";n.push(i);const l=e.find(e=>"error"===e.type&&e.traceId)?.traceId;return t||id.addEvent({type:"error",message:i,traceId:l}),{success:!1,totalPrompts:r.length,preferencesLearned:u.totalLearnings,errors:n,totalSessions:w,agentSessions:[...o.length>0?[{agent:"claude-code",sessionIds:o.map(e=>e.id),displayName:"Claude Code"}]:[],...s.length>0?[{agent:"codex",sessionIds:s.map(e=>e.id),displayName:"Codex"}]:[],...a.length>0?[{agent:"cursor",sessionIds:a.map(e=>e.id),displayName:"Cursor"}]:[]]}}return id.addEvent({type:"step_start",step:"complete",label:"Learning Complete",message:`Learned from ${d.join(" + ")}`,learningCount:u.totalLearnings,categories:u.categories,storage:".commandcode/taste/taste.md"}),{success:!0,totalPrompts:r.length,preferencesLearned:u.totalLearnings,errors:n,totalSessions:w,agentSessions:[...o.length>0?[{agent:"claude-code",sessionIds:o.map(e=>e.id),displayName:"Claude Code"}]:[],...s.length>0?[{agent:"codex",sessionIds:s.map(e=>e.id),displayName:"Codex"}]:[],...a.length>0?[{agent:"cursor",sessionIds:a.map(e=>e.id),displayName:"Cursor"}]:[]]}}catch(e){if(isAbortError(e))return id.markLearningComplete(),{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],status:"cancelled"};const t=`Learning agent failed: ${e instanceof Error?e.message:String(e)}`;n.push(t);const o=trackError({error:e instanceof Error?e:new Error(String(e)),context:{component:ms.LEARNING_AGENT,heading:"Taste onboarding learning failed"}});return id.addEvent({type:"error",message:t,traceId:o}),{success:!1,totalPrompts:r.length,preferencesLearned:0,errors:n}}}catch(e){if(isAbortError(e))return id.markLearningComplete(),{success:!1,totalPrompts:0,preferencesLearned:0,errors:[],status:"cancelled"};const t=e instanceof Error?e.message:String(e);return n.push(t),{success:!1,totalPrompts:0,preferencesLearned:0,errors:n}}}static async extractLearningSummary(){try{const t=e.join(process.cwd(),".commandcode","taste","taste.md"),n=await F.readFile(t,"utf-8"),r=n.match(/^- .+Confidence:/gm),o=r?r.length:0;return{totalLearnings:o,categories:n.split("\n").filter(e=>e.startsWith("# ")).map(e=>e.replace(/^# /,"").trim()).filter(e=>e&&!e.toLowerCase().startsWith("taste"))}}catch{return{totalLearnings:0,categories:[]}}}static formatBatchLearning(e){return e.map((e,t)=>`${t+1}. ${e}`).join("\n\n")}},Yb="Learning timed out. Try again with /learn-taste",Qb={isImporting:!1,waitingForInput:!1,error:null},Jb=__name(e=>{let t;return{promise:new Promise((n,r)=>{t=setTimeout(()=>r(new Error(Yb)),e)}),cancel:__name(()=>{t&&clearTimeout(t)},"cancel")}},"createTimeout"),Xb=__name(e=>{const t=me(null),n=me(e);n.current=e;const[r,o]=de({isImporting:!0,waitingForInput:!1,alreadyLearned:!1,learnedSessionCount:0,totalSessionCount:0,agentSessions:[],error:null}),s=he(e=>{e.abort(new Error(Vb)),id.markLearningComplete()},[]),a=he(()=>{const e=t.current;!e||e.signal.aborted||(s(e),o(e=>({...e,...Qb})))},[s]);return pe(()=>{const e=new AbortController,r=Jb(12e4);t.current=e;let a=!1;return id.reset(),id.markImportStarted(),(async()=>{try{const t=await Promise.race([Kb.importAndLearn({signal:e.signal}),r.promise]);if(e.signal.aborted)return;if("cancelled"===t.status)return void o(e=>({...e,...Qb}));if(t.success)return void o(e=>({...e,isImporting:!1,waitingForInput:!0}));if("already-learned"===t.status)return void o(e=>({...e,isImporting:!1,alreadyLearned:!0,learnedSessionCount:t.learnedSessions||0,totalSessionCount:t.totalSessions||0,agentSessions:t.agentSessions||[],waitingForInput:!0}));const s=t.errors.join("\n");o(e=>({...e,isImporting:!1,waitingForInput:!0,error:s})),n.current&&n.current(s)}catch(t){if(e.signal.aborted)return;const r=t instanceof Error?t.message:String(t);r===Yb&&(e.abort(new Error(r)),id.markLearningComplete()),o(e=>({...e,isImporting:!1,waitingForInput:!0,error:r})),n.current&&n.current(r)}finally{r.cancel(),a=!0}})(),()=>{r.cancel(),a||s(e),t.current===e&&(t.current=null)}},[]),{...r,cancelImport:a}},"useImportProcess");pn();var Zb=__name(({onEscape:e,onEnter:t,enabled:n=!0})=>{Ee((r,o)=>{n&&(o.escape&&e(),(o.return||"\n"===r)&&t())})},"useKeyboardInput");pn(),Sn();var ek=__name(({autoLearn:e,onShouldSkip:t})=>{const[n,r]=de(null),[o,s]=de(null),[a,i]=de(void 0),l=me(!1);return pe(()=>{if(l.current)return;let n=null;return(async()=>{try{l.current=!0,dlog("[Hook:Conditions] loading...");const n=await checkOnboardingConditions();r(n),n.shouldTrigger||e?dlog(`[Hook:Conditions] result: ${n.reason}, sessions: ${n.sessionCount}`):(dlog("[Hook:Conditions] no trigger, skipping"),t())}catch(e){const r=e instanceof Error?e.message:String(e);dlog("[Hook:Conditions] error",r);const o=trackError({error:e instanceof Error?e:new Error(r),context:{component:ms.LEARN_TASTE_COMMAND,heading:"Onboarding conditions check failed"}});i(o),s(r),n=setTimeout(()=>t(),2e3)}})(),()=>{n&&clearTimeout(n)}},[e,t]),{conditions:n,error:o,traceId:a,isLoading:!n&&!o}},"useOnboardingConditions");async function completeOnboarding(e){try{await markOnboardingCompleted(),dlog("[Helper] onboarding marked complete")}catch(e){dlog(`[Helper] complete error: ${e instanceof Error?e.message:String(e)}`)}finally{id.reset(),e()}}async function skipOnboarding(e){try{await markOnboardingSkipped(),dlog("[Helper] onboarding marked skipped")}catch(e){dlog(`[Helper] skip error: ${e instanceof Error?e.message:String(e)}`)}finally{id.reset(),e()}}pn(),Sn(),pn(),Sn(),__name(completeOnboarding,"completeOnboarding"),__name(skipOnboarding,"skipOnboarding");var tk=__name(({onStepChange:e,onError:t,onCompleteCallback:n})=>{const r=me(n),o=he(()=>{dlog("[Handler] import started → learning"),e("learning")},[e]),s=he(async()=>{dlog("[Handler] import complete → done"),e("done"),await completeOnboarding(()=>r.current())},[e]),a=he(e=>{dlog(`[Handler] import error: ${e}`),t(e)},[t]),i=he(async()=>{dlog("[Handler] error dismissed by user → done"),e("done"),await skipOnboarding(()=>r.current({skipped:!0}))},[e]),l=he(async()=>{dlog("[Handler] skipped → done"),e("done"),await skipOnboarding(()=>r.current({skipped:!0}))},[e]);return n!==r.current&&(r.current=n),{handleImportStart:o,handleImportComplete:s,handleImportError:a,handleErrorDismiss:i,handleSkip:l}},"useOnboardingHandlers");pn(),Sn();var nk=__name(({conditions:e,autoLearn:t})=>{const[n,r]=de("checking"),o=me(!1);return pe(()=>{if(e&&!o.current){if(o.current=!0,t)return dlog("[Flow] autoLearn → learning"),void r("learning");dlog(`[Flow] → asking (${e.reason})`),r("asking")}},[e,t]),pe(()=>{dlog(`[Flow] step: ${n}`)},[n]),{step:n,setStep:r}},"useOnboardingFlow");pn(),pn();var rk=__name(({error:e,traceId:t})=>ce.createElement(ye,{padding:1},ce.createElement(ye,{flexDirection:"column",borderColor:Xr.RED,padding:1},ce.createElement(ye,{marginBottom:1},ce.createElement(we,null,"Error initializing onboarding: ",e)),t&&ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Trace ID: ",t)),ce.createElement(ye,null,ce.createElement(we,null,"Continuing without onboarding...")))),"OnboardingError");pn(),pn();var ok=__name(()=>ce.createElement(we,null,"Skip"),"SkipOptionText"),sk=__name(({sessionCount:e,agentSessions:t,onImport:n,onSkip:r})=>{const[o,s]=de(1);return Ee((e,t)=>{t.escape?r():"n"!==e&&"N"!==e?t.upArrow||t.downArrow?s(e=>1===e?2:1):"1"!==e?"2"!==e?t.return&&(1===o?n():r()):r():n():dismissOnboardingForeverForProject().then(()=>r())}),ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:eo.TEXT,paddingX:1,paddingY:0},ce.createElement(we,{color:eo.TEXT,bold:!0},"Build Your Coding Taste"),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(we,null,"Found"," ",1===e?"one session":`${e} sessions`," ","from"," ",t.map(e=>e.displayName).join(", ")," ","for this project."),ce.createElement(ye,{marginTop:1},ce.createElement(we,null,"Analyze"," ",1===e?"that session":"those sessions"," ","to build your coding taste package?"))),ce.createElement(ye,{marginTop:1,flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:1===o?eo.TEXT:Xr.GRAY},1===o?He.pointer:" "," 1. Yes, learn (recommended)")),ce.createElement(ye,null,ce.createElement(we,{color:2===o?eo.TEXT:Xr.GRAY},2===o?He.pointer:" "," 2."," ",ce.createElement(ok,null)))),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"↑↓ · "),ce.createElement(we,{color:wo.CODE},"enter"),ce.createElement(we,{color:Xr.DIM}," ok · "),ce.createElement(we,{color:wo.CODE},"esc"),ce.createElement(we,{color:Xr.DIM}," skip · "),ce.createElement(we,{color:wo.CODE},"n"),ce.createElement(we,{color:Xr.DIM}," never")))},"ImportChoice");pn(),pn();var ak=__name(({error:e,traceId:t})=>ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:Xr.RED,paddingX:2,paddingY:1,marginBottom:2},ce.createElement(we,{color:Xr.RED,bold:!0},"Oops, something went wrong:"),ce.createElement(ye,{marginTop:1},ce.createElement(we,null,e)),t&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Trace ID: ",t))),"ErrorSection");pn(),pn(),pn(),pn(),pn(),pn();var ik=__name(()=>ce.createElement(we,{backgroundColor:eo.BADGE_BG,color:eo.BADGE_FG},Fy),"TasteBadge");pn(),pn();var lk=["percolating","excavating","deciphering","triangulating","osmosing","metabolizing","grokking","spelunking","interpolating","marinating","crystallizing","synthesizing","calibrating","fermenting","coalescing","transmuting","simmering","distilling","ruminating","perusing","assimilating","untangling","decoding","absorbing","harmonizing","digesting","contemplating","extrapolating","materializing","finalizing"],ck="⎿",uk=__name(()=>{const[e,t]=de(()=>Math.floor(Math.random()*lk.length));return pe(()=>{const e=setInterval(()=>{t(Math.floor(Math.random()*lk.length))},2e3);return()=>clearInterval(e)},[]),ce.createElement(we,{color:Xr.YELLOW},lk[e],"...")},"PulsingText");pn();var dk=[He.bullet,He.squareSmallFilled,He.lozenge,He.star,He.triangleRight,He.triangleUp,He.circleFilled,He.pointer],mk=__name(e=>String(e).padStart(3," "),"padNum"),pk=__name(e=>dk[e%dk.length],"getSymbol"),gk=__name((e,t,n,r)=>r?`${e} observations (↑↓ scroll)`:`↑${mk(t)} ↓${mk(n)} (↑↓ scroll)`,"buildStatusLine"),hk=__name(({insights:e})=>{const[t,n]=de(0),[r,o]=de(!0),s=e.length,a=s>10,i=Math.max(0,s-10);if(pe(()=>{r&&a&&n(i)},[s,r,a,i]),Ee((e,t)=>{if(a)return t.upArrow?(o(!1),void n(e=>Math.max(0,e-1))):void(t.downArrow&&n(e=>{const t=Math.min(i,e+1);return t===i&&o(!0),t}))}),0===s)return null;const l=e.slice(t,t+10),u=t,d=s-t-10;return ce.createElement(ye,{flexDirection:"column",marginLeft:4,marginBottom:0},a&&ce.createElement(we,{color:Xr.DIM},gk(s,u,d,r)),l.map((e,n)=>{const r=t+n;return ce.createElement(ye,{key:r,marginBottom:0},ce.createElement(we,{color:Xr.DIM},pk(r)," ",e))}))},"ScrollableInsights");pn();var fk=__name(()=>{const[e,t]=de(!0);return pe(()=>{const e=setInterval(()=>{t(e=>!e)},500);return()=>clearInterval(e)},[]),ce.createElement(we,{color:Xr.YELLOW},e?He.circleFilled:He.circle)},"PulsingDot"),yk=__name(({label:e,message:t,active:n,complete:r,items:o,insights:s,isIntro:a,isAllComplete:i,summary:l})=>{if(a)return ce.createElement(ye,{flexDirection:"column",marginBottom:0},ce.createElement(ik,null),ce.createElement(ye,{marginTop:0},ce.createElement(we,{color:Xr.DIM},ck),ce.createElement(ye,{marginLeft:2},i?ce.createElement(we,{color:eo.TEXT},"learned your coding taste"):ce.createElement(uk,null))));const u=__name(()=>r?ce.createElement(we,{color:oo.BG},He.square):n?ce.createElement(fk,null):ce.createElement(we,{color:Xr.DIM},He.circle),"getStatusIcon"),d=o.length>0||s.length>0||t||l&&l.learningCount>0;return!r||n||d?ce.createElement(ye,{flexDirection:"column",marginBottom:0},(n||r)&&ce.createElement(ye,{marginBottom:0},ce.createElement(ye,{marginRight:1},u()),ce.createElement(we,{color:r?Xr.WHITE:n?Xr.YELLOW:Xr.DIM},e)),r&&t&&(!l||0===l.learningCount)&&ce.createElement(ye,{marginLeft:3,marginBottom:0},ce.createElement(we,{color:Xr.DIM},t)),o.length>0&&ce.createElement(ye,{flexDirection:"column",marginLeft:1,marginBottom:0},o.map((e,t)=>ce.createElement(we,{key:t,color:Xr.DIM},`${He.bullet} ${e}`))),s.length>0&&ce.createElement(hk,{insights:s}),r&&l&&l.learningCount>0&&ce.createElement(ye,{flexDirection:"column",marginLeft:1,marginBottom:0},ce.createElement(ye,{marginBottom:1,flexDirection:"row"},ce.createElement(we,null,ck),ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:eo.TEXT},"Learned ",l.learningCount," preference",1===l.learningCount?"":"s",l.categories.length>0?` across ${l.categories.length} ${1===l.categories.length?"category":"categories"}`:""))),ce.createElement(ye,{flexDirection:"column",marginLeft:1},ce.createElement(we,{color:Xr.DIM},He.pointerSmall," Stored in ",l.storage),ce.createElement(we,{color:Xr.DIM},"Command Code automatically uses & updates taste files.")))):null},"StepItem"),wk=__name(({steps:e})=>{const t=e.find(e=>"complete"===e.id)?.complete??!1;return ce.createElement(ye,{flexDirection:"column",marginBottom:1},e.map((e,n)=>ce.createElement(ye,{key:e.id,marginLeft:0===n?0:3},ce.createElement(yk,{label:e.label,message:e.message,active:e.active,complete:e.complete,items:e.items,insights:e.insights,summary:e.summary,isIntro:0===n,isAllComplete:t}))))},"StepsSection"),Sk=__name(({steps:e})=>ce.createElement(wk,{steps:e}),"ProgressSection");pn();var Ek=__name(({isImporting:e=!1,waitingForInput:t=!1})=>ce.createElement(ce.Fragment,null,e&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"ESC to cancel")),t&&ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0},"Press ENTER to continue"))),"HelpTextSection");pn();var bk=[{id:"importing",label:"Initializing Taste Profile",message:"",active:!1,complete:!1,items:[],insights:[]},{id:"batching",label:"Organizing your sessions",message:"",active:!1,complete:!1,items:[],insights:[]},{id:"learning",label:"Learning your coding taste",message:"",active:!1,complete:!1,items:[],insights:[]},{id:"complete",label:"Learned your coding taste!",message:"",active:!1,complete:!1,items:[],insights:[],summary:{learningCount:0,categories:[],storage:".commandcode/taste/taste.md"}}],kk=__name(({onComplete:e,onCancel:t,onError:n,onErrorDismiss:r})=>{const{steps:o,importError:s,importTraceId:a}=qb(bk),{isImporting:i,waitingForInput:l,error:u,cancelImport:d}=Xb(n);return Zb({onEscape:__name(()=>{if(i)return d(),void t?.();l&&((u||s)&&r?r():e())},"onEscape"),onEnter:__name(()=>{l&&((u||s)&&r?r():e())},"onEnter"),enabled:i||l}),ce.createElement(ye,{flexDirection:"column",padding:1},s&&ce.createElement(ak,{error:s,traceId:a}),!s&&ce.createElement(Sk,{steps:o}),ce.createElement(Ek,{isImporting:i,waitingForInput:l}))},"ImportProgress"),Ck=__name(({step:e,conditions:t,onImportStart:n,onImportComplete:r,onImportError:o,onErrorDismiss:s,onSkip:a})=>"asking"===e?t&&"has_sessions"===t.reason?ce.createElement(sk,{sessionCount:t.sessionCount,agentSessions:t.agentSessions,onImport:n,onSkip:a}):null:"learning"===e?ce.createElement(kk,{onComplete:r,onCancel:a,onError:o,onErrorDismiss:s}):null,"OnboardingStepRenderer"),vk=__name(({onComplete:e,autoLearn:t=!1})=>{pe(()=>(dlog("[UI:Onboarding] mounted"),()=>{dlog("[UI:Onboarding] unmounted")}),[]);const{conditions:n,error:r,traceId:o,isLoading:s}=ek({autoLearn:t,onShouldSkip:e}),{step:a,setStep:i}=nk({conditions:n,autoLearn:t}),{handleImportStart:l,handleImportComplete:u,handleImportError:d,handleErrorDismiss:m,handleSkip:g}=tk({onStepChange:__name(e=>{i(e)},"onStepChange"),onError:__name(()=>{},"onError"),onCompleteCallback:e});return dlog(`[UI:Onboarding] render: ${a}${n?.reason?` (${n.reason})`:""}${r?" ERROR":""}`),s?null:r?ce.createElement(rk,{error:r,traceId:o}):"done"===a?null:ce.createElement(Ck,{step:a,conditions:n,onImportStart:l,onImportComplete:u,onImportError:d,onErrorDismiss:m,onSkip:g})},"TasteOnboarding");pn();var Tk=[{label:"Dark theme",value:"dark",description:"Use purple accent colors on dark backgrounds."},{label:"Light theme",value:"light",description:"Use higher-contrast colors for white terminal backgrounds."}],xk=__name(({onSelect:e,onCancel:t})=>{const[n,r]=de(null);pe(()=>{r(getCliTheme())},[]);const o=__name(t=>{const n=Tk.find(e=>e.value===t.value)?.value;n&&e(n)},"handleSelect");if(Ee((e,n)=>{n.escape&&t()}),null===n)return null;const s=Tk.findIndex(e=>e.value===n);return ce.createElement(ye,{flexDirection:"column",paddingX:0,width:"100%"},ce.createElement(ye,null,ce.createElement(we,{color:Zr,bold:!0},"Select a theme")),ce.createElement(ye,{marginBottom:1},ce.createElement(we,{color:Xr.DIM},"Choose the color palette for this terminal.")),ce.createElement(bt,{items:Tk,onSelect:o,initialIndex:s>=0?s:0,indicatorComponent:({isSelected:e})=>ce.createElement(we,{color:e?Xr.CYAN:Xr.GRAY,bold:e&&isLightTheme()},e?He.pointer:" "),itemComponent:({isSelected:e,label:t})=>{const r=Tk.find(e=>e.label===t),o=r?.value===n,s=Tk.findIndex(e=>e.label===t);return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,null,ce.createElement(we,{color:e?Xr.CYAN:o?Xr.GREEN:Xr.DIM,bold:e&&isLightTheme()},` ${s+1}. ${r?.label??t}`),o&&ce.createElement(we,{color:Xr.GREEN}," ",He.tick)),ce.createElement(we,{color:Xr.DIM},` ${r?.description??""}`))}}),ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"Press "),ce.createElement(we,{color:Xr.DIM,bold:!0},"Esc"),ce.createElement(we,{color:Xr.DIM}," to cancel")))},"ThemeSelector");function getEntryCharCount(e){return("input"in e?e.input??"":"").length+("output"in e?e.output??"":"").length+("command"in e?e.command??"":"").length}function getBudgetedFeed(e,t){if(0===e.length)return[];const n=[...e].reverse();let r=t;const o=[];for(const e of n)if(o.unshift(e),r-=getEntryCharCount(e),r<=0)break;return o}__name(getEntryCharCount,"getEntryCharCount"),__name(getBudgetedFeed,"getBudgetedFeed");var Pk=ue(__name(function MainView2({feed:e,liveEntries:t,queuedMessages:n,isCmdCodeBusy:r,staticKey:o,setStaticKey:s,transcriptMode:a,tasteOnboardingEntryId:i,autoLearnTaste:l,showTasteSkipBanner:u,showZdrNotice:d,retryAttempt:m,input:g,setInput:h,fileSearchQuery:f,setFileSearchQuery:y,showFileList:w,setShowFileList:S,showProviderSelector:E,showModelSelector:k,showEffortSelector:C,showMemorySelector:v,showMcpManager:T,showAgentsConfig:x,showRewindSelector:P,showLoginOverlay:A,showUsageOverlay:I,showAddDirModal:M,showCompactModeSelector:R,showConfigureModels:_,setShowConfigureModels:D,showThemeSelector:N,authComponentInfo:$,status:L,currentProvider:O,currentModel:F,showProviderNotification:U,shareInfo:B,showShareNotification:j,unshareNotificationMessage:H,updateStatus:W,updateFailedInfo:G,creditWarning:z,permissionMode:q,hintMessage:V,pendingExitKey:K,tasteLearningEnabled:Y,interactionTokens:Q,contextUsage:J,historyManagerRef:X,executionState:Z,contextEngineRef:ee,onSubmit:te,onCommand:ne,onToggleAutoAccept:re,onResetPendingExitKey:oe,onDoubleEscapeEmpty:se,onTasteOnboardingComplete:ae,permissionPanel:ie,questionPanel:le,designSuggestionPanel:ue,onRewindSelect:me,onRewindCancel:pe,onLoginComplete:fe,onLoginCancel:Se,setShowProviderSelector:Ee,setShowModelSelector:be,setShowEffortSelector:ke,setShowMemorySelector:Ce,setShowMcpManager:ve,setShowAgentsConfig:Te,setShowAddDirModal:xe,setShowUsageOverlay:Pe,handleProviderSelect:Ae,handleProviderCancel:Ie,handleModelSelect:Me,handleModelCancel:Re,handleCompactModeSelect:_e,handleCompactModeCancel:De,handleThemeSelect:Ne,handleThemeCancel:$e,handleAuthSuccess:Le,handleAuthCancel:Oe,showDesignGuide:Fe,setShowDesignGuide:Ue}){const Be=ge(()=>e.filter(e=>"taste-onboarding"!==e.role),[e]),je=he(()=>Ue(!1),[Ue]),He=useTerminalWidth(),[We,Ge]=de(!1),ze=ge(()=>"off"===a?Be:getBudgetedFeed(Be,"limited"===a?15e3:5e4),[Be,a]),qe=ge(()=>"off"===a?0:Math.max(0,Be.length-ze.length),[Be.length,ze.length,a]),Ve=ge(()=>0===qe?ze:ze.filter(e=>"user"!==e.role),[ze,qe]),Ke=he(()=>Te(!1),[Te]),Ye=he(()=>Ce(!1),[Ce]),Qe=he(()=>ve(!1),[ve]),Je=he(()=>xe(!1),[xe]),Xe=he(()=>be(!0),[be]),Ze=he(()=>ke(!1),[ke]),et=he(()=>{hardResetForResize(),s(e=>e+1)},[s]),tt=!("off"!==a||ie||le||ue||E||k||C||$||v||T||x||P||A||I||M||R||_||N||Fe||i);return ce.createElement(ye,{flexDirection:"column",width:"100%"},ce.createElement(Mb,{staticKey:o,feed:Ve,showHeader:!0,expandedToolOutput:"off"!==a,currentModel:F,currentProvider:O,hiddenCount:qe}),i&&ce.createElement(vk,{onComplete:ae,autoLearn:l}),u&&ce.createElement(TasteSkipMessage,null),d&&ce.createElement(ZdrPausedMessage,null),t.map(e=>e.metadata?.isAgent?ce.createElement(_b,{key:e.id,entry:e}):ce.createElement(ye,{key:e.id,marginBottom:1,width:"90%"},renderFeedEntry(e,"off"!==a))),ce.createElement(RetryMessage,{attempt:m}),ue,le,ie,"off"!==a&&ce.createElement(ye,{flexDirection:"column",marginTop:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},"─".repeat(He))),ce.createElement(ye,{paddingRight:1},ce.createElement(we,{backgroundColor:oo.BG,color:oo.FG,bold:!0},`${Oy}DETAILED TRANSCRIPT${Oy}`),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{bold:!0},"ctrl+o"),ce.createElement(we,{color:Xr.DIM}," to toggle"),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{bold:!0},kE?"ctrl+y":"ctrl+e"),ce.createElement(we,{color:Xr.DIM}," ","to"," ","limited"===a?"show all":"collapse"),ce.createElement(we,{color:Xr.DIM}," · "),ce.createElement(we,{bold:!0},"esc"),ce.createElement(we,{color:Xr.DIM}," to exit"))),tt&&ce.createElement(ce.Fragment,null,ce.createElement(BackgroundTasksPanel,{onExpandedChange:Ge}),ce.createElement(Cb,{queuedMessages:n,isProcessing:r,executionState:Z,status:L,input:g,setInput:h,onSubmit:te,showFileList:w,setShowFileList:S,fileSearchQuery:f,setFileSearchQuery:y,onCommand:ne,outputTokens:Q,contextUsage:J,tasteLearning:Y,shareInfo:B,showShareNotification:j,unshareNotificationMessage:H,updateStatus:W,updateFailedInfo:G,creditWarning:z,currentProvider:O,currentModel:F,showProviderInfo:U,permissionMode:q,onToggleAutoAccept:re,hintMessage:V,historyManager:X.current,pendingExitKey:K,onResetPendingExitKey:oe,onDoubleEscapeEmpty:se,retryAttempt:m,onAltP:Xe,renderKey:o,inputActive:!We})),E&&ce.createElement(ye,{marginY:1},ce.createElement(Bb,{onSelect:Ae,onCancel:Ie,currentProvider:O})),k&&ce.createElement(ye,{marginY:1},ce.createElement(Fb,{onSelect:Me,onCancel:Re,currentModel:F,currentProvider:O,refreshBanner:et})),C&&ce.createElement(ye,{marginY:1},ce.createElement(Ub,{currentModel:F,onClose:Ze,refreshBanner:et})),Fe&&ce.createElement(ye,{marginY:1},ce.createElement(zb,{onCancel:je})),R&&ce.createElement(ye,{marginY:1},ce.createElement(jE,{onSelect:_e,onCancel:De})),_&&ce.createElement(ye,{marginY:1},ce.createElement(zE,{onClose:()=>D(!1)})),N&&ce.createElement(ye,{marginY:1},ce.createElement(xk,{onSelect:Ne,onCancel:$e})),x&&ce.createElement(ye,{marginY:1},ce.createElement(UE,{onCancel:Ke})),v&&ce.createElement(ye,{marginY:1},ce.createElement(xb,{onClose:Ye})),T&&ce.createElement(ye,{marginY:1},ce.createElement(Tb,{onClose:Qe})),P&&ee.current&&ce.createElement(ye,{marginY:1},ce.createElement(Hb,{checkpoints:ee.current.listCheckpoints(),onSelect:me,onCancel:pe})),$&&ce.createElement(ye,{marginY:1},ce.createElement($.Component,{onSuccess:Le,onCancel:Oe})),A&&ce.createElement(ye,{marginY:1},ce.createElement(vb,{onComplete:fe,onCancel:Se})),M&&ce.createElement(ye,{marginY:1},ce.createElement(CE,{onClose:Je})))},"MainView"));function renderView({feedState:e,sessionState:t,statusState:n,authState:r,uiOverlays:o,onboarding:s,exitState:a,pendingOps:i,permissionState:l,contextEngineRef:u,historyManagerRef:d,executionState:m,actionCallbacks:g,onSubmit:h,onCommand:f,input:y,setInput:w,fileSearchQuery:S,setFileSearchQuery:E,updateFailedInfo:k,creditWarning:C,handleTrust:v,handleNoTrust:T,handleToggleAutoAccept:x,handleDoubleEscapeEmpty:P,handleTasteOnboardingComplete:A,loadTasteStatus:I}){if(a.shouldExit)return null;if(s.checkingProject)return null;if(s.showTrustPrompt)return ce.createElement(SS,{staticKey:o.staticKey,onTrust:v,onExit:T});if(o.showSessionSelector)return ce.createElement(CS,{onSelectSession:g.onSelectSession,onNewSession:g.onNewSession});if(!s.projectTrusted)return null;const M=o.pendingDesignSuggestion?ce.createElement(fS,{suggestion:o.pendingDesignSuggestion,onSelect:e=>{f(`/design ${e}`)},onClose:()=>o.setPendingDesignSuggestion(null)}):null,R=i.pendingQuestion?ce.createElement(QuestionView,{pendingQuestion:i.pendingQuestion,permissionMode:l.permissionMode,setPermissionMode:l.setPermissionMode,dangerouslySkipPermissions:l.dangerouslySkipPermissions,setPendingQuestion:i.setPendingQuestion,setStatus:n.setStatus,setStaticKey:o.setStaticKey}):null,_=i.pendingPermission?ce.createElement(OS,{pendingPermission:i.pendingPermission,permissionMode:l.permissionMode,setPendingPermission:i.setPendingPermission,setStatus:n.setStatus,respondToPrompt:l.respondToPrompt,showHintMessage:n.showHintMessage,handleToggleAutoAccept:x}):null,{closeFullScreenOverlay:D}=o;return o.showLearningFeed?ce.createElement(eE,{onClose:()=>D(o.setShowLearningFeed),onExit:()=>a.setShouldExit(!0)}):o.showTasteConfig?ce.createElement(TasteConfigView,{staticKey:o.staticKey,onClose:()=>D(o.setShowTasteConfig),loadTasteStatus:I}):o.showSkillsConfig?ce.createElement(SkillsConfigView,{staticKey:o.staticKey,onClose:()=>D(o.setShowSkillsConfig)}):o.showUsageOverlay?ce.createElement(UsageView,{staticKey:o.staticKey,onClose:()=>D(o.setShowUsageOverlay)}):o.showContextView?ce.createElement(ContextConfigView,{staticKey:o.staticKey,contextEngineRef:u,onClose:()=>D(o.setShowContextView),setInput:w}):o.showStatusView?ce.createElement(StatusConfigView,{staticKey:o.staticKey,onClose:()=>D(o.setShowStatusView),setInput:w}):ce.createElement(Pk,{feed:e.feed,liveEntries:e.liveEntries,queuedMessages:e.queuedMessages,isCmdCodeBusy:e.isCmdCodeBusy,staticKey:o.staticKey,setStaticKey:o.setStaticKey,transcriptMode:o.transcriptMode,tasteOnboardingEntryId:s.tasteOnboardingEntryId,autoLearnTaste:s.autoLearnTaste,showTasteSkipBanner:o.showTasteSkipBanner,showZdrNotice:o.showZdrNotice,retryAttempt:n.retryAttempt,input:y,setInput:w,fileSearchQuery:S,setFileSearchQuery:E,showFileList:o.showFileList,setShowFileList:o.setShowFileList,showProviderSelector:o.showProviderSelector,showModelSelector:o.showModelSelector,showEffortSelector:o.showEffortSelector,showMemorySelector:o.showMemorySelector,showMcpManager:o.showMcpManager,showAgentsConfig:o.showAgentsConfig,showRewindSelector:o.showRewindSelector,showLoginOverlay:o.showLoginOverlay,showUsageOverlay:o.showUsageOverlay,setShowUsageOverlay:o.setShowUsageOverlay,showAddDirModal:o.showAddDirModal,showCompactModeSelector:o.showCompactModeSelector,showConfigureModels:o.showConfigureModels,setShowConfigureModels:o.setShowConfigureModels,showThemeSelector:o.showThemeSelector,authComponentInfo:r.authComponentInfo,status:n.status,currentProvider:r.currentProvider,currentModel:r.currentModel,showProviderNotification:r.showProviderNotification,shareInfo:n.shareInfo,showShareNotification:n.showShareNotification,unshareNotificationMessage:n.unshareNotificationMessage,updateStatus:n.updateStatus,updateFailedInfo:k,creditWarning:C,permissionMode:l.permissionMode,hintMessage:n.hintMessage,pendingExitKey:a.pendingExitKey,tasteLearningEnabled:n.tasteLearningEnabled,interactionTokens:n.interactionTokens,contextUsage:n.contextUsage,historyManagerRef:d,executionState:m,contextEngineRef:u,onSubmit:h,onCommand:f,onToggleAutoAccept:x,onResetPendingExitKey:a.resetPendingExitKey,onDoubleEscapeEmpty:P,onTasteOnboardingComplete:A,permissionPanel:_,questionPanel:R,designSuggestionPanel:M,onRewindSelect:g.onRewindSelect,onRewindCancel:g.onRewindCancel,onLoginComplete:g.onLoginComplete,onLoginCancel:g.onLoginCancel,setShowProviderSelector:o.setShowProviderSelector,setShowModelSelector:o.setShowModelSelector,setShowEffortSelector:o.setShowEffortSelector,setShowMemorySelector:o.setShowMemorySelector,setShowMcpManager:o.setShowMcpManager,setShowAgentsConfig:o.setShowAgentsConfig,setShowRewindSelector:o.setShowRewindSelector,setShowLoginOverlay:o.setShowLoginOverlay,setShowAddDirModal:o.setShowAddDirModal,handleProviderSelect:g.handleProviderSelect,handleProviderCancel:g.handleProviderCancel,handleModelSelect:g.handleModelSelect,handleModelCancel:g.handleModelCancel,handleCompactModeSelect:g.handleCompactModeSelect,handleCompactModeCancel:g.handleCompactModeCancel,handleThemeSelect:g.handleThemeSelect,handleThemeCancel:g.handleThemeCancel,handleAuthSuccess:g.handleAuthSuccess,handleAuthCancel:g.handleAuthCancel,showDesignGuide:o.showDesignGuide,setShowDesignGuide:o.setShowDesignGuide})}__name(renderView,"renderView");var Ak=__name(({resume:e=!1,resumeSessionId:t,continue:n=!1,trust:r=!1,dangerouslySkipPermissions:o=!1,updateStatus:s,updateFailedInfo:a,initialPrompt:i,skipOnboarding:l=!1,initialPermissionMode:u,sessionTitleHolder:d})=>{const{exit:m}=Ce(),{stdout:g}=be();pe(()=>{prefetchBillingContext()},[]);const[h,f]=de(""),[y,w]=de(""),S=me(!1),E=me(!1),k=me(null),C=me(null),v=useUiOverlays(),T=useFeed(),x=useSession(),P=useStatus(s),A=useAuth(),I=usePendingOps(),M=useOnboarding(),R=useExit(),{executeBash:_,executionState:D}=Af(),N=usePermissionMode({initialPermissionMode:u,dangerouslySkipPermissions:o,setPendingPermission:I.setPendingPermission,setStatus:P.setStatus,contextEngineRef:C}),{createContextEngineCallbacks:$}=useContextEngine({sessionId:x.sessionId,sessionLoaded:x.sessionLoaded,showSessionSelector:v.showSessionSelector,projectTrusted:M.projectTrusted,setFeed:T.setFeed,setLiveEntries:T.setLiveEntries,setQueuedMessages:T.setQueuedMessages,queuedMessagesRef:T.queuedMessagesRef,setStatus:P.setStatus,pinnedStatusRef:P.pinnedStatusRef,setRetryAttempt:P.setRetryAttempt,setInteractionTokens:P.setInteractionTokens,setContextUsage:P.setContextUsage,setCurrentProvider:A.setCurrentProvider,shareInfoRef:P.shareInfoRef,permissionsService:N.permissionsService,permissionModeRef:N.permissionModeRef,setPendingQuestion:I.setPendingQuestion,contextEngineRef:C}),{onCommand:L}=useCommandCtx({feedState:T,sessionState:x,statusState:P,authState:A,uiOverlays:v,onboarding:M,exitState:R,permissionState:N,contextEngineRef:C,isSubmittingRef:S,executeBash:_,createContextEngineCallbacks:$,setInput:f}),{loadTasteStatus:O,loadCurrentProvider:F,onSubmit:U}=useStartup({resume:e,resumeSessionId:t,continueLatest:n,trust:r,initialPrompt:i,stdout:g,feedState:T,sessionState:x,statusState:P,authState:A,onboarding:M,uiOverlays:v,permissionState:N,contextEngineRef:C,isSubmittingRef:S,initialPromptSubmittedRef:E,historyManagerRef:k,executeBash:_,createContextEngineCallbacks:$,setInput:f,onCommand:L});useMonitorOutputWakeup({onSubmit:U}),useLifecycle({exit:m,feedState:T,exitState:R,statusState:P,authState:A,onboarding:M,uiOverlays:v,skipOnboarding:l,contextEngineRef:C,sessionTitleHolder:d});const{handleToggleAutoAccept:B,handleDoubleEscapeEmpty:j,handleTasteOnboardingComplete:H,handleTrust:W,handleNoTrust:G}=useHandlers({resume:e,feedState:T,onboarding:M,uiOverlays:v,exitState:R,pendingOps:I,permissionState:N,statusState:P,authState:A,contextEngineRef:C,loadTasteStatus:O,loadCurrentProvider:F,setInput:__name(e=>f(e),"setInput")}),z=useMainActionCallbacks({feedState:T,sessionState:x,statusState:P,authState:A,uiOverlays:v,permissionState:N,contextEngineRef:C,createContextEngineCallbacks:$,setInput:f}),{creditWarning:q}=useCreditWarning({interactionTokens:P.interactionTokens});return renderView({feedState:T,sessionState:x,statusState:P,authState:A,uiOverlays:v,onboarding:M,exitState:R,pendingOps:I,permissionState:N,contextEngineRef:C,historyManagerRef:k,executionState:D,actionCallbacks:z,onSubmit:U,onCommand:L,input:h,setInput:f,fileSearchQuery:y,setFileSearchQuery:w,updateFailedInfo:a,creditWarning:q,handleTrust:W,handleNoTrust:G,handleToggleAutoAccept:B,handleDoubleEscapeEmpty:j,handleTasteOnboardingComplete:H,loadTasteStatus:O})},"InteractiveCLI");pn(),wn();var Ik="CMD_RELOAD_FILE",Mk="CMD_RELOAD_WRAPPER_PID",Rk=["-d","--debug","--local","--staging","--experimental",It,Mt],_k=new Set(["standard","plan","auto-accept"]);function canRespawn(){if(process.versions.bun)return!1;const e=process.argv[1];return"string"==typeof e&&e.length>0}function isWrappedChild(e=process.env,t=process.ppid){return!!e[Ik]&&e[Mk]===String(t)}function buildRelaunchArgs({invocation:e,request:t,resumable:n,argv:r}){const o=[];e.trust&&o.push("--trust"),e.dangerouslySkipPermissions&&o.push("--dangerously-skip-permissions"),e.skipOnboarding&&o.push("--skip-onboarding"),void 0!==e.maxTurns&&o.push("--max-turns",String(e.maxTurns));for(const e of t.addDir??[])o.push("--add-dir",e);for(const e of Rk)r.includes(e)&&o.push(e);return t.permissionMode&&_k.has(t.permissionMode)&&o.push("--permission-mode",t.permissionMode),t.model&&o.push("--model",t.model),n&&o.push("--resume",t.sessionId),o}async function writeReloadHandoff(e){const t=process.env[Ik];if(t)try{await U.writeFile(t,JSON.stringify(e))}catch{}}async function consumeReloadHandoff(e){try{const t=JSON.parse(await U.readFile(e,"utf-8"));if("string"!=typeof t?.sessionId)return null;const n=Array.isArray(t.addDir)&&t.addDir.every(e=>"string"==typeof e);return{sessionId:t.sessionId,permissionMode:"string"==typeof t.permissionMode?t.permissionMode:void 0,model:"string"==typeof t.model?t.model:void 0,addDir:n?t.addDir:void 0}}catch{return null}finally{await U.unlink(e).catch(()=>{})}}function restoreTerminal(){try{process.stdin.isTTY&&process.stdin.setRawMode(!1)}catch{}try{process.stdout.write("[?25h")}catch{}}__name(canRespawn,"canRespawn"),__name(isWrappedChild,"isWrappedChild"),__name(buildRelaunchArgs,"buildRelaunchArgs"),__name(writeReloadHandoff,"writeReloadHandoff"),__name(consumeReloadHandoff,"consumeReloadHandoff"),__name(restoreTerminal,"restoreTerminal");var Dk=ne.hex(Xr.DIM);function printReloadFallbackHint(){process.stdout.write(Dk("Couldn't restart automatically in this build — exiting instead.\n"))}async function shutdownWrapperRuntime(){try{await getMcpConnectionManager().disconnectAll()}catch{}try{await shutdownTelemetry()}catch{}process.removeAllListeners("SIGINT"),process.removeAllListeners("SIGTERM"),process.on("SIGINT",()=>{}),process.on("SIGTERM",()=>{}),process.stdin.pause()}async function runRelaunchLoop(e){await shutdownWrapperRuntime();const n=await U.mkdtemp(t.join(D.tmpdir(),"cmd-reload-")),r=t.join(n,"handoff.json");let o=e;for(;;){const e=await Sh.sessionTranscriptExists(o.sessionId),t=buildRelaunchArgs({invocation:getOriginalInvocation(),request:o,resumable:e,argv:process.argv.slice(2)}),s=De(process.execPath,[process.argv[1],...t],{stdio:"inherit",env:{...process.env,[Ik]:r,[Mk]:String(process.pid)}});let a,i;try{[a,i]=await new Promise((e,t)=>{s.once("exit",(t,n)=>e([t,n])),s.once("error",t)})}catch(e){restoreTerminal(),process.stderr.write(Dk(`\nCouldn't relaunch Command Code: ${e.message}\n`)),await U.rm(n,{recursive:!0,force:!0}).catch(()=>{}),process.exit(1)}if(75!==a){if(restoreTerminal(),await U.rm(n,{recursive:!0,force:!0}).catch(()=>{}),i){const e=D.constants.signals[i];process.exit(e?128+e:1)}process.exit(a??1)}else o=await consumeReloadHandoff(r)??o}}async function handlePendingReload(e){canRespawn()?(isWrappedChild()&&(await writeReloadHandoff(e),process.exit(75)),await runRelaunchLoop(e)):printReloadFallbackHint()}__name(printReloadFallbackHint,"printReloadFallbackHint"),__name(shutdownWrapperRuntime,"shutdownWrapperRuntime"),__name(runRelaunchLoop,"runRelaunchLoop"),__name(handlePendingReload,"handlePendingReload");var Nk=__name(e=>e.replace(/\x1B\[[0-9;]*[A-Za-z]/g,"").replace(/[\x00-\x1F\x7F]/g," ").trim(),"sanitizeTitleForOutput"),$k=ne.hex(Xr.DIM),Lk=__name(()=>{const e=getInvokedCommandName();return"win32"===process.platform&&"cmd"===e?"cmdc":e},"getResumeCommandName"),Ok=__name(e=>{const t=Lk(),n=tt([e]);return`${$k("Resume this session with:")}\n${$k(`${t} --resume ${n}`)}\n`},"formatResumeHint"),Fk=__name(e=>e?{isValid:!0}:{isValid:!1,errorMessage:["Error: Interactive mode requires a TTY terminal.","Please run this command directly in your terminal, not through a pipe or redirect."].join("\n")},"validateTtyEnvironment"),Uk=__name(e=>Boolean(e.resume||e.continue),"shouldValidateSessions"),Bk=__name(({isInitialized:e,sessionCount:t})=>e&&0===t?{canProceed:!1,exitCode:0,message:"No conversations found to resume."}:{canProceed:!0},"validateSessionAvailability"),jk=__name(({options:e,resumeSessionId:t,sessionTitleHolder:n})=>{let r;return e.permissionMode?r=e.permissionMode:e.plan&&(r="plan"),{resume:"boolean"==typeof e.resume?e.resume:void 0,resumeSessionId:t,continue:e.continue,trust:e.trust,dangerouslySkipPermissions:e.dangerouslySkipPermissions,initialPrompt:e.initialPrompt,skipOnboarding:e.skipOnboarding,initialPermissionMode:r,sessionTitleHolder:n}},"buildInteractiveCLIProps"),Hk=__name(()=>({stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,exitOnCtrlC:!1}),"getInkRenderOptions"),Wk=__name(()=>{enableBracketedPasteMode(),process.on("exit",()=>{disableBracketedPasteMode()})},"setupBracketedPasteMode"),Gk=__name(()=>{Wk()},"initializeTerminal"),zk=__name(async e=>{const{resumeSessionId:t,useContinue:n}=e,r=n?(await Sh.listSessions())[0]?.id:void 0,o=t??r;if(!o)return console.error("--fork-session ignored: no session to fork (use with --resume <id|name> or --continue)."),null;try{const{newId:e}=await Sh.forkSessionFiles({sourceId:o});return e}catch(e){const t=e instanceof Error?e.message:String(e);return console.error(`--fork-session failed: ${t}. Resuming the original session.`),null}},"forkSourceAtColdStart"),qk=__name(async(e={})=>{const t=Fk(process.stdin.isTTY);let n;if(t.isValid||(console.error(t.errorMessage),process.exit(1)),Gk(),"string"==typeof e.resume){const t=e.resume.trim();if(await Sh.isProjectInitialized()||(console.error("Project not initialized. Run cmd to start a conversation first."),process.exit(1)),await Sh.sessionExists(t))n=t;else{const e=await Sh.findSessionByName(t);e||(console.error(`No session named "${t}" found.`),process.exit(1)),n=e.id}}if(Uk(e)&&!n){const e=await Sh.isProjectInitialized(),t=e?await Sh.listSessions():[],n=Bk({isInitialized:e,sessionCount:t.length});n.canProceed||(console.log(n.message),process.exit(n.exitCode))}if(e.forkSession){const t=await zk({resumeSessionId:n,useContinue:Boolean(e.continue)});t&&(n=t,e.continue=!1)}startEarlyInputCapture(),applyTuiTheme(getCliTheme());const r={},o=jk({options:e,resumeSessionId:n,sessionTitleHolder:r}),s=Hk(),a=ke(ce.createElement(Ak,{...o}),s);registerInkControl({clear:a.clear,stdout:process.stdout,instance:await resolveInkInstance(process.stdout)}),await a.waitUntilExit();const i=consumePendingReload();i&&await handlePendingReload(i);const l=r.sessionId;if(l&&await Sh.sessionExists(l)){const e=await(r.loadTitle?.()),t=e?Nk(e):"";process.stdout.write(Ok(t||l))}},"interactiveMode");pn(),wn();var Vk=__name(async()=>{const e=getBinaryCommand();try{return await runLogin(),!!await getAuthKey()||(console.error(`${He.cross} Authentication failed. Please try again with: ${e} login`),!1)}catch(t){return isUserCancellation(t)||(console.error(`${He.cross} Login failed: ${getErrorMessage2(t)}`),console.error(`Please try again with: ${e} login`)),!1}},"attemptLogin");async function ensureAuthenticated(){try{return!!await getAuthKey()||Vk()}catch(e){return console.error("Error checking authentication:",e),!1}}__name(ensureAuthenticated,"ensureAuthenticated"),pn(),wn();var Kk={bold:__name((e,t)=>t?`${e}`:e,"bold"),dim:__name((e,t)=>t?`${e}`:e,"dim"),green:__name((e,t)=>t?`${e}`:e,"green")};function modelNameOf(e){const t=e.lastIndexOf("/");return(-1===t?e:e.slice(t+1)).toLowerCase()}function displayModelId(e){return e.replace(Ao,"")}function resolveModelFlag({model:e}){const t=resolveKnownModelId(e);if(t)return t;const n=modelNameOf(e),r=getAllModelOptions().filter(e=>modelNameOf(e.id)===n);return 1===r.length?r[0].id:void 0}function editDistance(e,t){const n=e.length+1,r=t.length+1;let o=Array.from({length:r},(e,t)=>t);for(let s=1;s<n;s++){const n=[s];for(let a=1;a<r;a++){const r=e[s-1]===t[a-1]?0:1;n[a]=Math.min(o[a]+1,n[a-1]+1,o[a-1]+r)}o=n}return o[r-1]}function suggestModel(e){const t=e.trim().toLowerCase();if(!t)return;let n;for(const e of getAllModelOptions()){const r=displayModelId(e.id),o=Math.min(editDistance(t,r.toLowerCase()),editDistance(t,modelNameOf(r)));(!n||o<n.distance)&&(n={id:r,distance:o})}if(!n)return;const r=Math.min(4,Math.ceil(t.length/3));return n.distance<=r?n.id:void 0}function formatModelList(e={}){const t=e.color??!1,n=getModelGroupsInOrder(),r=n.flatMap(e=>e.models),o=Math.max(...r.map(e=>displayModelId(e.id).length)),s=n.map(e=>{const n=e.models.map(e=>{const n=displayModelId(e.id).padEnd(o),r=Kk.dim(e.description,t);return`${n} ${"free"===e.badge?`${Kk.green("FREE",t)} `:""}${r}${e.id===nn?` ${Kk.green("(default)",t)}`:""}`});return[Kk.bold(e.label,t),"",...n].join("\n")});return[`${Kk.bold("Available models",t)} ${Kk.dim(`· ${r.length} models`,t)}`,"",s.join("\n\n"),"",Kk.dim('Pass the full id, or just the short name after the last "/":',t),`${getBinaryCommand()} --model moonshotai/Kimi-K2.5`,`${getBinaryCommand()} --model kimi-k2.5`,"","Docs: https://commandcode.ai/docs/reference/cli/models"].join("\n")}function printModelList(){const e=Boolean(process.stdout.isTTY)&&void 0===process.env.NO_COLOR;process.stdout.write(`${formatModelList({color:e})}\n`)}function resolveModelFlagOrExit({model:e}){const t=resolveModelFlag({model:e});if(t)return t;const n=suggestModel(e),r=n?` Did you mean "${n}"?`:"";process.stderr.write(`Error: unknown model "${e}".${r}\nRun "${getBinaryCommand()} --list-models" to see all available models\n`),process.exit(1)}function isTTY(){return Boolean(process.stdout.isTTY&&process.stdin.isTTY&&!process.env.CI)}__name(modelNameOf,"modelNameOf"),__name(displayModelId,"displayModelId"),__name(resolveModelFlag,"resolveModelFlag"),__name(editDistance,"editDistance"),__name(suggestModel,"suggestModel"),__name(formatModelList,"formatModelList"),__name(printModelList,"printModelList"),__name(resolveModelFlagOrExit,"resolveModelFlagOrExit"),pn(),Rn(),pn(),__name(isTTY,"isTTY");var Yk=!1;function setupTelemetry(){initTelemetry()&&(startSession(),registerStartupTask(trackSystemInfo()),trackCliSessionExistsEvent(),registerCleanupHandlers())}async function trackSystemInfo(){try{const e=_.platform(),t=_.arch();let n,r,o,s;try{const e=await getAuthenticatedEntity();e.success&&(n=e.user?.userName,r=e.user?.id,o=e.org?.login,s=e.org?.id)}catch{}if(!r)try{const e=await loadCredentials();r=e?.userId}catch{}systemInfo({userName:n,userId:r,orgLogin:o,orgId:s,platform:e,arch:t})}catch{}}function registerCleanupHandlers(){process.on("beforeExit",async()=>{await shutdownTelemetry()}),process.on("exit",()=>{shutdownTelemetrySync()}),process.on("SIGINT",handleShutdownSignal),process.on("SIGTERM",handleShutdownSignal)}async function disconnectMcpServers(){try{await getMcpConnectionManager().disconnectAll()}catch{}}function handleShutdownSignal(){Yk||(Yk=!0,Promise.allSettled([disconnectMcpServers(),shutdownTelemetry()]).finally(()=>{process.exit(0)}))}async function shutdownAndExit(e=0){Yk=!0;try{await Promise.allSettled([disconnectMcpServers(),shutdownTelemetry(500)])}finally{process.exit(e)}}async function trackCliSessionExistsEvent(){try{if(!await getAuthKey())return;const e=getSessionId();if(!e)return;const t=getPackageJson().version||"unknown",n=_.platform(),r=_.arch(),o=isTTY()?"interactive":"non-interactive";await trackLifecycleEvent({eventType:"cli_session_exists",metadata:{sessionId:e,cliVersion:t,mode:o,os:`${n}-${r}`}})}catch{}}__name(setupTelemetry,"setupTelemetry"),__name(trackSystemInfo,"trackSystemInfo"),__name(registerCleanupHandlers,"registerCleanupHandlers"),__name(disconnectMcpServers,"disconnectMcpServers"),__name(handleShutdownSignal,"handleShutdownSignal"),__name(shutdownAndExit,"shutdownAndExit"),__name(trackCliSessionExistsEvent,"trackCliSessionExistsEvent");var Qk=__name(e=>e&&!e.startsWith("-")?e:void 0,"parsePrompt"),Jk=__name(async()=>{await ensureAuthenticated()||process.exit(1)},"requireAuth"),Xk=__name(e=>{const t={};return e.trust&&(t.trust=!0),e.dangerouslySkipPermissions&&(t.dangerouslySkipPermissions=!0,t.trust=!0),e.skipOnboarding&&(t.skipOnboarding=!0),e.plan&&(t.plan=!0),e.permissionMode&&(t.permissionMode=e.permissionMode),e.forkSession&&(t.forkSession=!0),t},"buildRuntimeOptions"),Zk=__name(({options:e,runtimeOptions:t,initialPrompt:n})=>{const r=e.resume??e.sessions;return r?{resume:r,...t}:e.continue?{continue:!0,...t}:{...t,initialPrompt:n}},"getInteractiveConfig"),eC=__name((e,t)=>"string"==typeof e.print&&e.print.trim()?e.print:t&&!t.startsWith("-")?t:"","extractPrintQuery");async function interactiveModeAction(e,t){if(t.listModels)return void printModelList();if(t.addDir&&t.addDir.length>0)for(const e of t.addDir)addDirectory(e);const n=t.model?resolveModelFlagOrExit({model:t.model}):void 0;if(void 0!==t.print){const r=eC(t,e);return void await printMode({query:r,dangerouslySkipPermissions:t.dangerouslySkipPermissions,maxTurns:t.maxTurns,verbose:t.verbose,model:n,benchmarkOutput:t.benchmarkOutput,resume:t.resume,continue:t.continue})}n&&setModelOverride(n),setGoalMaxTurnsOverride(t.maxTurns);const r=Qk(e);await Jk();const o=Xk(t),s=Zk({options:t,runtimeOptions:o,initialPrompt:r});setOriginalInvocation({trust:o.trust,dangerouslySkipPermissions:o.dangerouslySkipPermissions,skipOnboarding:o.skipOnboarding,maxTurns:t.maxTurns}),await qk(s),await shutdownAndExit(0)}__name(interactiveModeAction,"interactiveModeAction"),pn(),Sn();var tC=new Set(["update"]),nC=__name(()=>process.argv.slice(2).find(e=>!e.startsWith("-")),"getInvokedCommand");globalThis.COMMAND_CODE_CWD=process.cwd();var rC=__name(()=>process.cwd(),"getCwd"),oC=__name(()=>process.argv.slice(2),"getArgs"),sC=__name(e=>e.includes("--local")?"local":e.includes("--staging")?"staging":"production","getEnv"),aC=__name(()=>{const e=rC(),t=oC(),n=sC(t);dlog(`[Startup] cwd: ${e}`),dlog(`[Startup] args: ${t.join(" ")}`),dlog(`[Startup] env: ${n}`),dlog(`[Startup] traceId: ${getTraceId()??"unavailable"}`)},"logStartupInfo");async function preRun(){if(aC(),process.argv.includes("--ide-setup")){const e=await runIDESetup();formatSetupResult(e).forEach(e=>console.log(e)),process.exit("failed"===e.status?1:0)}const e=tC.has(nC()??"");e||(notifyCompletedUpdate(),maybeRunPendingUpdate()),await migrateDeprecatedModel(),await getAuthKey()&&detectAndTrackFirstInstall().catch(()=>{}),e||checkForUpdateAsync(),setTimeout(()=>ensureExtensionInstalled().catch(()=>{}),100).unref()}__name(preRun,"preRun"),pn(),wn(),Sn(),Rn();var iC=getPackageJson(),lC=__name((e,t=[])=>[...t,e],"collectAddDir");function displayCustomHelp(){const e=iC.version,t=getInvokedCommandName(),n=pg.filter(e=>!("/provider"===e.key&&!isInternalTeamFlagEnforced()));console.log(),console.log(ne.bold("Command Code")+ne.gray(` v${e}`)),console.log(ne.gray(ig)),console.log(),console.log(ne.bold("Usage")),console.log(` ${t} <command> [options]`),console.log(),console.log(ne.bold("Options"));for(const e of mg){const n=e.key.replace(/^cmd/,t);console.log(" "+n.padEnd(lg)+ne.gray(e.description))}console.log(),console.log(ne.bold("Commands"));for(const e of gg){const n=e.key.replace(/^cmd/,t);console.log(" "+n.padEnd(lg)+ne.gray(e.description))}console.log(),console.log(ne.bold("Slash Commands"));for(const e of n)console.log(" "+e.key.padEnd(lg)+ne.gray(e.description));console.log(),console.log(ne.bold("Keyboard Shortcuts"));for(const e of dg)console.log(" "+e.key.padEnd(lg)+ne.gray(e.description));console.log(),console.log(ne.bold("Examples"));for(const e of fg){const n=e.key.replace(/^cmd/,t);console.log(" "+n.padEnd(lg)+ne.gray(e.description))}console.log(),console.log(ne.cyan("❯")+" "+ne.gray(yg.replace(/cmd/,t))),console.log(),console.log(ne.bold("Links"));for(const e of hg)console.log(" "+e.key.padEnd(lg)+ne.cyan(e.description));console.log()}function createProgram(){const e=new Ue;return e.name(getInvokedCommandName()).description("Command Code with your coding taste.").version(iC.version,"-v, --version","display the version number").argument("[prompt]","Your prompt to run in interactive mode").option("-r, --resume [name]","Resume a session by id or name, or pick from history").option("--sessions [name]","Alias of --resume — resume a session by id or name, or pick from history").option("-c, --continue"," Continue the most recent session in the current directory").option("--fork-session","With --resume/--continue, fork the session into a new one (original left untouched)").option("-t, --trust","Trust the project (skip initial trust permission prompt)").addOption(new Be("--dangerously-skip-permissions","Bypass all permission prompts (use with caution)").hideHelp()).addOption(new Be("--yolo","Bypass all permission prompts (alias for --dangerously-skip-permissions)").implies({dangerouslySkipPermissions:!0})).option("--plan","Start in plan mode (read-only exploration and planning)").addOption(new Be("--auto-accept","Start in auto-accept mode").implies({permissionMode:"auto-accept"})).addOption(new Be("--permission-mode <mode>","Set permission mode").choices(["standard","plan","auto-accept"])).option("--skip-onboarding","Skip taste onboarding (for non-interactive/automated runs)").option("-p, --print [query]","Run in non-interactive mode, output response and exit").option("--max-turns <number>","Max agentic turns (model API round trips): print mode limit (default 10); interactive mode sets the /goal turn budget (default 100)",e=>{const t=parseInt(e,10);if(isNaN(t)||t<1)throw new je("--max-turns must be a positive integer");return t}).option("--verbose","Stream tool execution progress to stderr in print mode").option("--ide-setup",cg).option("--add-dir <directory>","Add directory to workspace context",lC,[]).option("-m, --model <model>","Run on a specific model this session (e.g. claude-sonnet-4-6, kimi-k2.5). Unknown ids are rejected; see --list-models.").option("--list-models","List the models available for use").addOption(new Be("--benchmark-output <path>","Path to write benchmark metrics JSON").hideHelp()).addOption(new Be("--experimental","Enable experimental features").hideHelp()).addOption(new Be(It).hideHelp()).addOption(new Be(Mt).hideHelp()).addOption(new Be("-d, --debug","Enable debug mode").hideHelp()).addOption(new Be("--local","Use local server").hideHelp()).addOption(new Be("--staging","Use staging server").hideHelp()).helpOption("-h, --help","Display help message").allowUnknownOption(),e.configureHelp({formatHelp:__name(()=>(displayCustomHelp(),""),"formatHelp")}),e}function setupCommanderHooks(e){e.hook("preAction",(e,t)=>{dlogSection("cmd");const n=t.name(),r=t.parent?.name();dlog(`[cmd] ${r&&r!==n?"subcommand":"running"}: ${n}`);const o=t.opts(),s=Object.entries(o).filter(([,e])=>void 0!==e&&!1!==e).map(([e,t])=>!0===t?`--${e}`:`--${e}=${t}`).join(" ");s&&dlog(`[cmd] options: ${s}`);const a=t.args;a.length>0&&dlog(`[cmd] arguments: ${a.join(" ")}`)}),e.hook("postAction",()=>{dlogSection("Done")})}async function openGitHubIssue(e){const t=buildGitHubIssueUrl(e),n=We("Opening GitHub issues...").start();try{await Z(t,{wait:!1,background:!0}),n.succeed(`Opened ${createOSC8Link(t,"GitHub issue")} in your browser`),console.log("")}catch(e){n.fail("Failed to open browser"),console.log(""),console.log(createOSC8Link(t,"Open GitHub issue manually")),console.log("")}}__name(displayCustomHelp,"displayCustomHelp"),__name(createProgram,"createProgram"),__name(setupCommanderHooks,"setupCommanderHooks"),pn(),__name(openGitHubIssue,"openGitHubIssue");var cC=new Ue("feedback").description("Open GitHub issues to share feedback or report bugs").argument("[title]","Optional issue title").action(openGitHubIssue);pn();var uC=new Ue("help").description("Display help information").allowUnknownOption().allowExcessArguments().action(function(){this.parent?.help()});async function runInfo(e){const t=getSystemInfo(),{waitUntilExit:n}=ke(ce.createElement(hw,{verbose:e.verbose,text:e.text,systemInfo:t}));await n()}pn(),pn(),__name(runInfo,"runInfo");var dC=new Ue("info").description("Display system information").option("--verbose","Show detailed CPU and network information").option("--text","Print plain text without colors").allowUnknownOption().allowExcessArguments().action(async e=>{await runInfo(e)});function runLearnTaste(){const{unmount:e}=ke(ce.createElement(kk,{onComplete:__name(()=>{e(),process.exit(0)},"onComplete"),onCancel:__name(()=>{e(),process.exit(0)},"onCancel"),onErrorDismiss:__name(()=>{e(),process.exit(1)},"onErrorDismiss")}))}pn(),wn(),pn(),__name(runLearnTaste,"runLearnTaste"),Sn();var mC=new Ue(Vt.LEARN_TASTE).description("Learn from your previous sessions - updates your taste profile").allowUnknownOption().allowExcessArguments().action(async()=>{try{runLearnTaste()}catch(e){trackError({error:sanitizeErrorForTelemetry({error:e instanceof Error?e:new Error(String(e)),label:"learn_taste_render_failed"}),context:{component:ms.LEARN_TASTE_COMMAND,heading:"Learn taste render failed"}}),dlog(`[/learn-taste] render failed: ${e instanceof Error?e.message:String(e)}`),await shutdownTelemetry(),process.exit(1)}});function addMcpCommand(){const e=new Ue("add");return e.description("Add an MCP server").argument("<name>","Server name (unique identifier)").argument("[url]","Server URL (required for http transport)").option("-t, --transport <type>","Transport type (stdio or http)","stdio").addOption(new Be("-s, --scope <scope>","Configuration scope").choices(["local","project","user"]).default("local")).option("-e, --env <KEY=value>","Environment variable (repeatable)",collectKeyValue,{}).option("-H, --header <header>","HTTP header (repeatable, http only)",collectHeaders,{}).allowUnknownOption().allowExcessArguments().action(async(e,t,n,r)=>{const o=getInvokedCommandName();try{let s;/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(e)&&!e.includes("__")||(console.error(ne.red(`Error: Invalid server name '${e}'`)),console.error(ne.gray("Names must start with a letter or number, contain only letters, numbers, hyphens, and single underscores")),process.exit(1)),"stdio"!==n.transport&&"http"!==n.transport&&(console.error(ne.red(`Error: Invalid transport type '${n.transport}'`)),console.error(ne.gray("Valid options: stdio, http")),process.exit(1));let a=!1;if("http"===n.transport){t||(console.error(ne.red("Error: URL is required for http transport")),console.error(ne.gray(`Usage: ${getBinaryCommand()} mcp add --transport http <name> <url>`)),process.exit(1));try{new URL(t)}catch{console.error(ne.red(`Error: Invalid URL '${t}'`)),process.exit(1)}s={transport:"http",enabled:!0,url:t,...Object.keys(n.header).length>0&&{headers:n.header},...Object.keys(n.env).length>0&&{env:n.env}},console.log(ne.gray("Checking server authentication requirements..."));const r=await checkServerAuthRequirements(t);if(r.error&&console.log(ne.yellow(`Warning: ${r.error}`)),r.requiresAuth&&r.metadata){console.log(ne.cyan("Server requires OAuth authentication.")),isSecureOrLoopback(t)||(console.error(ne.red(`Error: Server '${e}' requires OAuth, but URL '${t}' is not secure.`)),console.error(ne.gray("OAuth requires https:// (http:// is only allowed for loopback hosts: localhost, 127.0.0.1, [::1]).")),console.error(ne.gray("Switch the URL to https:// or use a non-OAuth server.")),process.exit(1));let n,o="command-code";if(r.metadata.registrationEndpoint){console.log(ne.gray("Registering OAuth client..."));const e=await registerOAuthClient({registrationEndpoint:r.metadata.registrationEndpoint,clientName:"Command Code CLI",redirectUris:[`http://127.0.0.1:${Fn}/callback`]});e&&(o=e.clientId,n=e.clientSecret)}s.oauth={authorizationUrl:r.metadata.authorizationEndpoint,tokenUrl:r.metadata.tokenEndpoint,clientId:o,clientSecret:n,scopes:r.metadata.scopes},console.log(ne.gray("A browser window will open for authentication.\n"));const i=await performOAuthFlow(e,t,{authorizationUrl:r.metadata.authorizationEndpoint,tokenUrl:r.metadata.tokenEndpoint,clientId:o,clientSecret:n,scopes:r.metadata.scopes},{onStatus:__name(e=>{console.log(ne.gray(` ${e}`))},"onStatus")});i.success?console.log(ne.green("✓ Successfully authenticated")):(a=!0,console.log(ne.yellow(`Warning: Authentication failed: ${i.error}`)),console.log(ne.gray(`You can retry with: ${getBinaryCommand()} mcp auth ${e}`)),console.log(ne.gray("Or authenticate via the /mcp menu in a session")))}}else{const o=r.args,a=process.argv.indexOf("--");let i,l=[];if(-1!==a){const e=process.argv.slice(a+1);0===e.length&&(console.error(ne.red("Error: Command is required for stdio transport")),console.error(ne.gray(`Usage: ${getBinaryCommand()} mcp add --transport stdio <name> -- <command> [args...]`)),process.exit(1)),i=e[0],l=e.slice(1)}else if(t){i=t;const n=o.indexOf(e);-1!==n&&o.length>n+2&&(l=o.slice(n+2))}else console.error(ne.red("Error: Command is required for stdio transport")),console.error(ne.gray(`Usage: ${getBinaryCommand()} mcp add --transport stdio <name> -- <command> [args...]`)),console.error(ne.gray(` or: ${getBinaryCommand()} mcp add <name> <command> [args...]`)),process.exit(1);looksLikeHttpUrl2(i)&&(console.error(ne.red(`Error: '${i}' looks like a URL, not a local command.`)),console.error(ne.gray(`Did you mean: cmd mcp add --transport http ${e} ${i}`)),process.exit(1)),s={transport:"stdio",enabled:!0,command:i,...l.length>0&&{args:l},...Object.keys(n.env).length>0&&{env:n.env}}}await addMcpServer({name:e,serverConfig:s,scope:n.scope});const i="user"===n.scope?"global":"project"===n.scope?"project":"local";if(a?console.log(ne.yellow(`✓ Added MCP server '${e}' to ${i} config (authentication pending)`)):console.log(ne.green(`✓ Added MCP server '${e}' to ${i} config`)),"http"===s.transport)console.log(ne.gray(` URL: ${s.url}`));else{const e=[s.command,...s.args||[]].join(" ");console.log(ne.gray(` Command: ${e}`))}console.log(""),console.log(ne.cyan("Next steps:")),console.log(ne.gray(`Start ${o} and run /mcp to manage configured MCP servers.`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function looksLikeHttpUrl2(e){try{const t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol}catch{return!1}}function collectKeyValue(e,t){const[n,...r]=e.split("=");return n&&0!==r.length||(console.error(ne.red(`Error: Invalid format '${e}', expected KEY=value`)),process.exit(1)),t[n]=r.join("="),t}function collectHeaders(e,t){const n=e.indexOf(":");-1===n&&(console.error(ne.red(`Error: Invalid header format '${e}', expected 'Header: value'`)),process.exit(1));const r=e.substring(0,n).trim(),o=e.substring(n+1).trim();return r||(console.error(ne.red(`Error: Empty header name in '${e}'`)),process.exit(1)),t[r]=o,t}function listMcpCommand(){const e=new Ue("list");return e.description("List configured MCP servers").action(async()=>{try{const e=await listMcpServers();if(0===e.length)return console.log(ne.yellow("\nNo MCP servers configured\n")),console.log(ne.gray("Add a server with:")),console.log(ne.gray(` ${getBinaryCommand()} mcp add --transport http <name> <url>`)),console.log(ne.gray(` ${getBinaryCommand()} mcp add --transport stdio <name> -- <command>`)),void console.log(ne.gray("\nDocs: https://commandcode.ai/docs/mcp"));console.log(ne.hex("#E4CCFF").bold("\nMCP Servers\n"));const t=Math.max(4,...e.map(e=>e.name.length)),n=5,r=7;console.log(ne.dim(` ${"NAME".padEnd(t)} ${"TYPE".padEnd(n)} ${"SCOPE".padEnd(r)} AUTH STATUS`));for(const o of e){const e=o.config.enabled?ne.green("enabled"):ne.gray("disabled");let s;s=o.config.oauth?await hasTokens(o.name)?ne.green(He.tick):ne.red(He.cross):o.config.headers||o.config.env?ne.green(He.tick):ne.gray("-"),console.log(` ${ne.white(o.name.padEnd(t))} ${ne.cyan(o.config.transport.padEnd(n))} ${ne.gray(o.scope.padEnd(r))} ${s} ${e}`)}console.log(ne.dim(`\nTotal: ${e.length} server${1!==e.length?"s":""}\n`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function getMcpCommand(){const e=new Ue("get");return e.description("Show details for an MCP server").argument("<name>","Server name").action(async e=>{try{const t=await getMcpServer({name:e});t||(console.error(ne.red(`Error: MCP server '${e}' not found`)),process.exit(1));const{config:n,scope:r}=t;if(console.log(ne.hex("#E4CCFF").bold(`\nMCP Server: ${e}\n`)),console.log(` ${ne.dim("Scope:")} ${r}`),console.log(` ${ne.dim("Transport:")} ${n.transport}`),console.log(` ${ne.dim("Status:")} ${n.enabled?ne.green("enabled"):ne.gray("disabled")}`),"http"===n.transport){if(console.log(` ${ne.dim("URL:")} ${n.url}`),n.headers&&Object.keys(n.headers).length>0){console.log(` ${ne.dim("Headers:")}`);for(const[e,t]of Object.entries(n.headers)){const n=e.toLowerCase().includes("auth")||e.toLowerCase().includes("token")||e.toLowerCase().includes("key")?"***":t;console.log(` ${e}: ${n}`)}}}else console.log(` ${ne.dim("Command:")} ${n.command}`),n.args&&n.args.length>0&&console.log(` ${ne.dim("Args:")} ${n.args.join(" ")}`);if(n.env&&Object.keys(n.env).length>0){console.log(` ${ne.dim("Environment:")}`);for(const[e,t]of Object.entries(n.env)){const n=e.toLowerCase().includes("key")||e.toLowerCase().includes("secret")||e.toLowerCase().includes("token")||e.toLowerCase().includes("password")?"***":t;console.log(` ${e}=${n}`)}}console.log("")}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function removeMcpCommand(){const e=new Ue("remove");return e.description("Remove an MCP server").argument("<name>","Server name").addOption(new Be("-s, --scope <scope>","Scope to remove from (auto-detects if not specified)").choices(["local","project","user"])).action(async(e,t)=>{try{const n=await getMcpServer({name:e});n||(console.error(ne.red(`Error: MCP server '${e}' not found`)),process.exit(1));const r=t.scope||n.scope;t.scope&&t.scope!==n.scope&&(console.error(ne.red(`Error: Server '${e}' is defined in '${n.scope}' scope, not '${t.scope}'`)),process.exit(1)),await removeMcpServer({name:e,scope:r})||(console.error(ne.red(`Error: Failed to remove server '${e}'`)),process.exit(1));const o="user"===r?"global":"project"===r?"project":"local";console.log(ne.green(`✓ Removed MCP server '${e}' from ${o} config`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function addJsonMcpCommand(){const e=new Ue("add-json");return e.description("Add an MCP server from JSON configuration").argument("<name>","Server name (unique identifier)").argument("<json>","Server configuration as JSON string").addOption(new Be("-s, --scope <scope>","Configuration scope").choices(["local","project","user"]).default("local")).option("--client-secret <secret>","OAuth client secret (injected into oauth config)").action(async(e,t,n)=>{const r=getInvokedCommandName();try{let o,s;/^[a-zA-Z0-9][a-zA-Z0-9_-]*$/.test(e)&&!e.includes("__")||(console.error(ne.red(`Error: Invalid server name '${e}'`)),console.error(ne.gray("Names must start with a letter or number, contain only letters, numbers, hyphens, and single underscores")),process.exit(1));try{o=JSON.parse(t)}catch{console.error(ne.red("Error: Invalid JSON")),console.error(ne.gray("Make sure to quote the JSON string properly")),console.error(ne.gray(`Example: ${r} mcp add-json github '{"type":"stdio","command":"npx"}'`)),process.exit(1)}o?.oauth?.callbackPort&&(s=o.oauth.callbackPort,delete o.oauth.callbackPort),n.clientSecret&&o?.oauth&&(o.oauth.clientSecret=n.clientSecret);const a=Nn.safeParse(o);if(!a.success){console.error(ne.red("Error: Invalid server configuration"));for(const e of a.error.issues)console.error(ne.gray(` ${e.path.join(".")}: ${e.message}`));process.exit(1)}const i=a.data;let l=!1;if("http"!==i.transport||i.url||(console.error(ne.red("Error: URL is required for http type")),process.exit(1)),"stdio"!==i.transport||i.command||(console.error(ne.red("Error: Command is required for stdio type")),process.exit(1)),await addMcpServer({name:e,serverConfig:i,scope:n.scope}),i.oauth){console.log(ne.cyan("Starting OAuth authentication...")),console.log(ne.gray("A browser window will open for authentication.\n"));const t={authorizationUrl:i.oauth.authorizationUrl,tokenUrl:i.oauth.tokenUrl,clientId:i.oauth.clientId,clientSecret:i.oauth.clientSecret,scopes:i.oauth.scopes},n=await performOAuthFlow(e,i.url??"",t,{...s&&{port:s},onStatus:__name(e=>{console.log(ne.gray(` ${e}`))},"onStatus")});n.success?console.log(ne.green(`\n✓ Successfully authenticated with '${e}'`)):(l=!0,console.error(ne.yellow(`\nWarning: Authentication failed: ${n.error}`)),console.error(ne.gray(`You can retry with: ${r} mcp auth ${e}`)),console.error(ne.gray("Or authenticate via the /mcp menu in a session")))}const u="user"===n.scope?"global":"project"===n.scope?"project":"local";if(l?console.log(ne.yellow(`✓ Added MCP server '${e}' to ${u} config (authentication pending)`)):console.log(ne.green(`✓ Added MCP server '${e}' to ${u} config`)),"http"===i.transport)console.log(ne.gray(` URL: ${i.url}`));else{const e=[i.command,...i.args||[]].join(" ");console.log(ne.gray(` Command: ${e}`))}console.log(""),console.log(ne.cyan("Next steps:")),console.log(ne.gray(`Start ${r} and run /mcp to manage configured MCP servers.`))}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function authMcpCommand(){const e=new Ue("auth");return e.description("Manage OAuth authentication for MCP servers").argument("[server]","Server name to authenticate").option("--status","Check authentication status").option("--clear","Clear stored authentication").option("--list","List servers with stored authentication").action(async(e,t)=>{const n=getInvokedCommandName();try{if(t.list){const e=await listServersWithTokens();if(0===e.length)return void console.log(ne.yellow("No servers with stored authentication."));console.log(ne.hex("#E4CCFF").bold("\nAuthenticated MCP Servers\n"));for(const t of e){const e=await getTokens(t),n=!e||isTokenExpired(e)?ne.yellow("expired"):ne.green("valid");console.log(` ${t}: ${n}`)}return void console.log("")}if(e||(console.error(ne.red("Error: Server name is required")),console.error(ne.gray(`Usage: ${n} mcp auth <server>`)),console.error(ne.gray(` ${n} mcp auth --list`)),process.exit(1)),t.status){if(!await hasTokens(e))return void console.log(ne.yellow(`No authentication stored for '${e}'`));const t=await getTokens(e);if(!t)return void console.log(ne.yellow(`No authentication stored for '${e}'`));if(isTokenExpired(t))console.log(ne.yellow(`Authentication for '${e}' has expired`)),t.refreshToken&&console.log(ne.gray(" A refresh token is available for re-authentication"));else{if(console.log(ne.green(`Authentication for '${e}' is valid`)),t.expiresAt){const e=Math.round((t.expiresAt-Date.now())/1e3/60);console.log(ne.gray(` Expires in ${e} minutes`))}t.scope&&console.log(ne.gray(` Scopes: ${t.scope}`))}return}if(t.clear)return void(await deleteTokens(e)?console.log(ne.green(`✓ Cleared authentication for '${e}'`)):console.log(ne.yellow(`No authentication stored for '${e}'`)));const r=await getMcpServer({name:e});r||(console.error(ne.red(`Error: MCP server '${e}' not found`)),console.error(ne.gray(`Use "${n} mcp list" to see configured servers`)),process.exit(1)),console.log(ne.cyan(`Authenticating with '${e}'...`)),console.log(ne.gray("A browser window will open for authentication.\n"));const o=__name(e=>{console.log(ne.gray(` ${e}`))},"onStatus");let s;if(r.config.oauth){const t={authorizationUrl:r.config.oauth.authorizationUrl,tokenUrl:r.config.oauth.tokenUrl,clientId:r.config.oauth.clientId,clientSecret:r.config.oauth.clientSecret,scopes:r.config.oauth.scopes};s=await performOAuthFlow(e,r.config.url??"",t,{onStatus:o})}else"http"===r.config.transport&&r.config.url||(console.error(ne.red("Error: Discovery-based auth requires an http server with a url")),process.exit(1)),s=await discoverAndAuthenticate({serverName:e,serverUrl:r.config.url,onStatus:o});if(s.success)return console.log(ne.green(`\n✓ Successfully authenticated with '${e}'`)),void console.log(ne.gray("Restart the session to connect with the authenticated server."));console.error(ne.red(`\nError: Authentication failed: ${s.error}`)),console.log(ne.gray(`Try again with "${n} mcp auth ${e}"`)),process.exit(1)}catch(e){console.error(ne.red(`Error: ${e instanceof Error?e.message:String(e)}`)),process.exit(1)}}),e}function createMcpCommand(){const e=new Ue("mcp");return e.description("Manage MCP (Model Context Protocol) servers").allowUnknownOption().allowExcessArguments(),e.addCommand(addMcpCommand()),e.addCommand(listMcpCommand()),e.addCommand(getMcpCommand()),e.addCommand(removeMcpCommand()),e.addCommand(addJsonMcpCommand()),e.addCommand(authMcpCommand()),e}async function runCommand(e){return new Promise((t,n)=>{const r=De(e.cmd,e.args,{stdio:["ignore","pipe","pipe"],env:process.env});let o="",s="";r.stdout.on("data",e=>{o+=String(e)}),r.stderr.on("data",e=>{s+=String(e)}),r.on("error",n),r.on("close",r=>{0!==r?n(new Error(`${e.cmd} ${e.args.join(" ")} failed${s?`: ${s.trim()}`:""}`)):t({stdout:o,stderr:s})})})}async function detectDefaultBranch(e){try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.repoDir,"symbolic-ref","refs/remotes/origin/HEAD","--short"]}),n=t.trim().replace(/^origin\//,"");if(n)return n}catch{}for(const t of["main","master"])try{return await runCommand({cmd:"git",args:["-C",e.repoDir,"rev-parse","--verify",t]}),t}catch{}try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.repoDir,"rev-parse","--abbrev-ref","HEAD"]});return t.trim()}catch{return"main"}}async function findGitRoot4(e){try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.dir,"rev-parse","--show-toplevel"]});return t.trim()}catch{return null}}async function countLearnings(e){try{return(await F.readFile(e,"utf-8")).split("\n").filter(e=>e.trim().startsWith("- ")&&e.includes("Confidence:")).length}catch{return 0}}async function resolveSource(t){const n=t.source.trim(),r=e.resolve(n);try{if(!(await F.stat(r)).isDirectory())throw new Error(`Source must be a repository directory: ${n}`);return{type:"local",displayName:r,repoDir:r,repoName:e.basename(r),github:await inferGitHubRepo({repoDir:r})}}catch(e){if(e instanceof Error&&e.message.startsWith("Source must be"))throw e}const o=parseGitHubSource({source:n});if(!o){const e=n.startsWith("git@")?" SSH URLs are not supported. Use HTTPS or owner/repo instead.":"";throw new Error(`Unsupported source '${n}'.${e} Use a local path, GitHub HTTPS URL, or owner/repo.`)}const s=String(t.maxCommits??200),a=`https://github.com/${o.owner}/${o.repo}.git`,i=await F.mkdtemp(e.join(_.tmpdir(),"taste-learn-"));try{await runCommand({cmd:"git",args:["clone","--depth",s,"--single-branch",...t.branch?["--branch",t.branch]:[],"--",a,i]})}catch{throw await F.rm(i,{recursive:!0,force:!0}).catch(()=>{}),new Error(`Repository not found: ${o.owner}/${o.repo}. Check the owner and repo name, or verify it's a public repository.`)}return{type:"github",displayName:`${o.owner}/${o.repo}`,repoDir:i,repoName:o.repo,github:o,cleanup:__name(async()=>{await F.rm(i,{recursive:!0,force:!0})},"cleanup")}}function getTastePathForDir(t){return e.join(t.projectRoot,".commandcode","taste")}async function resolveDisplayName(t){if(t.startsWith("/")||t.startsWith(".")){const n=e.resolve(t),r=await findGitRoot4({dir:n});return r?e.basename(r):e.basename(n)}return t}function parseGitHubSource(e){const t=e.source.match(/^([\w.-]+)\/([\w.-]+)$/);if(t)return{owner:t[1],repo:t[2].replace(/\.git$/,"")};try{const t=new URL(e.source);if("github.com"!==t.hostname)return null;const n=t.pathname.split("/").filter(Boolean);return n.length<2?null:{owner:n[0],repo:n[1].replace(/\.git$/,"")}}catch{return null}}async function inferGitHubRepo(e){try{const{stdout:t}=await runCommand({cmd:"git",args:["-C",e.repoDir,"remote","get-url","origin"]});return parseGitHubSource({source:t.trim()})??void 0}catch{return}}async function feedToLearningAgent(e){const t=await getConfiguredProvider(),n=await getOAuthCredentials({provider:t});if(await isOAuthEnforced()&&!n?.token)throw new Error(`Authentication required. Run: ${getBinaryCommand()} login`);n?.token&&validateOAuthToken({token:n.token,provider:t});const r=getApiBaseUrl(),o=new Nu({baseUrl:r}),s=new ay({request:o,sessionId:crypto.randomUUID(),projectRoot:e.outputDir}),a=[{role:"user",content:e.compiledContext}];await s.checkAndProcess({messages:a})}function logLearnSummary(e){const{summary:t}=e;console.log(ne.cyan("\n ─── Results ───\n")),console.log(` Source: ${t.sourceName}`),console.log(` Signals: ${t.signalCount} extracted`),console.log(` Context: ${t.contextLength} chars compiled`),console.log(` Taste dir: ${t.tasteDir}`),console.log("")}function shouldContinueExtraction(e){return!(e.offset>=e.commitsLength||e.signalCount>=e.signalCap||e.commitsWithDiffs>=50)}async function extractAllSignals(e){e.onProgress?.("Collecting commits");const t=await collectCommits(e);if(0===t.length)return e.onProgress?.("No commits found"),{signals:[],commitCount:0};e.onProgress?.(`Found ${t.length} commits to analyze`);const n=e.maxSignals??50,r=[];let o=0;for(let s=0;shouldContinueExtraction({offset:s,commitsLength:t.length,signalCount:r.length,signalCap:n,commitsWithDiffs:o});s+=10){const a=t.slice(s,s+10);if(0===a.length)break;const i=await runBounded(5,a,async t=>({commit:t,subs:await getSubstitutions(e.repoDir,t.hash)}));for(const{commit:e,subs:t}of i){if(0===t.length)continue;o++;const s=groupCrossFilePatterns(t);for(const t of s.slice(0,5)){if(t.removed.length>200||t.added.length>200)continue;const o=[`Commit: ${e.subject}`];o.push(`File: ${t.file}`),t.context&&o.push(`In: ${t.context}`);const s=buildSnippet(t.codeBefore,t.added,t.codeAfter);if(s&&o.push(s),r.push({text:`${truncate3(t.removed,60)} → ${truncate3(t.added,60)}`,evidence:o,category:inferCategory(t.removed,t.added)}),r.length>=n)break}if(r.length>=n)break}}return e.onProgress?.(`Extracted ${r.length} diff signals from ${o} commits`),{signals:r,commitCount:t.length}}async function collectCommits(e){const t=buildAuthorPattern(e.author,e.authorAliases),n=t?.includes("|")??!1,r=t?[...n?["--extended-regexp"]:[],"--author",t,"--regexp-ignore-case"]:[],o=e.branch?[e.branch]:[],s=e.author?e.maxCommits:3*e.maxCommits,{stdout:a}=await runCommand({cmd:"git",args:["-C",e.repoDir,"log",...o,"--no-merges",...r,"--pretty=format:%H%x1f%aI%x1f%aN%x1f%s%x1e","-n",String(s)]});return a.split("").map(e=>e.trim()).filter(Boolean).map(e=>{const[t="",n="",r="",o=""]=e.split("");return{hash:t.trim(),subject:o.trim(),authorDate:n.trim(),authorName:r.trim()}}).filter(e=>!isDependencyBot(e.authorName,e.subject)).slice(0,e.maxCommits)}async function getSubstitutions(e,t){try{const{stdout:n}=await runCommand({cmd:"git",args:["-C",e,"show","--format=","-U3","--diff-algorithm=histogram","-b","--ignore-blank-lines","-M",t]}),r=[];let o="",s="",a=[],i=[],l=[];const u=2;let d=null;const m=__name(()=>{d&&(r.push({removed:d.removed,added:d.added,file:d.file,context:d.context,codeBefore:d.codeBefore.length>0?d.codeBefore:void 0,codeAfter:d.codeAfter.length>0?d.codeAfter:void 0}),d=null)},"commitPending"),g=__name(()=>{if(a.length>0&&i.length>0){const e=a.join("\n").trim(),t=i.join("\n").trim();e===t||isVersionBump(e,t)||isTrivialChange(e,t)||(m(),d={removed:e,added:t,file:o,context:s||void 0,codeBefore:[...l],codeAfter:[]})}a=[],i=[]},"flush");for(const e of n.split("\n")){if(e.startsWith("diff --git")){g(),m(),o=e.match(/b\/(.+)$/)?.[1]??"",s="",l=[],isNoiseFile(o)&&(o="");continue}if(e.startsWith("@@")){g(),m(),s=e.match(/@@ .+ @@\s*(.+)/)?.[1]?.trim()??"",l=[];continue}if(!o)continue;if(e.startsWith("-")&&!e.startsWith("---")){i.length>0&&g(),a.push(e.slice(1));continue}if(e.startsWith("+")&&!e.startsWith("+++")){i.push(e.slice(1));continue}g();const t=e.startsWith(" ")?e.slice(1):e;if(!t.trim())continue;const n=d;null!==n&&n.codeAfter.length<u&&(n.codeAfter.push(t),n.codeAfter.length>=u&&m()),l.push(t),l.length>u&&l.shift()}return g(),m(),r}catch(e){return process.env.DEBUG&&console.error(`[taste-learn] getSubstitutions failed for ${t}:`,e instanceof Error?e.message:e),[]}}function groupCrossFilePatterns(e){const t=new Map;for(const n of e){const e=`${n.removed.trim()}\0${n.added.trim()}`,r=t.get(e)??[];r.push(n),t.set(e,r)}const n=[];for(const[,e]of t)if(e.length>=2){const t=e.map(e=>e.file).join(", ");n.push({...e[0],file:t,context:`Same change across ${e.length} files`})}else n.push(e[0]);return n}pn(),pn(),wn(),__name(addMcpCommand,"addMcpCommand"),__name(looksLikeHttpUrl2,"looksLikeHttpUrl"),__name(collectKeyValue,"collectKeyValue"),__name(collectHeaders,"collectHeaders"),pn(),wn(),__name(listMcpCommand,"listMcpCommand"),pn(),__name(getMcpCommand,"getMcpCommand"),pn(),__name(removeMcpCommand,"removeMcpCommand"),pn(),__name(addJsonMcpCommand,"addJsonMcpCommand"),pn(),__name(authMcpCommand,"authMcpCommand"),__name(createMcpCommand,"createMcpCommand"),pn(),wn(),pn(),pn(),wn(),pn(),__name(runCommand,"runCommand"),pn(),__name(detectDefaultBranch,"detectDefaultBranch"),__name(findGitRoot4,"findGitRoot"),__name(countLearnings,"countLearnings"),__name(resolveSource,"resolveSource"),__name(getTastePathForDir,"getTastePathForDir"),__name(resolveDisplayName,"resolveDisplayName"),__name(parseGitHubSource,"parseGitHubSource"),__name(inferGitHubRepo,"inferGitHubRepo"),pn(),wn(),__name(feedToLearningAgent,"feedToLearningAgent"),__name(logLearnSummary,"logLearnSummary"),pn(),pn(),__name(shouldContinueExtraction,"shouldContinueExtraction"),__name(extractAllSignals,"extractAllSignals"),__name(collectCommits,"collectCommits"),__name(getSubstitutions,"getSubstitutions"),__name(groupCrossFilePatterns,"groupCrossFilePatterns");var pC=5,gC=3;function buildSnippet(e,t,n){const r=e??[],o=n??[],s=t.split("\n").map(e=>e.trimEnd());if(0===s.length&&0===r.length&&0===o.length)return;let a,i=0;s.length>gC?(a=s.slice(0,gC-1),i=s.length-a.length):a=s;const l=a.length+(i>0?1:0),u=Math.max(0,pC-l),d=Math.min(r.length,Math.ceil(u/2)),m=Math.min(o.length,u-d),g=[];for(const e of r.slice(-d))g.push(` ${e.trimEnd()}`);for(const e of a)g.push(`→ ${e}`);i>0&&g.push(`→ ... (+${i} more changed ${1===i?"line":"lines"})`);for(const e of o.slice(0,m))g.push(` ${e.trimEnd()}`);return 0!==g.length?`Snippet:\n${g.join("\n")}`:void 0}__name(buildSnippet,"buildSnippet");var hC=[/package-lock\.json$/,/pnpm-lock\.yaml$/,/yarn\.lock$/,/CHANGELOG\.(md|yml|yaml)$/i,/\.versionbot\//,/\.min\.(js|css)$/,/dist\//,/\.map$/];function isNoiseFile(e){return hC.some(t=>t.test(e))}function isTrivialChange(e,t){return e.trim().length<3&&t.trim().length<3}function isVersionBump(e,t){const n=/^"?version"?\s*:\s*"?\d+\.\d+/;return n.test(e.trim())&&n.test(t.trim())}function inferCategory(e,t){const n=`${e} ${t}`.toLowerCase();return/import|require|from\s+['"]/.test(n)?"imports":/function|=>|async|return/.test(n)?"code-style":/class|interface|type\s+/.test(n)?"types":/test|describe|it\(|expect/.test(n)?"testing":/console|log|debug|error/.test(n)?"logging":/try|catch|throw|Error/.test(n)?"error-handling":"code-style"}function buildAuthorPattern(e,t){return t&&t.length>0?t.map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"):e??void 0}__name(isNoiseFile,"isNoiseFile"),__name(isTrivialChange,"isTrivialChange"),__name(isVersionBump,"isVersionBump"),__name(inferCategory,"inferCategory"),__name(buildAuthorPattern,"buildAuthorPattern");var fC=new Set(["renovate[bot]","renovate","dependabot[bot]","dependabot","greenkeeper[bot]","snyk-bot"]),yC=[/^update .+ digest to /i,/^update .+ action to /i,/^update .+ to v?\d/i,/^update lock file maintenance/i,/^update dependency .+ to /i,/^chore\(deps\)/i,/^bump .+ from .+ to /i,/^lock file maintenance/i];function isDependencyBot(e,t){const n=e.toLowerCase();return!!fC.has(n)||!(!n.includes("[bot]")||!yC.some(e=>e.test(t)))}function truncate3(e,t){const n=e.replace(/\n/g," ").trim();return n.length<=t?n:`${n.slice(0,t-3)}...`}async function runBounded(e,t,n){const r=[];let o=0;const s=__name(async()=>{for(;o<t.length;){const e=o++;r[e]=await n(t[e])}},"next");return await Promise.all(Array.from({length:Math.min(e,t.length)},()=>s())),r}function compileTasteContext(e){const{signals:t,repoName:n,author:r,commitCount:o}=e,s=r?`Target author: ${r}\n`:"",a=[];if(a.push(`# Dynamic Taste Analysis — Code Change Patterns\n\nRepository: ${n}\n${s}Commits analyzed: ${o}\nSignals extracted: ${t.length}\n\nThis analysis was generated by examining actual code changes (diffs, substitutions, refactoring patterns) rather than static file contents. Every signal below comes from real commits.`),t.length>0){const e=["## Correction Diffs — What Wrong→Right Looks Like"];for(const n of t.slice(0,50)){e.push(`\n**${n.text}**`);for(const t of n.evidence)e.push(`- ${t}`)}a.push(e.join("\n"))}const i=r?` for ${r}`:"";return a.push(`## Instructions for Taste Learning\n\nYou are analyzing code change patterns from a real repository${i}. Based on the correction diffs above, generate deeply personal and opinionated coding taste.\n\n**Critical guidelines:**\n\n1. **Be specific, not generic.** Instead of "Use TypeScript", write "Use branded types for IDs and explicit return types on every function. Prefer \`readonly\` arrays and objects by default."\n\n2. **Extract the WHY from patterns.** If you see verbose names being replaced with concise ones, don't just say "use short names" — say "Prefer concise variable names that derive meaning from context rather than encoding type information."\n\n3. **Look for recurring themes.** If multiple substitutions show the same pattern (e.g., nested if→guard clauses), that's a strong taste signal worth capturing.\n\n4. **Make it actionable.** Every taste entry should be specific enough that another developer could follow it and produce code that looks like it belongs in this repository.\n\n5. **Prioritize quality corrections** — these are the purest taste signals (wrong→right pairs with explicit WHY context from commit messages).\n\n6. **Capture anti-patterns too.** If you see code being removed in refactors, note what the developer avoids: "Never nest deeper than 2 levels — flatten with early returns."\n\n7. **Don't repeat generic tool preferences** like "Use pnpm" or "Use TypeScript" unless the substitutions show something specific about HOW they use those tools.\n\n8. **Prioritize opinionated preferences.** The goal is taste that makes someone's code distinctly theirs — not industry best practices.\n\nWrite the taste entries to the taste.md file using the standard format with confidence scores.`),a.join("\n\n")}async function runLearnPipeline(t){const n=__name(()=>({outputDir:"",tasteDir:"",sourceName:t.source,signalCount:0,contextLength:0}),"abortedResult");if(t.needsAuth){id.addEvent({type:"auth_required",step:"auth",message:"Login to synthesize your taste profile",label:"Signing in"});try{await id.waitForAuth()}catch{return id.emitStepStart({step:"complete",label:"Login skipped",message:"Login skipped",learningCount:0,storage:""}),id.markLearningComplete(),{summary:n()}}}t.isLocalSource||id.emitStepStart({step:"cloning",label:"Cloning repository",message:`Cloning ${t.source}`});const r=await resolveSource({source:t.source,maxCommits:t.maxCommits});if(t.signal.aborted)return{summary:n(),resolved:r};const o="github"===r.type,s=r.repoName,a=await findGitRoot4({dir:r.repoDir});if(!a)throw new Error(`Not a git repository: ${r.repoDir}. Run inside a git repo or pass the path: npx taste learn /path/to/repo`);const i=o?e.resolve(process.cwd(),s):a;o&&id.emitStepStart({step:"collecting",label:"Collecting commits",message:`Cloned ${r.displayName} → ${i}`});const l=t.branch??await detectDefaultBranch({repoDir:a});await F.mkdir(i,{recursive:!0}),id.emitStepStart({step:"collecting",label:"Collecting commits",message:`Fetching up to ${t.maxCommits} commits from ${l}`});const{signals:u,commitCount:d}=await extractAllSignals({repoDir:a,maxCommits:t.maxCommits,maxSignals:t.maxSignals,branch:l,onProgress:__name(e=>{id.emitProgress({step:"extracting",message:e})},"onProgress")});if(t.signal.aborted)return{summary:n(),resolved:r};if(0===u.length)throw new Error("No signals extracted. Check the repository has commit history.");id.emitStepStart({step:"extracting",label:"Extracting taste signals",message:`${u.length} before/after code changes extracted`}),id.emitStepStart({step:"compiling",label:"Compiling taste context",message:`Formatting ${u.length} signals for the learning agent`});const m=compileTasteContext({signals:u,repoName:s,commitCount:d});if(t.signal.aborted)return{summary:n(),resolved:r};id.emitStepStart({step:"learning",label:"Learning taste",message:"Interpreting code change patterns with AI"}),await feedToLearningAgent({compiledContext:m,outputDir:i});const g=getTastePathForDir({projectRoot:i}),h=e.join(g,"taste.md"),f=await countLearnings(h);return id.emitStepStart({step:"complete",label:"Taste learned",message:"Taste learned",learningCount:f,storage:h}),id.markLearningComplete(),{summary:{outputDir:i,tasteDir:g,sourceName:r.displayName,signalCount:u.length,contextLength:m.length},resolved:r}}__name(isDependencyBot,"isDependencyBot"),__name(truncate3,"truncate"),__name(runBounded,"runBounded"),pn(),__name(compileTasteContext,"compileTasteContext"),__name(runLearnPipeline,"runLearnPipeline"),pn(),pn(),pn();var wC=[/MallocStackLogging: can't turn off malloc stack logging because it was not enabled/i];function shouldIgnoreChunk(e){return wC.some(t=>t.test(e))}function chunkToString(e){return"string"==typeof e?e:Buffer.isBuffer(e)?e.toString("utf-8"):""}async function withFilteredStderrNoise(e){const t=process.stderr.write.bind(process.stderr);process.stderr.write=(e,...n)=>{const r=chunkToString(e);return!(!r||!shouldIgnoreChunk(r))||("function"==typeof n[0]?t(e,n[0]):t(e,n[0],n[1]))};try{return await e()}finally{process.stderr.write=t}}function toRepoLearnErrorMessage(e){return e instanceof Error?e.message:String(e)}function isRepoLearnMetricLikeText(e){const t=e.trim().toLowerCase();return/^\d+\s/.test(t)||/^saved\s/.test(t)||/^output\s/.test(t)||/^target\s/.test(t)||/\bcandidates\b/.test(t)||/\bevidence records\b/.test(t)||/\bhistory and review signals\b/.test(t)}function truncateRepoLearnPanelText(e,t=12){return truncateString({text:e,maxChars:Math.min(96,getEffectiveWidth({padding:t}))})}__name(shouldIgnoreChunk,"shouldIgnoreChunk"),__name(chunkToString,"chunkToString"),__name(withFilteredStderrNoise,"withFilteredStderrNoise"),pn(),__name(toRepoLearnErrorMessage,"toRepoLearnErrorMessage"),__name(isRepoLearnMetricLikeText,"isRepoLearnMetricLikeText"),__name(truncateRepoLearnPanelText,"truncateRepoLearnPanelText"),pn(),pn();var SC=[{id:"collecting",label:"Collecting commits from repository"},{id:"extracting",label:"Extracting taste signals from diffs"},{id:"compiling",label:"Compiling taste context"},{id:"learning",label:"Learning taste from change patterns"},{id:"complete",label:"Taste learned"}],EC=[{id:"cloning",label:"Cloning repository"},...SC],bC=[He.bullet,He.squareSmallFilled,He.lozenge,He.star,He.triangleRight,He.triangleUp];function createInitialRepoLearnSteps(e){return(e??SC).map(e=>({...e,status:"pending"}))}__name(createInitialRepoLearnSteps,"createInitialRepoLearnSteps"),pn();var kC={learningCount:0,storage:"",topLearnings:[]};function getStepStatus(e,t){return e<t?"complete":e===t?"active":"pending"}function deriveStepStates(e,t){return e.map((e,n)=>({...e,status:getStepStatus(n,t)}))}function parseSummaryMetric(e){if(e.startsWith("Maintainer: "))return{maintainerLabel:e.replace(/^Maintainer:\s+/,"")};const t=e.match(/^(\d+)\s+maintainer-specific preferences$/);if(t)return{maintainerCount:Number(t[1])};const n=e.match(/^(\d+)\s+repository conventions$/);return n?{repoCount:Number(n[1])}:null}__name(getStepStatus,"getStepStatus"),__name(deriveStepStates,"deriveStepStates"),__name(parseSummaryMetric,"parseSummaryMetric");var CC=__name(e=>e.map(e=>({...e,status:"complete"})),"markAllStepsComplete"),vC=__name(e=>e??kC,"withBase");function useRepoLearnState(e){const t=e??SC,[n,r]=de(()=>createInitialRepoLearnSteps(t)),[o,s]=de(""),[a,i]=de([]),[l,u]=de(null),[d,m]=de(!1),[g,h]=de(!1),[f,y]=de(null),[w,S]=de(0),E=me(null),[k,C]=de(null),v=he(()=>{E.current=Date.now()},[]);return pe(()=>{const e=__name(()=>{r(createInitialRepoLearnSteps(t)),s(""),i([]),u(null),h(!1),y(null),S(0),E.current=null,C(null),m(!1)},"handleReset"),n=__name(e=>{if("error"===e.type)return y(e.message),h(!0),r(CC),void s("");if("auth_required"!==e.type){if("step_start"===e.type&&e.step){const n=t.findIndex(t=>t.id===e.step);return n>=0&&r(deriveStepStates(t,n)),s(e.message||e.label||""),void("complete"===e.step&&u(t=>{const n=vC(t);return{...n,learningCount:e.learningCount??n.learningCount,storage:e.storage??n.storage}}))}"progress"!==e.type||"complete"!==e.step?"progress"!==e.type?"insight"===e.type&&(isRepoLearnMetricLikeText(e.message)||("complete"!==e.step?(S(e=>e+1),i(t=>[...t,e.message].slice(-4))):u(t=>{const n=vC(t);return{...n,topLearnings:[...n.topLearnings,e.message].slice(0,3)}}))):s(e.message):u(t=>{const n=vC(t),r=parseSummaryMetric(e.message);return r?{...n,...r}:n})}else m(!0)},"handleEvent"),o=__name(()=>{h(e=>e||(r(CC),!0)),s(""),E.current&&C(Math.round((Date.now()-E.current)/1e3))},"handleComplete");return id.on("reset",e),id.on("new-event",n),id.on("learning-complete",o),()=>{id.off("reset",e),id.off("new-event",n),id.off("learning-complete",o)}},[t]),{steps:n,currentMessage:o,insights:a,insightCount:w,summary:l,done:g,error:f,showLogin:d,setShowLogin:m,elapsedSeconds:k,markStarted:v}}__name(useRepoLearnState,"useRepoLearnState"),pn(),pn();var TC=__name(({isComplete:e,hasError:t})=>ce.createElement(ye,{flexDirection:"column",marginTop:1,marginBottom:0},ce.createElement(ik,null),ce.createElement(ye,{marginTop:0},ce.createElement(we,{color:Xr.DIM},ck),ce.createElement(ye,{marginLeft:2},t?ce.createElement(we,{color:Xr.DIM},"learning interrupted"):e?ce.createElement(we,{color:eo.TEXT},"learned your coding taste"):ce.createElement(uk,null)))),"RepoLearnTastePill");pn();var xC=__name(({status:e})=>"active"===e?ce.createElement(ye,null,ce.createElement(we,{color:Xr.YELLOW},ce.createElement(ut,{type:"dots"})),ce.createElement(we,null," ")):"complete"===e?ce.createElement(we,{color:oo.BG},He.square," "):ce.createElement(we,{color:Xr.DIM},He.circle," "),"StepStatusIndicator"),PC=__name(({steps:e,currentMessage:t})=>ce.createElement(ye,{flexDirection:"column",marginTop:1},e.map(e=>{const n="active"===e.status;return ce.createElement(ye,{key:e.id,flexDirection:"column",marginBottom:0,marginLeft:3},ce.createElement(ye,null,ce.createElement(ye,{marginRight:1},ce.createElement(xC,{status:e.status})),ce.createElement(we,{bold:n,color:"complete"===e.status?Xr.WHITE:n?Xr.YELLOW:Xr.DIM},e.label)),n&&t?ce.createElement(ye,{marginLeft:3},ce.createElement(we,{color:Xr.DIM},truncateRepoLearnPanelText(t))):null)})),"RepoLearnStepList");pn();var AC=__name(({insights:e,insightCount:t})=>0===e.length?null:ce.createElement(ye,{flexDirection:"column",marginTop:1,marginLeft:4},ce.createElement(we,{color:Xr.CYAN},t>0?`Recent signals · ${t} ${1===t?"preference":"preferences"} learned`:"Recent signals"),e.map((e,t)=>ce.createElement(we,{key:`${t}-${e}`,color:Xr.DIM},bC[t%bC.length]," ",truncateRepoLearnPanelText(e,14)))),"RepoLearnRollingInsights");pn();var IC=__name(({message:e})=>ce.createElement(ye,{flexDirection:"column",borderStyle:"single",borderColor:Xr.RED,paddingX:2,paddingY:1,marginTop:1},ce.createElement(we,{color:Xr.RED,bold:!0},"Oops, something went wrong:"),ce.createElement(ye,{marginTop:1},ce.createElement(we,null,e))),"RepoLearnErrorPanel");pn();var MC=__name(({summary:e,elapsedSeconds:n})=>{if(!e)return null;const r=t.relative(process.cwd(),e.storage),o=e.learningCount>0;return ce.createElement(ye,{flexDirection:"column",marginLeft:3},ce.createElement(ye,{marginBottom:1,flexDirection:"row"},ce.createElement(we,{color:Xr.DIM},ck),ce.createElement(ye,{marginLeft:2},ce.createElement(we,{color:eo.TEXT},o?`Learned ${e.learningCount} ${1===e.learningCount?"preference":"preferences"}`:"Taste profile initialized",n?` in ${n} ${1===n?"second":"seconds"}`:""))),ce.createElement(ye,{flexDirection:"column",marginLeft:1},ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," Taste stored in"," "),ce.createElement(Fo,{url:`file://${e.storage}`,text:r||".commandcode/taste/taste.md",color:Xr.CYAN})),ce.createElement(ye,null,ce.createElement(we,{color:Xr.DIM},He.pointerSmall," Share your coding taste:"," ",ce.createElement(we,{color:Xr.CYAN},"npx taste push --all")))),ce.createElement(ye,{marginTop:1,marginLeft:1},ce.createElement(we,{color:Xr.DIM},o?"Command Code automatically uses & updates taste files as you code.":"Command Code will learn your preferences as you code.")))},"RepoLearnCompletionSummary");pn();var RC=__name(({done:e,error:t})=>t?ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0},"Press ESC to exit")):e?ce.createElement(ye,{marginTop:1},ce.createElement(we,{bold:!0},"Press ENTER to continue")):ce.createElement(ye,{marginTop:1},ce.createElement(we,{color:Xr.DIM},"ESC to cancel")),"RepoLearnFooter");pn();var _C=__name(({text:e,repoName:t})=>{const n=useTerminalWidth(),r=ge(()=>GS(n),[n]);return ce.createElement(ye,{flexDirection:"column"},ce.createElement(ye,{flexDirection:"column",marginBottom:1},ce.createElement(QS,null,r.trimEnd())),e?ce.createElement(we,{color:Xr.WHITE},e):ce.createElement(ce.Fragment,null,ce.createElement(we,{color:Xr.WHITE},"Learning your coding taste from"," ",ce.createElement(we,{bold:!0,color:Xr.CYAN},t??"repository")),ce.createElement(we,{color:Xr.DIM},"This may take a few minutes depending on repository size")))},"RepoLearnHeader");function StatusPanel({error:e,done:t,summary:n,elapsedSeconds:r,insights:o,insightCount:s}){return e?ce.createElement(IC,{message:e}):t?ce.createElement(MC,{summary:n,elapsedSeconds:r}):ce.createElement(AC,{insights:o,insightCount:s})}function RepoLearnProgressApp({runTask:e,onExit:t,stepOrder:n,headerText:r,repoName:o}){const s=useRepoLearnState(n),a=me(!1);return pe(()=>{a.current||(a.current=!0,s.markStarted(),e().catch(()=>{}))},[e,s.markStarted]),Ee((e,n)=>{if(s.showLogin)return;const r=n.escape||""===e,o=n.return||"\n"===e||"\r"===e;r?t({published:!1,cancelled:!0}):(s.done||s.error)&&o&&t({published:!1,cancelled:!!s.error})}),s.showLogin?ce.createElement(ye,{flexDirection:"column"},ce.createElement(_C,{text:r,repoName:o}),ce.createElement(vb,{onComplete:(e,t)=>{s.setShowLogin(!1),e?id.resolveAuth():id.rejectAuth(t)},onCancel:()=>{s.setShowLogin(!1),id.rejectAuth("Login cancelled"),t({published:!1,cancelled:!0})}})):ce.createElement(ye,{flexDirection:"column"},ce.createElement(_C,{text:r,repoName:o}),ce.createElement(TC,{isComplete:s.done&&!s.error,hasError:Boolean(s.error)}),ce.createElement(PC,{steps:s.steps,currentMessage:s.currentMessage}),ce.createElement(StatusPanel,{error:s.error,done:s.done,summary:s.summary,elapsedSeconds:s.elapsedSeconds,insights:s.insights,insightCount:s.insightCount}),ce.createElement(RC,{done:s.done,error:s.error}))}async function runRepoLearnProgress(e){return withFilteredStderrNoise(()=>renderProgressUI(e))}function renderProgressUI(e){return new Promise((t,n)=>{id.reset();const r=new AbortController;let o,s,a=!1,i=!1;const l=__name(async()=>{try{o=await e.runTask(r.signal)}catch(e){r.signal.aborted||(s=e,id.addEvent({type:"error",message:toRepoLearnErrorMessage(e)}),id.markLearningComplete())}},"handleRunTask"),u=__name(({published:e,cancelled:l})=>{i||(i=!0,a=e,r.abort(),d.unmount(),id.reset(),s?n(s):t({result:o,published:a,cancelled:l}))},"handleExit"),d=ke(ce.createElement(RepoLearnProgressApp,{stepOrder:e.stepOrder,headerText:e.headerText,repoName:e.repoName,runTask:l,onExit:u}));d.waitUntilExit().catch(e=>{id.reset(),n(e)})})}__name(StatusPanel,"StatusPanel"),__name(RepoLearnProgressApp,"RepoLearnProgressApp"),__name(runRepoLearnProgress,"runRepoLearnProgress"),__name(renderProgressUI,"renderProgressUI"),wn();var DC=__name(e=>t=>{const n=parseInt(t,10);if(isNaN(n)||n<1)throw new Error(`${e} must be a positive integer`);return n},"parsePositiveInt");function createLearnCommand(){return new Ue("learn").description("Learn coding taste from repository change history").argument("[source]","Local path, GitHub URL, or owner/repo (defaults to current directory)").option("--max-commits <number>","Maximum commits to analyze",DC("--max-commits"),200).addOption(new Be("--max-signals <number>","Maximum diff signals to extract").default(50).argParser(DC("--max-signals")).hideHelp()).option("--branch <name>","Branch to analyze (defaults to main/master)").action(async(e,t)=>{try{await learnTaste({source:e??".",maxCommits:t.maxCommits??200,maxSignals:t.maxSignals??50,branch:t.branch})}catch(e){const t=e instanceof Error?e.message:String(e);console.error(`Error: ${t}`),process.exit(1)}})}async function learnTaste(t){const n=await F.stat(e.resolve(t.source)).then(e=>e.isDirectory()).catch(()=>!1),r=isTTY(),o=await resolveDisplayName(t.source),s=!await getAuthKey();if(s&&!r)return console.log(""),console.log(" Login required to learn taste."),console.log(""),console.log(` Run: ${getBinaryCommand()} login`),console.log(` Then: npx taste learn ${t.source}`),void console.log("");let a;const i=__name(()=>{a?.().finally(()=>process.exit(130))},"sigintHandler");process.once("SIGINT",i);let l=!1;try{const e=__name(async e=>{const{summary:r,resolved:o}=await runLearnPipeline({...t,isLocalSource:n,needsAuth:s,signal:e});return a=o?.cleanup,r},"runTask");if(r){const t=n?void 0:[...EC];({cancelled:l}=await runRepoLearnProgress({runTask:e,repoName:o,stepOrder:t}))}else logLearnSummary({summary:await e((new AbortController).signal)})}finally{process.off("SIGINT",i),a&&await a()}r&&!l||process.exit(0),xy(),await qk({skipOnboarding:!0}),await shutdownAndExit(0)}function getTastePath(t){const{target:n}=t;if("local-project"===n)return e.join(process.cwd(),".commandcode","taste");if("local-global"===n)return e.join(_.homedir(),".commandcode","taste");throw new Error(`Remote storage not yet implemented: ${n}`)}function getRootTasteFile(t){const{target:n}=t;return e.join(getTastePath({target:n}),"taste.md")}function getCategoryPath(t){const{target:n,category:r}=t;return e.join(getTastePath({target:n}),r)}function getCategoryTasteFile(t){const{target:n,category:r}=t;return e.join(getCategoryPath({target:n,category:r}),"taste.md")}__name(createLearnCommand,"createLearnCommand"),__name(learnTaste,"learnTaste"),pn(),wn(),pn(),pn(),wn(),__name(getTastePath,"getTastePath"),__name(getRootTasteFile,"getRootTasteFile"),__name(getCategoryPath,"getCategoryPath"),__name(getCategoryTasteFile,"getCategoryTasteFile"),pn(),pn();var NC=/confidence:/i;function findLookaheadEnd(e,t){const n=e.slice(t),r=n.findIndex(e=>{const t=e.trim();return t.startsWith("#")||t.startsWith("-")||NC.test(t)});if(-1===r)return{endIdx:e.length,inclusive:!1};const o=n[r].trim();return{endIdx:t+r,inclusive:NC.test(o)&&!o.startsWith("#")&&!o.startsWith("-")}}function joinMultiLineLearning(e,t,n){const{endIdx:r,inclusive:o}=findLookaheadEnd(e,t),s=o?r+1:r;return{combined:[n,...e.slice(t,s).map(e=>e.trim()).filter(e=>e.length>0)].join(" "),nextIdx:s}}function processRawLine(e,t){const n=e[t],r=t+1,o=n.trim();if(!o.startsWith("-"))return{entry:{text:n,originalLineNum:r},nextIdx:t+1};if(NC.test(o))return{entry:{text:n,originalLineNum:r},nextIdx:t+1};const{combined:s,nextIdx:a}=joinMultiLineLearning(e,t+1,n);return{entry:{text:s,originalLineNum:r},nextIdx:a}}function preprocessLines(e){const t=[];let n=0;for(;n<e.length;){const{entry:r,nextIdx:o}=processRawLine(e,n);t.push(r),n=o}return t}function validateLearningLine(e){const{line:t,lineNum:n}=e,r=[],o=t.substring(1).trim();if(!NC.test(o))return r.push({line:n,severity:"error",message:'Learning is missing "Confidence:" field',suggestion:'Format: "- Learning text. Confidence: 0.95" (value between 0.0 and 1.0)'}),r;const s=Array.from(o.matchAll(/confidence:\s*(\S+)/gi)),a=s.length>0?s[s.length-1]:null;if(!a)return r.push({line:n,severity:"error",message:"Confidence field is present but has no value",suggestion:'Add a number after "Confidence:" (e.g., Confidence: 0.95)'}),r;const i=a[1],l=parseFloat(i);if(isNaN(l))return r.push({line:n,severity:"error",message:`Confidence value "${i}" is not a valid number`,suggestion:"Use a decimal number between 0.0 and 1.0 (e.g., 0.95)"}),r;(l<0||l>1)&&r.push({line:n,severity:"error",message:`Confidence value ${l} is out of range`,suggestion:"Confidence must be between 0.0 and 1.0"}),l>=0&&l<=1&&0===l&&r.push({line:n,severity:"warning",message:"Confidence is 0.0 - this learning may not be useful",suggestion:"Consider removing learnings with 0 confidence"});const u=void 0!==a.index?o.substring(0,a.index).trim():o.trim();return u&&0!==u.length?(u.length<3&&r.push({line:n,severity:"warning",message:"Learning text is very short",suggestion:"Provide more descriptive text for clarity"}),r):(r.push({line:n,severity:"error",message:'Learning has no text before "Confidence:"',suggestion:'Add descriptive text (e.g., "Use pnpm for package management")'}),r)}function hasReferenceAfterCategory(e){const{lines:t,categoryLineIndex:n}=e,r=t.slice(n+1,n+4),o=r.findIndex(e=>e.trim().startsWith("# "));return(-1===o?r:r.slice(0,o)).some(e=>e.includes("See [")&&e.includes("taste.md"))}function buildResult(e){const{issues:t,filePath:n}=e,r=t.filter(e=>"error"===e.severity),o=t.filter(e=>"warning"===e.severity),s=0===r.length;if(0===t.length)return{valid:s,issues:[...t],summary:`${He.tick} ${n} is valid`};const a=[];r.length>0&&a.push(`${r.length} error${r.length>1?"s":""}`),o.length>0&&a.push(`${o.length} warning${o.length>1?"s":""}`);const i=r.length>0?He.cross:He.warning;return{valid:s,issues:[...t],summary:`${i} ${n} has ${a.join(", ")}`}}function formatSingleIssue(e,t){const n=[`${e.line?ne.dim(` Line ${e.line}: `):" "}${t(e.message)}`];return e.suggestion&&n.push(ne.dim(` → ${e.suggestion}`)),n}function formatIssueGroup(e,t,n){return 0===e.length?[]:[n,...e.flatMap(e=>formatSingleIssue(e,t)),""]}function formatValidationIssues(e){const{result:t,verbose:n=!0}=e;if(0===t.issues.length){const e=t.summary.charAt(0),n=t.summary.substring(2);return`${ne.green(e)} ${ne.dim(n)}`}if(!n)return t.summary;const r=t.issues.filter(e=>"error"===e.severity),o=t.issues.filter(e=>"warning"===e.severity);return[r.length>0?ne.red(t.summary):ne.yellow(t.summary),"",...formatIssueGroup(r,ne.red,ne.bold(ne.red("Errors:"))),...formatIssueGroup(o,ne.yellow,ne.bold(ne.yellow("Warnings:")))].join("\n").trim()}__name(findLookaheadEnd,"findLookaheadEnd"),__name(joinMultiLineLearning,"joinMultiLineLearning"),__name(processRawLine,"processRawLine"),__name(preprocessLines,"preprocessLines"),__name(validateLearningLine,"validateLearningLine"),__name(hasReferenceAfterCategory,"hasReferenceAfterCategory"),__name(buildResult,"buildResult"),pn(),__name(formatSingleIssue,"formatSingleIssue"),__name(formatIssueGroup,"formatIssueGroup"),__name(formatValidationIssues,"formatValidationIssues");var $C=new Set(["# Taste (Continuously Learned by [CommandCode][cmd])","# Taste (Continuously Learned by CommandCode.ai)","# Taste (Continuously Learned by CommandCode)"]);function warnIfEmptyCategory(e,t){!e.currentCategory||e.learningsInCurrentCategory>0||hasReferenceAfterCategory({lines:t,categoryLineIndex:e.categoryLineNumber-1})||e.issues.push({line:e.categoryLineNumber,severity:"warning",message:`Category '${e.currentCategory}' has no learnings`,suggestion:"Add at least one learning or remove this category"})}function processHeading(e){const{line:t,lineNum:n,state:r,rawLines:o}=e;$C.has(t.trim())||(r.hasAnyCategory=!0,warnIfEmptyCategory(r,o),r.currentCategory=t.trim().substring(2).trim(),r.categoryLineNumber=n,r.learningsInCurrentCategory=0)}function processLearning(e){const{line:t,lineNum:n,state:r}=e;r.currentCategory?(r.learningsInCurrentCategory++,r.issues.push(...validateLearningLine({line:t.trim(),lineNum:n}))):r.issues.push({line:n,severity:"error",message:"Learning found outside of any category",suggestion:'Add a category header (e.g., "# cli") before this learning'})}__name(warnIfEmptyCategory,"warnIfEmptyCategory"),__name(processHeading,"processHeading"),__name(processLearning,"processLearning");var LC=/^see \[[^\]]+\/taste\.md\]\([^\)]+\/taste\.md\)$/i,OC=/^\[cmd\]: https:\/\/commandcode\.ai\/$/i;function processLine(e){const{line:t,lineNum:n,state:r,rawLines:o}=e,s=t.trim();s&&(s.startsWith("# ")?processHeading({line:t,lineNum:n,state:r,rawLines:o}):s.startsWith("-")?processLearning({line:t,lineNum:n,state:r}):LC.test(s)||OC.test(s)||r.issues.push({line:n,severity:"error",message:"Invalid content - must be a category header (# name) or learning (- text)",suggestion:"Remove this line or format it as a category (# name) or learning (- text. Confidence: 0.XX)"}))}function checkFinalCategory(e){const{state:t,rawLines:n}=e;!t.currentCategory||t.learningsInCurrentCategory>0||!t.categoryLineNumber||hasReferenceAfterCategory({lines:n,categoryLineIndex:t.categoryLineNumber-1})||t.issues.push({line:t.categoryLineNumber,severity:"warning",message:`Category '${t.currentCategory}' has no learnings`,suggestion:"Add at least one learning or remove this category"})}function validateTasteFile(e){const{content:t,filePath:n}=e,r=[];if(!t.trim())return r.push({severity:"error",message:"File is empty",suggestion:"Add at least one category with learnings"}),buildResult({issues:r,filePath:n});const o=t.split("\n"),s=preprocessLines(o),a={currentCategory:null,categoryLineNumber:null,learningsInCurrentCategory:0,hasAnyCategory:!1,issues:r};for(const{text:e,originalLineNum:t}of s)processLine({line:e,lineNum:t,state:a,rawLines:o});return checkFinalCategory({state:a,rawLines:o}),buildResult({issues:r,filePath:n})}__name(processLine,"processLine"),__name(checkFinalCategory,"checkFinalCategory"),__name(validateTasteFile,"validateTasteFile");var FC=__name(e=>"local-global"===e?"global":"project","locationLabel"),UC=__name(({file:e,error:t})=>({success:!1,filesLinted:[],errors:[{file:e,error:t}],totalErrors:0,totalWarnings:0}),"failResult");function resolvePackageFile(e,t){const n=getCategoryTasteFile({target:t,category:e});return k(n)?{result:{path:n,displayName:`${e}/taste.md`}}:{error:{file:e,error:`Taste package '${e}' not found in ${FC(t)}`}}}function collectSpecificFiles(e){const{packages:t,target:n}=e,r=t.map(e=>resolvePackageFile(e,n));return{files:r.filter(e=>"result"in e).map(e=>e.result),errors:r.filter(e=>"error"in e).map(e=>e.error)}}async function collectAllFiles(e){const{tastePath:t,target:n}=e,r=[],o=getRootTasteFile({target:n});k(o)&&r.push({path:o,displayName:"taste.md"});const s=(await F.readdir(t,{withFileTypes:!0})).filter(e=>e.isDirectory()).map(e=>({entry:e,categoryFile:getCategoryTasteFile({target:n,category:e.name})})).filter(({categoryFile:e})=>k(e)).map(({entry:e,categoryFile:t})=>({path:t,displayName:`${e.name}/taste.md`}));return r.push(...s),r}async function lintFile(e){let t=await F.readFile(e.path,"utf-8");const n=migrateHeader({content:t});n!==t&&(await F.writeFile(e.path,n,"utf-8"),t=n);const r=validateTasteFile({content:t,filePath:e.displayName}),o=r.issues.filter(e=>"error"===e.severity).length,s=r.issues.filter(e=>"warning"===e.severity).length,a=formatValidationIssues({result:r});return{file:e.displayName,valid:r.valid,errors:o,warnings:s,formatted:a}}async function lintSpecificPackages(e){const{packages:t,target:n}=e,{files:r,errors:o}=collectSpecificFiles({packages:t,target:n});if(0===r.length&&o.length>0)return{success:!1,filesLinted:[],errors:o,totalErrors:0,totalWarnings:0};if(0===r.length)return UC({file:"all",error:`No taste files found in ${FC(n)}`});const s=await Promise.all(r.map(lintFile)),a=s.reduce((e,t)=>e+t.errors,0),i=s.reduce((e,t)=>e+t.warnings,0);return{success:s.every(e=>e.valid)&&0===o.length,filesLinted:s,errors:o,totalErrors:a,totalWarnings:i}}async function lintAllFiles(e){const{tastePath:t,target:n}=e,r=await collectAllFiles({tastePath:t,target:n});if(0===r.length)return UC({file:"all",error:`No taste files found in ${FC(n)}`});const o=await Promise.all(r.map(lintFile)),s=o.reduce((e,t)=>e+t.errors,0),a=o.reduce((e,t)=>e+t.warnings,0);return{success:o.every(e=>e.valid),filesLinted:o,errors:[],totalErrors:s,totalWarnings:a}}async function lint(e){const{packages:t,target:n}=e,r=getTastePath({target:n});return k(r)?t.length>0?lintSpecificPackages({packages:t,target:n}):lintAllFiles({tastePath:r,target:n}):UC({file:"all",error:`No taste directory found in ${FC(n)}`})}function resolveConflictStrategy(e){const t=[e.skip&&"skip",e.merge&&"merge",e.overwrite&&"overwrite"].filter(Boolean);return t.length>1&&exitWithError(`Cannot combine --${t[0]} and --${t[1]}. Choose one conflict strategy.`),t[0]}__name(resolvePackageFile,"resolvePackageFile"),__name(collectSpecificFiles,"collectSpecificFiles"),__name(collectAllFiles,"collectAllFiles"),__name(lintFile,"lintFile"),__name(lintSpecificPackages,"lintSpecificPackages"),__name(lintAllFiles,"lintAllFiles"),__name(lint,"lint"),pn(),__name(resolveConflictStrategy,"resolveConflictStrategy");var BC=ne.bgGreen.black.bold(" TASTE ");function shortenPath(e){const t=process.env.HOME??process.env.USERPROFILE??"";return t&&e.startsWith(t)?`~${e.slice(t.length)}`:e}function exitWithError(e){console.error(`${ne.red("Error:")} ${e.replace(/^Error:\s*/i,"")}`),process.exit(1)}function formatUsageLine(e){const t=e.match(/^(\s*(?:Usage:|or:)?\s*)(cmd)(\s+.+?)(\s+\(.*\))?$/);return t?`${ne.dim(t[1])}${ne.green(t[2])}${ne.white(t[3]??"")}${t[4]?ne.dim(t[4]):""}`:ne.dim(e)}function exitWithUsage({message:e,usage:t}){console.error(`${ne.red("Error:")} ${e.replace(/^Error:\s*/i,"")}`);for(const e of t)console.error(formatUsageLine(e));process.exit(1)}function resolveRemoteDefault(e){return e.global||e.remote?e:{...e,remote:!0}}__name(shortenPath,"shortenPath"),__name(exitWithError,"exitWithError"),__name(formatUsageLine,"formatUsageLine"),__name(exitWithUsage,"exitWithUsage"),__name(resolveRemoteDefault,"resolveRemoteDefault");var jC=__name((e,t)=>t,"linkFallback");function getPackageLink({owner:e,packageName:t}){return Et(`commandcode.ai/${e}/${t}`,`https://commandcode.ai/${e}/${t}`,{fallback:jC})}function getProfileLink(e){return Et(`commandcode.ai/${e}`,`https://commandcode.ai/${e}`,{fallback:jC})}function wrapLine(e,t=0){const n=(process.stdout.columns||80)-t;return Pt(e,n,{trim:!1})}function formatMergeParts(e){const t=[];return e.added>0&&t.push(`${e.added} ${1===e.added?"learning":"learnings"} added`),e.updated>0&&t.push(`${e.updated} ${1===e.updated?"learning":"learnings"} updated`),e.unchanged>0&&t.push(`${e.unchanged} ${1===e.unchanged?"learning":"learnings"} unchanged`),t}function hasMergeConflictRisk(e){return(e.added>0||e.updated>0)&&e.unchanged>0}function hasMergeConflictRiskInRecord(e){return Object.values(e).some(hasMergeConflictRisk)}function logMergeReviewTip(){console.log(ne.yellow("\nTip: Review merged learnings to ensure no conflicting rules."))}function parseOwnerPackage(e){if(!e.includes("/"))return;const[t,n]=e.split("/");return t&&n?{owner:t,packageName:n}:void 0}function handleResultErrors(e){for(const t of e){const e=t.error.replace(/^Taste package(?: '.*?')? /,`Taste package '${t.pkg}' `);console.error(`${ne.red("Error:")} ${e}`)}process.exit(1)}function getTimeAgo(e){const t=Date.now()-e.getTime(),n=Math.floor(t/6e4),r=Math.floor(t/36e5),o=Math.floor(t/864e5);return n<1?"just now":n<60?`${n} minute${n>1?"s":""} ago`:r<24?`${r} hour${r>1?"s":""} ago`:`${o} day${o>1?"s":""} ago`}async function flushAndExit(e){await Promise.race([shutdownTelemetry(),new Promise(e=>setTimeout(e,500))]).catch(()=>{}),process.exit(e)}function withErrorHandler(e){return async(...t)=>{try{await e(...t),await flushAndExit(0)}catch(e){const t=e instanceof Error?e.message:String(e);console.error(ne.red(`Error: ${t}`)),await flushAndExit(1)}}}function createLintCommand(){return new Ue("lint").argument("[package]","Taste package name").option("-g, --global","Validate taste packages from global storage (~/.commandcode)").option("--all","Validate all taste packages").description(`Validate taste package format ${ne.dim("(structure, style, etc.)")}`).action(withErrorHandler(async(e,t)=>runLint({packageName:e,options:t})))}function validateLintOptions({packageName:e,options:t}){e||t.all||exitWithUsage({message:"Specify a taste package name or use --all to validate everything",usage:[`${getBinaryCommand()} taste lint <package> validate a taste package`,`${getBinaryCommand()} taste lint --all validate all taste packages`]}),e&&t.all&&exitWithError("Use either a package name or --all, not both")}function logLintResults(e){for(const t of e.filesLinted)console.log(t.formatted);e.filesLinted.length>1&&logLintSummary(e),e.success||process.exit(1)}function logLintSummary({filesLinted:e,totalErrors:t,totalWarnings:n}){if(console.log(""),0===t&&0===n)return void console.log(`${ne.green(He.tick)} All ${ne.green(e.length)} taste files are valid`);const r=[];t>0&&r.push(ne.red(`${t} error${t>1?"s":""}`)),n>0&&r.push(ne.yellow(`${n} warning${n>1?"s":""}`)),console.log(`Summary: ${r.join(", ")} across ${e.length} files`)}async function runLint({packageName:e,options:t}){console.log(""),validateLintOptions({packageName:e,options:t});const n=await lint({packages:e?[e]:[],target:t.global?"local-global":"local-project"});if(n.errors.length>0){for(const e of n.errors)console.error(ne.red(`Error: ${e.error}`));process.exit(1)}logLintResults(n)}function parseSection(e){const{section:t,sourcePath:n}=e,r=t.split("\n"),o=r[0].trim(),s=r.map(e=>parseLearning({line:e})).filter(e=>null!==e);return 0===s.length?null:{category:normalizeCategory({category:o}),learnings:s,sourcePath:n}}function parsePackages(e){const{content:t,sourcePath:n}=e;return t.split(/^# /gm).filter(e=>e.trim()).filter(e=>!e.includes("See [")).map(e=>parseSection({section:e,sourcePath:n})).filter(e=>null!==e)}function parseLearning(e){const{line:t}=e,n=t.match(/^-?\s*(.+?)[\.:,]?\s*confidence:\s*(\d*\.?\d+)/i);if(!n)return null;const r=parseFloat(n[2]);return isNaN(r)||r<0||r>1?null:{text:n[1].trim(),confidence:r}}function normalizeCategory(e){const{category:t}=e;return t.toLowerCase().replace(/\s+/g,"-")}function denormalizeCategory(e){const{slug:t}=e;return t.split("-").map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(" ")}function formatPackage(e){const{pkg:t}=e;let n=`# ${denormalizeCategory({slug:t.category})}\n`;for(const e of t.learnings)n+=`- ${e.text}. Confidence: ${e.confidence.toFixed(2)}\n`;return n}async function readAndMigrateFile(e){const{filePath:t}=e,n=await F.readFile(t,"utf-8"),r=migrateHeader({content:n});return r===n?n:(await F.writeFile(t,r,"utf-8"),r)}function trimTrailingBlanks(e){const{lines:t,until:n}=e;let r=e.from;for(;r>n&&""===t[r].trim();)r--;return r}function findCategoryRange(e){const{lines:t,pattern:n}=e,r=t.findIndex(e=>n.test(e));if(-1===r)return null;const o=t.findIndex((e,t)=>t>r&&e.startsWith("# "));if(-1===o)return{start:r,end:t.length-1};const s=trimTrailingBlanks({lines:t,from:o-1,until:r});return{start:r,end:s}}function ensureHeader(e){if(!e)return ud+"\n\n";const t=e.trim();return t.startsWith(ld)||t.startsWith(dd)||t.startsWith(md)?e:ud+"\n\n"+e}function ensureTrailingNewlines(e){return e?e.endsWith("\n\n")?e:e.endsWith("\n")?e+"\n":e+"\n\n":e}__name(getPackageLink,"getPackageLink"),__name(getProfileLink,"getProfileLink"),__name(wrapLine,"wrapLine"),__name(formatMergeParts,"formatMergeParts"),__name(hasMergeConflictRisk,"hasMergeConflictRisk"),__name(hasMergeConflictRiskInRecord,"hasMergeConflictRiskInRecord"),__name(logMergeReviewTip,"logMergeReviewTip"),__name(parseOwnerPackage,"parseOwnerPackage"),__name(handleResultErrors,"handleResultErrors"),__name(getTimeAgo,"getTimeAgo"),__name(flushAndExit,"flushAndExit"),__name(withErrorHandler,"withErrorHandler"),__name(createLintCommand,"createLintCommand"),__name(validateLintOptions,"validateLintOptions"),__name(logLintResults,"logLintResults"),__name(logLintSummary,"logLintSummary"),__name(runLint,"runLint"),pn(),pn(),pn(),pn(),__name(parseSection,"parseSection"),__name(parsePackages,"parsePackages"),__name(parseLearning,"parseLearning"),__name(normalizeCategory,"normalizeCategory"),__name(denormalizeCategory,"denormalizeCategory"),pn(),__name(formatPackage,"formatPackage"),pn(),__name(readAndMigrateFile,"readAndMigrateFile"),__name(trimTrailingBlanks,"trimTrailingBlanks"),__name(findCategoryRange,"findCategoryRange"),__name(ensureHeader,"ensureHeader"),__name(ensureTrailingNewlines,"ensureTrailingNewlines");var HC="local-global";async function loadCategoryPackages(e){if(!e.isDirectory())return[];const t=getCategoryTasteFile({target:HC,category:e.name});return k(t)?parsePackages({content:await readAndMigrateFile({filePath:t}),sourcePath:t}).map(t=>({...t,category:e.name})):[]}async function getPackageInfo(e){try{const t=await F.stat(e.sourcePath);return{category:e.category,learningCount:e.learnings.length,lastUpdated:t.mtime,filePath:e.sourcePath}}catch{return{category:e.category,learningCount:e.learnings.length,lastUpdated:new Date,filePath:e.sourcePath}}}async function getAllPackages(){const e=getTastePath({target:HC});if(!k(e))return[];const t=await F.readdir(e,{withFileTypes:!0});return(await Promise.all(t.map(loadCategoryPackages))).flat()}async function getPackage(e){const{category:t}=e,n=getCategoryTasteFile({target:HC,category:t});return k(n)&&parsePackages({content:await readAndMigrateFile({filePath:n}),sourcePath:n})[0]||null}async function writePackage(t){const{pkg:n}=t,r=getTastePath({target:HC});await F.mkdir(r,{recursive:!0});const o=getCategoryTasteFile({target:HC,category:n.category}),s=e.dirname(o);await F.mkdir(s,{recursive:!0});const a=formatPackage({pkg:n});await F.writeFile(o,a,"utf-8")}async function listPackages(){const e=await getAllPackages();return await Promise.all(e.map(getPackageInfo))}__name(loadCategoryPackages,"loadCategoryPackages"),__name(getPackageInfo,"getPackageInfo"),__name(getAllPackages,"getAllPackages"),__name(getPackage,"getPackage"),__name(writePackage,"writePackage"),__name(listPackages,"listPackages"),pn(),pn();var WC="local-project";async function removeCategoryFromRoot(e){const{category:t,rootFile:n}=e;if(!k(n))return null;const r=migrateHeader({content:await F.readFile(n,"utf-8")}).split("\n"),o=findCategoryRange({lines:r,pattern:new RegExp(`^# ${t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}$`,"i")});if(!o)return null;const s=r.slice(0,o.start),a=o.end<r.length-1?r.slice(o.end+1):[],i={before:s.join("\n").trim(),after:a.join("\n").trim()},l=[...s,...a].join("\n").trim();return""===l&&await F.rm(n,{force:!0}),""!==l&&await F.writeFile(n,l+"\n","utf-8"),i}async function removePackage(t){const{category:n}=t,r=getRootTasteFile({target:WC}),o=await removeCategoryFromRoot({category:n,rootFile:r}),s=getCategoryTasteFile({target:WC,category:n}),a=e.dirname(s);return k(a)&&await F.rm(a,{recursive:!0,force:!0}),o}async function writeToRoot(e){const{pkg:t,rootFile:n,categoryPosition:r}=e,o=formatPackage({pkg:t});if(r){let e=ensureHeader(migrateHeader({content:r.before}));e=ensureTrailingNewlines(e);const t=r.after?"\n\n"+r.after:"";return e+=o.trim()+t,void await F.writeFile(n,e.trim()+"\n","utf-8")}let s="";k(n)&&(s=await F.readFile(n,"utf-8"),s=migrateHeader({content:s})),s=ensureHeader(s),s=ensureTrailingNewlines(s),s+=o,await F.writeFile(n,s.trim()+"\n","utf-8")}async function writeToSubdirectory(t){const{pkg:n,rootFile:r,categoryPosition:o}=t,s=getCategoryTasteFile({target:WC,category:n.category}),a=e.dirname(s);await F.mkdir(a,{recursive:!0});const i=formatPackage({pkg:n});await F.writeFile(s,i,"utf-8");const l=`# ${n.category}\nSee [${n.category}/taste.md](${n.category}/taste.md)\n`;if(o){let e=ensureHeader(migrateHeader({content:o.before}));e=ensureTrailingNewlines(e);const t=o.after?"\n\n"+o.after:"";return e+=l.trim()+t,void await F.writeFile(r,e.trim()+"\n","utf-8")}let u="";k(r)&&(u=await F.readFile(r,"utf-8"),u=migrateHeader({content:u})),u=ensureHeader(u),u=ensureTrailingNewlines(u),u+=l,await F.writeFile(r,u.trim()+"\n","utf-8")}__name(removeCategoryFromRoot,"removeCategoryFromRoot"),__name(removePackage,"removePackage"),__name(writeToRoot,"writeToRoot"),__name(writeToSubdirectory,"writeToSubdirectory");var GC="local-project";async function loadCategoryPackages2(e){if(!e.isDirectory())return[];const t=getCategoryTasteFile({target:GC,category:e.name});return k(t)?parsePackages({content:await readAndMigrateFile({filePath:t}),sourcePath:t}).map(t=>({...t,category:e.name})):[]}async function getAllPackages2(){const e=getTastePath({target:GC});if(!k(e))return[];const t=[],n=getRootTasteFile({target:GC});if(k(n)){const e=parsePackages({content:await readAndMigrateFile({filePath:n}),sourcePath:n});t.push(...e)}const r=await F.readdir(e,{withFileTypes:!0}),o=(await Promise.all(r.map(loadCategoryPackages2))).flat();return t.push(...o),t}async function getPackage2(e){const{category:t}=e;return(await getAllPackages2()).find(e=>e.category===t)||null}async function writePackage2(e){const{pkg:t}=e,n=getTastePath({target:GC});await F.mkdir(n,{recursive:!0});const r=getRootTasteFile({target:GC}),o=await removePackage({category:t.category});t.learnings.length<=5?await writeToRoot({pkg:t,rootFile:r,categoryPosition:o}):await writeToSubdirectory({pkg:t,rootFile:r,categoryPosition:o})}function exists(){const e=getTastePath({target:GC});return k(e)}async function appendCategoryFile(e,t){const n=getCategoryTasteFile({target:"local-project",category:t.category});if(!k(n))return;const r=await F.readFile(n,"utf-8"),o=new Blob([r],{type:"text/markdown"}),s=new File([o],"taste.md",{type:"text/markdown"});e.append(`files[${t.category}/taste.md]`,s)}async function prepareUploadFormData(t){const{packageName:n,pkg:r,description:o,type:s="category",isPublic:a=!1,overwrite:i=!1}=t,l=new FormData;l.append("name",n),o&&l.append("description",o),l.append("type",s),l.append("isPublic",String(a)),l.append("overwrite",String(i));const u=formatPackage({pkg:r}),d=new Blob([u],{type:"text/markdown"}),m=new File([d],"taste.md",{type:"text/markdown"});if(l.append("files[taste.md]",m),"category"===s)return l;const g=getTastePath({target:"local-project"}),h=e.join(g,r.category);if(!k(h))return l;const f=getCategoryTasteFile({target:"local-project",category:r.category});if(!k(f))return l;const y=await F.readFile(f,"utf-8"),w=new Blob([y],{type:"text/markdown"}),S=new File([w],"taste.md",{type:"text/markdown"});return l.append(`files[${r.category}/taste.md]`,S),l}async function prepareMultiplePackagesUpload(e){const{pkgs:t,projectName:n,description:r,isPublic:o=!1,overwrite:s=!1}=e,a=new FormData;a.append("name",n),r&&a.append("description",r),a.append("type","project"),a.append("isPublic",String(o)),a.append("overwrite",String(s));const i=getRootTasteFile({target:"local-project"});if(k(i)){const e=await F.readFile(i,"utf-8"),t=new Blob([e],{type:"text/markdown"}),n=new File([t],"taste.md",{type:"text/markdown"});a.append("files[taste.md]",n)}const l=t.map(e=>appendCategoryFile(a,e));return await Promise.all(l),a}function parseLearningLine(e){const t=e.match(/^-\s+(.+?)\.\s+Confidence:\s+([\d.]+)/);if(!t)return null;const n=t[1].trim(),r=parseFloat(t[2]);return!n||isNaN(r)?null:{text:n,confidence:r}}function parseTasteContent(e){return e.split("\n").filter(e=>{const t=e.trim();return t&&!t.startsWith("#")&&t.startsWith("-")}).map(e=>parseLearningLine(e.trim())).filter(e=>null!==e)}async function parseApiError(e){const{response:t,fallback:n}=e;try{const e=await t.json();return e.error?.message||e.message||n}catch{return n}}function throwTrackedError(e){const{message:t,label:n,heading:r,status:o,extra:s}=e,a=new Error(t);throw trackError({error:sanitizeErrorForTelemetry({error:a,label:n}),context:{component:ms.TASTE_REMOTE_STORAGE,heading:r,"http.status":o,...s}}),a}async function requireAuthKey(){const e=await getAuthKey();if(!e)throw new Error(`No API key found. Please authenticate with: ${getBinaryCommand()} login`);return e}async function downloadPackage(e){const{owner:t,packageName:n}=e,r=getApiBaseUrl(),o=await tryPublicDownload({baseUrl:r,owner:t,packageName:n});if(o)return o;const s=await getAuthKey();if(!s)throw new Error(`Package not found. If this is a private package, please authenticate with \`${getBinaryCommand()} login\``);return tryAuthenticatedDownload({baseUrl:r,owner:t,packageName:n,apiKey:s})}async function tryPublicDownload(e){const{baseUrl:t,owner:n,packageName:r}=e,o=`${t}${Dt.INTERNAL.PROFILE.PACKAGE_DOWNLOAD.replace(":login",n).replace(":packageName",r)}`;let s;try{s=await fetch(o,{method:"GET"})}catch{return null}if(s.ok){const{data:e}=await s.json();return{type:e.type||"category",files:e.files||[],isPublic:!0}}if(404===s.status)return null;throwTrackedError({message:await parseApiError({response:s,fallback:`Failed to download taste package (${s.status})`}),label:"download_public_error",heading:"Failed to download taste package (public)",status:s.status})}async function tryAuthenticatedDownload(e){const{baseUrl:t,owner:n,packageName:r,apiKey:o}=e,s=`${t}${Dt.BETA.TASTE.PACKAGES.DOWNLOAD.replace(":namespace",n).replace(":packageName",r)}`,a=await fetch(s,{method:"GET",headers:{Authorization:`Bearer ${o}`}});if(a.ok){const{data:e}=await a.json();return{type:e.type||"category",files:e.files||[],isPublic:e.isPublic??!1}}if(404===a.status)return null;throwTrackedError({message:await parseApiError({response:a,fallback:"Failed to download taste package"}),label:"download_auth_error",heading:"Failed to download taste package (authenticated)",status:a.status})}async function fetchSinglePackage(e){try{return await getPackage3({category:e.name})}catch(t){const n=t instanceof Error?t:new Error(String(t));return trackError({error:sanitizeErrorForTelemetry({error:n,label:"download_package_error"}),context:{component:ms.TASTE_REMOTE_STORAGE,heading:"Failed to download package","package.name":e.name}}),console.warn(`Warning: Failed to download package '${e.name}': ${n.message}`),null}}async function getAllPackages3(){const e=await requireAuthKey(),t=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.LIST}`,n=await fetch(t,{method:"GET",headers:{Authorization:`Bearer ${e}`}});n.ok||throwTrackedError({message:await parseApiError({response:n,fallback:"Failed to list taste packages"}),label:"list_packages_error",heading:"Failed to list taste packages",status:n.status});const{data:r}=await n.json(),o=r.packages||[];if(0===o.length)return[];const s=[];for(let e=0;e<o.length;e+=5){const t=o.slice(e,e+5),n=await Promise.all(t.map(fetchSinglePackage));s.push(...n.filter(e=>null!==e))}return s}async function getPackage3(e){const{category:t}=e;let n;await requireAuthKey();try{n=await getAuthenticatedEntity()}catch(e){const n=e instanceof Error?e:new Error(String(e));throw dlog(`[Auth] getPackage: entity endpoint unavailable — ${n.message}`),trackError({error:sanitizeErrorForTelemetry({error:n,label:"get_entity_error"}),context:{component:ms.TASTE_REMOTE_STORAGE,heading:"getAuthenticatedEntity failed in getPackage"}}),new Error(`Could not resolve your account to fetch '${t}'. Check your connection and try again.`)}if(!n.success||!n.user?.userName)throw new Error("Failed to get authenticated user information");return downloadRemotePackage({owner:n.user.userName,packageName:t})}async function downloadRemotePackage(e){const{owner:t,packageName:n}=e,r=await downloadPackage({owner:t,packageName:n});if(!r)return null;const o=r.files||[];if(0===o.length)return null;const s=o.find(e=>"taste.md"===e.file);if(!s)throw new Error(`No taste.md file found in package '${n}'`);return{category:n,learnings:parseTasteContent(s.content),sourcePath:`remote:${n}`,isPublic:r.isPublic??!1}}async function writePackage3(e){const{pkg:t,owner:n,isPublic:r=!1,overwrite:o=!1}=e,s=await requireAuthKey(),a=await prepareUploadFormData({packageName:t.category,pkg:t,type:"category",isPublic:r,overwrite:o}),i=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.UPLOAD.replace(":namespace",n)}`,l=await fetch(i,{method:"POST",headers:{Authorization:`Bearer ${s}`},body:a});l.ok||throwTrackedError({message:await parseApiError({response:l,fallback:"Failed to upload taste package"}),label:"upload_package_error",heading:"Failed to upload taste package",status:l.status}),await l.json()}async function writePackages(e){const{packages:t,projectName:n,owner:r,isPublic:o=!1,overwrite:s=!1}=e,a=await requireAuthKey(),i=await prepareMultiplePackagesUpload({pkgs:t,projectName:n,isPublic:o,overwrite:s}),l=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.UPLOAD.replace(":namespace",r)}`,u=await fetch(l,{method:"POST",headers:{Authorization:`Bearer ${a}`},body:i});u.ok||throwTrackedError({message:await parseApiError({response:u,fallback:"Failed to upload taste packages"}),label:"upload_packages_error",heading:"Failed to upload taste packages",status:u.status,extra:{"package.count":t.length}}),await u.json()}async function listPackages2(){const e=await requireAuthKey(),t=`${getApiBaseUrl()}${Dt.BETA.TASTE.PACKAGES.LIST}`,n=await fetch(t,{method:"GET",headers:{Authorization:`Bearer ${e}`}});n.ok||throwTrackedError({message:await parseApiError({response:n,fallback:"Failed to list taste packages"}),label:"list_packages_error",heading:"Failed to list packages",status:n.status});const{data:r}=await n.json();return(r.packages||[]).map(e=>({category:e.name,learningCount:e.learningCount||0,lastUpdated:e.createdAt?new Date(e.createdAt):new Date,filePath:"",isPublic:e.isPublic??!1,starCount:e.starCount??0,downloadCount:e.downloadCount??0,type:e.type??"category"}))}async function list(e){const{location:t}=e;if("local-global"===t)return listPackages();if("remote-project"===t||"remote-user"===t)return listPackages2();if("local-project"===t){const e=getRootTasteFile({target:"local-project"}),t=await getAllPackages2();return Promise.all(t.map(async t=>{let n;if(t.sourcePath!==e)try{n=(await F.stat(t.sourcePath)).mtime}catch{}return{category:t.category,learningCount:t.learnings.length,lastUpdated:n,filePath:t.sourcePath}}))}throw new Error(`Invalid location: ${t}`)}function createListCommand(){return new Ue("list").alias("ls").option("-g, --global","List global packages").addOption(new Be("-l, --local","Use local server").hideHelp()).option("--remote","List remote packages").addOption(new Be("--staging","Use staging environment").hideHelp()).description(`List available packages ${ne.dim("(project, global, or remote)")}`).action(withErrorHandler(async e=>runList({options:e})))}__name(loadCategoryPackages2,"loadCategoryPackages"),__name(getAllPackages2,"getAllPackages"),__name(getPackage2,"getPackage"),__name(writePackage2,"writePackage"),__name(exists,"exists"),pn(),pn(),__name(appendCategoryFile,"appendCategoryFile"),__name(prepareUploadFormData,"prepareUploadFormData"),__name(prepareMultiplePackagesUpload,"prepareMultiplePackagesUpload"),wn(),pn(),__name(parseLearningLine,"parseLearningLine"),__name(parseTasteContent,"parseTasteContent"),pn(),wn(),__name(parseApiError,"parseApiError"),__name(throwTrackedError,"throwTrackedError"),__name(requireAuthKey,"requireAuthKey"),pn(),wn(),__name(downloadPackage,"downloadPackage"),__name(tryPublicDownload,"tryPublicDownload"),__name(tryAuthenticatedDownload,"tryAuthenticatedDownload"),Sn(),__name(fetchSinglePackage,"fetchSinglePackage"),__name(getAllPackages3,"getAllPackages"),__name(getPackage3,"getPackage"),__name(downloadRemotePackage,"downloadRemotePackage"),__name(writePackage3,"writePackage"),__name(writePackages,"writePackages"),__name(listPackages2,"listPackages"),__name(list,"list"),__name(createListCommand,"createListCommand");var zC={remote:{location:"remote-project",name:"remote",subtitle:"commandcode.ai account"},global:{location:"local-global",name:"global",subtitle:"~/.commandcode/taste"},project:{location:"local-project",name:"project",subtitle:".commandcode/taste"}};function resolveStorage(e){return e.remote?zC.remote:e.global?zC.global:zC.project}function getPackageDisplayLength(e){let t=e.category.length;return e.isPublic&&(t+=9),e.isPublic&&e.starCount&&(t+=` ${He.star}${e.starCount}`.length),e.downloadCount&&(t+=` ${He.arrowDown}${e.downloadCount}`.length),t}function formatPackageLine({pkg:e,maxLen:t}){const n=" ".repeat(t-getPackageDisplayLength(e)+2),r=e.lastUpdated?getTimeAgo(e.lastUpdated):null,o=r?`, updated ${r}`:"";return` ${ne.white(e.category)}${e.isPublic?ne.green(" [public]"):""}${e.isPublic&&e.starCount?ne.yellow(` ${He.star}${e.starCount}`):""}${e.downloadCount?ne.gray(` ${He.arrowDown}${e.downloadCount}`):""}${n}${ne.dim.gray(`(${e.learningCount} learnings${o})`)}`}function validateListOptions(e){e.global&&e.remote&&exitWithError("Error: Cannot specify both --global and --remote flags")}async function fetchPackages({options:e}){const t=resolveStorage(e),n=e.remote?We(`Fetching ${t.name} packages`).start():null,r=await list({location:t.location});return n?.stop(),{packages:r,storage:t}}async function getStorageLabel({options:e,fallback:t}){if(!e.remote)return t;const n=await getUserName();return n?getProfileLink(n):t}function printPackageTable({packages:e,subtitle:t}){console.log(`\n${BC} Packages`),console.log(`${ne.gray("⎿")} ${ne.dim(t)}\n`);const n=Math.max(...e.map(getPackageDisplayLength));let r=0;for(const t of e)r+=t.learningCount,console.log(formatPackageLine({pkg:t,maxLen:n}));console.log(ne.dim(`\nTotal: ${e.length} packages, ${r} learnings\n`))}async function runList({options:e}){console.log(""),validateListOptions(e);const{packages:t,storage:n}=await fetchPackages({options:e});0!==t.length?printPackageTable({packages:t,subtitle:await getStorageLabel({options:e,fallback:n.subtitle})}):console.log(ne.yellow(`No taste packages found in ${n.name}`))}async function fetchAllPackages(e){const{target:t}=e;return"local-project"===t?getAllPackages2():"local-global"===t?getAllPackages():getAllPackages3()}function handleOpenError(e){return e instanceof Error&&e.message.includes("$EDITOR environment variable")?{success:!1,error:getEditorSetupInstructions()}:{success:!1,error:e instanceof Error?e.message:String(e)}}async function readCategoryLineNumber(t){const{filePath:n,category:r}=t,o=await F.readFile(n,"utf-8");if("taste.md"===e.basename(n)&&e.basename(e.dirname(n))===r)return 1;const s=o.split("\n").findIndex(e=>e.trim().toLowerCase()===`# ${r.toLowerCase()}`);return s>=0?s+1:1}async function findCategoryLineNumber(e){try{return await readCategoryLineNumber(e)}catch{return 1}}async function openPackage(e){const{packageName:t,target:n}=e,r=(await fetchAllPackages({target:n})).find(e=>e.category===t);if(!r){let e="project";return"local-global"===n&&(e="global"),"remote-project"!==n&&"remote-user"!==n||(e="remote"),{success:!1,error:`Taste package '${t}' not found in ${e}`}}const o=r.sourcePath,s=await findCategoryLineNumber({filePath:o,category:t});return await xt([{file:o,line:s}]),{success:!0,filePath:o,lineNumber:s}}__name(resolveStorage,"resolveStorage"),__name(getPackageDisplayLength,"getPackageDisplayLength"),__name(formatPackageLine,"formatPackageLine"),__name(validateListOptions,"validateListOptions"),__name(fetchPackages,"fetchPackages"),__name(getStorageLabel,"getStorageLabel"),__name(printPackageTable,"printPackageTable"),__name(runList,"runList"),pn(),wn(),pn(),__name(fetchAllPackages,"fetchAllPackages"),__name(handleOpenError,"handleOpenError"),__name(readCategoryLineNumber,"readCategoryLineNumber"),__name(findCategoryLineNumber,"findCategoryLineNumber"),__name(openPackage,"openPackage");var qC=new Set(["local-project","local-global","remote-project","remote-user"]);async function open12(e){const{package:t,target:n}=e;if(!qC.has(n))return{success:!1,error:`Invalid target: ${n}`};try{return await openPackage({packageName:t,target:n})}catch(e){return handleOpenError(e)}}function getEditorSetupInstructions(){const e=At.platform;if("win32"===e)return'Error: No default editor found\n\nTo permanently set your default editor, run one of these commands:\n\nCommand Prompt (as Administrator):\n setx EDITOR "code" # VS Code\n setx EDITOR "notepad" # Notepad\n setx EDITOR "vim" # Vim (if installed via WSL/Git Bash)\n\nPowerShell:\n [Environment]::SetEnvironmentVariable("EDITOR", "code", "User")\n\nThen restart your terminal.';const t="darwin"===e?"~/.zshrc":"~/.bashrc";return`Error: No default editor found\n\nTo permanently set your default editor, run one of these commands:\n echo 'export EDITOR="code"' >> ${t} # VS Code\n echo 'export EDITOR="vim"' >> ${t} # Vim\n echo 'export EDITOR="nano"' >> ${t} # Nano\n echo 'export EDITOR="subl"' >> ${t} # Sublime Text\n\nFor bash users ${"darwin"===e?"(or ~/.bash_profile for bash)":"(or ~/.zshrc for zsh)"}, replace ${t} with the appropriate file.\n\nThen restart your terminal or run: source ${t}`}function createOpenCommand(){return new Ue("open").argument("[package]","Taste package name, or owner/package to open in browser").option("-g, --global","Open taste package from global storage (~/.commandcode)").description(`Open a taste package in your editor ${ne.dim("(use owner/package to open in browser)")}`).action(withErrorHandler(async(e,t)=>runOpen({packageName:e,options:t})))}function validateOpenOptions(e){e||exitWithUsage({message:"Specify a taste package name to open",usage:[`${getBinaryCommand()} taste open <package> open taste package in editor`,`${getBinaryCommand()} taste open <package> -g open global taste package in editor`,`${getBinaryCommand()} taste open owner/package open package page in browser`]})}async function runOpen({packageName:e,options:t}){console.log(""),validateOpenOptions(e);const n=parseOwnerPackage(e);n?await openInBrowser(n):await openInEditor3({packageName:e,options:t})}async function openInBrowser(e){const t=`https://commandcode.ai/${e.owner}/${e.packageName}`;await Z(t);const n=getPackageLink({owner:e.owner,packageName:e.packageName});console.log(`${ne.green(He.tick)} Opened ${n} in browser`)}async function openInEditor3({packageName:e,options:t}){const n=t.global?"local-global":"local-project",r=await open12({package:e,target:n});r.success||exitWithError(r.error??"Unknown error"),console.log(`${ne.green(He.tick)} Opened ${ne.green(`'${e}'`)} taste package from ${t.global?"global":"project"}`)}__name(open12,"open"),__name(getEditorSetupInstructions,"getEditorSetupInstructions"),__name(createOpenCommand,"createOpenCommand"),__name(validateOpenOptions,"validateOpenOptions"),__name(runOpen,"runOpen"),__name(openInBrowser,"openInBrowser"),__name(openInEditor3,"openInEditor"),pn(),wn(),pn(),pn(),pn();var VC=null,KC=!1;function setActiveSpinner(e){VC=e}function stopActiveSpinner(e){VC&&(VC.stop(e),VC=null)}function setPrompted(e){KC=e}function wasPrompted(){return KC}function beginPrompt(e,t){stopActiveSpinner(),nt.intro(ne.dim(e)),t&&nt.log.message(ne.dim(t)),setPrompted(!0)}function handleCancel(e){nt.isCancel(e)&&(nt.cancel("Operation cancelled"),process.exit(0))}function startStrategySpinner(e){if("skip"===e){const e=nt.spinner();return e.start("Skipping"),void e.stop("Skipped")}const t="merge"===e?"Merging":"Overwriting",n="merge"===e?"Merged":"Overwritten",r=nt.spinner();r.start(t),setActiveSpinner({stop:__name(e=>r.stop(e??n),"stop"),cancel:__name(e=>r.cancel(e),"cancel"),error:__name(e=>r.error(e),"error")})}async function promptMergeStrategy(e){const{packageName:t,owner:n,localPkg:r,remoteLearningsCount:o}=e,s="This package already exists locally";if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(s),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, using default merge strategy"),"merge";beginPrompt(`Pulling ${ne.green(`'${t}'`)} from ${n}`,s),nt.log.message(`Local: ${r.learnings.length} learnings\nRemote: ${o} learnings ${ne.dim(`(from ${n})`)}`);const a=await nt.select({message:"What would you like to do?",options:[{value:"merge",label:"Merge",hint:"Combine both versions intelligently (default)"},{value:"overwrite",label:"Overwrite",hint:`Replace local with remote (${r.learnings.length} → ${o} learnings)`},{value:"skip",label:"Skip",hint:"Keep local version, ignore remote"}],initialValue:"merge"});handleCancel(a);const i=a;return startStrategySpinner(i),i}async function promptGlobalPushStrategy(e){const{packageName:t,localLearningsCount:n,globalPkg:r}=e,o="This package already exists in global storage";if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(o),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, using default merge strategy"),"merge";beginPrompt(`Pushing ${ne.green(`'${t}'`)} to global`,o),nt.log.message(`Local: ${n} learnings\nGlobal: ${r.learnings.length} learnings`);const s=await nt.select({message:"What would you like to do?",options:[{value:"merge",label:"Merge",hint:"Combine both versions intelligently (default)"},{value:"overwrite",label:"Overwrite",hint:`Replace global with local (${r.learnings.length} → ${n} learnings)`},{value:"skip",label:"Skip",hint:"Keep global version, cancel push"}],initialValue:"merge"});handleCancel(s);const a=s;return startStrategySpinner(a),a}async function promptGlobalPullStrategy(e){const{packageName:t,localPkg:n,globalLearningsCount:r}=e,o="This package already exists locally";if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(o),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, using default merge strategy"),"merge";beginPrompt(`Pulling ${ne.green(`'${t}'`)} from global`,o),nt.log.message(`Local: ${n.learnings.length} learnings\nGlobal: ${r} learnings`);const s=await nt.select({message:"What would you like to do?",options:[{value:"merge",label:"Merge",hint:"Combine both versions intelligently (default)"},{value:"overwrite",label:"Overwrite",hint:`Replace local with global (${n.learnings.length} → ${r} learnings)`},{value:"skip",label:"Skip",hint:"Keep local version, ignore global"}],initialValue:"merge"});handleCancel(s);const a=s;return startStrategySpinner(a),a}async function promptTypeMismatchStrategy(e){const{packageName:t,owner:n,localLearningsCount:r,remoteLearningsCount:o}=e,s=`Pushing local project taste to individual package '${t}'`;if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(s),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, skipping push"),"skip";const a=Et(`commandcode.ai/${n}/${t}`,`https://commandcode.ai/${n}/${t}`,{fallback:__name((e,t)=>t,"fallback")});beginPrompt(`Pushing ${ne.green(`'${t}'`)} to ${n}`,s),nt.log.message(`Local: ${t} (${r} learnings)\nRemote: ${t} (${o} learnings) in ${n}`),nt.log.info(`Current package: ${ne.cyan(a)} ${ne.dim("(review)")}`);const i=await nt.select({message:"What would you like to do?",options:[{value:"skip",label:"Skip",hint:"Keep remote version, cancel push"},{value:"overwrite",label:"Overwrite",hint:"Replace individual remote package with local project taste"}],initialValue:"skip"});handleCancel(i);const l=i;return startStrategySpinner(l),l}async function promptSameTypeStrategy(e){const{packageName:t,owner:n,localLearningsCount:r,remoteLearningsCount:o}=e,s=`This package already exists in ${n}`;if(!process.stdout.isTTY||!process.stdin.isTTY)return stopActiveSpinner(s),setPrompted(!0),nt.log.warn("Non-interactive terminal detected, skipping push"),"skip";const a=Et(`commandcode.ai/${n}/${t}`,`https://commandcode.ai/${n}/${t}`,{fallback:__name((e,t)=>t,"fallback")});beginPrompt(`Pushing ${ne.green(`'${t}'`)} to ${n}`,s),nt.log.message(`Local: ${r} learnings\nRemote: ${o} learnings`),nt.log.info(`Current package: ${ne.cyan(a)} ${ne.dim("(review)")}`);const i=await nt.select({message:"What would you like to do?",options:[{value:"skip",label:"Skip",hint:"Keep remote version, cancel push"},{value:"overwrite",label:"Overwrite",hint:`Replace remote with local (${o} → ${r} learnings)`}],initialValue:"skip"});handleCancel(i);const l=i;return startStrategySpinner(l),l}function mergeSingleLearning(e,t,n,r){const o=t.get(e.text);return o?e.confidence>o.confidence?(n.set(e.text,e),void r.updated++):void r.unchanged++:(n.set(e.text,e),void r.added++)}function mergePackages(e){const{source:t,target:n}=e,r={added:0,updated:0,unchanged:0},o=new Map(n.map(e=>[e.text,e])),s=new Map(o);for(const e of t)mergeSingleLearning(e,o,s,r);const a=new Set(t.map(e=>e.text)),i=n.filter(e=>!a.has(e.text)).length;return r.unchanged+=i,{merged:Array.from(s.values()),details:r}}function validateSinglePackage(e,t){const n=validateTasteFile({content:formatPackage({pkg:e}),filePath:`${e.category}/taste.md`});if(!n.valid){const r=formatValidationIssues({result:n,verbose:!0});return{pkg:e.category,error:`Validation failed for taste package in ${t}:\n${r}`}}return n.issues.filter(e=>"warning"===e.severity).length>0&&(console.warn(`\nWarning: Taste package '${e.category}' in ${t} has validation warnings:\n`),console.warn(formatValidationIssues({result:n,verbose:!0})+"\n")),null}function validateSingleRemoteFile(e,t){const n=validateTasteFile({content:e.content,filePath:e.file});if(!n.valid){const r=formatValidationIssues({result:n,verbose:!0});return{pkg:t,error:`Validation failed for ${e.file}:\n${r}`}}return n.issues.filter(e=>"warning"===e.severity).length>0&&(console.warn(`\nWarning: File '${e.file}' has validation warnings:\n`),console.warn(formatValidationIssues({result:n,verbose:!0})+"\n")),null}function validatePackages(e){const{packages:t,label:n}=e;return t.map(e=>validateSinglePackage(e,n)).filter(e=>null!==e)}function validateRemoteFiles(e){const{files:t,packageName:n}=e;return t.map(e=>validateSingleRemoteFile(e,n)).filter(e=>null!==e)}function mergeOrKeep(e){const{source:t,existing:n}=e;if(!n)return{pkg:t,details:{added:t.learnings.length,updated:0,unchanged:0}};const r=mergePackages({source:t.learnings,target:n.learnings});return{pkg:{...t,learnings:r.merged},details:r.details}}async function resolveRemotePullStrategy(e){const{flagStrategy:t,overwrite:n,existingPkg:r,tastePkg:o,owner:s}=e;return"skip"===t?r?"skip":"merge":"merge"===t?"merge":"overwrite"===t||n?"overwrite":r?promptMergeStrategy({packageName:o.category,owner:s,localPkg:r,remoteLearningsCount:o.learnings.length}):"merge"}async function executePackageStrategy(e){const{tastePkg:t,owner:n,overwrite:r,flagStrategy:o,result:s}=e,a=await getPackage2({category:t.category}),i=await resolveRemotePullStrategy({flagStrategy:o,overwrite:r,existingPkg:a,tastePkg:t,owner:n});if("skip"===i)return void s.skipped?.push(t.category);if("overwrite"===i&&(await writePackage2({pkg:t}),s.packagesPulled.push(t.category),s.overwritten.push(t.category)),"merge"===i){const{pkg:e,details:n}=mergeOrKeep({source:t,existing:a});await writePackage2({pkg:e}),s.packagesPulled.push(t.category),s.mergeDetails[t.category]=n}const l=getCategoryTasteFile({target:"local-project",category:t.category});s.filePaths[t.category]=l}async function processPackage(e){const{tastePkg:t,result:n}=e;try{await executePackageStrategy(e)}catch(e){n.success=!1,n.errors.push({pkg:t.category,error:e instanceof Error?e.message:String(e)})}}async function pullProjectPackage(e){const{files:t,packageName:n,owner:r,overwrite:o,flagStrategy:s,result:a}=e,i=t.find(e=>"taste.md"===e.file);if(i){const e=parsePackages({content:i.content,sourcePath:`remote:${n}/taste.md`});for(const t of e)await processPackage({tastePkg:t,owner:r,overwrite:o,flagStrategy:s,result:a})}const l=t.filter(e=>"taste.md"!==e.file);for(const e of l){const t=e.file.replace("/taste.md",""),i={category:t,learnings:parseTasteContent(e.content),sourcePath:`remote:${n}/${t}`};await processPackage({tastePkg:i,owner:r,overwrite:o,flagStrategy:s,result:a})}}async function pullCategoryPackage(e){const{files:t,packageName:n,owner:r,overwrite:o,flagStrategy:s,result:a}=e,i=t.find(e=>"taste.md"===e.file);if(!i)return a.success=!1,void a.errors.push({pkg:n,error:"No taste.md file found in category package"});const l={category:n,learnings:parseTasteContent(i.content),sourcePath:`remote:${n}`};await processPackage({tastePkg:l,owner:r,overwrite:o,flagStrategy:s,result:a})}__name(setActiveSpinner,"setActiveSpinner"),__name(stopActiveSpinner,"stopActiveSpinner"),__name(setPrompted,"setPrompted"),__name(wasPrompted,"wasPrompted"),__name(beginPrompt,"beginPrompt"),__name(handleCancel,"handleCancel"),__name(startStrategySpinner,"startStrategySpinner"),__name(promptMergeStrategy,"promptMergeStrategy"),__name(promptGlobalPushStrategy,"promptGlobalPushStrategy"),__name(promptGlobalPullStrategy,"promptGlobalPullStrategy"),__name(promptTypeMismatchStrategy,"promptTypeMismatchStrategy"),__name(promptSameTypeStrategy,"promptSameTypeStrategy"),pn(),pn(),__name(mergeSingleLearning,"mergeSingleLearning"),__name(mergePackages,"mergePackages"),__name(validateSinglePackage,"validateSinglePackage"),__name(validateSingleRemoteFile,"validateSingleRemoteFile"),__name(validatePackages,"validatePackages"),__name(validateRemoteFiles,"validateRemoteFiles"),__name(mergeOrKeep,"mergeOrKeep"),pn(),__name(resolveRemotePullStrategy,"resolveRemotePullStrategy"),__name(executePackageStrategy,"executePackageStrategy"),__name(processPackage,"processPackage"),__name(pullProjectPackage,"pullProjectPackage"),__name(pullCategoryPackage,"pullCategoryPackage");var YC=__name(({pkg:e,error:t})=>({success:!1,packagesPulled:[],errors:[{pkg:e,error:t}],mergeDetails:{},overwritten:[],filePaths:{}}),"fail"),QC=__name(()=>({success:!0,packagesPulled:[],skipped:[],errors:[],mergeDetails:{},overwritten:[],filePaths:{}}),"emptyResult"),JC=__name(e=>"local-global"===e?"global":"remote-project"===e?"remote project":"remote-user"===e?"remote":"source","sourceName");async function resolvePullStrategy(e){const{flagStrategy:t,overwrite:n,existingPkg:r,source:o,tastePkg:s}=e;return"skip"===t?r?"skip":"merge":"merge"===t?"merge":"overwrite"===t||n?"overwrite":r&&"local-global"===o?promptGlobalPullStrategy({packageName:s.category,localPkg:r,globalLearningsCount:s.learnings.length}):"merge"}async function executePullStrategy(e){const{tastePkg:t,source:n,flagStrategy:r,overwrite:o,result:s}=e,a=await getPackage2({category:t.category}),i=await resolvePullStrategy({flagStrategy:r,overwrite:o,existingPkg:a,source:n,tastePkg:t});if("skip"===i)return void s.skipped.push(t.category);if("overwrite"===i&&(await writePackage2({pkg:t}),s.packagesPulled.push(t.category),s.overwritten.push(t.category)),"merge"===i){const{pkg:e,details:n}=mergeOrKeep({source:t,existing:a});await writePackage2({pkg:e}),s.packagesPulled.push(t.category),s.mergeDetails[t.category]=n}const l=getCategoryTasteFile({target:"local-project",category:t.category});s.filePaths[t.category]=l}async function pullSinglePackage(e){const{tastePkg:t,result:n}=e;try{await executePullStrategy(e)}catch(e){n.success=!1,n.errors.push({pkg:t.category,error:e instanceof Error?e.message:String(e)})}}async function pull(e){const{packages:t,source:n,overwrite:r=!1,strategy:o}=e;if("local-global"!==n&&"remote-project"!==n&&"remote-user"!==n)return YC({pkg:"all",error:`Invalid source: ${n}`});const s=JC(n);let a;try{a="local-global"===n?await getAllPackages():await getAllPackages3()}catch(e){return YC({pkg:"all",error:e instanceof Error?e.message:String(e)})}if(0===a.length)return YC({pkg:"all",error:`No taste packages found in ${s}`});const i=validatePackages({packages:a,label:s});if(i.length>0)return{success:!1,packagesPulled:[],errors:[...i],mergeDetails:{},overwritten:[],filePaths:{}};const l=t.length>0?a.filter(e=>t.includes(e.category)):a;if(t.length>0&&0===l.length)return{success:!1,packagesPulled:[],errors:t.map(e=>({pkg:e,error:`Taste package not found in ${s}`})),mergeDetails:{},overwritten:[],filePaths:{}};const u=QC();for(const e of l)await pullSinglePackage({tastePkg:e,source:n,flagStrategy:o,overwrite:r,result:u});return u}async function executePullRemote(e){const{owner:t,packageName:n,overwrite:r,flagStrategy:o,result:s}=e,a=await downloadPackage({owner:t,packageName:n});if(!a)return YC({pkg:n,error:"Taste package not found in remote"});const{type:i,files:l}=a,u=validateRemoteFiles({files:l,packageName:n});if(u.length>0)return{success:!1,packagesPulled:[],errors:[...u],mergeDetails:{},overwritten:[],filePaths:{}};const d={files:l,packageName:n,owner:t,overwrite:r,flagStrategy:o,result:s};return"project"===i?(await pullProjectPackage(d),s):(await pullCategoryPackage(d),s)}async function pullRemote(e){const{owner:t,packageName:n,overwrite:r=!1,strategy:o}=e,s=QC();try{return await executePullRemote({owner:t,packageName:n,overwrite:r,flagStrategy:o,result:s})}catch(e){return YC({pkg:n,error:e instanceof Error?e.message:String(e)})}}function logResult(e){if(wasPrompted())return nt.outro(e),void setPrompted(!1);console.log(e)}function buildPullMessage(e){const{pkgName:t,sourceName:n,filePath:r,options:o,mergeDetails:s}=e,a=wasPrompted()?"":`${He.tick} `,i=r?ne.dim(`\n ${shortenPath(r)}`):"";if(o.overwrite)return`${ne.green(a)}Replaced ${ne.green(`'${t}'`)} taste package in project`+i;if(s){const e=formatMergeParts(s);return`${ne.green(a)}Pulled ${ne.green(`'${t}'`)} taste package from ${n} ${ne.gray(`(${e.join(", ")})`)}`+i}return`${ne.green(a)}Pulled ${ne.green(`'${t}'`)} taste package from ${n}`+i}function logPullSingleSuccess(e){const{result:t,sourceName:n,options:r}=e;if(1!==t.packagesPulled.length)return!1;const o=t.packagesPulled[0],s=t.filePaths?.[o],a=t.mergeDetails?.[o];return logResult(buildPullMessage({pkgName:o,sourceName:n,filePath:s,options:r,mergeDetails:a})),!r.overwrite&&!!a&&hasMergeConflictRisk(a)}function logPullSummary(e){const{result:t,sourceName:n}=e,r=t.overwritten??[],o=t.skipped??[],s=t.packagesPulled.filter(e=>!r.includes(e)),a=t.packagesPulled.length+o.length,i=`${a} ${1===a?"package":"packages"}`,l=[];return s.length>0&&l.push(wrapLine(`${ne.green("Pulled")} (${s.length}) ${s.join(", ")}`,wasPrompted()?4:0)),r.length>0&&l.push(wrapLine(`${ne.yellow("Overwritten")} (${r.length}) ${r.join(", ")}`,wasPrompted()?4:0)),o.length>0&&l.push(wrapLine(`${ne.dim("Skipped")} (${o.length}) ${ne.dim(o.join(", "))}`,wasPrompted()?4:0)),wasPrompted()?(l.length>0&&nt.log.message(l.join("\n")),nt.outro(`${i} from ${n}`),setPrompted(!1),hasMergeConflictRiskInRecord(t.mergeDetails??{})):(console.log(`${ne.green(He.tick)} ${i} from ${n}`),l.length>0&&console.log(l.join("\n")),hasMergeConflictRiskInRecord(t.mergeDetails??{}))}function logPullSuccess(e){const{result:t,sourceName:n,options:r}=e,o=t.skipped??[];t.packagesPulled.length+o.length>1?logPullSummary({result:t,sourceName:n})&&logMergeReviewTip():o.length>0?logResult(ne.yellow(`Skipped '${o[0]}' — kept local version`)):logPullSingleSuccess({result:t,sourceName:n,options:r})&&logMergeReviewTip()}function createPullCommand(){return new Ue("pull").argument("[package]","Taste package name, or owner/package to pull from remote").option("-g, --global","Pull taste package from global storage (~/.commandcode)").addOption(new Be("--local","Use local server").hideHelp()).option("--remote","Pull taste package from commandcode.ai remote").option("--all","Pull all taste packages from global").option("--overwrite","Replace local package without prompting").option("--skip","Keep local package, skip conflicting pull").option("--merge","Auto-merge conflicting learnings without prompting").addOption(new Be("--staging","Use staging environment").hideHelp()).description(`Pull taste packages from remote or global into the project ${ne.dim("(prompts on conflicts)")}`).action(withErrorHandler(async(e,t)=>{setPrompted(!1);const n=resolveRemoteDefault(t),{result:r,owner:o}=await runPull({packageName:e,options:n});r.success||handleResultErrors(r.errors),logPullSuccess({result:r,sourceName:n.remote?o??"remote":"global",options:n})}))}function validatePullOptions(e){const{packageName:t,options:n}=e;n.global&&n.remote&&exitWithError("--global and --remote are mutually exclusive — pick one source"),n.remote&&n.all&&exitWithUsage({message:"--all is not supported for remote pull — specify a package instead",usage:[`${getBinaryCommand()} taste pull <owner>/<package> pull a taste package from remote`]}),n.remote&&!t&&exitWithUsage({message:"Specify a taste package to pull from remote",usage:[`${getBinaryCommand()} taste pull <owner>/<package> pull a taste package from remote`,`${getBinaryCommand()} taste pull <package> -g pull a taste package from global`,`${getBinaryCommand()} taste pull --all -g pull all taste packages from global`]}),n.remote&&t&&!t.includes("/")&&exitWithUsage({message:`Remote pull requires owner/package format — got '${t}'`,usage:[`${getBinaryCommand()} taste pull <owner>/<package> e.g. ${getBinaryCommand()} taste pull ahmadawais/code-style`]}),t||n.all||exitWithUsage({message:"Specify a taste package name or use --all to pull everything",usage:[`${getBinaryCommand()} taste pull <owner>/<package> pull a taste package from remote`,`${getBinaryCommand()} taste pull <package> -g pull a taste package from global`,`${getBinaryCommand()} taste pull --all -g pull all taste packages from global`]}),t&&n.all&&exitWithError("Use either a package name or --all, not both"),resolveConflictStrategy(n)}async function runPull(e){const{packageName:t,options:n}=e;console.log("");const r=resolveRemoteDefault(n);validatePullOptions({packageName:t,options:r});const o=resolveConflictStrategy(r);return r.remote&&t?pullRemoteSingle({packageName:t,options:r,strategy:o}):pullGlobal({packageName:t,options:r,strategy:o})}async function pullRemoteSingle(e){const{packageName:t,options:n,strategy:r}=e,o=parseOwnerPackage(t);o||exitWithError("Invalid format — use owner/package (e.g. ahmadawais/code-style)"),setActiveSpinner(We("Pulling taste package").start());const s=await pullRemote({owner:o.owner,packageName:o.packageName,overwrite:n.overwrite,strategy:r});return stopActiveSpinner(),{result:s,owner:o.owner}}async function pullGlobal(e){const{packageName:t,options:n,strategy:r}=e;setActiveSpinner(We("Pulling taste package").start());const o=n.all||!t?[]:[t],s=await pull({packages:o,source:"local-global",overwrite:n.overwrite,strategy:r});return stopActiveSpinner(),{result:s}}async function fetchUserNamespaces(){const e=getApiBaseUrl(),t=new Nu({baseUrl:e}),n=await t.get({endpoint:Dt.ALPHA.NAMESPACES});if(!n.success)throw new Error("Failed to fetch namespaces");if("org"===n.type)return{userName:n.org.login,orgs:[]};const r=n.orgs.map(e=>({id:e.id,login:e.login,name:e.name}));return{userName:n.user.userName,orgs:r}}function logResult2(e){if(wasPrompted())return nt.outro(e),void setPrompted(!1);console.log(e)}function logPushAllSuccess(t){const{result:n,options:r}=t;if(!r.all)return!1;if(0===n.packagesPushed.length){const e=n.skipped?.length??0;if(e>0){const t=wasPrompted()?"":`${He.tick} `,n=`${e} ${1===e?"package":"packages"}`;logResult2(`${ne.green(t)}Skipped ${n}`)}return!1}const o=n.packagesPushed.length,s=`${o} ${1===o?"package":"packages"}`,a=n.filePaths?.[n.packagesPushed[0]],i=r.global&&a?shortenPath(e.dirname(e.dirname(a))):a,l=wasPrompted()?"":`${He.tick} `;if(!i)return logResult2(`${ne.green(l)}Pushed ${s} to remote`),!1;if(r.overwrite||Boolean(n.overwritten?.length)){let e=0;if(n.mergeDetails)for(const t of Object.values(n.mergeDetails))e+=t.updated??0;const t=e>0?` ${ne.gray(`(${e} ${1===e?"learning":"learnings"} replaced)`)}`:"";return logResult2(`${ne.green(l)}Replaced ${s} in ${i}${t}`),!1}if(!n.mergeDetails||0===Object.keys(n.mergeDetails).length)return logResult2(`${ne.green(l)}Pushed ${s} to ${i}`),!1;let u=0,d=0,m=0;for(const e of Object.values(n.mergeDetails))u+=e.added??0,d+=e.updated??0,m+=e.unchanged??0;const g=formatMergeParts({added:u,updated:d,unchanged:m}),h=g.length>0?` ${ne.gray(`(${g.join(", ")})`)}`:"";return logResult2(`${ne.green(l)}Pushed ${s} to ${i}${h}`),(u>0||d>0)&&m>0}function logPushSingleSuccess(e){const{result:t,options:n}=e;if(n.all)return!1;if(1!==t.packagesPushed.length)return!1;const r=t.packagesPushed[0],o=t.filePaths?.[r],s=n.remote&&o,a=s?o:"global",i=wasPrompted()?"":`${He.tick} `,l=!s&&o?ne.dim(`\n ${shortenPath(o)}`):"";if(n.overwrite)return logResult2(`${ne.green(i)}Replaced ${ne.green(`'${r}'`)} taste package in ${a}`+l),!1;if(t.mergeDetails?.[r]){const e=t.mergeDetails[r],n=formatMergeParts(e);return logResult2(`${ne.green(i)}Pushed ${ne.green(`'${r}'`)} taste package to ${a} ${ne.gray(`(${n.join(", ")})`)}`+l),hasMergeConflictRisk(e)}return logResult2(`${ne.green(i)}Pushed ${ne.green(`'${r}'`)} taste package to ${a}`+l),!1}function logPushMultiSuccess(e){const{result:t,options:n}=e;if(n.all)return!1;if(t.packagesPushed.length<=1)return!1;const r=n.remote?"remote":"global",o=wasPrompted()?"":`${He.tick} `;return logResult2(wrapLine(`${ne.green(o)}Pushed ${ne.green(t.packagesPushed.length)} taste packages ${ne.green(`(${t.packagesPushed.join(", ")})`)} to ${r}`)),!(n.overwrite||!t.mergeDetails)&&hasMergeConflictRiskInRecord(t.mergeDetails)}function logPushUrls(e){const{result:t,options:n}=e;if(!n.remote||!t.filePaths)return;const r=new Set;for(const e of t.packagesPushed){const n=t.filePaths[e];if(!n||!n.includes("/"))continue;const[o,s]=n.split("/");if(!o||!s)continue;const a=getPackageLink({owner:o,packageName:s});r.has(a)||(r.add(a),console.log(ne.gray(` ${a}`)))}}function logConflictSummary(e){const{result:t}=e,n=t.overwritten??[],r=t.skipped??[],o=t.packagesPushed.filter(e=>!n.includes(e)),s=t.packagesPushed.length+r.length,a=[];o.length>0&&a.push(wrapLine(`${ne.green("Merged")} (${o.length}) ${o.join(", ")}`,4)),n.length>0&&a.push(wrapLine(`${ne.yellow("Overwritten")} (${n.length}) ${n.join(", ")}`,4)),r.length>0&&a.push(wrapLine(`${ne.dim("Skipped")} (${r.length}) ${ne.dim(r.join(", "))}`,4)),a.length>0&&nt.log.message(a.join("\n"));const i=`${s} ${1===s?"package":"packages"}`;nt.outro(i)}function logPushBreakdown(e){const t=e.overwritten??[],n=e.skipped??[];if(0===n.length&&0===t.length)return;const r=e.packagesPushed.filter(e=>!t.includes(e)),o=[];r.length>0&&o.push(wrapLine(`${ne.green("Pushed")} (${r.length}) ${r.join(", ")}`)),t.length>0&&o.push(wrapLine(`${ne.yellow("Overwritten")} (${t.length}) ${t.join(", ")}`)),n.length>0&&o.push(wrapLine(`${ne.dim("Skipped")} (${n.length}) ${ne.dim(n.join(", "))}`)),o.length>0&&console.log(o.join("\n"))}function logPushSuccess(e){const{result:t,options:n}=e;if(wasPrompted())return setPrompted(!1),logConflictSummary({result:t}),void logPushUrls({result:t,options:n});const r=logPushAllSuccess({result:t,options:n})||logPushSingleSuccess({result:t,options:n})||logPushMultiSuccess({result:t,options:n});n.all&&logPushBreakdown(t),logPushUrls({result:t,options:n}),r&&logMergeReviewTip()}__name(resolvePullStrategy,"resolvePullStrategy"),__name(executePullStrategy,"executePullStrategy"),__name(pullSinglePackage,"pullSinglePackage"),__name(pull,"pull"),__name(executePullRemote,"executePullRemote"),__name(pullRemote,"pullRemote"),pn(),__name(logResult,"logResult"),__name(buildPullMessage,"buildPullMessage"),__name(logPullSingleSuccess,"logPullSingleSuccess"),__name(logPullSummary,"logPullSummary"),__name(logPullSuccess,"logPullSuccess"),__name(createPullCommand,"createPullCommand"),__name(validatePullOptions,"validatePullOptions"),__name(runPull,"runPull"),__name(pullRemoteSingle,"pullRemoteSingle"),__name(pullGlobal,"pullGlobal"),pn(),wn(),Sn(),pn(),wn(),__name(fetchUserNamespaces,"fetchUserNamespaces"),pn(),__name(logResult2,"logResult"),__name(logPushAllSuccess,"logPushAllSuccess"),__name(logPushSingleSuccess,"logPushSingleSuccess"),__name(logPushMultiSuccess,"logPushMultiSuccess"),__name(logPushUrls,"logPushUrls"),__name(logConflictSummary,"logConflictSummary"),__name(logPushBreakdown,"logPushBreakdown"),__name(logPushSuccess,"logPushSuccess"),pn(),pn();var XC=__name(({pkg:e,error:t})=>({success:!1,packagesPushed:[],skipped:[],errors:[{pkg:e,error:t}],mergeDetails:{},overwritten:[],filePaths:{}}),"fail"),ZC=__name(e=>e.reduce((e,t)=>t.file.endsWith("taste.md")?e+parseTasteContent(t.content).length:e,0),"countRemoteLearnings");async function resolvePushAllStrategy(e){const{flagStrategy:t,overwrite:n,existingProject:r,packagesToPush:o,projectName:s,owner:a}=e;if("skip"===t)return"skip";if("overwrite"===t||n)return"overwrite";if("merge"===t)return"overwrite";if(!r)return"overwrite";const i=r.type??"category",l=o.reduce((e,t)=>e+t.learnings.length,0),u=ZC(r.files);return"project"!==i?promptTypeMismatchStrategy({packageName:s,owner:a,localLearningsCount:l,remoteLearningsCount:u}):promptSameTypeStrategy({packageName:s,owner:a,localLearningsCount:l,remoteLearningsCount:u})}async function executePushAllRemote(t){const{packagesToPush:n,owner:r,overwrite:o,isPublic:s,isPublicExplicitlySet:a,flagStrategy:i}=t,l=e.basename(process.cwd()),u={success:!0,packagesPushed:[],skipped:[],errors:[],mergeDetails:{},overwritten:[],filePaths:{}},d=await downloadPackage({owner:r,packageName:l}),m=await resolvePushAllStrategy({flagStrategy:i,overwrite:o,existingProject:d,packagesToPush:n,projectName:l,owner:r});if("skip"===m)return u.skipped.push(...n.map(e=>e.category)),u;await writePackages({packages:n,projectName:l,owner:r,isPublic:a?s:d?.isPublic??!1,overwrite:"overwrite"===m});for(const e of n)u.packagesPushed.push(e.category),u.filePaths[e.category]=`${r}/${l}`,u.mergeDetails[e.category]={added:e.learnings.length,updated:0,unchanged:0};return d&&u.overwritten.push(...n.map(e=>e.category)),u}async function pushAllRemote(e){try{return await executePushAllRemote(e)}catch(e){return XC({pkg:"all",error:e instanceof Error?e.message:String(e)})}}__name(resolvePushAllStrategy,"resolvePushAllStrategy"),__name(executePushAllRemote,"executePushAllRemote"),__name(pushAllRemote,"pushAllRemote");var ev=__name(({pkg:e,error:t})=>({success:!1,packagesPushed:[],skipped:[],errors:[{pkg:e,error:t}],mergeDetails:{},overwritten:[],filePaths:{}}),"fail"),tv=__name(()=>({success:!0,packagesPushed:[],skipped:[],errors:[],mergeDetails:{},overwritten:[],filePaths:{}}),"emptyResult");async function writePkg(e){const{pkg:t,target:n,owner:r,isPublic:o,overwrite:s}=e;if("local-global"!==n){if(!r)throw new Error("Failed to get owner for remote push");await writePackage3({pkg:t,owner:r,isPublic:o,overwrite:s})}else await writePackage({pkg:t})}__name(writePkg,"writePkg");var nv=__name(e=>{const{target:t,category:n,owner:r}=e;return"local-global"===t?getCategoryTasteFile({target:"local-global",category:n}):"remote-project"!==t&&"remote-user"!==t||!r?void 0:`${r}/${n}`},"getDestPath");async function getUserOwner(){try{const e=await getAuthenticatedEntity();if(e.success&&e.user?.userName)return e.user.userName}catch{}}async function resolveSinglePushStrategy(e){const{flagStrategy:t,overwrite:n,existingPkg:r,target:o,tastePkg:s}=e;return"skip"===t?r?"skip":"merge":"merge"===t?"merge":"overwrite"===t||n?"overwrite":r&&"local-global"===o?promptGlobalPushStrategy({packageName:s.category,localLearningsCount:s.learnings.length,globalPkg:r}):"merge"}async function executePushStrategy(e){const{tastePkg:t,target:n,flagStrategy:r,overwrite:o,userOwner:s,isPublic:a,result:i}=e,l="local-global"===n?await getPackage({category:t.category}):await getPackage3({category:t.category}),u=await resolveSinglePushStrategy({flagStrategy:r,overwrite:o,existingPkg:l,target:n,tastePkg:t});if("skip"===u)return void i.skipped.push(t.category);if("overwrite"===u&&(await writePkg({pkg:t,target:n,owner:s,isPublic:a,overwrite:!0}),i.packagesPushed.push(t.category),i.overwritten.push(t.category),i.mergeDetails[t.category]={added:0,updated:t.learnings.length,unchanged:0}),"merge"===u){const{pkg:e,details:r}=mergeOrKeep({source:t,existing:l});await writePkg({pkg:e,target:n,owner:s,isPublic:a}),i.packagesPushed.push(t.category),i.mergeDetails[t.category]=r}const d=nv({target:n,category:t.category,owner:s});d&&(i.filePaths[t.category]=d)}async function pushSinglePackage(e){const{tastePkg:t,result:n}=e;try{await executePushStrategy(e)}catch(e){n.success=!1,n.errors.push({pkg:t.category,error:e instanceof Error?e.message:String(e)})}}async function push(e){const t=void 0!==e.isPublic,{packages:n,target:r,overwrite:o=!1,isPublic:s=!1,strategy:a}=e;if(!exists())return ev({pkg:"all",error:"No taste directory found in project"});const i=await getAllPackages2();if(0===i.length)return ev({pkg:"all",error:"No taste packages found in project"});const l=validatePackages({packages:i,label:"project"});if(l.length>0)return{success:!1,packagesPushed:[],skipped:[],errors:[...l],mergeDetails:{},overwritten:[],filePaths:{}};const u=n.length>0?i.filter(e=>n.includes(e.category)):i;if(n.length>0&&0===u.length)return{success:!1,packagesPushed:[],skipped:[],errors:n.map(e=>({pkg:e,error:"Taste package not found in project"})),mergeDetails:{},overwritten:[],filePaths:{}};const d="remote-project"===r||"remote-user"===r?e.owner??await getUserOwner():void 0;if("remote-project"===r&&0===n.length)return d?pushAllRemote({packagesToPush:u,owner:d,overwrite:o,isPublic:s,isPublicExplicitlySet:t,flagStrategy:a}):ev({pkg:"all",error:"Failed to get owner for remote push"});if("local-global"!==r&&"remote-project"!==r&&"remote-user"!==r)return ev({pkg:"all",error:`Invalid target: ${r}`});const m=tv();for(const e of u)await pushSinglePackage({tastePkg:e,target:r,flagStrategy:a,overwrite:o,userOwner:d,isPublic:s,result:m});return m}async function executeRemotePush(e){const t=void 0!==e.isPublic,{owner:n,packageName:r,overwrite:o=!1,isPublic:s=!1,strategy:a}=e,i=await getPackage2({category:r});if(!i)return ev({pkg:r,error:`Taste package '${r}' not found in local project`});const l=validateTasteFile({content:formatPackage({pkg:i}),filePath:`${i.category}/taste.md`});if(!l.valid){const e=formatValidationIssues({result:l,verbose:!0});return ev({pkg:r,error:`Validation failed:\n${e}`})}l.issues.filter(e=>"warning"===e.severity).length>0&&(console.warn(`\nWarning: Taste package '${r}' has validation warnings:\n`),console.warn(formatValidationIssues({result:l,verbose:!0})+"\n"));const u=await downloadRemotePackage({owner:n,packageName:r}),d=await resolveSinglePushStrategy({flagStrategy:a,overwrite:o,existingPkg:u,target:"remote-project",tastePkg:i}),m=t?s:u?.isPublic??!1,g=tv();if("skip"===d)return g.skipped.push(r),g;if("overwrite"===d&&(await writePackage3({pkg:i,owner:n,isPublic:m,overwrite:!0}),g.packagesPushed.push(r),g.overwritten.push(r)),"merge"===d){const{pkg:e,details:t}=mergeOrKeep({source:i,existing:u});await writePackage3({pkg:e,owner:n,isPublic:m}),g.packagesPushed.push(r),g.mergeDetails[r]=t}return g.filePaths[r]=`${n}/${r}`,g}async function pushRemote(e){const{packageName:t}=e;if(!exists())return ev({pkg:t,error:"No taste directory found in project"});try{return await executeRemotePush(e)}catch(e){return ev({pkg:t,error:e instanceof Error?e.message:String(e)})}}async function promptOwnerSelection(e){const{userName:t,orgs:n}=e;if(0===n.length)return t;const r=[{value:t,label:t,hint:"Personal"},...n.map(e=>({value:e.login,label:e.name||e.login,hint:"Organization"}))],o=await nt.select({message:"Owner",options:r,initialValue:t});return nt.isCancel(o)&&(nt.cancel("Operation cancelled"),process.exit(0)),o}function createPushCommand(){return new Ue("push").description(`Push taste packages to remote ${ne.dim("(commandcode.ai)")} or global ${ne.dim("(~/.commandcode)")}`).argument("[package]","Taste package name to push (omit with --all)").option("--all","Push all taste packages to remote").option("--remote","Push to commandcode.ai remote (default)").option("-g, --global","Push to local global storage (~/.commandcode)").addOption(new Be("--local","Use local server").hideHelp()).option("--public","Make package publicly discoverable on commandcode.ai").option("--private","Make package private (not publicly discoverable)").option("--owner <owner>","Push under a specific owner or organization").option("--overwrite","Replace existing package without prompting").option("--skip","Keep existing package, skip conflicting push").option("--merge","Auto-merge conflicting learnings without prompting").addOption(new Be("--staging","Push to staging environment").hideHelp()).action(withErrorHandler(async(e,t)=>{setPrompted(!1);const n=resolveRemoteDefault(t),r=await runPush({packageName:e,options:n});r.success||handleResultErrors(r.errors),logPushSuccess({result:r,options:n})}))}function validatePushOptions(e){const{packageName:t,options:n}=e;n.global&&n.remote&&exitWithError("--global and --remote are mutually exclusive — pick one destination"),n.public&&n.private&&exitWithError("--public and --private are mutually exclusive — pick one visibility"),n.owner&&n.global&&exitWithError("--owner only applies to remote pushes, not --global"),t||n.all||exitWithUsage({message:"Specify a taste package name or use --all to push everything",usage:[`${getBinaryCommand()} taste push <package> push a taste package to remote (default)`,`${getBinaryCommand()} taste push --all push all taste packages to remote`,`${getBinaryCommand()} taste push <package> -g push a taste package to global (~/.commandcode)`]}),t&&n.all&&exitWithError("Use either a package name or --all, not both"),resolveConflictStrategy(n)}__name(getUserOwner,"getUserOwner"),__name(resolveSinglePushStrategy,"resolveSinglePushStrategy"),__name(executePushStrategy,"executePushStrategy"),__name(pushSinglePackage,"pushSinglePackage"),__name(push,"push"),__name(executeRemotePush,"executeRemotePush"),__name(pushRemote,"pushRemote"),pn(),__name(promptOwnerSelection,"promptOwnerSelection"),__name(createPushCommand,"createPushCommand"),__name(validatePushOptions,"validatePushOptions");var rv=__name(e=>!!e.public||!e.private&&void 0,"resolveVisibility");async function validateOwnerAccess(e){let t;try{t=await fetchUserNamespaces()}catch(e){return void dlog(`[Auth] validateOwnerAccess: namespace service unavailable, skipping — ${e instanceof Error?e.message:String(e)}`)}const n=[t.userName,...t.orgs.map(e=>e.login)];n.includes(e)||exitWithError(`No push access to '${e}'. Available: ${n.join(", ")}`)}async function resolveOwnerForPush(e){const{packageName:t,owner:n}=e,r=parseOwnerPackage(t);if(r)return await validateOwnerAccess(r.owner),r;if(n)return await validateOwnerAccess(n),{owner:n,packageName:t};nt.intro(ne.dim(`pushing ${t}`)),setPrompted(!0);const o=nt.spinner();o.start("Resolving"),(await list({location:"local-project"})).some(e=>e.category===t)||(o.error("Failed"),nt.outro(ne.red(`Taste package '${t}' not found in project`)),process.exit(1));const s=await fetchUserNamespaces();return o.stop(s.orgs.length>0?"Select owner to push to":""),{owner:s.orgs.length>0?await promptOwnerSelection(s):s.userName,packageName:t}}async function runPush(e){const{packageName:t,options:n}=e;console.log("");const r=resolveRemoteDefault(n);validatePushOptions({packageName:t,options:r});const o=resolveConflictStrategy(r);return r.remote&&r.all?pushRemoteAll({options:r,strategy:o}):r.remote?pushRemoteSingle({packageName:t,options:r,strategy:o}):pushGlobal({packageName:t,options:r,strategy:o})}async function pushRemoteAll(t){const{options:n,strategy:r}=t;n.owner&&await validateOwnerAccess(n.owner);const o=(await getAllPackages2()).length,s=`${o} ${1===o?"package":"packages"}`,a=e.basename(process.cwd()),i=resolveStrategyLabel({strategy:r,isRemote:!0});console.log(ne.dim(` Pushing ${s} to ${a} (remote)${i}`)),console.log(""),setActiveSpinner(We("Pushing taste packages").start());const l=await push({packages:[],target:"remote-project",overwrite:n.overwrite,isPublic:rv(n),strategy:r,owner:n.owner});return stopActiveSpinner(),l}async function pushRemoteSingle(e){const{packageName:t,options:n,strategy:r}=e,{owner:o,packageName:s}=await resolveOwnerForPush({packageName:t,owner:n.owner});startPushSpinner({owner:o,pkgName:s});const a=await pushRemote({owner:o,packageName:s,overwrite:n.overwrite,isPublic:rv(n),strategy:r});return stopActiveSpinner(`Pushed to ${o}/${s}`),a}function resolveStrategyLabel(e){const{strategy:t,isRemote:n=!1}=e;return"overwrite"===t?" · overwrite":"skip"===t?" · skip conflicts":"merge"===t?" · auto-merge":n?"":" · will prompt on conflicts"}function startPushSpinner(e){const{owner:t,pkgName:n}=e;if(wasPrompted()){const e=nt.spinner();return e.start(`Pushing to ${t}/${n}`),void setActiveSpinner(e)}setActiveSpinner(We("Pushing taste package").start())}async function pushGlobal(e){const{packageName:t,options:n,strategy:r}=e,o=n.all||!t?[]:[t],s=await getAllPackages2(),a=o.length>0?o.length:s.length,i=`${a} ${1===a?"package":"packages"}`,l=shortenPath(getTastePath({target:"local-global"})),u=resolveStrategyLabel({strategy:r});console.log(ne.dim(` Pushing ${i} to ${l}${u}`)),console.log(""),setActiveSpinner(We("Pushing taste packages").start());const d=await push({packages:o,target:"local-global",overwrite:n.overwrite,strategy:r});return stopActiveSpinner(),d}function createTasteCommand(){const e=new Ue(Vt.TASTE);return e.description("Manage taste learning packages").allowUnknownOption().allowExcessArguments(),e.addCommand(createPushCommand()),e.addCommand(createPullCommand()),e.addCommand(createListCommand()),e.addCommand(createLintCommand()),e.addCommand(createOpenCommand()),isExperimentalEnabled()&&e.addCommand(createLearnCommand()),e}function formatVersion(e,t,n=!1){const r=n?Te.bold(Te.green(t)):Te.white(t);return`${Te.dim(e)} ${r}`}function showVersionDetails(e){console.log(formatVersion("Current:",e.currentVersion)),console.log(formatVersion("Latest: ",e.latestVersion,!0)),console.log(""),console.log(`Run ${Te.bold(Te.green(`${getBinaryCommand()} update`))} to install.`)}function showUpdateSuccessHint(){console.log(Te.dim(`Run ${Te.cyan(getBinaryCommand())} to start using the new version.`))}function showManualUpdateHint(e){console.log(Te.dim("Try updating manually:")),console.log(Te.cyan(`npm i -g command-code@${e}`))}function showCheckFailure(){console.log(Te.dim("Please check your internet connection or try again later."))}async function checkAction(){const e=We("Checking for updates...").start(),t=await checkForUpdateAvailable();if(!t)return e.fail("Failed to check for updates"),void showCheckFailure();t.updateAvailable?(e.stop(),console.log(""),console.log(`${Te.green(He.tick)} Update available`),showVersionDetails(t)):e.succeed(`Up to date ${Te.dim(`(${t.currentVersion})`)}`)}async function performUpdateAction(){const e=We("Checking for updates...").start(),t=await checkForUpdateAvailable();if(!t)return e.fail("Failed to check for updates"),void showCheckFailure();t.updateAvailable?(e.text=`Updating ${t.currentVersion} ${He.arrowRight} ${t.latestVersion}...`,(await performAutoUpdate({silent:!0,updateInfo:t})).success||(e.fail("Update failed"),trackError({error:sanitizeErrorForTelemetry({error:new Error("Update failed"),label:"cli_update_failed"}),context:{component:ms.UPDATE_COMMAND,heading:"CLI update failed","update.current_version":t.currentVersion,"update.target_version":t.latestVersion}}),showManualUpdateHint(t.latestVersion),await shutdownTelemetry(),process.exit(1)),e.succeed(`Updated to v${t.latestVersion}`),showUpdateSuccessHint()):e.succeed(`Up to date ${Te.dim(`(${t.currentVersion})`)}`)}async function updateAction(e){e.checkOnly?await checkAction():await performUpdateAction()}__name(validateOwnerAccess,"validateOwnerAccess"),__name(resolveOwnerForPush,"resolveOwnerForPush"),__name(runPush,"runPush"),__name(pushRemoteAll,"pushRemoteAll"),__name(pushRemoteSingle,"pushRemoteSingle"),__name(resolveStrategyLabel,"resolveStrategyLabel"),__name(startPushSpinner,"startPushSpinner"),__name(pushGlobal,"pushGlobal"),__name(createTasteCommand,"createTasteCommand"),pn(),wn(),__name(formatVersion,"formatVersion"),__name(showVersionDetails,"showVersionDetails"),__name(showUpdateSuccessHint,"showUpdateSuccessHint"),__name(showManualUpdateHint,"showManualUpdateHint"),__name(showCheckFailure,"showCheckFailure"),__name(checkAction,"checkAction"),__name(performUpdateAction,"performUpdateAction"),__name(updateAction,"updateAction");var ov=new Ue("update").description("Update Command Code to the latest version").option("--check-only","Check for updates without installing").allowUnknownOption().allowExcessArguments().action(updateAction);pn(),wn();var sv=__name((e,t)=>`${He.info} ${e}: ${Te.cyan(t)}`,"formatInfoLine"),av=__name(e=>Te.bold(`${e}:`),"formatSectionHeader"),iv=__name(e=>Te.red(e),"formatError"),lv=__name(e=>e instanceof Error?e.message:"Unknown error","formatErrorMessage"),cv=__name(e=>["",av("User Information"),sv("Name",e.name),sv("Email",e.email),sv("Username",e.userName)],"buildUserOutput"),uv=__name(e=>["",av("Organization"),sv("Name",e.name),sv("Login",e.login)],"buildOrgOutput"),dv=__name(e=>{e.forEach(e=>console.log(e))},"printLines"),mv=__name((e,t)=>{dv(cv(e)),t&&dv(uv(t)),console.log("")},"displayUserInfo"),pv=__name(e=>null!==e&&e.length>0,"validateApiKey"),gv=__name(e=>e.success&&null!==e.user,"validateUserData"),hv=`Not authenticated. Please login using "${getBinaryCommand()} auth login"`;async function whoamiAction(){const e=We("Fetching user information...").start();try{const t=await getAuthKey();pv(t)||(e.fail(iv(hv)),process.exit(1));const n=await getAuthenticatedEntity();gv(n)||(e.fail(iv("Failed to fetch user info")),process.exit(1)),e.succeed("User information loaded"),mv(n.user,n.org)}catch(t){e.fail(iv(`Error: ${lv(t)}`)),process.exit(1)}}__name(whoamiAction,"whoamiAction");var fv=new Ue("whoami").description("Display current user information").allowUnknownOption().allowExcessArguments().action(whoamiAction);function normalizeGitUrl(e){let t=e.trim();const n=t.match(/^git@([^:]+):(.+?)(?:\.git)?$/);return n?`https://${n[1]}/${n[2]}`:(t=t.replace(/\.git$/,""),t)}function validateGitRepo(){try{if("true"!==Ne("git rev-parse --is-inside-work-tree",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim())throw new Error("Not inside a git repository.")}catch{throw new Error("Sandbox requires a git repository with a GitHub remote.")}let e;try{e=Ne("git remote get-url origin",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{throw new Error("No GitHub remote found. Add one with: git remote add origin https://github.com/you/repo")}const t=normalizeGitUrl(e);let n;try{n=Ne("git branch --show-current",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}catch{throw new Error("Failed to determine current branch.")}if(!n)throw new Error("Detached HEAD state. Please checkout a branch first.");if(!/^[\w./-]+$/.test(n))throw new Error("Branch name contains invalid characters. Please use a simpler branch name.");try{if(!Ne(`git ls-remote --heads origin ${n}`,{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim())throw new Error(`Branch "${n}" not found on remote. Push it first: git push -u origin ${n}`)}catch(e){if(e instanceof Error&&e.message.includes("not found on remote"))throw e;throw new Error(`Branch "${n}" not found on remote. Push it first: git push -u origin ${n}`)}return{repoUrl:t,branch:n,isClean:""===Ne("git status --porcelain",{encoding:"utf-8",stdio:["pipe","pipe","pipe"]}).trim()}}pn(),pn(),wn(),pn(),__name(normalizeGitUrl,"normalizeGitUrl"),__name(validateGitRepo,"validateGitRepo"),pn(),pn();var yv=["completed","failed","cancelled","timed_out"];function isTerminalStatus(e){return yv.includes(e)}__name(isTerminalStatus,"isTerminalStatus"),wn();var wv={setting_up:"Setting up sandbox...",cloning:"Cloning repository..."};function stopAllSpinners({state:e}){e.workingSpinner&&(e.workingSpinner.stop(),e.workingSpinner=null),e.currentSpinner&&(e.currentSpinner.stop(),e.currentSpinner=null)}function renderStatusEvent({event:e,state:t}){const n=e.data.status,r=wv[n],o="setup"===t.phase;if(t.isResume&&o&&!isTerminalStatus(n)&&"running"!==n)r&&t.workingSpinner&&(t.workingSpinner.text=r);else{if(r&&o&&(t.currentSpinner&&t.currentSpinner.succeed(),t.currentSpinner=We({stream:process.stderr,text:r}).start()),"running"===n)return t.currentSpinner&&(t.currentSpinner.succeed(),t.currentSpinner=null),t.phase="running",void(t.workingSpinner||(t.workingSpinner=We({stream:process.stderr}).start()));if("completed"===n){t.workingSpinner&&(t.workingSpinner.succeed("Session completed"),t.workingSpinner=null),t.currentSpinner&&(t.currentSpinner.succeed(),t.currentSpinner=null),t.phase="done";const n=e.data.prUrl;return void(n&&console.error(`PR: ${Te.cyan(n)}`))}if("failed"===n){const n=e.data.message||"Unknown error";return t.workingSpinner&&(t.workingSpinner.fail(n),t.workingSpinner=null),t.currentSpinner&&(t.currentSpinner.fail(n),t.currentSpinner=null),void(t.phase="done")}if("timed_out"===n)return t.workingSpinner&&(t.workingSpinner.fail("Session timed out"),t.workingSpinner=null),t.currentSpinner&&(t.currentSpinner.fail("Timed out"),t.currentSpinner=null),void(t.phase="done");"cancelled"===n&&(stopAllSpinners({state:t}),t.phase="done",console.error(`\n${Te.yellow("Cancelled.")}`))}}function renderEvent({event:e,state:t}){if("status"!==e.type){if("pty"===e.type){const n=e.data.content;return void(n&&(t.workingSpinner&&t.workingSpinner.stop(),process.stdout.write(n),t.workingSpinner&&t.workingSpinner.start()))}if("error"===e.type){t.currentSpinner&&(t.currentSpinner.fail(),t.currentSpinner=null);const n=e.data.message;console.error(`${He.cross} ${Te.red(n)}`)}}else renderStatusEvent({event:e,state:t})}function setupInputHandling({callbacks:e}){const t=__name(t=>{3===t[0]?e.onCancel():4===t[0]&&e.onDetach()},"onStdinData"),n=process.rawListeners("SIGINT").slice();return process.removeAllListeners("SIGINT"),process.stdin.isTTY?(process.stdin.setRawMode(!0),process.stdin.resume(),process.stdin.on("data",t),process.on("SIGINT",()=>{})):process.on("SIGINT",()=>e.onCancel()),()=>{process.stdin.isTTY&&(process.stdin.removeListener("data",t),process.stdin.setRawMode(!1),process.stdin.pause()),process.removeAllListeners("SIGINT");for(const e of n)process.on("SIGINT",e)}}function setupResizeForwarding({ws:e}){const t=__name(()=>{e.readyState===WebSocket.OPEN&&e.send(JSON.stringify({action:"resize",cols:process.stdout.columns,rows:process.stdout.rows}))},"onResize");return process.stdout.on("resize",t),()=>process.stdout.removeListener("resize",t)}function sendTerminalSize({ws:e}){e.send(JSON.stringify({action:"resize",cols:process.stdout.columns||120,rows:process.stdout.rows||30}))}async function streamSession({sessionId:e,prompt:t,lastEventId:n=0,isResume:r=!1}){const o=getApiBaseUrl().replace(/^http/,"ws"),s=await getAuthKey();if(!s)throw new Error(`Not authenticated. Run: ${getBinaryCommand()} login`);const a=new URLSearchParams({token:s,...n>0?{lastEventId:String(n)}:{}}),i=`${o}/alpha/sandbox/stream/${e}?${a.toString()}`;return new Promise((t,o)=>{const s=new WebSocket(i),a={currentSpinner:null,workingSpinner:null,phase:"setup",lastEventId:n,isResume:r};r&&(a.currentSpinner=We({stream:process.stderr,text:"Reconnecting..."}).start());const l=__name(()=>{a.phase="done",stopAllSpinners({state:a}),s.close(),console.error(`\n${Te.yellow("Detached.")} Session still running.`),console.error(`Resume with: ${Te.cyan(`${getBinaryCommand()} --experimental sandbox --id ${e}`)}`),g(),t()},"detach"),u=__name(()=>{a.phase="done",stopAllSpinners({state:a}),s.readyState===WebSocket.OPEN&&s.send(JSON.stringify({action:"cancel"})),s.close(),console.error(`\n${Te.yellow("Sandbox stopped.")}`),g(),t()},"cancelSandbox"),d=setupResizeForwarding({ws:s}),m=setupInputHandling({callbacks:{onCancel:u,onDetach:l}});process.once("SIGTERM",l);const g=__name(()=>{d(),m(),process.removeListener("SIGTERM",l)},"teardown");s.addEventListener("open",()=>{sendTerminalSize({ws:s}),a.currentSpinner&&(a.currentSpinner.stop(),a.currentSpinner=null),console.error(""),console.error(`${Te.yellow("[Ctrl+C]")} ${Te.dim("stop")} ${Te.yellow("[Ctrl+D]")} ${Te.dim("detach")}`),console.error(`${Te.dim("Session:")} ${Te.gray(e)}`),console.error(""),r&&(a.workingSpinner=We({stream:process.stderr}).start())}),s.addEventListener("message",e=>{try{const n="string"==typeof e.data?e.data:e.data.toString(),r=JSON.parse(n);renderEvent({event:r,state:a}),void 0!==r.id&&(a.lastEventId=r.id),"status"===r.type&&isTerminalStatus(r.data.status)&&(s.close(),g(),t())}catch{}}),s.addEventListener("error",()=>{g(),a.currentSpinner&&(a.currentSpinner.fail("Connection error"),a.currentSpinner=null),o(new Error("WebSocket connection failed"))}),s.addEventListener("close",()=>{"done"!==a.phase&&(a.phase="done",stopAllSpinners({state:a}),g(),console.error(`\n${Te.yellow("Disconnected.")} Session still running.`),console.error(`Resume with: ${Te.cyan(`${getBinaryCommand()} --experimental sandbox --id ${e}`)}`),t())})})}function readLocalConfigFiles(){let e="",t="";try{e=S.readFileSync(getAuthFile(),"utf-8")}catch{}try{t=S.readFileSync(getConfigFile(),"utf-8")}catch{}return{auth:e,config:t}}async function askQuestion(e){const t=ht.createInterface({input:process.stdin,output:process.stderr});return new Promise(n=>{t.question(e,e=>{t.close(),n(e)})})}async function startSandboxSession({repoUrl:e,branch:t,prompt:n,isInternalTeam:r,configFiles:o}){return new Nu({baseUrl:getApiBaseUrl()}).post({endpoint:Dt.ALPHA.SANDBOX.START,body:{repoUrl:e,branch:t,prompt:n,isInternalTeam:r,configFiles:o}})}async function sandboxMode({prompt:e,resume:t}){t&&(await streamSession({sessionId:t,isResume:!0}),process.exit(0)),await ensureAuthenticated()||process.exit(1);const n=validateGitRepo();n.isClean||console.error(Te.yellow("Warning: You have uncommitted changes. The sandbox clones from remote, so local changes won't be included."));const r=isInternalTeamFlagPresent(),o=readLocalConfigFiles(),s=e||await askQuestion(`${Te.bold("What do you want to do?")}\n${Te.cyan(">")} `);if(!s.trim())return void console.error(Te.yellow("No prompt provided. Aborting."));const a=s.trim().slice(0,Kt.MAX_PROMPT_CHARS),i=We({stream:process.stderr,text:"Starting sandbox session..."}).start();try{const e=await startSandboxSession({repoUrl:n.repoUrl,branch:n.branch,prompt:a,isInternalTeam:r,configFiles:o});i.succeed("Sandbox started"),await streamSession({sessionId:e.sessionId,prompt:a}),process.exit(0)}catch(e){i.fail("Failed to start sandbox session");const t=e instanceof ks,r=t?e.code:void 0;if(401===(t?e.status:void 0)||"UNAUTHORIZED"===r)console.error(Te.red(`\nAuthentication failed. Try logging in again: ${getBinaryCommand()} login`));else if("GITHUB_APP_NOT_INSTALLED"===r){const e=Te.cyan(Te.underline(n.repoUrl)),t=Te.cyan(Te.underline("https://github.com/apps/command-code-ai/installations/new"));console.error(`\n${Te.red("✖")} Command Code GitHub App isn't installed on ${e}`),console.error(` Install it here: ${t}`),console.error(Te.dim(" Then run this command again."))}else{const n=t&&"string"==typeof e.message?e.message:"Something went wrong. Please try again.";console.error(Te.red(`\n${n}`))}process.exit(1)}}function createSandboxCommand(){return new Ue("sandbox").description("Run a task autonomously in a sandbox").argument("[prompt]","Task description").option("--id <sessionId>","Resume an existing sandbox session").enablePositionalOptions().action(async(e,t)=>{try{await sandboxMode({prompt:e,resume:t.id})}catch(e){const t=e instanceof Error?e.message:"Unknown error";console.error(Te.red(t)),process.exit(1)}})}function validateSafeString(e,t){if(e.includes("..")||e.includes("\\"))throw new Error(`Invalid ${t}: path traversal sequences are not allowed.\nExpected format: owner/repo or owner/repo/path`);if(!/^[a-zA-Z0-9._/-]+$/.test(e))throw new Error(`Invalid ${t}: contains unsupported characters.\nOnly letters, numbers, hyphens, underscores, dots, and slashes are allowed.`)}function parseGitHubRepo(e){let t,n=e.replace(/^https?:\/\/github\.com\//,"");const r=n.lastIndexOf("@");r>0&&r<n.length-1&&(t=n.slice(r+1),n=n.slice(0,r),validateSafeString(t,"branch name"));const o=n.split("/");if(o.length<2)throw new Error("Invalid GitHub repository format. Expected: owner/repo or owner/repo/path");const[s,a,...i]=o;validateSafeString(s,"owner"),validateSafeString(a,"repository");const l=i.length>0?i.join("/"):void 0;return l&&validateSafeString(l,"path"),{owner:s,repo:a,path:l,branch:t}}function buildGigetSource(e){const{owner:t,repo:n,path:r,branch:o}=e;let s=`gh:${t}/${n}`;return r&&(s+=`/${r}`),o&&(s+=`#${o}`),s}async function fetchSkillFromGitHub(e){await cleanupStaleTempDirectories();const n=parseGitHubRepo(e),{owner:r,repo:o,path:s}=n;let a;if(s){const e=s.split("/").filter(Boolean);a=e[e.length-1]}else a=o;const i=t.join(D.tmpdir(),`commandcode-skill-${Q()}`);await U.mkdir(i,{recursive:!0});try{const e=buildGigetSource(n),{downloadTemplate:s}=await import("giget");try{await s(e,{dir:i,force:!0,silent:!0})}catch(t){if(!isCorruptedArchiveError(t))throw t;await clearGigetCache(r,o),await s(e,{dir:i,force:!0,silent:!0})}const l=t.join(i,"SKILL.md"),u=t.join(i,"skill.md");let d=!1;try{await U.access(l),d=!0}catch{}if(!d)try{await U.access(u),d=!0}catch{}if(!d)throw new Error(`SKILL.md not found in ${e}. Make sure the repository contains a SKILL.md file.`);return{tempDir:i,skillName:a}}catch(e){if(await U.rm(i,{recursive:!0,force:!0}).catch(()=>{}),e instanceof Error&&e.message.includes("SKILL.md not found"))throw e;throw wrapFetchError(e,r,o)}}async function discoverSkillsInRepo(e,t){const n=parseGitHubRepo(e),{owner:r,repo:o,path:s,branch:a}=n,{keepTempDir:i=!1}=t||{},{discoverSkillsLocally:l}=await Promise.resolve().then(()=>(Kn(),Vn)),u=await l({owner:r,repo:o,path:s,branch:a,keepTempDir:i});if(0===u.skills.length)throw new Error(`No skills found in repository ${r}/${o}${s?` at path "${s}"`:""}. Ensure the repository contains SKILL.md files.`);return u}async function resolveSkillMdPath(e){const n=t.join(e,"SKILL.md");try{return await U.access(n),n}catch{}const r=t.join(e,"skill.md");try{return await U.access(r),r}catch{}throw new Error(`SKILL.md not found in ${e}`)}function validateSkillName(e){const t=e.trim();if(!t||0===t.length)throw new Error("Invalid skill name: name cannot be empty");if(t.includes("/")||t.includes("\\"))throw new Error(`Invalid skill name: "${e}". Skill names cannot contain path separators (/ or \\).`);if(t.includes(".."))throw new Error(`Invalid skill name: "${e}". Skill names cannot contain parent directory references (..).`);if(t.startsWith("."))throw new Error(`Invalid skill name: "${e}". Skill names cannot start with a dot.`);if(!/^[a-z0-9-]+$/.test(t))throw new Error(`Invalid skill name: "${e}". Skill names must contain only lowercase letters, numbers, and hyphens.`);return t}async function validateSkillContent(e){const t=await resolveSkillMdPath(e),n=await U.readFile(t,"utf-8"),{data:r}=ee(n),o=Fl.parse(r);return{name:validateSkillName(o.name),description:o.description}}async function skillExists(e){const{skillName:n,location:r}=e,o="global"===r?getGlobalSkillsDir():getProjectSkillsDir(),s=t.join(o,n);try{return await U.access(s),!0}catch{return!1}}async function discoverSkills(e,t){return discoverSkillsInRepo(e,t)}async function installSkill(e){const{repoInput:n,options:r={}}=e,{global:o=!1,force:s=!1,skillName:a,discoveredSkill:i,cachedTempDir:l}=r;let u,d,m=n;if(a){let e;if(i)e=i;else{const t=await discoverSkillsInRepo(n);if(0===t.skills.length)throw new Error(`No skills found in repository: ${n}`);const r=t.skills.find(e=>e.name.toLowerCase()===a.toLowerCase());if(!r){const e=t.skills.map(e=>e.name).join(", ");throw new Error(`Skill "${a}" not found in repository. Available skills: ${e}`)}e=r}const t=parseGitHubRepo(n),r=[t.path,e.path&&"."!==e.path?e.path:void 0].filter(Boolean).join("/"),o=r?`${t.owner}/${t.repo}/${r}`:`${t.owner}/${t.repo}`;m=t.branch?`${o}@${t.branch}`:o}if(l&&i){u=i.path&&"."!==i.path?t.join(l,i.path):l,d=!1;try{await resolveSkillMdPath(u)}catch{const e=i.path&&"."!==i.path?`at ${i.path}`:"at root";throw new Error(`SKILL.md not found in cached directory ${e}. Make sure the repository contains a SKILL.md file.`)}}else u=(await fetchSkillFromGitHub(m)).tempDir,d=!0;try{const{name:e,description:n}=await validateSkillContent(u),r=e,a=o?"global":"project",i="global"===a?getGlobalSkillsDir():getProjectSkillsDir(),l=await skillExists({skillName:r,location:a});if(l&&!s)throw new Error(`Skill "${r}" already exists in ${"global"===a?"~/.commandcode/skills/":".commandcode/skills/"}. Use --force to overwrite.`);await U.mkdir(i,{recursive:!0});const d=t.join(i,r),{randomUUID:m}=await import("crypto"),g=t.join(i,`.${r}.tmp.${m()}`);try{await U.cp(u,g,{recursive:!0,force:!0,dereference:!1}),l&&s&&await U.rm(d,{recursive:!0,force:!0}),await U.rename(g,d)}catch(e){if(await U.rm(g,{recursive:!0,force:!0}).catch(()=>{}),e instanceof Error&&"code"in e&&("EEXIST"===e.code||"ENOTEMPTY"===e.code))throw new Error(`Skill "${r}" was created by another process during installation. Use --force to overwrite.`);throw e}let h;try{h=await resolveSkillMdPath(d)}catch{h=t.join(d,"SKILL.md")}return{name:r,description:n,location:a,path:h}}finally{d&&await U.rm(u,{recursive:!0,force:!0}).catch(()=>{})}}async function removeSkill(e){const{global:n=!1}=e,r=validateSkillName(e.skillName),o=n?"global":"project",s="global"===o?getGlobalSkillsDir():getProjectSkillsDir(),a=t.join(s,r);if(!await skillExists({skillName:r,location:o}))throw new Error(`Skill "${r}" not found in ${"global"===o?"global (~/.commandcode/skills/)":"project (.commandcode/skills/)"} skills.${"global"===o?"":" Use -g/--global to check global skills."}`);await U.rm(a,{recursive:!0,force:!0})}async function listSkills(){const{global:e,project:t,warnings:n}=await loadAllSkillSummariesWithWarnings(),r=getBundledSkillsDir(),o=[],s=[];for(const t of e){const e={name:t.name,description:t.description,location:isBundledSkillPath({filePath:t.filePath,bundledDir:r})?"bundled":"global",path:t.filePath};("bundled"===e.location?o:s).push(e)}return{global:s,project:t.map(e=>({name:e.name,description:e.description,location:"project",path:e.filePath})),bundled:o,warnings:n}}__name(stopAllSpinners,"stopAllSpinners"),__name(renderStatusEvent,"renderStatusEvent"),__name(renderEvent,"renderEvent"),__name(setupInputHandling,"setupInputHandling"),__name(setupResizeForwarding,"setupResizeForwarding"),__name(sendTerminalSize,"sendTerminalSize"),__name(streamSession,"streamSession"),__name(readLocalConfigFiles,"readLocalConfigFiles"),__name(askQuestion,"askQuestion"),__name(startSandboxSession,"startSandboxSession"),__name(sandboxMode,"sandboxMode"),__name(createSandboxCommand,"createSandboxCommand"),pn(),pn(),wn(),pn(),pn(),qn(),__name(validateSafeString,"validateSafeString"),__name(parseGitHubRepo,"parseGitHubRepo"),__name(buildGigetSource,"buildGigetSource"),__name(fetchSkillFromGitHub,"fetchSkillFromGitHub"),__name(discoverSkillsInRepo,"discoverSkillsInRepo"),__name(resolveSkillMdPath,"resolveSkillMdPath"),__name(validateSkillName,"validateSkillName"),__name(validateSkillContent,"validateSkillContent"),__name(skillExists,"skillExists"),__name(discoverSkills,"discoverSkills"),__name(installSkill,"installSkill"),__name(removeSkill,"removeSkill"),__name(listSkills,"listSkills");var Sv=[`${Te.dim("Usage:")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("<owner/repo>")}`,"",`${Te.dim("Examples:")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/my-skills")} ${Te.dim("# single-skill repo")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/skills/path/to/skill")} ${Te.dim("# specific path in repo")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/multi-skills -s my-skill")} ${Te.dim("# pick one from multi-skill repo")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/repo@branch")} ${Te.dim("# specific branch")}`,` ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.white("acme/repo --global")} ${Te.dim("# install to ~/.commandcode/skills/")}`],Ev=__name((e,t)=>`${Te.green(He.tick)} Installed ${Te.cyan(e)} ${Te.dim(`${He.arrowRight} ${t}/`)}`,"formatInstalled"),bv=__name(e=>`${Te.red(He.cross)} ${e}`,"formatError");async function cleanupAndExit(e,t){e&&await H(e,{recursive:!0,force:!0}).catch(()=>{}),process.exit(t)}function validateRepoFormat(e){(e.startsWith(".")||e.startsWith("/")||e.startsWith("~"))&&(console.error(bv("Local paths are not supported. Skills must be installed from GitHub.")),console.log(""),Sv.forEach(e=>console.log(e)),process.exit(1));const t=e.replace(/^https?:\/\/github\.com\//,""),n=t.lastIndexOf("@");(n>0?t.slice(0,n):t).split("/").filter(Boolean).length<2&&(console.error(bv(`Invalid repository: "${e}"`)),console.log(""),console.log(`Expected format: ${Te.cyan("owner/repo")} or ${Te.cyan("owner/repo/path")}`),console.log(""),Sv.forEach(e=>console.log(e)),process.exit(1))}async function addAction(e,t){const n=process.stdout.isTTY&&process.stdin.isTTY,r=t.global?"~/.commandcode/skills":".commandcode/skills";let o;validateRepoFormat(e);const s=We({text:`Fetching ${Te.cyan(e)}...`,color:"cyan"});try{let a=[];s.start();const i=await discoverSkills(e,{keepTempDir:!0}),{skills:l,tempDir:u}=i;if(o=u,s.stop(),0===l.length&&(console.error(bv(`No skills found in ${Te.cyan(e)}`)),console.log(Te.dim("The repository must contain at least one SKILL.md file.")),await cleanupAndExit(o,1)),t.skill){const n=l.find(e=>e.name.toLowerCase()===t.skill.toLowerCase());n||(console.error(bv(`Skill "${t.skill}" not found in ${Te.cyan(e)}`)),console.log(""),console.log(Te.dim("Available skills:")),l.forEach(e=>console.log(` ${Te.cyan(e.name)}`)),await cleanupAndExit(o,1)),a=[n]}else if(1===l.length)a=[l[0]];else if(n){const t=await rt({message:`Select skills to install from ${e}`,options:l.map(e=>({value:e.name,label:e.name})),required:!0});"symbol"==typeof t&&(console.log(Te.dim("Cancelled")),await cleanupAndExit(o,0));const n=t;a=l.filter(e=>n.includes(e.name))}else a=l;let d=0;for(const n of a)try{const s=We({text:`Installing ${Te.cyan(n.name)}...`,color:"cyan"});s.start();const a=await installSkill({repoInput:e,options:{global:t.global,force:t.force,skillName:n.name,discoveredSkill:n,cachedTempDir:o}});s.stop(),console.log(Ev(a.name,r))}catch(e){d++;const t=e instanceof Error?e.message:String(e);console.error(bv(`Failed to install "${n.name}"`)),console.log(Te.dim(` ${t}`))}await cleanupAndExit(o,d>0?1:0)}catch(e){s.stop();const t=e instanceof Error?e.message:String(e);console.error(bv(t)),await cleanupAndExit(o,1)}}__name(cleanupAndExit,"cleanupAndExit"),__name(validateRepoFormat,"validateRepoFormat"),__name(addAction,"addAction");var kv=new Ue("add").description("Install a skill from a GitHub repository").argument("<repo>","GitHub repository (owner/repo or owner/repo/path)").option("-g, --global","Install to global skills (~/.commandcode/skills/)").option("-f, --force","Overwrite if skill already exists").option("-s, --skill <name>","Specific skill name to install from repo").addHelpText("after",`\n${Sv.join("\n")}`).configureOutput({outputError:__name((e,t)=>{e.includes("missing required argument")?(console.error(bv("No repository specified.")),console.log(""),Sv.forEach(e=>console.log(e))):t(e)},"outputError")}).action(addAction);pn(),wn();var Cv=__name((e,t)=>`${Te.green(He.tick)} Removed ${Te.cyan(e)} from ${t} skills`,"formatRemoved"),vv=__name(e=>`${Te.red(He.cross)} ${e}`,"formatError");function validateSkillNameEarly(e){return e.includes("/")||e.includes("\\")?`"${e}" is not a valid skill name — it cannot contain path separators.`:e.includes("..")?`"${e}" is not a valid skill name — it cannot contain "..".`:e.startsWith(".")?`"${e}" is not a valid skill name — it cannot start with a dot.`:/^[a-z0-9-]+$/.test(e.trim())?null:`"${e}" is not a valid skill name — use only lowercase letters, numbers, and hyphens.`}async function removeAction(e,t){try{const n=process.stdout.isTTY&&process.stdin.isTTY,r=t.global?"global":"project",o=validateSkillNameEarly(e);if(o&&(console.error(vv(o)),console.log(Te.dim(`Run ${Te.cyan(`${getBinaryCommand()} skills list`)} to see installed skills.`)),process.exit(1)),!t.yes&&n){const t=await ot({message:`Remove ${Te.cyan(e)} from ${r} skills?`});"symbol"!=typeof t&&t||(console.log(Te.dim("Cancelled")),process.exit(0))}await removeSkill({skillName:e,global:t.global}),console.log(Cv(e,r)),process.exit(0)}catch(n){const r=n instanceof Error?n.message:"Failed to remove skill";r.includes("not found")?(console.error(vv(`Skill "${e}" not found in ${t.global?"global":"project"} skills`)),t.global||console.log(Te.dim(`Try ${Te.cyan(`${getBinaryCommand()} skills remove ${e} --global`)} to check global skills.`)),console.log(Te.dim(`Run ${Te.cyan(`${getBinaryCommand()} skills list`)} to see installed skills.`))):console.error(vv(r)),process.exit(1)}}__name(validateSkillNameEarly,"validateSkillNameEarly"),__name(removeAction,"removeAction");var Tv=new Ue("remove").description("Remove an installed skill").argument("<skill-name>","Name of the skill to remove").option("-g, --global","Remove from global skills (~/.commandcode/skills/)").option("-y, --yes","Skip confirmation prompt").action(removeAction);pn(),wn();var xv=__name((e,t)=>{const n=t.length>60?t.substring(0,57)+"...":t;return` ${Te.cyan(e)} ${Te.dim(`· ${n}`)}`},"formatSkillLine"),Pv=__name((e,t)=>`${Te.bold(Te.white(e))} ${Te.dim(`(${t})`)}`,"formatSectionHeader"),Av=__name(e=>{if(0===e.length)return;const t=groupWarnings(e);console.log(""),console.log(`${Te.bold(Te.yellow("Skipped"))} ${Te.dim(`(${e.length})`)}`);for(const e of t){console.log(""),console.log(` ${Te.bold(e.category)} ${Te.dim(`(${e.items.length})`)}`);for(const t of e.items)console.log(` ${Te.bold(skillIdentifier(t.path))}`),console.log(` ${Te.dim(t.reason)}`)}},"printWarnings"),Iv=__name(()=>{const e=process.cwd(),n=t.join(e,".commandcode","skills"),r=t.join(e,".agents","skills"),o=getProjectSkillsDir(),s=getProjectAgentsCompatSkillsDir(),a=["",Te.dim("No skills installed."),"",Te.dim("Looking in:"),Te.dim(` ${getGlobalSkillsDir()} ${Te.white("(global)")}`),Te.dim(` ${getGlobalAgentsCompatSkillsDir()} ${Te.white("(global, .agents)")}`)];return n!==o&&a.push(Te.dim(` ${n} ${Te.white("(cwd)")}`)),r!==s&&a.push(Te.dim(` ${r} ${Te.white("(cwd, .agents)")}`)),a.push(Te.dim(` ${o} ${Te.white("(project)")}`),Te.dim(` ${s} ${Te.white("(project, .agents)")}`),"",`Install a skill: ${Te.cyan(`${getBinaryCommand()} skills add`)} ${Te.dim("<owner/repo>")}`,""),a},"formatEmptyHint"),Mv=__name(e=>{e.forEach(e=>console.log(e))},"printLines");async function listAction(){const e="true"===process.env.DEBUG;try{const{global:t,project:n,bundled:r,warnings:o}=await listSkills(),s=t.length+n.length,a=__name(()=>{e||0===o.length||(console.log(""),console.log(Te.dim(`${o.length} skill${1===o.length?"":"s"} skipped · run with ${Te.cyan("--debug")} to see issues`)))},"printDebugHint");0===s&&(Mv(Iv()),r.length>0&&(console.log(Pv("Bundled",r.length)),r.forEach(e=>{console.log(xv(e.name,e.description))}),console.log("")),e&&(Av(o),o.length>0&&console.log("")),e||(a(),console.log("")),process.exit(0)),console.log(""),console.log(heading({text:"Skills",sub:Te.dim(`${s} installed`)})),n.length>0&&(console.log(""),console.log(Pv("Project",n.length)),n.forEach(e=>{console.log(xv(e.name,e.description))})),t.length>0&&(console.log(""),console.log(Pv("Global",t.length)),t.forEach(e=>{console.log(xv(e.name,e.description))})),r.length>0&&(console.log(""),console.log(Pv("Bundled",r.length)),r.forEach(e=>{console.log(xv(e.name,e.description))})),e&&Av(o),e||a(),console.log(""),process.exit(0)}catch(e){const t=e instanceof Error?e.message:"Unknown error";console.error(`${Te.red(He.cross)} Failed to list skills: ${t}`),process.exit(1)}}__name(listAction,"listAction");var Rv=new Ue("list").description("List all installed skills. Run with -d/--debug to also see why any skills were skipped.").action(listAction),_v=new Ue("skills").description("Manage skills from GitHub repositories").addCommand(kv).addCommand(Tv).addCommand(Rv);pn(),pn(),pn();var Dv="command-code:device-fingerprint:v1";pn();var Nv=yt(Le);async function safeExec(e,t){try{const{stdout:n}=await Nv(e,t,{timeout:800,encoding:"utf8"});return n.trim()}catch{return""}}async function readMachineId(){try{if("darwin"===process.platform){const e=(await safeExec("ioreg",["-rd1","-c","IOPlatformExpertDevice"])).match(/"IOPlatformUUID"\s*=\s*"([^"]+)"/);return e?.[1]??""}if("linux"===process.platform){for(const e of["/etc/machine-id","/var/lib/dbus/machine-id"])if(k(e)){const t=C(e,"utf8").trim();if(t)return t}return""}if("win32"===process.platform){const e=(await safeExec("reg",["query","HKLM\\SOFTWARE\\Microsoft\\Cryptography","/v","MachineGuid"])).match(/MachineGuid\s+REG_SZ\s+([\w-]+)/i);return e?.[1]??""}}catch{}return""}function readMacAddresses(){try{const e=D.networkInterfaces(),t=new Set;for(const n of Object.values(e))for(const e of n??[]){if(e.internal)continue;const n=e.mac?.toLowerCase();n&&"00:00:00:00:00:00"!==n&&t.add(n)}return[...t]}catch{return[]}}async function readGitEmail(){const e=await safeExec("git",["config","--global","user.email"]);if(e)return e;try{const e=`${D.homedir()}/.gitconfig`;if(k(e)){const t=C(e,"utf8").match(/email\s*=\s*(.+)/i);return t?.[1]?.trim()??""}}catch{}return""}function detectContainer(){try{if(k("/.dockerenv"))return!0;if(process.env.KUBERNETES_SERVICE_HOST)return!0;if(k("/proc/1/cgroup")){const e=C("/proc/1/cgroup","utf8");if(/docker|kubepods|containerd|lxc/.test(e))return!0}}catch{}return!1}function readTimezone(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone??""}catch{return""}}async function gatherRawSignals(){let e="";try{e=D.userInfo().username??""}catch{e=process.env.USER??process.env.USERNAME??""}const t=(()=>{try{return D.cpus()}catch{return[]}})(),[n,r]=await Promise.all([readMachineId(),readGitEmail()]);return{machineId:n,macAddresses:readMacAddresses(),osUser:e,hostname:(()=>{try{return D.hostname()}catch{return""}})(),gitEmail:r,platform:process.platform,arch:process.arch,osRelease:(()=>{try{return D.release()}catch{return""}})(),cpuModel:t[0]?.model?.trim()??"",cpuCount:t.length,totalMemBytes:(()=>{try{return D.totalmem()}catch{return 0}})(),isContainer:detectContainer(),timezone:readTimezone()}}function hashSignal(e){const t=e.trim();if(t)return J("sha256").update(Dv).update("\0").update(t.toLowerCase()).digest("hex")}function buildMachineFingerprint(e){const t=[...new Set(e.macAddresses.map(e=>e.toLowerCase()))].filter(Boolean).sort(),n=[e.machineId.trim(),t.join(","),e.machineId.trim()?"":e.hostname.trim(),e.machineId.trim()?"":e.cpuModel.trim()].filter(Boolean);return{thumbmark:J("sha256").update(Dv).update("\0machine\0").update(n.join("|")||"unknown").digest("hex"),components:{machineIdHash:hashSignal(e.machineId),macHashes:t.map(e=>hashSignal(e)).filter(Boolean),osUserHash:hashSignal(e.osUser),hostnameHash:hashSignal(e.hostname),gitEmailHash:hashSignal(e.gitEmail),platform:e.platform,arch:e.arch,osRelease:e.osRelease,cpuModel:e.cpuModel,cpuCount:e.cpuCount,memGiB:Math.round(e.totalMemBytes/1024**3),isContainer:e.isContainer,timezone:e.timezone||void 0,runtime:"cli",collectorVersion:1}}}async function getMachineFingerprint(){return buildMachineFingerprint(await gatherRawSignals())}__name(safeExec,"safeExec"),__name(readMachineId,"readMachineId"),__name(readMacAddresses,"readMacAddresses"),__name(readGitEmail,"readGitEmail"),__name(detectContainer,"detectContainer"),__name(readTimezone,"readTimezone"),__name(gatherRawSignals,"gatherRawSignals"),__name(hashSignal,"hashSignal"),__name(buildMachineFingerprint,"buildMachineFingerprint"),__name(getMachineFingerprint,"getMachineFingerprint");var $v=!1;async function recordCliFingerprint(){if(!$v){$v=!0;try{if(!await getAuthKey())return;const{thumbmark:e,components:t}=await getMachineFingerprint(),n=new Nu({baseUrl:getApiBaseUrl(),timeout:4e3});await n.post({endpoint:Dt.ALPHA.FINGERPRINT.RECORD,body:{thumbmark:e,components:t}})}catch{}}}function recordCliFingerprintInBackground(){recordCliFingerprint().catch(()=>{})}__name(recordCliFingerprint,"recordCliFingerprint"),__name(recordCliFingerprintInBackground,"recordCliFingerprintInBackground"),handleUnhandledErrors(),setupTelemetry(),setImmediate(()=>recordCliFingerprintInBackground()),await preRun();var Lv=createProgram();Lv.action(interactiveModeAction),Lv.addCommand(uC),Lv.addCommand(dC),Lv.addCommand(fv),Lv.addCommand(ov),Lv.addCommand(cC),Lv.addCommand(createTasteCommand()),Lv.addCommand(createMcpCommand()),Lv.addCommand(mC),Lv.addCommand(bs),Lv.addCommand(Dh),Lv.addCommand(Uh),Lv.addCommand(_v),isExperimentalEnabled()&&Lv.addCommand(createSandboxCommand()),setupCommanderHooks(Lv),Lv.parse();