{"_id":"dsh-auth-gate","_rev":"33-f0a1a0ea82365cc0aecbf3b302216304","name":"dsh-auth-gate","dist-tags":{"latest":"0.16.0"},"versions":{"1.0.0":{"name":"dsh-auth-gate","version":"1.0.0","license":"UNLICENSED","_id":"dsh-auth-gate@1.0.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth","bugs":{"url":"https://github.com/TecFancy/dsh-auth/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dist":{"shasum":"3de910af58046d70cec65a0c47725775b4fcd0a6","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-1.0.0.tgz","fileCount":75,"integrity":"sha512-7lWfIUl377mDTA9Dnan8sasN6Spj8wgNNJVnqHMPKzFUC/eg0lSorcacUBInzJ1G8uuUXjL406EB7HP6yvu92Q==","signatures":[{"sig":"MEYCIQDTFO8qx9Eu5GaUx+TdGOeNJoU95xnAP8QAhqltj5QWKQIhAI2jrHiSsU/x92u/6ASFgwqTXkSBA8Ingnk0wWgRapGK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148880},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"d4e3fb149b4af95f4aa0c49799d06f6d46adc595","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"deprecated":"superseded by 0.1.0 (aligned with dsh 0.x ecosystem)","repository":{"url":"git+https://github.com/TecFancy/dsh-auth.git","type":"git"},"_npmVersion":"11.8.0","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_1.0.0_1786776124818_0.6317722905386898","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"dsh-auth-gate","version":"0.1.0","license":"UNLICENSED","_id":"dsh-auth-gate@0.1.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth","bugs":{"url":"https://github.com/TecFancy/dsh-auth/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dist":{"shasum":"a0a0169b78def2f0b09ceaba50f8692b60a594b4","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.1.0.tgz","fileCount":75,"integrity":"sha512-J04oKjl7koyx0PmzpioqqIY5GCuT2KCHAfvTB9h63mT1UyYbUjzmD5n/h20yZ3kJ/vcCNHzaqSxfurfqLOy1/w==","signatures":[{"sig":"MEYCIQDtx7NId8W5BMLmNbccp4bifJNZubcu+j4ebx1HV+T8wAIhAOhrmNOmQ3zi0Kj12bJk+F1BDYIPQcRXApEF2myaf0m0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":148880},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"8e0e836a58d3a5677614df7debbebc25df2af068","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth.git","type":"git"},"_npmVersion":"11.8.0","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.1.0_1786788565729_0.8549029017308329","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"dsh-auth-gate","version":"0.1.2","license":"MIT","_id":"dsh-auth-gate@0.1.2","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dist":{"shasum":"cdc36c1a42d709e543bb3c26e6d1e318db01f280","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.1.2.tgz","fileCount":79,"integrity":"sha512-l+ajb5P5GqNciQXZwHMnETkMxnB9sdKA14owWIB9Yk0p4frAb+hfKu+80InuE7mL/8y2G0L9AXqP/IQjobiRVg==","signatures":[{"sig":"MEUCIQCJOmL/+Xk0CzqT2JhfJW3ux251Znf7lCibY/CLD63aQAIgIzgBEOo9NgXJ3Ijn7JgMhriAPlvYEItu7wn7PiPKwJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":262315},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"1fb7adf1aa8f828ebf5bd9582cb28a74e4aece8e","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.1.2_1786792068877_0.020932794099566276","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"dsh-auth-gate","version":"0.2.0","license":"MIT","_id":"dsh-auth-gate@0.2.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dist":{"shasum":"6ebcd5d2d632c323aebb1eda69d01000ba72b552","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.2.0.tgz","fileCount":79,"integrity":"sha512-1VPPK2qb+mNKjPTg0Djhov8N7sT6PAoyMkKaBxOMcJIGpCb8LbmP9jiIEapRQZCgjiLsdsN3VZcOZkqiRhkoew==","signatures":[{"sig":"MEQCIEYlYOLfmAsJxJkOYV7X2S1yjs4W2CZ4i+DlGO5ag2gMAiAqNq/XxbGXL+NryO8HA4x5GC59vfXLIAIVYOKIzINjUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284274},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"bc03d54e9406ca9e75589bf37ef9a838d5df5bf1","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.2.0_1786796657845_0.1855111357628898","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"dsh-auth-gate","version":"0.3.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.3.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dist":{"shasum":"1e1ce6c4e6baea98ae819dda663c30df11ea3948","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.3.0.tgz","fileCount":79,"integrity":"sha512-+22svPAo3L9Q1pK2+8SJPF1yA9DOrxLiR85vUg+kalfmJRfyZaqzwCelB+cxgWau8HZFNNy2afMEZM4rinChxw==","signatures":[{"sig":"MEUCICfQLDJLUQQQJqNYp4sLJjaT2WGBfi3EeQs3BKEyUd84AiEAqmBehYvOjKuGsWN4ZskPAiGac1PI7O8go1j9e6pq5nk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":284458},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"38c89c210c662d4ac4be55b35fbe9c9b39053f12","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.3.0_1786798583737_0.9492428158854196","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"dsh-auth-gate","version":"0.4.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.4.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dist":{"shasum":"c54ca0f8c504bb8b02c5260fe64e7b031cf4f181","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.4.0.tgz","fileCount":79,"integrity":"sha512-61xAVglWQ1ztkjzepNmzErRc+Qi8zvaVyzUPr2c7vqQvsmH2eocRu2e+qiMPaagREftqGgeiPtw6GH7pXNktdA==","signatures":[{"sig":"MEUCIHdTzOt+E38Zh0qZo/Eo/MS3OrqXYPnzhLMjT972PgOmAiEAh70ngRtykPty9sfQTIQ5NC8z16wiywqzSdjKTpNCGOY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":285243},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"219cd196282386f9eaba19d2205785bae111ae09","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.4.0_1786806129686_0.9532307293126259","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"dsh-auth-gate","version":"0.4.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.4.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"70f320a55da821f8cfc68328d5b03502818d0bd4","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.4.1.tgz","fileCount":80,"integrity":"sha512-qSFO/gpm8HE1aIN8h0ej6t6DryHfDxRROrksgBvvC04B1HoUDL/Wv8daLsTg8y8qGfcXYMgdxjvn8Jx3+8eXKQ==","signatures":[{"sig":"MEQCIF/LSKehkUGuTbjgbWEr3MlZvgaou1+/4AkvBKs2pGBnAiBkjyeWcjxprtijifesY1ByPp80mw/zXFaDxWyrbhCwOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287369},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"c6a08cdd6d9d2dfad9bf2b117f1839beb8b1992f","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"11.8.0","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"24.13.1","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.4.1_1786815573210_0.7657633828758323","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"dsh-auth-gate","version":"0.5.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.5.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"f49f1fe820daa09e47a826120a04b813c02e1004","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.5.0.tgz","fileCount":80,"integrity":"sha512-AP/kcwW36FSEPKnCnkE7dgc+I53ZpBrbtwSne1IC9VXlfowJ5dqk/n9vBOIEBpYG5fJtxdfOdiB6B2XTKIH7IQ==","signatures":[{"sig":"MEUCIQDXEXGmSjPOme7p7cTZbd5pGH1PsoFkttiEtG1FHqSu6QIgGUo9BeBpyQsTj+djbNN8NTww6Lnfe4hHgwOiXDiuoZc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":287369},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"78d3002cc0ff989191469744452cbe90b8e9abe2","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.5.0_1786891686992_0.8821253013948622","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"dsh-auth-gate","version":"0.5.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.5.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"d1779f786b3776c9c9bdab11019520fc81e93b9d","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.5.1.tgz","fileCount":80,"integrity":"sha512-rC8+OPy/N7usNKUFM+91qCgMLCH7VsdDyqNG/kTk7e6a44hsYPIzXdaeqzAlnQfqkzNJlgdvdwaXnPTrYZxxaQ==","signatures":[{"sig":"MEYCIQCfjGcAE8O37g6DcyYiChEdp7W7RZyyQwotmS0edgVYkwIhAKGCrUDCv/qw00E5KyqgbcUqH+lj3/nGtccuNbXxTvu0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":282645},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./package.json":"./package.json"},"gitHead":"46dc118e5698c69c06c903dd8038dace566d5db5","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","eslint":"^10.2.1","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@commitlint/cli":"^21.0.2","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.5.1_1786938013564_0.9453778467680731","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"dsh-auth-gate","version":"0.6.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.6.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"923d60dc8b853bbe83fd8aa609557da8dfe31f57","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.6.0.tgz","fileCount":88,"integrity":"sha512-nqKTzbX2xKWq6xjH+7JnkXB2nWHmc/N5wELjQVnt+DYv0UxbTSxium9CWbVDzD4dKqOby+GHa4D+A6hWW7/8Dg==","signatures":[{"sig":"MEYCIQDfkZjUXTvTknYv/5xQ2fqAGTEjiTa8MfAgoXIT13yF8QIhAJT07VCx17XJ5xB4GBdhq5KQg1s9OFfBmFFSiqiTrMJM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":295896},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"f1325def9622773e600a06a45bec880f2c928a7b","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.6.0_1786945618567_0.5974860554045294","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"dsh-auth-gate","version":"0.6.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.6.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"20a82fe9c702376a3edf374a6b4ce1337b50a9f0","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.6.1.tgz","fileCount":89,"integrity":"sha512-e+LB0NxUmKfjvQnMCuHBIzt99RkxQK+7eFhaAUkVZ5jAAHa55UPnYh8UdmjqJqFyyDWJBKswRqjxuG8Bg06WeQ==","signatures":[{"sig":"MEMCIDEb4oldkPFOJ69irj47uAbNRRQIDLT2pQjEC/XCUn4EAh9JCb+HzX91fSpn6igrKpsAB5+0GAUJoQmuoxAFo5tG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":361410},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"61d9423fa6ecd8d935d1a72a4a51f1bc833d2f32","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.6.1_1786946884054_0.5592818700322342","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"dsh-auth-gate","version":"0.6.2","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.6.2","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"53a14b797329ac2d9e145dd41603d669e1e4b0dd","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.6.2.tgz","fileCount":89,"integrity":"sha512-7MWPv1CzKgkQtqMsa4mAEyVOcSvwl2aJSwPRjscbtNeQ2GZcc7j2bMWlvHPLQZQY7f/zmRfbbJ4JWqC3yEwNTg==","signatures":[{"sig":"MEQCIArD6s4jEqZOGE+7Jbgm4j7rSa3EJmkklvwEO9LDc5Y0AiB0MFBtDoHVOdOOHCk1QBU4JmnrABbxzisTKHO79BN1Sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":364058},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"8859a212113d2cfdc27bc49e72962ed5a9c846f0","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.6.2_1786950791574_0.2542858865049471","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"dsh-auth-gate","version":"0.6.3","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.6.3","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"161b4956bed883f00f2fe67664deaa5176b81121","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.6.3.tgz","fileCount":89,"integrity":"sha512-rkmUj0ns6LksFXAbFR/BgpMsPOhTPMEXh3d69TA4whXWlRrfm9oXDDZIbg50UFZ0R3TpjidfkFLLkgEZmdyJZw==","signatures":[{"sig":"MEQCID/wIK+TOFwuRTar0nVgSXtBWaIENLJ5WcFrYru8NhCdAiAglWfKxiK5s6HVFuJJynLKXH5lAbyHdDaml+SON/RkSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":364354},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"115b78adc93f89b9354a1ee2893458cf8430dc7b","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.6.3_1786952238228_0.2163609592733522","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"dsh-auth-gate","version":"0.6.4","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.6.4","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"f5b4d9270a59db2c296567fd3c50c431af67b5c1","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.6.4.tgz","fileCount":90,"integrity":"sha512-GvVefjsPNtrbgJz5XL1PeNGFYMVBbswUW2OzYzY+CeWl/a65zSieJEpfzk4VhtUu16lHDreXE5rmn405+tf9YQ==","signatures":[{"sig":"MEUCIH/4fQlpLwTJJiXM/GC036KfVVpQvmEVok5Zl+lUvDopAiEAgyN/BL9REj0viVNJzl1m08lVdGTZg3gBLnXhmmH5voM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":439305},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"5e09956b632e6f7062aea6f95142de58e15b0cb5","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.6.4_1787050793029_0.37539784458568715","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"dsh-auth-gate","version":"0.7.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.7.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"6441417d206de15381d2e643ae364388f067674b","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.7.0.tgz","fileCount":90,"integrity":"sha512-vpCEPaUOuBzyoVJAgteMFF6awcDvpzWLo0NlwJCEHXPJonMA9yYmDn5UJHFZR8+v9KTePxZlX/8HsXjQWMz7mg==","signatures":[{"sig":"MEQCIGSvGlpE+SlE/vazu/nxFlrKJ1DSioLugtXLA297+MGlAiAZWTa4nJBZLZFBVMMe6/NENsQl4I6+HzzrCloE1zby7Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":436996},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"c1cbe01a935399f8d2e09cb2483c995adb58ca40","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.7.0_1787119023265_0.999242981889964","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"dsh-auth-gate","version":"0.7.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.7.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"dc22a1e6aff4faa305db1704d7f51eb4116dadfc","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.7.1.tgz","fileCount":90,"integrity":"sha512-QGHsvO/COBPdFRcyJMv8MuN5mIns+oK7izJVtWWi0zQV4ciVV46i0BonXRG5f1tYAJPQiQ2XXgfMejuBN0MkbQ==","signatures":[{"sig":"MEQCIFhgkGRMD4kfCz/vYejq3+1AouxVTsy8j0wvdWhWcDcUAiALQOgUJX4Cxay1eckATwHhXVB781wxHfTSkU/jigSoyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":441686},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"a13ec7bf1dcf7d4cb9c851a53144f7efa99f2842","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.7.1_1787121622269_0.23698218575124885","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"dsh-auth-gate","version":"0.7.2","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.7.2","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"236debdc73c23138f9e28781e054095bd0e99278","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.7.2.tgz","fileCount":90,"integrity":"sha512-g2x+90ldjEMC5R7Zj9upqpHfjxyUQ66KMueg6cpBkVXdTRkyHmCPTSgJstE4P6H+wCkNABgesf9y/NiGdCU1FA==","signatures":[{"sig":"MEUCIQC7JciU7tz9jGH17z5Kv1+BrZj1SAtpIh3IXTIzUyQUWAIgc05CVhuzk9VqdCXGqm4ZmhamMxjUDpMfqKVWUOl0tSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":443488},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"0122917a2703189a0e880e42c9eac04b3051fd7e","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.7.2_1787125101454_0.8903938258538058","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"dsh-auth-gate","version":"0.8.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.8.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"a8c2bd7bd1ecf4f0b9a6737dc5f1449ffc1f6a53","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.8.0.tgz","fileCount":88,"integrity":"sha512-AJxRwJIW45XQ/Arg4fQNkVvZtrzEQFFvplMbSM9Q9UPStxMVaXZBOuqmbIWt+rhEObiuKKenk3vZwLLi9/2Jew==","signatures":[{"sig":"MEUCIEagvDhS0k6pK/jM7jtrjePzxVaMXMghwvBSFAZsHY2iAiEArbvSFfJXNsOuSmJkwvO2oflewQ6Bk1axLNIiRS7/pUs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":307261},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"8f8876bce9159366d28e91d23077dacfc89d28a6","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.8.0_1787650531654_0.19144307558814266","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"dsh-auth-gate","version":"0.9.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.9.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"a22053be41766ca7f8e19c140915f0992e12cd25","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.9.0.tgz","fileCount":101,"integrity":"sha512-eiCHq9+/ytBZ36mEmxOqWfKPt8YSFyxakDK1KFJXCOEZp4cmjSklctIJZLqG++/vxYi06LTuENsh/vyP+Kkkhg==","signatures":[{"sig":"MEYCIQDTTKFeX9XBTSVgy9y+JVnoYbGPhRZ4/PJGt5yNIKiq9gIhALJw1vkzMiD1zOVY3yFL4OYdTqYAOt0h75biYCY08zq1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":350702},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"df86c4559408afe1a7b424f8d208903b94fe885a","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.9.0_1787730281236_0.5714852165953597","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"dsh-auth-gate","version":"0.9.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.9.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"ae660a429f0d37fd484b054b760ce41df2f1ab0a","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.9.1.tgz","fileCount":101,"integrity":"sha512-sywjTuXl5keLJ4qDuZRBSoXssyEm4JCVdxMpKFuWRkScZEDtua2tGD/mcDFGLBhxSVv7IK5TMJbtfnbcjDVfdA==","signatures":[{"sig":"MEUCIQCn/ycV5FpfpuRq7+UmEk0rQuC+GKiiGh6s/VdcuGXEtAIgI/f7K7pkBs3I7D0LiMg+K6pOBcjd9i+V2pF7rOBYXes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":355430},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"0bd0592a46ee93019d0765be7fe6f6efceb9d377","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.9.1_1787734009728_0.6444517870192086","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"dsh-auth-gate","version":"0.10.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.10.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"777ba1d535a5968bc90d88cd5fa8dc5e1d3c2643","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.10.0.tgz","fileCount":108,"integrity":"sha512-6A9KdRWKpVOL0sD1sa+0OH2zT2XYvfY8l5oGnNyf75nSX3qhHORKMHvtLK+LDzZJyyKeg/CEB/5Q8iX6BC2h5Q==","signatures":[{"sig":"MEQCICLN3/llpudZX4ZRD88LWNgpONKAFbyLNIL2n7qquO/zAiAnj80ccd2Yah20Y35fdwLxIKfxhbrLvzjMPA4Icv5AEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":384305},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"984257ea0cc50200f269c34cd5405c935eab6dab","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run type-check && npm run test:coverage && npm run lock:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","format:check":"prettier --check .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.10.0_1788059586322_0.47891659221844884","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"dsh-auth-gate","version":"0.11.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.11.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"4f9814d215356d57922614418bac57f2204108e4","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.11.0.tgz","fileCount":160,"integrity":"sha512-a7qu3VcTsvD7IpjfoXER5QLV+2KbXSNRYHf29AaNYwlOaGGkWnWFKiO7D5LYPuvmNhweMhEEcJOPvZYVL5Zw4g==","signatures":[{"sig":"MEUCIQCfi+AJvW6OPGpBg8WdgIC/5Wb8wBRPgsPNY7suZ+7OGgIgRMFQQowC0nrPuF2K97rEpZUagxdf4kB5aPT9hbT7Y7Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":451523},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"669b793996f1a68ca10ba09413256254ec3268b3","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.11.0_1788085862641_0.5003569544051012","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"dsh-auth-gate","version":"0.11.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.11.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"b9f85181517e47d2350b84fb1270f539d380720c","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.11.1.tgz","fileCount":169,"integrity":"sha512-Ub53aXCMzhA9orw1X08LI4LZbGOQpHKdF+08fgUw4XXHPXl+GCCGB9RhO5aEcUNKUABJeB2IKtjaqYmdb3Ewbg==","signatures":[{"sig":"MEQCIC5q2KJBJrgVXpOF8U5QaTkgy82dWZH3OTOUpt2E6+rlAiBxz7hvVSczemlwed/Sf+AdBvxnAebcuQ7RYu2lPh14AQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":499862},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"a05ce4aa51ba2ddf05b6f5cacf6de605a33c0f11","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.11.1_1788107704418_0.3659754255787242","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"dsh-auth-gate","version":"0.12.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.12.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-runtime","@deepseek-ai/dsh-client-ui-slots"],"platform":"web"}},"dist":{"shasum":"cbed6e67e015df3b9c634a21bcd948dc5cbd658a","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.12.0.tgz","fileCount":177,"integrity":"sha512-WGbjV1Wxy0mr2A4jcnAHaNuULjqU7GIQhYySvB1cEX70+LpxGNNgIjMfYyfzcZiVbkaMS6MwmhsRG8jmoQ9NTQ==","signatures":[{"sig":"MEQCICO4DBPVeMk1wvEpA2ox5qmZB37FnzIP22cfFE3k7plWAiBQZvi8CpX7emGPrxeBacwHySgFOg20BM9GcIPkAuEgAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":509491},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"105277d6858425e27daec2cbcaede579f623a3ee","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.12.0_1788166206733_0.8771588543355235","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"dsh-auth-gate","version":"0.13.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.13.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"1619b8a8995691a91184265ef8650df3bc507be5","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.13.0.tgz","fileCount":181,"integrity":"sha512-yXMOU0HegozOpW+bw5PIsQV5gAGug0xDLv5K5qRroI1FeRpgPI5P+f0qp6+LMpCATFUWUVQDmBpjctk7lHW5Wg==","signatures":[{"sig":"MEYCIQDO/GZEhWnMwGR8/6xq1/triCvJ69atoHdaBp5JCIvj6AIhAPE5cMYvSM/FdZsEgbyC39gZ+Sh586vhJsowFRgE7oHy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICyXzlHSvee1V1Zgq+UeIu82FYJuvLEqx+NFNiWKK2PaAiAYn6Bs8qSqo5PuEXFDqiFzmjOFEeShH58D1CcZMGu0Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":520376},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"1e4acabd670454e75608a62d10818e917d74655f","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.13.0_1789233818727_0.20089626105659453","host":"s3://npm-registry-packages-npm-production"}},"0.13.1":{"name":"dsh-auth-gate","version":"0.13.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting"],"license":"MIT","_id":"dsh-auth-gate@0.13.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"aa378c6a73a6638386a307b90ef13d0f33d7ffcc","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.13.1.tgz","fileCount":181,"integrity":"sha512-X4p+9JP9MtWbrMSHmdLMHfUuo19iOt4WOkWsVEJNkEqKzrcXYp3sOEwlGLH8LV75zx4A6EfvpKktdJQUr4CHTw==","signatures":[{"sig":"MEUCIQDNKecda6c7ZtAtZAdSL77RtBPUx+vsKyxc0PZvT4XqIgIgcgcp6gIQfoQXeJSDaJBPZ/67e9bhiF3I3N6wUJceLos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDeODhMro/GtW+7JRGAHyyFJS7+vRVEP/LV8dFrVLJG7QIhAJAK6Tegh78plfkD6nevbWdbmLgEuhvh9EhBAvULZGnJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":523366},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"d299c6a59e8b98983172e86b172eaed2d37a7b10","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Application-layer authentication plugin for the dsh web surface","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-client-runtime":"^0.1.0-rc.6","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-client-ui-slots":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.13.1_1789718893792_0.39561595523864135","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"dsh-auth-gate","version":"0.14.0","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"license":"MIT","_id":"dsh-auth-gate@0.14.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"7bbc9059297803e7e059fc394a24932826600a51","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.14.0.tgz","fileCount":197,"integrity":"sha512-NahXPZMm0Cqlj3ArX7SQK33T68QeU/cNuowxwtUOVDg7MR0wJ5TYTZ2bHEnToJlA6y8XHNUwWCbstAdu3DDa7g==","signatures":[{"sig":"MEYCIQDPgx7PfkkXLGhBaDi+H/PFeaRf9DWv15VO94qtpjb1ywIhAP3d7ra0+onY4IV3bUFs4PiEUg63RPQg/ZoCYYb1b928","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICN8/1T2deTnWsRKuoZiJ78uS8svqDzOftpsropvEgvSAiBj4rg7HrdZCht1Y+SCOMw8Z0J9q7W03C3/4cEn0DEiEQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":623281},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"dsh":"^0.1.0-rc.6 || ^0.1.5-rc.2","node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"84104b0696d8489bfd5ca34c4da0c2e21b50be08","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Login gate for a dsh web instance: application-layer authentication with password or token sign-in, optional TOTP two-factor, rate limiting and a user CLI","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || ^0.1.5-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.14.0_1790072981073_0.6323816405692735","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"dsh-auth-gate","version":"0.14.1","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"license":"MIT","_id":"dsh-auth-gate@0.14.1","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"b3c0bfcaf7cabee5be2bb71195b83791db8fef76","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.14.1.tgz","fileCount":205,"integrity":"sha512-3rBgrqYN5yuUZon7hl/lGbhxm6DhgUtFKS9grAr7NYCMgA/nzaqqsgsdLTmdq9m50nNoiLKcm6MQaxa7Zxl9xw==","signatures":[{"sig":"MEQCID8Tp5B6tSNxqtzN0W+0HoVrVb1xucAsvFCSrkyovYjfAiB3DqSZfSGuaZqfYmOgicMUq+LCd8KfbK7a5bjklHnZkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGvBa+ndmJWxJuZfAT1TU9qykKcUJXO42q4w9rW3p/gwAiEAz4bRBAMhfBy6BRn57W9tmzrYKvqAyLTFIyEI2r4CLtY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":660228},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"dsh":"^0.1.0-rc.6 || ^0.1.5-rc.2","node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"bbbd6a6de1e3aa4ba1b2930093e2fb9fad6c78ab","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Login gate for a dsh web instance: application-layer authentication with password or token sign-in, optional TOTP two-factor, rate limiting and a user CLI","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || ^0.1.5-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.14.1_1790078290270_0.13750844926153016","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"dsh-auth-gate","version":"0.14.2","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"license":"MIT","_id":"dsh-auth-gate@0.14.2","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"b3e735c22f4f0ca1526963c04f272e0bb9ec9d0e","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.14.2.tgz","fileCount":209,"integrity":"sha512-pS+BDtPPAGHRKoeCQy8X1bI7VTdN+2M2pcqQlj2/ODuo+9wfBohUUH7bwR1lrvCj03SZiUPiDpjZtiSrameSrw==","signatures":[{"sig":"MEQCICxipvZqL8h+51LTj+k9I1WuOqSQySeTD2vVMNk2E09ZAiByaStizYUc1JYqdk9zdtOmrPNYeK2YlU6H1YAfHtOxnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEG3nV7nt8DlAQd90dB9ufEYNI1MrfFi8qoI6aLQaQhQAiBtjAOVcV04CHf/UOiMslEfkKgblww1nMwI04W6eirq7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":673702},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"dsh":"^0.1.0-rc.6 || ^0.1.5-rc.2","node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"ff3152ec7868ac7b4c772d77d16e8b131d230ffb","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Login gate for a dsh web instance: application-layer authentication with password or token sign-in, optional TOTP two-factor, rate limiting and a user CLI","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || ^0.1.5-rc.2"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.14.2_1790085095769_0.695903321670053","host":"s3://npm-registry-packages-npm-production"}},"0.14.3":{"name":"dsh-auth-gate","version":"0.14.3","keywords":["dsh","dsh-plugin","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"license":"MIT","_id":"dsh-auth-gate@0.14.3","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"d2adc35d96267c8753d28595d999457be5be0cca","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.14.3.tgz","fileCount":209,"integrity":"sha512-b7DzbMxLXG/zf6i4jtSTFW+nS2zP89R3MWAusaXrB1Ms/N11V1W7up0fH005Ln4M9LWHfDozs3dQ9ulsiqUzlg==","signatures":[{"sig":"MEUCIQD7RwoVgaYZqC2iKNGCeQfhVJv0UIhEN+xKmb/eGtcujwIgR4NNM8YdJwObBwdwgj7TkksI1rw0nvQNxyuIF10nAas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDi9h9x97DRK+60s+Z7V8yB1SnImAVtUNcgmxDFAtfttgIhAIUGD0kvj8mPsy/QceE/RGiyNmwO7dziX6AFInsowqXa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676787},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"dsh":"^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1","node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"218a984dfdc518fbd5d9a84b63c1c655ddd7a28f","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Login gate for a dsh web instance: application-layer authentication with password or token sign-in, optional TOTP two-factor, rate limiting and a user CLI","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.14.3_1790149421455_0.9639644339388223","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"dsh-auth-gate","version":"0.15.0","keywords":["dsh","dsh-plugin","deepseek-harness","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"license":"MIT","_id":"dsh-auth-gate@0.15.0","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"homepage":"https://github.com/TecFancy/dsh-auth-gate","bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"dist":{"shasum":"3d1377c2fd88fd294aa12abcc4fad59cb191eca1","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.15.0.tgz","fileCount":255,"integrity":"sha512-T8d3X9eyjr6tJUEpmimVguU5QmSPePuVAPFtfZIzdrhcTDeZg59SMln7j4OfWl3M4nYAwGrQL6jiLuvmNLXi/A==","signatures":[{"sig":"MEUCIGVnUOPOtwXgeBgpmsQ1GkJg1kla9jl0p9/xtGc44S9hAiEAwgaD/0dhIhvbiz5slu0UTblTZ7LQtwV0QpsE6tbvuOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFz2iZZd0JxxH/a4eHfGUz81piYI5jAVjAUuhzb+Y6RrAiA11Pzabwrl++TsymptiJA4Mw1sD1BgDEfvUC9w5BwSog==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":955012},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"dsh":"^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1","node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"4f362a723aadb2f194226ab87d80fffd53c6216c","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run readme:parity && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","readme:parity":"node scripts/verify-readme-parity.mjs","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Login gate for DeepSeek Harness (dsh) web instances: password or shared-token sign-in, optional TOTP two-factor, session cookies, rate limiting, self-service password change and a user-management CLI","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-json":"^0.1.0-rc.6","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.1.0-rc.6","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-auth-gate_0.15.0_1790228664784_0.5636538309645227","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"_id":"dsh-auth-gate@0.16.0","bin":{"dsh-auth":"lib/cli.js","dsh-auth-proxy":"lib/proxy-cli.js"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-client-ui-settings-general","@deepseek-ai/dsh-client-locale"],"platform":"web"}},"bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"dist":{"shasum":"d29caa0c670fba3adb1bbf971e573616bf468376","tarball":"https://registry.npmjs.org/dsh-auth-gate/-/dsh-auth-gate-0.16.0.tgz","fileCount":338,"integrity":"sha512-KDxizX0BJdG5pUwUcKVNUC/vHPJ94u5Px2wIzihWNRkmS8GMgs/H2rsY8/9RKQAhdaDIWtKpktfGh6FmMUPkyg==","signatures":[{"sig":"MEUCIFoLCHvJ52SFs6JGRdLlj4ooJ+NNJhYfo33GittzCHl4AiEA1dfFyJZnAoS68/Qx1EnDKedRJQLCi0oCDL13aZKohqY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDf6YvAOqgQClR9ChkiYMJPkUSAXyACV1Op7z/9d0xQdgIgZjB/QqVapVYfM2xooZs0h3t3EMk0bv4pP6h/g/gicu0="}],"unpackedSize":1375719},"main":"lib/index.js","name":"dsh-auth-gate","type":"module","types":"lib/index.d.ts","engines":{"dsh":"^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1 || ^0.2.0-rc.1","node":">=22.19.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./package.json":"./package.json"},"gitHead":"dc844c18f3593fb2e20cedaafb28a5f8912701d9","license":"MIT","scripts":{"lint":"eslint .","test":"vitest run","build":"tsc -p tsconfig.build.json && tsdown && tsc -p tsconfig.client.build.json","gates":"node scripts/run-gates.mjs","format":"prettier --write .","verify":"npm run format:check && npm run lint && npm run lint:no-emdash && npm run slice:check && npm run lock:check && npm run decisions:check && npm run docs:check && npm run readme:parity && npm run type-check && npm run test:coverage && npm run build && npm run bundle:check","prepack":"npm run build","prepare":"node -e \"try { require.resolve('husky') } catch { process.exit(0) } require('node:child_process').execSync('husky', { stdio: 'inherit' })\"","docs:check":"node scripts/verify-doc-pairs.mjs","lock:check":"node scripts/check-lockfile-registry.mjs","release:pr":"node scripts/release.mjs pr","test:watch":"vitest","type-check":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.client.json --noEmit","slice:check":"node scripts/verify-slice-boundaries.mjs","bundle:check":"node scripts/verify-bundle.mjs","format:check":"prettier --check .","release:ship":"node scripts/release.mjs ship","readme:parity":"node scripts/verify-readme-parity.mjs","release:check":"node scripts/release.mjs check","test:coverage":"vitest run --coverage","lint:no-emdash":"node scripts/check-no-emdash.mjs","decisions:check":"node scripts/verify-decision-records.mjs","release:merge-pr":"node scripts/release.mjs merge-pr","release:sync-back":"node scripts/release.mjs sync-back"},"version":"0.16.0","_npmUser":{"name":"smpower","email":"rf.wangchn@foxmail.com"},"homepage":"https://github.com/TecFancy/dsh-auth-gate","keywords":["dsh","dsh-plugin","deepseek-harness","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"_npmVersion":"10.9.8","description":"Login gate for DeepSeek Harness (dsh) web instances: password or shared-token sign-in, optional TOTP two-factor, session cookies, rate limiting, self-service password change and a user-management CLI","directories":{},"maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.4.3","yaml":"^2.9.0","@deepseek-ai/schemastery":"^3.18.1"},"_hasShrinkwrap":false,"packageManager":"npm@10.9.3","devDependencies":{"husky":"^9.1.7","jsdom":"^29.1.1","react":"^18.2.0","eslint":"^10.2.1","semver":"^7.8.5","tsdown":"^0.22.2","vitest":"^4.1.5","globals":"^17.5.0","prettier":"^3.8.3","react-dom":"^18.2.0","@eslint/js":"^10.0.1","typescript":"~6.0.2","@types/node":"^24.12.2","lint-staged":"^16.1.0","@types/react":"~18.3.1","@types/semver":"^7.8.0","@commitlint/cli":"^21.0.2","@types/react-dom":"~18.3.1","typescript-eslint":"^8.58.2","@deepseek-ai/cordis":"^4.0.1","@vitest/coverage-v8":"^4.1.5","eslint-plugin-import-x":"^4.16.2","@deepseek-ai/dsh-storage":"^0.2.0-rc.1","@deepseek-ai/dsh-storage-json":"^0.2.0-rc.1","@commitlint/config-conventional":"^21.0.2","@deepseek-ai/dsh-host-webserver":"^0.2.0-rc.1","@deepseek-ai/dsh-storage-domain":"^0.2.0-rc.1","eslint-import-resolver-typescript":"^4.4.4"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/dsh-storage-domain":"^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1 || ^0.2.0-rc.1"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-auth-gate_0.16.0_1790700303837_0.022459253898872378"}}},"time":{"created":"2026-08-15T06:42:04.769Z","modified":"2026-09-29T16:45:04.326Z","1.0.0":"2026-08-15T06:42:04.971Z","0.1.0":"2026-08-15T10:09:25.875Z","0.1.2":"2026-08-15T11:07:49.010Z","0.2.0":"2026-08-15T12:24:18.004Z","0.3.0":"2026-08-15T12:56:23.921Z","0.4.0":"2026-08-15T15:02:09.819Z","0.4.1":"2026-08-15T17:39:33.376Z","0.5.0":"2026-08-16T14:48:07.166Z","0.5.1":"2026-08-17T03:40:13.718Z","0.6.0":"2026-08-17T05:46:58.722Z","0.6.1":"2026-08-17T06:08:04.219Z","0.6.2":"2026-08-17T07:13:11.729Z","0.6.3":"2026-08-17T07:37:18.392Z","0.6.4":"2026-08-18T10:59:53.217Z","0.7.0":"2026-08-19T05:57:03.422Z","0.7.1":"2026-08-19T06:40:22.409Z","0.7.2":"2026-08-19T07:38:21.568Z","0.8.0":"2026-08-25T09:35:31.798Z","0.9.0":"2026-08-26T07:44:41.382Z","0.9.1":"2026-08-26T08:46:49.877Z","0.10.0":"2026-08-30T03:13:06.466Z","0.11.0":"2026-08-30T10:31:02.802Z","0.11.1":"2026-08-30T16:35:04.616Z","0.12.0":"2026-08-31T08:50:06.862Z","0.13.0":"2026-09-12T17:23:38.812Z","0.13.1":"2026-09-18T08:08:13.896Z","0.14.0":"2026-09-22T10:29:41.167Z","0.14.1":"2026-09-22T11:58:10.368Z","0.14.2":"2026-09-22T13:51:35.889Z","0.14.3":"2026-09-23T07:43:41.543Z","0.15.0":"2026-09-24T05:44:24.942Z","0.16.0":"2026-09-29T16:45:03.943Z"},"bugs":{"url":"https://github.com/TecFancy/dsh-auth-gate/issues"},"license":"MIT","homepage":"https://github.com/TecFancy/dsh-auth-gate","keywords":["dsh","dsh-plugin","deepseek-harness","auth","authentication","login","password","token","security","access-control","rate-limiting","totp","two-factor","self-hosted"],"repository":{"url":"git+https://github.com/TecFancy/dsh-auth-gate.git","type":"git"},"description":"Login gate for DeepSeek Harness (dsh) web instances: password or shared-token sign-in, optional TOTP two-factor, session cookies, rate limiting, self-service password change and a user-management CLI","maintainers":[{"name":"smpower","email":"rf.wangchn@foxmail.com"}],"readme":"# dsh-auth-gate\n\n[English](README.md) | **简体中文**\n\n[![npm version](https://img.shields.io/npm/v/dsh-auth-gate.svg)](https://www.npmjs.com/package/dsh-auth-gate)\n[![npm downloads](https://img.shields.io/npm/dt/dsh-auth-gate.svg)](https://www.npmjs.com/package/dsh-auth-gate)\n[![npm monthly downloads](https://img.shields.io/npm/dm/dsh-auth-gate.svg)](https://www.npmjs.com/package/dsh-auth-gate)\n[![node](https://img.shields.io/node/v/dsh-auth-gate.svg)](https://www.npmjs.com/package/dsh-auth-gate)\n[![types](https://img.shields.io/npm/types/dsh-auth-gate.svg)](https://www.npmjs.com/package/dsh-auth-gate)\n[![CI](https://github.com/TecFancy/dsh-auth-gate/actions/workflows/ci.yml/badge.svg)](https://github.com/TecFancy/dsh-auth-gate/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/dsh-auth-gate.svg)](LICENSE)\n\n给 [DeepSeek Harness](https://github.com/deepseek-ai/dsh)（dsh）的网页版加一道登录关卡。把它放在公网上\n运行的 dsh 实例前面，任何人在登录之前都碰不到你的 agent、聊天会话和 LLM 凭据。\n\n> **在 dsh 官方推出认证功能之前，本仓库会一直维护。** dsh 目前还没有内置登录，这个仓库就是用来补上\n> 这个缺口的：我们会跟进 dsh 的新版本（挂载点变化、兼容的版本范围、Linux 与 Windows 双平台 CI）、\n> 修复升级引入的问题，并照常发版。等官方认证落地，我们会给出迁移方案，同时继续支持大家仍在使用的\n> dsh 版本，不会让任何人留在一个无人维护的 fork 上。\n\n## 目录\n\n- [它能做什么](#它能做什么)\n- [它不做什么](#它不做什么)\n- [快速开始](#快速开始)\n- [效果预览](#效果预览)\n- [配置](#配置)\n- [命令行工具](#命令行工具)\n- [管理工具：列出用户与重置密码](#管理工具列出用户与重置密码)\n- [内置配置技能](#内置配置技能)\n- [故障排查](#故障排查)\n- [部署](#部署)\n- [认证本地代理（可选）](#认证本地代理可选)\n- [环境要求](#环境要求)\n- [注意事项与局限](#注意事项与局限)\n- [开发](#开发)\n- [许可证](#许可证)\n\n## 它能做什么\n\n- **所有请求都要先登录。** 每个页面、每个 API 调用、每条 WebSocket 连接都会检查登录态。没有有效\n  会话的访客会被引导到登录页；API 和脚本请求直接返回 `401`。唯一的例外是\n  `GET /manifest.webmanifest`：浏览器请求 Web App Manifest 时不带凭据，所以只开放这一条路径，\n  响应里也只有应用名、图标和显示模式。\n- **两种登录方式**（配置里二选一）：\n  - **密码**（推荐）：每个管理员使用自己的用户名和密码。\n  - **令牌**：整个实例共用一个密钥。\n- **浏览器和脚本都能用。** 浏览器走登录页；脚本和 curl 带上 `Authorization: Bearer <token>` 就能\n  跳过登录页。\n- **管理工具。** 密码模式下，管理员可以在设置面板的**「账号安全」**分区里，或通过 HTTP\n  （`GET /auth/users`、`POST /auth/users/password`）列出用户、重置他人口令；重置会吊销该用户已有的\n  全部会话，并让他在下次登录时先设置新口令，之后才能访问其他任何内容。只有处于正式会话的 admin\n  才看得到面板里的管理块；管理面**不允许重置自己**（自己的口令用上方自助表单，忘记了自己的口令才走\n  CLI）。\n- **可选的两步验证（TOTP）。** 密码模式下，账号里添加了 TOTP 密钥的用户登录时，除了密码还要输入\n  验证器应用生成的 6 位验证码（遵循 RFC 6238；配置有 off/optional/required 三档）。\n- **默认配置就是安全的。** 密码以哈希形式保存；登录有限速，密码连续输错会临时锁定来源地址；会话\n  cookie 带有安全属性；配置缺失或损坏时**直接拒绝访问，而不是悄悄放行**。用户名或密码错误时，\n  登录卡片会重新显示，并带上 `Invalid username or password.`：用户名保留，密码需要重新输入。\n  触发锁定后（HTTP 429 + `retry-after`），同一张登录卡片会显示需要等待的秒数，并提示该限制只\n  针对当前网络；剩余尝试次数**刻意不显示**；浏览器启用了 JavaScript 时，刷新页面也不会再额外\n  消耗一次尝试机会。\n\n## 它不做什么\n\n先把边界讲清楚，方便你在安装前判断风险（完整清单和背后的机制见\n`docs/deployed/known-limitations_zh.md`）：\n\n- **不等于服务器级安全。** 操作系统账号和配置文件仍需要你自己看管（`auth/users.yaml` 和\n  `.credentials.yaml` 生成时权限即为 `0600`）；本插件只守住 dsh 的 **Web** 入口。\n- **不是每个改密码入口都会让会话失效。** `dsh-auth user disable` 会阻止该用户今后登录，并吊销其\n  已签发的会话（默认 5 秒内生效，见 `revokeSweepMs`）；设置面板里的自助改密会吊销该用户的全部\n  会话，管理员在面板里重置他人口令同样如此；CLI 的 `dsh-auth user passwd` 只重写存储的密码哈希。\n- **不能替代 HTTPS。** 配置了 `cookieSecure: true`，站点就必须通过 https 提供服务。\n- **不是完整的身份提供方（IdP）。** 没有 OAuth/OIDC，没有自助注册，也没有邮件重置；用户一律由\n  管理员通过 CLI 创建和管理。\n\n## 快速开始\n\n```sh\n# 1. 从 npm 装进你的 dsh profile。\n#    自 0.4.1 起，包里声明了 dsh.bundle manifest，`dsh plugin add` 会顺带自动注册挂载\n#    （dsh.profile.bundles），不需要再手动添加挂载行：\ndsh plugin --profile web add dsh-auth-gate\n\n# 2. 创建管理员账号。\n#    `dsh plugin add` 把插件装进 profile 的 node_modules\n#    （$DSH_HOME/profiles/web，默认 ~/.dsh/...）；CLI 不会被加入你的 PATH，\n#    所以要通过 profile 调用。`dsh plugin` 本身就依赖 pnpm：\nprintf '%s\\n' '选一个强密码' | \\\n  pnpm --dir \"$DSH_HOME/profiles/web\" exec dsh-auth user add admin --password-stdin\n\n# 3. 启用密码登录：在 $DSH_HOME/cordis.patch.yml 里覆盖插件配置\n#    （仓库自带可直接使用的覆盖模板 deploy/cordis.patch.yml，见下文\"配置\"；\n#    挂载这一步本身不需要手动写 patch 行）\n\n# 4. 重启 dsh，打开站点，就会先要求登录。\n```\n\n## 效果预览\n\n本节的截图统一使用**英文界面**：插件自己的面板跟随 GUI 语言，服务端渲染的页面在任何语言下都是\n英文，两版 README 因此共用同一套图。\n\n未登录的访客会先看到登录页（登录卡片由插件在服务端渲染，文案固定为英文，与 GUI 语言无关）：\n\n![登录页](docs/demo/login-page.png)\n\n账号启用了 TOTP 两步验证时，登录还有第二步：输入验证器应用里的 6 位验证码（先密码，后验证码）：\n\n![两步验证码页](docs/demo/totp-code.png)\n\n登录后进入你的实例：\n\n![dsh 实例](docs/demo/dashboard.en.png)\n\n在 dsh 0.1.2-alpha 及更高版本上（这些版本的页面带有 launch token 校验），登录会自动跨过这道校验：\n登录跳转会先经过一次相对地址 `/?token=…` 换取 dsh cookie，然后进入 `/`（细节见\n`docs/implemented/impl-launch-token-bridge_zh.md`）。\n\n设置面板里有一个醒目的**「Sign out」（退出登录）**按钮，位置在**Settings → General\n（设置 → 通用设置）**页最后一行设置项的下方。它是居中、危险色的实心按钮（16px 门形图标加\n本地化文字，配色使用主题 token，深浅色自适应）；文案跟随 GUI 语言切换，用的就是设置页语言切换\n那套机制。点击后执行的仍是原有的原生登出流程 `POST /auth/logout?next=/`。\n\n已登录的用户还可以在设置面板的**「Account security」（账号安全）**分区里自助改密码（仅密码模式）：\n需要填写当前密码和两次新密码，账号绑定了 TOTP 时再加一次验证码。面板标题旁的图标是本插件自己\n设计的（16px 描边风格的盾牌加钥匙孔）。\n\n设置导航里那一枚图标同样来自本插件：宿主目前没有给单个设置分区配图标的接口（`settings.section`\n只有 `id`/`order`/`label` 三个字段，导航图标由宿主硬编码的 `navIcon(id)` 决定，第三方分区一律\n回退到默认齿轮），所以插件用一层**临时 DOM 垫片**（stopgap）只替换自己那一行，匹配不到时静默\n退回齿轮。等 dsh 官方支持 `icon` 选项，这层垫片和它的代码会整体删除（迁移条件见 ADR D24.1）。\n\n![设置导航里的「账号安全」行](docs/demo/account-nav-icon.en.png)\n\n![管理员账号下的「账号安全」面板：上面是改密表单，下面紧跟用户管理块](docs/demo/account-change-password.en.png)\n\n面板提交到 `POST /auth/password`（字段为 `current` / `password` / `code`，form-urlencoded 编码）。\n修改成功后，**该用户的全部会话都会被吊销，包括发起这次改密的那条会话**；客户端会**立即**把用户\n带回登录页并附上原因，登录页会说明为什么被登出（成功提示面板只在浏览器或运行环境拒绝跳转时才会\n留在屏幕上，上面的「Sign in again」（重新登录）按钮是那时的退路）：\n\n![带原因的登录页](docs/demo/login-password-changed.png)\n\n新密码至少 14 位、须同时包含四类字符，且不能与当前密码相同。启用 TOTP 后，当前 30 秒窗口内已经\n用过的验证码会视为重放并拒绝，需要等下一个验证码。\n\n处于正式会话的管理员，还会在上方表单下面看到**用户管理块**（上面那张面板截图里就能看到）：一张只读\n列表（用户名、角色，以及互斥的「已禁用 / 需改密 / 正常」状态徽标和两步验证徽标，本人行标\n「本人 / You」），外加一条针对他人的重置表单。重置会让目标用户在下次登录时被要求改密，并吊销该用户\n已有的全部会话；发起重置的管理员自己的会话不受影响。管理员自己开启了 TOTP 时，重置还需要填写一枚当前\n验证码。该模块只在 `role === \"admin\"` 且会话为正式会话（非强制改密受限会话）时渲染，非 admin 客户端\n**根本不会请求**用户列表。**不允许重置自己**：服务端会拒绝，下拉也排除本人；管理员若忘记自己的口令，\n只能在服务器上用 `dsh-auth user passwd <name>` 重置。\n\n![用户管理块里的重置成功：绿色确认文案、目标用户已标记「需改密」、字段全部清空](docs/demo/admin-reset-success.en.png)\n\n## 配置\n\nbundle 挂载行（id 为 `dsh-auth-gate`，由 `dsh plugin add` 自动插入）使用默认配置：`mode: \"token\"`，\n共享密钥来自环境变量 `DSH_AUTH_TOKEN`。要修改配置，在 `$DSH_HOME/cordis.patch.yml`（或 profile\n目录下的 `cordis.patch.yml`）里按 id 覆盖即可；仓库自带可直接使用的覆盖模板\n`deploy/cordis.patch.yml`。覆盖条目按 id 定位已经挂载的那一行，**不要再写 `insert`**\n（否则插件会被挂载两次）：\n\n```yaml\n- id: dsh-auth-gate\n  config:\n    mode: \"password\" # \"password\"（推荐）或 \"token\"\n    totp: \"optional\" # \"off\"（默认）、\"optional\" 或 \"required\"\n    cookieSecure: true # 使用 https 时保持 true\n```\n\n| 选项                | 默认值                       | 作用                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n| ------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| `mode`              | `\"token\"`                    | `\"password\"` 为用户名密码登录；`\"token\"` 为全实例共用一个密钥                                                                                                                                                                                                                                                                                                                                                                              |\n| `totp`              | `\"off\"`                      | 仅密码模式。`\"optional\"`：绑定了 TOTP 密钥的用户登录时需要密码加验证码；`\"required\"`：所有用户都必须绑定密钥（没有密钥的用户在密码阶段就得到统一的 401，响应体与密码错误相同，避免暴露账号是否存在）                                                                                                                                                                                                                                       |\n| `sessionTtl`        | `604800`                     | 一次登录的有效时长（秒），到期后需要重新登录                                                                                                                                                                                                                                                                                                                                                                                               |\n| `cookieName`        | `dsh_auth`                   | 会话 cookie 的名称（一般不需要修改）                                                                                                                                                                                                                                                                                                                                                                                                       |\n| `tokenRef`          | `\"DSH_AUTH_TOKEN\"`           | 仅令牌模式：共享密钥存放在哪个环境变量里                                                                                                                                                                                                                                                                                                                                                                                                   |\n| `cookieSecure`      | `true`                       | 只在纯 http 测试环境下设为 `false`                                                                                                                                                                                                                                                                                                                                                                                                         |\n| `usersFile`         | `\"\"`                         | 密码模式：用户列表文件的位置，默认 `$DSH_HOME/auth/users.yaml`                                                                                                                                                                                                                                                                                                                                                                             |\n| `publicHost`        | `\"\"`                         | 登录页身份区显示的域名（用于防钓鱼，让用户确认\"这是哪个实例\"）。留空则使用请求头里的 `Host`；反向代理改写了 `Host` 时必须显式配置（例如 Caddy 的 `header_up Host 127.0.0.1:3080`），否则卡片上显示的是回环地址而不是你的公网域名。自 D25 起，它还决定管理与改密端点能否校验 `Origin` 头：`publicHost` 留空时这些端点只接受 `Sec-Fetch-Site: same-origin`，生产部署应当配置它；TLS 终止在反代后面时请写成带 scheme 的形式（`https://host`） |\n| `revokeSweepMs`     | `5000`                       | 密码模式：被 `dsh-auth user disable` 禁用的用户，其**已签发**的会话会在多长时间（毫秒）内被吊销。`0` 表示不清理已有会话（此时禁用只拦新登录）                                                                                                                                                                                                                                                                                              |\n| `clientIpHeader`    | `\"\"`                         | 限速用的客户端真实 IP 请求头（`x-forwarded-for`；Cloudflare 后面可用 `cf-connecting-ip`）。留空表示完全不读取请求头。只有当请求的对端落在 `trustedProxyCidrs` 内时才会读取；不配置时，同机反代会造成所有客户端共用一个锁定桶（issue #74）                                                                                                                                                                                                  |\n| `trustedProxyCidrs` | `[\"127.0.0.0/8\", \"::1/128\"]` | 哪些对端有权提供 `clientIpHeader`（默认只信任回环；没有地址的对端，例如 Unix socket，视为本地）。无效条目会被丢弃并记 error 日志，信任范围收窄为回环；显式写成 `[]` 表示谁都不信任；`0.0.0.0/0` 和 `::/0` 一律拒绝                                                                                                                                                                                                                         |\n| `logoutOrder`       | `1000`                       | 「退出登录」按钮在 设置 → 通用设置 页里的排序值（数值越大越靠下）。如果其他插件注册了更大的值，可以调大这个数                                                                                                                                                                                                                                                                                                                              |\n\n给用户启用 TOTP：运行 `dsh-auth user totp enable <name>`，把打印出的密钥录入验证器应用，或扫描\n`otpauth://` URI 二维码（Google Authenticator、1Password 等）。验证码每 30 秒变化一次，前一个和\n后一个窗口内的码也接受（容忍时钟漂移）。\n\n## 命令行工具\n\n`dsh-auth` 用于在命令行管理用户：\n\n```sh\ndsh-auth user add admin --password-stdin   # 添加用户（加 --admin 直接创建管理员）\ndsh-auth user list                          # 列出用户\ndsh-auth user passwd admin                  # 修改密码（需要输入两次；不提供 --password 参数）\ndsh-auth user role admin user               # 授予/撤销管理员角色：user role <name> <admin|user>\ndsh-auth user disable admin                 # 阻止该用户今后登录，并吊销其已登录的会话\ndsh-auth user enable admin                  # 重新启用被禁用的用户（只重置口令仍登不进来）\ndsh-auth user totp enable admin             # 生成 TOTP 密钥（打印 otpauth:// URI）\ndsh-auth user totp disable admin            # 删除 TOTP 密钥\n```\n\n全局安装后，`dsh-auth` 会直接出现在 PATH 里；通过 `dsh plugin add` 安装时，可执行文件位于\nprofile 内，需要经由 profile 调用，详见[快速开始](#快速开始)。\n\n`dsh-auth user passwd` 只重写存储的密码哈希，**不会吊销该用户已经登录的会话**。需要让会话立即\n失效时，请使用设置面板里的自助改密；`dsh-auth user disable` 也能阻止今后登录，但已签发的会话要等\n周期扫描（`revokeSweepMs`，默认约 5 秒）才会被吊销。\n\n## 管理工具：列出用户与重置密码\n\n密码模式下，管理员可以在设置面板的**「账号安全」**分区里列出用户、重置他人口令，也可以在脚本里\n走 **HTTP**（`/auth/users` 是字段白名单列表，`/auth/users/password` 是重置）。两条通路行为一致；\n所有已认证的状态变更 POST 都会校验 `Origin`，所以脚本必须显式带上它（没有豁免）：\n\n```sh\n# 列出用户（jar 里是管理员会话 cookie）。\ncurl -s -H \"Origin: https://dsh.example.com\" -b jar https://dsh.example.com/auth/users\n\n# 重置某人的口令。只有「你自己」的账号启用了 TOTP 时才需要 code。\ncurl -s -H \"Origin: https://dsh.example.com\" -b jar \\\n  -d \"target=alice&password=<新口令>&confirm=<新口令>&code=<你自己的验证码>\" \\\n  https://dsh.example.com/auth/users/password\n```\n\n缺少 `Origin`、或 `Origin` 与实例不匹配的请求一律以 `403` 拒绝（fail-closed）；唯一被接受的另一个\n信号是浏览器自己发的 `Sec-Fetch-Site: same-origin`。反向代理改写了 `Host` 时**必须配置\n`publicHost`**：否则服务端推导不出自己的对外来源，改密与重置端点就只认\n`Sec-Fetch-Site: same-origin`，而上面的命令行调用并不会带它。**TLS 终止在反代后面时要把\n`publicHost` 写成带 scheme 的形式**（`https://dsh.example.com`）：只写 `host:port` 时，scheme 由\n连接本身是否为 TLS 推导，反代到插件这一段若是明文，脚本走 `Origin` 通道就会 403（浏览器不受影响）。\n\n重置会把目标账号标记为「必须修改口令」，并吊销该用户已有的全部会话（发起重置的管理员自己的会话\n不受影响）。目标用户下次登录会拿到**受限会话**（15 分钟、不续期）：它只能到达插件自己的改密页\n`GET /auth/password`，其他一律进不去，包括宿主界面。该页面由服务端渲染，没有 JavaScript 也能用\n（零外链、无脚本）；提交时仍然要求当前口令，成功后清除标记并把该用户登出，之后即可正常登录。\n重置**不会**改动目标的 TOTP 密钥；重置一个仍处于禁用状态的账号也不会让它登得进来（登录路径恒拒\n禁用用户），需要先执行 `dsh-auth user enable <name>`。完整契约见\n[D25](docs/decisions/implemented/2026-09-24-admin-password-reset.zh.md)。\n\n## 内置配置技能\n\n本包内置了一份配置速查技能（`.agents/skills/dsh-auth-gate-config/`，内容与本页相同）。把它安装到\n用户级技能目录后，部署环境里的 dsh agent 就能直接回答「auth-gate 支持哪些配置」：\n\n```sh\npnpm --dir \"${DSH_HOME:-$HOME/.dsh}/profiles/<profile>\" exec dsh-auth skill install [--force]\n```\n\n该命令会把技能复制到 `$DSH_HOME/skills/dsh-auth-gate-config/`，dsh 的技能发现机制会自动加载。\n重复执行且不带 `--force` 时，你对技能的本地修改会被保留；带 `--force` 则从包内重新覆盖。\n\n这是一份**用户专用（user-only）技能**（frontmatter 里的 `disable-model-invocation: true`）：\n它不会出现在模型可自动调用的技能目录里，因而不会塞进每一轮 agent 对话；需要查配置时，在技能面板\n里手动打开即可（输入框的 `/` 菜单里标记为 `user-only`）。如果希望 agent 能自动回答配置问题，\n安装后删掉那个 frontmatter 字段即可。\n\n## 故障排查\n\n### `dsh-auth: command not found`\n\n`dsh plugin --profile web add dsh-auth-gate` 会把包装进 profile 的 `node_modules`\n（`$DSH_HOME/profiles/web/node_modules/dsh-auth-gate`，默认 `~/.dsh/...`），但不会往 shell 的\n`PATH` 里加任何东西，所以不能直接用命令名调用 CLI。这只影响 CLI，插件本身运行正常。三种办法任选\n其一：\n\n1. **经由 profile 调用（推荐）。** `dsh plugin` 本来就依赖 pnpm，这样 CLI 与插件从同一位置解析：\n\n   ```sh\n   pnpm --dir \"${DSH_HOME:-$HOME/.dsh}/profiles/web\" exec dsh-auth user add admin --password-stdin\n   pnpm --dir \"${DSH_HOME:-$HOME/.dsh}/profiles/web\" exec dsh-auth user list\n   ```\n\n   想省事的话，每个 shell 会话加一次别名：\n\n   ```sh\n   alias dsh-auth='pnpm --dir \"${DSH_HOME:-$HOME/.dsh}/profiles/web\" exec dsh-auth'\n   ```\n\n2. **直接用 node 运行**（运行时不需要 pnpm）：\n\n   ```sh\n   node \"$DSH_HOME/profiles/web/node_modules/dsh-auth-gate/lib/cli.js\" user add admin --password-stdin\n   ```\n\n3. **全局安装**，`dsh-auth` 就会进入 PATH：\n\n   ```sh\n   npm install -g dsh-auth-gate\n   dsh-auth user add admin --password-stdin\n   ```\n\n无论用哪种方式调用，CLI 读写的都是同一份共享用户列表（`$DSH_HOME/auth/users.yaml`，找不到时\n回退到 `~/.dsh/auth/users.yaml`），也就是插件读取的那份；全局安装的副本只是一个启动器。\n\n## 部署\n\n- [反向代理部署指南](docs/deployed/reverse-proxy_zh.md)：Caddy/nginx 配置、浏览器信任栅栏的坑\n  （放在反代后面时设置页返回 `403`，以及为什么只加认证修不好），以及推荐的半外壳拓扑。\n- [`docs/deployed/deployment_zh.md`](docs/deployed/deployment_zh.md)：运维清单、验收步骤（A–I）\n  和故障诊断。\n\n## 认证本地代理（可选）\n\n> ⚠️ **已知限制（任何 auth-gate 版本都改变不了）**：dsh 的设置页（「设置 → 模型」等）只有在\n> **页面来源是回环地址**（`localhost`/`127.x`）时才能编辑。这是 dsh 客户端自身的设计边界\n> （`isLoopback` 检查），和认证无关：在域名页面上打开设置弹窗会显示\n> \"settings are unavailable in this browser\"，无法编辑提供方和凭据，升级 dsh-auth-gate 也不会有\n> 任何变化。要编辑配置，请使用本节介绍的本地代理，或者直接在服务器上访问\n> `http://127.0.0.1:3080`。域名页面上的聊天和模型选择不受影响。\n\n> 半外壳拓扑解决了服务端的 `/api` 栅栏之后，dsh **客户端**仍然要求\"页面来源必须是回环地址\"；\n> `dsh-auth-proxy` 在用户本机提供一个回环页面入口，与 auth-gate 配合使用，让远程编辑配置也全程\n> 需要认证，且不修改 dsh 源码。完整设计见\n> [docs/deployed/local-proxy_zh.md](docs/deployed/local-proxy_zh.md)。\n\n- 零依赖的 Node 可执行文件（`dsh-auth-proxy`）：只监听 `127.0.0.1`，无状态转发页面和 API，\n  把 `events.mux`/`events.host` WebSocket 做隧道转发，并去掉 `Set-Cookie` 里的 `Secure` 属性以\n  适配 Safari。\n- 认证直接复用 auth-gate（密码模式和令牌模式都可以）：登录页和会话 cookie 原样透传。\n- **安全边界（deny-list，Phase 2.1）**：加上 `--mark-proxy` 后，带标记的请求命中\n  `host.pickDirectory`/`host.openPath`/`settings.openDocument`/`llm.discoverModels` 时，\n  服务端 guard 会返回 403，避免远程认证用户触发宿主的原生能力；未加标记时，行为与没有部署代理时\n  完全一致。\n\n```sh\ndsh-auth-proxy --listen 127.0.0.1:8443 --target https://your-domain.example --mark-proxy\n# 在浏览器打开 http://127.0.0.1:8443 → 登录 →「设置 → 模型」即可编辑\n```\n\nsystemd 示例：`deploy/systemd/dsh-auth-proxy.service.example`。\n\n## 环境要求\n\n- 服务器上需要 Node ≥ 22.19 和 pnpm。\n- dsh `0.1.x` / `0.2.x`（`engines.dsh` 声明为\n  `^0.1.0-rc.6 || ^0.1.5-rc.2 || ^0.1.7-alpha.1 || ^0.2.0-rc.1`）。运行时验证过的版本是 `0.1.5-rc.2` 与 `0.1.7-rc.2`（生产，按此顺序），以及\n  `0.1.7-alpha.1`、`0.2.0-rc.2`（隔离实例）；完整测试套件跑在 `0.2.0-rc.2` 的宿主包上；`0.1.6-*` 预发布版没有列入枚举，因为没有针对它们的版本验证（稳定版\n  `0.1.6` 由 `^0.1.5-rc.2` 覆盖）。插件使用的是宿主自带的\n  `@deepseek-ai/dsh-storage-domain` 和 `@deepseek-ai/cordis`（两者都是 peer 依赖，不会打进包），\n  所以只要 profile 由 dsh 基础包启动，依赖就是齐的。dsh `0.2.0-rc.2`（已在 `next` 线上）会拒绝安装、并在启动时**静默跳过**那些\n  `@deepseek-ai/dsh*` peer 范围不覆盖当前宿主版本的插件；这条判定**只读 peer**，不读\n  `engines.dsh`，而完全没有这类 peer 的插件根本不会被检查。所以 `0.2.0-rc.1` 这一个替代项在\n  `engines.dsh` 和 storage-domain peer **两处**都声明。\n- dsh 的 `web` profile 处于运行状态（`dsh --profile web`）。\n- 如果 `cookieSecure` 为 `true`，站点必须通过 https 提供服务（浏览器会拒绝在纯 http 下使用安全\n  cookie）。\n\n## 注意事项与局限\n\n这里只列用户最需要知道的部分；完整清单（含机制和对应的 ADR）见\n`docs/deployed/known-limitations_zh.md`。\n\n- 禁用用户只阻止**今后**的登录；已签发的会话由插件周期扫描吊销（`revokeSweepMs`，默认 5 秒内\n  生效；设为 `0` 则不清理，只能等 TTL 到期）。\n- 登录限速和 TOTP 防重放记录会在服务重启后清零。\n- 部署在反向代理后面时，必须配置 `clientIpHeader`（以及 `trustedProxyCidrs`），否则所有客户端\n  会共用锁定桶；登录与自助改密的桶是分开的，因此两个功能都会受影响。\n- 改密码时，即使\"吊销旧会话\"这一步失败，接口仍会按成功返回：失败会记入 error 日志，旧 cookie\n  到会话 TTL 到期前一直有效。\n- `Origin` 校验只覆盖两个已认证的状态变更 POST：`POST /auth/login` 仍只有 `SameSite=Lax` 这一层\n  跨站防护；重置若写盘成功但吊销会话失败，仍返回 `200` + `sessionsRevoked:false`（并记 error\n  日志），旧 cookie 到会话 TTL 到期前一直有效。\n- 重置不会改动目标的 TOTP 密钥；重置一个仍被禁用的账号也不会让它登得进来（登录路径恒拒禁用\n  用户），需要先执行 `dsh-auth user enable <name>`。\n- 管理员自己没启用 TOTP 时，管理端点是单因素认证；生产环境应给管理员启用 TOTP。\n- 本插件只保护 dsh 的 Web 入口；操作系统账号和配置文件需要你自己保持私密。\n\n## 开发\n\n本仓库遵循 [dsh-plugin-framework](https://github.com/TecFancy/dsh-plugin-framework) 的工程约定：\n跨 slice 只通过 barrel 引用，以 `npm run verify` 作为门禁链，并保留决策记录（ADR）。`verify`\n依次运行 format / lint / no-emdash / slice / lock / decisions / docs / readme-parity / type-check /\n覆盖率 80% / build / bundle；测试、构建和发版流程见 `docs/specs/development_zh.md`。\n\n## 许可证\n\n[MIT](./LICENSE)\n","readmeFilename":"README.zh.md"}