makecoder 4.0.60 → 4.0.65
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/cc.mjs +4 -4
- package/dist/coder.js +72 -70
- package/dist/darwin-arm64/cc.js +4 -4
- package/dist/darwin-x64/cc.js +4 -4
- package/dist/linux-x64/cc.js +4 -4
- package/dist/win32-x64/cc.js +4 -4
- package/package.json +4 -4
package/dist/cc.mjs
CHANGED
|
@@ -20,13 +20,13 @@ import{createRequire as vP5}from"node:module";var MP5=Object.create;var{getProto
|
|
|
20
20
|
Object.assign(A, {
|
|
21
21
|
post(...args) {
|
|
22
22
|
const [url, payload, ...remainArgs] = args;
|
|
23
|
-
const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.0.
|
|
23
|
+
const patchedUrl = url + (url.includes('?') ? '&' : '?') + 'app=codev-cli' + '&version=4.0.65' + '&session_id=' + I8() + (process.env.SPACE_ID ? '&space_id=' + process.env.SPACE_ID : '');
|
|
24
24
|
if (process.env.CODER_APIKEY) {
|
|
25
25
|
const headerValues = payload.headers.values;
|
|
26
26
|
headerValues.set('AUTHORIZATION', `Bearer ${process.env.CODER_APIKEY}`)
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
payload.headers.values.set('X-Coder-Version', '4.0.
|
|
29
|
+
payload.headers.values.set('X-Coder-Version', '4.0.65');
|
|
30
30
|
payload.headers.values.set('X-Coder-Platform', process.platform);
|
|
31
31
|
payload.headers.values.set('X-Coder-Arch', process.arch);
|
|
32
32
|
|
|
@@ -4082,7 +4082,7 @@ If called outside an EnterWorktree session, the tool is a **no-op**: it reports
|
|
|
4082
4082
|
- If a tmux session was attached to the worktree: killed on \`remove\`, left running on \`keep\` (its name is returned so the user can reattach)
|
|
4083
4083
|
- Once exited, EnterWorktree can be called again to create a fresh worktree
|
|
4084
4084
|
`}function TvK({action:q}){return q??""}function VvK(q,K,_){let z=q.action==="keep"?"Kept worktree":"Removed worktree";return ST.createElement(_1,null,ST.createElement(u,{flexDirection:"column"},ST.createElement(T,null,z,q.worktreeBranch?ST.createElement(ST.Fragment,null," ","(branch ",ST.createElement(T,{bold:!0},q.worktreeBranch),")"):null),ST.createElement(T,{dimColor:!0},"Returned to ",q.originalCwd)))}var ST;var kvK=L(()=>{GK();g6();ST=K6(P6(),1)});async function NvK(q,K){let _=await w1("git",["-C",q,"status","--porcelain"]);if(_.code!==0)return null;let z=w7(_.stdout.split(`
|
|
4085
|
-
`),(O)=>O.trim()!=="");if(!K)return null;let Y=await w1("git",["-C",q,"rev-list","--count",`${K}..HEAD`]);if(Y.code!==0)return null;let A=parseInt(Y.stdout.trim(),10)||0;return{changedFiles:z,commits:A}}function EvK(q,K){if(l$(q),dL(q),K)pB6(q),KR6();zL(null),nc(),Lk(),aO.cache.clear?.()}var IjY,xjY,yvK;var LvK=L(()=>{p7();y8();OR6();C8();gq();PM();n7();Q4();Bc();NJ();$G();g4();tD();kvK();IjY=C6(()=>y.strictObject({action:y.enum(["keep","remove"]).describe('"keep" leaves the worktree and branch on disk; "remove" deletes both.'),discard_changes:y.boolean().optional().describe('Required true when action is "remove" and the worktree has uncommitted files or unmerged commits. The tool will refuse and list them otherwise.')})),xjY=C6(()=>y.object({action:y.enum(["keep","remove"]),originalCwd:y.string(),worktreePath:y.string(),worktreeBranch:y.string().optional(),tmuxSessionName:y.string().optional(),discardedFiles:y.number().optional(),discardedCommits:y.number().optional(),message:y.string()}));yvK=Iq({name:AI8,searchHint:"exit a worktree session and return to the original directory",maxResultSizeChars:1e5,async description(){return"Exits a worktree session created by EnterWorktree and restores the original working directory"},async prompt(){return vvK()},get inputSchema(){return IjY()},get outputSchema(){return xjY()},userFacingName(){return"Exiting worktree"},shouldDefer:!0,isDestructive(q){return q.action==="remove"},toAutoClassifierInput(q){return q.action},async validateInput(q){if(Sf6())return{result:!1,message:'ExitWorktree cannot be called from a subagent with a cwd override (isolation: "worktree" or explicit cwd) — it would mutate the parent session\'s process-wide working directory. This agent is already isolated; use Bash with `cd` for directory changes within it.',errorCode:5};let K=sO();if(!K)return{result:!1,message:"No-op: there is no active EnterWorktree session to exit. This tool only operates on worktrees created by EnterWorktree in the current session — it will not touch worktrees created manually or in a previous session. No filesystem changes were made.",errorCode:1};if(q.action==="remove"&&K.enteredExisting)return{result:!1,message:`This session entered an existing worktree (${K.worktreePath}); it was not created by EnterWorktree, so this tool will not remove it. Use action: "keep" to return to ${K.originalCwd}, then remove the worktree manually with \`git worktree remove\` if desired.`,errorCode:4};if(q.action==="remove"&&!q.discard_changes){let _=await NvK(K.worktreePath,K.originalHeadCommit);if(_===null)return{result:!1,message:`Could not verify worktree state at ${K.worktreePath}. Refusing to remove without explicit confirmation. Re-invoke with discard_changes: true to proceed — or use action: "keep" to preserve the worktree.`,errorCode:3};let{changedFiles:z,commits:Y}=_;if(z>0||Y>0){let A=[];if(z>0)A.push(`${z} uncommitted ${z===1?"file":"files"}`);if(Y>0)A.push(`${Y} ${Y===1?"commit":"commits"} on ${K.worktreeBranch??"the worktree branch"}`);return{result:!1,message:`Worktree has ${A.join(" and ")}. Removing will discard this work permanently. Confirm with the user, then re-invoke with discard_changes: true — or use action: "keep" to preserve the worktree.`,errorCode:2}}}return{result:!0}},renderToolUseMessage:TvK,renderToolResultMessage:VvK,async call(q){let K=sO();if(!K)throw Error("Not in a worktree session");let{originalCwd:_,worktreePath:z,worktreeBranch:Y,tmuxSessionName:A,originalHeadCommit:O}=K,w=c9()===Y7(),{changedFiles:$,commits:j}=await NvK(z,O)??{changedFiles:0,commits:0};if(q.action==="keep"){await hM6(),EvK(_,w),d("tengu_worktree_kept",{mid_session:!0,commits:j,changed_files:$});let X=A?` Tmux session ${A} is still running; reattach with: tmux attach -t ${A}`:"";return{data:{action:"keep",originalCwd:_,worktreePath:z,worktreeBranch:Y,tmuxSessionName:A,message:`Exited worktree. Your work is preserved at ${z}${Y?` on branch ${Y}`:""}. Session is now back in ${_}.${X}`}}}if(A)await AI6(A);await OI6(),EvK(_,w),d("tengu_worktree_removed",{source:"exit_tool",mid_session:!0,commits:j,changed_files:$});let H=[];if(j>0)H.push(`${j} ${j===1?"commit":"commits"}`);if($>0)H.push(`${$} uncommitted ${$===1?"file":"files"}`);let J=H.length>0?` Discarded ${H.join(" and ")}.`:"";return{data:{action:"remove",originalCwd:_,worktreePath:z,worktreeBranch:Y,discardedFiles:$,discardedCommits:j,message:`Exited and removed worktree at ${z}.${J} Session is now back in ${_}.`}}},mapToolResultToToolResultBlockParam({message:q},K){return{type:"tool_result",content:q,tool_use_id:K}}})});var hvK="Config";function Td8(q=!1){if(i7())return{value:null,label:"Default (recommended)",description:uT6(q)};let K=!KA();return{value:null,label:K?"Default":"Default (recommended)",description:`Use the default model (currently ${Hn6(hv())})${K?"":` · ${Yf(GQ)}`}`}}function ujY(){let q=!KA(),K=process.env.ANTHROPIC_DEFAULT_SONNET_MODEL;if(q&&K){let _=DP(K);return{value:"sonnet",label:process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_NAME??K,description:process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION??`Custom Sonnet model${_?" (1M context)":""}`,descriptionForModel:`${process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION??`Custom Sonnet model${_?" with 1M context":""}`} (${K})`}}}function mjY(){let q=!KA();return{value:q?ZO().sonnet46:"sonnet",label:"Sonnet",description:`Sonnet 4.6 · Best for everyday tasks${q?"":` · ${Yf(GQ)}`}`,descriptionForModel:"Sonnet 4.6 - best for everyday tasks. Generally recommended for most coding tasks"}}function BjY(){let q=!KA(),K=process.env.ANTHROPIC_DEFAULT_OPUS_MODEL;if(q&&K){let _=DP(K);return{value:"opus",label:process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_NAME??K,description:process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION??`Custom Opus model${_?" (1M context)":""}`,descriptionForModel:`${process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION??`Custom Opus model${_?" with 1M context":""}`} (${K})`}}}function pjY(){return{value:"opus",label:"Opus 4.1",description:"Opus 4.1 · Legacy",descriptionForModel:"Opus 4.1 - legacy version"}}function uvK(q=!1,K=!0){return{value:!KA()?ZO().opus46:"claude-opus-4-6",label:"Opus 4.6",description:`Opus 4.6 · Most capable for complex work${K?QZ8(q):""}`,descriptionForModel:"Opus 4.6 - most capable for complex work"}}function RvK(){let q=!KA();return{value:q?ZO().opus47:"opus",label:"Opus",description:`Opus 4.7 · Most capable for complex work${q?"":` · ${Yf(jB)}`}`,descriptionForModel:"Opus 4.7 - most capable for complex work"}}function SvK(){let q=!KA();return{value:q?ZO().sonnet46+"[1m]":"sonnet[1m]",label:"Sonnet (1M context)",description:`Sonnet 4.6 for long sessions${q?"":` · ${Yf(GQ)}`}`,descriptionForModel:"Sonnet 4.6 with 1M context window - for long sessions with large codebases"}}function mvK(q=!1,K=!0){return{value:!KA()?ZO().opus46+"[1m]":"claude-opus-4-6[1m]",label:"Opus 4.6 (1M context)",description:`Opus 4.6 for long sessions${K?QZ8(q):""}`,descriptionForModel:"Opus 4.6 with 1M context window - for long sessions with large codebases"}}function CvK(){let q=!KA();return{value:q?ZO().opus47+"[1m]":"opus[1m]",label:"Opus (1M context)",description:`Opus 4.7 for long sessions${q?"":` · ${Yf(jB)}`}`,descriptionForModel:"Opus 4.7 with 1M context window - for long sessions with large codebases"}}function FjY(){let q=!KA(),K=process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL;if(q&&K)return{value:"haiku",label:process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME??K,description:process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION??"Custom Haiku model",descriptionForModel:`${process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION??"Custom Haiku model"} (${K})`}}function BvK(){return{value:"haiku",label:"Haiku",description:`Haiku 4.5 · Fastest for quick answers${!KA()?"":` · ${Yf(_T1)}`}`,descriptionForModel:"Haiku 4.5 - fastest for quick answers. Lower cost but less capable than Sonnet 4.6."}}function gjY(){return{value:"haiku",label:"Haiku",description:`Haiku 3.5 for simple tasks${!KA()?"":` · ${Yf(KT1)}`}`,descriptionForModel:"Haiku 3.5 - faster and lower cost, but less capable than Sonnet. Use for simple tasks."}}function UjY(){return xT6()===ZO().haiku45?BvK():gjY()}function k37(){if(MK()==="pro"&&u8("tengu_gypsum_kite",!1))return" · ~2× usage vs Sonnet";return""}function pvK(q=!1){let K=!KA();return{value:"opus",label:"Opus",description:`Opus 4.7 · Most capable for complex work${k37()}${K||!q?"":` · ${Yf(jB)}`}`}}function bvK(){let q=!KA(),K=i7()?" · Billed as extra usage":"";return{value:"sonnet[1m]",label:"Sonnet (1M context)",description:`Sonnet 4.6 with 1M context${K}${!(K!==""&&!q)?"":` · ${Yf(GQ)}`}`}}function IvK(){let q=!KA(),K=i7()?" · Billed as extra usage":"",_=K!==""&&!q;return{value:"opus[1m]",label:"Opus (1M context)",description:`Opus 4.7 with 1M context${k37()}${K}${!_?"":` · ${Yf(jB)}`}`}}function V37(q=!1){let K=!KA();return{value:K?ZO().opus47+"[1m]":"opus[1m]",label:"Opus (1M context)",description:`Opus 4.7 with 1M context · Most capable for complex work${k37()}${K||!q?"":` · ${Yf(jB)}`}`,descriptionForModel:"Opus 4.7 with 1M context - most capable for complex work"}}function djY(){return{value:"opusplan",label:"Opus Plan Mode",description:"Use Opus in plan mode, Sonnet otherwise"}}function cjY(q=!1){if(i7()){if(ch()||Yq6()){let O=[Td8(q)];if(!YX()&&Ql())O.push(IvK());if(O.push(QjY),rt())O.push(bvK());return O.push(xvK),O}let A=[Td8(q)];if(rt())A.push(bvK());if(YX())A.push(V37(!1));else if(A.push(pvK(!1)),Ql())A.push(IvK());return A.push(xvK),A}if(KA()){let A=[Td8(q)];if(rt())A.push(SvK());if(YX())A.push(V37(!0));else if(A.push(RvK()),Ql())A.push(CvK());return A.push(BvK()),A}let K=[Td8(q)],_=ujY();if(_!==void 0)K.push(_);else if(K.push(mjY()),rt())K.push(SvK());let z=BjY();if(z!==void 0)K.push(z);else{if(K.push(pjY()),K.push(RvK()),Ql())K.push(CvK());if(K.push(uvK(q,!1)),Ql())K.push(mvK(q))}let Y=FjY();if(Y!==void 0)K.push(Y);else K.push(UjY());return K}function ljY(q){let K=o5(q);if(K.includes("claude-sonnet-4-6")||K.includes("claude-sonnet-4-5")||K.includes("claude-sonnet-4-")||K.includes("claude-3-7-sonnet")||K.includes("claude-3-5-sonnet")){let _=xW(Af());if(_)return{alias:"Sonnet",currentVersionName:_}}if(K.includes("claude-opus-4")){let _=xW(LE());if(_)return{alias:"Opus",currentVersionName:_}}if(K.includes("claude-haiku")||K.includes("claude-3-5-haiku")){let _=xW(xT6());if(_)return{alias:"Haiku",currentVersionName:_}}return null}function njY(q){let K=xW(q);if(!K)return null;let _=ljY(q);if(!_)return{value:q,label:K,description:q};if(K!==_.currentVersionName)return{value:q,label:K,description:`Newer version available · select ${_.alias} for ${_.currentVersionName}`};return{value:q,label:K,description:q}}function q_6(q=!1){const _cache=H8().additionalModelOptionsCache;if(_cache&&_cache.length>0)return _cache;let K=cjY(q),_=process.env.ANTHROPIC_CUSTOM_MODEL_OPTION;if(_&&!K.some((w)=>w.value===_))K.push({value:_,label:process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME??_,description:process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION??`Custom model (${_})`});for(let w of H8().additionalModelOptionsCache??[])if(!K.some(($)=>$.value===w.value))K.push(w);let{availableModels:z}=y7()??{};if(z)for(let w of z){let $=w.trim();if(!$.startsWith("anthropic.")||K.some((j)=>j.value===$))continue;K.push({value:$,label:$,description:"Custom model"})}let Y=null,A=Ub(),O=cB6();if(A!==void 0&&A!==null)Y=A;else if(O!==null)Y=O;if(Y===null||K.some((w)=>w.value===Y))return RM6(K);else if(Y==="opusplan")return RM6([...K,djY()]);else if(Y==="opus"&&KA())return RM6([...K,pvK(!1)]);else if(Y==="opus[1m]"&&KA())return RM6([...K,V37(!1)]);else if(Y==="claude-opus-4-6"&&KA())return RM6([...K,uvK(q,!1)]);else if(Y==="claude-opus-4-6[1m]"&&KA())return RM6([...K,mvK(q,!1)]);else{let w=njY(Y);if(w)K.push(w);else K.push({value:Y,label:Y,description:"Custom model"});return RM6(K)}}function RM6(q){if(!(y7()||{}).availableModels)return q;return q.filter((_)=>_.value===null||_.value!==null&&Kq6(_.value))}var QjY,xvK;var s58=L(()=>{y8();B1();T7();jQ();fo();a1();bg8();x9();jn6();Sq();AJ();h1();QjY={value:"sonnet",label:"Sonnet",description:"Sonnet 4.6 · Best for everyday tasks"},xvK={value:"haiku",label:"Haiku",description:"Haiku 4.5 · Fastest for quick answers"}});var N37={};h8(N37,{isVoiceModeEnabled:()=>SM6,isVoiceGrowthBookEnabled:()=>K_6,hasVoiceAuth:()=>Vd8});function K_6(){return!u8("tengu_amber_quartz_disabled",!1)}function Vd8(){if(!jX())return!1;let q=o7();return Boolean(q?.accessToken)}function SM6(){return Vd8()&&K_6()}var __6=L(()=>{B1();T7()});async function wI6(q){let K=q.trim();if(!K)return{valid:!1,error:"Model name cannot be empty"};if(!Kq6(K))return{valid:!1,error:`Model '${K}' is not in the list of available models`};let _=K.toLowerCase();if(Yw6.includes(_))return{valid:!0};if(K===process.env.ANTHROPIC_CUSTOM_MODEL_OPTION)return{valid:!0};if(FvK.has(K))return{valid:!0};try{return await dR({model:K,max_tokens:1,maxRetries:0,querySource:"model_validation",messages:[{role:"user",content:[{type:"text",text:"Hi",cache_control:{type:"ephemeral"}}]}]}),FvK.set(K,!0),{valid:!0}}catch(z){return ijY(z,K)}}function ijY(q,K){if(q instanceof fY6){let z=rjY(K),Y=z?`. Try '${z}' instead`:"";return{valid:!1,error:`Model '${K}' not found${Y}`}}if(q instanceof vq){if(q instanceof ZY6)return{valid:!1,error:"Authentication failed. Please check your API credentials."};if(q instanceof bZ)return{valid:!1,error:"Network error. Please check your internet connection."};let z=q.error;if(z&&typeof z==="object"&&"type"in z&&z.type==="not_found_error"&&"message"in z&&typeof z.message==="string"&&z.message.includes("model:"))return{valid:!1,error:`Model '${K}' not found`};return{valid:!1,error:`API error: ${q.message}`}}return{valid:!1,error:`Unable to validate model: ${q instanceof Error?q.message:String(q)}`}}function rjY(q){if(KA())return;let K=q.toLowerCase();if(K.includes("opus-4-7")||K.includes("opus_4_7"))return ZO().opus41;if(K.includes("opus-4-6")||K.includes("opus_4_6"))return ZO().opus41;if(K.includes("opus-4-5")||K.includes("opus_4_5"))return ZO().opus41;if(K.includes("sonnet-4-6")||K.includes("sonnet_4_6"))return ZO().sonnet45;if(K.includes("sonnet-4-5")||K.includes("sonnet_4_5"))return ZO().sonnet40;return}var FvK;var kd8=L(()=>{IT6();jn6();x9();tH6();eG();jQ();FvK=new Map});function gvK(q){return q in $I6}function UvK(q){return $I6[q]}function Nd8(q){let K=$I6[q];if(!K)return;if(K.options)return[...K.options];if(K.getOptions)return K.getOptions();return}function QvK(q){return $I6[q]?.path??q.split(".")}var $I6;var y37=L(()=>{h1();$b1();s58();kd8();tB();$I6={theme:{source:"global",type:"string",description:"Color theme for the UI",options:ZY4},editorMode:{source:"global",type:"string",description:"Key binding mode",options:Ck8},verbose:{source:"global",type:"boolean",description:"Show detailed debug output",appStateKey:"verbose"},preferredNotifChannel:{source:"global",type:"string",description:"Preferred notification channel",options:Sk8},autoCompactEnabled:{source:"global",type:"boolean",description:"Auto-compact when context is full"},autoScrollEnabled:{source:"global",type:"boolean",description:"Auto-scroll conversation to bottom (fullscreen mode only)"},autoMemoryEnabled:{source:"settings",type:"boolean",description:"Enable auto-memory"},autoDreamEnabled:{source:"settings",type:"boolean",description:"Enable background memory consolidation"},fileCheckpointingEnabled:{source:"global",type:"boolean",description:"Enable file checkpointing for code rewind"},showTurnDuration:{source:"global",type:"boolean",description:'Show turn duration message after responses (e.g., "Cooked for 1m 6s")'},terminalProgressBarEnabled:{source:"global",type:"boolean",description:"Show OSC 9;4 progress indicator in supported terminals"},todoFeatureEnabled:{source:"global",type:"boolean",description:"Enable todo/task tracking"},model:{source:"settings",type:"string",description:"Override the default model",appStateKey:"mainLoopModel",getOptions:()=>{try{return q_6().filter((q)=>q.value!==null).map((q)=>q.value)}catch{return["sonnet","opus","haiku"]}},validateOnWrite:(q)=>wI6(String(q)),formatOnRead:(q)=>q===null?"default":q},alwaysThinkingEnabled:{source:"settings",type:"boolean",description:"Enable extended thinking (false to disable)",appStateKey:"thinkingEnabled"},"permissions.defaultMode":{source:"settings",type:"string",description:"Default permission mode for tool usage",options:["default","plan","acceptEdits","dontAsk","auto"]},language:{source:"settings",type:"string",description:'Preferred language for Claude responses and voice dictation (e.g., "japanese", "spanish")'},teammateMode:{source:"global",type:"string",description:'How to spawn teammates: "tmux" for traditional tmux, "in-process" for same process, "auto" to choose automatically',options:Nq4},tui:{source:"settings",type:"string",description:'Terminal UI renderer: "fullscreen" for flicker-free alt-screen rendering, "default" for the classic renderer',options:["default","fullscreen"]},...!1,...{voiceEnabled:{source:"settings",type:"boolean",description:"Enable voice dictation (hold-to-talk)"}},remoteControlAtStartup:{source:"global",type:"boolean",description:"Enable Remote Control for all sessions (true | false | default)",formatOnRead:()=>zd()},...{inputNeededNotifEnabled:{source:"global",type:"boolean",description:"Push to your mobile device when a permission prompt or question is waiting (requires Remote Control)"},agentPushNotifEnabled:{source:"global",type:"boolean",description:"Allow Claude to push to your mobile device when it deems it appropriate (requires Remote Control)"}}}});function cvK(){let q=[],K=[];for(let[z,Y]of Object.entries($I6)){if(z==="model")continue;if(z==="voiceEnabled"&&!K_6())continue;let A=Nd8(z),O=`- ${z}`;if(A)O+=`: ${A.map((w)=>`"${w}"`).join(", ")}`;else if(Y.type==="boolean")O+=": true/false";if(O+=` - ${Y.description}`,Y.source==="global")q.push(O);else K.push(O)}let _=ojY();return`Get or set Claude Code configuration settings.
|
|
4085
|
+
`),(O)=>O.trim()!=="");if(!K)return null;let Y=await w1("git",["-C",q,"rev-list","--count",`${K}..HEAD`]);if(Y.code!==0)return null;let A=parseInt(Y.stdout.trim(),10)||0;return{changedFiles:z,commits:A}}function EvK(q,K){if(l$(q),dL(q),K)pB6(q),KR6();zL(null),nc(),Lk(),aO.cache.clear?.()}var IjY,xjY,yvK;var LvK=L(()=>{p7();y8();OR6();C8();gq();PM();n7();Q4();Bc();NJ();$G();g4();tD();kvK();IjY=C6(()=>y.strictObject({action:y.enum(["keep","remove"]).describe('"keep" leaves the worktree and branch on disk; "remove" deletes both.'),discard_changes:y.boolean().optional().describe('Required true when action is "remove" and the worktree has uncommitted files or unmerged commits. The tool will refuse and list them otherwise.')})),xjY=C6(()=>y.object({action:y.enum(["keep","remove"]),originalCwd:y.string(),worktreePath:y.string(),worktreeBranch:y.string().optional(),tmuxSessionName:y.string().optional(),discardedFiles:y.number().optional(),discardedCommits:y.number().optional(),message:y.string()}));yvK=Iq({name:AI8,searchHint:"exit a worktree session and return to the original directory",maxResultSizeChars:1e5,async description(){return"Exits a worktree session created by EnterWorktree and restores the original working directory"},async prompt(){return vvK()},get inputSchema(){return IjY()},get outputSchema(){return xjY()},userFacingName(){return"Exiting worktree"},shouldDefer:!0,isDestructive(q){return q.action==="remove"},toAutoClassifierInput(q){return q.action},async validateInput(q){if(Sf6())return{result:!1,message:'ExitWorktree cannot be called from a subagent with a cwd override (isolation: "worktree" or explicit cwd) — it would mutate the parent session\'s process-wide working directory. This agent is already isolated; use Bash with `cd` for directory changes within it.',errorCode:5};let K=sO();if(!K)return{result:!1,message:"No-op: there is no active EnterWorktree session to exit. This tool only operates on worktrees created by EnterWorktree in the current session — it will not touch worktrees created manually or in a previous session. No filesystem changes were made.",errorCode:1};if(q.action==="remove"&&K.enteredExisting)return{result:!1,message:`This session entered an existing worktree (${K.worktreePath}); it was not created by EnterWorktree, so this tool will not remove it. Use action: "keep" to return to ${K.originalCwd}, then remove the worktree manually with \`git worktree remove\` if desired.`,errorCode:4};if(q.action==="remove"&&!q.discard_changes){let _=await NvK(K.worktreePath,K.originalHeadCommit);if(_===null)return{result:!1,message:`Could not verify worktree state at ${K.worktreePath}. Refusing to remove without explicit confirmation. Re-invoke with discard_changes: true to proceed — or use action: "keep" to preserve the worktree.`,errorCode:3};let{changedFiles:z,commits:Y}=_;if(z>0||Y>0){let A=[];if(z>0)A.push(`${z} uncommitted ${z===1?"file":"files"}`);if(Y>0)A.push(`${Y} ${Y===1?"commit":"commits"} on ${K.worktreeBranch??"the worktree branch"}`);return{result:!1,message:`Worktree has ${A.join(" and ")}. Removing will discard this work permanently. Confirm with the user, then re-invoke with discard_changes: true — or use action: "keep" to preserve the worktree.`,errorCode:2}}}return{result:!0}},renderToolUseMessage:TvK,renderToolResultMessage:VvK,async call(q){let K=sO();if(!K)throw Error("Not in a worktree session");let{originalCwd:_,worktreePath:z,worktreeBranch:Y,tmuxSessionName:A,originalHeadCommit:O}=K,w=c9()===Y7(),{changedFiles:$,commits:j}=await NvK(z,O)??{changedFiles:0,commits:0};if(q.action==="keep"){await hM6(),EvK(_,w),d("tengu_worktree_kept",{mid_session:!0,commits:j,changed_files:$});let X=A?` Tmux session ${A} is still running; reattach with: tmux attach -t ${A}`:"";return{data:{action:"keep",originalCwd:_,worktreePath:z,worktreeBranch:Y,tmuxSessionName:A,message:`Exited worktree. Your work is preserved at ${z}${Y?` on branch ${Y}`:""}. Session is now back in ${_}.${X}`}}}if(A)await AI6(A);await OI6(),EvK(_,w),d("tengu_worktree_removed",{source:"exit_tool",mid_session:!0,commits:j,changed_files:$});let H=[];if(j>0)H.push(`${j} ${j===1?"commit":"commits"}`);if($>0)H.push(`${$} uncommitted ${$===1?"file":"files"}`);let J=H.length>0?` Discarded ${H.join(" and ")}.`:"";return{data:{action:"remove",originalCwd:_,worktreePath:z,worktreeBranch:Y,discardedFiles:$,discardedCommits:j,message:`Exited and removed worktree at ${z}.${J} Session is now back in ${_}.`}}},mapToolResultToToolResultBlockParam({message:q},K){return{type:"tool_result",content:q,tool_use_id:K}}})});var hvK="Config";function Td8(q=!1){if(i7())return{value:null,label:"Default (recommended)",description:uT6(q)};let K=!KA();return{value:null,label:K?"Default":"Default (recommended)",description:`Use the default model (currently ${Hn6(hv())})${K?"":` · ${Yf(GQ)}`}`}}function ujY(){let q=!KA(),K=process.env.ANTHROPIC_DEFAULT_SONNET_MODEL;if(q&&K){let _=DP(K);return{value:"sonnet",label:process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_NAME??K,description:process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION??`Custom Sonnet model${_?" (1M context)":""}`,descriptionForModel:`${process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_DESCRIPTION??`Custom Sonnet model${_?" with 1M context":""}`} (${K})`}}}function mjY(){let q=!KA();return{value:q?ZO().sonnet46:"sonnet",label:"Sonnet",description:`Sonnet 4.6 · Best for everyday tasks${q?"":` · ${Yf(GQ)}`}`,descriptionForModel:"Sonnet 4.6 - best for everyday tasks. Generally recommended for most coding tasks"}}function BjY(){let q=!KA(),K=process.env.ANTHROPIC_DEFAULT_OPUS_MODEL;if(q&&K){let _=DP(K);return{value:"opus",label:process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_NAME??K,description:process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION??`Custom Opus model${_?" (1M context)":""}`,descriptionForModel:`${process.env.ANTHROPIC_DEFAULT_OPUS_MODEL_DESCRIPTION??`Custom Opus model${_?" with 1M context":""}`} (${K})`}}}function pjY(){return{value:"opus",label:"Opus 4.1",description:"Opus 4.1 · Legacy",descriptionForModel:"Opus 4.1 - legacy version"}}function uvK(q=!1,K=!0){return{value:!KA()?ZO().opus46:"claude-opus-4-6",label:"Opus 4.6",description:`Opus 4.6 · Most capable for complex work${K?QZ8(q):""}`,descriptionForModel:"Opus 4.6 - most capable for complex work"}}function RvK(){let q=!KA();return{value:q?ZO().opus47:"opus",label:"Opus",description:`Opus 4.7 · Most capable for complex work${q?"":` · ${Yf(jB)}`}`,descriptionForModel:"Opus 4.7 - most capable for complex work"}}function SvK(){let q=!KA();return{value:q?ZO().sonnet46+"[1m]":"sonnet[1m]",label:"Sonnet (1M context)",description:`Sonnet 4.6 for long sessions${q?"":` · ${Yf(GQ)}`}`,descriptionForModel:"Sonnet 4.6 with 1M context window - for long sessions with large codebases"}}function mvK(q=!1,K=!0){return{value:!KA()?ZO().opus46+"[1m]":"claude-opus-4-6[1m]",label:"Opus 4.6 (1M context)",description:`Opus 4.6 for long sessions${K?QZ8(q):""}`,descriptionForModel:"Opus 4.6 with 1M context window - for long sessions with large codebases"}}function CvK(){let q=!KA();return{value:q?ZO().opus47+"[1m]":"opus[1m]",label:"Opus (1M context)",description:`Opus 4.7 for long sessions${q?"":` · ${Yf(jB)}`}`,descriptionForModel:"Opus 4.7 with 1M context window - for long sessions with large codebases"}}function FjY(){let q=!KA(),K=process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL;if(q&&K)return{value:"haiku",label:process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME??K,description:process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION??"Custom Haiku model",descriptionForModel:`${process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_DESCRIPTION??"Custom Haiku model"} (${K})`}}function BvK(){return{value:"haiku",label:"Haiku",description:`Haiku 4.5 · Fastest for quick answers${!KA()?"":` · ${Yf(_T1)}`}`,descriptionForModel:"Haiku 4.5 - fastest for quick answers. Lower cost but less capable than Sonnet 4.6."}}function gjY(){return{value:"haiku",label:"Haiku",description:`Haiku 3.5 for simple tasks${!KA()?"":` · ${Yf(KT1)}`}`,descriptionForModel:"Haiku 3.5 - faster and lower cost, but less capable than Sonnet. Use for simple tasks."}}function UjY(){return xT6()===ZO().haiku45?BvK():gjY()}function k37(){if(MK()==="pro"&&u8("tengu_gypsum_kite",!1))return" · ~2× usage vs Sonnet";return""}function pvK(q=!1){let K=!KA();return{value:"opus",label:"Opus",description:`Opus 4.7 · Most capable for complex work${k37()}${K||!q?"":` · ${Yf(jB)}`}`}}function bvK(){let q=!KA(),K=i7()?" · Billed as extra usage":"";return{value:"sonnet[1m]",label:"Sonnet (1M context)",description:`Sonnet 4.6 with 1M context${K}${!(K!==""&&!q)?"":` · ${Yf(GQ)}`}`}}function IvK(){let q=!KA(),K=i7()?" · Billed as extra usage":"",_=K!==""&&!q;return{value:"opus[1m]",label:"Opus (1M context)",description:`Opus 4.7 with 1M context${k37()}${K}${!_?"":` · ${Yf(jB)}`}`}}function V37(q=!1){let K=!KA();return{value:K?ZO().opus47+"[1m]":"opus[1m]",label:"Opus (1M context)",description:`Opus 4.7 with 1M context · Most capable for complex work${k37()}${K||!q?"":` · ${Yf(jB)}`}`,descriptionForModel:"Opus 4.7 with 1M context - most capable for complex work"}}function djY(){return{value:"opusplan",label:"Opus Plan Mode",description:"Use Opus in plan mode, Sonnet otherwise"}}function cjY(q=!1){if(i7()){if(ch()||Yq6()){let O=[Td8(q)];if(!YX()&&Ql())O.push(IvK());if(O.push(QjY),rt())O.push(bvK());return O.push(xvK),O}let A=[Td8(q)];if(rt())A.push(bvK());if(YX())A.push(V37(!1));else if(A.push(pvK(!1)),Ql())A.push(IvK());return A.push(xvK),A}if(KA()){let A=[Td8(q)];if(rt())A.push(SvK());if(YX())A.push(V37(!0));else if(A.push(RvK()),Ql())A.push(CvK());return A.push(BvK()),A}let K=[Td8(q)],_=ujY();if(_!==void 0)K.push(_);else if(K.push(mjY()),rt())K.push(SvK());let z=BjY();if(z!==void 0)K.push(z);else{if(K.push(pjY()),K.push(RvK()),Ql())K.push(CvK());if(K.push(uvK(q,!1)),Ql())K.push(mvK(q))}let Y=FjY();if(Y!==void 0)K.push(Y);else K.push(UjY());return K}function ljY(q){let K=o5(q);if(K.includes("claude-sonnet-4-6")||K.includes("claude-sonnet-4-5")||K.includes("claude-sonnet-4-")||K.includes("claude-3-7-sonnet")||K.includes("claude-3-5-sonnet")){let _=xW(Af());if(_)return{alias:"Sonnet",currentVersionName:_}}if(K.includes("claude-opus-4")){let _=xW(LE());if(_)return{alias:"Opus",currentVersionName:_}}if(K.includes("claude-haiku")||K.includes("claude-3-5-haiku")){let _=xW(xT6());if(_)return{alias:"Haiku",currentVersionName:_}}return null}function njY(q){let K=xW(q);if(!K)return null;let _=ljY(q);if(!_)return{value:q,label:K,description:q};if(K!==_.currentVersionName)return{value:q,label:K,description:`Newer version available · select ${_.alias} for ${_.currentVersionName}`};return{value:q,label:K,description:q}}function q_6(q=!1){let K=cjY(q);const _cache=H8().additionalModelOptionsCache;if(_cache&&_cache.length>0)K=[..._cache];let _skipCache=_cache&&_cache.length>0,_=process.env.ANTHROPIC_CUSTOM_MODEL_OPTION;if(_&&!K.some((w)=>w.value===_))K.push({value:_,label:process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME??_,description:process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_DESCRIPTION??`Custom model (${_})`});for(let w of (_skipCache?[]:H8().additionalModelOptionsCache??[]))if(!K.some(($)=>$.value===w.value))K.push(w);let{availableModels:z}=y7()??{};if(z)for(let w of z){let $=w.trim();if(!$.startsWith("anthropic.")||K.some((j)=>j.value===$))continue;K.push({value:$,label:$,description:"Custom model"})}let Y=null,A=Ub(),O=cB6();if(A!==void 0&&A!==null)Y=A;else if(O!==null)Y=O;if(Y===null||K.some((w)=>w.value===Y))return RM6(K);else if(Y==="opusplan")return RM6([...K,djY()]);else if(Y==="opus"&&KA())return RM6([...K,pvK(!1)]);else if(Y==="opus[1m]"&&KA())return RM6([...K,V37(!1)]);else if(Y==="claude-opus-4-6"&&KA())return RM6([...K,uvK(q,!1)]);else if(Y==="claude-opus-4-6[1m]"&&KA())return RM6([...K,mvK(q,!1)]);else{let w=njY(Y);if(w)K.push(w);else K.push({value:Y,label:Y,description:"Custom model"});return RM6(K)}}function RM6(q){if(!(y7()||{}).availableModels)return q;return q.filter((_)=>_.value===null||_.value!==null&&Kq6(_.value))}var QjY,xvK;var s58=L(()=>{y8();B1();T7();jQ();fo();a1();bg8();x9();jn6();Sq();AJ();h1();QjY={value:"sonnet",label:"Sonnet",description:"Sonnet 4.6 · Best for everyday tasks"},xvK={value:"haiku",label:"Haiku",description:"Haiku 4.5 · Fastest for quick answers"}});var N37={};h8(N37,{isVoiceModeEnabled:()=>SM6,isVoiceGrowthBookEnabled:()=>K_6,hasVoiceAuth:()=>Vd8});function K_6(){return!u8("tengu_amber_quartz_disabled",!1)}function Vd8(){if(!jX())return!1;let q=o7();return Boolean(q?.accessToken)}function SM6(){return Vd8()&&K_6()}var __6=L(()=>{B1();T7()});async function wI6(q){let K=q.trim();if(!K)return{valid:!1,error:"Model name cannot be empty"};if(!Kq6(K))return{valid:!1,error:`Model '${K}' is not in the list of available models`};let _=K.toLowerCase();if(Yw6.includes(_))return{valid:!0};if(K===process.env.ANTHROPIC_CUSTOM_MODEL_OPTION)return{valid:!0};if(FvK.has(K))return{valid:!0};try{return await dR({model:K,max_tokens:1,maxRetries:0,querySource:"model_validation",messages:[{role:"user",content:[{type:"text",text:"Hi",cache_control:{type:"ephemeral"}}]}]}),FvK.set(K,!0),{valid:!0}}catch(z){return ijY(z,K)}}function ijY(q,K){if(q instanceof fY6){let z=rjY(K),Y=z?`. Try '${z}' instead`:"";return{valid:!1,error:`Model '${K}' not found${Y}`}}if(q instanceof vq){if(q instanceof ZY6)return{valid:!1,error:"Authentication failed. Please check your API credentials."};if(q instanceof bZ)return{valid:!1,error:"Network error. Please check your internet connection."};let z=q.error;if(z&&typeof z==="object"&&"type"in z&&z.type==="not_found_error"&&"message"in z&&typeof z.message==="string"&&z.message.includes("model:"))return{valid:!1,error:`Model '${K}' not found`};return{valid:!1,error:`API error: ${q.message}`}}return{valid:!1,error:`Unable to validate model: ${q instanceof Error?q.message:String(q)}`}}function rjY(q){if(KA())return;let K=q.toLowerCase();if(K.includes("opus-4-7")||K.includes("opus_4_7"))return ZO().opus41;if(K.includes("opus-4-6")||K.includes("opus_4_6"))return ZO().opus41;if(K.includes("opus-4-5")||K.includes("opus_4_5"))return ZO().opus41;if(K.includes("sonnet-4-6")||K.includes("sonnet_4_6"))return ZO().sonnet45;if(K.includes("sonnet-4-5")||K.includes("sonnet_4_5"))return ZO().sonnet40;return}var FvK;var kd8=L(()=>{IT6();jn6();x9();tH6();eG();jQ();FvK=new Map});function gvK(q){return q in $I6}function UvK(q){return $I6[q]}function Nd8(q){let K=$I6[q];if(!K)return;if(K.options)return[...K.options];if(K.getOptions)return K.getOptions();return}function QvK(q){return $I6[q]?.path??q.split(".")}var $I6;var y37=L(()=>{h1();$b1();s58();kd8();tB();$I6={theme:{source:"global",type:"string",description:"Color theme for the UI",options:ZY4},editorMode:{source:"global",type:"string",description:"Key binding mode",options:Ck8},verbose:{source:"global",type:"boolean",description:"Show detailed debug output",appStateKey:"verbose"},preferredNotifChannel:{source:"global",type:"string",description:"Preferred notification channel",options:Sk8},autoCompactEnabled:{source:"global",type:"boolean",description:"Auto-compact when context is full"},autoScrollEnabled:{source:"global",type:"boolean",description:"Auto-scroll conversation to bottom (fullscreen mode only)"},autoMemoryEnabled:{source:"settings",type:"boolean",description:"Enable auto-memory"},autoDreamEnabled:{source:"settings",type:"boolean",description:"Enable background memory consolidation"},fileCheckpointingEnabled:{source:"global",type:"boolean",description:"Enable file checkpointing for code rewind"},showTurnDuration:{source:"global",type:"boolean",description:'Show turn duration message after responses (e.g., "Cooked for 1m 6s")'},terminalProgressBarEnabled:{source:"global",type:"boolean",description:"Show OSC 9;4 progress indicator in supported terminals"},todoFeatureEnabled:{source:"global",type:"boolean",description:"Enable todo/task tracking"},model:{source:"settings",type:"string",description:"Override the default model",appStateKey:"mainLoopModel",getOptions:()=>{try{return q_6().filter((q)=>q.value!==null).map((q)=>q.value)}catch{return["sonnet","opus","haiku"]}},validateOnWrite:(q)=>wI6(String(q)),formatOnRead:(q)=>q===null?"default":q},alwaysThinkingEnabled:{source:"settings",type:"boolean",description:"Enable extended thinking (false to disable)",appStateKey:"thinkingEnabled"},"permissions.defaultMode":{source:"settings",type:"string",description:"Default permission mode for tool usage",options:["default","plan","acceptEdits","dontAsk","auto"]},language:{source:"settings",type:"string",description:'Preferred language for Claude responses and voice dictation (e.g., "japanese", "spanish")'},teammateMode:{source:"global",type:"string",description:'How to spawn teammates: "tmux" for traditional tmux, "in-process" for same process, "auto" to choose automatically',options:Nq4},tui:{source:"settings",type:"string",description:'Terminal UI renderer: "fullscreen" for flicker-free alt-screen rendering, "default" for the classic renderer',options:["default","fullscreen"]},...!1,...{voiceEnabled:{source:"settings",type:"boolean",description:"Enable voice dictation (hold-to-talk)"}},remoteControlAtStartup:{source:"global",type:"boolean",description:"Enable Remote Control for all sessions (true | false | default)",formatOnRead:()=>zd()},...{inputNeededNotifEnabled:{source:"global",type:"boolean",description:"Push to your mobile device when a permission prompt or question is waiting (requires Remote Control)"},agentPushNotifEnabled:{source:"global",type:"boolean",description:"Allow Claude to push to your mobile device when it deems it appropriate (requires Remote Control)"}}}});function cvK(){let q=[],K=[];for(let[z,Y]of Object.entries($I6)){if(z==="model")continue;if(z==="voiceEnabled"&&!K_6())continue;let A=Nd8(z),O=`- ${z}`;if(A)O+=`: ${A.map((w)=>`"${w}"`).join(", ")}`;else if(Y.type==="boolean")O+=": true/false";if(O+=` - ${Y.description}`,Y.source==="global")q.push(O);else K.push(O)}let _=ojY();return`Get or set Claude Code configuration settings.
|
|
4086
4086
|
|
|
4087
4087
|
View or change Claude Code settings. Use when the user requests configuration changes, asks about current settings, or when adjusting a setting would benefit them.
|
|
4088
4088
|
|
|
@@ -8704,7 +8704,7 @@ try {
|
|
|
8704
8704
|
.filter((m) => m.id)
|
|
8705
8705
|
.sort((a, b) => a.id.localeCompare(b.id));
|
|
8706
8706
|
return {
|
|
8707
|
-
additional_model_options: _sorted.map((m) => ({value: m.id, label: m.id, description: m.desc ?? m.
|
|
8707
|
+
additional_model_options: _sorted.map((m) => ({value: m.id, label: m.name ?? m.id, description: m.desc ?? m.name})),
|
|
8708
8708
|
additional_model_costs: {},
|
|
8709
8709
|
client_data: null,
|
|
8710
8710
|
};
|