Local-first, agent-friendly Markdown knowledge base with a cross-platform CLI and web editor
AI Security Review
scanned 7d ago · by lpm-firewall-ai
The inspected JavaScript shows no confirmed attack, and the credential use examined is an embeddings client sending its configured key to its configured provider. The shipped native bindings remain unresolved, so the package cannot be cleared from source inspection alone.
Runtime loading of the native binding for the host platform, or an environment-selected binding.
Impact
Unknown until the native binding behavior is resolved.
Mechanism
The JavaScript loader selects and requires a native library; its effects cannot be determined from the inspected source excerpts.
AI rationale
The inspected JavaScript shows no confirmed attack, and the credential use examined is an embeddings client sending its configured key to its configured provider. The shipped native bindings remain unresolved, so the package cannot be cleared from source inspection alone.
AI called this Manual Review at 90.0% confidence as Unknown with medium false-positive risk.
AI review observations
package.json exposes CLI binaries and lists build and test scripts; it declares no install hook.
The CLI’s agent-related occurrence is in a plan listing project paths for removal.
The main entrypoint maps agent skill directories, and the initializer maps MCP configuration paths for supported clients.
The server bundle’s skill scan disables command, hook, and MCP processing.
The embeddings client sends a configured API key to its configured provider; its default provider is api.openai.com.
The native loader can load platform bindings, including a library selected through an environment variable; the shipped native binaries’ behavior remains unresolved.
Evidence against
The inspected source excerpts show local agent path mapping and an embeddings client, but establish no unrelated credential recipient or confirmed attack behavior.
1import{Ao as e}from"./dist-BGPdSmN8.mjs";import{execFile as t}from"node:child_process";const n=new Set([`http:`,`https:`]),r=/[\u0000-\u0020\u007F-\u009F"'`\\&|<>^()$;{}[\]*?!~]/;f...
High
Child Process
Package source references child process execution.
87var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,...
L88: changing to the minimum size of: 2`),this._maxSize=2)}record(e){this.updateByIncrement(e,1)}setStartTime(e){this.startTime=e}toPointValue(){return{hasMinMax:this._recordMinMax,min:...
L89: \t- OR - create a new view with the name ${e.name} and description '${e.description}' and InstrumentSelector ${r}
var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,...
L88: changing to the minimum size of: 2`),this._maxSize=2)}record(e){this.updateByIncrement(e,1)}setStartTime(e){this.startTime=e}toPointValue(){return{hasMinMax:this._recordMinMax,min:...
L89: \t- OR - create a new view with the name ${e.name} and description '${e.description}' and InstrumentSelector ${r}
...
L97: causes have become circular...`;let o=r(e);return o?(t.add(e),a+`
L98: caused by: `+i(o,t)):a},a=e=>i(e,new Set),o=(e,t,i)=>{if(!n(e))return``;let a=i?``:e.message||``;if(t.has(e))return a+`: ...`;let s=r(e);if(s){t.add(e);let n=typeof e.cause==`funct...
L99: `:`
High
Same File Env Network Execution
A single source file combines environment access, network access, and code or shell execution; review context before blocking.
86*/
L87: var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,...
L88: changing to the minimum size of: 2`),this._maxSize=2)}record(e){this.updateByIncrement(e,1)}setStartTime(e){this.startTime=e}toPointValue(){return{hasMinMax:this._recordMinMax,min:...
L89: \t- OR - create a new view with the name ${e.name} and description '${e.description}' and InstrumentSelector ${r}
...
L97: causes have become circular...`;let o=r(e);return o?(t.add(e),a+`
L98: caused by: `+i(o,t)):a},a=e=>i(e,new Set),o=(e,t,i)=>{if(!n(e))return``;let a=i?``:e.message||``;if(t.has(e))return a+`: ...`;let s=r(e);if(s){t.add(e);let n=typeof e.cause==`funct...
L99: `:`
High
Command Output Exfiltration
Source combines command execution, command-output handling, and outbound requests; review data flow before blocking.
1Cross-file remote execution chain: dist/dist-BGPdSmN8.mjs spawns dist/chunk-5QMZ5MUS-BuB3i_B5.mjs; helper contains network access plus dynamic code execution.
L1: import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-tZXQYakl.mjs";import{$ as o,$a as s,$c as c,$d as l,$i as u,$n as d,$o as f,$r as p,$s as m,$t as h,$u as g,A as...
L2: `,t),r=n===-1?e.length:n;if(r>t&&e[r-1]===`\r`&&--r,r-t>1024)return 0;let i=e.slice(t,r);return i.length===0||!hoe.test(i)&&!goe.test(i)?0:i.length}const voe=/&#(?:x[0-9A-Fa-f]+|X[...
...
L66: </div>`}];function koe(e){return["```html preview",e.html,"```"].join(`
L67: `)}const Aoe=[{name:`--chart-1`,light:`oklch(0.62 0.19 259)`,dark:`oklch(0.72 0.14 259)`},{name:`--chart-2`,light:`oklch(0.58 0.14 145)`,dark:`oklch(0.73 0.13 145)`},{name:`--char
High
Cross File Remote Execution Context
Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.
1import{t as e}from"./chunk-DXB73IDG-MLBj3lvC.mjs";function t(){let e=[{prop:`Function`,target:globalThis,violationType:`function_constructor`,strategy:`throw`,reason:`Function cons...
L2: `);n.register(`data:text/javascript,${encodeURIComponent(e)}`),i.importHooksRegistered=!0}}catch(e){console.debug(`[DefenseInDepthBox] Could not register import() hooks:`,e instanc...
dist/chunk-5QMZ5MUS-B37CnsNb.mjs#virtual:string-array:round1View on unpkg · L1
1import{t as e}from"./chunk-DXB73IDG-MLBj3lvC.mjs";function t(){let e=[{prop:`Function`,target:globalThis,violationType:`function_constructor`,strategy:`throw`,reason:`Function cons...
L2: `);n.register(`data:text/javascript,${encodeURIComponent(e)}`),i.importHooksRegistered=!0}}catch(e){console.debug(`[DefenseInDepthBox] Could not register import() hooks:`,e instanc...
•Manifest-reachable source captures an API credential, sends it to a fixed unofficial gateway, and persists that redirection in agent or shell configuration.
dist/cli.mjs:
import{o as e}from"./rolldown-runtime-tZXQYakl.mjs";import{$a as t,$s as n,$u as r,Af as i,Bf as a,Ed as o,Ef as s,Eo as c,F as l,Fo as u,Fr as d,Gc as f,Hc as p,Hd as m,Ho as h,Ic...
`)}const _a={out:e=>process.stdout.write(`${e}\n`),err:e=>process.stderr.write(`${e}\n`)},va=T({title:E().optional(),error:E().optional(),message:E().optional()});function ya(){let...
`)){let e=n.trim();if(e===``)continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r)]=e.slice(r+1))}return t}function Ea(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>r.push(...
`;return`${I(`Error:`)} this project's git remote is ${n}, which is not a Git
High
Credential Redirect Persistence
Manifest-reachable source sends a prompted API credential to a fixed unofficial gateway and persists the redirection.
87var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,...
L88: changing to the minimum size of: 2`),this._maxSize=2)}record(e){this.updateByIncrement(e,1)}setStartTime(e){this.startTime=e}toPointValue(){return{hasMinMax:this._recordMinMax,min:...
L89: \t- OR - create a new view with the name ${e.name} and description '${e.description}' and InstrumentSelector ${r}
87var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,...
L88: changing to the minimum size of: 2`),this._maxSize=2)}record(e){this.updateByIncrement(e,1)}setStartTime(e){this.startTime=e}toPointValue(){return{hasMinMax:this._recordMinMax,min:...
L89: \t- OR - create a new view with the name ${e.name} and description '${e.description}' and InstrumentSelector ${r}
...
L97: causes have become circular...`;let o=r(e);return o?(t.add(e),a+`
L98: caused by: `+i(o,t)):a},a=e=>i(e,new Set),o=(e,t,i)=>{if(!n(e))return``;let a=i?``:e.message||``;if(t.has(e))return a+`: ...`;let s=r(e);if(s){t.add(e);let n=typeof e.cause==`funct...
L99: `:`
High
Same File Env Network Execution
A single source file combines environment access, network access, and code or shell execution; review context before blocking.
86*/
L87: var t=null;try{t=new WebAssembly.Instance(new WebAssembly.Module(new Uint8Array([0,97,115,109,1,0,0,0,1,13,2,96,0,1,127,96,4,127,127,127,127,1,127,3,7,6,0,1,1,1,1,1,6,6,1,127,1,65,...
L88: changing to the minimum size of: 2`),this._maxSize=2)}record(e){this.updateByIncrement(e,1)}setStartTime(e){this.startTime=e}toPointValue(){return{hasMinMax:this._recordMinMax,min:...
L89: \t- OR - create a new view with the name ${e.name} and description '${e.description}' and InstrumentSelector ${r}
...
L97: causes have become circular...`;let o=r(e);return o?(t.add(e),a+`
L98: caused by: `+i(o,t)):a},a=e=>i(e,new Set),o=(e,t,i)=>{if(!n(e))return``;let a=i?``:e.message||``;if(t.has(e))return a+`: ...`;let s=r(e);if(s){t.add(e);let n=typeof e.cause==`funct...
L99: `:`
1import{t as e}from"./chunk-DXB73IDG-MLBj3lvC.mjs";function t(){let e=[{prop:`Function`,target:globalThis,violationType:`function_constructor`,strategy:`throw`,reason:`Function cons...
L2: `);n.register(`data:text/javascript,${encodeURIComponent(e)}`),i.importHooksRegistered=!0}}catch(e){console.debug(`[DefenseInDepthBox] Could not register import() hooks:`,e instanc...
dist/chunk-5QMZ5MUS-B37CnsNb.mjs#virtual:string-array:round1View on unpkg · L1
1import{t as e}from"./chunk-DXB73IDG-MLBj3lvC.mjs";function t(){let e=[{prop:`Function`,target:globalThis,violationType:`function_constructor`,strategy:`throw`,reason:`Function cons...
L2: `);n.register(`data:text/javascript,${encodeURIComponent(e)}`),i.importHooksRegistered=!0}}catch(e){console.debug(`[DefenseInDepthBox] Could not register import() hooks:`,e instanc...
•Manifest-reachable source captures an API credential, sends it to a fixed unofficial gateway, and persists that redirection in agent or shell configuration.
dist/cli.mjs:
import{o as e}from"./rolldown-runtime-tZXQYakl.mjs";import{$a as t,$s as n,$u as r,Af as i,Bf as a,Ed as o,Ef as s,Eo as c,F as l,Fo as u,Fr as d,Gc as f,Hc as p,Hd as m,Ho as h,Ic...
`)}const _a={out:e=>process.stdout.write(`${e}\n`),err:e=>process.stderr.write(`${e}\n`)},va=T({title:E().optional(),error:E().optional(),message:E().optional()});function ya(){let...
`)){let e=n.trim();if(e===``)continue;let r=e.indexOf(`=`);r!==-1&&(t[e.slice(0,r)]=e.slice(r+1))}return t}function Ea(e){return new Promise((t,n)=>{let r=[];e.on(`data`,e=>r.push(...
`;return`${I(`Error:`)} this project's git remote is ${n}, which is not a Git
High
Credential Redirect Persistence
Manifest-reachable source sends a prompted API credential to a fixed unofficial gateway and persists the redirection.
1Cross-file remote execution chain: dist/dist-BGPdSmN8.mjs spawns dist/chunk-5QMZ5MUS-BuB3i_B5.mjs; helper contains network access plus dynamic code execution.
L1: import{a as e,i as t,n,o as r,r as i,t as a}from"./rolldown-runtime-tZXQYakl.mjs";import{$ as o,$a as s,$c as c,$d as l,$i as u,$n as d,$o as f,$r as p,$s as m,$t as h,$u as g,A as...
L2: `,t),r=n===-1?e.length:n;if(r>t&&e[r-1]===`\r`&&--r,r-t>1024)return 0;let i=e.slice(t,r);return i.length===0||!hoe.test(i)&&!goe.test(i)?0:i.length}const voe=/&#(?:x[0-9A-Fa-f]+|X[...
...
L66: </div>`}];function koe(e){return["```html preview",e.html,"```"].join(`
L67: `)}const Aoe=[{name:`--chart-1`,light:`oklch(0.62 0.19 259)`,dark:`oklch(0.72 0.14 259)`},{name:`--chart-2`,light:`oklch(0.58 0.14 145)`,dark:`oklch(0.73 0.13 145)`},{name:`--char
High
Cross File Remote Execution Context
Source spawns a local helper that also contains network and dynamic execution context; review data flow before blocking.