Prueba primero un cambio de permisos
Quita o agrega un permiso en una copia de la política, sondéala y lee cada veredicto antes y después del cambio.
drills.counterfactual
Quita o agrega un permiso en una copia de la política, sondéala y lee cada veredicto antes y después del cambio.
drills.counterfactualPasa por Intramedial acciones de agentes, hashes de contenido, pruebas de API, DNS, webhooks, llamadas LLM y commits. Obtén un recibo firmado que cualquiera verifica, sin fiarse de nadie.
Estás a punto de quitar un permiso y quieres saber qué agente pierde qué. Intralock evalúa cada sondeo contra la política tal como está y contra una copia con tu cambio aplicado. No se ejecuta ningún modelo y nada en el espacio de trabajo cambia.
policies.propose el mínimo que sirve; un scope de Tools más amplio también valepolicies.propose, que necesita ejecutar un simulacroEl código lee la clave de INTRAMEDIAL_KEY. Guárdala en tu shell o en tu almacén de secretos, nunca en un archivo que suba al repositorio. Las llamadas que requieren una persona con sesión iniciada no pueden usar una clave: las hace la consola.
pack_counterfactual viene integrado. Quita el permiso g-house y sondea a did:a leyendo repo:main, para que veas la forma de la respuesta antes de escribir la tuya. Con un workflow de simulacro vinculado y sin forceInline, la respuesta es queued: true con un workflowId.
drills.counterfactualdrills-counterfactual
curl -sS -X POST https://api.intramedial.com/api/v1/acp/drills/counterfactual \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"packId": "pack_counterfactual"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/drills/counterfactual", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
packId: "pack_counterfactual",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/drills/counterfactual",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"packId": "pack_counterfactual",
},
timeout=30,
)
print(res.status_code, res.json())Cada sondeo tiene un before y un after. Un permitir nombra su grantId; un denegar da un reason como no_grant o cycle, y un detail. before y after describen el primer sondeo.
{
"packId": "pack_counterfactual",
"dropped": "g-house",
"droppedIds": ["g-house"],
"added": [],
"probes": [
{
"probe": { "principal": "did:a", "resource": "repo:main", "action": "read", "nowMs": 1793523600000 },
"before": { "allow": true, "grantId": "g-house", "protectedClass": "none" },
"after": { "allow": false, "reason": "no_grant", "detail": "did:a lacks read on repo:main" }
}
],
"llm": false
}Envía los grantIds por quitar, o addGrants para permisos hipotéticos, y los probes que importan. Un permiso hipotético que formaría un ciclo se omite, no se aplica.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/drills/counterfactual \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"grantIds": [
"g-house"
],
"probes": [
{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write"
}
]
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/drills/counterfactual", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
grantIds: ["g-house"],
probes: [
{
actorDid: "did:web:acme.example:agent:billing",
resource: "repo:payments/main",
action: "write",
},
],
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/drills/counterfactual",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"grantIds": ["g-house"],
"probes": [
{
"actorDid": "did:web:acme.example:agent:billing",
"resource": "repo:payments/main",
"action": "write",
},
],
},
timeout=30,
)
print(res.status_code, res.json())Copiado de: /docs/drills-counterfactual
El libro mayor es de solo anexado y está sellado bajo raíces de Merkle. La hora de una entrada es el reloj propio de Intramedial, y un paquete firmado puede verificarse sin conexión con la clave publicada.
Compila un mandato con apply: false, lee los permisos que otorgaría y su previewDigest, y luego aplica exactamente lo que previsualizó.
mandates.compileEjecuta los seis escenarios fijos de Intralock, lee el resultado de cada uno y fija una cadencia para que el simulacro se repita solo.
drills.frtEjecuta un lens instalado sobre los datos que envíe, lee sus hallazgos y conserva el resultado almacenado con su digest.
lenses.runUn email breve cuando añadimos recetas. Ningún otro correo, y puedes darte de baja desde cualquier mensaje.
Sin cuenta: 35 llamadas en 7 días en las rutas attest, con recibos marcados como de prueba. Regístrate cuando quieras seguir.