@awiki/dsh-pap 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +130 -143
- package/README.zh-CN.md +271 -0
- package/lib/browser-client.js +30 -14
- package/lib/browser-client.js.map +2 -2
- package/lib/client/views.js +34 -5
- package/lib/tools.js +4 -4
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,198 +1,185 @@
|
|
|
1
|
-
# DSH PAP
|
|
1
|
+
# DSH PAP
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
[the fixed 0.3 spec](https://github.com/personal-agent-protocol/personal-agent-protocol/blob/6fb46d381ac1b94265795132af13848ec442b6f6/content/versions/0.3/spec.mdx),
|
|
5
|
-
Git blob `01e9dc34bacb73ef0a740cc3bae77d82f0be0d37`.
|
|
3
|
+
**A PAP 0.3 client for DeepSeek Harness (DSH), powered by a reusable, locally held agent identity.**
|
|
6
4
|
|
|
7
|
-
|
|
5
|
+
English | [简体中文](README.zh-CN.md)
|
|
8
6
|
|
|
9
|
-
|
|
7
|
+
[PAP 0.3 specification](https://github.com/personal-agent-protocol/personal-agent-protocol/blob/6fb46d381ac1b94265795132af13848ec442b6f6/content/versions/0.3/spec.mdx) · [Shared identity](https://github.com/agent-network-protocol/anp-identity) · [Service Agent demo](https://github.com/AgentConnect/service-agent) · [Apache-2.0](LICENSE)
|
|
10
8
|
|
|
11
|
-
|
|
12
|
-
- 随机且私有的 Company User/Agent ID、独立匿名身份、sid 和加密事务状态。匿名 Session 禁止账户 Token。Agent ID 不改变 User ID。新账户 slot 使用新 Session。
|
|
13
|
-
- 通过 C 的 `./protocol-client` 调用 A 本地 custody:临时 P-256 key、身份 Delegation、逐请求 Session、独立 DPoP key、客户端断言和重启后 handle 恢复。F 不打开 NativeStore,不持有或导出这些私钥,不调用远程 signer。
|
|
14
|
-
- 每个实际资源请求重新签 `Poppy-Session`,绑定实际 htm/htu,带账户 Token 时才有 ath。发现、描述和 OAuth 请求不携 Session;禁止调用者注入认证 Header;凭据重定向停止。
|
|
15
|
-
- Direct Sign-In:显式用户入口、state、issuer、43 字符 S256 PKCE verifier、已发布 callback 校验、标准账户 Token、可选 RFC 9449 DPoP 和按 AS/资源分离的 nonce。
|
|
16
|
-
- 独立 PAP account store:scope/resource 约束、refresh single-flight/CAS、轮换 Token 原子替换、丢回执标为 uncertain、退出撤销及 revocation_pending。持久 account slot epoch 同时约束登录事务、refresh 和发送前检查;退出取消 pending/exchanging 登录,迟到 Token 只保留撤销信息。并发资源调用会等待同一刷新代次。
|
|
17
|
-
- `invalid_session` 停止,`session_ended` 新 sid 后最多重发一次,仅 GET/HEAD/OPTIONS 的 Token 错误可刷新后最多重发一次;副作用 API 的认证 challenge 不自动重放。网络超时或丢回执不自动重发副作用请求。429 持久保存 Retry-After fence,原请求不重放,后续显式请求在窗口前不签名或发送。
|
|
9
|
+
## The problem
|
|
18
10
|
|
|
19
|
-
|
|
11
|
+
A personal agent should be able to connect to independent service agents without registering a fresh identity and handling another private key at every service. This plugin lets a DSH agent **reuse an existing, user-authorized identity** for PAP Company discovery, Delegation, signed Sessions and approved business operations.
|
|
20
12
|
|
|
21
|
-
|
|
13
|
+
PAP is one of three complementary paths in the shared-identity system:
|
|
22
14
|
|
|
23
|
-
|
|
15
|
+
| Protocol | Identity and authentication | Integration |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| **ANP** | Published `did:wba` identity; per-request HTTP signatures | [dsh-anp](https://github.com/agent-network-protocol/dsh-anp) |
|
|
18
|
+
| **MCP** | CIMD/JWKS client metadata; `private_key_jwt` and policy-approved `client_credentials` OAuth | [DSH MCP Host](https://github.com/AgentConnect/dsh-harness-identity) |
|
|
19
|
+
| **PAP 0.3** | Identity-signed Delegation and per-request `Poppy-Session`, with optional separate account authorization | **This plugin** |
|
|
24
20
|
|
|
25
|
-
|
|
26
|
-
- id: pap
|
|
27
|
-
name: '@awiki/dsh-pap/plugin'
|
|
28
|
-
config:
|
|
29
|
-
enabled: true
|
|
30
|
-
stateRoot: /absolute/profile/pap
|
|
31
|
-
policyRef: approved-c-policy-id
|
|
32
|
-
keyringService: org.agentconnect.dsh-pap
|
|
33
|
-
```
|
|
21
|
+
One local identity anchors these protocol-specific credentials. **A PAP Session is not an MCP access token, and neither bypasses Company policy or account permissions.** Private signing keys stay with the local [ANP Identity](https://github.com/agent-network-protocol/anp-identity) Host, not with dsh-pap or a remote Company.
|
|
34
22
|
|
|
35
|
-
|
|
23
|
+
## Features
|
|
36
24
|
|
|
37
|
-
|
|
25
|
+
- Discover PAP Companies and advertised OpenAPI operations over constrained HTTPS.
|
|
26
|
+
- Create regular or anonymous signed-out Sessions and generate fresh PAP Delegation/Session proofs through the local identity Host.
|
|
27
|
+
- Enable only explicitly user-approved operations; the agent cannot choose arbitrary endpoints, methods, headers, tokens or scopes.
|
|
28
|
+
- Support **Direct Sign-In** when a Company requires an account: user-initiated OAuth authorization, PKCE, optional DPoP, protected token storage, refresh and sign-out.
|
|
29
|
+
- Store per-identity/Company Session and account state in encrypted local storage, using a Host secret provider, OS keyring or an explicitly selected protected local-file key store.
|
|
30
|
+
- Expose a DSH settings interface and narrowly scoped model tools.
|
|
38
31
|
|
|
39
|
-
|
|
32
|
+
The reference [ANP website Service Agent](https://agent.agent-network-protocol.com/ready) supports **signed-out PAP Sessions without an account or browser login**. A separate Company (for example a suitably configured Frontvia integration) is required to test account sign-in. The plugin does not automatically grant account access.
|
|
40
33
|
|
|
41
|
-
|
|
42
|
-
|---|---|
|
|
43
|
-
| `identity/select` | 选择 C 已批准的已发布 identity reference |
|
|
44
|
-
| `company/discover` | 按用户指定域执行安全发现;Company 不由包预造 |
|
|
45
|
-
| `session/connect` / `session/disconnect` | 建立 signed-out 或明确 account slot 的 Session/断开 |
|
|
46
|
-
| `operation/enable` / `operation/disable` | 将已发现 operation 绑定到用户选定的 Session 与 scope,或撤销 |
|
|
47
|
-
| `account/sign-in` | 选定 operation/resource 和 scopes,使用实际已发布的 HTTPS callback 发起 Direct |
|
|
48
|
-
| `account/collect` / `account/refresh` / `account/sign-out` | 原设备一次领取后换码/显式刷新或退出指定账户 slot;不接受 grantRef、resource、scope 或 Token |
|
|
34
|
+
## Architecture
|
|
49
35
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
policyRef: approved-c-policy-id
|
|
67
|
-
secretStore: local-file
|
|
68
|
-
secretsRoot: /Users/your-name/.dsh/secrets/pap
|
|
36
|
+
```text
|
|
37
|
+
DSH user / settings UI DSH Agent
|
|
38
|
+
| identity + Company | approved operation only
|
|
39
|
+
| selection / consent v
|
|
40
|
+
v pap_status / pap_operations / pap_request
|
|
41
|
+
PAP management Remote ---------> dsh-pap Host plugin
|
|
42
|
+
|
|
|
43
|
+
limited identity capability
|
|
44
|
+
|
|
|
45
|
+
ANP Identity (same Host)
|
|
46
|
+
local Delegation / Session / DPoP signing
|
|
47
|
+
|
|
|
48
|
+
signed HTTPS request
|
|
49
|
+
v
|
|
50
|
+
PAP Company
|
|
51
|
+
OpenAPI / business resources
|
|
69
52
|
```
|
|
70
53
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
文件后端保存随机 32 字节的 PAP 状态加密密钥:macOS/Linux 设置目录 `0700`、文件 `0600` 并检查当前用户所有权;Windows 使用系统 PowerShell 设置当前用户 SID 的 DACL、移除继承权限,不依赖 chmod。临时文件写入并刷盘后,通过不覆盖已有目标的原子 hard link 发布;并发创建复用胜出的文件。需要支持这些文件权限和 hard link 的本地文件系统(例如 APFS、NTFS)。Windows 刷新文件,不尝试打开目录执行 fsync。
|
|
74
|
-
|
|
75
|
-
PAP 状态继续加密保存,Agent/Delegation/DPoP 私钥仍由 ANP Identity 托管。文件权限保护边界是当前 OS 用户账户;同用户进程和管理员仍可能访问。已有密文找不到对应密钥或密钥文件损坏时返回 `credential_unavailable`,不会为已有密文生成替代密钥。备份及迁移需同时保留匹配的状态与密钥,并在目标系统重设权限。
|
|
76
|
-
|
|
77
|
-
独立 Host 集成也可从根包或 `./file-secrets` 导入 `FileSecretStore`;`./host-secrets` provider 同样接受 `secretStore: local-file` 和 `secretsRoot`。保留 keyring 时,Linux 仍需要可用的 `secret-tool`。本次未改变默认后端。
|
|
54
|
+
The shared identity can publish DID, CIMD and JWKS material through an identity service such as [AWiki](https://awiki.me); its private keys remain on the client. The PAP plugin owns protocol state and account-token handling, but **does not load or export the Agent/Delegation/DPoP private keys**.
|
|
78
55
|
|
|
56
|
+
## Requirements and installation
|
|
79
57
|
|
|
80
|
-
|
|
58
|
+
- Node.js **^22.19.0 or >=24.0.0**.
|
|
59
|
+
- Compatible DSH Host (current integration targets DSH `0.2.2-rc.1`, Cordis `4.1.0`).
|
|
60
|
+
- [ANP Identity](https://github.com/agent-network-protocol/anp-identity) in the same Host, with a previously created and published identity and approved PAP consumer policy.
|
|
61
|
+
- A writable, private absolute `stateRoot` and working secret backend. The default is the Linux Secret Service / keyring; an explicit `local-file` backend supports additional platforms.
|
|
81
62
|
|
|
82
|
-
|
|
63
|
+
Install the bundle when its package is available in your registry:
|
|
83
64
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
产品将 Company/Session/operation 授权保存在每个 identity binding 独立目录;`selected-identity.json` 仅保存三字段公开 reference(0600、原子替换),每次恢复仍需 C 重新批准 binding。`pap-state.enc` 以 AES-256-GCM 加密,AAD 绑定 schema 和 identity/owner/client 命名空间;目录 0700、文件 0600。跨进程锁内使用 fsync + rename 原子提交;公开映射、Delegation、Token、PKCE 和 callback 领取状态均不明文落盘。状态目录备份与 Host secret store 备份应分别保管。Cordis Context disposer 会关闭 engine、取消在途资源请求并 dispose C facade;输出前仍检查原 engine/selection 与调用 Context,忽略 abort 的旧 transport 也不能交出迟到结果。Keyring provider 的 locksRoot 须使用独立目录,不能与 PAP stateRoot 使用同一个锁目录。
|
|
89
|
-
|
|
90
|
-
恢复后重新经 C 获取目标许可并复核 key handle;持久 handle 本身不授予签名权。中断的 refresh 标为 uncertain,换码中断要求重新授权。委托默认一小时且校验最大二十四小时;自动/显式轮换保持 User ID/sid,并保存旧 key 的停用重试引用。每次 key 创建先持久预留 attempt;创建回执未知时复用原幂等 operation,已停用的失败 attempt 则不会再用;退休未确认时先完成清理再创建下一把 key。外部 Company 可缓存 Delegation 到 exp,本地停止签名不等于立即全网撤销。
|
|
91
|
-
|
|
92
|
-
元数据五分钟过期后自动重新发现;发现失败直接停止,不降级无 AS。没有 expires_in 的 Token 保持未知远端寿命,仅施加本地二十四小时使用上限,不猜测 opaque Token 内容。账户 sign-out 停止本地 Token 使用;未确认撤销保留最小加密重试信息。普通 `disconnectPap` 停止该连接,不隐式退出其他共用账户 Session。
|
|
93
|
-
|
|
94
|
-
## 构建、测试和依赖来源
|
|
65
|
+
```sh
|
|
66
|
+
pnpm dsh plugin --profile <profile> add @awiki/dsh-pap@0.1.1
|
|
67
|
+
```
|
|
95
68
|
|
|
96
|
-
|
|
69
|
+
Build and run unit/component checks from source:
|
|
97
70
|
|
|
98
|
-
```
|
|
71
|
+
```sh
|
|
72
|
+
git clone https://github.com/AgentConnect/dsh-pap.git
|
|
73
|
+
cd dsh-pap
|
|
99
74
|
npm ci --ignore-scripts
|
|
100
75
|
npm run typecheck
|
|
101
|
-
npm test
|
|
102
76
|
npm run build
|
|
103
|
-
npm
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
生产依赖固定 `proper-lockfile@4.1.2` 和 `zod@4.6.2`(严格管理 DTO);JOSE 验证使用 Node crypto。Cordis 固定 `4.1.0`,可选 Host peer 为 typert/tools `0.2.2-rc.1`;依赖 integrity 在 package-lock.json 固定。C/A 的新 PAP API 尚未发布到 registry,因此本阶段依赖实际 Host capability 结构绑定,不能宣称已通过新 API 的 registry 安装验证或正式发行门槛。此阶段不将未发布本地源码写作正式 SDK lock 来源。
|
|
107
|
-
|
|
108
|
-
`npm test` 是本仓库单位/隔离组件检查,不启动产品 E2E、System Test 或远程部署。`tests/fixture.ts` 的 in-memory ECDSA custody 仅供测试,和生产 C/A 路径分开。`tests/vectors/local-signer-v2.json` 来自 A 的真实本地 native 公有测试向量,独立 Node 验签;没有私钥。它证明 wire 兼容,不替代实际 C/A Host 接入。
|
|
109
|
-
|
|
110
|
-
G 在隔离 HTTPS/PG 环境提供合成用户和 fixture CIMD 时,可执行:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
npx tsx scripts/frontvia-component.ts /absolute/path/to/handoff.json --account
|
|
77
|
+
npm test
|
|
114
78
|
```
|
|
115
79
|
|
|
116
|
-
|
|
80
|
+
The package exposes separate Host service, management Remote, tool and web-client entries. The bundled [Cordis patch](cordis.patch.yml) registers them **disabled by default**; installing the bundle alone does not sign requests or discover Companies. Ensure the installed package version is compatible with your ANP Identity Host API. Source/component verification is not a claim of completed production end-to-end acceptance.
|
|
117
81
|
|
|
118
|
-
|
|
82
|
+
## Configure the Host
|
|
119
83
|
|
|
120
|
-
|
|
84
|
+
Configure the **exact** installed identity consumer `@awiki/dsh-pap/plugin` in ANP Identity. The Host must approve the selected identity, purpose/policy, Company targets and scopes. The model cannot change these bindings.
|
|
121
85
|
|
|
122
|
-
|
|
86
|
+
Example Host plugin row:
|
|
123
87
|
|
|
124
|
-
```
|
|
125
|
-
|
|
88
|
+
```yaml
|
|
89
|
+
- id: pap
|
|
90
|
+
name: '@awiki/dsh-pap/plugin'
|
|
91
|
+
config:
|
|
92
|
+
enabled: true
|
|
93
|
+
stateRoot: /absolute/private/dsh/profile/pap
|
|
94
|
+
policyRef: approved-c-policy-id
|
|
95
|
+
keyringService: org.agentconnect.dsh-pap
|
|
126
96
|
```
|
|
127
97
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
C/A 本地 custody 与 G 实际账户组合链:
|
|
98
|
+
If the default keyring is unavailable, **explicitly** select file-backed key storage. The two directories must be distinct, non-overlapping absolute paths:
|
|
131
99
|
|
|
132
|
-
```
|
|
133
|
-
|
|
100
|
+
```yaml
|
|
101
|
+
- id: pap
|
|
102
|
+
name: '@awiki/dsh-pap/plugin'
|
|
103
|
+
config:
|
|
104
|
+
enabled: true
|
|
105
|
+
stateRoot: /absolute/private/dsh/profile/pap
|
|
106
|
+
policyRef: approved-c-policy-id
|
|
107
|
+
secretStore: local-file
|
|
108
|
+
secretsRoot: /absolute/private/dsh/secrets/pap
|
|
134
109
|
```
|
|
135
110
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
上述两条独立链保留其历史边界;后续默认 HTTPS relay 与同一 native 账户已通过下面的新联合入口。宿主 keyring 配置、产品 UI/E2E、System Test 和 registry 发行仍不因此自动通过。
|
|
111
|
+
On Windows use appropriate absolute paths (for example `C:/Users/...`). Never point both settings at the same directory. There is **no automatic fallback or migration** between secret backends. Preserve state and its matching encryption keys during backups or migrations. Old unpublished `@agentconnect/dsh-pap` consumer approvals do not automatically authorize the current `@awiki/dsh-pap/plugin` consumer.
|
|
139
112
|
|
|
140
|
-
##
|
|
113
|
+
## Try the live three-protocol service
|
|
141
114
|
|
|
142
|
-
|
|
115
|
+
After installation, shared identity publication and Host approval:
|
|
143
116
|
|
|
144
|
-
|
|
117
|
+
1. Open the DSH **PAP Company** settings and select an existing published identity.
|
|
118
|
+
2. Discover the Company at `agent.agent-network-protocol.com`. Its public metadata is at `https://agent.agent-network-protocol.com/.well-known/poppy.json`.
|
|
119
|
+
3. Connect a **signed-out** Session. Explicitly enable the discovered read operation (`protocol_list` or `protocol_get`) for the agent; optionally enable `post_create` for a deliberate posting test.
|
|
120
|
+
4. Ask the DSH agent to invoke `pap_status` and `pap_operations`. Use the returned operation reference in `pap_request`:
|
|
145
121
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
定向回归入口:`npm run test:p22`。该入口仅 owning client/storage/HTTP 检查,不运行 System Test 或产品 E2E。
|
|
155
|
-
|
|
156
|
-
## 默认 HTTPS relay 与同一 native 账户联合入口
|
|
157
|
-
|
|
158
|
-
```bash
|
|
159
|
-
npm run test:relay-native-account-component -- /absolute/C/test/helpers/managed-callback-fixture.ts /absolute/user-service /absolute/venv/bin/python /absolute/public-materials.json https://agent.test:29443
|
|
122
|
+
```text
|
|
123
|
+
pap_status()
|
|
124
|
+
pap_operations()
|
|
125
|
+
pap_request({
|
|
126
|
+
"operationRef": "<enabled post_create reference>",
|
|
127
|
+
"body": { "content": "Hello from DSH via PAP" }
|
|
128
|
+
})
|
|
160
129
|
```
|
|
161
130
|
|
|
162
|
-
|
|
131
|
+
The placeholder must be replaced by the **actual enabled operationRef**; the model cannot manufacture one. Read the published result on the [ANP website posts page](https://agent-network-protocol.com/zh/posts). Documentation can be read using the appropriate discovered read operation and its declared parameters.
|
|
132
|
+
|
|
133
|
+
**No user-account OAuth login is needed for this signed-out demo.** For Companies requiring an account, a user must explicitly start Direct Sign-In through the management UI, complete the Company's authorization, and enable the relevant account-bound operation. The agent cannot initiate a browser login or collect authorization codes.
|
|
163
134
|
|
|
164
|
-
|
|
135
|
+
## Tools and user controls
|
|
165
136
|
|
|
166
|
-
|
|
137
|
+
| Interface | Available operations |
|
|
138
|
+
| --- | --- |
|
|
139
|
+
| **Agent tools** | `pap_status`, `pap_operations`, `pap_request` only |
|
|
140
|
+
| **User management** | `identity/select`, `company/discover`, `session/connect`, `session/disconnect`, `operation/enable`, `operation/disable` |
|
|
141
|
+
| **Account management** | `account/sign-in`, `account/collect`, `account/refresh`, `account/sign-out` |
|
|
167
142
|
|
|
168
|
-
|
|
143
|
+
The management Remote must be exposed only through an authenticated **user** gateway, never as a general model tool. Agent calls accept a previously authorized `operationRef` plus declared path/query fields and an optional JSON body; they do not accept arbitrary URL/method/headers, raw authorization tokens or resource changes.
|
|
169
144
|
|
|
170
|
-
|
|
145
|
+
## Service Agent example
|
|
171
146
|
|
|
172
|
-
|
|
147
|
+
https://agent-network-protocol.com is the project's example Service Agent for
|
|
148
|
+
MCP, ANP and PAP. The example is mentioned in the Agent-visible discovery/status
|
|
149
|
+
tool descriptions. To see ANP in action, discover `agent-network-protocol.com`,
|
|
150
|
+
read the returned descriptions/interfaces, then invoke a read-only discovered
|
|
151
|
+
operation. For PAP, explicitly discover that Company in settings, connect and
|
|
152
|
+
enable the desired operation. MCP uses a separately configured server connection.
|
|
153
|
+
No reference here grants identity access, enables an operation, bypasses protocol
|
|
154
|
+
validation, or sends a request automatically. The website deployment is managed
|
|
155
|
+
by the service operator and is outside this UI change's acceptance scope.
|
|
173
156
|
|
|
174
|
-
|
|
157
|
+
## Basic and advanced settings
|
|
175
158
|
|
|
176
|
-
|
|
159
|
+
The normal PAP page shows the active published identity, Company discovery,
|
|
160
|
+
one regular connection and explicit operation permission. Existing regular
|
|
161
|
+
connections are reused by the UI rather than creating duplicates. Connection
|
|
162
|
+
IDs/cleanup, per-operation connection changes, scopes and optional account
|
|
163
|
+
management are collapsed by default. NoAS companies do not show account-login
|
|
164
|
+
controls. Existing sessions are never deleted automatically, accounts/scopes are
|
|
165
|
+
never selected implicitly, and saving a different operation connection remains
|
|
166
|
+
an explicit user action.
|
|
177
167
|
|
|
178
|
-
##
|
|
168
|
+
## Security and current limits
|
|
179
169
|
|
|
180
|
-
|
|
170
|
+
- PAP state is AES-256-GCM encrypted and partitioned by identity/profile. Missing or mismatched secret keys fail closed.
|
|
171
|
+
- Local identity custody provides scoped, revocable signing capabilities; this plugin does not expose the private keys or a remote signing endpoint.
|
|
172
|
+
- Signed-out PAP makes no account-authority claim; account OAuth is explicit and separate from MCP machine tokens.
|
|
173
|
+
- Side-effecting requests are not blindly replayed after ambiguous failures. Token rotation, disconnect and sign-out enforce state and authorization fences.
|
|
174
|
+
- Browser Join, Mediated Sign-In, Device Sign-In, PS384, automatic account merging and a PAP-over-MCP transport are **not implemented** in this client.
|
|
175
|
+
- Existing legacy account state may require a controlled migration/revocation review; do not reset encrypted state or silently create replacement encryption keys.
|
|
181
176
|
|
|
182
|
-
|
|
177
|
+
For detailed API, storage, verification and recovery notes see the [Chinese technical README](README.zh-CN.md), [verification log](docs/verification.md) and [source code](src/).
|
|
183
178
|
|
|
184
|
-
|
|
179
|
+
## Related projects
|
|
185
180
|
|
|
186
|
-
|
|
181
|
+
[ANP Identity](https://github.com/agent-network-protocol/anp-identity) · [dsh-anp](https://github.com/agent-network-protocol/dsh-anp) · [service-agent](https://github.com/AgentConnect/service-agent) · [DSH Harness Identity](https://github.com/AgentConnect/dsh-harness-identity) · [AWiki User Service](https://github.com/AgentConnect/user-service)
|
|
187
182
|
|
|
188
|
-
|
|
189
|
-
`@awiki/dsh-pap/plugin`; manager and tool entries use the same package scope.
|
|
190
|
-
Install with `pnpm dsh plugin --profile <profile> add @awiki/dsh-pap@0.1.0`.
|
|
183
|
+
## License
|
|
191
184
|
|
|
192
|
-
|
|
193
|
-
silently aliased or granted access under the new consumer. Configure the new
|
|
194
|
-
installed consumer explicitly in ANP Identity's allow list and protocol policy,
|
|
195
|
-
then approve it. Keep the existing identity Store and keys unchanged. Start the
|
|
196
|
-
new PAP consumer with its own empty state root and matching secret namespace;
|
|
197
|
-
retain old encrypted PAP state and its keys separately rather than editing its
|
|
198
|
-
binding, overwriting keys, or attempting an unauthenticated in-place migration.
|
|
185
|
+
[Apache-2.0](LICENSE).
|