context-mode 2.0.0-next.6 → 2.0.0-next.8
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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/SHA256SUMS +17 -17
- package/cli.mjs +3052 -691
- package/copilot/plugin.json +1 -1
- package/gemini-extension.json +1 -1
- package/hook.mjs +84 -82
- package/opencode/plugin.js +3230 -960
- package/package.json +1 -1
- package/pi/index.js +3047 -777
- package/qwen-extension.json +1 -1
- package/run.mjs +161 -41
- package/search.mjs +161 -41
- package/server.mjs +3011 -740
- package/skills/ctx-doctor/SKILL.md +1 -1
- package/skills/ctx-stats/SKILL.md +1 -1
- package/skills/ctx-upgrade/SKILL.md +1 -1
package/hook.mjs
CHANGED
|
@@ -1,30 +1,32 @@
|
|
|
1
|
-
var ge=["claude-code","codex","gemini","qwen","copilot-cli","vscode","kiro","zcode","pi","opencode"];var Q="context-mode",
|
|
2
|
-
Run the command on the line above with Bash instead. It runs the same command in the same folder, indexes the full output and prints only the part that matches your intent, with the same exit code.`,
|
|
3
|
-
`+o}}return typeof e=="object"&&e!==null&&
|
|
4
|
-
`),keep:n}}function
|
|
5
|
-
`+t.reason});case"replace":return n&&e.event==="PostToolUse"?o({updatedToolOutput:
|
|
6
|
-
`+t.reason}),exitCode:0}:
|
|
7
|
-
`+t.reason}),exitCode:0};case"replace":return e.event!=="PostToolUse"?
|
|
8
|
-
`+t.reason,exitCode:2};case"replace":return{stdout:"",exitCode:0}}}var
|
|
9
|
-
`+t.reason,exitCode:2};case"replace":return{stdout:e.event==="PostToolUse"?t.output:"",exitCode:0}}return{stdout:"",exitCode:0}}function
|
|
10
|
-
`+t.reason,exitCode:2};case"replace":return{stdout:"",exitCode:0}}}var
|
|
11
|
-
`,
|
|
12
|
-
`,
|
|
13
|
-
`,
|
|
14
|
-
\r;&|()<>`,
|
|
15
|
-
\r`,
|
|
16
|
-
`,s),u=l<0?e.n:l,f=e.s.slice(s,u);if(f.endsWith("\r")&&(f=f.slice(0,-1)),s=l<0?e.n:l+1,(i.strip?f.trim():f)===i.tag){a=!0;break}}if(o!==null&&r!==null&&r.push(o.length),v(o,"unhandled",e.s.slice(c,s),c,s),!a)return le(e,"unterminated-heredoc"),e.n}return n.length=0,s}function
|
|
17
|
-
`||d==="\r"){let h=c;c+=i.startsWith(
|
|
18
|
-
`&&i.charAt(c)!=="\r";)c++;continue}if(i.startsWith(hn,c)||i.startsWith(Gs,c)){let h=Et(e,c+hn.length,!0,o+1,null,null);v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}let E=sl(i,c);if(E!==null){v(r,"io",i.slice(c,E.end),c,E.end),u=E.op===$a||E.op===Ls?E.op===Ls:null,c=E.end;continue}if(i.startsWith(ae,c)&&Sn(i.charAt(c+ae.length))){let h=rl(e,c,o);if(h>0){v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}}if(i.startsWith(Ce,c)){let h=On(i,c);if(h>0){v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}}let m=Ya.find(h=>i.startsWith(h,c));if(m!==void 0){if(n&&m==="("&&a++,n&&m===")"){if(a>0)a--;else if(l===0)return c+1}v(r,"op",m,c,c+m.length),c+=m.length,u=null;continue}if(d==="$"&&x==="("||d==="`"){let h=d==="`"?ue(e,c):ke(e,c,o);if(Ws(i.charAt(h))){v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}}let _=c;c=il(e,c,o);let S=i.slice(_,c);v(r,"word",S,_,c),u!==null&&(f.push({tag:de(S),strip:u}),u=null),n&&S===nl&&l++,n&&S===ol&&l>0&&l--}return f.length>0&&le(e,"unterminated-heredoc"),e.n}function Ks(e){let t={s:e,n:e.length,end:"complete"},n=[],o=[];return Et(t,0,!1,0,n,o),{tokens:n,heredocBodies:o,end:t.end}}function de(e){let t="",n=0,o=e.length;for(;n<o;){let r=e.charAt(n);if(r==="\\"){t+=e.charAt(n+1),n+=D;continue}if(r==="'"){let s=e.indexOf("'",n+1),i=s<0?o:s;t+=e.slice(n+1,i),n=i+1;continue}if(r==="$"&&e.charAt(n+1)==="'"){let s=n+js.length;for(;s<o&&e.charAt(s)!=="'";){if(e.charAt(s)==="\\"){t+=e.charAt(s+1),s+=D;continue}t+=e.charAt(s),s++}n=s+1;continue}if(r==='"'){let s=n+1;for(;s<o&&e.charAt(s)!=='"';){let i=e.charAt(s+1);if(e.charAt(s)==="\\"&&i!==""&&tl.includes(i)){t+=i,s+=D;continue}t+=e.charAt(s),s++}n=s+1;continue}t+=r,n++}return t}function mt(e){let t={s:e,n:e.length,end:"complete"},n=[],o=!1,r=0;for(;r<t.n;){let s=e.charAt(r),i=e.charAt(r+1);if(s==="\\"){r+=D;continue}if(!o&&s==="'"){r=pt(t,r);continue}if(!o&&s==="$"&&i==="'"){r=Xs(t,r);continue}if(s==='"'){o=!o,r++;continue}if(s==="$"&&i==="{"){r+=Fs.length;continue}let c=e.startsWith(hn,r);if(s==="$"&&i==="("||!o&&(c||e.startsWith(Gs,r))){let a=r+1;if(s==="$"&&e.startsWith(Ce,a)&&On(e,a)>0){r=a+Ce.length;continue}let l=Et(t,a+1,!0,1,null,null),u=l>a+1&&e.charAt(l-1)===")"?l-1:l;n.push({wrapper:s==="$"?"$()":c?"<()":">()",body:e.slice(a+1,u)}),r=l;continue}if(s==="`"){let a=ue(t,r),l=a>r+1&&e.charAt(a-1)==="`"?a-1:a;n.push({wrapper:"`",body:e.slice(r+1,l)}),r=a;continue}r++}return n}function _t(e){let t=e.charAt(0);if(!(vs(t)||t==="_"))return!1;for(let n=1;n<e.length;n++){let o=e.charAt(n);if(o==="="||o==="+"&&e.charAt(n+1)==="=")return!0;if(!(vs(o)||bn(o)||o==="_"))return!1}return!1}var Vs=[";","&","&&","||"],zs=["|","|&"],Ie="(",De=")",$s=";;",yn=["(",")"],al="!",b=Object.freeze({group:"{",groupEnd:"}",if:"if",then:"then",elif:"elif",else:"else",fi:"fi",while:"while",until:"until",for:"for",in:"in",do:"do",done:"done",case:"case",esac:"esac",function:"function",coproc:"coproc",select:"select"}),Qs=[],ll="[[",ul="((",Zs=[">",">>",">|","&>","&>>",">&"],dl=[...Zs,"<","<>","<<<","<<","<<-"],fl=["","1"],ei=["-","/dev/stdout","/dev/stderr"],ht="-",we="--",Le="=",xl="/",pl=Object.freeze({curl:{short:"o",long:"--output"},wget:{short:"O",long:"--output-document"}}),gt=Object.freeze({head:"head",wc:"wc",grep:"grep",jq:"jq"}),An="-c",Nn="--bytes",El="c",ml="--count",ne=()=>({cmds:[],simple:null}),T=(e,t=0)=>e.toks[e.i+t],W=(e,t)=>e!==void 0&&e.kind==="op"&&e.text===t,C=(e,t)=>e!==void 0&&e.kind==="word"&&e.text===t,Cn=e=>e!==""&&e>="0"&&e<="9",_l=e=>Cn(e)||e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_";function kn(e){let t=e.lastIndexOf(xl);return t>=0&&t<e.length-1?e.slice(t+1):e}function In(e,t){let n=pl[e.toLowerCase()];if(n===void 0)return!1;for(let o=0;o<t.length;o++){let r=t[o];if(r===we)break;let s;if(r===n.long)s=t[o+1];else if(r.startsWith(n.long+Le))s=r.slice(n.long.length+Le.length);else if(r.startsWith(ht)&&!r.startsWith(we)){let i=r.indexOf(n.short,ht.length);if(i<0)continue;s=i+n.short.length<r.length?r.slice(i+n.short.length):t[o+1]}else continue;if(s!==void 0&&!ei.includes(s))return!0}return!1}function gl(e){if(e==="")return!1;for(let t of e)if(!Cn(t))return!1;return!0}function hl(e){for(let t=0;t<e.length;t++){let n=e[t],o;if(n===An||n===Nn?o=e[t+1]:n.startsWith(Nn+Le)?o=n.slice(Nn.length+Le.length):n.startsWith(An)&&!n.startsWith(we)&&(o=n.slice(An.length)),o!==void 0)return gl(o)&&Number(o)<=be}return!1}function bl(e){for(let t of e){if(t===we)return!1;if(t===ml||t.startsWith(ht)&&!t.startsWith(we)&&t.includes(El))return!0}return!1}function qs(e){if(!e.startsWith(I.fieldSep))return!1;for(let t of e.slice(I.fieldSep.length).split(I.fieldSep)){if(t==="")return!1;for(let n of t)if(!_l(n))return!1}return!0}function Sl(e){let t=e.trim();if(t===I.identity||t===I.length)return!0;let n=t.indexOf(I.pipeLength.charAt(0));if(n<0)return qs(t);let o=t.slice(0,n).trim(),r=I.pipeLength.slice(1).trim();return(o===I.identity||qs(o))&&t.slice(n+1).trim()===r}function Tl(e){let t=e.argv0.toLowerCase();if(t===gt.wc)return!0;if(t===gt.head)return hl(e.args);if(t===gt.grep)return bl(e.args);if(t===gt.jq){let n=e.args.filter(o=>!o.startsWith(ht));return n.length===1&&Sl(n[0])}return!1}function Dn(e){return mt(e).length===0?[]:[{argv0:"",args:[],redirectsToFile:!1,endsInBoundedSink:!1,raw:e}]}function ti(e,t,n){return n<=t?[]:Dn(e.src.slice(e.toks[t].start,e.toks[n-1].end))}function ni(e,t){for(let n of e)n.insideConstruct===void 0&&(n.insideConstruct=t)}function Rl(e){let t=0;for(;Cn(e.charAt(t));)t++;return{fd:e.slice(0,t),op:e.slice(t)}}function oi(e){let t=Rl(e.toks[e.i].text);if(e.i++,!dl.includes(t.op))return!1;let n=T(e);return n===void 0||n.kind==="op"||n.kind==="io"?!1:(e.i++,Zs.includes(t.op)&&fl.includes(t.fd)&&!ei.includes(de(n.text)))}function ri(e){let t=!1;for(;T(e)?.kind==="io";)t=oi(e)||t;return t}function si(e){for(;T(e)?.kind==="op"&&Vs.includes(T(e)?.text??"");)e.i++}function fe(e,t){if(e.depth++,e.depth>ee)return e.err="nesting-too-deep",ne();let n=t();if(e.depth--,ri(e))for(let o of n)o.redirectsToFile=!0;return{cmds:n,simple:null}}function ii(e){if(si(e),!C(T(e),b.do))return[];e.i++;let t=F(e,[b.done]);return C(T(e),b.done)&&e.i++,t}function Ol(e){e.i++;let t=F(e,[b.then]);for(;e.err===null;){let n=T(e);if(C(n,b.then)||C(n,b.else)){e.i++,t.push(...F(e,[b.elif,b.else,b.fi]));continue}if(C(n,b.elif)){e.i++,t.push(...F(e,[b.then]));continue}C(n,b.fi)&&e.i++;break}return t}function Al(e){e.i++;let t=F(e,[b.do]);return t.push(...ii(e)),t}function Nl(e){e.i++;let t=[],n=T(e);if(n?.kind==="unhandled")e.i++;else if(n?.kind==="word"&&e.i++,C(T(e),b.in)){e.i++;let o=e.i;for(;(T(e)?.kind==="word"||T(e)?.kind==="unhandled")&&!C(T(e),b.do);)e.i++;t.push(...ti(e,o,e.i))}return t.push(...ii(e)),t}function yl(e){e.i++;let t=[],n=T(e);for(n!==void 0&&n.kind!=="op"&&n.kind!=="io"&&(e.i++,t.push(...ti(e,e.i-1,e.i))),C(T(e),b.in)&&e.i++;e.i<e.toks.length&&e.err===null;){let o=e.toks[e.i];if(e.bodies.has(e.i)||o.kind==="op"&&(Vs.includes(o.text)||o.text===$s)){e.i++;continue}if(C(o,b.esac)){e.i++;break}for(W(o,Ie)&&e.i++;e.i<e.toks.length&&!W(T(e),De);){let s=e.toks[e.i];if(s.kind==="op"&&!zs.includes(s.text))break;e.i++}if(!W(T(e),De))break;e.i++;let r=F(e,[b.esac]);ni(r,b.case),t.push(...r)}return t}function Ys(e,t){si(e);let n=ci(e);return ni(n.cmds,t),{cmds:n.cmds,simple:null}}function Js(e,t){return yn.every((n,o)=>W(e.toks[t+o],n))}function Cl(e){let t=e.i,n=[],o=!1;for(;e.i<e.toks.length;){let l=e.toks[e.i];if(l.kind==="op")break;if(l.kind==="io"){o=oi(e)||o;continue}if(n.length===0&&l.kind==="word"&&_t(l.text)){e.i++;let u=T(e);if(l.text.endsWith(Le)&&u!==void 0&&W(u,Ie)&&u.start===l.end){let f=0;for(;e.i<e.toks.length;){let d=e.toks[e.i];if(e.i++,W(d,Ie)&&f++,W(d,De)&&--f===0)break}}continue}n.push(l),e.i++}if(e.i===t)return ne();let r=e.src.slice(e.toks[t].start,e.toks[e.i-1].end);if(n.length===0)return{cmds:Dn(r),simple:null};let s=l=>l.kind==="word"?de(l.text):l.text,i=kn(s(n[0])),c=n.slice(1).map(s),a={argv0:i,args:c,redirectsToFile:o||In(i,c),endsInBoundedSink:!1,raw:r};return{cmds:[a],simple:a}}function ci(e){let t=T(e);if(t===void 0)return ne();if(t.kind==="op")return t.text!==Ie?ne():fe(e,()=>{e.i++;let n=F(e,Qs);return W(T(e),De)&&e.i++,n});if(t.kind==="unhandled"&&(t.text.startsWith(ll)||t.text.startsWith(ul)))return e.i++,ri(e),{cmds:Dn(t.text),simple:null};if(t.kind==="word")switch(t.text){case b.group:return fe(e,()=>{e.i++;let n=F(e,[b.groupEnd]);return C(T(e),b.groupEnd)&&e.i++,n});case b.if:return fe(e,()=>Ol(e));case b.while:case b.until:return fe(e,()=>Al(e));case b.for:return fe(e,()=>Nl(e));case b.case:return fe(e,()=>yl(e));case b.coproc:return e.err="coproc",ne();case b.select:return e.err="select",ne();case b.function:{e.i++;let n=T(e),o="";return n?.kind==="word"&&(o=de(n.text),e.i++),Js(e,e.i)&&(e.i+=yn.length),Ys(e,o)}default:if(Js(e,e.i+1))return e.i+=yn.length+1,Ys(e,de(t.text))}return Cl(e)}function kl(e){C(T(e),al)&&e.i++;let t=[],n=ne();for(;e.err===null;){n=ci(e),t.push(...n.cmds);let o=T(e);if(o!==void 0&&o.kind==="op"&&zs.includes(o.text)){e.i++;continue}break}if(n.simple!==null&&Tl(n.simple))for(let o of t)o.endsInBoundedSink=!0;return t}function F(e,t){let n=[];for(;e.i<e.toks.length&&e.err===null;){let o=e.toks[e.i];if(e.bodies.has(e.i)){e.i++;continue}if(o.kind==="op"){if(o.text===De||o.text===$s)return n;if(o.text!==Ie){e.i++;continue}}if(o.kind==="word"&&t.includes(o.text))return n;let r=e.i;n.push(...kl(e)),e.i===r&&e.err===null&&e.i++}return n}function Pe(e){let t=Ks(e);if(t.end==="unterminated-quote")return{ok:!1,construct:"unterminated-quote"};if(t.end==="unterminated-heredoc")return{ok:!1,construct:"unterminated-heredoc"};if(t.end==="too-deep")return{ok:!1,construct:"nesting-too-deep"};let n={toks:t.tokens,src:e,bodies:new Set(t.heredocBodies),i:0,depth:0,err:null},o=[];for(;n.i<n.toks.length&&n.err===null;)o.push(...F(n,Qs)),n.i<n.toks.length&&n.i++;return n.err!==null?{ok:!1,construct:n.err}:{ok:!0,commands:o}}import{join as bt}from"node:path";import{join as Pl}from"node:path";var Il=Object.freeze({NODE_TOO_OLD:"Node <v> is below 24.15.0. Fix: install Node 24.15.0 or later.",NO_SQLITE:"node:sqlite failed to load. Fix: run ctx_doctor.",DB_GONE:"context.db path vanished. Fix: run ctx_doctor.",NO_PROJECT:"Project source <kind> is missing. Fix: run ctx_doctor.",UNKNOWN_FIELD:'Unknown field "<f>". Fix: use "queries".',TIMEOUT:"Timed out after <ms> ms. Fix: pass background: true.",NO_RUNTIME:"No <lang> runtime on PATH. Fix: install it or pick another language.",FETCH_FAILED:"Fetch failed: <code>. Fix: check the URL or proxy.",SSRF:"Blocked private address <host>. Fix: use a public URL.",OUTSIDE_ROOT:"Path <p> is outside the project. Fix: use a path inside <root>.",INVALID_ARGS:"Invalid argument <field>. Fix: <action>.",ONE_OF_INPUT:"Pass exactly one of <names>. Fix: drop the extra field.",SPAWN_FAILED:"Failed to start the process: <detail>. Fix: check the command and PATH.",DB_CORRUPT:"context.db failed integrity_check. Fix: run ctx_doctor.",SCHEMA_STALE:"context.db schema is version <found>, expected <want>. Fix: run ctx_doctor.",NO_GIT_DIR:"No git repository at <path>. Fix: run context-mode inside a git repository.",NO_HOME:"Env var <name> is not set. Fix: set <name> to your home directory.",PLUGIN_ROOT_MISSING:"Plugin root for <agent> not found at <path>. Fix: run ctx_upgrade.",BUNDLE_HASH_MISMATCH:"Fetched bundle hash does not match SHA256SUMS. Fix: run ctx_upgrade again.",CONFIG_PARSE_FAILED:"<agent> config at <path> did not parse as <format>. Fix: fix the syntax error and re-run ctx_upgrade."});function Dl(e,t){let n=Il[e],o="",r=0;for(;r<n.length;){if(n[r]!=="<"){o+=n[r],r+=1;continue}let s=r+1;for(;s<n.length&&n[s]!=="<"&&n[s]!==">";)s+=1;if(s>=n.length){o+=n.slice(r);break}if(n[s]==="<"){o+="<",r+=1;continue}let i=n.slice(r+1,s),c=t[i];if(c===void 0)throw new Error("formatError: missing var "+i+" for "+e);o+=String(c),r=s+1}return o}var R=class extends Error{code;vars;constructor(t,n){super(Dl(t,n??{})),this.code=t,this.vars=n??{}}toLine(){return this.message}};var{mkdirSync:wl,realpathSync:Ll}=process.getBuiltinModule("node:fs");function xe(e){let t=e.HOME;if(t!==void 0&&t!=="")return t;let n=e.USERPROFILE;return n!==void 0&&n!==""?n:null}function Ul(e){let t=xe(e);if(t!==null)return t;throw new R("NO_HOME",{name:process.platform==="win32"?"USERPROFILE":"HOME"})}function ai(e){let t=Pl(Ul(e),Go.slice(1));return wl(t,{recursive:!0}),Ll.native(t)}var{readFileSync:fi}=process.getBuiltinModule("node:fs");function pe(e){return e.agentId!==void 0&&e.agentId!==""}function Pn(e,t){if(t===null)return"C";let n=ye(e.agent),o=new Set(t);for(let r of Ke)if(o.has(n.toolNamePrefix+r))return"A";for(let r of n.nativeTools.shell)if(o.has(r))return"B";return"C"}function Un(e,t){if(!pe(e))return null;let n=ye(e.agent);if(t.manifestTools!==void 0)return di(t.manifestTools.map(c=>wn(n,c)));let o=e.agentType??"",r=Ml(o,t);if(r===null)return null;let s=(r.tools??Gl(n)).map(c=>wn(n,c)),i=r.disallowed.map(c=>wn(n,c));return di(s.filter(c=>!i.some(a=>Wl(a,c))))}function Ml(e,t){if(!Hl(e))return null;let n=vl(t.env);if(e.indexOf(ce)>=0){if(n!==null){let s=Fl(n,e);if(s!==null)return s}}else{let s=Ln(bt(t.projectDir,Ve,ze,e+$e));if(s!==null)return s;if(n!==null){let i=Ln(bt(n,Ve,ze,e+$e));if(i!==null)return i}}let r=t.cliAgents;if(r!==void 0&&Object.prototype.hasOwnProperty.call(r,e)){let s=r[e];return{tools:Array.isArray(s.tools)?s.tools:null,disallowed:Array.isArray(s.disallowedTools)?s.disallowedTools:[]}}return null}function Hl(e){if(e===""||e==="."||e===".."||e.indexOf("/")>=0||e.indexOf("\\")>=0)return!1;for(let t of e.split(ce))if(t===""||t==="."||t==="..")return!1;return!0}function vl(e){return xe(e)}function Fl(e,t){let n=t.indexOf(ce),o=t.slice(0,n),r=t.slice(n+ce.length);if(r.indexOf(ce)>=0)return null;let s;try{s=JSON.parse(fi(bt(e,Ve,Wo,Xo),"utf8"))}catch{return null}let i=s?.plugins;if(i===null||typeof i!="object")return null;for(let c of Object.keys(i)){let a=c.indexOf(Ko);if((a<0?c:c.slice(0,a))!==o)continue;let l=i[c];if(Array.isArray(l))for(let u of l){let f=u?.installPath;if(typeof f!="string"||f==="")continue;let d=Ln(bt(f,ze,r+$e));if(d!==null)return d}}return null}function Ln(e){let t;try{t=fi(e,"utf8")}catch{return null}return jl(t)}function jl(e){let t=e.split(`
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
`)
|
|
22
|
-
|
|
23
|
-
`),
|
|
24
|
-
`)
|
|
1
|
+
var ge=["claude-code","codex","gemini","qwen","copilot-cli","vscode","kiro","zcode","pi","opencode"];var Q="context-mode",Ye=Object.freeze(["ctx_execute","ctx_batch","ctx_index","ctx_search","ctx_resume","ctx_stats","ctx_doctor","ctx_upgrade","ctx_purge"]);function M(e,t){if(t==="")return e;let n=e;for(let o of Ye)n=n.split(o).join(t+o);return n}var be=16384,Ro=2048;var ta=4096,Oo=640,Bt="</context_mode_state>",Wt=1048576,Ao=65536,No=4096,yo=96,Co=256,ko=48;function Io(e,t,n,o="",r=""){let s=r===""?[e]:[e,r];return o+"ctx_search({queries:["+s.map(i=>JSON.stringify(i)).join(",")+"], source:"+JSON.stringify(t)+"}) searches the whole output ("+n+" B)."}var Do=3,Z=4096;var Xt=85,Kt=340,qt=Object.freeze({toolerr:900,decision:700,prompt:500,edit:400,index:200});var wo=.7,Lo=.7,Po=.3,Yt=Object.freeze([1e3,881,780,696,625,565,515,473,438,408,383,361,344,329,316,306,297,289,283,278,273,270,267,264,262,260,258,257,256,255,254,253,253,252,252,252,251,251,251,251,251,251,251,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250,250]),Mo='context-mode: earlier work of this session is in ctx_resume (state block) and ctx_search(scope:"session", sort:"timeline").';var na=6e5;var ie=5e3,Ve="-wal",Je="-shm",Uo=".tmp",Ho=255,vo=11,Fo=26;var U=5e3;var Vt=0;var jo=16,Se=5;var Go="projects",Bo="context.db";var Jt=".git",zt="worktree ",$t="gitdir: ",Wo="commondir",Xo="HEAD",ze="--workspace-folder",If=Object.freeze(["shell","powershell","javascript","typescript","python"]);var Ko=80;var Df=Object.freeze({NO_COLOR:"1",FORCE_COLOR:"0"});var wf=Object.freeze({"claude-code":"CLAUDE_CODE_SESSION_ID"}),Qt="24.15.0",qo="~/.context-mode";var Yo="CONTEXT_MODE_REQUIRE_SECURITY",Vo=".claude",$e="agents",Qe=".md",Jo="plugins",zo="installed_plugins.json",ce=":",$o="@",Zt="---",Qo="tools",Zo="disallowedTools",en="mcp__",tn="__",er="mcp_",tr="_-.:",To=10;function oa(e){if(e===void 0||e.trim()==="")return To;let t=Number(e);return Number.isSafeInteger(t)&&t>0?t:To}var Lf=oa(process.env.CTX_MCP_HINT_EVERY);var ee=32;var nr="context-mode: ",or=Object.freeze({curl:"This curl/wget call",http:"This inline HTTP call",build:"This build command",webfetch:"WebFetch"}),rr=" sends its body into the conversation.",sr="Run it here instead; the full output is indexed and only the part that matches your intent comes back.",ir="Tool: ",cr="state what you need",ar="ctx_execute",lr=Object.freeze(["ctx_index","ctx_search"]),Te="Blocked by security policy: matches deny pattern ",Ze="context-mode: your deny rules could not be read. Fix: run ctx_doctor.",et="context-mode: could not parse this command; it may be blocked by your own rules. Run it through ctx_execute instead.",Pf=Object.freeze(["pwd","whoami","uname","id","realpath","ln"]),Mf=Object.freeze(["status"]),Uf=Object.freeze(["--version","-v"]),Hf=Object.freeze(["cp","mv","rm"]),vf=Object.freeze(["-v","--verbose"]),I=Object.freeze({identity:".",length:"length",pipeLength:"| length",fieldSep:"."}),ur="{prefix}",dr=", then ",fr="context-mode: your deny rules could not be read, so they are not applied. Fix: run ctx_doctor.",xr=Object.freeze(["claude.ai","claude.site","claudeusercontent.com"]),pr=Object.freeze(["curl","wget"]),Er=Object.freeze({curl:{short:"s",long:"--silent"},wget:{short:"q",long:"--quiet"}}),_r=Object.freeze(["-v","--verbose","--trace","--trace-ascii"]),mr="-D",gr=Object.freeze(["gradlew","gradle","mvnw","mvn","sbt"]),Re="fetch(",hr="'\"`",br="http",Sr=Object.freeze(["requests.get(","requests.post(","requests.put(","http.get(","http.request("]),Tr=Object.freeze(["cat","head","tail","sed","less","jq","bat","more"]),Rr=Object.freeze(["head","tail"]),nn=Object.freeze(["-n","-c","--lines","--bytes"]),tt="sed",Or=Object.freeze(["-n","--quiet","--silent"]),Ar="jq",Nr=Object.freeze(["file_path","absolute_path","path"]),yr="ctx_",Cr="Bash",kr=Object.freeze(["Write","Edit"]),Ir=Object.freeze(["file_path","path"]),on="Exit code ",Oe="resume-hint",rn="compact-state",sn="pending-compact",nt="pending_compact:",cn="1",an=2048,ln=5,Dr=340,un="compacted:",wr="recall_units_seen:",Lr=64,Pr="recall_seen:",dn="<context_mode_recall>",fn="</context_mode_recall>",Mr="recall",xn="This session may have run before. Call {prefix}ctx_resume for a summary of what happened.",Ur="subagent:",Hr="run.mjs",vr="node",Fr=`context-mode: This command sends its body into the conversation.
|
|
2
|
+
Run the command on the line above with Bash instead. It runs the same command in the same folder, indexes the full output and prints only the part that matches your intent, with the same exit code.`,ot="--agent",jr=1e3;var Ff=Object.freeze(["Scope","Produced","Returned","Saved","Reduction %"]);var jf=Object.freeze(["session","source","project"]);var rt="decision";var pn="AskUserQuestion",Gr="answers",st="option",Br=" | ";var Gf=Object.freeze(["D1","D2","D3","D4","D5","D5b","D6","D7","D8","D9","D10","D11"]),Bf=Object.freeze({D1:"version",D2:"node",D3:"host config",D4:"old entries",D5:"hook round trip",D5b:"double-fire",D6:"MCP",D7:"project and worktree",D8:"context.db",D9:"index",D10:"enforcement mode",D11:"shell"});var Wf=`(report truncated at ${ta} B; run ctx_doctor again after the first fix)`;var Xf=`install Node ${Qt} or later`;var Kf=Object.freeze(["MCP entry","hook entries","hook timeout"]);var Wr=Object.freeze({"claude-code":[".claude"],codex:[".codex"],gemini:[".gemini"],qwen:[".qwen"],"copilot-cli":[".copilot"],vscode:[".vscode"],kiro:[".kiro"],zcode:[".zcode"],pi:[".pi"],opencode:[".config","opencode"]});var qf=Object.freeze(["upgrade","uninstall"]);var Yf=Object.freeze(["clone","--depth","1","--branch"]),Vf=Object.freeze(["rev-parse","HEAD"]);var Jf=Object.freeze(["pi","opencode"]);var zf=Object.freeze({GIT_TERMINAL_PROMPT:"0"}),$f=Object.freeze({GIT_CONFIG_COUNT:"1",GIT_CONFIG_KEY_0:"core.autocrlf",GIT_CONFIG_VALUE_0:"false"});var Qf=Object.freeze(["shell","bash","sh"]),Zf=Object.freeze([["..","bin","bash.exe"],["..","..","bin","bash.exe"]]);var ex=Object.freeze(["doctor-env.ts","doctor-config.ts","doctor-hook.ts","doctor-db.ts","doctor-heal.ts","release-fetch.ts","verify-sums.ts","plugin-swap.ts","host-write.ts","v1-remove.ts","uninstall.ts"]);var tx=Object.freeze({"claude-code":{root:"plugin",file:["hooks","claude-code.json"],key:["hooks"],shape:"nested",timeoutKey:"timeout",matcher:!0},codex:{root:"home",file:[".codex","hooks.json"],key:["hooks"],shape:"nested",timeoutKey:"timeout",matcher:!0},gemini:{root:"plugin",file:["hooks","hooks.json"],key:["hooks"],shape:"nested",timeoutKey:"timeout",matcher:!1},qwen:{root:"plugin",file:["hooks","qwen.json"],key:["hooks"],shape:"nested",timeoutKey:"timeout",matcher:!0},"copilot-cli":{root:"home",file:[".copilot","hooks","context-mode.json"],key:["hooks"],shape:"flat",timeoutKey:"timeoutSec",matcher:!1},vscode:{root:"home",file:[".copilot","hooks","context-mode-vscode.json"],key:["hooks"],shape:"flat",timeoutKey:"timeout",matcher:!1},kiro:{root:"home",file:[".kiro","hooks","context-mode.json"],key:["hooks"],shape:"kiro",timeoutKey:"timeout",matcher:!1},zcode:{root:"home",file:[".zcode","cli","config.json"],key:["hooks","events"],shape:"zcode",timeoutKey:"timeoutMs",matcher:!0},pi:null,opencode:null}),nx=Object.freeze(["PreToolUse","PostToolUse"]);var ox=Object.freeze([["@mcp","mcp"],["shell","shell"]]);var rx=Object.freeze(["features","hooks"]);var sx=Object.freeze(["",Ve,Je]);var ix=Object.freeze({"claude-code":"claude plugin marketplace update context-mode && claude plugin update context-mode@context-mode",codex:"rewrite config.toml's [mcp_servers.context-mode*] block to the v2 entry, then restart Codex",gemini:"gemini extensions install https://github.com/mksglu/context-mode --ref release --auto-update",qwen:"qwen extensions install https://github.com/mksglu/context-mode --ref release --auto-update"});var cx=Object.freeze(["afteragentresponse.mjs","aftermodel.mjs","aftertool.mjs","agentspawn.mjs","beforeagent.mjs","beforetool.mjs","posttooluse.mjs","precompact.mjs","precompress.mjs","pretooluse.mjs","sessionend.mjs","sessionstart.mjs","stop.mjs","userpromptsubmit.mjs"]);var ax=Object.freeze(["hooks","codex"]);var lx=Object.freeze([".mjs",".sh"]);var it="CLAUDE_CONFIG_DIR";var ra=Object.freeze(["Code","User"]);var sa="mcp.json",ux=Object.freeze(["agents","default.json"]);var dx=Object.freeze(["steering","KIRO.md"]);var fx=Object.freeze(["opencode.jsonc","opencode.json"]);var xx=Object.freeze(["content","platform.json"]);var Xr="custom";var ia=Object.freeze(["/","\\"]),ca="${/}",px=Object.freeze([...ia,ca]),he=Object.freeze({hook:"old context-mode hook entry: command contains context-mode and an old script name or context-mode hook",cacheHealHook:"old context-mode cache-heal SessionStart hook entry",cacheHealFile:"old context-mode cache-heal script file",statusLine:"old context-mode statusLine (context-mode statusline): report only, never removed",mcpEntry:"old context-mode MCP entry mcpServers.context-mode",codexHook:"old context-mode Codex hook entry: context-mode hook codex or hooks/codex/*.mjs",codexToml:"old context-mode config.toml [mcp_servers.context-mode*] section",hookFile:"old context-mode hook file context-mode.json (runs context-mode hook)",vscodeMcp:"old context-mode MCP entry servers.context-mode in .vscode/mcp.json: report only, never removed",kiroHook:"old Kiro hook entry: command contains context-mode and an old script name or context-mode hook",kiroAgentFile:"old context-mode Kiro agent file agents/*.json with name context-mode",kiroSteering:"old context-mode Kiro steering doc .kiro/steering/KIRO.md: manual review, report only, never removed",piNpm:"old context-mode Pi package npm:context-mode",opencodePlugin:"old context-mode OpenCode plugin spec context-mode",zcodeHook:"old context-mode ZCode hook entry: command contains context-mode hook",dataDir:"old context-mode data dir <agent home>/context-mode/",dataDirShared:"old context-mode data dir ~/.gemini/context-mode/: delete only after a prompt (Antigravity shares it)",dataRoot:"old context-mode content under ~/.context-mode/",tmpFile:"old context-mode temp file context-mode-* under the OS temp dir: report only, no action needed"}),Ex=Object.freeze([he.statusLine,he.vscodeMcp,he.dataDirShared,he.tmpFile,he.kiroSteering]);var _x=Q+"_";var aa=Object.freeze(["features","mcp"]),la="omit_tools_from",ua=Object.freeze(["deferred"]),da="default_tools_approval_mode",fa="approve",mx=Object.freeze({codex:{file:[".codex","config.toml"],key:["mcp_servers",Q],fields:{[la]:ua,[da]:fa}},vscode:{file:[sa],key:["servers",Q]},kiro:{file:[".kiro","settings","mcp.json"],key:["mcpServers",Q]},zcode:{file:[".zcode","cli","config.json"],key:["mcp","servers",Q],fields:{type:"stdio",enabled:!0,timeoutMs:na},also:[[aa,!0]]}});var gx=Object.freeze({NODE_ENV:Object.freeze(["development","production","test"])});import{dirname as $0,join as Q0}from"node:path";var En="mcp__plugin_context-mode_context-mode__",xa=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse"],Kr="mcp__",qr="__",pa={startup:"startup",resume:"resume",clear:"clear",compact:"compact"};function Ea(e,t){if(e.startsWith(t))return e.slice(t.length);if(!e.startsWith(Kr))return e;let n=e.slice(Kr.length),o=n.indexOf(qr);return o<0?e:"mcp:"+n.slice(0,o)+":"+n.slice(o+qr.length)}function _a(e){if(e===void 0)return"";if(typeof e=="string")return e;if(Array.isArray(e))return Vr(e).text;if(typeof e=="object"&&e!==null){let t=e;if(typeof t.stdout=="string"||typeof t.stderr=="string"){let n=typeof t.stdout=="string"?t.stdout:"",o=typeof t.stderr=="string"?t.stderr:"";return o===""?n:n===""?o:n+`
|
|
3
|
+
`+o}}return typeof e=="object"&&e!==null&&Yr(e)?e.content:JSON.stringify(e)}function Yr(e){let t=e;return t.mode==="content"&&typeof t.content=="string"}function Vr(e){let t=[],n=!1;for(let o of e){let r=typeof o=="object"&&o!==null?o:{};r.type==="text"&&typeof r.text=="string"?t.push(r.text):n=!0}return{text:t.join(`
|
|
4
|
+
`),keep:n}}function ma(e){let t=_a(e),o={isError:typeof e=="object"&&e!==null&&e.is_error===!0,bytes:Buffer.byteLength(t),text:t};if(typeof e=="object"&&e!==null&&!Array.isArray(e)&&Yr(e)&&(o.shape=e),Array.isArray(e)&&(o.blocks=!0,Vr(e).keep&&(o.keep=!0)),typeof e=="object"&&e!==null){let r=e;typeof r.persistedOutputPath=="string"&&r.persistedOutputPath!==""&&typeof r.persistedOutputSize=="number"&&r.persistedOutputSize>o.bytes&&(o.persistedPath=r.persistedOutputPath)}return o}function te(e,t,n,o){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error(t+": hook payload is not a JSON object");let r=e,s=xa.find(c=>c===r.hook_event_name);if(s===void 0)throw new Error(t+": unknown hook event "+String(r.hook_event_name));let i={event:s,agent:t,sessionId:String(r.session_id??""),cwd:String(r.cwd??"")};if(typeof r.agent_id=="string"&&(i.agentId=r.agent_id,typeof r.agent_type=="string"&&(i.agentType=r.agent_type)),s==="SessionStart"&&typeof r.source=="string"&&o[r.source]!==void 0&&(i.source=o[r.source]),s==="UserPromptSubmit"&&typeof r.prompt=="string"&&(i.prompt=r.prompt),s==="PreToolUse"||s==="PostToolUse"){let c=String(r.tool_name??""),a=typeof r.tool_input=="object"&&r.tool_input!==null?r.tool_input:{},l={name:c,canonicalName:Ea(c,n),input:a};typeof r.tool_use_id=="string"&&r.tool_use_id!==""&&(l.callId=r.tool_use_id),i.tool=l}return s==="PostToolUse"&&(i.result=ma(r.tool_response)),i}function ga(e,t){return e.tool?.canonicalName==="Bash"?{stdout:t,stderr:"",interrupted:!1}:e.result?.shape!==void 0?{...e.result.shape,content:t}:e.result?.blocks===!0?[{type:"text",text:t}]:t}function H(e,t,n){let o=r=>({stdout:JSON.stringify({hookSpecificOutput:{hookEventName:e.event,...r}}),exitCode:0});switch(t.kind){case"allow":return{stdout:"",exitCode:0};case"hint":return o({additionalContext:t.text});case"deny":return o({permissionDecision:"deny",permissionDecisionReason:t.rewritten===void 0?t.reason:t.rewritten+`
|
|
5
|
+
`+t.reason});case"replace":return n&&e.event==="PostToolUse"?o({updatedToolOutput:ga(e,t.output)}):{stdout:"",exitCode:0}}}var ha={PreToolUse:["tool_name"],PostToolUse:["tool_name","tool_response"]};function ba(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return(t>>>0).toString(16).padStart(8,"0")}function Sa(e){if(typeof e!="object"||e===null||Array.isArray(e))return;let t=e;if(t.hook_event_name===void 0)throw new Error("claude-code: missing required field hook_event_name");for(let n of ha[t.hook_event_name]??[])if(t[n]===void 0)throw new Error("claude-code: missing required field "+n)}function Jr(e){Sa(e);let t=te(e,"claude-code",En,pa);if(t.cwd===""&&(t.cwd=process.env.CLAUDE_PROJECT_DIR||process.cwd()),t.event==="PostToolUse"&&t.tool!==void 0&&t.tool.callId===void 0){let n=typeof t.tool.input.command=="string"?t.tool.input.command:JSON.stringify(t.tool.input);t.tool.callId="h"+ba(t.tool.name+"\0"+n+"\0"+String(t.turn??0))}return t}function zr(e,t,n){return H(e,t,!0)}var _n="mcp__context_mode__",Ra={startup:"startup",resume:"resume",clear:"clear",compact:"compact",fork:"resume"};function $r(e){return te(e,"codex",_n,Ra)}function Qr(e,t,n){return H(e,t,!1)}var at="mcp_context-mode_",Zr={SessionStart:"SessionStart",BeforeAgent:"UserPromptSubmit",BeforeTool:"PreToolUse",AfterTool:"PostToolUse",PreCompress:"PreCompact"},es={startup:"startup",resume:"resume",clear:"clear"},Aa=["SessionStart","UserPromptSubmit","PostToolUse"],Na=["UserPromptSubmit","PreToolUse"],ct={stdout:"",exitCode:0};function y(e,t){return Object.hasOwn(e,t)?e[t]:void 0}var ts={run_shell_command:"Bash",read_file:"Read",grep_search:"Grep",web_fetch:"WebFetch"};function ya(e,t){if(e.startsWith(at))return e.slice(at.length);if(Object.hasOwn(ts,e))return ts[e];if(typeof t!="object"||t===null)return e;let n=t,o=y(n,"server_name"),r=y(n,"tool_name");return typeof o!="string"||typeof r!="string"?e:"mcp:"+o+":"+r}function Ca(e){let t=typeof e=="object"&&e!==null?e:void 0,n=t===void 0?void 0:y(t,"llmContent"),o=e===void 0?"":typeof e=="string"?e:typeof n=="string"?n:JSON.stringify(e),r=t===void 0?void 0:y(t,"error");return{isError:r!=null,bytes:Buffer.byteLength(o),text:o}}function ns(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("gemini: hook payload is not a JSON object");let t=e,n=y(t,"hook_event_name"),o=typeof n=="string"&&Object.hasOwn(Zr,n)?Zr[n]:void 0;if(o===void 0)throw new Error("gemini: unknown hook event "+String(n));let r={event:o,agent:"gemini",sessionId:String(y(t,"session_id")??""),cwd:String(y(t,"cwd")??"")},s=y(t,"source");o==="SessionStart"&&typeof s=="string"&&Object.hasOwn(es,s)&&(r.source=es[s]);let i=y(t,"prompt");if(o==="UserPromptSubmit"&&typeof i=="string"&&(r.prompt=i),o==="PreToolUse"||o==="PostToolUse"){let c=String(y(t,"tool_name")??""),a=y(t,"tool_input");r.tool={name:c,canonicalName:ya(c,y(t,"mcp_context")),input:typeof a=="object"&&a!==null&&!Array.isArray(a)?a:{}}}return o==="PostToolUse"&&(r.result=Ca(y(t,"tool_response"))),r}function os(e,t,n){switch(t.kind){case"allow":return ct;case"hint":return Aa.includes(e.event)?{stdout:JSON.stringify({hookSpecificOutput:{additionalContext:t.text}}),exitCode:0}:ct;case"deny":return Na.includes(e.event)?{stdout:JSON.stringify({decision:"deny",reason:t.rewritten===void 0?t.reason:t.rewritten+`
|
|
6
|
+
`+t.reason}),exitCode:0}:ct;case"replace":return e.event!=="PostToolUse"?ct:{stdout:JSON.stringify({decision:"deny",reason:t.output}),exitCode:0}}}var mn="mcp__context-mode__",Ia={startup:"startup",resume:"resume",clear:"clear",compact:"compact"},rs={run_shell_command:"Bash",Shell:"Bash",read_file:"Read",grep_search:"Grep",web_fetch:"WebFetch"},Da="PostToolUseFailure";function ss(e){let t=typeof e=="object"&&e!==null&&!Array.isArray(e)&&e.hook_event_name===Da,n=t?{...e,hook_event_name:"PostToolUse"}:e,o=te(n,"qwen",mn,Ia);if(o.tool!==void 0&&Object.hasOwn(rs,o.tool.name)&&(o.tool.canonicalName=rs[o.tool.name]),t){let r=e.error,s=typeof r=="string"?r:r===void 0?"":JSON.stringify(r);o.result={isError:!0,bytes:Buffer.byteLength(s),text:s}}return o}function is(e,t,n){return H(e,t,!1)}var ut="context-mode-",La={sessionStart:{event:"SessionStart",casing:"camel",failure:!1},userPromptSubmitted:{event:"UserPromptSubmit",casing:"camel",failure:!1},preToolUse:{event:"PreToolUse",casing:"camel",failure:!1},postToolUse:{event:"PostToolUse",casing:"camel",failure:!1},postToolUseFailure:{event:"PostToolUse",casing:"camel",failure:!0},SessionStart:{event:"SessionStart",casing:"snake",failure:!1},UserPromptSubmit:{event:"UserPromptSubmit",casing:"snake",failure:!1},PreToolUse:{event:"PreToolUse",casing:"snake",failure:!1},PostToolUse:{event:"PostToolUse",casing:"snake",failure:!1},PostToolUseFailure:{event:"PostToolUse",casing:"snake",failure:!0}},cs={startup:"startup",resume:"resume",new:"startup"},Pa={camel:{event:"hookEventName",session:"sessionId",tool:"toolName",args:"toolArgs",result:"toolResult"},snake:{event:"hook_event_name",session:"session_id",tool:"tool_name",args:"tool_input",result:"tool_result"}},ls="success";function dt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}var as={bash:"Bash"};function Ma(e){return e.startsWith(ut)?e.slice(ut.length):Object.hasOwn(as,e)?as[e]:e}function Ua(e){if(dt(e))return e;if(typeof e!="string")return{};try{let t=JSON.parse(e);return dt(t)?t:{}}catch{return{}}}var Ha={camel:{type:"resultType",text:"textResultForLlm"},snake:{type:"result_type",text:"text_result_for_llm"}};function va(e,t,n){let o=Ha[t],r=dt(e)?e:{},s=typeof r[o.text]=="string"?r[o.text]:"";return{isError:n||typeof r[o.type]=="string"&&r[o.type]!==ls,bytes:Buffer.byteLength(s),text:s}}var Fa=[["toolResult","postToolUse"],["toolName","preToolUse"],["prompt","userPromptSubmitted"],["source","sessionStart"]];function ja(e){return typeof e.hookEventName=="string"?e.hookEventName:e.hook_event_name!==void 0?e.hook_event_name:Fa.find(([t])=>Object.hasOwn(e,t))?.[1]}function us(e){if(!dt(e))throw new Error("copilot-cli: hook payload is not a JSON object");let t=ja(e),n=typeof t=="string"?La[t]:void 0;if(n===void 0)throw new Error("copilot-cli: unknown hook event "+String(t));let o=Pa[n.casing],r=n.event,s={event:r,agent:"copilot-cli",sessionId:String(e[o.session]??""),cwd:String(e.cwd??"")};if(r==="SessionStart"&&typeof e.source=="string"&&cs[e.source]!==void 0&&(s.source=cs[e.source]),r==="UserPromptSubmit"&&typeof e.prompt=="string"&&(s.prompt=e.prompt),r==="PreToolUse"||r==="PostToolUse"){let i=String(e[o.tool]??""),c={name:i,canonicalName:Ma(i),input:Ua(e[o.args])};s.tool=c}return r==="PostToolUse"&&(s.result=va(e[o.result],n.casing,n.failure)),s}var lt={stdout:"",exitCode:0};function ds(e,t,n){switch(t.kind){case"allow":return lt;case"hint":return e.event==="PostToolUse"?lt:{stdout:JSON.stringify({additionalContext:t.text}),exitCode:0};case"deny":return e.event!=="PreToolUse"?lt:{stdout:JSON.stringify({permissionDecision:"deny",permissionDecisionReason:t.rewritten===void 0?t.reason:t.rewritten+`
|
|
7
|
+
`+t.reason}),exitCode:0};case"replace":return e.event!=="PostToolUse"?lt:{stdout:JSON.stringify({modifiedResult:{resultType:ls,textResultForLlm:t.output}}),exitCode:0}}}var ft="mcp_context-mode_",ms=["SessionStart","UserPromptSubmit","PreToolUse","PostToolUse","PreCompact"],fs="mcp_",xs="_",Ba="new",gn=Object.freeze(["run_in_terminal","runTerminalCommand","bash","powershell"]),pt=Object.freeze(["read_file","view"]),hn=Object.freeze(["fetch_webpage","web_fetch"]),ps=Object.fromEntries([...gn.map(e=>[e,"Bash"]),...pt.map(e=>[e,"Read"]),...hn.map(e=>[e,"WebFetch"])]);function gs(e){if(e.startsWith(ft))return e.slice(ft.length);if(Object.hasOwn(ps,e))return ps[e];if(!e.startsWith(fs))return e;let t=e.slice(fs.length),n=t.indexOf(xs);return n<=0||n===t.length-1?e:"mcp:"+t.slice(0,n)+":"+t.slice(n+xs.length)}var Ae=e=>typeof e=="number"&&Number.isFinite(e);function hs(e,t,n){if(t==="Read"&&pt.includes(e)){let o={...n};if(e==="read_file")typeof n.filePath=="string"&&(o.file_path=n.filePath),Ae(n.startLine)&&(o.offset=n.startLine),Ae(n.startLine)&&Ae(n.endLine)&&n.endLine>=n.startLine&&(o.limit=n.endLine-n.startLine+1);else if(Array.isArray(n.view_range)&&Ae(n.view_range[0])){o.offset=n.view_range[0];let r=n.view_range[1];Ae(r)&&r>=n.view_range[0]&&(o.limit=r-n.view_range[0]+1)}return o}return t==="WebFetch"&&e==="fetch_webpage"&&Array.isArray(n.urls)&&typeof n.urls[0]=="string"?{...n,url:n.urls[0]}:n}function Wa(e){let t=e===void 0?"":typeof e=="string"?e:JSON.stringify(e);return{isError:typeof e=="object"&&e!==null&&e.is_error===!0,bytes:Buffer.byteLength(t),text:t}}var Xa={sessionStart:"SessionStart",userPromptSubmitted:"UserPromptSubmit",preToolUse:"PreToolUse",postToolUse:"PostToolUse",preCompact:"PreCompact"},Ka=[["toolResult","postToolUse"],["toolName","preToolUse"],["prompt","userPromptSubmitted"],["source","sessionStart"],["trigger","preCompact"]],Es={new:"startup",startup:"startup",resume:"resume"},qa="success";function xt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ya(e){if(xt(e))return e;if(typeof e!="string")return{};try{let t=JSON.parse(e);return xt(t)?t:{}}catch{return{}}}function Va(e){let t=xt(e)?e:{},n=typeof t.textResultForLlm=="string"?t.textResultForLlm:"";return{isError:typeof t.resultType=="string"&&t.resultType!==qa,bytes:Buffer.byteLength(n),text:n}}function _s(e,t){let n=typeof t=="string"?Xa[t]??ms.find(r=>r===t):void 0;if(n===void 0)throw new Error("vscode: unknown hook event "+String(t));let o={event:n,agent:"vscode",sessionId:String(e.sessionId??""),cwd:String(e.cwd??"")};if(n==="SessionStart"&&typeof e.source=="string"&&Es[e.source]!==void 0&&(o.source=Es[e.source]),n==="UserPromptSubmit"&&typeof e.prompt=="string"&&(o.prompt=e.prompt),n==="PreToolUse"||n==="PostToolUse"){let r=String(e.toolName??""),s=gs(r);o.tool={name:r,canonicalName:s,input:hs(r,s,Ya(e.toolArgs))}}return n==="PostToolUse"&&(o.result=Va(e.toolResult)),o}function bs(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("vscode: hook payload is not a JSON object");let t=e;if(t.hookEventName!==void 0)return _s(t,t.hookEventName);if(t.hook_event_name===void 0){let r=Ka.find(([s])=>Object.hasOwn(t,s))?.[1];if(r===void 0)throw new Error("vscode: missing required field hook_event_name");return _s(t,r)}let n=ms.find(r=>r===t.hook_event_name);if(n===void 0)throw new Error("vscode: unknown hook event "+String(t.hook_event_name));let o={event:n,agent:"vscode",sessionId:String(t.session_id??""),cwd:String(t.cwd??"")};if(n==="SessionStart"&&t.source===Ba&&(o.source="startup"),n==="UserPromptSubmit"&&typeof t.prompt=="string"&&(o.prompt=t.prompt),n==="PreToolUse"||n==="PostToolUse"){let r=String(t.tool_name??""),s=xt(t.tool_input)?t.tool_input:{},i=gs(r);o.tool={name:r,canonicalName:i,input:hs(r,i,s)}}return n==="PostToolUse"&&(o.result=Wa(t.tool_response)),o}function Ss(e,t,n){return H(e,t,!1)}var Et="mcp_context-mode_",Ts={SessionStart:"SessionStart",agentSpawn:"SessionStart",UserPromptSubmit:"UserPromptSubmit",PromptSubmit:"UserPromptSubmit",userPromptSubmit:"UserPromptSubmit",PreToolUse:"PreToolUse",preToolUse:"PreToolUse",PostToolUse:"PostToolUse",postToolUse:"PostToolUse"},za="USER_PROMPT",Rs="mcp_",bn=Object.freeze(["execute_bash","execute_pwsh","shell"]),Os=Object.fromEntries(bn.map(e=>[e,"Bash"])),As="_",Ns={startup:"startup",resume:"resume",clear:"clear",compact:"compact"};function $a(e){if(e.startsWith(Et))return e.slice(Et.length);if(Object.hasOwn(Os,e))return Os[e];if(!e.startsWith(Rs))return e;let t=e.slice(Rs.length),n=t.indexOf(As);return n<=0||n===t.length-1?e:"mcp:"+t.slice(0,n)+":"+t.slice(n+As.length)}function Qa(e){let t=e===void 0?"":typeof e=="string"?e:JSON.stringify(e);return{isError:!1,bytes:Buffer.byteLength(t),text:t}}function ys(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("kiro: hook payload is not a JSON object");let t=e,n=typeof t.hook_event_name=="string"?t.hook_event_name:"",o=Object.prototype.hasOwnProperty.call(Ts,n)?Ts[n]:void 0;if(o===void 0)throw new Error("kiro: unknown hook event "+String(t.hook_event_name));let r={event:o,agent:"kiro",sessionId:String(t.session_id??""),cwd:String(t.cwd??"")};if(o==="SessionStart"&&typeof t.source=="string"&&Ns[t.source]!==void 0&&(r.source=Ns[t.source]),o==="UserPromptSubmit"){let s=process.env[za];s!==void 0&&(r.prompt=s)}if(o==="PreToolUse"||o==="PostToolUse"){let s=String(t.tool_name??""),i=typeof t.tool_input=="object"&&t.tool_input!==null&&!Array.isArray(t.tool_input)?t.tool_input:{};r.tool={name:s,canonicalName:$a(s),input:i}}return o==="PostToolUse"&&(r.result=Qa(t.tool_response)),r}function Cs(e,t,n){if(e.event==="UserPromptSubmit")return{stdout:"",exitCode:0};switch(t.kind){case"allow":return{stdout:"",exitCode:0};case"hint":return{stdout:t.text,exitCode:0};case"deny":return{stdout:"",stderr:t.rewritten===void 0?t.reason:t.rewritten+`
|
|
8
|
+
`+t.reason,exitCode:2};case"replace":return{stdout:"",exitCode:0}}}var Sn="mcp__context-mode__",el={startup:"startup",resume:"resume",clear:"clear",compact:"compact"},tl={hook_event_name:"hookEventName",session_id:"sessionId"},nl="PostToolUseFailure";function ks(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("zcode: hook payload is not a JSON object");let t={...e};for(let[r,s]of Object.entries(tl))t[r]===void 0&&(t[r]=t[s]);let n=t.hook_event_name===nl;n&&(t.hook_event_name="PostToolUse");let o=te(t,"zcode",Sn,el);if(n){let r=typeof t.error=="string"?t.error:t.error===void 0?"":JSON.stringify(t.error);o.result={isError:!0,bytes:Buffer.byteLength(r),text:r}}return o}function Is(e,t,n){return H(e,t,!1)}var Ls="",Ds={session_start:{event:"SessionStart",source:"startup"},session_compact:{event:"SessionStart",source:"compact"},input:{event:"UserPromptSubmit"},tool_call:{event:"PreToolUse"},tool_result:{event:"PostToolUse"}},ws={bash:"Bash",read:"Read"};function rl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function sl(e){let t=e.content===void 0?"":typeof e.content=="string"?e.content:JSON.stringify(e.content),n={isError:e.isError===!0,bytes:Buffer.byteLength(t),text:t};return typeof e.exitCode=="number"&&(n.exitCode=e.exitCode),n}function Ps(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("pi: hook payload is not an object");let t=e,n=typeof t.type=="string"?t.type:"",o=Object.prototype.hasOwnProperty.call(Ds,n)?Ds[n]:void 0;if(o===void 0)throw new Error("pi: unknown hook event "+String(t.type));let r={event:o.event,agent:"pi",sessionId:String(t.sessionId??""),cwd:String(t.cwd??"")};if(o.source!==void 0&&(r.source=o.source),o.event==="UserPromptSubmit"&&typeof t.message=="string"&&(r.prompt=t.message),o.event==="PreToolUse"||o.event==="PostToolUse"){let s=String(t.toolName??"");r.tool={name:s,canonicalName:Object.hasOwn(ws,s)?ws[s]:s,input:rl(t.input)},typeof t.toolCallId=="string"&&(r.tool.callId=t.toolCallId)}return o.event==="PostToolUse"&&(r.result=sl(t)),typeof t.turn=="number"&&(r.turn=t.turn),r}function il(e,t){switch(t?.kind){case"hint":return{stdout:e.event==="SessionStart"?t.text:"",exitCode:0};case"deny":return e.event!=="PreToolUse"?{stdout:"",exitCode:0}:{stdout:t.rewritten===void 0?t.reason:t.rewritten+`
|
|
9
|
+
`+t.reason,exitCode:2};case"replace":return{stdout:e.event==="PostToolUse"?t.output:"",exitCode:0}}return{stdout:"",exitCode:0}}function Ms(e,t,n){let o=il(e,t);return t?.kind==="allow"?o:{stdout:o.stdout,exitCode:o.exitCode,role:Xr,content:o.stdout,timestamp:Date.now()}}function Us(e){return e.exitCode===2?{block:!0,reason:e.stdout}:void 0}var js="",Hs=Q+"_",vs={context:"SessionStart",prompt:"UserPromptSubmit","execute.before":"PreToolUse","execute.after":"PostToolUse",compaction:"PreCompact","step-finish":"Usage"},Tn="bash",Fs={webfetch:"WebFetch",[Tn]:"Bash"};function Rn(e){return e.startsWith(Hs)?e.slice(Hs.length):Object.prototype.hasOwnProperty.call(Fs,e)?Fs[e]:e}function al(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)?e:{}}function ll(e){let t=e.output===void 0?"":typeof e.output=="string"?e.output:JSON.stringify(e.output),n={isError:e.isError===!0,bytes:Buffer.byteLength(t),text:t};return typeof e.exitCode=="number"&&(n.exitCode=e.exitCode),n}function Gs(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new Error("opencode: hook payload is not an object");let t=e,n=typeof t.type=="string"?t.type:"",o=Object.prototype.hasOwnProperty.call(vs,n)?vs[n]:void 0;if(o===void 0)throw new Error("opencode: unknown hook event "+String(t.type));let r={event:o,agent:"opencode",sessionId:String(t.sessionID??""),cwd:String(t.directory??"")};if(o==="UserPromptSubmit"&&typeof t.message=="string"&&(r.prompt=t.message),o==="PreToolUse"||o==="PostToolUse"){let s=String(t.tool??"");r.tool={name:s,canonicalName:Rn(s),input:al(t.args)},typeof t.callID=="string"&&(r.tool.callId=t.callID)}return o==="PostToolUse"&&(r.result=ll(t)),typeof t.turn=="number"&&(r.turn=t.turn),r}function Bs(e,t,n){switch(t.kind){case"allow":return{stdout:"",exitCode:0};case"hint":return{stdout:e.event==="SessionStart"?t.text:"",exitCode:0};case"deny":return e.event!=="PreToolUse"?{stdout:"",exitCode:0}:{stdout:t.rewritten===void 0?t.reason:t.rewritten+`
|
|
10
|
+
`+t.reason,exitCode:2};case"replace":return{stdout:"",exitCode:0}}}var Ne={SessionStart:"SessionStart",UserPromptSubmit:"UserPromptSubmit",PreToolUse:"PreToolUse",PostToolUse:"PostToolUse"},Ws={shell:["Bash"],read:["Read"],grep:["Grep"],webfetch:["WebFetch"],edit:["Write","Edit","NotebookEdit"]},dl=Object.freeze([{id:"claude-code",installMode:"marketplace",projectSource:"env:CLAUDE_PROJECT_DIR",toolNamePrefix:En,nativeTools:Ws,execReadOnlyHint:!1,eventMap:Ne,compactDelivery:"sessionstart",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"package",path:"hooks/claude-code.json"},skillChannel:{kind:"package",path:"claude-code/skills"},decode:Jr,encode:zr},{id:"codex",installMode:"config-mcp",projectSource:"arg:--agent+cwd",toolNamePrefix:_n,nativeTools:{shell:["Bash"],edit:["apply_patch"]},execReadOnlyHint:!0,eventMap:Ne,compactDelivery:"sessionstart",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"home-file",path:".codex/hooks.json"},skillChannel:{kind:"home-dir",path:".codex/skills"},decode:$r,encode:Qr},{id:"gemini",installMode:"extension",projectSource:"spawn-cwd",toolNamePrefix:at,nativeTools:{shell:["run_shell_command"],read:["read_file"],grep:["grep_search"],webfetch:["web_fetch"]},execReadOnlyHint:!1,eventMap:{UserPromptSubmit:"BeforeAgent",PreToolUse:"BeforeTool",PostToolUse:"AfterTool",PreCompact:"PreCompress"},compactDelivery:"pending-flag",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"package",path:"hooks/hooks.json"},skillChannel:{kind:"package",path:"skills"},decode:ns,encode:os},{id:"qwen",installMode:"extension",projectSource:"spawn-cwd",toolNamePrefix:mn,nativeTools:{shell:["run_shell_command","Shell"],read:["read_file"],grep:["grep_search"],webfetch:["web_fetch"]},execReadOnlyHint:!1,eventMap:Ne,compactDelivery:"sessionstart",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"package",path:"hooks/qwen.json"},skillChannel:{kind:"package",path:"skills"},decode:ss,encode:is},{id:"copilot-cli",installMode:"plugin",projectSource:"arg:--agent+cwd",toolNamePrefix:ut,nativeTools:{shell:["bash"]},execReadOnlyHint:!1,eventMap:{SessionStart:"sessionStart",UserPromptSubmit:"userPromptSubmitted",PreToolUse:"preToolUse",PostToolUse:"postToolUse"},compactDelivery:"pending-flag",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"home-file",path:".copilot/hooks/context-mode.json"},skillChannel:{kind:"home-dir",path:".copilot/skills"},decode:us,encode:ds},{id:"vscode",installMode:"mcp-entry",projectSource:"arg:workspaceFolder",toolNamePrefix:ft,nativeTools:{shell:[...gn],read:[...pt],webfetch:[...hn]},execReadOnlyHint:!1,eventMap:{...Ne,PreCompact:"PreCompact"},compactDelivery:"pending-flag",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"home-file",path:".copilot/hooks/context-mode-vscode.json"},skillChannel:{kind:"home-dir",path:".agents/skills"},decode:bs,encode:Ss},{id:"kiro",installMode:"mcp-entry",projectSource:"arg:--agent+cwd",toolNamePrefix:Et,nativeTools:{shell:[...bn]},execReadOnlyHint:!1,eventMap:{SessionStart:"SessionStart",UserPromptSubmit:"UserPromptSubmit",PreToolUse:"PreToolUse",PostToolUse:"PostToolUse"},compactDelivery:"none",compactSummary:"none",hookTimeoutMs:U,denyChannel:"hint-only",hookChannel:{kind:"home-file",path:".kiro/hooks/context-mode.json"},skillChannel:{kind:"home-dir",path:".kiro/skills"},decode:ys,encode:Cs},{id:"zcode",installMode:"hooks+mcp",projectSource:"spawn-cwd",toolNamePrefix:Sn,nativeTools:Ws,execReadOnlyHint:!1,eventMap:Ne,compactDelivery:"sessionstart",compactSummary:"none",hookTimeoutMs:U,denyChannel:"deny-reason",hookChannel:{kind:"home-file",path:".zcode/cli/config.json"},skillChannel:{kind:"home-dir",path:".zcode/skills"},decode:ks,encode:Is},{id:"pi",installMode:"in-process",projectSource:"pi:ctx.cwd",toolNamePrefix:Ls,nativeTools:{shell:["bash"],read:["read"]},execReadOnlyHint:!1,eventMap:{SessionStart:"session_start",UserPromptSubmit:"input",PreToolUse:"tool_call",PostToolUse:"tool_result"},compactDelivery:"pi-flag",compactSummary:"none",hookTimeoutMs:Vt,denyChannel:"deny-reason",hookChannel:{kind:"in-process",path:"pi/index.js"},skillChannel:{kind:"package",path:"pi/skills"},decode:Ps,encode:Ms,checkPermission:Us},{id:"opencode",installMode:"in-process",projectSource:"spawn-cwd",toolNamePrefix:js,nativeTools:{shell:[Tn]},execReadOnlyHint:!1,eventMap:{SessionStart:"context",UserPromptSubmit:"prompt",PreToolUse:"execute.before",PostToolUse:"execute.after",PreCompact:"compaction",Usage:"step-finish"},compactDelivery:"opencode-cache",compactSummary:"none",hookTimeoutMs:Vt,denyChannel:"deny-reason",hookChannel:{kind:"in-process",path:"opencode/plugin.js"},skillChannel:{kind:"home-dir",path:".config/opencode/skills"},decode:Gs,encode:Bs,toCanonicalTool:Rn}]),fl=new Map(dl.map(e=>[e.id,e])),xl=new Set(["claude-code","gemini","copilot-cli","pi"]);function ye(e){return xl.has(e.id)}var pl=new Set(["claude-code","copilot-cli","pi"]);function Xs(e){return pl.has(e.id)&&ye(e)}var El=new Set(["claude-code","codex","gemini","qwen","copilot-cli","vscode","zcode"]);function _t(e){return El.has(e.id)}function Ce(e){return fl.get(e)}import{resolve as Jn}from"node:path";var _l=["&&","||",";;","|&",";","|","&","(",")"],ml=["&>>","&>"],gl=[">>",">|",">&",">","<<<","<<-","<<","<&","<>","<"],hl="&",bl="<<",Ks="<<-",Sl=";",qs=`\r
|
|
11
|
+
`,Ys=`\\
|
|
12
|
+
`,Vs=`\\\r
|
|
13
|
+
`,Tl="$(",$s="${",Qs="$'",ke="((",Js="))",ae="[[",mt="]]",On="<(",Zs=">(",D=2,ei=`
|
|
14
|
+
\r;&|()<>`,Rl=`
|
|
15
|
+
\r`,Ol='$`"\\\n',Al="case",Nl="esac";function le(e,t){e.end==="complete"&&(e.end=t)}function An(e){return e!==""&&e>="0"&&e<="9"}function zs(e){return e!==""&&(e>="a"&&e<="z"||e>="A"&&e<="Z")}function ti(e){return e===""||ei.includes(e)}function Nn(e){return e!==""&&Rl.includes(e)}function v(e,t,n,o,r){e!==null&&e.push({kind:t,text:n,start:o,end:r})}function gt(e,t){let n=e.s.indexOf("'",t+1);return n<0?(le(e,"unterminated-quote"),e.n):n+1}function ni(e,t){let n=t+Qs.length;for(;n<e.n;){let o=e.s.charAt(n);if(o==="\\"){n+=D;continue}if(o==="'")return n+1;n++}return le(e,"unterminated-quote"),e.n}function yn(e,t,n){let o=t+1;for(;o<e.n;){let r=e.s.charAt(o),s=e.s.charAt(o+1);if(r==="\\"){o+=D;continue}if(r==='"')return o+1;if(r==="$"&&s==="("){o=Ie(e,o,n);continue}if(r==="$"&&s==="{"){o=Cn(e,o,n);continue}if(r==="`"){o=ue(e,o);continue}o++}return le(e,"unterminated-quote"),e.n}function ue(e,t){let n=t+1;for(;n<e.n;){let o=e.s.charAt(n);if(o==="\\"){n+=D;continue}if(o==="`")return n+1;n++}return e.n}function Cn(e,t,n){let o=t+$s.length,r=0;for(;o<e.n;){let s=e.s.charAt(o),i=e.s.charAt(o+1);if(s==="\\"){o+=D;continue}if(s==="'"){o=gt(e,o);continue}if(s==='"'){o=yn(e,o,n);continue}if(s==="$"&&i==="("){o=Ie(e,o,n);continue}if(s==="`"){o=ue(e,o);continue}if(s==="{"&&r++,s==="}"){if(r===0)return o+1;r--}o++}return e.n}function kn(e,t){let n=0,o=t+ke.length;for(;o<e.length;){let r=e.charAt(o);if(r==="("&&n++,r===")"){if(n===0)return e.startsWith(Js,o)?o+Js.length:-1;n--}o++}return-1}function Ie(e,t,n){let o=t+Tl.length-1;if(e.s.startsWith(ke,o)){let r=kn(e.s,o);if(r>0)return r}return ht(e,o+1,!0,n+1,null,null)}function yl(e,t,n){let o=t+ae.length,r=0;for(;o<e.n;){let s=e.s.charAt(o),i=e.s.charAt(o+1);if(s==="\\"){o+=D;continue}if(s==="'"){o=gt(e,o);continue}if(s==='"'){o=yn(e,o,n);continue}if(s==="$"&&i==="("){o=Ie(e,o,n);continue}if(s==="$"&&i==="{"){o=Cn(e,o,n);continue}if(s==="`"){o=ue(e,o);continue}let c=Nn(e.s.charAt(o-1));if(c&&e.s.startsWith(mt,o)&&ti(e.s.charAt(o+mt.length))){if(r===0)return o+mt.length;r--,o+=mt.length;continue}if(c&&e.s.startsWith(ae,o)&&Nn(e.s.charAt(o+ae.length))){r++,o+=ae.length;continue}o++}return-1}function Cl(e,t){let n=t;for(;An(e.charAt(n));)n++;if(n===t){for(let o of ml)if(e.startsWith(o,t))return{end:t+o.length,op:o}}for(let o of gl){if(!e.startsWith(o,n))continue;let r=n+o.length;if(o.endsWith(hl))if(e.charAt(r)==="-")r++;else for(;An(e.charAt(r));)r++;return{end:r,op:o}}return null}function kl(e,t,n){let o=t;for(;o<e.n;){let r=e.s.charAt(o),s=e.s.charAt(o+1);if(ei.includes(r))break;if(r==="\\"){o+=D;continue}if(r==="'"){o=gt(e,o);continue}if(r==='"'){o=yn(e,o,n);continue}if(r==="$"&&s==="'"){o=ni(e,o);continue}if(r==="$"&&s==="("){o=Ie(e,o,n);continue}if(r==="$"&&s==="{"){o=Cn(e,o,n);continue}if(r==="`"){o=ue(e,o);continue}o++}return Math.min(o,e.n)}function Il(e,t,n,o,r){let s=t;for(let i of n){let c=s,a=!1;for(;s<e.n;){let l=e.s.indexOf(`
|
|
16
|
+
`,s),u=l<0?e.n:l,f=e.s.slice(s,u);if(f.endsWith("\r")&&(f=f.slice(0,-1)),s=l<0?e.n:l+1,(i.strip?f.trim():f)===i.tag){a=!0;break}}if(o!==null&&r!==null&&r.push(o.length),v(o,"unhandled",e.s.slice(c,s),c,s),!a)return le(e,"unterminated-heredoc"),e.n}return n.length=0,s}function ht(e,t,n,o,r,s){if(o>ee)return le(e,"too-deep"),e.n;let i=e.s,c=t,a=0,l=0,u=null,f=[];for(;c<e.n;){let d=i.charAt(c),x=i.charAt(c+1);if(d===" "||d===" "){c++;continue}if(i.startsWith(Ys,c)){c+=Ys.length;continue}if(i.startsWith(Vs,c)){c+=Vs.length;continue}if(d===`
|
|
17
|
+
`||d==="\r"){let h=c;c+=i.startsWith(qs,c)?qs.length:1,v(r,"op",Sl,h,c),u=null,f.length>0&&(c=Il(e,c,f,r,s));continue}if(d==="#"){for(;c<e.n&&i.charAt(c)!==`
|
|
18
|
+
`&&i.charAt(c)!=="\r";)c++;continue}if(i.startsWith(On,c)||i.startsWith(Zs,c)){let h=ht(e,c+On.length,!0,o+1,null,null);v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}let E=Cl(i,c);if(E!==null){v(r,"io",i.slice(c,E.end),c,E.end),u=E.op===bl||E.op===Ks?E.op===Ks:null,c=E.end;continue}if(i.startsWith(ae,c)&&Nn(i.charAt(c+ae.length))){let h=yl(e,c,o);if(h>0){v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}}if(i.startsWith(ke,c)){let h=kn(i,c);if(h>0){v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}}let _=_l.find(h=>i.startsWith(h,c));if(_!==void 0){if(n&&_==="("&&a++,n&&_===")"){if(a>0)a--;else if(l===0)return c+1}v(r,"op",_,c,c+_.length),c+=_.length,u=null;continue}if(d==="$"&&x==="("||d==="`"){let h=d==="`"?ue(e,c):Ie(e,c,o);if(ti(i.charAt(h))){v(r,"unhandled",i.slice(c,h),c,h),c=h,u=null;continue}}let m=c;c=kl(e,c,o);let S=i.slice(m,c);v(r,"word",S,m,c),u!==null&&(f.push({tag:de(S),strip:u}),u=null),n&&S===Al&&l++,n&&S===Nl&&l>0&&l--}return f.length>0&&le(e,"unterminated-heredoc"),e.n}function oi(e){let t={s:e,n:e.length,end:"complete"},n=[],o=[];return ht(t,0,!1,0,n,o),{tokens:n,heredocBodies:o,end:t.end}}function de(e){let t="",n=0,o=e.length;for(;n<o;){let r=e.charAt(n);if(r==="\\"){t+=e.charAt(n+1),n+=D;continue}if(r==="'"){let s=e.indexOf("'",n+1),i=s<0?o:s;t+=e.slice(n+1,i),n=i+1;continue}if(r==="$"&&e.charAt(n+1)==="'"){let s=n+Qs.length;for(;s<o&&e.charAt(s)!=="'";){if(e.charAt(s)==="\\"){t+=e.charAt(s+1),s+=D;continue}t+=e.charAt(s),s++}n=s+1;continue}if(r==='"'){let s=n+1;for(;s<o&&e.charAt(s)!=='"';){let i=e.charAt(s+1);if(e.charAt(s)==="\\"&&i!==""&&Ol.includes(i)){t+=i,s+=D;continue}t+=e.charAt(s),s++}n=s+1;continue}t+=r,n++}return t}function bt(e){let t={s:e,n:e.length,end:"complete"},n=[],o=!1,r=0;for(;r<t.n;){let s=e.charAt(r),i=e.charAt(r+1);if(s==="\\"){r+=D;continue}if(!o&&s==="'"){r=gt(t,r);continue}if(!o&&s==="$"&&i==="'"){r=ni(t,r);continue}if(s==='"'){o=!o,r++;continue}if(s==="$"&&i==="{"){r+=$s.length;continue}let c=e.startsWith(On,r);if(s==="$"&&i==="("||!o&&(c||e.startsWith(Zs,r))){let a=r+1;if(s==="$"&&e.startsWith(ke,a)&&kn(e,a)>0){r=a+ke.length;continue}let l=ht(t,a+1,!0,1,null,null),u=l>a+1&&e.charAt(l-1)===")"?l-1:l;n.push({wrapper:s==="$"?"$()":c?"<()":">()",body:e.slice(a+1,u)}),r=l;continue}if(s==="`"){let a=ue(t,r),l=a>r+1&&e.charAt(a-1)==="`"?a-1:a;n.push({wrapper:"`",body:e.slice(r+1,l)}),r=a;continue}r++}return n}function St(e){let t=e.charAt(0);if(!(zs(t)||t==="_"))return!1;for(let n=1;n<e.length;n++){let o=e.charAt(n);if(o==="="||o==="+"&&e.charAt(n+1)==="=")return!0;if(!(zs(o)||An(o)||o==="_"))return!1}return!1}var ci=[";","&","&&","||"],ai=["|","|&"],De="(",we=")",li=";;",wn=["(",")"],Dl="!",b=Object.freeze({group:"{",groupEnd:"}",if:"if",then:"then",elif:"elif",else:"else",fi:"fi",while:"while",until:"until",for:"for",in:"in",do:"do",done:"done",case:"case",esac:"esac",function:"function",coproc:"coproc",select:"select"}),ui=[],wl="[[",Ll="((",di=[">",">>",">|","&>","&>>",">&"],Pl=[...di,"<","<>","<<<","<<","<<-"],Ml=["","1"],fi=["-","/dev/stdout","/dev/stderr"],Rt="-",Le="--",Pe="=",Ul="/",Hl=Object.freeze({curl:{short:"o",long:"--output"},wget:{short:"O",long:"--output-document"}}),Tt=Object.freeze({head:"head",wc:"wc",grep:"grep",jq:"jq"}),In="-c",Dn="--bytes",vl="c",Fl="--count",ne=()=>({cmds:[],simple:null}),T=(e,t=0)=>e.toks[e.i+t],W=(e,t)=>e!==void 0&&e.kind==="op"&&e.text===t,C=(e,t)=>e!==void 0&&e.kind==="word"&&e.text===t,Ln=e=>e!==""&&e>="0"&&e<="9",jl=e=>Ln(e)||e>="a"&&e<="z"||e>="A"&&e<="Z"||e==="_";function Pn(e){let t=e.lastIndexOf(Ul);return t>=0&&t<e.length-1?e.slice(t+1):e}function Mn(e,t){let n=Hl[e.toLowerCase()];if(n===void 0)return!1;for(let o=0;o<t.length;o++){let r=t[o];if(r===Le)break;let s;if(r===n.long)s=t[o+1];else if(r.startsWith(n.long+Pe))s=r.slice(n.long.length+Pe.length);else if(r.startsWith(Rt)&&!r.startsWith(Le)){let i=r.indexOf(n.short,Rt.length);if(i<0)continue;s=i+n.short.length<r.length?r.slice(i+n.short.length):t[o+1]}else continue;if(s!==void 0&&!fi.includes(s))return!0}return!1}function Gl(e){if(e==="")return!1;for(let t of e)if(!Ln(t))return!1;return!0}function Bl(e){for(let t=0;t<e.length;t++){let n=e[t],o;if(n===In||n===Dn?o=e[t+1]:n.startsWith(Dn+Pe)?o=n.slice(Dn.length+Pe.length):n.startsWith(In)&&!n.startsWith(Le)&&(o=n.slice(In.length)),o!==void 0)return Gl(o)&&Number(o)<=be}return!1}function Wl(e){for(let t of e){if(t===Le)return!1;if(t===Fl||t.startsWith(Rt)&&!t.startsWith(Le)&&t.includes(vl))return!0}return!1}function ri(e){if(!e.startsWith(I.fieldSep))return!1;for(let t of e.slice(I.fieldSep.length).split(I.fieldSep)){if(t==="")return!1;for(let n of t)if(!jl(n))return!1}return!0}function Xl(e){let t=e.trim();if(t===I.identity||t===I.length)return!0;let n=t.indexOf(I.pipeLength.charAt(0));if(n<0)return ri(t);let o=t.slice(0,n).trim(),r=I.pipeLength.slice(1).trim();return(o===I.identity||ri(o))&&t.slice(n+1).trim()===r}function Kl(e){let t=e.argv0.toLowerCase();if(t===Tt.wc)return!0;if(t===Tt.head)return Bl(e.args);if(t===Tt.grep)return Wl(e.args);if(t===Tt.jq){let n=e.args.filter(o=>!o.startsWith(Rt));return n.length===1&&Xl(n[0])}return!1}function Un(e){return bt(e).length===0?[]:[{argv0:"",args:[],redirectsToFile:!1,endsInBoundedSink:!1,raw:e}]}function xi(e,t,n){return n<=t?[]:Un(e.src.slice(e.toks[t].start,e.toks[n-1].end))}function pi(e,t){for(let n of e)n.insideConstruct===void 0&&(n.insideConstruct=t)}function ql(e){let t=0;for(;Ln(e.charAt(t));)t++;return{fd:e.slice(0,t),op:e.slice(t)}}function Ei(e){let t=ql(e.toks[e.i].text);if(e.i++,!Pl.includes(t.op))return!1;let n=T(e);return n===void 0||n.kind==="op"||n.kind==="io"?!1:(e.i++,di.includes(t.op)&&Ml.includes(t.fd)&&!fi.includes(de(n.text)))}function _i(e){let t=!1;for(;T(e)?.kind==="io";)t=Ei(e)||t;return t}function mi(e){for(;T(e)?.kind==="op"&&ci.includes(T(e)?.text??"");)e.i++}function fe(e,t){if(e.depth++,e.depth>ee)return e.err="nesting-too-deep",ne();let n=t();if(e.depth--,_i(e))for(let o of n)o.redirectsToFile=!0;return{cmds:n,simple:null}}function gi(e){if(mi(e),!C(T(e),b.do))return[];e.i++;let t=F(e,[b.done]);return C(T(e),b.done)&&e.i++,t}function Yl(e){e.i++;let t=F(e,[b.then]);for(;e.err===null;){let n=T(e);if(C(n,b.then)||C(n,b.else)){e.i++,t.push(...F(e,[b.elif,b.else,b.fi]));continue}if(C(n,b.elif)){e.i++,t.push(...F(e,[b.then]));continue}C(n,b.fi)&&e.i++;break}return t}function Vl(e){e.i++;let t=F(e,[b.do]);return t.push(...gi(e)),t}function Jl(e){e.i++;let t=[],n=T(e);if(n?.kind==="unhandled")e.i++;else if(n?.kind==="word"&&e.i++,C(T(e),b.in)){e.i++;let o=e.i;for(;(T(e)?.kind==="word"||T(e)?.kind==="unhandled")&&!C(T(e),b.do);)e.i++;t.push(...xi(e,o,e.i))}return t.push(...gi(e)),t}function zl(e){e.i++;let t=[],n=T(e);for(n!==void 0&&n.kind!=="op"&&n.kind!=="io"&&(e.i++,t.push(...xi(e,e.i-1,e.i))),C(T(e),b.in)&&e.i++;e.i<e.toks.length&&e.err===null;){let o=e.toks[e.i];if(e.bodies.has(e.i)||o.kind==="op"&&(ci.includes(o.text)||o.text===li)){e.i++;continue}if(C(o,b.esac)){e.i++;break}for(W(o,De)&&e.i++;e.i<e.toks.length&&!W(T(e),we);){let s=e.toks[e.i];if(s.kind==="op"&&!ai.includes(s.text))break;e.i++}if(!W(T(e),we))break;e.i++;let r=F(e,[b.esac]);pi(r,b.case),t.push(...r)}return t}function si(e,t){mi(e);let n=hi(e);return pi(n.cmds,t),{cmds:n.cmds,simple:null}}function ii(e,t){return wn.every((n,o)=>W(e.toks[t+o],n))}function $l(e){let t=e.i,n=[],o=!1;for(;e.i<e.toks.length;){let l=e.toks[e.i];if(l.kind==="op")break;if(l.kind==="io"){o=Ei(e)||o;continue}if(n.length===0&&l.kind==="word"&&St(l.text)){e.i++;let u=T(e);if(l.text.endsWith(Pe)&&u!==void 0&&W(u,De)&&u.start===l.end){let f=0;for(;e.i<e.toks.length;){let d=e.toks[e.i];if(e.i++,W(d,De)&&f++,W(d,we)&&--f===0)break}}continue}n.push(l),e.i++}if(e.i===t)return ne();let r=e.src.slice(e.toks[t].start,e.toks[e.i-1].end);if(n.length===0)return{cmds:Un(r),simple:null};let s=l=>l.kind==="word"?de(l.text):l.text,i=Pn(s(n[0])),c=n.slice(1).map(s),a={argv0:i,args:c,redirectsToFile:o||Mn(i,c),endsInBoundedSink:!1,raw:r};return{cmds:[a],simple:a}}function hi(e){let t=T(e);if(t===void 0)return ne();if(t.kind==="op")return t.text!==De?ne():fe(e,()=>{e.i++;let n=F(e,ui);return W(T(e),we)&&e.i++,n});if(t.kind==="unhandled"&&(t.text.startsWith(wl)||t.text.startsWith(Ll)))return e.i++,_i(e),{cmds:Un(t.text),simple:null};if(t.kind==="word")switch(t.text){case b.group:return fe(e,()=>{e.i++;let n=F(e,[b.groupEnd]);return C(T(e),b.groupEnd)&&e.i++,n});case b.if:return fe(e,()=>Yl(e));case b.while:case b.until:return fe(e,()=>Vl(e));case b.for:return fe(e,()=>Jl(e));case b.case:return fe(e,()=>zl(e));case b.coproc:return e.err="coproc",ne();case b.select:return e.err="select",ne();case b.function:{e.i++;let n=T(e),o="";return n?.kind==="word"&&(o=de(n.text),e.i++),ii(e,e.i)&&(e.i+=wn.length),si(e,o)}default:if(ii(e,e.i+1))return e.i+=wn.length+1,si(e,de(t.text))}return $l(e)}function Ql(e){C(T(e),Dl)&&e.i++;let t=[],n=ne();for(;e.err===null;){n=hi(e),t.push(...n.cmds);let o=T(e);if(o!==void 0&&o.kind==="op"&&ai.includes(o.text)){e.i++;continue}break}if(n.simple!==null&&Kl(n.simple))for(let o of t)o.endsInBoundedSink=!0;return t}function F(e,t){let n=[];for(;e.i<e.toks.length&&e.err===null;){let o=e.toks[e.i];if(e.bodies.has(e.i)){e.i++;continue}if(o.kind==="op"){if(o.text===we||o.text===li)return n;if(o.text!==De){e.i++;continue}}if(o.kind==="word"&&t.includes(o.text))return n;let r=e.i;n.push(...Ql(e)),e.i===r&&e.err===null&&e.i++}return n}function Me(e){let t=oi(e);if(t.end==="unterminated-quote")return{ok:!1,construct:"unterminated-quote"};if(t.end==="unterminated-heredoc")return{ok:!1,construct:"unterminated-heredoc"};if(t.end==="too-deep")return{ok:!1,construct:"nesting-too-deep"};let n={toks:t.tokens,src:e,bodies:new Set(t.heredocBodies),i:0,depth:0,err:null},o=[];for(;n.i<n.toks.length&&n.err===null;)o.push(...F(n,ui)),n.i<n.toks.length&&n.i++;return n.err!==null?{ok:!1,construct:n.err}:{ok:!0,commands:o}}import{join as At}from"node:path";var bi=`\r
|
|
19
|
+
`,Zl=`
|
|
20
|
+
`;function Ot(e){let t=e.length>0&&e.charCodeAt(0)===65279?e.slice(1):e;return t.indexOf(bi)<0?t:t.split(bi).join(Zl)}import{join as Si,posix as Xx,win32 as Kx}from"node:path";var eu=Object.freeze({NODE_TOO_OLD:"Node <v> is below 24.15.0. Fix: install Node 24.15.0 or later.",NO_SQLITE:"node:sqlite failed to load. Fix: run ctx_doctor.",DB_GONE:"context.db path vanished. Fix: run ctx_doctor.",NO_PROJECT:"Project source <kind> is missing. Fix: run ctx_doctor.",UNKNOWN_FIELD:'Unknown field "<f>". Fix: use "queries".',TIMEOUT:"Timed out after <ms> ms. Fix: pass background: true.",NO_GIT_BASH:"Git Bash not found. Fix: install Git for Windows.",NO_RUNTIME:"No <lang> runtime on PATH. Fix: install it or pick another language.",FETCH_FAILED:"Fetch failed: <code>. Fix: check the URL or proxy.",SSRF:"Blocked private address <host>. Fix: use a public URL.",OUTSIDE_ROOT:"Path <p> is outside the project. Fix: use a path inside <root>.",INVALID_ARGS:"Invalid argument <field>. Fix: <action>.",ONE_OF_INPUT:"Pass exactly one of <names>. Fix: drop the extra field.",SPAWN_FAILED:"Failed to start the process: <detail>. Fix: check the command and PATH.",DB_CORRUPT:"context.db failed integrity_check. Fix: run ctx_doctor.",SCHEMA_STALE:"context.db schema is version <found>, expected <want>. Fix: run ctx_doctor.",NO_GIT_DIR:"No git repository at <path>. Fix: run context-mode inside a git repository.",NO_HOME:"Env var <name> is not set. Fix: set <name> to your home directory.",PLUGIN_ROOT_MISSING:"Plugin root for <agent> not found at <path>. Fix: run ctx_upgrade.",BUNDLE_HASH_MISMATCH:"Fetched bundle hash does not match SHA256SUMS. Fix: run ctx_upgrade again.",CONFIG_PARSE_FAILED:"<agent> config at <path> did not parse as <format>. Fix: fix the syntax error and re-run ctx_upgrade."});function tu(e,t){let n=eu[e],o="",r=0;for(;r<n.length;){if(n[r]!=="<"){o+=n[r],r+=1;continue}let s=r+1;for(;s<n.length&&n[s]!=="<"&&n[s]!==">";)s+=1;if(s>=n.length){o+=n.slice(r);break}if(n[s]==="<"){o+="<",r+=1;continue}let i=n.slice(r+1,s),c=t[i];if(c===void 0)throw new Error("formatError: missing var "+i+" for "+e);o+=String(c),r=s+1}return o}var R=class extends Error{code;vars;constructor(t,n){super(tu(t,n??{})),this.code=t,this.vars=n??{}}toLine(){return this.message}};var{mkdirSync:nu,realpathSync:ou}=process.getBuiltinModule("node:fs");function xe(e,t=process.platform){let n=o=>o!==void 0&&o!=="";return t==="win32"?n(e.USERPROFILE)?e.USERPROFILE:n(e.HOMEDRIVE)&&n(e.HOMEPATH)?e.HOMEDRIVE+e.HOMEPATH:n(e.HOME)?e.HOME:null:n(e.HOME)?e.HOME:n(e.USERPROFILE)?e.USERPROFILE:null}function Ue(e,t){let n=e[it];return n!==void 0&&n!==""?n:Si(t,...Wr["claude-code"])}function ru(e,t=process.platform){let n=xe(e,t);if(n!==null)return n;throw new R("NO_HOME",{name:t==="win32"?"USERPROFILE":"HOME"})}function Ti(e){let t=Si(ru(e),qo.slice(1));return nu(t,{recursive:!0}),ou.native(t)}var{readFileSync:Ni}=process.getBuiltinModule("node:fs");function pe(e){return e.agentId!==void 0&&e.agentId!==""}function Fn(e,t){if(t===null)return"C";let n=Ce(e.agent),o=new Set(t);for(let r of Ye)if(o.has(n.toolNamePrefix+r))return"A";for(let r of n.nativeTools.shell)if(o.has(r))return"B";return"C"}function jn(e,t){if(!pe(e))return null;let n=Ce(e.agent);if(t.manifestTools!==void 0)return Ai(t.manifestTools.map(c=>Hn(n,c)));let o=e.agentType??"",r=su(o,t);if(r===null)return null;let s=(r.tools??uu(n)).map(c=>Hn(n,c)),i=r.disallowed.map(c=>Hn(n,c));return Ai(s.filter(c=>!i.some(a=>fu(a,c))))}function su(e,t){if(!iu(e))return null;let n=cu(t.env);if(e.indexOf(ce)>=0){if(n!==null){let s=au(Ue(t.env,n),e);if(s!==null)return s}}else{let s=vn(At(t.projectDir,Vo,$e,e+Qe));if(s!==null)return s;if(n!==null){let i=vn(At(Ue(t.env,n),$e,e+Qe));if(i!==null)return i}}let r=t.cliAgents;if(r!==void 0&&Object.prototype.hasOwnProperty.call(r,e)){let s=r[e];return{tools:Array.isArray(s.tools)?s.tools:null,disallowed:Array.isArray(s.disallowedTools)?s.disallowedTools:[]}}return null}function iu(e){if(e===""||e==="."||e===".."||e.indexOf("/")>=0||e.indexOf("\\")>=0)return!1;for(let t of e.split(ce))if(t===""||t==="."||t==="..")return!1;return!0}function cu(e){return xe(e)}function au(e,t){let n=t.indexOf(ce),o=t.slice(0,n),r=t.slice(n+ce.length);if(r.indexOf(ce)>=0)return null;let s;try{s=JSON.parse(Ot(Ni(At(e,Jo,zo),"utf8")))}catch{return null}let i=s?.plugins;if(i===null||typeof i!="object")return null;for(let c of Object.keys(i)){let a=c.indexOf($o);if((a<0?c:c.slice(0,a))!==o)continue;let l=i[c];if(Array.isArray(l))for(let u of l){let f=u?.installPath;if(typeof f!="string"||f==="")continue;let d=vn(At(f,$e,r+Qe));if(d!==null)return d}}return null}function vn(e){let t;try{t=Ni(e,"utf8")}catch{return null}return lu(t)}function lu(e){let t=e.split(`
|
|
21
|
+
`).map(i=>i.endsWith("\r")?i.slice(0,-1):i);if(t.length===0||t[0].trim()!==Zt)return null;let n=-1;for(let i=1;i<t.length;i++)if(t[i].trim()===Zt){n=i;break}if(n<0)return null;let o=t.slice(1,n),r=Ri(o,Qo),s=Ri(o,Zo);return{tools:r!==null&&r.length>0?r:null,disallowed:s??[]}}function Ri(e,t){for(let n=0;n<e.length;n++){let o=e[n];if(!o.startsWith(t+":"))continue;let r=o.slice(t.length+1).trim();if(r===""){let s=[];for(let i=n+1;i<e.length;i++){let c=e[i].trim();if(!c.startsWith("-"))break;s.push(Oi(c.slice(1).trim()))}return s.filter(i=>i!=="")}return r.startsWith("[")&&r.endsWith("]")&&(r=r.slice(1,-1)),r.split(",").map(s=>Oi(s.trim())).filter(s=>s!=="")}return null}function Oi(e){return e.length>1&&(e[0]==='"'||e[0]==="'")&&e.endsWith(e[0])?e.slice(1,-1):e}function uu(e){let t=e.nativeTools;return[...t.shell,...t.read??[],...t.grep??[],...t.webfetch??[],...t.edit??[],...Ye.map(n=>e.toolNamePrefix+n)]}function Hn(e,t){let n=t.indexOf("("),o=(n>=0?t.slice(0,n):t).trim();return e.id==="gemini"&&o.startsWith(er)?du(o):o}function du(e){let t="";for(let n of e){let o=n>="a"&&n<="z"||n>="A"&&n<="Z"||n>="0"&&n<="9"||tr.indexOf(n)>=0;t+=o?n:"_"}return t}function fu(e,t){if(e.endsWith("*"))return t.startsWith(e.slice(0,-1));if(e===t)return!0;if(e.startsWith(en)){let n=e.slice(en.length);if(n!==""&&n.indexOf(tn)<0)return t.startsWith(e+tn)}return!1}function Ai(e){return[...new Set(e.filter(t=>t!==""))]}var oe="",yi=Object.freeze({sudo:{valueShorts:"ugpChDrtUTR",valueLongs:["--user","--group","--prompt","--chdir","--host"],assignments:!0,duration:!1,refuseShorts:oe},env:{valueShorts:"uCS",valueLongs:["--unset","--chdir","--split-string"],assignments:!0,duration:!1,refuseShorts:oe},time:{valueShorts:"fo",valueLongs:["--format","--output"],assignments:!1,duration:!1,refuseShorts:oe},nice:{valueShorts:"n",valueLongs:["--adjustment"],assignments:!1,duration:!1,refuseShorts:oe},timeout:{valueShorts:"sk",valueLongs:["--signal","--kill-after"],assignments:!1,duration:!0,refuseShorts:oe},command:{valueShorts:oe,valueLongs:[],assignments:!1,duration:!1,refuseShorts:"vV"},xargs:{valueShorts:"aEdILnPs",valueLongs:["--arg-file","--delimiter","--max-args","--max-procs","--max-chars"],assignments:!1,duration:!1,refuseShorts:oe}}),xu=["bash","sh"],pu="c",Eu=" -c",_u=["-o","+o","-O","+O"],Nt="-",mu="+",Gn="--",gu="smhd",hu=".",Ci=e=>e!==""&&e>="0"&&e<="9";function bu(e){if(e===""||!Ci(e.charAt(0)))return!1;for(let t=0;t<e.length;t++){let n=e.charAt(t);if(!(Ci(n)||n===hu))return t===e.length-1&&gu.includes(n)}return!0}function Su(e,t){let n=0;for(;n<t.length;){let o=t[n];if(o===Gn){n++;break}if(e.assignments&&St(o)){n++;continue}if(o.startsWith(Gn)){n++,e.valueLongs.includes(o)&&n++;continue}if(o.startsWith(Nt)&&o.length>Nt.length){n++;for(let r of e.refuseShorts)if(o.includes(r))return null;for(let r=Nt.length;r<o.length;r++)if(e.valueShorts.includes(o.charAt(r))){r===o.length-1&&n++;break}continue}break}if(e.duration){if(n>=t.length||!bu(t[n]))return null;n++}return n<t.length?t.slice(n):null}function Tu(e){let t=!1;for(let n=0;n<e.length;n++){let o=e[n];if(!o.startsWith(Gn)){if(o.startsWith(Nt)||o.startsWith(mu)){o.includes(pu)&&(t=!0),_u.includes(o)&&n++;continue}return t?o:null}}return null}function ki(e,t){let n={...e};return n.insideConstruct===void 0&&t.insideConstruct!==void 0&&(n.insideConstruct=t.insideConstruct),n}function Bn(e,t,n,o){let r=[...t],s=e.argv0,i=e.args,c=e.redirectsToFile;for(;;){let a=s.toLowerCase();if(xu.includes(a)){let f=Tu(i),d=f!==null&&n<ee?Me(f):null;if(d===null||!d.ok)break;for(let x of d.commands){let E=ki(x,e);E.redirectsToFile=x.redirectsToFile||c,E.endsInBoundedSink=x.endsInBoundedSink||e.endsInBoundedSink,Bn(E,[...r,a+Eu],n+1,o)}return}let l=Object.hasOwn(yi,a)?yi[a]:void 0,u=l===void 0?null:Su(l,i);if(u===null)break;r.push(a),s=Pn(u[0]),i=u.slice(1),c=c||Mn(s,i)}if(o.push({...e,argv0:s,args:i,redirectsToFile:c,wrappedBy:r}),!(n>=ee))for(let a of bt(e.raw)){let l=Me(a.body);if(l.ok)for(let u of l.commands)Bn(ki(u,e),[...t,a.wrapper],n+1,o)}}function Ii(e){let t=[];for(let n of e)Bn(n,[],0,t);return t}import{isAbsolute as Ou,join as Wn,relative as Au,sep as Xn}from"node:path";var{readFileSync:Ru}=process.getBuiltinModule("node:fs"),Di=".claude",Nu="settings.local.json",wi="settings.json",yu="Bash",Cu="Read",Li=":*",Pi="//",Mi="~/",Ui="./",Hi="..",ku=`
|
|
22
|
+
\r`,Iu=Object.freeze({tool:yu});function Du(e,t){if(t!=="claude-code")return[];let n=xe(process.env),o=process.env[it],r=o!==void 0&&o!==""?o:n===null?null:Ue(process.env,n),s=[Wn(e,Di,Nu),Wn(e,Di,wi)];return r===null?s:[...s,Wn(r,wi)]}function vi(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function wu(e){let t;try{t=Ot(Ru(e,"utf8"))}catch(s){return s.code==="ENOENT"?{kind:"absent"}:{kind:"bad"}}let n;try{n=JSON.parse(t)}catch{return{kind:"bad"}}if(!vi(n))return{kind:"bad"};let o=n.permissions;if(o===void 0)return{kind:"ok",deny:[]};if(!vi(o))return{kind:"bad"};let r=o.deny;return r===void 0?{kind:"ok",deny:[]}:!Array.isArray(r)||!r.every(s=>typeof s=="string")?{kind:"bad"}:{kind:"ok",deny:r}}function Fi(e,t){let n=[];for(let o of Du(e,t)){let r=wu(o);if(r.kind==="bad")return null;r.kind==="ok"&&n.push(...r.deny)}return n}function Lu(e,t){let n=[],o=0;for(;o<e.length;){let r=e[o];if(r==="*"&&t&&e[o+1]==="*"){let s=e[o+2]==="/";n.push({t:s?"globstarDir":"globstar"}),o+=s?3:2;continue}r==="*"?(n.length===0||n[n.length-1].t!=="star")&&n.push({t:"star"}):r==="?"?n.push({t:"any1"}):n.push({t:"lit",c:r}),o++}return n}function X(e,t,n){let o=Lu(e,n),r=t.length,s=new Uint8Array(r+1);s[r]=1;for(let i=o.length-1;i>=0;i--){let c=o[i],a=new Uint8Array(r+1),l=0;for(let u=r;u>=0;u--){let f=u<r,d=f?t[u]:"";switch(c.t){case"lit":a[u]=f&&d===c.c?s[u+1]:0;break;case"any1":a[u]=f&&!(n&&d==="/")?s[u+1]:0;break;case"star":a[u]=s[u]||(f&&!(n&&d==="/")?a[u+1]:0);break;case"globstar":a[u]=s[u]||(f?a[u+1]:0);break;case"globstarDir":f&&d==="/"&&s[u+1]&&(l=1),a[u]=s[u]||l;break}}s=a}return s[0]===1}function Pu(e){let t=e.indexOf("(");if(t<1||!e.endsWith(")"))return null;let n=e.slice(t+1,e.length-1);return n===""?null:{tool:e.slice(0,t),glob:n}}function Mu(e,t){if(!e.endsWith(Li))return X(e,t,!1);let n=e.slice(0,e.length-Li.length);if(X(n,t,!1))return!0;for(let o=0;o<t.length;o++)if(ku.includes(t[o])&&X(n,t.slice(0,o),!1))return!0;return!1}var Uu=/^[A-Za-z]:(?=\/)/;function He(e){return Xn==="/"?e:e.split(Xn).join("/")}function Hu(e,t,n){if(e.startsWith(Ui)){if(n===void 0)return!1;let r=Au(n,t);return r===""||r===Hi||r.startsWith(Hi+Xn)||Ou(r)?!1:X(e.slice(Ui.length),He(r),!0)}let o=He(t);if(e.startsWith(Pi)){let r=He(e.slice(Pi.length-1));return X(r,o,!0)||X(r,o.replace(Uu,""),!0)}if(e.startsWith(Mi)){let r=xe(process.env);return r!==null&&X(He(r)+e.slice(Mi.length-1),o,!0)}return X(He(e),o,!0)}function K(e,t,n=Iu){for(let o of t){let r=Pu(o);if(r===null||r.tool!==n.tool)continue;if(n.tool===Cu?Hu(r.glob,e,n.projectDir):Mu(r.glob,e))return o}return null}var up=Object.freeze({ctx_execute:"Runs code in a sandboxed subprocess in the project directory (shell, powershell, javascript, typescript, python, or another runtime on PATH); only what the code prints comes back. For a large file, set `file` to its local path: the code gets it in the CTX_FILE environment variable. Set `intent` when output may be large: the matching sections come back and the full output is indexed for ctx_search. `timeoutMs` defaults to and caps at 600000; then the whole process tree is killed.\n",ctx_batch:"Runs several shell commands, then answers several search queries over their combined output, in one call. Use it to collect facts from more than one command at once, for example test results plus recent commits, when you need specific answers rather than the full text. Returns the matching sections and a one-line footer.",ctx_index:"Stores content so it can be searched later: a local file or folder (nested .gitignore files are respected), raw text, or a URL, which is fetched and converted to Markdown. Use it for documentation or large files you will query more than once, then use ctx_search instead of reading the content again. Returns the source label and how many chunks were stored.",ctx_search:"Searches content stored with ctx_index and earlier sandbox output in this project. Pass several queries in one call. By default it searches the current worktree; set `scope` to `project` for all worktrees or `session` for this session only. Results from the current session rank first, then by relevance, ranked with measurably better recall than plain keyword search. Set `sort` to `timeline` for oldest-first order across this session, prior sessions and memory, paged with `after`; `offset` is for relevance order only. Set `source` to `decision` to search only rows where the user answered a question. Every hit names its source. When nothing matches, the reply states the scope and how many sources are indexed.",ctx_resume:"Returns a summary of up to 2 KB for this session: the last task and user request, files changed, open errors, and search terms for ctx_search. A large row is shown as a pointer line instead of its full text; call `ctx_resume(seq: N)` with that line's number to read the full row. Call it with no `seq` to get the state block on demand. Use it after the conversation was compacted or resumed, before you repeat earlier work.",ctx_stats:"Reports how many bytes context-mode kept out of the conversation in this session and in this project, per agent, as a Markdown table. Show the table to the user as it is. Use it when the user asks what context-mode saved.",ctx_doctor:"Checks this context-mode install and reports a table with one row per check: version, Node and node:sqlite, host config and hooks for this agent, MCP connection, project and worktree, database health, index contents, and hook timing. Each failed row names its cause and the fix in one line. It changes nothing. Use it when the user asks whether context-mode works, or after a context-mode error.",ctx_upgrade:"Updates context-mode to the latest release for this agent and rewrites only context-mode's own entries in the host config. User entries and user settings such as hook timeouts are kept, and old entries are erased. Returns a table of what changed and whether a restart is needed. Use it only when the user asks to update context-mode.",ctx_purge:"Deletes stored data: one session, one indexed source, or everything stored for this project. This cannot be undone. Use it only when the user asks to forget or reset data."}),ji='context-mode: {size}-byte file, over the one-read limit. Run ctx_execute(language, code, file="{path}") and print only the answer.';var vu="{size}",Fu="{path}";function Kn(e,t,n=""){return M(ji,n).split(vu).join(String(t)).split(Fu).join(e)}var{statSync:ju}=process.getBuiltinModule("node:fs"),Wi="Bash",Yn="Read",Gu="WebFetch",Bu="ctx_execute",Wu="ctx_batch",Xi="shell",Xu="1",q="-",Vn="--",Ku="=",qu=".",Gi=",",qn="p",Yu=["-e","--expression"],Vu=";&|(`\n\r",se=Object.freeze({kind:"allow"}),Y=e=>({kind:"deny",reason:e}),re=e=>typeof e=="string"?e:void 0,Bi=e=>e!=null,V=(e,t)=>e.includes(t);function Ki(e,t,n){let o=e.tool;if(o===void 0)return se;let r=o.canonicalName,s=o.input,i;if(n===null){if(process.env[Yo]===Xu)return Y(M(Ze,t.toolNamePrefix));process.stderr.write(fr+`
|
|
23
|
+
`),i=[]}else i=n;let c=Ju(r,s,e.cwd,i);return c!==null?Y(Te+c):r===Gu?Zu(s,t):r===Wi?ed(e,t,s,i):r===Yn?sd(e,t,s):se}function qi(e,t,n,o){let r=e==="webfetch",s=r?lr.map(c=>n.toolNamePrefix+c).join(dr):n.toolNamePrefix+ar,i=JSON.stringify(r?{url:t}:{language:Xi,code:t,intent:o??cr});return[nr+or[e]+rr,sr,ir+s,i].join(`
|
|
24
|
+
`)}function Yi(e){for(let t of Nr){let n=re(e[t]);if(n!==void 0&&n!=="")return n}}function Ju(e,t,n,o){if(o.length===0)return null;let r=s=>K(Jn(n,s),o,{tool:Yn,projectDir:n});if(e===Wi){let s=re(t.command);return s===void 0?null:K(s,o)}if(e===Yn){let s=Yi(t);return s===void 0?null:r(s)}if(e===Bu){let s=re(t.file),i=s===void 0||s===""?null:r(s);if(i!==null)return i;let c=re(t.code);return t.language===Xi&&c!==void 0?K(c,o):null}if(e===Wu&&Array.isArray(t.commands))for(let s of t.commands){let i=typeof s=="string"?K(s,o):null;if(i!==null)return i}return null}function zu(e,t){return t.length===0?null:K([e.argv0,...e.args].join(" "),t)??K(e.raw,t)}function $u(e,t){if(t.length===0)return!1;for(let n=0;n<=e.length;n++)if(!(n>0&&!Vu.includes(e.charAt(n-1)))&&K(e.slice(n).trimStart(),t)!==null)return!0;return!1}function Qu(e){let t;try{t=new URL(e).hostname.toLowerCase()}catch{return!1}return xr.some(n=>t===n||t.endsWith(qu+n))}function Zu(e,t){let n=re(e.url)??"";return Qu(n)?se:Y(qi("webfetch",n,t))}function ed(e,t,n,o){let r=re(n.command)??"",s=Me(r);if(!s.ok)return $u(r,o)?Y(M(et,t.toolNamePrefix)):se;let i=Ii(s.commands);for(let c of i){let a=zu(c,o);if(a!==null)return Y(Te+a)}if(!ye(t)||pe(e))for(let c of i){let a=td(c);if(a!==null)return Y(qi(a,r,t,re(n.description)))}return id(i,e.cwd,t)??se}function td(e){let t=e.argv0.toLowerCase();return V(pr,t)&&nd(t,e)?"curl":rd(e.raw)?"http":V(gr,t)?"build":null}function nd(e,t){return t.redirectsToFile?!od(e,t.args):!t.endsInBoundedSink}function od(e,t){let n=Er[e],o=!1;for(let r=0;r<t.length;r++){let s=t[r];if(s===Vn)break;if(V(_r,s)||s===mr&&t[r+1]===q)return!1;(s===n.long||s.startsWith(q)&&!s.startsWith(Vn)&&s.includes(n.short,q.length))&&(o=!0)}return o}function rd(e){let t=e.toLowerCase();for(let n of Sr)if(t.includes(n))return!0;for(let n=t.indexOf(Re);n>=0;n=t.indexOf(Re,n+1)){let o=t.charAt(n+Re.length);if(o!==""&&hr.includes(o)&&t.startsWith(br,n+Re.length+o.length))return!0}return!1}function Vi(e){try{let t=ju(e);return t.isFile()?t.size:-1}catch{return-1}}function sd(e,t,n){if(!Bi(n.offset)&&!Bi(n.limit)){let o=Yi(n);if(o!==void 0){let r=Jn(e.cwd,o),s=Vi(r);if(s>be)return Y(Kn(r,s,t.toolNamePrefix))}}return se}function id(e,t,n){if(n.nativeTools.read!==void 0&&n.nativeTools.read.length>0&&Xs(n)||e.length!==1)return null;let o=e[0];if(o.redirectsToFile||o.endsInBoundedSink)return null;let r=o.argv0.toLowerCase();if(!V(Tr,r))return null;let s=ld(r,o.args);if(s===null)return null;if(s.bounded)return se;let i=Jn(t,s.file),c=Vi(i);return c>be?Y(Kn(i,c,n.toolNamePrefix)):null}var yt=e=>e!==""&&[...e].every(t=>t>="0"&&t<="9");function cd(e){if(V(nn,e))return 1;for(let t of nn)if(t.startsWith(Vn)?e.startsWith(t+Ku):e.startsWith(t))return 0;return e.startsWith(q)&&yt(e.slice(q.length))?0:-1}function ad(e){if(e===qn)return"all";if(!e.endsWith(qn))return null;let t=e.slice(0,e.length-qn.length),n=t.indexOf(Gi);return(n<0?yt(t):yt(t.slice(0,n))&&yt(t.slice(n+Gi.length)))?"range":null}function ld(e,t){let n=[],o=!1,r=!1,s;for(let i=0;i<t.length;i++){let c=t[i];if(V(Rr,e)){let a=cd(c);if(a>=0){o=!0,i+=a;continue}}if(e===tt&&V(Or,c)){r=!0;continue}if(e===tt&&V(Yu,c)){s=t[i+1],i++;continue}c.startsWith(q)&&c!==q||n.push(c)}if(e===tt){if(!r)return null;s===void 0&&(s=n.shift());let i=s===void 0?null:ad(s);if(i===null)return null;o=i==="range"}return e===Ar&&n.shift()!==I.identity?null:n.length===1&&n[0]!==q?{file:n[0],bounded:o}:null}import{basename as gd,dirname as kt,join as Fe,resolve as Qi}from"node:path";import{dirname as Ji,sep as dd}from"node:path";var{realpathSync:ud}=process.getBuiltinModule("node:fs");function fd(e){try{return ud.native(e)}catch{return}}function Ct(e){return e.split(dd).filter(t=>t!=="")}function zi(e){let t=e.map(fd).filter(s=>s!==void 0);if(t.length===0)throw new RangeError("commonRoot needs at least one existing path");let n=t[0],o=Ct(n).length;for(let s of t){let i=Ct(s),c=Ct(n),a=0;for(;a<o&&a<i.length&&i[a]===c[a];)a+=1;o=a}let r=n;for(;Ct(r).length>o&&Ji(r)!==r;)r=Ji(r);return r}var xd=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),pd=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],w=(e,t)=>e>>>t|e<<32-t;function $i(e){let t=Buffer.from(e,"utf8"),n=t.length*8,o=Math.ceil((t.length+9)/64)*64,r=Buffer.alloc(o);t.copy(r),r[t.length]=128,r.writeUInt32BE(Math.floor(n/4294967296),o-8),r.writeUInt32BE(n>>>0,o-4);let s=pd.slice(),i=new Uint32Array(64);for(let c=0;c<o;c+=64){for(let m=0;m<16;m++)i[m]=r.readUInt32BE(c+m*4);for(let m=16;m<64;m++){let S=w(i[m-15],7)^w(i[m-15],18)^i[m-15]>>>3,h=w(i[m-2],17)^w(i[m-2],19)^i[m-2]>>>10;i[m]=i[m-16]+S+i[m-7]+h>>>0}let[a,l,u,f,d,x,E,_]=s;for(let m=0;m<64;m++){let S=_+(w(d,6)^w(d,11)^w(d,25))+(d&x^~d&E)+xd[m]+i[m]>>>0,h=(w(a,2)^w(a,13)^w(a,22))+(a&l^a&u^l&u)>>>0;_=E,E=x,x=d,d=f+S>>>0,f=u,u=l,l=a,a=S+h>>>0}s[0]=s[0]+a>>>0,s[1]=s[1]+l>>>0,s[2]=s[2]+u>>>0,s[3]=s[3]+f>>>0,s[4]=s[4]+d>>>0,s[5]=s[5]+x>>>0,s[6]=s[6]+E>>>0,s[7]=s[7]+_>>>0}return s.map(c=>c.toString(16).padStart(8,"0")).join("")}var{existsSync:Ed,readFileSync:_d,realpathSync:zn,statSync:md}=process.getBuiltinModule("node:fs");function hd(e){switch(e){case"claude-code":return"env:CLAUDE_PROJECT_DIR";case"codex":case"copilot-cli":case"kiro":return"arg:--agent+cwd";case"vscode":return"arg:workspaceFolder";case"gemini":case"qwen":case"zcode":case"opencode":return"spawn-cwd";case"pi":return"pi:ctx.cwd"}}function ve(e){return e===void 0||e===""?void 0:e}function bd(e,t){switch(e){case"env:CLAUDE_PROJECT_DIR":return ve(t.env.CLAUDE_PROJECT_DIR)??ve(t.cwd)??process.cwd();case"arg:--agent+cwd":case"spawn-cwd":return ve(t.cwd);case"arg:workspaceFolder":{let n=t.argv.indexOf(ze);return n<0?void 0:ve(t.argv[n+1])}case"pi:ctx.cwd":return ve(t.piCwd)}}function Sd(e){let t;try{t=zn.native(e)}catch{throw new R("NO_GIT_DIR",{path:e})}for(;;){let n=Td(Fe(t,Jt));if(n!==null){let r=Zi(Fe(n,Wo));return{commonDir:zn.native(r===null?n:Qi(n,r)),worktree:t}}let o=kt(t);if(o===t)return null;t=o}}function Td(e){let t;try{if(md(e).isDirectory())t=e;else{let n=Zi(e);if(n===null||!n.startsWith($t))return null;t=Qi(kt(e),n.slice($t.length))}}catch{return null}return Ed(Fe(t,Xo))?t:null}function Zi(e){let t;try{t=_d(e,"utf8")}catch{return null}let n=t.indexOf(`
|
|
25
|
+
`),o=(n<0?t:t.slice(0,n)).trim();return o===""?null:o}function Rd(e,t){let{spawnSync:n}=process.getBuiltinModule("node:child_process"),o=n("git",t,{cwd:e,shell:!1,encoding:"utf8",stdio:["ignore","pipe","pipe"],windowsHide:!0});if(o.error!==void 0||o.status!==0)throw new R("NO_GIT_DIR",{path:e});return o.stdout.split(`
|
|
26
|
+
`).filter(r=>r!=="")}function Od(e,t){let n=gd(t)===Jt?kt(t):t,o=Rd(e,["worktree","list","--porcelain"]).filter(r=>r.startsWith(zt)).map(r=>r.slice(zt.length));return zi([kt(n),...o])}function ec(e,t){let n=hd(e),o=bd(n,t);if(o===void 0)throw new R("NO_PROJECT",{kind:n});let r=Sd(o),s=r===null?zn.native(o):void 0,i=r?.commonDir??s,c=r?.worktree??s,a=$i(i).slice(0,jo),l=Fe(Ti(process.env),Go,a),u;return{projectKey:a,projectDir:l,dbPath:Fe(l,Bo),worktree:c,get containmentRoot(){return u??=s??Od(o,i),u},agent:e,source:n}}var It=Se,Ad=`
|
|
25
27
|
PRAGMA busy_timeout = ${ie};
|
|
26
28
|
PRAGMA journal_mode = WAL;
|
|
27
|
-
`,
|
|
29
|
+
`,Dt="tokenize = 'porter unicode61 remove_diacritics 2'",Nd="tokenize = 'unicode61 remove_diacritics 2'",yd=`
|
|
28
30
|
CREATE TABLE IF NOT EXISTS events (
|
|
29
31
|
seq INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
30
32
|
session_id TEXT NOT NULL,
|
|
@@ -69,16 +71,16 @@ CREATE VIRTUAL TABLE IF NOT EXISTS chunks USING fts5(
|
|
|
69
71
|
agent UNINDEXED,
|
|
70
72
|
ord UNINDEXED,
|
|
71
73
|
body,
|
|
72
|
-
${
|
|
74
|
+
${Nd}
|
|
73
75
|
);
|
|
74
76
|
|
|
75
77
|
CREATE TABLE IF NOT EXISTS meta (
|
|
76
78
|
key TEXT PRIMARY KEY,
|
|
77
79
|
value TEXT NOT NULL
|
|
78
80
|
);
|
|
79
|
-
`,
|
|
81
|
+
`,Cd=`
|
|
80
82
|
CREATE UNIQUE INDEX IF NOT EXISTS idx_events_cost_session_turn ON events(session_id, turn) WHERE kind = 'cost';
|
|
81
|
-
`,
|
|
83
|
+
`,kd=`
|
|
82
84
|
CREATE VIRTUAL TABLE chunks_v3 USING fts5(
|
|
83
85
|
source_id UNINDEXED,
|
|
84
86
|
session_id UNINDEXED,
|
|
@@ -87,13 +89,13 @@ CREATE VIRTUAL TABLE chunks_v3 USING fts5(
|
|
|
87
89
|
ord UNINDEXED,
|
|
88
90
|
body,
|
|
89
91
|
title,
|
|
90
|
-
${
|
|
92
|
+
${Dt}
|
|
91
93
|
);
|
|
92
94
|
INSERT INTO chunks_v3(rowid, source_id, session_id, worktree, agent, ord, body, title)
|
|
93
95
|
SELECT rowid, source_id, session_id, worktree, agent, ord, body, '' FROM chunks;
|
|
94
96
|
DROP TABLE chunks;
|
|
95
97
|
ALTER TABLE chunks_v3 RENAME TO chunks;
|
|
96
|
-
`,
|
|
98
|
+
`,Id=`
|
|
97
99
|
CREATE VIRTUAL TABLE chunks_tri USING fts5(
|
|
98
100
|
body,
|
|
99
101
|
title,
|
|
@@ -102,30 +104,30 @@ CREATE VIRTUAL TABLE chunks_tri USING fts5(
|
|
|
102
104
|
);
|
|
103
105
|
INSERT INTO chunks_tri(rowid, body, title) SELECT rowid, body, title FROM chunks;
|
|
104
106
|
CREATE VIRTUAL TABLE chunks_vocab USING fts5vocab(chunks, 'row');
|
|
105
|
-
`,
|
|
107
|
+
`,Dd=`
|
|
106
108
|
CREATE VIRTUAL TABLE line_units USING fts5(
|
|
107
109
|
body,
|
|
108
110
|
source_id UNINDEXED,
|
|
109
111
|
session_id UNINDEXED,
|
|
110
112
|
ord UNINDEXED,
|
|
111
|
-
${
|
|
113
|
+
${Dt}
|
|
112
114
|
);
|
|
113
|
-
`,ud=[{version:1,sql:sd},{version:2,sql:id},{version:3,sql:cd},{version:4,sql:ad},{version:5,sql:ld}];function qn(e,t){if(t!==Nt){if(t>Nt)throw new R("SCHEMA_STALE",{found:t,want:Nt});e.exec(od),e.exec("BEGIN IMMEDIATE");try{for(let n of ud)n.version>t&&e.exec(n.sql);e.exec(`PRAGMA user_version = ${Nt}`),e.exec("COMMIT")}catch(n){throw e.isTransaction&&e.exec("ROLLBACK"),n}}}var{existsSync:ve,linkSync:dd,mkdirSync:fd,rmSync:xd}=process.getBuiltinModule("node:fs");function ji(e){return(e.startsWith("v")?e.slice(1):e).split(".").map(n=>Number.parseInt(n,10))}function pd(e,t){let n=ji(e),o=ji(t);for(let r=0;r<o.length;r+=1){let s=n[r]??0;if(s!==o[r])return s<o[r]}return!1}function Ed(e){if(typeof e!="object"||e===null)return!1;let t=e.errcode;if(typeof t!="number")return!1;let n=t&wo;return n===Lo||n===Po}async function md(){try{return await import("node:sqlite")}catch{throw new R("NO_SQLITE")}}function Yn(e){return e.prepare("PRAGMA user_version").get().user_version}function _d(e,t){let{randomUUID:n}=process.getBuiltinModule("node:crypto"),o=t+"."+n()+Do;try{let r=new e.DatabaseSync(o,{timeout:ie});try{qn(r,Yn(r))}finally{r.close()}try{dd(o,t)}catch(s){if(s.code!=="EEXIST")throw s}}finally{for(let r of["",qe,Ye])xd(o+r,{force:!0})}}function Gi(e,t){let n=null;try{return ve(t)||_d(e,t),n=new e.DatabaseSync(t,{timeout:ie}),qn(n,Yn(n)),n}catch(o){throw n&&n.close(),o}}function gd(e,t){let n=new e.DatabaseSync(t,{timeout:ie,readOnly:!0});try{let o=Yn(n);if(o!==Se)throw new R("SCHEMA_STALE",{found:o,want:Se});return n}catch(o){throw n.close(),o}}async function N(e,t){if(pd(process.version,Jt))throw new R("NODE_TOO_OLD",{v:process.version});let n=await md();fd(e.projectDir,{recursive:!0});let o=e.dbPath;if((ve(o+qe)||ve(o+Ye))&&!ve(o))throw new R("DB_GONE");try{let s;return t?.readOnly===!0?(ve(o)||Gi(n,o).close(),s=gd(n,o)):s=Gi(n,o),{raw:s,projectKey:e.projectKey,path:o}}catch(s){throw Ed(s)?new R("DB_CORRUPT"):s}}function L(e,t){e.raw.exec("BEGIN IMMEDIATE");try{let n=t(e);return e.raw.exec("COMMIT"),n}catch(n){throw e.raw.isTransaction&&e.raw.exec("ROLLBACK"),n}}function Bi(e,t){return e.raw.isTransaction?t(e):L(e,t)}function V(e,t){let n=e.raw.prepare("SELECT value FROM meta WHERE key = ?").get(t);return n===void 0?null:n.value}function j(e,t,n){Bi(e,o=>{o.raw.prepare("INSERT INTO meta(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(t,n)})}function Ct(e,t){return Bi(e,n=>{let o=n.raw.prepare("DELETE FROM meta WHERE key = ? RETURNING value").get(t);return o===void 0?null:o.value})}var Wi="events(session_id, worktree, agent, kind, tool, key, path, ok, exit_code, bytes, body, turn, sandbox_bytes, returned_bytes, created_at, accessed_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",hd="INSERT INTO "+Wi,bd="INSERT OR IGNORE INTO "+Wi,Sd="SELECT seq FROM events WHERE kind = 'cost' AND session_id = ? AND turn = ?";function kt(e,t){return L(e,n=>{let o=Date.now(),r=t.kind==="cost",s=n.raw.prepare(r?bd:hd).run(t.session_id,t.worktree,t.agent,t.kind,t.tool,t.key,t.path,t.ok,t.exit_code,t.bytes,t.body,t.turn,t.sandbox_bytes,t.returned_bytes,o,o);return s.changes===1?Number(s.lastInsertRowid):n.raw.prepare(Sd).get(t.session_id,t.turn).seq})}function Xi(e,t){let n="",o="",r=!1,s=!1;for(let i of t){if(o===""&&!r&&i.trim()===""){s=n!=="";continue}s&&(n+=" ",s=!1),n+=i,r?r=!1:i==="\\"&&o!=="'"?r=!0:o===""&&(i==="'"||i==='"')?o=i:i===o&&(o="")}return e+":"+n}function Jn(e,t,n){return t===""?[]:n===void 0?e.raw.prepare("SELECT * FROM events WHERE session_id = ? ORDER BY seq ASC").all(t):e.raw.prepare("SELECT * FROM events WHERE session_id = ? AND kind = ? ORDER BY seq ASC").all(t,n)}function Ki(e,t){if(t==="")return"";let n=e.raw.prepare("SELECT body FROM events WHERE session_id = ? AND kind = 'prompt' ORDER BY seq DESC LIMIT 1").get(t);return n===void 0?"":n.body}function qi(e,t){if(t==="")return"";let n=e.raw.prepare("SELECT body FROM events WHERE session_id = ? AND kind = 'prompt' ORDER BY seq ASC LIMIT 1").get(t);return n===void 0?"":n.body}function Yi(e,t,n,o){return t===""?[]:e.raw.prepare("SELECT * FROM events WHERE kind <> 'cost' AND (session_id = ? OR worktree = ?) ORDER BY seq DESC LIMIT ?").all(t,n,o)}function Ji(e,t,n){return e.raw.prepare("SELECT 1 FROM events WHERE worktree = ? AND agent = ? LIMIT 1").get(t,n)!==void 0}function Vi(e,t){return e.raw.prepare("SELECT 1 FROM events WHERE session_id = ? LIMIT 1").get(t)!==void 0}var Vn=Object.freeze([170,170,178,179,181,181,185,186,188,190,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1632,1641,1646,1647,1649,1747,1749,1749,1765,1766,1774,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1984,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2191,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2406,2415,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2534,2545,2548,2553,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2662,2671,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2790,2799,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2918,2927,2929,2935,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3046,3058,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3164,3165,3168,3169,3174,3183,3192,3198,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3292,3294,3296,3297,3302,3311,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3416,3425,3430,3448,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3558,3567,3585,3632,3634,3635,3648,3654,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3792,3801,3804,3807,3840,3840,3872,3891,3904,3911,3913,3948,3976,3980,4096,4138,4159,4169,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4240,4249,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4969,4988,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6112,6121,6128,6137,6160,6169,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6470,6509,6512,6516,6528,6571,6576,6601,6608,6618,6656,6678,6688,6740,6784,6793,6800,6809,6823,6823,6917,6963,6981,6988,6992,7001,7043,7072,7086,7141,7168,7203,7232,7241,7245,7293,7296,7306,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8304,8305,8308,8313,8319,8329,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8528,8585,9312,9371,9450,9471,10102,10131,11264,11492,11499,11502,11506,11507,11517,11517,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12690,12693,12704,12735,12784,12799,12832,12841,12872,12879,12881,12895,12928,12937,12977,12991,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42972,42993,43009,43011,43013,43015,43018,43020,43042,43056,43061,43072,43123,43138,43187,43216,43225,43250,43255,43259,43259,43261,43262,43264,43301,43312,43334,43360,43388,43396,43442,43471,43481,43488,43492,43494,43518,43520,43560,43584,43586,43588,43595,43600,43609,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65296,65305,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65799,65843,65856,65912,65930,65931,66176,66204,66208,66256,66273,66299,66304,66339,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67008,67059,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67672,67702,67705,67742,67751,67759,67808,67826,67828,67829,67835,67867,67872,67897,67904,67929,67968,68023,68028,68047,68050,68096,68112,68115,68117,68119,68121,68149,68160,68168,68192,68222,68224,68255,68288,68295,68297,68324,68331,68335,68352,68405,68416,68437,68440,68466,68472,68497,68521,68527,68608,68680,68736,68786,68800,68850,68858,68899,68912,68921,68928,68965,68975,68997,69216,69246,69248,69289,69296,69297,69314,69319,69376,69415,69424,69445,69457,69460,69488,69505,69552,69579,69600,69622,69635,69687,69714,69743,69745,69746,69749,69749,69763,69807,69840,69864,69872,69881,69891,69926,69942,69951,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,70096,70106,70108,70108,70113,70132,70144,70161,70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70384,70393,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70528,70537,70539,70539,70542,70542,70544,70581,70583,70583,70609,70609,70611,70611,70656,70708,70727,70730,70736,70745,70751,70753,70784,70831,70852,70853,70855,70855,70864,70873,71040,71086,71128,71131,71168,71215,71236,71236,71248,71257,71296,71338,71352,71352,71360,71369,71376,71395,71424,71450,71472,71483,71488,71494,71680,71723,71840,71922,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,72016,72025,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,72640,72672,72688,72697,72704,72712,72714,72750,72768,72768,72784,72812,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73040,73049,73056,73061,73063,73064,73066,73097,73112,73112,73120,73129,73136,73179,73184,73193,73440,73458,73474,73474,73476,73488,73490,73523,73552,73561,73648,73648,73664,73684,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,78944,82938,82944,83526,90368,90397,90416,90425,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,92909,92928,92975,92992,92995,93008,93017,93019,93025,93027,93047,93053,93071,93504,93548,93552,93561,93760,93846,93856,93880,93883,93907,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94194,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,118e3,118009,119488,119507,119520,119539,119648,119672,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,122624,122654,122661,122666,122928,122989,123136,123180,123191,123197,123200,123209,123214,123214,123536,123565,123584,123627,123632,123641,124112,124139,124144,124153,124368,124397,124400,124410,124608,124638,124640,124642,124644,124645,124647,124653,124656,124660,124670,124671,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125127,125135,125184,125251,125259,125259,125264,125273,126065,126123,126125,126127,126129,126132,126209,126253,126255,126269,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,127232,127244,130032,130041,131072,173791,173824,178205,178208,183981,183984,191456,191472,192093,194560,195101,196608,201546,201552,210041]);function Td(e){if(e<128)return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95;let t=0,n=Vn.length/2-1;for(;t<=n;){let o=t+n>>1,r=Vn[2*o],s=Vn[2*o+1];if(e<r)n=o-1;else if(e>s)t=o+1;else return!0}return!1}function Rd(e,t){let n=[],o=-1,r=0;for(let s of e)t(s.codePointAt(0))?o>=0&&(n.push(e.slice(o,r)),o=-1):o<0&&(o=r),r+=s.length;return o>=0&&n.push(e.slice(o)),n}function Ee(e){return Rd(e,t=>!Td(t))}var Od=`
|
|
115
|
+
`,wd=[{version:1,sql:yd},{version:2,sql:Cd},{version:3,sql:kd},{version:4,sql:Id},{version:5,sql:Dd}];function $n(e,t){if(t!==It){if(t>It)throw new R("SCHEMA_STALE",{found:t,want:It});e.exec(Ad),e.exec("BEGIN IMMEDIATE");try{for(let n of wd)n.version>t&&e.exec(n.sql);e.exec(`PRAGMA user_version = ${It}`),e.exec("COMMIT")}catch(n){throw e.isTransaction&&e.exec("ROLLBACK"),n}}}var{existsSync:je,linkSync:Ld,mkdirSync:Pd,rmSync:Md}=process.getBuiltinModule("node:fs");function tc(e){return(e.startsWith("v")?e.slice(1):e).split(".").map(n=>Number.parseInt(n,10))}function Ud(e,t){let n=tc(e),o=tc(t);for(let r=0;r<o.length;r+=1){let s=n[r]??0;if(s!==o[r])return s<o[r]}return!1}function Hd(e){if(typeof e!="object"||e===null)return!1;let t=e.errcode;if(typeof t!="number")return!1;let n=t&Ho;return n===vo||n===Fo}async function vd(){try{return await import("node:sqlite")}catch{throw new R("NO_SQLITE")}}function Qn(e){return e.prepare("PRAGMA user_version").get().user_version}function Fd(e,t){let{randomUUID:n}=process.getBuiltinModule("node:crypto"),o=t+"."+n()+Uo;try{let r=new e.DatabaseSync(o,{timeout:ie});try{$n(r,Qn(r))}finally{r.close()}try{Ld(o,t)}catch(s){if(s.code!=="EEXIST")throw s}}finally{for(let r of["",Ve,Je])Md(o+r,{force:!0})}}function nc(e,t){let n=null;try{return je(t)||Fd(e,t),n=new e.DatabaseSync(t,{timeout:ie}),$n(n,Qn(n)),n}catch(o){throw n&&n.close(),o}}function jd(e,t){let n=new e.DatabaseSync(t,{timeout:ie,readOnly:!0});try{let o=Qn(n);if(o!==Se)throw new R("SCHEMA_STALE",{found:o,want:Se});return n}catch(o){throw n.close(),o}}async function N(e,t){if(Ud(process.version,Qt))throw new R("NODE_TOO_OLD",{v:process.version});let n=await vd();Pd(e.projectDir,{recursive:!0});let o=e.dbPath;if((je(o+Ve)||je(o+Je))&&!je(o))throw new R("DB_GONE");try{let s;return t?.readOnly===!0?(je(o)||nc(n,o).close(),s=jd(n,o)):s=nc(n,o),{raw:s,projectKey:e.projectKey,path:o}}catch(s){throw Hd(s)?new R("DB_CORRUPT"):s}}function L(e,t){e.raw.exec("BEGIN IMMEDIATE");try{let n=t(e);return e.raw.exec("COMMIT"),n}catch(n){throw e.raw.isTransaction&&e.raw.exec("ROLLBACK"),n}}function oc(e,t){return e.raw.isTransaction?t(e):L(e,t)}function J(e,t){let n=e.raw.prepare("SELECT value FROM meta WHERE key = ?").get(t);return n===void 0?null:n.value}function j(e,t,n){oc(e,o=>{o.raw.prepare("INSERT INTO meta(key, value) VALUES (?, ?) ON CONFLICT(key) DO UPDATE SET value = excluded.value").run(t,n)})}function wt(e,t){return oc(e,n=>{let o=n.raw.prepare("DELETE FROM meta WHERE key = ? RETURNING value").get(t);return o===void 0?null:o.value})}var rc="events(session_id, worktree, agent, kind, tool, key, path, ok, exit_code, bytes, body, turn, sandbox_bytes, returned_bytes, created_at, accessed_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",Gd="INSERT INTO "+rc,Bd="INSERT OR IGNORE INTO "+rc,Wd="SELECT seq FROM events WHERE kind = 'cost' AND session_id = ? AND turn = ?";function Lt(e,t){return L(e,n=>{let o=Date.now(),r=t.kind==="cost",s=n.raw.prepare(r?Bd:Gd).run(t.session_id,t.worktree,t.agent,t.kind,t.tool,t.key,t.path,t.ok,t.exit_code,t.bytes,t.body,t.turn,t.sandbox_bytes,t.returned_bytes,o,o);return s.changes===1?Number(s.lastInsertRowid):n.raw.prepare(Wd).get(t.session_id,t.turn).seq})}function sc(e,t){let n="",o="",r=!1,s=!1;for(let i of t){if(o===""&&!r&&i.trim()===""){s=n!=="";continue}s&&(n+=" ",s=!1),n+=i,r?r=!1:i==="\\"&&o!=="'"?r=!0:o===""&&(i==="'"||i==='"')?o=i:i===o&&(o="")}return e+":"+n}function Zn(e,t,n){return t===""?[]:n===void 0?e.raw.prepare("SELECT * FROM events WHERE session_id = ? ORDER BY seq ASC").all(t):e.raw.prepare("SELECT * FROM events WHERE session_id = ? AND kind = ? ORDER BY seq ASC").all(t,n)}function ic(e,t){if(t==="")return"";let n=e.raw.prepare("SELECT body FROM events WHERE session_id = ? AND kind = 'prompt' ORDER BY seq DESC LIMIT 1").get(t);return n===void 0?"":n.body}function cc(e,t){if(t==="")return"";let n=e.raw.prepare("SELECT body FROM events WHERE session_id = ? AND kind = 'prompt' ORDER BY seq ASC LIMIT 1").get(t);return n===void 0?"":n.body}function ac(e,t,n,o){return t===""?[]:e.raw.prepare("SELECT * FROM events WHERE kind <> 'cost' AND (session_id = ? OR worktree = ?) ORDER BY seq DESC LIMIT ?").all(t,n,o)}function lc(e,t,n){return e.raw.prepare("SELECT 1 FROM events WHERE worktree = ? AND agent = ? LIMIT 1").get(t,n)!==void 0}function uc(e,t){return e.raw.prepare("SELECT 1 FROM events WHERE session_id = ? LIMIT 1").get(t)!==void 0}var eo=Object.freeze([170,170,178,179,181,181,185,186,188,190,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1632,1641,1646,1647,1649,1747,1749,1749,1765,1766,1774,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1984,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2191,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2406,2415,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2534,2545,2548,2553,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2662,2671,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2790,2799,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2918,2927,2929,2935,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3046,3058,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3164,3165,3168,3169,3174,3183,3192,3198,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3292,3294,3296,3297,3302,3311,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3416,3425,3430,3448,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3558,3567,3585,3632,3634,3635,3648,3654,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3792,3801,3804,3807,3840,3840,3872,3891,3904,3911,3913,3948,3976,3980,4096,4138,4159,4169,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4240,4249,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4969,4988,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6112,6121,6128,6137,6160,6169,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6470,6509,6512,6516,6528,6571,6576,6601,6608,6618,6656,6678,6688,6740,6784,6793,6800,6809,6823,6823,6917,6963,6981,6988,6992,7001,7043,7072,7086,7141,7168,7203,7232,7241,7245,7293,7296,7306,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8304,8305,8308,8313,8319,8329,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8528,8585,9312,9371,9450,9471,10102,10131,11264,11492,11499,11502,11506,11507,11517,11517,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12690,12693,12704,12735,12784,12799,12832,12841,12872,12879,12881,12895,12928,12937,12977,12991,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42972,42993,43009,43011,43013,43015,43018,43020,43042,43056,43061,43072,43123,43138,43187,43216,43225,43250,43255,43259,43259,43261,43262,43264,43301,43312,43334,43360,43388,43396,43442,43471,43481,43488,43492,43494,43518,43520,43560,43584,43586,43588,43595,43600,43609,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65296,65305,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65799,65843,65856,65912,65930,65931,66176,66204,66208,66256,66273,66299,66304,66339,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67008,67059,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67672,67702,67705,67742,67751,67759,67808,67826,67828,67829,67835,67867,67872,67897,67904,67929,67968,68023,68028,68047,68050,68096,68112,68115,68117,68119,68121,68149,68160,68168,68192,68222,68224,68255,68288,68295,68297,68324,68331,68335,68352,68405,68416,68437,68440,68466,68472,68497,68521,68527,68608,68680,68736,68786,68800,68850,68858,68899,68912,68921,68928,68965,68975,68997,69216,69246,69248,69289,69296,69297,69314,69319,69376,69415,69424,69445,69457,69460,69488,69505,69552,69579,69600,69622,69635,69687,69714,69743,69745,69746,69749,69749,69763,69807,69840,69864,69872,69881,69891,69926,69942,69951,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,70096,70106,70108,70108,70113,70132,70144,70161,70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70384,70393,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70528,70537,70539,70539,70542,70542,70544,70581,70583,70583,70609,70609,70611,70611,70656,70708,70727,70730,70736,70745,70751,70753,70784,70831,70852,70853,70855,70855,70864,70873,71040,71086,71128,71131,71168,71215,71236,71236,71248,71257,71296,71338,71352,71352,71360,71369,71376,71395,71424,71450,71472,71483,71488,71494,71680,71723,71840,71922,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,72016,72025,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,72640,72672,72688,72697,72704,72712,72714,72750,72768,72768,72784,72812,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73040,73049,73056,73061,73063,73064,73066,73097,73112,73112,73120,73129,73136,73179,73184,73193,73440,73458,73474,73474,73476,73488,73490,73523,73552,73561,73648,73648,73664,73684,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,78944,82938,82944,83526,90368,90397,90416,90425,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,92909,92928,92975,92992,92995,93008,93017,93019,93025,93027,93047,93053,93071,93504,93548,93552,93561,93760,93846,93856,93880,93883,93907,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94194,94198,94208,101589,101631,101662,101760,101874,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,118e3,118009,119488,119507,119520,119539,119648,119672,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,122624,122654,122661,122666,122928,122989,123136,123180,123191,123197,123200,123209,123214,123214,123536,123565,123584,123627,123632,123641,124112,124139,124144,124153,124368,124397,124400,124410,124608,124638,124640,124642,124644,124645,124647,124653,124656,124660,124670,124671,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125127,125135,125184,125251,125259,125259,125264,125273,126065,126123,126125,126127,126129,126132,126209,126253,126255,126269,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,127232,127244,130032,130041,131072,173791,173824,178205,178208,183981,183984,191456,191472,192093,194560,195101,196608,201546,201552,210041]);function Xd(e){if(e<128)return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122||e===95;let t=0,n=eo.length/2-1;for(;t<=n;){let o=t+n>>1,r=eo[2*o],s=eo[2*o+1];if(e<r)n=o-1;else if(e>s)t=o+1;else return!0}return!1}function Kd(e,t){let n=[],o=-1,r=0;for(let s of e)t(s.codePointAt(0))?o>=0&&(n.push(e.slice(o,r)),o=-1):o<0&&(o=r),r+=s.length;return o>=0&&n.push(e.slice(o)),n}function Ee(e){return Kd(e,t=>!Xd(t))}var qd=`
|
|
114
116
|
INSERT INTO sources(session_id, worktree, agent, kind, label, bytes_total, chunk_count, created_ts, created_at, accessed_ts)
|
|
115
117
|
VALUES (:session_id, :worktree, :agent, :kind, :label, :bytes_total, :chunk_count, :created_ts, :created_at, :created_ts)
|
|
116
|
-
RETURNING id`,
|
|
117
|
-
INSERT INTO chunks(source_id, session_id, worktree, agent, ord, body, title) VALUES (?, ?, ?, ?, ?, ?, ?)`,
|
|
118
|
+
RETURNING id`,Yd=`
|
|
119
|
+
INSERT INTO chunks(source_id, session_id, worktree, agent, ord, body, title) VALUES (?, ?, ?, ?, ?, ?, ?)`,dc=1,fc=`
|
|
118
120
|
SELECT chunks.rowid AS rid, chunks.source_id AS source_id, chunks.session_id AS session_id,
|
|
119
121
|
chunks.worktree AS worktree, chunks.ord AS ord, s.created_ts AS created_ts,
|
|
120
|
-
bm25(chunks, 0, 0, 0, 0, 0, 1.0, ${
|
|
122
|
+
bm25(chunks, 0, 0, 0, 0, 0, 1.0, ${dc}) AS bm,
|
|
121
123
|
(chunks.rowid IN (SELECT rowid FROM chunks WHERE chunks MATCH :all)) AS full
|
|
122
124
|
FROM chunks JOIN sources s ON s.id = chunks.source_id
|
|
123
125
|
WHERE chunks MATCH :match
|
|
124
126
|
AND (:scope <> 'session' OR chunks.session_id = :session_id)
|
|
125
127
|
AND (:scope <> 'worktree' OR chunks.worktree = :worktree)
|
|
126
|
-
AND (:source IS NULL OR s.label = :source)`,
|
|
127
|
-
ORDER BY (session_id = :session_id) DESC, (worktree = :worktree) DESC, full DESC, score DESC, source_id DESC, ord ASC`,
|
|
128
|
-
WITH m AS (${
|
|
128
|
+
AND (:source IS NULL OR s.label = :source)`,xc=`
|
|
129
|
+
ORDER BY (session_id = :session_id) DESC, (worktree = :worktree) DESC, full DESC, score DESC, source_id DESC, ord ASC`,iE=`
|
|
130
|
+
WITH m AS (${fc}
|
|
129
131
|
), r AS (
|
|
130
132
|
SELECT *,
|
|
131
133
|
ROW_NUMBER() OVER (ORDER BY full DESC, bm ASC, source_id DESC, ord ASC) AS rank_a,
|
|
@@ -133,70 +135,70 @@ WITH m AS (${$i}
|
|
|
133
135
|
FROM m
|
|
134
136
|
)
|
|
135
137
|
SELECT rid, source_id, session_id, worktree, ord, full, 1.0 / (:k + rank_a) + 1.0 / (:k + rank_b) AS score
|
|
136
|
-
FROM r${
|
|
137
|
-
WITH m AS (${
|
|
138
|
+
FROM r${xc}`,cE=`
|
|
139
|
+
WITH m AS (${fc}
|
|
138
140
|
)
|
|
139
141
|
SELECT rid, source_id, session_id, worktree, ord, full, -bm AS score
|
|
140
|
-
FROM m${
|
|
142
|
+
FROM m${xc}`;var aE=`
|
|
141
143
|
SELECT t.rowid AS rid, c.source_id AS source_id, c.session_id AS session_id, c.worktree AS worktree, c.ord AS ord
|
|
142
144
|
FROM chunks_tri t JOIN chunks c ON c.rowid = t.rowid JOIN sources s ON s.id = c.source_id
|
|
143
145
|
WHERE chunks_tri MATCH :match
|
|
144
146
|
AND (:scope <> 'session' OR c.session_id = :session_id)
|
|
145
147
|
AND (:scope <> 'worktree' OR c.worktree = :worktree)
|
|
146
148
|
AND (:source IS NULL OR s.label = :source)
|
|
147
|
-
ORDER BY bm25(chunks_tri, 1.0, ${
|
|
149
|
+
ORDER BY bm25(chunks_tri, 1.0, ${dc}) ASC, c.source_id DESC, c.ord ASC`;var Vd="INSERT INTO chunks_tri(rowid, body, title) VALUES (?, ?, ?)",Jd="INSERT INTO chunks_tri(chunks_tri, rowid, body, title) SELECT 'delete', rowid, body, title FROM chunks";function pc(e,t,n){let o=to(e,t,n);return _c(e,o,t,n),o}function to(e,t,n){let o=0;for(let r of n)o+=r.bytes;return L(e,r=>{let s=r.raw.prepare(qd).get({session_id:t.sessionId,worktree:t.worktree,agent:t.agent,kind:t.kind,label:t.label,bytes_total:o,chunk_count:n.length,created_ts:t.createdAt,created_at:new Date(t.createdAt).toISOString()});return Number(s.id)})}function Ec(e,t,n,o,r){try{_c(e,t,n,o),oo(e,t,n.sessionId,r)}catch(s){throw L(e,i=>{zd(i.raw,{sourceId:t}),i.raw.prepare("DELETE FROM sources WHERE id = ?").run(t)}),s}}function _c(e,t,n,o){let r=[],s=[],i=0;for(let c of o)s.length>0&&i+c.bytes>Wt&&(r.push(s),s=[],i=0),s.push(c),i+=c.bytes;s.length>0&&r.push(s);for(let c of r)L(e,a=>{let l=a.raw.prepare(Yd),u=a.raw.prepare(Vd);for(let f of c){let d=f.title??"",x=l.run(t,n.sessionId,n.worktree,n.agent,f.ord,f.text,d).lastInsertRowid;u.run(x,f.text,d)}})}function zd(e,t){if(t==="all")return e.exec("INSERT INTO chunks_tri(chunks_tri) VALUES ('delete-all')"),e.exec("DELETE FROM line_units"),Number(e.prepare("DELETE FROM chunks").run().changes);let[n,o]="sourceId"in t?["source_id = ?",t.sourceId]:["source_id IN (SELECT id FROM sources WHERE label = ?)",t.label];return e.prepare(Jd+" WHERE "+n).run(o),e.prepare("DELETE FROM line_units WHERE "+n).run(o),Number(e.prepare("DELETE FROM chunks WHERE "+n).run(o).changes)}function no(e){let t=[],n="";for(let o of e)o.trim()===""||o==="\0"?(n!==""&&t.push(n),n=""):n+=o==='"'?'""':o;return n!==""&&t.push(n),t.map(o=>`"${o}"*`).join(" ")}function $d(e){return[...new Set(no(e).split(" ").filter(n=>n!==""))].join(" OR ")}var Qd=new Set(["a","an","the","and","or","of","to","in","on","at","by","is","be","it","as","do","i","for","are","but","not","you","all","can","had","her","was","one","our","out","has","his","how","its","may","who","did","get","got","let","she","too","will","with","this","that","from","they","been","have","some","them","than","each","into","your","could","would","about","which","their","there","other","should","also","very","when","what","then","these","those","being","does","both","while","where","here","were","much","any","my","me","we"]);function Zd(e){let t=[...new Set(no(e).split(" ").filter(o=>o!==""))],n=t.filter(o=>!Qd.has(o.slice(1,-2).toLowerCase()));return n.length>0?n:t}var Pt=`
|
|
148
150
|
AND (:scope <> 'session' OR session_id = :session_id)
|
|
149
|
-
AND (:scope <> 'worktree' OR worktree = :worktree)`,
|
|
151
|
+
AND (:scope <> 'worktree' OR worktree = :worktree)`,lE=`
|
|
150
152
|
WITH e AS (
|
|
151
153
|
SELECT seq, kind, key, path, body, created_at FROM events
|
|
152
|
-
WHERE created_at > :after${
|
|
154
|
+
WHERE created_at > :after${Pt}
|
|
153
155
|
AND (:source IS NULL OR kind = :source)
|
|
154
156
|
)
|
|
155
157
|
SELECT seq, kind, key, path, body, created_at FROM e
|
|
156
158
|
WHERE created_at <= IFNULL((SELECT created_at FROM e ORDER BY created_at, seq LIMIT 1 OFFSET :off), created_at)
|
|
157
|
-
ORDER BY created_at ASC, seq ASC`,
|
|
159
|
+
ORDER BY created_at ASC, seq ASC`,uE=`
|
|
158
160
|
WITH s AS (
|
|
159
161
|
SELECT id, label, created_ts FROM sources
|
|
160
|
-
WHERE created_ts > :after${
|
|
162
|
+
WHERE created_ts > :after${Pt}
|
|
161
163
|
AND (:source IS NULL OR label = :source)
|
|
162
164
|
AND label <> :reserved
|
|
163
165
|
)
|
|
164
166
|
SELECT id, label, created_ts FROM s
|
|
165
167
|
WHERE created_ts <= IFNULL((SELECT created_ts FROM s ORDER BY created_ts, id LIMIT 1 OFFSET :off), created_ts)
|
|
166
|
-
ORDER BY created_ts ASC, id ASC`;var
|
|
167
|
-
SELECT EXISTS(SELECT 1 FROM events WHERE created_at > :after${
|
|
168
|
-
OR EXISTS(SELECT 1 FROM sources WHERE created_ts > :after${
|
|
169
|
-
AND label <> :reserved) AS more`;var
|
|
170
|
-
`),n=[],o=[];for(let r=0;r<t.length;r++){let s=t[r].endsWith("\r")?t[r].slice(0,-1):t[r],i=
|
|
171
|
-
`)}),n.push({indent:i,line:s})}}return o}function
|
|
172
|
-
`);return(t<0?e:e.slice(0,t)).replaceAll("\r"," ")}function
|
|
173
|
-
`+e.body}function
|
|
174
|
-
`)}function
|
|
175
|
-
`),seqs:l.map(d=>d.seq),...u.length>0?{units:u.map(
|
|
176
|
-
`)}var
|
|
168
|
+
ORDER BY created_ts ASC, id ASC`;var dE=`
|
|
169
|
+
SELECT EXISTS(SELECT 1 FROM events WHERE created_at > :after${Pt} AND (:source IS NULL OR kind = :source))
|
|
170
|
+
OR EXISTS(SELECT 1 FROM sources WHERE created_ts > :after${Pt} AND (:source IS NULL OR label = :source)
|
|
171
|
+
AND label <> :reserved) AS more`;var e0=`CREATE VIRTUAL TABLE r USING fts5(body, ${Dt}, content='')`,t0="INSERT INTO r(rowid, body) VALUES (?, ?)",n0="SELECT rowid AS id, bm25(r) AS bm FROM r WHERE r MATCH ?";function G(e,t,n="all"){let o=e.map(()=>0),r=n==="any"?$d(t):no(t);if(r===""||e.length===0)return o;let s=process.getBuiltinModule("node:sqlite");if(s===void 0)throw new R("NO_SQLITE");let i=new s.DatabaseSync(":memory:");try{i.exec(e0);let c=i.prepare(t0);i.exec("BEGIN");for(let a=0;a<e.length;a++)c.run(a+1,e[a]);i.exec("COMMIT");for(let a of i.prepare(n0).all(r))o[Number(a.id)-1]=-a.bm;return o}finally{i.close()}}var o0="s";function mc(e){return o0+e.toString(36)}function oo(e,t,n,o){let r=0;for(;r<o.length;){let s=r,i=0;for(;s<o.length&&(s===r||i+o[s].body.length<=Wt);)i+=o[s].body.length,s++;let c=r;L(e,a=>{let l=a.raw.prepare("INSERT INTO line_units(body, source_id, session_id, ord) VALUES (?, ?, ?, ?)");for(let u=c;u<s;u++){let f=o[u];l.run(f.body,t,n,f.ord)}}),r=s}}function gc(e,t){return t===e?e:e+" "+t}function hc(e,t,n,o){let r=Zd(n).join(" OR ");return r===""||t===""?[]:e.raw.prepare("SELECT u.source_id AS source_id, u.ord AS ord, u.body AS body, -bm25(line_units) AS score, s.label AS label FROM line_units u JOIN sources s ON s.id = u.source_id WHERE line_units MATCH ? AND u.session_id = ? ORDER BY bm25(line_units) LIMIT ?").all(r,t,o).map(i=>({sourceId:Number(i.source_id),ord:Number(i.ord),label:i.label,body:i.body,score:i.score}))}function r0(e){let t=0;for(;t<e.length&&(e[t]===" "||e[t]===" ");)t++;return t}function ro(e){let t=e.split(`
|
|
172
|
+
`),n=[],o=[];for(let r=0;r<t.length;r++){let s=t[r].endsWith("\r")?t[r].slice(0,-1):t[r],i=r0(s);if(i!==s.length){for(;n.length>0&&n[n.length-1].indent>=i;)n.pop();o.push({ord:r,body:[...n.map(c=>c.line),s].join(`
|
|
173
|
+
`)}),n.push({indent:i,line:s})}}return o}function so(e){let t=e.indexOf(`
|
|
174
|
+
`);return(t<0?e:e.slice(0,t)).replaceAll("\r"," ")}function _e(e,t,n,o,r){let s=Buffer.byteLength(n,"utf8");if(s<1)throw new Error("compaction: empty candidate line (DECISIONS-r9 M9).");return{section:e,seq:t.seq,turn:t.turn,text:n,bytes:s,repeatCount:o,pinned:e==="last_request",query:r}}function Ge(e){return e.length>Xt?e.slice(e.length-Xt):e}function s0(){return{lastRequest:null,openErrors:[],changedFiles:[],decisions:[],earlierRequests:[],indexedSources:[]}}function bc(e,t){if(!t)return s0();let n=e.filter(p=>p.session_id===t).sort((p,g)=>p.seq-g.seq),o=n.filter(p=>p.kind==="prompt"),r=o.length>0?o[o.length-1]:void 0,s=r===void 0?null:_e("last_request",r,"now: "+so(r.body),1,null),i=o.slice(0,o.length-1).map(p=>_e("earlier_requests",p,"asked #"+p.seq+": "+so(p.body),1,null)),c=new Map,a=new Map;for(let p of n)if(!(p.kind!=="cmd"&&p.kind!=="toolerr"||p.key===null)){if(p.ok===1){a.set(p.key,p.seq);continue}c.set(p.key,{row:p,count:(c.get(p.key)?.count??0)+1})}let l=[];for(let[p,g]of c)(a.get(p)??0)>g.row.seq||l.push(_e("open_errors",g.row,"error #"+g.row.seq+" "+(g.row.tool??"")+": "+p,g.count,p));l.sort((p,g)=>p.seq-g.seq);let u=new Map;for(let p of n)p.kind!=="edit"||p.path===null||u.set(p.path,{row:p,count:(u.get(p.path)?.count??0)+1});let f=[];for(let[p,g]of u){let A=_e("changed_files",g.row,"edited "+p+" x"+g.count,g.count,p);f.push({...A,editCount:g.count})}f.sort((p,g)=>p.seq-g.seq);let d=new Map;for(let p of n){if(p.kind!=="decision"||p.body==="")continue;let g=p.key??p.body;d.set(g,{row:p,count:(d.get(g)?.count??0)+1})}let x=[];for(let[p,g]of d)x.push(_e("decisions",g.row,"decided #"+g.row.seq+": "+so(g.row.body),g.count,p));x.sort((p,g)=>p.seq-g.seq);let E=n.filter(p=>p.kind==="index").map(p=>_e("indexed_sources",p,"indexed "+(p.key??""),1,p.key)),_={lastRequest:s,openErrors:Ge(l),changedFiles:Ge(f),decisions:Ge(x),earlierRequests:Ge(i),indexedSources:Ge(E)},m=[..._.openErrors,..._.changedFiles,..._.decisions,..._.earlierRequests,..._.indexedSources],S=m.length+(s===null?0:1);if(S<=Kt)return _;let h=new Set(m.map(p=>p.seq).sort((p,g)=>p-g).slice(0,S-Kt));return{lastRequest:s,openErrors:_.openErrors.filter(p=>!h.has(p.seq)),changedFiles:_.changedFiles.filter(p=>!h.has(p.seq)),decisions:_.decisions.filter(p=>!h.has(p.seq)),earlierRequests:_.earlierRequests.filter(p=>!h.has(p.seq)),indexedSources:_.indexedSources.filter(p=>!h.has(p.seq))}}function i0(e){if(!Object.hasOwn(qt,e.section))throw new Error(`compaction: "${String(e.section)}" has no weight; only toolerr, decision, prompt, edit and index rows are scored (ADR-0009 \xA73, DECISIONS-r11).`);let t=Math.max(0,e.currentTurn-e.itemTurn),n=Yt[Math.min(t,Yt.length-1)],o=1;for(let r=Math.max(1,e.repeatCount);r>1;r>>=1)o+=1;return Math.round(qt[e.section]*n*o/jr)}function c0(e){switch(e){case"last_request":case"earlier_requests":return"prompt";case"open_errors":return"toolerr";case"changed_files":return"edit";case"decisions":return"decision";case"indexed_sources":return"index"}}function Sc(e,t){return e.map(n=>({...n,score:i0({section:c0(n.section),currentTurn:t,itemTurn:n.turn,repeatCount:n.repeatCount})}))}function Oc(e){return e.sourceId+":"+e.ord}function Ut(e){return"@"+e.label+" line "+(e.ord+1)+`:
|
|
175
|
+
`+e.body}function a0(e){return new Set(Ee(e.toLowerCase()))}function l0(e,t){let n=0;for(let o of e)t.has(o)&&n++;return e.size+t.size-n===0?0:n/(e.size+t.size-n)}function co(e,t,n){let o=e.filter(l=>!t.has(Oc(l))&&l.score>=ln);if(o.length===0)return[];let r=Math.max(...o.map(l=>l.score)),s=o.map(l=>a0(l.body)),i=[],c=new Set(o.map((l,u)=>u)),a=0;for(;c.size>0;){let l=-1,u=-1/0;for(let d of c){let x=0;for(let _ of i)x=Math.max(x,l0(s[d],s[_]));let E=Lo*(o[d].score/r)-Po*x;E>u&&(u=E,l=d)}c.delete(l);let f=Mt(Ut(o[l]))+1;a+f>n||(a+=f,i.push(l))}return i.map(l=>o[l])}var Tc={text:"",seqs:[]};function Mt(e){return Buffer.byteLength(e,"utf8")}function io(e){return[e.key??"",e.path??"",e.body].filter(t=>t!=="").join(`
|
|
176
|
+
`)}function Rc(e){return"#"+e.seq+" "+e.kind+(e.tool===null?"":" "+e.tool)+": "+io(e)}function Ac(e,t,n,o=[],r=new Set){if(t.trim()==="")return Tc;let s=e.filter(d=>!n.has(d.seq)&&d.kind!=="cost"&&!(d.kind==="prompt"&&d.body===t)&&io(d)!==""),i=s.length===0?[]:G(s.map(io),t,"any"),c=s.map((d,x)=>({r:d,score:i[x]})).filter(d=>d.score>=ln).sort((d,x)=>x.score-d.score||x.r.seq-d.r.seq),a=Mt(dn)+1+Mt(fn),l=[];for(let{r:d}of c){let x=Mt(Rc(d))+1;a+x>an||(a+=x,l.push(d))}let u=co(o,r,an-a);if(l.length===0&&u.length===0)return Tc;l.sort((d,x)=>d.seq-x.seq);let f=[...l.map(Rc),...u.map(Ut)];return{text:[dn,...f,fn].join(`
|
|
177
|
+
`),seqs:l.map(d=>d.seq),...u.length>0?{units:u.map(Oc)}:{}}}function z(e){return Buffer.byteLength(e,"utf8")}function ao(e,t){return e.bytes>Oo?"#"+e.seq+" ("+e.bytes+" B) "+t+"ctx_resume(seq:"+e.seq+")":e.text}function lo(e,t){return"more: "+t+"ctx_search(queries:"+JSON.stringify(e)+', scope:"session")'}function Nc(e,t,n,o=""){let r;for(let g of e)(r===void 0||g.seq>r.seq)&&(r=g);let s=r===void 0?"":r.session_id,i=r===void 0||s===""?0:r.seq,c=bc(e,s),a=`<context_mode_state session="${s}" upto="${i}">`,l=z(lo([],o)),u=Ro-(z(a)+1+l+1+z(Bt)),f=0,d=c.lastRequest===null?null:ao(c.lastRequest,o);d!==null&&(f+=z(d)+1);let x=Sc([...c.openErrors,...c.changedFiles,...c.decisions,...c.earlierRequests,...c.indexedSources],t),E=new Map,_=[],m=[];for(;x.length>0;){let g=0,A=-1/0;for(let Ke=0;Ke<x.length;Ke++){let qe=x[Ke],Gt=qe.score*wo**(E.get(qe.section)??0)/qe.bytes;(Gt>A||Gt===A&&qe.seq>x[g].seq)&&(g=Ke,A=Gt)}let k=x.splice(g,1)[0],Xe=z(ao(k,o))+1;f+Xe<=u?(f+=Xe,_.push(k),E.set(k.section,(E.get(k.section)??0)+1)):m.push(k)}let S=[a];d!==null&&S.push(d);for(let g of["open_errors","changed_files","decisions","earlier_requests","indexed_sources"])for(let A of _.filter(k=>k.section===g).sort((k,Xe)=>k.seq-Xe.seq))S.push(ao(A,o));if(n!==void 0){for(let g of n.sources){let A=z(g)+1;f+A>u||(f+=A,S.push(g))}for(let g of co(n.units,new Set,u-f)){let A=Ut(g);f+=z(A)+1,S.push(A)}}let h=[],p=new Set;for(let g of m.sort((A,k)=>A.seq-k.seq))if(!(g.query===null||p.has(g.query))){if(z(lo([...h,g.query],o))-l>u-f)break;h.push(g.query),p.add(g.query)}return S.push(lo(h,o),Bt),S.join(`
|
|
178
|
+
`)}var u0=new Set(["area","base","br","col","embed","hr","img","input","link","meta","param","source","track","wbr"]),d0=new Set(["script","style"]),f0=new TextEncoder;function Ht(e,t,n=Z){let o=E0(e);if(o.length===0)return[];let r=Math.max(4,Math.min(Z,Math.floor(n)));if(t==="md")return x0(o,r,r<Z);let s=t==="html"?h0(o):uo(o,!1);return fo(o,s,t!=="text",r,r<Z)}function x0(e,t,n){let o=[],r=[],s="",i=[],c=(l,u)=>{o.push({ord:o.length,text:l,bytes:u,title:s})},a=()=>{if(i.length!==0){for(let l of fo(e,i,!0,t,n))c(l.text,l.bytes);i=[]}};for(let l of uo(e,!0)){if(l.heading!==void 0){for(a();r.length>0&&r[r.length-1].level>=l.heading.level;)r.pop();r.push(l.heading),s=r.map(u=>u.text).join(" > ")}if(l.fence!==void 0&&$(e.slice(l.start,l.end))>t){let u=p0(e,l,l.fence,t);if(u!==void 0){a();for(let f of u)c(f,$(f));continue}}i.push(l)}return a(),o}function p0(e,t,n,o){let r=e.slice(t.start,n.openEnd),s=n.closeStart>=0?e.slice(n.closeStart,t.end):n.fence,i=n.closeStart>=0?Math.max(n.openEnd+1,n.closeStart-1):t.end,c=e.slice(Math.min(n.openEnd+1,i),i),a=o-$(r)-$(s)-2;if(!(a<16||c.length===0))return fo(c,uo(c,!1),!0,a,!0).map(l=>r+`
|
|
177
179
|
`+l.text+`
|
|
178
|
-
`+s)}function
|
|
180
|
+
`+s)}function E0(e){let t=e.split(`\r
|
|
179
181
|
`).join(`
|
|
180
|
-
`);return t.startsWith("\uFEFF")?t.slice(1):t}function
|
|
181
|
-
`,f),x=d<0?e.length:d,E=e.slice(f,x);if(i!=="")u(f,x,!1),
|
|
182
|
-
`||e===" "||e==="\f"||e==="\r"}function
|
|
183
|
-
`,E.end-1):-1;if(
|
|
184
|
-
`,d),S=
|
|
185
|
-
`,
|
|
186
|
-
`,
|
|
187
|
-
`&&n!=="\r"&&n!==" ")return n}return""}function
|
|
188
|
-
`);if(t.length>0&&t[t.length-1]===""&&t.pop(),t.length<
|
|
189
|
-
`)}}function
|
|
190
|
-
ref: #`+n}}function
|
|
191
|
-
`),
|
|
192
|
-
`),o.encode({event:"PreToolUse",agent:e,sessionId:"",cwd:"",turn:0},O)}let s;try{let c=e==="vscode"?[
|
|
193
|
-
`),o.encode(r,O)}let i;try{i=await
|
|
194
|
-
`),i=O}return o.encode(r,i)}function
|
|
195
|
-
`)})}function
|
|
196
|
-
`)})}async function
|
|
197
|
-
`),n=t<0?e:e.slice(0,t);if(!n.startsWith(
|
|
198
|
-
`+t}function
|
|
199
|
-
`+t)-1-Buffer.byteLength(e))}function
|
|
200
|
-
`);return(e.canonicalName+":"+(o<0?n:n.slice(0,o))).slice(0,
|
|
201
|
-
`)})}function
|
|
202
|
-
`)}async function
|
|
182
|
+
`);return t.startsWith("\uFEFF")?t.slice(1):t}function uo(e,t){let n=[],o=-1,r=-1,s=!1,i="",c,a,l=()=>{if(o>=0){let d={start:o,end:r};c!==void 0&&(d.heading=c),a!==void 0&&(d.fence=a),n.push(d)}o=-1,c=void 0,a=void 0},u=(d,x,E)=>{o<0&&(o=d),r=x,s=E},f=0;for(;f<=e.length;){let d=e.indexOf(`
|
|
183
|
+
`,f),x=d<0?e.length:d,E=e.slice(f,x);if(i!=="")u(f,x,!1),g0(E,i)&&(i="",t&&a!==void 0&&(a.closeStart=f,l()));else if(E.length===0)l();else{let _=t?m0(E):"",m=t&&_===""?_0(E):void 0,S=t&&_===""&&m===void 0&&E.includes("|");t&&o>=0&&(S!==s||_!==""||m!==void 0)&&l(),u(f,x,S),i=_,_!==""&&(a={fence:_,openEnd:x,closeStart:-1}),m!==void 0&&(c=m,l())}f=x+1}return l(),n}function _0(e){let t=0;for(;t<e.length&&t<4&&e[t]===" ";)t+=1;if(t>3)return;let n=0;for(;t+n<e.length&&e[t+n]==="#";)n+=1;if(n<1||n>6)return;let o=e[t+n];if(o!==void 0&&o!==" "&&o!==" ")return;let r=e.slice(t+n).trim(),s=r.length;for(;s>0&&r[s-1]==="#";)s-=1;return s===0?r="":s<r.length&&(r[s-1]===" "||r[s-1]===" ")&&(r=r.slice(0,s).trim()),{level:n,text:r}}function m0(e){let t=e.trimStart();if(!t.startsWith("```")&&!t.startsWith("~~~"))return"";let n=0;for(;n<t.length&&t[n]===t[0];)n+=1;return t.slice(0,n)}function g0(e,t){let n=e.trim();if(n.length<t.length)return!1;for(let o=0;o<n.length;o+=1)if(n[o]!==t[0])return!1;return!0}function h0(e){let t=[],n=new Map,o=0,r=0,s=0,i=c=>{Cc(t,e,r,c),r=c};for(;s<e.length;){if(e[s]!=="<"){s+=1;continue}if(e.startsWith("<!--",s)){let a=e.indexOf("-->",s+4);s=a<0?e.length:a+3;continue}let c=b0(e,s);if(c===void 0){s+=1;continue}if(s=c.end,c.close){let a=n.get(c.name)??0;if(a===0)continue;n.set(c.name,a-1),o-=1,o===0&&i(s);continue}if(!(c.selfClose||u0.has(c.name))){if(d0.has(c.name)){s=S0(e,s,c.name),o===0&&i(s);continue}n.set(c.name,(n.get(c.name)??0)+1),o+=1}}return Cc(t,e,r,e.length),t}function Ic(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"}function Dc(e){return Ic(e)||e>="0"&&e<="9"||e==="-"||e===":"}function b0(e,t){let n=t+1,o=e[n]==="/";if(o&&(n+=1),n>=e.length||!Ic(e[n]))return;let r=n;for(;n<e.length&&Dc(e[n]);)n+=1;let s=e.slice(r,n).toLowerCase(),i="";for(;n<e.length;){let c=e[n];if(i!=="")c===i&&(i="");else if(c==='"'||c==="'")i=c;else if(c===">")break;n+=1}if(!(n>=e.length))return{name:s,close:o,selfClose:e[n-1]==="/",end:n+1}}function S0(e,t,n){let o=e.indexOf("</",t);for(;o>=0;){let r=o+2+n.length;if(e.slice(o+2,r).toLowerCase()===n&&(r>=e.length||!Dc(e[r]))){let i=e.indexOf(">",r);return i<0?e.length:i+1}o=e.indexOf("</",o+2)}return e.length}function yc(e){return e===" "||e===`
|
|
184
|
+
`||e===" "||e==="\f"||e==="\r"}function Cc(e,t,n,o){let r=n,s=o;for(;r<s&&yc(t[r]);)r+=1;for(;s>r&&yc(t[s-1]);)s-=1;r<s&&e.push({start:r,end:s})}function $(e){return Buffer.byteLength(e,"utf8")}function kc(e,t,n,o){let r=Math.min(n,t+o.length);r<n&&[...e.slice(r-1,r+1)].length===1&&(r-=1);let s=f0.encodeInto(e.slice(t,r),o);return{end:t+s.read,written:s.written}}function fo(e,t,n,o,r){let s=[],i=new Uint8Array(o),c,a,l=0,u=(f,d,x)=>{s.push({ord:s.length,text:e.slice(f,d),bytes:x})};for(let f of t){if(a!==void 0&&!n&&(u(a.start,a.end,l),a=void 0),a!==void 0){let E=$(e.slice(a.end,f.end));if(l+E<=o){a.end=f.end,l+=E;continue}u(a.start,a.end,l),a=void 0}let d=f.start,x=$(e.slice(f.start,f.end));for(;x>o;){let E=kc(e,d,f.end,i),_=r?e.lastIndexOf(`
|
|
185
|
+
`,E.end-1):-1;if(_>d){let m=$(e.slice(d,_+1));u(d,_+1,m),d=_+1,x-=m;continue}if(r){let m=e.indexOf(`
|
|
186
|
+
`,d),S=m<0||m>=f.end?f.end:m+1,h=$(e.slice(d,S));if(h<=Z){u(d,S,h),d=S,x-=h;continue}c??=new Uint8Array(Z);let p=kc(e,d,S,c);u(d,p.end,p.written),d=p.end,x-=p.written;continue}u(d,E.end,E.written),d=E.end,x-=E.written}d>=f.end||(a={start:d,end:f.end},l=x)}return a!==void 0&&u(a.start,a.end,l),s}var T0=`
|
|
187
|
+
`,R0=1;function wc(e,t,n,o,r){return O0(e,t,n,o,r)}function O0(e,t,n,o,r){if(e.length===0)return{text:"",more:null};let s=e.map(d=>d.text),i=r===void 0?G(s,t):G(s,r,"any"),c=e.map((d,x)=>x).sort((d,x)=>i[x]-i[d]||e[x].ord-e[d].ord),a=[],l=0,u=!1;for(let d of c){let x=e[d].bytes+(a.length>0?R0:0);if(l+x>n){u=!0;continue}a.push(e[d]),l+=x}return a.sort((d,x)=>d.ord-x.ord),{text:a.map(d=>d.text).join(T0),more:u?xo(t,o):null}}function xo(e,t){let n=t===void 0?"":", source:"+JSON.stringify(t);return"ctx_search({queries:["+JSON.stringify(e)+"]"+n+"})"}var Lc=20,P=2,Pc=9,Mc=8,A0=.9,N0=.5,y0=64,C0=2,k0=4,po=`
|
|
188
|
+
`,I0="(absent)",B=e=>Buffer.byteLength(e,"utf8");function Uc(e,t,n){let o=L0(e,t)??U0(e,t)??F0(e);if(o===null||t.trim()==="")return null;let r=o.direct===!0?o.units.map(()=>1):G(o.units.map(l=>l.rank),t,"any"),s=o.units.map((l,u)=>u).filter(l=>r[l]>0).sort((l,u)=>r[u]-r[l]||o.units[l].pos-o.units[u].pos),i=[],c=0;for(let l of s){let u=i.length>0?B(po):0,f=o.units[l].render(n-c-u);f===null||c+u+B(f)>n||(i.push({pos:o.units[l].pos,text:f}),c+=u+B(f))}if(i.length===0)return null;i.sort((l,u)=>l.pos-u.pos);let a=i.map(l=>l.text);return c+B(po)+B(o.header)<=n&&a.unshift(o.header),a.join(po)}function D0(e){for(let t=0;t<e.length;t++){let n=e[t];if(n!==" "&&n!==`
|
|
189
|
+
`&&n!=="\r"&&n!==" ")return n}return""}function w0(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Hc(e,t,n){if(n.size<2||n.size>Mc)return[];let o=[...n.entries()].sort((i,c)=>c[1]-i[1]);if(n.size<=P+1)return o[0][1]<A0*e||e-o[0][1]>P?[]:o.slice(1).flatMap(([i])=>t.get(i)??[]);let r=o.filter(([,i])=>i>P),s=o.filter(([,i])=>i<=P);return r.length<2||s.length===0?[]:s.flatMap(([i])=>t.get(i)??[])}function vc(e){if(D0(e)!=="[")return null;let t;try{t=JSON.parse(e)}catch{return null}if(!Array.isArray(t)||t.length<Lc||!t.every(w0))return null;let n=t,o=[],r=new Set;for(let s of n)for(let i of Object.keys(s))r.has(i)||(r.add(i),o.push(i));return{objs:n,keys:o}}var Fc=(e,t)=>e+" objects {"+t.join(",")+"}";function L0(e,t){let n=vc(e);if(n===null)return null;let{objs:o,keys:r}=n,s=new Map;for(let l of r){let u=new Map,f=new Map,d=!0;for(let x=0;x<o.length&&d;x++){let E=l in o[x]?o[x][l]:void 0;if(typeof E=="object"&&E!==null){d=!1;break}let _=E===void 0?I0:JSON.stringify(E);f.set(_,(f.get(_)??0)+1);let m=u.get(_)??[];if(m.length<=P&&m.push(x),u.set(_,m),f.size>Mc)break}if(d)for(let x of Hc(o.length,u,f))s.set(x,[...s.get(x)??[],l])}if(s.size===0||s.size>Pc)return null;let i=G(r,t,"any"),c=new Set(r.filter((l,u)=>i[u]>0)),a=[...s.entries()].map(([l,u])=>({pos:l,rank:JSON.stringify(o[l]),render:f=>jc(l,o[l],u,c,f)}));return{header:Fc(o.length,r)+", "+s.size+" rare:",units:a}}function jc(e,t,n,o,r){let s="["+e+"] ",i=P0(t,n,o,r-B(s));return i===null?null:s+i}function P0(e,t,n,o){let r=JSON.stringify(e);if(B(r)<=o)return r;let s=Object.keys(e),i=f=>t.includes(f)?0:n.has(f)?1:typeof e[f]!="object"||e[f]===null?2:3,c=[...s].sort((f,d)=>i(f)-i(d)||s.indexOf(f)-s.indexOf(d)),a=f=>JSON.stringify(f)+":"+JSON.stringify(e[f]),l=new Set,u=2;for(let f of c){let d=B(a(f))+(l.size>0?1:0);u+d>o||(l.add(f),u+=d)}return t.every(f=>l.has(f))?"{"+s.filter(f=>l.has(f)).map(a).join(",")+"}":null}function M0(e,t){let n=G(e,t,"any");return new Set(e.filter((o,r)=>n[r]>0))}function U0(e,t){let n=vc(e);if(n===null)return null;let{objs:o,keys:r}=n,s=M0(r,t),i=new Map,c=0;for(let l of r){if(!s.has(l)||c>=C0||!o.every(d=>typeof d[l]=="number"&&Number.isFinite(d[l])))continue;let u=0,f=0;for(let d=1;d<o.length;d++)o[d][l]>o[u][l]&&(u=d),o[d][l]<o[f][l]&&(f=d);u!==f&&(c++,i.set(u,l),i.set(f,l))}if(i.size===0)return null;let a=[...i.entries()].map(([l,u])=>({pos:l,rank:"",render:f=>jc(l,o[l],[u],s,f)}));return{header:Fc(o.length,r)+", extremes of "+[...new Set(i.values())].join(",")+":",units:a,direct:!0}}function H0(e){for(let t=0;t<e.length;t++)if(e[t]>="0"&&e[t]<="9")return!0;return!1}function v0(e,t){let n=0;for(let o=0;o<e.length;o++)(e[o]===t[o]||e[o]==="<*>"||t[o]==="<*>")&&n++;return n/e.length}function F0(e){let t=e.split(`
|
|
190
|
+
`);if(t.length>0&&t[t.length-1]===""&&t.pop(),t.length<Lc)return null;let n=new Map,o=[];for(let a=0;a<t.length;a++){let l=t[a].split(" ").filter(E=>E!==""),u=l.map(E=>H0(E)?"<*>":E),f=u.length+" "+(u[0]??""),d=n.get(f)??[],x;for(let E of d)if(v0(E.tpl,u)>=N0){x=E;break}if(x===void 0){if(x={tpl:[...u],count:0,lines:[],pos:l.map(()=>({counts:new Map,totals:new Map}))},d.push(x),n.set(f,d),o.push(x),o.length>y0)return null}else for(let E=0;E<x.tpl.length;E++)x.tpl[E]!==u[E]&&(x.tpl[E]="<*>");x.count++,x.lines.length<=P&&x.lines.push(a);for(let E=0;E<x.pos.length;E++){let _=x.pos[E];if(_===null)continue;_.totals.set(l[E],(_.totals.get(l[E])??0)+1);let m=_.counts.get(l[E])??[];m.length<=P&&m.push(a),_.counts.set(l[E],m),_.totals.size>P+1&&(x.pos[E]=null)}}let r=o.filter(a=>a.count>P);if(r.length===0||r.length>k0||r.some(a=>a.tpl.every(l=>l==="<*>")))return null;let s=new Set(o.filter(a=>a.count<=P).flatMap(a=>a.lines));for(let a of r)for(let l of a.pos)if(l!==null)for(let u of Hc(a.count,l.counts,l.totals))s.add(u);if(s.size===0||s.size>Pc)return null;let i=t.length+" lines, "+s.size+" rare:",c=[...s].sort((a,l)=>a-l).map(a=>{let l=a+1+": "+t[a];return{pos:a,rank:t[a],render:u=>B(l)<=u?l:null}});return{header:i,units:c}}function j0(e,t,n,o,r,s,i,c=Ht(s,i)){return{sourceId:pc(e,{projectKey:t.projectKey,sessionId:n,worktree:t.worktree,agent:t.agent,kind:o,label:r,bytes:Buffer.byteLength(s,"utf8"),chunkCount:c.length,createdAt:Date.now()},c),chunks:c.length}}function Eo(e,t,n,o,r,s,i){return j0(e,t,n,"content",o,r,s,i)}async function G0(e,t){try{let n=await N(e);Lt(n,t)}catch(n){let o=n instanceof Error?n.message:String(n);process.stderr.write("hooks: journal write failed: "+o+`
|
|
191
|
+
`)}}function vt(e,t,n){G0(e,n)}function Gc(e,t,n){let o=new Set(Ee(t.toLowerCase()));for(let i of Ee(e.toLowerCase()))o.delete(i);if(o.size===0)return"";let r=new Map;for(let i of Ee(n.toLowerCase()))o.has(i)&&r.set(i,(r.get(i)??0)+1);return[...r.entries()].sort((i,c)=>i[1]-c[1]||(i[0]<c[0]?-1:i[0]>c[0]?1:0)).slice(0,Do).map(i=>i[0]).join(" ")}function Be(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function B0(e){return typeof e=="string"?e:Array.isArray(e)?e.filter(t=>typeof t=="string"&&t!=="").join(Br):""}function W0(e){return Array.isArray(e)?e.filter(Be).filter(t=>typeof t.question=="string").map(t=>[t.question,t.label]):Be(e)?Object.entries(e):[]}function Wc(e){let t;try{t=JSON.parse(e)}catch{return[]}if(!Be(t))return[];let n=[];for(let[o,r]of W0(t[Gr])){let s=B0(r);o===""||s===""||n.push({key:o,body:"Q: "+o+" \u2192 A: "+s})}return n}function Xc(e){let t=e.questions;if(!Array.isArray(t))return[];let n=[];for(let o of t)if(!(!Be(o)||!Array.isArray(o.options)))for(let r of o.options)Be(r)&&typeof r.label=="string"&&r.label!==""&&n.push(r.label);return n}function Bc(e){return e.trim().toLowerCase()}function Kc(e,t,n){let o=Bc(e);if(o==="")return null;let r=t.find(s=>Bc(s)===o);return r===void 0?null:{key:st,body:"A: "+r+`
|
|
192
|
+
ref: #`+n}}function X0(e,t){return"hint:"+e+":"+t}function K0(e,t){return J(e,t)!==null?!1:(j(e,t,"1"),!0)}function q0(e,t,n){let o=J(e,t),r=(o===null?0:Number.parseInt(o,10))+1;return j(e,t,String(r)),(r-1)%n===0}function Ft(e,t,n,o){if(t==="")return!1;let r=X0(t,n),s=i=>o===void 0?K0(i,r):q0(i,r,o);return e.raw.isTransaction?s(e):L(e,s)}var{read:Y0,writeSync:V0}=process.getBuiltinModule("node:fs"),qc=65536;function J0(e){let t=Buffer.allocUnsafe(qc);return new Promise(n=>{let o=()=>{Y0(0,t,0,qc,null,(r,s)=>{if(r)return n(r.code==="EOF");if(s===0)return n(!0);e.push(Buffer.from(t.subarray(0,s))),o()})};o()})}async function _o(){let e=[];if(!await J0(e))for await(let t of process.stdin)e.push(t);return Buffer.concat(e).toString("utf8")}function mo(e){let t=Buffer.from(e,"utf8"),n=0;try{for(;n<t.length;)n+=V0(1,t,n,t.length-n)}catch(o){if(o.code!=="EAGAIN")throw o;process.stdout.write(t.subarray(n))}}var{readFileSync:z0}=process.getBuiltinModule("node:fs"),O={kind:"allow"},Z0={stdout:"",exitCode:0},ef=48;function tf(e){return ge.includes(e)}function me(e){return e instanceof Error?e.message:String(e)}function We(e){return typeof e=="string"?e:""}async function Vc(e,t,n){if(!tf(e))return process.stderr.write("hooks: unknown agent "+JSON.stringify(e)+`
|
|
193
|
+
`),Z0;let o=Ce(e),r;try{r=o.decode(t)}catch(c){return process.stderr.write("hooks: decode failed: "+me(c)+`
|
|
194
|
+
`),o.encode({event:"PreToolUse",agent:e,sessionId:"",cwd:"",turn:0},O)}let s;try{let c=e==="vscode"?[ze,r.cwd]:process.argv;s=ec(e,{env:n,argv:c,cwd:r.cwd,piCwd:e==="pi"?r.cwd:void 0})}catch(c){return process.stderr.write("hooks: no project: "+String(c.code??"ERROR")+" "+me(c)+`
|
|
195
|
+
`),o.encode(r,O)}let i;try{i=await nf(r,o,s,n)}catch(c){process.stderr.write("hooks: "+me(c)+`
|
|
196
|
+
`),i=O}return o.encode(r,i)}function nf(e,t,n,o){switch(e.event){case"SessionStart":return of(e,t,n);case"UserPromptSubmit":return rf(e,t,n);case"PreToolUse":return xf(e,t,n,o);case"PostToolUse":return hf(e,t,n,o);case"PreCompact":return Af(e,t,n);case"Usage":return Nf(e,n)}return Promise.resolve(O)}function Jc(e,t){return e.split(ur).join(t.toolNamePrefix)}function ho(e,t,n){return n.compactSummary==="host"?M(Mo,n.toolNamePrefix):Nc(Zn(e,t.sessionId),t.turn??0,void 0,n.toolNamePrefix)}async function of(e,t,n){if(e.source==="compact"&&_t(t)&&zc(await N(n),e.sessionId),e.source==="compact"&&t.compactDelivery==="sessionstart"){let r=await N(n);return Ft(r,e.sessionId,rn)?{kind:"hint",text:ho(r,e,t),onceKey:rn}:O}let o=await N(n);return t.compactDelivery==="opencode-cache"&&wt(o,nt+e.sessionId)!==null?{kind:"hint",text:ho(o,e,t),onceKey:sn}:Ft(o,e.sessionId,Oe)?{kind:"hint",text:Jc(xn,t),onceKey:Oe}:O}async function rf(e,t,n){let o=e.prompt??"",r=await sf(e,t,n);if(vt(n,e.sessionId,{session_id:e.sessionId,worktree:n.worktree,agent:e.agent,kind:"prompt",tool:null,key:null,path:null,ok:1,exit_code:null,bytes:Buffer.byteLength(o),body:o,turn:e.turn??0,sandbox_bytes:0,returned_bytes:0}),df(e,n,o),t.compactDelivery==="pending-flag"){let s=await N(n);if(wt(s,nt+e.sessionId)!==null)return{kind:"hint",text:ho(s,e,t),onceKey:sn}}return r!==null?r:lf(e,t,n,o)}async function sf(e,t,n){if(t.eventMap.SessionStart!==void 0||e.sessionId==="")return null;let o=await N(n);return uc(o,e.sessionId)||!Ft(o,e.sessionId,Oe)||!lc(o,n.worktree,e.agent)?null:{kind:"hint",text:Jc(xn,t),onceKey:Oe}}function zc(e,t){t!==""&&j(e,un+t,cn)}function cf(e){if(e===null)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="number"):[]}catch{return[]}}function af(e){if(e===null)return[];try{let t=JSON.parse(e);return Array.isArray(t)?t.filter(n=>typeof n=="string"):[]}catch{return[]}}async function lf(e,t,n,o){if(!_t(t)||e.sessionId==="")return O;let r=await N(n);if(J(r,un+e.sessionId)===null)return O;let s=Pr+e.sessionId,i=cf(J(r,s)),c=wr+e.sessionId,a=af(J(r,c)),l=cc(r,e.sessionId),u=hc(r,e.sessionId,gc(o,l),Lr),f=Ac(ac(r,e.sessionId,n.worktree,Dr),o,new Set(i),u,new Set(a));return f.text===""?O:(f.seqs.length>0&&j(r,s,JSON.stringify([...i,...f.seqs])),f.units!==void 0&&j(r,c,JSON.stringify([...a,...f.units])),{kind:"hint",text:f.text,onceKey:Mr})}function $c(e){return rt+":"+st+":"+e}function uf(e){try{let t=JSON.parse(e);if(typeof t!="object"||t===null)return null;let{seq:n,labels:o}=t;return typeof n!="number"||!Array.isArray(o)?null:{seq:n,labels:o.filter(r=>typeof r=="string")}}catch{return null}}function df(e,t,n){if(e.sessionId==="")return;let o=$c(e.sessionId);N(t).then(r=>{if(J(r,o)===null)return;let s=wt(r,o),i=s===null?null:uf(s);if(i===null)return;let c=Kc(n,i.labels,i.seq);c!==null&&Qc(r,e,t,[c])}).catch(r=>{process.stderr.write("hooks: decision write failed: "+me(r)+`
|
|
197
|
+
`)})}function Qc(e,t,n,o){for(let r of o)Lt(e,{session_id:t.sessionId,worktree:n.worktree,agent:t.agent,kind:"decision",tool:pn,key:r.key,path:null,ok:1,exit_code:null,bytes:Buffer.byteLength(r.body),body:r.body,turn:t.turn??0,sandbox_bytes:0,returned_bytes:0}),Eo(e,n,t.sessionId,rt,r.body,"text")}function ff(e,t,n,o){let r=Wc(o),s=r.length===0?Xc(n.input):[];r.length===0&&s.length===0||N(t).then(i=>{if(r.length>0)return Qc(i,e,t,r);let c=Zn(i,e.sessionId,"prompt"),a=c[c.length-1];a===void 0||e.sessionId===""||j(i,$c(e.sessionId),JSON.stringify({seq:a.seq,labels:s}))}).catch(i=>{process.stderr.write("hooks: decision write failed: "+me(i)+`
|
|
198
|
+
`)})}async function xf(e,t,n,o){let r=Fi(n.worktree,e.agent),s=Ki(e,t,r),i=s;return s.kind==="deny"&&pe(e)&&Fn(e,jn(e,{projectDir:n.worktree,env:o}))==="B"&&(i=Ef(e,t,s,r)),i}function Zc(e,t){return e.canonicalName===Cr||t.nativeTools.shell.includes(e.name)}function pf(e,t){return e.startsWith(Te)||e===M(Ze,t.toolNamePrefix)||e===M(et,t.toolNamePrefix)}function go(e){return Buffer.from(e,"utf8").toString("base64url")}function Ef(e,t,n,o){let r=e.tool;if(r===void 0||!Zc(r,t)||pf(n.reason,t))return n;let s=r.input.command;if(typeof s!="string")return n;let i='"'+Q0($0(process.argv[1]??""),Hr)+'"',c=[vr,i,go(s),go(JSON.stringify(o??[])),go(We(r.input.description))].join(" ");return{kind:"deny",reason:Fr,rewritten:c}}function _f(e,t,n){return n?"toolerr":kr.includes(e.canonicalName)||(t.nativeTools.edit??[]).includes(e.name)?"edit":Zc(e,t)?"cmd":null}function bo(e){if(Array.isArray(e))return"["+e.map(bo).join(",")+"]";if(typeof e=="object"&&e!==null){let t=e;return"{"+Object.keys(t).filter(o=>t[o]!==void 0).sort().map(o=>JSON.stringify(o)+":"+bo(t[o])).join(",")+"}"}return JSON.stringify(e)??"null"}function mf(e){let t=e.indexOf(`
|
|
199
|
+
`),n=t<0?e:e.slice(0,t);if(!n.startsWith(on))return null;let o=0,r=0;for(let s of n.slice(on.length)){let i=s.charCodeAt(0)-ef;if(i<0||i>9)break;o=o*10+i,r++}return r===0?null:o}function gf(e){for(let t of Ir)if(typeof e[t]=="string")return e[t];return null}async function hf(e,t,n,o){let r=e.tool;if(r===void 0||r.canonicalName.startsWith(yr))return O;let s=e.result??{isError:!1,bytes:0},i=Sf(s);s.persistedPath!==void 0&&(s.bytes=Buffer.byteLength(i)),r.canonicalName===pn&&ff(e,n,r,i);let c=_f(r,t,s.isError);if(c!==null){let g=c==="cmd"?sc(r.canonicalName,We(r.input.command)):c==="toolerr"?r.canonicalName+":"+bo(r.input):null;vt(n,e.sessionId,{session_id:e.sessionId,worktree:n.worktree,agent:e.agent,kind:c,tool:r.canonicalName,key:g,path:gf(r.input),ok:s.isError?0:1,exit_code:mf(i),bytes:s.bytes,body:i,turn:e.turn??0,sandbox_bytes:s.bytes,returned_bytes:s.bytes})}if(s.bytes<=No||s.keep===!0)return O;let a;if(pe(e)){if(Fn(e,jn(e,{projectDir:n.worktree,env:o}))==="A")return O;a=Ur+r.canonicalName+":"+String(e.turn??0)}else{if(!ye(t))return O;a=Rf(r,e)}let l=[r.input.description,r.input.command,r.input.file_path,r.input.pattern,r.input.url].map(We).find(g=>g.trim()!=="")??"",u=Ht(i,"text",ko),f=await N(n),d;s.bytes<=Ao?(d=Eo(f,n,e.sessionId,a,i,"text",u).sourceId,oo(f,d,e.sessionId,ro(i))):(d=to(f,ea(n,e.sessionId,a),u),Of(n,e.sessionId,d,a,i,u));let x=mc(d),E=await Tf(n,e.sessionId),_=E.trim()===""?void 0:l+" "+E,m=Io(l,x,s.bytes,t.toolNamePrefix,Gc(l,E,i)),S=bf(m,xo(l,a)),h=Uc(i,_??l,Co);if(h!==null)return{kind:"replace",output:Yc(h,m)};let p=wc(u,l,S,a,_);return{kind:"replace",output:p.more!==null?Yc(p.text,m):p.text}}function Yc(e,t){return e===""?t:e+`
|
|
200
|
+
`+t}function bf(e,t){return Math.max(0,yo+Buffer.byteLength(`
|
|
201
|
+
`+t)-1-Buffer.byteLength(e))}function Sf(e){let t=e.text??"";if(e.persistedPath===void 0)return t;try{return z0(e.persistedPath,"utf8")}catch{return t}}async function Tf(e,t){try{return ic(await N(e),t)}catch{return""}}function Rf(e,t){let n=We(e.input.command)??We(e.input.file_path)??"",o=n.indexOf(`
|
|
202
|
+
`);return(e.canonicalName+":"+(o<0?n:n.slice(0,o))).slice(0,Ko)+"#"+(e.callId??String(t.turn??0))}function Of(e,t,n,o,r,s){N(e).then(i=>{Ec(i,n,ea(e,t,o),s,ro(r))}).catch(i=>{process.stderr.write("hooks: index write failed: "+me(i)+`
|
|
203
|
+
`)})}function ea(e,t,n){return{sessionId:t,worktree:e.worktree,agent:e.agent,kind:"content",label:n,createdAt:Date.now()}}async function Af(e,t,n){let o=await N(n);return j(o,nt+e.sessionId,cn),_t(t)&&zc(o,e.sessionId),O}function Nf(e,t){return vt(t,e.sessionId,{session_id:e.sessionId,worktree:t.worktree,agent:e.agent,kind:"cost",tool:null,key:null,path:null,ok:1,exit_code:null,bytes:0,body:"",turn:e.turn??0,sandbox_bytes:0,returned_bytes:0}),Promise.resolve(O)}var So={stdout:"",exitCode:0};function yf(e){return ge.includes(e)}function jt(e){process.exitCode=e.exitCode,e.stdout!==""&&mo(e.stdout),e.stderr!==void 0&&e.stderr!==""&&process.stderr.write(e.stderr+`
|
|
204
|
+
`)}async function Cf(e,t){let n=e.indexOf(ot),o=n>=0?e[n+1]??"":"";if(!yf(o))return console.error("hooks: unknown "+ot+" "+JSON.stringify(o)+". Fix: pass "+ot+" with one of "+ge.join(", ")+"."),jt(So);let r;try{r=JSON.parse(await _o())}catch(s){return console.error("hooks: "+s.message),jt(So)}try{return jt(await Vc(o,r,t))}catch(s){return console.error("hooks: "+s.message),jt(So)}}Cf(process.argv.slice(2),process.env);export{Cf as main};
|