@sourcegraph/amp 0.0.1753776071-gcbd42f → 0.0.1753776942-gc50d53
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +4 -4
- package/package.json +1 -1
package/dist/main.js
CHANGED
@@ -4653,7 +4653,7 @@ ${A}</tr>
|
|
4653
4653
|
Please report this to https://github.com/markedjs/marked.`,A){let D="<p>An error occurred:</p><pre>"+pU(B.message+"",!0)+"</pre>";if(Q)return Promise.resolve(D);return D}if(Q)return Promise.reject(B);throw B}}}var TV=new M7A;function g9(A,Q){return TV.parse(A,Q)}g9.options=g9.setOptions=function(A){return TV.setOptions(A),g9.defaults=TV.defaults,G7A(g9.defaults),g9};g9.getDefaults=ff1;g9.defaults=jV;g9.use=function(...A){return TV.use(...A),g9.defaults=TV.defaults,G7A(g9.defaults),g9};g9.walkTokens=function(A,Q){return TV.walkTokens(A,Q)};g9.parseInline=TV.parseInline;g9.Parser=kK;g9.parser=kK.parse;g9.Renderer=tp;g9.TextRenderer=A51;g9.Lexer=vK;g9.lexer=vK.lex;g9.Tokenizer=op;g9.Hooks=sp;g9.parse=g9;var{options:T68,setOptions:j68,use:P68,walkTokens:_68,parseInline:S68}=g9;var $68=kK.parse,v68=vK.lex;M0.level=1;var Z12={code:M0.white,codespan:M0.white,blockquote:M0.gray.italic,html:M0.gray,heading:M0.bold,firstHeading:M0.bold,hr:M0.reset,table:M0.reset,paragraph:M0.reset,strong:M0.bold,em:M0.italic,del:M0.dim.gray.strikethrough,link:M0.cyan,href:M0.cyan,unescape:!0,emoji:!0,showSectionPrefix:!0,reflowText:!1,tab:4,tableOptions:{wordWrap:!0,wrapOnWordBoundary:!1,style:{head:["bold"],border:["grey"],compact:!1}}},K12={keyword:M0.bold,built_in:M0.dim,type:M0.dim,literal:M0.italic,number:M0.reset,regexp:M0.dim.italic,string:M0.dim,subst:M0.reset,symbol:M0.reset,class:M0.bold,function:M0.reset,title:M0.reset,params:M0.reset,comment:M0.dim.italic,doctag:M0.dim.italic,meta:M0.dim,"meta-keyword":M0.reset,"meta-string":M0.reset,section:M0.reset,tag:M0.dim,name:M0.bold,"builtin-name":M0.reset,attr:M0.dim,attribute:M0.reset,variable:M0.reset,bullet:M0.reset,code:M0.reset,emphasis:M0.italic,strong:M0.bold,formula:M0.reset,link:M0.underline,quote:M0.reset,"selector-tag":M0.reset,"selector-id":M0.reset,"selector-class":M0.reset,"selector-attr":M0.reset,"selector-pseudo":M0.reset,"template-tag":M0.reset,"template-variable":M0.reset,addition:M0.bold.underline,deletion:M0.dim.strikethrough,default:M0.reset};g9.use(k2A({...Z12,reflowText:!1},{ignoreIllegals:!0,theme:K12}));function Q51({children:A}){let Q;try{Q=g9(A,{async:!1}).trimEnd()}catch(B){P1.error("Markdown rendering failed",B,{input:A}),Q=A}return W0(HA,{children:Q})}function N7A({message:A}){let Q=A.content.filter((B)=>B.type==="thinking"||B.type==="text");if(!Q.length)return null;return W0(JA,{flexDirection:"column",marginBottom:1,children:Q.map((B,D)=>{let J=D>0?1:0;if(B.type==="thinking")return W0(a41,{thinking:B.thinking},D);else return W0(JA,{marginTop:J,children:W0(Q51,{children:B.text})},D);return null})})}function C7A({message:A,marginTop:Q=0}){if(!A.content.some((X)=>X.type==="text"||X.type==="image"||X.type==="thinking"||X.type==="summary"&&X.summary.type==="message"))return null;let D=A.role==="assistant"&&A.state.type==="cancelled",J=A.content.filter((X)=>X.type==="text"),z=A.content.filter((X)=>X.type==="image"),Z=A.content.filter((X)=>X.type==="thinking"),K=A.content.filter((X)=>X.type==="summary"&&("summary"in X)&&X.summary.type==="message"),G=()=>{if(z.length===0)return null;return V6(JA,{flexDirection:"row",gap:1,marginBottom:1,children:[W0(HA,{color:"gray",children:"Images:"}),z.map((X,Y)=>{return V6(HA,{color:"green",children:["[image ",Y+1,"]"]},`img-${Y}`)})]})};return V6(JA,{flexDirection:"column",gap:1,marginTop:Q,children:[Z.map((X,Y)=>W0(a41,{thinking:X.thinking},`thinking-${Y}`)),J.map((X,Y)=>{switch(A.role){case"assistant":return W0(JA,{flexDirection:"column",children:W0(Q51,{children:X.text})},Y);case"user":return V6(JA,{borderStyle:"bold",borderColor:"green",borderLeft:!0,borderTop:!1,borderBottom:!1,borderRight:!1,paddingLeft:1,flexDirection:"column",children:[G(),W0(HA,{color:"green",italic:!0,children:X.text})]},Y);default:return null}}),K.map((X,Y)=>W0(JA,{children:V6(HA,{color:"grey",italic:!0,children:["Summary: ",X.summary.summary]})},`summary-${Y}`)),D&&W0(JA,{children:W0(HA,{italic:!0,dimColor:!0,children:"Cancelled"})})]})}function O7A({todos:A}){if(!Array.isArray(A)||A.length===0)return null;return V6(JA,{borderStyle:"round",borderColor:"dim",paddingX:1,flexDirection:"column",flexGrow:1,flexShrink:0,children:[W0(JA,{children:W0(HA,{dimColor:!0,bold:!0,children:"TODOs"})}),A.map((Q,B)=>W0(JA,{gap:1,children:V6(HA,{dimColor:!0,wrap:"truncate",children:[W0(HA,{children:"• "}),W0(HA,{bold:Q.status==="in-progress",strikethrough:Q.status==="completed",children:Q.content})]})},Q.id))]})}var RW=hA(D8(),1);function pf1({children:A,dependencies:Q}){let{stdout:B}=TX(),D=RW.useRef(null),[J,z]=RW.useState(B.columns),Z=RW.useCallback(()=>{if(D.current){let{width:K}=CV(D.current);z(K)}},[D,z]);return RW.useLayoutEffect(Z,[Z,B.columns,...Q||[]]),W0(JA,{width:"100%",height:"100%",ref:D,children:A(J)})}j6();x6();var LB=hA(D8(),1),B51=Object.freeze({query:"",options:[]});function V7A(A){let[Q,B]=LB.useState(B51),[D,J]=LB.useState(""),[z,Z]=LB.useState(null),K=LB.useRef(0),[G]=LB.useState(()=>new y8),X=LB.useCallback((H)=>{if(J(H),H!==z)Z(null)},[z]),Y=LB.useCallback(()=>Z(D),[D]),U=LB.useCallback((H)=>{G.next(H)},[G]),F=LB.useMemo(()=>D.startsWith("@")?D.slice(1):null,[D]);LB.useEffect(()=>{if(F!==null&&D!==z){let w=++K.current;(async()=>{try{let W=await A.query(F);if(w===K.current)B({query:F,options:W})}catch(W){if(w===K.current)P1.error("Completion request failed",{query:F,error:W}),B(B51)}})()}else B(B51)},[D,z,A,F]),LB.useEffect(()=>{return()=>{G.complete()}},[G]);let E=LB.useMemo(()=>{if(F===null)return!1;return F.startsWith(Q.query)&&z!==D&&D!==""},[Q,D,z,F]);return{completions:E?Q:B51,hasCompletions:E?Q.options.length>0:!1,selectCompletion:U,completionSelected:G,onWordHighlight:X,ignore:Y}}var D51=hA(D8(),1);function L7A(A){let Q=D51.useMemo(()=>process.cwd().replace(process.env.HOME||"","~"),[]);D51.useEffect(()=>{if(A)process.stdout.write(`\x1B]0;amp - ${A} - ${Q}\x07`);return()=>{process.stdout.write("\x1B]0;\x07")}},[A,Q])}var J51=hA(D8(),1);function R7A(){return W0(JA,{flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:3,marginLeft:4,children:W0(JA,{children:W0(HA,{color:"green",bold:!0,children:"Welcome to Amp"})})})}function T7A(){let[A,Q]=J51.useState(0),B=["Amp","AMP","AmP","amP","aMP","AMp"];return J51.useEffect(()=>{let D=setInterval(()=>{Q((J)=>(J+1)%B.length)},50);return()=>clearInterval(D)},[B.length]),W0(JA,{flexDirection:"column",alignItems:"flex-start",justifyContent:"center",minHeight:3,marginLeft:4,children:W0(JA,{children:V6(HA,{color:"green",bold:!0,children:["Welcome to ",B[A]]})})})}var G12=200;function j7A({threadService:A,history:Q,worker:B,sendToolConfirmation:D,sendUserMessage:J,exit:z,cancel:Z,ampURL:K,commands:G,fuzzyClient:X}){let[Y]=i41(),{viewState:U,subagents:F,subagentActiveTools:E,transcript:H,streamingAssistantMessage:w,todosList:I,mainThread:W}=Z5A(A,B),M=I5.useMemo(()=>w?H.items.concat({id:"streaming-assistant",type:"message",message:w}):H.items,[w,H.items]),N=W?.title||"Untitled",O=I5.useMemo(()=>W?eh1(W):void 0,[W]);L7A(W?.title);let L=I5.useRef(new y8),[T,R]=I5.useState({baseView:"running",rerendering:!1,resizeCounter:0,dismissedEphemeralError:null,slashCommandQuery:null,uiError:null}),j=I5.useRef(null),P=I5.useRef(null),[$,S]=f5A(),g=I5.useCallback((B1)=>{R((K1)=>({...K1,slashCommandQuery:B1}))},[]),u=I5.useMemo(()=>{if(T.slashCommandQuery===null)return[];return G.query(T.slashCommandQuery)},[T.slashCommandQuery,G]),_=I5.useCallback(()=>{R((B1)=>({...B1,rerendering:!0})),process.stdout.write("\x1B[2J\x1B[3J\x1B[H"),L.current.next()},[R,L]),k=I5.useCallback(async(B1)=>{if(R((I1)=>({...I1,slashCommandQuery:null})),!B1||!W)return;let K1=!1,Y1=(I1)=>{K1=!0,S(I1)},R1=()=>{R((I1)=>({...I1,baseView:"help"}))},V1=await G.get(B1).execute({worker:B,thread:W,editorDispatch:Y1,exitApp:z,openHelp:R1});if(R((I1)=>({...I1,uiError:V1||null})),!K1)S({type:"clear"})},[G,S,W,B,z]),b=I5.useCallback((B1)=>{let K1=[{type:"text",text:B1}];if($.imageAttachments.length>0)K1.push(...$.imageAttachments);S({type:"clear"}),J(K1)},[S,$.imageAttachments,J]);I5.useEffect(()=>{return process.stdout.on("resize",_),()=>{process.stdout.off("resize",_)}},[_]),I5.useEffect(()=>{let B1=L.current.pipe(MD(G12)).subscribe(()=>{R((K1)=>({...K1,rerendering:!1,resizeCounter:K1.resizeCounter+1}))});return()=>{B1.unsubscribe()}},[L,R]),I5.useEffect(()=>{let B1=L.current,K1=j.current;return()=>{if(B1.complete(),K1)clearTimeout(K1)}},[L]);let m=[...H.activeTools,...E],v=m.filter((B1)=>B1.toolRun.status==="blocked-on-user"),h=I5.useMemo(()=>M5A(v),[v]),d=V7A(X),{hasCompletions:l,completions:D1,selectCompletion:n}=d,z1=I5.useMemo(()=>{if(U.state!=="active"||!U.ephemeralError)return null;if(T.dismissedEphemeralError===U.ephemeralError)return null;return U.ephemeralError},[U,T.dismissedEphemeralError]),Q1=T.uiError!==null?"ui-error":z1!==null?"ephemeral-error":h!==null?"confirming":T.baseView,G1=(B1)=>{if(!h||h.type!=="tool-use")return;if(h.tools.length>0){let K1=h.tools[0],Y1=Array.from(B1==="always"?K1.toAllow??[]:[]);D(K1.useBlock.id,B1==="yes"||B1==="always",Y1,h.subthreadID)}},Z1=(B1)=>{switch(B1){case"compact":R((K1)=>({...K1,dismissedEphemeralError:null})),B.summarizeThread();break;case"dismiss":R((K1)=>({...K1,dismissedEphemeralError:z1}));break;case"retry":R((K1)=>({...K1,dismissedEphemeralError:null})),B.retry();break;default:P1.warn("action:",{action:B1})}},L1=()=>{R((B1)=>({...B1,uiError:null}))};uE((B1,K1)=>{if(K1.ctrlC){if(T.baseView==="confirming-exit"){if(j.current)clearTimeout(j.current),j.current=null;z()}else{if(R((R1)=>({...R1,baseView:"confirming-exit"})),j.current)clearTimeout(j.current);let Y1=setTimeout(()=>{R((R1)=>({...R1,baseView:"running"})),j.current=null},1000);j.current=Y1}return}if(Q1==="help"){if(K1.escape)R((Y1)=>({...Y1,baseView:"running"}));return}if(Q1==="expanded-view"||Q1==="confirming"||Q1==="ephemeral-error")return;if(Q1==="ui-error")return;if(K1.escape)if(l||u.length>0)return;else Z();else if(K1.ctrl&&B1.toLowerCase()==="r")R((Y1)=>({...Y1,baseView:"expanded-view"}));else if(K1.ctrlL)_()});let a=Y>100,r=T.rerendering&&H.items.length===0?1:"auto",s="resize-key"+T.resizeCounter,J1=[{type:"welcome",id:"welcome"},...H.items];if(T.baseView==="expanded-view"){let B1=M.filter((K1)=>K1.type==="message").map((K1)=>K1.message);return W0(g5A,{threadName:N,messages:B1,onExit:()=>R((K1)=>({...K1,baseView:"running"}))})}return V6(JA,{flexDirection:"column",minHeight:"100%",flexGrow:1,height:r,children:[W0(S41,{items:J1,children:(B1,K1)=>{if(B1.type==="welcome")return W0(R7A,{},"welcome");let Y1=K1===0?0:1;return B1.type==="message"?W0(C7A,{message:B1.message,marginTop:Y1},B1.id):W0(W5A,{toolUse:B1.toolUse,toolResult:B1.toolResult,marginTop:Y1},B1.id)}},s),V6(JA,{flexDirection:"column",marginTop:J1.length>1?1:0,children:[w&&W0(N7A,{message:w}),W0(E5A,{activeTools:m,subagents:F}),V6(JA,{flexDirection:a?"row-reverse":"column",children:[I.length>0&&W0(JA,{ref:P,flexGrow:0,flexShrink:0,width:a?"50%":"100%",children:W0(O7A,{todos:I})}),Q1==="ui-error"&&T.uiError?W0(d41,{title:Vf1(T.uiError).title,description:Vf1(T.uiError).description,options:[{value:"dismiss",label:"Dismiss"}],onSelect:L1}):Q1==="ephemeral-error"&&z1?W0(b5A,{error:z1,onResponse:Z1,ampURL:K}):Q1==="confirming"&&h?W0(V5A,{currentConfirmation:h,onConfirmationResponse:G1}):Q1==="help"?W0(pf1,{dependencies:[I],children:(B1)=>W0(u5A,{width:B1})}):W0(JA,{flexGrow:1,borderStyle:"round",paddingX:1,children:W0(pf1,{dependencies:[I],children:(B1)=>W0(i5A,{onSubmit:b,history:Q,disabled:Q1==="confirming"||Q1==="ephemeral-error"||U.state==="active"&&U.summaryState==="summarizing",viewState:U,editorState:$,editorDispatch:S,onSlashCommandQuery:g,width:B1,completionsState:d})})})]}),W0(B7A,{view:Q1,threadViewState:U,threadTokenUsage:O,hasCompletedMessages:H.items.length>0}),W0(X12,{commands:u,onSelect:k}),W0(Y12,{completions:D1.options,onSelect:n})]})]})}function X12({commands:A,onSelect:Q}){let D=I5.useMemo(()=>A.slice(0,10).map((J)=>({value:J.name,label:J.name,description:J.description})),[A]);return W0(JA,{marginBottom:1,children:W0(LV,{title:"Select command:",options:D,onSelect:Q})})}function Y12({completions:A,onSelect:Q}){let B=Math.min(10),D=I5.useMemo(()=>A.slice(0,B).map((z)=>({value:z,label:z})),[A,B]),J=I5.useCallback((z)=>{if(z===null)return;let Z=A.find((K)=>K===z);if(!Z)return;Q(Z)},[A,Q]);if(D.length===0)return null;return W0(JA,{marginBottom:1,children:W0(LV,{title:"Insert file name:",options:D,onSelect:J})})}function P7A(A){let{worker:Q,threadID:B,settingsStorage:D,pipedInput:J,workerDeps:z,configService:Z,fuzzyServer:K}=A,[G,X]=jX.useState(!1);D5A();let Y=jX.useCallback((I,W,M,N)=>{return U12(I,W,M,N,D,Q,z)},[D,Q,z]),U=jX.useCallback(async(I)=>{await Q.handle({type:"user:message",message:{content:I}})},[Q]),{exit:F}=Cf1(),E=jX.useCallback(()=>{yZ.cancel(B)},[B]);jX.useEffect(()=>{let I=setTimeout(()=>{X(!0)},500);return()=>clearTimeout(I)},[]);let H=jX.useRef(!1);if(jX.useEffect(()=>{if(H.current)return;if(J)H.current=!0,U([{type:"text",text:J}]),X(!0)},[J,U]),!G)return W0(T7A,{});let w=new Lf1;return W0(s4A,{configService:Z,children:W0(j7A,{history:A.history,threadService:A.threadService,worker:Q,sendToolConfirmation:Y,sendUserMessage:U,exit:F,cancel:E,ampURL:A.ampURL,commands:w,fuzzyClient:K})})}async function U12(A,Q,B,D,J,z,Z){let K=B&&B.length>0||!1;if(B&&B.length>0)await C6($2).then((X)=>X.settings["experimental.commandApproval.enabled"]?"experimental.commandApproval.allow":"commands.allowlist").then((X)=>{J.get(X,"global").then((Y)=>{let U=[...Y??[],...B];return J.set(X,U,"global")}).catch((Y)=>{P1.error("Failed to update allowlist",Y)})});let G={type:"user:tool-input",toolUse:A,value:{accepted:Q||K}};if(D)(await yZ.getOrCreateForThread(Z,D)).handle(G);else z.handle(G)}global.React=cf1.default;function _7A(A){return M0.level=1,Nf1(cf1.default.createElement(P7A,{...A}),{patchConsole:!0,exitOnCtrlC:!1,stdout:A.stdout,stdin:A.stdin}).waitUntilExit().then(async()=>{let{threadID:B,ampURL:D,threadService:J}=A;if((await J.get(B))?.messages.length!==0){let Z=`${D.replace(/\/$/,"")}/threads/${B}`;A.stdout.write(`
|
4654
4654
|
`),A.stdout.write(`${M0.dim("Thread:")} ${Z}
|
4655
4655
|
`),A.stdout.write(`${M0.dim("Continue this thread with:")} amp threads continue ${B}
|
4656
|
-
`)}})}var af1=if1.join(Zp0||if1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");async function rf1(A){try{await M12(if1.dirname(af1),{recursive:!0}),await C12(af1,A,"utf-8")}catch(Q){P1.debug("Failed to save last thread ID",Q)}}async function f7A(){try{return(await N12(af1,"utf-8")).trim()}catch(A){return null}}async function O12(A){let Q=await $Q(`/api/threads/${A}`);if(!Q.ok){let B=await Q.text();if(Q.status===404||B.includes("not found"))throw new tJ(VK.threadNotFound(A));throw new tJ(`Failed to load thread ${A}`,1,`Use 'amp threads share ${A} --support' to share this with the Amp team if this persists.`)}return await Q.json()}var h7A=process.env.TERMINAL_EMULATOR?.includes("JetBrains")??!1,y7A=[{name:"notifications",long:"notifications",type:"flag",description:(A)=>`${A?"Enable":"Disable"} sound notifications (enabled by default when not in execute mode)`},{name:"color",long:"color",type:"flag",description:(A)=>`${A?"Enable":"Disable"} color output (enabled by default if stdout and stderr are sent to a TTY)`,deprecated:!0},{name:"settingsFile",long:"settings-file",type:"option",default:process.env.AMP_SETTINGS_FILE??ZW,description:`Custom settings file path (overrides the default location ${ZW})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(P1).join(", ")})`},{name:"logFile",long:"log-file",type:"option",description:"Set log file location"},{name:"format",long:"format",type:"option",description:"output using the standard or new-ui. Options: `ui`, `new-ui`",choices:["ui","jsonl","new-ui"],hidden:!0,deprecated:!0},{name:"dangerouslyAllowAll",long:"dangerously-allow-all",type:"switch",default:!1,description:"Disable all command confirmation prompts (agent will execute all commands without asking)"},{name:"jetbrains",long:"jetbrains",type:"flag",default:h7A,description:(A)=>A?"Enable JetBrains integration. Requires the JetBrains MCP plugin to be installed and you must start Amp in the same directory as your JetBrains project. When enabled, Amp automatically includes your open JetBrains file and text selection with every message, just like it does in VS Code.":"Disable JetBrains integration.",hidden:!0},{name:"interactive",long:"interactive",type:"flag",description:(A)=>A?"Enable interactive mode. This will enable the interactive UI.":"Disable interactive mode. This will disable the interactive UI.",hidden:!0,deprecated:!0}],b7A=(A)=>("deprecated"in A)&&A.deprecated===!0,V12=(A)=>("hidden"in A)&&A.hidden===!0,L12=(A)=>("default"in A),R12=(A)=>("default"in A)?A.default:void 0;function T12(A,Q){let B=Q.args[0],D=Q.commands.map((z)=>z.name());if(B&&!B.includes(" ")&&B.length<30&&!/[./\\]/.test(B)){let z=D.filter((K)=>B.includes(K)||K.includes(B)),Z="Run amp --help for a list of available commands.";if(z.length>0)Z=`Did you mean: ${z.join(", ")}? Or run amp --help for all commands.`;throw new tJ(VK.unknownCommand(B),1,Z)}}async function VS(A,Q){Km1("0.0.
|
4656
|
+
`)}})}var af1=if1.join(Zp0||if1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");async function rf1(A){try{await M12(if1.dirname(af1),{recursive:!0}),await C12(af1,A,"utf-8")}catch(Q){P1.debug("Failed to save last thread ID",Q)}}async function f7A(){try{return(await N12(af1,"utf-8")).trim()}catch(A){return null}}async function O12(A){let Q=await $Q(`/api/threads/${A}`);if(!Q.ok){let B=await Q.text();if(Q.status===404||B.includes("not found"))throw new tJ(VK.threadNotFound(A));throw new tJ(`Failed to load thread ${A}`,1,`Use 'amp threads share ${A} --support' to share this with the Amp team if this persists.`)}return await Q.json()}var h7A=process.env.TERMINAL_EMULATOR?.includes("JetBrains")??!1,y7A=[{name:"notifications",long:"notifications",type:"flag",description:(A)=>`${A?"Enable":"Disable"} sound notifications (enabled by default when not in execute mode)`},{name:"color",long:"color",type:"flag",description:(A)=>`${A?"Enable":"Disable"} color output (enabled by default if stdout and stderr are sent to a TTY)`,deprecated:!0},{name:"settingsFile",long:"settings-file",type:"option",default:process.env.AMP_SETTINGS_FILE??ZW,description:`Custom settings file path (overrides the default location ${ZW})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(P1).join(", ")})`},{name:"logFile",long:"log-file",type:"option",description:"Set log file location"},{name:"format",long:"format",type:"option",description:"output using the standard or new-ui. Options: `ui`, `new-ui`",choices:["ui","jsonl","new-ui"],hidden:!0,deprecated:!0},{name:"dangerouslyAllowAll",long:"dangerously-allow-all",type:"switch",default:!1,description:"Disable all command confirmation prompts (agent will execute all commands without asking)"},{name:"jetbrains",long:"jetbrains",type:"flag",default:h7A,description:(A)=>A?"Enable JetBrains integration. Requires the JetBrains MCP plugin to be installed and you must start Amp in the same directory as your JetBrains project. When enabled, Amp automatically includes your open JetBrains file and text selection with every message, just like it does in VS Code.":"Disable JetBrains integration.",hidden:!0},{name:"interactive",long:"interactive",type:"flag",description:(A)=>A?"Enable interactive mode. This will enable the interactive UI.":"Disable interactive mode. This will disable the interactive UI.",hidden:!0,deprecated:!0}],b7A=(A)=>("deprecated"in A)&&A.deprecated===!0,V12=(A)=>("hidden"in A)&&A.hidden===!0,L12=(A)=>("default"in A),R12=(A)=>("default"in A)?A.default:void 0;function T12(A,Q){let B=Q.args[0],D=Q.commands.map((z)=>z.name());if(B&&!B.includes(" ")&&B.length<30&&!/[./\\]/.test(B)){let z=D.filter((K)=>B.includes(K)||K.includes(B)),Z="Run amp --help for a list of available commands.";if(z.length>0)Z=`Did you mean: ${z.join(", ")}? Or run amp --help for all commands.`;throw new tJ(VK.unknownCommand(B),1,Z)}}async function VS(A,Q){Km1("0.0.1753776942-gc50d53");let B=Q.settingsFile;P1.info("Using settings file",{settingsFile:B});let D=H$1(ou()),J=DV({settingsFile:B}),z=FB1({storage:J,secretStorage:D,workspaceRoots:UA.of([c6.file(process.cwd())]),defaultAmpURL:A.ampURL,defaultCacheDirectory:X$1}),Z=await C6($2);P1.debug("Global configuration initialized",{hasCacheDirectory:!!Z.settings.cacheDirectory,settingsKeys:Object.keys(Z.settings)});let K=Fv(),G=await Gf(K),X=Kr1({configService:z,toolService:G});try{await X.initialized}catch(T){P1.warn("Failed to wait for MCP servers, continuing anyway:",T)}if(Q.dangerouslyAllowAll)Z.settings.dangerouslyAllowAll=!0;if(Q.jetbrains){if(Z.settings["jetbrains.enabled"]=!0,el.subscribe((R)=>{P1.info("jetbrains-status",R)}),await LH(),!await Kc1())if(h7A)MQ("JetBrains integration failed. Try again with `amp --no-jetbrains` or see setup: https://ampcode.com/manual#jetbrains");else MQ("Cannot connect to JetBrains IDE. Check setup: https://ampcode.com/manual#jetbrains")}let Y=Z.settings["experimental.reviewTool"]??!1,U=Z.settings["experimental.tools"]??[];U_1(G,!1,Y,U);let F,E;if(!A.executeMode)F=new sv1(Z.settings,process.cwd()),await F.start(),E=J8A(F,process.cwd());else F=new class{async start(){}async query(){return[]}dispose(){}},E={[Symbol.dispose]:()=>{}};if(!await D.get("apiKey",A.ampURL)){if(b4.write(`No API key found. Starting login flow...
|
4657
4657
|
`),!await j12(A,D))process.exit(1)}let H=_r1(),w=new _X1(H),I=new TX1(H),W=new XF1(w),M=Q.notifications!==void 0?Q.notifications:!A.executeMode,N=Su0({playNotificationSound:async(T)=>{if(M)_u0(T)},windowFocused:()=>Promise.resolve(!1),threadService:w,notifyForSubagents:!1});P1.info("Starting Amp background services");let O=Y90({threadService:w,threadHistoryService:I,isExtensionDevelopment:!1}),L={configService:z,toolService:G,mcpService:X,threadService:w,threadHistoryService:I,threadSummaryService:W,threadSyncService:O,threadStorage:H,secretStorage:D,settingsStorage:J,fileWatcher:E,fuzzyServer:F,notificationService:N};return{...L,async dispose(){await L.mcpService.dispose(),L.configService.unsubscribe(),L.toolService.dispose(),L.fileWatcher[Symbol.dispose](),L.fuzzyServer.dispose(),L.threadSyncService.dispose(),L.settingsStorage[Symbol.dispose]()}}}async function j12(A,Q){if(!A.executeMode){if(await u91("Would you like to log in to Amp?",["(y)es","(n)o"])!="y")return b4.write(`Login cancelled. Run the command again to retry.
|
4658
4658
|
`),!1}return await m7A(A,Q)}async function m7A(A,Q){let B=W12(32).toString("hex"),D=await S8A(A.ampURL,B);b4.write(`If your browser doesn't open automatically, visit:
|
4659
4659
|
|
@@ -4667,7 +4667,7 @@ ${M0.blue.bold(D)}
|
|
4667
4667
|
Login successful! You can now use the Amp CLI.
|
4668
4668
|
`),!0}catch(J){return x9.write(`
|
4669
4669
|
Login failed: ${J instanceof Error?J.message:String(J)}
|
4670
|
-
`),!1}}function P12(A){let Q=new ju().name("amp").description("AI-powered coding assistant").option("--visibility <visibility>","Set thread visibility (private, public, team)").configureOutput({writeErr:()=>{}});Q.exitOverride((X)=>{if(X.code==="commander.help"||X.code==="commander.version"||X.exitCode===0)eu(),process.exit(0);let Y=X.originalError??X;g_(Y)}),Q.option("-V, --version","output the version number",()=>{b4.write(`0.0.
|
4670
|
+
`),!1}}function P12(A){let Q=new ju().name("amp").description("AI-powered coding assistant").option("--visibility <visibility>","Set thread visibility (private, public, team)").configureOutput({writeErr:()=>{}});Q.exitOverride((X)=>{if(X.code==="commander.help"||X.code==="commander.version"||X.exitCode===0)eu(),process.exit(0);let Y=X.originalError??X;g_(Y)}),Q.option("-V, --version","output the version number",()=>{b4.write(`0.0.1753776942-gc50d53 (released 2025-07-29T08:20:06.998Z)
|
4671
4671
|
`),process.exit(0)}),Q.addHelpText("after",T8A()),Q.configureHelp({formatHelp:j8A}),Q.command("logout").description("Log out by removing stored API key").action(async()=>{let X=await Qz(),Y=ou();if(process.env.AMP_API_KEY)b4.write(`API key found in environment variable AMP_API_KEY, unset first before running 'amp logout'
|
4672
4672
|
`),process.exit(0);if(!await Y.get("apiKey",X.ampURL))b4.write(`Already logged out.
|
4673
4673
|
`),process.exit(0);await Y.set("apiKey","",X.ampURL),b4.write(`Successfully logged out.
|
@@ -4701,10 +4701,10 @@ Summary: ${L}
|
|
4701
4701
|
`),x9.write(`
|
4702
4702
|
`),x9.write(`Secrets have been automatically redacted, but please review the file before attaching
|
4703
4703
|
`),x9.write(`it to support requests. Learn more at https://ampcode.com/manual/appendix#support-bundles
|
4704
|
-
`),process.exit(0)}catch(U){MQ(U instanceof Error?U.message:String(U))}}),Q.addCommand(Z);let K=new ju("update").description("Update Amp CLI to the latest version").option("--version <version>","Update to a specific version").allowUnknownOption(!1);K.action(async(X,Y)=>{try{let U=Y.optsWithGlobals(),{update:F}=await Promise.resolve().then(() => (k7A(),v7A)),{checkNpmUpdate:E}=await Promise.resolve().then(() => (KX1(),$r1)),H="0.0.
|
4704
|
+
`),process.exit(0)}catch(U){MQ(U instanceof Error?U.message:String(U))}}),Q.addCommand(Z);let K=new ju("update").description("Update Amp CLI to the latest version").option("--version <version>","Update to a specific version").allowUnknownOption(!1);K.action(async(X,Y)=>{try{let U=Y.optsWithGlobals(),{update:F}=await Promise.resolve().then(() => (k7A(),v7A)),{checkNpmUpdate:E}=await Promise.resolve().then(() => (KX1(),$r1)),H="0.0.1753776942-gc50d53";if(U.version)x9.write(M0.blue(`Updating to version ${U.version}...
|
4705
4705
|
`)),await F(U.version),x9.write(M0.green(`✓ Successfully updated to version ${U.version}
|
4706
4706
|
`));else{x9.write(M0.blue(`Checking for updates...
|
4707
|
-
`));let w=await E("0.0.
|
4707
|
+
`));let w=await E("0.0.1753776942-gc50d53");if(!w.hasUpdate)x9.write(M0.green(`✓ Amp CLI is already up to date.
|
4708
4708
|
`)),process.exit(0);x9.write(M0.blue(`Updating to version ${w.latestVersion}...
|
4709
4709
|
`)),await F(w.latestVersion),x9.write(M0.green(`✓ Successfully updated to version ${w.latestVersion}
|
4710
4710
|
`))}process.exit(0)}catch(U){x9.write(M0.red("Error updating: ")+`${U instanceof Error?U.message:String(U)}
|
package/package.json
CHANGED