fix: init creates data/senses dir, generates .js templates without TS annotations

- Add mkdirSync for data/senses/ in init command (#23)
- Add defensive mkdirSync in sense-runtime before DB open (#23)
- Change init template output from index.ts to index.js (#24)
- Remove TypeScript type annotations from CPU usage template (#25)

Closes #23, closes #24, closes #25
This commit is contained in:
2026-04-22 21:15:37 +08:00
parent d5931a9e19
commit a887fc04ca
2 changed files with 7 additions and 5 deletions
+4 -3
View File
@@ -48,9 +48,9 @@ export const cpuUsage = sqliteTable("cpu_usage", {
});
`;
const CPU_INDEX_TS = `import { cpus } from "node:os";
const CPU_INDEX_JS = `import { cpus } from "node:os";
export async function compute(): Promise<unknown> {
export async function compute() {
const cpuList = cpus();
let totalIdle = 0;
@@ -135,13 +135,14 @@ export const initCommand = defineCommand({
}
mkdirSync(join(nerveRoot, "data"), { recursive: true });
mkdirSync(join(nerveRoot, "data", "senses"), { recursive: true });
mkdirSync(join(nerveRoot, "senses", "cpu-usage", "migrations"), { recursive: true });
writeFile(join(nerveRoot, "nerve.yaml"), NERVE_YAML);
writeFile(join(nerveRoot, "package.json"), PACKAGE_JSON);
writeFile(join(nerveRoot, ".gitignore"), GITIGNORE);
writeFile(join(nerveRoot, "senses", "cpu-usage", "schema.ts"), CPU_SCHEMA_TS);
writeFile(join(nerveRoot, "senses", "cpu-usage", "index.ts"), CPU_INDEX_TS);
writeFile(join(nerveRoot, "senses", "cpu-usage", "index.js"), CPU_INDEX_JS);
writeFile(
join(nerveRoot, "senses", "cpu-usage", "migrations", "0001_init.sql"),
CPU_MIGRATION_SQL,
+3 -2
View File
@@ -1,5 +1,5 @@
import { readFileSync, readdirSync } from "node:fs";
import { join } from "node:path";
import { mkdirSync, readFileSync, readdirSync } from "node:fs";
import { dirname, join } from "node:path";
import Database from "better-sqlite3";
import { drizzle } from "drizzle-orm/better-sqlite3";
@@ -128,6 +128,7 @@ export function openSenseDb(
let sqlite: Database.Database;
try {
mkdirSync(dirname(dbPath), { recursive: true });
sqlite = new Database(dbPath);
// WAL mode for better concurrent read performance
sqlite.pragma("journal_mode = WAL");