@burtson-labs/bandit-stealth-cli 1.7.6 → 1.7.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +1 -1
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -808,7 +808,7 @@ ${x}`;try{let Se=await pe.run(x,d.chat,he);_e("task:done",{goal:x,iterations:Se.
808
808
  `),x=g.split(`
809
809
  `),E=T.length,W=x.length;if(E*W>4e4)return{plus:x.length,minus:T.length};let Y=Array.from({length:E+1},()=>new Array(W+1).fill(0));for(let Ne=1;Ne<=E;Ne++)for(let ne=1;ne<=W;ne++)Y[Ne][ne]=T[Ne-1]===x[ne-1]?Y[Ne-1][ne-1]+1:Math.max(Y[Ne-1][ne],Y[Ne][ne-1]);let _e=E,pe=W,he=0,Se=0;for(;_e>0&&pe>0;)T[_e-1]===x[pe-1]?(_e--,pe--):Y[_e][pe-1]>=Y[_e-1][pe]?(he++,pe--):(Se++,_e--);return he+=pe,Se+=_e,{plus:he,minus:Se}}t(oIt,"lineCountDiff");function cIt(d){if(d.isNewFile)return"(new file)";let g=d.after.split(`
810
810
  `),T=d.before.split(`
811
- `);for(let x=0;x<g.length;x++)if(g[x]!==T[x]){let E=(g[x]??"").trim();if(E)return E.length>80?E.slice(0,77)+"\u2026":E}return"(whitespace-only edit)"}t(cIt,"describeEdit");var ASe=class{static{t(this,"CheckpointStore")}constructor(g){this.counter=0,this.workspaceRoot=g.workspaceRoot,this.dir=FD.join(g.workspaceRoot,".bandit","checkpoints"),this.maxIndexEntries=g.maxIndexEntries??aIt}async create(g){await $w.promises.mkdir(FD.join(this.dir,g.turnId),{recursive:!0}),this.counter++;let T=`chk-${g.turnId.split("-").pop()??"x"}-${String(this.counter).padStart(3,"0")}`,x=FD.relative(this.workspaceRoot,g.absolutePath)||g.absolutePath,E=g.before.length===0,W={id:T,turnId:g.turnId,timestamp:Date.now(),tool:g.tool,path:g.absolutePath,relPath:x,before:g.before,after:g.after,isNewFile:E,iteration:g.iteration,description:cIt({before:g.before,after:g.after,isNewFile:E})},Y=FD.join(this.dir,g.turnId,`${T}.json`);return await $w.promises.writeFile(Y,JSON.stringify(W,null,2)),await this.appendToIndex(W),W}async list(g=20){return(await this.readIndex()).slice(0,g)}async get(g){let x=(await this.readIndex()).find(W=>W.id===g);if(!x)return null;let E=FD.join(this.dir,x.turnId,`${g}.json`);try{let W=await $w.promises.readFile(E,"utf-8");return JSON.parse(W)}catch{return null}}async rewind(g){let T=await this.get(g);if(!T)return null;try{return T.isNewFile?await $w.promises.unlink(T.path).catch(()=>{}):(await $w.promises.mkdir(FD.dirname(T.path),{recursive:!0}),await $w.promises.writeFile(T.path,T.before)),T}catch{return null}}async readIndex(){let g=FD.join(this.dir,wWe);try{let T=await $w.promises.readFile(g,"utf-8"),x=JSON.parse(T);return Array.isArray(x)?x:[]}catch{return[]}}async writeIndex(g){await $w.promises.mkdir(this.dir,{recursive:!0});let T=FD.join(this.dir,wWe);await $w.promises.writeFile(T,JSON.stringify(g,null,2))}async appendToIndex(g){let{plus:T,minus:x}=oIt(g.before,g.after),E={id:g.id,turnId:g.turnId,timestamp:g.timestamp,tool:g.tool,relPath:g.relPath,iteration:g.iteration,description:g.description,plus:T,minus:x},W=await this.readIndex();W.unshift(E);let Y=W.slice(0,this.maxIndexEntries);await this.writeIndex(Y)}};Zx.CheckpointStore=ASe});var FSe=Ti(Dl=>{"use strict";Object.defineProperty(Dl,"__esModule",{value:!0});Dl.CheckpointStore=Dl.isChatCapable=Dl.suggestOllamaMatch=Dl.listInstalledOllamaModels=Dl.previewText=Dl.openTurnLog=Dl.SessionPermissionStore=Dl.mergePolicies=Dl.emptyPolicy=Dl.evaluatePermission=Dl.buildTaskTool=Dl.buildWebFetchTool=Dl.buildTodoWriteTool=Dl.TodoStore=Dl.expandMentions=Dl.runHooks=Dl.persistAllowEntry=Dl.loadHookSettings=Dl.loadMemory=void 0;var lIt=oWe();Object.defineProperty(Dl,"loadMemory",{enumerable:!0,get:t(function(){return lIt.loadMemory},"get")});var ISe=lWe();Object.defineProperty(Dl,"loadHookSettings",{enumerable:!0,get:t(function(){return ISe.loadHookSettings},"get")});Object.defineProperty(Dl,"persistAllowEntry",{enumerable:!0,get:t(function(){return ISe.persistAllowEntry},"get")});Object.defineProperty(Dl,"runHooks",{enumerable:!0,get:t(function(){return ISe.runHooks},"get")});var uIt=pWe();Object.defineProperty(Dl,"expandMentions",{enumerable:!0,get:t(function(){return uIt.expandMentions},"get")});var NSe=mWe();Object.defineProperty(Dl,"TodoStore",{enumerable:!0,get:t(function(){return NSe.TodoStore},"get")});Object.defineProperty(Dl,"buildTodoWriteTool",{enumerable:!0,get:t(function(){return NSe.buildTodoWriteTool},"get")});Object.defineProperty(Dl,"buildWebFetchTool",{enumerable:!0,get:t(function(){return NSe.buildWebFetchTool},"get")});var _It=yWe();Object.defineProperty(Dl,"buildTaskTool",{enumerable:!0,get:t(function(){return _It.buildTaskTool},"get")});var PZ=vWe();Object.defineProperty(Dl,"evaluatePermission",{enumerable:!0,get:t(function(){return PZ.evaluatePermission},"get")});Object.defineProperty(Dl,"emptyPolicy",{enumerable:!0,get:t(function(){return PZ.emptyPolicy},"get")});Object.defineProperty(Dl,"mergePolicies",{enumerable:!0,get:t(function(){return PZ.mergePolicies},"get")});Object.defineProperty(Dl,"SessionPermissionStore",{enumerable:!0,get:t(function(){return PZ.SessionPermissionStore},"get")});var DWe=kWe();Object.defineProperty(Dl,"openTurnLog",{enumerable:!0,get:t(function(){return DWe.openTurnLog},"get")});Object.defineProperty(Dl,"previewText",{enumerable:!0,get:t(function(){return DWe.previewText},"get")});var OSe=CWe();Object.defineProperty(Dl,"listInstalledOllamaModels",{enumerable:!0,get:t(function(){return OSe.listInstalledOllamaModels},"get")});Object.defineProperty(Dl,"suggestOllamaMatch",{enumerable:!0,get:t(function(){return OSe.suggestOllamaMatch},"get")});Object.defineProperty(Dl,"isChatCapable",{enumerable:!0,get:t(function(){return OSe.isChatCapable},"get")});var fIt=PWe();Object.defineProperty(Dl,"CheckpointStore",{enumerable:!0,get:t(function(){return fIt.CheckpointStore},"get")})});var DZ=Ti((_Ft,pIt)=>{pIt.exports={name:"@burtson-labs/bandit-stealth-cli",version:"1.7.6",description:"Bandit \u2014 a local-first AI coding agent for your terminal. Same runtime as the Bandit Stealth VS Code / Cursor extension.",keywords:["ai","agent","cli","coding-agent","llm","ollama","local-first","bandit","burtson-labs","terminal","repl","developer-tools"],homepage:"https://burtson.ai",bugs:{email:"team@burtson.ai"},license:"MIT",author:{name:"Burtson Labs",email:"team@burtson.ai",url:"https://burtson.ai"},bin:{bandit:"./dist/cli.js"},main:"dist/cli.js",files:["dist/cli.js","README.md","LICENSE"],engines:{node:">=20"},publishConfig:{access:"public"},scripts:{typecheck:"tsc -p tsconfig.json --noEmit",build:"node build.mjs","build:publish":"node build.mjs --publish",dev:"node build.mjs --watch",start:"node dist/cli.js",smoke:"node build.mjs && node dist/__smoke__/smoke.js",integration:"node build.mjs && node dist/__integration__/ollama.js",eval:"node build.mjs && node dist/__eval__/eval.js",benchmark:"node build.mjs && node dist/__eval__/benchmark.js","gen-logo":"node scripts/gen-logo.mjs","preview-banner":"node scripts/preview-banner.mjs",clean:"rm -rf dist",prepack:"node scripts/prepack.mjs",postpack:"node scripts/postpack.mjs",prepublishOnly:"pnpm run clean && pnpm run typecheck && pnpm run build:publish"},dependencies:{"pdf-parse":"^2.4.5"},devDependencies:{"@burtson-labs/agent-core":"workspace:*","@burtson-labs/host-kit":"workspace:*","@burtson-labs/stealth-core-runtime":"workspace:*","@types/node":"^20.11.0","@types/pdf-parse":"^1.1.5","@types/pngjs":"^6.0.5",esbuild:"^0.28.0",pngjs:"^7.0.0",typescript:"^5.4.0"}}});var kIt={};module.exports=HSt(kIt);var r1=z_(require("fs")),mh=z_(require("path")),GB=z_(require("readline")),ek=z_(LY()),wI=z_(lSe());var qB=z_(require("fs")),_Se=z_(require("os")),xI=z_(require("path")),vZ=z_(require("child_process"));function yZ(d){return d==="~"?_Se.homedir():d.startsWith("~/")?xI.join(_Se.homedir(),d.slice(2)):d}t(yZ,"expandHome");var YO=16*1024,uSe=32*1024,Mze=1e4,K4t=3e4,fSe=200,pSe=new Set(["node_modules",".git","dist","build","out",".next",".turbo","coverage","target","__pycache__",".venv","venv"]);function Y4t(d){let g=t(x=>{let E=x.match(/^(.*?)\{([^}]+)\}(.*)$/);if(!E)return[x];let[,W,Y,_e]=E;return Y.split(",").map(pe=>`${W}${pe.trim()}${_e}`)},"braceExpand"),T=d.match(/^([^*{}]+?)\/\*\*\/(.+)$/);if(T){let[,x,E]=T;return{includes:g(E),subDir:x}}return{includes:g(d),subDir:""}}t(Y4t,"expandGlobForGrep");var ZO=class{constructor(g,T,x={}){this.workspaceRoot=g;this.languageAdapters=T;this.options=x}static{t(this,"CliToolExecutionContext")}async readFile(g){return qB.promises.readFile(yZ(g),"utf-8")}async writeFile(g,T){let x=yZ(g);if(this.options.approveWrite&&!await this.options.approveWrite(x,T))throw new Error(`Write to ${x} rejected by user`);await qB.promises.mkdir(xI.dirname(x),{recursive:!0}),await qB.promises.writeFile(x,T,"utf-8")}async listFiles(g,T){let x=yZ(T??this.workspaceRoot),E=Z4t(g),W=[];return await Rze(x,x,E,W),W.slice(0,fSe).sort()}async searchCode(g,T,x){let E=yZ(T??this.workspaceRoot);return this.runRipgrep(g,E,x).catch(()=>this.runGrep(g,E,x))}async runCommand(g,T,x){return new Promise(E=>{let W="",Y="",_e=vZ.spawn(g,T,{cwd:x??this.workspaceRoot,shell:!1,env:{...process.env}}),pe=setTimeout(()=>{_e.kill("SIGTERM"),E({stdout:W.slice(0,uSe),stderr:Y+`
811
+ `);for(let x=0;x<g.length;x++)if(g[x]!==T[x]){let E=(g[x]??"").trim();if(E)return E.length>80?E.slice(0,77)+"\u2026":E}return"(whitespace-only edit)"}t(cIt,"describeEdit");var ASe=class{static{t(this,"CheckpointStore")}constructor(g){this.counter=0,this.workspaceRoot=g.workspaceRoot,this.dir=FD.join(g.workspaceRoot,".bandit","checkpoints"),this.maxIndexEntries=g.maxIndexEntries??aIt}async create(g){await $w.promises.mkdir(FD.join(this.dir,g.turnId),{recursive:!0}),this.counter++;let T=`chk-${g.turnId.split("-").pop()??"x"}-${String(this.counter).padStart(3,"0")}`,x=FD.relative(this.workspaceRoot,g.absolutePath)||g.absolutePath,E=g.before.length===0,W={id:T,turnId:g.turnId,timestamp:Date.now(),tool:g.tool,path:g.absolutePath,relPath:x,before:g.before,after:g.after,isNewFile:E,iteration:g.iteration,description:cIt({before:g.before,after:g.after,isNewFile:E})},Y=FD.join(this.dir,g.turnId,`${T}.json`);return await $w.promises.writeFile(Y,JSON.stringify(W,null,2)),await this.appendToIndex(W),W}async list(g=20){return(await this.readIndex()).slice(0,g)}async get(g){let x=(await this.readIndex()).find(W=>W.id===g);if(!x)return null;let E=FD.join(this.dir,x.turnId,`${g}.json`);try{let W=await $w.promises.readFile(E,"utf-8");return JSON.parse(W)}catch{return null}}async rewind(g){let T=await this.get(g);if(!T)return null;try{return T.isNewFile?await $w.promises.unlink(T.path).catch(()=>{}):(await $w.promises.mkdir(FD.dirname(T.path),{recursive:!0}),await $w.promises.writeFile(T.path,T.before)),T}catch{return null}}async readIndex(){let g=FD.join(this.dir,wWe);try{let T=await $w.promises.readFile(g,"utf-8"),x=JSON.parse(T);return Array.isArray(x)?x:[]}catch{return[]}}async writeIndex(g){await $w.promises.mkdir(this.dir,{recursive:!0});let T=FD.join(this.dir,wWe);await $w.promises.writeFile(T,JSON.stringify(g,null,2))}async appendToIndex(g){let{plus:T,minus:x}=oIt(g.before,g.after),E={id:g.id,turnId:g.turnId,timestamp:g.timestamp,tool:g.tool,relPath:g.relPath,iteration:g.iteration,description:g.description,plus:T,minus:x},W=await this.readIndex();W.unshift(E);let Y=W.slice(0,this.maxIndexEntries);await this.writeIndex(Y)}};Zx.CheckpointStore=ASe});var FSe=Ti(Dl=>{"use strict";Object.defineProperty(Dl,"__esModule",{value:!0});Dl.CheckpointStore=Dl.isChatCapable=Dl.suggestOllamaMatch=Dl.listInstalledOllamaModels=Dl.previewText=Dl.openTurnLog=Dl.SessionPermissionStore=Dl.mergePolicies=Dl.emptyPolicy=Dl.evaluatePermission=Dl.buildTaskTool=Dl.buildWebFetchTool=Dl.buildTodoWriteTool=Dl.TodoStore=Dl.expandMentions=Dl.runHooks=Dl.persistAllowEntry=Dl.loadHookSettings=Dl.loadMemory=void 0;var lIt=oWe();Object.defineProperty(Dl,"loadMemory",{enumerable:!0,get:t(function(){return lIt.loadMemory},"get")});var ISe=lWe();Object.defineProperty(Dl,"loadHookSettings",{enumerable:!0,get:t(function(){return ISe.loadHookSettings},"get")});Object.defineProperty(Dl,"persistAllowEntry",{enumerable:!0,get:t(function(){return ISe.persistAllowEntry},"get")});Object.defineProperty(Dl,"runHooks",{enumerable:!0,get:t(function(){return ISe.runHooks},"get")});var uIt=pWe();Object.defineProperty(Dl,"expandMentions",{enumerable:!0,get:t(function(){return uIt.expandMentions},"get")});var NSe=mWe();Object.defineProperty(Dl,"TodoStore",{enumerable:!0,get:t(function(){return NSe.TodoStore},"get")});Object.defineProperty(Dl,"buildTodoWriteTool",{enumerable:!0,get:t(function(){return NSe.buildTodoWriteTool},"get")});Object.defineProperty(Dl,"buildWebFetchTool",{enumerable:!0,get:t(function(){return NSe.buildWebFetchTool},"get")});var _It=yWe();Object.defineProperty(Dl,"buildTaskTool",{enumerable:!0,get:t(function(){return _It.buildTaskTool},"get")});var PZ=vWe();Object.defineProperty(Dl,"evaluatePermission",{enumerable:!0,get:t(function(){return PZ.evaluatePermission},"get")});Object.defineProperty(Dl,"emptyPolicy",{enumerable:!0,get:t(function(){return PZ.emptyPolicy},"get")});Object.defineProperty(Dl,"mergePolicies",{enumerable:!0,get:t(function(){return PZ.mergePolicies},"get")});Object.defineProperty(Dl,"SessionPermissionStore",{enumerable:!0,get:t(function(){return PZ.SessionPermissionStore},"get")});var DWe=kWe();Object.defineProperty(Dl,"openTurnLog",{enumerable:!0,get:t(function(){return DWe.openTurnLog},"get")});Object.defineProperty(Dl,"previewText",{enumerable:!0,get:t(function(){return DWe.previewText},"get")});var OSe=CWe();Object.defineProperty(Dl,"listInstalledOllamaModels",{enumerable:!0,get:t(function(){return OSe.listInstalledOllamaModels},"get")});Object.defineProperty(Dl,"suggestOllamaMatch",{enumerable:!0,get:t(function(){return OSe.suggestOllamaMatch},"get")});Object.defineProperty(Dl,"isChatCapable",{enumerable:!0,get:t(function(){return OSe.isChatCapable},"get")});var fIt=PWe();Object.defineProperty(Dl,"CheckpointStore",{enumerable:!0,get:t(function(){return fIt.CheckpointStore},"get")})});var DZ=Ti((_Ft,pIt)=>{pIt.exports={name:"@burtson-labs/bandit-stealth-cli",version:"1.7.7",description:"Bandit \u2014 a local-first AI coding agent for your terminal. Same runtime as the Bandit Stealth VS Code / Cursor extension.",keywords:["ai","agent","cli","coding-agent","llm","ollama","local-first","bandit","burtson-labs","terminal","repl","developer-tools"],homepage:"https://burtson.ai",bugs:{email:"team@burtson.ai"},license:"MIT",author:{name:"Burtson Labs",email:"team@burtson.ai",url:"https://burtson.ai"},bin:{bandit:"./dist/cli.js"},main:"dist/cli.js",files:["dist/cli.js","README.md","LICENSE"],engines:{node:">=20"},publishConfig:{access:"public"},scripts:{typecheck:"tsc -p tsconfig.json --noEmit",build:"node build.mjs","build:publish":"node build.mjs --publish",dev:"node build.mjs --watch",start:"node dist/cli.js",smoke:"node build.mjs && node dist/__smoke__/smoke.js",integration:"node build.mjs && node dist/__integration__/ollama.js",eval:"node build.mjs && node dist/__eval__/eval.js",benchmark:"node build.mjs && node dist/__eval__/benchmark.js","gen-logo":"node scripts/gen-logo.mjs","preview-banner":"node scripts/preview-banner.mjs",clean:"rm -rf dist",prepack:"node scripts/prepack.mjs",postpack:"node scripts/postpack.mjs",prepublishOnly:"pnpm run clean && pnpm run typecheck && pnpm run build:publish"},dependencies:{"pdf-parse":"^2.4.5"},devDependencies:{"@burtson-labs/agent-core":"workspace:*","@burtson-labs/host-kit":"workspace:*","@burtson-labs/stealth-core-runtime":"workspace:*","@types/node":"^20.11.0","@types/pdf-parse":"^1.1.5","@types/pngjs":"^6.0.5",esbuild:"^0.28.0",pngjs:"^7.0.0",typescript:"^5.4.0"}}});var kIt={};module.exports=HSt(kIt);var r1=z_(require("fs")),mh=z_(require("path")),GB=z_(require("readline")),ek=z_(LY()),wI=z_(lSe());var qB=z_(require("fs")),_Se=z_(require("os")),xI=z_(require("path")),vZ=z_(require("child_process"));function yZ(d){return d==="~"?_Se.homedir():d.startsWith("~/")?xI.join(_Se.homedir(),d.slice(2)):d}t(yZ,"expandHome");var YO=16*1024,uSe=32*1024,Mze=1e4,K4t=3e4,fSe=200,pSe=new Set(["node_modules",".git","dist","build","out",".next",".turbo","coverage","target","__pycache__",".venv","venv"]);function Y4t(d){let g=t(x=>{let E=x.match(/^(.*?)\{([^}]+)\}(.*)$/);if(!E)return[x];let[,W,Y,_e]=E;return Y.split(",").map(pe=>`${W}${pe.trim()}${_e}`)},"braceExpand"),T=d.match(/^([^*{}]+?)\/\*\*\/(.+)$/);if(T){let[,x,E]=T;return{includes:g(E),subDir:x}}return{includes:g(d),subDir:""}}t(Y4t,"expandGlobForGrep");var ZO=class{constructor(g,T,x={}){this.workspaceRoot=g;this.languageAdapters=T;this.options=x}static{t(this,"CliToolExecutionContext")}async readFile(g){return qB.promises.readFile(yZ(g),"utf-8")}async writeFile(g,T){let x=yZ(g);if(this.options.approveWrite&&!await this.options.approveWrite(x,T))throw new Error(`Write to ${x} rejected by user`);await qB.promises.mkdir(xI.dirname(x),{recursive:!0}),await qB.promises.writeFile(x,T,"utf-8")}async listFiles(g,T){let x=yZ(T??this.workspaceRoot),E=Z4t(g),W=[];return await Rze(x,x,E,W),W.slice(0,fSe).sort()}async searchCode(g,T,x){let E=yZ(T??this.workspaceRoot);return this.runRipgrep(g,E,x).catch(()=>this.runGrep(g,E,x))}async runCommand(g,T,x){return new Promise(E=>{let W="",Y="",_e=vZ.spawn(g,T,{cwd:x??this.workspaceRoot,shell:!1,env:{...process.env}}),pe=setTimeout(()=>{_e.kill("SIGTERM"),E({stdout:W.slice(0,uSe),stderr:Y+`
812
812
  [process timed out]`,exitCode:124})},K4t);_e.stdout?.on("data",he=>{W+=he.toString(),W.length>uSe&&_e.kill("SIGTERM")}),_e.stderr?.on("data",he=>{Y+=he.toString()}),_e.on("close",he=>{clearTimeout(pe),E({stdout:W.slice(0,uSe),stderr:Y.slice(0,4*1024),exitCode:he??0})}),_e.on("error",he=>{clearTimeout(pe),E({stdout:"",stderr:he.message,exitCode:1})})})}runRipgrep(g,T,x){return new Promise((E,W)=>{let Y=["--color=never","--line-number","--max-count=25","--max-filesize=1M",...[...pSe].map(Se=>["--glob",`!${Se}`]).flat()];x&&Y.push("--glob",x),Y.push(g,T);let _e="",pe=vZ.spawn("rg",Y,{shell:!1}),he=setTimeout(()=>{pe.kill("SIGTERM"),E(_e.slice(0,YO))},Mze);pe.stdout?.on("data",Se=>{_e+=Se.toString(),_e.length>YO&&pe.kill("SIGTERM")}),pe.on("close",Se=>{clearTimeout(he),Se!=null&&Se>=2&&_e.length===0?W(new Error(`rg exited with code ${Se}`)):E(_e.slice(0,YO))}),pe.on("error",W)})}runGrep(g,T,x){return new Promise((E,W)=>{let Y=[...pSe].map(He=>["--exclude-dir",He]).flat(),_e=x?Y4t(x):{includes:[],subDir:""},pe=_e.includes.flatMap(He=>["--include",He]),he=_e.subDir?`${T}/${_e.subDir}`:T,Se=["-rn","-E","--color=never",...Y,...pe,g,he],Ne="",ne=vZ.spawn("grep",Se,{shell:!1}),pt=setTimeout(()=>{ne.kill("SIGTERM"),E(Ne.slice(0,YO))},Mze);ne.stdout?.on("data",He=>{Ne+=He.toString(),Ne.length>YO&&ne.kill("SIGTERM")}),ne.on("close",He=>{clearTimeout(pt),He!=null&&He>=2&&Ne.length===0?W(new Error(`grep exited with code ${He}`)):E(Ne.slice(0,YO))}),ne.on("error",W)})}};function Z4t(d){let g=eAt(d);return T=>g.test(T.replace(/\\/g,"/"))}t(Z4t,"compileGlob");function eAt(d){let g="^";for(let T=0;T<d.length;T++){let x=d[T];if(x==="*")d[T+1]==="*"?(g+=".*",T++,d[T+1]==="/"&&T++):g+="[^/]*";else if(x==="?")g+="[^/]";else if(x==="{"){let E=d.indexOf("}",T);if(E===-1){g+="\\{";continue}let W=d.slice(T+1,E).split(",").map(tAt).join("|");g+=`(?:${W})`,T=E}else/[.+^$()|\\]/.test(x)?g+="\\"+x:g+=x}return g+="$",new RegExp(g)}t(eAt,"globToRegex");function tAt(d){return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}t(tAt,"escapeRegex");async function Rze(d,g,T,x){if(x.length>=fSe)return;let E;try{E=await qB.promises.readdir(d,{withFileTypes:!0})}catch{return}for(let W of E){if(x.length>=fSe)return;if(pSe.has(W.name))continue;let Y=xI.join(d,W.name),_e=xI.relative(g,Y);W.isDirectory()?await Rze(Y,g,T,x):W.isFile()&&T(_e)&&x.push(Y)}}t(Rze,"walk");var jze=z_(require("child_process")),Qx=z_(require("fs")),Bze=z_(require("os")),dSe=z_(require("path")),Jze=z_(require("crypto"));function mSe(){let d=Jze.randomBytes(4).toString("hex");return dSe.join(Bze.tmpdir(),`bandit-paste-${Date.now()}-${d}.png`)}t(mSe,"freshTempPath");function bZ(d,g,T={}){try{let x=jze.spawnSync(d,g,{...T,encoding:void 0});return{stdout:Buffer.isBuffer(x.stdout)?x.stdout:Buffer.from(x.stdout??""),code:x.status}}catch{return{stdout:Buffer.alloc(0),code:null}}}t(bZ,"tryExec");async function SZ(){return process.platform==="darwin"?nAt():process.platform==="linux"?rAt():process.platform==="win32"?iAt():null}t(SZ,"readClipboardImage");function nAt(){let d=mSe(),g=`set pngData to (the clipboard as \xABclass PNGf\xBB)
813
813
  set outFile to (open for access (POSIX file "${d}") with write permission)
814
814
  write pngData to outFile
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burtson-labs/bandit-stealth-cli",
3
- "version": "1.7.6",
3
+ "version": "1.7.7",
4
4
  "description": "Bandit — a local-first AI coding agent for your terminal. Same runtime as the Bandit Stealth VS Code / Cursor extension.",
5
5
  "keywords": [
6
6
  "ai",