Initialize repository with harness code and assets
Initial import of all source code, config, and README assets: the packages workspace (cli, core, server, web, docs, landing, skills), build scripts, tooling config, and CI workflows. Includes the data-layout revision made on this branch: the local data root defaults to ~/.penguin/data (PENGUIN_HOME still overrides; the installer keeps its binaries in ~/.penguin), and every Agent lives under <project>/agents/<agent>/ — path helpers, the three agent-enumeration scans, the system prompt, built-in Skills, tests and docs all follow the new layout. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018ihk8iQuo3kv2aPjAYEPuR
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
/**
|
||||
* SQLite connection & initialization (node:sqlite DatabaseSync).
|
||||
*
|
||||
* Single process, single writer: a synchronous API is sufficient and avoids a connection
|
||||
* pool; WAL mode and foreign key constraints are enabled. Table-creation SQL runs on open
|
||||
* (idempotent), with no migration branches (product not yet released).
|
||||
*/
|
||||
import { mkdirSync } from "node:fs";
|
||||
import path from "node:path";
|
||||
import type { DatabaseSync } from "node:sqlite";
|
||||
import { SCHEMA_SQL } from "./schema.js";
|
||||
|
||||
// Fetch the runtime module via process.getBuiltinModule (node >=22.3): avoids static
|
||||
// resolution of `node:sqlite` by bundlers/vite (some tools' builtin lists don't yet
|
||||
// recognize this experimental module).
|
||||
const sqlite = process.getBuiltinModule("node:sqlite");
|
||||
|
||||
/** Open (creating if necessary) the database: ensure the parent directory exists, set PRAGMAs, run table creation. */
|
||||
export function openDatabase(dbPath: string): DatabaseSync {
|
||||
if (dbPath !== ":memory:") {
|
||||
mkdirSync(path.dirname(dbPath), { recursive: true });
|
||||
}
|
||||
const db = new sqlite.DatabaseSync(dbPath);
|
||||
db.exec("PRAGMA journal_mode = WAL;");
|
||||
db.exec("PRAGMA foreign_keys = ON;");
|
||||
db.exec(SCHEMA_SQL);
|
||||
return db;
|
||||
}
|
||||
Reference in New Issue
Block a user