feat(governance): add agent market automation surfaces
Some checks failed
Some checks failed
This commit is contained in:
@@ -246,6 +246,21 @@ export const apiClient = {
|
||||
const res = await fetch(`${API_BASE_URL}/errors/ux-audit`)
|
||||
return handleResponse<UXAuditResponse>(res)
|
||||
},
|
||||
|
||||
async getAgentMarketGovernanceSnapshot() {
|
||||
const res = await fetch(`${API_BASE_URL}/agents/market-governance-snapshot`)
|
||||
return handleResponse<AgentMarketGovernanceSnapshot>(res)
|
||||
},
|
||||
|
||||
async getAiAgentAutomationInventorySnapshot() {
|
||||
const res = await fetch(`${API_BASE_URL}/agents/automation-inventory-snapshot`)
|
||||
return handleResponse<AiAgentAutomationInventorySnapshot>(res)
|
||||
},
|
||||
|
||||
async getAiAgentAutomationBacklogSnapshot() {
|
||||
const res = await fetch(`${API_BASE_URL}/agents/automation-backlog-snapshot`)
|
||||
return handleResponse<AiAgentAutomationBacklogSnapshot>(res)
|
||||
},
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
@@ -470,3 +485,239 @@ export interface UXAuditResponse {
|
||||
details: UXAuditDetail[]
|
||||
replay_dashboard_url: string
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// Agent Market Governance Snapshot
|
||||
// =========================================================================
|
||||
|
||||
export interface AgentMarketGovernanceSnapshot {
|
||||
schema_version: 'agent_market_governance_snapshot_v1'
|
||||
generated_at: string
|
||||
current_decision: string
|
||||
policy: Record<string, boolean>
|
||||
evaluation_cadence: {
|
||||
workflow: string
|
||||
schedule: string
|
||||
timezone: 'Asia/Taipei'
|
||||
next_scheduled_run_at: string
|
||||
trigger_modes: string[]
|
||||
primary_source_policy: string
|
||||
operator_review_gate: string
|
||||
}
|
||||
market_watch_health: {
|
||||
status: 'healthy' | 'blocked'
|
||||
freshness_sla_hours: 168
|
||||
stale_grace_hours: 6
|
||||
stale_after: string
|
||||
source_failures_block_priority_upgrade: boolean
|
||||
blocked_from_integration: number
|
||||
operator_blockers: string[]
|
||||
}
|
||||
summary: {
|
||||
candidate_count: number
|
||||
source_count: number
|
||||
source_failures: number
|
||||
changed_candidates: number
|
||||
integration_queue_count: number
|
||||
blocked_from_integration: number
|
||||
watch_only_candidates_reviewed: number
|
||||
eligible_for_market_scorecard_prescreen: number
|
||||
recommended_watch_additions_remaining: number
|
||||
priority_upgrades_approved: number
|
||||
market_scorecard_updates_approved: number
|
||||
replay_candidates_approved: number
|
||||
sdk_installations_approved: number
|
||||
paid_api_calls_approved: number
|
||||
production_changes_approved: number
|
||||
shadow_or_canary_approved: number
|
||||
replacement_decisions_approved: number
|
||||
}
|
||||
candidate_groups: {
|
||||
production_baseline: string[]
|
||||
replay_or_integration_blocked: string[]
|
||||
watch_only_candidates: string[]
|
||||
watch_only_scorecard_prescreen_ready: string[]
|
||||
}
|
||||
candidate_statuses: Array<{
|
||||
candidate_id: string
|
||||
display_name: string
|
||||
role: string
|
||||
evaluation_priority: string
|
||||
gate_status:
|
||||
| 'production_baseline'
|
||||
| 'integration_blocked'
|
||||
| 'integration_reviewed'
|
||||
| 'watch_only_prescreen_ready'
|
||||
| 'watch_only_blocked'
|
||||
| 'watch_only_monitoring'
|
||||
| 'registered_no_review'
|
||||
current_gate: string
|
||||
required_next_gate: string
|
||||
integration_decision: string
|
||||
score: number | null
|
||||
evidence: {
|
||||
latest_replay_summary: string | null
|
||||
latest_smoke_gate: string | null
|
||||
latest_smoke_matrix: string | null
|
||||
latest_smoke_model: string | null
|
||||
}
|
||||
approvals: {
|
||||
replay: false
|
||||
sdk_install: false
|
||||
paid_api: false
|
||||
shadow_or_canary: false
|
||||
production_routing: false
|
||||
}
|
||||
operator_blockers: string[]
|
||||
}>
|
||||
operator_decision_queue: Array<{
|
||||
candidate_id: string
|
||||
display_name: string
|
||||
priority: number
|
||||
queue_status:
|
||||
| 'baseline_protected'
|
||||
| 'blocked_needs_evidence'
|
||||
| 'operator_review_required'
|
||||
| 'operator_priority_review'
|
||||
| 'watch_only_blocked'
|
||||
| 'watch_only_monitoring'
|
||||
| 'registered_no_review'
|
||||
recommended_action: string
|
||||
approval_boundary: {
|
||||
replacement_adr_required: boolean
|
||||
priority_upgrade_required: boolean
|
||||
market_scorecard_update_required: boolean
|
||||
replay_approval_required: boolean
|
||||
sdk_install_approval_required: boolean
|
||||
paid_api_approval_required: boolean
|
||||
shadow_or_canary_approval_required: boolean
|
||||
production_routing_approval_required: boolean
|
||||
}
|
||||
risk_notes: string[]
|
||||
evidence_refs: string[]
|
||||
}>
|
||||
next_allowed_actions: string[]
|
||||
forbidden_actions_without_new_approval: string[]
|
||||
}
|
||||
|
||||
// =========================================================================
|
||||
// AI Agent Automation Inventory Snapshot
|
||||
// =========================================================================
|
||||
|
||||
export interface AiAgentAutomationInventorySnapshot {
|
||||
schema_version: 'ai_agent_automation_inventory_snapshot_v1'
|
||||
generated_at: string
|
||||
program_status: {
|
||||
overall_completion_percent: number
|
||||
current_priority: 'P0' | 'P1' | 'P2' | 'P3'
|
||||
current_task_id: string
|
||||
next_task_id: string
|
||||
read_only_mode: true
|
||||
}
|
||||
status_taxonomy: {
|
||||
task_statuses: string[]
|
||||
gate_statuses: string[]
|
||||
priorities: Array<'P0' | 'P1' | 'P2' | 'P3'>
|
||||
}
|
||||
agent_roles: Array<{
|
||||
agent_id: string
|
||||
display_name: string
|
||||
primary_role: string
|
||||
allowed_actions: string[]
|
||||
blocked_actions: string[]
|
||||
}>
|
||||
asset_domains: Array<{
|
||||
domain_id: string
|
||||
display_name: string
|
||||
description: string
|
||||
}>
|
||||
assets: Array<{
|
||||
asset_id: string
|
||||
domain_id: string
|
||||
display_name: string
|
||||
asset_type: string
|
||||
status: string
|
||||
gate_status: string
|
||||
owner_agent: string
|
||||
risk_level: 'low' | 'medium' | 'high' | 'critical'
|
||||
evidence_refs: string[]
|
||||
next_action: string
|
||||
}>
|
||||
workstreams: Array<{
|
||||
workstream_id: string
|
||||
display_name: string
|
||||
completion_percent: number
|
||||
status: string
|
||||
next_task_id: string
|
||||
}>
|
||||
tasks: Array<{
|
||||
task_id: string
|
||||
priority: 'P0' | 'P1' | 'P2' | 'P3'
|
||||
status: string
|
||||
completion_percent: number
|
||||
owner_agent: string
|
||||
title: string
|
||||
output: string
|
||||
gate_status: string
|
||||
next_action: string
|
||||
}>
|
||||
evidence: Array<{
|
||||
evidence_id: string
|
||||
kind: 'schema' | 'test' | 'browser' | 'api' | 'build' | 'doc' | 'runtime'
|
||||
ref: string
|
||||
result: string
|
||||
}>
|
||||
approval_boundaries: Record<
|
||||
| 'sdk_installation_allowed'
|
||||
| 'paid_api_call_allowed'
|
||||
| 'shadow_or_canary_allowed'
|
||||
| 'production_routing_allowed'
|
||||
| 'destructive_operation_allowed',
|
||||
false
|
||||
>
|
||||
}
|
||||
|
||||
export interface AiAgentAutomationBacklogSnapshot {
|
||||
schema_version: 'ai_agent_automation_backlog_v1'
|
||||
generated_at: string
|
||||
source_inventory_snapshot_ref: string
|
||||
program_status: {
|
||||
overall_completion_percent: number
|
||||
current_priority: 'P0' | 'P1' | 'P2' | 'P3'
|
||||
current_task_id: string
|
||||
next_task_id: string
|
||||
read_only_mode: true
|
||||
}
|
||||
rollups: {
|
||||
total_items: number
|
||||
by_priority: Record<string, number>
|
||||
by_status: Record<string, number>
|
||||
by_gate_status: Record<string, number>
|
||||
by_owner_agent: Record<string, number>
|
||||
}
|
||||
backlog_items: Array<{
|
||||
item_id: string
|
||||
priority: 'P0' | 'P1' | 'P2' | 'P3'
|
||||
status: string
|
||||
workstream_id: string
|
||||
source_asset_id: string
|
||||
source_signal_kind: string
|
||||
title: string
|
||||
owner_agent: string
|
||||
recommended_action: string
|
||||
action_class: string
|
||||
gate_status: string
|
||||
risk_level: 'low' | 'medium' | 'high' | 'critical'
|
||||
evidence_refs: string[]
|
||||
acceptance_criteria: string[]
|
||||
next_review: string
|
||||
}>
|
||||
approval_boundaries: Record<
|
||||
| 'sdk_installation_allowed'
|
||||
| 'paid_api_call_allowed'
|
||||
| 'shadow_or_canary_allowed'
|
||||
| 'production_routing_allowed'
|
||||
| 'destructive_operation_allowed',
|
||||
false
|
||||
>
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user