MCPcopy Index your code
hub / github.com/ChinaSiro/claude-code-sourcemap / PrK

Function PrK

package/cli.js:8081–8097  ·  view source on GitHub ↗
(q,K)

Source from the content-addressed store, hash-verified

8079Server disconnected.
8080`);w.current=!1,xK(1),_(!1)},onError:(P)=>{N(`[useDirectConnect] Error: ${P.message}`)}});return A.current=X,X.connect(),()=>{N("[useDirectConnect] Cleanup - disconnecting"),X.disconnect(),A.current=null}},[q,K,_,z]);let H=hy.useCallback(async(X)=>{let P=A.current;if(!P)return!1;return _(!0),P.sendMessage(X)},[_]),J=hy.useCallback(()=>{A.current?.sendInterrupt(),_(!1)},[_]),M=hy.useCallback(()=>{A.current?.disconnect(),A.current=null,w.current=!1},[]);return hy.useMemo(()=>({isRemoteMode:$,sendMessage:H,cancelRequest:J,disconnect:M}),[$,H,J,M])}var hy;var $rK=y(()=>{Jc8();I48();zrK();Bq();_8();RA();hy=O6(D6(),1)});import{randomUUID as CUY}from"crypto";function ArK({session:q,setMessages:K,setIsLoading:_,setToolUseConfirmQueue:z,tools:Y}){let $=!!q,A=Sy.useRef(null),O=Sy.useRef(!1),w=Sy.useRef(!1),j=Sy.useRef(Y);Sy.useEffect(()=>{j.current=Y},[Y]),Sy.useEffect(()=>{if(!q)return;O.current=!1,N("[useSSHSession] wiring SSH session manager");let X=q.createManager({onMessage:(P)=>{if(EC6(P))_(!1);if(P.type==="system"&&P.subtype==="init"){if(O.current)return;O.current=!0}let W=qM6(P,{convertToolResults:!0});if(W.type==="message")K((D)=>[...D,W.message])},onPermissionRequest:(P,W)=>{N(`[useSSHSession] permission request: ${P.tool_name}`);let D=L5(j.current,P.tool_name)??yC6(P.tool_name),f=NC6(P,W),G={behavior:"ask",message:P.description??`${P.tool_name} requires permission`,suggestions:P.permission_suggestions,blockedPath:P.blocked_path},Z={assistantMessage:f,tool:D,description:P.description??`${P.tool_name} requires permission`,input:P.input,toolUseContext:{},toolUseID:P.tool_use_id,permissionResult:G,permissionPromptStartTimeMs:Date.now(),onUserInteraction(){},onAbort(){X.respondToPermissionRequest(W,{behavior:"deny",message:"User aborted"}),z((T)=>T.filter((v)=>v.toolUseID!==P.tool_use_id))},onAllow(T){X.respondToPermissionRequest(W,{behavior:"allow",updatedInput:T}),z((v)=>v.filter((V)=>V.toolUseID!==P.tool_use_id)),_(!0)},onReject(T){X.respondToPermissionRequest(W,{behavior:"deny",message:T??"User denied permission"}),z((v)=>v.filter((V)=>V.toolUseID!==P.tool_use_id))},async recheckPermission(){}};z((T)=>[...T,Z]),_(!1)},onConnected:()=>{N("[useSSHSession] connected"),w.current=!0},onReconnecting:(P,W)=>{N(`[useSSHSession] ssh dropped, reconnecting (${P}/${W})`),w.current=!1,_(!1);let D={type:"system",subtype:"informational",content:`SSH connection dropped — reconnecting (attempt ${P}/${W})...`,timestamp:new Date().toISOString(),uuid:CUY(),level:"warning"};K((f)=>[...f,D])},onDisconnected:()=>{N("[useSSHSession] ssh process exited (giving up)");let P=q.getStderrTail().trim(),W=w.current,D=q.proc.exitCode;w.current=!1,_(!1);let f=W?"Remote session ended.":"SSH session failed before connecting.";if(P&&(!W||D!==0))f+=`
8081Remote stderr (exit ${D??"signal "+q.proc.signalCode}):
8082${P}`;xK(1,"other",{finalMessage:f})},onError:(P)=>{N(`[useSSHSession] error: ${P.message}`)}});return A.current=X,X.connect(),()=>{N("[useSSHSession] cleanup"),X.disconnect(),q.proxy.stop(),A.current=null}},[q,K,_,z]);let H=Sy.useCallback(async(X)=>{let P=A.current;if(!P)return!1;return _(!0),P.sendMessage(X)},[_]),J=Sy.useCallback(()=>{A.current?.sendInterrupt(),_(!1)},[_]),M=Sy.useCallback(()=>{A.current?.disconnect(),A.current=null,w.current=!1},[]);return Sy.useMemo(()=>({isRemoteMode:$,sendMessage:H,cancelRequest:J,disconnect:M}),[$,H,J,M])}var Sy;var OrK=y(()=>{Jc8();I48();Bq();_8();RA();Sy=O6(D6(),1)});var wrK=y(()=>{H3();_8();VM()});var Mc8;var jrK=y(()=>{wrK();I48();_8();Mc8=O6(D6(),1)});function LC6({inputValue:q,setInputValue:K,isValidDigit:_,onDigit:z,enabled:Y=!0,once:$=!1,debounceMs:A=bUY}){let O=KM6.useRef(q),w=KM6.useRef(!1),j=KM6.useRef(null),H=KM6.useRef({setInputValue:K,isValidDigit:_,onDigit:z});H.current={setInputValue:K,isValidDigit:_,onDigit:z},KM6.useEffect(()=>{if(!Y||$&&w.current)return;if(j.current!==null)clearTimeout(j.current),j.current=null;if(q!==O.current){let J=T_6(q.slice(-1));if(H.current.isValidDigit(J)){let M=q.slice(0,-1);j.current=setTimeout((X,P,W,D,f)=>{X.current=null,P.current=!0,W.current.setInputValue(D),W.current.onDigit(f)},A,j,w,H,M,J)}}return()=>{if(j.current!==null)clearTimeout(j.current),j.current=null}},[q,Y,$,A])}var KM6,bUY=400;var Xc8=y(()=>{KM6=O6(D6(),1)});function HrK(q){let K=z6(15),{onSelect:_,inputValue:z,setInputValue:Y,message:$}=q,A=$===void 0?uUY:$,O;if(K[0]!==_)O=(D)=>_(IUY[D]),K[0]=_,K[1]=O;else O=K[1];let w;if(K[2]!==z||K[3]!==Y||K[4]!==O)w={inputValue:z,setInputValue:Y,isValidDigit:Pc8,onDigit:O},K[2]=z,K[3]=Y,K[4]=O,K[5]=w;else w=K[5];LC6(w);let j;if(K[6]===Symbol.for("react.memo_cache_sentinel"))j=qf.default.createElement(k,{color:"ansi:cyan"},"● "),K[6]=j;else j=K[6];let H;if(K[7]!==A)H=qf.default.createElement(u,null,j,qf.default.createElement(k,{bold:!0},A)),K[7]=A,K[8]=H;else H=K[8];let J;if(K[9]===Symbol.for("react.memo_cache_sentinel"))J=qf.default.createElement(u,{width:10},qf.default.createElement(k,null,qf.default.createElement(k,{color:"ansi:cyan"},"1"),": Bad")),K[9]=J;else J=K[9];let M;if(K[10]===Symbol.for("react.memo_cache_sentinel"))M=qf.default.createElement(u,{width:10},qf.default.createElement(k,null,qf.default.createElement(k,{color:"ansi:cyan"},"2"),": Fine")),K[10]=M;else M=K[10];let X;if(K[11]===Symbol.for("react.memo_cache_sentinel"))X=qf.default.createElement(u,{width:10},qf.default.createElement(k,null,qf.default.createElement(k,{color:"ansi:cyan"},"3"),": Good")),K[11]=X;else X=K[11];let P;if(K[12]===Symbol.for("react.memo_cache_sentinel"))P=qf.default.createElement(u,{marginLeft:2},J,M,X,qf.default.createElement(u,null,qf.default.createElement(k,null,qf.default.createElement(k,{color:"ansi:cyan"},"0"),": Dismiss"))),K[12]=P;else P=K[12];let W;if(K[13]!==H)W=qf.default.createElement(u,{flexDirection:"column",marginTop:1},H,P),K[13]=H,K[14]=W;else W=K[14];return W}var qf,xUY,IUY,Pc8=(q)=>xUY.includes(q),uUY="How is Claude doing this session? (optional)";var M$7=y(()=>{q8();s6();Xc8();qf=O6(D6(),1),xUY=["0","1","2","3"],IUY={"0":"dismissed","1":"bad","2":"fine","3":"good"}});var X$7;var JrK=y(()=>{q8();zz();s6();M$7();X$7=O6(D6(),1)});var MrK=y(()=>{ew();B2();E8();y8();i1()});function XrK(){}async function PrK(q,K){if(!q)return;let{join:_}=await import("path"),z=await import("fs/promises"),Y=_(Z8(),".claude","skills",q,"SKILL.md"),$;try{$=await z.readFile(Y,"utf-8")}catch{H6(Error(`Failed to read skill file for improvement: ${Y}`));return}let A=K.map((H)=>`- ${H.section}: ${H.change}`).join(`
8083`),O=await Ed({messages:[U8({content:`You are editing a skill definition file. Apply the following improvements to the skill.
8084
8085<current_skill_file>
8086${$}
8087</current_skill_file>
8088
8089<improvements>
8090${A}
8091</improvements>
8092
8093Rules:
8094- Integrate the improvements naturally into the existing structure
8095- Preserve frontmatter (--- block) exactly as-is
8096- Preserve the overall format and style
8097- Do not remove existing content unless an improvement explicitly replaces it
8098- Output the complete updated file inside <updated_file> tags`})],systemPrompt:iK(["You edit skill definition files to incorporate user preferences. Output only the updated file content."]),thinkingConfig:{type:"disabled"},tools:[],signal:P3().signal,options:{getToolPermissionContext:async()=>MX(),model:PH(),toolChoice:void 0,isNonInteractiveSession:!1,hasAppendSystemPrompt:!1,temperatureOverride:0,agents:[],querySource:"skill_improvement_apply",mcpTools:[]}}),w=L3(O.message.content).trim(),j=o4(w,"updated_file");if(!j){H6(Error("Skill improvement apply: no updated_file tag in response"));return}try{await z.writeFile(Y,j,"utf-8")}catch(H){H6(x1(H))}}var P$7=y(()=>{v8();o1();k8();ew();Bq();B2();I7();y8();E8();i1();aq();l8();MrK();Br6()});function WrK(q){let K=P8((w)=>w.skillImprovement.suggestion),_=s7(),[z,Y]=_M6.useState(!1),$=_M6.useRef(K),A=_M6.useRef(!1);if(K)$.current=K;if(K&&!z){if(Y(!0),!A.current)A.current=!0,d("tengu_skill_improvement_survey",{event_type:"appeared",_PROTO_skill_name:K.skillName??"unknown"})}let O=_M6.useCallback((w)=>{let j=$.current;if(!j)return;let H=w!=="dismissed";if(d("tengu_skill_improvement_survey",{event_type:"responded",response:H?"applied":"dismissed",_PROTO_skill_name:j.skillName}),H)PrK(j.skillName,j.updates).then(()=>{q((J)=>[...J,fw(`Skill "${j.skillName}" updated with improvements.`,"suggestion")])});Y(!1),A.current=!1,_((J)=>{if(!J.skillImprovement.suggestion)return J;return{...J,skillImprovement:{suggestion:null}}})},[_,q]);return{isOpen:z,suggestion:$.current,handleSelect:O}}var _M6;var DrK=y(()=>{k8();C7();P$7();i1();_M6=O6(D6(),1)});function frK(q){return{onBeforeQuery:async()=>!0,onTurnComplete:async()=>{},render:()=>null}}import{join as DZ}from"path";function q36(){let _=((Z7()||{}).cleanupPeriodDays??mUY)*24*60*60*1000;return new Date(Date.now()-_)}function pUY(q,K){return{messages:q.messages+K.messages,errors:q.errors+K.errors}}function BUY(q){let K=q.split(".")[0].replace(/T(\d{2})-(\d{2})-(\d{2})-(\d{3})Z/,"T$1:$2:$3.$4Z");return new Date(K)}async function ZrK(q,K,_){let z={messages:0,errors:0};try{let Y=await X8().readdir(q);for(let $ of Y)try{if(BUY($.name)<K)if(await X8().unlink(DZ(q,$.name)),_)z.messages++;else z.errors++}catch(A){H6(A)}}catch(Y){if(Y instanceof Error&&"code"in Y&&Y.code!=="ENOENT")H6(Y)}return z}async function gUY(){let q=X8(),K=q36(),_=$_6.errors(),z=$_6.baseLogs(),Y=await ZrK(_,K,!1);try{let $;try{$=await q.readdir(z)}catch{return Y}let A=$.filter((O)=>O.isDirectory()&&O.name.startsWith("mcp-logs-")).map((O)=>DZ(z,O.name));for(let O of A)Y=pUY(Y,await ZrK(O,K,!0)),await cs(O,q)}catch($){if($ instanceof Error&&"code"in $&&$.code!=="ENOENT")H6($)}return Y}async function u48(q,K,_){if((await _.stat(q)).mtime<K)return await _.unlink(q),!0;return!1}async function cs(q,K){try{await K.rmdir(q)}catch{}}async function FUY(){let q=q36(),K={messages:0,errors:0},_=Rp(),z=X8(),Y;try{Y=await z.readdir(_)}catch{return K}for(let $ of Y){if(!$.isDirectory())continue;let A=DZ(_,$.name),O;try{O=await z.readdir(A)}catch{K.errors++;continue}for(let w of O)if(w.isFile()){if(!w.name.endsWith(".jsonl")&&!w.name.endsWith(".cast"))continue;try{if(await u48(DZ(A,w.name),q,z))K.messages++}catch{K.errors++}}else if(w.isDirectory()){let j=DZ(A,w.name),H=DZ(j,FB1),J;try{J=await z.readdir(H)}catch{await cs(j,z);continue}for(let M of J)if(M.isFile())try{if(await u48(DZ(H,M.name),q,z))K.messages++}catch{K.errors++}else if(M.isDirectory()){let X=DZ(H,M.name),P;try{P=await z.readdir(X)}catch{continue}for(let W of P){if(!W.isFile())continue;try{if(await u48(DZ(X,W.name),q,z))K.messages++}catch{K.errors++}}await cs(X,z)}await cs(H,z),await cs(j,z)}await cs(A,z)}return K}async function UUY(q,K,_=!0){let z=q36(),Y={messages:0,errors:0},$=X8(),A;try{A=await $.readdir(q)}catch{return Y}for(let O of A){if(!O.isFile()||!O.name.endsWith(K))continue;try{if(await u48(DZ(q,O.name),z,$))Y.messages++}catch{Y.errors++}}if(_)await cs(q,$);return Y}function QUY(){let q=DZ(c1(),"plans");return UUY(q,".md")}async function dUY(){let q=q36(),K={messages:0,errors:0},_=X8();try{let z=c1(),Y=DZ(z,"file-history"),$;try{$=await _.readdir(Y)}catch{return K}let A=$.filter((O)=>O.isDirectory()).map((O)=>DZ(Y,O.name));await Promise.all(A.map(async(O)=>{try{if((await _.stat(O)).mtime<q)await _.rm(O,{recursive:!0,force:!0}),K.messages++}catch{K.errors++}})),await cs(Y,_)}catch(z){H6(z)}return K}async function cUY(){let q=q36(),K={messages:0,errors:0},_=X8();try{let z=c1(),Y=DZ(z,"session-env"),$;try{$=await _.readdir(Y)}catch{return K}let A=$.filter((O)=>O.isDirectory()).map((O)=>DZ(Y,O.name));for(let O of A)try{if((await _.stat(O)).mtime<q)await _.rm(O,{recursive:!0,force:!0}),K.messages++}catch{K.errors++}await cs(Y,_)}catch(z){H6(z)}return K}async function lUY(){let q=q36(),K={messages:0,errors:0},_=X8(),z=DZ(c1(),"debug"),Y;try{Y=await _.readdir(z)}catch{return K}for(let $ of Y){if(!$.isFile()||!$.name.endsWith(".txt")||$.name==="latest")continue;try{if(await u48(DZ(z,$.name),q,_))K.messages++}catch{K.errors++}}return K}async function GrK(){let{errors:q}=bo();if(q.length>0&&US7("cleanupPeriodDays")){N("Skipping cleanup: settings have validation errors but cleanupPeriodDays was explicitly set. Fix settings errors to enable cleanup.");return}await gUY(),await FUY(),await QUY(),await dUY(),await cUY(),await lUY(),await zC4(),await KGK(q36());let K=await G_7(q36());if(K>0)d("tengu_worktree_cleanup",{removed:K})}var mUY=30;var TrK=y(()=>{k8();v$8();_8();m8();e7();Ko();E8();PQ();o77();_K();Bt6();U1();IG();d0()});function vrK(q){for(let K=0;K<q.length;K++){let _=q.charCodeAt(K);if(_<=31||_===127)return!0}return!1}function NrK(q){let K=q.startsWith(`${Cy}://`)?q:q.startsWith(`${Cy}:`)?q.replace(`${Cy}:`,`${Cy}://`):null;if(!K)throw Error(`Invalid deep link: expected ${Cy}:// scheme, got "${q}"`);let _;try{_=new URL(K)}catch{throw Error(`Invalid deep link URL: "${q}"`)}if(_.hostname!=="open")throw Error(`Unknown deep link action: "${_.hostname}"`);let z=_.searchParams.get("cwd")??void 0,Y=_.searchParams.get("repo")??void 0,$=_.searchParams.get("q");if(z&&!z.startsWith("/")&&!/^[a-zA-Z]:[/\\]/.test(z))throw Error(`Invalid cwd in deep link: must be an absolute path, got "${z}"`);if(z&&vrK(z))throw Error("Deep link cwd contains disallowed control characters");if(z&&z.length>VrK)throw Error(`Deep link cwd exceeds ${VrK} characters (got ${z.length})`);if(Y&&!nUY.test(Y))throw Error(`Invalid repo in deep link: expected "owner/repo", got "${Y}"`);let A;if($&&$.trim().length>0){if(A=Og1($.trim()),vrK(A))throw Error("Deep link query contains disallowed control characters");if(A.length>krK)throw Error(`Deep link query exceeds ${krK} characters (got ${A.length})`)}return{query:A,cwd:z,repo:Y}}var Cy="claude-cli",nUY,krK=5000,VrK=4096;var W$7=y(()=>{nUY=/^[\w.-]+\/[\w.-]+$/});var xrK={};T8(xrK,{registerProtocolHandler:()=>SrK,isProtocolHandlerCurrent:()=>brK,ensureDeepLinkProtocolRegistered:()=>tUY,MACOS_BUNDLE_ID:()=>Dc8});import{promises as hR}from"fs";import*as yrK from"os";import*as xp from"path";function Wc8(){return xp.join(hS8(),"applications",ErK)}function RrK(q){return`Exec="${q}" --handle-uri %u`}function hrK(q){return`"${q}" --handle-uri "%1"`}async function oUY(q){let K=xp.join(m48,"Contents");try{await hR.rm(m48,{recursive:!0})}catch(Y){if(s1(Y)!=="ENOENT")throw Y}await hR.mkdir(xp.dirname(D$7),{recursive:!0});let _=`<?xml version="1.0" encoding="UTF-8"?>
8099<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
8100<plist version="1.0">

Callers 1

WrKFunction · 0.85

Calls 15

Z8Function · 0.85
H6Function · 0.85
EdFunction · 0.85
U8Function · 0.85
iKFunction · 0.85
P3Function · 0.85
MXFunction · 0.85
PHFunction · 0.85
L3Function · 0.85
o4Function · 0.85
x1Function · 0.85
_Class · 0.70

Tested by

no test coverage detected