From f914923057476a2ee5b3adf88ef87daa448992d9 Mon Sep 17 00:00:00 2001 From: Jin Choi Date: Wed, 27 May 2026 23:34:08 -0700 Subject: [PATCH] refactor: centralize KB_ROOT import across 39 scripts MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Each script previously declared its own `const KB_ROOT = join(__dirname, "../knowledge-base")` (or a project-root variant). With `scripts/lib/kb-root.ts` already on main (landed in the gate PR), each of these scripts can simply `import { KB_ROOT } from "./lib/kb-root"` — one source of truth, and the ZUHN_KB_ROOT env override now applies to every entry point uniformly. Purely mechanical: 39 files × ±2 lines, no behavior change. The full test suite has been passing with these imports applied in the working tree all session (the imports were ALREADY being exercised — this just commits them). Excluded from this PR (will land separately as ingest-improvements): - scripts/ingest.ts (also wires the paste handler) - scripts/lib/ingest/audio.ts (Whisper env-config / Korean-audio fix) - scripts/lib/ingest/detect.ts + detect.test.ts (paste-type detection) These four have substantive non-refactor changes belonging in a separate PR. Co-Authored-By: Claude Opus 4.7 (1M context) --- scripts/archive-blog-backlog.ts | 2 +- scripts/archive-stubs-backlog.ts | 2 +- scripts/archive.ts | 2 +- scripts/ask.ts | 2 +- scripts/batch-ingest.ts | 2 +- scripts/classify-edges.ts | 2 +- scripts/compress.ts | 3 +-- scripts/create-principles.ts | 2 +- scripts/create-tensions.ts | 2 +- scripts/daemon.ts | 2 +- scripts/decide.ts | 2 +- scripts/dedup-insights.ts | 2 +- scripts/embed.ts | 2 +- scripts/extract.ts | 2 +- scripts/inbox-feedback.ts | 3 +-- scripts/inbox-server.ts | 3 +-- scripts/ingest-channel.ts | 2 +- scripts/init.ts | 3 +-- scripts/learn.ts | 2 +- scripts/lib/brief.ts | 2 +- scripts/lib/db.ts | 2 +- scripts/lib/log.ts | 2 +- scripts/mcp-server.ts | 2 +- scripts/merge-topics.ts | 3 +-- scripts/mindmap.ts | 2 +- scripts/predict.ts | 2 +- scripts/quality-score.ts | 2 +- scripts/red-team.ts | 2 +- scripts/reindex.ts | 2 +- scripts/resolve.ts | 2 +- scripts/resurface.ts | 2 +- scripts/resurrect.ts | 2 +- scripts/scout-gaps.ts | 2 +- scripts/scout-predictions.ts | 2 +- scripts/scrub-archived-refs.ts | 2 +- scripts/sleep.ts | 2 +- scripts/split-topic.ts | 3 +-- scripts/views.ts | 2 +- scripts/wake.ts | 3 +-- 39 files changed, 39 insertions(+), 46 deletions(-) diff --git a/scripts/archive-blog-backlog.ts b/scripts/archive-blog-backlog.ts index becd366347..d62b57d85e 100644 --- a/scripts/archive-blog-backlog.ts +++ b/scripts/archive-blog-backlog.ts @@ -26,7 +26,7 @@ import { readFileSync, writeFileSync, mkdirSync, renameSync, existsSync } from " import fg from "fast-glob"; import matter from "gray-matter"; -const KB_ROOT = join(__dirname, "..", "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const SOURCES_BLOG = join(KB_ROOT, "sources", "blog"); const ARCHIVE_DATE = "20260411"; const ARCHIVE_ROOT = join( diff --git a/scripts/archive-stubs-backlog.ts b/scripts/archive-stubs-backlog.ts index dbbc1dc05c..3b5ca4bbf4 100644 --- a/scripts/archive-stubs-backlog.ts +++ b/scripts/archive-stubs-backlog.ts @@ -42,7 +42,7 @@ import { import fg from "fast-glob"; import matter from "gray-matter"; -const KB_ROOT = join(__dirname, "..", "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const SOURCES_ROOT = join(KB_ROOT, "sources"); const ARCHIVE_DATE = "20260411"; const ARCHIVE_ROOT = join(KB_ROOT, "archive", `stubs-backlog-${ARCHIVE_DATE}`); diff --git a/scripts/archive.ts b/scripts/archive.ts index 93ecb98345..f00c894e70 100644 --- a/scripts/archive.ts +++ b/scripts/archive.ts @@ -6,7 +6,7 @@ import fg from "fast-glob"; import matter from "gray-matter"; import { InsightFrontmatter } from "./schemas/frontmatter.js"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Types ──────────────────────────────────────────────────────────── diff --git a/scripts/ask.ts b/scripts/ask.ts index ac35f2cf2e..d29541a6ca 100644 --- a/scripts/ask.ts +++ b/scripts/ask.ts @@ -22,7 +22,7 @@ import { searchInsights } from "./lib/search"; import { embedText, isOllamaAvailable } from "./lib/embeddings"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Types ────────────────────────────────────────────────────────── diff --git a/scripts/batch-ingest.ts b/scripts/batch-ingest.ts index 0dc3ba3241..38914dab43 100644 --- a/scripts/batch-ingest.ts +++ b/scripts/batch-ingest.ts @@ -22,7 +22,7 @@ import { generateSourceId } from "./lib/generate-id"; import { parseMarkdownFile } from "./lib/parse-insight"; // ─── Constants ───────────────────────────────────────────────────────── -const KB_ROOT = join(__dirname, "..", "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Types ───────────────────────────────────────────────────────────── interface SuccessResult { diff --git a/scripts/classify-edges.ts b/scripts/classify-edges.ts index 7b393d9c55..a40d64b469 100644 --- a/scripts/classify-edges.ts +++ b/scripts/classify-edges.ts @@ -33,7 +33,7 @@ import { initDb } from "./lib/db"; import type { RelationshipTypeValue } from "./schemas/frontmatter"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const BATCH_SIZE = 20; // ─── Types ─────────────────────────────────────────────────────────── diff --git a/scripts/compress.ts b/scripts/compress.ts index 56c66462fb..95c33886b2 100644 --- a/scripts/compress.ts +++ b/scripts/compress.ts @@ -7,8 +7,7 @@ import matter from "gray-matter"; import { initDb, getConnectionsForInsights } from "./lib/db"; import { computePageRank } from "./lib/pagerank"; -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Types ─────────────────────────────────────────────────────────── diff --git a/scripts/create-principles.ts b/scripts/create-principles.ts index 959834676f..e7f91fea73 100644 --- a/scripts/create-principles.ts +++ b/scripts/create-principles.ts @@ -11,7 +11,7 @@ import { slugify } from "./lib/ingest/slug.js"; import { safeLogEntry } from "./lib/log.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Schema ────────────────────────────────────────────────────────── diff --git a/scripts/create-tensions.ts b/scripts/create-tensions.ts index c0c3b1037c..151c1968bd 100644 --- a/scripts/create-tensions.ts +++ b/scripts/create-tensions.ts @@ -12,7 +12,7 @@ import { generateTensionId } from "./lib/generate-id.js"; import { slugify } from "./lib/ingest/slug.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const TENSIONS_DIR = join(KB_ROOT, "tensions"); const CANDIDATES_PATH = join(KB_ROOT, "meta", "tension-candidates.json"); diff --git a/scripts/daemon.ts b/scripts/daemon.ts index 02af905722..d070d4dcb5 100644 --- a/scripts/daemon.ts +++ b/scripts/daemon.ts @@ -30,7 +30,7 @@ import type Database from "better-sqlite3"; // ─── Configuration ────────────────────────────────────────────────── const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const INBOX_DIR = join(KB_ROOT, "inbox"); const PROCESSED_DIR = join(INBOX_DIR, "processed"); const REVIEW_DIR = join(INBOX_DIR, "review"); diff --git a/scripts/decide.ts b/scripts/decide.ts index d753e1df9c..e53764cb4d 100644 --- a/scripts/decide.ts +++ b/scripts/decide.ts @@ -12,7 +12,7 @@ import { slugify } from "./lib/ingest/slug.js"; import { safeLogEntry, normalizeBodyLine } from "./lib/log.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Write Result ─────────────────────────────────────────────────── diff --git a/scripts/dedup-insights.ts b/scripts/dedup-insights.ts index 585c4933a4..c7c556fa42 100644 --- a/scripts/dedup-insights.ts +++ b/scripts/dedup-insights.ts @@ -28,7 +28,7 @@ import { Readability } from "@mozilla/readability"; // ─── Config ────────────────────────────────────────────────────────── const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const DB_PATH = join(KB_ROOT, "db", "brain.db"); const ARCHIVE_DIR = join(KB_ROOT, "archive", "dedup-260405"); const LOG_PATH = join(KB_ROOT, "meta", "dedup-log.json"); diff --git a/scripts/embed.ts b/scripts/embed.ts index b5632ebff9..84d0cbe927 100644 --- a/scripts/embed.ts +++ b/scripts/embed.ts @@ -11,7 +11,7 @@ import { isOllamaAvailable, embedText } from "./lib/embeddings"; import { initVectorTable, upsertEmbedding } from "./lib/vector-search"; import { PrincipleFrontmatter, type PrincipleData } from "./schemas/frontmatter"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const EMBEDDING_MODEL = "nomic-embed-text"; // ─── Types ─────────────────────────────────────────────────────────── diff --git a/scripts/extract.ts b/scripts/extract.ts index 82c1991fe9..8dac0095de 100644 --- a/scripts/extract.ts +++ b/scripts/extract.ts @@ -8,7 +8,7 @@ import { writeInsights } from "./lib/extract/write-insights.js"; import { safeLogEntry } from "./lib/log.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Helpers ────────────────────────────────────────────────────────── diff --git a/scripts/inbox-feedback.ts b/scripts/inbox-feedback.ts index eb5cb55d1f..520ad28ebd 100644 --- a/scripts/inbox-feedback.ts +++ b/scripts/inbox-feedback.ts @@ -16,8 +16,7 @@ import fg from "fast-glob"; import matter from "gray-matter"; import { initDb } from "./lib/db"; -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const META_DIR = join(KB_ROOT, "meta"); const FEEDBACK_PATH = join(META_DIR, "inbox-feedback.json"); diff --git a/scripts/inbox-server.ts b/scripts/inbox-server.ts index 1afb38292c..2bf4960065 100644 --- a/scripts/inbox-server.ts +++ b/scripts/inbox-server.ts @@ -18,8 +18,7 @@ import { initDb } from "./lib/db"; import type Database from "better-sqlite3"; const PORT = parseInt(process.env.ZUHN_INBOX_PORT ?? "7777", 10); -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const INBOX_DIR = join(KB_ROOT, "inbox"); let db: Database.Database; diff --git a/scripts/ingest-channel.ts b/scripts/ingest-channel.ts index 360bac8e84..08c92629e2 100644 --- a/scripts/ingest-channel.ts +++ b/scripts/ingest-channel.ts @@ -24,7 +24,7 @@ import { ingestYouTube } from "./lib/ingest/youtube"; import { slugify } from "./lib/ingest/slug"; // ─── Constants ───────────────────────────────────────────────────────── -const KB_ROOT = join(__dirname, "..", "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const META_DIR = join(KB_ROOT, "meta"); const DEFAULT_TOP = 50; const DEFAULT_DELAY = 3; diff --git a/scripts/init.ts b/scripts/init.ts index baa2881381..6a86a32cc0 100644 --- a/scripts/init.ts +++ b/scripts/init.ts @@ -12,8 +12,7 @@ import { existsSync, mkdirSync, writeFileSync, rmSync } from "node:fs"; import { join } from "node:path"; -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const force = process.argv.includes("--force"); diff --git a/scripts/learn.ts b/scripts/learn.ts index 675dfc3cd7..0ed2f23753 100644 --- a/scripts/learn.ts +++ b/scripts/learn.ts @@ -20,7 +20,7 @@ import { } from "./lib/learning"; import { predictLinks, writePredictedLinks } from "./lib/common-neighbors"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; async function main(): Promise { console.log("╔══════════════════════════════════════╗"); diff --git a/scripts/lib/brief.ts b/scripts/lib/brief.ts index c5a376d76b..3d683e91bf 100644 --- a/scripts/lib/brief.ts +++ b/scripts/lib/brief.ts @@ -83,7 +83,7 @@ export type BriefRenderMode = "full" | "concise"; // ─── Helpers ──────────────────────────────────────────────────────── -const KB_ROOT = join(__dirname, "../../knowledge-base"); +import { KB_ROOT } from "./kb-root"; /** Resolve an INS- ID to its domain via the database. */ function insightDomain( diff --git a/scripts/lib/db.ts b/scripts/lib/db.ts index 8e4307243f..dd08832dc6 100644 --- a/scripts/lib/db.ts +++ b/scripts/lib/db.ts @@ -6,7 +6,7 @@ import type { InsightData } from "../schemas/frontmatter"; // ─── Paths ────────────────────────────────────────────────────────── -const KB_ROOT = join(__dirname, "../../knowledge-base"); +import { KB_ROOT } from "./kb-root"; const DB_DIR = join(KB_ROOT, "db"); const DB_PATH = join(DB_DIR, "brain.db"); diff --git a/scripts/lib/log.ts b/scripts/lib/log.ts index 308ed32dab..141dc41938 100644 --- a/scripts/lib/log.ts +++ b/scripts/lib/log.ts @@ -50,7 +50,7 @@ export type LogAction = (typeof LOG_ACTIONS)[number]; // ─── Default log path ─────────────────────────────────────────────── -const KB_ROOT = join(__dirname, "../../knowledge-base"); +import { KB_ROOT } from "./kb-root"; const DEFAULT_LOG_PATH = join(KB_ROOT, "meta", "log.md"); // ─── File header ──────────────────────────────────────────────────── diff --git a/scripts/mcp-server.ts b/scripts/mcp-server.ts index 14082da360..832865b4e4 100644 --- a/scripts/mcp-server.ts +++ b/scripts/mcp-server.ts @@ -19,7 +19,7 @@ import { initVectorTable, hybridSearch } from "./lib/vector-search"; // ─── Constants ─────────────────────────────────────────────────────── -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const PROJECT_ROOT = join(__dirname, ".."); // ─── Server Setup ──────────────────────────────────────────────────── diff --git a/scripts/merge-topics.ts b/scripts/merge-topics.ts index 9d7f475710..ecbcc19c19 100644 --- a/scripts/merge-topics.ts +++ b/scripts/merge-topics.ts @@ -13,8 +13,7 @@ import { mkdirSync } from "node:fs"; import { join } from "node:path"; import matter from "gray-matter"; -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; function usage(): never { console.error("Usage: merge-topics.ts --source --target [--dry-run]"); diff --git a/scripts/mindmap.ts b/scripts/mindmap.ts index f0488fe22e..83863e0bb8 100644 --- a/scripts/mindmap.ts +++ b/scripts/mindmap.ts @@ -9,7 +9,7 @@ import { writeFile, mkdir } from "node:fs/promises"; import { scanInsights } from "./lib/generate-index.js"; import type { ParseSuccess } from "./lib/parse-insight.js"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const VIEWS_DIR = join(KB_ROOT, "views"); // ─── Scalability note ──────────────────────────────────────────────── diff --git a/scripts/predict.ts b/scripts/predict.ts index 4c23865ca0..f93e4c46ea 100644 --- a/scripts/predict.ts +++ b/scripts/predict.ts @@ -12,7 +12,7 @@ import { slugify } from "./lib/ingest/slug.js"; import { safeLogEntry, normalizeBodyLine } from "./lib/log.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Write Result ─────────────────────────────────────────────────── diff --git a/scripts/quality-score.ts b/scripts/quality-score.ts index 202eb25a6e..6ccc1ce605 100644 --- a/scripts/quality-score.ts +++ b/scripts/quality-score.ts @@ -25,7 +25,7 @@ import { initDb } from "./lib/db"; import { initVectorTable } from "./lib/vector-search"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const SCORES_FILE = join(KB_ROOT, "meta", "quality-scores.jsonl"); // ─── Types ────────────────────────────────────────────────────────── diff --git a/scripts/red-team.ts b/scripts/red-team.ts index 80cfad67e1..094db36996 100644 --- a/scripts/red-team.ts +++ b/scripts/red-team.ts @@ -18,7 +18,7 @@ import fg from "fast-glob"; import matter from "gray-matter"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const META_DIR = join(KB_ROOT, "meta"); const BOUNTIES_PATH = join(META_DIR, "bounties.json"); const HISTORY_PATH = join(META_DIR, "red-team-history.json"); diff --git a/scripts/reindex.ts b/scripts/reindex.ts index 338edd7dcf..7125f549c5 100644 --- a/scripts/reindex.ts +++ b/scripts/reindex.ts @@ -15,7 +15,7 @@ import type { ParseSuccess } from "./lib/parse-insight.js"; import { initDb, upsertInsight, getAllInsights } from "./lib/db.js"; import { SourceFrontmatter, PrincipleFrontmatter } from "./schemas/frontmatter.js"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Helpers ────────────────────────────────────────────────────────── diff --git a/scripts/resolve.ts b/scripts/resolve.ts index 70f1e40be4..2f13984e33 100644 --- a/scripts/resolve.ts +++ b/scripts/resolve.ts @@ -7,7 +7,7 @@ import matter from "gray-matter"; import { safeLogEntry, normalizeBodyLine } from "./lib/log.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Valid transitions ─────────────────────────────────────────────── diff --git a/scripts/resurface.ts b/scripts/resurface.ts index 9a9ee15936..7e354bb8a3 100644 --- a/scripts/resurface.ts +++ b/scripts/resurface.ts @@ -8,7 +8,7 @@ import { join } from "node:path"; import { writeFile, mkdir } from "node:fs/promises"; import { initDb, type InsightRow } from "./lib/db"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const VIEWS_DIR = join(KB_ROOT, "views"); const META_DIR = join(KB_ROOT, "meta"); diff --git a/scripts/resurrect.ts b/scripts/resurrect.ts index 2b48633db8..123ae47c3e 100644 --- a/scripts/resurrect.ts +++ b/scripts/resurrect.ts @@ -5,7 +5,7 @@ import { rename, readFile, writeFile, mkdir } from "node:fs/promises"; import fg from "fast-glob"; import matter from "gray-matter"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Main ───────────────────────────────────────────────────────────── diff --git a/scripts/scout-gaps.ts b/scripts/scout-gaps.ts index 56a6c04845..5cc50fc097 100644 --- a/scripts/scout-gaps.ts +++ b/scripts/scout-gaps.ts @@ -17,7 +17,7 @@ import { join } from "node:path"; import fg from "fast-glob"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const META_DIR = join(KB_ROOT, "meta"); const BOUNTIES_PATH = join(META_DIR, "bounties.json"); const FLAGS_PATH = join(META_DIR, "flags.md"); diff --git a/scripts/scout-predictions.ts b/scripts/scout-predictions.ts index 5aa60abf6e..bf603ec56b 100644 --- a/scripts/scout-predictions.ts +++ b/scripts/scout-predictions.ts @@ -19,7 +19,7 @@ import fg from "fast-glob"; import matter from "gray-matter"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const META_DIR = join(KB_ROOT, "meta"); const EVIDENCE_PATH = join(META_DIR, "prediction-evidence.json"); diff --git a/scripts/scrub-archived-refs.ts b/scripts/scrub-archived-refs.ts index 059d97ec4f..86220275d6 100644 --- a/scripts/scrub-archived-refs.ts +++ b/scripts/scrub-archived-refs.ts @@ -15,7 +15,7 @@ import { join } from "node:path"; import fg from "fast-glob"; import matter from "gray-matter"; -const KB_ROOT = join(__dirname, "..", "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; async function main(): Promise { const archivedIds = process.argv.slice(2); diff --git a/scripts/sleep.ts b/scripts/sleep.ts index a774323b99..f0d8622375 100644 --- a/scripts/sleep.ts +++ b/scripts/sleep.ts @@ -6,7 +6,7 @@ import { execFileSync } from "node:child_process"; import { SessionState } from "./schemas/session.js"; const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const SESSION_PATH = join(KB_ROOT, "meta", "session.md"); // ─── Helpers ────────────────────────────────────────────────────────── diff --git a/scripts/split-topic.ts b/scripts/split-topic.ts index 3c4c94e67a..0df39bc22c 100644 --- a/scripts/split-topic.ts +++ b/scripts/split-topic.ts @@ -4,8 +4,7 @@ import { readFileSync, writeFileSync, mkdirSync, renameSync, existsSync } from " import { join, basename } from "node:path"; import matter from "gray-matter"; -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; // ─── Helpers ────────────────────────────────────────────────────────── diff --git a/scripts/views.ts b/scripts/views.ts index b6abf046d5..00e64e560a 100644 --- a/scripts/views.ts +++ b/scripts/views.ts @@ -12,7 +12,7 @@ import fg from "fast-glob"; import matter from "gray-matter"; import { initDb, type InsightRow } from "./lib/db"; -const KB_ROOT = join(__dirname, "../knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const VIEWS_DIR = join(KB_ROOT, "views"); const FLAGS_PATH = join(KB_ROOT, "meta", "flags.md"); const SOURCES_DIR = join(KB_ROOT, "sources"); diff --git a/scripts/wake.ts b/scripts/wake.ts index 20fd2ab9de..68a81a9bda 100644 --- a/scripts/wake.ts +++ b/scripts/wake.ts @@ -4,8 +4,7 @@ import { readFileSync, readdirSync, existsSync } from "node:fs"; import { join } from "node:path"; import matter from "gray-matter"; -const PROJECT_ROOT = join(__dirname, ".."); -const KB_ROOT = join(PROJECT_ROOT, "knowledge-base"); +import { KB_ROOT } from "./lib/kb-root"; const META = join(KB_ROOT, "meta"); // ─── Helpers ──────────────────────────────────────────────────────────