summaryrefslogtreecommitdiffhomepage
path: root/packages/trace-store/src/cli.ts
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-05 15:16:14 +0900
committerAdam Malczewski <[email protected]>2026-06-05 15:16:14 +0900
commit20c6c675a11b887c603be5ff08165cb182c7db65 (patch)
treee57ef71daa6cb7c5c73a4bd9af5be6cafe9d2158 /packages/trace-store/src/cli.ts
parent4d94c530406567791dbe4ab06c838a83c2e26023 (diff)
downloaddispatch-20c6c675a11b887c603be5ff08165cb182c7db65.tar.gz
dispatch-20c6c675a11b887c603be5ff08165cb182c7db65.zip
feat(observability): Phase B — trace-store (SQLite) + out-of-process collector + trace CLI (345 tests)
trace-store (bun:sqlite): records+bodies schema (thin/fat split), idempotent insertRecords (FNV-1a id + INSERT OR IGNORE), getTurn/getBody, pure renderEasyView (D8 timeline skeleton), trace CLI. Its own DB, isolated from storage-sqlite. observability-collector: out-of-process bin — tail journal -> splitLines/drainOnce -> trace-store.insertRecords; offset sidecar; at-least-once + idempotent; fail-safe; clean SIGINT/SIGTERM drain. Build-config (orchestrator): root tsconfig refs; both excluded from vitest + added to test:bun (bun:sqlite); bun install. Verified: tsc -b clean, 345 tests (273 vitest + 72 bun), biome 0 warnings/0 infos. Pipeline proven end-to-end: app -> journal -> collector -> SQLite -> 'trace <turnId>' easy-view. Known follow-up (next commit): kernel spans are flat (parent=ROOT) — run-turn nesting fix.
Diffstat (limited to 'packages/trace-store/src/cli.ts')
-rw-r--r--packages/trace-store/src/cli.ts16
1 files changed, 16 insertions, 0 deletions
diff --git a/packages/trace-store/src/cli.ts b/packages/trace-store/src/cli.ts
new file mode 100644
index 0000000..9092c91
--- /dev/null
+++ b/packages/trace-store/src/cli.ts
@@ -0,0 +1,16 @@
+import { createTraceStore } from "./store.js";
+
+const turnId = process.argv[2];
+if (turnId === undefined) {
+ console.error("Usage: bun packages/trace-store/src/cli.ts <turnId> [dbPath]");
+ process.exit(1);
+}
+
+const dbPath = process.argv[3] ?? process.env.TRACE_DB_PATH ?? "./.dispatch-data/traces.db";
+const store = createTraceStore({ path: dbPath });
+try {
+ const output = store.easyView(turnId);
+ console.log(output);
+} finally {
+ store.close();
+}