{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"lesliewylie-dsh-md-preview","slug":"lesliewylie-dsh-md-preview","rank":984,"url":"https://github.com/LeslieWylie/dsh-md-preview","name":"LeslieWylie/dsh-md-preview","category":"docs","description":{"zh":"把 Markdown 渲染为自包含的独立 HTML 页面：提供在 headless 配置下同样可用的 `md_html_render` 工具，以及在网页端浏览、预览、编辑并导出本地 `.md` 文件的抽屉；两个入口共用同一个渲染器，无运行时依赖。","en":"Render Markdown to a standalone, self-contained HTML page: an `md_html_render` tool that works in a headless profile, plus a web drawer to browse, preview, edit and export local `.md` files; both share one renderer, with no runtime dependencies."},"stars":2,"starsCheckedAt":"2026-08-21","repository":{"owner":"LeslieWylie","repo":"dsh-md-preview","requestedRef":null,"subpath":""},"npm":null,"downloads":null,"installMode":"github-source","upstreamInstall":"dsh plugin --profile web add github:LeslieWylie/dsh-md-preview","tarball":null,"added":"2026-08-14","page":"https://awesome-dsh-plugin.com/p/LeslieWylie/dsh-md-preview/","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":"lesliewylie-dsh-md-preview","slug":"lesliewylie-dsh-md-preview","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:30:32.326Z","scanStatus":"static-complete","verdict":"caution","score":95,"commit":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","commitDate":"2026-08-18T11:03:06+08:00","artifactDigest":"sha256:862b61bee96026bc0dc61d868e40530d1d8d8d9f7d6c8bc1c8b3d0657ff2f47d","downloadUrl":"https://github.com/LeslieWylie/dsh-md-preview/archive/94d1ba9ec39f46289852af242506ffdd8a80aa9d.tar.gz","installMode":"github-source","installCommand":"dsh plugin --profile web add github:LeslieWylie/dsh-md-preview","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-md-html-render","packageVersion":"0.3.0","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-locale","@deepseek-ai/dsh-client-ui-conversation"]},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/dsh-tools"]},"identity":{"status":"not-published","installMode":"github-source","upstreamNpm":null,"manifestName":"dsh-md-html-render","nameMatch":null,"npm":null,"repositoryMatch":"not-checked","provenance":"not-checked","tarballHost":null},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"md-preview","name":"dsh-md-html-render","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","filesystem","host-bundle","subprocess"],"outboundHosts":[],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"docs/screenshot.mjs","pathClass":"test-example-docs","line":12,"evidence":"execFileSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"c4c13dd8e4f2e2c8d4b85667"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"docs/screenshot.mjs","pathClass":"test-example-docs","line":12,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"15551db1d9f082613b9c8aec"},{"id":"HT-CLIENT-001","title":"浏览器端使用危险 HTML 注入点","severity":"medium","confidence":"medium","layer":"static","path":"lib/client.js","pathClass":"source","line":476,"evidence":"dangerouslySetInnerHTML","remediation":"使用安全 DOM API，并在不可避免时对不可信内容进行严格清洗。","hash":"48792e8ff9af270b03d1c839"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/host.test.mjs","pathClass":"test-example-docs","line":53,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"deb686c4fefb5224af21ad00"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/render.test.cjs","pathClass":"test-example-docs","line":29,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"cb7d3262fdff4ce638415876"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/render.test.cjs","pathClass":"test-example-docs","line":38,"evidence":"new Function(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"cb7d3262fdff4ce638415876"}],"counts":{"critical":0,"high":0,"medium":1,"low":0},"rawCounts":{"critical":0,"high":3,"medium":1,"low":2},"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":14,"bytesScanned":116725,"truncated":false,"lockfiles":["package-lock.json"],"pathClasses":{"test-example-docs":6,"markdown":2,"cordis":1,"source":3,"data":1,"manifest":1}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:30:32.326Z","commit":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","policyVersion":"HT-DSH-0.2.2","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:33:42.942Z","commit":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","policyVersion":"HT-DSH-0.2.1","verdict":"caution","status":"static-complete"},{"scannedAt":"2026-08-21T11:02:33.643Z","commit":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","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":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:30:32.326Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:33:42.942Z"},{"kind":"first-scan","from":null,"to":"caution","commit":"94d1ba9ec39f46289852af242506ffdd8a80aa9d","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T11:02:33.643Z"}]}