57dc91585d
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.
24 lines
881 B
TypeScript
24 lines
881 B
TypeScript
/**
|
|
* @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;
|
|
}
|