feat: add cockpit frontend types and API methods (Phase 3)

- TriageMeta, EvidenceItem, TriageUpdate interfaces
- QuestionItem.options field for quick-reply buttons
- triage_update on ChatMessageResponse
- Triage fields on AISessionDetail for session resume
- updateTriage() and getHandoffDraft() API methods

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
chihlasm
2026-04-01 22:41:49 +00:00
parent 92cc62bcbd
commit 036198b224
2 changed files with 49 additions and 0 deletions

View File

@@ -18,6 +18,7 @@ import type {
ChatSessionCreateResponse,
ChatMessageRequest,
ChatMessageResponse,
TriageMeta,
} from '@/types/ai-session'
export const aiSessionsApi = {
@@ -241,6 +242,26 @@ export const aiSessionsApi = {
)
return response.data
},
async updateTriage(sessionId: string, fields: Partial<TriageMeta>): Promise<TriageMeta> {
const response = await apiClient.patch<TriageMeta>(
`/ai-sessions/${sessionId}/triage`,
fields
)
return response.data
},
async getHandoffDraft(sessionId: string): Promise<string> {
const response = await apiClient.post<string>(
`/ai-sessions/${sessionId}/handoff-draft`,
{},
{ headers: { Accept: 'text/event-stream' }, responseType: 'text' }
)
// Response is SSE format: "data: {...}\n\n"
const raw = typeof response.data === 'string' ? response.data : ''
const dataLine = raw.split('\n').find(l => l.startsWith('data: '))
return dataLine ? dataLine.slice(6) : raw
},
}
export default aiSessionsApi

View File

@@ -198,6 +198,11 @@ export interface AISessionDetail extends AISessionSummary {
pending_task_lane: { questions: QuestionItem[]; actions: ActionItem[] } | null
is_branching: boolean
active_branch_id: string | null
client_name: string | null
asset_name: string | null
issue_category: string | null
triage_hypothesis: string | null
evidence_items: EvidenceItem[] | null
}
export interface AISessionSearchResult {
@@ -238,6 +243,28 @@ export interface ActionItem {
export interface QuestionItem {
text: string
context?: string
options?: string[] | null
}
export interface EvidenceItem {
text: string
status: 'confirmed' | 'ruled_out' | 'pending'
}
export interface TriageMeta {
client_name: string | null
asset_name: string | null
issue_category: string | null
triage_hypothesis: string | null
evidence_items: EvidenceItem[]
}
export interface TriageUpdate {
client_name?: string | null
asset_name?: string | null
issue_category?: string | null
triage_hypothesis?: string | null
evidence_items?: EvidenceItem[] | null
}
export interface ChatMessageResponse {
@@ -246,6 +273,7 @@ export interface ChatMessageResponse {
fork?: ForkMetadata | null
actions?: ActionItem[] | null
questions?: QuestionItem[] | null
triage_update?: TriageUpdate | null
}
export interface SimilarSession {