feat: Claude Code Monitor — lanes, pipelines and a merged workspace
Internal SmartGift build of a Claude Code monitoring dashboard. Lanes: a durable unit of parallel agent work, one per working directory, tracked across session restarts. Managed lanes are git worktrees the dashboard provisions and can reset or remove behind a three-check destroy guard and a counted preflight; adopted lanes are directories you already own and are never destroyable. Pipelines: a lane moves through pipeline stages. A stage the agent declares with evidence renders green; a stage inferred from the tool-event stream renders dashed amber and never counts as done. Detection is forward-only within a 30-minute window, and never writes the declared stage. Workspace: one page at /run with a lane grid, the selected lane's pipeline, and a full Claude console behind a disclosure.
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* @file Verifies the sweep queries used in server/index.js have been migrated
|
||||
* from json_extract(events.data,...) to sessions.transcript_path. Tests by
|
||||
* checking the SQL strings that appear in the file rather than running the
|
||||
* full setInterval — the unit-level guarantee is what matters here.
|
||||
* @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
|
||||
*/
|
||||
|
||||
const { describe, it } = require("node:test");
|
||||
const assert = require("node:assert/strict");
|
||||
const fs = require("fs");
|
||||
const path = require("path");
|
||||
|
||||
const SRC = fs.readFileSync(path.join(__dirname, "..", "index.js"), "utf8");
|
||||
|
||||
describe("server/index.js sweep queries", () => {
|
||||
it("does NOT contain json_extract on events.data for transcript_path", () => {
|
||||
const matches = SRC.match(/json_extract\([^)]*events?\.data[^)]*transcript_path/gi) || [];
|
||||
assert.equal(
|
||||
matches.length,
|
||||
0,
|
||||
`expected zero events.data json_extract for transcript_path; found:\n${matches.join("\n")}`
|
||||
);
|
||||
});
|
||||
|
||||
it("queries sessions.transcript_path for the active sweep", () => {
|
||||
assert.match(
|
||||
SRC,
|
||||
/FROM sessions[^;]*WHERE[^;]*status\s*=\s*'active'[^;]*transcript_path/is,
|
||||
"expected a SELECT from sessions with status='active' and transcript_path"
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user