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,23 @@
|
||||
/**
|
||||
* @file Helpers for WebSocket messages that signal remote SSH sources finished
|
||||
* syncing and scoped stats (sessions, costs, analytics) should refetch.
|
||||
* @author Nguyễn Ngọc Trí Vĩ <vinnt@smartgift.vn>
|
||||
*/
|
||||
|
||||
import type { ImportProgressMessage, RemoteSourceStatusPayload, WSMessage } from "./types";
|
||||
|
||||
/**
|
||||
* True when a WebSocket message means remote-imported data may have changed and
|
||||
* pages should refetch API data (not merely show a sync spinner).
|
||||
*/
|
||||
export function isRemoteDataRefreshMessage(msg: WSMessage): boolean {
|
||||
if (msg.type === "remote_data.updated") return true;
|
||||
if (msg.type === "remote_source.status") {
|
||||
return (msg.data as RemoteSourceStatusPayload).status === "ok";
|
||||
}
|
||||
if (msg.type === "import.progress") {
|
||||
const d = msg.data as ImportProgressMessage;
|
||||
return d.phase === "complete" && d.source === "remote";
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Reference in New Issue
Block a user