@burtson-labs/bandit-stealth-cli 1.7.58 → 1.7.59
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -810,7 +810,7 @@ ${x}`;try{let ge=await fe.run(x,d.chat,he);ae("task:done",{goal:x,iterations:ge.
|
|
|
810
810
|
`),x=g.split(`
|
|
811
811
|
`),E=T.length,z=x.length;if(E*z>4e4)return{plus:x.length,minus:T.length};let H=Array.from({length:E+1},()=>new Array(z+1).fill(0));for(let we=1;we<=E;we++)for(let Z=1;Z<=z;Z++)H[we][Z]=T[we-1]===x[Z-1]?H[we-1][Z-1]+1:Math.max(H[we-1][Z],H[we][Z-1]);let ae=E,fe=z,he=0,ge=0;for(;ae>0&&fe>0;)T[ae-1]===x[fe-1]?(ae--,fe--):H[ae][fe-1]>=H[ae-1][fe]?(he++,fe--):(ge++,ae--);return he+=fe,ge+=ae,{plus:he,minus:ge}}t(CNt,"lineCountDiff");function wNt(d){if(d.isNewFile)return"(new file)";let g=d.after.split(`
|
|
812
812
|
`),T=d.before.split(`
|
|
813
|
-
`);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(wNt,"describeEdit");var USe=class{static{t(this,"CheckpointStore")}constructor(g){this.counter=0,this.workspaceRoot=g.workspaceRoot,this.dir=VD.join(g.workspaceRoot,".bandit","checkpoints"),this.maxIndexEntries=g.maxIndexEntries??kNt}async create(g){await Zw.promises.mkdir(VD.join(this.dir,g.turnId),{recursive:!0}),this.counter++;let T=`chk-${g.turnId.split("-").pop()??"x"}-${String(this.counter).padStart(3,"0")}`,x=VD.relative(this.workspaceRoot,g.absolutePath)||g.absolutePath,E=g.before.length===0,z={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:wNt({before:g.before,after:g.after,isNewFile:E})},H=VD.join(this.dir,g.turnId,`${T}.json`);return await Zw.promises.writeFile(H,JSON.stringify(z,null,2)),await this.appendToIndex(z),z}async list(g=20){return(await this.readIndex()).slice(0,g)}async get(g){let x=(await this.readIndex()).find(z=>z.id===g);if(!x)return null;let E=VD.join(this.dir,x.turnId,`${g}.json`);try{let z=await Zw.promises.readFile(E,"utf-8");return JSON.parse(z)}catch{return null}}async rewind(g){let T=await this.get(g);if(!T)return null;try{return T.isNewFile?await Zw.promises.unlink(T.path).catch(()=>{}):(await Zw.promises.mkdir(VD.dirname(T.path),{recursive:!0}),await Zw.promises.writeFile(T.path,T.before)),T}catch{return null}}async readIndex(){let g=VD.join(this.dir,$We);try{let T=await Zw.promises.readFile(g,"utf-8"),x=JSON.parse(T);return Array.isArray(x)?x:[]}catch{return[]}}async writeIndex(g){await Zw.promises.mkdir(this.dir,{recursive:!0});let T=VD.join(this.dir,$We);await Zw.promises.writeFile(T,JSON.stringify(g,null,2))}async appendToIndex(g){let{plus:T,minus:x}=CNt(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},z=await this.readIndex();z.unshift(E);let H=z.slice(0,this.maxIndexEntries);await this.writeIndex(H)}};ok.CheckpointStore=USe});var GSe=xi(Ml=>{"use strict";Object.defineProperty(Ml,"__esModule",{value:!0});Ml.CheckpointStore=Ml.isChatCapable=Ml.suggestOllamaMatch=Ml.listInstalledOllamaModels=Ml.previewText=Ml.openTurnLog=Ml.SessionPermissionStore=Ml.mergePolicies=Ml.emptyPolicy=Ml.evaluatePermission=Ml.buildTaskTool=Ml.buildWebFetchTool=Ml.buildTodoWriteTool=Ml.TodoStore=Ml.expandMentions=Ml.runHooks=Ml.persistAllowEntry=Ml.loadHookSettings=Ml.loadMemory=void 0;var ENt=kWe();Object.defineProperty(Ml,"loadMemory",{enumerable:!0,get:t(function(){return ENt.loadMemory},"get")});var VSe=wWe();Object.defineProperty(Ml,"loadHookSettings",{enumerable:!0,get:t(function(){return VSe.loadHookSettings},"get")});Object.defineProperty(Ml,"persistAllowEntry",{enumerable:!0,get:t(function(){return VSe.persistAllowEntry},"get")});Object.defineProperty(Ml,"runHooks",{enumerable:!0,get:t(function(){return VSe.runHooks},"get")});var PNt=AWe();Object.defineProperty(Ml,"expandMentions",{enumerable:!0,get:t(function(){return PNt.expandMentions},"get")});var qSe=IWe();Object.defineProperty(Ml,"TodoStore",{enumerable:!0,get:t(function(){return qSe.TodoStore},"get")});Object.defineProperty(Ml,"buildTodoWriteTool",{enumerable:!0,get:t(function(){return qSe.buildTodoWriteTool},"get")});Object.defineProperty(Ml,"buildWebFetchTool",{enumerable:!0,get:t(function(){return qSe.buildWebFetchTool},"get")});var DNt=MWe();Object.defineProperty(Ml,"buildTaskTool",{enumerable:!0,get:t(function(){return DNt.buildTaskTool},"get")});var BZ=RWe();Object.defineProperty(Ml,"evaluatePermission",{enumerable:!0,get:t(function(){return BZ.evaluatePermission},"get")});Object.defineProperty(Ml,"emptyPolicy",{enumerable:!0,get:t(function(){return BZ.emptyPolicy},"get")});Object.defineProperty(Ml,"mergePolicies",{enumerable:!0,get:t(function(){return BZ.mergePolicies},"get")});Object.defineProperty(Ml,"SessionPermissionStore",{enumerable:!0,get:t(function(){return BZ.SessionPermissionStore},"get")});var qWe=zWe();Object.defineProperty(Ml,"openTurnLog",{enumerable:!0,get:t(function(){return qWe.openTurnLog},"get")});Object.defineProperty(Ml,"previewText",{enumerable:!0,get:t(function(){return qWe.previewText},"get")});var HSe=WWe();Object.defineProperty(Ml,"listInstalledOllamaModels",{enumerable:!0,get:t(function(){return HSe.listInstalledOllamaModels},"get")});Object.defineProperty(Ml,"suggestOllamaMatch",{enumerable:!0,get:t(function(){return HSe.suggestOllamaMatch},"get")});Object.defineProperty(Ml,"isChatCapable",{enumerable:!0,get:t(function(){return HSe.isChatCapable},"get")});var ANt=VWe();Object.defineProperty(Ml,"CheckpointStore",{enumerable:!0,get:t(function(){return ANt.CheckpointStore},"get")})});var JZ=xi((JFt,NNt)=>{NNt.exports={name:"@burtson-labs/bandit-stealth-cli",version:"1.7.
|
|
813
|
+
`);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(wNt,"describeEdit");var USe=class{static{t(this,"CheckpointStore")}constructor(g){this.counter=0,this.workspaceRoot=g.workspaceRoot,this.dir=VD.join(g.workspaceRoot,".bandit","checkpoints"),this.maxIndexEntries=g.maxIndexEntries??kNt}async create(g){await Zw.promises.mkdir(VD.join(this.dir,g.turnId),{recursive:!0}),this.counter++;let T=`chk-${g.turnId.split("-").pop()??"x"}-${String(this.counter).padStart(3,"0")}`,x=VD.relative(this.workspaceRoot,g.absolutePath)||g.absolutePath,E=g.before.length===0,z={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:wNt({before:g.before,after:g.after,isNewFile:E})},H=VD.join(this.dir,g.turnId,`${T}.json`);return await Zw.promises.writeFile(H,JSON.stringify(z,null,2)),await this.appendToIndex(z),z}async list(g=20){return(await this.readIndex()).slice(0,g)}async get(g){let x=(await this.readIndex()).find(z=>z.id===g);if(!x)return null;let E=VD.join(this.dir,x.turnId,`${g}.json`);try{let z=await Zw.promises.readFile(E,"utf-8");return JSON.parse(z)}catch{return null}}async rewind(g){let T=await this.get(g);if(!T)return null;try{return T.isNewFile?await Zw.promises.unlink(T.path).catch(()=>{}):(await Zw.promises.mkdir(VD.dirname(T.path),{recursive:!0}),await Zw.promises.writeFile(T.path,T.before)),T}catch{return null}}async readIndex(){let g=VD.join(this.dir,$We);try{let T=await Zw.promises.readFile(g,"utf-8"),x=JSON.parse(T);return Array.isArray(x)?x:[]}catch{return[]}}async writeIndex(g){await Zw.promises.mkdir(this.dir,{recursive:!0});let T=VD.join(this.dir,$We);await Zw.promises.writeFile(T,JSON.stringify(g,null,2))}async appendToIndex(g){let{plus:T,minus:x}=CNt(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},z=await this.readIndex();z.unshift(E);let H=z.slice(0,this.maxIndexEntries);await this.writeIndex(H)}};ok.CheckpointStore=USe});var GSe=xi(Ml=>{"use strict";Object.defineProperty(Ml,"__esModule",{value:!0});Ml.CheckpointStore=Ml.isChatCapable=Ml.suggestOllamaMatch=Ml.listInstalledOllamaModels=Ml.previewText=Ml.openTurnLog=Ml.SessionPermissionStore=Ml.mergePolicies=Ml.emptyPolicy=Ml.evaluatePermission=Ml.buildTaskTool=Ml.buildWebFetchTool=Ml.buildTodoWriteTool=Ml.TodoStore=Ml.expandMentions=Ml.runHooks=Ml.persistAllowEntry=Ml.loadHookSettings=Ml.loadMemory=void 0;var ENt=kWe();Object.defineProperty(Ml,"loadMemory",{enumerable:!0,get:t(function(){return ENt.loadMemory},"get")});var VSe=wWe();Object.defineProperty(Ml,"loadHookSettings",{enumerable:!0,get:t(function(){return VSe.loadHookSettings},"get")});Object.defineProperty(Ml,"persistAllowEntry",{enumerable:!0,get:t(function(){return VSe.persistAllowEntry},"get")});Object.defineProperty(Ml,"runHooks",{enumerable:!0,get:t(function(){return VSe.runHooks},"get")});var PNt=AWe();Object.defineProperty(Ml,"expandMentions",{enumerable:!0,get:t(function(){return PNt.expandMentions},"get")});var qSe=IWe();Object.defineProperty(Ml,"TodoStore",{enumerable:!0,get:t(function(){return qSe.TodoStore},"get")});Object.defineProperty(Ml,"buildTodoWriteTool",{enumerable:!0,get:t(function(){return qSe.buildTodoWriteTool},"get")});Object.defineProperty(Ml,"buildWebFetchTool",{enumerable:!0,get:t(function(){return qSe.buildWebFetchTool},"get")});var DNt=MWe();Object.defineProperty(Ml,"buildTaskTool",{enumerable:!0,get:t(function(){return DNt.buildTaskTool},"get")});var BZ=RWe();Object.defineProperty(Ml,"evaluatePermission",{enumerable:!0,get:t(function(){return BZ.evaluatePermission},"get")});Object.defineProperty(Ml,"emptyPolicy",{enumerable:!0,get:t(function(){return BZ.emptyPolicy},"get")});Object.defineProperty(Ml,"mergePolicies",{enumerable:!0,get:t(function(){return BZ.mergePolicies},"get")});Object.defineProperty(Ml,"SessionPermissionStore",{enumerable:!0,get:t(function(){return BZ.SessionPermissionStore},"get")});var qWe=zWe();Object.defineProperty(Ml,"openTurnLog",{enumerable:!0,get:t(function(){return qWe.openTurnLog},"get")});Object.defineProperty(Ml,"previewText",{enumerable:!0,get:t(function(){return qWe.previewText},"get")});var HSe=WWe();Object.defineProperty(Ml,"listInstalledOllamaModels",{enumerable:!0,get:t(function(){return HSe.listInstalledOllamaModels},"get")});Object.defineProperty(Ml,"suggestOllamaMatch",{enumerable:!0,get:t(function(){return HSe.suggestOllamaMatch},"get")});Object.defineProperty(Ml,"isChatCapable",{enumerable:!0,get:t(function(){return HSe.isChatCapable},"get")});var ANt=VWe();Object.defineProperty(Ml,"CheckpointStore",{enumerable:!0,get:t(function(){return ANt.CheckpointStore},"get")})});var JZ=xi((JFt,NNt)=>{NNt.exports={name:"@burtson-labs/bandit-stealth-cli",version:"1.7.59",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 QNt={};module.exports=_2t(QNt);var Zm=Ou(require("fs")),YWe=Ou(require("os")),Cd=Ou(require("path")),gF=Ou(require("readline")),ZWe=Ou(require("child_process")),yS=Ou(qY()),MN=Ou(bSe());var IN=Ou(require("fs")),TSe=Ou(require("os")),JD=Ou(require("path")),EZ=Ou(require("child_process"));function nJ(d){return d==="~"?TSe.homedir():d.startsWith("~/")?JD.join(TSe.homedir(),d.slice(2)):d}t(nJ,"expandHome");var oF=16*1024,SSe=32*1024,Qze=1e4,d4t=3e4,xSe=200,kSe=new Set(["node_modules",".git","dist","build","out",".next",".turbo","coverage","target","__pycache__",".venv","venv"]);function m4t(d){let g=t(x=>{let E=x.match(/^(.*?)\{([^}]+)\}(.*)$/);if(!E)return[x];let[,z,H,ae]=E;return H.split(",").map(fe=>`${z}${fe.trim()}${ae}`)},"braceExpand"),T=d.match(/^([^*{}]+?)\/\*\*\/(.+)$/);if(T){let[,x,E]=T;return{includes:g(E),subDir:x}}return{includes:g(d),subDir:""}}t(m4t,"expandGlobForGrep");var cF=class{constructor(g,T,x={}){this.workspaceRoot=g;this.languageAdapters=T;this.options=x}static{t(this,"CliToolExecutionContext")}async readFile(g){return IN.promises.readFile(nJ(g),"utf-8")}async writeFile(g,T){let x=nJ(g);if(this.options.approveWrite&&!await this.options.approveWrite(x,T))throw new Error(`Write to ${x} rejected by user`);await IN.promises.mkdir(JD.dirname(x),{recursive:!0}),await IN.promises.writeFile(x,T,"utf-8")}async listFiles(g,T){let x=nJ(T??this.workspaceRoot),E=g4t(g),z=[];return await Kze(x,x,E,z),z.slice(0,xSe).sort()}async listDirectoryEntries(g){let T=nJ(g),x=await IN.promises.readdir(T,{withFileTypes:!0}),E=[];for(let z of x){if(z.name.startsWith("."))continue;let H=z.isDirectory();if(z.isSymbolicLink())try{H=(await IN.promises.stat(JD.join(T,z.name))).isDirectory()}catch{H=!1}E.push(H?`${z.name}/`:z.name)}return E.sort()}async searchCode(g,T,x){let E=nJ(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 z="",H="",ae=EZ.spawn(g,T,{cwd:x??this.workspaceRoot,shell:process.platform==="win32",env:{...process.env}}),fe=setTimeout(()=>{ae.kill("SIGTERM"),E({stdout:z.slice(0,SSe),stderr:H+`
|
|
814
814
|
[process timed out]`,exitCode:124})},d4t);ae.stdout?.on("data",he=>{z+=he.toString(),z.length>SSe&&ae.kill("SIGTERM")}),ae.stderr?.on("data",he=>{H+=he.toString()}),ae.on("close",he=>{clearTimeout(fe),E({stdout:z.slice(0,SSe),stderr:H.slice(0,4*1024),exitCode:he??0})}),ae.on("error",he=>{clearTimeout(fe),E({stdout:"",stderr:he.message,exitCode:1})})})}runRipgrep(g,T,x){return new Promise((E,z)=>{let H=["--color=never","--line-number","--max-count=25","--max-filesize=1M",...[...kSe].map(ge=>["--glob",`!${ge}`]).flat()];x&&H.push("--glob",x),H.push(g,T);let ae="",fe=EZ.spawn("rg",H,{shell:!1}),he=setTimeout(()=>{fe.kill("SIGTERM"),E(ae.slice(0,oF))},Qze);fe.stdout?.on("data",ge=>{ae+=ge.toString(),ae.length>oF&&fe.kill("SIGTERM")}),fe.on("close",ge=>{clearTimeout(he),ge!=null&&ge>=2&&ae.length===0?z(new Error(`rg exited with code ${ge}`)):E(ae.slice(0,oF))}),fe.on("error",z)})}runGrep(g,T,x){return new Promise((E,z)=>{let H=[...kSe].map(Ue=>["--exclude-dir",Ue]).flat(),ae=x?m4t(x):{includes:[],subDir:""},fe=ae.includes.flatMap(Ue=>["--include",Ue]),he=ae.subDir?`${T}/${ae.subDir}`:T,ge=["-rn","-E","--color=never",...H,...fe,g,he],we="",Z=EZ.spawn("grep",ge,{shell:!1}),at=setTimeout(()=>{Z.kill("SIGTERM"),E(we.slice(0,oF))},Qze);Z.stdout?.on("data",Ue=>{we+=Ue.toString(),we.length>oF&&Z.kill("SIGTERM")}),Z.on("close",Ue=>{clearTimeout(at),Ue!=null&&Ue>=2&&we.length===0?z(new Error(`grep exited with code ${Ue}`)):E(we.slice(0,oF))}),Z.on("error",z)})}};function g4t(d){let g=h4t(d);return T=>g.test(T.replace(/\\/g,"/"))}t(g4t,"compileGlob");function h4t(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 z=d.slice(T+1,E).split(",").map(y4t).join("|");g+=`(?:${z})`,T=E}else/[.+^$()|\\]/.test(x)?g+="\\"+x:g+=x}return g+="$",new RegExp(g)}t(h4t,"globToRegex");function y4t(d){return d.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}t(y4t,"escapeRegex");async function Kze(d,g,T,x){if(x.length>=xSe)return;let E;try{E=await IN.promises.readdir(d,{withFileTypes:!0})}catch{return}for(let z of E){if(x.length>=xSe)return;if(kSe.has(z.name))continue;let H=JD.join(d,z.name),ae=JD.relative(g,H);z.isDirectory()?await Kze(H,g,T,x):z.isFile()&&T(ae)&&x.push(H)}}t(Kze,"walk");var Zze=Ou(require("child_process")),ik=Ou(require("fs")),eWe=Ou(require("os")),CSe=Ou(require("path")),tWe=Ou(require("crypto"));function wSe(){let d=tWe.randomBytes(4).toString("hex");return CSe.join(eWe.tmpdir(),`bandit-paste-${Date.now()}-${d}.png`)}t(wSe,"freshTempPath");function PZ(d,g,T={}){try{let x=Zze.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(PZ,"tryExec");async function DZ(){return process.platform==="darwin"?v4t():process.platform==="linux"?b4t():process.platform==="win32"?S4t():null}t(DZ,"readClipboardImage");function v4t(){let d=wSe(),g=`set pngData to (the clipboard as \xABclass PNGf\xBB)
|
|
815
815
|
set outFile to (open for access (POSIX file "${d}") with write permission)
|
|
816
816
|
write pngData to outFile
|
package/package.json
CHANGED