マンデートをプレビューして、適用する
apply: falseでマンデートをコンパイルし、付与される内容とpreviewDigestを読み取ってから、プレビューしたものをそのまま適用します。
mandates.compile
apply: falseでマンデートをコンパイルし、付与される内容とpreviewDigestを読み取ってから、プレビューしたものをそのまま適用します。
mandates.compileマンデートはコードとしてのエージェントの憲章で、適用するとIntralockが許可する内容がすぐに変わります。付与される内容を先に確認し、確認した後にマンデートや憲法が動いていれば適用が失敗するようにしたいところです。プレビューのダイジェストがその2つを結び付けます。
policies.approve 動作する最小のスコープ。より広いToolsスコープでも動作しますpolicies.approve権限imd、Cedar、またはRego(等価のサブセット)で書かれたマンデートコードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
applyをfalseにしてソースを送ります。マンデートは付与にコンパイルされ、署名付きの成果物が保存されますが、ワークスペースのスナップショットは変わりません。simulateは読み取り専用の対となるもので、有効な憲法との差分を返します。
revokedとwithheldのリストが返るため、その影響を読み取れます。mandates.compilemandates-compilecurl -sS -X POST https://api.intramedial.com/api/v1/acp/mandates/compile \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "mandate billing-writes\nallow write on repo:payments/main for did:web:acme.example:agent:billing",
"format": "imd",
"apply": false
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/mandates/compile", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
source: "mandate billing-writes\nallow write on repo:payments/main for did:web:acme.example:agent:billing",
format: "imd",
apply: false,
}),
});
const body = await res.json();
console.log(body.mandate.grants, body.applied, body.previewDigest);import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/mandates/compile",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"source": "mandate billing-writes\nallow write on repo:payments/main for did:web:acme.example:agent:billing",
"format": "imd",
"apply": False,
},
timeout=30,
)
body = res.json()
print(body["mandate"]["grants"], body["applied"], body["previewDigest"])mandate.grantsを読み取り、previewDigestを保管します。これはコンパイル済みの付与と憲法を対象としており、ソーステキストは対象外です。
同じソースをpreviewDigestとともに送ります。その間にマンデートや憲法が動いていた場合、呼び出しは409で拒否されます。
curl -sS -X POST https://api.intramedial.com/api/v1/acp/mandates/compile \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"source": "mandate billing-writes\nallow write on repo:payments/main for did:web:acme.example:agent:billing",
"format": "imd",
"previewDigest": "9c1e5a07d4b3"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/mandates/compile", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
source: "mandate billing-writes\nallow write on repo:payments/main for did:web:acme.example:agent:billing",
format: "imd",
previewDigest: "9c1e5a07d4b3",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/mandates/compile",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"source": "mandate billing-writes\nallow write on repo:payments/main for did:web:acme.example:agent:billing",
"format": "imd",
"previewDigest": "9c1e5a07d4b3",
},
timeout=30,
)
print(res.status_code, res.json())転載元の資料: /docs/mandates-compile
台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
インストール済みのLensを、送信したデータに対して実行し、その検出結果を読み取り、保存された結果をダイジェストとともに保管します。
lenses.runポリシーのコピーで付与を削除または追加し、プローブを実行し、変更の前後の各判定を読み取ります。
drills.counterfactual無料のテストキーを取得し、content.attestでハッシュを証明して、返ってきた署名付きレシートを検証します。
coordination.admitレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。