{ "name": "dsh-mask", "description": "PII masking middleware for DeepSeek Harness: anonymize names, phones, emails, ID cards, bank cards, keys, and addresses to placeholders before they reach the model, restore them at the display layer, keep the restore table only in memory and a controlled storage domain, never log plaintext, and expose /mask and the mask_test tool", "version": "0.2.8", "repository": { "type": "git", "url": "git+https://github.com/PerryLink/dsh-mask.git" }, "homepage": "https://github.com/PerryLink/dsh-mask#readme", "bugs": { "url": "https://github.com/PerryLink/dsh-mask/issues" }, "author": "PerryLink", "type": "module", "main": "./index.mjs", "types": "./types.d.ts", "exports": { ".": { "types": "./types.d.ts", "default": "./index.mjs" }, "./cordis.patch.yml": "./cordis.patch.yml", "./package.json": "./package.json" }, "files": [ "index.mjs", "types.d.ts", "lib", "cordis.patch.yml", "README.md", "README.zh.md", "README.es.md", "README.pt.md", "README.hi.md", "ARCHITECTURE.md", "CHANGELOG.md", "SECURITY.md", "LICENSE", "THIRD_PARTY_NOTICES.md" ], "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, "dshWorkshop": { "schema": "omdsh-workshop-package/v1", "type": "plugin", "integration": { "protocol": "harness-profile", "artifact": "cordis.patch.yml" }, "install": { "mode": "transactional", "adapter": "profile-bundle", "failurePolicy": "generation-rollback", "touchesCurrentBeforeActivation": false }, "lifecycle": { "activation": "restart-profile", "dispose": "supported" }, "permissions": [ "filesystem:read", "storage-domain:read", "storage-domain:write", "session-log:read", "credentials:none", "network:none" ], "compatibility": { "dshVersions": ["0.1.2-rc.1","0.1.5-rc.1"] }, "capability": { "id": "mask", "kind": "command", "invocation": "/mask status", "expected": "the /mask command is registered on the commands service: status reports masked counts and type distribution, on/off toggles masking at runtime, restore unmaps placeholders back to the values stored for this session; mask_test tool masks a snippet and reports the placeholder result" }, "evidence": { "install": null, "failureIsolation": null, "hotReload": null, "remove": null } }, "peerDependencies": { "@deepseek-ai/cordis": "^4.0.2", "@deepseek-ai/dsh-commands": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", "@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", "@deepseek-ai/dsh-storage": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", "@deepseek-ai/dsh-storage-domain": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", "@deepseek-ai/dsh-storage-json": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", "@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0", "@deepseek-ai/schemastery": "^3.18.2" }, "dependencies": { "zod": "^4.4.3" }, "devDependencies": { "@deepseek-ai/dsh-attachment": "0.1.5-rc.1", "@deepseek-ai/cordis": "^4.0.2", "@deepseek-ai/cordis-plugin-include": "^1.0.7", "@deepseek-ai/cordis-plugin-loader": "^1.0.3", "@deepseek-ai/dsh-agent": "0.1.5-rc.1", "@deepseek-ai/dsh-commands": "0.1.5-rc.1", "@deepseek-ai/dsh-session": "0.1.5-rc.1", "@deepseek-ai/dsh-storage": "0.1.5-rc.1", "@deepseek-ai/dsh-storage-domain": "0.1.5-rc.1", "@deepseek-ai/dsh-storage-json": "0.1.5-rc.1", "@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1", "@deepseek-ai/dsh-tools": "0.1.5-rc.1", "@deepseek-ai/schemastery": "^3.18.2", "@types/node": "^22.19.0", "oxlint": "0.18.1", "typescript": "^5.9.0" }, "scripts": { "typecheck": "tsc -p tsconfig.check.json", "typecheck:ci": "tsc -p tsconfig.check.json", "test": "node --test \"test/*.test.mjs\"", "coverage": "node --test --experimental-test-coverage \"test/*.test.mjs\"", "lint": "oxlint", "verify:self-contained": "node scripts/verify-self-contained.mjs", "verify:artifacts": "node scripts/verify-artifacts.mjs", "check:readmes": "node scripts/verify-readmes.mjs" }, "keywords": [ "dsh", "dsh-plugin", "deepseek-harness", "deepseek", "cordis", "pii", "mask", "privacy", "anonymization", "security" ], "engines": { "node": "^22.19.0 || >=24.0.0" }, "packageManager": "pnpm@11.7.0", "publishConfig": { "access": "public" }, "license": "Apache-2.0", "funding": { "type": "individual", "url": "https://github.com/sponsors/PerryLink" } }