@yuriteixeira/pi-muxr 0.1.3 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/README.md +3 -0
  2. package/dist/cli/dashboard-component.js +25 -13
  3. package/dist/cli/dashboard-component.js.map +1 -1
  4. package/dist/cli/dashboard-layout.d.ts +2 -1
  5. package/dist/cli/dashboard-layout.js +2 -1
  6. package/dist/cli/dashboard-layout.js.map +1 -1
  7. package/dist/cli/format.js +5 -3
  8. package/dist/cli/format.js.map +1 -1
  9. package/dist/cli/index.js +6 -0
  10. package/dist/cli/index.js.map +1 -1
  11. package/dist/domain/status.d.ts +1 -0
  12. package/dist/domain/status.js.map +1 -1
  13. package/dist/extension/pi-muxr.d.ts +1 -0
  14. package/dist/extension/pi-muxr.js +19 -2
  15. package/dist/extension/pi-muxr.js.map +1 -1
  16. package/dist/state/database.js +2 -0
  17. package/dist/state/database.js.map +1 -1
  18. package/dist/state/migrations.d.ts +6 -0
  19. package/dist/state/migrations.js +48 -0
  20. package/dist/state/migrations.js.map +1 -0
  21. package/dist/state/rows.d.ts +1 -0
  22. package/dist/state/rows.js +1 -0
  23. package/dist/state/rows.js.map +1 -1
  24. package/dist/state/schema.d.ts +1 -1
  25. package/dist/state/schema.js +1 -0
  26. package/dist/state/schema.js.map +1 -1
  27. package/dist/state/write-status.d.ts +1 -0
  28. package/dist/state/write-status.js +11 -3
  29. package/dist/state/write-status.js.map +1 -1
  30. package/dist/version.d.ts +1 -0
  31. package/dist/version.js +5 -0
  32. package/dist/version.js.map +1 -0
  33. package/package.json +1 -2
  34. package/docs/ARCHITECTURE.md +0 -287
  35. package/docs/BUILDING.md +0 -78
  36. package/docs/CONTRIBUTING.md +0 -32
  37. package/docs/resources/fullscreen.png +0 -0
  38. package/docs/resources/sidebar.png +0 -0
  39. package/docs/resources/web.png +0 -0
package/README.md CHANGED
@@ -51,6 +51,9 @@ pi-muxr --quit-on-select
51
51
  # Output Pi sessions to standard output
52
52
  pi-muxr --list
53
53
 
54
+ # Print the installed version
55
+ pi-muxr --version
56
+
54
57
  # Start the web app with a terminal emulator
55
58
  # so you can continue your work from another device
56
59
  pi-muxr --web
@@ -1,4 +1,5 @@
1
1
  import { Key, matchesKey, truncateToWidth, visibleWidth } from "@earendil-works/pi-tui";
2
+ import { VERSION } from "../version.js";
2
3
  import { getStateVisual } from "./dashboard-icons.js";
3
4
  import { chooseDashboardLayout, fitCell, getVisibleRowRange, padToWidth, toRowText } from "./dashboard-layout.js";
4
5
  import { DEFAULT_DASHBOARD_THEME } from "./dashboard-theme.js";
@@ -106,37 +107,42 @@ function renderTableRow(row, selected, mode, width, now, theme) {
106
107
  const text = toRowText(row, now);
107
108
  const visual = getStateVisual(row.displayState, theme, now);
108
109
  const indicator = selected ? theme.accent("❯") : " ";
109
- const unreadMarker = row.unread ? ` ${theme.warning("●")}` : "";
110
- const state = `${indicator} ${visual.style(`${visual.icon} ${visual.label}`)}${unreadMarker}`;
110
+ const unreadMarker = row.unread ? theme.warning("●") : "";
111
+ const state = `${indicator} ${visual.style(`${visual.icon} ${visual.label}`)}`;
111
112
  const summaryStyle = row.unread && row.actionable ? theme.bright : theme.text;
112
113
  const innerWidth = Math.max(0, width);
113
114
  const columns = mode === "wide"
114
- ? { session: 16, project: 24, age: 6 }
115
+ ? { session: 16, prompt: 24, rootPath: 24, age: 6 }
115
116
  : mode === "medium"
116
- ? { session: 14, project: 22, age: 6 }
117
+ ? { session: 14, prompt: 20, rootPath: 20, age: 6 }
117
118
  : innerWidth >= 46
118
- ? { session: 12, project: 18, age: 0 }
119
- : { session: 10, project: 14, age: 0 };
119
+ ? { session: 10, prompt: 14, rootPath: 14, age: 0 }
120
+ : { session: 8, prompt: 10, rootPath: 10, age: 0 };
120
121
  const statusWidth = 12;
121
- const fixedWidth = statusWidth + columns.session + columns.project + columns.age;
122
- const separatorWidth = [statusWidth, columns.session, columns.project, columns.age].filter((value) => value > 0).length - 1;
123
- const summaryWidth = Math.max(0, innerWidth - fixedWidth - separatorWidth);
122
+ const unreadWidth = 1;
123
+ const fixedWidths = [statusWidth, unreadWidth, columns.session, columns.prompt, columns.age, columns.rootPath].filter((value) => value > 0);
124
+ const fixedWidth = fixedWidths.reduce((total, value) => total + value, 0);
125
+ const fixedSeparatorWidth = fixedWidths.length - 1;
126
+ const summaryWidth = Math.max(0, innerWidth - fixedWidth - fixedSeparatorWidth - 1);
124
127
  const cells = [
125
128
  padCell(state, statusWidth),
129
+ padCell(unreadMarker, unreadWidth),
126
130
  padCell(theme.info(text.session), columns.session),
127
- padCell(theme.muted(fitPlainCellEnd(text.project, columns.project)), columns.project),
131
+ padCell(theme.text(fitPlainCell(text.lastPrompt, columns.prompt)), columns.prompt),
128
132
  ];
129
133
  if (columns.age > 0)
130
134
  cells.push(padCell(theme.muted(text.age), columns.age));
131
135
  if (summaryWidth > 0)
132
136
  cells.push(summaryStyle(fitPlainCell(text.summary, summaryWidth)));
137
+ cells.push(padCell(theme.muted(fitPlainCellEnd(text.rootPath, columns.rootPath)), columns.rootPath));
133
138
  return cells.join(" ");
134
139
  }
