@sourcegraph/amp 0.0.1753732878-g1c0289 → 0.0.1753749023-g271ffc
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
@@ -4664,7 +4664,7 @@ ${A}</tr>
|
|
4664
4664
|
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 jV=new R7A;function g9(A,Q){return jV.parse(A,Q)}g9.options=g9.setOptions=function(A){return jV.setOptions(A),g9.defaults=jV.defaults,E7A(g9.defaults),g9};g9.getDefaults=xf1;g9.defaults=PV;g9.use=function(...A){return jV.use(...A),g9.defaults=jV.defaults,E7A(g9.defaults),g9};g9.walkTokens=function(A,Q){return jV.walkTokens(A,Q)};g9.parseInline=jV.parseInline;g9.Parser=fK;g9.parser=fK.parse;g9.Renderer=Bc;g9.TextRenderer=J51;g9.Lexer=kK;g9.lexer=kK.lex;g9.Tokenizer=Qc;g9.Hooks=Ac;g9.parse=g9;var{options:t68,setOptions:e68,use:A28,walkTokens:Q28,parseInline:B28}=g9;var D28=fK.parse,J28=kK.lex;W0.level=1;var O12={code:W0.white,codespan:W0.white,blockquote:W0.gray.italic,html:W0.gray,heading:W0.bold,firstHeading:W0.bold,hr:W0.reset,table:W0.reset,paragraph:W0.reset,strong:W0.bold,em:W0.italic,del:W0.dim.gray.strikethrough,link:W0.cyan,href:W0.cyan,text:W0.reset,unescape:!0,emoji:!0,width:80,showSectionPrefix:!0,reflowText:!1,tab:4,tableOptions:{wordWrap:!0,wrapOnWordBoundary:!1,style:{head:["bold"],border:["grey"],compact:!1}}},V12={keyword:W0.bold,built_in:W0.dim,type:W0.dim,literal:W0.italic,number:W0.reset,regexp:W0.dim.italic,string:W0.dim,subst:W0.reset,symbol:W0.reset,class:W0.bold,function:W0.reset,title:W0.reset,params:W0.reset,comment:W0.dim.italic,doctag:W0.dim.italic,meta:W0.dim,"meta-keyword":W0.reset,"meta-string":W0.reset,section:W0.reset,tag:W0.dim,name:W0.bold,"builtin-name":W0.reset,attr:W0.dim,attribute:W0.reset,variable:W0.reset,bullet:W0.reset,code:W0.reset,emphasis:W0.italic,strong:W0.bold,formula:W0.reset,link:W0.underline,quote:W0.reset,"selector-tag":W0.reset,"selector-id":W0.reset,"selector-class":W0.reset,"selector-attr":W0.reset,"selector-pseudo":W0.reset,"template-tag":W0.reset,"template-variable":W0.reset,addition:W0.bold.underline,deletion:W0.dim.strikethrough,default:W0.reset};g9.use(y2A({...O12,reflowText:!1},{ignoreIllegals:!0,theme:V12}));function z51({children:A}){let Q;try{Q=g9(A,{async:!1}).trimEnd()}catch(B){j1.error("Markdown rendering failed",B,{input:A}),Q=A}return M0(HA,{children:Q})}function T7A({message:A}){let Q=A.content.filter((B)=>B.type==="thinking"||B.type==="text");if(!Q.length)return null;return M0(JA,{flexDirection:"column",marginBottom:1,children:Q.map((B,D)=>{let J=D>0?1:0;if(B.type==="thinking")return M0(o41,{thinking:B.thinking},D);else return M0(JA,{marginTop:J,children:M0(z51,{children:B.text})},D);return null})})}function j7A({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:[M0(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)=>M0(o41,{thinking:X.thinking},`thinking-${Y}`)),J.map((X,Y)=>{switch(A.role){case"assistant":return M0(JA,{flexDirection:"column",children:M0(z51,{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(),M0(HA,{color:"green",italic:!0,children:X.text})]},Y);default:return null}}),K.map((X,Y)=>M0(JA,{children:V6(HA,{color:"grey",italic:!0,children:["Summary: ",X.summary.summary]})},`summary-${Y}`)),D&&M0(JA,{children:M0(HA,{italic:!0,dimColor:!0,children:"Cancelled"})})]})}function P7A({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:[M0(JA,{children:M0(HA,{dimColor:!0,bold:!0,children:"TODOs"})}),A.map((Q,B)=>M0(JA,{gap:1,children:V6(HA,{dimColor:!0,wrap:"truncate",children:[M0(HA,{children:"• "}),M0(HA,{bold:Q.status==="in-progress",strikethrough:Q.status==="completed",children:Q.content})]})},Q.id))]})}var PW=hA(D8(),1);function if1({children:A,dependencies:Q}){let{stdout:B}=TX(),D=PW.useRef(null),[J,z]=PW.useState(B.columns),Z=PW.useCallback(()=>{if(D.current){let{width:K}=OV(D.current);z(K)}},[D,z]);return PW.useLayoutEffect(Z,[Z,B.columns,...Q||[]]),M0(JA,{width:"100%",height:"100%",ref:D,children:A(J)})}R6();g6();var RB=hA(D8(),1),Z51=Object.freeze({query:"",options:[]});function _7A(A){let[Q,B]=RB.useState(Z51),[D,J]=RB.useState(""),[z,Z]=RB.useState(null),K=RB.useRef(0),[G]=RB.useState(()=>new y8),X=RB.useCallback((H)=>{if(J(H),H!==z)Z(null)},[z]),Y=RB.useCallback(()=>Z(D),[D]),U=RB.useCallback((H)=>{G.next(H)},[G]),F=RB.useMemo(()=>D.startsWith("@")?D.slice(1):null,[D]);RB.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)j1.error("Completion request failed",{query:F,error:W}),B(Z51)}})()}else B(Z51)},[D,z,A,F]),RB.useEffect(()=>{return()=>{G.complete()}},[G]);let E=RB.useMemo(()=>{if(F===null)return!1;return F.startsWith(Q.query)&&z!==D&&D!==""},[Q,D,z,F]);return{completions:E?Q:Z51,hasCompletions:E?Q.options.length>0:!1,selectCompletion:U,completionSelected:G,onWordHighlight:X,ignore:Y}}var K51=hA(D8(),1);function S7A(A){let Q=K51.useMemo(()=>process.cwd().replace(process.env.HOME||"","~"),[]);K51.useEffect(()=>{if(A)process.stdout.write(`\x1B]0;amp - ${A} - ${Q}\x07`);return()=>{process.stdout.write("\x1B]0;\x07")}},[A,Q])}var G51=hA(D8(),1);function $7A(){return M0(JA,{flexDirection:"column",alignItems:"center",justifyContent:"center",minHeight:3,marginLeft:4,children:M0(JA,{children:M0(HA,{color:"green",bold:!0,children:"Welcome to Amp"})})})}function v7A(){let[A,Q]=G51.useState(0),B=["Amp","AMP","AmP","amP","aMP","AMp"];return G51.useEffect(()=>{let D=setInterval(()=>{Q((J)=>(J+1)%B.length)},50);return()=>clearInterval(D)},[B.length]),M0(JA,{flexDirection:"column",alignItems:"flex-start",justifyContent:"center",minHeight:3,marginLeft:4,children:M0(JA,{children:V6(HA,{color:"green",bold:!0,children:["Welcome to ",B[A]]})})})}var L12=200;function k7A({threadService:A,history:Q,worker:B,sendToolConfirmation:D,sendUserMessage:J,exit:z,cancel:Z,ampURL:K,commands:G,fuzzyClient:X}){let[Y]=s41(),{viewState:U,subagents:F,subagentActiveTools:E,transcript:H,streamingAssistantMessage:w,todosList:I,mainThread:W}=X5A(A,B),M=w5.useMemo(()=>w?H.items.concat({id:"streaming-assistant",type:"message",message:w}):H.items,[w,H.items]),N=W?.title||"Untitled",O=w5.useMemo(()=>W?Bm1(W):void 0,[W]);S7A(W?.title);let L=w5.useRef(new y8),[T,R]=w5.useState({baseView:"running",rerendering:!1,resizeCounter:0,dismissedEphemeralError:null,slashCommandQuery:null,uiError:null}),j=w5.useRef(null),P=w5.useRef(null),[$,S]=m5A(),g=w5.useCallback((B1)=>{R((K1)=>({...K1,slashCommandQuery:B1}))},[]),u=w5.useMemo(()=>{if(T.slashCommandQuery===null)return[];return G.query(T.slashCommandQuery)},[T.slashCommandQuery,G]),_=w5.useCallback(()=>{R((B1)=>({...B1,rerendering:!0})),process.stdout.write("\x1B[2J\x1B[3J\x1B[H"),L.current.next()},[R,L]),k=w5.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=w5.useCallback((B1)=>{let K1=[{type:"text",text:B1}];if($.imageAttachments.length>0)K1.push(...$.imageAttachments);S({type:"clear"}),J(K1)},[S,$.imageAttachments,J]);w5.useEffect(()=>{return process.stdout.on("resize",_),()=>{process.stdout.off("resize",_)}},[_]),w5.useEffect(()=>{let B1=L.current.pipe(ND(L12)).subscribe(()=>{R((K1)=>({...K1,rerendering:!1,resizeCounter:K1.resizeCounter+1}))});return()=>{B1.unsubscribe()}},[L,R]),w5.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=w5.useMemo(()=>L5A(v),[v]),d=_7A(X),{hasCompletions:l,completions:D1,selectCompletion:n}=d,z1=w5.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(B1==="view-diff"){j5A(h).catch((K1)=>{j1.error("failed to handle view-diff action:",K1)});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:j1.warn("action:",{action:B1})}},L1=()=>{R((B1)=>({...B1,uiError:null}))};pE((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 M0(c5A,{threadName:N,messages:B1,onExit:()=>R((K1)=>({...K1,baseView:"running"}))})}return V6(JA,{flexDirection:"column",minHeight:"100%",flexGrow:1,height:r,children:[M0(k41,{items:J1,children:(B1,K1)=>{if(B1.type==="welcome")return M0($7A,{},"welcome");let Y1=K1===0?0:1;return B1.type==="message"?M0(j7A,{message:B1.message,marginTop:Y1},B1.id):M0(C5A,{toolUse:B1.toolUse,toolResult:B1.toolResult,marginTop:Y1},B1.id)}},s),V6(JA,{flexDirection:"column",marginTop:J1.length>1?1:0,children:[w&&M0(T7A,{message:w}),M0(I5A,{activeTools:m,subagents:F}),V6(JA,{flexDirection:a?"row-reverse":"column",children:[I.length>0&&M0(JA,{ref:P,flexGrow:0,flexShrink:0,width:a?"50%":"100%",children:M0(P7A,{todos:I})}),Q1==="ui-error"&&T.uiError?M0(r41,{title:jf1(T.uiError).title,description:jf1(T.uiError).description,options:[{value:"dismiss",label:"Dismiss"}],onSelect:L1}):Q1==="ephemeral-error"&&z1?M0(p5A,{error:z1,onResponse:Z1,ampURL:K}):Q1==="confirming"&&h?M0(_5A,{currentConfirmation:h,onConfirmationResponse:G1}):Q1==="help"?M0(if1,{dependencies:[I],children:(B1)=>M0(a5A,{width:B1})}):M0(JA,{flexGrow:1,borderStyle:"round",paddingX:1,children:M0(if1,{dependencies:[I],children:(B1)=>M0(t5A,{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})})})]}),M0(G7A,{view:Q1,threadViewState:U,threadTokenUsage:O,hasCompletedMessages:H.items.length>0}),M0(R12,{commands:u,onSelect:k}),M0(T12,{completions:D1.options,onSelect:n})]})]})}function R12({commands:A,onSelect:Q}){let D=w5.useMemo(()=>A.slice(0,10).map((J)=>({value:J.name,label:J.name,description:J.description})),[A]);return M0(JA,{marginBottom:1,children:M0(RV,{title:"Select command:",options:D,onSelect:Q})})}function T12({completions:A,onSelect:Q}){let B=Math.min(10),D=w5.useMemo(()=>A.slice(0,B).map((z)=>({value:z,label:z})),[A,B]),J=w5.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 M0(JA,{marginBottom:1,children:M0(RV,{title:"Insert file name:",options:D,onSelect:J})})}function f7A(A){let{worker:Q,threadID:B,settingsStorage:D,pipedInput:J,workerDeps:z,configService:Z,fuzzyServer:K}=A,[G,X]=jX.useState(!1);Z5A();let Y=jX.useCallback((I,W,M,N)=>{return j12(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}=Rf1(),E=jX.useCallback(()=>{bZ.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 M0(v7A,{});let w=new Pf1;return M0(e4A,{configService:Z,children:M0(k7A,{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 j12(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)=>{j1.error("Failed to update allowlist",Y)})});let G={type:"user:tool-input",toolUse:A,value:{accepted:Q||K}};if(D)(await bZ.getOrCreateForThread(Z,D)).handle(G);else z.handle(G)}global.React=af1.default;function y7A(A){return W0.level=1,Lf1(af1.default.createElement(f7A,{...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(`
|
4665
4665
|
`),A.stdout.write(`${W0.dim("Thread:")} ${Z}
|
4666
4666
|
`),A.stdout.write(`${W0.dim("Continue this thread with:")} amp threads continue ${B}
|
4667
|
-
`)}})}var of1=sf1.join(Gp0||sf1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");async function tf1(A){try{await y12(sf1.dirname(of1),{recursive:!0}),await g12(of1,A,"utf-8")}catch(Q){j1.debug("Failed to save last thread ID",Q)}}async function m7A(){try{return(await b12(of1,"utf-8")).trim()}catch(A){return null}}async function x12(A){let Q=await SQ(`/api/threads/${A}`);if(!Q.ok){let B=await Q.text();if(Q.status===404||B.includes("not found"))throw new eJ(LK.threadNotFound(A));throw new eJ(`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 l7A=process.env.TERMINAL_EMULATOR?.includes("JetBrains")??!1,u7A=[{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??GW,description:`Custom settings file path (overrides the default location ${GW})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(j1).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:l7A,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}],p7A=(A)=>("deprecated"in A)&&A.deprecated===!0,h12=(A)=>("hidden"in A)&&A.hidden===!0,m12=(A)=>("default"in A),u12=(A)=>("default"in A)?A.default:void 0;function p12(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 eJ(LK.unknownCommand(B),1,Z)}}async function RS(A,Q){Ym1("0.0.
|
4667
|
+
`)}})}var of1=sf1.join(Gp0||sf1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");async function tf1(A){try{await y12(sf1.dirname(of1),{recursive:!0}),await g12(of1,A,"utf-8")}catch(Q){j1.debug("Failed to save last thread ID",Q)}}async function m7A(){try{return(await b12(of1,"utf-8")).trim()}catch(A){return null}}async function x12(A){let Q=await SQ(`/api/threads/${A}`);if(!Q.ok){let B=await Q.text();if(Q.status===404||B.includes("not found"))throw new eJ(LK.threadNotFound(A));throw new eJ(`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 l7A=process.env.TERMINAL_EMULATOR?.includes("JetBrains")??!1,u7A=[{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??GW,description:`Custom settings file path (overrides the default location ${GW})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(j1).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:l7A,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}],p7A=(A)=>("deprecated"in A)&&A.deprecated===!0,h12=(A)=>("hidden"in A)&&A.hidden===!0,m12=(A)=>("default"in A),u12=(A)=>("default"in A)?A.default:void 0;function p12(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 eJ(LK.unknownCommand(B),1,Z)}}async function RS(A,Q){Ym1("0.0.1753749023-g271ffc");let B=Q.settingsFile;j1.info("Using settings file",{settingsFile:B});let D=N$1(Qp()),J=Ap({settingsFile:B}),z=IB1({storage:J,secretStorage:D,workspaceRoots:UA.of([d6.file(process.cwd())]),defaultAmpURL:A.ampURL}),Z=Hv(),K=await Tu(Z),G=Yr1({configService:z,toolService:K});try{await G.initialized}catch(T){j1.warn("Failed to wait for MCP servers, continuing anyway:",T)}let X=await C6($2);if(Q.dangerouslyAllowAll)X.settings.dangerouslyAllowAll=!0;if(Q.jetbrains){if(X.settings["jetbrains.enabled"]=!0,Di.subscribe((R)=>{j1.info("jetbrains-status",R)}),await RH(),!await Yc1())if(l7A)WQ("JetBrains integration failed. Try again with `amp --no-jetbrains` or see setup: https://ampcode.com/manual#jetbrains");else WQ("Cannot connect to JetBrains IDE. Check setup: https://ampcode.com/manual#jetbrains")}let Y=X.settings["experimental.reviewTool"]??!1,U=X.settings["experimental.tools"]??[];w_1(K,!1,Y,U);let F,E;if(!A.executeMode)F=new Qk1(X.settings,process.cwd()),await F.start(),E=Z8A(F,process.cwd());else F=new class{async start(){}async query(){return[]}dispose(){}},E={[Symbol.dispose]:()=>{}};if(!await D.get("apiKey",A.ampURL)){if(A5.write(`No API key found. Starting login flow...
|
4668
4668
|
`),!await c12(A,D))process.exit(1)}let H=Or1(),w=new kX1(H),I=new SX1(H),W=new FF1(w),M=Q.notifications!==void 0?Q.notifications:!A.executeMode,N=vu0({playNotificationSound:async(T)=>{if(M)$u0(T)},windowFocused:()=>Promise.resolve(!1),threadService:w,notifyForSubagents:!1});j1.info("Starting Amp background services");let O=B90({threadService:w,threadHistoryService:I,isExtensionDevelopment:!1}),L={configService:z,toolService:K,mcpService:G,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 c12(A,Q){if(!A.executeMode){if(await d91("Would you like to log in to Amp?",["(y)es","(n)o"])!="y")return A5.write(`Login cancelled. Run the command again to retry.
|
4669
4669
|
`),!1}return await i7A(A,Q)}async function i7A(A,Q){let B=f12(32).toString("hex"),D=await v8A(A.ampURL,B);A5.write(`If your browser doesn't open automatically, visit:
|
4670
4670
|
|
@@ -4678,7 +4678,7 @@ ${W0.blue.bold(D)}
|
|
4678
4678
|
Login successful! You can now use the Amp CLI.
|
4679
4679
|
`),!0}catch(J){return l9.write(`
|
4680
4680
|
Login failed: ${J instanceof Error?J.message:String(J)}
|
4681
|
-
`),!1}}function d12(A){let Q=new Su().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)Dp(),process.exit(0);let Y=X.originalError??X;x_(Y)}),Q.option("-V, --version","output the version number",()=>{A5.write(`0.0.
|
4681
|
+
`),!1}}function d12(A){let Q=new Su().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)Dp(),process.exit(0);let Y=X.originalError??X;x_(Y)}),Q.option("-V, --version","output the version number",()=>{A5.write(`0.0.1753749023-g271ffc (released 2025-07-29T00:34:12.238Z)
|
4682
4682
|
`),process.exit(0)}),Q.addHelpText("after",P8A()),Q.configureHelp({formatHelp:_8A}),Q.command("logout").description("Log out by removing stored API key").action(async()=>{let X=Bz(),Y=Qp();if(process.env.AMP_API_KEY)A5.write(`API key found in environment variable AMP_API_KEY, unset first before running 'amp logout'
|
4683
4683
|
`),process.exit(0);if(!await Y.get("apiKey",X.ampURL))A5.write(`Already logged out.
|
4684
4684
|
`),process.exit(0);await Y.set("apiKey","",X.ampURL),A5.write(`Successfully logged out.
|
@@ -4711,10 +4711,10 @@ Summary: ${L}
|
|
4711
4711
|
`),l9.write(`
|
4712
4712
|
`),l9.write(`Secrets have been automatically redacted, but please review the file before attaching
|
4713
4713
|
`),l9.write(`it to support requests. Learn more at https://ampcode.com/manual/appendix#support-bundles
|
4714
|
-
`),process.exit(0)}catch(U){WQ(U instanceof Error?U.message:String(U))}}),Q.addCommand(Z);let K=new Su("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(() => (h7A(),x7A)),{checkNpmUpdate:E}=await Promise.resolve().then(() => (XX1(),Lr1)),H="0.0.
|
4714
|
+
`),process.exit(0)}catch(U){WQ(U instanceof Error?U.message:String(U))}}),Q.addCommand(Z);let K=new Su("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(() => (h7A(),x7A)),{checkNpmUpdate:E}=await Promise.resolve().then(() => (XX1(),Lr1)),H="0.0.1753749023-g271ffc";if(U.version)l9.write(W0.blue(`Updating to version ${U.version}...
|
4715
4715
|
`)),await F(U.version),l9.write(W0.green(`✓ Successfully updated to version ${U.version}
|
4716
4716
|
`));else{l9.write(W0.blue(`Checking for updates...
|
4717
|
-
`));let w=await E("0.0.
|
4717
|
+
`));let w=await E("0.0.1753749023-g271ffc");if(!w.hasUpdate)l9.write(W0.green(`✓ Amp CLI is already up to date.
|
4718
4718
|
`)),process.exit(0);l9.write(W0.blue(`Updating to version ${w.latestVersion}...
|
4719
4719
|
`)),await F(w.latestVersion),l9.write(W0.green(`✓ Successfully updated to version ${w.latestVersion}
|
4720
4720
|
`))}process.exit(0)}catch(U){l9.write(W0.red("Error updating: ")+`${U instanceof Error?U.message:String(U)}
|
package/package.json
CHANGED