{"_id":"@agent-network-protocol/dsh-anp-identity","_rev":"9-ea3b6c4ca454ee895f6d6e220f25bcc0","name":"@agent-network-protocol/dsh-anp-identity","dist-tags":{"dsh-test":"0.1.0-dsh-test.20260831.1","latest":"0.1.3","next":"0.1.3-rc.2"},"versions":{"0.1.0-dsh-test.20260831.1":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.1.0-dsh-test.20260831.1","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","_id":"@agent-network-protocol/dsh-anp-identity@0.1.0-dsh-test.20260831.1","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"}],"homepage":"https://github.com/AgentNetworkProtocol/anp-identity#readme","bugs":{"url":"https://github.com/AgentNetworkProtocol/anp-identity/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"7335f5efe84706d0682bc5e7d5d1a2b1e38d58d0","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.1.0-dsh-test.20260831.1.tgz","fileCount":35,"integrity":"sha512-3K8bmmW72MLY/itq8vkyDVoAC1eHin1DyiilzJ47VQIcGWoy7xy5fXA8v7lP55yw/U9ay+03rxyN7/dRUsWi+A==","signatures":[{"sig":"MEYCIQCoBvagTQ1w25QNwBSeljMK76arQt5fpzuNQA7Kh/sn7gIhAKp92djMC3YkO7u6r+rm1ZVhrvgeIv2OqFmYAhQPaPoC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":215199},"main":"lib/index.js","type":"module","_from":"file:/tmp/dsh-test-tarballs/agent-network-protocol-dsh-anp-identity-0.1.0-dsh-test.20260831.1.tgz","types":"lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./package.json":"./package.json","./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"npm run build && vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run check:public && npm run check:generated && npm test","prepack":"npm run verify","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","check:public":"npm run build && node scripts/public-snapshot.mjs","update:public":"node scripts/public-snapshot.mjs --update","check:generated":"node scripts/check-generated.mjs","test:functional":"node scripts/run-functional-e2e.mjs"},"_npmUser":{"name":"chgaowei","email":"chgaowei@gmail.com"},"_resolved":"/tmp/dsh-test-tarballs/agent-network-protocol-dsh-anp-identity-0.1.0-dsh-test.20260831.1.tgz","_integrity":"sha512-3K8bmmW72MLY/itq8vkyDVoAC1eHin1DyiilzJ47VQIcGWoy7xy5fXA8v7lP55yw/U9ay+03rxyN7/dRUsWi+A==","repository":{"url":"git+https://github.com/AgentNetworkProtocol/anp-identity.git","type":"git","directory":"packages/dsh-anp-identity"},"_npmVersion":"11.17.0","description":"ANP Identity management plugin for DeepSeek Harness","directories":{},"_nodeVersion":"24.19.0","dependencies":{"proper-lockfile":"^4.1.2","@deepseek-ai/schemastery":"^3.18.1","@agent-network-protocol/anp-identity":"0.2.0-dsh-test.20260831.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^24.0.0","@deepseek-ai/cordis":"^4.0.1","@types/proper-lockfile":"^4.1.4","@agent-network-protocol/anp-identity":"file:../../bindings/node"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-anp-identity_0.1.0-dsh-test.20260831.1_1788134784963_0.923159005663678","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.1.1","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","_id":"@agent-network-protocol/dsh-anp-identity@0.1.1","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"}],"homepage":"https://github.com/AgentNetworkProtocol/anp-identity#readme","bugs":{"url":"https://github.com/AgentNetworkProtocol/anp-identity/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"f511765f180706cecf30c0a2e98e577b480bca46","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.1.1.tgz","fileCount":35,"integrity":"sha512-G4SqV7M5XxLBQpT1V5odak3iPM5TdqnTqnOTRkSSYaYwvryiX7hl/8MOX5IsJMqtNiDQ8L3tGd3KlKVIXU4ycg==","signatures":[{"sig":"MEUCID0O7ZxrWH7iVnJVgxpi4h1QRrSFIH1+CFICRV6p+zQ0AiEAk3gRoDrpV1AGnV7BKRJPSbO9ZMERoobtcdHcmBSA4OA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217186},"main":"lib/index.js","type":"module","_from":"file:/home/ecs-user/awiki-space/verification-runs/2026-09-09-sdk-release/agent-network-protocol-dsh-anp-identity-0.1.1.tgz","types":"lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./package.json":"./package.json","./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"npm run build && vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run check:public && npm run check:generated && npm test","prepack":"npm run verify","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","check:public":"npm run build && node scripts/public-snapshot.mjs","update:public":"node scripts/public-snapshot.mjs --update","check:generated":"node scripts/check-generated.mjs","test:functional":"node scripts/run-functional-e2e.mjs"},"_npmUser":{"name":"chgaowei","email":"chgaowei@gmail.com"},"_resolved":"/home/ecs-user/awiki-space/verification-runs/2026-09-09-sdk-release/agent-network-protocol-dsh-anp-identity-0.1.1.tgz","_integrity":"sha512-G4SqV7M5XxLBQpT1V5odak3iPM5TdqnTqnOTRkSSYaYwvryiX7hl/8MOX5IsJMqtNiDQ8L3tGd3KlKVIXU4ycg==","repository":{"url":"git+https://github.com/AgentNetworkProtocol/anp-identity.git","type":"git","directory":"packages/dsh-anp-identity"},"_npmVersion":"10.9.8","description":"ANP Identity management plugin for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.1","dependencies":{"proper-lockfile":"^4.1.2","@deepseek-ai/schemastery":"^3.18.1","@agent-network-protocol/anp-identity":"0.2.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^24.0.0","@deepseek-ai/cordis":"^4.0.1","@types/proper-lockfile":"^4.1.4","@agent-network-protocol/anp-identity":"file:../../bindings/node"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-anp-identity_0.1.1_1788948841884_0.5889721455558461","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.1.2","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","_id":"@agent-network-protocol/dsh-anp-identity@0.1.2","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"}],"homepage":"https://github.com/agent-network-protocol/anp-identity#readme","bugs":{"url":"https://github.com/agent-network-protocol/anp-identity/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"dist":{"shasum":"8ea893d6c836dfcd564b5787c9e73000eaaf98c3","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.1.2.tgz","fileCount":35,"integrity":"sha512-5fYT6bnaYI65qdrEbh/QhLMD60bnwhOF6v5/VZCG5dn1/TZ340VIy+CqHMd9p41oAMPkua27arqezlO4dMBTRg==","signatures":[{"sig":"MEYCIQCdsvCgB3TRjsWUXt8FXRht7D3fltwhZAWc/JleJeA9igIhAIz+Gk1pAc5k88ZnW6VV4OZoLaxNEFKb/STM1f6rT0da","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217247},"main":"lib/index.js","type":"module","_from":"file:/home/ecs-user/awiki-space/verification-runs/sdk-complete-release-20260911/identity-dsh-package/agent-network-protocol-dsh-anp-identity-0.1.2.tgz","types":"lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./package.json":"./package.json","./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./cordis.patch.yml":"./cordis.patch.yml"},"scripts":{"test":"npm run build && vitest run","build":"tsc -p tsconfig.json","verify":"npm run typecheck && npm run check:public && npm run check:generated && npm test","prepack":"npm run verify","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","check:public":"npm run build && node scripts/public-snapshot.mjs","update:public":"node scripts/public-snapshot.mjs --update","check:generated":"node scripts/check-generated.mjs","test:functional":"node scripts/run-functional-e2e.mjs"},"_npmUser":{"name":"chgaowei","email":"chgaowei@gmail.com"},"_resolved":"/home/ecs-user/awiki-space/verification-runs/sdk-complete-release-20260911/identity-dsh-package/agent-network-protocol-dsh-anp-identity-0.1.2.tgz","_integrity":"sha512-5fYT6bnaYI65qdrEbh/QhLMD60bnwhOF6v5/VZCG5dn1/TZ340VIy+CqHMd9p41oAMPkua27arqezlO4dMBTRg==","repository":{"url":"git+https://github.com/agent-network-protocol/anp-identity.git","type":"git","directory":"packages/dsh-anp-identity"},"_npmVersion":"10.9.8","description":"ANP Identity management plugin for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.1","dependencies":{"proper-lockfile":"^4.1.2","@deepseek-ai/schemastery":"^3.18.1","@agent-network-protocol/anp-identity":"0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^4.1.10","typescript":"^6.0.3","@types/node":"^24.0.0","@deepseek-ai/cordis":"^4.0.1","@types/proper-lockfile":"^4.1.4","@agent-network-protocol/anp-identity":"file:../../bindings/node"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/dsh-anp-identity_0.1.2_1789135894558_0.5376186106597942","host":"s3://npm-registry-packages-npm-production"}},"0.2.0-rc.1":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.2.0-rc.1","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","_id":"@agent-network-protocol/dsh-anp-identity@0.2.0-rc.1","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"},{"name":"howardchan","email":"lonely829@gmail.com"}],"homepage":"https://github.com/agent-network-protocol/anp-identity#readme","bugs":{"url":"https://github.com/agent-network-protocol/anp-identity/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"a717733cf121fba8a22495de67263857063b9d4a","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.2.0-rc.1.tgz","fileCount":94,"integrity":"sha512-5vd84FuEx3eAJvjs+YrBxobzbCBSEJbfvcgxneIV35NTiNS6MhrJdvI1xGMsqsu8Tkm/zuPmKOm+zuwTQYrPrw==","signatures":[{"sig":"MEQCIG7OdeVGGjgrrdraTB7s8B9VUGGuOCtzab1Pq00WO01zAiBggp9/JmCM2vfXERXU3yAozDfx4XotJSlIctUKdbJo0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2849947},"main":"lib/index.js","type":"module","_from":"file:/Users/howard/awiki-dsh/anp-pr8-release0815/npm-release-0.2.0-rc.1/agent-network-protocol-dsh-anp-identity-0.2.0-rc.1.tgz","types":"lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./remote":{"types":"./lib/remote.d.ts","default":"./lib/remote.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./user-client":{"types":"./lib/user-client.d.ts","default":"./lib/user-client.js"},"./package.json":"./package.json","./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./cordis.patch.yml":"./cordis.patch.yml","./management-remote":{"types":"./lib/management-remote.d.ts","default":"./lib/management-remote.js"}},"scripts":{"test":"npm run build && vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","verify":"npm run check:public && npm run typecheck && npm run check:generated && npm test","prepack":"npm run verify","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","check:public":"npm run build && node scripts/public-snapshot.mjs","update:public":"node scripts/public-snapshot.mjs --update","check:generated":"node scripts/check-generated.mjs","test:functional":"node scripts/run-functional-e2e.mjs"},"_npmUser":{"name":"howardchan","email":"lonely829@gmail.com"},"_resolved":"/Users/howard/awiki-dsh/anp-pr8-release0815/npm-release-0.2.0-rc.1/agent-network-protocol-dsh-anp-identity-0.2.0-rc.1.tgz","_integrity":"sha512-5vd84FuEx3eAJvjs+YrBxobzbCBSEJbfvcgxneIV35NTiNS6MhrJdvI1xGMsqsu8Tkm/zuPmKOm+zuwTQYrPrw==","deprecated":"Version numbering corrected: use 0.1.3-rc.1 (next). Functionality is unchanged; this is not a storage rollback.","repository":{"url":"git+https://github.com/agent-network-protocol/anp-identity.git","type":"git","directory":"packages/dsh-anp-identity"},"_npmVersion":"10.9.8","description":"ANP Identity management plugin for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.6.2","proper-lockfile":"^4.1.2","@deepseek-ai/schemastery":"^3.18.1","@agent-network-protocol/anp-identity":"0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"zod":"^4.6.2","clsx":"^2.0.0","anser":"^2.3.5","jsdom":"^26.1.0","katex":"^0.16.47","react":"^18.3.1","shiki":"^4.3.1","vitest":"^4.1.10","esbuild":"^0.25.12","react-dom":"^18.3.1","typescript":"^6.0.3","@types/node":"^24.0.0","@types/react":"^18.3.31","@shikijs/langs":"^4.3.1","mdast-util-gfm":"^3.1.0","mdast-util-math":"^3.0.0","@types/react-dom":"^18.3.7","@deepseek-ai/cordis":"4.0.2","@testing-library/dom":"^10.4.1","micromark-util-symbol":"^2.0.1","@testing-library/react":"^16.3.3","@types/proper-lockfile":"^4.1.4","micromark-extension-gfm":"^3.0.0","micromark-factory-space":"^2.0.1","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","micromark-util-character":"^2.1.1","micromark-core-commonmark":"^2.0.3","micromark-util-sanitize-uri":"^2.0.1","@deepseek-ai/dsh-api-gateway":"0.1.5-rc.1","@deepseek-ai/dsh-api-remotes":"0.1.5-rc.1","@deepseek-ai/dsh-client-store":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.1","@deepseek-ai/dsh-typert-registry":"0.1.5-rc.1","@deepseek-ai/cordis-plugin-loader":"1.0.3","@deepseek-ai/dsh-client-ui-layout":"0.1.5-rc.1","micromark-util-classify-character":"^2.0.1","@deepseek-ai/dsh-client-connection":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"0.1.5-rc.1","@agent-network-protocol/anp-identity":"file:../../bindings/node","@deepseek-ai/dsh-client-ui-primitives":"0.1.5-rc.1"},"peerDependencies":{"react":"^18.3.1","@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-api-remotes":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"^0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-layout":"^0.1.5-rc.1","@deepseek-ai/dsh-client-connection":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-primitives":"^0.1.5-rc.1"},"peerDependenciesMeta":{"react":{"optional":true},"@deepseek-ai/dsh-api-remotes":{"optional":true},"@deepseek-ai/dsh-client-ui-slots":{"optional":true},"@deepseek-ai/dsh-typert-protocol":{"optional":true},"@deepseek-ai/dsh-client-ui-layout":{"optional":true},"@deepseek-ai/dsh-client-connection":{"optional":true},"@deepseek-ai/dsh-client-ui-renderer":{"optional":true},"@deepseek-ai/dsh-client-ui-settings":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-anp-identity_0.2.0-rc.1_1789144681589_0.3450605839500427","host":"s3://npm-registry-packages-npm-production"}},"0.1.3-rc.1":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.1.3-rc.1","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","_id":"@agent-network-protocol/dsh-anp-identity@0.1.3-rc.1","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"},{"name":"howardchan","email":"lonely829@gmail.com"}],"homepage":"https://github.com/agent-network-protocol/anp-identity#readme","bugs":{"url":"https://github.com/agent-network-protocol/anp-identity/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"04dc13e6fb926e3e2d1be87f883cc8b26ce58e40","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.1.3-rc.1.tgz","fileCount":94,"integrity":"sha512-W3GUyKMlIVU5hy3+3vMqwubu3+uLUxWcwVrxGlyXtU9v7AoUOXTP3LghtXEfDrtH2pdM8vNomlG0Mlu+Kb0Fnw==","signatures":[{"sig":"MEYCIQC86BF2RCECl5yP8l4mY5wgwapzwupaw5Xphmb1G4hC4wIhALRQswRtfvPSFOqsZpq46AiCyaXgGSML0U1CswRXYuxg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2849947},"main":"lib/index.js","type":"module","_from":"file:/Users/howard/awiki-dsh/anp-pr8-release0815/npm-release-0.1.3-rc.1/agent-network-protocol-dsh-anp-identity-0.1.3-rc.1.tgz","types":"lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./remote":{"types":"./lib/remote.d.ts","default":"./lib/remote.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./user-client":{"types":"./lib/user-client.d.ts","default":"./lib/user-client.js"},"./package.json":"./package.json","./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./cordis.patch.yml":"./cordis.patch.yml","./management-remote":{"types":"./lib/management-remote.d.ts","default":"./lib/management-remote.js"}},"scripts":{"test":"npm run build && vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","verify":"npm run check:public && npm run typecheck && npm run check:generated && npm test","prepack":"npm run verify","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","check:public":"npm run build && node scripts/public-snapshot.mjs","update:public":"node scripts/public-snapshot.mjs --update","check:generated":"node scripts/check-generated.mjs","test:functional":"node scripts/run-functional-e2e.mjs"},"_npmUser":{"name":"howardchan","email":"lonely829@gmail.com"},"_resolved":"/Users/howard/awiki-dsh/anp-pr8-release0815/npm-release-0.1.3-rc.1/agent-network-protocol-dsh-anp-identity-0.1.3-rc.1.tgz","_integrity":"sha512-W3GUyKMlIVU5hy3+3vMqwubu3+uLUxWcwVrxGlyXtU9v7AoUOXTP3LghtXEfDrtH2pdM8vNomlG0Mlu+Kb0Fnw==","repository":{"url":"git+https://github.com/agent-network-protocol/anp-identity.git","type":"git","directory":"packages/dsh-anp-identity"},"_npmVersion":"10.9.8","description":"ANP Identity management plugin for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.6.2","proper-lockfile":"^4.1.2","@deepseek-ai/schemastery":"^3.18.1","@agent-network-protocol/anp-identity":"0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"zod":"^4.6.2","clsx":"^2.0.0","anser":"^2.3.5","jsdom":"^26.1.0","katex":"^0.16.47","react":"^18.3.1","shiki":"^4.3.1","vitest":"^4.1.10","esbuild":"^0.25.12","react-dom":"^18.3.1","typescript":"^6.0.3","@types/node":"^24.0.0","@types/react":"^18.3.31","@shikijs/langs":"^4.3.1","mdast-util-gfm":"^3.1.0","mdast-util-math":"^3.0.0","@types/react-dom":"^18.3.7","@deepseek-ai/cordis":"4.0.2","@testing-library/dom":"^10.4.1","micromark-util-symbol":"^2.0.1","@testing-library/react":"^16.3.3","@types/proper-lockfile":"^4.1.4","micromark-extension-gfm":"^3.0.0","micromark-factory-space":"^2.0.1","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","micromark-util-character":"^2.1.1","micromark-core-commonmark":"^2.0.3","micromark-util-sanitize-uri":"^2.0.1","@deepseek-ai/dsh-api-gateway":"0.1.5-rc.1","@deepseek-ai/dsh-api-remotes":"0.1.5-rc.1","@deepseek-ai/dsh-client-store":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.1","@deepseek-ai/dsh-typert-registry":"0.1.5-rc.1","@deepseek-ai/cordis-plugin-loader":"1.0.3","@deepseek-ai/dsh-client-ui-layout":"0.1.5-rc.1","micromark-util-classify-character":"^2.0.1","@deepseek-ai/dsh-client-connection":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"0.1.5-rc.1","@agent-network-protocol/anp-identity":"file:../../bindings/node","@deepseek-ai/dsh-client-ui-primitives":"0.1.5-rc.1"},"peerDependencies":{"react":"^18.3.1","@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-api-remotes":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"^0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-layout":"^0.1.5-rc.1","@deepseek-ai/dsh-client-connection":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-primitives":"^0.1.5-rc.1"},"peerDependenciesMeta":{"react":{"optional":true},"@deepseek-ai/dsh-api-remotes":{"optional":true},"@deepseek-ai/dsh-client-ui-slots":{"optional":true},"@deepseek-ai/dsh-typert-protocol":{"optional":true},"@deepseek-ai/dsh-client-ui-layout":{"optional":true},"@deepseek-ai/dsh-client-connection":{"optional":true},"@deepseek-ai/dsh-client-ui-renderer":{"optional":true},"@deepseek-ai/dsh-client-ui-settings":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-anp-identity_0.1.3-rc.1_1789144977627_0.6576582686166141","host":"s3://npm-registry-packages-npm-production"}},"0.1.3-rc.2":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.1.3-rc.2","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","_id":"@agent-network-protocol/dsh-anp-identity@0.1.3-rc.2","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"},{"name":"howardchan","email":"lonely829@gmail.com"}],"homepage":"https://github.com/agent-network-protocol/anp-identity#readme","bugs":{"url":"https://github.com/agent-network-protocol/anp-identity/issues"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"dist":{"shasum":"fd91b5a27cf04f48435a7151b60bfd957744e799","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.1.3-rc.2.tgz","fileCount":94,"integrity":"sha512-CnMz9ijcOfRbFJGXgxQUoZzcK0oa8lATiKEoLq/I/Mbhn8Hmbe3IUZEA4NO9lYlOCGglgjrO4QzaY23KIx1SQQ==","signatures":[{"sig":"MEUCIQCJHYAfREPbjG7Rf5Oc4rr74amZBssopdNJQEkKhBlfEAIgI80pojgmtUD++4cBX5aqegs2MOQd3UnOYLFbU/dp76s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2849995},"main":"lib/index.js","type":"module","types":"lib/index.d.ts","engines":{"node":"^22.19.0 || >=24.0.0"},"exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./remote":{"types":"./lib/remote.d.ts","default":"./lib/remote.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./user-client":{"types":"./lib/user-client.d.ts","default":"./lib/user-client.js"},"./package.json":"./package.json","./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./cordis.patch.yml":"./cordis.patch.yml","./management-remote":{"types":"./lib/management-remote.d.ts","default":"./lib/management-remote.js"}},"scripts":{"test":"npm run build && vitest run","build":"tsc -p tsconfig.json && node scripts/build-client.mjs","verify":"npm run check:public && npm run typecheck && npm run check:generated && npm test","prepack":"npm run verify","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","check:public":"npm run build && node scripts/public-snapshot.mjs","update:public":"node scripts/public-snapshot.mjs --update","check:generated":"node scripts/check-generated.mjs","test:functional":"node scripts/run-functional-e2e.mjs"},"_npmUser":{"name":"howardchan","email":"lonely829@gmail.com"},"repository":{"url":"git+https://github.com/agent-network-protocol/anp-identity.git","type":"git","directory":"packages/dsh-anp-identity"},"_npmVersion":"10.9.8","description":"ANP Identity management plugin for DeepSeek Harness","directories":{},"_nodeVersion":"22.23.2","dependencies":{"zod":"^4.6.2","proper-lockfile":"^4.1.2","@deepseek-ai/schemastery":"^3.18.1","@agent-network-protocol/anp-identity":"0.2.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.zh.md","devDependencies":{"zod":"^4.6.2","clsx":"^2.0.0","anser":"^2.3.5","jsdom":"^26.1.0","katex":"^0.16.47","react":"^18.3.1","shiki":"^4.3.1","vitest":"^4.1.10","esbuild":"^0.25.12","react-dom":"^18.3.1","typescript":"^6.0.3","@types/node":"^24.0.0","@types/react":"^18.3.31","@shikijs/langs":"^4.3.1","mdast-util-gfm":"^3.1.0","mdast-util-math":"^3.0.0","@types/react-dom":"^18.3.7","@deepseek-ai/cordis":"4.0.2","@testing-library/dom":"^10.4.1","micromark-util-symbol":"^2.0.1","@testing-library/react":"^16.3.3","@types/proper-lockfile":"^4.1.4","micromark-extension-gfm":"^3.0.0","micromark-factory-space":"^2.0.1","mdast-util-from-markdown":"^2.0.3","micromark-extension-math":"^3.1.0","micromark-util-character":"^2.1.1","micromark-core-commonmark":"^2.0.3","micromark-util-sanitize-uri":"^2.0.1","@deepseek-ai/dsh-api-gateway":"0.1.5-rc.1","@deepseek-ai/dsh-api-remotes":"0.1.5-rc.1","@deepseek-ai/dsh-client-store":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.1","@deepseek-ai/dsh-typert-registry":"0.1.5-rc.1","@deepseek-ai/cordis-plugin-loader":"1.0.3","@deepseek-ai/dsh-client-ui-layout":"0.1.5-rc.1","micromark-util-classify-character":"^2.0.1","@deepseek-ai/dsh-client-connection":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"0.1.5-rc.1","@agent-network-protocol/anp-identity":"file:../../bindings/node","@deepseek-ai/dsh-client-ui-primitives":"0.1.5-rc.1"},"peerDependencies":{"react":"^18.3.1","@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-api-remotes":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"^0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-layout":"^0.1.5-rc.1","@deepseek-ai/dsh-client-connection":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-primitives":"^0.1.5-rc.1"},"peerDependenciesMeta":{"react":{"optional":true},"@deepseek-ai/dsh-api-remotes":{"optional":true},"@deepseek-ai/dsh-client-ui-slots":{"optional":true},"@deepseek-ai/dsh-typert-protocol":{"optional":true},"@deepseek-ai/dsh-client-ui-layout":{"optional":true},"@deepseek-ai/dsh-client-connection":{"optional":true},"@deepseek-ai/dsh-client-ui-renderer":{"optional":true},"@deepseek-ai/dsh-client-ui-settings":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/dsh-anp-identity_0.1.3-rc.2_1789201455240_0.19230198953062994","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@agent-network-protocol/dsh-anp-identity","version":"0.1.3","description":"ANP Identity management plugin for DeepSeek Harness","type":"module","main":"lib/index.js","types":"lib/index.d.ts","exports":{".":{"types":"./lib/index.d.ts","default":"./lib/index.js"},"./provider":{"types":"./lib/provider.d.ts","default":"./lib/provider.js"},"./provider-api":{"types":"./lib/provider-api.d.ts","default":"./lib/provider-api.js"},"./user-client":{"types":"./lib/user-client.d.ts","default":"./lib/user-client.js"},"./client":{"types":"./lib/client/index.d.ts","default":"./lib/client.js"},"./remote":{"types":"./lib/remote.d.ts","default":"./lib/remote.js"},"./management-remote":{"types":"./lib/management-remote.d.ts","default":"./lib/management-remote.js"},"./cordis.patch.yml":"./cordis.patch.yml","./package.json":"./package.json"},"scripts":{"build":"tsc -p tsconfig.json && node scripts/build-client.mjs","typecheck":"tsc -p tsconfig.json --noEmit && tsc -p tsconfig.test.json --noEmit","test":"npm run build && vitest run","update:public":"node scripts/public-snapshot.mjs --update","check:public":"npm run build && node scripts/public-snapshot.mjs","check:generated":"node scripts/check-generated.mjs","verify":"npm run check:public && npm run typecheck && npm run check:generated && npm test","prepack":"npm run verify","test:functional":"node scripts/run-functional-e2e.mjs"},"keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"license":"Apache-2.0","repository":{"type":"git","url":"git+https://github.com/agent-network-protocol/anp-identity.git","directory":"packages/dsh-anp-identity"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"},"client":{"inject":["@deepseek-ai/dsh-client-ui-renderer","@deepseek-ai/dsh-api-remotes","@deepseek-ai/dsh-client-connection","@deepseek-ai/dsh-client-ui-layout","@deepseek-ai/dsh-client-ui-settings"],"platform":"web"}},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.2","@deepseek-ai/dsh-api-remotes":"^0.1.5-rc.1","@deepseek-ai/dsh-client-connection":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-layout":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-primitives":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"^0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"^0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"^0.1.5-rc.1","react":"^18.3.1"},"peerDependenciesMeta":{"@deepseek-ai/dsh-typert-protocol":{"optional":true},"@deepseek-ai/dsh-client-ui-renderer":{"optional":true},"@deepseek-ai/dsh-api-remotes":{"optional":true},"@deepseek-ai/dsh-client-connection":{"optional":true},"@deepseek-ai/dsh-client-ui-layout":{"optional":true},"@deepseek-ai/dsh-client-ui-settings":{"optional":true},"@deepseek-ai/dsh-client-ui-slots":{"optional":true},"@deepseek-ai/dsh-client-ui-primitives":{"optional":true},"react":{"optional":true}},"dependencies":{"@deepseek-ai/schemastery":"^3.18.1","proper-lockfile":"^4.1.2","zod":"^4.6.2","@agent-network-protocol/anp-identity":"0.2.2"},"devDependencies":{"@agent-network-protocol/anp-identity":"file:../../bindings/node","@deepseek-ai/cordis":"4.0.2","@deepseek-ai/cordis-plugin-loader":"1.0.3","@deepseek-ai/dsh-api-gateway":"0.1.5-rc.1","@deepseek-ai/dsh-api-remotes":"0.1.5-rc.1","@deepseek-ai/dsh-client-connection":"0.1.5-rc.1","@deepseek-ai/dsh-client-store":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-layout":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-primitives":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-renderer":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-settings":"0.1.5-rc.1","@deepseek-ai/dsh-client-ui-slots":"0.1.5-rc.1","@deepseek-ai/dsh-typert-protocol":"0.1.5-rc.1","@deepseek-ai/dsh-typert-registry":"0.1.5-rc.1","@shikijs/langs":"^4.3.1","@testing-library/dom":"^10.4.1","@testing-library/react":"^16.3.3","@types/node":"^24.0.0","@types/proper-lockfile":"^4.1.4","@types/react":"^18.3.31","@types/react-dom":"^18.3.7","anser":"^2.3.5","clsx":"^2.0.0","esbuild":"^0.25.12","jsdom":"^26.1.0","katex":"^0.16.47","mdast-util-from-markdown":"^2.0.3","mdast-util-gfm":"^3.1.0","mdast-util-math":"^3.0.0","micromark-core-commonmark":"^2.0.3","micromark-extension-gfm":"^3.0.0","micromark-extension-math":"^3.1.0","micromark-factory-space":"^2.0.1","micromark-util-character":"^2.1.1","micromark-util-classify-character":"^2.0.1","micromark-util-sanitize-uri":"^2.0.1","micromark-util-symbol":"^2.0.1","react":"^18.3.1","react-dom":"^18.3.1","shiki":"^4.3.1","typescript":"^6.0.3","vitest":"^4.1.10","zod":"^4.6.2"},"engines":{"node":"^22.19.0 || >=24.0.0"},"_id":"@agent-network-protocol/dsh-anp-identity@0.1.3","bugs":{"url":"https://github.com/agent-network-protocol/anp-identity/issues"},"homepage":"https://github.com/agent-network-protocol/anp-identity#readme","_integrity":"sha512-CeAPumao4OoFk69HYL9j1ZzK+kmwKKYUBvkeUz13CdAaFSZvZzoAyX2nzrglmdTSHNGcbzGYDMNCtUoOkl5/0w==","_resolved":"/Users/howard/awiki-dsh/analysis/registration-cleanup-stable-20260914/identity-tarballs/agent-network-protocol-dsh-anp-identity-0.1.3.tgz","_from":"file:/Users/howard/awiki-dsh/analysis/registration-cleanup-stable-20260914/identity-tarballs/agent-network-protocol-dsh-anp-identity-0.1.3.tgz","_nodeVersion":"22.23.2","_npmVersion":"10.9.8","dist":{"integrity":"sha512-CeAPumao4OoFk69HYL9j1ZzK+kmwKKYUBvkeUz13CdAaFSZvZzoAyX2nzrglmdTSHNGcbzGYDMNCtUoOkl5/0w==","shasum":"0d99b2badfa9ccbd8029ffc4a99cf47a6151a626","tarball":"https://registry.npmjs.org/@agent-network-protocol/dsh-anp-identity/-/dsh-anp-identity-0.1.3.tgz","fileCount":94,"unpackedSize":2849990,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE0LGbUc0J/pr/3wZjYsn/uQJtJ5PJ14EOk57e6ILuOsAiBYahcldBvtUgiivUAhzDDBBdgQMti/xm6mNwRcMHamAw=="}]},"_npmUser":{"name":"howardchan","email":"lonely829@gmail.com"},"directories":{},"maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"},{"name":"howardchan","email":"lonely829@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-anp-identity_0.1.3_1789378303347_0.5537477866661926"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-31T00:06:24.765Z","modified":"2026-09-14T09:31:43.656Z","0.1.0-dsh-test.20260831.1":"2026-08-31T00:06:25.109Z","0.1.1":"2026-09-09T10:14:02.055Z","0.1.2":"2026-09-11T14:11:34.685Z","0.2.0-rc.1":"2026-09-11T16:38:01.787Z","0.1.3-rc.1":"2026-09-11T16:42:57.780Z","0.1.3-rc.2":"2026-09-12T08:24:15.378Z","0.1.3":"2026-09-14T09:31:43.485Z"},"bugs":{"url":"https://github.com/agent-network-protocol/anp-identity/issues"},"license":"Apache-2.0","homepage":"https://github.com/agent-network-protocol/anp-identity#readme","keywords":["anp","did","identity","deepseek-harness","dsh-plugin"],"repository":{"type":"git","url":"git+https://github.com/agent-network-protocol/anp-identity.git","directory":"packages/dsh-anp-identity"},"description":"ANP Identity management plugin for DeepSeek Harness","maintainers":[{"name":"chgaowei","email":"chgaowei@gmail.com"},{"name":"howardchan","email":"lonely829@gmail.com"}],"readme":"# 面向 DeepSeek Harness 的 ANP Identity\n\n`@agent-network-protocol/dsh-anp-identity` 为 DSH 应用提供共享的多 DID 身份 Store。应用不需要各自实现私钥托管、DID Document 生命周期、崩溃恢复和请求签名。\n\n普通插件通过 `bindIdentityClient(ctx)` 申请创建身份和使用授权；`ctx.anpIdentity` 的旧 lease 接口保留给可信 Host 集成。私钥操作由 ANP Identity 原生模块完成；私钥在磁盘上加密保存。DSH catalog 只记录 label、handle 和 consumer grant 等非秘密元数据。\n\n## 它解决什么问题\n\n一个 DSH 安装中可能同时存在多个插件和多个 DID。这个插件统一解决：\n\n- DID 私钥由谁保管，以及某个签名目的应该使用哪类密钥；\n- DID Document 更新如何在进程崩溃或发布结果不确定时恢复；\n- 多个插件如何共用身份，而不让任一普通插件取得私钥；\n- HTTP 请求如何完成身份认证，同时不把可复用 Header patch 交给调用方；\n- 多 DID、通用 handle、consumer grant 和删除保护如何保持一致。\n\nANP Identity Store 是身份与加密密钥的真值。插件增加事务化的 catalog：创建前写 intent，删除前写 tombstone；跨进程修改使用文件锁、generation 检查和原子 rename。异常重启后流程会继续完成，未知身份只会成为无授权的 `Unclaimed`，不会猜测所有者。管理功能将 catalog 升级为 v2，升级和回滚必须遵循 [V7-MANAGEMENT.md](./V7-MANAGEMENT.md) 的停写与一致性要求。\n\n## 主要能力\n\n- 多 DID 创建、列举、打开、删除和恢复；\n- 按 purpose 约束的 Ed25519 签名与验签；\n- Origin Proof 签名；\n- 事务化 DID Document Change Session；\n- consumer-scoped lease、grant、label 和唯一 handle；\n- 有上限的 HTTP 认证 dispatcher：只允许配置的精确 HTTPS origin，body 最大 4 MiB，拒绝调用方预置认证 Header，并强制 manual redirect；\n- 独立的 Host Provider lease，供 AWiki IM Core 等可信原生消费者使用。sealed ECDH、sealed 导入导出、enrollment、Root Transfer 和精确 Header patch 只在这个 Host 面存在。\n\n## 它不解决什么\n\n- 它不是 DID Registry、Resolver、发布服务、备份系统或钱包 UI；\n- 它不实现 AWiki 消息、Bearer Token、challenge 重试或 P5 Root Transfer；这些属于 `dsh-awiki` 与 AWiki IM Core；\n- 它不向 Browser、Remote、Agent Tool 或模型暴露 raw ECDH shared secret、Root Key、导入私钥和通用签名工具；\n- consumer 名称是同进程策略与诊断边界，可防误用，但不是针对同一 Node.js 进程内恶意代码的沙箱。\n\n完整边界见 [BOUNDARY.md](./BOUNDARY.md)。\n\n## 安装与配置\n\n```bash\npnpm add @agent-network-protocol/dsh-anp-identity\n```\n\n本包会安装精确兼容的 ANP Identity wrapper，由 wrapper 自动选择当前平台的预编译原生包；\n用户不需要 Rust 或源码 checkout。Cordis 中先装载 Service，再装载 Provider：\n\n随包发布的 DSH layer 默认向 `@awiki/dsh-plugin` 开放 client 和 Host Provider，确保文档中的\n双插件安装无需额外本地 patch。其他部署可通过\n`DSH_ANP_IDENTITY_ALLOW_CONSUMERS` 与\n`DSH_ANP_IDENTITY_ALLOW_PROVIDER_CONSUMERS` JSON 数组完整替换默认值。\n\n```yaml\n- insert:\n    - id: anp-identity\n      name: '@agent-network-protocol/dsh-anp-identity'\n      config:\n        stateRoot: /var/lib/dsh/anp-identity\n        allowConsumers: ['example/identity-client', '@awiki/dsh-plugin']\n        allowProviderConsumers: ['@awiki/dsh-plugin']\n        httpAllowedOrigins:\n          example/identity-client: ['https://api.example.com']\n\n    - id: anp-identity-provider\n      name: '@agent-network-protocol/dsh-anp-identity/provider'\n      config:\n        stateRoot: /var/lib/dsh/anp-identity\n        rootKeyProvider: keyring\n        rootKeyProviderId: anp-identity/dsh\n```\n\nkeyring 的 `rootKeyProviderId` 格式为 `service/account`；env 模式填写环境变量名；injected 模式填写 key id，并且只能通过可信 Host 代码以 Buffer 注入，不能写入 Loader YAML。`local-file` 必须显式启用；如果 Store 与 Root Key 文件被一起复制，攻击者可以离线解密 Store。\n\n## 其他 DSH 插件如何使用\n\n普通插件由 Host 加入 `userConsumers`，通过 `bindIdentityClient(ctx)` 提交请求，等待创建确认，再单独申请使用授权。创建不会发布 DID 文档、注册 Handle 或自动授予使用权。支持单次授权和持续到撤销的永久授权；当前默认授予全部普通使用权限，暂不支持逐项选择。\n\n完整 API 与边界见 [管理说明](./V7-MANAGEMENT.md)；可运行示例见 [HTTP 签名 demo](../../demo/dsh-http/README.md)。设置页包含 Handle/DID、授权请求、权限详情和撤销入口。\n\n### 既有可信 Host 集成\n\n以下旧 lease 示例仅适用于明确配置的可信 Host 集成，不适用于普通 user-mode 插件。\n\n调用插件声明 `inject = ['anpIdentity']`，申请最小 capability，并让 lease 随自己的 Cordis fiber 释放：\n\n```ts\nconst lease = await ctx.anpIdentity.acquireClient({\n  consumer: 'example/identity-client',\n  capabilities: ['identity:read', 'identity:create', 'identity:sign'],\n})\n\nconst identity = await lease.create({\n  label: 'Example agent',\n  handle: 'example.agent',\n  identity: {\n    profile: 'e1',\n    domain: 'agents.example.com',\n    pathSegments: ['agents', 'example'],\n    managedKeys: [\n      { fragment: 'root', role: 'root_control' },\n      { fragment: 'request', role: 'request_signing' },\n    ],\n  },\n})\n\nconst snapshot = await identity.publicIdentity()\nawait identity.sign({\n  purpose: 'authentication',\n  kid: `${snapshot.reference.did}#request`,\n  payload: Buffer.from('canonical application bytes'),\n})\n```\n\nHTTP 认证需要申请 `identity:http-auth`，由 Host 为该 consumer 配置精确 origin，然后调用 `identity.authenticatedHttp.dispatch(request, transport)`。普通 consumer 永远拿不到 Header patch。\n\n## 模块协作\n\n| 模块 | 职责 |\n| --- | --- |\n| `ctx.anpIdentity` | 公共多 DID Facade、client lease、catalog、grant、handle 和 HTTP dispatch |\n| `./provider` | 打开原生 Store，并按 Cordis 生命周期注册唯一 Provider |\n| `./provider-api` | 提供给 AWiki IM Core 等外部原生消费者的版本化 Host-only 契约 |\n| `@agent-network-protocol/anp-identity` | 加密密钥托管、DID Document、签名、恢复和 sealed secret handoff |\n| `dsh-awiki` | AWiki 账户、消息、Bearer Token/challenge 状态和应用工作流 |\n\n移动端不依赖这个 DSH 包，可直接链接 ANP Identity Rust crate，同时复用相同的 Facade/Host SPI 语义。\n\n## 恢复语义\n\n- Store 有身份、catalog/journal 没有记录：重建为无 grant 的 `Unclaimed`；\n- catalog 有记录、Store 没有身份：删除 dangling 条目；\n- create intent 未完成：在能够唯一识别 Store 身份时继续提交；\n- deletion tombstone 未完成：可在瞬时原生失败后继续删除；如果删除响应丢失，只有在确认\n  精确的原生身份已经不存在后才移除 tombstone；\n- catalog 损坏：grant 与 handle fail closed。显式执行 `recover()` 后，按 Store 重建为 `Unclaimed`，不会伪造授权。\n\nHost Provider 删除属于显式的本地破坏性操作。它会先丢弃未发布的本地 Document 或\nEnrollment 状态，再删除完整身份 namespace；该操作不会撤销或修改远端 DID。\n\n`recover()` 会获取 Store 级独占锁并执行全量恢复，不应作为轮询 API。\n\n## 开发验证\n\n```bash\nnpm install --legacy-peer-deps\nnpm run verify\n```\n\nHTTP 签名功能 E2E 还需要 `dsh` CLI、Node `^22.19.0` 或 `>=24.0.0`、\n`pnpm`、`uv`、OpenSSL，以及工作区约定的相邻 ANP checkout：\n\n```bash\nnpm run test:functional\n```\n\n该命令会构建 debug native binding，将 native package、DSH 插件和测试\nconsumer 打包并安装到临时的真实 DSH profile，再向使用 ANP Python verifier\n的独立 HTTPS 进程发送签名 GET 和 POST；篡改后的 POST 必须被拒绝。运行结束\n后会删除临时 DSH profile、Store、证书和 tarball。\n\n许可证：Apache-2.0。\n","readmeFilename":"README.zh.md"}