Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions frontend/messages/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -1142,6 +1142,15 @@
}
}
],
"session_recall_title": "Recall",
"session_recall_loading": "Loading distilled recall…",
"session_recall_empty": "No distilled recall for this session.",
"session_recall_error": "Could not load distilled recall.",
"session_recall_generation": "Generation",
"session_recall_review_state": "Review state",
"session_recall_provenance_revoked": "Provenance revoked",
"session_recall_evidence_range": "Messages {start}–{end}",
"session_recall_jump_evidence": "Jump to transcript messages {start}–{end}",
"session_vitals_title": "Analysis",
"session_vitals_subtitle": "Session vital signs",
"session_vitals_close": "Close session analysis",
Expand Down
9 changes: 9 additions & 0 deletions frontend/messages/fr.json
Original file line number Diff line number Diff line change
Expand Up @@ -1142,6 +1142,15 @@
}
}
],
"session_recall_title": "Mémoire",
"session_recall_loading": "Chargement des mémoires distillées…",
"session_recall_empty": "Aucune mémoire distillée pour cette session.",
"session_recall_error": "Impossible de charger les mémoires distillées.",
"session_recall_generation": "Génération",
"session_recall_review_state": "État de révision",
"session_recall_provenance_revoked": "Provenance révoquée",
"session_recall_evidence_range": "Messages {start}–{end}",
"session_recall_jump_evidence": "Aller aux messages {start}–{end} de la transcription",
"session_vitals_title": "Analyse",
"session_vitals_subtitle": "Signes vitaux de la session",
"session_vitals_close": "Fermer l'analyse de la session",
Expand Down
9 changes: 9 additions & 0 deletions frontend/messages/ko.json
Original file line number Diff line number Diff line change
Expand Up @@ -1112,6 +1112,15 @@
}
}
],
"session_recall_title": "리콜",
"session_recall_loading": "추출된 리콜을 불러오는 중…",
"session_recall_empty": "이 세션에 추출된 리콜이 없습니다.",
"session_recall_error": "추출된 리콜을 불러올 수 없습니다.",
"session_recall_generation": "세대",
"session_recall_review_state": "검토 상태",
"session_recall_provenance_revoked": "출처가 취소됨",
"session_recall_evidence_range": "메시지 {start}–{end}",
"session_recall_jump_evidence": "대화 기록 메시지 {start}–{end}(으)로 이동",
"session_vitals_title": "분석",
"session_vitals_subtitle": "세션 바이탈 사인",
"session_vitals_close": "세션 분석 닫기",
Expand Down
9 changes: 9 additions & 0 deletions frontend/messages/zh-CN.json
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,15 @@
}
}
],
"session_recall_title": "记忆",
"session_recall_loading": "正在加载提炼记忆…",
"session_recall_empty": "此会话没有提炼记忆。",
"session_recall_error": "无法加载提炼记忆。",
"session_recall_generation": "代次",
"session_recall_review_state": "审核状态",
"session_recall_provenance_revoked": "来源已撤销",
"session_recall_evidence_range": "消息 {start}–{end}",
"session_recall_jump_evidence": "跳转到转录消息 {start}–{end}",
"session_vitals_title": "分析",
"session_vitals_subtitle": "会话指标",
"session_vitals_close": "关闭会话分析",
Expand Down
9 changes: 9 additions & 0 deletions frontend/messages/zh-TW.json
Original file line number Diff line number Diff line change
Expand Up @@ -1110,6 +1110,15 @@
}
}
],
"session_recall_title": "記憶",
"session_recall_loading": "正在載入提煉記憶…",
"session_recall_empty": "此工作階段沒有提煉記憶。",
"session_recall_error": "無法載入提煉記憶。",
"session_recall_generation": "代次",
"session_recall_review_state": "審核狀態",
"session_recall_provenance_revoked": "來源已撤銷",
"session_recall_evidence_range": "訊息 {start}–{end}",
"session_recall_jump_evidence": "跳至逐字稿訊息 {start}–{end}",
"session_vitals_title": "分析",
"session_vitals_subtitle": "會話指標",
"session_vitals_close": "關閉會話分析",
Expand Down
34 changes: 34 additions & 0 deletions frontend/src/lib/api/recall.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import type {
RecallEntriesResponse,
RecallEntry,
} from "./types/recall.js";
import {
ApiError,
authHeaders,
getBase,
responseErrorMessage,
} from "./runtime.js";

const SESSION_RECALL_LIMIT = 500;

export async function fetchSessionRecall(
sessionId: string,
signal?: AbortSignal,
): Promise<RecallEntry[]> {
const query = new URLSearchParams({
source_session_id: sessionId,
limit: String(SESSION_RECALL_LIMIT),
});
const response = await fetch(
`${getBase()}/recall/entries?${query.toString()}`,
authHeaders({ signal }),
);
if (!response.ok) {
throw new ApiError(
response.status,
await responseErrorMessage(response),
);
}
const data = (await response.json()) as RecallEntriesResponse;
return data.entries ?? [];
}
1 change: 1 addition & 0 deletions frontend/src/lib/api/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ export type * from "./insights.js";
export type * from "./session-activity.js";
export type * from "./timing.js";
export type * from "./usage.js";
export type * from "./recall.js";
32 changes: 32 additions & 0 deletions frontend/src/lib/api/types/recall.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
export interface RecallEvidence {
id: number;
entry_id: string;
session_id: string;
message_start_ordinal: number;
message_end_ordinal: number;
snippet?: string;
}

export interface RecallEntry {
id: string;
type: string;
scope: string;
status: string;
review_state: string;
title: string;
body: string;
source_session_id: string;
source_run_id?: string;
extractor_method?: string;
model?: string;
transferable: boolean;
provenance_ok: boolean;
created_at: string;
updated_at: string;
evidence?: RecallEvidence[];
}

export interface RecallEntriesResponse {
entries: RecallEntry[];
trusted_only: boolean;
}
Loading