Genera una auditoría de conflictos
Envía nueve conjuntos de datos, cada uno con una declaración de completitud, y lee las ocho métricas y las recomendaciones ordenadas para pasar recursos de observar a hacer cumplir.
conflict.audit-latest
Envía nueve conjuntos de datos, cada uno con una declaración de completitud, y lee las ocho métricas y las recomendaciones ordenadas para pasar recursos de observar a hacer cumplir.
conflict.audit-latestPasa 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.
Quieres saber dónde chocan los agentes y qué recursos deberían pasar de observar a hacer cumplir. El motor deriva ocho métricas de los conjuntos de datos que aportas, y una métrica figura como incompleta salvo que sus conjuntos de datos estén completos.
policies.propose el mínimo que sirve; un scope de Tools más amplio también valeidempotencyKey de máximo 128 caracteres que sea nueva para cada entradapolicies.propose, para generar un informeEl 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.
Envía la ventana, una idempotencyKey, una entrada completeness para cada uno de los nueve conjuntos de datos y los conjuntos como arreglos explícitos, aunque estén vacíos. La misma clave con otra entrada se rechaza con 409.
conflict.audit-latestconflict-audit-latest
curl -sS -X POST https://api.intramedial.com/api/v1/acp/conflict-audit/generate \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"windowStart": "2026-10-02T09:00:00.000Z",
"windowEnd": "2026-11-01T09:00:00.000Z",
"idempotencyKey": "audit-2026-11-01",
"completeness": {
"registeredAgents": "complete",
"shadowIdentities": "unknown",
"shadowActions": "unknown",
"admissions": "incomplete",
"leases": "complete",
"waiters": "incomplete",
"ledgerEvents": "complete",
"detectorFindings": "complete",
"frtFindings": "unknown"
},
"registeredAgents": [],
"shadowIdentities": [],
"shadowActions": [],
"admissions": [],
"leases": [],
"waiters": [],
"ledgerEvents": [],
"detectorFindings": [],
"frtFindings": []
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/conflict-audit/generate", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
windowStart: "2026-10-02T09:00:00.000Z",
windowEnd: "2026-11-01T09:00:00.000Z",
idempotencyKey: "audit-2026-11-01",
completeness: {
registeredAgents: "complete",
shadowIdentities: "unknown",
shadowActions: "unknown",
admissions: "incomplete",
leases: "complete",
waiters: "incomplete",
ledgerEvents: "complete",
detectorFindings: "complete",
frtFindings: "unknown",
},
registeredAgents: [],
shadowIdentities: [],
shadowActions: [],
admissions: [],
leases: [],
waiters: [],
ledgerEvents: [],
detectorFindings: [],
frtFindings: [],
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/conflict-audit/generate",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"windowStart": "2026-10-02T09:00:00.000Z",
"windowEnd": "2026-11-01T09:00:00.000Z",
"idempotencyKey": "audit-2026-11-01",
"completeness": {
"registeredAgents": "complete",
"shadowIdentities": "unknown",
"shadowActions": "unknown",
"admissions": "incomplete",
"leases": "complete",
"waiters": "incomplete",
"ledgerEvents": "complete",
"detectorFindings": "complete",
"frtFindings": "unknown",
},
"registeredAgents": [],
"shadowIdentities": [],
"shadowActions": [],
"admissions": [],
"leases": [],
"waiters": [],
"ledgerEvents": [],
"detectorFindings": [],
"frtFindings": [],
},
timeout=30,
)
print(res.status_code, res.json())La ruta latest devuelve el informe más nuevo, o 404 si aún no existe ninguno. El id del informe proviene de su digest, así que las mismas entradas dan el mismo informe. Una métrica figura como incomplete salvo que todos los conjuntos de datos que usa estén declarados complete.
curl -sS https://api.intramedial.com/api/v1/acp/conflict-audit/latest \
-H "Authorization: Bearer $INTRAMEDIAL_KEY"const res = await fetch("https://api.intramedial.com/api/v1/acp/conflict-audit/latest", {
headers: { Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`, },
});
const body = await res.json();
const { report } = body;
for (const rec of report.recommendations) {
const { from, to, gated, gateReason } = rec.proposedAction;
console.log(rec.resourceUrns.join(", "), from, "to", to, gated ? "gated: " + gateReason : "open");
}
console.log(report.limitations);import os, requests
res = requests.get(
"https://api.intramedial.com/api/v1/acp/conflict-audit/latest",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
timeout=30,
)
body = res.json()
report = body["report"]
for rec in report["recommendations"]:
p = rec["proposedAction"]
print(", ".join(rec["resourceUrns"]), p["from"], "to", p["to"], "gated: " + p["gateReason"] if p["gated"] else "open")
print(report["limitations"])Cada recomendación propone pasar recursos de observe a enforce. Una con confianza menor a 0.65 queda gated y no se puede adoptar; gateReason dice por qué y limitations enumera lo que falta.
La adopción es un flujo aparte. Un confirm necesita un motivo y la frase ADOPT <workspaceId>, y un apply necesita el token de un solo uso que devuelve y un servicio adoptante.
Copiado de: /docs/conflict-audit-latest
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.
Enumera los detectores, ejecuta lease-overlap y lee los conflictos que cita con su evidencia; luego lee los casos que presentó para revisión.
detection.runQuita o agrega un permiso en una copia de la política, sondéala y lee cada veredicto antes y después del cambio.
drills.counterfactualLee el libro mayor en busca de ráfagas, picos y silencio en eventos de concesiones y credenciales, y ejecuta la comprobación desde tu propio programador.
watchdog.checkUn 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.