@burtson-labs/bandit-stealth-cli 1.7.8 → 1.7.9
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 +2 -2
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -125,7 +125,7 @@ ${ne}${Se.content.length>500?`
|
|
|
125
125
|
`);return{output:`Found ${pe.length} relevant files for "${T}":
|
|
126
126
|
|
|
127
127
|
${he}`}}catch(W){return{output:`Search failed: ${W instanceof Error?W.message:String(W)}`,isError:!0}}}},pTt={name:"index_workspace",description:"Index workspace files for semantic search. Run this before semantic_search if you want to search more files or specific directories.",parameters:[{name:"glob",description:'Glob pattern of files to index (default: "**/*.{ts,tsx,js,jsx,py}")'},{name:"max_files",description:"Maximum number of files to index (default: 50)"}],async execute(d,g){let T=d.glob??"**/*.{ts,tsx,js,jsx,py}",x=Math.min(parseInt(d.max_files??"50",10)||50,100);try{let W=(await g.listFiles(T)).slice(0,x),Y=0,_e=0;for(let pe of W){if(MY.has(pe)){_e++;continue}try{let he=pe.startsWith("/")?pe:`${g.workspaceRoot}/${pe}`,Se=await g.readFile(he);Se.length>0&&Se.length<5e4&&(await MBe(pe,Se),Y++)}catch{}}return{output:`Indexed ${Y} files (${_e} already indexed, ${LO.length} total chunks). Semantic search is ready.`}}catch(E){return{output:`Indexing failed: ${E instanceof Error?E.message:String(E)}`,isError:!0}}}};jO.semanticSearchSkill={id:"search/semantic",name:"Semantic Search",version:"1.0.0",description:"Search codebase by meaning using local Ollama embeddings (nomic-embed-text). Finds conceptually related code.",instructions:'Use semantic_search when you need to find code by concept (e.g. "authentication logic", "data validation") rather than exact text. Use search_code for literal/regex matches. The index is built automatically on first search.',activation:"auto",triggerPatterns:[/\bfind.*related\b/i,/\bwhere.*handle/i,/\bhow.*implement/i,/\bwhat.*does\b/i,/\bunderstand\b/i,/\barchitecture\b/i,/\bexplain.*code\b/i,/\bsemantic/i],tools:[fTt,pTt]};function dTt(d){OBe=d.replace(/\/+$/,"")}t(dTt,"configureSemanticSearchOllamaUrl");function mTt(){LO=[],MY=new Set}t(mTt,"resetSemanticIndex")});var RBe=Ti(Um=>{"use strict";Object.defineProperty(Um,"__esModule",{value:!0});Um.resetSemanticIndex=Um.configureSemanticSearchOllamaUrl=Um.semanticSearchSkill=Um.planSkill=Um.testGenSkill=Um.codeReviewSkill=Um.gitSkill=Um.coreSkill=void 0;Um.createDefaultSkillRegistry=PTt;var gTt=r1e();Object.defineProperty(Um,"coreSkill",{enumerable:!0,get:t(function(){return gTt.coreSkill},"get")});var hTt=i1e();Object.defineProperty(Um,"gitSkill",{enumerable:!0,get:t(function(){return hTt.gitSkill},"get")});var yTt=s1e();Object.defineProperty(Um,"codeReviewSkill",{enumerable:!0,get:t(function(){return yTt.codeReviewSkill},"get")});var vTt=a1e();Object.defineProperty(Um,"testGenSkill",{enumerable:!0,get:t(function(){return vTt.testGenSkill},"get")});var bTt=o1e();Object.defineProperty(Um,"planSkill",{enumerable:!0,get:t(function(){return bTt.planSkill},"get")});var l1e=c1e();Object.defineProperty(Um,"semanticSearchSkill",{enumerable:!0,get:t(function(){return l1e.semanticSearchSkill},"get")});Object.defineProperty(Um,"configureSemanticSearchOllamaUrl",{enumerable:!0,get:t(function(){return l1e.configureSemanticSearchOllamaUrl},"get")});Object.defineProperty(Um,"resetSemanticIndex",{enumerable:!0,get:t(function(){return l1e.resetSemanticIndex},"get")});var STt=t1e(),TTt=r1e(),xTt=i1e(),kTt=s1e(),CTt=a1e(),wTt=o1e(),ETt=c1e();function PTt(){return new STt.SkillRegistry().registerAll([TTt.coreSkill,xTt.gitSkill,kTt.codeReviewSkill,CTt.testGenSkill,wTt.planSkill,ETt.semanticSearchSkill])}t(PTt,"createDefaultSkillRegistry")});var LBe=Ti(Vm=>{"use strict";var DTt=Vm&&Vm.__createBinding||(Object.create?(function(d,g,T,x){x===void 0&&(x=T);var E=Object.getOwnPropertyDescriptor(g,T);(!E||("get"in E?!g.__esModule:E.writable||E.configurable))&&(E={enumerable:!0,get:t(function(){return g[T]},"get")}),Object.defineProperty(d,x,E)}):(function(d,g,T,x){x===void 0&&(x=T),d[x]=g[T]})),Iv=Vm&&Vm.__exportStar||function(d,g){for(var T in d)T!=="default"&&!Object.prototype.hasOwnProperty.call(g,T)&&DTt(g,d,T)};Object.defineProperty(Vm,"__esModule",{value:!0});Iv(sBe(),Vm);Iv(DB(),Vm);Iv(U0e(),Vm);Iv(V0e(),Vm);Iv(yBe(),Vm);Iv(G0e(),Vm);Iv(xBe(),Vm);Iv(K0e(),Vm);Iv(wBe(),Vm);Iv(PBe(),Vm);Iv(t1e(),Vm);Iv(NBe(),Vm);Iv(RBe(),Vm)});var RY=Ti(qm=>{"use strict";var ATt=qm&&qm.__createBinding||(Object.create?(function(d,g,T,x){x===void 0&&(x=T);var E=Object.getOwnPropertyDescriptor(g,T);(!E||("get"in E?!g.__esModule:E.writable||E.configurable))&&(E={enumerable:!0,get:t(function(){return g[T]},"get")}),Object.defineProperty(d,x,E)}):(function(d,g,T,x){x===void 0&&(x=T),d[x]=g[T]})),u1e=qm&&qm.__exportStar||function(d,g){for(var T in d)T!=="default"&&!Object.prototype.hasOwnProperty.call(g,T)&&ATt(g,d,T)};Object.defineProperty(qm,"__esModule",{value:!0});qm.createAgentRuntime=qm.AgentRuntime=qm.DeterministicProviderClient=qm.collectFromStream=qm.validateAgentPlan=void 0;var ITt=M0e(),NTt=L0e();u1e(B0e(),qm);u1e(nBe(),qm);var OTt=B0e();Object.defineProperty(qm,"validateAgentPlan",{enumerable:!0,get:t(function(){return OTt.validateAgentPlan},"get")});var FTt=rBe();Object.defineProperty(qm,"collectFromStream",{enumerable:!0,get:t(function(){return FTt.collectFromStream},"get")});var MTt=L0e();Object.defineProperty(qm,"DeterministicProviderClient",{enumerable:!0,get:t(function(){return MTt.DeterministicProviderClient},"get")});var RTt=M0e();Object.defineProperty(qm,"AgentRuntime",{enumerable:!0,get:t(function(){return RTt.AgentRuntime},"get")});var LTt=t((d={})=>{let{provider:g,...T}=d,x=g??new NTt.DeterministicProviderClient;return new ITt.AgentRuntime({provider:x,...T})},"createAgentRuntime");qm.createAgentRuntime=LTt;u1e(LBe(),qm)});var BBe=Ti(jBe=>{"use strict";Object.defineProperty(jBe,"__esModule",{value:!0})});var zBe=Ti(JBe=>{"use strict";Object.defineProperty(JBe,"__esModule",{value:!0})});var _1e=Ti(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.STOP_WORDS=cy.FILE_NAME_PATTERN=cy.PATH_PATTERN=void 0;cy.inferGoal=WTt;cy.classifyIntent=VBe;cy.extractExplicitPaths=qBe;cy.extractKeywords=$Be;cy.PATH_PATTERN=/(?:[^\s"'`]+\/)*[A-Za-z0-9_.-]+\.[A-Za-z0-9]{1,6}/g;cy.FILE_NAME_PATTERN=/\b[A-Za-z0-9_.-]+\.[a-z0-9]{1,6}\b/g;var jTt=/\.(tsx|ts|jsx|js|json|md|css|scss|sass|less|html|yml|yaml|vue|svelte|cs|csx|java|kt|kts|sql|go|py|rb|php|c|cc|cpp|h|hpp|rs|swift|sh|bash|ps1|psm1)$/i,BTt=/^\s*(?:[-*•]|\d+[.)])\s+(.*)$/,JTt=/\b(?:then|next|after(?:ward|wards)?|follow(?:ed)? by|plus|as well as|finally)\b/gi;cy.STOP_WORDS=new Set(["the","and","for","with","that","this","there","about","please","could","would","should","bandit","stealth","agent","mode","question","repo","code","file","files","explain","describe","thank","thanks","have","need","maybe","really","just","like","into","from","your","you","what","where","when","why","which","how","does","make","using","are","roughly","currently","actually","around","after","before","goal","task","work","project","component","components","comnponent","comnponents","page","pages","little"]);var zTt={refactor:[/refactor/i,/cleanup/i,/restructure/i,/modular/i,/extract/i,/split/i],fix:[/fix/i,/bug/i,/issue/i,/error/i,/broken/i,/correct/i],feature:[/add/i,/implement/i,/create/i,/support/i,/feature/i,/build/i,/introduce/i],analyze:[/investigate/i,/analy[sz]e/i,/review/i,/audit/i,/inspect/i,/debug/i],doc:[/doc/i,/readme/i,/comment/i,/explain/i,/write documentation/i,/guide/i],style:[/style/i,/css/i,/theme/i,/color/i,/spacing/i,/layout/i,/visual/i]};async function WTt(d){let g=d.prompt?.trim()??"",T=UTt(g),x=VBe(g),E=VTt(g,d.workspaceIndex??[]),W=oxt(g,d.workspaceIndex??[]),Y=ixt([...E,...W]),_e=qTt(x,Y),pe=GTt(g,Y,x);return{title:T,intent:x,files:Y,rationale:_e,tasks:pe}}t(WTt,"inferGoal");function UTt(d){if(!d)return"Bandit agent goal";let g=d.replace(/\s+/g," ").trim();return g.length<=120?NB(g):`${NB(g.slice(0,117).trimEnd())}\u2026`}t(UTt,"buildTitle");function NB(d){return d&&d.charAt(0).toUpperCase()+d.slice(1)}t(NB,"capitalize");function VBe(d){let g=d.toLowerCase();for(let[T,x]of Object.entries(zTt))if(x.some(E=>E.test(g)))return T;return/bug|error|exception|stack trace/.test(g)?"fix":/doc|readme|documentation|comment/.test(g)?"doc":"feature"}t(VBe,"classifyIntent");function VTt(d,g,T=6){if(!g.length)return[];let x=g.map(pe=>pe.replace(/\\/g,"/")).filter(pe=>jTt.test(pe)),E=new Set,W=t(pe=>{!pe||E.size>=T||E.add(pe)},"addMatch");for(let pe of qBe(d)){let Se=x.find(Ne=>Ne.toLowerCase()===pe.toLowerCase())??x.find(Ne=>Ne.toLowerCase().endsWith(pe.toLowerCase()));if(Se&&W(Se),E.size>=T)return Array.from(E)}let Y=$Be(d);if(!Y.length)return Array.from(E);let _e=[];for(let pe of x){if(E.has(pe))continue;let he=pe.toLowerCase(),Se=0;for(let Ne of Y)he.includes(Ne)&&(Se+=Ne.length,he.endsWith(`/${Ne}.tsx`)||he.endsWith(`/${Ne}.ts`)||he.endsWith(`/${Ne}.jsx`)||he.endsWith(`/${Ne}.js`)?Se+=3:(he.endsWith(`/${Ne}.md`)||he.endsWith(`/${Ne}.mdx`))&&(Se+=2),he.includes(`/${Ne}/`)&&(Se+=2));Se>0&&_e.push({file:pe,score:Se})}_e.sort((pe,he)=>he.score-pe.score);for(let pe of _e)if(W(pe.file),E.size>=T)break;return Array.from(E)}t(VTt,"selectCandidateFiles");function qBe(d){let g=new Set,T;for(;(T=cy.PATH_PATTERN.exec(d))!==null;){let x=T[0].replace(/\\/g,"/").replace(/^\.\/+/,"").replace(/^\/+/,"").trim();x&&g.add(x)}return Array.from(g)}t(qBe,"extractExplicitPaths");function $Be(d){let g=d.toLowerCase().match(/[a-z0-9][a-z0-9_-]{2,}/g);return g?g.filter(T=>!cy.STOP_WORDS.has(T)).slice(0,24):[]}t($Be,"extractKeywords");function qTt(d,g){let T=rxt(d);if(!g.length)return`Detected ${T} intent from the prompt.`;let x=g.slice(0,3).join(", ");return`Detected ${T} intent and shortlisted ${x} as likely impacted files.`}t(qTt,"buildRationale");function $Tt(d,g){let T=d.toLowerCase().replace(/\s+/g," ").trim(),x=T.match(/\b(add\s+\w[\w\s]{0,30}?\s+(?:to|for|in))\b/);if(x)return NB(x[1].trim());let E=[[/\b(add\s+comments)\b/i,"Add comments to"],[/\b(add\s+documentation)\b/i,"Add documentation to"],[/\b(add\s+types?\s+annotations?)\b/i,"Add type annotations to"],[/\b(add\s+error\s+handling)\b/i,"Add error handling to"],[/\b(add\s+validation)\b/i,"Add validation to"],[/\b(add\s+logging)\b/i,"Add logging to"],[/\b(add\s+tests?\s+for)\b/i,"Add tests for"],[/\brefactor\b/i,"Refactor"],[/\bfix\b/i,"Fix"],[/\bupdate\b/i,"Update"],[/\bclean\s*up\b/i,"Clean up"],[/\boptimize\b/i,"Optimize"],[/\bdocument\b/i,"Document"]];for(let[W,Y]of E)if(W.test(T))return Y}t($Tt,"inferActionVerb");function HTt(d){switch(d){case"refactor":return"Refactor";case"fix":return"Fix";case"feature":return"Update";case"analyze":return"Analyze";case"doc":return"Document";case"style":return"Style"}}t(HTt,"intentVerb");function GTt(d,g,T){let x=XTt(d),E=[],W=g.slice(0,6),Y=$Tt(d,T),_e=d.toLowerCase(),pe=/\b(all|other|each|every|similar|same)\b/.test(_e)&&W.length>1;if(Y&&pe)W.forEach(Ne=>{let ne=Ne.split("/").pop()??Ne;E.push({title:`${Y} ${ne}`,description:`${Y} in ${Ne}`,files:[Ne]})});else if(!x.length&&W.length){let Ne=Y??HTt(T);W.forEach(ne=>{let pt=ne.split("/").pop()??ne;E.push({title:`${Ne} ${pt}`,description:`Apply the requested goal to ${ne}.`,files:[ne]})})}else x.forEach(Ne=>{let ne=txt(Ne);if(!ne)return;let pt=nxt(Ne,W);E.push({title:ne,description:pt.length?`Likely touched files: ${pt.join(", ")}`:void 0,files:pt.length?pt:void 0})});!E.length&&d.trim()&&E.push({title:NB(d.trim()),description:W.length?`Review ${W.join(", ")}`:void 0,files:W.length?W:void 0}),T!=="analyze"&&E.push({title:"Review and validate changes",description:"Self-review the diff and run any necessary checks.",files:W.slice(0,2)});let he=[],Se=new Set;for(let Ne of E){let ne=Ne.title.toLowerCase();if(!Se.has(ne)&&(Se.add(ne),he.push(Ne),he.length>=6))break}return he}t(GTt,"buildTaskSuggestions");function XTt(d){let g=KTt(d),T=ZTt(g);if(T.length>0)return T.slice(0,8);let x=YTt(g);if(!x)return[];let E=x.split(/[.!?]+(?=\s|$)/).map(Y=>Y.trim()).filter(Boolean);E.length||E.push(x);let W=[];for(let Y of E){let _e=Y.split(JTt).map(pe=>pe.trim()).filter(Boolean);if(_e.length)for(let pe of _e){let he=HBe(pe);if(he&&(W.push(he),W.length>=8))return W}}return W}t(XTt,"extractGoalClauses");function QTt(d){return d?d.split(/\r?\n/).filter(x=>!ext(x)).join(" "):""}t(QTt,"stripLikelyCodeLines");function KTt(d){if(!d)return"";let g=d.search(/\brelevant files\s*:/i);return g<=0?d:d.slice(0,g)}t(KTt,"stripRelevantFilesSection");function YTt(d){return QTt(d).replace(/[\r\n]+/g," ").replace(/\s+/g," ").trim()}t(YTt,"normalizePromptForClauseExtraction");function ZTt(d){if(!d)return[];let g=d.split(/\r?\n/),T=[];for(let x of g){let E=x.match(BTt);if(!E?.[1])continue;let W=HBe(E[1]);if(W&&(T.push(W),T.length>=8))break}return T}t(ZTt,"extractBulletListClauses");function HBe(d){let g=d.replace(/\s+/g," ").trim();return g.length<4?"":g}t(HBe,"normalizeClauseSegment");function ext(d){let g=d.trim();return!!(!g||g==="{"||g==="}"||/^\s*(public|private|protected|internal)\b/.test(g)||/\bclass\b/.test(g)&&/[{;]$/.test(g)||/\b(get;|set;)\b/.test(g))}t(ext,"isLikelyCodeLine");function txt(d){let g=d.trim().replace(/^\b(to|please|kindly)\b/i,"").trim();if(!g)return"";let T=g.replace(/\s+/g," "),x=T.length>120?`${T.slice(0,117).trimEnd()}\u2026`:T;return NB(x)}t(txt,"formatClauseTitle");function nxt(d,g){if(!g.length)return[];let x=d.toLowerCase().match(/[a-z0-9][a-z0-9_-]{3,}/g);if(!x||!x.length)return[];let E=[];for(let W of g){let Y=W.toLowerCase(),_e=Y.split(/[\\/]/).pop()??Y;x.some(pe=>Y.includes(`/${pe}`)||_e.includes(pe))&&E.push(W)}return E.slice(0,3)}t(nxt,"matchClauseToFiles");function rxt(d){switch(d){case"fix":return"a bug fix";case"refactor":return"a refactor";case"analyze":return"an investigation";case"doc":return"a documentation update";case"style":return"a styling update";default:return"a feature implementation"}}t(rxt,"intentLabel");function ixt(d){let g=new Set,T=[];for(let x of d){if(!x)continue;let E=x.replace(/\\/g,"/");g.has(E)||(g.add(E),T.push(E))}return T}t(ixt,"dedupeFiles");var WBe=/\b(?:create|add|build|use|have|refactor|split|extract|introduce|make)\s+(?:an?\s+|the\s+)?([a-z][a-z0-9\s-]{3,}?)\s+(?:component|components|comnponent|comnponents)\b/gi,UBe=/\b([a-z][a-z0-9\s-]{3,})\s+(?:component|components|comnponent|comnponents)\b/gi,sxt=["src/components/shared","src/components/ui","src/components","components","src"],axt=new Set(["to","into","with","using","use","and","while","when","that","which","for","of","by","a","an","the"]);function oxt(d,g){let T=cxt(d),x=lxt(d),E=x.size>0?x:T;if(!E.size)return[];let W=_xt(g),Y=new Set(g.map(he=>he.replace(/\\/g,"/").toLowerCase())),_e=new Set(Array.from(Y).map(he=>he.split("/").pop()).filter(he=>!!he)),pe=[];for(let he of E){let Se=uxt(he);if(!Se)continue;let Ne=fxt(Se,W,Y,_e);Ne&&!Y.has(Ne)&&pe.push(Ne)}return pe}t(oxt,"inferSyntheticComponentFiles");function cxt(d){let g=new Set;WBe.lastIndex=0;let T;for(;(T=WBe.exec(d))!==null;)T[1]&&g.add(T[1]);return g}t(cxt,"extractActionDrivenComponentNames");function lxt(d){let g=new Set;UBe.lastIndex=0;let T;for(;(T=UBe.exec(d))!==null;)T[1]&&g.add(T[1]);return g}t(lxt,"extractInlineComponentNames");function uxt(d){if(!d)return;let g=d.replace(/[^a-z0-9\s-]/gi," ").replace(/\s+/g," ").trim().toLowerCase();if(!g)return;let T=g.split(" "),x=0;for(let _e=T.length-1;_e>=0;_e-=1)if(axt.has(T[_e])){x=_e+1;break}let E=T.slice(x).filter(_e=>_e&&!cy.STOP_WORDS.has(_e));if(!E.length)return;let Y=E.slice(-3).join(" ").trim();return Y.length>=3?Y:void 0}t(uxt,"refineComponentName");function _xt(d){let g=new Set;for(let T of d){let x=T.replace(/\\/g,"/"),E=x.lastIndexOf("/");if(E===-1)continue;let W=x.slice(0,E);W&&g.add(W)}return Array.from(g).sort((T,x)=>T.length-x.length)}t(_xt,"collectWorkspaceDirectories");function fxt(d,g,T,x){let E=mxt(d);if(!E||x.has(`${E}.tsx`))return;let W=dxt(d),Y=pxt(g,W),_e=Y?Y.replace(/\\/g,"/").replace(/\/+$/,""):"",pe=_e?`${_e}/${E}.tsx`:`${E}.tsx`;if(!T.has(pe.toLowerCase()))return pe}t(fxt,"buildComponentPathSuggestion");function pxt(d,g){let T=d.find(E=>{let W=E.toLowerCase();return g.some(Y=>Y&&W.includes(Y))});if(T)return T;for(let E of sxt){let W=E.toLowerCase(),Y=d.find(_e=>{let pe=_e.toLowerCase();return pe===W||pe.endsWith(`/${W}`)});if(Y)return Y}let x=d.find(E=>E.includes("component"));return x||(d.length?d[0]:void 0)}t(pxt,"selectComponentDirectory");function dxt(d){return d.toLowerCase().split(/[\s_-]+/).map(g=>g.trim()).filter(g=>g.length>=3&&!cy.STOP_WORDS.has(g))}t(dxt,"extractNameKeywords");function mxt(d){let g=d.trim().split(/[\s_-]+/).map(T=>T.toLowerCase().replace(/[^a-z0-9]/g,"")).filter(T=>T.length>0);return g.length?g.join("-"):""}t(mxt,"toKebabCase")});var d1e=Ti(Vx=>{"use strict";var gxt=Vx&&Vx.__createBinding||(Object.create?(function(d,g,T,x){x===void 0&&(x=T);var E=Object.getOwnPropertyDescriptor(g,T);(!E||("get"in E?!g.__esModule:E.writable||E.configurable))&&(E={enumerable:!0,get:t(function(){return g[T]},"get")}),Object.defineProperty(d,x,E)}):(function(d,g,T,x){x===void 0&&(x=T),d[x]=g[T]})),hxt=Vx&&Vx.__setModuleDefault||(Object.create?(function(d,g){Object.defineProperty(d,"default",{enumerable:!0,value:g})}):function(d,g){d.default=g}),GBe=Vx&&Vx.__importStar||(function(){var d=t(function(g){return d=Object.getOwnPropertyNames||function(T){var x=[];for(var E in T)Object.prototype.hasOwnProperty.call(T,E)&&(x[x.length]=E);return x},d(g)},"ownKeys");return function(g){if(g&&g.__esModule)return g;var T={};if(g!=null)for(var x=d(g),E=0;E<x.length;E++)x[E]!=="default"&&gxt(T,g,x[E]);return hxt(T,g),T}})();Object.defineProperty(Vx,"__esModule",{value:!0});Vx.EmbeddingCache=void 0;var JO=typeof window<"u";async function BO(){if(JO)throw new Error("EmbeddingCache is unavailable in browser hosts.");let[d,g]=await Promise.all([Promise.resolve().then(()=>GBe(require("fs"))),Promise.resolve().then(()=>GBe(require("path")))]);return{fs:d.promises,path:g}}t(BO,"getNodeDeps");var XBe=1,f1e=32,yxt=t(d=>{let g=2166136261,T=[];for(let x=0;x<d.length&&T.length<f1e;x+=2){g^=d.charCodeAt(x),g+=(g<<1)+(g<<4)+(g<<7)+(g<<8)+(g<<24);let E=(g>>>0)/4294967295;T.push(E)}for(;T.length<f1e;){g^=2654435769;let x=(g>>>0)/4294967295;T.push(x)}return T.slice(0,f1e)},"hashString"),vxt=t((d,g)=>yxt(`${g}:${d}`),"computeVector"),p1e=class{static{t(this,"EmbeddingCache")}constructor(){this.entries=new Map,this.dirty=!1}async prepare(g,T){if(JO){this.workspaceRoot=g,this.artifactRoot=T,this.entries.clear(),this.dirty=!1,this.cachePath=void 0;return}let{fs:x,path:E}=await BO();this.workspaceRoot=g,this.artifactRoot=T,await x.mkdir(T,{recursive:!0}).catch(()=>{}),this.cachePath=E.join(T,"embeddings.json"),this.entries.clear(),this.dirty=!1,await this.load()}async flush(){if(!this.cachePath||!this.dirty)return;if(JO){this.dirty=!1;return}let{fs:g}=await BO(),T={version:XBe,entries:Object.fromEntries(this.entries)};await g.writeFile(this.cachePath,JSON.stringify(T,null,2),"utf8"),this.dirty=!1}async indexFiles(g,T){if(JO)return{reused:0,computed:0};if(!this.cachePath||!this.workspaceRoot||!this.artifactRoot||this.workspaceRoot!==g){let{path:_e}=await BO(),pe=this.artifactRoot??_e.join(g,".bandit");await this.prepare(g,pe)}let{fs:x,path:E}=await BO(),W={reused:0,computed:0},Y=Date.now();for(let _e of T)try{let pe=E.join(g,_e),he=await x.stat(pe),Se=_e,Ne=this.entries.get(Se);if(Ne&&Math.abs(Ne.mtimeMs-he.mtimeMs)<1&&Ne.size===he.size){this.entries.set(Se,{...Ne,lastUsed:Y}),W.reused+=1;continue}let ne=await this.readSample(pe),pt=vxt(ne,_e);this.entries.set(Se,{vector:pt,mtimeMs:he.mtimeMs,size:he.size,lastUsed:Y}),this.dirty=!0,W.computed+=1}catch{}return W}getEmbedding(g){let T=this.entries.get(g);return T&&this.entries.set(g,{...T,lastUsed:Date.now()}),T}async load(){if(!this.cachePath||JO)return;let{fs:g}=await BO();try{let T=await g.readFile(this.cachePath,"utf8"),x=JSON.parse(T);if(x.version!==XBe||typeof x.entries!="object"||!x.entries)return;for(let[E,W]of Object.entries(x.entries))Array.isArray(W.vector)&&W.vector.length>0&&this.entries.set(E,W)}catch{}}async readSample(g){if(JO)return"";let{fs:T}=await BO();try{let x=await T.open(g,"r");try{let E=Buffer.alloc(4096),{bytesRead:W}=await x.read(E,0,E.length,0);return E.toString("utf8",0,W)}finally{await x.close()}}catch{return""}}};Vx.EmbeddingCache=p1e});var g1e=Ti(LY=>{"use strict";Object.defineProperty(LY,"__esModule",{value:!0});LY.StealthEmbeddingClient=void 0;var bxt=t(d=>{let g=2166136261;for(let x=0;x<d.length;x+=1)g^=d.charCodeAt(x),g+=(g<<1)+(g<<4)+(g<<7)+(g<<8)+(g<<24);return(g>>>0).toString(16).padStart(16,"0")},"hashString"),Sxt="https://api.burtson.ai/api/stealth/embeddings",QBe=8e3,m1e=class d{static{t(this,"StealthEmbeddingClient")}constructor(g){this.baseUrl=d.normalizeBaseUrl(g.baseUrl),this.apiKey=g.apiKey,this.workspaceRoot=g.workspaceRoot}matches(g){return this.baseUrl===d.normalizeBaseUrl(g.baseUrl)&&this.apiKey===g.apiKey&&this.workspaceRoot===g.workspaceRoot}async upsertDocument(g){let T=this.prepareText(g.content);if(!T)return;let x={path:g.path,workspace:this.workspaceRoot,language:g.language,...g.metadata??{}};await this.post("/upsert",{id:this.buildVectorId(g.path),text:T,metadata:x})}async searchDocuments(g,T=6){let x=g.trim();if(!x)return[];let E={query:x,limit:T},W=await this.post("/search",E);return Array.isArray(W)?W.map(Y=>this.mapSearchEntry(Y)).filter(Y=>!!(Y&&Y.path)):[]}mapSearchEntry(g){if(!g||typeof g!="object")return;let T=g.payload,x=g.id,E=g.score,W=T??{},Y=this.extractPathFromMetadata(W);if(Y)return{id:x,score:E,path:Y,metadata:W}}extractPathFromMetadata(g){let T=[g.path,g.file,g.filePath,g.filepath,g.source];for(let x of T)if(typeof x=="string"&&x.trim().length>0)return x.trim()}async post(g,T){let x=`${this.baseUrl}${g}`,E=await fetch(x,{method:"POST",headers:this.buildHeaders(),body:JSON.stringify(T)});if(!E.ok){let Y=await d.safeReadText(E);throw new Error(`Embedding request failed: ${E.status} ${E.statusText}${Y?` \u2013 ${Y}`:""}`)}let W=await E.text();if(W)try{return JSON.parse(W)}catch(Y){console.warn("Failed to parse embedding response JSON",Y);return}}buildHeaders(){let g={"Content-Type":"application/json"};return this.apiKey&&(g.Authorization=`Bearer ${this.apiKey}`),g}buildVectorId(g){return bxt(`${this.workspaceRoot}:${g}`)}prepareText(g){if(!g)return"";let T=g.replace(/\r\n/g,`
|
|
128
|
-
`).trim();return T.length<=QBe?T:T.slice(0,QBe)}static async safeReadText(g){try{return await g.text()}catch{return""}}static normalizeBaseUrl(g){let T=Sxt;if(!g)return T;let x=g.trim();return x?x.replace(/\/$/,""):T}};LY.StealthEmbeddingClient=m1e});var jY=Ti(ED=>{"use strict";Object.defineProperty(ED,"__esModule",{value:!0});ED.registerModelCapabilities=xxt;ED.getModelCapabilities=ZBe;ED.queryOllamaModelCapabilities=Cxt;ED.getContextFileLimit=wxt;ED.getContextTokenBudget=Ext;ED.resolveOllamaRuntimeOptions=Pxt;var Txt=[{prefix:"bandit-core:4b",caps:{contextWindow:8192,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"small",label:"Bandit Core 4B"}},{prefix:"bandit-core:12b",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"medium",label:"Bandit Core 12B"}},{prefix:"bandit-core:27b",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"medium",label:"Bandit Core 27B"}},{prefix:"bandit-core:31b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"large",label:"Bandit Core 31B"}},{prefix:"bandit-core-1",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"large",label:"Bandit Core (hosted, 31B)"}},{prefix:"bandit-core-2",caps:{contextWindow:131072,supportsJsonMode:!1,supportsToolCalling:!1,supportsVision:!1,tier:"large",label:"Bandit Core 2 (RunPod 70B)"}},{prefix:"bandit-logic",caps:{contextWindow:
|
|
128
|
+
`).trim();return T.length<=QBe?T:T.slice(0,QBe)}static async safeReadText(g){try{return await g.text()}catch{return""}}static normalizeBaseUrl(g){let T=Sxt;if(!g)return T;let x=g.trim();return x?x.replace(/\/$/,""):T}};LY.StealthEmbeddingClient=m1e});var jY=Ti(ED=>{"use strict";Object.defineProperty(ED,"__esModule",{value:!0});ED.registerModelCapabilities=xxt;ED.getModelCapabilities=ZBe;ED.queryOllamaModelCapabilities=Cxt;ED.getContextFileLimit=wxt;ED.getContextTokenBudget=Ext;ED.resolveOllamaRuntimeOptions=Pxt;var Txt=[{prefix:"bandit-core:4b",caps:{contextWindow:8192,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"small",label:"Bandit Core 4B"}},{prefix:"bandit-core:12b",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"medium",label:"Bandit Core 12B"}},{prefix:"bandit-core:27b",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"medium",label:"Bandit Core 27B"}},{prefix:"bandit-core:31b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"large",label:"Bandit Core 31B"}},{prefix:"bandit-core-1",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"large",label:"Bandit Core (hosted, 31B)"}},{prefix:"bandit-core-2",caps:{contextWindow:131072,supportsJsonMode:!1,supportsToolCalling:!1,supportsVision:!1,tier:"large",label:"Bandit Core 2 (RunPod 70B)"}},{prefix:"bandit-logic",caps:{contextWindow:262144,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!0,tier:"large",label:"Bandit Logic (Qwen 3.6 27B)"}},{prefix:"gemma3:4b",caps:{contextWindow:8192,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"small",label:"Gemma 3 4B"}},{prefix:"gemma3:12b",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"medium",label:"Gemma 3 12B"}},{prefix:"gemma3:27b",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"medium",label:"Gemma 3 27B"}},{prefix:"gemma4:31b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"large",label:"Gemma 4 31B"}},{prefix:"gemma4:26b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"medium",label:"Gemma 4 26B"}},{prefix:"gemma4",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"large",label:"Gemma 4"}},{prefix:"llama3.2-vision",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!0,tier:"medium",label:"Llama 3.2 Vision"}},{prefix:"llama3.1",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"medium",label:"Llama 3.1"}},{prefix:"llama3",caps:{contextWindow:8192,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"small",label:"Llama 3"}},{prefix:"qwen3.6:35b",caps:{contextWindow:262144,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!0,tier:"large",label:"Qwen 3.6 35B"}},{prefix:"qwen3.6:27b",caps:{contextWindow:262144,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!0,tier:"large",label:"Qwen 3.6 27B"}},{prefix:"qwen3.6",caps:{contextWindow:262144,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!0,tier:"large",label:"Qwen 3.6"}},{prefix:"qwen2.5-coder:72b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"large",label:"Qwen 2.5 Coder 72B"}},{prefix:"qwen2.5-coder:32b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"large",label:"Qwen 2.5 Coder 32B"}},{prefix:"qwen2.5-coder:14b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"medium",label:"Qwen 2.5 Coder 14B"}},{prefix:"qwen2.5-coder",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"medium",label:"Qwen 2.5 Coder"}},{prefix:"qwen2.5vl",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!0,tier:"medium",label:"Qwen 2.5 VL"}},{prefix:"qwen2-vl",caps:{contextWindow:32768,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!0,tier:"medium",label:"Qwen 2 VL"}},{prefix:"qwen2.5:72b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"large",label:"Qwen 2.5 72B"}},{prefix:"qwen2.5:32b",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"large",label:"Qwen 2.5 32B"}},{prefix:"qwen2.5",caps:{contextWindow:131072,supportsJsonMode:!0,supportsToolCalling:!0,supportsVision:!1,tier:"medium",label:"Qwen 2.5"}},{prefix:"llava",caps:{contextWindow:4096,supportsJsonMode:!1,supportsToolCalling:!1,supportsVision:!0,tier:"small",label:"LLaVA"}},{prefix:"deepseek-coder:6.7b",caps:{contextWindow:16384,supportsJsonMode:!0,supportsToolCalling:!1,supportsVision:!1,tier:"small",label:"DeepSeek Coder 6.7B"}}],KBe={contextWindow:8192,supportsJsonMode:!1,supportsToolCalling:!1,supportsVision:!1,tier:"small"},YBe=new Map;function xxt(d,g){d&&YBe.set(d.toLowerCase(),g)}t(xxt,"registerModelCapabilities");function ZBe(d){if(!d)return KBe;let g=d.toLowerCase(),T=YBe.get(g);if(T)return T;for(let{prefix:x,caps:E}of Txt)if(g.startsWith(x.toLowerCase()))return E;return KBe}t(ZBe,"getModelCapabilities");function kxt(d){let g=d.match(/(\d+(?:\.\d+)?)\s*[Bb]/);if(!g)return"small";let T=parseFloat(g[1]);return T<=5?"small":T<=35?"medium":"large"}t(kxt,"deriveTierFromParamSize");async function Cxt(d,g){try{let T=`${g.replace(/\/$/,"")}/api/show`,x=await fetch(T,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({name:d}),signal:AbortSignal.timeout(5e3)});if(!x.ok)return null;let E=await x.json(),W=E.details?.parameter_size??"",Y=kxt(W),_e=E.model_info?.["llm.context_length"]??(Y==="large"?131072:Y==="medium"?32768:8192),pe=(E.details?.family??"").toLowerCase(),he=!0,Se=pe.includes("llava")||pe.includes("vision")||pe.includes("vl");return{tier:Y,contextWindow:_e,supportsJsonMode:he,supportsToolCalling:!1,supportsVision:Se,label:d}}catch{return null}}t(Cxt,"queryOllamaModelCapabilities");function wxt(d){switch(d){case"large":return 20;case"medium":return 8;case"small":return 3}}t(wxt,"getContextFileLimit");function Ext(d){return Math.floor(d.contextWindow*.4)}t(Ext,"getContextTokenBudget");function Pxt(d){let g=ZBe(d),T;switch(g.tier){case"small":T=12288;break;case"medium":T=24576;break;case"large":T=32768;break;default:T=12288}return g.contextWindow>0&&T>g.contextWindow&&(T=g.contextWindow),{num_ctx:T,keep_alive:-1}}t(Pxt,"resolveOllamaRuntimeOptions")});var y1e=Ti(OB=>{"use strict";Object.defineProperty(OB,"__esModule",{value:!0});OB.normalizeOllamaMessages=iJe;OB.createProvider=jxt;OB.serializeBanditPayload=sJe;var Dxt=jY(),Axt="https://api.burtson.ai/completions",Ixt="http://localhost:11434",Nxt="gemma3:12b",Oxt=[/<\/?end_of_turn>/g,/<\/?start_of_turn>/g,/<\|eot_id\|>/g,/<\|start_header_id\|>/g,/<\|end_header_id\|>/g,/<\|begin_of_text\|>/g,/\[INST\]/g,/\[\/INST\]/g,/<<SYS>>/g,/<\/SYS>>/g];function tJe(d){let g=d;for(let T of Oxt)g=g.replace(T,"");return g=nJe(g),g}t(tJe,"sanitizeOllamaOutput");function nJe(d){let g=/(?:data:[\w/.+-]+;base64,)?[A-Za-z0-9+/]{120,}={0,2}/g;return d.replace(g,T=>`[base64 stripped: ${T.length} chars]`)}t(nJe,"stripBase64BlobsInline");function Fxt(d){let g=t(_e=>(typeof _e=="string"?_e:_e.map(he=>he.type==="text"?he.text:"").join(" ")).toLowerCase(),"getLowerText"),T=d.messages.filter(_e=>_e.role==="system").map(_e=>g(_e.content)).join(`
|
|
129
129
|
`),x=[...d.messages].reverse().find(_e=>_e.role==="user"),E=`${T}
|
|
130
130
|
${x?g(x.content):""}`;return/\b(respond with json(?: only)?|return (?:valid )?json|output (?:valid )?json|json only|format\s*[:=]\s*"?json"?|strictly json)\b/.test(E)?/\b(plan|planning|steps?)\b|execution plan|agent plan|schema|"steps"|"id"|"title"|"description"/.test(E):!1}t(Fxt,"detectJsonRequest");function rJe(d){if(typeof d=="string")return{text:d,imageUrls:[]};if(!Array.isArray(d))return{text:"",imageUrls:[]};let g=[],T=[];for(let x of d)if(x){if(x.type==="text"){let E=typeof x.text=="string"?x.text:x.text!=null?String(x.text):"";E.length>0&&g.push(E);continue}if(x.type==="image_url"){let E=aJe(x);E&&T.push(E)}}return{text:g.join(`
|
|
131
131
|
`),imageUrls:h1e(T)}}t(rJe,"splitMessageContent");function h1e(d){let g=new Set,T=[];for(let x of d){let E=x.trim();!E||g.has(E)||(g.add(E),T.push(E))}return T}t(h1e,"dedupeStrings");function eJe(d){let g=BY(d);if(!g||/^https?:/i.test(g))return;if(!/^data:/i.test(g))return g;let T=g.indexOf(",");if(!(T<0||T===g.length-1))return g.slice(T+1).trim()}t(eJe,"normalizeOllamaImage");function iJe(d){let g=d.messages.map(x=>{let{text:E,imageUrls:W}=rJe(x.content),Y=W.map(_e=>eJe(_e)).filter(_e=>!!_e);return Y.length>0?{role:x.role,content:E,images:Y}:{role:x.role,content:E}}),T=(Array.isArray(d.images)?d.images:[]).map(x=>eJe(x)).filter(x=>!!x);if(T.length===0)return g;for(let x=g.length-1;x>=0;x-=1){if(g[x]?.role!=="user")continue;let E=g[x].images??[];return g[x].images=h1e([...E,...T]),g}return g.push({role:"user",content:"",images:T}),g}t(iJe,"normalizeOllamaMessages");function Mxt(d){let g=(Array.isArray(d.images)?d.images:[]).map(E=>BY(E)).filter(E=>!!E),T=[...d.messages].reverse().find(E=>E.role==="user"),x=T?rJe(T.content).imageUrls:[];return h1e([...g,...x])}t(Mxt,"collectBanditPayloadImages");async function*Rxt(d){let g=d.body;if(!g)throw new Error("Ollama response has no body.");let T=g.getReader(),x=new TextDecoder,E="";for(;;){let{value:W,done:Y}=await T.read();if(Y)break;E+=x.decode(W,{stream:!0});let _e=E.split(`
|
|
@@ -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=MD.join(g.workspaceRoot,".bandit","checkpoints"),this.maxIndexEntries=g.maxIndexEntries??aIt}async create(g){await $w.promises.mkdir(MD.join(this.dir,g.turnId),{recursive:!0}),this.counter++;let T=`chk-${g.turnId.split("-").pop()??"x"}-${String(this.counter).padStart(3,"0")}`,x=MD.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=MD.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=MD.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(MD.dirname(T.path),{recursive:!0}),await $w.promises.writeFile(T.path,T.before)),T}catch{return null}}async readIndex(){let g=MD.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=MD.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 EZ=vWe();Object.defineProperty(Dl,"evaluatePermission",{enumerable:!0,get:t(function(){return EZ.evaluatePermission},"get")});Object.defineProperty(Dl,"emptyPolicy",{enumerable:!0,get:t(function(){return EZ.emptyPolicy},"get")});Object.defineProperty(Dl,"mergePolicies",{enumerable:!0,get:t(function(){return EZ.mergePolicies},"get")});Object.defineProperty(Dl,"SessionPermissionStore",{enumerable:!0,get:t(function(){return EZ.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 PZ=Ti((_Ft,pIt)=>{pIt.exports={name:"@burtson-labs/bandit-stealth-cli",version:"1.7.
|
|
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=MD.join(g.workspaceRoot,".bandit","checkpoints"),this.maxIndexEntries=g.maxIndexEntries??aIt}async create(g){await $w.promises.mkdir(MD.join(this.dir,g.turnId),{recursive:!0}),this.counter++;let T=`chk-${g.turnId.split("-").pop()??"x"}-${String(this.counter).padStart(3,"0")}`,x=MD.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=MD.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=MD.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(MD.dirname(T.path),{recursive:!0}),await $w.promises.writeFile(T.path,T.before)),T}catch{return null}}async readIndex(){let g=MD.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=MD.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 EZ=vWe();Object.defineProperty(Dl,"evaluatePermission",{enumerable:!0,get:t(function(){return EZ.evaluatePermission},"get")});Object.defineProperty(Dl,"emptyPolicy",{enumerable:!0,get:t(function(){return EZ.emptyPolicy},"get")});Object.defineProperty(Dl,"mergePolicies",{enumerable:!0,get:t(function(){return EZ.mergePolicies},"get")});Object.defineProperty(Dl,"SessionPermissionStore",{enumerable:!0,get:t(function(){return EZ.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 PZ=Ti((_Ft,pIt)=>{pIt.exports={name:"@burtson-labs/bandit-stealth-cli",version:"1.7.9",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 i1=z_(require("fs")),gh=z_(require("path")),HB=z_(require("readline")),ek=z_(RY()),wI=z_(lSe());var VB=z_(require("fs")),_Se=z_(require("os")),xI=z_(require("path")),yZ=z_(require("child_process"));function hZ(d){return d==="~"?_Se.homedir():d.startsWith("~/")?xI.join(_Se.homedir(),d.slice(2)):d}t(hZ,"expandHome");var KO=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 YO=class{constructor(g,T,x={}){this.workspaceRoot=g;this.languageAdapters=T;this.options=x}static{t(this,"CliToolExecutionContext")}async readFile(g){return VB.promises.readFile(hZ(g),"utf-8")}async writeFile(g,T){let x=hZ(g);if(this.options.approveWrite&&!await this.options.approveWrite(x,T))throw new Error(`Write to ${x} rejected by user`);await VB.promises.mkdir(xI.dirname(x),{recursive:!0}),await VB.promises.writeFile(x,T,"utf-8")}async listFiles(g,T){let x=hZ(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=hZ(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=yZ.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=yZ.spawn("rg",Y,{shell:!1}),he=setTimeout(()=>{pe.kill("SIGTERM"),E(_e.slice(0,KO))},Mze);pe.stdout?.on("data",Se=>{_e+=Se.toString(),_e.length>KO&&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,KO))}),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=yZ.spawn("grep",Se,{shell:!1}),pt=setTimeout(()=>{ne.kill("SIGTERM"),E(Ne.slice(0,KO))},Mze);ne.stdout?.on("data",He=>{Ne+=He.toString(),Ne.length>KO&&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,KO))}),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 VB.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 vZ(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(vZ,"tryExec");async function bZ(){return process.platform==="darwin"?nAt():process.platform==="linux"?rAt():process.platform==="win32"?iAt():null}t(bZ,"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