{"schemaVersion":2,"dataVersion":"20260822T105549Z-0a0b366f","generatedAt":"2026-08-22T10:55:49.138Z","source":{"id":"anionex-dsh-turn-rewind","slug":"anionex-dsh-turn-rewind","rank":69,"url":"https://github.com/Anionex/dsh-turn-rewind","name":"Anionex/dsh-turn-rewind","category":"session","description":{"zh":"对话回退：基于持久 Change Ledger 回滚会话与工作区状态。","en":"Rewind conversation and workspace state, powered by a persistent Change Ledger."},"stars":93,"starsCheckedAt":"2026-08-21","repository":{"owner":"Anionex","repo":"dsh-turn-rewind","requestedRef":null,"subpath":""},"npm":"@anionex/dsh-turn-rewind","downloads":2744,"installMode":"npm","upstreamInstall":"dsh plugin --profile web add @anionex/dsh-turn-rewind","tarball":null,"added":"2026-08-13","page":"https://awesome-dsh-plugin.com/p/Anionex/dsh-turn-rewind/","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":"anionex-dsh-turn-rewind","slug":"anionex-dsh-turn-rewind","policyVersion":"HT-DSH-0.2.2","scannedAt":"2026-08-22T08:20:23.224Z","scanStatus":"static-complete","verdict":"pass","score":99,"commit":"b1b85f18aaaaf71d76c84613429ce04d71f69620","commitDate":"2026-08-17T01:15:55+08:00","artifactDigest":"sha256:63b7f7add422fc8bb4bd30c3522554fa13e852ec207e9ee2201e392e29fdf9d7","downloadUrl":"https://github.com/Anionex/dsh-turn-rewind/archive/b1b85f18aaaaf71d76c84613429ce04d71f69620.tar.gz","installMode":"npm","installCommand":"dsh plugin --profile web add @anionex/dsh-turn-rewind","manifest":{"found":true,"path":"package.json","parseError":null,"packageName":"@anionex/dsh-turn-rewind","packageVersion":"0.1.1","bundle":{"patch":"./cordis.patch.yml"},"client":{"platform":"web","inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-conversation"]},"lifecycleScripts":{},"peerDependencies":["@deepseek-ai/cordis"]},"identity":{"status":"found","installMode":"npm","upstreamNpm":"@anionex/dsh-turn-rewind","manifestName":"@anionex/dsh-turn-rewind","nameMatch":true,"npm":{"name":"@anionex/dsh-turn-rewind","latestVersion":"0.1.1","publishedAt":"2026-08-16T17:17:06.881Z","createdAt":"2026-08-14T14:58:43.785Z","versionCount":2,"maintainers":1,"repository":"git+https://github.com/Anionex/dsh-turn-rewind.git","hasInstallScripts":false,"deprecated":false},"repositoryMatch":"match","provenance":"none","tarballHost":null,"versionMatch":"match"},"permissions":{"bundlePatch":"cordis.patch.yml","inserts":[{"id":"turn-rewind","name":"@anionex/dsh-turn-rewind","path":"cordis.patch.yml","disabled":false}],"overrides":[],"jsExpressions":0,"clientPlatform":"web","parseErrors":[]},"capabilities":["agent-control","browser-ui","environment","filesystem","host-bundle","network","session","subprocess"],"outboundHosts":[{"host":"dsh.local","count":2}],"findings":[{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"lib/git.js","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"2493b5f25f1f97c58af76ef7"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"medium","layer":"static","path":"src/git.ts","pathClass":"source","line":1,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","hash":"bdc87ed605fa8a9fcf276b39"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/client-bundle.test.mjs","pathClass":"test-example-docs","line":34,"evidence":"vm.runInNewContext(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"35b724fa077379576a7579c9"},{"id":"HT-RUNTIME-001","title":"动态代码执行","severity":"high","confidence":"low","layer":"static","path":"tests/client-bundle.test.mjs","pathClass":"test-example-docs","line":169,"evidence":"vm.runInNewContext(","remediation":"使用静态模块和受约束的配置解析器，避免在宿主权限下执行动态字符串。","note":"位于测试、示例或文档目录","hash":"35b724fa077379576a7579c9"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/engine.test.mjs","pathClass":"test-example-docs","line":2,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"646946e3755f7fc9a51816f0"},{"id":"HT-EXEC-001","title":"直接创建宿主子进程","severity":"low","confidence":"low","layer":"static","path":"tests/rewind-host.test.mjs","pathClass":"test-example-docs","line":2,"evidence":"node:child_process","remediation":"通过 DSH 的受控 subprocess/shell seam 执行，并公开命令、参数及审批策略。","note":"位于测试、示例或文档目录","hash":"969b0b0aa2a795df6371e0b3"}],"counts":{"critical":0,"high":0,"medium":0,"low":2},"rawCounts":{"critical":0,"high":2,"medium":0,"low":4},"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":55,"bytesScanned":434842,"truncated":false,"lockfiles":["pnpm-lock.yaml"],"pathClasses":{"test-example-docs":6,"markdown":7,"cordis":1,"source":35,"manifest":1,"yaml":2,"data":3}},"limitations":["此结果为源码静态检测，不等同于无漏洞证明。","尚未比对 npm 发布包与源码的一致性，也未执行隔离运行和人工复核。","危险能力可能是插件功能所需，需结合用途与证据人工判断。"],"limitationKeys":["static-analysis-only","no-artifact-runtime-human-review","capability-needs-context"]},"timeline":[{"scannedAt":"2026-08-22T08:20:23.224Z","commit":"b1b85f18aaaaf71d76c84613429ce04d71f69620","policyVersion":"HT-DSH-0.2.2","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T11:19:01.999Z","commit":"b1b85f18aaaaf71d76c84613429ce04d71f69620","policyVersion":"HT-DSH-0.2.1","verdict":"pass","status":"static-complete"},{"scannedAt":"2026-08-21T10:46:53.485Z","commit":"b1b85f18aaaaf71d76c84613429ce04d71f69620","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":"b1b85f18aaaaf71d76c84613429ce04d71f69620","policyVersion":"HT-DSH-0.2.2","at":"2026-08-22T08:20:23.224Z"},{"kind":"policy-change","from":"HT-DSH-0.2.0","to":"HT-DSH-0.2.1","commit":"b1b85f18aaaaf71d76c84613429ce04d71f69620","policyVersion":"HT-DSH-0.2.1","at":"2026-08-21T11:19:01.999Z"},{"kind":"first-scan","from":null,"to":"pass","commit":"b1b85f18aaaaf71d76c84613429ce04d71f69620","policyVersion":"HT-DSH-0.2.0","at":"2026-08-21T10:46:53.485Z"}]}