mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-12 21:10:44 +00:00
96 lines
2.8 KiB
TypeScript
96 lines
2.8 KiB
TypeScript
import type { InteractiveReplyButton } from "../interactive/payload.js";
|
|
import type { ChannelApprovalKind } from "./approval-types.js";
|
|
import type { CommandExplanationSummary } from "./command-analysis/explain.js";
|
|
import type {
|
|
ExecApprovalDecision,
|
|
ExecApprovalRequest,
|
|
ExecApprovalResolved,
|
|
} from "./exec-approvals.js";
|
|
import type { PluginApprovalRequest, PluginApprovalResolved } from "./plugin-approvals.js";
|
|
|
|
type ApprovalPhase = "pending" | "resolved" | "expired";
|
|
|
|
export type ApprovalActionView = {
|
|
decision: ExecApprovalDecision;
|
|
label: string;
|
|
style: NonNullable<InteractiveReplyButton["style"]>;
|
|
command: string;
|
|
};
|
|
|
|
export type ApprovalMetadataView = {
|
|
label: string;
|
|
value: string;
|
|
};
|
|
|
|
type ApprovalViewBase = {
|
|
approvalId: string;
|
|
approvalKind: ChannelApprovalKind;
|
|
phase: ApprovalPhase;
|
|
title: string;
|
|
description?: string | null;
|
|
metadata: ApprovalMetadataView[];
|
|
};
|
|
|
|
export type ExecApprovalViewBase = ApprovalViewBase & {
|
|
approvalKind: "exec";
|
|
ask?: string | null;
|
|
agentId?: string | null;
|
|
warningText?: string | null;
|
|
commandAnalysis?: CommandExplanationSummary | null;
|
|
commandText: string;
|
|
commandPreview?: string | null;
|
|
cwd?: string | null;
|
|
envKeys?: readonly string[];
|
|
host?: string | null;
|
|
nodeId?: string | null;
|
|
sessionKey?: string | null;
|
|
};
|
|
|
|
export type ExecApprovalPendingView = ExecApprovalViewBase & {
|
|
phase: "pending";
|
|
actions: ApprovalActionView[];
|
|
expiresAtMs: number;
|
|
};
|
|
|
|
export type ExecApprovalResolvedView = ExecApprovalViewBase & {
|
|
phase: "resolved";
|
|
decision: ExecApprovalDecision;
|
|
resolvedBy?: string | null;
|
|
};
|
|
|
|
export type ExecApprovalExpiredView = ExecApprovalViewBase & {
|
|
phase: "expired";
|
|
};
|
|
|
|
export type PluginApprovalViewBase = ApprovalViewBase & {
|
|
approvalKind: "plugin";
|
|
agentId?: string | null;
|
|
pluginId?: string | null;
|
|
toolName?: string | null;
|
|
severity: "info" | "warning" | "critical";
|
|
};
|
|
|
|
export type PluginApprovalPendingView = PluginApprovalViewBase & {
|
|
phase: "pending";
|
|
actions: ApprovalActionView[];
|
|
expiresAtMs: number;
|
|
};
|
|
|
|
export type PluginApprovalResolvedView = PluginApprovalViewBase & {
|
|
phase: "resolved";
|
|
decision: ExecApprovalDecision;
|
|
resolvedBy?: string | null;
|
|
};
|
|
|
|
export type PluginApprovalExpiredView = PluginApprovalViewBase & {
|
|
phase: "expired";
|
|
};
|
|
|
|
export type PendingApprovalView = ExecApprovalPendingView | PluginApprovalPendingView;
|
|
export type ResolvedApprovalView = ExecApprovalResolvedView | PluginApprovalResolvedView;
|
|
export type ExpiredApprovalView = ExecApprovalExpiredView | PluginApprovalExpiredView;
|
|
export type ApprovalViewModel = PendingApprovalView | ResolvedApprovalView | ExpiredApprovalView;
|
|
|
|
export type ApprovalRequest = ExecApprovalRequest | PluginApprovalRequest;
|
|
export type ApprovalResolved = ExecApprovalResolved | PluginApprovalResolved;
|