346 lines
9.4 KiB
Python
346 lines
9.4 KiB
Python
from __future__ import annotations
|
|
|
|
from typing import Any, Optional
|
|
|
|
from pydantic import BaseModel, ConfigDict, Field
|
|
|
|
|
|
class MountedAISourceItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
source_system: str
|
|
run_count: int = 0
|
|
topic_count: int = 0
|
|
active_topic_count: int = 0
|
|
last_seen_at: Optional[str] = None
|
|
|
|
|
|
class MountedAISourceListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAISourceItem] = Field(default_factory=list)
|
|
|
|
|
|
class MountedAISourceActivationItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
source_system: str
|
|
scope_type: str
|
|
scope_ref: str
|
|
status: str
|
|
cutover_mode: str
|
|
auto_reply_enabled: bool
|
|
last_seen_at: Optional[str] = None
|
|
notes: Optional[str] = None
|
|
metadata_json: Optional[Any] = None
|
|
|
|
|
|
class MountedAISourceActivationListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAISourceActivationItem] = Field(default_factory=list)
|
|
|
|
|
|
class MountedAISourceActivationUpsertRequest(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
source_system: str = Field(min_length=1, max_length=32)
|
|
scope_type: str = Field(default="tenant", min_length=1, max_length=24)
|
|
scope_ref: str = Field(min_length=1, max_length=128)
|
|
status: str = Field(default="active", min_length=1, max_length=24)
|
|
cutover_mode: str = Field(default="shadow", min_length=1, max_length=24)
|
|
auto_reply_enabled: bool = False
|
|
notes: Optional[str] = None
|
|
metadata_json: Optional[Any] = None
|
|
|
|
|
|
class MountedAISourceActivationUpsertPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
item: MountedAISourceActivationItem
|
|
|
|
|
|
class MountedAIToolPolicyItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
tool_name: str
|
|
risk_level: str
|
|
confirm_required: bool
|
|
auto_execute_allowed: bool
|
|
is_active: bool
|
|
source_scope: Optional[Any] = None
|
|
tenant_scope: Optional[Any] = None
|
|
policy_metadata: Optional[Any] = None
|
|
notes: Optional[str] = None
|
|
|
|
|
|
class MountedAIToolPolicyListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAIToolPolicyItem] = Field(default_factory=list)
|
|
|
|
|
|
class MountedAIToolPolicyUpsertRequest(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
tool_name: str = Field(min_length=1, max_length=128)
|
|
risk_level: str = Field(default="medium", min_length=1, max_length=24)
|
|
confirm_required: bool = True
|
|
auto_execute_allowed: bool = False
|
|
is_active: bool = True
|
|
source_scope: Optional[Any] = None
|
|
tenant_scope: Optional[Any] = None
|
|
policy_metadata: Optional[Any] = None
|
|
notes: Optional[str] = None
|
|
|
|
|
|
class MountedAIToolPolicyUpsertPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
item: MountedAIToolPolicyItem
|
|
|
|
|
|
class MountedAITopicItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
topic_key: str
|
|
source_system: str
|
|
channel_ref: Optional[str] = None
|
|
thread_key: Optional[str] = None
|
|
mode: str
|
|
status: str
|
|
plan_status: Optional[str] = None
|
|
readiness_score: Optional[float] = None
|
|
draft_state: Optional[str] = None
|
|
draft_version: Optional[int] = None
|
|
updated_at: Optional[str] = None
|
|
|
|
|
|
class MountedAITopicListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAITopicItem] = Field(default_factory=list)
|
|
total: int = 0
|
|
|
|
|
|
class MountedAIRunItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
trace_id: str
|
|
source_system: str
|
|
source_message_id: Optional[str] = None
|
|
mode_before: Optional[str] = None
|
|
mode_after: Optional[str] = None
|
|
active_agent: Optional[str] = None
|
|
status: str
|
|
trigger_reason: Optional[str] = None
|
|
final_reply: Optional[str] = None
|
|
trace_count: int = 0
|
|
updated_at: Optional[str] = None
|
|
|
|
|
|
class MountedAIRunListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAIRunItem] = Field(default_factory=list)
|
|
total: int = 0
|
|
|
|
|
|
class MountedAIAgentTraceItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
agent_name: str
|
|
status: str
|
|
latency_ms: Optional[int] = None
|
|
failure_reason: Optional[str] = None
|
|
input_summary: Optional[Any] = None
|
|
output_summary: Optional[Any] = None
|
|
tool_trace: Optional[Any] = None
|
|
created_at: Optional[str] = None
|
|
|
|
|
|
class MountedAIRunDetailPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
item: MountedAIRunItem
|
|
agent_traces: list[MountedAIAgentTraceItem] = Field(default_factory=list)
|
|
context_layers_hit: Optional[Any] = None
|
|
tool_calls: Optional[Any] = None
|
|
execution_outcome: Optional[Any] = None
|
|
|
|
|
|
class MountedAICutoverStatusPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
mounted_runtime_ready: bool
|
|
topic_workspace_count: int = 0
|
|
conversation_run_count: int = 0
|
|
tool_policy_count: int = 0
|
|
observed_source_systems: list[str] = Field(default_factory=list)
|
|
legacy_cutover_state: str
|
|
retired_item_count: int = 0
|
|
active_item_count: int = 0
|
|
legacy_cutover_items: list["MountedAILegacyCutoverItem"] = Field(default_factory=list)
|
|
|
|
|
|
class MountedAILegacyCutoverItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
key: str
|
|
title: str
|
|
status: str
|
|
summary: str
|
|
evidence: str
|
|
|
|
|
|
class MountedAIEvalSuiteItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
dataset_type: str
|
|
version: str
|
|
status: str
|
|
suite_kind: str
|
|
sample_count: int = 0
|
|
latest_score: Optional[float] = None
|
|
last_evaluated_at: Optional[str] = None
|
|
|
|
|
|
class MountedAIEvalSuiteListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAIEvalSuiteItem] = Field(default_factory=list)
|
|
total: int = 0
|
|
|
|
|
|
class MountedAIEvalResultItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
evaluation_type: str
|
|
status: str
|
|
score: Optional[float] = None
|
|
|
|
|
|
class MountedAIEvalSuiteDetailPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
item: MountedAIEvalSuiteItem
|
|
selection_rules: Optional[Any] = None
|
|
notes: Optional[str] = None
|
|
evaluations: list[MountedAIEvalResultItem] = Field(default_factory=list)
|
|
|
|
|
|
class MountedAIRegressionBucketItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
bucket_key: str
|
|
run_count: int = 0
|
|
avg_score: Optional[float] = None
|
|
last_seen_at: Optional[str] = None
|
|
|
|
|
|
class MountedAITrainingDatasetItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
dataset_type: str
|
|
version: str
|
|
status: str
|
|
sample_count: int = 0
|
|
suite_kind: Optional[str] = None
|
|
|
|
|
|
class MountedAITrainingJobItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
id: int
|
|
job_type: str
|
|
target_slot: str
|
|
status: str
|
|
provider_backend: str
|
|
dataset_id: int
|
|
artifact_ref: Optional[str] = None
|
|
|
|
|
|
class MountedAITrainingAcceptanceGate(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
ready_for_acceptance: bool = False
|
|
threshold_score: float = 90.0
|
|
frozen_eval_score: Optional[float] = None
|
|
severe_blocker_count: int = 0
|
|
blocking_reason: str
|
|
|
|
|
|
class MountedAITrainingOpsPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
dataset_count: int = 0
|
|
ready_eval_suite_count: int = 0
|
|
pending_job_count: int = 0
|
|
candidate_deployment_count: int = 0
|
|
approved_golden_asset_count: int = 0
|
|
approved_failure_asset_count: int = 0
|
|
preference_pair_count: int = 0
|
|
hard_case_count: int = 0
|
|
last_training_job_at: Optional[str] = None
|
|
regression_buckets: list[MountedAIRegressionBucketItem] = Field(default_factory=list)
|
|
recent_datasets: list[MountedAITrainingDatasetItem] = Field(default_factory=list)
|
|
recent_jobs: list[MountedAITrainingJobItem] = Field(default_factory=list)
|
|
acceptance_gate: MountedAITrainingAcceptanceGate
|
|
|
|
|
|
class MountedAIHardCaseItem(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
judge_run_id: int
|
|
asset_id: Optional[int] = None
|
|
bucket_key: str
|
|
judge_status: str
|
|
overall_score: Optional[float] = None
|
|
prompt_key: Optional[str] = None
|
|
workflow_type: Optional[str] = None
|
|
asked_via: Optional[str] = None
|
|
question_text: Optional[str] = None
|
|
answer_text: Optional[str] = None
|
|
corrected_answer: Optional[str] = None
|
|
findings: Optional[Any] = None
|
|
created_at: Optional[str] = None
|
|
|
|
|
|
class MountedAIHardCaseListPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
items: list[MountedAIHardCaseItem] = Field(default_factory=list)
|
|
total: int = 0
|
|
|
|
|
|
class MountedAIReplayRunRequest(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
run_id: int
|
|
asset_type: str = Field(default="failure", min_length=1, max_length=16)
|
|
bucket_key: Optional[str] = Field(default=None, max_length=255)
|
|
question_text: Optional[str] = None
|
|
answer_text: Optional[str] = None
|
|
corrected_answer: Optional[str] = None
|
|
notes: Optional[str] = None
|
|
persist_quality_asset: bool = True
|
|
overall_score: Optional[float] = None
|
|
rule_score: Optional[float] = None
|
|
llm_score: Optional[float] = None
|
|
findings: Optional[Any] = None
|
|
|
|
|
|
class MountedAIReplayRunPayload(BaseModel):
|
|
model_config = ConfigDict(extra="ignore")
|
|
|
|
run_id: int
|
|
asset: Optional[Any] = None
|
|
judge_run: Optional[Any] = None
|