@ agentproto/ 机密
AIP-19 (中文(简体) ) SECRETS.md 参考执行。 一种工作空间级的显示格式,用于申报秘密的弹壳、其目的、访问赠款和审计元数据,而从未储存价值本身。 主机在发现时间对着真正的金库解决弹道.
状态:0.1.0-α. 生成者
scripts/scaffold-aip.mjs—— 说build()财务报告和审定财务报表validate()尸体是TODO的.
谱: https://agentproto.sh/docs/aip-19
使用量
import { defineSecrets } from "@agentproto/secrets"
const x = defineSecrets({
id: "my-secrets",
description: "Short purpose.",
// ...
})
capture – 保管 CLI 本地 OAuth 登录
agentproto-secrets capture [--provider <recipe>] [--vault-dir <dir>] 读取
编码 CLI 的订阅 OAuth 登录通过其内置食谱 oauth
字段映射( AIP-19 全文) oauth 形状 {accessToken, refreshToken, expiresAt}),将其封入金库自己的本地密钥上(即:<dir>/key.json, (中文(简体) ),
0:00, 第一次铸币) entries/<provider>.json (0600) (中文(简体) ). 这个
打印一个能力指针( e)agentproto-secrets://vault/<provider>?method=…&key=…(中文(简体) )
——符号值从未被打印出,记录出,也从未被写入清晰. 如果
CLI 还没有本地登录( N)claude login 编号 : codex login 未运行),该
命令输出 1 , 并说要先运行 CLI 的登录; 它永远不会生成一个
第二登录客户端.
信任边界:金库密钥页生活在平面 <dir>/key.json
(0600) 在封存的条目旁边, 所以在rest的保密性
文件系统权限——任何读取库目录(备份、同步、a)
解密的本地账户)生成密钥和密码文本。 这是一个
LOCAL 保险库: 仅用于向服务器发送证书而不暴露
纯文本, 使用 provision (先封住目标自己的钥匙).
接触表面(@agentproto/secrets/exposure(中文(简体) )
货单上写着 哪个 机密存在; 一项 接触 说 怎么样 a 已解决
秘密到达运行时间. SecretExposure 歧视的工会——一个
kind 每个送货机制,所以消费者过滤 isExposureKind
用一个开关来守卫和处理每个开关:
kind | 把秘密传达给.. |
|---|---|
env | 代理工艺上的环境变量 |
file | 写入工作空间的文件 |
egress-substitute | (单位:千美元) $$SECRET[NAME]$$ 递进时替换占位符 |
mcp-header | 一个 HTTP 认证信头 mCP 服务器的传输 |
import { isExposureKind, type SecretExposure } from "@agentproto/secrets/exposure"
const headerExposures = exposures.filter(e => isExposureKind(e, "mcp-header"))
mcp-header - 中介的 MCP 认证
interface McpHeaderExposure {
kind: "mcp-header"
credentialPath: string // broker path: "<providerId>" or "<providerId>/<account>"
server?: string // optional upstream override, forwarded to the broker
}
resolveMcpHeaderExposure(exposure, resolver, { signal }) 把路径变成
即用头图。 这个 resolver 是一个 结构
McpHeaderResolver (单位:千美元)resolveHeaders({ path, server?, signal? })()——
CredentialBroker 从 @agentproto/auth 没有适配器就满足了 所以
保留此软件包 无依赖性 auth 还开着呢.
每个解析页眉 价值 运行通过 assertSafeSecretValue 在此之前
返回——拒绝含有 CR/LF/NUL 的值,关闭信头注入
(被走私的新线无法在运输上附加额外的头条线).
import { resolveMcpHeaderExposure } from "@agentproto/secrets/exposure"
import { CredentialBroker } from "@agentproto/auth"
const headers = await resolveMcpHeaderExposure(exposure, broker, { signal })
// → { Authorization: "Bearer …" }, guarded
同一名警卫assertSafeSecretValue)和 $$SECRET[NAME]$$ 引擎
(单位:千美元)substituteSecrets, (中文(简体) ), SECRET_PLACEHOLDER_PATTERN, (中文(简体) ), formatPlaceholder已经
从此子路径导出 egress-substitute 路径.
许可证
麻省理工学院——见 自由主义。 。 。 .