ガバナンスLensでリースを確認する
インストール済みのLensを、送信したデータに対して実行し、その検出結果を読み取り、保存された結果をダイジェストとともに保管します。
lenses.run
インストール済みのLensを、送信したデータに対して実行し、その検出結果を読み取り、保存された結果をダイジェストとともに保管します。
lenses.runリース、マンデート、あるいはテキストに、決まったルールを適用したい場合です。Lensは決定論的で、モデルを使わず、送信したデータだけを見ます。
コードはキーをINTRAMEDIAL_KEYから読み取ります。キーはシェルやシークレットストアに保管し、コミットするファイルには入れないでください。サインインした人が必要な呼び出しにはキーを使えず、コンソールが実行します。
installIdとinputを送ります。lease_overlapの場合、これはリースの一覧です。
lenses.runlenses-runcurl -sS -X POST https://api.intramedial.com/api/v1/acp/lenses/run \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"installId": "install_7c2e",
"input": {
"leases": [
{
"id": "l1",
"resource": "repo:payments/main",
"holder": "did:web:acme.example:agent:billing",
"start": "2026-11-01T09:00:00Z",
"end": "2026-11-01T10:00:00Z"
},
{
"id": "l2",
"resource": "repo:payments/main",
"holder": "did:web:acme.example:agent:refunds",
"start": "2026-11-01T09:30:00Z",
"end": "2026-11-01T10:30:00Z"
}
]
}
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/lenses/run", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
installId: "install_7c2e",
input: {
leases: [
{
id: "l1",
resource: "repo:payments/main",
holder: "did:web:acme.example:agent:billing",
start: "2026-11-01T09:00:00Z",
end: "2026-11-01T10:00:00Z",
},
{
id: "l2",
resource: "repo:payments/main",
holder: "did:web:acme.example:agent:refunds",
start: "2026-11-01T09:30:00Z",
end: "2026-11-01T10:30:00Z",
},
],
},
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/lenses/run",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"installId": "install_7c2e",
"input": {
"leases": [
{
"id": "l1",
"resource": "repo:payments/main",
"holder": "did:web:acme.example:agent:billing",
"start": "2026-11-01T09:00:00Z",
"end": "2026-11-01T10:00:00Z",
},
{
"id": "l2",
"resource": "repo:payments/main",
"holder": "did:web:acme.example:agent:refunds",
"start": "2026-11-01T09:30:00Z",
"end": "2026-11-01T10:30:00Z",
},
],
},
},
timeout=30,
)
print(res.status_code, res.json())検出がなければstatusはpass、そうでなければfailです。各検出にはcode、message、pathがあり、証拠には両方のリースが示されます。同じ入力に同じルールを適用すると、同じdigestになります。
{
"result": {
"id": "result_3f9a",
"installId": "install_7c2e",
"definitionId": "lens_builtin_lease_overlap",
"version": 1,
"definitionDigest": "sha256:5b1d0c9e7a42",
"inputDigest": "sha256:e07a93b1c6d8",
"status": "fail",
"findings": [{ "code": "lease.overlap", "message": "overlapping leases for repo:payments/main", "path": "$.leases" }],
"evidence": [{ "kind": "lease_overlap", "path": "$.leases", "detail": { "resource": "repo:payments/main", "left": "l1", "right": "l2" } }],
"digest": "sha256:a2c4e8f016b3",
"executedAt": "2026-11-01T09:12:00.000Z"
}
}結果は保存されます。resultsはresultIdで結果を返すか、インストールのすべての結果を一覧します。
転載元の資料: /docs/lenses-run
台帳は追記専用で、Merkleルートのもとでシールされます。エントリの時刻はIntramedial自身のクロックによるもので、署名付きバンドルは公開鍵を使ってオフラインで確認できます。
apply: falseでマンデートをコンパイルし、付与される内容とpreviewDigestを読み取ってから、プレビューしたものをそのまま適用します。
mandates.compile検出器を一覧し、lease-overlapを実行し、引用された衝突とその証拠を読み取り、審査のために申し立てられたケースを読みます。
detection.runcoordination.leaseでリソースの排他リースを取得し、誰が保持しているかを確認し、終わったら手放します。
coordination.leaseレシピ集にレシピを追加したときだけ、短いメールを1通。ほかのメールは送らず、どのメールからも配信停止できます。
アカウントは不要です。attestルートで7日間に35回まで呼び出せ、レシートはテストレシートとして明示されます。続けたくなったら、そのときに登録してください。