v0 scaffold: teacher runtime (hermetic pi SDK), data model, ledgers, normalizer

- teacher/system-prompt.md: teach methodology + quiz/ask guidelines folded in
- extensions/: quiz.ts + ask-user-question.ts (hermetic copies)
- src/teacher/create-session.ts: isolated agent (noTools builtin, own agentDir/sessions/prompt)
- src/schema.ts + ledger.ts: append-only ledgers, known-vs-understood data model
- src/extract/normalize.ts: session JSONL -> canonical doc (verified on real session)
- extractor/merger/derive/what-next: specified stubs
This commit is contained in:
Amos
2026-08-21 21:37:28 +03:00
commit 9a6af9697f
19 changed files with 5271 additions and 0 deletions
+24
View File
@@ -0,0 +1,24 @@
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,
extensions: path.join(ROOT, "extensions"),
teacherPrompt: path.join(ROOT, "teacher", "system-prompt.md"),
data: path.join(ROOT, "data"),
/** Hermetic pi agentDir: settings, auth, and NOTHING from ~/.pi/agent except a symlinked auth.json. */
agentDir: path.join(ROOT, "data", "agent"),
sessions: path.join(ROOT, "data", "sessions"),
graph: path.join(ROOT, "data", "graph"),
} as const;
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;