@panda-agent/panda-cli 0.1.13 → 0.1.14
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.
|
@@ -2116,5 +2116,5 @@ end try
|
|
|
2116
2116
|
`)},[za,a.length,Qg.renderedValue]);Lf("Chat",za);let T5=_n(()=>{let L=Qt.current;return!L||!X0(r)&&!L.isConversationCoreBusy()?!1:(Q0(L,i),Jg(),h(!1),!0)},[Jg,i,r]),eh=RM(Y0,T5,void 0,!0),w5=Hi(()=>({"chat:toggleVimMode":()=>{L_(L=>{let te=!L;return i({type:"APPEND_INFO",text:te?"Vim \u952E\u4F4D\u5DF2\u5F00\u542F\uFF08Ctrl+Shift+Y \u6216 /vim \u5207\u6362\uFF09\u3002":"Vim \u952E\u4F4D\u5DF2\u5173\u95ED\u3002"}),te})},"chat:thinkingToggle":()=>{P(L=>!L)},"chat:toggleOperationMode":()=>{let L=Qt.current;if(!L)return;let te=O2(L.getInteractionMode());L.setInteractionMode(te),X(te)},"chat:openTeamRolesPicker":()=>{let L=Qt.current;!L||L.getInteractionMode()!=="team"||(Bn(L.getEnabledTeamRoles()),Je(0),Z(!0))},"chat:openModelPicker":()=>{k.length>0&&($(!0),z(Math.max(0,k.findIndex(L=>L.id===_))))},"chat:imagePaste":()=>{Zg({notifyWhenEmpty:!0})},"chat:scrollPageUp":()=>{let L=lu.current;if(!L)return;let te=L.getViewportHeight()||10;L.scrollBy(-te)},"chat:scrollPageDown":()=>{let L=lu.current;if(!L)return;let te=L.getViewportHeight()||10;L.scrollBy(te)},"chat:scrollToBottom":()=>{lu.current?.scrollToBottom()}}),[i,k,_,Zg]);Y0(w5,{context:"Chat",isActive:za}),Lr(()=>{if(!$_.current)return $_.current=!0,(async()=>{try{let L=await Rf(e);Qt.current=L,p(L.getConversationId()),await Bg(L,i),Yi();let te=L.listModelOptions();C(te);let ie=L.getSelectedModelId()??te[0]?.id;T(ie),z(Math.max(0,te.findIndex(we=>we.id===ie))),await L.getCurrentUser().catch(()=>{})||(i({type:"APPEND_INFO",text:"\u5F53\u524D\u672A\u767B\u5F55\uFF0C\u8BF7\u5148\u767B\u5F55 Panda \u8D26\u53F7\u3002"}),pu()),e.initialPrompt&&e.initialPrompt.trim()&&(L.submit(e.initialPrompt.trim()),i({type:"AWAITING_MODEL_RESPONSE"}),p(L.getConversationId()))}catch(L){i({type:"APPEND_ERROR",text:jg(L)})}})(),()=>{ja.current?.()}},[e,pu,Yi]);let j_=_n(async(L,te)=>{let ie=Qt.current;if(!ie)return;let ue=ie.getConversationId();if(!(ue===Gn||Hg.current.has(ue)||ie.isCurrentConversationEphemeral()||ie.getCurrentConversationTurnCount()>1)){Hg.current.add(ue);try{await ie.runRegisteredActionImmediate("rename_conversation",void 0,ie.getSelectedModelId()??void 0,L)}catch{Hg.current.delete(ue)}}},[]);Lr(()=>{let L=Qt.current;if(!L||!d)return;let te=N_.current;return N_.current=d,ja.current?.(),MM(te,d)&&i({type:"RESET_STREAMING_STATE"}),ja.current=qM({eventBus:L.eventBus,getConversationId:()=>Qt.current?.getConversationId()??"",dispatch:i,onTurnStarted:j_,onConversationUiMessagesUpdated:()=>{let ie=Qt.current;ie&&Bg(ie,i)}}),()=>{ja.current?.(),ja.current=null}},[d,j_,i]),Lr(()=>{if(!K||D.length===0)return;let L=Ji.conversationPickerViewportSize;U(te=>Math.max(0,Math.min(te,Math.max(0,D.length-L))))},[K,Ji.conversationPickerViewportSize,D.length]),HH((L,te,ie)=>{let ue=Qt.current;if(!ue)return;let we=te,dn=String(we.sequence??L??""),de=!!(we.upArrow||we.name==="up"||dn==="\x1B[A"||dn.endsWith("[A")),vt=!!(we.downArrow||we.name==="down"||dn==="\x1B[B"||dn.endsWith("[B")),ye=!!(we.return||we.name==="return"||we.name==="enter"),Tt=!!(we.escape||we.name==="escape"),ir=ye&&!!we.shift,Xi=!!(we.pageUp||we.name==="pageup"),z_=!!(we.pageDown||we.name==="pagedown"),Wa=!!(we.wheelUp||we.name==="wheelup"),TG=!!(we.wheelDown||we.name==="wheeldown"),sr=te;if(Ve){if(Tt&&!rr){re(!1),Gi(void 0),qe("");return}if((de||vt)&&!rr){Yt(me=>me==="email"?"password":"email");return}let Ct=te;if(!!(Ct.backspace||Ct.name==="backspace"||L==="\b"||L==="\x7F")&&!rr){nr==="email"?Ie(me=>me.slice(0,-1)):qe(me=>me.slice(0,-1));return}if(ye&&!rr){if(!Te.trim()||!lt){Gi("\u8BF7\u8F93\u5165\u90AE\u7BB1\u548C\u5BC6\u7801\u3002"),Te.trim()?Yt("password"):Yt("email");return}Ba(!0),Gi(void 0),(async()=>{try{let me=await ue.login(Te.trim(),lt);i({type:"APPEND_INFO",text:`\u767B\u5F55\u6210\u529F\uFF1A${me.username||me.email||Te.trim()}`});let se=await ue.refreshModelOptions();C(se.options),T(se.selectedModelId),re(!1),Ie(""),qe(""),Yt("email")}catch(me){Gi(me instanceof Error?me.message:String(me))}finally{Ba(!1)}})().catch(()=>{});return}let ke=L.replace(/[\r\n]/g,"");if(!rr&&ke.length>0){Gi(void 0),nr==="email"?Ie(me=>me+ke):qe(me=>me+ke);return}return}if(K){let Ct=Math.max(0,D.length-1),Ae=Ji.conversationPickerViewportSize,ke=se=>{let Ye=I;se<Ye?Ye=se:se>=Ye+Ae&&(Ye=se-Ae+1),U(Math.max(0,Math.min(Ye,Math.max(0,D.length-Ae))))};if(Tt){N(!1),le(!1);return}if($a(L,sr)){let se=fe<=0?Ct:fe-1;he(se),ke(se);return}if(Na(L,sr)){let se=fe>=Ct?0:fe+1;he(se),ke(se);return}if(Xi){let se=Math.max(0,fe-Ae);he(se),ke(se);return}if(z_){let se=Math.min(Ct,fe+Ae);he(se),ke(se);return}let me=Number(L);if(!Number.isNaN(me)&&me>=1&&me<=D.length){let se=me-1;he(se),ke(se);return}if(ye){let se=D[fe],Ye=ee;if(!se){N(!1),le(!1);return}(async()=>{if(!await ue.switchConversation(se.conversationId)){i({type:"APPEND_ERROR",text:`Failed to switch conversation: ${se.conversationId}`});return}p(se.conversationId),await Bg(ue,i),Yi();let th=ue.getCurrentConversationSummary();i({type:"APPEND_INFO",text:`${Ye?"\u5DF2\u6062\u590D\u4F1A\u8BDD":"\u5DF2\u5207\u6362\u4F1A\u8BDD"}\uFF1A${th.title||"\uFF08\u65E0\u6807\u9898\uFF09"} [${th.conversationId}]`})})().catch(Dt=>{i({type:"APPEND_ERROR",text:Dt instanceof Error?Dt.message:String(Dt)})}),N(!1),le(!1);return}}if(B){let Ct=Math.max(0,wa.length-1);if(Tt){F(!1);return}if($a(L,sr)){J(ke=>ke<=0?Ct:ke-1);return}if(Na(L,sr)){J(ke=>ke>=Ct?0:ke+1);return}let Ae=Number(L);if(!Number.isNaN(Ae)&&Ae>=1&&Ae<=wa.length){J(Ae-1);return}if(ye){let ke=wa[j]?.id;ke&&(ue.setInteractionMode(ke),X(ke),i({type:"APPEND_INFO",text:`\u5DF2\u5207\u6362\u5230 ${ke} \u6A21\u5F0F\u3002`})),F(!1);return}return}if(oe){let Ct=Qt.current;if(!Ct)return;let Ae=Math.max(0,Yr.length-1);if(Tt){Z(!1);return}if($a(L,sr)){Je(me=>me<=0?Ae:me-1);return}if(Na(L,sr)){Je(me=>me>=Ae?0:me+1);return}let ke=Number(L);if(!Number.isNaN(ke)&&ke>=1&&ke<=Yr.length){Je(ke-1);return}if(L===" "){let me=Yr[Be];if(!me)return;Bn(se=>{let Ye=new Set(se);if(Ye.has(me.id)){if(Ye.size<=1)return se;Ye.delete(me.id)}else Ye.add(me.id);return Yr.filter(Dt=>Ye.has(Dt.id)).map(Dt=>Dt.id)});return}if(ye){Ct.setEnabledTeamRoles(gt),Z(!1);return}}if(x){let Ct=Math.max(0,k.length-1);if(Tt){$(!1);return}if($a(L,sr)){z(ke=>ke<=0?Ct:ke-1);return}if(Na(L,sr)){z(ke=>ke>=Ct?0:ke+1);return}let Ae=Number(L);if(!Number.isNaN(Ae)&&Ae>=1&&Ae<=k.length){z(Ae-1);return}if(ye){let me=k[V]?.id;me&&(ue.setSelectedModelId(me).catch(()=>{}),T(me)),$(!1);return}}if(tt){if(Tt){tt.allowSkipAll&&ue.answerAskQuestion(tt.toolCallId,[]).catch(()=>{});return}let Ct=Math.max(0,tt.questions.length-1);if(L==="["&&!we.shift){jn(se=>Math.max(0,se-1)),R(0);return}if(L==="]"){jn(se=>Math.min(Ct,se+1)),R(0);return}let Ae=tt.questions[un]??tt.questions[0];if(!Ae)return;let ke=Math.max(0,Ae.options.length-1);if($a(L,sr)){R(se=>se<=0?ke:se-1);return}if(Na(L,sr)){R(se=>se>=ke?0:se+1);return}let me=Number(L);if(!Number.isNaN(me)&&me>=1&&me<=Ae.options.length){R(me-1);return}if(Ae.allowMultiple&&L===" "){let se=Ae.options[tr]??Ae.options[0];if(!se)return;W(Ye=>{let Dt=new Set(Ye[Ae.id]??[]);return Dt.has(se.id)?Dt.delete(se.id):Dt.add(se.id),{...Ye,[Ae.id]:Array.from(Dt)}});return}if(ye){let se=Ae.options[tr]??Ae.options[0],Ye=ae;if(!Ae.allowMultiple&&se&&(Ye={...ae,[Ae.id]:[se.id]},W(Ye)),un<tt.questions.length-1){jn(po=>po+1),R(0);return}let Dt=tt.questions.map(po=>({questionId:po.id,selectedOptionIds:Ye[po.id]??[]}));if(tt.questions.some(po=>po.required&&(Ye[po.id]??[]).length===0))return;ue.answerAskQuestion(tt.toolCallId,Dt).catch(()=>{});return}return}let Nr=te;if(!K&&!oe&&!B&&!x&&!tt){if(g){let me=Math.max(0,Dr.length-1);if(Tt){h(!1);return}if(de){b(se=>se<=0?me:se-1);return}if(vt){b(se=>se>=me?0:se+1);return}if(ye){let se=Math.max(0,Math.min(y,me));ir?ue.removePendingUserMessage(se):ue.sendPendingUserMessageImmediately(se).catch(Ye=>{i({type:"APPEND_ERROR",text:jg(Ye)})}),f(Ye=>Ye+1);return}}if((X0(r)||ue.isConversationCoreBusy())&&Tt&&au.current.length===0){if(M_){Jg(),Q0(ue,i);return}Wg(!0),or.current&&clearTimeout(or.current),or.current=setTimeout(()=>{or.current=null,Wg(!1)},rG);return}let Ae=ie,ke=new qH(Ae.keypress);if(Xg.handleKeyDown(ke),ke.didStopImmediatePropagation()){Ae.stopImmediatePropagation();return}if(Nr.shift&&(Nr.ctrl||Nr.super)&&Jn(L,Nr)==="c"){qg.current=a,GH(a);return}if(Nr.shift&&(Nr.ctrl||Nr.super)&&Jn(L,Nr)==="v"&&qg.current){let me=qg.current,se=uu.current,Ye=a.slice(0,se),Dt=a.slice(se);l(Ye+me+Dt),u(se+me.length);return}if(process.platform==="darwin"&&Ae.keypress?.isPasted===!0&&L.length===0&&Zg({notifyWhenEmpty:!1}))return}Qg.onInput(L,Nr)});let _5=PL,S5=a;return P_.createElement(LD,{appendInfo:s},P_.createElement(r_.Provider,{value:lu},P_.createElement(_5,{uiState:r,inputValue:S5,inputCursorOffset:c,wrappedRenderedLines:b5,inputTransientHint:be,vimBindingsEnabled:O_,vimInputMode:u5,workspacePath:e.workspacePath,conversationId:d,contentWidth:Math.max(20,Ji.cols-6),conversationTitle:Qt.current?.getCurrentConversationSummary().title,modelLabel:Qt.current?.getModelLabelById(_)??"-- \u8BF7\u767B\u5F55\u5237\u65B0\u6A21\u578B",modeLabel:oG(Q),interactionMode:Q,contextMetrics:r.contextMetrics,showThinkingBody:v,askQuestionActive:!!tt,askQuestionAllowSkipAll:tt?.allowSkipAll??!1,askQuestionHint:tt?(()=>{let L=tt.questions.length,ie=!!tt.questions[un]?.allowMultiple,ue=un>=L-1,we=ie?ue?"Enter \u63D0\u4EA4":"Enter \u4E0B\u4E00\u9898":ue?"Enter \u9009\u4E2D\u5E76\u63D0\u4EA4":"Enter \u9009\u4E2D\u5E76\u4E0B\u4E00\u9898",dn=ie?" \xB7 Space \u52FE\u9009\u9879":"",de=tt.allowSkipAll?" \xB7 Esc \u8DF3\u8FC7":"";return`Q${un+1}/${L} \xB7 \u2191/\u2193 \u9009\u9879${dn} \xB7 ${we} \xB7 [ ] \u4E0A/\u4E0B\u9898${de}`})():"",askQuestionUiState:h5,askQuestionPopup:tt?{title:tt.title,allowSkipAll:tt.allowSkipAll,questions:tt.questions,questionIndex:un,optionIndex:tr,selectedByQuestion:ae}:void 0,loginPopup:Ve?{email:Te,password:lt,focusedField:nr,submitting:rr,error:l5}:void 0,modePickerActive:B,modePickerHint:B?"\u4EA4\u4E92\u6A21\u5F0F":"",modePickerState:B?{entries:[...wa],highlightedIndex:j,selectedMode:Q}:void 0,modelPickerActive:x,modelPickerHint:x?`Pick model (${k.length}) -> ${k[V]?.displayName??""}`:"",modelPickerState:x?{options:k,highlightedIndex:V,selectedModelId:_}:void 0,teamRolesPickerActive:oe,teamRolesPickerHint:oe?`\u5B50 Agent\uFF08${Yr.length}\uFF09\u2192 ${Yr[Be]?.label??""}`:"",teamRolesPickerState:oe?{entries:Yr,highlightedIndex:Be,selectedRoleIds:gt}:void 0,conversationPickerActive:K,conversationPickerHeading:K?ee?"@ \u6062\u590D\u4F1A\u8BDD":"@ \u4F1A\u8BDD\u5217\u8868":void 0,conversationPickerHint:K?ee?`\u6062\u590D\u4E4B\u524D\u7684\u4F1A\u8BDD\uFF08\u5171 ${D.length} \u4E2A\uFF09`:`\u9009\u62E9\u4F1A\u8BDD\uFF08\u5171 ${D.length} \u4E2A\uFF09`:"",conversationPickerForResume:ee,conversationPickerState:K?{options:D,highlightedIndex:fe,offset:I,viewportSize:Ji.conversationPickerViewportSize,selectedConversationId:d??void 0,groupTitleForTimestamp:tG}:void 0,exitPendingHint:M_?"\u518D\u6309 Esc \u4E00\u6B21\u4E2D\u65AD":eh.pending&&eh.keyName?`\u518D\u6309 ${eh.keyName} \u4E00\u6B21\u9000\u51FA`:"",typeaheadSuggestions:su.suggestions,typeaheadSelectedSuggestion:su.selectedSuggestion,typeaheadMaxColumnWidth:Xg.maxColumnWidth,typeaheadCommandArgumentHint:su.commandArgumentHint,pendingUserMessageCount:Dr.length,queueSelectionActive:g,queueSelectionIndex:y,queuedUserLines:Dr})))}var zg=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 A_(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 aG(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 n5(t){let e=aG(process.env.PANDA_CLI_FLICKER_STATS),n=e?new zg:null,{options:o,stdin:r,ownership:i}=wM(!1);SM(r);let s;try{let a=await sG({...o,onFrame:e?l=>n?.onFrame(l):void 0});n&&(process.stderr?.write?.(`[panda-flicker] enabled, sampling every 2s
|
|
2117
2117
|
`),s=setInterval(()=>{process.stderr?.write?.(`${A_("[panda-flicker]",n.snapshot())}
|
|
2118
2118
|
`)},2e3)),process.stdout?.write?.(iG),a.render(t5.createElement(TM,null,t5.createElement(e5,{args:t}))),await a.waitUntilExit()}finally{s&&clearInterval(s),n&&process.stderr?.write?.(`${A_("[panda-flicker][final]",n.snapshot())}
|
|
2119
|
-
`),IM(r,i)}}import{readFileSync as r5}from"node:fs";import{dirname as lG,join as R_}from"node:path";import{fileURLToPath as cG}from"node:url";var o5=!1;function uG(){try{let t=lG(cG(import.meta.url)),e=R_(t,"..",".."),n=R_(e,"product.json"),o=r5(n,"utf-8"),r=JSON.parse(o),i=R_(e,"package.json"),s=JSON.parse(r5(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 i5(){let t=uG();return t?(o5||(o5=!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 dG(){return"0.1.
|
|
2119
|
+
`),IM(r,i)}}import{readFileSync as r5}from"node:fs";import{dirname as lG,join as R_}from"node:path";import{fileURLToPath as cG}from"node:url";var o5=!1;function uG(){try{let t=lG(cG(import.meta.url)),e=R_(t,"..",".."),n=R_(e,"product.json"),o=r5(n,"utf-8"),r=JSON.parse(o),i=R_(e,"package.json"),s=JSON.parse(r5(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 i5(){let t=uG();return t?(o5||(o5=!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 dG(){return"0.1.14"}function pG(){return"0.9.5"}function mG(t,e){return`pandacli ${t} (panda ${e})`}function s5(){return mG(dG(),pG())}function yG(){if(process.platform==="win32")return!1;try{let t=gG("/dev/tty","r");return fG(t),!0}catch{return!1}}function vG(){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"," --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",...Q2.map(e=>` - ${e}`),"","\u6A21\u5F0F\u53EF\u9009\u503C\uFF1A",` ${X2.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(`
|
|
2120
2120
|
`))}async function xG(){let t=process.argv.slice(2);if(t.includes("--version")||t.includes("-V")){console.log(s5());return}if(t[0]==="mcp"){let o=await iM(t.slice(1),process.cwd());o!==0&&process.exit(o);return}if(t.includes("--help")||t.includes("-h")){vG();return}let e=eM(process.argv.slice(2));if(e.print){await tM(e);return}process.stdin?.isTTY||yG()||(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 n5(e)}function bG(){let t=process.argv[1];if(!t)return!1;try{let e=a5(hG(import.meta.url)),n=a5(t);return process.platform==="win32"?e.toLowerCase()===n.toLowerCase():e===n}catch{return!1}}bG()&&xG().catch(t=>{console.error(t instanceof Error?t.message:String(t)),process.exit(1)});export{xG as main};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@panda-agent/panda-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.14",
|
|
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",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"vendor/panda-ink/dist/devtools-*.js"
|
|
18
18
|
],
|
|
19
19
|
"engines": {
|
|
20
|
-
"node": ">=
|
|
20
|
+
"node": ">=22"
|
|
21
21
|
},
|
|
22
22
|
"scripts": {
|
|
23
23
|
"sync:version": "node ./scripts/sync-version-from-product.mjs",
|
|
@@ -48,7 +48,6 @@
|
|
|
48
48
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
49
49
|
"@napi-rs/keyring": "^1.2.0",
|
|
50
50
|
"auto-bind": "^5.0.1",
|
|
51
|
-
"better-sqlite3": "^12.9.0",
|
|
52
51
|
"bidi-js": "^1.0.3",
|
|
53
52
|
"chalk": "^5.4.1",
|
|
54
53
|
"cli-boxes": "^3.0.0",
|