{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"aks1st-dsh-mermaid","slug":"aks1st-dsh-mermaid","rank":310,"url":"https://github.com/AKS1st/dsh-mermaid","name":"AKS1st/dsh-mermaid","category":"docs","description":{"zh":"把 DSH Web 会话消息中的 Mermaid 代码围栏渲染为惰性加载的 SVG 图表，严格消毒并跟随明暗主题。","en":"Render Mermaid code fences in DSH Web chat messages as lazy-loaded SVG diagrams with strict sanitization and light/dark theme follow."},"stars":9,"starsCheckedAt":"2026-08-21","repository":{"owner":"AKS1st","repo":"dsh-mermaid","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:AKS1st/dsh-mermaid","tarball":null,"added":"2026-08-15","page":"https://awesome-dsh-plugin.com/p/AKS1st/dsh-mermaid/","screenshots":[],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"aks1st-dsh-mermaid","slug":"aks1st-dsh-mermaid","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:23:31.868Z","scanStatus":"static-complete","verdict":"caution","score":95,"commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","commitDate":"2026-08-17T15:17:37+08:00","artifactDigest":"sha256:9bee8eb7931992650f88b451b809147d3e9badfa13b7f2cc5ae3fb8258c4c376","downloadUrl":"https://github.com/AKS1st/dsh-mermaid/archive/2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:AKS1st/dsh-mermaid","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-mermaid","packageVersion":"0.5.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web"},"lifecycleScripts":{},"peerDependencies":[]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"dsh-mermaid","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"mermaid","name":"dsh-mermaid","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["browser-ui","environment","filesystem","host-bundle","network"],"outboundHosts":[],"findings":[{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/client.js","pathClass":"source","line":288,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"87e8e136bfe0ec624b8b4ecd"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/types/client/dom.js","pathClass":"source","line":276,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"39c8e473828e7aca31ac4ff0"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"scripts/browser-inject.mjs","pathClass":"source","line":29,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"422cd9b20b3f4d78cb895b42"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"scripts/browser-zoom.mjs","pathClass":"source","line":29,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"9b9539cd925168dd40c206e9"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"scripts/browser-zoom.mjs","pathClass":"source","line":118,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"9b9539cd925168dd40c206e9"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"src/client/dom.ts","pathClass":"source","line":306,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"8396c6f8d1b00a197cb71f3c"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/client-dom.spec.ts","pathClass":"test-example-docs","line":139,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"96c6f9554b436a6b590ff61f"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/client-dom.spec.ts","pathClass":"test-example-docs","line":600,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"96c6f9554b436a6b590ff61f"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"low","layer":"static","path":"tests/live-server-e2e.spec.ts","pathClass":"test-example-docs","line":74,"evidence":".innerHTML =","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","note":"位于测试、示例或文档目录","hash":"6f33c85fd568f499701fa728"}],"counts":{"critical":0,"high":0,"medium":6,"low":0},"rawCounts":{"critical":0,"high":0,"medium":9,"low":0},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-present","vulnerabilities":"complete","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":35,"bytesScanned":398635,"truncated":false,"lockfiles":["package-lock.json"],"pathClasses":{"markdown":3,"cordis":1,"source":24,"data":2,"manifest":1,"test-example-docs":4}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:23:31.868Z","commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:23:13.786Z","commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T10:52:01.304Z","commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","policyVersion":"HT-DSH-0.2.0","verdict":"caution","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:23:31.868Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:23:13.786Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"2708cdf2e2eb1c0cd15448c3d3d680b8fba58d48","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:52:01.304Z"}]}