@sourcegraph/amp 0.0.1755650097-gdf36b1 → 0.0.1755662477-ge7315f

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.
Files changed (2) hide show
  1. package/dist/main.js +3 -3
  2. package/package.json +1 -1
package/dist/main.js CHANGED
@@ -5021,7 +5021,7 @@ allow ${z}${G?` ${G}`:""}`}let J={stdin:process.stdin,stdout:process.stdout,stde
5021
5021
  ${H}`;if(B==="pnpm"&&H.includes("Unable to find the global bin directory"))F+=`
5022
5022
 
5023
5023
  Hint: Try running "pnpm setup" to configure pnpm global directory, or use npm instead:
5024
- npm install -g @sourcegraph/amp`;G(new Error(F))}},error:(Z)=>{if(!Y)Y=!0,G(new Error(`Failed to spawn ${B}: ${Z.message}`))},complete:()=>{if(!Y)Y=!0,z()}})})}var ri1=ii1.join(v00||ii1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");function Yj(A,Q){let B={};if(A.getOptionValueSourceWithGlobals("dangerouslyAllowAll")==="cli")B.dangerouslyAllowAll=Q.dangerouslyAllowAll;if(A.getOptionValueSourceWithGlobals("tryGpt5")==="cli")B.gpt5=Q.tryGpt5;return B}var FC2=R6.union([R6.object({command:R6.string(),args:R6.array(R6.string()).optional(),env:R6.record(R6.string(),R6.string()).optional()}).strict(),R6.object({url:R6.string()}).strict()]),EC2=R6.record(R6.string(),FC2);async function ni1(A){try{await ZC2(ii1.dirname(ri1),{recursive:!0}),await UC2(ri1,A,"utf-8")}catch(Q){R1.debug("Failed to save last thread ID",Q)}}async function MC2(){try{return(await NVA(ri1,"utf-8")).trim()}catch(A){return null}}async function WC2(A){let Q;try{Q=JSON.parse(A)}catch(B){throw new Error(`Failed to parse --mcp-config as JSON: ${B instanceof Error?B.message:String(B)}`)}try{return EC2.parse(Q)}catch(B){if(B instanceof R6.ZodError){let J=B.issues.map((D)=>`${D.path.join(".")}: ${D.message}`).join(", ");throw new Error(`Invalid MCP server configuration: ${J}`)}throw new Error(`Failed to validate MCP server configuration: ${String(B)}`)}}function wC2(A,Q){return{...A,async get(B){if(B==="mcpServers"){let J=await A.get(B)||{},D={};if(typeof J==="object")for(let[z,G]of Object.entries(J))D[z]={...G,_target:"global"};for(let[z,G]of Object.entries(Q))D[z]={...G,_target:"workspace"};return D}return A.get(B)},async keys(){let B=await A.keys();if(!B.includes("mcpServers"))B.push("mcpServers");return B},[Symbol.dispose](){A[Symbol.dispose]()}}}async function IC2(A){let Q=await sJ(`/api/threads/${A}`);if(!Q.ok){let B=await Q.text();if(Q.status===404||B.includes("not found"))throw new uB(vX.threadNotFound(A));throw new uB(`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 MVA=[{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??fX,description:`Custom settings file path (overrides the default location ${fX})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(R1).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:hR(),description:(A)=>A?"Enable JetBrains integration. 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.":"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},{name:"mcpConfig",long:"mcp-config",type:"option",description:"JSON configuration or file path for MCP servers to merge with existing settings"},{name:"tryGpt5",long:"try-gpt5",type:"switch",default:!1,description:"Try GPT-5 as the primary agent model (limited time; see https://ampcode.com/news/gpt-5)"}],WVA=(A)=>("deprecated"in A)&&A.deprecated===!0,NC2=(A)=>("hidden"in A)&&A.hidden===!0,VC2=(A)=>("default"in A),OC2=(A)=>("default"in A)?A.default:void 0;function CC2(A,Q){let B=Q.args[0],J=Q.commands.map((z)=>z.name());if(B&&!B.includes(" ")&&B.length<30&&!/[./\\]/.test(B)){let z=J.filter((X)=>B.includes(X)||X.includes(B)),G="Run amp --help for a list of available commands.";if(z.length>0)G=`Did you mean: ${z.join(", ")}? Or run amp --help for all commands.`;throw new uB(vX.unknownCommand(B),1,G)}}function hX1(A){return{...A,getThreadEnvironment:oBA,createFileSystem:()=>Th,createFileChangeTrackerForThread:(Q)=>{let B=new _h(Th);return vD0(B,Th,Q)},generateThreadTitle:nA1,internalAPIClient:HK}}var si1=v6.file(HC2.homedir()),VVA=process.env.XDG_CONFIG_HOME?v6.file(process.env.XDG_CONFIG_HOME):k6.joinPath(si1,".config");async function qj(A,Q,B,J=!1){Kt1("0.0.1755650097-gdf36b1"),Yt1(Q.jetbrains);let D=gZ1({storage:A.settings,secretStorage:A.secrets,workspaceRoots:qA.of([v6.file(process.cwd())]),defaultAmpURL:A.ampURL,defaultCacheDirectory:Lp1,settingsOverrides:B,homeDir:si1,userConfigDir:VVA}),z=await A6(h2);R1.debug("Global configuration initialized",{hasCacheDirectory:!!z.settings.cacheDirectory,settingsKeys:Object.keys(z.settings)});let G=z11(gs()),X=Y40({configService:D,toolService:G});if(process.env.AMP_TOOLBOX)BD0(G,Th,z01);try{await X.initialized}catch(V){R1.warn("Failed to wait for MCP servers, continuing anyway:",V)}if(Q.jetbrains){process.env.JB_DIAGNOSTICS="true";try{R1.debug("ide-client",{terminalEmulator:process.env.TERMINAL_EMULATOR}),await DK.start()}catch(V){let L=V instanceof Error?V.message:String(V);LD(`Failed to connect to JetBrains IDE: ${L}`)}}let K=z.settings["experimental.reviewTool"]??!1,Y=z.settings["experimental.tools"]??[],q=!!process.env.JB_DIAGNOSTICS;c2A(G,!1,K,Y,q);let Z;if(!A.executeMode)Z=new iz1(process.cwd(),{},!0);else Z=new class extends iz1{async start(){}async query(){return[]}getStats(){return{state:"unstarted",stats:[]}}dispose(){}};if(!await A.secrets.get("apiKey",A.ampURL)){if(P4.write(`No API key found. Starting login flow...
5024
+ npm install -g @sourcegraph/amp`;G(new Error(F))}},error:(Z)=>{if(!Y)Y=!0,G(new Error(`Failed to spawn ${B}: ${Z.message}`))},complete:()=>{if(!Y)Y=!0,z()}})})}var ri1=ii1.join(v00||ii1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");function Yj(A,Q){let B={};if(A.getOptionValueSourceWithGlobals("dangerouslyAllowAll")==="cli")B.dangerouslyAllowAll=Q.dangerouslyAllowAll;if(A.getOptionValueSourceWithGlobals("tryGpt5")==="cli")B.gpt5=Q.tryGpt5;return B}var FC2=R6.union([R6.object({command:R6.string(),args:R6.array(R6.string()).optional(),env:R6.record(R6.string(),R6.string()).optional()}).strict(),R6.object({url:R6.string()}).strict()]),EC2=R6.record(R6.string(),FC2);async function ni1(A){try{await ZC2(ii1.dirname(ri1),{recursive:!0}),await UC2(ri1,A,"utf-8")}catch(Q){R1.debug("Failed to save last thread ID",Q)}}async function MC2(){try{return(await NVA(ri1,"utf-8")).trim()}catch(A){return null}}async function WC2(A){let Q;try{Q=JSON.parse(A)}catch(B){throw new Error(`Failed to parse --mcp-config as JSON: ${B instanceof Error?B.message:String(B)}`)}try{return EC2.parse(Q)}catch(B){if(B instanceof R6.ZodError){let J=B.issues.map((D)=>`${D.path.join(".")}: ${D.message}`).join(", ");throw new Error(`Invalid MCP server configuration: ${J}`)}throw new Error(`Failed to validate MCP server configuration: ${String(B)}`)}}function wC2(A,Q){return{...A,async get(B){if(B==="mcpServers"){let J=await A.get(B)||{},D={};if(typeof J==="object")for(let[z,G]of Object.entries(J))D[z]={...G,_target:"global"};for(let[z,G]of Object.entries(Q))D[z]={...G,_target:"workspace"};return D}return A.get(B)},async keys(){let B=await A.keys();if(!B.includes("mcpServers"))B.push("mcpServers");return B},[Symbol.dispose](){A[Symbol.dispose]()}}}async function IC2(A){let Q=await sJ(`/api/threads/${A}`);if(!Q.ok){let B=await Q.text();if(Q.status===404||B.includes("not found"))throw new uB(vX.threadNotFound(A));throw new uB(`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 MVA=[{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??fX,description:`Custom settings file path (overrides the default location ${fX})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(R1).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:hR(),description:(A)=>A?"Enable JetBrains integration. 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.":"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},{name:"mcpConfig",long:"mcp-config",type:"option",description:"JSON configuration or file path for MCP servers to merge with existing settings"},{name:"tryGpt5",long:"try-gpt5",type:"switch",default:!1,description:"Try GPT-5 as the primary agent model (limited time; see https://ampcode.com/news/gpt-5)"}],WVA=(A)=>("deprecated"in A)&&A.deprecated===!0,NC2=(A)=>("hidden"in A)&&A.hidden===!0,VC2=(A)=>("default"in A),OC2=(A)=>("default"in A)?A.default:void 0;function CC2(A,Q){let B=Q.args[0],J=Q.commands.map((z)=>z.name());if(B&&!B.includes(" ")&&B.length<30&&!/[./\\]/.test(B)){let z=J.filter((X)=>B.includes(X)||X.includes(B)),G="Run amp --help for a list of available commands.";if(z.length>0)G=`Did you mean: ${z.join(", ")}? Or run amp --help for all commands.`;throw new uB(vX.unknownCommand(B),1,G)}}function hX1(A){return{...A,getThreadEnvironment:oBA,createFileSystem:()=>Th,createFileChangeTrackerForThread:(Q)=>{let B=new _h(Th);return vD0(B,Th,Q)},generateThreadTitle:nA1,internalAPIClient:HK}}var si1=v6.file(HC2.homedir()),VVA=process.env.XDG_CONFIG_HOME?v6.file(process.env.XDG_CONFIG_HOME):k6.joinPath(si1,".config");async function qj(A,Q,B,J=!1){Kt1("0.0.1755662477-ge7315f"),Yt1(Q.jetbrains);let D=gZ1({storage:A.settings,secretStorage:A.secrets,workspaceRoots:qA.of([v6.file(process.cwd())]),defaultAmpURL:A.ampURL,defaultCacheDirectory:Lp1,settingsOverrides:B,homeDir:si1,userConfigDir:VVA}),z=await A6(h2);R1.debug("Global configuration initialized",{hasCacheDirectory:!!z.settings.cacheDirectory,settingsKeys:Object.keys(z.settings)});let G=z11(gs()),X=Y40({configService:D,toolService:G});if(process.env.AMP_TOOLBOX)BD0(G,Th,z01);try{await X.initialized}catch(V){R1.warn("Failed to wait for MCP servers, continuing anyway:",V)}if(Q.jetbrains){process.env.JB_DIAGNOSTICS="true";try{R1.debug("ide-client",{terminalEmulator:process.env.TERMINAL_EMULATOR}),await DK.start()}catch(V){let L=V instanceof Error?V.message:String(V);LD(`Failed to connect to JetBrains IDE: ${L}`)}}let K=z.settings["experimental.reviewTool"]??!1,Y=z.settings["experimental.tools"]??[],q=!!process.env.JB_DIAGNOSTICS;c2A(G,!1,K,Y,q);let Z;if(!A.executeMode)Z=new iz1(process.cwd(),{},!0);else Z=new class extends iz1{async start(){}async query(){return[]}getStats(){return{state:"unstarted",stats:[]}}dispose(){}};if(!await A.secrets.get("apiKey",A.ampURL)){if(P4.write(`No API key found. Starting login flow...
5025
5025
  `),!await LC2(A))process.exit(1)}let H=HD0(),F=new JN1(H),E=new AN1(H),M=new MO1(F),W=Q.notifications!==void 0?Q.notifications:!A.executeMode,w=d2A({playNotificationSound:async(V)=>{if(W){if(l2A(V),!(J?Nl1():BMA())&&z.settings["notifications.system.enabled"]!==!1){if(V==="idle")process.stdout.write("\x1B]777;notify;Amp;Agent is ready\x1B\\");else if(V==="requires-user-input")process.stdout.write("\x1B]777;notify;Amp;Waiting for approval\x1B\\")}}},windowFocused:()=>Promise.resolve(!1),threadService:F});R1.info("Starting Amp background services");let I=bF0({threadService:F,threadHistoryService:E,isExtensionDevelopment:!1}),N={configService:D,toolService:G,mcpService:X,threadService:F,threadHistoryService:E,threadSummaryService:M,threadSyncService:I,threadStorage:H,secretStorage:A.secrets,settingsStorage:A.settings,fuzzyServer:Z,notificationService:w};return{...N,async dispose(){await N.mcpService.dispose(),N.configService.unsubscribe(),N.toolService.dispose(),N.fuzzyServer.dispose(),N.threadSyncService.dispose(),N.settingsStorage[Symbol.dispose]()}}}async function LC2(A){if(!A.executeMode){if(await JG1("Would you like to log in to Amp?",["(y)es","(n)o"])!="y")return P4.write(`Login cancelled. Run the command again to retry.
5026
5026
  `),!1}return await OVA(A)}async function OVA(A){let Q=qC2(32).toString("hex"),B=await yEA(A.ampURL,Q);P4.write(`If your browser doesn't open automatically, visit:
5027
5027
 
@@ -5035,7 +5035,7 @@ ${G0.blue.bold(B)}
5035
5035
  Login successful! You can now use the Amp CLI.
5036
5036
  `),!0}catch(J){return Q7.write(`
5037
5037
  Login failed: ${J instanceof Error?J.message:String(J)}
5038
- `),!1}}function RC2(A){let Q=A.outputHelp.bind(A);A.outputHelp=function(B){let J="",D=this.configureOutput();if(this.configureOutput({writeOut:(z)=>{J+=z},writeErr:(z)=>{J+=z}}),typeof B==="function")B(J);else Q(B);this.configureOutput(D),hEA(J)}}function CVA(A){RC2(A);for(let Q of A.commands)CVA(Q)}function jC2(){let A=new RJ1().name("amp").description("AI-powered coding assistant").option("--visibility <visibility>","Set thread visibility (private, public, team)").configureOutput({writeErr:()=>{}});A.exitOverride((X)=>{if(X.code==="commander.help"||X.code==="commander.version"||X.exitCode===0)Mf(),process.exit(0);let K=X.originalError??X;La(K)}),A.option("-V, --version","output the version number",()=>{P4.write(`0.0.1755650097-gdf36b1 (released 2025-08-20T00:40:07.784Z)
5038
+ `),!1}}function RC2(A){let Q=A.outputHelp.bind(A);A.outputHelp=function(B){let J="",D=this.configureOutput();if(this.configureOutput({writeOut:(z)=>{J+=z},writeErr:(z)=>{J+=z}}),typeof B==="function")B(J);else Q(B);this.configureOutput(D),hEA(J)}}function CVA(A){RC2(A);for(let Q of A.commands)CVA(Q)}function jC2(){let A=new RJ1().name("amp").description("AI-powered coding assistant").option("--visibility <visibility>","Set thread visibility (private, public, team)").configureOutput({writeErr:()=>{}});A.exitOverride((X)=>{if(X.code==="commander.help"||X.code==="commander.version"||X.exitCode===0)Mf(),process.exit(0);let K=X.originalError??X;La(K)}),A.option("-V, --version","output the version number",()=>{P4.write(`0.0.1755662477-ge7315f (released 2025-08-20T04:05:41.918Z)
5039
5039
  `),process.exit(0)}),A.addHelpText("after",SEA()),A.configureHelp({formatHelp:vEA}),A.command("logout").description("Log out by removing stored API key").action(async(X,K)=>{let Y=K.optsWithGlobals(),q=await kZ(Y);await PC2(q)}),A.command("login").description("Log in to Amp").addHelpText("after","If AMP_URL is set during login, it will be persisted to global settings for future CLI invocations, though AMP_URL will continue to take precedence.").action(async(X,K)=>{let Y=K.optsWithGlobals(),q=await kZ(Y);await $C2(q)});let Q=A.command("threads").alias("t").summary("Manage threads").description("Thread management commands. When no subcommand is provided, defaults to listing threads.").action(async(X,K)=>{let Y=K.optsWithGlobals(),q=await kZ(Y);await IVA(Y,q,K)});Q.command("new").alias("n").summary("Create a new thread").description("Create a new thread and print its ID. The thread will be empty. You can set the visibility using the --visibility option.").option("--visibility <visibility>","Set thread visibility (private, public, team)").action(async(X,K)=>{let Y=K.optsWithGlobals(),q=await kZ(Y);await bC2(Y,q,K)}),Q.command("continue [threadId]").alias("c").summary("Continue an existing thread").description("Continue an existing thread by resuming the conversation. If no thread ID is provided, the most recently used thread will be continued.").option("--pick","Pick a thread interactively from a list").action(async(X,K,Y)=>{let q=Y.optsWithGlobals(),Z=await kZ(q);if(K.pick){gZ1({storage:Z.settings,secretStorage:Z.secrets,workspaceRoots:qA.of([v6.file(process.cwd())]),defaultAmpURL:Z.ampURL,homeDir:si1,userConfigDir:VVA});let H=await gC2();if(H)await wVA(q,Z,H,Y);else process.exit(0)}else await wVA(q,Z,X,Y)}),Q.command("fork [threadId]").alias("f").summary("Fork an existing thread").description("Create a new thread by forking an existing one. This copies the conversation history up to the current point and creates a new thread where you can explore different directions. If no thread ID is provided, the most recently used thread will be forked.").action(async(X,K,Y)=>{let q=Y.optsWithGlobals(),Z=await kZ(q);await yC2(q,Z,X,Y)}),Q.command("list").alias("l").summary("List all threads").description("List all your threads with their IDs, names, and last modified times.").action(async(X,K)=>{let Y=K.optsWithGlobals(),q=await kZ(Y);await IVA(Y,q,K)}),Q.command("share <threadId>").summary("Share a thread").description("Change thread visibility (private, public, team) or share with Amp support for debugging. Use --visibility to change who can access the thread, or --support to share with the Amp team for troubleshooting.").alias("s").option("--visibility <visibility>","Set thread visibility (private, public, team)").option("--support","Share thread with Amp support for debugging").action(async(X,K,Y)=>{let q=Y.optsWithGlobals(),Z=await kZ(q);await fC2(q,Z,X,Y,K.support)}),Q.command("compact <threadId>").alias("co").summary("Compact a thread").description("Compact a thread by creating a summary of the conversation history. This reduces the thread size while preserving the key information and context, making it more token efficient for future use.").action(async(X,K,Y)=>{let q=Y.optsWithGlobals(),Z=await kZ(q);await kC2(q,Z,X,Y)}),eEA(A,async(X,K)=>{let Y=await kZ(K),q=Yj(X,K),Z=await qj(Y,K,q,!1);return{context:Y,mcpService:Z.mcpService,toolService:Z.toolService,cleanupTerminal:Mf,dispose:Z.dispose.bind(Z)}}),iEA(A);function B(X,K,Y){let Z=typeof X.description==="string"?X.description:Y===void 0?X.description(!0):X.description(Y),H=new jJ1(K,Z),F=OC2(X);if(F)H.default(F);return H.hidden=NC2(X)||WVA(X),H}for(let X of MVA)switch(X.type){case"flag":{A.addOption(B(X,`--${X.long}`)),A.addOption(B(X,`--no-${X.long}`,!1));break}case"switch":{A.addOption(B(X,`--${X.long}`,!0));break}default:{A.addOption(B(X,`--${X.long} <value>`));break}}let J=new jJ1("-x, --execute [message]","Use execute mode, optionally with user message. In execute mode, agent will execute provided prompt (either as argument, or via stdin). Only last assistant message is printed. Enabled automatically when redirecting stdout.").default(!1);A.addOption(J);let D=new jJ1("--tui","Launch experimental TUI interface").hideHelp();A.addOption(D),A.action(async(X,K)=>{let Y=X,q=await kZ(Y);if(Object.keys(Y).forEach((Z)=>{if(Z==="format"&&X.format==="jsonl"){Q7.write(G0.yellow(`jsonl format is deprecated. Version "0.0.1753194394-g45962a" is required to use jsonl format.
5040
5040
  `));return}let H=MVA.find((F)=>F.name===Z);if(H&&WVA(H)&&!VC2(H))Q7.write(G0.yellow(`Warning: '--${Z}' flag is deprecated
5041
5041
  `))}),K.args.length>0)CC2(q,K);await LVA(q,Y,K)});let z=new RJ1("doctor").summary("Generate support bundle").description("Generate a support bundle for troubleshooting issues. This collects logs, configuration, and system information into a file that can be shared with Amp support for debugging.").option("--output-dir <path>","Directory to save the support bundle",process.cwd()).option("--include-full-logs","Include full log history",!1).allowUnknownOption(!1).action(async(X)=>{await vC2(X.outputDir,X.includeFullLogs)});A.addCommand(z);let G=new RJ1("update").summary("Update Amp CLI").description("Update Amp CLI to the latest version. You can specify a particular version to install, or leave blank to get the latest stable release.").option("--version <version>","Update to a specific version").allowUnknownOption(!1).action(async(X)=>{await SC2(X.version)});return A.addCommand(G),CVA(A),A}async function xX1(A,Q,B){let{thread:J,visibility:D}=B,z=J?.id??SF(),G=hX1(Q);if(J)await Q.threadStorage.set(z,J);let X=await aD.getOrCreateForThread(G,z);if(D)await Q.threadSyncService.updateThreadMeta(z,tz1(D));let K=Q.threadService.observe(z).subscribe(async(q)=>{if(VQ(q,"assistant"))await ni1(z),K.unsubscribe()});await X.resume();let Y=await A6(h2);if(KO0(X.thread))await XO0(X.thread);return X}async function LVA(A,Q,B){let J=process.stdin,D=oz1(Q);if(D instanceof Error)LD(D.message);let z,G=null;if(typeof Q.execute==="string"){z=Q.execute;let W=(await El1()).trimEnd();if(W)G=W}else z=(await El1()).trimEnd();if(A.executeMode&&z==="")throw new uB("User message must be provided through stdin or as argument when using execute mode",1,`Either pass a message as an argument: amp -x "your message"
@@ -5055,7 +5055,7 @@ Or pipe via stdin: echo "your message" | amp -x`);if(z!==""&&!A.executeMode&&typ
5055
5055
  `);process.exit(0)}async function SC2(A){try{if(A)Q7.write(G0.blue(`Updating to version ${A}...
5056
5056
  `)),await qd1(A),Q7.write(G0.green(`✓ Successfully updated to version ${A}
5057
5057
  `));else{Q7.write(G0.blue(`Checking for updates...
5058
- `));let Q=await Z01("0.0.1755650097-gdf36b1");if(!Q.hasUpdate)Q7.write(G0.green(`✓ Amp CLI is already up to date.
5058
+ `));let Q=await Z01("0.0.1755662477-ge7315f");if(!Q.hasUpdate)Q7.write(G0.green(`✓ Amp CLI is already up to date.
5059
5059
  `)),process.exit(0);Q7.write(G0.blue(`Updating to version ${Q.latestVersion}...
5060
5060
  `)),await qd1(Q.latestVersion),Q7.write(G0.green(`✓ Successfully updated to version ${Q.latestVersion}
5061
5061
  `))}process.exit(0)}catch(Q){LD(Q instanceof Error?Q.message:String(Q))}}async function vC2(A,Q){try{Q7.write(G0.green("Generating Amp support bundle...")+`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sourcegraph/amp",
3
- "version": "0.0.1755650097-gdf36b1",
3
+ "version": "0.0.1755662477-ge7315f",
4
4
  "description": "CLI for Amp, an agentic coding tool in research preview from Sourcegraph.",
5
5
  "homepage": "https://ampcode.com/",
6
6
  "author": {