openclaw
Version:
Multi-channel AI gateway with extensible messaging integrations
572 lines • 26.9 kB
TypeScript
import { Static, Type } from "typebox";
//#region packages/gateway-protocol/src/schema/approvals.d.ts
/** Reviewer decisions accepted by the unified approval resolver. */
declare const ApprovalDecisionSchema: Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>;
/**
* Owner-declared blast-radius facts for a pending approval. Variants are
* named schemas so native protocol generators emit the discriminated union.
*/
declare const ApprovalScopeSchema: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>;
/** Reviewer-safe presentation discriminated by the approval owner. */
declare const ApprovalPresentationSchema: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"exec">;
commandText: Type.TString;
commandPreview: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
warningText: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
host: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
nodeId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"plugin">;
title: Type.TString;
description: Type.TString;
detail: Type.TOptional<Type.TString>;
severity: Type.TUnion<[Type.TLiteral<"info">, Type.TLiteral<"warning">, Type.TLiteral<"critical">]>;
pluginId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
toolName: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
externalResolution: Type.TOptional<Type.TObject<{
label: Type.TString;
decisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>>;
}>>;
}>, Type.TObject<{
kind: Type.TLiteral<"system-agent">;
title: Type.TString;
description: Type.TString;
proposalHash: Type.TString;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
allowedDecisions: Type.TTuple<[Type.TLiteral<"allow-once">, Type.TLiteral<"deny">]>;
}>]>;
declare const ApprovalResolveParamsSchema: Type.TObject<{
id: Type.TString;
kind: Type.TUnion<[Type.TLiteral<"exec">, Type.TLiteral<"plugin">, Type.TLiteral<"system-agent">]>;
decision: Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>;
reviewer: Type.TOptional<Type.TObject<{
channel: Type.TString;
accountId: Type.TString;
senderId: Type.TString;
}>>;
grantExpiresInDays: Type.TOptional<Type.TInteger>;
}>;
/** First-answer outcome plus the canonical recorded state returned to all contenders. */
declare const ApprovalResolveResultSchema: Type.TObject<{
applied: Type.TBoolean;
approval: Type.TUnion<[Type.TObject<{
id: Type.TString;
urlPath: Type.TString;
createdAtMs: Type.TInteger;
expiresAtMs: Type.TInteger;
presentation: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"exec">;
commandText: Type.TString;
commandPreview: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
warningText: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
host: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
nodeId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"plugin">;
title: Type.TString;
description: Type.TString;
detail: Type.TOptional<Type.TString>;
severity: Type.TUnion<[Type.TLiteral<"info">, Type.TLiteral<"warning">, Type.TLiteral<"critical">]>;
pluginId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
toolName: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
externalResolution: Type.TOptional<Type.TObject<{
label: Type.TString;
decisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>>;
}>>;
}>, Type.TObject<{
kind: Type.TLiteral<"system-agent">;
title: Type.TString;
description: Type.TString;
proposalHash: Type.TString;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
allowedDecisions: Type.TTuple<[Type.TLiteral<"allow-once">, Type.TLiteral<"deny">]>;
}>]>;
resolvedAtMs: Type.TInteger;
source: Type.TOptional<Type.TObject<{
agentId: Type.TOptional<Type.TString>;
sessionKey: Type.TOptional<Type.TString>;
}>>;
resolver: Type.TOptional<Type.TObject<{
kind: Type.TUnion<[Type.TLiteral<"device">, Type.TLiteral<"channel">, Type.TLiteral<"runtime">, Type.TLiteral<"system">]>;
id: Type.TOptional<Type.TString>;
}>>;
status: Type.TLiteral<"allowed">;
decision: Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>;
reason: Type.TUnion<[Type.TLiteral<"user">]>;
}>, Type.TObject<{
id: Type.TString;
urlPath: Type.TString;
createdAtMs: Type.TInteger;
expiresAtMs: Type.TInteger;
presentation: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"exec">;
commandText: Type.TString;
commandPreview: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
warningText: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
host: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
nodeId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"plugin">;
title: Type.TString;
description: Type.TString;
detail: Type.TOptional<Type.TString>;
severity: Type.TUnion<[Type.TLiteral<"info">, Type.TLiteral<"warning">, Type.TLiteral<"critical">]>;
pluginId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
toolName: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
externalResolution: Type.TOptional<Type.TObject<{
label: Type.TString;
decisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>>;
}>>;
}>, Type.TObject<{
kind: Type.TLiteral<"system-agent">;
title: Type.TString;
description: Type.TString;
proposalHash: Type.TString;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
allowedDecisions: Type.TTuple<[Type.TLiteral<"allow-once">, Type.TLiteral<"deny">]>;
}>]>;
resolvedAtMs: Type.TInteger;
source: Type.TOptional<Type.TObject<{
agentId: Type.TOptional<Type.TString>;
sessionKey: Type.TOptional<Type.TString>;
}>>;
resolver: Type.TOptional<Type.TObject<{
kind: Type.TUnion<[Type.TLiteral<"device">, Type.TLiteral<"channel">, Type.TLiteral<"runtime">, Type.TLiteral<"system">]>;
id: Type.TOptional<Type.TString>;
}>>;
status: Type.TLiteral<"denied">;
decision: Type.TLiteral<"deny">;
reason: Type.TUnion<[Type.TLiteral<"user">, Type.TLiteral<"malformed-verdict">, Type.TLiteral<"no-route">, Type.TLiteral<"storage-corrupt">]>;
}>, Type.TObject<{
id: Type.TString;
urlPath: Type.TString;
createdAtMs: Type.TInteger;
expiresAtMs: Type.TInteger;
presentation: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"exec">;
commandText: Type.TString;
commandPreview: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
warningText: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
host: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
nodeId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"plugin">;
title: Type.TString;
description: Type.TString;
detail: Type.TOptional<Type.TString>;
severity: Type.TUnion<[Type.TLiteral<"info">, Type.TLiteral<"warning">, Type.TLiteral<"critical">]>;
pluginId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
toolName: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
externalResolution: Type.TOptional<Type.TObject<{
label: Type.TString;
decisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>>;
}>>;
}>, Type.TObject<{
kind: Type.TLiteral<"system-agent">;
title: Type.TString;
description: Type.TString;
proposalHash: Type.TString;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
allowedDecisions: Type.TTuple<[Type.TLiteral<"allow-once">, Type.TLiteral<"deny">]>;
}>]>;
resolvedAtMs: Type.TInteger;
source: Type.TOptional<Type.TObject<{
agentId: Type.TOptional<Type.TString>;
sessionKey: Type.TOptional<Type.TString>;
}>>;
resolver: Type.TOptional<Type.TObject<{
kind: Type.TUnion<[Type.TLiteral<"device">, Type.TLiteral<"channel">, Type.TLiteral<"runtime">, Type.TLiteral<"system">]>;
id: Type.TOptional<Type.TString>;
}>>;
status: Type.TLiteral<"expired">;
reason: Type.TUnion<[Type.TLiteral<"timeout">]>;
}>, Type.TObject<{
id: Type.TString;
urlPath: Type.TString;
createdAtMs: Type.TInteger;
expiresAtMs: Type.TInteger;
presentation: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"exec">;
commandText: Type.TString;
commandPreview: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
warningText: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
host: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
nodeId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"plugin">;
title: Type.TString;
description: Type.TString;
detail: Type.TOptional<Type.TString>;
severity: Type.TUnion<[Type.TLiteral<"info">, Type.TLiteral<"warning">, Type.TLiteral<"critical">]>;
pluginId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
toolName: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
externalResolution: Type.TOptional<Type.TObject<{
label: Type.TString;
decisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>>;
}>>;
}>, Type.TObject<{
kind: Type.TLiteral<"system-agent">;
title: Type.TString;
description: Type.TString;
proposalHash: Type.TString;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
allowedDecisions: Type.TTuple<[Type.TLiteral<"allow-once">, Type.TLiteral<"deny">]>;
}>]>;
resolvedAtMs: Type.TInteger;
source: Type.TOptional<Type.TObject<{
agentId: Type.TOptional<Type.TString>;
sessionKey: Type.TOptional<Type.TString>;
}>>;
resolver: Type.TOptional<Type.TObject<{
kind: Type.TUnion<[Type.TLiteral<"device">, Type.TLiteral<"channel">, Type.TLiteral<"runtime">, Type.TLiteral<"system">]>;
id: Type.TOptional<Type.TString>;
}>>;
status: Type.TLiteral<"cancelled">;
reason: Type.TUnion<[Type.TLiteral<"run-aborted">, Type.TLiteral<"gateway-restart">]>;
}>]>;
}>;
/** Authoritative pending approval set returned when a session stream subscribes. */
declare const SessionApprovalReplaySchema: Type.TObject<{
sessionKey: Type.TString;
updatedAtMs: Type.TInteger;
approvals: Type.TArray<Type.TObject<{
id: Type.TString;
urlPath: Type.TString;
createdAtMs: Type.TInteger;
expiresAtMs: Type.TInteger;
presentation: Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"exec">;
commandText: Type.TString;
commandPreview: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
warningText: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
host: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
nodeId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"plugin">;
title: Type.TString;
description: Type.TString;
detail: Type.TOptional<Type.TString>;
severity: Type.TUnion<[Type.TLiteral<"info">, Type.TLiteral<"warning">, Type.TLiteral<"critical">]>;
pluginId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
toolName: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
scope: Type.TOptional<Type.TUnion<[Type.TObject<{
kind: Type.TLiteral<"message-send">;
target: Type.TString;
recipientCount: Type.TInteger;
recipients: Type.TOptional<Type.TArray<Type.TString>>;
audience: Type.TOptional<Type.TUnion<[Type.TLiteral<"internal">, Type.TLiteral<"external">]>>;
}>, Type.TObject<{
kind: Type.TLiteral<"payment">;
amount: Type.TString;
currency: Type.TString;
target: Type.TString;
}>, Type.TObject<{
kind: Type.TLiteral<"external-post">;
target: Type.TString;
visibility: Type.TUnion<[Type.TLiteral<"public">, Type.TLiteral<"restricted">]>;
}>, Type.TObject<{
kind: Type.TLiteral<"standing-grant">;
automation: Type.TString;
command: Type.TString;
expiresInDays: Type.TOptional<Type.TInteger>;
}>]>>;
allowedDecisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">, Type.TLiteral<"deny">]>>;
externalResolution: Type.TOptional<Type.TObject<{
label: Type.TString;
decisions: Type.TArray<Type.TUnion<[Type.TLiteral<"allow-once">, Type.TLiteral<"allow-always">]>>;
}>>;
}>, Type.TObject<{
kind: Type.TLiteral<"system-agent">;
title: Type.TString;
description: Type.TString;
proposalHash: Type.TString;
agentId: Type.TOptional<Type.TUnion<[Type.TString, Type.TNull]>>;
allowedDecisions: Type.TTuple<[Type.TLiteral<"allow-once">, Type.TLiteral<"deny">]>;
}>]>;
status: Type.TLiteral<"pending">;
/** Canonical raising session when projected into a session-scoped reviewer surface. */
sourceSessionKey: Type.TOptional<Type.TString>;
}>>;
truncated: Type.TBoolean;
}>;
type ApprovalDecision = Static<typeof ApprovalDecisionSchema>;
type ApprovalPresentation = Static<typeof ApprovalPresentationSchema>;
type ApprovalResolveParams = Static<typeof ApprovalResolveParamsSchema>;
type ApprovalResolveResult = Static<typeof ApprovalResolveResultSchema>;
type SessionApprovalReplay = Static<typeof SessionApprovalReplaySchema>;
//#endregion
export { ApprovalScopeSchema as a, ApprovalResolveResult as i, ApprovalPresentation as n, SessionApprovalReplay as o, ApprovalResolveParams as r, ApprovalDecision as t };