135
140
  function renderHeader(width, theme) {
136
141
  return renderSectionTop("pi-muxr", width, theme, theme.bright);
137
142
  }
138
143
  function statusSectionFits(rows, mode, width, theme) {
139
- const contentWidth = Math.max(visibleWidth(renderStats(rows, mode, theme)), visibleWidth(renderFooter(theme)));
144
+ const footerWidth = visibleWidth(renderFooterContent(theme)) + 2 + visibleWidth(`v${VERSION}`);
145
+ const contentWidth = Math.max(visibleWidth(renderStats(rows, mode, theme)), footerWidth);
140
146
  return width >= contentWidth + 2;
141
147
  }
142
148
  function renderStatusSection(rows, mode, width, theme) {
@@ -144,7 +150,7 @@ function renderStatusSection(rows, mode, width, theme) {
144
150
  renderSectionTop("status", width, theme),
145
151
  frameLine(renderStats(rows, mode, theme), width, theme, theme.surface),
146
152
  renderSeparator(width, theme),
147
- frameLine(renderFooter(theme), width, theme, theme.surface),
153
+ frameLine(renderFooter(width, theme), width, theme, theme.surface),
148
154
  renderBottom(width, theme),
149
155
  ];
150
156
  }
@@ -155,7 +161,13 @@ function renderStats(rows, mode, theme) {
155
161
  const layout = mode === "wide" ? "wide table" : mode === "medium" ? "compact table" : "small table";
156
162
  return ` ${theme.warning("●")} ${unread} unread ${theme.accent("◆")} ${actionable} actionable ${theme.stale("󰅖")} ${stale} stale ${theme.muted(layout)}`;
157
163
  }
