- agent.propose_options 的方案可带 action(capabilityId + planId)。提出方案时服务端按计划当前的 payload hash + revision 绑定,并用计划本身生成动作要点(对象、大小 / 文件数)发给界面,不用模型的说法。 - 控制台管理员会话选定绑定了计划的方案时,建一份 scope.via=option 的已批准单次审批(审计 approval.approved); 执行时授权器 optionApproval 核对能力、计划类型 + ID、payload hash、revision、有效期后放行,用后 consumed, 不再出第二张审批卡。API Key 作答、超时自动选、计划已变化都不算批准;移动 / 替换文件的整理与发布策略 (删除、覆盖类)选定后仍单独确认。会话停止时撤销没用掉的这类审批。 - contracts:CAPABILITY_ACTIVITY 给每个能力加 verb / noun(会话进度行的人话计数);agent.plan / agent.propose_options 标为 hidden。 - e12 补测试:管理员选定 → 无 approval_requested、审批绑定同一计划并 consumed、换 hash 不放行; API Key 选定 → 仍出审批卡。 Co-Authored-By: Claude Opus 5.5 <[email protected]>
@umt/contracts
所有 API、SSE 事件与能力(capability)输入输出的唯一定义(zod 4 schema + 推导出的 TS 类型)。web 与 server 共用,任何一端都不得手写重复 DTO;新增接口先在这里加 schema,再由 server 用 @hono/zod-openapi 生成 OpenAPI。
| 文件 | 内容 |
|---|---|
common.ts |
Id、Timestamp、DateOnly、JsonObject、游标分页、错误码、响应信封、ApiScope、ActorType |
content.ts / identity.ts / assets.ts / sources.ts / policy.ts / execution.ts / agent.ts / ops.ts / organization.ts / instances.ts |
每张表的 Row schema(camelCase、日期为 ISO 字符串)+ XxxCreate / XxxUpdate 输入 |
organization.ts |
另含公开整理记录合同:PublicOrganizationRecord、OrganizationChangesQuery/Response(change_seq 游标)、OrganizeRequest |
settings.ts |
GlobalSettings、DEFAULT_SETTINGS、GlobalSettingsUpdate、mergeSettings() |
capability.ts / capabilities-io.ts |
CapabilityDescriptor、首批 14 个能力 ID 与目录、各能力 Input/Output schema、CAPABILITY_IO |
events.ts |
SSE 信封、EventType、EVENT_PAYLOADS、TypedEvent 判别联合 |
files.ts |
文件管理(/files/*)的请求/响应:根与条目、dryRun 计划(planId)、move/copy/organize/delete、回收站 TrashItem、identify/probe/scrape、download |
auth.ts |
登录、会话探测 SessionInfo、改密、TOTP(TotpStatus/TotpAction)、审计动作枚举 |
browser.ts |
BrowserProvider 合同:会话/标签/快照、快照脱敏类别 SnapshotRedactionKind |
redact.ts |
凭证脱敏的唯一键表与规则:SENSITIVE_KEY_PARTS、SENSITIVE_QUERY_PARAMS、isSensitiveKey、isSensitiveQueryParam、redactString、redactUrl(server logger、Agent 模型上下文、adapters 的 rss/browser 共用) |
api.ts |
Api 端点表(method/path/scope/auth/params/query/body/response;auth:"session" 表示只接受管理员控制台会话)、buildPath()、listEndpoints() |
约定:
- Row schema 与
packages/db/src/types.ts的列一一对应(test/db-sync.test.ts校验);只在 DB 存在的列(密文、key_hash、change_xid)不对外。 - 凭证类输入(
credential、url、plaintext、apiKey)只写不回显。 - schema 不用
.default()做可部分更新对象的缺省(zod 4 在 partial 里仍会填默认值);缺省值放常量。