feat: vault core/CLI/workbench, vaultd token path, filetree view-state cleanup

Land password-vault dedicated workbench and mnote-vault-core/CLI, agent token
read path design, vault transport split, and retire obsolete filetree smokes.
Ignore local vault reimport scripts that trip secret scanners.
This commit is contained in:
Agent Board
2026-07-24 11:36:06 +08:00
parent b798f628ee
commit bc6f8488ee
41 changed files with 13072 additions and 2316 deletions
@@ -215,6 +215,20 @@ passwordHint: "Li@[A]***"
email: alice@example.com
apikey: ""
token: ""
# 站内多账号(折叠组);顶层 username/password 为 accounts[0] 镜像
accounts:
- id: acc_...
label: work
username: alice
email: alice@example.com
password: <example-template>
passwordHint: "Li@[A]***"
# 附录密钥(API Key / Token);顶层 apikey/token 为首个同类镜像
secrets:
- id: sec_...
kind: apikey
label: personal-token
value: ""
tags: [work, github]
fields:
otp_issuer: GitHub
@@ -403,9 +417,14 @@ P0 UI 必须有回收站 tab(非「以后再说」)。
- **存储**:条目里保留模板原文;**reveal** 时展开为明文 `value`,并可选返回 `template` / `usedCipherKeys` / `missingCipherKeys`
- L0 list 仅返回 keys + `hasValue`**永不**投影片段明文。
2. **站多账号**
- **不**对 `url` 做唯一约束;同一 URL 可对应多条 credential(不同 username)。
- UI:详情提供「同站新账号」预填 url/folderPath;列表 meta 展示 username 区分。
2. **站多账号 / 多密钥(推荐,取代「同站新账号」拆条)**
- 一条 credential = 一个站点/服务(左栏一条)。
- **`accounts[]`**:每组可折叠包含 `username` / `email` / `password` / `passwordHint`+ 可选 `label`);UI 用 **+ 账号** 新增组。
- **`secrets[]`**:附录 API Key / Token / other`kind` + `label` + `value`);UI 用 **+ 密钥** 新增。
- 顶层 `username`/`password`/`apikey`/`token` 仍保留为 **primary 镜像**(首账号密码、首个 apikey/token),供 AI `resolve`/`login` 兼容。
- `reveal` 支持 `accountId`(密码)与 `secretId`(附录密钥)。
- **不再提供**详情「同站新账号」按钮(多账号应写在同一条目内)。
- 兼容:同 URL 仍允许多条 credential(历史数据);列表 meta 展示 `N 账号` / `N 密钥`
3. **分组折叠(folderPath**
- 逻辑字段 `folderPath`(如 `个人/银行/招商`),**不是** vault 下真实子目录。
@@ -413,9 +432,9 @@ P0 UI 必须有回收站 tab(非「以后再说」)。
- 条目文件仍平铺在 `entries/{id}.md`
- **表单 UX(已落地)**:下拉选择已有 `folderPath` + 文本直接输入新路径(无弹窗、无空组、无「在此新建」);组随条目出现。
4. **同站 URL 折叠**
4. **同站 URL 折叠(历史兼容)**
- 同一 `folderPath` 节点下,**相同非空 url 且 ≥2 条** 时,再包一层可折叠「站点组」。
- 单条 URL 不额外包组;无 url 条目平铺
- 新录入应优先合并到 `accounts[]`/`secrets[]`,避免同站拆多条
5. **共享到 AI 密码本**
- `POST /api/vault/items/{id}/share-to-ai`:把条目(含 secret 模板)**复制/更新**到目标 actor 的 managed 默认工作区 vault。
@@ -689,6 +708,7 @@ fn is_vault_sensitive_relative_path(rel: &str) -> bool {
- **已落地**`list_ai` / `get_ai` / `resolve` APIPi `mnote.vault.list|get|resolve`(默认 allowplan 模式 resolve deny);receipt 脱敏 value`scripts/mnote-vault-cli.js`
- transcriptagent 应使用 `transcriptHint`(已解析 field),不把 value 贴进聊天。
- skills`skills/mnote-vault` + 全局 symlink + capability pack。
- **演进(读密 transport,未实现)**:策略语义不变;agent 读密改走本地 **vaultd + capability token**、**不依赖 mnote-web**。见 `design/12-vault/process/12-2-vaultd-local-token-agent-read-path-v1.md`
#### P2