{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"lire1131-dsh-undo-savepoint","slug":"lire1131-dsh-undo-savepoint","rank":58,"url":"https://github.com/lire1131/dsh-undo-savepoint","name":"lire1131/dsh-undo-savepoint","category":"dev","description":{"zh":"DSH 撤销/回退系统：配置变更自动存档，一键撤销/恢复/回退到任意版本，支持 WebUI 与离线 CLI/GUI 工具（DSH 启动失败也能救）。","en":"Undo/redo & rollback system for DSH: every config change is auto-snapshotted; undo/redo/restore to any version from the WebUI or the offline CLI/GUI tools (works even when DSH fails to boot)."},"stars":112,"starsCheckedAt":"2026-08-21","repository":{"owner":"lire1131","repo":"dsh-undo-savepoint","requestedRef":null,"subpath":""},"npm":"dsh-undo-savepoint","downloads":130,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add dsh-undo-savepoint","tarball":null,"added":"2026-08-14","page":"https://awesome-dsh-plugin.com/p/lire1131/dsh-undo-savepoint/","screenshots":["https://raw.githubusercontent.com/lire1131/dsh-undo-savepoint/master/docs/webui-panel.png","https://raw.githubusercontent.com/lire1131/dsh-undo-savepoint/master/docs/webui-settings-section.png","https://raw.githubusercontent.com/lire1131/dsh-undo-savepoint/master/docs/gui-main.png","https://raw.githubusercontent.com/lire1131/dsh-undo-savepoint/master/docs/gui-settings.png"],"discovery":{"provider":"awesome-dsh-plugin","channel":"plugins.json","indexUrl":"https://github.com/awesome-dsh-plugin/awesome-dsh-plugin","selection":"all curated entries"}},"report":{"sourceId":"lire1131-dsh-undo-savepoint","slug":"lire1131-dsh-undo-savepoint","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:20:15.864Z","scanStatus":"static-complete","verdict":"pass","score":99,"commit":"8e278b9e22d31b8b381b064157e59b45875c141c","commitDate":"2026-08-21T23:16:56+08:00","artifactDigest":"sha256:532885cbbea3882d3498e4152c1d122e5c5f58c60ce466f9e5e22e9c9264b777","downloadUrl":"https://github.com/lire1131/dsh-undo-savepoint/archive/8e278b9e22d31b8b381b064157e59b45875c141c.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add dsh-undo-savepoint","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"dsh-undo-savepoint","packageVersion":"0.3.8","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["slots","locale"]},"lifecycleScripts":{},"peerDependencies":[]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"dsh-undo-savepoint","manifestName":"dsh-undo-savepoint","nameMatch":true,"npm":{"name":"dsh-undo-savepoint","latestVersion":"0.3.5","publishedAt":"2026-08-19T16:07:06.649Z","createdAt":"2026-08-19T16:07:06.412Z","versionCount":1,"maintainers":1,"repository":"git+https://github.com/lire1131/dsh-undo-savepoint.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"differs"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"dsh-undo","name":"dsh-undo-savepoint","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","credentials","environment","filesystem","host-bundle","network","subprocess"],"outboundHosts":[{"host":"dsh.local","count":1}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/index.js","pathClass":"source","line":37,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"89dedaa9e6429e9e52b8af60"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"tools/home-resolution-test.mjs","pathClass":"source","line":18,"evidence":"spawnSync","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"3516789f26ac648b7997fc44"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"tools/home-resolution-test.mjs","pathClass":"source","line":18,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"fc0c3c9b35efd5e437ff3995"}],"counts":{"critical":0,"high":0,"medium":0,"low":3},"rawCounts":{"critical":0,"high":0,"medium":0,"low":3},"vulnerabilities":[],"coverage":{"source":"complete","manifest":"complete","bundleConfig":"complete","dependencies":"lockfile-missing","vulnerabilities":"lockfile-missing","identity":"complete","artifact":"not-compared","llmReview":"not-needed","dynamicRuntime":"not-run","humanReview":"not-run"},"inventory":{"filesScanned":24,"bytesScanned":502030,"truncated":false,"lockfiles":[],"pathClasses":{"test-example-docs":1,"markdown":6,"cordis":1,"source":7,"data":2,"manifest":1,"script":6}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:20:15.864Z","commit":"8e278b9e22d31b8b381b064157e59b45875c141c","policyVersion":"HT-DSH-0.2.2","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T11:18:56.582Z","commit":"a294e35f9d989c23dd12e696fca97945a59de070","policyVersion":"HT-DSH-0.2.1","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T10:46:48.307Z","commit":"a294e35f9d989c23dd12e696fca97945a59de070","policyVersion":"HT-DSH-0.2.0","verdict":"pass","status":"static-complete"}],"events":[{"kind":"policy-change","from":"HT-DSH-0.2.1","to":"HT-DSH-0.2.2","commit":"8e278b9e22d31b8b381b064157e59b45875c141c","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:20:15.864Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"a294e35f9d989c23dd12e696fca97945a59de070","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:18:56.582Z"},{"kind":"first-scan","from":null,"to":"pass","commit":"a294e35f9d989c23dd12e696fca97945a59de070","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:46:48.307Z"}]}