158
- function renderFooter(theme) {
164
+ function renderFooter(width, theme) {
165
+ const content = renderFooterContent(theme);
166
+ const version = theme.muted(`v${VERSION}`);
167
+ const gapWidth = Math.max(2, width - 2 - visibleWidth(content) - visibleWidth(version));
168
+ return `${content}${" ".repeat(gapWidth)}${version}`;
169
+ }
170
+ function renderFooterContent(theme) {
159
171
  return ` ${theme.accent("↑/↓ j/k")} select ${theme.accent("↵")} focus/read ${theme.accent("d")} dismiss ${theme.accent("D")} dismiss read ${theme.accent("r")} refresh ${theme.accent("q")} quit`;
160
172
  }
161
173
  function renderMessageLines(message, width, theme) {
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-component.js","sourceRoot":"","sources":["../../src/cli/dashboard-component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-component.js","sourceRoot":"","sources":["../../src/cli/dashboard-component.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,8 @@ import type { DashboardRow } from "../domain/status.js";
2
2
  export type DashboardLayoutMode = "wide" | "medium" | "narrow";
3
3
  export interface RowText {
4
4
  age: string;
5
- project: string;
5
+ lastPrompt: string;
6
+ rootPath: string;
6
7
  session: string;
7
8
  summary: string;
8
9
  }
@@ -21,7 +21,8 @@ export function getVisibleRowRange(totalRows, selected, maxRows) {
21
21
  export function toRowText(row, now = Date.now()) {
22
22
  return {
23
23
  age: shouldRunRowTimer(row) ? formatAge(now - row.lastEventAt) : "",
24
- project: shortenPath(row.cwd),
24
+ lastPrompt: row.lastPrompt ?? "",
25
+ rootPath: shortenPath(row.cwd),
25
26
  session: row.pane?.sessionName ?? row.tmuxSession ?? "?",
26
27
  summary: row.summary,
27
28
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard-layout.js","sourceRoot":"","sources":["../../src/cli/dashboard-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard-layout.js","sourceRoot":"","sources":["../../src/cli/dashboard-layout.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { relative } from "node:path";
2
2
  export function renderRows(rows, selected = 0, now = Date.now()) {
3
- const lines = ["STATE AGE SESSION PROJECT LAST EVENT"];
3
+ const lines = ["STATE AGE SESSION LAST PROMPT LAST EVENT ROOT PATH"];
4
4
  rows.forEach((row, index) => lines.push(formatRow(row, index === selected, now)));
5
5
  if (rows.length === 0)
6
6
  lines.push("No pi sessions found.");
@@ -11,9 +11,11 @@ export function formatRow(row, selected, now = Date.now()) {
11
11
  const state = row.displayState.padEnd(6);
12
12
  const age = formatAge(now - row.lastEventAt).padEnd(5);
13
13
  const session = (row.pane?.sessionName ?? row.tmuxSession ?? "?").padEnd(16).slice(0, 16);
14
- const project = shortenPath(row.cwd).padEnd(22).slice(0, 22);
14
+ const lastPrompt = (row.lastPrompt ?? "").padEnd(30).slice(0, 30);
15
+ const summary = row.summary.padEnd(24).slice(0, 24);
16
+ const rootPath = shortenPath(row.cwd);
15
17
  const unread = row.unread ? "*" : " ";
16
- return `${marker}${unread}${state} ${age} ${session} ${project} ${row.summary}`;
18
+ return `${marker}${unread}${state} ${age} ${session} ${lastPrompt} ${summary} ${rootPath}`;
17
19
  }
18
20
  export function formatAge(ms) {
19
21
  const seconds = Math.max(0, Math.floor(ms / 1000));
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/cli/format.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -8,6 +8,7 @@ import { renderRows } from "./format.js";
8
8
  import { buildDashboardRows } from "./rows.js";
9
9
  import { runWebServer } from "../web/server.js";
10
10
  import { runDashboard } from "./dashboard.js";
11
+ import { VERSION } from "../version.js";
11
12
  const HELP = `pi-muxr
12
13
 
13
14
  Usage:
@@ -17,6 +18,7 @@ Usage:
17
18
  pi-muxr --config Print resolved config
18
19
  pi-muxr --web Serve browser terminal for a pi-muxr tmux session
19
20
  pi-muxr --quit-on-select Exit after Enter focuses the selected row
21
+ pi-muxr --version Show the installed version
20
22
  pi-muxr --help Show this help
21
23
 
22
24
  Keys: ↑/↓ or j/k select, Enter focus/read, d dismiss, D dismiss all read, r refresh, q quit.
@@ -28,6 +30,10 @@ function main(argv) {
28
30
  console.log(HELP);
29
31
  return;
30
32
  }
33
+ if (argv.includes("--version")) {
34
+ console.log(VERSION);
35
+ return;
36
+ }
31
37
  try {
32
38
  const sidebarCleanupWindowTarget = parseSidebarCleanupWindowTarget(argv);
33
39
  if (sidebarCleanupWindowTarget) {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,7 @@ export interface PiMuxrStatus {
15
15
  state: PiMuxrState;
16
16
  severity: PiMuxrSeverity;
17
17
  summary: string;
18
+ lastPrompt?: string | null;
18
19
  lastEventAt: number;
19
20
  heartbeatAt: number;
20
21
  readUntilEventAt?: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/domain/status.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAGlG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AA0D7D,MAAM,CAAC,MAAM,yBAAyB,GAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEjF,MAAM,UAAU,kBAAkB,CAAC,MAA6E,EAAE,gBAAgB,GAAG,yBAAyB;IAC5J,OAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAwF;IACrH,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAmE;IAC5G,OAAO,CAAC,MAAM,CAAC,qBAAqB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/domain/status.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAGlG,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAU,CAAC;AA2D7D,MAAM,CAAC,MAAM,yBAAyB,GAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAEjF,MAAM,UAAU,kBAAkB,CAAC,MAA6E,EAAE,gBAAgB,GAAG,yBAAyB;IAC5J,OAAO,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;AACxF,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAwF;IACrH,OAAO,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;AACpG,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAmE;IAC5G,OAAO,CAAC,MAAM,CAAC,qBAAqB,IAAI,CAAC,CAAC,IAAI,MAAM,CAAC,WAAW,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;AAC7D,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import type { PiMuxrStatus } from "../domain/status.js";
2
2
  export default function piMuxrExtension(pi: any): void;
3
3
  export declare function resolveAgentEndStatus(event: unknown, fallbackError: string | null): Pick<PiMuxrStatus, "state" | "severity" | "summary">;
4
+ export declare function normalizePrompt(prompt: unknown): string | null;
4
5
  export declare function summarizeAskUserRequest(input: unknown): string;
5
6
  export declare function summarizeAskUserResult(event: any): string;
6
7
  export declare function formatToolName(toolName: unknown): string;
@@ -4,14 +4,15 @@ import { notifyStatus } from "../notifications/desktop.js";
4
4
  import { ringTerminalBell, shouldRingTerminalBell } from "../notifications/terminal.js";
5
5
  import { openDatabase } from "../state/database.js";
6
6
  import { hasFreshDashboardPresence } from "../state/dashboard-presence.js";
7
- import { markNotified, removeStatus, updateHeartbeat, upsertStatus } from "../state/write-status.js";
7
+ import { markNotified, removeStatus, updateHeartbeat, updateLastPrompt, upsertStatus } from "../state/write-status.js";
8
8
  import { listTmuxPanes } from "../tmux/list-panes.js";
9
9
  export default function piMuxrExtension(pi) {
10
- const runtime = { config: loadConfig(), db: null, id: null, heartbeatTimer: null, lastError: null, model: null, handledToolCallIds: new Set(), hasToolPreviewInPrompt: false };
10
+ const runtime = { config: loadConfig(), db: null, id: null, heartbeatTimer: null, lastError: null, model: null, lastPrompt: null, handledToolCallIds: new Set(), hasToolPreviewInPrompt: false };
11
11
  pi.on("session_start", async (_event, ctx) => {
12
12
  runtime.config = loadConfig();
13
13
  runtime.db = openDatabase(runtime.config.databasePath);
14
14
  runtime.model = formatModel(ctx.model);
15
+ runtime.lastPrompt = null;
15
16
  runtime.id = createSessionId(ctx);
16
17
  writeState(runtime, ctx, "IDLE", "low", startSummary(ctx));
17
18
  runtime.heartbeatTimer = setInterval(() => writeHeartbeat(runtime, ctx), runtime.config.heartbeatIntervalMs);
@@ -20,6 +21,7 @@ export default function piMuxrExtension(pi) {
20
21
  runtime.model = formatModel(event.model);
21
22
  writeState(runtime, ctx, "IDLE", "low", `model: ${runtime.model}`);
22
23
  });
24
+ pi.on("input", async (event) => captureLastPrompt(runtime, event.text));
23
25
  pi.on("agent_start", async (_event, ctx) => {
24
26
  runtime.lastError = null;
25
27
  runtime.handledToolCallIds.clear();
@@ -144,10 +146,25 @@ function baseStatus(runtime, ctx, pane, state, severity, summary, now, event) {
144
146
  state,
145
147
  severity,
146
148
  summary,
149
+ lastPrompt: runtime.lastPrompt,
147
150
  lastEventAt: event ? now : now,
148
151
  heartbeatAt: now,
149
152
  };
150
153
  }
154
+ function captureLastPrompt(runtime, prompt) {
155
+ const lastPrompt = normalizePrompt(prompt);
156
+ if (!lastPrompt)
157
+ return;
158
+ runtime.lastPrompt = lastPrompt;
159
+ if (runtime.db && runtime.id)
160
+ updateLastPrompt(runtime.db, runtime.id, lastPrompt);
161
+ }
162
+ export function normalizePrompt(prompt) {
163
+ if (typeof prompt !== "string")
164
+ return null;
165
+ const normalized = prompt.replace(/\s+/g, " ").trim();
166
+ return normalized || null;
167
+ }
151
168
  function maybeRingBell(runtime, status, snapshot) {
152
169
  if (shouldRingTerminalBell(runtime.config, status.state, snapshot?.state ?? null))
153
170
  ringTerminalBell();
@@ -1 +1 @@
1
- {"version":3,"file":"pi-muxr.js","sourceRoot":"","sources":["../../src/extension/pi-muxr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pi-muxr.js","sourceRoot":"","sources":["../../src/extension/pi-muxr.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,14 @@
1
1
  import { mkdirSync } from "node:fs";
2
2
  import { DatabaseSync } from "node:sqlite";
3
3
  import { parentDir } from "../config/paths.js";
4
+ import { applyDatabaseMigrations } from "./migrations.js";
4
5
  import { SCHEMA_SQL } from "./schema.js";
5
6
  export function openDatabase(databasePath) {
6
7
  mkdirSync(parentDir(databasePath), { recursive: true });
7
8
  const db = new DatabaseSync(databasePath);
8
9
  db.exec("PRAGMA journal_mode = WAL; PRAGMA busy_timeout = 3000;");
9
10
  db.exec(SCHEMA_SQL);
11
+ applyDatabaseMigrations(db);
10
12
  return db;
11
13
  }
12
14
  //# sourceMappingURL=database.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/state/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;IAC1C,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAClE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpB,OAAO,EAAE,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"database.js","sourceRoot":"","sources":["../../src/state/database.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,UAAU,YAAY,CAAC,YAAoB;IAC/C,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;IAC1C,EAAE,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAC;IAClE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpB,uBAAuB,CAAC,EAAE,CAAC,CAAC;IAC5B,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type { Database } from "./database.js";
2
+ export interface DatabaseMigration {
3
+ version: number;
4
+ apply(db: Database): void;
5
+ }
6
+ export declare function applyDatabaseMigrations(db: Database, migrations?: DatabaseMigration[]): void;
@@ -0,0 +1,48 @@
1
+ const DATABASE_MIGRATIONS = [
2
+ {
3
+ version: 1,
4
+ apply: addLastPromptColumn,
5
+ },
6
+ ];
7
+ export function applyDatabaseMigrations(db, migrations = DATABASE_MIGRATIONS) {
8
+ validateMigrationOrder(migrations);
9
+ db.exec("BEGIN IMMEDIATE");
10
+ try {
11
+ const currentVersion = readDatabaseVersion(db);
12
+ const latestVersion = migrations.at(-1)?.version ?? 0;
13
+ if (currentVersion > latestVersion)
14
+ throw new Error(`Database schema version ${currentVersion} is newer than supported version ${latestVersion}`);
15
+ for (const migration of migrations) {
16
+ if (migration.version <= currentVersion)
17
+ continue;
18
+ migration.apply(db);
19
+ db.exec(`PRAGMA user_version = ${migration.version}`);
20
+ }
21
+ db.exec("COMMIT");
22
+ }
23
+ catch (error) {
24
+ db.exec("ROLLBACK");
25
+ throw error;
26
+ }
27
+ }
28
+ function addLastPromptColumn(db) {
29
+ if (hasColumn(db, "sessions", "last_prompt"))
30
+ return;
31
+ db.exec("ALTER TABLE sessions ADD COLUMN last_prompt TEXT");
32
+ }
33
+ function hasColumn(db, table, column) {
34
+ const columns = db.prepare(`PRAGMA table_info(${table})`).all();
35
+ return columns.some((candidate) => candidate.name === column);
36
+ }
37
+ function validateMigrationOrder(migrations) {
38
+ for (let index = 0; index < migrations.length; index += 1) {
39
+ const expectedVersion = index + 1;
40
+ if (migrations[index]?.version !== expectedVersion)
41
+ throw new Error(`Database migration version ${expectedVersion} is missing or out of order`);
42
+ }
43
+ }
44
+ function readDatabaseVersion(db) {
45
+ const row = db.prepare("PRAGMA user_version").get();
46
+ return row?.user_version ?? 0;
47
+ }
48
+ //# sourceMappingURL=migrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.js","sourceRoot":"","sources":["../../src/state/migrations.ts"],"names":[],"mappings":"AAOA,MAAM,mBAAmB,GAAwB;IAC/C;QACE,OAAO,EAAE,CAAC;QACV,KAAK,EAAE,mBAAmB;KAC3B;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CAAC,EAAY,EAAE,UAAU,GAAwB,mBAAmB;IACzG,sBAAsB,CAAC,UAAU,CAAC,CAAC;IACnC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAC3B,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,aAAa,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC;QACtD,IAAI,cAAc,GAAG,aAAa;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,oCAAoC,aAAa,EAAE,CAAC,CAAC;QAElJ,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,SAAS,CAAC,OAAO,IAAI,cAAc;gBAAE,SAAS;YAClD,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACpB,EAAE,CAAC,IAAI,CAAC,yBAAyB,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACxD,CAAC;QACD,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACpB,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAY;IACvC,IAAI,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC;QAAE,OAAO;IACrD,EAAE,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,SAAS,CAAC,EAAY,EAAE,KAAa,EAAE,MAAc;IAC5D,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,KAAK,GAAG,CAAC,CAAC,GAAG,EAA6B,CAAC;IAC3F,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,sBAAsB,CAAC,UAA+B;IAC7D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,eAAe,GAAG,KAAK,GAAG,CAAC,CAAC;QAClC,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,eAAe;YAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,eAAe,6BAA6B,CAAC,CAAC;IAClJ,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAY;IACvC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAA2C,CAAC;IAC7F,OAAO,GAAG,EAAE,YAAY,IAAI,CAAC,CAAC;AAChC,CAAC"}
@@ -12,6 +12,7 @@ type DbSessionRow = {
12
12
  state: PiMuxrStatus["state"];
13
13
  severity: PiMuxrStatus["severity"];
14
14
  summary: string;
15
+ last_prompt: string | null;
15
16
  last_event_at: number;
16
17
  heartbeat_at: number;
17
18
  read_until_event_at: number | null;
@@ -12,6 +12,7 @@ export function toStatus(row) {
12
12
  state: row.state,
13
13
  severity: row.severity,
14
14
  summary: row.summary,
15
+ lastPrompt: row.last_prompt,
15
16
  lastEventAt: row.last_event_at,
16
17
  heartbeatAt: row.heartbeat_at,
17
18
  readUntilEventAt: row.read_until_event_at,
@@ -1 +1 @@
1
- {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/state/rows.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,QAAQ,CAAC,GAAiB;IACxC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,gBAAgB,EAAE,GAAG,CAAC,mBAAmB;QACzC,cAAc,EAAE,GAAG,CAAC,eAAe;QACnC,qBAAqB,EAAE,GAAG,CAAC,wBAAwB;QACnD,mBAAmB,EAAE,GAAG,CAAC,sBAAsB;KAChD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"rows.js","sourceRoot":"","sources":["../../src/state/rows.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,QAAQ,CAAC,GAAiB;IACxC,OAAO;QACL,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,GAAG,CAAC,OAAO;QACnB,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,eAAe,EAAE,GAAG,CAAC,iBAAiB;QACtC,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,GAAG,EAAE,GAAG,CAAC,GAAG;QACZ,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,UAAU,EAAE,GAAG,CAAC,WAAW;QAC3B,WAAW,EAAE,GAAG,CAAC,aAAa;QAC9B,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,gBAAgB,EAAE,GAAG,CAAC,mBAAmB;QACzC,cAAc,EAAE,GAAG,CAAC,eAAe;QACnC,qBAAqB,EAAE,GAAG,CAAC,wBAAwB;QACnD,mBAAmB,EAAE,GAAG,CAAC,sBAAsB;KAChD,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- export declare const SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n pane_id TEXT,\n tmux_session TEXT,\n tmux_window TEXT,\n tmux_window_index TEXT,\n pid INTEGER NOT NULL,\n cwd TEXT NOT NULL,\n pi_session_file TEXT,\n model TEXT,\n state TEXT NOT NULL,\n severity TEXT NOT NULL,\n summary TEXT NOT NULL,\n last_event_at INTEGER NOT NULL,\n heartbeat_at INTEGER NOT NULL,\n read_until_event_at INTEGER,\n acknowledged_at INTEGER,\n dismissed_until_event_at INTEGER,\n last_notified_event_at INTEGER\n);\n\nCREATE TABLE IF NOT EXISTS dashboard_presence (\n instance_id TEXT PRIMARY KEY,\n pid INTEGER NOT NULL,\n tmux_pane_id TEXT,\n started_at INTEGER NOT NULL,\n heartbeat_at INTEGER NOT NULL\n);\n";
1
+ export declare const SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS sessions (\n id TEXT PRIMARY KEY,\n pane_id TEXT,\n tmux_session TEXT,\n tmux_window TEXT,\n tmux_window_index TEXT,\n pid INTEGER NOT NULL,\n cwd TEXT NOT NULL,\n pi_session_file TEXT,\n model TEXT,\n state TEXT NOT NULL,\n severity TEXT NOT NULL,\n summary TEXT NOT NULL,\n last_prompt TEXT,\n last_event_at INTEGER NOT NULL,\n heartbeat_at INTEGER NOT NULL,\n read_until_event_at INTEGER,\n acknowledged_at INTEGER,\n dismissed_until_event_at INTEGER,\n last_notified_event_at INTEGER\n);\n\nCREATE TABLE IF NOT EXISTS dashboard_presence (\n instance_id TEXT PRIMARY KEY,\n pid INTEGER NOT NULL,\n tmux_pane_id TEXT,\n started_at INTEGER NOT NULL,\n heartbeat_at INTEGER NOT NULL\n);\n";
@@ -12,6 +12,7 @@ CREATE TABLE IF NOT EXISTS sessions (
12
12
  state TEXT NOT NULL,
13
13
  severity TEXT NOT NULL,
14
14
  summary TEXT NOT NULL,
15
+ last_prompt TEXT,
15
16
  last_event_at INTEGER NOT NULL,
16
17
  heartbeat_at INTEGER NOT NULL,
17
18
  read_until_event_at INTEGER,
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/state/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BzB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/state/schema.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BzB,CAAC"}
@@ -4,6 +4,7 @@ export type StatusInput = Omit<PiMuxrStatus, "readUntilEventAt" | "acknowledgedA
4
4
  export declare function upsertStatus(db: Database, status: StatusInput): void;
5
5
  export declare function removeStatus(db: Database, id: string): void;
6
6
  export declare function updateHeartbeat(db: Database, id: string, heartbeatAt?: number): void;
7
+ export declare function updateLastPrompt(db: Database, id: string, lastPrompt: string): void;
7
8
  export declare function markRead(db: Database, id: string, lastEventAt: number): void;
8
9
  export declare function dismissStatus(db: Database, id: string, lastEventAt: number, at?: number): void;
9
10
  export declare function dismissAllRead(db: Database, actionableStatesOrAt?: PiMuxrState[] | number, at?: number): number;
@@ -1,8 +1,9 @@
1
1
  import { DEFAULT_ACTIONABLE_STATES } from "../domain/status.js";
2
+ const LAST_PROMPT_MAX_LENGTH = 120;
2
3
  export function upsertStatus(db, status) {
3
4
  db.prepare(`
4
- INSERT INTO sessions (id, pane_id, tmux_session, tmux_window, tmux_window_index, pid, cwd, pi_session_file, model, state, severity, summary, last_event_at, heartbeat_at, read_until_event_at, acknowledged_at, dismissed_until_event_at, last_notified_event_at)
5
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
5
+ INSERT INTO sessions (id, pane_id, tmux_session, tmux_window, tmux_window_index, pid, cwd, pi_session_file, model, state, severity, summary, last_prompt, last_event_at, heartbeat_at, read_until_event_at, acknowledged_at, dismissed_until_event_at, last_notified_event_at)
6
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
6
7
  ON CONFLICT(id) DO UPDATE SET
7
8
  pane_id=excluded.pane_id,
8
9
  tmux_session=excluded.tmux_session,
@@ -15,13 +16,14 @@ export function upsertStatus(db, status) {
15
16
  state=excluded.state,
16
17
  severity=excluded.severity,
17
18
  summary=excluded.summary,
19
+ last_prompt=excluded.last_prompt,
18
20
  last_event_at=excluded.last_event_at,
19
21
  heartbeat_at=excluded.heartbeat_at,
20
22
  read_until_event_at=COALESCE(sessions.read_until_event_at, excluded.read_until_event_at),
21
23
  acknowledged_at=COALESCE(sessions.acknowledged_at, excluded.acknowledged_at),
22
24
  dismissed_until_event_at=COALESCE(sessions.dismissed_until_event_at, excluded.dismissed_until_event_at),
23
25
  last_notified_event_at=COALESCE(sessions.last_notified_event_at, excluded.last_notified_event_at)
24
- `).run(status.id, status.paneId, status.tmuxSession, status.tmuxWindow, status.tmuxWindowIndex, status.pid, status.cwd, status.piSessionFile, status.model, status.state, status.severity, truncate(status.summary, 500), status.lastEventAt, status.heartbeatAt, status.readUntilEventAt ?? null, status.acknowledgedAt ?? null, status.dismissedUntilEventAt ?? null, status.lastNotifiedEventAt ?? null);
26
+ `).run(status.id, status.paneId, status.tmuxSession, status.tmuxWindow, status.tmuxWindowIndex, status.pid, status.cwd, status.piSessionFile, status.model, status.state, status.severity, truncate(status.summary, 500), truncateNullable(status.lastPrompt, LAST_PROMPT_MAX_LENGTH), status.lastEventAt, status.heartbeatAt, status.readUntilEventAt ?? null, status.acknowledgedAt ?? null, status.dismissedUntilEventAt ?? null, status.lastNotifiedEventAt ?? null);
25
27
  }
26
28
  export function removeStatus(db, id) {
27
29
  db.prepare("DELETE FROM sessions WHERE id = ?").run(id);
@@ -29,6 +31,9 @@ export function removeStatus(db, id) {
29
31
  export function updateHeartbeat(db, id, heartbeatAt = Date.now()) {
30
32
  db.prepare("UPDATE sessions SET heartbeat_at = ? WHERE id = ?").run(heartbeatAt, id);
31
33
  }
34
+ export function updateLastPrompt(db, id, lastPrompt) {
35
+ db.prepare("UPDATE sessions SET last_prompt = ? WHERE id = ?").run(truncate(lastPrompt, LAST_PROMPT_MAX_LENGTH), id);
36
+ }
32
37
  export function markRead(db, id, lastEventAt) {
33
38
  db.prepare("UPDATE sessions SET read_until_event_at = ? WHERE id = ?").run(lastEventAt, id);
34
39
  }
@@ -53,6 +58,9 @@ export function dismissAllRead(db, actionableStatesOrAt = DEFAULT_ACTIONABLE_STA
53
58
  export function markNotified(db, id, lastEventAt) {
54
59
  db.prepare("UPDATE sessions SET last_notified_event_at = ? WHERE id = ?").run(lastEventAt, id);
55
60
  }
61
+ function truncateNullable(value, max) {
62
+ return value ? truncate(value, max) : null;
63
+ }
56
64
  function truncate(value, max) {
57
65
  return value.length <= max ? value : `${value.slice(0, max - 1)}…`;
58
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write-status.js","sourceRoot":"","sources":["../../src/state/write-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"write-status.js","sourceRoot":"","sources":["../../src/state/write-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const VERSION: string;
@@ -0,0 +1,5 @@
1
+ import { createRequire } from "node:module";
2
+ const require = createRequire(import.meta.url);
3
+ const packageMetadata = require("../package.json");
4
+ export const VERSION = packageMetadata.version;
5
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAM5C,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAoB,CAAC;AAEtE,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yuriteixeira/pi-muxr",
3
- "version": "0.1.3",
3
+ "version": "0.2.1",
4
4
  "description": "tmux dashboard for Pi coding sessions",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -35,7 +35,6 @@
35
35
  },
36
36
  "files": [
37
37
  "dist",
38
- "docs",
39
38
  "examples",
40
39
  "LICENSE",
41
40
  "README.md"
@@ -1,287 +0,0 @@
1
- # `pi-muxr` architecture
2
-
3
- ## Purpose
4
-
5
- `pi-muxr` gives one view of Pi sessions that run in tmux. It answers three questions:
6
-
7
- 1. Which sessions are active?
8
- 2. Which sessions need attention?
9
- 3. Which tmux pane owns each session?
10
-
11
- The project does not read terminal output. A Pi extension receives Pi events and publishes structured state. The terminal and browser interfaces read that shared state.
12
-
13
- ## System overview
14
-
15
- ```text
16
- Pi session
17
- |
18
- | Pi extension events
19
- +--> terminal bell in the Pi pane
20
- v
21
- SQLite database: ~/.pi-muxr/pi-muxr.sqlite
22
- |
23
- +--> CLI dashboard
24
- | |
25
- | +--> terminal input and display
26
- | +--> tmux pane focus
27
- |
28
- +--> Web terminal gateway
29
- | |
30
- | +--> browser xterm terminal
31
- | +--> tmux session through node-pty
32
- | +--> browser notifications
33
- |
34
- +--> Desktop notifications
35
- ```
36
-
37
- SQLite is the shared boundary between the Pi extension and the user interfaces. It allows the extension and one or more dashboard processes to read and update state without a separate service.
38
-
39
- ## Source layout
40
-
41
- ```text
42
- src/
43
- ├── domain/ State types and rules that do not depend on I/O
44
- ├── extension/ Pi event integration and session state publishing
45
- ├── state/ SQLite schema and state reads and writes
46
- ├── tmux/ Pane discovery and pane focus
47
- ├── cli/ Terminal entry point and dashboard rendering
48
- ├── web/ HTTP server, browser assets, and terminal gateway
49
- ├── config/ Configuration and path resolution
50
- └── notifications/ Desktop notification integration
51
- ```
52
-
53
- The domain layer is kept independent from the terminal, web, tmux, and database layers. This makes state rules easier to test and keeps the user interfaces as clients of the same data model.
54
-
55
- ## State model
56
-
57
- Each Pi process owns one row in the `sessions` table.
58
-
59
- Important fields include:
60
-
61
- - `id`: Stable identifier for the Pi session and tmux pane.
62
- - `pane_id`: tmux pane identifier such as `%12`.
63
- - `tmux_session`, `tmux_window`, and `tmux_window_index`: Pane location.
64
- - `pid`: Pi process ID.
65
- - `cwd`: Project directory.
66
- - `pi_session_file`: Pi session file when available.
67
- - `model`: Selected model.
68
- - `state`: Current Pi state.
69
- - `severity`: `low`, `medium`, or `high`.
70
- - `summary`: Short description of the latest event.
71
- - `last_event_at`: Time of the latest meaningful event.
72
- - `heartbeat_at`: Time of the latest process heartbeat.
73
- - Read, dismissal, and notification markers.
74
-
75
- The database also contains `dashboard_presence`. Dashboard processes update this table so the extension can avoid sending desktop notifications when a dashboard is already open.
76
-
77
- ## Session states
78
-
79
- The domain supports these states:
80
-
81
- | State | Meaning |
82
- | --- | --- |
83
- | `ASK` | Pi is waiting for user input through `ask_user`. |
84
- | `ERROR` | A turn or tool ended with an error. |
85
- | `DONE` | A turn completed. |
86
- | `QUEUED` | Work is waiting to start. |
87
- | `RUN` | Pi is processing a turn or tool. |
88
- | `IDLE` | The session is alive but not active. |
89
- | `STALE` | Internal display classification for an expired heartbeat or a missing tmux pane. |
90
-
91
- By default, `ASK`, `ERROR`, and `DONE` are actionable. The configuration can change the actionable states used by the dashboard, terminal bell, dismissal actions, and browser notifications. Desktop notifications always use the default actionable states.
92
-
93
- An event is unread when its `last_event_at` is newer than `read_until_event_at` and it has not been dismissed. Unread and actionable are separate properties. The dashboard can therefore show an unread marker for a state that is not actionable. An event is dismissed when `dismissed_until_event_at` is at least as recent as `last_event_at`. This means a new event becomes visible again after an older event was read or dismissed.
94
-
95
- ## Pi extension flow
96
-
97
- The extension is loaded by Pi and listens to Pi lifecycle events.
98
-
99
- ```text
100
- session_start
101
- -> open database
102
- -> create session ID
103
- -> publish IDLE state
104
- -> start heartbeat timer
105
-
106
- agent_start / turn_start
107
- -> publish RUN state
108
-
109
- tool_call
110
- -> publish ASK for ask_user
111
- -> publish RUN for other tools
112
-
113
- tool_result
114
- -> retain error information
115
- -> publish tool summary when needed
116
-
117
- agent_end
118
- -> publish ERROR when the turn failed
119
- -> otherwise publish DONE
120
-
121
- session_shutdown
122
- -> stop heartbeat
123
- -> remove session row
124
- -> close database
125
- ```
126
-
127
- The extension also refreshes tmux information when it writes a state update. It uses `TMUX_PANE` and tmux pane discovery to associate a Pi process with its owning pane. When the process enters a configured actionable state, the extension emits one terminal bell. Because the bell comes from the Pi process, tmux assigns the alert to the window that owns the Pi pane.
128
-
129
- Summaries are truncated before storage. This keeps the database small and limits the amount of event data retained for display.
130
-
131
- ## Heartbeats and stale sessions
132
-
133
- The extension updates `heartbeat_at` on a timer. The dashboard does not trust clean shutdown alone because a process can be killed or a pane can disappear.
134
-
135
- When dashboard rows are built:
136
-
137
- - A session is stale when its heartbeat is older than `staleAfterMs`.
138
- - A session is also stale when its recorded pane is missing.
139
- - Stale rows are classified as `STALE`, marked as not actionable, and removed from the displayed rows.
140
-
141
- This check is performed when rows are read. The database does not need a cleanup process for abandoned rows, but abandoned rows remain stored and are hidden from the interfaces.
142
-
143
- ## CLI dashboard flow
144
-
145
- The CLI has four modes:
146
-
147
- - Interactive dashboard: `pi-muxr`
148
- - Tmux sidebar toggle: `pi-muxr --sidebar [left|right]`
149
- - Plain output: `pi-muxr --list`
150
- - Browser server: `pi-muxr --web`
151
-
152
- The interactive dashboard follows this flow:
153
-
154
- ```text
155
- load configuration
156
- -> open SQLite database
157
- -> record dashboard presence
158
- -> read session rows
159
- -> list tmux panes
160
- -> join sessions with panes
161
- -> mark and remove stale rows
162
- -> sort active rows
163
- -> render dashboard
164
- ```
165
-
166
- The dashboard refreshes once per second and keeps the selected row. The Pi extension emits terminal bells, so the dashboard does not assign alerts to its own window.
167
-
168
- User actions update SQLite before they affect the display:
169
-
170
- - `Enter` marks the event as read and focuses its pane.
171
- - `d` dismisses the selected event.
172
- - `D` dismisses all read actionable events.
173
- - `r` refreshes the rows.
174
- - `q`, `Esc`, or `Ctrl+C` cleans up presence and exits.
175
-
176
- The rendering layer uses `@earendil-works/pi-tui`. Dashboard orchestration, state updates, tmux commands, and rendering are separate responsibilities.
177
-
178
- ## Tmux integration
179
-
180
- The extension uses `tmux list-panes` to discover pane metadata. The dashboard joins this data with the session rows by pane ID.
181
-
182
- When the user focuses a row, `src/tmux/focus.ts` selects the pane and switches to its tmux session and window. When the CLI runs outside tmux, it reports the commands needed to focus the pane instead of pretending that the focus succeeded.
183
-
184
- The sidebar command splits every window in every tmux session and starts the same `pi-muxr` entrypoint in each new pane. The default side is right, and each pane uses at most 25 percent of the window width. A tmux pane option marks each pane. A global tmux option stores the selected side. Indexed `after-new-session` and `after-new-window` hooks add the sidebar to new sessions and windows without replacing other hooks. An indexed `window-layout-changed` hook closes a sidebar when it is the only pane left in its window. The next sidebar command finds the markers, closes all dashboard sidebar panes, and removes the option and hooks.
185
-
186
- The browser gateway uses a separate tmux session, named `pi-muxr-web` by default. A query parameter can select another valid session name.
187
-
188
- ## Browser interface
189
-
190
- The web interface is a local HTTP server with a WebSocket terminal gateway.
191
-
192
- ```text
193
- Browser
194
- | HTTP
195
- v
196
- Web server
197
- | serves page, assets, and terminal theme
198
- |
199
- | WebSocket
200
- v
201
- Terminal gateway
202
- | node-pty
203
- v
204
- tmux attach-session
205
- ```
206
-
207
- When a browser connects, the gateway:
208
-
209
- 1. Validates the requested tmux session name.
210
- 2. Creates the session when it does not exist.
211
- 3. Temporarily hides the tmux status line.
212
- 4. Starts `tmux attach-session` through `node-pty`.
213
- 5. Forwards terminal output to the browser.
214
- 6. Forwards keyboard input and valid resize messages to the terminal.
215
- 7. Polls SQLite for unread actionable events and sends browser notification messages.
216
- 8. Restores tmux status and closes resources when the connection ends.
217
-
218
- The web interface is a terminal view, not a second dashboard implementation. It attaches to the tmux session that runs the normal CLI dashboard.
219
-
220
- ## Notifications
221
-
222
- The terminal bell and browser notifications use the configured actionable states. Desktop notifications use the fixed default states: `ASK`, `ERROR`, and `DONE`.
223
-
224
- Desktop notification flow:
225
-
226
- ```text
227
- extension state update
228
- -> check default desktop notification state
229
- -> check previous notification marker
230
- -> check dashboard presence
231
- -> send desktop notification
232
- -> store last_notified_event_at
233
- ```
234
-
235
- The extension avoids repeated desktop notifications for the same state. When configured, a fresh dashboard presence suppresses desktop notifications because the user can already see the event.
236
-
237
- The Pi extension emits the terminal bell when a session enters a new actionable state. It compares the new state with the stored state to avoid a repeated bell. The browser gateway polls notification state and sends browser messages for new unread actionable rows.
238
-
239
- ## Configuration boundary
240
-
241
- Configuration is loaded from `~/.pi-muxr/config.json`. If the file does not exist, built in defaults are used.
242
-
243
- Configuration controls:
244
-
245
- - Database and state paths.
246
- - Actionable states for the dashboard, terminal bell, dismissal actions, and browser notifications.
247
- - Desktop notification behavior for the fixed `ASK`, `ERROR`, and `DONE` states.
248
- - Terminal bell behavior.
249
- - Whether dismissed rows are shown.
250
- - Stale and heartbeat timing.
251
- - Dashboard presence timing.
252
-
253
- The CLI, extension, and web gateway all load the same configuration. They share state and timing rules, while desktop notifications retain their fixed default state list.
254
-
255
- ## Design decisions
256
-
257
- ### Structured events instead of screen scraping
258
-
259
- Pi events provide clear meaning and stable summaries. Screen scraping would depend on terminal formatting and would not reliably identify questions, errors, or completed turns.
260
-
261
- ### SQLite instead of per process files
262
-
263
- SQLite supports concurrent reads and writes, preserves read and dismissal markers, and keeps the state model in one place.
264
-
265
- ### tmux as the focus layer
266
-
267
- Pi sessions already run in tmux. Storing the pane ID allows the dashboard to move from an event directly to the owning session without controlling Pi itself.
268
-
269
- ### Shared domain rules
270
-
271
- Actionable, unread, dismissed, and stale behavior is defined in the domain and used by every interface. This prevents the terminal and browser paths from making different decisions about the same event.
272
-
273
- ### Best effort cleanup with display time checks
274
-
275
- Clean shutdown removes rows, but stale detection remains necessary for crashes, closed panes, and killed processes.
276
-
277
- ## Extension points
278
-
279
- The design leaves room for future changes without changing the main data flow:
280
-
281
- - Add new Pi event mappings in the extension.
282
- - Add new states to the domain model and configuration.
283
- - Add another client that reads the SQLite state.
284
- - Add notification providers beside desktop and browser notifications.
285
- - Add more tmux actions without changing session publishing.
286
-
287
- A new interface should read the domain state and reuse the existing row rules. It should not create a second session protocol.
package/docs/BUILDING.md DELETED
@@ -1,78 +0,0 @@
1
- # Building `pi-muxr`
2
-
3
- This guide explains how to build and run a local copy of `pi-muxr`.
4
-
5
- ## Requirements
6
-
7
- - Node.js 24 or later
8
- - pnpm
9
- - tmux for running the dashboard
10
- - Pi for testing the extension
11
-
12
- The CLI uses the built in `node:sqlite` module.
13
-
14
- ## Install and build
15
-
16
- ```bash
17
- pnpm install
18
- pnpm build
19
- ```
20
-
21
- The build output is written to `dist`.
22
-
23
- For an automatic rebuild during development, run:
24
-
25
- ```bash
26
- pnpm start
27
- ```
28
-
29
- ## Check the code
30
-
31
- ```bash
32
- pnpm typecheck
33
- pnpm test
34
- ```
35
-
36
- ## Link the CLI
37
-
38
- To run the local CLI from any directory:
39
-
40
- ```bash
41
- pnpm link --global
42
- ```
43
-
44
- The command points to `dist/cli/index.js`. Rebuild after source changes, or keep `pnpm start` running.
45
-
46
- ## Load the Pi extension
47
-
48
- Build the package, then link the complete extension directory:
49
-
50
- ```bash
51
- pnpm build
52
- mkdir -p ~/.pi/agent/extensions
53
- rm -f ~/.pi/agent/extensions/pi-muxr.js ~/.pi/agent/extensions/pi-muxr
54
- ln -sfn "$PWD/dist/extension" ~/.pi/agent/extensions/pi-muxr
55
- ```
56
-
57
- The directory link is required because the built extension imports sibling modules from `dist`.
58
-
59
- If Pi is already running, use `/reload` after creating or changing the link.
60
-
61
- The extension stores state in:
62
-
63
- ```text
64
- ~/.pi-muxr/pi-muxr.sqlite
65
- ```
66
-
67
- It removes its row during a clean shutdown. Wrappers around Pi are supported when they load the extension.
68
-
69
- ## Run the CLI
70
-
71
- ```bash
72
- pi-muxr --help
73
- pi-muxr --list
74
- pi-muxr
75
- pi-muxr --web
76
- ```
77
-
78
- See the main [README](../README.md) for user configuration, key bindings, and usage details.
@@ -1,32 +0,0 @@
1
- # Contributing to `pi-muxr`
2
-
3
- ## Development workflow
4
-
5
- 1. Create a branch for your change.
6
- 2. Install dependencies with `pnpm install`.
7
- 3. Make a focused change.
8
- 4. Run `pnpm typecheck`.
9
- 5. Run `pnpm test`.
10
- 6. Run `pnpm build` when the change affects the build or package output.
11
- 7. Update the documentation when behavior or setup changes.
12
-
13
- See [BUILDING.md](BUILDING.md) for local setup and Pi extension loading.
14
-
15
- ## Code changes
16
-
17
- - Keep domain logic separate from terminal, web, tmux, and storage code.
18
- - Preserve the SQLite state format unless a schema change is required.
19
- - Keep session summaries short and safe to store.
20
- - Add or update tests for domain behavior.
21
- - Keep keyboard behavior consistent between the terminal and web interfaces where possible.
22
-
23
- ## Pull requests
24
-
25
- Describe:
26
-
27
- - What changed.
28
- - Why it changed.
29
- - How you tested it.
30
- - Any tmux, Pi, terminal, or browser behavior that reviewers should check.
31
-
32
- Keep unrelated changes out of the same pull request.
Binary file
Binary file
Binary file