Install verification: Ecosystem plugin: installs via dsh plugin add but declares no dsh.bundle and mounts no plugin capability — the L1-L5 install ladder does not rate it; the security scan still runs.Install verification details →
What it doesAI
Local code semantic index & retrieval: declaration-aware chunking, Ollama embeddings, Qdrant storage, and MCP tools for DSH sessions.
- Declaration-aware chunking for C++/Java with mixed comments
- Asynchronous indexing with progress, cancel, and root switching
- Five MCP tools plus built-in visual index status panel
Capability tags are AI-inferred or rule-extracted from the README (see badge) — vocabulary-limited, not install-verified. AI = inferred; README = literal keyword from the readme.
Installation
dsh plugin --profile web add @aylina_ankali/code-rag-mcpInstall method: npm · runtime test inconclusive (L5 unknown)
Verification & Compatibility○ Ecosystem plugin
Grouped by plugin version: each card lists the dsh versions actually tested against that artifact version and their install verdicts (L5 wins). Untested combinations are omitted — absence means untested, never assumed compatible. L1–L3 are a plugin-level static archive (independent of the dsh version — the same verdict on every dsh row): they sit in each row's level grid next to L4/L5, marked "static", while their evidence is stored once per plugin inside that row's "checks & evidence" instead of being duplicated per version.
External credentials (plugin-level): none detected
○ The author declares no dsh version requirement — install is not blocked by version.
| plugin \ dsh | dsh 0.2.1-rc.2 current | dsh 0.2.1-alpha.4 | dsh 0.2.1-alpha.2 | dsh 0.2.0-rc.2 | dsh 0.2.0-rc.1 |
|---|---|---|---|---|---|
| 0.3.1 | ○ | ✗ | ○ | ○ | ○ |
0.3.1npm○ 9 ecosystem plugin1 failed2026-10-19
@aylina_ankali/code-rag-mcp
○dsh 0.2.1-rc.2current2026-10-19Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-rc.2
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.2.1-rc.2 · profile: l4-sandbox
Issued: 2026-10-19 · expires: 2026-10-26
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
✗dsh 0.2.1-alpha.42026-10-17Ecosystem plugin · L5 · failed
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.4
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.2.1-alpha.4 · profile: l4-sandbox
Issued: 2026-10-17 · expires: 2026-10-24
View checks & evidence
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.2.1-alpha.22026-10-11Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.1-alpha.2
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.2.1-alpha.2 · profile: l4-sandbox
Issued: 2026-10-11 · expires: 2026-10-18
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.2.0-rc.22026-10-09Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.2
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.2.0-rc.2 · profile: l4-sandbox
Issued: 2026-10-09 · expires: 2026-10-16
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.2.0-rc.12026-09-29Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.2.0-rc.1
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.2.0-rc.1 · profile: l4-sandbox
Issued: 2026-09-29 · expires: 2026-10-06
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.1.7-rc.22026-09-26Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.2
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.1.7-rc.2 · profile: l4-sandbox
Issued: 2026-09-26 · expires: 2026-10-03
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.1.7-rc.12026-09-24Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.7-rc.1
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.1.7-rc.1 · profile: l4-sandbox
Issued: 2026-09-24 · expires: 2026-10-01
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.1.6-alpha.22026-09-20Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.2
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.1.6-alpha.2 · profile: l3-fullscan
Issued: 2026-09-20 · expires: 2026-09-27
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○dsh 0.1.6-alpha.12026-09-16Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: 0.1.6-alpha.1
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dsh0.1.6-alpha.1 · profile: l4-sandbox
Issued: 2026-09-16 · expires: 2026-09-23
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
○prehistory2026-10-04Ecosystem plugin
- • Node.js: v24.14.0
- • DSH: unknown
- • Plugin artifact: npm · @aylina_ankali/code-rag-mcp@0.3.1
ID: code-rag@0.3.1@dshunknown · profile: l4-sandbox
Issued: 2026-10-04 · expires: 2026-10-11
View checks & evidence
not present in web-profile loader inventory
L1–L3 are plugin-level static conclusions (baseline, identical across dsh versions): evidence is stored once per plugin.
Only the latest 3 published versions are shown; source-snapshot (commit hash) groups, unstated groups and older versions are omitted — the full archive stays in the data layer (snapshot/unstated groups appear only when a plugin has no published version).
Author badges
Embed the official badges in your README to showcase security & install-test status:
`[](https://www.dsh.so/artifact/code-rag/)`Security Report
Two automated layers, neither a manual review: a static scan (per-plugin rule checks) and a model-driven dynamic security audit that covers only the subset static-flagged at warn or above and never executes plugin code.
Static low; dynamic low (authoritative when present) → overall low.
v0.3.10.3.1npm2026-10-240.3.1same versionclean · npmVet is an AST static scan (npm artifact or git source).
show static findings (12)
- warningnetIp · network
plugins/dsh-code-rag-index-panel/lib/client.js:374fetchWithTimeout('http://127.0.0.1:' + port + '/api/status', { cache: 'no-store' }) - warningnetIp · network
plugins/dsh-code-rag-index-panel/lib/client.js:414var res = await fetchWithTimeout('http://127.0.0.1:' + port + '/api/status', { cache: 'no-store' }) - warningnetIp · network
plugins/dsh-code-rag-index-panel/lib/client.js:447await fetchWithTimeout('http://127.0.0.1:' + port + '/api/index', { - warningshellExec · shell
plugins/dsh-code-rag-index-panel/lib/index.js:272execFile(process.execPath, args, { cwd: repoDir, timeout: 60000, maxBuffer: 64 * 1024, windowsHide: true }, (error, stdout, stderr) => { - warningnetIp · network
plugins/dsh-code-rag-index-panel/lib/index.js:51qdrantUrl: 'http://127.0.0.1:6333', - warningnetIp · network
plugins/dsh-code-rag-index-panel/lib/index.js:52ollamaUrl: 'http://127.0.0.1:11434', - warningnetIp · network
plugins/dsh-code-rag-index-panel/lib/index.js:186const status = await fetchJson(`http://127.0.0.1:${panel.port}/api/status`) - warningnetIp · network
plugins/index-panel.client.js:79fetchWithTimeout(`http://127.0.0.1:${p}/api/status`, { cache: 'no-store' }) - warningnetIp · network
plugins/index-panel.client.js:105const res = await fetchWithTimeout(`http://127.0.0.1:${port}/api/status`, { cache: 'no-store' }) - warningnetIp · network
plugins/index-panel.client.js:120await fetchWithTimeout(`http://127.0.0.1:${port}/api/index`, { - warningnetIp · network
scripts/smoke.mjs:77await fetch('http://127.0.0.1:6333/collections/code_rag', { method: 'DELETE' }).catch(() => {}) - warningnetIp · network
scripts/verify-async.mjs:111const status = await fetch(`http://127.0.0.1:${port}/api/status`).then((r) => r.json())
show 4 audit findings
- lowConfig endpoint writes .code-rag/config.json into any caller-supplied existing directory
plugins/dsh-code-rag-index-panel/lib/index.js:382The only validation of 'root' is existsSync(); keys are whitelisted to CONFIG_KEYS, so an attacker who can reach the endpoint (loopback only, per isLoopbackRequest) can drop a config.json into any directory the DSH process can write, including paths outside the intended codebase.
- lowsetup action executes setup.mjs from a repo directory derived from a config file
plugins/dsh-code-rag-index-panel/lib/index.js:272The executed script path comes from <DSH_HOME>/.agent-presets/code-rag/agent.cordis.yml rather than the plugin's own package path, so whoever can edit that preset redirects which setup.mjs runs. Precondition is local write access to DSH_HOME or a loopback call to /api/code-rag/action {action:'setup'}; execFile uses an argument array (no shell), so no shell injection.
- lowClient trusts any local process answering ok:true on ports 8756-8786
plugins/dsh-code-rag-index-panel/lib/client.jsAny local process squatting on 127.0.0.1:8756-8786 that returns {ok:true} is treated as the index server, receives the session workspace path and index/cancel commands, and can drive the panel's UI state. Impact is limited to local processes that already run with the user's privileges.
- lowSmoke test unconditionally deletes the code_rag Qdrant collection
scripts/smoke.mjs:77Running 'npm run smoke' against a Qdrant instance on the default port destroys the existing code_rag collection, forcing a full re-index; the deletion is not gated by a confirmation flag or a non-default endpoint.
Risky fs/exec/network paths in this panel plugin are its intended functions, all gated by a solid loopback+Host+Origin guard; only low-severity hardening gaps found.
Rule (2026-10-24): when a dynamic conclusion exists it is authoritative (it may raise or lower the level); without one, the static/vet fused tier applies. The audit never writes the exemption list (exemptions are manual only); a wrong conclusion is withdrawn by human review and the tier falls back to static/vet.
Disclaimer: the static scan and the dynamic security audit are both automated analysis, not a security guarantee. Always review what you install.
Activity
Last commit 2026-08-29 · activity: Stable
• Repo created: 2026-08-26
• Stars: ★ 1 · Forks: 0
• Health: Stable — committed within 90 days
Source
Author README
View on GitHub ↗The author's original README from the repository — fetched live, unedited (the English page loads the default README).
