@hermenics/deepseek-code 0.3.6 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.mjs +2 -2
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -1106,7 +1106,7 @@ ${h}`,Z++}else r41(f,C,b)?G=f.slice(f.charCodeAt(C+6)===GX?C+7:C+6,S)||void 0:N(
1106
1106
  `,C),B=-1;if(S!==-1&&b!==-1?B=S<b?S:b:S!==-1?S===f.length-1?B=-1:B=S:b!==-1&&(B=b),B===-1)break;N(f,C,B),C=B+1,f.charCodeAt(C-1)===pA6&&f.charCodeAt(C)===n41&&C++}return f.slice(C)}function N(f,C,S){if(C===S){L();return}let b=f.charCodeAt(C);if(i41(f,C,b)){let a=f.charCodeAt(C+5)===GX?C+6:C+5,u=f.slice(a,S);W=Z===0?u:`${W}
1107
1107
  ${u}`,Z++;return}if(r41(f,C,b)){G=f.slice(f.charCodeAt(C+6)===GX?C+7:C+6,S)||void 0;return}if(b===105&&f.charCodeAt(C+1)===100&&f.charCodeAt(C+2)===58){let a=f.slice(f.charCodeAt(C+3)===GX?C+4:C+3,S);H=a.includes("\x00")?void 0:a;return}if(b===58){if(z){let a=f.slice(C,S);z(a.slice(f.charCodeAt(C+1)===GX?2:1))}return}let B=f.slice(C,S),h=B.indexOf(":");if(h===-1){T(B,"",B);return}let v=B.slice(0,h),y=B.charCodeAt(h+1)===GX?2:1,x=B.slice(h+y);T(v,x,B)}function T(f,C,S){switch(f){case"event":G=C||void 0;break;case"data":W=Z===0?C:`${W}
1108
1108
  ${C}`,Z++;break;case"id":H=C.includes("\x00")?void 0:C;break;case"retry":/^\d+$/.test(C)?q(parseInt(C,10)):D(new D48(`Invalid \`retry\` value: "${C}"`,{type:"invalid-retry",value:C,line:S}));break;default:D(new D48(`Unknown field "${f.length>20?`${f.slice(0,20)}\u2026`:f}"`,{type:"unknown-field",field:f,value:C,line:S}));break}}function L(){Z>0&&K({id:H,event:G,data:W}),H=void 0,W="",Z=0,G=void 0}function E(f={}){if(f.consume&&w.length>0){let C=w.join("");N(C,0,C.length)}Y=!0,H=void 0,W="",Z=0,G=void 0,w.length=0}return{feed:M,reset:E}}function i41($,K,D){return D===100&&$.charCodeAt(K+1)===97&&$.charCodeAt(K+2)===116&&$.charCodeAt(K+3)===97&&$.charCodeAt(K+4)===58}function r41($,K,D){return D===101&&$.charCodeAt(K+1)===118&&$.charCodeAt(K+2)===101&&$.charCodeAt(K+3)===110&&$.charCodeAt(K+4)===116&&$.charCodeAt(K+5)===58}var D48,n41=10,pA6=13,GX=32;var t41=j(()=>{D48=class D48 extends Error{constructor($,K){super($),this.name="ParseError",this.type=K.type,this.field=K.field,this.value=K.value,this.line=K.line}}});var q48;var a41=j(()=>{t41();q48=class q48 extends TransformStream{constructor({onError:$,onRetry:K,onComment:D}={}){let q;super({start(z){q=o41({onEvent:(w)=>{z.enqueue(w)},onError(w){$==="terminate"?z.error(w):typeof $=="function"&&$(w)},onRetry:K,onComment:D})},transform(z){q.feed(z)}})}}});class z48{constructor($,K){this._hasCompletedAuthFlow=!1,this._url=$,this._resourceMetadataUrl=void 0,this._scope=void 0,this._requestInit=K?.requestInit,this._authProvider=K?.authProvider,this._fetch=K?.fetch,this._fetchWithInit=F41(K?.fetch,K?.requestInit),this._sessionId=K?.sessionId,this._reconnectionOptions=K?.reconnectionOptions??dA6}async _authThenStart(){if(!this._authProvider)throw new GY("No auth provider");let $;try{$=await zV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})}catch(K){throw this.onerror?.(K),K}if($!=="AUTHORIZED")throw new GY;return await this._startOrAuthSse({resumptionToken:void 0})}async _commonHeaders(){let $={};if(this._authProvider){let D=await this._authProvider.tokens();if(D)$.Authorization=`Bearer ${D.access_token}`}if(this._sessionId)$["mcp-session-id"]=this._sessionId;if(this._protocolVersion)$["mcp-protocol-version"]=this._protocolVersion;let K=FU(this._requestInit?.headers);return new Headers({...$,...K})}async _startOrAuthSse($){let{resumptionToken:K}=$;try{let D=await this._commonHeaders();if(D.set("Accept","text/event-stream"),K)D.set("last-event-id",K);let q=await(this._fetch??fetch)(this._url,{method:"GET",headers:D,signal:this._abortController?.signal});if(!q.ok){if(await q.body?.cancel(),q.status===401&&this._authProvider)return await this._authThenStart();if(q.status===405)return;throw new MX(q.status,`Failed to open SSE stream: ${q.statusText}`)}this._handleSseStream(q.body,$,!0)}catch(D){throw this.onerror?.(D),D}}_getNextReconnectionDelay($){if(this._serverRetryMs!==void 0)return this._serverRetryMs;let K=this._reconnectionOptions.initialReconnectionDelay,D=this._reconnectionOptions.reconnectionDelayGrowFactor,q=this._reconnectionOptions.maxReconnectionDelay;return Math.min(K*Math.pow(D,$),q)}_scheduleReconnection($,K=0){let D=this._reconnectionOptions.maxRetries;if(K>=D){this.onerror?.(Error(`Maximum reconnection attempts (${D}) exceeded.`));return}let q=this._getNextReconnectionDelay(K);this._reconnectionTimeout=setTimeout(()=>{this._startOrAuthSse($).catch((z)=>{this.onerror?.(Error(`Failed to reconnect SSE stream: ${z instanceof Error?z.message:String(z)}`)),this._scheduleReconnection($,K+1)})},q)}_handleSseStream($,K,D){if(!$)return;let{onresumptiontoken:q,replayMessageId:z}=K,w,Y=!1,H=!1;(async()=>{try{let Z=$.pipeThrough(new TextDecoderStream).pipeThrough(new q48({onRetry:(P)=>{this._serverRetryMs=P}})).getReader();while(!0){let{value:P,done:N}=await Z.read();if(N)break;if(P.id)w=P.id,Y=!0,q?.(P.id);if(!P.data)continue;if(!P.event||P.event==="message")try{let T=yO.parse(JSON.parse(P.data));if(HX(T)){if(H=!0,z!==void 0)T.id=z}this.onmessage?.(T)}catch(T){this.onerror?.(T)}}if((D||Y)&&!H&&this._abortController&&!this._abortController.signal.aborted)this._scheduleReconnection({resumptionToken:w,onresumptiontoken:q,replayMessageId:z},0)}catch(Z){if(this.onerror?.(Error(`SSE stream disconnected: ${Z}`)),(D||Y)&&!H&&this._abortController&&!this._abortController.signal.aborted)try{this._scheduleReconnection({resumptionToken:w,onresumptiontoken:q,replayMessageId:z},0)}catch(P){this.onerror?.(Error(`Failed to reconnect: ${P instanceof Error?P.message:String(P)}`))}}})()}async start(){if(this._abortController)throw Error("StreamableHTTPClientTransport already started! If using Client class, note that connect() calls start() automatically.");this._abortController=new AbortController}async finishAuth($){if(!this._authProvider)throw new GY("No auth provider");if(await zV(this._authProvider,{serverUrl:this._url,authorizationCode:$,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new GY("Failed to authorize")}async close(){if(this._reconnectionTimeout)clearTimeout(this._reconnectionTimeout),this._reconnectionTimeout=void 0;this._abortController?.abort(),this.onclose?.()}async send($,K){try{let{resumptionToken:D,onresumptiontoken:q}=K||{};if(D){this._startOrAuthSse({resumptionToken:D,replayMessageId:o_($)?$.id:void 0}).catch((M)=>this.onerror?.(M));return}let z=await this._commonHeaders();z.set("content-type","application/json"),z.set("accept","application/json, text/event-stream");let w={...this._requestInit,method:"POST",headers:z,body:JSON.stringify($),signal:this._abortController?.signal},Y=await(this._fetch??fetch)(this._url,w),H=Y.headers.get("mcp-session-id");if(H)this._sessionId=H;if(!Y.ok){let M=await Y.text().catch(()=>null);if(Y.status===401&&this._authProvider){if(this._hasCompletedAuthFlow)throw new MX(401,"Server returned 401 after successful authentication");let{resourceMetadataUrl:P,scope:N}=e08(Y);if(this._resourceMetadataUrl=P,this._scope=N,await zV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetchWithInit})!=="AUTHORIZED")throw new GY;return this._hasCompletedAuthFlow=!0,this.send($)}if(Y.status===403&&this._authProvider){let{resourceMetadataUrl:P,scope:N,error:T}=e08(Y);if(T==="insufficient_scope"){let L=Y.headers.get("WWW-Authenticate");if(this._lastUpscopingHeader===L)throw new MX(403,"Server returned 403 after trying upscoping");if(N)this._scope=N;if(P)this._resourceMetadataUrl=P;if(this._lastUpscopingHeader=L??void 0,await zV(this._authProvider,{serverUrl:this._url,resourceMetadataUrl:this._resourceMetadataUrl,scope:this._scope,fetchFn:this._fetch})!=="AUTHORIZED")throw new GY;return this.send($)}}throw new MX(Y.status,`Error POSTing to endpoint: ${M}`)}if(this._hasCompletedAuthFlow=!1,this._lastUpscopingHeader=void 0,Y.status===202){if(await Y.body?.cancel(),u01($))this._startOrAuthSse({resumptionToken:void 0}).catch((M)=>this.onerror?.(M));return}let Z=(Array.isArray($)?$:[$]).filter((M)=>("method"in M)&&("id"in M)&&M.id!==void 0).length>0,G=Y.headers.get("content-type");if(Z)if(G?.includes("text/event-stream"))this._handleSseStream(Y.body,{onresumptiontoken:q},!1);else if(G?.includes("application/json")){let M=await Y.json(),P=Array.isArray(M)?M.map((N)=>yO.parse(N)):[yO.parse(M)];for(let N of P)this.onmessage?.(N)}else throw await Y.body?.cancel(),new MX(-1,`Unexpected content type: ${G}`);else await Y.body?.cancel()}catch(D){throw this.onerror?.(D),D}}get sessionId(){return this._sessionId}async terminateSession(){if(!this._sessionId)return;try{let $=await this._commonHeaders(),K={...this._requestInit,method:"DELETE",headers:$,signal:this._abortController?.signal},D=await(this._fetch??fetch)(this._url,K);if(await D.body?.cancel(),!D.ok&&D.status!==405)throw new MX(D.status,`Failed to terminate session: ${D.statusText}`);this._sessionId=void 0}catch($){throw this.onerror?.($),$}}setProtocolVersion($){this._protocolVersion=$}get protocolVersion(){return this._protocolVersion}async resumeStream($,K){await this._startOrAuthSse({resumptionToken:$,onresumptiontoken:K?.onresumptiontoken})}}var dA6,MX;var s41=j(()=>{OX();l41();a41();dA6={initialReconnectionDelay:1000,maxReconnectionDelay:30000,reconnectionDelayGrowFactor:1.5,maxRetries:2};MX=class MX extends Error{constructor($,K){super(`Streamable HTTP error: ${K}`);this.code=$}}});import{join as K71}from"path";import{homedir as lA6}from"os";import{mkdir as nA6,appendFile as iA6,chmod as rA6}from"fs/promises";import{randomBytes as oA6}from"crypto";async function aA6(){if($71)return;await nA6(D71,{recursive:!0}),$71=!0}async function f$($){try{await aA6();let K=JSON.stringify(pJ({ts:new Date().toISOString(),...$}))+`
1109
- `;await iA6(e41,K,{encoding:"utf8",mode:384}),await rA6(e41,384)}catch{}}var D71,tA6,e41,$71=!1;var w48=j(()=>{UP();D71=K71(lA6(),".deepseek","logs"),tA6=`${Date.now()}-${oA6(3).toString("hex")}`,e41=K71(D71,`session-${tA6}.jsonl`)});var $$;var nO=j(()=>{$$={name:"@hermenics/deepseek-code",version:"0.3.6",description:"An AI-powered coding assistant that lives in your terminal",keywords:["ai","cli","deepseek","coding-assistant","terminal","tui"],license:"Apache-2.0",type:"module",bin:{deepseek:"dist/deepseek"},files:["dist/","README.md","LICENSE"],repository:{type:"git",url:"git+https://github.com/Hermenics/deepseek-code.git"},bugs:{url:"https://github.com/Hermenics/deepseek-code/issues"},homepage:"https://github.com/Hermenics/deepseek-code#readme",publishConfig:{access:"public"},engines:{node:">=18",bun:">=1.0"},scripts:{start:"NODE_ENV=development bun src/index.tsx",dev:"NODE_ENV=development bun --watch src/index.tsx",build:"bun run build.ts",typecheck:"bunx tsc --noEmit",test:"bun test"},dependencies:{"@alcalzone/ansi-tokenize":"^0.3.0","@aws-crypto/sha256-js":"^5.2.0","@aws-sdk/client-bedrock":"^3.1048.0","@aws-sdk/credential-providers":"^3.1048.0","@modelcontextprotocol/sdk":"^1.29.0","@smithy/protocol-http":"^5.3.14","@smithy/signature-v4":"^5.3.14","@types/semver":"^7.7.1",ajv:"^8.20.0","auto-bind":"^5.0.1","bidi-js":"^1.0.3",chalk:"^5.6.2","cli-boxes":"^4.0.1","code-excerpt":"^4.0.0","emoji-regex":"^10.6.0",execa:"^9.6.1","fast-glob":"^3.3.3","fuse.js":"^7.0.0","get-east-asian-width":"^1.6.0","google-auth-library":"^10.6.2","indent-string":"^5.0.0","lodash-es":"^4.18.1",openai:"^6.34.0",react:"^19.2.0","react-reconciler":"^0.33.0",semver:"^7.8.1","signal-exit":"^4.1.0","stack-utils":"^2.0.6","strip-ansi":"^7.2.0","supports-hyperlinks":"^4.4.0","type-fest":"^5.6.0","usehooks-ts":"^3.1.1","wrap-ansi":"^10.0.0"},overrides:{"node-fetch":"npm:undici@^7.0.0"},devDependencies:{"@types/bun":"^1.3.12","@types/react":"^19.2.0","@types/stack-utils":"^2.0.3","react-devtools-core":"^7.0.1",typescript:"^5.9.3",vitest:"^4.1.6"}}});import{join as eA6}from"path";function qN6($,K){let D={...$};for(let[q,z]of Object.entries(K)){if($N6.has(q))continue;D[q]=z}return D}function zN6($){if($.trim()==="")throw Error("MCP command cannot be empty");if(DN6.test($))throw Error(`MCP command contains path traversal: ${$}`);if(KN6.test($))throw Error(`MCP command contains shell injection characters: ${$}`)}function wN6($,K){return{type:"mcp_server_load",serverName:$,transport:K}}async function YN6($){let K=eA6($,".deepseek","mcp.json");try{return await o$(K)}catch{return null}}async function q71($=process.cwd()){let K=await YN6($);if(!K?.servers)return{tools:[],errors:[]};let D=[],q=[];for(let[z,w]of Object.entries(K.servers))try{if(w.transport==="stdio")zN6(w.command);let Y=new m08({name:"deepseek-code",version:$$.version}),H=w.transport==="stdio"?new d08({command:w.command,args:w.args??[],env:qN6(Object.fromEntries(Object.entries(process.env).filter((Z)=>Z[1]!==void 0)),w.env??{})}):new z48(new URL(w.url));await Y.connect(H),await f$(wN6(z,w.transport));let{tools:W}=await Y.listTools();for(let Z of W)D.push({name:`${z}__${Z.name}`,description:`[MCP:${z}] ${Z.description??""}`,parameters:Z.inputSchema,async execute(G){return(await Promise.race([Y.callTool({name:Z.name,arguments:G}),new Promise((T,L)=>setTimeout(()=>L(Error(`MCP tool '${Z.name}' timed out after 30s`)),30000))])).content.filter((T)=>T.type==="text"&&T.text).map((T)=>T.text).join(`
1109
+ `;await iA6(e41,K,{encoding:"utf8",mode:384}),await rA6(e41,384)}catch{}}var D71,tA6,e41,$71=!1;var w48=j(()=>{UP();D71=K71(lA6(),".deepseek","logs"),tA6=`${Date.now()}-${oA6(3).toString("hex")}`,e41=K71(D71,`session-${tA6}.jsonl`)});var $$;var nO=j(()=>{$$={name:"@hermenics/deepseek-code",version:"0.3.7",description:"An AI-powered coding assistant that lives in your terminal",keywords:["ai","cli","deepseek","coding-assistant","terminal","tui"],license:"Apache-2.0",type:"module",bin:{deepseek:"dist/deepseek"},files:["dist/","README.md","LICENSE"],repository:{type:"git",url:"git+https://github.com/Hermenics/deepseek-code.git"},bugs:{url:"https://github.com/Hermenics/deepseek-code/issues"},homepage:"https://github.com/Hermenics/deepseek-code#readme",publishConfig:{access:"public"},engines:{node:">=18",bun:">=1.0"},scripts:{start:"NODE_ENV=development bun src/index.tsx",dev:"NODE_ENV=development bun --watch src/index.tsx",build:"bun run build.ts",typecheck:"bunx tsc --noEmit",test:"bun test"},dependencies:{"@alcalzone/ansi-tokenize":"^0.3.0","@aws-crypto/sha256-js":"^5.2.0","@aws-sdk/client-bedrock":"^3.1048.0","@aws-sdk/credential-providers":"^3.1048.0","@modelcontextprotocol/sdk":"^1.29.0","@smithy/protocol-http":"^5.3.14","@smithy/signature-v4":"^5.3.14","@types/semver":"^7.7.1",ajv:"^8.20.0","auto-bind":"^5.0.1","bidi-js":"^1.0.3",chalk:"^5.6.2","cli-boxes":"^4.0.1","code-excerpt":"^4.0.0","emoji-regex":"^10.6.0",execa:"^9.6.1","fast-glob":"^3.3.3","fuse.js":"^7.0.0","get-east-asian-width":"^1.6.0","google-auth-library":"^10.6.2","indent-string":"^5.0.0","lodash-es":"^4.18.1",openai:"^6.34.0",react:"^19.2.0","react-reconciler":"^0.33.0",semver:"^7.8.1","signal-exit":"^4.1.0","stack-utils":"^2.0.6","strip-ansi":"^7.2.0","supports-hyperlinks":"^4.4.0","type-fest":"^5.6.0","usehooks-ts":"^3.1.1","wrap-ansi":"^10.0.0"},overrides:{"node-fetch":"npm:undici@^7.0.0"},devDependencies:{"@types/bun":"^1.3.12","@types/react":"^19.2.0","@types/stack-utils":"^2.0.3","react-devtools-core":"^7.0.1",typescript:"^5.9.3",vitest:"^4.1.6"}}});import{join as eA6}from"path";function qN6($,K){let D={...$};for(let[q,z]of Object.entries(K)){if($N6.has(q))continue;D[q]=z}return D}function zN6($){if($.trim()==="")throw Error("MCP command cannot be empty");if(DN6.test($))throw Error(`MCP command contains path traversal: ${$}`);if(KN6.test($))throw Error(`MCP command contains shell injection characters: ${$}`)}function wN6($,K){return{type:"mcp_server_load",serverName:$,transport:K}}async function YN6($){let K=eA6($,".deepseek","mcp.json");try{return await o$(K)}catch{return null}}async function q71($=process.cwd()){let K=await YN6($);if(!K?.servers)return{tools:[],errors:[]};let D=[],q=[];for(let[z,w]of Object.entries(K.servers))try{if(w.transport==="stdio")zN6(w.command);let Y=new m08({name:"deepseek-code",version:$$.version}),H=w.transport==="stdio"?new d08({command:w.command,args:w.args??[],env:qN6(Object.fromEntries(Object.entries(process.env).filter((Z)=>Z[1]!==void 0)),w.env??{})}):new z48(new URL(w.url));await Y.connect(H),await f$(wN6(z,w.transport));let{tools:W}=await Y.listTools();for(let Z of W)D.push({name:`${z}__${Z.name}`,description:`[MCP:${z}] ${Z.description??""}`,parameters:Z.inputSchema,async execute(G){return(await Promise.race([Y.callTool({name:Z.name,arguments:G}),new Promise((T,L)=>setTimeout(()=>L(Error(`MCP tool '${Z.name}' timed out after 30s`)),30000))])).content.filter((T)=>T.type==="text"&&T.text).map((T)=>T.text).join(`
1110
1110
  `)}})}catch(Y){let H=`MCP server '${z}': ${Y.message}`;q.push(H)}return{tools:D,errors:q}}var $N6,KN6,DN6;var z71=j(()=>{E41();k41();s41();VD();w48();nO();$N6=new Set(["PATH","LD_PRELOAD","LD_LIBRARY_PATH","DYLD_INSERT_LIBRARIES","DYLD_LIBRARY_PATH","HOME","USER","SHELL","PYTHONPATH","NODE_OPTIONS","NODE_PATH","BUN_INSTALL"]),KN6=/[;|`<>]|&&|\|\||\$\(|>>|<</,DN6=/\.\.[/\\]/});import{readFile as JN6,realpath as w71}from"fs/promises";import{isAbsolute as Y71,relative as XN6,resolve as HN6,sep as WN6}from"path";async function H71($,K=process.cwd()){if(!$.length)return"";let D=HN6(K);for(let H of $)if(!H||Y71(H)||H.split(/[\\/]+/).includes(".."))throw Error(`Agent file pattern '${H}' must stay inside the project workspace`);let q=await X71.default($,{cwd:D,ignore:["**/node_modules/**","**/.git/**","**/.deepseek/**"],dot:!0,absolute:!0,onlyFiles:!0,followSymbolicLinks:!1}),z=[],w=J71,Y=await w71(D);for(let H of q){let W=await p5(H,{sessionId:"agent-config",workspacePath:D,projectRoot:D,permissionProfile:"researcher-readonly"}),Z=await w71(W),G=XN6(Y,Z);if(G.startsWith(`..${WN6}`)||Y71(G))throw Error(`Agent file '${H}' escapes the project workspace`);if(w<=0)break;let M=await JN6(Z,"utf-8"),P=M.slice(0,w);w-=P.length,z.push(`// File: ${G}
1111
1111
  ${P}${P.length<M.length?`
1112
1112
 
@@ -1327,7 +1327,7 @@ For each issue found, show the problematic snippet and the suggested fix. Be dir
1327
1327
  `)){let h=H.slice(0,W),v=H.slice(W,W+1)||" ",y=H.slice(W+1);return i0.jsxDEV(i0.Fragment,{children:[w&&i0.jsxDEV(d,{color:Y,children:w},void 0,!1,void 0,this),i0.jsxDEV(d,{children:h},void 0,!1,void 0,this),i0.jsxDEV(d,{color:"black",backgroundColor:"white",children:v},void 0,!1,void 0,this),i0.jsxDEV(d,{children:y},void 0,!1,void 0,this),q&&i0.jsxDEV(d,{color:"#555555",children:q},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}let L=N.length-1;for(let h=0;h<N.length;h++){let v=N[h],y=h+1<N.length?N[h+1].offsetInValue:H.length+1;if(W>=v.offsetInValue&&W<y){L=h;break}}let E=Math.floor(P/2),f=Math.max(0,Math.min(L-E,N.length-P)),C=Math.min(N.length,f+P),S=f,b=N.length-C,B=N.slice(f,C);return i0.jsxDEV(W8,{flexDirection:"column",children:[S>0&&i0.jsxDEV(d,{color:"#888888",children:` \u2191 ${S} more line${S>1?"s":""}`},void 0,!1,void 0,this),B.map((h,v)=>{let y=f+v,x=h.offsetInValue+h.text.length,a=W>=h.offsetInValue&&W<=x,u=y===0?w:" ".repeat(Z),p=y===0&&w?Y:void 0;if(!a)return i0.jsxDEV(W8,{flexDirection:"row",children:[u&&i0.jsxDEV(d,{color:p,children:u},void 0,!1,void 0,this),i0.jsxDEV(d,{children:h.text||" "},void 0,!1,void 0,this)]},y,!0,void 0,this);let q8=W-h.offsetInValue,F8=h.text.slice(0,q8),t=h.text.slice(q8,q8+1)||" ",D8=h.text.slice(q8+1),v8=y===N.length-1;return i0.jsxDEV(W8,{flexDirection:"row",children:[u&&i0.jsxDEV(d,{color:p,children:u},void 0,!1,void 0,this),i0.jsxDEV(d,{children:F8},void 0,!1,void 0,this),i0.jsxDEV(d,{color:"black",backgroundColor:"white",children:t},void 0,!1,void 0,this),i0.jsxDEV(d,{children:D8},void 0,!1,void 0,this),v8&&q&&i0.jsxDEV(d,{color:"#555555",children:q},void 0,!1,void 0,this)]},y,!0,void 0,this)}),b>0&&i0.jsxDEV(d,{color:"#888888",children:` \u2193 ${b} more line${b>1?"s":""}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}C0();p0();var eO=U(F1(),1);function I91({matches:$,selectedIdx:K,columns:D,descriptions:q={}}){let w=$.length,Y=22,H=Math.max(10,D-22-4),W=Math.floor(3),Z=Math.max(0,K-W),G=Math.min(w,Z+6);if(G-Z<6)Z=Math.max(0,G-6);let M=$.slice(Z,G);return eO.jsxDEV(W8,{flexDirection:"column",children:M.map((P,N)=>{let L=Z+N===K,E=q[P]??"",f=E.length>H?E.slice(0,H-1)+"\u2026":E;return eO.jsxDEV(W8,{flexDirection:"row",children:[eO.jsxDEV(d,{color:"#888888",children:"\u2502 "},void 0,!1,void 0,this),eO.jsxDEV(d,{color:L?"cyan":void 0,children:P.padEnd(22)},void 0,!1,void 0,this),eO.jsxDEV(d,{color:L?"cyan":"#888888",children:f},void 0,!1,void 0,this)]},P,!0,void 0,this)})},void 0,!1,void 0,this)}H5();C0();p0();var Gz=U(F1(),1);function h91({columns:$,agentLabel:K="deepseek",agentColor:D,contextPct:q=0,hasExclamation:z=!1,theme:w="dark",children:Y}){let H=D4(w),W=D||"#87ceeb",Z=` ${K} `,G=Math.max(0,$-4-Z.length),M=z?$7.bash:$7.user,P=z?H.bashBorder:H.promptBorder;return Gz.jsxDEV(W8,{flexDirection:"column",children:[Gz.jsxDEV(W8,{flexDirection:"row",children:[Gz.jsxDEV(d,{color:H.promptBorder,children:tU.repeat(G)},void 0,!1,void 0,this),Gz.jsxDEV(d,{color:W,children:Z},void 0,!1,void 0,this)]},void 0,!0,void 0,this),Gz.jsxDEV(W8,{flexDirection:"row",gap:1,children:[Gz.jsxDEV(d,{color:P,children:M},void 0,!1,void 0,this),q>0&&Gz.jsxDEV(d,{color:q>=90?H.error:q>=70?H.warning:H.primary,children:q+"%"},void 0,!1,void 0,this),Gz.jsxDEV(W8,{flexGrow:1,children:Y},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}C0();p0();var TV=U(l6(),1);C0();p0();var NV=U(F1(),1),x91=["\u273B","\u273C","\u273D","\u273E","\u273F","\u2740","\u273F","\u273E","\u273D","\u273D","\u273C"],H78=["Prompt-engineering your prompt...","Distilling the essence of the problem...","Translating human to AI...","Calibrating artificial neurons...","Applying elite prompt engineering...","Atomizing the problem...","Scalpel-sharpening your question...","Untangling chaos into clarity...","Pre-thinking the thinking...","Consulting the engineering oracle...","Reverse-engineering your intent...","Assembling the perfect prompt..."],W78=["Consulting the code gods...","Pretending to understand the problem...","Zigzagging through Stack Overflow...","Compiling excuses...","Training artificial neurons...","Reading the docs (not really)...","Calculating the wrong answer...","Sipping virtual coffee...","Debugging the universe...","Definitely not asking ChatGPT...","Inventing an elegant solution...","Praying for no segfault...","Ignoring the warnings...","Running git blame on you...","Simulating intelligence...","Asking the rubber duck...","Reticulating splines...","Centering the div...","Questioning life choices...","Hoping the tests pass..."];function Z78({toolCallCount:$,phase:K}){let D=tO(),[q,z]=TV.useState(()=>Math.floor(Math.random()*W78.length)),[w]=TV.useState(()=>Math.floor(Math.random()*H78.length));TV.useEffect(()=>{z(Math.floor(Math.random()*W78.length))},[$]);let Y=K==="refining",H=Y?H78[w%H78.length]:W78[q];return NV.jsxDEV(W8,{flexDirection:"row",gap:1,paddingLeft:1,children:[NV.jsxDEV(d,{color:Y?"magenta":"cyan",children:x91[D%x91.length]},void 0,!1,void 0,this),NV.jsxDEV(d,{color:"#888888",children:H},void 0,!1,void 0,this),NV.jsxDEV(d,{color:"#888888",children:" \xB7 Ctrl+C to cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}var Mz=U(F1(),1);function x_6($,K){let D,q=!1;if($.upArrow)D="up",q=!0;else if($.downArrow)D="down",q=!0;else if($.leftArrow)D="left",q=!0;else if($.rightArrow)D="right",q=!0;else if($.return)D="return",q=!0;else if($.escape)D="escape",q=!0;else if($.backspace)D="backspace",q=!0;else if($.delete)D="delete",q=!0;else if($.tab)D="tab",q=!0;else if($.home)D="home",q=!0;else if($.end)D="end",q=!0;else if($.pageUp)D="pageup",q=!0;else if($.pageDown)D="pagedown",q=!0;else if($.ctrl&&K.length===1)D=K.toLowerCase(),q=!0;return{name:D,ctrl:$.ctrl,meta:$.meta,shift:$.shift,option:$.meta,raw:!q&&!$.ctrl&&!$.meta&&K.length===1?K:void 0,sequence:K}}var b_6={"/quit":"Exit DeepSeek Code","/q":"Exit DeepSeek Code","/clear":"Clear chat history","/compact":"Summarize history to save context","/help":"Show available commands","/agent":"Load a custom agent","/agents":"List available agents","/model deepseek-v4-flash":"Switch to DeepSeek V4 Flash","/model deepseek-v4-pro":"Switch to DeepSeek V4 Pro","/model deepseek-reasoner":"Switch to DeepSeek R1","/models":"Switch model interactively","/language":"Change preferred language","/theme":"Change color theme","/undo":"Restore last file modified by agent","/retry":"Re-run last message","/cost":"Show estimated session cost","/files":"List files modified this session","/tools":"List all available tools","/system":"Show active system prompt","/sessions":"List recent sessions","/checkpoint":"Save current state","/checkpoint list":"List saved checkpoints","/plan":"Plan implementation of a task","/review":"Review code in the project","/msg":"Add a note without interrupting the agent","/vim":"Toggle vim keybindings (normal/insert mode)","/stats":"Show session statistics","/effort":"Set reasoning effort level","/effort low":"Quick responses","/effort high":"Comprehensive thinking","/effort max":"Maximum reasoning depth","/enchant-prompt":"Toggle prompt enchantment (AI refinement)","/enchant":"Toggle prompt enchantment (AI refinement)"};function b91({onSubmit:$,isLoading:K,toolCallCount:D,onAbort:q,onQueue:z,phase:w="idle",contextPct:Y=0,agentLabel:H="deepseek",agentColor:W,interactionMode:Z="build",onModeChange:G,sessionId:M,vimEnabled:P=!1}){let N=process.stdout.columns??80,[T,L]=NK.useState(()=>O0.fromText("",N)),[E,f]=NK.useState([]),[C,S]=NK.useState(0),[b,B]=NK.useState("insert"),h=NK.useRef(new p48),v=NK.useRef(new m48),y=c48({timeout:800,onDoublePress:()=>process.exit(0)}),x=c48({timeout:800,onDoublePress:()=>{L(O0.fromText("",N)),f([]),S(0),h.current.reset()}});NK.useEffect(()=>{u48().then((v8)=>h.current.setHistory(v8))},[M]),NK.useEffect(()=>{v.current.push(T.text,T.offset)},[T]);let a=(v8)=>{let U8=v8.replace(/\r\n/g,`
1328
1328
  `);if(U8.length>60){let Q8=0;f((P1)=>{return Q8=P1.length,[...P1,U8]}),L((P1)=>P1.insert(`[Text #${Q8+1}]`)),S(0),h.current.reset();return}let W1=U8.split(`
1329
1329
  `),f8=W1.length>1?W1.join(" "):v8;L((Q8)=>Q8.insert(f8)),S(0),h.current.reset()},u=(v8)=>{if(E.length===0)return v8;return v8.replace(/\[Text #(\d+)\]/g,(U8,W1)=>{let f8=parseInt(W1,10)-1;return E[f8]??U8})},p=Y78(T.text),q8=p.length>0,F8=Q91(T.text,T.offset,sO,h.current.entries);x4((v8,U8)=>{if(U8.isPasted&&v8.length>0){a(v8);return}if(v8==="\x1B[Z"||U8.shift&&U8.tab){G?.();return}if(v8.startsWith("\x1B"))return;if(v8.length===1&&v8.charCodeAt(0)<32&&!U8.ctrl)return;if(!(U8.ctrl&&v8==="c"))y.reset();if(!U8.escape)x.reset();if(U8.ctrl&&v8==="c"){if(K){q?.();return}y.trigger();return}if(U8.pageUp||U8.pageDown)return;if(U8.ctrl&&v8==="v"){try{let Q8=h_6("xclip -selection clipboard -o 2>/dev/null || xsel --clipboard --output 2>/dev/null || wl-paste 2>/dev/null",{encoding:"utf-8",timeout:2000});if(Q8)a(Q8)}catch{}return}if(U8.ctrl&&v8==="z"){let Q8=U8.shift?v.current.redo():v.current.undo();if(Q8)L(O0.fromText(Q8.text,N,Q8.cursorOffset));return}if(U8.escape){if(K){q?.();return}if(!P&&T.text.length>0){x.trigger();return}}if(!q8&&F8&&F8.insertPosition===T.offset){if(U8.tab){L(O0.fromText(F8.fullCommand,N,F8.fullCommand.length)),S(0),h.current.reset();return}if(U8.rightArrow&&T.isAtEnd()){L(O0.fromText(F8.fullCommand,N,F8.fullCommand.length)),S(0),h.current.reset();return}}if(q8&&(U8.upArrow||U8.downArrow)){S((Q8)=>U8.upArrow?(Q8-1+p.length)%p.length:(Q8+1)%p.length);return}if(q8&&(U8.tab||U8.return)){let Q8=p[C];$(Q8),L(O0.fromText("",N)),f([]),S(0),h.current.reset(),B("insert");return}if(K&&U8.return){let Q8=u(T.text).trim();if(Q8)z?.(Q8),L(O0.fromText("",N)),f([]);return}let W1=x_6(U8,v8);if(P){let Q8=C$1(T,W1,{mode:b});if(Q8.type==="modeChange"){B(Q8.mode),L(Q8.cursor);return}if(Q8.type==="cursor"){L(Q8.cursor);return}if(Q8.type==="action"){if(Q8.action==="submit"){let R8=T.text,x1=u(R8);if(K){let C1=x1.trim();if(C1)z?.(C1)}else $(x1);L(O0.fromText("",N)),f([]),h.current.reset(),B("insert");return}let P1=Q8.action==="historyUp"?h.current.up(T.text):h.current.down();if(P1!==void 0)L(O0.fromText(P1,N,P1.length));return}if(Q8.type==="noop"&&b==="normal")return}let f8=f$1(T,W1,{multiline:!0});if(f8.type==="cursor"){L(f8.cursor),S(0),h.current.reset();return}if(f8.action==="submit"){let Q8=u(T.text);if(K){let P1=Q8.trim();if(P1)z?.(P1)}else $(Q8);L(O0.fromText("",N)),f([]),S(0),h.current.reset();return}if(f8.action==="historyUp"||f8.action==="historyDown"){let Q8=f8.action==="historyUp"?h.current.up(T.text):h.current.down();if(Q8!==void 0)L(O0.fromText(Q8,N,Q8.length))}});let t=T.text.trimStart().startsWith("!"),D8=K?"Queue a message...":Y>=90?"Context almost full. Try /compact":"What do you want me to do? \u21B5";return Mz.jsxDEV(W8,{flexDirection:"column",children:[Mz.jsxDEV(h91,{columns:N,agentLabel:H,agentColor:W,contextPct:Y,hasExclamation:t,children:[E.length>0&&Mz.jsxDEV(W8,{border:!0,borderStyle:"rounded",borderColor:"#888888",paddingLeft:1,paddingRight:1,marginRight:1,children:Mz.jsxDEV(d,{color:"#888888",children:`[${E.length} pasted]`},void 0,!1,void 0,this)},void 0,!1,void 0,this),Mz.jsxDEV(U91,{cursor:T,columns:N,placeholder:D8,ghostText:F8?.text,prefix:"",prefixColor:t?"magenta":"cyan"},void 0,!1,void 0,this),y.armed&&Mz.jsxDEV(d,{color:"yellow",children:" Press Ctrl+C again to exit"},void 0,!1,void 0,this),x.armed&&Mz.jsxDEV(d,{color:"yellow",children:" Press Esc again to clear input"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),q8&&Mz.jsxDEV(I91,{matches:p,selectedIdx:C,columns:N,descriptions:b_6},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}C0();p0();var _V=U(F1(),1),v91=60;function v_6($){if($.length<=v91)return $;return $.slice(0,v91)+"\u2026"}function y_6($){return $.map((K)=>({text:v_6(K)}))}function y91({messages:$}){if($.length===0)return null;let K=y_6($);return _V.jsxDEV(W8,{flexDirection:"column",paddingLeft:1,children:K.map((D,q)=>_V.jsxDEV(W8,{flexDirection:"row",gap:1,children:[_V.jsxDEV(d,{color:"cyan",children:"\u23CE"},void 0,!1,void 0,this),_V.jsxDEV(d,{color:"#888888",children:D.text},void 0,!1,void 0,this)]},q,!0,void 0,this))},void 0,!1,void 0,this)}function u91($,K){if($.length>=10)return $;return[...$,K]}H9();HV();H5();C0();p0();var GI=U(l6(),1),k7=U(F1(),1);async function g91(){try{let{stdout:$}=await h6("git",["rev-parse","--abbrev-ref","HEAD"]);return $.trim()}catch{return""}}function u_6({percent:$,width:K=20,theme:D="dark"}){let q=D4(D),z=Math.floor($/100*K),w=$/100*K-z,Y=Math.floor(w*8),H=Y>0&&Y<8?H$1[Y]:"",W=K-z-(H?1:0),Z=$>=90?q.error:$>=70?q.warning:q.primary;return k7.jsxDEV(d,{color:Z,children:["\u2588".repeat(z),H," ".repeat(Math.max(0,W))]},void 0,!0,void 0,this)}function m91({tokenCount:$,model:K,activeAgent:D,provider:q,contextPct:z=0,interactionMode:w="build",theme:Y="dark",items:H,narrowPriority:W}){let Z=D4(Y),[G,M]=GI.useState("");GI.useEffect(()=>{let b=!1;g91().then((h)=>{if(!b)M(h)});let B=setInterval(()=>{g91().then((h)=>{if(!b)M(h)})},30000);return()=>{b=!0,clearInterval(B)}},[]);let P=process.stdout.columns??80,N=P<60,T=P<80,L=tU.repeat(Math.max(0,P-4)),E=N?String(K).slice(0,15):String(K),f=H??["mode","model","tokens","branch","context"],C=T?(W??["mode","context","model","branch","tokens"]).filter((b)=>f.includes(b)):f,S=new Set(C.slice(0,N?2:T?3:f.length));if(![...S].some((b)=>b==="mode"||b==="model"||b==="tokens"&&$>0||b==="branch"&&G||b==="context"&&z>0))return null;return k7.jsxDEV(W8,{flexDirection:"column",children:[k7.jsxDEV(d,{color:Z.textSubtle,children:L},void 0,!1,void 0,this),k7.jsxDEV(W8,{flexDirection:"row",paddingX:2,gap:1,children:[S.has("mode")&&k7.jsxDEV(d,{color:a71[w],children:t71[w]},void 0,!1,void 0,this),S.has("model")&&k7.jsxDEV(d,{color:Z.primary,children:$7.agent+" "+E},void 0,!1,void 0,this),S.has("tokens")&&$>0&&k7.jsxDEV(k7.Fragment,{children:k7.jsxDEV(d,{color:Z.textDim,children:$7.info+" "+$.toLocaleString()+" tokens"},void 0,!1,void 0,this)},void 0,!1,void 0,this),S.has("branch")&&G&&k7.jsxDEV(k7.Fragment,{children:k7.jsxDEV(d,{color:Z.textDim,children:"\u2387 "+G},void 0,!1,void 0,this)},void 0,!1,void 0,this),S.has("context")&&z>0&&k7.jsxDEV(k7.Fragment,{children:[k7.jsxDEV(d,{color:z>=90?Z.error:z>=70?Z.warning:Z.primary,children:"ctx "+z+"%"},void 0,!1,void 0,this),!T&&k7.jsxDEV(u_6,{percent:z,width:10,theme:Y},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}u5();C0();p0();var c91=U(l6(),1),e$=U(F1(),1);function p91({currentModel:$,models:K,onSelect:D,onCancel:q}){let[z,w]=c91.useState(()=>{let Y=K.indexOf($);return Y>=0?Y:0});if(x4((Y,H)=>{if(K.length===0){if(H.escape){q();return}return}if(H.upArrow){w((W)=>(W-1+K.length)%K.length);return}if(H.downArrow){w((W)=>(W+1)%K.length);return}if(H.return){D(K[z]);return}if(H.escape){q();return}}),K.length===0)return e$.jsxDEV(W8,{flexDirection:"column",marginTop:1,children:[e$.jsxDEV(d,{color:"#888888",children:"/models"},void 0,!1,void 0,this),e$.jsxDEV(W8,{marginTop:1,children:e$.jsxDEV(d,{color:"yellow",children:"No models available from this provider."},void 0,!1,void 0,this)},void 0,!1,void 0,this),e$.jsxDEV(d,{color:"#888888",children:"Esc to go back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this);return e$.jsxDEV(W8,{flexDirection:"column",marginTop:1,children:[e$.jsxDEV(d,{color:"#888888",children:"/models"},void 0,!1,void 0,this),e$.jsxDEV(W8,{flexDirection:"column",marginTop:1,children:K.map((Y,H)=>e$.jsxDEV(W8,{flexDirection:"row",gap:2,children:[e$.jsxDEV(d,{color:H===z?"cyan":void 0,children:[H===z?"\u276F ":" ",Y]},void 0,!0,void 0,this),Y===$&&e$.jsxDEV(d,{color:"#888888",children:"[active]"},void 0,!1,void 0,this)]},Y,!0,void 0,this))},void 0,!1,void 0,this),e$.jsxDEV(W8,{marginTop:1,children:e$.jsxDEV(d,{color:"#888888",children:"\u2500".repeat(60)},void 0,!1,void 0,this)},void 0,!1,void 0,this),e$.jsxDEV(d,{color:"#888888",children:"\u2191\u2193 navigate \xB7 Enter select \xB7 Esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}u5();C0();p0();var VV=U(l6(),1),K7=U(F1(),1),VX=[{level:"low",description:"Thinking disabled. Fast responses for simple tasks."},{level:"high",description:"Thinking enabled. Balanced depth and speed."},{level:"max",description:"Maximum reasoning depth. May use excessive tokens."}],g_6={low:["#66ffaa","#00cc66","#009944","#006633","#003d1f"],high:["#cc99ff","#aa66ff","#8833dd","#6611bb","#440088"],max:["#87CEEB","#5B9BD5","#2E75B6","#1B4F8A","#0D2B52"]};function d91({currentLevel:$,onSelect:K,onCancel:D}){let[q,z]=VV.useState(()=>{let L=VX.findIndex((E)=>E.level===$);return L>=0?L:1}),[w,Y]=VV.useState(0);VV.useEffect(()=>{let L=setInterval(()=>{Y((E)=>(E+1)%5)},150);return()=>clearInterval(L)},[q]),x4((L,E)=>{if(E.leftArrow){z((f)=>Math.max(0,f-1));return}if(E.rightArrow){z((f)=>Math.min(VX.length-1,f+1));return}if(E.return){K(VX[q].level);return}if(E.escape){D();return}});let H=VX[q],W=12,Z=W*(VX.length-1)+3,G=q*W+1,M="\u2500".repeat(G),P="\u2500".repeat(Math.max(0,Z-G-1)),N=M+"\u25B2"+P;function T(L,E){let f=g_6[E];return L.split("").map((C,S)=>{let b=(S+w)%f.length;return K7.jsxDEV(d,{color:f[b],bold:!0,children:C},S,!1,void 0,this)})}return K7.jsxDEV(W8,{flexDirection:"column",alignItems:"center",children:[K7.jsxDEV(d,{bold:!0,color:"white",children:"Effort"},void 0,!1,void 0,this),K7.jsxDEV(d,{children:" "},void 0,!1,void 0,this),K7.jsxDEV(W8,{flexDirection:"column",children:[K7.jsxDEV(W8,{children:[K7.jsxDEV(d,{color:"#888888",children:"Faster"},void 0,!1,void 0,this),K7.jsxDEV(d,{children:" ".repeat(Math.max(1,Z-11))},void 0,!1,void 0,this),K7.jsxDEV(d,{color:"#888888",children:"Smarter"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),K7.jsxDEV(W8,{children:K7.jsxDEV(d,{color:"#666666",children:N},void 0,!1,void 0,this)},void 0,!1,void 0,this),K7.jsxDEV(W8,{children:VX.map((L,E)=>{let f=E===q,C=E===VX.length-1,S=C?L.level:L.level.padEnd(W);if(f){let b=T(L.level,L.level),B=C?null:K7.jsxDEV(d,{children:" ".repeat(W-L.level.length)},void 0,!1,void 0,this);return K7.jsxDEV(W8,{children:[b,B]},L.level,!0,void 0,this)}return K7.jsxDEV(d,{color:"#666666",children:S},L.level,!1,void 0,this)})},void 0,!1,void 0,this)]},void 0,!0,void 0,this),H.description&&K7.jsxDEV(W8,{marginTop:1,children:K7.jsxDEV(d,{color:"#888888",children:H.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),K7.jsxDEV(W8,{marginTop:1,children:K7.jsxDEV(d,{color:"#666666",children:"\u2190/\u2192 to adjust \xB7 Enter to confirm \xB7 Esc to cancel"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}H9();u5();dH();e2();DG();$2();PX();H5();var r0=U(l6(),1);import{mkdir as a91,writeFile as KV6}from"fs/promises";import{dirname as s91,join as DV6}from"path";function o91($){if(($.name==="up"||$.name==="down")&&$.raw&&$.raw.length>3)return!0;if(!$.name&&$.raw){if($.raw.startsWith("\x1B"))return!0;if($.raw.length===1&&$.raw.charCodeAt(0)<32)return!0}if($.name&&$.raw&&$.raw.length===1&&!$.ctrl&&!$.meta&&!$.shift){if(/^[A-Z]$/.test($.raw)&&["A","B","C","D","H","F","W","M"].includes($.raw))return!0}return!1}C0();p0();H9();u5();C0();p0();dH();var kD=U(l6(),1);H9();dH();import{randomUUID as i_6}from"crypto";import{readFile as r_6,rm as o_6,writeFile as t_6}from"fs/promises";import{tmpdir as a_6}from"os";import{join as s_6}from"path";function e_6($,K,D=process.platform,q=!1){if($)return $;if(K)return"nano";if(D==="win32")return"notepad.exe";if(D==="darwin")return"open -W -t";if(q)return"vi";throw Error("No blocking prompt editor found. Set $VISUAL or $EDITOR.")}async function AI($,K){let D=s_6(a_6(),`deepseek-${$}-${i_6()}.md`);await t_6(D,K,"utf8");try{let q=process.env.VISUAL||process.env.EDITOR,z=q?!1:await h6("nano",["--version"],{stdio:"ignore"}).then(()=>!0,()=>!1),w=q||z||process.platform!=="linux"?!1:await h6("vi",["--version"],{stdio:"ignore"}).then(()=>!0,()=>!1),Y=e_6(q,z,process.platform,w);return await QJ(()=>dg(`${Y} ${D}`,{stdio:"inherit"}).then(()=>{return})),await r_6(D,"utf8")}finally{await o_6(D,{force:!0})}}H5();e2();DX();var a6=U(F1(),1);function M78({scope:$,theme:K,onBack:D,onChanged:q}){let z=D4(K),[w,Y]=kD.useState([]),[H,W]=kD.useState(0),[Z,G]=kD.useState("all"),[M,P]=kD.useState("all"),[N,T]=kD.useState(null),[L,E]=kD.useState(""),[f,C]=kD.useState("n new \xB7 e edit JSON \xB7 p edit prompt \xB7 d disable/delete \xB7 c duplicate \xB7 r restore"),S=async()=>{try{Y(await fO()),q()}catch(a){C(`Error: ${a.message}`)}};kD.useEffect(()=>{S()},[]);let b=w.filter((a)=>{let u=a.config.usage??"primary";return(Z==="all"||u===Z||u==="both")&&(M==="all"||a.origin===M)}),B=b[Math.min(H,Math.max(0,b.length-1))],h=async()=>{if(!B)return;let a=process.env.VISUAL||process.env.EDITOR;if(!a){C("Set $VISUAL or $EDITOR first");return}let u=sa8($,B.config.name);try{if(B.origin!==$)await CO($,{name:B.config.name,extends:B.origin==="builtin"?`builtin:${B.config.name}`:B.config.name});await QJ(()=>h6(a,[u],{stdio:"inherit"}).then(()=>{return})),await S(),C("Agent saved and registry reloaded")}catch(p){C(`Editor error: ${p.message}`)}};x4((a,u)=>{if(N){if(u.escape){T(null),E("");return}if(u.backspace||u.delete){E((p)=>p.slice(0,-1));return}if(u.return){let p=L.trim();if(!p){C("A value is required");return}(async()=>{try{if(N==="create")await CO($,{name:p,description:"Custom DeepSeek Code agent",usage:"both",role:"executor",enabled:!0,systemPrompt:"Handle the assigned task precisely. Read relevant files first and follow existing project conventions."}),C(`Created ${p} \xB7 press e to edit all fields`);else if(N==="duplicate"&&B)await ea8(B.config.name,p,$),C(`Duplicated as ${p}`);await S()}catch(q8){C(`Error: ${q8.message}`)}T(null),E("")})();return}if(a&&!u.ctrl&&!u.meta)E((p)=>p+a);return}if(u.escape||a==="q"){D();return}if(u.upArrow||a==="k"){W((p)=>(p-1+b.length)%Math.max(1,b.length));return}if(u.downArrow||a==="j"){W((p)=>(p+1)%Math.max(1,b.length));return}if(a==="n"){T("create"),E(""),C("New agent name");return}if(a==="c"&&B){T("duplicate"),E(`${B.config.name}-copy`),C("Duplicate name");return}if(a==="p"&&B){AI(`${B.config.name}-prompt`,B.config.systemPrompt).then((p)=>CO($,{...B.config,systemPrompt:p})).then(S).then(()=>C("Specialization prompt saved")).catch((p)=>C(`Editor error: ${p.message}`));return}if(a==="e"&&B){h();return}if(a==="u"){let p=["all","primary","subagent"];G((q8)=>p[(p.indexOf(q8)+1)%p.length]),W(0);return}if(a==="o"){let p=["all","builtin","user","additional","project","local"];P((q8)=>p[(p.indexOf(q8)+1)%p.length]),W(0);return}if(a==="r"&&B){(async()=>{if(B.origin==="builtin"){let p=new _D,t=((await p.getSnapshot()).levels[$].data.agents?.disabledBuiltins??[]).filter((D8)=>D8!==B.config.name);if(t.length)await p.set($,"agents.disabledBuiltins",t);else await p.unset($,"agents.disabledBuiltins")}else await O18($,B.config.name);await S(),C("Scoped override removed \xB7 inherited definition restored")})().catch((p)=>C(`Error: ${p.message}`));return}if((a==="d"||a===" ")&&B)(async()=>{try{if(B.origin===$)await O18($,B.config.name);else if(B.origin==="builtin"){let p=new _D,q8=await p.getSnapshot(),F8=[...new Set([...q8.effective.agents?.disabledBuiltins??[],B.config.name])];await p.set($,"agents.disabledBuiltins",F8)}else await CO($,{...B.config,enabled:!1});await S(),C(B.origin===$?"Agent removed from this scope":"Agent disabled in this scope")}catch(p){C(`Error: ${p.message}`)}})()});let v=Math.max(4,(process.stdout.rows||24)-11),y=Math.max(0,Math.min(H-Math.floor(v/2),Math.max(0,b.length-v))),x=b.slice(y,y+v);return a6.jsxDEV(W8,{flexDirection:"column",width:process.stdout.columns||80,height:process.stdout.rows||24,paddingX:1,children:[a6.jsxDEV(W8,{justifyContent:"space-between",children:[a6.jsxDEV(d,{bold:!0,color:z.primary,children:"Settings / Agents"},void 0,!1,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:["Scope: ",$]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:["usage: ",Z," \xB7 origin: ",M," \xB7 u/o change filters"]},void 0,!0,void 0,this),a6.jsxDEV(W8,{marginTop:1,flexGrow:1,children:[a6.jsxDEV(W8,{flexDirection:"column",width:Math.min(38,Math.max(24,Math.floor((process.stdout.columns||80)*0.42))),children:[y>0?a6.jsxDEV(d,{dimColor:!0,children:[" \u2191 ",y," above"]},void 0,!0,void 0,this):null,x.map((a,u)=>{let p=y+u===H;return a6.jsxDEV(W8,{justifyContent:"space-between",children:[a6.jsxDEV(d,{bold:p,color:p?z.primary:z.text,children:[p?"\u203A ":" ",a.config.name]},void 0,!0,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:a.config.enabled===!1?"disabled":a.origin},void 0,!1,void 0,this)]},`${a.origin}:${a.config.name}`,!0,void 0,this)}),y+x.length<b.length?a6.jsxDEV(d,{dimColor:!0,children:[" \u2193 ",b.length-y-x.length," below"]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),B?a6.jsxDEV(W8,{flexDirection:"column",flexGrow:1,paddingLeft:2,children:[a6.jsxDEV(d,{bold:!0,children:B.config.name},void 0,!1,void 0,this),a6.jsxDEV(d,{children:B.config.description??"No description"},void 0,!1,void 0,this),a6.jsxDEV(W8,{marginTop:1,flexDirection:"column",children:[a6.jsxDEV(d,{dimColor:!0,children:["Use: ",B.config.usage??"primary"," \xB7 Role: ",B.config.role??"\u2014"," \xB7 Model: ",B.config.model??"inherited"]},void 0,!0,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:["Tools: ",Array.isArray(B.config.tools)?B.config.tools.join(", "):B.config.tools??"role defaults"]},void 0,!0,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:["Origin: ",B.origin,B.overridden?" \xB7 override":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a6.jsxDEV(W8,{marginTop:1,flexDirection:"column",children:[a6.jsxDEV(d,{dimColor:!0,children:"Specialization prompt"},void 0,!1,void 0,this),a6.jsxDEV(d,{wrap:"wrap",children:[B.config.systemPrompt.replace(/\s+/g," ").slice(0,320),B.config.systemPrompt.length>320?"\u2026":""]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),a6.jsxDEV(W8,{marginTop:1,flexDirection:"column",children:[a6.jsxDEV(d,{dimColor:!0,children:"Protected protocol"},void 0,!1,void 0,this),a6.jsxDEV(d,{color:z.textDim,children:"summary \xB7 confidence \xB7 filesRead \xB7 filesChanged \xB7 issuesFound \xB7 suggestions \xB7 metadata"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):a6.jsxDEV(d,{dimColor:!0,children:"No agents match these filters."},void 0,!1,void 0,this)]},void 0,!0,void 0,this),N?a6.jsxDEV(W8,{flexDirection:"column",children:[a6.jsxDEV(d,{color:z.primary,children:f},void 0,!1,void 0,this),a6.jsxDEV(d,{children:[L||"\u2026",a6.jsxDEV(d,{color:z.primary,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:"Enter save \xB7 Esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):a6.jsxDEV(a6.Fragment,{children:[a6.jsxDEV(d,{color:f.startsWith("Error")?z.error:z.textDim,wrap:"truncate-end",children:f},void 0,!1,void 0,this),a6.jsxDEV(d,{dimColor:!0,children:"\u2191\u2193 navigate \xB7 n new \xB7 e JSON \xB7 p prompt \xB7 c copy \xB7 d disable/delete \xB7 r restore \xB7 Esc back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}u5();C0();p0();H5();e2();B48();var W5=U(l6(),1),G0=U(F1(),1);import{randomUUID as A78}from"crypto";var t91=!1;function P78($){let K=[];for(let D of["PreToolUse","PostToolUse"])for(let q of $?.[D]??[])for(let z of q.hooks)K.push({event:D,matcher:q.matcher,matcherId:q.id,matcherEnabled:q.enabled,command:z});for(let D of $?.SessionStart??[])K.push({event:"SessionStart",matcher:"\u2014",command:D});return K}function $V6($){let K={};for(let D of $){if(D.event==="SessionStart"){K.SessionStart=[...K.SessionStart??[],D.command];continue}let q=K[D.event]??[],z=q.find((w)=>D.matcherId?w.id===D.matcherId:w.matcher===D.matcher);if(!z)z={id:D.matcherId??`matcher-${A78().slice(0,8)}`,matcher:D.matcher,enabled:D.matcherEnabled??!0,hooks:[]},q.push(z);z.hooks.push(D.command),K[D.event]=q}return K}function N78({scope:$,theme:K,onBack:D}){let q=D4(K),[z]=W5.useState(()=>new _D),[w,Y]=W5.useState([]),[H,W]=W5.useState(0),[Z,G]=W5.useState(0),[M,P]=W5.useState(null),[N,T]=W5.useState(""),[L,E]=W5.useState(!1),[f,C]=W5.useState(t91),[S,b]=W5.useState("n new \xB7 e command \xB7 m matcher \xB7 v event \xB7 Space enable \xB7 t test \xB7 d delete"),B=w[Math.min(Z,Math.max(0,w.length-1))],h=async()=>{let p=await z.reload();Y(P78(p.levels.user.data.hooks));let q8=P78(p.levels.project.data.hooks).length+P78(p.levels.local.data.hooks).length;W(q8)};W5.useEffect(()=>{h()},[$]);let v=async(p,q8)=>{try{await z.set("user","hooks",$V6(p)),Y(p),G((F8)=>Math.min(F8,Math.max(0,p.length-1))),b(q8)}catch(F8){b(`Error: ${F8.message}`)}},y=async(p)=>{if(!B)return;if(E(!1),p)t91=!0,C(!0);let q8=Date.now(),F8=await ZV(B.command,{event:B.event,session_id:"settings-preview",tool_name:B.event==="SessionStart"?void 0:"read_file",tool_input:B.event==="SessionStart"?void 0:{path:"README.md",simulated:!0},tool_result:B.event==="PostToolUse"?"simulated result":void 0});b(`Test ${F8?`output: ${F8}`:"completed"} \xB7 ${Date.now()-q8}ms`)};x4((p,q8)=>{if(L){if(p==="1")y(!1);else if(p==="2")y(!0);else if(p.toLowerCase()==="c"||q8.escape)E(!1),b("Test cancelled");return}if(M){if(q8.escape){P(null),T("");return}if(q8.backspace||q8.delete){T((F8)=>F8.slice(0,-1));return}if(q8.return){if(!N.trim()){b("A non-empty value is required");return}if(M==="new")v([...w,{event:"PreToolUse",matcher:"*",matcherId:`matcher-${A78().slice(0,8)}`,matcherEnabled:!0,command:{id:`hook-${A78().slice(0,8)}`,type:"command",command:N,timeout:30,enabled:!0}}],"Hook created for PreToolUse(*)");else if(B){let F8=w.map((t,D8)=>{if(D8!==Z)return t;if(M==="command")return{...t,command:{...t.command,command:N}};if(M==="timeout")return{...t,command:{...t.command,timeout:Number(N)}};return{...t,matcher:N}});v(F8,M==="command"?"Command updated":M==="timeout"?"Timeout updated":"Matcher updated")}P(null),T("");return}if(p&&!q8.ctrl&&!q8.meta)T((F8)=>F8+p);return}if(q8.escape||p==="q"){D();return}if($!=="user"){b("Project and Local hooks are ignored. Switch to User scope to edit executable hooks.");return}if(q8.upArrow||p==="k"){G((F8)=>(F8-1+w.length)%Math.max(1,w.length));return}if(q8.downArrow||p==="j"){G((F8)=>(F8+1)%Math.max(1,w.length));return}if(p==="n"){P("new"),T(""),b("Command for new PreToolUse(*) hook");return}if(p==="e"&&B){P("command"),T(B.command.command),b("Edit command");return}if(p==="m"&&B&&B.event!=="SessionStart"){P("matcher"),T(B.matcher),b("Edit matcher");return}if(p==="x"&&B){P("timeout"),T(String(B.command.timeout??30)),b("Timeout in seconds");return}if(p==="d"&&B){v(w.filter((F8,t)=>t!==Z),"Hook removed");return}if(p===" "&&B){v(w.map((F8,t)=>t===Z?{...F8,command:{...F8.command,enabled:F8.command.enabled===!1}}:F8),B.command.enabled===!1?"Hook enabled":"Hook disabled");return}if(p==="v"&&B){let F8=["PreToolUse","PostToolUse","SessionStart"],t=F8[(F8.indexOf(B.event)+1)%F8.length];v(w.map((D8,v8)=>v8===Z?{...D8,event:t,matcher:t==="SessionStart"?"\u2014":D8.matcher==="\u2014"?"*":D8.matcher}:D8),`Event changed to ${t}`);return}if(p==="t"&&B)if(f)y(!1);else E(!0),b("Run executable hook with a simulated payload?")});let x=Math.max(4,(process.stdout.rows||24)-10),a=Math.max(0,Math.min(Z-Math.floor(x/2),Math.max(0,w.length-x))),u=w.slice(a,a+x);return G0.jsxDEV(W8,{flexDirection:"column",width:process.stdout.columns||80,height:process.stdout.rows||24,paddingX:1,children:[G0.jsxDEV(W8,{justifyContent:"space-between",children:[G0.jsxDEV(d,{bold:!0,color:q.primary,children:"Settings / Hooks"},void 0,!1,void 0,this),G0.jsxDEV(d,{dimColor:!0,children:"Executable scope: User"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),$!=="user"||H>0?G0.jsxDEV(d,{color:q.warning,children:["\u25B3 Project and Local hooks are ignored for security",H?` \xB7 ${H} found`:""]},void 0,!0,void 0,this):G0.jsxDEV(d,{dimColor:!0,children:"Old hooks are treated as enabled and receive stable IDs when loaded."},void 0,!1,void 0,this),G0.jsxDEV(W8,{marginTop:1,flexGrow:1,children:[G0.jsxDEV(W8,{flexDirection:"column",width:Math.min(48,Math.max(30,Math.floor((process.stdout.columns||80)*0.55))),children:[u.map((p,q8)=>{let F8=a+q8===Z;return G0.jsxDEV(W8,{justifyContent:"space-between",children:[G0.jsxDEV(d,{bold:F8,color:F8?q.primary:q.text,wrap:"truncate-end",children:[F8?"\u203A ":" ",p.event,"(",p.matcher,")"]},void 0,!0,void 0,this),G0.jsxDEV(d,{dimColor:!0,children:p.command.enabled===!1?"OFF":"ON"},void 0,!1,void 0,this)]},`${p.command.id??q8}`,!0,void 0,this)}),!u.length?G0.jsxDEV(d,{dimColor:!0,children:"No User hooks configured."},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),B?G0.jsxDEV(W8,{flexDirection:"column",flexGrow:1,paddingLeft:2,children:[G0.jsxDEV(d,{bold:!0,children:B.event},void 0,!1,void 0,this),G0.jsxDEV(d,{dimColor:!0,children:["ID: ",B.command.id??"legacy \xB7 assigned on reload"]},void 0,!0,void 0,this),G0.jsxDEV(d,{dimColor:!0,children:["Matcher: ",B.matcher," \xB7 Timeout: ",B.command.timeout??30,"s"]},void 0,!0,void 0,this),G0.jsxDEV(W8,{marginTop:1,children:G0.jsxDEV(d,{wrap:"wrap",children:B.command.command},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this),L?G0.jsxDEV(W8,{flexDirection:"column",children:[G0.jsxDEV(d,{color:q.warning,children:S},void 0,!1,void 0,this),G0.jsxDEV(d,{children:"1 Confirm once \xB7 2 Confirm for session \xB7 c Cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):M?G0.jsxDEV(W8,{flexDirection:"column",children:[G0.jsxDEV(d,{color:q.primary,children:S},void 0,!1,void 0,this),G0.jsxDEV(d,{children:[N||"\u2026",G0.jsxDEV(d,{color:q.primary,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),G0.jsxDEV(d,{dimColor:!0,children:"Enter save \xB7 Esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):G0.jsxDEV(G0.Fragment,{children:[G0.jsxDEV(d,{color:S.startsWith("Error")?q.error:q.textDim,wrap:"truncate-end",children:S},void 0,!1,void 0,this),G0.jsxDEV(d,{dimColor:!0,children:"\u2191\u2193 navigate \xB7 n new \xB7 e command \xB7 m matcher \xB7 x timeout \xB7 v event \xB7 Space toggle \xB7 t test \xB7 d delete \xB7 Esc back"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)]},void 0,!0,void 0,this)}rU();var B1=U(F1(),1),e91=new Set(["model.default","promptRefiner.model","agents.subagentModel"]),$31=[{id:"provider",label:"Provider & Model",short:"Provider",description:"Backend, endpoints, credentials and model defaults.",items:[{path:"provider.name",label:"Provider",description:"DeepSeek API, AWS Bedrock, Google Vertex AI or a local OpenAI-compatible server.",kind:"enum",options:["deepseek","bedrock","vertex","local"],restart:!0,aliases:["backend"]},{path:"model.default",label:"Default model",description:"Model used by the primary agent. Applies immediately when compatible with this provider.",kind:"enum",aliases:["llm"]},{path:"provider.endpoint",label:"Endpoint",description:"Optional API base URL. Provider and endpoint changes take effect next session.",kind:"text",restart:!0,aliases:["base url"]},{path:"provider.timeoutMs",label:"Connection timeout",description:"Maximum provider request time in milliseconds.",kind:"number"},{path:"provider.region",label:"AWS region",description:"AWS Bedrock region.",kind:"text",restart:!0},{path:"provider.profile",label:"AWS profile",description:"Named AWS credentials profile.",kind:"text",restart:!0},{path:"provider.projectId",label:"GCP project",description:"Google Cloud project for Vertex AI.",kind:"text",restart:!0},{path:"provider.location",label:"GCP location",description:"Vertex AI region, such as us-central1.",kind:"text",restart:!0},{path:"$secret.DEEPSEEK_API_KEY",credentialKey:"DEEPSEEK_API_KEY",label:"DeepSeek API key",description:"Stored only in ~/.deepseek/config.json. Enter replaces it; Backspace on an empty editor removes it.",kind:"secret"},{path:"$secret.GCP_CREDENTIALS",credentialKey:"GCP_CREDENTIALS",label:"GCP credentials",description:"Path or credential value stored only in the credentials file.",kind:"secret"},{path:"$action.test-provider",label:"Test connection",description:"Checks latency and asks the active provider for available models.",kind:"action",action:"test-provider"}]},{id:"behavior",label:"Agent Behavior",short:"Behavior",description:"Default interaction mode and prompt refinement.",items:[{path:"interaction.defaultMode",label:"Default mode",description:"Build, Plan, Review or Auto. Auto may only be set at User scope.",kind:"enum",options:["build","plan","review","auto"]},{path:"promptRefiner.enabled",label:"Prompt refinement",description:"Refine sufficiently long coding requests before execution.",kind:"boolean"},{path:"promptRefiner.model",label:"Refiner model",description:"Optional model override; empty inherits the primary model.",kind:"enum"},{path:"promptRefiner.minimumLength",label:"Minimum length",description:"Messages shorter than this character count are never refined.",kind:"number"},{path:"promptRefiner.excludeTypes",label:"Never refine",description:"Comma-separated message types, such as command and follow-up.",kind:"list"},{path:"permissions.autoApproveLowRisk",label:"Autoapprove low risk",description:"Allow low-risk operations without a prompt. Deny and high-risk checks remain mandatory.",kind:"boolean"},{path:"$action.preview-refiner",label:"Refiner preview",description:"Use the current conversation model to compare original and refined prompts.",kind:"action",action:"preview-refiner"}]},{id:"context",label:"Context & Compaction",short:"Context",description:"Automatic context compaction policy.",items:[{path:"compaction.enabled",label:"Auto-compact",description:"Automatically summarizes context near the configured threshold. Manual compaction remains /compact.",kind:"boolean"},{path:"compaction.threshold",label:"Threshold",description:"Context utilization ratio from 0.70 to 0.95. Default is 0.90.",kind:"number"}]},{id:"permissions",label:"Permissions & Risk",short:"Permissions",description:"Allow/deny rules, inheritance and risk checks.",items:[{path:"permissions.allow",label:"Allow rules",description:"Rules such as Shell(git *) or ReadFile. Rules inherit across scopes.",kind:"list",aliases:["whitelist"]},{path:"permissions.deny",label:"Deny rules",description:"Mandatory deny rules. Higher scopes cannot suppress them.",kind:"list",aliases:["block blacklist"]},{path:"permissions.suppress",label:"Suppress inherited allow",description:"Exact inherited allow rules to hide at this scope.",kind:"list"},{path:"risk.enabled",label:"Risk analysis",description:"Evaluate built-in and custom risk rules before tool execution.",kind:"boolean"},{path:"risk.thresholds.largeFileLines",label:"Large file threshold",description:"Line count that marks an overwrite as high risk.",kind:"number"},{path:"risk.thresholds.burstCount",label:"Edit burst threshold",description:"Number of writes that activates burst risk.",kind:"number"},{path:"risk.rules",label:"Custom risk rules",description:"JSON array of rules with id, level, tool, pattern or condition.",kind:"json"},{path:"$action.preview-permission",label:"Preview rule match",description:"Enter a tool name and optional JSON arguments to see allow, deny or ask.",kind:"action",action:"preview-permission"},{path:"$action.permissions-help",label:"Explain permissions",description:"Show the same effective policy explained by /permissions.",kind:"action",action:"permissions-help"},{path:"$action.clear-approvals",label:"Clear session approvals",description:"Forget approvals granted for this running session.",kind:"action",action:"clear-approvals"}]},{id:"agents",label:"Agents",short:"Agents",description:"Unified primary/subagent registry and delegation policy.",items:[{path:"$action.agents",label:"Agent library",description:"Create, edit, duplicate, disable or restore scoped JSON agents.",kind:"action",action:"agents"},{path:"agents.default",label:"Default agent",description:"Primary agent selected for the next session.",kind:"text",restart:!0},{path:"agents.basePrompt",label:"Subagent base prompt",description:"Editable prompt composed before each specialization. The executor protocol remains protected.",kind:"text"},{path:"agents.subagentModel",label:"Subagent model",description:"Default model for delegated work.",kind:"enum"},{path:"agents.concurrency",label:"Concurrency",description:"Maximum concurrent subagents, from 1 to 10.",kind:"number"},{path:"agents.permissionPolicy",label:"Permission policy",description:"Inherit parent rules or isolate allow rules. Parent deny and risk rules always remain.",kind:"enum",options:["inherit","isolated"]},{path:"agents.additionalDirectories",label:"Additional directories",description:"Comma-separated agent library paths.",kind:"list"},{path:"agents.disabledBuiltins",label:"Disabled built-ins",description:"Built-ins disabled by name. Restore removes the scoped override.",kind:"list"}]},{id:"memory",label:"Memory & Sessions",short:"Memory",description:"Memory scope, retention, resume and safe export.",items:[{path:"memory.enabled",label:"Memory",description:"Enable durable agent and user memory.",kind:"boolean"},{path:"memory.scope",label:"Memory scope",description:"Store memory globally for the user or within this project.",kind:"enum",options:["user","project"]},{path:"sessions.retention",label:"Session retention",description:"Maximum saved sessions. Default is 50.",kind:"number"},{path:"sessions.autoResume",label:"Auto-resume",description:"Off or resume the last session for this project. Explicit CLI flags always win.",kind:"enum",options:["off","project-last"],restart:!0},{path:"$action.clear-memory",label:"Clear active memory",description:"Clear the effective User or Project memory directory after confirmation.",kind:"action",action:"clear-memory"},{path:"$action.clear-sessions-project",label:"Clear project sessions",description:"Delete saved sessions whose working directory is this project.",kind:"action",action:"clear-sessions-project"},{path:"$action.clear-sessions-global",label:"Clear all sessions",description:"Delete all saved sessions globally. Requires explicit confirmation.",kind:"action",action:"clear-sessions-global"},{path:"$action.export",label:"Export bundle",description:"Write a JSON bundle without secrets containing effective settings.",kind:"action",action:"export"}]},{id:"git",label:"Git & Worktrees",short:"Git",description:"Checkpoints, isolated work and mutation review.",items:[{path:"git.checkpoint",label:"Automatic checkpoint",description:"Checkpoint files before mutating tools edit them.",kind:"boolean"},{path:"git.worktree",label:"Worktree policy",description:"Disable, ask, or automatically isolate work in a worktree.",kind:"enum",options:["off","ask","auto"]},{path:"git.branchPattern",label:"Branch pattern",description:"Template for worktree branches. Supports {slug} and {shortId}.",kind:"text"},{path:"git.reviewDiff",label:"Review diff",description:"Review the diff before releasing a final response after mutations.",kind:"boolean"},{path:"git.generatedPatterns",label:"Generated files",description:"Patterns excluded from checkpoints, tracking and review, but still editable.",kind:"list"}]},{id:"interface",label:"Interface",short:"Interface",description:"Theme, language, density and information visibility.",items:[{path:"interface.theme",label:"Theme",description:"Color theme for the TUI.",kind:"enum",options:["dark","light","dark-daltonized","light-daltonized","dark-ansi","light-ansi"]},{path:"interface.language",label:"Language",description:"Preferred response language.",kind:"text"},{path:"interface.vim",label:"Vim input",description:"Persist Vim-style input mode.",kind:"boolean"},{path:"interface.density",label:"Density",description:"Compact or comfortable vertical spacing.",kind:"enum",options:["compact","comfortable"]},{path:"interface.reducedMotion",label:"Reduced motion",description:"Disable non-essential shimmer and motion.",kind:"boolean"},{path:"interface.alternateScreen",label:"Alternate screen",description:"Use the terminal alternate buffer next session.",kind:"boolean",restart:!0},{path:"interface.showThoughts",label:"Show thoughts",description:"Show or hide reasoning panels without deleting history data.",kind:"boolean"},{path:"interface.showToolCalls",label:"Show tool calls",description:"Show tool call details in the transcript.",kind:"boolean"},{path:"interface.showDiffs",label:"Show diffs",description:"Show diffs while preserving their history records.",kind:"boolean"},{path:"interface.statusBar",label:"Status bar order",description:"Comma-separated order: mode, model, tokens, branch, context.",kind:"list"},{path:"interface.narrowPriority",label:"Narrow priorities",description:"Truncation priority for status items in narrow terminals.",kind:"list"}]},{id:"hooks",label:"Hooks",short:"Hooks",description:"User-scoped executable lifecycle hooks.",items:[{path:"$action.hooks",label:"Hook library",description:"Create, edit, enable, disable, test and remove hooks. Project hooks are shown as ignored.",kind:"action",action:"hooks"},{path:"hooks.PreToolUse",label:"PreToolUse hooks",description:"User-only matcher/command hooks run before tools.",kind:"json"},{path:"hooks.PostToolUse",label:"PostToolUse hooks",description:"User-only matcher/command hooks run after tools.",kind:"json"},{path:"hooks.SessionStart",label:"SessionStart hooks",description:"User-only command hooks run when a session starts.",kind:"json"}]},{id:"advanced",label:"Advanced",short:"Advanced",description:"Paths, reload, diagnostics, reset and raw files.",items:[{path:"$action.reload",label:"Reload settings",description:"Re-read all scopes and apply compatible values without restarting.",kind:"action",action:"reload"},{path:"$action.open-scope",label:"Open scope file",description:"Pause the TUI and open the selected scope JSON in $VISUAL or $EDITOR.",kind:"action",action:"open-scope"},{path:"$action.open-credentials",label:"Open credentials",description:"Open ~/.deepseek/config.json separately from non-secret settings.",kind:"action",action:"open-credentials"},{path:"$action.diagnostics",label:"Diagnostics",description:"Show scope paths, validation issues and unknown top-level keys.",kind:"action",action:"diagnostics"},{path:"$action.reset-scope",label:"Reset scope",description:"Remove all known and unknown settings overrides from the selected scope.",kind:"action",action:"reset-scope"},{path:"$action.export",label:"Export effective settings",description:"Write a secret-free diagnostic export into .deepseek.",kind:"action",action:"export"}]}];function qV6($){return $>=110?"wide":$>=72?"medium":"narrow"}function zV6($){return Math.max(6,Math.min(9,$-13))}function T78($){if($===void 0||$===null||$==="")return"\u2014";if(typeof $==="boolean")return $?"ON":"OFF";if(Array.isArray($))return $.length?$.map((K)=>typeof K==="string"?K:JSON.stringify(K)).join(", "):"[]";if(typeof $==="object")return JSON.stringify($);return String($)}function qG($,K){return K.split(".").reduce((D,q)=>D&&typeof D==="object"?D[q]:void 0,$)}function K31($,K,D){if($.length<=D)return{before:!1,after:!1,start:0,values:$};let q=Math.max(0,Math.min(K-D+1,$.length-D));return{before:q>0,after:q+D<$.length,start:q,values:$.slice(q,q+D)}}function wV6($,K){return K[(K.indexOf(String($??""))+1)%K.length]??""}function _78($){let[K]=r0.useState(()=>new _D),[D,q]=r0.useState(null),[z,w]=r0.useState({}),[Y,H]=r0.useState("user"),[W,Z]=r0.useState(0),[G,M]=r0.useState(0),[P,N]=r0.useState("categories"),[T,L]=r0.useState("categories"),[E,f]=r0.useState(!1),[C,S]=r0.useState(""),[b,B]=r0.useState(null),[h,v]=r0.useState(""),[y,x]=r0.useState("Loading settings\u2026"),[a,u]=r0.useState(!1),[p,q8]=r0.useState([]),[F8,t]=r0.useState(null),[D8,v8]=r0.useState(null),U8=r0.useRef(!0),W1=process.stdout.columns||80,f8=process.stdout.rows||24,Q8=qV6(W1),P1=D4($.currentTheme),R8=async(h8="Settings reloaded")=>{u(!0);try{let[y8,$1]=await Promise.all([K.reload(),$G()]);q(y8),w($1),await $.onSettingsChanged?.(y8.effective),x(h8)}catch(y8){x(`Error: ${y8.message}`)}finally{u(!1)}};r0.useEffect(()=>{R8("Ready")},[]);let x1=r0.useMemo(()=>{let h8=C.trim().toLowerCase();if(!h8)return $31;return $31.map((y8)=>({...y8,items:y8.items.filter(($1)=>[$1.label,$1.description,y8.label,...$1.aliases??[]].join(" ").toLowerCase().includes(h8))})).filter((y8)=>y8.items.length>0)},[C]);r0.useEffect(()=>{Z(0),M(0)},[C]),r0.useEffect(()=>{cy(process.stdout,U8.current),U8.current=!1},[W,G,P,Y,C,Q8]);let C1=x1[Math.min(W,Math.max(0,x1.length-1))],i8=C1?.items[Math.min(G,Math.max(0,C1.items.length-1))],y1=i8&&D?i8.kind==="secret"?z[i8.credentialKey]:qG(D.effective,i8.path):void 0,L1=async(h8,y8)=>{try{if(u(!0),h8.path==="$preview")x(await $.onPreviewRefiner?.(y8)??"Refiner preview unavailable");else if(h8.path==="$permission-preview"){let $1=y8.indexOf(" "),r8=($1<0?y8:y8.slice(0,$1)).trim(),T1={};if($1>=0&&y8.slice($1+1).trim())T1=JSON.parse(y8.slice($1+1));let J6=qX(D?.effective.permissions,r8,T1);x(`Permission preview \xB7 ${r8}: ${J6.toUpperCase()}`)}else if(h8.kind==="secret"){let $1={...z};if(y8)$1[h8.credentialKey]=y8;else delete $1[h8.credentialKey];await KG($1),w($1),x(y8?"Credential replaced":"Credential removed")}else{let $1=y8;if(h8.kind==="boolean")$1=y8==="true";if(h8.kind==="number")$1=Number(y8);if(h8.kind==="list")$1=y8.split(",").map((T1)=>T1.trim()).filter(Boolean);if(h8.kind==="json")$1=y8.trim()?JSON.parse(y8):[];let r8=y8===""&&h8.kind==="text"?await K.unset(Y,h8.path):await K.set(Y,h8.path,$1);if(q(r8),await $.onSettingsChanged?.(r8.effective),h8.path==="interface.theme")$.onThemeSelect($1);if(h8.path==="interface.language"){let T1=qG(r8.effective,h8.path);if(typeof T1==="string")$.onLanguageSet(T1)}if(h8.path==="promptRefiner.enabled")$.onEnchantToggle(Boolean($1));x(h8.restart?"Saved \xB7 active next session":"Saved \xB7 active now")}}catch($1){x(`Error: ${$1.message}`)}finally{u(!1),B(null),v("")}},g=async(h8)=>{let y8=process.env.VISUAL||process.env.EDITOR;if(!y8){x("Set $VISUAL or $EDITOR first");return}await a91(s91(h8),{recursive:!0});try{await QJ(()=>h6(y8,[h8],{stdio:"inherit"}).then(()=>{return}))}catch($1){x(`Editor error: ${$1.message}`)}finally{await R8("File closed \xB7 settings reloaded")}},r=async(h8)=>{try{switch(h8.action){case"reload":await R8();break;case"test-provider":{if(!$.onTestConnection){x("Connection test unavailable");break}u(!0);let y8=Date.now();try{let $1=await $.onTestConnection(D.effective,z);q8($1),x(`Connected in ${Date.now()-y8}ms \xB7 ${$1.length} model${$1.length===1?"":"s"} found`)}catch($1){x(`Connection failed: ${$1.message}`)}finally{u(!1)}break}case"preview-refiner":B({...h8,path:"$preview",kind:"text",label:"Prompt to preview"}),v(""),x("Type a prompt and press Enter");break;case"preview-permission":B({...h8,path:"$permission-preview",kind:"text",label:"Tool and JSON arguments"}),v('shell {"command":"git status"}'),x('Format: tool_name {"argument":"value"}');break;case"permissions-help":x($.onPermissionsHelp?.().replace(/\n/g," \xB7 ").slice(0,Math.max(40,W1-12))??"Use /permissions for the effective policy");break;case"clear-approvals":$.onClearApprovals?.(),x("Session approvals cleared");break;case"open-scope":if(D)await g(D.levels[Y].path);break;case"open-credentials":await g(ua8());break;case"diagnostics":{let y8=D?["user","project","local"].map((T1)=>`${T1}: ${D.levels[T1].path}`).join(" \xB7 "):"paths unavailable",$1=D?.issues.length?D.issues.map((T1)=>`${T1.level??"effective"}:${T1.path||"JSON"} ${T1.message}`).join(" \xB7 "):"no validation issues",r8=D?.unknownPaths.length?D.unknownPaths.join(", "):"none";x(`${y8} \xB7 Unknown keys: ${r8} \xB7 ${$1}`);break}case"export":{let[y8,$1,r8]=await Promise.all([SW("agent"),SW("user"),rO()]),T1=await K.export({memory:{agent:y8,user:$1},sessions:r8}),J6=DV6(process.cwd(),".deepseek",`settings-export-${new Date().toISOString().replace(/[:.]/g,"-")}.json`);await a91(s91(J6),{recursive:!0}),await KV6(J6,`${JSON.stringify(T1,null,2)}
1330
- `,"utf8"),x(`Exported without secrets \xB7 ${J6}`);break}case"reset-scope":t("reset-scope"),x(`Press y to reset all ${Y} overrides, or n to cancel`);break;case"clear-memory":t("clear-memory"),x("Press y to clear the active memory directory, or n to cancel");break;case"clear-sessions-project":t("clear-sessions-project"),x("Press y to delete sessions for this project, or n to cancel");break;case"clear-sessions-global":t("clear-sessions-global"),x("Press y to delete ALL saved sessions, or n to cancel");break;case"agents":v8("agents");break;case"hooks":v8("hooks");break;default:x("Unknown settings action")}}catch(y8){x(`Error: ${y8.message}`)}},o=async(h8)=>{if(!D||a)return;if(h8.path==="agents.basePrompt"){try{await L1(h8,await AI("subagent-base-prompt",String(y1??"")))}catch(y8){x(`Editor error: ${y8.message}`)}return}if(h8.kind==="action"){await r(h8);return}if(h8.kind==="boolean"){let y8=Boolean(qG(D.effective,h8.path));await L1(h8,String(!y8));return}if(h8.kind==="enum"){let y8=h8.options??[];if(e91.has(h8.path)){let $1=p;if(!$1.length){u(!0),x("Loading provider models\u2026");try{$1=await $.onTestConnection?.(D.effective,z)??[]}catch(r8){x(`Model list failed: ${r8.message}`);return}finally{u(!1)}if(!$1.length){x("No models found \xB7 check Provider \u203A Test connection");return}q8($1)}y8=h8.path==="model.default"?$1:["",...$1]}await L1(h8,wV6(y1,y8));return}if(B(h8),h8.kind==="secret")v("");else if(h8.kind==="json")v(y1?JSON.stringify(y1):"[]");else v(Array.isArray(y1)?y1.join(", "):y1===void 0?"":String(y1))};x4((h8,y8,$1)=>{if(y8.wheelUp||y8.wheelDown||o91($1.keypress))return;if(F8){if(h8.toLowerCase()==="y"){let r8=F8;t(null),(async()=>{try{if(r8==="reset-scope"){let T1=await K.reset(Y);q(T1),await $.onSettingsChanged?.(T1.effective),x(`${Y} scope reset`)}else if(r8==="clear-memory"){let{clearMemory:T1}=await Promise.resolve().then(() => ($2(),vC));await T1(),x("Active memory cleared")}else{let{clearSessions:T1}=await Promise.resolve().then(() => (PX(),O48)),J6=await T1(r8==="clear-sessions-global"?"global":"project");x(`${J6} session${J6===1?"":"s"} deleted`)}}catch(T1){x(`Error: ${T1.message}`)}})()}else if(h8.toLowerCase()==="n"||y8.escape)t(null),x("Destructive action cancelled");return}if(b){if(y8.escape){B(null),v(""),x("Edit cancelled");return}if(y8.return){L1(b,h);return}if(y8.backspace||y8.delete){v((r8)=>r8.slice(0,-1));return}if(h8&&!y8.ctrl&&!y8.meta)v((r8)=>r8+h8);return}if(E){if(y8.escape){f(!1),S(""),Z(0),M(0);return}if(y8.return){f(!1),Z(0),M(0);return}if(y8.backspace||y8.delete){S((r8)=>r8.slice(0,-1));return}if(h8&&!y8.ctrl&&!y8.meta)S((r8)=>r8+h8);return}if(y8.tab){let r8=["user","project","local"];H((T1)=>r8[(r8.indexOf(T1)+(y8.shift?r8.length-1:1))%r8.length]);return}if(h8==="/"){f(!0);return}if(y8.escape||h8==="q"){if(Q8==="narrow"&&T!=="categories")L(T==="detail"?"items":"categories");else $.onClose();return}if(y8.leftArrow&&Q8!=="narrow"){N("categories");return}if(y8.rightArrow&&Q8!=="narrow"){if(C1?.items.length)N("items");return}if(y8.upArrow||h8==="k"){if(P==="categories"||Q8==="narrow"&&T==="categories"){if(x1.length===0)return;Z((r8)=>(r8-1+x1.length)%x1.length),M(0)}else if(C1?.items.length)M((r8)=>(r8-1+C1.items.length)%C1.items.length);return}if(y8.downArrow||h8==="j"){if(P==="categories"||Q8==="narrow"&&T==="categories"){if(x1.length===0)return;Z((r8)=>(r8+1)%x1.length),M(0)}else if(C1?.items.length)M((r8)=>(r8+1)%C1.items.length);return}if(y8.return){if(Q8==="narrow"&&T==="categories"){if(C1)L("items");return}if(Q8==="narrow"&&T==="items"){if(i8)L("detail");return}if(P==="categories"){if(C1?.items.length)N("items");return}if(i8)o(i8);return}if((h8==="e"||h8===" ")&&i8&&(P==="items"||Q8==="narrow"))o(i8);if(h8==="r"&&i8&&D&&!i8.path.startsWith("$"))K.unset(Y,i8.path).then(async(r8)=>{q(r8),await $.onSettingsChanged?.(r8.effective),x("Override removed \xB7 inherited value active")}).catch((r8)=>x(`Error: ${r8.message}`))},{isActive:D8===null});let l=zV6(f8),K8=K31(x1,W,Q8==="narrow"?Math.max(4,f8-8):l-2),J8=K31(C1?.items??[],G,Q8==="narrow"?Math.max(4,f8-8):Math.max(1,l-5)),G8=i8&&D&&!i8.path.startsWith("$")?la8(D,i8.path):null,w8=G8?.origin,P8=i8&&D&&!i8.path.startsWith("$")?qG(D.levels[Y].data,i8.path):void 0,$8=i8&&!i8.path.startsWith("$")?qG(J18,i8.path):void 0,N8=D?.levels[Y].error,C8=()=>B1.jsxDEV(W8,{flexDirection:"column",flexShrink:0,children:[B1.jsxDEV(W8,{justifyContent:"space-between",children:[B1.jsxDEV(d,{bold:!0,color:P1.primary,children:"DeepSeek Code \xB7 Settings"},void 0,!1,void 0,this),B1.jsxDEV(d,{dimColor:!0,children:a?"Loading\u2026":`Scope: ${Y[0].toUpperCase()}${Y.slice(1)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B1.jsxDEV(W8,{justifyContent:"space-between",children:[B1.jsxDEV(d,{dimColor:!0,children:Q8==="narrow"?`Settings / ${C1?.short??"Search"}${T==="detail"&&i8?` / ${i8.label}`:""}`:"User < Project < Local \xB7 per-field save"},void 0,!1,void 0,this),B1.jsxDEV(d,{color:C?P1.primary:P1.textDim,children:["/",C||" search"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),N8?B1.jsxDEV(d,{color:P1.error,children:["Invalid JSON \xB7 saves blocked: ",N8]},void 0,!0,void 0,this):null,W1<40||f8<12?B1.jsxDEV(d,{color:P1.warning,children:"Terminal too small \xB7 use at least 40\xD712 for safe editing"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),I8=()=>B1.jsxDEV(W8,{flexDirection:"column",width:Q8==="wide"?25:Q8==="medium"?17:void 0,paddingRight:1,children:[K8.before?B1.jsxDEV(d,{dimColor:!0,children:" \u2191 more"},void 0,!1,void 0,this):null,K8.values.map((h8,y8)=>{let r8=K8.start+y8===W&&(Q8==="narrow"?T==="categories":P==="categories"),T1=Q8==="medium"?h8.short.padEnd(13):h8.label;return B1.jsxDEV(d,{bold:r8,color:r8?P1.primary:P1.text,wrap:"truncate-end",children:[r8?"\u203A ":" ",T1]},h8.id,!0,void 0,this)}),K8.after?B1.jsxDEV(d,{dimColor:!0,children:" \u2193 more"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),Y1=()=>C1?B1.jsxDEV(W8,{flexDirection:"column",width:Q8==="wide"?38:Q8==="medium"?Math.max(44,W1-20):void 0,paddingX:Q8==="wide"?1:0,children:[B1.jsxDEV(d,{bold:!0,flexShrink:0,children:C1.label},void 0,!1,void 0,this),B1.jsxDEV(d,{dimColor:!0,wrap:"truncate-end",flexShrink:0,children:C1.description},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:1,flexDirection:"column",flexShrink:0,children:[J8.before?B1.jsxDEV(d,{dimColor:!0,flexShrink:0,children:[" \u2191 ",J8.start," above"]},void 0,!0,void 0,this):null,J8.values.map((h8,y8)=>{let r8=J8.start+y8===G&&(Q8==="narrow"?T==="items":P==="items"),T1=h8.kind==="secret"?z[h8.credentialKey]?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":"not set":h8.kind==="action"?"open":T78(D?qG(D.effective,h8.path):void 0);return B1.jsxDEV(W8,{width:"100%",justifyContent:"space-between",flexShrink:0,children:[B1.jsxDEV(d,{bold:r8,color:r8?P1.primary:P1.text,wrap:"truncate-end",flexShrink:1,children:[r8?"\u203A ":" ",h8.label]},void 0,!0,void 0,this),B1.jsxDEV(d,{color:r8?P1.primary:P1.textDim,wrap:"truncate-middle",flexShrink:0,children:T1},void 0,!1,void 0,this)]},h8.path,!0,void 0,this)}),J8.after?B1.jsxDEV(d,{dimColor:!0,flexShrink:0,children:[" \u2193 ",C1.items.length-J8.start-J8.values.length," below"]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):B1.jsxDEV(d,{dimColor:!0,children:"No setting matches this search."},void 0,!1,void 0,this),J1=()=>i8?B1.jsxDEV(W8,{flexDirection:"column",flexGrow:1,children:[B1.jsxDEV(d,{bold:!0,color:P1.primary,children:i8.label},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:Q8==="medium"?0:1,children:B1.jsxDEV(d,{wrap:Q8==="medium"?"truncate-end":"wrap",children:i8.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:Q8==="medium"?0:1,flexDirection:"column",children:[B1.jsxDEV(d,{dimColor:!0,children:"Effective value"},void 0,!1,void 0,this),B1.jsxDEV(d,{children:i8.kind==="secret"?y1?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 configured":"not configured":T78(y1)},void 0,!1,void 0,this),G8?B1.jsxDEV(d,{dimColor:!0,children:["Origin: ",w8," \xB7 editing: ",Y,P8===void 0?" (inherited)":" (override)"]},void 0,!0,void 0,this):null,Q8!=="medium"&&$8!==void 0?B1.jsxDEV(d,{dimColor:!0,children:["Default: ",T78($8)]},void 0,!0,void 0,this):null,Q8!=="medium"&&G8&&G8.overrides.length>1?B1.jsxDEV(d,{dimColor:!0,children:["Chain: ",G8.overrides.map((h8)=>h8.level).join(" \u2192 ")]},void 0,!0,void 0,this):null,i8.restart?B1.jsxDEV(d,{color:P1.warning,children:"\u25B3 Applies next session"},void 0,!1,void 0,this):i8.kind!=="action"?B1.jsxDEV(d,{color:P1.success,children:"\u2713 Applies immediately"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),Q8!=="medium"&&i8.path==="agents.basePrompt"?B1.jsxDEV(W8,{marginTop:1,flexDirection:"column",children:[B1.jsxDEV(d,{dimColor:!0,children:"Protected executor protocol"},void 0,!1,void 0,this),B1.jsxDEV(d,{color:P1.textDim,children:"JSON result fields: summary, confidence, filesRead, filesChanged, issuesFound, suggestions, metadata."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,B1.jsxDEV(W8,{marginTop:Q8==="medium"?0:1,children:B1.jsxDEV(d,{dimColor:!0,children:i8.kind==="boolean"?"Enter toggles":e91.has(i8.path)?p.length?`Enter cycles: ${i8.path==="model.default"?"":"inherit \xB7 "}${p.join(" \xB7 ")}`:"Enter loads and cycles provider models":i8.path==="agents.basePrompt"?"Enter opens Markdown editor \xB7 r restores inherited value":i8.kind==="enum"?`Enter cycles: ${i8.options?.join(" \xB7 ")}`:i8.kind==="action"?"Enter runs action":"Enter edits \xB7 r restores inherited value"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):B1.jsxDEV(d,{dimColor:!0,children:"No setting matches this search."},void 0,!1,void 0,this),N1=()=>B1.jsxDEV(W8,{flexDirection:"column",flexShrink:0,children:b?B1.jsxDEV(W8,{flexDirection:"column",children:[B1.jsxDEV(d,{color:P1.primary,children:b.kind==="secret"?"New secret (hidden)":`Edit ${b.label}`},void 0,!1,void 0,this),B1.jsxDEV(d,{children:[b.kind==="secret"?"\u2022".repeat(h.length)||"\u2026":h||"\u2026",B1.jsxDEV(d,{color:P1.primary,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B1.jsxDEV(d,{dimColor:!0,children:"Enter save \xB7 Esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):B1.jsxDEV(B1.Fragment,{children:[B1.jsxDEV(d,{color:y.startsWith("Error")||y.includes("failed")?P1.error:P1.textDim,wrap:"truncate-end",children:y},void 0,!1,void 0,this),B1.jsxDEV(d,{dimColor:!0,wrap:"truncate-end",children:"\u2191\u2193 navigate \xB7 Enter select/edit \xB7 / search \xB7 Tab scope \xB7 r inherit \xB7 Esc back/close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(D8==="agents")return B1.jsxDEV(M78,{scope:Y,theme:$.currentTheme,onBack:()=>{v8(null),R8("Agent registry reloaded")},onChanged:()=>{return}},void 0,!1,void 0,this);if(D8==="hooks")return B1.jsxDEV(N78,{scope:Y,theme:$.currentTheme,onBack:()=>{v8(null),R8("Hooks reloaded")}},void 0,!1,void 0,this);return B1.jsxDEV(W8,{flexDirection:"column",width:W1,height:f8,paddingX:1,children:[B1.jsxDEV(C8,{},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:1,flexGrow:1,minHeight:0,children:Q8!=="narrow"?B1.jsxDEV(W8,{flexDirection:"column",width:"100%",children:[B1.jsxDEV(W8,{height:l,flexShrink:0,children:[B1.jsxDEV(I8,{},void 0,!1,void 0,this),B1.jsxDEV(d,{color:P1.textInactive,children:[`\u2502
1330
+ `,"utf8"),x(`Exported without secrets \xB7 ${J6}`);break}case"reset-scope":t("reset-scope"),x(`Press y to reset all ${Y} overrides, or n to cancel`);break;case"clear-memory":t("clear-memory"),x("Press y to clear the active memory directory, or n to cancel");break;case"clear-sessions-project":t("clear-sessions-project"),x("Press y to delete sessions for this project, or n to cancel");break;case"clear-sessions-global":t("clear-sessions-global"),x("Press y to delete ALL saved sessions, or n to cancel");break;case"agents":v8("agents");break;case"hooks":v8("hooks");break;default:x("Unknown settings action")}}catch(y8){x(`Error: ${y8.message}`)}},o=async(h8)=>{if(!D||a)return;if(h8.path==="agents.basePrompt"){try{await L1(h8,await AI("subagent-base-prompt",String(y1??"")))}catch(y8){x(`Editor error: ${y8.message}`)}return}if(h8.kind==="action"){await r(h8);return}if(h8.kind==="boolean"){let y8=Boolean(qG(D.effective,h8.path));await L1(h8,String(!y8));return}if(h8.kind==="enum"){let y8=h8.options??[];if(e91.has(h8.path)){let $1=p;if(!$1.length){u(!0),x("Loading provider models\u2026");try{$1=await $.onTestConnection?.(D.effective,z)??[]}catch(r8){x(`Model list failed: ${r8.message}`);return}finally{u(!1)}if(!$1.length){x("No models found \xB7 check Provider \u203A Test connection");return}q8($1)}y8=h8.path==="model.default"?$1:["",...$1]}await L1(h8,wV6(y1,y8));return}if(B(h8),h8.kind==="secret")v("");else if(h8.kind==="json")v(y1?JSON.stringify(y1):"[]");else v(Array.isArray(y1)?y1.join(", "):y1===void 0?"":String(y1))};x4((h8,y8,$1)=>{if(y8.wheelUp||y8.wheelDown||o91($1.keypress))return;if(F8){if(h8.toLowerCase()==="y"){let r8=F8;t(null),(async()=>{try{if(r8==="reset-scope"){let T1=await K.reset(Y);q(T1),await $.onSettingsChanged?.(T1.effective),x(`${Y} scope reset`)}else if(r8==="clear-memory"){let{clearMemory:T1}=await Promise.resolve().then(() => ($2(),vC));await T1(),x("Active memory cleared")}else{let{clearSessions:T1}=await Promise.resolve().then(() => (PX(),O48)),J6=await T1(r8==="clear-sessions-global"?"global":"project");x(`${J6} session${J6===1?"":"s"} deleted`)}}catch(T1){x(`Error: ${T1.message}`)}})()}else if(h8.toLowerCase()==="n"||y8.escape)t(null),x("Destructive action cancelled");return}if(b){if(y8.escape){B(null),v(""),x("Edit cancelled");return}if(y8.return){L1(b,h);return}if(y8.backspace||y8.delete){v((r8)=>r8.slice(0,-1));return}if(h8&&!y8.ctrl&&!y8.meta)v((r8)=>r8+h8);return}if(E){if(y8.escape){f(!1),S(""),Z(0),M(0);return}if(y8.return){f(!1),Z(0),M(0);return}if(y8.backspace||y8.delete){S((r8)=>r8.slice(0,-1));return}if(h8&&!y8.ctrl&&!y8.meta)S((r8)=>r8+h8);return}if(y8.tab){let r8=["user","project","local"];H((T1)=>r8[(r8.indexOf(T1)+(y8.shift?r8.length-1:1))%r8.length]);return}if(h8==="/"){f(!0);return}if(y8.escape||h8==="q"){if(Q8==="narrow"&&T!=="categories")if(T==="detail")L("items"),N("items");else L("categories"),N("categories");else $.onClose();return}if(y8.leftArrow&&Q8!=="narrow"){N("categories");return}if(y8.rightArrow&&Q8!=="narrow"){if(C1?.items.length)N("items");return}if(y8.upArrow||h8==="k"){if(P==="categories"||Q8==="narrow"&&T==="categories"){if(x1.length===0)return;Z((r8)=>(r8-1+x1.length)%x1.length),M(0)}else if(C1?.items.length)M((r8)=>(r8-1+C1.items.length)%C1.items.length);return}if(y8.downArrow||h8==="j"){if(P==="categories"||Q8==="narrow"&&T==="categories"){if(x1.length===0)return;Z((r8)=>(r8+1)%x1.length),M(0)}else if(C1?.items.length)M((r8)=>(r8+1)%C1.items.length);return}if(y8.return){if(Q8==="narrow"&&T==="categories"){if(C1)L("items"),N("items");return}if(Q8==="narrow"&&T==="items"){if(i8)L("detail");return}if(P==="categories"){if(C1?.items.length)N("items");return}if(i8)o(i8);return}if((h8==="e"||h8===" ")&&i8&&(P==="items"||Q8==="narrow"))o(i8);if(h8==="r"&&i8&&D&&!i8.path.startsWith("$"))K.unset(Y,i8.path).then(async(r8)=>{q(r8),await $.onSettingsChanged?.(r8.effective),x("Override removed \xB7 inherited value active")}).catch((r8)=>x(`Error: ${r8.message}`))},{isActive:D8===null});let l=zV6(f8),K8=K31(x1,W,Q8==="narrow"?Math.max(4,f8-8):l-2),J8=K31(C1?.items??[],G,Q8==="narrow"?Math.max(4,f8-8):Math.max(1,l-5)),G8=i8&&D&&!i8.path.startsWith("$")?la8(D,i8.path):null,w8=G8?.origin,P8=i8&&D&&!i8.path.startsWith("$")?qG(D.levels[Y].data,i8.path):void 0,$8=i8&&!i8.path.startsWith("$")?qG(J18,i8.path):void 0,N8=D?.levels[Y].error,C8=()=>B1.jsxDEV(W8,{flexDirection:"column",flexShrink:0,children:[B1.jsxDEV(W8,{justifyContent:"space-between",children:[B1.jsxDEV(d,{bold:!0,color:P1.primary,children:"DeepSeek Code \xB7 Settings"},void 0,!1,void 0,this),B1.jsxDEV(d,{dimColor:!0,children:a?"Loading\u2026":`Scope: ${Y[0].toUpperCase()}${Y.slice(1)}`},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B1.jsxDEV(W8,{justifyContent:"space-between",children:[B1.jsxDEV(d,{dimColor:!0,children:Q8==="narrow"?`Settings / ${C1?.short??"Search"}${T==="detail"&&i8?` / ${i8.label}`:""}`:"User < Project < Local \xB7 per-field save"},void 0,!1,void 0,this),B1.jsxDEV(d,{color:C?P1.primary:P1.textDim,children:["/",C||" search"]},void 0,!0,void 0,this)]},void 0,!0,void 0,this),N8?B1.jsxDEV(d,{color:P1.error,children:["Invalid JSON \xB7 saves blocked: ",N8]},void 0,!0,void 0,this):null,W1<40||f8<12?B1.jsxDEV(d,{color:P1.warning,children:"Terminal too small \xB7 use at least 40\xD712 for safe editing"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),I8=()=>B1.jsxDEV(W8,{flexDirection:"column",width:Q8==="wide"?25:Q8==="medium"?17:void 0,paddingRight:1,children:[K8.before?B1.jsxDEV(d,{dimColor:!0,children:" \u2191 more"},void 0,!1,void 0,this):null,K8.values.map((h8,y8)=>{let r8=K8.start+y8===W&&(Q8==="narrow"?T==="categories":P==="categories"),T1=Q8==="medium"?h8.short.padEnd(13):h8.label;return B1.jsxDEV(d,{bold:r8,color:r8?P1.primary:P1.text,wrap:"truncate-end",children:[r8?"\u203A ":" ",T1]},h8.id,!0,void 0,this)}),K8.after?B1.jsxDEV(d,{dimColor:!0,children:" \u2193 more"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),Y1=()=>C1?B1.jsxDEV(W8,{flexDirection:"column",width:Q8==="wide"?38:Q8==="medium"?Math.max(44,W1-20):void 0,paddingX:Q8==="wide"?1:0,children:[B1.jsxDEV(d,{bold:!0,flexShrink:0,children:C1.label},void 0,!1,void 0,this),B1.jsxDEV(d,{dimColor:!0,wrap:"truncate-end",flexShrink:0,children:C1.description},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:1,flexDirection:"column",flexShrink:0,children:[J8.before?B1.jsxDEV(d,{dimColor:!0,flexShrink:0,children:[" \u2191 ",J8.start," above"]},void 0,!0,void 0,this):null,J8.values.map((h8,y8)=>{let r8=J8.start+y8===G&&(Q8==="narrow"?T==="items":P==="items"),T1=h8.kind==="secret"?z[h8.credentialKey]?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022":"not set":h8.kind==="action"?"open":T78(D?qG(D.effective,h8.path):void 0);return B1.jsxDEV(W8,{width:"100%",justifyContent:"space-between",flexShrink:0,children:[B1.jsxDEV(d,{bold:r8,color:r8?P1.primary:P1.text,wrap:"truncate-end",flexShrink:1,children:[r8?"\u203A ":" ",h8.label]},void 0,!0,void 0,this),B1.jsxDEV(d,{color:r8?P1.primary:P1.textDim,wrap:"truncate-middle",flexShrink:0,children:T1},void 0,!1,void 0,this)]},h8.path,!0,void 0,this)}),J8.after?B1.jsxDEV(d,{dimColor:!0,flexShrink:0,children:[" \u2193 ",C1.items.length-J8.start-J8.values.length," below"]},void 0,!0,void 0,this):null]},void 0,!0,void 0,this)]},void 0,!0,void 0,this):B1.jsxDEV(d,{dimColor:!0,children:"No setting matches this search."},void 0,!1,void 0,this),J1=()=>i8?B1.jsxDEV(W8,{flexDirection:"column",flexGrow:1,children:[B1.jsxDEV(d,{bold:!0,color:P1.primary,children:i8.label},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:Q8==="medium"?0:1,children:B1.jsxDEV(d,{wrap:Q8==="medium"?"truncate-end":"wrap",children:i8.description},void 0,!1,void 0,this)},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:Q8==="medium"?0:1,flexDirection:"column",children:[B1.jsxDEV(d,{dimColor:!0,children:"Effective value"},void 0,!1,void 0,this),B1.jsxDEV(d,{children:i8.kind==="secret"?y1?"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022 configured":"not configured":T78(y1)},void 0,!1,void 0,this),G8?B1.jsxDEV(d,{dimColor:!0,children:["Origin: ",w8," \xB7 editing: ",Y,P8===void 0?" (inherited)":" (override)"]},void 0,!0,void 0,this):null,Q8!=="medium"&&$8!==void 0?B1.jsxDEV(d,{dimColor:!0,children:["Default: ",T78($8)]},void 0,!0,void 0,this):null,Q8!=="medium"&&G8&&G8.overrides.length>1?B1.jsxDEV(d,{dimColor:!0,children:["Chain: ",G8.overrides.map((h8)=>h8.level).join(" \u2192 ")]},void 0,!0,void 0,this):null,i8.restart?B1.jsxDEV(d,{color:P1.warning,children:"\u25B3 Applies next session"},void 0,!1,void 0,this):i8.kind!=="action"?B1.jsxDEV(d,{color:P1.success,children:"\u2713 Applies immediately"},void 0,!1,void 0,this):null]},void 0,!0,void 0,this),Q8!=="medium"&&i8.path==="agents.basePrompt"?B1.jsxDEV(W8,{marginTop:1,flexDirection:"column",children:[B1.jsxDEV(d,{dimColor:!0,children:"Protected executor protocol"},void 0,!1,void 0,this),B1.jsxDEV(d,{color:P1.textDim,children:"JSON result fields: summary, confidence, filesRead, filesChanged, issuesFound, suggestions, metadata."},void 0,!1,void 0,this)]},void 0,!0,void 0,this):null,B1.jsxDEV(W8,{marginTop:Q8==="medium"?0:1,children:B1.jsxDEV(d,{dimColor:!0,children:i8.kind==="boolean"?"Enter toggles":e91.has(i8.path)?p.length?`Enter cycles: ${i8.path==="model.default"?"":"inherit \xB7 "}${p.join(" \xB7 ")}`:"Enter loads and cycles provider models":i8.path==="agents.basePrompt"?"Enter opens Markdown editor \xB7 r restores inherited value":i8.kind==="enum"?`Enter cycles: ${i8.options?.join(" \xB7 ")}`:i8.kind==="action"?"Enter runs action":"Enter edits \xB7 r restores inherited value"},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):B1.jsxDEV(d,{dimColor:!0,children:"No setting matches this search."},void 0,!1,void 0,this),N1=()=>B1.jsxDEV(W8,{flexDirection:"column",flexShrink:0,children:b?B1.jsxDEV(W8,{flexDirection:"column",children:[B1.jsxDEV(d,{color:P1.primary,children:b.kind==="secret"?"New secret (hidden)":`Edit ${b.label}`},void 0,!1,void 0,this),B1.jsxDEV(d,{children:[b.kind==="secret"?"\u2022".repeat(h.length)||"\u2026":h||"\u2026",B1.jsxDEV(d,{color:P1.primary,children:"\u2588"},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B1.jsxDEV(d,{dimColor:!0,children:"Enter save \xB7 Esc cancel"},void 0,!1,void 0,this)]},void 0,!0,void 0,this):B1.jsxDEV(B1.Fragment,{children:[B1.jsxDEV(d,{color:y.startsWith("Error")||y.includes("failed")?P1.error:P1.textDim,wrap:"truncate-end",children:y},void 0,!1,void 0,this),B1.jsxDEV(d,{dimColor:!0,wrap:"truncate-end",children:"\u2191\u2193 navigate \xB7 Enter select/edit \xB7 / search \xB7 Tab scope \xB7 r inherit \xB7 Esc back/close"},void 0,!1,void 0,this)]},void 0,!0,void 0,this)},void 0,!1,void 0,this);if(D8==="agents")return B1.jsxDEV(M78,{scope:Y,theme:$.currentTheme,onBack:()=>{v8(null),R8("Agent registry reloaded")},onChanged:()=>{return}},void 0,!1,void 0,this);if(D8==="hooks")return B1.jsxDEV(N78,{scope:Y,theme:$.currentTheme,onBack:()=>{v8(null),R8("Hooks reloaded")}},void 0,!1,void 0,this);return B1.jsxDEV(W8,{flexDirection:"column",width:W1,height:f8,paddingX:1,children:[B1.jsxDEV(C8,{},void 0,!1,void 0,this),B1.jsxDEV(W8,{marginTop:1,flexGrow:1,minHeight:0,children:Q8!=="narrow"?B1.jsxDEV(W8,{flexDirection:"column",width:"100%",children:[B1.jsxDEV(W8,{height:l,flexShrink:0,children:[B1.jsxDEV(I8,{},void 0,!1,void 0,this),B1.jsxDEV(d,{color:P1.textInactive,children:[`\u2502
1331
1331
  `.repeat(l-1),"\u2502"]},void 0,!0,void 0,this),B1.jsxDEV(Y1,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this),B1.jsxDEV(W8,{marginTop:l===9&&f8>=22?3:1,flexGrow:1,minHeight:0,children:B1.jsxDEV(J1,{},void 0,!1,void 0,this)},void 0,!1,void 0,this)]},void 0,!0,void 0,this):T==="categories"?B1.jsxDEV(I8,{},void 0,!1,void 0,this):T==="items"?B1.jsxDEV(Y1,{},void 0,!1,void 0,this):B1.jsxDEV(J1,{},void 0,!1,void 0,this)},void 0,!1,void 0,this),B1.jsxDEV(N1,{},void 0,!1,void 0,this)]},void 0,!0,void 0,this)}DX();function D31($,K){let D=$.message;if(K==="bedrock"){if(D.includes("UnrecognizedClientException")||D.includes("AccessDeniedException")||D.includes("InvalidSignatureException")||D.includes("not authorized")||D.includes("credentials"))return`AWS credentials error calling chat (${D}).
1332
1332
  Note: /models may work (uses native SDK), but the OpenAI-compatible chat endpoint requires valid AWS credentials in the configured profile (~/.aws/credentials).`;return`Chat error via Amazon Bedrock: ${D}
1333
1333
  Note: /models may work (uses native SDK), but the OpenAI-compatible chat endpoint may fail due to insufficient credentials or permissions.`}if(K==="vertex"){if(D.includes("GCP_CREDENTIALS")||D.includes("service account")||D.includes("PERMISSION_DENIED")||D.includes("UNAUTHENTICATED"))return`Google Vertex AI authentication error (${D}).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hermenics/deepseek-code",
3
- "version": "0.3.6",
3
+ "version": "0.3.7",
4
4
  "description": "An AI-powered coding assistant that lives in your terminal",
5
5
  "keywords": [
6
6
  "ai",