feat(agents): expose controlled executor handoff runway
Some checks failed
Code Review / ai-code-review (push) Successful in 22s
CD Pipeline / tests (push) Successful in 1m47s
CD Pipeline / build-and-deploy (push) Successful in 6m20s
CD Pipeline / post-deploy-checks (push) Successful in 2m18s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
Some checks failed
Code Review / ai-code-review (push) Successful in 22s
CD Pipeline / tests (push) Successful in 1m47s
CD Pipeline / build-and-deploy (push) Successful in 6m20s
CD Pipeline / post-deploy-checks (push) Successful in 2m18s
Ansible / Reboot Recovery Contract / validate (push) Has been cancelled
This commit is contained in:
@@ -647,6 +647,11 @@ export const apiClient = {
|
||||
return handleResponse<AiAgentHighRiskOwnerReviewQueueSnapshot>(res)
|
||||
},
|
||||
|
||||
async getAiAgentControlledExecutorHandoff() {
|
||||
const res = await fetch(`${API_BASE_URL}/agents/agent-controlled-executor-handoff`)
|
||||
return handleResponse<AiAgentControlledExecutorHandoffSnapshot>(res)
|
||||
},
|
||||
|
||||
async getAiAgentActionAuditLedger() {
|
||||
const res = await fetch(`${API_BASE_URL}/agents/agent-action-audit-ledger`)
|
||||
return handleResponse<AiAgentActionAuditLedgerSnapshot>(res)
|
||||
@@ -4487,6 +4492,226 @@ export interface AiAgentHighRiskOwnerReviewQueueSnapshot {
|
||||
}>
|
||||
}
|
||||
|
||||
export interface AiAgentControlledExecutorHandoffSnapshot {
|
||||
schema_version: 'ai_agent_controlled_executor_handoff_v1'
|
||||
generated_at: string
|
||||
program_status: {
|
||||
overall_completion_percent: number
|
||||
current_priority: 'P0'
|
||||
current_task_id: 'P2-415'
|
||||
next_task_id: 'P2-416'
|
||||
read_only_mode: true
|
||||
runtime_authority: 'controlled_executor_handoff_readback_no_live_apply'
|
||||
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' | 'security' | 'devops'
|
||||
status: string
|
||||
key_readback: string
|
||||
next_action: string
|
||||
}>
|
||||
handoff_truth: {
|
||||
p2_409_controlled_apply_queue_loaded: true
|
||||
p2_410_audit_ledger_loaded: true
|
||||
p2_411_handoff_event_bus_loaded: true
|
||||
runtime_readiness_loaded: true
|
||||
runtime_write_gate_loaded: true
|
||||
post_write_verifier_loaded: true
|
||||
learning_writeback_loaded: true
|
||||
telegram_receipt_loaded: true
|
||||
high_risk_controlled_executor_handoff_ready: true
|
||||
high_risk_owner_review_required: false
|
||||
critical_break_glass_required: true
|
||||
allowlist_route_required: true
|
||||
ansible_check_mode_required: true
|
||||
rollback_plan_required: true
|
||||
post_action_verifier_required: true
|
||||
telegram_evidence_required: true
|
||||
km_writeback_required: true
|
||||
playbook_trust_writeback_required: true
|
||||
controlled_executor_dispatch_enabled: false
|
||||
live_apply_enabled: false
|
||||
critical_auto_bypass_allowed: false
|
||||
gateway_queue_write_enabled: false
|
||||
telegram_send_enabled: false
|
||||
bot_api_call_enabled: false
|
||||
km_write_enabled: false
|
||||
playbook_trust_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
|
||||
controlled_executor_dispatch_count_24h: number
|
||||
live_apply_count_24h: number
|
||||
gateway_queue_write_count_24h: number
|
||||
telegram_send_count_24h: number
|
||||
bot_api_call_count_24h: number
|
||||
km_write_count_24h: number
|
||||
playbook_trust_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
|
||||
}
|
||||
executor_handoff_packets: Array<{
|
||||
packet_id: string
|
||||
source_queue_item_id: string
|
||||
display_name: string
|
||||
risk_tier: 'high' | 'critical'
|
||||
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre' | 'security' | 'devops'
|
||||
executor_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre' | 'security' | 'devops'
|
||||
executor_type:
|
||||
| 'ansible_playbook'
|
||||
| 'mcp_tool_route'
|
||||
| 'telegram_gateway_queue'
|
||||
| 'km_playbook_writer'
|
||||
| 'readback_verifier'
|
||||
| 'break_glass_only'
|
||||
handoff_status:
|
||||
| 'ready_for_controlled_executor'
|
||||
| 'critical_break_glass_only'
|
||||
| 'blocked_missing_check_mode'
|
||||
| 'blocked_missing_verifier'
|
||||
| 'blocked_missing_learning_writeback'
|
||||
controlled_route_id: string
|
||||
playbook_ref: string
|
||||
mcp_tool_ref: string
|
||||
check_mode_ref: string
|
||||
verifier_ref: string
|
||||
rollback_ref: string
|
||||
telegram_evidence_ref: string
|
||||
km_writeback_ref: string
|
||||
playbook_trust_ref: string
|
||||
allowlist_match: boolean
|
||||
check_mode_passed: boolean
|
||||
rollback_plan_ready: boolean
|
||||
post_action_verifier_ready: boolean
|
||||
telegram_evidence_ready: boolean
|
||||
km_writeback_ready: boolean
|
||||
playbook_trust_writeback_ready: boolean
|
||||
owner_response_required: boolean
|
||||
break_glass_required: boolean
|
||||
controlled_executor_handoff_allowed: boolean
|
||||
live_apply_performed: false
|
||||
side_effect_count: number
|
||||
blocked_runtime_actions: string[]
|
||||
next_gate: string
|
||||
}>
|
||||
executor_routes: Array<{
|
||||
route_id: string
|
||||
display_name: string
|
||||
executor_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre' | 'security' | 'devops'
|
||||
route_status: 'ready_for_handoff' | 'blocked_by_policy'
|
||||
required_inputs: string[]
|
||||
blocked_actions: string[]
|
||||
live_apply_allowed_by_this_readback: false
|
||||
}>
|
||||
verifier_bindings: Array<{
|
||||
binding_id: string
|
||||
display_name: string
|
||||
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre' | 'security' | 'devops'
|
||||
required_before_dispatch: true
|
||||
ready_count: number
|
||||
blocked_count: number
|
||||
failure_if_missing: string
|
||||
}>
|
||||
learning_writeback_contracts: Array<{
|
||||
contract_id: string
|
||||
display_name: string
|
||||
owner_agent: 'openclaw' | 'hermes' | 'nemotron' | 'sre' | 'security' | 'devops'
|
||||
target_store: string
|
||||
writeback_status: 'ready_for_executor_receipt' | 'blocked_by_policy'
|
||||
required_fields: string[]
|
||||
runtime_write_performed: false
|
||||
}>
|
||||
activation_boundaries: {
|
||||
committed_snapshot_read_allowed: true
|
||||
controlled_executor_handoff_preview_allowed: true
|
||||
ansible_check_mode_receipt_preview_allowed: true
|
||||
mcp_tool_registry_route_preview_allowed: true
|
||||
post_action_verifier_binding_preview_allowed: true
|
||||
telegram_evidence_preview_allowed: true
|
||||
km_playbook_trust_writeback_preview_allowed: true
|
||||
controlled_executor_dispatch_enabled: false
|
||||
live_apply_enabled: false
|
||||
gateway_queue_write_enabled: false
|
||||
telegram_send_enabled: false
|
||||
bot_api_call_enabled: false
|
||||
km_write_enabled: false
|
||||
playbook_trust_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
|
||||
}
|
||||
display_redaction_contract: {
|
||||
redaction_required: true
|
||||
raw_tool_output_display_allowed: false
|
||||
raw_runtime_payload_display_allowed: false
|
||||
raw_telegram_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
|
||||
handoff_packet_count: number
|
||||
ready_for_controlled_executor_count: number
|
||||
critical_break_glass_count: number
|
||||
high_risk_packet_count: number
|
||||
critical_packet_count: number
|
||||
ansible_check_mode_packet_count: number
|
||||
mcp_tool_route_count: number
|
||||
post_action_verifier_binding_count: number
|
||||
telegram_evidence_binding_count: number
|
||||
km_writeback_binding_count: number
|
||||
playbook_trust_writeback_binding_count: number
|
||||
owner_response_required_count: number
|
||||
blocked_by_critical_boundary_count: number
|
||||
missing_check_mode_count: number
|
||||
missing_rollback_count: number
|
||||
missing_verifier_count: number
|
||||
missing_telegram_evidence_count: number
|
||||
missing_learning_writeback_count: number
|
||||
executor_route_count: number
|
||||
verifier_binding_count: number
|
||||
learning_writeback_contract_count: number
|
||||
controlled_executor_dispatch_count: number
|
||||
live_apply_count: number
|
||||
gateway_queue_write_count: number
|
||||
telegram_send_count: number
|
||||
bot_api_call_count: number
|
||||
km_write_count: number
|
||||
playbook_trust_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 AiAgentActionAuditLedgerSnapshot {
|
||||
schema_version: 'ai_agent_action_audit_ledger_v1'
|
||||
generated_at: string
|
||||
|
||||
Reference in New Issue
Block a user