@panda-agent/panda-cli 0.1.17 → 0.1.18

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.
@@ -2158,5 +2158,5 @@ end try
2158
2158
  `)},[nl,a.length,Th.renderedValue]);Jf("Chat",nl);let gN=pn(()=>{let M=tn.current;return!M||!w0(r)&&!M.isConversationCoreBusy()?!1:(_0(M,i),yh(),h(!1),!0)},[yh,i,r]),wh=x4(T0,gN,void 0,!0),hN=us(()=>({"chat:toggleVimMode":()=>{cS(M=>{let ee=!M;return i({type:"APPEND_INFO",text:ee?"Vim \u952E\u4F4D\u5DF2\u5F00\u542F\uFF08Ctrl+Shift+Y \u6216 /vim \u5207\u6362\uFF09\u3002":"Vim \u952E\u4F4D\u5DF2\u5173\u95ED\u3002"}),ee})},"chat:thinkingToggle":()=>{C(M=>!M)},"chat:toggleOperationMode":()=>{let M=tn.current;if(!M)return;let ee=vM(M.getInteractionMode());M.setInteractionMode(ee),ne(ee)},"chat:openTeamRolesPicker":()=>{let M=tn.current;!M||M.getInteractionMode()!=="team"||(Tt(M.getEnabledTeamRoles()),st(0),X(!0))},"chat:openModelPicker":()=>{I.length>0&&($(!0),W(Math.max(0,I.findIndex(M=>M.id===_))))},"chat:imagePaste":()=>{hh({notifyWhenEmpty:!0})},"chat:scrollPageUp":()=>{let M=Su.current;if(!M)return;let ee=M.getViewportHeight()||10;M.scrollBy(-ee)},"chat:scrollPageDown":()=>{let M=Su.current;if(!M)return;let ee=M.getViewportHeight()||10;M.scrollBy(ee)},"chat:scrollToBottom":()=>{Su.current?.scrollToBottom()}}),[i,I,_,hh]);T0(hN,{context:"Chat",isActive:nl}),Br(()=>{if(!pS.current)return pS.current=!0,(async()=>{try{let M=await Hf(e);tn.current=M,p(M.getConversationId()),await nh(M,i),ps();let ee=M.listModelOptions();E(ee);let ae=M.getSelectedModelId()??ee[0]?.id;T(ae),W(Math.max(0,ee.findIndex(ke=>ke.id===ae))),await M.getCurrentUser().catch(()=>{})||(i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55 Panda \u8D26\u53F7\u3002"}),tl()),e.initialPrompt&&e.initialPrompt.trim()&&(M.submit(e.initialPrompt.trim()),i({type:"AWAITING_MODEL_RESPONSE"}),p(M.getConversationId()))}catch(M){i({type:"APPEND_ERROR",text:rh(M)})}})(),()=>{el.current?.()}},[e,tl,ps]);let hS=pn(async(M,ee)=>{let ae=tn.current;if(!ae)return;let me=ae.getConversationId();if(!(me===Qn||fh.current.has(me)||ae.isCurrentConversationEphemeral()||ae.getCurrentConversationTurnCount()>1)){fh.current.add(me);try{await ae.runRegisteredActionImmediate("rename_conversation",void 0,ae.getSelectedModelId()??void 0,M)}catch{fh.current.delete(me)}}},[]);Br(()=>{let M=tn.current;if(!M||!d)return;let ee=dS.current;return dS.current=d,el.current?.(),b4(ee,d)&&i({type:"RESET_STREAMING_STATE"}),el.current=D4({eventBus:M.eventBus,getConversationId:()=>tn.current?.getConversationId()??"",dispatch:i,onTurnStarted:hS,onConversationUiMessagesUpdated:()=>{let ae=tn.current;ae&&nh(ae,i)}}),()=>{el.current?.(),el.current=null}},[d,hS,i]),Br(()=>{if(!L||N.length===0)return;let M=ds.conversationPickerViewportSize;V(ee=>Math.max(0,Math.min(ee,Math.max(0,N.length-M))))},[L,ds.conversationPickerViewportSize,N.length]),dZ((M,ee,ae)=>{let me=tn.current;if(!me)return;let ke=ee,fn=String(ke.sequence??M??""),Vn=!!(ke.upArrow||ke.name==="up"||fn==="\x1B[A"||fn.endsWith("[A")),he=!!(ke.downArrow||ke.name==="down"||fn==="\x1B[B"||fn.endsWith("[B")),ze=!!(ke.return||ke.name==="return"||ke.name==="enter"),le=!!(ke.escape||ke.name==="escape"),Mn=ze&&!!ke.shift,ur=!!(ke.pageUp||ke.name==="pageup"),ms=!!(ke.pageDown||ke.name==="pagedown"),xN=!!(ke.wheelUp||ke.name==="wheelup"),rl=!!(ke.wheelDown||ke.name==="wheeldown"),dr=ee;if(nS){let at=["email","code","password","confirmPassword","displayName"],we=ee,Ee=!!(we.backspace||we.name==="backspace"||M==="\b"||M==="\x7F"),fe=!!((we.ctrl||we.meta)&&M.toLowerCase()==="g");if(le&&!vi){Tu(!1),Qt(void 0),xo(void 0);return}if((Vn||he)&&!vi){let ce=at.indexOf(Rn),dt=Vn?ce<=0?at.length-1:ce-1:ce>=at.length-1?0:ce+1;jr(at[dt]);return}if(Ee&&!vi){Qt(void 0),xo(void 0),Rn==="email"&&ih(ce=>ce.slice(0,-1)),Rn==="code"&&sh(ce=>ce.slice(0,-1)),Rn==="password"&&ah(ce=>ce.slice(0,-1)),Rn==="confirmPassword"&&lh(ce=>ce.slice(0,-1)),Rn==="displayName"&&ch(ce=>ce.slice(0,-1));return}if(fe&&!vi){if(!Xa.trim()){Qt("\u8BF7\u8F93\u5165\u90AE\u7BB1\u3002"),jr("email");return}if(!K5(Xa)){Qt("\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002"),jr("email");return}Qa(!0),Qt(void 0),xo(void 0),(async()=>{try{await me.sendRegisterVerificationCode(Xa.trim()),xo("\u9A8C\u8BC1\u7801\u5DF2\u53D1\u9001\u5230\u60A8\u7684\u90AE\u7BB1\uFF0C\u8BF7\u67E5\u6536\u3002")}catch(ce){Qt(ce instanceof Error?ce.message:String(ce))}finally{Qa(!1)}})().catch(()=>{});return}if(ze&&!vi){let ce=Xa.trim(),dt=rS.trim(),To=oS,qn=iS,bN=sS.trim();if(!ce){Qt("\u8BF7\u8F93\u5165\u90AE\u7BB1\u3002"),jr("email");return}if(!K5(ce)){Qt("\u8BF7\u8F93\u5165\u6709\u6548\u7684\u90AE\u7BB1\u5730\u5740\u3002"),jr("email");return}if(!dt){Qt("\u8BF7\u8F93\u5165\u9A8C\u8BC1\u7801\u3002"),jr("code");return}if(!To||To.length<bZ){Qt("\u5BC6\u7801\u81F3\u5C11 8 \u4F4D\u3002"),jr("password");return}if(To!==qn){Qt("\u4E24\u6B21\u8F93\u5165\u7684\u5BC6\u7801\u4E0D\u4E00\u81F4\u3002"),jr("confirmPassword");return}Qa(!0),Qt(void 0),xo(void 0),(async()=>{try{await me.register(ce,dt,To,qn,bN||void 0),Tu(!1),xo(void 0),oe(!0),Pe(ce),Ge(""),Vt("password"),yi(void 0),i({type:"APPEND_INFO",text:"\u6CE8\u518C\u6210\u529F\uFF0C\u8BF7\u767B\u5F55\u3002"})}catch(_h){Qt(_h instanceof Error?_h.message:String(_h))}finally{Qa(!1)}})().catch(()=>{});return}let ie=M.replace(/[\r\n]/g,"");if(!vi&&ie.length>0){Qt(void 0),xo(void 0),Rn==="email"&&ih(ce=>ce+ie),Rn==="code"&&sh(ce=>ce+ie),Rn==="password"&&ah(ce=>ce+ie),Rn==="confirmPassword"&&lh(ce=>ce+ie),Rn==="displayName"&&ch(ce=>ce+ie);return}return}if(He){if(le&&!lr){oe(!1),yi(void 0),Ge("");return}if((Vn||he)&&!lr){Vt(fe=>fe==="email"?"password":"email");return}let at=ee;if(!!(at.backspace||at.name==="backspace"||M==="\b"||M==="\x7F")&&!lr){ar==="email"?Pe(fe=>fe.slice(0,-1)):Ge(fe=>fe.slice(0,-1));return}if(ze&&!lr){if(!Ie.trim()||!ut){yi("\u8BF7\u8F93\u5165\u90AE\u7BB1\u548C\u5BC6\u7801\u3002"),Ie.trim()?Vt("password"):Vt("email");return}Ya(!0),yi(void 0),(async()=>{try{let fe=await me.login(Ie.trim(),ut);i({type:"APPEND_INFO",text:`\u767B\u5F55\u6210\u529F\uFF1A${fe.username||fe.email||Ie.trim()}`});let ie=await me.refreshModelOptions();E(ie.options),T(ie.selectedModelId),oe(!1),Pe(""),Ge(""),Vt("email")}catch(fe){yi(fe instanceof Error?fe.message:String(fe))}finally{Ya(!1)}})().catch(()=>{});return}let Ee=M.replace(/[\r\n]/g,"");if(!lr&&Ee.length>0){yi(void 0),ar==="email"?Pe(fe=>fe+Ee):Ge(fe=>fe+Ee);return}return}if(L){let at=Math.max(0,N.length-1),we=ds.conversationPickerViewportSize,Ee=ie=>{let ce=j;ie<ce?ce=ie:ie>=ce+we&&(ce=ie-we+1),V(Math.max(0,Math.min(ce,Math.max(0,N.length-we))))};if(le){z(!1),ue(!1);return}if(Ga(M,dr)){let ie=ve<=0?at:ve-1;P(ie),Ee(ie);return}if(Ha(M,dr)){let ie=ve>=at?0:ve+1;P(ie),Ee(ie);return}if(ur){let ie=Math.max(0,ve-we);P(ie),Ee(ie);return}if(ms){let ie=Math.min(at,ve+we);P(ie),Ee(ie);return}let fe=Number(M);if(!Number.isNaN(fe)&&fe>=1&&fe<=N.length){let ie=fe-1;P(ie),Ee(ie);return}if(ze){let ie=N[ve],ce=te;if(!ie){z(!1),ue(!1);return}(async()=>{if(!await me.switchConversation(ie.conversationId)){i({type:"APPEND_ERROR",text:`Failed to switch conversation: ${ie.conversationId}`});return}p(ie.conversationId),await nh(me,i),ps();let To=me.getCurrentConversationSummary();i({type:"APPEND_INFO",text:`${ce?"\u5DF2\u6062\u590D\u4F1A\u8BDD":"\u5DF2\u5207\u6362\u4F1A\u8BDD"}\uFF1A${To.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${To.conversationId}]`})})().catch(dt=>{i({type:"APPEND_ERROR",text:dt instanceof Error?dt.message:String(dt)})}),z(!1),ue(!1);return}}if(F){let at=Math.max(0,Oa.length-1);if(le){U(!1);return}if(Ga(M,dr)){Y(Ee=>Ee<=0?at:Ee-1);return}if(Ha(M,dr)){Y(Ee=>Ee>=at?0:Ee+1);return}let we=Number(M);if(!Number.isNaN(we)&&we>=1&&we<=Oa.length){Y(we-1);return}if(ze){let Ee=Oa[B]?.id;Ee&&(me.setInteractionMode(Ee),ne(Ee),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u5230 ${Ee} \u6A21\u5F0F\u3002`})),U(!1);return}return}if(se){let at=tn.current;if(!at)return;let we=Math.max(0,oo.length-1);if(le){X(!1);return}if(Ga(M,dr)){st(fe=>fe<=0?we:fe-1);return}if(Ha(M,dr)){st(fe=>fe>=we?0:fe+1);return}let Ee=Number(M);if(!Number.isNaN(Ee)&&Ee>=1&&Ee<=oo.length){st(Ee-1);return}if(M===" "){let fe=oo[_e];if(!fe)return;Tt(ie=>{let ce=new Set(ie);if(ce.has(fe.id)){if(ce.size<=1)return ie;ce.delete(fe.id)}else ce.add(fe.id);return oo.filter(dt=>ce.has(dt.id)).map(dt=>dt.id)});return}if(ze){at.setEnabledTeamRoles(vt),X(!1);return}}if(x){let at=Math.max(0,I.length-1);if(le){$(!1);return}if(Ga(M,dr)){W(Ee=>Ee<=0?at:Ee-1);return}if(Ha(M,dr)){W(Ee=>Ee>=at?0:Ee+1);return}let we=Number(M);if(!Number.isNaN(we)&&we>=1&&we<=I.length){W(we-1);return}if(ze){let fe=I[q]?.id;fe&&(me.setSelectedModelId(fe).catch(()=>{}),T(fe)),$(!1);return}}if(tt){if(le){tt.allowSkipAll&&me.answerAskQuestion(tt.toolCallId,[]).catch(()=>{});return}let at=Math.max(0,tt.questions.length-1);if(M==="["&&!ke.shift){Kn(ie=>Math.max(0,ie-1)),A(0);return}if(M==="]"){Kn(ie=>Math.min(at,ie+1)),A(0);return}let we=tt.questions[mn]??tt.questions[0];if(!we)return;let Ee=Math.max(0,we.options.length-1);if(Ga(M,dr)){A(ie=>ie<=0?Ee:ie-1);return}if(Ha(M,dr)){A(ie=>ie>=Ee?0:ie+1);return}let fe=Number(M);if(!Number.isNaN(fe)&&fe>=1&&fe<=we.options.length){A(fe-1);return}if(we.allowMultiple&&M===" "){let ie=we.options[sr]??we.options[0];if(!ie)return;K(ce=>{let dt=new Set(ce[we.id]??[]);return dt.has(ie.id)?dt.delete(ie.id):dt.add(ie.id),{...ce,[we.id]:Array.from(dt)}});return}if(ze){let ie=we.options[sr]??we.options[0],ce=de;if(!we.allowMultiple&&ie&&(ce={...de,[we.id]:[ie.id]},K(ce)),mn<tt.questions.length-1){Kn(qn=>qn+1),A(0);return}let dt=tt.questions.map(qn=>({questionId:qn.id,selectedOptionIds:ce[qn.id]??[]}));if(tt.questions.some(qn=>qn.required&&(ce[qn.id]??[]).length===0))return;me.answerAskQuestion(tt.toolCallId,dt).catch(()=>{});return}return}let Wr=ee;if(!L&&!se&&!F&&!x&&!tt){if(g){let fe=Math.max(0,zr.length-1);if(le){h(!1);return}if(Vn){b(ie=>ie<=0?fe:ie-1);return}if(he){b(ie=>ie>=fe?0:ie+1);return}if(ze){let ie=Math.max(0,Math.min(y,fe));Mn?me.removePendingUserMessage(ie):me.sendPendingUserMessageImmediately(ie).catch(ce=>{i({type:"APPEND_ERROR",text:rh(ce)})}),f(ce=>ce+1);return}}if((w0(r)||me.isConversationCoreBusy())&&le&&_u.current.length===0){if(aS){yh(),_0(me,i);return}uh(!0),cr.current&&clearTimeout(cr.current),cr.current=setTimeout(()=>{cr.current=null,uh(!1)},wZ);return}let we=ae,Ee=new uZ(we.keypress);if(bh.handleKeyDown(Ee),Ee.didStopImmediatePropagation()){we.stopImmediatePropagation();return}if(Wr.shift&&(Wr.ctrl||Wr.super)&&tr(M,Wr)==="c"){mh.current=a,pZ(a);return}if(Wr.shift&&(Wr.ctrl||Wr.super)&&tr(M,Wr)==="v"&&mh.current){let fe=mh.current,ie=ku.current,ce=a.slice(0,ie),dt=a.slice(ie);l(ce+fe+dt),u(ie+fe.length);return}if(process.platform==="darwin"&&we.keypress?.isPasted===!0&&M.length===0&&hh({notifyWhenEmpty:!1}))return}Th.onInput(M,Wr)});let yN=bL,vN=a;return Q_.createElement(I5,{appendInfo:s},Q_.createElement(E_.Provider,{value:Su},Q_.createElement(yN,{uiState:r,inputValue:vN,inputCursorOffset:c,wrappedRenderedLines:fN,inputTransientHint:Se,vimBindingsEnabled:lS,vimInputMode:oN,workspacePath:e.workspacePath,conversationId:d,contentWidth:Math.max(20,ds.cols-6),conversationTitle:tn.current?.getCurrentConversationSummary().title,modelLabel:tn.current?.getModelLabelById(_)??"-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",modeLabel:_Z(Q),interactionMode:Q,contextMetrics:r.contextMetrics,showThinkingBody:v,askQuestionActive:!!tt,askQuestionAllowSkipAll:tt?.allowSkipAll??!1,askQuestionHint:tt?(()=>{let M=tt.questions.length,ae=!!tt.questions[mn]?.allowMultiple,me=mn>=M-1,ke=ae?me?"Enter \u63D0\u4EA4":"Enter \u4E0B\u4E00\u9898":me?"Enter \u9009\u4E2D\u5E76\u63D0\u4EA4":"Enter \u9009\u4E2D\u5E76\u4E0B\u4E00\u9898",fn=ae?" \xB7 Space \u52FE\u9009\u9879":"",Vn=tt.allowSkipAll?" \xB7 Esc \u8DF3\u8FC7":"";return`Q${mn+1}/${M} \xB7 \u2191/\u2193 \u9009\u9879${fn} \xB7 ${ke} \xB7 [ ] \u4E0A/\u4E0B\u9898${Vn}`})():"",askQuestionUiState:uN,askQuestionPopup:tt?{title:tt.title,allowSkipAll:tt.allowSkipAll,questions:tt.questions,questionIndex:mn,optionIndex:sr,selectedByQuestion:de}:void 0,loginPopup:He?{email:Ie,password:ut,focusedField:ar,submitting:lr,error:eN}:void 0,registerPopup:nS?{email:Xa,code:rS,password:oS,confirmPassword:iS,displayName:sS,focusedField:Rn,submitting:vi,error:tN,success:nN}:void 0,modePickerActive:F,modePickerHint:F?"\u4EA4\u4E92\u6A21\u5F0F":"",modePickerState:F?{entries:[...Oa],highlightedIndex:B,selectedMode:Q}:void 0,modelPickerActive:x,modelPickerHint:x?`Pick model (${I.length}) -> ${I[q]?.displayName??""}`:"",modelPickerState:x?{options:I,highlightedIndex:q,selectedModelId:_}:void 0,teamRolesPickerActive:se,teamRolesPickerHint:se?`\u5B50 Agent\uFF08${oo.length}\uFF09\u2192 ${oo[_e]?.label??""}`:"",teamRolesPickerState:se?{entries:oo,highlightedIndex:_e,selectedRoleIds:vt}:void 0,conversationPickerActive:L,conversationPickerHeading:L?te?"@ \u6062\u590D\u4F1A\u8BDD":"@ \u4F1A\u8BDD\u5217\u8868":void 0,conversationPickerHint:L?te?`\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF08\u5171 ${N.length} \u4E2A\uFF09`:`\u9009\u62E9\u4F1A\u8BDD\uFF08\u5171 ${N.length} \u4E2A\uFF09`:"",conversationPickerForResume:te,conversationPickerState:L?{options:N,highlightedIndex:ve,offset:j,viewportSize:ds.conversationPickerViewportSize,selectedConversationId:d??void 0,groupTitleForTimestamp:xZ}:void 0,exitPendingHint:aS?"\u518D\u6309 Esc \u4E00\u6B21\u4E2D\u65AD":wh.pending&&wh.keyName?`\u518D\u6309 ${wh.keyName} \u4E00\u6B21\u9000\u51FA`:"",typeaheadSuggestions:wu.suggestions,typeaheadSelectedSuggestion:wu.selectedSuggestion,typeaheadMaxColumnWidth:bh.maxColumnWidth,typeaheadCommandArgumentHint:wu.commandArgumentHint,pendingUserMessageCount:zr.length,queueSelectionActive:g,queueSelectionIndex:y,queuedUserLines:zr})))}var oh=class{frameCount=0;flickerCount=0;reasons=new Map;onFrame(e){this.frameCount+=1;let n=e;if(!(!n||!Array.isArray(n.flickers)||n.flickers.length===0)){this.flickerCount+=n.flickers.length;for(let o of n.flickers){let r=typeof o?.reason=="string"&&o.reason.trim()?o.reason:"unknown";this.reasons.set(r,(this.reasons.get(r)??0)+1)}}}snapshot(){let e={};for(let[n,o]of this.reasons.entries())e[n]=o;return{frameCount:this.frameCount,flickerCount:this.flickerCount,reasons:e}}};function eS(t,e){let n=Object.entries(e.reasons).sort((r,i)=>i[1]-r[1]),o=n.length===0?"reasons=none":`reasons=${n.map(([r,i])=>`${r}:${i}`).join(",")}`;return`${t} frames=${e.frameCount} flickers=${e.flickerCount} ${o}`}function kZ(t){if(typeof t=="boolean")return t;if(typeof t!="string")return!1;let e=t.trim().toLowerCase();return e==="1"||e==="true"||e==="yes"||e==="on"}async function G5(t){let e=kZ(process.env.PANDA_CLI_FLICKER_STATS),n=e?new oh:null,{options:o,stdin:r,ownership:i}=u4(t,!1);p4(r);let s;try{let a=await IZ({...o,onFrame:e?l=>n?.onFrame(l):void 0});n&&(process.stderr?.write?.(`[panda-flicker] enabled, sampling every 2s
2159
2159
  `),s=setInterval(()=>{process.stderr?.write?.(`${eS("[panda-flicker]",n.snapshot())}
2160
2160
  `)},2e3)),process.stdout?.write?.(SZ),a.render(H5.createElement(c4,null,H5.createElement(q5,{args:t}))),await a.waitUntilExit()}finally{s&&clearInterval(s),n&&process.stderr?.write?.(`${eS("[panda-flicker][final]",n.snapshot())}
2161
- `),m4(r,i)}}import{readFileSync as Z5}from"node:fs";import{dirname as EZ,join as tS}from"node:path";import{fileURLToPath as CZ}from"node:url";var J5=!1;function PZ(){try{let t=EZ(CZ(import.meta.url)),e=tS(t,"..",".."),n=tS(e,"product.json"),o=Z5(n,"utf-8"),r=JSON.parse(o),i=tS(e,"package.json"),s=JSON.parse(Z5(i,"utf-8")),a=r.pandacliVersion?.trim();if(!a)return null;let l=r.pandaVersion?.trim()??r.version?.trim()??String(s.version??"").trim()??"0.0.0";return{pandacliVersion:a,pandaProductVersion:l}}catch{return null}}function Y5(){let t=PZ();return t?(J5||(J5=!0,console.warn("[panda-cli] \u4F7F\u7528\u4ED3\u5E93\u6839 product.json \u7248\u672C\uFF08\u672A\u68C0\u6D4B\u5230\u6784\u5EFA\u671F\u6CE8\u5165\u5E38\u91CF\uFF09")),t):{pandacliVersion:"0.0.0-dev",pandaProductVersion:"0.0.0-dev"}}function AZ(){return"0.1.17"}function RZ(){return"0.9.5"}function MZ(t,e){return`pandacli ${t} (panda ${e})`}function X5(){return MZ(AZ(),RZ())}function NZ(){if(process.platform==="win32")return!1;try{let t=DZ("/dev/tty","r");return OZ(t),!0}catch{return!1}}function $Z(){let t=["Panda CLI \u547D\u4EE4\u884C\u52A9\u624B","","\u7528\u6CD5\uFF1A"," panda [\u9009\u9879] [prompt]",' panda --print [\u9009\u9879] "\u4F60\u7684\u95EE\u9898"'," panda mcp <subcommand> [\u53C2\u6570]","","\u8BF4\u660E\uFF1A"," \u9ED8\u8BA4\u8FDB\u5165\u4EA4\u4E92\u6A21\u5F0F\uFF1B\u4F7F\u7528 --print \u8FDB\u5165\u975E\u4EA4\u4E92\u4E00\u6B21\u6027\u6267\u884C\u6A21\u5F0F\u3002","","\u5E38\u7528\u9009\u9879\uFF1A"," -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"," -V, --version \u663E\u793A CLI \u4E0E Panda \u4EA7\u54C1\u7248\u672C"," --workspace <path> \u6307\u5B9A\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5F53\u524D\u76EE\u5F55\uFF09"," --prompt <text> \u6307\u5B9A\u8F93\u5165\u6587\u672C\uFF08\u53EF\u4E0E\u4F4D\u7F6E\u53C2\u6570\u4E8C\u9009\u4E00\uFF09"," --print \u542F\u7528\u975E\u4EA4\u4E92\u6A21\u5F0F"," --output-format <text|json|stream-json> \u975E\u4EA4\u4E92\u8F93\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 text\uFF09"," --render-mode <auto|incremental|safe|full> \u6E32\u67D3\u6A21\u5F0F\uFF08\u9ED8\u8BA4 auto\uFF09"," --mode <agent|ask|plan|team> \u6307\u5B9A\u4F1A\u8BDD\u6A21\u5F0F"," --model <modelId> \u6307\u5B9A\u672C\u6B21\u6267\u884C\u6A21\u578B\uFF08\u4E0D\u6539\u5DE5\u4F5C\u533A\u9ED8\u8BA4\uFF09"," --conversation <id> \u6307\u5B9A\u4F1A\u8BDD ID\uFF08\u5B58\u5728\u5219\u6062\u590D\uFF0C\u4E0D\u5B58\u5728\u5219\u6309\u8BE5 ID \u521B\u5EFA\uFF09"," --resume-latest \u542F\u52A8\u65F6\u81EA\u52A8\u6062\u590D\u6700\u8FD1\u66F4\u65B0\u7684\u5DF2\u4FDD\u5B58\u4F1A\u8BDD\uFF08\u9ED8\u8BA4\u4E0D\u6062\u590D\uFF09"," --pack <id> \u9ED8\u8BA4\u5207\u6362\u5230\u6307\u5B9A pack \u6A21\u5F0F","","\u4E92\u65A5\u5173\u7CFB\uFF1A",...jM.map(e=>` - ${e}`),"","\u6A21\u5F0F\u53EF\u9009\u503C\uFF1A",` ${BM.join(", ")}`,"","\u793A\u4F8B\uFF1A",' panda --print --mode plan --model gpt-4.1 "\u8BF7\u5148\u7ED9\u5B9E\u73B0\u8BA1\u5212"',' panda --print --conversation my-conv-id "\u7EE7\u7EED\u4E0A\u6B21\u4EFB\u52A1"',' panda --print --pack backend "\u68C0\u67E5\u63A5\u53E3\u6743\u9650"'," panda mcp --help","","\u5B50\u547D\u4EE4\uFF1A"," mcp \u7BA1\u7406 MCP \u670D\u52A1\u5668\u914D\u7F6E","","\u4EA4\u4E92\u6A21\u5F0F\u5E38\u7528\u659C\u6760\u547D\u4EE4\uFF1A"," /login \u767B\u5F55 Panda \u8D26\u53F7\uFF08\u7528\u6237\u540D/\u90AE\u7BB1 + \u5BC6\u7801\uFF09"," /logout \u9000\u51FA\u5F53\u524D\u767B\u5F55"," /whoami \u663E\u793A\u5F53\u524D\u767B\u5F55\u7528\u6237"," /model [modelId] \u5148\u5237\u65B0\u6A21\u578B\u5217\u8868\uFF0C\u518D\u6253\u5F00\u9009\u62E9\u5668\u6216\u76F4\u63A5\u5207\u6362\u6A21\u578B"];console.log(t.join(`
2161
+ `),m4(r,i)}}import{readFileSync as Z5}from"node:fs";import{dirname as EZ,join as tS}from"node:path";import{fileURLToPath as CZ}from"node:url";var J5=!1;function PZ(){try{let t=EZ(CZ(import.meta.url)),e=tS(t,"..",".."),n=tS(e,"product.json"),o=Z5(n,"utf-8"),r=JSON.parse(o),i=tS(e,"package.json"),s=JSON.parse(Z5(i,"utf-8")),a=r.pandacliVersion?.trim();if(!a)return null;let l=r.pandaVersion?.trim()??r.version?.trim()??String(s.version??"").trim()??"0.0.0";return{pandacliVersion:a,pandaProductVersion:l}}catch{return null}}function Y5(){let t=PZ();return t?(J5||(J5=!0,console.warn("[panda-cli] \u4F7F\u7528\u4ED3\u5E93\u6839 product.json \u7248\u672C\uFF08\u672A\u68C0\u6D4B\u5230\u6784\u5EFA\u671F\u6CE8\u5165\u5E38\u91CF\uFF09")),t):{pandacliVersion:"0.0.0-dev",pandaProductVersion:"0.0.0-dev"}}function AZ(){return"0.1.18"}function RZ(){return"0.9.5"}function MZ(t,e){return`pandacli ${t} (panda ${e})`}function X5(){return MZ(AZ(),RZ())}function NZ(){if(process.platform==="win32")return!1;try{let t=DZ("/dev/tty","r");return OZ(t),!0}catch{return!1}}function $Z(){let t=["Panda CLI \u547D\u4EE4\u884C\u52A9\u624B","","\u7528\u6CD5\uFF1A"," panda [\u9009\u9879] [prompt]",' panda --print [\u9009\u9879] "\u4F60\u7684\u95EE\u9898"'," panda mcp <subcommand> [\u53C2\u6570]","","\u8BF4\u660E\uFF1A"," \u9ED8\u8BA4\u8FDB\u5165\u4EA4\u4E92\u6A21\u5F0F\uFF1B\u4F7F\u7528 --print \u8FDB\u5165\u975E\u4EA4\u4E92\u4E00\u6B21\u6027\u6267\u884C\u6A21\u5F0F\u3002","","\u5E38\u7528\u9009\u9879\uFF1A"," -h, --help \u663E\u793A\u5E2E\u52A9\u4FE1\u606F"," -V, --version \u663E\u793A CLI \u4E0E Panda \u4EA7\u54C1\u7248\u672C"," --workspace <path> \u6307\u5B9A\u5DE5\u4F5C\u533A\u8DEF\u5F84\uFF08\u9ED8\u8BA4\u5F53\u524D\u76EE\u5F55\uFF09"," --prompt <text> \u6307\u5B9A\u8F93\u5165\u6587\u672C\uFF08\u53EF\u4E0E\u4F4D\u7F6E\u53C2\u6570\u4E8C\u9009\u4E00\uFF09"," --print \u542F\u7528\u975E\u4EA4\u4E92\u6A21\u5F0F"," --output-format <text|json|stream-json> \u975E\u4EA4\u4E92\u8F93\u51FA\u683C\u5F0F\uFF08\u9ED8\u8BA4 text\uFF09"," --render-mode <auto|incremental|safe|full> \u6E32\u67D3\u6A21\u5F0F\uFF08\u9ED8\u8BA4 auto\uFF09"," --mode <agent|ask|plan|team> \u6307\u5B9A\u4F1A\u8BDD\u6A21\u5F0F"," --model <modelId> \u6307\u5B9A\u672C\u6B21\u6267\u884C\u6A21\u578B\uFF08\u4E0D\u6539\u5DE5\u4F5C\u533A\u9ED8\u8BA4\uFF09"," --conversation <id> \u6307\u5B9A\u4F1A\u8BDD ID\uFF08\u5B58\u5728\u5219\u6062\u590D\uFF0C\u4E0D\u5B58\u5728\u5219\u6309\u8BE5 ID \u521B\u5EFA\uFF09"," --resume-latest \u542F\u52A8\u65F6\u81EA\u52A8\u6062\u590D\u6700\u8FD1\u66F4\u65B0\u7684\u5DF2\u4FDD\u5B58\u4F1A\u8BDD\uFF08\u9ED8\u8BA4\u4E0D\u6062\u590D\uFF09"," --pack <id> \u9ED8\u8BA4\u5207\u6362\u5230\u6307\u5B9A pack \u6A21\u5F0F","","\u4E92\u65A5\u5173\u7CFB\uFF1A",...jM.map(e=>` - ${e}`),"","\u6A21\u5F0F\u53EF\u9009\u503C\uFF1A",` ${BM.join(", ")}`,"","\u793A\u4F8B\uFF1A",' panda --print --mode plan --model gpt-4.1 "\u8BF7\u5148\u7ED9\u5B9E\u73B0\u8BA1\u5212"',' panda --print --conversation my-conv-id "\u7EE7\u7EED\u4E0A\u6B21\u4EFB\u52A1"',' panda --print --pack backend "\u68C0\u67E5\u63A5\u53E3\u6743\u9650"'," panda mcp --help","","\u5B50\u547D\u4EE4\uFF1A"," mcp \u7BA1\u7406 MCP \u670D\u52A1\u5668\u914D\u7F6E","","\u4EA4\u4E92\u6A21\u5F0F\u5E38\u7528\u659C\u6760\u547D\u4EE4\uFF1A"," /login \u767B\u5F55 Panda \u8D26\u53F7\uFF08\u7528\u6237\u540D/\u90AE\u7BB1 + \u5BC6\u7801\uFF09"," /logout \u9000\u51FA\u5F53\u524D\u767B\u5F55"," /whoami \u663E\u793A\u5F53\u524D\u767B\u5F55\u7528\u6237"," /model [modelId] \u5148\u5237\u65B0\u6A21\u578B\u5217\u8868\uFF0C\u518D\u6253\u5F00\u9009\u62E9\u5668\u6216\u76F4\u63A5\u5207\u6362\u6A21\u578B"];console.log(t.join(`
2162
2162
  `))}async function UZ(){let t=process.argv.slice(2);if(t.includes("--version")||t.includes("-V")){console.log(X5());return}if(t[0]==="mcp"){let o=await HM(t.slice(1),process.cwd());o!==0&&process.exit(o);return}if(t.includes("--help")||t.includes("-h")){$Z();return}let e=zM(process.argv.slice(2));if(e.print){await WM(e);return}process.stdin?.isTTY||NZ()||(console.error("[panda-cli] stdin is not a TTY and /dev/tty is unavailable. Run in a real terminal, or pass --print for non-interactive mode."),process.exit(1)),await G5(e)}function FZ(){let t=process.argv[1];if(!t)return!1;try{let e=Q5(LZ(import.meta.url)),n=Q5(t);return process.platform==="win32"?e.toLowerCase()===n.toLowerCase():e===n}catch{return!1}}FZ()&&UZ().catch(t=>{console.error(t instanceof Error?t.message:String(t)),process.exit(1)});export{UZ as main};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@panda-agent/panda-cli",
3
- "version": "0.1.17",
3
+ "version": "0.1.18",
4
4
  "private": false,
5
5
  "description": "Panda CLI (Ink). pandacli;cwd 为工作区默认。发版前 npm run release:pack(含 panda-ink + bundle;rg 由 optional @panda-agent/ripgrep-* 或 PATH)。",
6
6
  "type": "module",