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,53 @@
|
||||
/**
|
||||
* @file Unit tests for cross-platform monitoring binary URL/path resolution.
|
||||
* @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
|
||||
*/
|
||||
const { describe, it } = require("node:test");
|
||||
const assert = require("node:assert/strict");
|
||||
const {
|
||||
prometheusUrl,
|
||||
grafanaUrl,
|
||||
prometheusArchiveExt,
|
||||
grafanaArchiveExt,
|
||||
prometheusPlatform,
|
||||
prometheusArchiveName,
|
||||
grafanaArchiveName,
|
||||
toGrafanaPath,
|
||||
} = require("../../monitoring/scripts/paths");
|
||||
|
||||
describe("monitoring paths", () => {
|
||||
it("builds official download URLs for the current platform", () => {
|
||||
const plat = prometheusPlatform();
|
||||
const promExt = prometheusArchiveExt();
|
||||
const grafExt = grafanaArchiveExt();
|
||||
|
||||
assert.match(
|
||||
prometheusUrl(),
|
||||
new RegExp(`${prometheusArchiveName()}\\.${promExt.replace(".", "\\.")}$`)
|
||||
);
|
||||
assert.match(
|
||||
grafanaUrl(),
|
||||
new RegExp(`grafana-[0-9.]+\\.${plat}\\.${grafExt.replace(".", "\\.")}$`)
|
||||
);
|
||||
|
||||
if (process.platform === "win32") {
|
||||
assert.equal(promExt, "zip");
|
||||
assert.equal(grafExt, "zip");
|
||||
} else {
|
||||
assert.equal(promExt, "tar.gz");
|
||||
assert.equal(grafExt, "tar.gz");
|
||||
}
|
||||
});
|
||||
|
||||
it("normalizes Windows paths for Grafana YAML", () => {
|
||||
assert.equal(
|
||||
toGrafanaPath("C:\\ccam\\monitoring\\grafana\\dashboards"),
|
||||
"C:/ccam/monitoring/grafana/dashboards"
|
||||
);
|
||||
});
|
||||
|
||||
it("uses consistent archive naming", () => {
|
||||
assert.match(prometheusArchiveName(), /^prometheus-[0-9.]+\./);
|
||||
assert.match(grafanaArchiveName(), /^grafana-[0-9.]+\./);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user