mandates.compile模块 03Mandate studio and replay
把智能体的章程写成代码,查看它会改变谁可以做什么,并将其作为授权的下一个版本应用。
mandates.compile 把用 imd、Cedar 或 Rego 编写的授权转换为许可项。simulate 显示一项变更会允许什么,不写入任何内容;compile 将其作为授权的下一个版本落地,发送其摘要即与您阅读过的预览绑定。不涉及任何模型。
mandates.compile模块 03把智能体的章程写成代码,查看它会改变谁可以做什么,并将其作为授权的下一个版本应用。
mandates.compile 把用 imd、Cedar 或 Rego 编写的授权转换为许可项。simulate 显示一项变更会允许什么,不写入任何内容;compile 将其作为授权的下一个版本落地,发送其摘要即与您阅读过的预览绑定。不涉及任何模型。
mandates.compile 没有回放路由。控制台通过 history/counterfactual 回放一段时间,然后编译。应用变更之前,请带着 from、to 和 addGrants 或 dropGrants 调用该路由。
mandatename、grants、sourceFormat、engine、version,以及任何 objectives 和 priority。appliedformat 设为 imd,这是默认值。先是一行 mandate <name>,然后每行一条规则:allow <action> on <resource> for <principal>。不匹配任何模式的行编译为空。
format 设为 。通过相等判断主体、动作和资源的 语句。、 和 会被以 400 拒绝。这是一个子集,而不是 Cedar 引擎。
请按下运行(或者 ⌘/Ctrl + Enter),即可为左侧的请求签名。
首次运行时,系统会在此浏览器中为您创建一个免费的测试密钥:7 天之内大约可以调用 35 次,无需注册账户。回执会返回到这里,并使用已经公开发布的公钥进行验证,整个过程完全无需信任我们。
一个符合 API 接受格式的请求,以及模块返回格式的示例响应。
POST /api/v1/acp/mandates/compile Authorization: Bearer av_workspace_•••• Content-Type: application/json { : , : }
编译一个更严格的 billing-writes 版本。预览列出被收窄的许可,应用则撤销没有其他授权或包仍给出的一切。
diff 按两份宪章所允许的内容进行比较。重新排序或重命名的授权报告 permissionsUnchanged: true;把具名主体换成 * 会报告许可被放宽。
拥有 的调用方可以发送 ,编译并存储已签名的制品而不改变快照。应用需要 。
模块是对一件狭窄事情的强力保证。请仅在其确切范围内依赖它。
simulate 调用不写入任何内容:没有快照,没有授权列表,也没有存储的制品。previewDigest 的 compile,在授权或其预览所依据的宪章发生变化时会被拒绝。许可以其授权而不是版本命名:mandate:<name>/<action>/<principal>/<resource>。即使授权列表与快照不一致,版本号也只增不减。
摘要涵盖已编译的许可及其落到的宪章,而不是源文本、方言或时钟。重新缩进章程不会使批准失效。
预览在 expiresInMs 中带有 15 分钟的有效期。随 compile 发送 previewAt 时才会强制执行;否则只有摘要的漂移会拒绝应用。
使用工作区 API 密钥作为 Bearer 令牌进行认证。基础 URL 为 https://api.intramedial.com。
/api/v1/acp/mandates/compile编译授权并应用,或存储而不应用。/api/v1/acp/mandates/simulate预览变更并返回其摘要;不写入任何内容。apply: false 时为 0。revokedwithheldcaseId。snapshotstored)、是否已签名(signed、alg),以及使用哪个 key。previewDigestapply: false 时为 null。unpreviewedtrue。findingslint 和 simulate:每项有 severity、code(如 silent-no-op 或 shadowed)和 message。cedarpermit(...)forbidwhenunlessformat 设为 rego。通过相等判断 input.principal、input.action 和 input.resource 的 allow { ... } 块。not、some 和 walk 会被拒绝。这是一个子集,而不是 OPA。
用 mandate <name> 命名,并把每项许可写成主体、动作和资源。可选行说明其用途:objective decrease cloud-spend 和 priority 4。
lint 标出编译为空的规则、通配符和被遮蔽的许可。simulate 返回与现行宪章的差异和一个 digest,并且不写入任何内容。
compile 把授权当前的版本替换为下一个版本。新版本放弃的许可会转交给仍然给出它的另一个授权或包,否则被撤销并列在 revoked 中。
随 compile 发送 previewDigest、previewBefore 和 previewAt。如果授权或宪章自预览以来发生了变化,调用会被以 409 拒绝并指明是哪一半。不带摘要时它会直接应用并回答 unpreviewed: true。
{
"mandate": {
"name": "billing-writes",
"grants": [
{
"principal": "did:web:acme.example:agent:billing",
"action": "write",
"resource": "repo:payments/main"
}
],
"sourceFormat": "imd",
"engine": "regex-scrape",
"version": 1
},
"applied": 1,
"revoked": [],
"withheld": [],
"snapshot": {
"stored": true,
"signed": true,
"alg": "hmac-sha256",
"key": "acp:mandate:ws_acme:billing-writes"
},
"previewDigest": "9c1e5a07d4b3",
"unpreviewed": true
}policies.proposeapply: falsepolicies.approve在 CI 中运行 lint。形似规则却没有编译出许可的行是 error,因此 imd 中的拼写错误不再作为空章程蒙混过关。
history/counterfactual 路由做这件事,drills.counterfactual 将其作为演练运行。coordination.admit。compile 立即应用于工作区;分阶段推出请使用 change-trains.list。lint 发现的是空操作规则和通配符这类机械性错误,而不是不良意图。imd 是模式抓取:不匹配的行编译为空,而 compile 不会拒绝它。mcp.enforce 和 github.enforce。compile 把制品存入配置存储,位置为 acp:mandate:<workspace>:<name>。只有绑定了网关签名密钥时才用 HMAC 签名;否则 signed 为 false。
objective 和 priority 保留在授权上,不计入摘要。detection.run 读取它们,以找出把同一指标往相反方向拉的两个授权。
policies.approve,apply: false 需要 policies.propose。没有的调用方得到 403,未指明调用方的请求得到 401。apply: false 不是预览:它仍会写入已签名的制品。需要不写入任何内容时请使用 simulate。permit 或 allow 块的 Cedar 或 Rego 源码,会被以 400 拒绝。coordination.mandates.compile 操作只接受 source、format 和 apply,因此预览绑定字段只适用于 REST。/api/v1/acp/mandates/list/api/v1/acp/mandates/lint检查授权中是否有什么都不做的规则。/api/v1/acp/mandates/diff按两份宪章所允许的内容进行比较。coordination.mandates.compile编译授权,不带预览绑定。coordination.mandates.list列出工作区已编译的授权。drills.counterfactual34civics.settings23Workspace constitution为此工作区的每种紧急程度,设定真人必须多快回答您的智能体的提问,以及谁值班。change-trains.list24Staged change trains先把变更推给集群的一部分,对照测得的信号检查,再逐阶段向前推进。packs.list25Signed pack registry从外部引入一个由智能体、授权和演练组成的包,并知道是谁签署的,以及途中是否有任何字节被更改。lenses.run26Governance lenses对您交给它的数据运行固定的检查,得到带证据的通过或失败,每次答案都相同。attestation.policy27Artifact build attestation决定您接受哪些构建者来构建策略快照和检测器包,并拒绝受信任作者签名但由另一次构建产生的内容。pack-revenue.balances28Pack revenue ledger在任何人获得付款之前,查看每位包作者赚了多少、还欠多少,每一个最小货币单位都有账可查。