dsh-standards 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/40-checker/README.md +2 -2
- package/40-checker/src/cli.mjs +1 -1
- package/40-checker/src/manifest.mjs +17 -0
- package/40-checker/src/semver.mjs +77 -11
- package/CHANGELOG.md +24 -0
- package/NOTICE +14 -0
- package/README.md +6 -6
- package/bin/dsh-standards.mjs +1 -0
- package/package.json +14 -5
- package/40-checker/.github/workflows/plugin-verify.yml +0 -70
- package/40-checker/results/boost/REPORT.md +0 -304
- package/40-checker/results/boost/lev12458.json +0 -1747
- package/40-checker/results/client/README.md +0 -16
- package/40-checker/results/entry/18/DDDMUC__dsh-free-search.json +0 -381
- package/40-checker/results/entry/18/DDDMUC__dsh-free-search.runtime.json +0 -34
- package/40-checker/results/entry/18/Ebony-Vinyl__dsh-our-free-model.json +0 -361
- package/40-checker/results/entry/18/Ebony-Vinyl__dsh-our-free-model.runtime.json +0 -34
- package/40-checker/results/entry/18/README.md +0 -24
- package/40-checker/results/entry/18/RUNTIME.md +0 -18
- package/40-checker/results/entry/18/SeaOf0__dsh-redteam-model.json +0 -391
- package/40-checker/results/entry/18/YuJunZhiXue__dsh-purge.json +0 -432
- package/40-checker/results/entry/18/ci-diet.json +0 -365
- package/40-checker/results/entry/18/ci-diet.runtime-attempt.json +0 -38
- package/40-checker/results/entry/18/daily-log.json +0 -357
- package/40-checker/results/entry/18/daily-log.runtime.json +0 -519
- package/40-checker/results/entry/18/fullbase/ATTRIBUTION.md +0 -29
- package/40-checker/results/entry/18/fullbase/DDDMUC__dsh-free-search.json +0 -99
- package/40-checker/results/entry/18/fullbase/Ebony-Vinyl__dsh-our-free-model.json +0 -95
- package/40-checker/results/entry/18/fullbase/REPORT.md +0 -261
- package/40-checker/results/entry/18/fullbase/SeaOf0__dsh-redteam-model.json +0 -144
- package/40-checker/results/entry/18/fullbase/YuJunZhiXue__dsh-purge.json +0 -106
- package/40-checker/results/entry/18/fullbase/ci-diet.json +0 -99
- package/40-checker/results/entry/18/fullbase/daily-log.json +0 -94
- package/40-checker/results/entry/18/fullbase/howmp__dsh-pentest.json +0 -104
- package/40-checker/results/entry/18/fullbase/kingcharleslzy-ai__dsh-purge.json +0 -143
- package/40-checker/results/entry/18/fullbase/liguobao__ds-harness-remote.json +0 -134
- package/40-checker/results/entry/18/fullbase/mmparko__dsh-purge.json +0 -138
- package/40-checker/results/entry/18/fullbase/project-memory.json +0 -108
- package/40-checker/results/entry/18/fullbase/qiushi.json +0 -94
- package/40-checker/results/entry/18/fullbase/shaobeichen__dsh-pocket.json +0 -94
- package/40-checker/results/entry/18/fullbase/status-rotator.json +0 -94
- package/40-checker/results/entry/18/fullbase/summary.json +0 -297
- package/40-checker/results/entry/18/fullbase/telemetry.json +0 -94
- package/40-checker/results/entry/18/fullbase/ui-auth.json +0 -94
- package/40-checker/results/entry/18/fullbase/verification.json +0 -94
- package/40-checker/results/entry/18/fullbase/ysr666__dsh-vision-router.json +0 -106
- package/40-checker/results/entry/18/howmp__dsh-pentest.json +0 -361
- package/40-checker/results/entry/18/kingcharleslzy-ai__dsh-purge.json +0 -411
- package/40-checker/results/entry/18/liguobao__ds-harness-remote.json +0 -379
- package/40-checker/results/entry/18/mmparko__dsh-purge.json +0 -441
- package/40-checker/results/entry/18/project-memory.json +0 -361
- package/40-checker/results/entry/18/project-memory.runtime.json +0 -519
- package/40-checker/results/entry/18/qiushi.json +0 -353
- package/40-checker/results/entry/18/qiushi.runtime.json +0 -519
- package/40-checker/results/entry/18/realweb/REPORT.md +0 -73
- package/40-checker/results/entry/18/realweb/SeaOf0__dsh-redteam-model.json +0 -104
- package/40-checker/results/entry/18/realweb/YuJunZhiXue__dsh-purge.json +0 -64
- package/40-checker/results/entry/18/realweb/howmp__dsh-pentest.json +0 -65
- package/40-checker/results/entry/18/realweb/kingcharleslzy-ai__dsh-purge.json +0 -75
- package/40-checker/results/entry/18/realweb/mmparko__dsh-purge.json +0 -70
- package/40-checker/results/entry/18/realweb/shaobeichen__dsh-pocket.json +0 -56
- package/40-checker/results/entry/18/realweb/summary.json +0 -196
- package/40-checker/results/entry/18/realweb/ui-auth.json +0 -56
- package/40-checker/results/entry/18/realweb/ysr666__dsh-vision-router.json +0 -61
- package/40-checker/results/entry/18/richbase/REPORT.md +0 -70
- package/40-checker/results/entry/18/richbase/SeaOf0__dsh-redteam-model.json +0 -61
- package/40-checker/results/entry/18/richbase/SeaOf0__dsh-redteam-model.log +0 -38
- package/40-checker/results/entry/18/shaobeichen__dsh-pocket.json +0 -363
- package/40-checker/results/entry/18/status-rotator.json +0 -362
- package/40-checker/results/entry/18/status-rotator.runtime.json +0 -519
- package/40-checker/results/entry/18/summary.json +0 -266
- package/40-checker/results/entry/18/targetonly/DDDMUC__dsh-free-search.json +0 -34
- package/40-checker/results/entry/18/targetonly/Ebony-Vinyl__dsh-our-free-model.json +0 -34
- package/40-checker/results/entry/18/targetonly/SeaOf0__dsh-redteam-model.json +0 -84
- package/40-checker/results/entry/18/targetonly/YuJunZhiXue__dsh-purge.json +0 -52
- package/40-checker/results/entry/18/targetonly/ci-diet.json +0 -34
- package/40-checker/results/entry/18/targetonly/daily-log.json +0 -34
- package/40-checker/results/entry/18/targetonly/howmp__dsh-pentest.json +0 -46
- package/40-checker/results/entry/18/targetonly/kingcharleslzy-ai__dsh-purge.json +0 -61
- package/40-checker/results/entry/18/targetonly/liguobao__ds-harness-remote.json +0 -39
- package/40-checker/results/entry/18/targetonly/mmparko__dsh-purge.json +0 -57
- package/40-checker/results/entry/18/targetonly/project-memory.json +0 -34
- package/40-checker/results/entry/18/targetonly/qiushi.json +0 -34
- package/40-checker/results/entry/18/targetonly/shaobeichen__dsh-pocket.json +0 -34
- package/40-checker/results/entry/18/targetonly/status-rotator.json +0 -34
- package/40-checker/results/entry/18/targetonly/summary.json +0 -133
- package/40-checker/results/entry/18/targetonly/telemetry.json +0 -34
- package/40-checker/results/entry/18/targetonly/ui-auth.json +0 -34
- package/40-checker/results/entry/18/targetonly/verification.json +0 -34
- package/40-checker/results/entry/18/targetonly/ysr666__dsh-vision-router.json +0 -43
- package/40-checker/results/entry/18/telemetry.json +0 -349
- package/40-checker/results/entry/18/ui-auth.json +0 -369
- package/40-checker/results/entry/18/verification.json +0 -358
- package/40-checker/results/entry/18/ysr666__dsh-vision-router.json +0 -409
- package/40-checker/results/fixtures/bad.json +0 -347
- package/40-checker/results/fixtures/bundle.json +0 -378
- package/40-checker/results/fixtures/good-listing.json +0 -382
- package/40-checker/results/fixtures/good-static.json +0 -322
- package/40-checker/results/fixtures/good.json +0 -375
- package/40-checker/results/fixtures/good.sarif +0 -274
- package/40-checker/results/flow/README.md +0 -19
- package/40-checker/results/flow/j3-j7-fixture.json +0 -51
- package/40-checker/results/flow/j5-j8-client-missing.json +0 -45
- package/40-checker/results/flow/j5-j8-good.json +0 -45
- package/40-checker/results/flow/journey-fixture-bundle.json +0 -90
- package/40-checker/results/flow/journey-fixture-j1-j2-j4-j6.json +0 -107
- package/40-checker/results/flow/real/DDDMUC__dsh-free-search.json +0 -297
- package/40-checker/results/flow/real/REPORT.md +0 -335
- package/40-checker/results/flow/real/YuJunZhiXue__dsh-purge.json +0 -317
- package/40-checker/results/flow/real/ci-diet.json +0 -351
- package/40-checker/results/flow/real/daily-log.json +0 -286
- package/40-checker/results/flow/real/index.json +0 -325
- package/40-checker/results/flow/real/project-memory.json +0 -290
- package/40-checker/results/flow/real/qiushi.json +0 -277
- package/40-checker/results/flow/real/status-rotator.json +0 -275
- package/40-checker/results/flow/real/telemetry.json +0 -178
- package/40-checker/results/flow/real/ui-auth.json +0 -288
- package/40-checker/results/flow/real/verification.json +0 -265
- package/40-checker/results/governance/co-maintainer-packet.md +0 -85
- package/40-checker/results/l1/ci-diet.json +0 -406
- package/40-checker/results/l1/npm-dsh-telemetry-redactor-0.1.0.json +0 -390
- package/40-checker/results/l1/npm-dsh-verification-receipt-0.1.0.json +0 -406
- package/40-checker/results/l1/npm-qiushi-dsh-evidence-audit-0.1.0.json +0 -394
- package/40-checker/results/l1/npm-zzerx-dsh-plugin-daily-log-0.4.3.json +0 -405
- package/40-checker/results/l1/project-memory.json +0 -402
- package/40-checker/results/l1/source-DDDMUC__dsh-free-search.json +0 -422
- package/40-checker/results/l1/source-Ebony-Vinyl__dsh-our-free-model.json +0 -421
- package/40-checker/results/l1/source-SeaOf0__dsh-redteam-model.json +0 -432
- package/40-checker/results/l1/source-YuJunZhiXue__dsh-purge.json +0 -473
- package/40-checker/results/l1/source-howmp__dsh-pentest.json +0 -402
- package/40-checker/results/l1/source-kingcharleslzy-ai__dsh-purge.json +0 -452
- package/40-checker/results/l1/source-liguobao__ds-harness-remote.json +0 -420
- package/40-checker/results/l1/source-mmparko__dsh-purge.json +0 -482
- package/40-checker/results/l1/source-shaobeichen__dsh-pocket.json +0 -404
- package/40-checker/results/l1/source-ysr666__dsh-vision-router.json +0 -384
- package/40-checker/results/l1/status-rotator.json +0 -403
- package/40-checker/results/l1/ui-auth.json +0 -429
- package/40-checker/results/l1/ysr666__dsh-vision-router.published.json +0 -384
- package/40-checker/results/lev3/REPORT.md +0 -342
- package/40-checker/results/lev3/lev3.json +0 -4835
- package/40-checker/results/lev6/REPORT.md +0 -460
- package/40-checker/results/lev6/capture-sample.json +0 -241
- package/40-checker/results/lev6/capture.jsonl +0 -4
- package/40-checker/results/lev6/lev6.json +0 -245
- package/40-checker/results/lev6/replication-r1.json +0 -245
- package/40-checker/results/levels/README.md +0 -16
- package/40-checker/results/levels/dsh-plugin-doctor.json +0 -141
- package/40-checker/results/levels/dsh-plugin-guide.json +0 -136
- package/40-checker/results/m1/dsh-ci-diet-0.5.2.json +0 -352
- package/40-checker/results/m1/dsh-status-rotator-0.38.0.json +0 -349
- package/40-checker/results/m1/dsh-telemetry-redactor-0.1.0.json +0 -336
- package/40-checker/results/m1/dsh-ui-auth-0.7.1.json +0 -356
- package/40-checker/results/m1/dsh-verification-receipt-0.1.0.json +0 -344
- package/40-checker/results/m1/index-level.json +0 -13
- package/40-checker/results/m1/levels.json +0 -72100
- package/40-checker/results/m1/qiushi-dsh-evidence-audit-0.1.0.json +0 -339
- package/40-checker/results/m1/yolk_vat-y-dsh-project-memory-0.6.7.json +0 -348
- package/40-checker/results/m1/zzerx-dsh-plugin-daily-log-0.4.3.json +0 -344
- package/40-checker/results/m2/dsh-ci-diet.json +0 -421
- package/40-checker/results/m2/dsh-ci-diet.unshare-landlock.json +0 -424
- package/40-checker/results/m2/dsh-ci-diet.unshare.json +0 -423
- package/40-checker/results/m2/fixture-bundle.image.json +0 -404
- package/40-checker/results/m2/fixture-bundle.json +0 -392
- package/40-checker/results/m2/fixture-bundle.landlock.json +0 -396
- package/40-checker/results/m2/fixture-bundle.unshare.json +0 -395
- package/40-checker/results/m2/fs-write.json +0 -338
- package/40-checker/results/m2/hang.json +0 -31
- package/40-checker/results/m2/hang.unshare-landlock.json +0 -34
- package/40-checker/results/m2/hang.unshare.json +0 -33
- package/40-checker/results/m2/project-memory.json +0 -417
- package/40-checker/results/m2/status-rotator.json +0 -418
- package/40-checker/results/m2/ui-auth.json +0 -444
- package/40-checker/results/negative/bad-entry.json +0 -345
- package/40-checker/results/negative/no-entry.json +0 -345
- package/40-checker/results/negative/no-patch.json +0 -344
- package/40-checker/results/negative/root-missing.json +0 -344
- package/40-checker/results/negative/root-missing.runtime.json +0 -30
- package/40-checker/results/negative/summary.json +0 -51
- package/40-checker/results/negative/workspace.json +0 -344
- package/40-checker/results/patched/Ebony-Vinyl__dsh-our-free-model.json +0 -334
- package/40-checker/results/patched/Ebony-Vinyl__dsh-our-free-model.overlay.json +0 -335
- package/40-checker/results/patched/SeaOf0__dsh-redteam-model.json +0 -315
- package/40-checker/results/patched/SeaOf0__dsh-redteam-model.overlay.json +0 -316
- package/40-checker/results/patched/mmparko__dsh-purge.json +0 -357
- package/40-checker/results/patched/mmparko__dsh-purge.overlay.json +0 -358
- package/40-checker/results/patched/shaobeichen__dsh-pocket.json +0 -315
- package/40-checker/results/patched/shaobeichen__dsh-pocket.overlay.json +0 -316
- package/40-checker/results/real/DDDMUC__dsh-free-search.json +0 -344
- package/40-checker/results/real/Ebony-Vinyl__dsh-our-free-model.json +0 -343
- package/40-checker/results/real/SeaOf0__dsh-redteam-model.json +0 -354
- package/40-checker/results/real/YuJunZhiXue__dsh-purge.json +0 -395
- package/40-checker/results/real/howmp__dsh-pentest.json +0 -324
- package/40-checker/results/real/kingcharleslzy-ai__dsh-purge.json +0 -374
- package/40-checker/results/real/liguobao__ds-harness-remote.json +0 -342
- package/40-checker/results/real/mmparko__dsh-purge.json +0 -404
- package/40-checker/results/real/shaobeichen__dsh-pocket.json +0 -326
- package/40-checker/results/real/ysr666__dsh-vision-router.json +0 -372
- package/40-checker/results/real/ysr666__dsh-vision-router.listing.json +0 -378
- package/40-checker/results/round-robin/compare.json +0 -52
- package/40-checker/results/round-robin/runner-a.json +0 -9
- package/40-checker/results/round-robin/runner-b.json +0 -9
- package/40-checker/results/sample20/123dbl__dsh-side-session.json +0 -344
- package/40-checker/results/sample20/173787247__dsh-wsl-dns.json +0 -360
- package/40-checker/results/sample20/863683348__dsh-insight.json +0 -375
- package/40-checker/results/sample20/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
- package/40-checker/results/sample20/Jamailar__beav-deepseek-harness.json +0 -341
- package/40-checker/results/sample20/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
- package/40-checker/results/sample20/NEAZ71eve__dsh-tool-github.json +0 -384
- package/40-checker/results/sample20/README.md +0 -3
- package/40-checker/results/sample20/RINGOLINK__dsh-desktop-shell.json +0 -352
- package/40-checker/results/sample20/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
- package/40-checker/results/sample20/agent-mobile__dsh-mobile-gateway.json +0 -353
- package/40-checker/results/sample20/fangqiing__dsh-knowledge-lite.json +0 -359
- package/40-checker/results/sample20/fzy0517__deepseek-harness-session-cleaner.json +0 -344
- package/40-checker/results/sample20/gjy1992__dsh-diagram.json +0 -350
- package/40-checker/results/sample20/mrme000m__dsh-prime-orchestrator.json +0 -414
- package/40-checker/results/sample20/redstonedust__dsh-solidworks-copilot.json +0 -362
- package/40-checker/results/sample20/summary.json +0 -234
- package/40-checker/results/sample20/w2112515__dsh-remote-host.json +0 -344
- package/40-checker/results/sample20/wkfedor__deepseek-harness-voice-input.json +0 -350
- package/40-checker/results/sample20/xfgil__dsh-hot-reloader.json +0 -344
- package/40-checker/results/sample20/yizhiyizhi0128__dsh-peak-scheduler.json +0 -360
- package/40-checker/results/sample20-ci/123dbl__dsh-side-session.json +0 -344
- package/40-checker/results/sample20-ci/173787247__dsh-wsl-dns.json +0 -360
- package/40-checker/results/sample20-ci/863683348__dsh-insight.json +0 -375
- package/40-checker/results/sample20-ci/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
- package/40-checker/results/sample20-ci/Jamailar__beav-deepseek-harness.json +0 -367
- package/40-checker/results/sample20-ci/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
- package/40-checker/results/sample20-ci/NEAZ71eve__dsh-tool-github.json +0 -392
- package/40-checker/results/sample20-ci/README.md +0 -5
- package/40-checker/results/sample20-ci/RINGOLINK__dsh-desktop-shell.json +0 -361
- package/40-checker/results/sample20-ci/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
- package/40-checker/results/sample20-ci/agent-mobile__dsh-mobile-gateway.json +0 -384
- package/40-checker/results/sample20-ci/fangqiing__dsh-knowledge-lite.json +0 -360
- package/40-checker/results/sample20-ci/fzy0517__deepseek-harness-session-cleaner.json +0 -354
- package/40-checker/results/sample20-ci/gjy1992__dsh-diagram.json +0 -381
- package/40-checker/results/sample20-ci/mrme000m__dsh-prime-orchestrator.json +0 -452
- package/40-checker/results/sample20-ci/redstonedust__dsh-solidworks-copilot.json +0 -371
- package/40-checker/results/sample20-ci/summary.json +0 -195
- package/40-checker/results/sample20-ci/w2112515__dsh-remote-host.json +0 -399
- package/40-checker/results/sample20-ci/wkfedor__deepseek-harness-voice-input.json +0 -358
- package/40-checker/results/sample20-ci/xfgil__dsh-hot-reloader.json +0 -344
- package/40-checker/results/sample20-ci/yizhiyizhi0128__dsh-peak-scheduler.json +0 -370
- package/40-checker/results/sample20-ci/zed1902209846-dotcom__DPwhale-plugin.json +0 -231
- package/40-checker/results/sample60/123dbl__dsh-side-session.json +0 -344
- package/40-checker/results/sample60/173787247__dsh-wsl-dns.json +0 -360
- package/40-checker/results/sample60/863683348__dsh-insight.json +0 -375
- package/40-checker/results/sample60/Anionex__dsh-turn-rewind.json +0 -349
- package/40-checker/results/sample60/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
- package/40-checker/results/sample60/Ebony-Vinyl__EAC-Pack.json +0 -352
- package/40-checker/results/sample60/EricWang1358__dsh-web-studyhub.json +0 -376
- package/40-checker/results/sample60/GanyuanRan__Aegis.json +0 -349
- package/40-checker/results/sample60/HiSeax__dsh-codely.json +0 -358
- package/40-checker/results/sample60/Jamailar__beav-deepseek-harness.json +0 -341
- package/40-checker/results/sample60/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
- package/40-checker/results/sample60/MichengAI__dsh-archive-manager.json +0 -357
- package/40-checker/results/sample60/MichengAI__dsh-im-connect.json +0 -347
- package/40-checker/results/sample60/MindLab-Research__dsh-generative-ui.json +0 -350
- package/40-checker/results/sample60/NEAZ71eve__dsh-tool-github.json +0 -384
- package/40-checker/results/sample60/README.md +0 -7
- package/40-checker/results/sample60/RINGOLINK__dsh-desktop-shell.json +0 -352
- package/40-checker/results/sample60/SeanTolstoyevski__dsh-code-review.json +0 -352
- package/40-checker/results/sample60/Tasihi89__dsh-talk-map.json +0 -344
- package/40-checker/results/sample60/Tyan66666__billion-context-dsh.json +0 -469
- package/40-checker/results/sample60/V1ki__dsh-plugin-subscriptions.json +0 -350
- package/40-checker/results/sample60/Yu-tao-Li__dsh-computer-use-win.json +0 -341
- package/40-checker/results/sample60/ZSeven-W__dsh-ios.json +0 -344
- package/40-checker/results/sample60/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
- package/40-checker/results/sample60/agent-mobile__dsh-mobile-gateway.json +0 -353
- package/40-checker/results/sample60/c3cvld7aag__fujiang-dsh.json +0 -361
- package/40-checker/results/sample60/cxzrdxy__dsh-file-explorer.json +0 -389
- package/40-checker/results/sample60/dhicoc__dsh-reverse-skill.json +0 -341
- package/40-checker/results/sample60/fangqiing__dsh-knowledge-lite.json +0 -359
- package/40-checker/results/sample60/fwerkor__local-shell-mcp.json +0 -369
- package/40-checker/results/sample60/fzy0517__deepseek-harness-session-cleaner.json +0 -344
- package/40-checker/results/sample60/gjy1992__dsh-diagram.json +0 -350
- package/40-checker/results/sample60/howmp__dsh-pentest.json +0 -341
- package/40-checker/results/sample60/linhay__harmony-next.skills.json +0 -344
- package/40-checker/results/sample60/liustack__modsearch.json +0 -371
- package/40-checker/results/sample60/mmparko__dsh-purge.json +0 -372
- package/40-checker/results/sample60/mrme000m__dsh-prime-orchestrator.json +0 -414
- package/40-checker/results/sample60/omdsh-dev__dsh_workflow.json +0 -439
- package/40-checker/results/sample60/redstonedust__dsh-solidworks-copilot.json +0 -362
- package/40-checker/results/sample60/seriousz158__dsh-memory.json +0 -350
- package/40-checker/results/sample60/shanliuling__dsh-image-gen.json +0 -353
- package/40-checker/results/sample60/shanliuling__skills-link.json +0 -344
- package/40-checker/results/sample60/shengsheng90__DSH-taskboard.json +0 -341
- package/40-checker/results/sample60/sjh9714__dsh-win32.json +0 -374
- package/40-checker/results/sample60/skymecode__deepseek-harness-for-vscode.json +0 -351
- package/40-checker/results/sample60/sopaco__terrain.json +0 -352
- package/40-checker/results/sample60/summary.json +0 -658
- package/40-checker/results/sample60/tinqiao-oss__engramory.json +0 -352
- package/40-checker/results/sample60/tong-io__tongflow.json +0 -359
- package/40-checker/results/sample60/vibeinging__dsh-desktop.json +0 -382
- package/40-checker/results/sample60/w2112515__dsh-remote-host.json +0 -344
- package/40-checker/results/sample60/wkfedor__deepseek-harness-voice-input.json +0 -350
- package/40-checker/results/sample60/wz20__dsh-dafeiyu-dot.json +0 -349
- package/40-checker/results/sample60/xfgil__dsh-hot-reloader.json +0 -344
- package/40-checker/results/sample60/yi-yezhiqiu__dsh-prompt-market.json +0 -360
- package/40-checker/results/sample60/yizhiyizhi0128__dsh-peak-scheduler.json +0 -360
- package/40-checker/results/sample60/yjh051108__dsh-routing-suite.json +0 -366
- package/40-checker/results/sample60-ci/123dbl__dsh-side-session.json +0 -344
- package/40-checker/results/sample60-ci/173787247__dsh-wsl-dns.json +0 -360
- package/40-checker/results/sample60-ci/863683348__dsh-insight.json +0 -375
- package/40-checker/results/sample60-ci/Anionex__dsh-turn-rewind.json +0 -379
- package/40-checker/results/sample60-ci/Ansellwan__DSH-Custom-Wallpaper.json +0 -344
- package/40-checker/results/sample60-ci/Ebony-Vinyl__EAC-Pack.json +0 -362
- package/40-checker/results/sample60-ci/EricWang1358__dsh-web-studyhub.json +0 -378
- package/40-checker/results/sample60-ci/GanyuanRan__Aegis.json +0 -349
- package/40-checker/results/sample60-ci/HiSeax__dsh-codely.json +0 -368
- package/40-checker/results/sample60-ci/Jamailar__beav-deepseek-harness.json +0 -367
- package/40-checker/results/sample60-ci/LiarMTTT__TavernWeave.json +0 -231
- package/40-checker/results/sample60-ci/ManoloRemiddi__DSH-Metafolder-Plugin.json +0 -344
- package/40-checker/results/sample60-ci/MichengAI__dsh-archive-manager.json +0 -395
- package/40-checker/results/sample60-ci/MichengAI__dsh-im-connect.json +0 -404
- package/40-checker/results/sample60-ci/MindLab-Research__dsh-generative-ui.json +0 -410
- package/40-checker/results/sample60-ci/NEAZ71eve__dsh-tool-github.json +0 -392
- package/40-checker/results/sample60-ci/README.md +0 -7
- package/40-checker/results/sample60-ci/RINGOLINK__dsh-desktop-shell.json +0 -361
- package/40-checker/results/sample60-ci/Ruler4396__dsh-launcher.json +0 -231
- package/40-checker/results/sample60-ci/SeanTolstoyevski__dsh-code-review.json +0 -363
- package/40-checker/results/sample60-ci/Tasihi89__dsh-talk-map.json +0 -372
- package/40-checker/results/sample60-ci/Tyan66666__billion-context-dsh.json +0 -469
- package/40-checker/results/sample60-ci/V1ki__dsh-plugin-subscriptions.json +0 -368
- package/40-checker/results/sample60-ci/Yu-tao-Li__dsh-computer-use-win.json +0 -349
- package/40-checker/results/sample60-ci/ZSeven-W__dsh-ios.json +0 -344
- package/40-checker/results/sample60-ci/Zxznb666__dsh-qoder-cn-subagent.json +0 -349
- package/40-checker/results/sample60-ci/agent-mobile__dsh-mobile-gateway.json +0 -384
- package/40-checker/results/sample60-ci/c3cvld7aag__fujiang-dsh.json +0 -361
- package/40-checker/results/sample60-ci/cxzrdxy__dsh-file-explorer.json +0 -399
- package/40-checker/results/sample60-ci/dhicoc__dsh-reverse-skill.json +0 -352
- package/40-checker/results/sample60-ci/fangqiing__dsh-knowledge-lite.json +0 -360
- package/40-checker/results/sample60-ci/fwerkor__local-shell-mcp.json +0 -387
- package/40-checker/results/sample60-ci/fzy0517__deepseek-harness-session-cleaner.json +0 -354
- package/40-checker/results/sample60-ci/gjy1992__dsh-diagram.json +0 -381
- package/40-checker/results/sample60-ci/howmp__dsh-pentest.json +0 -361
- package/40-checker/results/sample60-ci/linhay__harmony-next.skills.json +0 -344
- package/40-checker/results/sample60-ci/liustack__modsearch.json +0 -382
- package/40-checker/results/sample60-ci/mmparko__dsh-purge.json +0 -441
- package/40-checker/results/sample60-ci/mrme000m__dsh-prime-orchestrator.json +0 -452
- package/40-checker/results/sample60-ci/omdsh-dev__dsh_workflow.json +0 -439
- package/40-checker/results/sample60-ci/plastic-labs__honcho.json +0 -231
- package/40-checker/results/sample60-ci/redstonedust__dsh-solidworks-copilot.json +0 -371
- package/40-checker/results/sample60-ci/seriousz158__dsh-memory.json +0 -351
- package/40-checker/results/sample60-ci/shanliuling__dsh-image-gen.json +0 -382
- package/40-checker/results/sample60-ci/shanliuling__skills-link.json +0 -344
- package/40-checker/results/sample60-ci/shengsheng90__DSH-taskboard.json +0 -370
- package/40-checker/results/sample60-ci/sjh9714__dsh-win32.json +0 -410
- package/40-checker/results/sample60-ci/skymecode__deepseek-harness-for-vscode.json +0 -391
- package/40-checker/results/sample60-ci/sopaco__deepwiki-rs.json +0 -231
- package/40-checker/results/sample60-ci/sopaco__terrain.json +0 -352
- package/40-checker/results/sample60-ci/summary.json +0 -555
- package/40-checker/results/sample60-ci/tinqiao-oss__engramory.json +0 -362
- package/40-checker/results/sample60-ci/tong-io__tongflow.json +0 -393
- package/40-checker/results/sample60-ci/vibeinging__dsh-desktop.json +0 -555
- package/40-checker/results/sample60-ci/w2112515__dsh-remote-host.json +0 -399
- package/40-checker/results/sample60-ci/wkfedor__deepseek-harness-voice-input.json +0 -358
- package/40-checker/results/sample60-ci/wz20__dsh-dafeiyu-dot.json +0 -390
- package/40-checker/results/sample60-ci/xfgil__dsh-hot-reloader.json +0 -344
- package/40-checker/results/sample60-ci/yi-yezhiqiu__dsh-prompt-market.json +0 -373
- package/40-checker/results/sample60-ci/yizhiyizhi0128__dsh-peak-scheduler.json +0 -370
- package/40-checker/results/sample60-ci/yjh051108__dsh-routing-suite.json +0 -437
- package/40-checker/results/sample60-ci/zed1902209846-dotcom__DPwhale-plugin.json +0 -231
- package/40-checker/results/triage/REPORT.md +0 -317
- package/40-checker/results/triage/evidence/g2-rejections.txt +0 -63
- package/40-checker/results/triage/evidence/purge-baseline-0.2.1-rc.5.json +0 -51
- package/40-checker/results/triage/evidence/purge-baseline-0.2.2-alpha.2.json +0 -51
- package/40-checker/results/triage/evidence/purge-postinstall.txt +0 -62
- package/40-checker/results/triage/evidence/purge-with-profile-0.2.1-rc.5.json +0 -71
- package/40-checker/results/triage/evidence/purge-with-profile-0.2.2-alpha.2.json +0 -71
- package/40-checker/results/triage/evidence/semver-matrix.json +0 -32
- package/40-checker/results/triage/triage.json +0 -295
- package/40-checker/results/webapp/README.md +0 -10
- package/40-checker/results/webapp/summary.json +0 -46
- package/40-checker/results/webapp/web-auth.json +0 -19
- package/40-checker/results/webruntime/DDDMUC__dsh-free-search/client-export.json +0 -7
- package/40-checker/results/webruntime/DDDMUC__dsh-free-search/installed-package.json +0 -123
- package/40-checker/results/webruntime/DDDMUC__dsh-free-search/probe.json +0 -129
- package/40-checker/results/webruntime/DDDMUC__dsh-free-search/shot.png +0 -0
- package/40-checker/results/webruntime/DDDMUC__dsh-free-search/summary.md +0 -16
- package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/client-export.json +0 -7
- package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/installed-package.json +0 -76
- package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/probe.json +0 -129
- package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/shot.png +0 -0
- package/40-checker/results/webruntime/Ebony-Vinyl__dsh-our-free-model/summary.md +0 -16
- package/40-checker/results/webruntime/REPORT.md +0 -253
- package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/client-export.json +0 -7
- package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/installed-package.json +0 -97
- package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/probe.json +0 -129
- package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/shot.png +0 -0
- package/40-checker/results/webruntime/SeaOf0__dsh-redteam-model/summary.md +0 -16
- package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/client-export.json +0 -7
- package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/installed-package.json +0 -98
- package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/probe.json +0 -136
- package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/shot.png +0 -0
- package/40-checker/results/webruntime/YuJunZhiXue__dsh-purge/summary.md +0 -16
- package/40-checker/results/webruntime/ci-diet/client-export.json +0 -10
- package/40-checker/results/webruntime/ci-diet/installed-package.json +0 -100
- package/40-checker/results/webruntime/ci-diet/probe.json +0 -129
- package/40-checker/results/webruntime/ci-diet/shot.png +0 -0
- package/40-checker/results/webruntime/ci-diet/summary.md +0 -16
- package/40-checker/results/webruntime/daily-log/client-export.json +0 -10
- package/40-checker/results/webruntime/daily-log/installed-package.json +0 -113
- package/40-checker/results/webruntime/daily-log/probe.json +0 -129
- package/40-checker/results/webruntime/daily-log/shot.png +0 -0
- package/40-checker/results/webruntime/daily-log/summary.md +0 -16
- package/40-checker/results/webruntime/howmp__dsh-pentest/client-export.json +0 -7
- package/40-checker/results/webruntime/howmp__dsh-pentest/installed-package.json +0 -90
- package/40-checker/results/webruntime/howmp__dsh-pentest/probe.json +0 -129
- package/40-checker/results/webruntime/howmp__dsh-pentest/shot.png +0 -0
- package/40-checker/results/webruntime/howmp__dsh-pentest/summary.md +0 -16
- package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/client-export.json +0 -7
- package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/installed-package.json +0 -164
- package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/probe.json +0 -129
- package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/shot.png +0 -0
- package/40-checker/results/webruntime/kingcharleslzy-ai__dsh-purge/summary.md +0 -16
- package/40-checker/results/webruntime/liguobao__ds-harness-remote/client-export.json +0 -7
- package/40-checker/results/webruntime/liguobao__ds-harness-remote/installed-package.json +0 -166
- package/40-checker/results/webruntime/liguobao__ds-harness-remote/probe.json +0 -129
- package/40-checker/results/webruntime/liguobao__ds-harness-remote/shot.png +0 -0
- package/40-checker/results/webruntime/liguobao__ds-harness-remote/summary.md +0 -16
- package/40-checker/results/webruntime/local-pre-ci/README.md +0 -67
- package/40-checker/results/webruntime/local-pre-ci/client-exports.json +0 -158
- package/40-checker/results/webruntime/local-pre-ci/dsh-free-search.probe.json +0 -119
- package/40-checker/results/webruntime/local-pre-ci/dsh-pocket.probe.json +0 -119
- package/40-checker/results/webruntime/local-pre-ci/dsh-redteam-model.probe.json +0 -119
- package/40-checker/results/webruntime/local-pre-ci/qiushi-shell-only.probe.json +0 -104
- package/40-checker/results/webruntime/local-pre-ci/ui-auth-no-login.fail.json +0 -52
- package/40-checker/results/webruntime/local-pre-ci/ui-auth.probe.json +0 -123
- package/40-checker/results/webruntime/mmparko__dsh-purge/client-export.json +0 -7
- package/40-checker/results/webruntime/mmparko__dsh-purge/installed-package.json +0 -95
- package/40-checker/results/webruntime/mmparko__dsh-purge/probe.json +0 -136
- package/40-checker/results/webruntime/mmparko__dsh-purge/shot.png +0 -0
- package/40-checker/results/webruntime/mmparko__dsh-purge/summary.md +0 -16
- package/40-checker/results/webruntime/project-memory/client-export.json +0 -7
- package/40-checker/results/webruntime/project-memory/installed-package.json +0 -118
- package/40-checker/results/webruntime/project-memory/probe.json +0 -129
- package/40-checker/results/webruntime/project-memory/shot.png +0 -0
- package/40-checker/results/webruntime/project-memory/summary.md +0 -16
- package/40-checker/results/webruntime/qiushi/client-export.json +0 -7
- package/40-checker/results/webruntime/qiushi/installed-package.json +0 -84
- package/40-checker/results/webruntime/qiushi/probe.json +0 -114
- package/40-checker/results/webruntime/qiushi/shot.png +0 -0
- package/40-checker/results/webruntime/qiushi/summary.md +0 -16
- package/40-checker/results/webruntime/shaobeichen__dsh-pocket/client-export.json +0 -7
- package/40-checker/results/webruntime/shaobeichen__dsh-pocket/installed-package.json +0 -85
- package/40-checker/results/webruntime/shaobeichen__dsh-pocket/probe.json +0 -129
- package/40-checker/results/webruntime/shaobeichen__dsh-pocket/shot.png +0 -0
- package/40-checker/results/webruntime/shaobeichen__dsh-pocket/summary.md +0 -16
- package/40-checker/results/webruntime/status-rotator/client-export.json +0 -7
- package/40-checker/results/webruntime/status-rotator/installed-package.json +0 -107
- package/40-checker/results/webruntime/status-rotator/probe.json +0 -129
- package/40-checker/results/webruntime/status-rotator/shot.png +0 -0
- package/40-checker/results/webruntime/status-rotator/summary.md +0 -16
- package/40-checker/results/webruntime/summary.json +0 -323
- package/40-checker/results/webruntime/telemetry/probe.json +0 -20
- package/40-checker/results/webruntime/telemetry/summary.md +0 -4
- package/40-checker/results/webruntime/ui-auth/client-export.json +0 -7
- package/40-checker/results/webruntime/ui-auth/installed-package.json +0 -94
- package/40-checker/results/webruntime/ui-auth/probe.json +0 -129
- package/40-checker/results/webruntime/ui-auth/shot.png +0 -0
- package/40-checker/results/webruntime/ui-auth/summary.md +0 -16
- package/40-checker/results/webruntime/verification/probe.json +0 -20
- package/40-checker/results/webruntime/verification/summary.md +0 -4
- package/40-checker/results/webruntime/ysr666__dsh-vision-router/client-export.json +0 -7
- package/40-checker/results/webruntime/ysr666__dsh-vision-router/installed-package.json +0 -142
- package/40-checker/results/webruntime/ysr666__dsh-vision-router/probe.json +0 -129
- package/40-checker/results/webruntime/ysr666__dsh-vision-router/shot.png +0 -0
- package/40-checker/results/webruntime/ysr666__dsh-vision-router/summary.md +0 -16
package/40-checker/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> 版本:0.1.0 | 日期:2026-10-31 | 标准:DS-C v1.0.0 | 许可:Apache-2.0
|
|
4
4
|
> 零依赖,Node ≥ 20。只读目标包;不修改被检对象。
|
|
5
5
|
>
|
|
6
|
-
>
|
|
6
|
+
> **发行方式**:本仓直接运行时用 `node 40-checker/bin/...`;npm 上通过 `dsh-standards` 包分发(提供 `dsh-standards` 与 `dsh-levels` 两个命令)。不要用 `npx dsh-plugin-verify`、`npx dsh-levels`——npm 上这两个名字属于其他项目。
|
|
7
7
|
|
|
8
8
|
## 1. 它做什么
|
|
9
9
|
|
|
@@ -50,7 +50,7 @@ node bin/dsh-plugin-verify.mjs /path/to/plugin --format sarif --out report.sarif
|
|
|
50
50
|
# package:作者本地
|
|
51
51
|
node bin/dsh-plugin-verify.mjs ./my-plugin
|
|
52
52
|
|
|
53
|
-
# listing
|
|
53
|
+
# listing:市场条目校验(收录前提醒,不是门禁)
|
|
54
54
|
node bin/dsh-plugin-verify.mjs ./my-plugin \
|
|
55
55
|
--profile listing \
|
|
56
56
|
--market-index ./market.json \
|
package/40-checker/src/cli.mjs
CHANGED
|
@@ -13,7 +13,7 @@ const DEFAULT_COMMIT = 'ce7073d51254c26cd63b22a60835b8f948deb447'
|
|
|
13
13
|
const DEFAULT_CORDIS = '4.0.6-alpha.1'
|
|
14
14
|
|
|
15
15
|
function usage() {
|
|
16
|
-
return
|
|
16
|
+
return `${process.env.DSH_CHECKER_BRAND || 'dsh-plugin-verify ' + VERSION} — DS-C conformance checker (MVP)
|
|
17
17
|
|
|
18
18
|
Usage:
|
|
19
19
|
dsh-plugin-verify <package-dir> [options]
|
|
@@ -31,6 +31,19 @@ function inside(root, target) {
|
|
|
31
31
|
export function resolveEntry(dir, manifest) {
|
|
32
32
|
const candidates = []
|
|
33
33
|
const exportTarget = rootExportTarget(manifest)
|
|
34
|
+
if (exportTarget) {
|
|
35
|
+
const absolute = path.resolve(dir, exportTarget)
|
|
36
|
+
if (!inside(dir, absolute)) {
|
|
37
|
+
return { exists: false, escape: true, source: 'exports["."]', target: exportTarget, absolute }
|
|
38
|
+
}
|
|
39
|
+
if (!isFile(absolute)) {
|
|
40
|
+
const sourceCandidates = ['src/index.ts', 'src/index.tsx', 'src/index.js', 'src/index.mjs']
|
|
41
|
+
const sourceEntry = sourceCandidates.find(relative => isFile(path.join(dir, relative))) ?? null
|
|
42
|
+
const scripts = isObject(manifest.scripts) ? manifest.scripts : {}
|
|
43
|
+
const buildHint = Boolean(sourceEntry) || ['build', 'prepare', 'compile'].some(name => typeof scripts[name] === 'string')
|
|
44
|
+
return { exists: false, escape: false, source: 'exports["."]', target: exportTarget, absolute, declaredMissing: true, sourceEntry, buildHint }
|
|
45
|
+
}
|
|
46
|
+
}
|
|
34
47
|
if (exportTarget) candidates.push({ source: 'exports["."]', target: exportTarget })
|
|
35
48
|
if (typeof manifest.main === 'string' && manifest.main.trim() !== '') candidates.push({ source: 'main', target: manifest.main })
|
|
36
49
|
for (const fallback of ['index.js', 'index.mjs', 'index.cjs', 'index.ts']) candidates.push({ source: 'fallback', target: fallback })
|
|
@@ -183,6 +196,10 @@ export function runManifestChecks(dir, options = {}) {
|
|
|
183
196
|
}
|
|
184
197
|
if (entry.escape) {
|
|
185
198
|
manifestDetails.push(detail('C-1.2', 'FAIL', `entry escapes the package: ${entry.target}`, ['package.json#exports']))
|
|
199
|
+
} else if (entry.declaredMissing && entry.buildHint) {
|
|
200
|
+
manifestDetails.push(detail('C-1.2', 'WARN', `exports["."] target missing; build hint exists (${entry.sourceEntry ?? 'build script'})`, ['package.json#exports']))
|
|
201
|
+
} else if (entry.declaredMissing) {
|
|
202
|
+
manifestDetails.push(detail('C-1.2', 'FAIL', `exports["."] points to a missing file: ${entry.target}`, ['package.json#exports']))
|
|
186
203
|
} else if (entry.exists) {
|
|
187
204
|
manifestDetails.push(detail('C-1.2', 'PASS', `entry resolves via ${entry.source}: ${entry.relative}`, [entry.relative]))
|
|
188
205
|
} else if (entry.buildHint) {
|
|
@@ -63,19 +63,85 @@ function upperForTilde(version) {
|
|
|
63
63
|
return { ...version, minor: version.minor + 1, patch: 0, prerelease: [] }
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
function
|
|
67
|
-
const
|
|
66
|
+
function parsePartial(text) {
|
|
67
|
+
const match = /^v?(\d+)(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?$/.exec(text.trim())
|
|
68
|
+
if (!match) return null
|
|
69
|
+
return {
|
|
70
|
+
major: Number(match[1]),
|
|
71
|
+
minor: match[2] === undefined || /[xX*]/.test(match[2]) ? null : Number(match[2]),
|
|
72
|
+
patch: match[3] === undefined || /[xX*]/.test(match[3]) ? null : Number(match[3]),
|
|
73
|
+
prerelease: match[4] ? match[4].split('.') : [],
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
function fullVersion(partial) {
|
|
78
|
+
return { major: partial.major, minor: partial.minor ?? 0, patch: partial.patch ?? 0, prerelease: partial.prerelease }
|
|
79
|
+
}
|
|
80
|
+
function nextMinor(partial) { return { major: partial.major, minor: (partial.minor ?? 0) + 1, patch: 0, prerelease: [] } }
|
|
81
|
+
function nextMajor(partial) { return { major: partial.major + 1, minor: 0, patch: 0, prerelease: [] } }
|
|
82
|
+
function fmt(version) {
|
|
83
|
+
const base = `${version.major}.${version.minor}.${version.patch}`
|
|
84
|
+
return version.prerelease && version.prerelease.length ? `${base}-${version.prerelease.join('.')}` : base
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function expandToken(raw) {
|
|
88
|
+
if (raw === '*' || raw === 'x' || raw === 'X') return '*'
|
|
89
|
+
const match = /^(>=|<=|>|<|=|\^|~)?\s*v?(\d+)(?:\.(\d+|[xX*]))?(?:\.(\d+|[xX*]))?(?:-([0-9A-Za-z.-]+))?$/.exec(raw)
|
|
90
|
+
if (!match) return null
|
|
91
|
+
const op = match[1] ?? '='
|
|
92
|
+
const partial = {
|
|
93
|
+
major: Number(match[2]),
|
|
94
|
+
minor: match[3] === undefined || /[xX*]/.test(match[3]) ? null : Number(match[3]),
|
|
95
|
+
patch: match[4] === undefined || /[xX*]/.test(match[4]) ? null : Number(match[4]),
|
|
96
|
+
prerelease: match[5] ? match[5].split('.') : [],
|
|
97
|
+
}
|
|
98
|
+
const low = fullVersion(partial)
|
|
99
|
+
const noMinor = partial.minor === null
|
|
100
|
+
const noPatch = partial.patch === null
|
|
101
|
+
if (!noMinor && !noPatch) return `${op}${fmt(low)}`
|
|
102
|
+
switch (op) {
|
|
103
|
+
case '^':
|
|
104
|
+
case '~':
|
|
105
|
+
case '=':
|
|
106
|
+
return noMinor ? `>=${fmt(low)} <${fmt(nextMajor(partial))}` : `>=${fmt(low)} <${fmt(nextMinor(partial))}`
|
|
107
|
+
case '>=': return `>=${fmt(low)}`
|
|
108
|
+
case '>': return noMinor ? `>=${fmt(nextMajor(partial))}` : `>=${fmt(nextMinor(partial))}`
|
|
109
|
+
case '<': return `<${fmt(low)}`
|
|
110
|
+
case '<=': return noMinor ? `<${fmt(nextMajor(partial))}` : `<${fmt(nextMinor(partial))}`
|
|
111
|
+
default: return null
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/** Hyphen ranges and x-ranges are normalized before tokenizing. */
|
|
116
|
+
function expandAlternative(alternative) {
|
|
68
117
|
const text = alternative.trim()
|
|
69
|
-
if (text === '' || text === '*' || text === 'x' || text === 'X') return
|
|
70
|
-
|
|
71
|
-
|
|
118
|
+
if (text === '' || text === '*' || text === 'x' || text === 'X') return '*'
|
|
119
|
+
const hyphen = /^(.+?)\s+-\s+(.+)$/.exec(text)
|
|
120
|
+
if (hyphen) {
|
|
121
|
+
const left = parsePartial(hyphen[1])
|
|
122
|
+
const right = parsePartial(hyphen[2])
|
|
123
|
+
if (!left || !right) return null
|
|
124
|
+
const low = `>=${fmt(fullVersion(left))}`
|
|
125
|
+
if (right.minor === null) return `${low} <${fmt(nextMajor(right))}`
|
|
126
|
+
if (right.patch === null) return `${low} <${fmt(nextMinor(right))}`
|
|
127
|
+
return `${low} <=${fmt(fullVersion(right))}`
|
|
128
|
+
}
|
|
129
|
+
const parts = []
|
|
72
130
|
for (const raw of text.split(/\s+/)) {
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
131
|
+
const expanded = expandToken(raw)
|
|
132
|
+
if (expanded === null) return null
|
|
133
|
+
parts.push(expanded)
|
|
134
|
+
}
|
|
135
|
+
return parts.join(' ')
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
function tokenizeAlternative(alternative) {
|
|
139
|
+
const expanded = expandAlternative(alternative)
|
|
140
|
+
if (expanded === null) return null
|
|
141
|
+
if (expanded === '*') return [{ op: '*', version: null }]
|
|
142
|
+
const tokens = []
|
|
143
|
+
for (const raw of expanded.split(/\s+/)) {
|
|
144
|
+
const match = /^(>=|<=|>|<|=|\^|~)?\s*v?(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?)$/.exec(raw)
|
|
79
145
|
if (!match) return null
|
|
80
146
|
const op = match[1] ?? '='
|
|
81
147
|
const version = parseVersion(match[2])
|
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
## 1.0.1 — 2026-11-03
|
|
2
|
+
|
|
3
|
+
- 打包:`files` 收窄,不再把 `40-checker/results/` 打进 npm 包(此前包含第三方插件结果、截图与本机路径)。
|
|
4
|
+
- 文档:`npx dsh-levels` 会装到第三方包,改为 `npx -p dsh-standards dsh-levels`;修正不存在的 `bin/` 路径;测试数 73→98。
|
|
5
|
+
- CLI:`dsh-standards --help` 首行显示自己的包名与版本。
|
|
6
|
+
- 检查器:`exports["."]` 指向缺失文件时不再回退到 `main`。
|
|
7
|
+
|
|
8
|
+
# Changelog
|
|
9
|
+
|
|
10
|
+
## 2026-11-03 — Node 24.9 baseline
|
|
11
|
+
- Require Node >=24.9.0 to match DeepSeek Harness 0.2.2-alpha.3.
|
|
12
|
+
|
|
13
|
+
## 2026-11-02 — P0–P2, Apache-2.0, and attestation migration
|
|
14
|
+
|
|
15
|
+
- Renamed certificate → attestation (`dsh-attestation/1`, `DSH-ATT-*`,
|
|
16
|
+
`publish/attestations/`); historical docs carry a migration banner.
|
|
17
|
+
- Added the gap ledger (43), role governance (44), and three-purpose kits (45).
|
|
18
|
+
- Added `scheme/`, `spec/clauses.json`, `spec/reference-suite.json`,
|
|
19
|
+
`spec/schemas/report.schema.json`, `evidence/` hash chain.
|
|
20
|
+
- Added G4 static check, clause-map, stale-check, surveillance, dashboard.
|
|
21
|
+
- Added developer/official/market kits and `publish/verify.mjs` / `verify.html`.
|
|
22
|
+
- CI: governance checks, 73 tests, attestation verify, shell syntax, cross-platform matrix.
|
|
23
|
+
- License: text CC BY 4.0 with a required Change Notice; code Apache-2.0 (D-013); marks separate.
|
|
24
|
+
- Cross-repo: portal `f882144`, guide `e75cd9f`, kit `9897213`, catalog `a272d06`, certification `2f27666`, cert-mcp `4f0cf72`.
|
package/NOTICE
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
DSH standards
|
|
2
|
+
Copyright 2026 PerryLink
|
|
3
|
+
|
|
4
|
+
Text/specifications/documentation: CC BY 4.0 (LICENSE-CC-BY).
|
|
5
|
+
Modifications must carry a prominent Change Notice (MODIFICATION-POLICY.md).
|
|
6
|
+
Code/scripts/schemas: Apache License 2.0 (LICENSE-APACHE).
|
|
7
|
+
|
|
8
|
+
Unless required by applicable law or agreed to in writing, software is
|
|
9
|
+
distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND.
|
|
10
|
+
See the applicable license for the specific language.
|
|
11
|
+
|
|
12
|
+
The words DSH-ENTRY, DSH-FLOW, DSH-BOOST and the level badges are not licensed
|
|
13
|
+
by either license. Their use is governed by governance/mark-policy.md.
|
|
14
|
+
No trademark registration is claimed.
|
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
|
|
18
18
|
| 层 | 规范/实践 | 当前状态 |
|
|
19
19
|
|---|---|---|
|
|
20
|
-
| 1 | **DSH-ENTRY 入门规范** | 18/18 `recognized`;base-only 10/18
|
|
20
|
+
| 1 | **DSH-ENTRY 入门规范** | 18/18 `recognized`;base-only 10/18 有 runtime 证据(8 clean + 2 reject);real web profile 16/18 无告警、2 个 host-gate reject(自评,无独立复核);client 15/15 loaded;18/18 clean 未达成 |
|
|
21
21
|
| 2 | **DSH-FLOW 顺畅规范** | draft;fixture 上 J1/J2/J4/J6 **12 PASS**;J3/J7 fixture runtime;J5/J8 static preflight;10 个真实包 **78 PASS / 4 FAIL / 2 blocked / 66 not-run** |
|
|
22
22
|
| 3 | **DSH-BOOST 加速实践** | draft;LEV-1–8 **8/8 measured**(loader / context / provider-capture / synthetic timer;非生产基线) |
|
|
23
23
|
|
|
@@ -57,21 +57,21 @@
|
|
|
57
57
|
```bash
|
|
58
58
|
# Published umbrella (package `dsh-standards`)
|
|
59
59
|
npx dsh-standards <plugin-dir> --scope entry --entry-claim static
|
|
60
|
-
npx dsh-levels
|
|
60
|
+
npx -p dsh-standards dsh-levels <dir> --format json
|
|
61
61
|
|
|
62
62
|
# From a source checkout
|
|
63
63
|
cd 40-checker
|
|
64
64
|
node --test test/*.test.mjs
|
|
65
65
|
|
|
66
66
|
# 只做结构识别(不声明运行)
|
|
67
|
-
node bin/dsh-plugin-verify.mjs <plugin-dir> --scope entry --entry-claim static
|
|
67
|
+
node 40-checker/bin/dsh-plugin-verify.mjs <plugin-dir> --scope entry --entry-claim static
|
|
68
68
|
|
|
69
69
|
# 声明运行(bundle 需要 host)
|
|
70
|
-
node bin/dsh-plugin-verify.mjs <bundle-dir> --scope entry \
|
|
70
|
+
node 40-checker/bin/dsh-plugin-verify.mjs <bundle-dir> --scope entry \
|
|
71
71
|
--host /path/to/@deepseek-ai/dsh-app-boot/lib/index.js
|
|
72
72
|
|
|
73
73
|
# 三层自检(ENTRY 自动;FLOW/BOOST 证据文件)
|
|
74
|
-
node bin/dsh-levels.mjs
|
|
74
|
+
node bin/dsh-levels.mjs <dir> --format json
|
|
75
75
|
|
|
76
76
|
# J1 安装/卸载旅程
|
|
77
77
|
node scripts/journey-runtime.mjs --package <dir> --json
|
|
@@ -95,7 +95,7 @@ node lev7-bench.mjs 64 20
|
|
|
95
95
|
- 18 包 base-only runtime:**18/18 有原始 JSON;10/18 G3 verified,8 partial,0 error**;host gate 后 **8 clean + 2 reject + 8 partial**;
|
|
96
96
|
- client runtime:**15/15 `client-module-loaded`**(真实 Chromium);web-app **4/4 loaded**;
|
|
97
97
|
- 不可用:**0 plugin code FAIL;2 host-gate reject(telemetry/verification)**;
|
|
98
|
-
- 检查器:**
|
|
98
|
+
- 检查器:**98/98 tests**(含治理/DCO/评价记录/声明/验真/链/漂移测试);
|
|
99
99
|
- J1:**6 PASS + 1 WARN**;LEV-3:volatile **0/20** vs control **20/20** remount;LEV-6:稳定 prefix **100%** vs 易变 **0%**;LEV-7:**8.24×**(合成,非生产基线)。
|
|
100
100
|
|
|
101
101
|
## 给插件开发者:什么时候用哪个工具
|
package/bin/dsh-standards.mjs
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-standards",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "DSH plugin standards and conformance checks: ENTRY/FLOW checks plus BOOST guidance. Non-official; no certification or ranking.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "40-checker/src/index.mjs",
|
|
@@ -13,22 +13,31 @@
|
|
|
13
13
|
"dsh-levels": "./bin/dsh-levels.mjs"
|
|
14
14
|
},
|
|
15
15
|
"files": [
|
|
16
|
-
"
|
|
16
|
+
"bin",
|
|
17
|
+
"40-checker/bin",
|
|
18
|
+
"40-checker/src",
|
|
19
|
+
"40-checker/scripts",
|
|
20
|
+
"40-checker/samples",
|
|
21
|
+
"40-checker/fixtures",
|
|
22
|
+
"40-checker/test",
|
|
23
|
+
"40-checker/package.json",
|
|
24
|
+
"40-checker/README.md",
|
|
17
25
|
"spec",
|
|
18
26
|
"docs",
|
|
19
|
-
"bin",
|
|
20
27
|
"README.md",
|
|
28
|
+
"CHANGELOG.md",
|
|
21
29
|
"LICENSE",
|
|
22
30
|
"LICENSE-APACHE",
|
|
23
31
|
"LICENSE-CC-BY",
|
|
24
|
-
"NOTICE.md"
|
|
32
|
+
"NOTICE.md",
|
|
33
|
+
"NOTICE"
|
|
25
34
|
],
|
|
26
35
|
"scripts": {
|
|
27
36
|
"test": "node --test 40-checker/test/*.test.mjs",
|
|
28
37
|
"test:fixtures": "node bin/dsh-standards.mjs 40-checker/fixtures/good --scope entry --entry-claim static --format text"
|
|
29
38
|
},
|
|
30
39
|
"engines": {
|
|
31
|
-
"node": ">=
|
|
40
|
+
"node": ">=24.9.0"
|
|
32
41
|
},
|
|
33
42
|
"keywords": [
|
|
34
43
|
"dsh",
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
name: plugin-verify
|
|
2
|
-
on:
|
|
3
|
-
push:
|
|
4
|
-
pull_request:
|
|
5
|
-
workflow_dispatch:
|
|
6
|
-
jobs:
|
|
7
|
-
l0:
|
|
8
|
-
runs-on: ubuntu-latest
|
|
9
|
-
steps:
|
|
10
|
-
- uses: actions/checkout@v4
|
|
11
|
-
- uses: actions/setup-node@v4
|
|
12
|
-
with:
|
|
13
|
-
node-version: 22
|
|
14
|
-
- name: unit tests
|
|
15
|
-
run: node --test
|
|
16
|
-
- name: good fixture (static-only M1; expect 0)
|
|
17
|
-
run: |
|
|
18
|
-
node bin/dsh-plugin-verify.mjs fixtures/good \
|
|
19
|
-
--static-only \
|
|
20
|
-
--market-index fixtures/market-index.json \
|
|
21
|
-
--plugin-name @dsh-fixtures/good-plugin \
|
|
22
|
-
--format json --out /tmp/good.json
|
|
23
|
-
- name: bad fixture (expect 1; 0 would be a false green)
|
|
24
|
-
run: |
|
|
25
|
-
set +e
|
|
26
|
-
node bin/dsh-plugin-verify.mjs fixtures/bad --format json --out /tmp/bad.json
|
|
27
|
-
code=$?
|
|
28
|
-
test "$code" -eq 1
|
|
29
|
-
- name: SARIF smoke
|
|
30
|
-
run: |
|
|
31
|
-
node bin/dsh-plugin-verify.mjs fixtures/good \
|
|
32
|
-
--static-only \
|
|
33
|
-
--market-index fixtures/market-index.json \
|
|
34
|
-
--plugin-name @dsh-fixtures/good-plugin \
|
|
35
|
-
--format sarif --out /tmp/good.sarif
|
|
36
|
-
- uses: actions/upload-artifact@v4
|
|
37
|
-
with:
|
|
38
|
-
name: reports
|
|
39
|
-
path: |
|
|
40
|
-
/tmp/good.json
|
|
41
|
-
/tmp/bad.json
|
|
42
|
-
/tmp/good.sarif
|
|
43
|
-
|
|
44
|
-
l1-manual:
|
|
45
|
-
if: github.event_name == 'workflow_dispatch'
|
|
46
|
-
runs-on: ubuntu-latest
|
|
47
|
-
steps:
|
|
48
|
-
- uses: actions/checkout@v4
|
|
49
|
-
- uses: actions/setup-node@v4
|
|
50
|
-
with:
|
|
51
|
-
node-version: 22
|
|
52
|
-
- name: build host farm (requires a DSH checkout at DSH_HOST)
|
|
53
|
-
env:
|
|
54
|
-
DSH_HOST: ${{ vars.DSH_HOST }}
|
|
55
|
-
run: |
|
|
56
|
-
test -n "$DSH_HOST"
|
|
57
|
-
node scripts/host-farm.mjs --plugin fixtures/bundle --farm /tmp/farm --link --quiet
|
|
58
|
-
- name: L1 on bundle fixture
|
|
59
|
-
env:
|
|
60
|
-
DSH_HOST: ${{ vars.DSH_HOST }}
|
|
61
|
-
run: |
|
|
62
|
-
node bin/dsh-plugin-verify.mjs /tmp/farm/plugins/bundle \
|
|
63
|
-
--treat-as-plugin \
|
|
64
|
-
--runtime "$DSH_HOST/vendor/cordis/lib/index.js" \
|
|
65
|
-
--runtime-version 0.2.2-alpha.2 \
|
|
66
|
-
--format json --out /tmp/l1.json
|
|
67
|
-
- uses: actions/upload-artifact@v4
|
|
68
|
-
with:
|
|
69
|
-
name: l1-report
|
|
70
|
-
path: /tmp/l1.json
|