2026-08-21 21:37:28 +03:00
|
|
|
import path from "node:path";
|
|
|
|
|
import { fileURLToPath } from "node:url";
|
|
|
|
|
|
|
|
|
|
/** Repository root (this file is at <root>/config.ts). */
|
|
|
|
|
export const ROOT = path.dirname(fileURLToPath(import.meta.url));
|
|
|
|
|
|
|
|
|
|
export const PATHS = {
|
|
|
|
|
root: ROOT,
|
2026-08-22 02:18:27 +03:00
|
|
|
/** Teacher system prompt — the agent's instructions (src/agent/). */
|
|
|
|
|
teacherPrompt: path.join(ROOT, "src", "agent", "system-prompt.md"),
|
2026-08-21 21:37:28 +03:00
|
|
|
data: path.join(ROOT, "data"),
|
2026-08-22 02:18:27 +03:00
|
|
|
/** Chat sessions (AI SDK UIMessage transcripts, one JSON file per chat). */
|
|
|
|
|
chats: path.join(ROOT, "data", "chats"),
|
2026-08-21 21:37:28 +03:00
|
|
|
graph: path.join(ROOT, "data", "graph"),
|
|
|
|
|
} as const;
|
|
|
|
|
|
2026-08-22 10:11:58 +03:00
|
|
|
/**
|
2026-08-31 22:36:41 +03:00
|
|
|
* The extraction pipeline (vision §1 construction): the sole graph writer.
|
|
|
|
|
* Triggered per chat once this many NEW quiz answers have landed since the
|
|
|
|
|
* chat's last extraction checkpoint (LH_EXTRACT_N). The trigger mechanism is
|
|
|
|
|
* a v1 placeholder — deliberately isolated behind one seam
|
|
|
|
|
* (server/turn-service.ts) so it can be swapped without touching the
|
|
|
|
|
* pipeline.
|
|
|
|
|
*/
|
|
|
|
|
export const EXTRACTION = { everyNQuizAnswers: Number(process.env.LH_EXTRACT_N ?? 3) } as const;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* The LIVE graph store (src/store/graph.ts) — owned by the app's extraction
|
2026-08-22 10:11:58 +03:00
|
|
|
* pipeline. Line shapes: src/core/contracts.ts.
|
|
|
|
|
*/
|
2026-08-21 21:37:28 +03:00
|
|
|
export const LEDGER_FILES = {
|
|
|
|
|
nodes: path.join(PATHS.graph, "nodes.jsonl"),
|
|
|
|
|
edges: path.join(PATHS.graph, "edges.jsonl"),
|
|
|
|
|
events: path.join(PATHS.graph, "events.jsonl"),
|
|
|
|
|
mappings: path.join(PATHS.graph, "mappings.jsonl"),
|
|
|
|
|
sessions: path.join(PATHS.graph, "sessions.jsonl"),
|
|
|
|
|
} as const;
|