feat(ai): 新增 P2-408 中低風險白名單
Some checks failed
Code Review / ai-code-review (push) Successful in 13s
CD Pipeline / tests (push) Successful in 1m33s
CD Pipeline / build-and-deploy (push) Successful in 5m2s
CD Pipeline / post-deploy-checks (push) Successful in 1m32s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled

This commit is contained in:
Your Name
2026-06-18 19:00:45 +08:00
parent 63a75f7784
commit b36f4b97fe
13 changed files with 1959 additions and 5 deletions

View File

@@ -349,6 +349,11 @@ export const apiClient = {
return handleResponse<AiAgentReportNoWriteAnalysisRuntimeSnapshot>(res)
},
async getAiAgentLowMediumRiskWhitelist() {
const res = await fetch(`${API_BASE_URL}/agents/agent-low-medium-risk-whitelist`)
return handleResponse<AiAgentLowMediumRiskWhitelistSnapshot>(res)
},
async getHostRunawayAiopsLoopReadiness() {
const res = await fetch(`${API_BASE_URL}/agents/agent-host-runaway-aiops-loop-readiness`)
return handleResponse<HostRunawayAiopsLoopReadinessSnapshot>(res)
@@ -3349,6 +3354,206 @@ export interface AiAgentReportNoWriteAnalysisRuntimeSnapshot {
}>
}
export interface AiAgentLowMediumRiskWhitelistSnapshot {
schema_version: 'ai_agent_low_medium_risk_whitelist_v1'
generated_at: string
program_status: {
overall_completion_percent: number
current_priority: 'P0' | 'P1' | 'P2' | 'P3'
current_task_id: 'P2-408'
next_task_id: 'P2-409'
read_only_mode: true
runtime_authority: 'low_medium_risk_whitelist_no_live_execution_committed_snapshot'
status_note: string
}
source_refs: string[]
source_readbacks: Array<{
readback_id: string
source_schema_version: string
source_ref: string
endpoint: string
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre'
status: string
key_readback: string
next_action: string
}>
whitelist_truth: {
p2_407_no_write_analysis_loaded: true
operation_permission_model_loaded: true
candidate_dry_run_evidence_loaded: true
report_policy_review_loaded: true
dependency_drift_loaded: true
low_risk_candidates_ready: true
medium_risk_candidates_ready: true
dry_run_verifier_required: true
rollback_proof_required: true
audit_reason_required: true
high_risk_redirect_ready: true
auto_worker_enabled: false
low_risk_live_execution_enabled: false
medium_risk_live_execution_enabled: false
gateway_queue_write_enabled: false
telegram_send_enabled: false
bot_api_call_enabled: false
receipt_production_write_enabled: false
production_write_enabled: false
secret_read_enabled: false
paid_api_call_enabled: false
host_write_enabled: false
kubectl_action_enabled: false
destructive_operation_enabled: false
openclaw_replacement_allowed: false
auto_worker_run_count_24h: number
low_risk_execution_count_24h: number
medium_risk_execution_count_24h: number
gateway_queue_write_count_24h: number
telegram_send_count_24h: number
bot_api_call_count_24h: number
receipt_production_write_count_24h: number
production_write_count_24h: number
secret_read_count_24h: number
paid_api_call_count_24h: number
host_write_count_24h: number
kubectl_action_count_24h: number
destructive_operation_count_24h: number
truth_note: string
}
whitelist_candidates: Array<{
candidate_id: string
display_name: string
risk_tier: 'low' | 'medium'
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre'
whitelist_status: 'candidate_only_no_live_execution' | 'dry_run_ready_no_live_execution' | 'owner_review_required_no_live_execution'
allowed_no_write_outputs: string[]
required_evidence: string[]
dry_run_verifier_id: string
rollback_proof_id: string
audit_reason_template_id: string
owner_approval_required_for_live_execution: true
live_execution_allowed: false
production_write_allowed: false
side_effect_count: number
blocked_runtime_actions: string[]
next_gate: string
}>
dry_run_verifiers: Array<{
verifier_id: string
display_name: string
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre'
verifier_status: 'ready' | 'owner_review_required'
required_inputs: string[]
pass_condition: string
live_readback_allowed: false
production_write_allowed: false
}>
rollback_proofs: Array<{
rollback_proof_id: string
display_name: string
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre'
rollback_scope: string
proof_status: 'noop_ready' | 'draft_ready' | 'owner_review_required'
rollback_command_allowed: false
required_before_live_execution: true
}>
audit_reason_templates: Array<{
template_id: string
display_name: string
risk_tier: 'low' | 'medium'
required_fields: string[]
example_reason: string
sensitive_payload_allowed: false
}>
high_risk_redirects: Array<{
redirect_id: string
display_name: string
risk_tier: 'high' | 'critical'
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre'
redirect_to: 'P2-409 Owner Review Queue'
blocked_runtime_actions: string[]
reason: string
}>
owner_review_gates: Array<{
gate_id: string
display_name: string
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre'
status: 'owner_review_required' | 'blocked_by_runtime_gate' | 'draft_ready'
required_fields: string[]
acceptance_checks: string[]
blocked_runtime_actions: string[]
}>
activation_boundaries: {
read_only_whitelist_allowed: true
dry_run_verifier_preview_allowed: true
rollback_proof_preview_allowed: true
audit_reason_template_allowed: true
auto_worker_enabled: false
low_risk_live_execution_enabled: false
medium_risk_live_execution_enabled: false
gateway_queue_write_enabled: false
telegram_send_enabled: false
bot_api_call_enabled: false
receipt_production_write_enabled: false
production_write_enabled: false
secret_read_enabled: false
paid_api_call_enabled: false
host_write_enabled: false
kubectl_action_enabled: false
destructive_operation_enabled: false
openclaw_replacement_allowed: false
}
telegram_policy: {
canonical_room: 'AwoooI SRE 戰情室'
canonical_room_env: 'SRE_GROUP_CHAT_ID'
gateway_queue_write_allowed: false
direct_bot_api_allowed: false
telegram_send_allowed: false
receipt_write_allowed: false
policy_note: string
}
display_redaction_contract: {
redaction_required: true
unsafe_payload_display_allowed: false
private_reasoning_display_allowed: false
secret_value_display_allowed: false
work_window_transcript_display_allowed: false
allowed_display_fields: string[]
blocked_display_fields: string[]
}
rollups: {
source_readback_count: number
whitelist_candidate_count: number
low_risk_candidate_count: number
medium_risk_candidate_count: number
candidate_only_count: number
dry_run_verifier_count: number
rollback_proof_count: number
audit_reason_template_count: number
high_risk_redirect_count: number
owner_review_gate_count: number
live_execution_approval_required_count: number
blocked_runtime_action_count: number
auto_worker_run_count: number
low_risk_execution_count: number
medium_risk_execution_count: number
gateway_queue_write_count: number
telegram_send_count: number
bot_api_call_count: number
receipt_production_write_count: number
production_write_count: number
secret_read_count: number
paid_api_call_count: number
host_write_count: number
kubectl_action_count: number
destructive_operation_count: number
}
next_actions: Array<{
task_id: string
priority: 'P0' | 'P1' | 'P2' | 'P3'
summary: string
gate: string
}>
}
export interface AiAgentReportAutomationReviewSnapshot {
schema_version: 'ai_agent_report_automation_review_v1'
generated_at: string