| 1625 | `}var W3z,D3z,vV6,f3z,Pm1,r3z,o3z;var fm1=y(()=>{W3z={parse:V3z},D3z=Promise.resolve();vV6=new Set(["?","$","@","*","#","-","!","_"]),f3z=new Set(["export","declare","typeset","readonly","local"]),Pm1=new Set(["if","then","elif","else","fi","while","until","for","in","do","done","case","esac","function","select"]);r3z={"=":2,"+=":2,"-=":2,"*=":2,"/=":2,"%=":2,"<<=":2,">>=":2,"&=":2,"^=":2,"|=":2,"||":4,"&&":5,"|":6,"^":7,"&":8,"==":9,"!=":9,"<":10,">":10,"<=":10,">=":10,"<<":11,">>":11,"+":12,"-":12,"*":13,"/":13,"%":13,"**":14},o3z=new Set(["=","+=","-=","*=","/=","%=","<<=",">>=","&=","^=","|=","**"])});var Tm1={};T8(Tm1,{parseCommandRaw:()=>Ao6,parseCommand:()=>Zm1,extractCommandArguments:()=>Gm1,ensureInitialized:()=>z9z,PARSE_ABORTED:()=>eO6});function _9z(q){if(lV4)return;lV4=!0,N(q?"tree-sitter: native module loaded":"tree-sitter: unavailable"),d("tengu_tree_sitter_load",{success:q})}async function z9z(){await Xm1()}async function Zm1(q){if(!q||q.length>nV4)return null;return null}async function Ao6(q){if(!q||q.length>nV4)return null;{await Xm1();let K=BV4();if(_9z(K!==null),!K)return null;try{let _=K.parse(q);if(_===null)return d("tengu_tree_sitter_parse_abort",{cmdLength:q.length,panic:!1}),eO6;return _}catch{return d("tengu_tree_sitter_parse_abort",{cmdLength:q.length,panic:!0}),eO6}}return null}function Gm1(q){if(q.type==="declaration_command"){let z=q.children[0];return z&&e3z.has(z.text)?[z.text]:[]}let K=[],_=!1;for(let z of q.children){if(z.type==="variable_assignment")continue;if(z.type==="command_name"||!_&&z.type==="word"){_=!0,K.push(z.text);continue}if(q9z.has(z.type))K.push(Y9z(z.text));else if(K9z.has(z.type))break}return K}function Y9z(q){return q.length>=2&&(q[0]==='"'&&q.at(-1)==='"'||q[0]==="'"&&q.at(-1)==="'")?q.slice(1,-1):q}var nV4=1e4,e3z,q9z,K9z,lV4=!1,eO6;var qw6=y(()=>{k8();_8();fm1();e3z=new Set(["export","declare","typeset","readonly","local","unset","unsetenv"]),q9z=new Set(["word","string","raw_string","number"]),K9z=new Set(["command_substitution","process_substitution"]);eO6=Symbol("parse-aborted")});function jN8(q){return q.includes(wN8)||q.includes(Cr)}function tV4(q){if(!q)return-2;if(q==="ERROR")return-1;let K=X9z.indexOf(q);return K>=0?K+1:0}function T9z(q){if(!q.includes("{"))return q;let K=[],_=!1,z=!1,Y=0;while(Y<q.length){let $=q[Y];if(_){if($==="'")_=!1;K.push($==="{"?" ":$),Y++}else if(z)if($==="\\"&&(q[Y+1]==='"'||q[Y+1]==="\\"))K.push($,q[Y+1]),Y+=2;else{if($==='"')z=!1;K.push($==="{"?" ":$),Y++}else if($==="\\"&&Y+1<q.length)K.push($,q[Y+1]),Y+=2;else{if($==="'")_=!0;else if($==='"')z=!0;K.push($),Y++}}return K.join("")}async function eV4(q){if(q==="")return{kind:"simple",commands:[]};let K=await Ao6(q);return K===null?{kind:"parse-unavailable"}:Nm1(q,K)}function Nm1(q,K){if(P9z.test(q))return{kind:"too-complex",reason:"Contains control characters"};if(W9z.test(q))return{kind:"too-complex",reason:"Contains Unicode whitespace"};if(D9z.test(q))return{kind:"too-complex",reason:"Contains backslash-escaped whitespace"};if(f9z.test(q))return{kind:"too-complex",reason:"Contains zsh ~[ dynamic directory syntax"};if(Z9z.test(q))return{kind:"too-complex",reason:"Contains zsh =cmd equals expansion"};if(G9z.test(T9z(q)))return{kind:"too-complex",reason:"Contains brace with quote character (expansion obfuscation)"};if(q.trim()==="")return{kind:"simple",commands:[]};if(K===eO6)return{kind:"too-complex",reason:"Parser aborted (timeout or resource limit) — possible adversarial input",nodeType:"PARSE_ABORT"};return v9z(K)}function v9z(q){let K=[],z=XU(q,K,new Map);if(z)return z;return{kind:"simple",commands:K}}function XU(q,K,_){if(q.type==="command"){let z=N9z(q,[],K,_);if(z.kind!=="simple")return z;return K.push(...z.commands),null}if(q.type==="redirected_statement")return k9z(q,K,_);if(q.type==="comment")return null;if($9z.has(q.type)){let z=q.type==="pipeline",Y=!1;if(!z){for(let O of q.children)if(O&&(O.type==="||"||O.type==="&")){Y=!0;break}}let $=Y?new Map(_):null,A=z?new Map(_):_;for(let O of q.children){if(!O)continue;if(A9z.has(O.type)){if(O.type==="||"||O.type==="|"||O.type==="|&"||O.type==="&")A=new Map($??_);continue}let w=XU(O,K,A);if(w)return w}return null}if(q.type==="negated_command"){for(let z of q.children){if(!z)continue;if(z.type==="!")continue;return XU(z,K,_)}return null}if(q.type==="declaration_command"){let z=[];for(let Y of q.children){if(!Y)continue;switch(Y.type){case"export":case"local":case"readonly":case"declare":case"typeset":z.push(Y.text);break;case"word":case"number":case"raw_string":case"string":case"concatenation":{let $=PU(Y,K,_);if(typeof $!=="string")return $;if((z[0]==="declare"||z[0]==="typeset"||z[0]==="local")&&/^-[a-zA-Z]*[niaA]/.test($))return{kind:"too-complex",reason:`declare flag ${$} changes assignment semantics (nameref/integer/array)`,nodeType:"declaration_command"};if((z[0]==="declare"||z[0]==="typeset"||z[0]==="local")&&$[0]!=="-"&&/^[^=]*\[/.test($))return{kind:"too-complex",reason:`declare positional '${$}' contains array subscript — bash evaluates $(cmd) in subscripts`,nodeType:"declaration_command"};z.push($);break}case"variable_assignment":{let $=km1(Y,K,_);if("kind"in $)return $;oV4(_,$),z.push(`${$.name}=${$.value}`);break}case"variable_name":z.push(Y.text);break;default:return EH(Y)}}return K.push({argv:z,envVars:[],redirects:[],text:q.text}),null}if(q.type==="variable_assignment"){let z=km1(q,K,_);if("kind"in z)return z;return oV4(_,z),null}if(q.type==="for_statement"){let z=null,Y=null;for(let A of q.children){if(!A)continue;if(A.type==="variable_name")z=A.text;else if(A.type==="do_group")Y=A;else if(A.type==="for"||A.type==="in"||A.type==="select"||A.type===";")continue;else if(A.type==="command_substitution"){let O=ym1(A,K,_);if(O)return O}else{let O=PU(A,K,_);if(typeof O!=="string")return O}}if(z===null||Y===null)return EH(q);if(z==="PS4"||z==="IFS")return{kind:"too-complex",reason:`${z} as loop variable bypasses assignment validation`,nodeType:"for_statement"};_.set(z,Cr);let $=new Map(_);for(let A of Y.children){if(!A)continue;if(A.type==="do"||A.type==="done"||A.type===";")continue;let O=XU(A,K,$);if(O)return O}return null}if(q.type==="if_statement"||q.type==="while_statement"){let z=!1;for(let Y of q.children){if(!Y)continue;if(Y.type==="if"||Y.type==="fi"||Y.type==="else"||Y.type==="elif"||Y.type==="while"||Y.type==="until"||Y.type===";")continue;if(Y.type==="then"){z=!0;continue}if(Y.type==="do_group"){let w=new Map(_);for(let j of Y.children){if(!j)continue;if(j.type==="do"||j.type==="done"||j.type===";")continue;let H=XU(j,K,w);if(H)return H}continue}if(Y.type==="elif_clause"||Y.type==="else_clause"){let w=new Map(_);for(let j of Y.children){if(!j)continue;if(j.type==="elif"||j.type==="else"||j.type==="then"||j.type===";")continue;let H=XU(j,K,w);if(H)return H}continue}let $=z?new Map(_):_,A=K.length,O=XU(Y,K,$);if(O)return O;if(!z)for(let w=A;w<K.length;w++){let j=K[w];if(j?.argv[0]==="read"){for(let H of j.argv.slice(1))if(!H.startsWith("-")&&/^[A-Za-z_][A-Za-z0-9_]*$/.test(H)){let J=_.get(H);if(J!==void 0&&!jN8(J))return{kind:"too-complex",reason:`'read ${H}' in condition may not execute (||/pipeline/subshell); cannot prove it overwrites tracked literal '${J}'`,nodeType:"if_statement"};_.set(H,Cr)}}}}return null}if(q.type==="subshell"){let z=new Map(_);for(let Y of q.children){if(!Y)continue;if(Y.type==="("||Y.type===")")continue;let $=XU(Y,K,z);if($)return $}return null}if(q.type==="test_command"){let z=["[["];for(let Y of q.children){if(!Y)continue;if(Y.type==="[["||Y.type==="]]")continue;if(Y.type==="["||Y.type==="]")continue;let $=qN4(Y,z,K,_);if($)return $}return K.push({argv:z,envVars:[],redirects:[],text:q.text}),null}if(q.type==="unset_command"){let z=[];for(let Y of q.children){if(!Y)continue;switch(Y.type){case"unset":z.push(Y.text);break;case"variable_name":z.push(Y.text),_.delete(Y.text);break;case"word":{let $=PU(Y,K,_);if(typeof $!=="string")return $;z.push($);break}default:return EH(Y)}}return K.push({argv:z,envVars:[],redirects:[],text:q.text}),null}return EH(q)}function qN4(q,K,_,z){switch(q.type){case"unary_expression":case"binary_expression":case"negated_expression":case"parenthesized_expression":{for(let Y of q.children){if(!Y)continue;let $=qN4(Y,K,_,z);if($)return $}return null}case"test_operator":case"!":case"(":case")":case"&&":case"||":case"==":case"=":case"!=":case"<":case">":case"=~":return K.push(q.text),null;case"regex":case"extglob_pattern":return K.push(q.text),null;default:{let Y=PU(q,_,z);if(typeof Y!=="string")return Y;return K.push(Y),null}}}function k9z(q,K,_){let z=[],Y=null;for(let O of q.children){if(!O)continue;if(O.type==="file_redirect"){let w=KN4(O,K,_);if("kind"in w)return w;z.push(w)}else if(O.type==="heredoc_redirect"){let w=_N4(O);if(w)return w}else if(O.type==="command"||O.type==="pipeline"||O.type==="list"||O.type==="negated_command"||O.type==="declaration_command"||O.type==="unset_command")Y=O;else return EH(O)}if(!Y)return K.push({argv:[],envVars:[],redirects:z,text:q.text}),null;let $=K.length,A=XU(Y,K,_);if(A)return A;if(K.length>$&&z.length>0){let O=K[K.length-1];if(O)O.redirects.push(...z)}return null}function KN4(q,K,_){let z=null,Y=null,$;for(let A of q.children){if(!A)continue;if(A.type==="file_descriptor")$=Number(A.text);else if(A.type in iV4)z=iV4[A.type]??null;else if(A.type==="word"||A.type==="number"){if(A.children.length>0)return EH(A);if(vm1.test(A.text))return EH(A);Y=A.text.replace(/\\(.)/g,"$1")}else if(A.type==="raw_string")Y=YN4(A.text);else if(A.type==="string"){let O=zN4(A,K,_);if(typeof O!=="string")return O;Y=O}else if(A.type==="concatenation"){let O=PU(A,K,_);if(typeof O!=="string")return O;Y=O}else return EH(A)}if(!z||Y===null)return{kind:"too-complex",reason:"Unrecognized redirect shape",nodeType:q.type};return{op:z,target:Y,fd:$}}function _N4(q){let K=null,_=null;for(let Y of q.children){if(!Y)continue;if(Y.type==="heredoc_start")K=Y.text;else if(Y.type==="heredoc_body")_=Y;else if(Y.type==="<<"||Y.type==="<<-"||Y.type==="heredoc_end"||Y.type==="file_descriptor");else return EH(Y)}if(!(K!==null&&(K.startsWith("'")&&K.endsWith("'")||K.startsWith('"')&&K.endsWith('"')||K.startsWith("\\"))))return{kind:"too-complex",reason:"Heredoc with unquoted delimiter undergoes shell expansion",nodeType:"heredoc_redirect"};if(_)for(let Y of _.children){if(!Y)continue;if(Y.type!=="heredoc_content")return EH(Y)}return null}function V9z(q,K,_){for(let z of q.children){if(!z)continue;if(z.type==="<<<")continue;let Y=PU(z,K,_);if(typeof Y!=="string")return Y;if(ON8.test(Y))return EH(z)}return null}function N9z(q,K,_,z){let Y=[],$=[],A=[...K];for(let w of q.children){if(!w)continue;switch(w.type){case"variable_assignment":{let j=km1(w,_,z);if("kind"in j)return j;$.push({name:j.name,value:j.value});break}case"command_name":{let j=PU(w.children[0]??w,_,z);if(typeof j!=="string")return j;Y.push(j);break}case"word":case"number":case"raw_string":case"string":case"concatenation":case"arithmetic_expansion":{let j=PU(w,_,z);if(typeof j!=="string")return j;Y.push(j);break}case"simple_expansion":{let j=HN8(w,z,!1);if(typeof j!=="string")return j;Y.push(j);break}case"file_redirect":{let j=KN4(w,_,z);if("kind"in j)return j;A.push(j);break}case"herestring_redirect":{let j=V9z(w,_,z);if(j)return j;break}default:return EH(w)}}let O=/\$[A-Za-z_]/.test(q.text)||q.text.includes(` |
| 1632 | `]);O9z=/[ \t\n*?[]/,w9z=/^-[ioe]$/,j9z=/^-[ioe]./,H9z=/^--(input|output|error)=/,J9z=new Set(["HOME","PWD","OLDPWD","USER","LOGNAME","SHELL","PATH","HOSTNAME","UID","EUID","PPID","RANDOM","SECONDS","LINENO","TMPDIR","BASH_VERSION","BASHPID","SHLVL","HISTFILE","IFS"]),M9z=new Set(["?","$","!","#","0","-"]),sV4=new Set(["command_substitution","process_substitution","expansion","simple_expansion","brace_expression","subshell","compound_statement","for_statement","while_statement","until_statement","if_statement","case_statement","function_definition","test_command","ansi_c_string","translated_string","herestring_redirect","heredoc_redirect"]),X9z=[...sV4];iV4={">":">",">>":">>","<":"<",">&":">&","<&":"<&",">|":">|","&>":"&>","&>>":"&>>","<<<":"<<<"},vm1=/\{[^{}\s]*(,|\.\.)[^{}\s]*\}/,P9z=/[\x00-\x08\x0B-\x1F\x7F]/,W9z=/[\u00A0\u1680\u2000-\u200B\u2028\u2029\u202F\u205F\u3000\uFEFF]/,D9z=/\\[ \t]|[^ \t\n\\]\\\n/,f9z=/~\[/,Z9z=/(?:^|[\s;&|])=[a-zA-Z_]/,G9z=/\{[^}]*['"]/;rV4=String.fromCharCode(36);y9z=/^(?:[0-9]+|0[xX][0-9a-fA-F]+|[0-9]+#[0-9a-zA-Z]+|[-+*/%^&|~!<>=?:(),]+|<<|>>|\*\*|&&|\|\||[<>=!]=|\$\(\(|\)\))$/;L9z=new Set(["zmodload","emulate","sysopen","sysread","syswrite","sysseek","zpty","ztcp","zsocket","zf_rm","zf_mv","zf_ln","zf_chmod","zf_chown","zf_mkdir","zf_rmdir","zf_chgrp"]),R9z=new Set(["eval","source",".","exec","command","builtin","fc","coproc","noglob","nocorrect","trap","enable","mapfile","readarray","hash","bind","complete","compgen","alias","let"]),h9z={test:new Set(["-v","-R"]),"[":new Set(["-v","-R"]),"[[":new Set(["-v","-R"]),printf:new Set(["-v"]),read:new Set(["-a"]),unset:new Set(["-v"]),wait:new Set(["-p"])},S9z=new Set(["-eq","-ne","-lt","-le","-gt","-ge"]),C9z=new Set(["read","unset"]),aV4=new Set(["-p","-d","-n","-N","-t","-u","-i"]),Vm1=/\/proc\/.*\/environ/,ON8=/\n[ \t]*#/});function o$(q,K){try{return{success:!0,tokens:typeof K==="function"?kV6.parse(q,K):kV6.parse(q,K)}}catch(_){if(_ instanceof Error)H6(_);return{success:!1,error:_ instanceof Error?_.message:"Unknown parse error"}}}function b9z(q){try{let K=q.map((z,Y)=>{if(z===null||z===void 0)return String(z);let $=typeof z;if($==="string")return z;if($==="number"||$==="boolean")return String(z);if($==="object")throw Error(`Cannot quote argument at index ${Y}: object values are not supported`);if($==="symbol")throw Error(`Cannot quote argument at index ${Y}: symbol values are not supported`);if($==="function")throw Error(`Cannot quote argument at index ${Y}: function values are not supported`);throw Error(`Cannot quote argument at index ${Y}: unsupported type ${$}`)});return{success:!0,quoted:kV6.quote(K)}}catch(K){if(K instanceof Error)H6(K);return{success:!1,error:K instanceof Error?K.message:"Unknown quote error"}}}function JN8(q,K){let _=!1,z=!1,Y=0,$=0;for(let A=0;A<q.length;A++){let O=q[A];if(O==="\\"&&!_){A++;continue}if(O==='"'&&!_)Y++,z=!z;else if(O==="'"&&!z)$++,_=!_}if(Y%2!==0||$%2!==0)return!0;for(let A of K){if(typeof A!=="string")continue;let O=(A.match(/{/g)||[]).length,w=(A.match(/}/g)||[]).length;if(O!==w)return!0;let j=(A.match(/\(/g)||[]).length,H=(A.match(/\)/g)||[]).length;if(j!==H)return!0;let J=(A.match(/\[/g)||[]).length,M=(A.match(/\]/g)||[]).length;if(J!==M)return!0;if((A.match(/(?<!\\)"/g)||[]).length%2!==0)return!0;if((A.match(/(?<!\\)'/g)||[]).length%2!==0)return!0}return!1}function Oo6(q){let K=!1,_=!1;for(let z=0;z<q.length;z++){let Y=q[z];if(Y==="\\"&&!K){z++;continue}if(Y==='"'&&!K){_=!_;continue}if(Y==="'"&&!_){if(K=!K,!K){let $=0,A=z-1;while(A>=0&&q[A]==="\\")$++,A--;if($>0&&$%2===1)return!0;if($>0&&$%2===0&&q.indexOf("'",z+1)!==-1)return!0}continue}}return!1}function E4(q){let K=b9z([...q]);if(K.success)return K.quoted;try{let _=q.map((z)=>{if(z===null||z===void 0)return String(z);let Y=typeof z;if(Y==="string"||Y==="number"||Y==="boolean")return String(z);return g6(z)});return kV6.quote(_)}catch(_){if(_ instanceof Error)H6(_);throw Error("Failed to quote shell arguments safely")}}var kV6;var NX=y(()=>{E8();l8();kV6=O6(iG8(),1)});function AN4(q){return`prompt: ${q.trim()}`}function Jq6(){return!1}function ON4(q){return[]}function wN4(q){return[]}function MN8(q){return[]}async function XN8(q,K,_,z,Y,$){return{matches:!1,confidence:"high",reason:"This feature is disabled"}}async function jN4(q,K,_){return K||null}var $N4="prompt:";function jo6(){return v1("policySettings")?.allowManagedPermissionRulesOnly===!0}function WU(){return!jo6()}function I9z(q){let K=Hj(q);if(!K)return null;try{let{resolvedPath:_}=F$(X8(),K),z=xZ(_);if(z.trim()==="")return{};let Y=m5(z,!1);return Y&&typeof Y==="object"?Y:null}catch{return null}}function u9z(q,K){if(!q||!q.permissions)return[];let{permissions:_}=q,z=[];for(let Y of x9z){let $=_[Y];if($)for(let A of $)z.push({source:K,ruleBehavior:Y,ruleValue:G2(A)})}return z}function PN8(){if(jo6())return wo6("policySettings");let q=[];for(let K of Jl())q.push(...wo6(K));return q}function wo6(q){let K=v1(q);return u9z(K,q)}function HN4(q){if(!m9z.includes(q.source))return!1;let K=G9(q.ruleValue),_=v1(q.source);if(!_||!_.permissions)return!1;let z=_.permissions[q.ruleBehavior];if(!z)return!1;let Y=($)=>G9(G2($));if(!z.some(($)=>Y($)===K))return!1;try{let $={..._,permissions:{..._.permissions,[q.ruleBehavior]:z.filter((O)=>Y(O)!==K)}},{error:A}=W7(q.source,$);if(A)return!1;return!0}catch($){return H6($),!1}}function p9z(){return{permissions:{}}}function JN4({ruleValues:q,ruleBehavior:K},_){if(jo6())return!1;if(q.length<1)return!0;let z=q.map(G9),Y=v1(_)||I9z(_)||p9z();try{let $=Y.permissions||{},A=$[K]||[],O=new Set(A.map((J)=>G9(G2(J)))),w=z.filter((J)=>!O.has(J));if(w.length===0)return!0;let j={...Y,permissions:{...$,[K]:[...A,...w]}},H=W7(_,j);if(H.error)throw H.error;return!0}catch($){return H6($),!1}}var x9z,m9z;var iu=y(()=>{ZE();e7();vO();E8();kO();U1();Gf();x9z=["allow","deny","ask"];m9z=["userSettings","projectSettings","localSettings"]});import{posix as B9z}from"path";function DU(q){if(!q)return[];return q.flatMap((K)=>{switch(K.type){case"addRules":return K.rules;default:return[]}})}function L$(q,K){switch(K.type){case"setMode":return N(`Applying permission update: Setting mode to '${K.mode}'`),{...q,mode:K.mode};case"addRules":{let _=K.rules.map((Y)=>G9(Y));N(`Applying permission update: Adding ${K.rules.length} ${K.behavior} rule(s) to destination '${K.destination}': ${g6(_)}`);let z=K.behavior==="allow"?"alwaysAllowRules":K.behavior==="deny"?"alwaysDenyRules":"alwaysAskRules";return{...q,[z]:{...q[z],[K.destination]:[...q[z][K.destination]||[],..._]}}}case"replaceRules":{let _=K.rules.map((Y)=>G9(Y));N(`Replacing all ${K.behavior} rules for destination '${K.destination}' with ${K.rules.length} rule(s): ${g6(_)}`);let z=K.behavior==="allow"?"alwaysAllowRules":K.behavior==="deny"?"alwaysDenyRules":"alwaysAskRules";return{...q,[z]:{...q[z],[K.destination]:_}}}case"addDirectories":{N(`Applying permission update: Adding ${K.directories.length} director${K.directories.length===1?"y":"ies"} with destination '${K.destination}': ${g6(K.directories)}`);let _=new Map(q.additionalWorkingDirectories);for(let z of K.directories)_.set(z,{path:z,source:K.destination});return{...q,additionalWorkingDirectories:_}}case"removeRules":{let _=K.rules.map((O)=>G9(O));N(`Applying permission update: Removing ${K.rules.length} ${K.behavior} rule(s) from source '${K.destination}': ${g6(_)}`);let z=K.behavior==="allow"?"alwaysAllowRules":K.behavior==="deny"?"alwaysDenyRules":"alwaysAskRules",Y=q[z][K.destination]||[],$=new Set(_),A=Y.filter((O)=>!$.has(O));return{...q,[z]:{...q[z],[K.destination]:A}}}case"removeDirectories":{N(`Applying permission update: Removing ${K.directories.length} director${K.directories.length===1?"y":"ies"}: ${g6(K.directories)}`);let _=new Map(q.additionalWorkingDirectories);for(let z of K.directories)_.delete(z);return{...q,additionalWorkingDirectories:_}}default:return q}}function XN(q,K){let _=q;for(let z of K)_=L$(_,z);return _}function hm1(q){return q==="localSettings"||q==="userSettings"||q==="projectSettings"}function fU(q){if(!hm1(q.destination))return;switch(N(`Persisting permission update: ${q.type} to source '${q.destination}'`),q.type){case"addRules":{N(`Persisting ${q.rules.length} ${q.behavior} rule(s) to ${q.destination}`),JN4({ruleValues:q.rules,ruleBehavior:q.behavior},q.destination);break}case"addDirectories":{N(`Persisting ${q.directories.length} director${q.directories.length===1?"y":"ies"} to ${q.destination}`);let _=v1(q.destination)?.permissions?.additionalDirectories||[],z=q.directories.filter((Y)=>!_.includes(Y));if(z.length>0){let Y=[..._,...z];W7(q.destination,{permissions:{additionalDirectories:Y}})}break}case"removeRules":{N(`Removing ${q.rules.length} ${q.behavior} rule(s) from ${q.destination}`);let z=(v1(q.destination)?.permissions||{})[q.behavior]||[],Y=new Set(q.rules.map(G9)),$=z.filter((A)=>{let O=G9(G2(A));return!Y.has(O)});W7(q.destination,{permissions:{[q.behavior]:$}});break}case"removeDirectories":{N(`Removing ${q.directories.length} director${q.directories.length===1?"y":"ies"} from ${q.destination}`);let _=v1(q.destination)?.permissions?.additionalDirectories||[],z=new Set(q.directories),Y=_.filter(($)=>!z.has($));W7(q.destination,{permissions:{additionalDirectories:Y}});break}case"setMode":{N(`Persisting mode '${q.mode}' to ${q.destination}`),W7(q.destination,{permissions:{defaultMode:q.mode}});break}case"replaceRules":{N(`Replacing all ${q.behavior} rules in ${q.destination} with ${q.rules.length} rule(s)`);let K=q.rules.map(G9);W7(q.destination,{permissions:{[q.behavior]:K}});break}}}function ru(q){for(let K of q)fU(K)}function Kw6(q,K="session"){let _=MN4(q);if(_==="/")return;return{type:"addRules",rules:[{toolName:"Read",ruleContent:B9z.isAbsolute(_)?`/${_}/**`:`${_}/**`}],behavior:"allow",destination:K}}var LH=y(()=>{_8();U1();l8();Tz();Gf();iu()});function Ho6(q){return q.match(/^(.+):\*$/)?.[1]??null}function U9z(q){if(q.endsWith(":*"))return!1;for(let K=0;K<q.length;K++)if(q[K]==="*"){let _=0,z=K-1;while(z>=0&&q[z]==="\\")_++,z--;if(_%2===0)return!0}return!1}function lv(q,K,_=!1){let z=q.trim(),Y="",$=0;while($<z.length){let M=z[$];if(M==="\\"&&$+1<z.length){let X=z[$+1];if(X==="*"){Y+="\x00ESCAPED_STAR\x00",$+=2;continue}else if(X==="\\"){Y+="\x00ESCAPED_BACKSLASH\x00",$+=2;continue}}Y+=M,$++}let w=Y.replace(/[.+?^${}()|[\]\\'"]/g,"\\$&").replace(/\*/g,".*").replace(g9z,"\\*").replace(F9z,"\\\\"),j=(Y.match(/\*/g)||[]).length;if(w.endsWith(" .*")&&j===1)w=w.slice(0,-3)+"( .*)?";let H="s"+(_?"i":"");return new RegExp(`^${w}$`,H).test(K)}function WN8(q){let K=Ho6(q);if(K!==null)return{type:"prefix",prefix:K};if(U9z(q))return{type:"wildcard",pattern:q};return{type:"exact",command:q}}function DN8(q,K){return[{type:"addRules",rules:[{toolName:q,ruleContent:K}],behavior:"allow",destination:"localSettings"}]}function Jo6(q,K){return[{type:"addRules",rules:[{toolName:q,ruleContent:`${K}:*`}],behavior:"allow",destination:"localSettings"}]}var g9z,F9z;var br=y(()=>{g9z=new RegExp("\x00ESCAPED_STAR\x00","g"),F9z=new RegExp("\x00ESCAPED_BACKSLASH\x00","g")});var XN4=50000,Mo6=4,PN4=400000,WN4=200000,PN=50;function Q9z(){let q=g8("tengu_auto_mode_config",{})?.enabled;return q==="enabled"||q==="disabled"||q==="opt-in"?q:void 0}function Mq6(q,K,_){return}function fN4(q){let K=q.find((_)=>_.name==="claude-vscode");if(K&&K.type==="connected"){DN4=K,K.client.setNotificationHandler(d9z(),async(Y)=>{let{eventName:$,eventData:A}=Y.params;d(`tengu_vscode_${$}`,A)});let _={tengu_vscode_review_upsell:tY("tengu_vscode_review_upsell"),tengu_vscode_onboarding:tY("tengu_vscode_onboarding"),tengu_quiet_fern:g8("tengu_quiet_fern",!1),tengu_vscode_cc_auth:g8("tengu_vscode_cc_auth",!1)},z=Q9z();if(z!==void 0)_.tengu_auto_mode_state=z;K.client.notification({method:"experiment_gates",params:{gates:_}})}}var d9z,DN4=null;var VV6=y(()=>{_8();x7();o1();k8();d9z=B6(()=>L.object({method:L.literal("log_event"),params:L.object({eventName:L.string(),eventData:L.object({}).passthrough()})}))});function ZN4(q){return c9z.some((K)=>q.startsWith(K))}function GN4(q,K){if(q.isUsingOverage){if(q.overageStatus==="allowed_warning")return{message:"You're close to your extra usage spending limit",severity:"warning"};return null}if(q.status==="rejected")return{message:l9z(q,K),severity:"error"};if(q.status==="allowed_warning"){if(q.utilization!==void 0&&q.utilization<0.7)return null;let z=yK(),Y=z==="team"||z==="enterprise",$=B_()?.hasExtraUsageEnabled===!0;if(Y&&$&&!fg())return null;let A=n9z(q);if(A)return{message:A,severity:"warning"}}return null}function Sm1(q,K){let _=GN4(q,K);if(_&&_.severity==="error")return _.message;return null}function Cm1(q,K){let _=GN4(q,K);if(_&&_.severity==="warning")return _.message;return null}function l9z(q,K){let _=q.resetsAt,z=_?zP6(_,!0):void 0,Y=q.overageResetsAt?zP6(q.overageResetsAt,!0):void 0,$=z?` · resets ${z}`:"";if(q.overageStatus==="rejected"){let A="";if(_&&q.overageResetsAt)if(_<q.overageResetsAt)A=` · resets ${z}`;else A=` · resets ${Y}`;else if(z)A=` · resets ${z}`;else if(Y)A=` · resets ${Y}`;if(q.overageDisabledReason==="out_of_credits")return`You're out of extra usage${A}`;return NV6("limit",A,K)}if(q.rateLimitType==="seven_day_sonnet"){let A=yK();return NV6(A==="pro"||A==="enterprise"?"weekly limit":"Sonnet limit",$,K)}if(q.rateLimitType==="seven_day_opus")return NV6("Opus limit",$,K);if(q.rateLimitType==="seven_day")return NV6("weekly limit",$,K);if(q.rateLimitType==="five_hour")return NV6("session limit",$,K);return NV6("usage limit",$,K)}function n9z(q){let K=null;switch(q.rateLimitType){case"seven_day":K="weekly limit";break;case"five_hour":K="session limit";break;case"seven_day_opus":K="Opus limit";break;case"seven_day_sonnet":K="Sonnet limit";break;case"overage":K="extra usage";break;case void 0:return null}let _=q.utilization?Math.floor(q.utilization*100):void 0,z=q.resetsAt?zP6(q.resetsAt,!0):void 0,Y=i9z(q.rateLimitType);if(_&&z){let A=`You've used ${_}% of your ${K} · resets ${z}`;return Y?`${A} · ${Y}`:A}if(_){let A=`You've used ${_}% of your ${K}`;return Y?`${A} · ${Y}`:A}if(q.rateLimitType==="overage")K+=" limit";if(z){let A=`Approaching ${K} · resets ${z}`;return Y?`${A} · ${Y}`:A}let $=`Approaching ${K}`;return Y?`${$} · ${Y}`:$}function i9z(q){let K=yK(),_=B_()?.hasExtraUsageEnabled===!0;if(q==="five_hour"){if(K==="team"||K==="enterprise"){if(!_&&EG6())return"/extra-usage to request more";return null}if(K==="pro"||K==="max")return"/upgrade to keep using Claude Code"}if(q==="overage"){if(K==="team"||K==="enterprise"){if(!_&&EG6())return"/extra-usage to request more"}}return null}function bm1(q){let K=q.resetsAt?zP6(q.resetsAt,!0):"",_="";if(q.rateLimitType==="five_hour")_="session limit";else if(q.rateLimitType==="seven_day")_="weekly limit";else if(q.rateLimitType==="seven_day_opus")_="Opus limit";else if(q.rateLimitType==="seven_day_sonnet"){let Y=yK();_=Y==="pro"||Y==="enterprise"?"weekly limit":"Sonnet limit"}if(!_)return"Now using extra usage";return`You're now using extra usage${K?` · Your ${_} resets ${K}`:""}`}function NV6(q,K,_){return`You've hit your ${q}${K}`}var c9z;var xm1=y(()=>{G7();$n();U7();c9z=["You've hit your","You've used","You're now using extra usage","You're close to","You're out of extra usage"]});function a9z(q,K){let _=Date.now()/1000,z=q-K,Y=_-z;return Math.max(0,Math.min(1,Y/K))}function TN4(){return fN8}function vN4(q){let K={};for(let[_,z]of[["five_hour","5h"],["seven_day","7d"]]){let Y=q.get(`anthropic-ratelimit-unified-${z}-utilization`),$=q.get(`anthropic-ratelimit-unified-${z}-reset`);if(Y!==null&&$!==null)K[_]={utilization:Number(Y),resets_at:Number($)}}return K}function Im1(q){WN=q,Xq6.forEach((_)=>_(q));let K=Math.round((q.resetsAt?q.resetsAt-Date.now()/1000:0)/3600);d("tengu_claudeai_limits_status_changed",{status:q.status,unifiedRateLimitFallbackAvailable:q.unifiedRateLimitFallbackAvailable,hoursTillReset:K})}async function s9z(){let q=PH(),K=await eE({maxRetries:0,model:q,source:"quota_check"}),_=[{role:"user",content:"quota"}],z=qL(q);return K.beta.messages.create({model:q,max_tokens:1,messages:_,metadata:Pq6(),...z.length>0?{betas:z}:{}}).asResponse()}async function kN4(){if(iA())return;if(!Uk6(d7()))return;if(i7())return;try{let q=await s9z();um1(q.headers)}catch(q){if(q instanceof Qq)ZN8(q)}}function t9z(q,K){for(let[_,z]of Object.entries(o9z)){let Y=q.get(`anthropic-ratelimit-unified-${_}-surpassed-threshold`);if(Y!==null){let $=q.get(`anthropic-ratelimit-unified-${_}-utilization`),A=q.get(`anthropic-ratelimit-unified-${_}-reset`),O=$?Number($):void 0;return{status:"allowed_warning",resetsAt:A?Number(A):void 0,rateLimitType:z,utilization:O,unifiedRateLimitFallbackAvailable:K,isUsingOverage:!1,surpassedThreshold:Number(Y)}}}return null}function e9z(q,K,_){let{rateLimitType:z,claimAbbrev:Y,windowSeconds:$,thresholds:A}=K,O=q.get(`anthropic-ratelimit-unified-${Y}-utilization`),w=q.get(`anthropic-ratelimit-unified-${Y}-reset`);if(O===null||w===null)return null;let j=Number(O),H=Number(w),J=a9z(H,$);if(!A.some((X)=>j>=X.utilization&&J<=X.timePct))return null;return{status:"allowed_warning",resetsAt:H,rateLimitType:z,utilization:j,unifiedRateLimitFallbackAvailable:_,isUsingOverage:!1}}function q_z(q,K){let _=t9z(q,K);if(_)return _;for(let z of r9z){let Y=e9z(q,z,K);if(Y)return Y}return null}function VN4(q){let K=q.get("anthropic-ratelimit-unified-status")||"allowed",_=q.get("anthropic-ratelimit-unified-reset"),z=_?Number(_):void 0,Y=q.get("anthropic-ratelimit-unified-fallback")==="available",$=q.get("anthropic-ratelimit-unified-representative-claim"),A=q.get("anthropic-ratelimit-unified-overage-status"),O=q.get("anthropic-ratelimit-unified-overage-reset"),w=O?Number(O):void 0,j=q.get("anthropic-ratelimit-unified-overage-disabled-reason"),H=K==="rejected"&&(A==="allowed"||A==="allowed_warning"),J=K;if(K==="allowed"||K==="allowed_warning"){let M=q_z(q,Y);if(M)return M;J="allowed"}return{status:J,resetsAt:z,unifiedRateLimitFallbackAvailable:Y,...$&&{rateLimitType:$},...A&&{overageStatus:A},...w&&{overageResetsAt:w},...j&&{overageDisabledReason:j},isUsingOverage:H}}function NN4(q){let K=q.get("anthropic-ratelimit-unified-overage-disabled-reason")??null;if(j8().cachedExtraUsageDisabledReason!==K)b8((z)=>({...z,cachedExtraUsageDisabledReason:K}))}function um1(q){let K=d7();if(!Uk6(K)){if(fN8={},WN.status!=="allowed"||WN.resetsAt)Im1({status:"allowed",unifiedRateLimitFallbackAvailable:!1,isUsingOverage:!1});return}let _=DI1(q);fN8=vN4(_);let z=VN4(_);if(NN4(_),!QJ(WN,z))Im1(z)}function ZN8(q){if(!Uk6(d7())||q.status!==429)return;try{let K={...WN};if(q.headers){let _=DI1(q.headers);fN8=vN4(_),K=VN4(_),NN4(_)}if(K.status="rejected",!QJ(WN,K))Im1(K)}catch(K){H6(K)}}var r9z,o9z,WN,fN8,Xq6;var ZU=y(()=>{LZ();Ee();v8();G7();HG();V1();E8();aq();k8();ew();PG6();vr6();xm1();r9z=[{rateLimitType:"five_hour",claimAbbrev:"5h",windowSeconds:18000,thresholds:[{utilization:0.9,timePct:0.72}]},{rateLimitType:"seven_day",claimAbbrev:"7d",windowSeconds:604800,thresholds:[{utilization:0.75,timePct:0.6},{utilization:0.5,timePct:0.35},{utilization:0.25,timePct:0.15}]}],o9z={"5h":"five_hour","7d":"seven_day",overage:"overage"};WN={status:"allowed",unifiedRateLimitFallbackAvailable:!1,isUsingOverage:!1},fN8={};Xq6=new Set});function GN8(){return"user_intent"}function TN8(){let q=process.env.CLAUDE_CODE_ENABLE_PROMPT_SUGGESTION;if(k_(q))return d("tengu_prompt_suggestion_init",{enabled:!1,source:"env"}),!1;if(i6(q))return d("tengu_prompt_suggestion_init",{enabled:!0,source:"env"}),!0;if(!g8("tengu_chomp_inflection",!1))return d("tengu_prompt_suggestion_init",{enabled:!1,source:"growthbook"}),!1;if(i7())return d("tengu_prompt_suggestion_init",{enabled:!1,source:"non_interactive"}),!1;if(nq()&&$Y())return d("tengu_prompt_suggestion_init",{enabled:!1,source:"swarm_teammate"}),!1;let K=N7()?.promptSuggestionEnabled!==!1;return d("tengu_prompt_suggestion_init",{enabled:K,source:"setting"}),K}function EN4(){if(_w6)_w6.abort(),_w6=null}function mm1(q){if(!q.promptSuggestionEnabled)return"disabled";if(q.pendingWorkerRequest||q.pendingSandboxRequest)return"pending_permission";if(q.elicitation.queue.length>0)return"elicitation_active";if(q.toolPermissionContext.mode==="plan")return"plan_mode";if(WN.status!=="allowed")return"rate_limit";return null}async function pm1(q,K,_,z,Y){if(q.signal.aborted)return w0("aborted",void 0,void 0,Y),null;if($7(K,(X)=>X.type==="assistant")<2)return w0("early_conversation",void 0,void 0,Y),null;let A=uP(K);if(A?.isApiErrorMessage)return w0("last_response_error",void 0,void 0,Y),null;let O=__z(A);if(O)return w0(O,void 0,void 0,Y),null;let w=_(),j=mm1(w);if(j)return w0(j,void 0,void 0,Y),null;let H=GN8(),{suggestion:J,generationRequestId:M}=await Bm1(q,H,z);if(q.signal.aborted)return w0("aborted",void 0,void 0,Y),null;if(!J)return w0("empty",void 0,H,Y),null;if(gm1(J,H,Y))return null;return{suggestion:J,promptId:H,generationRequestId:M}}async function LN4(q){if(q.querySource!=="repl_main_thread")return;_w6=new AbortController;let K=_w6,_=hL(q);try{let z=await pm1(K,q.messages,q.toolUseContext.getAppState,_,"cli");if(!z)return;if(q.toolUseContext.setAppState((Y)=>({...Y,promptSuggestion:{text:z.suggestion,promptId:z.promptId,shownAt:0,acceptedAt:0,generationRequestId:z.generationRequestId}})),Fm1()&&z.suggestion)Um1(z.suggestion,q,q.toolUseContext.setAppState,!1,_)}catch(z){if(z instanceof Error&&(z.name==="AbortError"||z.name==="APIUserAbortError")){w0("aborted",void 0,void 0,"cli");return}H6(x1(z))}finally{if(_w6===K)_w6=null}}function __z(q){if(!q)return null;let K=q.message.usage,_=K.input_tokens??0,z=K.cache_creation_input_tokens??0,Y=K.output_tokens??0;return _+z+Y>K_z?"cache_cold":null}async function Bm1(q,K,_){let z=z_z[K],Y=async()=>({behavior:"deny",message:"No tools needed for suggestion",decisionReason:{type:"other",reason:"suggestion only"}}),$=await hG({promptMessages:[U8({content:z})],cacheSafeParams:_,canUseTool:Y,querySource:"prompt_suggestion",forkLabel:"prompt_suggestion",overrides:{abortController:q},skipTranscript:!0,skipCacheWrite:!0}),A=$.messages.find((w)=>w.type==="assistant"),O=A?.type==="assistant"?A.requestId??null:null;for(let w of $.messages){if(w.type!=="assistant")continue;let j=w.message.content.find((H)=>H.type==="text");if(j?.type==="text"){let H=j.text.trim();if(H)return{suggestion:H,generationRequestId:O}}}return{suggestion:null,generationRequestId:O}}function gm1(q,K,_){if(!q)return w0("empty",void 0,K,_),!0;let z=q.toLowerCase(),Y=q.trim().split(/\s+/).length,$=[["done",()=>z==="done"],["meta_text",()=>z==="nothing found"||z==="nothing found."||z.startsWith("nothing to suggest")||z.startsWith("no suggestion")||/\bsilence is\b|\bstay(s|ing)? silent\b/.test(z)||/^\W*silence\W*$/.test(z)],["meta_wrapped",()=>/^\(.*\)$|^\[.*\]$/.test(q)],["error_message",()=>z.startsWith("api error:")||z.startsWith("prompt is too long")||z.startsWith("request timed out")||z.startsWith("invalid api key")||z.startsWith("image was too large")],["prefixed_label",()=>/^\w+:\s/.test(q)],["too_few_words",()=>{if(Y>=2)return!1;if(q.startsWith("/"))return!1;return!new Set(["yes","yeah","yep","yea","yup","sure","ok","okay","push","commit","deploy","stop","continue","check","exit","quit","no"]).has(z)}],["too_many_words",()=>Y>12],["too_long",()=>q.length>=100],["multiple_sentences",()=>/[.!?]\s+[A-Z]/.test(q)],["has_formatting",()=>/[\n*]|\*\*/.test(q)],["evaluative",()=>/thanks|thank you|looks good|sounds good|that works|that worked|that's all|nice|great|perfect|makes sense|awesome|excellent/.test(z)],["claude_voice",()=>/^(let me|i'll|i've|i'm|i can|i would|i think|i notice|here's|here is|here are|that's|this is|this will|you can|you should|you could|sure,|of course|certainly)/i.test(q)]];for(let[A,O]of $)if(O())return w0(A,q,K,_),!0;return!1}function RN4(q,K,_,z,Y){let $=Math.round(K.length/(q.length||1)*100)/100,A=K===q,O=Math.max(0,Date.now()-_);d("tengu_prompt_suggestion",{source:"sdk",outcome:A?"accepted":"ignored",prompt_id:z,...Y&&{generationRequestId:Y},...A&&{timeToAcceptMs:O},...!A&&{timeToIgnoreMs:O},similarity:$,...!1})}function w0(q,K,_,z){let Y=_??GN8();d("tengu_prompt_suggestion",{...z&&{source:z},outcome:"suppressed",reason:q,prompt_id:Y,...!1})}var _w6=null,K_z=1e4,yN4=`[SUGGESTION MODE: Suggest what the user might naturally type next into Claude Code.] |