feat(confidence-engine): use server investigation persistence
This commit is contained in:
@@ -4,6 +4,8 @@ const CANONICAL_KEY = "confidence-engine-investigation";
|
||||
const LEGACY_KEY = "confidence-engine-session";
|
||||
const SCHEMA_VERSION = 1;
|
||||
|
||||
import { restartSnapshot } from "../restart-investigation.js";
|
||||
|
||||
// Multi-Investigation key prefix (v0.60c)
|
||||
const INVESTIGATION_PREFIX = "confidence-engine-investigation:";
|
||||
|
||||
@@ -196,17 +198,7 @@ export function restartInvestigation(id) {
|
||||
const record = JSON.parse(raw);
|
||||
if (!isPlainObject(record)) return;
|
||||
|
||||
// Preserve container fields, reset reasoning-state fields
|
||||
record.situationGraph = null;
|
||||
record.selectedQuestion = null;
|
||||
record.summary = null;
|
||||
record.focusedContributions = [];
|
||||
record.findings = [];
|
||||
record.investigationReport = null;
|
||||
record.investigationRevision = 0;
|
||||
record.updatedAt = new Date().toISOString();
|
||||
|
||||
_persist(storage, key, JSON.stringify(record));
|
||||
_persist(storage, key, JSON.stringify(restartSnapshot(record)));
|
||||
} catch (_) { /* storage errors must not crash caller */ }
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
async function request(path, options) {
|
||||
const response = await fetch(path, options);
|
||||
const body = await response.json().catch(() => ({}));
|
||||
if (!response.ok) {
|
||||
throw new Error(body.error || "Investigation persistence request failed");
|
||||
}
|
||||
return body;
|
||||
}
|
||||
|
||||
export async function saveInvestigation(snapshot, id) {
|
||||
const body = await request("/api/investigations", {
|
||||
method: "POST",
|
||||
headers: { "Content-Type": "application/json" },
|
||||
body: JSON.stringify({ id, snapshot }),
|
||||
});
|
||||
return body.snapshot ?? null;
|
||||
}
|
||||
|
||||
export async function loadInvestigation(id) {
|
||||
const url = `/api/investigations/${encodeURIComponent(id)}`;
|
||||
const response = await fetch(url);
|
||||
if (!response.ok) {
|
||||
if (response.status === 404) return null;
|
||||
const body = await response.json().catch(() => ({}));
|
||||
throw new Error(body.error || "Investigation persistence request failed");
|
||||
}
|
||||
const body = await response.json();
|
||||
return body.snapshot ?? null;
|
||||
}
|
||||
|
||||
export async function listInvestigations() {
|
||||
const body = await request("/api/investigations");
|
||||
return body.investigations ?? [];
|
||||
}
|
||||
|
||||
export async function restartInvestigation(id) {
|
||||
const body = await request(`/api/investigations/${encodeURIComponent(id)}/restart`, {
|
||||
method: "POST",
|
||||
});
|
||||
return body.snapshot ?? null;
|
||||
}
|
||||
Reference in New Issue
Block a user