aoaoe 0.5.0 → 0.5.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.
package/dist/chat.js CHANGED
@@ -1,23 +1,22 @@
1
1
  #!/usr/bin/env node
2
- // chat.ts -- standalone interactive chat that runs inside an AoE-managed tmux pane
3
- // this is the program that --cmd_override points to when aoaoe registers itself as an AoE session.
4
- // it reads conversation.log for history display, writes user input to pending-input.txt,
5
- // and the daemon picks it up on the next poll cycle.
2
+ // chat.ts -- interactive chat UI for the aoaoe reasoner
3
+ // runs inside an AoE-managed tmux pane (registered via `aoaoe register`).
4
+ // reads conversation.log for daemon output, writes user input to pending-input.txt.
6
5
  //
7
- // features:
8
- // - live countdown to next reasoning cycle (reads daemon-state.json every 1s)
9
- // - per-pane task display (/tasks command)
10
- // - ESC-ESC to interrupt the current reasoner (like OpenCode)
6
+ // works standalone too: captures all AoE panes directly via tmux + aoe CLI
7
+ // to show /overview even when the daemon isn't running.
11
8
  import { createInterface, emitKeypressEvents } from "node:readline";
12
9
  import { appendFileSync, writeFileSync, existsSync, mkdirSync, watchFile, unwatchFile, readFileSync, statSync, openSync, readSync, closeSync, unlinkSync } from "node:fs";
10
+ import { execFileSync } from "node:child_process";
13
11
  import { join } from "node:path";
14
12
  import { homedir } from "node:os";
15
13
  import { readState, requestInterrupt } from "./daemon-state.js";
14
+ import { parseTasks, parseModel, parseContext, parseCost, parseLastLine } from "./task-parser.js";
16
15
  const AOAOE_DIR = join(homedir(), ".aoaoe");
17
16
  const CONVO_LOG = join(AOAOE_DIR, "conversation.log");
18
17
  const INPUT_FILE = join(AOAOE_DIR, "pending-input.txt");
19
18
  const PID_FILE = join(AOAOE_DIR, "chat.pid");
20
- // ANSI helpers
19
+ // ANSI
21
20
  const DIM = "\x1b[2m";
22
21
  const BOLD = "\x1b[1m";
23
22
  const GREEN = "\x1b[32m";
@@ -26,49 +25,44 @@ const YELLOW = "\x1b[33m";
26
25
  const RED = "\x1b[31m";
27
26
  const MAGENTA = "\x1b[35m";
28
27
  const RESET = "\x1b[0m";
29
- const SAVE_CURSOR = "\x1b7";
30
- const RESTORE_CURSOR = "\x1b8";
31
- const CLEAR_LINE = "\x1b[2K";
32
28
  // ESC-ESC interrupt detection
33
29
  let lastEscTime = 0;
34
30
  const ESC_DOUBLE_TAP_MS = 500;
31
+ // track last displayed status to avoid spamming
32
+ let lastStatusLine = "";
35
33
  function main() {
36
34
  mkdirSync(AOAOE_DIR, { recursive: true });
37
- // write PID so daemon can detect we're running
38
35
  writeFileSync(PID_FILE, String(process.pid));
39
- // print banner
36
+ // banner
40
37
  console.log(`${BOLD}${CYAN}aoaoe reasoner chat${RESET}`);
41
- console.log(`${DIM}messages you type here are sent to the reasoner on the next poll cycle${RESET}`);
42
- console.log(`${DIM}the daemon writes observations and decisions to this view${RESET}`);
43
38
  console.log(`${DIM}type /help for commands, ESC ESC to interrupt reasoner, Ctrl+C to exit${RESET}`);
39
+ // daemon check on startup
40
+ checkDaemon();
44
41
  console.log();
45
- // replay existing conversation log
42
+ // replay conversation history
46
43
  replayLog();
47
- // watch conversation.log for new content and stream it
44
+ // watch conversation.log for new daemon output
48
45
  let lastSize = existsSync(CONVO_LOG) ? statSync(CONVO_LOG).size : 0;
49
46
  watchFile(CONVO_LOG, { interval: 500 }, (curr) => {
50
47
  if (curr.size > lastSize) {
51
- // read only new bytes
52
48
  const fd = openSync(CONVO_LOG, "r");
53
49
  const buf = Buffer.alloc(curr.size - lastSize);
54
50
  readSync(fd, buf, 0, buf.length, lastSize);
55
51
  closeSync(fd);
56
52
  const newText = buf.toString("utf-8");
57
- // move cursor to start of line, clear it, print new content, then re-show prompt
58
53
  process.stdout.write(`\r\x1b[K${colorize(newText)}`);
59
54
  rl.prompt(true);
60
55
  lastSize = curr.size;
61
56
  }
62
57
  });
63
- // set up keypress events for ESC-ESC detection
58
+ // ESC-ESC detection
64
59
  if (process.stdin.isTTY) {
65
60
  emitKeypressEvents(process.stdin);
66
61
  process.stdin.on("keypress", (_ch, key) => {
67
62
  if (key?.name === "escape" || key?.sequence === "\x1b") {
68
63
  const now = Date.now();
69
64
  if (now - lastEscTime < ESC_DOUBLE_TAP_MS) {
70
- // double-ESC detected -- interrupt the reasoner
71
- handleInterrupt();
65
+ handleInterrupt(rl);
72
66
  lastEscTime = 0;
73
67
  }
74
68
  else {
@@ -76,12 +70,11 @@ function main() {
76
70
  }
77
71
  }
78
72
  else {
79
- // any other key resets the ESC timer
80
73
  lastEscTime = 0;
81
74
  }
82
75
  });
83
76
  }
84
- // interactive readline
77
+ // readline
85
78
  const rl = createInterface({
86
79
  input: process.stdin,
87
80
  output: process.stdout,
@@ -89,170 +82,300 @@ function main() {
89
82
  terminal: true,
90
83
  });
91
84
  rl.prompt();
92
- // live status bar -- update every second
85
+ // status ticker -- print a status line every 5s, only if it changed
93
86
  const statusInterval = setInterval(() => {
94
- renderStatusBar(rl);
95
- }, 1000);
87
+ const line = buildStatusLine();
88
+ if (line && line !== lastStatusLine) {
89
+ process.stdout.write(`\r\x1b[K${DIM}${line}${RESET}\n`);
90
+ lastStatusLine = line;
91
+ rl.prompt(true);
92
+ }
93
+ // also set tmux pane title
94
+ const titleLine = buildStatusLine(true);
95
+ if (titleLine)
96
+ process.stdout.write(`\x1b]2;${titleLine}\x07`);
97
+ }, 5000);
96
98
  rl.on("line", (line) => {
97
99
  const trimmed = line.trim();
98
100
  if (!trimmed) {
99
101
  rl.prompt();
100
102
  return;
101
103
  }
102
- // handle local commands
103
- if (trimmed === "/help") {
104
- printHelp();
104
+ // slash commands
105
+ if (trimmed.startsWith("/")) {
106
+ handleCommand(trimmed, rl);
105
107
  rl.prompt();
106
108
  return;
107
109
  }
108
- if (trimmed === "/status") {
109
- appendToInput("__CMD_STATUS__");
110
- console.log(`${DIM}status requested${RESET}`);
111
- rl.prompt();
112
- return;
110
+ // regular message -> queue for reasoner
111
+ appendToInput(trimmed);
112
+ const eta = getCountdown();
113
+ if (eta !== null) {
114
+ console.log(`${DIM}queued -- reasoner will read this in ~${eta}s${RESET}`);
113
115
  }
114
- if (trimmed === "/dashboard") {
115
- appendToInput("__CMD_DASHBOARD__");
116
- console.log(`${DIM}dashboard requested${RESET}`);
117
- rl.prompt();
118
- return;
116
+ else if (isDaemonRunning()) {
117
+ console.log(`${DIM}queued -- waiting for next reasoning cycle${RESET}`);
119
118
  }
120
- if (trimmed === "/tasks") {
121
- printTasks();
122
- rl.prompt();
123
- return;
119
+ else {
120
+ console.log(`${YELLOW}queued, but daemon is not running!${RESET}`);
121
+ console.log(`${DIM}start it with: aoaoe${RESET}`);
124
122
  }
125
- if (trimmed === "/verbose") {
123
+ rl.prompt();
124
+ });
125
+ rl.on("close", () => { clearInterval(statusInterval); cleanup(); process.exit(0); });
126
+ process.on("SIGINT", () => { clearInterval(statusInterval); cleanup(); process.exit(0); });
127
+ process.on("SIGTERM", () => { clearInterval(statusInterval); cleanup(); process.exit(0); });
128
+ }
129
+ // --- commands ---
130
+ function handleCommand(cmd, rl) {
131
+ const parts = cmd.split(/\s+/);
132
+ switch (parts[0]) {
133
+ case "/help":
134
+ printHelp();
135
+ break;
136
+ case "/overview":
137
+ printOverview();
138
+ break;
139
+ case "/tasks":
140
+ printOverview();
141
+ break; // alias
142
+ case "/status":
143
+ printStatus();
144
+ break;
145
+ case "/dashboard":
146
+ appendToInput("__CMD_DASHBOARD__");
147
+ console.log(`${DIM}dashboard requested${RESET}`);
148
+ break;
149
+ case "/verbose":
126
150
  appendToInput("__CMD_VERBOSE__");
127
151
  console.log(`${DIM}verbose toggled${RESET}`);
128
- rl.prompt();
129
- return;
130
- }
131
- if (trimmed === "/pause") {
152
+ break;
153
+ case "/pause":
132
154
  appendToInput("__CMD_PAUSE__");
133
155
  console.log(`${DIM}pause requested${RESET}`);
134
- rl.prompt();
135
- return;
136
- }
137
- if (trimmed === "/resume") {
156
+ break;
157
+ case "/resume":
138
158
  appendToInput("__CMD_RESUME__");
139
159
  console.log(`${DIM}resume requested${RESET}`);
140
- rl.prompt();
141
- return;
142
- }
143
- if (trimmed === "/interrupt") {
144
- handleInterrupt();
145
- rl.prompt();
146
- return;
147
- }
148
- if (trimmed === "/clear") {
160
+ break;
161
+ case "/interrupt":
162
+ handleInterrupt(rl);
163
+ break;
164
+ case "/clear":
149
165
  process.stdout.write("\x1b[2J\x1b[H");
150
- rl.prompt();
151
- return;
152
- }
153
- // regular message -- queue for reasoner
154
- appendToInput(trimmed);
155
- console.log(`${DIM}queued for next reasoning cycle${RESET}`);
156
- rl.prompt();
157
- });
158
- rl.on("close", () => {
159
- clearInterval(statusInterval);
160
- cleanup();
161
- process.exit(0);
162
- });
163
- process.on("SIGINT", () => {
164
- clearInterval(statusInterval);
165
- cleanup();
166
- process.exit(0);
167
- });
168
- process.on("SIGTERM", () => {
169
- clearInterval(statusInterval);
170
- cleanup();
171
- process.exit(0);
172
- });
166
+ break;
167
+ default:
168
+ console.log(`${DIM}unknown command: ${parts[0]} (try /help)${RESET}`);
169
+ }
173
170
  }
174
- function handleInterrupt() {
171
+ // --- interrupt ---
172
+ function handleInterrupt(rl) {
175
173
  const state = readState();
176
174
  if (state?.phase === "reasoning") {
177
175
  requestInterrupt();
178
- console.log(`${RED}${BOLD}interrupting reasoner...${RESET}`);
179
- console.log(`${DIM}type your message -- it will be sent before the next reasoning cycle${RESET}`);
176
+ console.log(`\n${RED}${BOLD}>>> interrupting reasoner <<<${RESET}`);
177
+ console.log(`${YELLOW}type your message now -- it will be sent before the next cycle resumes${RESET}`);
178
+ rl.prompt(true);
179
+ }
180
+ else if (!isDaemonRunning()) {
181
+ console.log(`${YELLOW}daemon is not running -- nothing to interrupt${RESET}`);
182
+ console.log(`${DIM}start it with: aoaoe${RESET}`);
180
183
  }
181
184
  else {
182
- console.log(`${DIM}no active reasoning to interrupt (phase: ${state?.phase ?? "unknown"})${RESET}`);
185
+ console.log(`${DIM}reasoner not active right now (phase: ${state?.phase ?? "sleeping"})${RESET}`);
186
+ const eta = getCountdown();
187
+ if (eta !== null)
188
+ console.log(`${DIM}next cycle in ~${eta}s -- type your message, it will be included${RESET}`);
183
189
  }
184
190
  }
185
- // render a status bar showing countdown, phase, and session count
186
- function renderStatusBar(rl) {
191
+ // --- /overview: capture all panes directly via tmux + aoe, parse tasks ---
192
+ function printOverview() {
193
+ console.log(`\n${BOLD}${CYAN}=== aoaoe overview ===${RESET}`);
194
+ // daemon status
187
195
  const state = readState();
188
- if (!state)
196
+ const daemonUp = isDaemonRunning();
197
+ if (daemonUp) {
198
+ const eta = getCountdown();
199
+ const phaseStr = state?.phase === "reasoning" ? `${YELLOW}reasoning${RESET}`
200
+ : state?.phase === "executing" ? `${GREEN}executing${RESET}`
201
+ : state?.phase === "interrupted" ? `${RED}INTERRUPTED${RESET}`
202
+ : state?.phase ?? "sleeping";
203
+ console.log(` daemon: ${GREEN}running${RESET} | phase: ${phaseStr} | poll #${state?.pollCount ?? "?"}${eta !== null ? ` | next cycle: ${eta}s` : ""}`);
204
+ }
205
+ else {
206
+ console.log(` daemon: ${RED}not running${RESET} ${DIM}(start with: aoaoe)${RESET}`);
207
+ }
208
+ console.log();
209
+ // list all AoE sessions by calling aoe CLI directly
210
+ const sessions = listAoeSessions();
211
+ if (sessions.length === 0) {
212
+ console.log(` ${DIM}no AoE sessions found${RESET}`);
213
+ console.log();
214
+ return;
215
+ }
216
+ for (const s of sessions) {
217
+ // capture tmux pane output
218
+ const output = captureTmuxPane(s.tmuxName);
219
+ if (!output) {
220
+ const statusIcon = `${RED}x${RESET}`;
221
+ console.log(`${statusIcon} ${BOLD}${s.title}${RESET} ${DIM}[${s.tool}]${RESET} ${DIM}(tmux pane not found)${RESET}`);
222
+ console.log();
223
+ continue;
224
+ }
225
+ // parse tasks and metadata
226
+ const tasks = parseTasks(output);
227
+ const model = parseModel(output);
228
+ const context = parseContext(output);
229
+ const cost = parseCost(output);
230
+ const lastLine = parseLastLine(output);
231
+ // status icon
232
+ const statusIcon = s.status === "working" ? `${GREEN}~${RESET}`
233
+ : s.status === "idle" ? `${DIM}.${RESET}`
234
+ : s.status === "error" ? `${RED}!${RESET}`
235
+ : `${YELLOW}?${RESET}`;
236
+ // header
237
+ const meta = [];
238
+ if (model)
239
+ meta.push(model);
240
+ if (context)
241
+ meta.push(context);
242
+ if (cost)
243
+ meta.push(cost);
244
+ const metaStr = meta.length > 0 ? `${DIM}(${meta.join(" | ")})${RESET}` : "";
245
+ console.log(`${statusIcon} ${BOLD}${s.title}${RESET} ${DIM}[${s.tool}]${RESET} ${metaStr}`);
246
+ // tasks
247
+ if (tasks.length > 0) {
248
+ for (const t of tasks) {
249
+ const icon = t.status === "done" ? `${GREEN}✓${RESET}`
250
+ : t.status === "in_progress" ? `${YELLOW}•${RESET}`
251
+ : t.status === "failed" ? `${RED}✗${RESET}`
252
+ : `${DIM}○${RESET}`;
253
+ console.log(` [${icon}] ${t.text}`);
254
+ }
255
+ }
256
+ else {
257
+ console.log(` ${DIM}(no task list detected)${RESET}`);
258
+ }
259
+ // last activity
260
+ console.log(` ${DIM}> ${lastLine}${RESET}`);
261
+ console.log();
262
+ }
263
+ }
264
+ // --- /status: quick daemon status ---
265
+ function printStatus() {
266
+ const state = readState();
267
+ if (!isDaemonRunning()) {
268
+ console.log(`${YELLOW}daemon is not running${RESET}`);
269
+ console.log(`${DIM}start it with: aoaoe${RESET}`);
189
270
  return;
271
+ }
272
+ const eta = getCountdown();
273
+ console.log(`${BOLD}daemon status:${RESET}`);
274
+ console.log(` phase: ${state?.phase ?? "?"}`);
275
+ console.log(` poll #${state?.pollCount ?? "?"}`);
276
+ console.log(` sessions: ${state?.sessionCount ?? "?"}`);
277
+ console.log(` interval: ${state?.pollIntervalMs ?? "?"}ms`);
278
+ if (eta !== null)
279
+ console.log(` next cycle: ${eta}s`);
280
+ if (state?.paused)
281
+ console.log(` ${YELLOW}PAUSED${RESET}`);
282
+ }
283
+ function listAoeSessions() {
284
+ try {
285
+ const out = execFileSync("aoe", ["list", "--json"], { timeout: 10_000, encoding: "utf-8" });
286
+ const raw = JSON.parse(out);
287
+ // get status for each session
288
+ return raw.map((s) => {
289
+ const id = s.id ?? "";
290
+ const title = s.title ?? "";
291
+ let status = "unknown";
292
+ try {
293
+ const showOut = execFileSync("aoe", ["session", "show", id, "--json"], { timeout: 5_000, encoding: "utf-8" });
294
+ status = JSON.parse(showOut).status ?? "unknown";
295
+ }
296
+ catch { }
297
+ // replicate AoE tmux naming
298
+ const safeTitle = title.replace(/[^a-zA-Z0-9_-]/g, "_").slice(0, 20);
299
+ const tmuxName = `aoe_${safeTitle}_${id.slice(0, 8)}`;
300
+ return { id, title, tool: s.tool ?? "", status, tmuxName };
301
+ }).filter((s) => s.title !== "aoaoe"); // exclude ourselves
302
+ }
303
+ catch {
304
+ return [];
305
+ }
306
+ }
307
+ function captureTmuxPane(tmuxName) {
308
+ try {
309
+ return execFileSync("tmux", ["capture-pane", "-t", tmuxName, "-p", "-S", "-100"], {
310
+ timeout: 5_000, encoding: "utf-8",
311
+ });
312
+ }
313
+ catch {
314
+ return null;
315
+ }
316
+ }
317
+ // --- daemon connection check ---
318
+ function isDaemonRunning() {
319
+ const state = readState();
320
+ if (!state)
321
+ return false;
322
+ // state file exists -- check if it's recent (within 2x poll interval or 30s max)
323
+ const staleMs = Math.max(state.pollIntervalMs * 2, 30_000);
324
+ const age = Date.now() - state.phaseStartedAt;
325
+ return age < staleMs;
326
+ }
327
+ function getCountdown() {
328
+ const state = readState();
329
+ if (!state || !isDaemonRunning())
330
+ return null;
331
+ if (state.phase === "sleeping" && state.nextTickAt) {
332
+ const remaining = Math.max(0, Math.ceil((state.nextTickAt - Date.now()) / 1000));
333
+ return remaining;
334
+ }
335
+ return null;
336
+ }
337
+ function checkDaemon() {
338
+ if (isDaemonRunning()) {
339
+ const state = readState();
340
+ const eta = getCountdown();
341
+ console.log(`${GREEN}daemon connected${RESET} ${DIM}(${state.sessionCount} sessions, poll #${state.pollCount})${RESET}`);
342
+ if (eta !== null)
343
+ console.log(`${DIM}next reasoning cycle in ${eta}s${RESET}`);
344
+ }
345
+ else {
346
+ console.log(`${YELLOW}daemon not detected${RESET} ${DIM}-- start it with: aoaoe${RESET}`);
347
+ console.log(`${DIM}/overview still works (captures panes directly)${RESET}`);
348
+ }
349
+ }
350
+ // --- status line (printed periodically, only when changed) ---
351
+ function buildStatusLine(forTitle = false) {
352
+ const state = readState();
353
+ if (!state || !isDaemonRunning())
354
+ return forTitle ? "aoaoe (daemon offline)" : null;
190
355
  const parts = [];
191
- // phase indicator
192
- const phaseIcons = {
193
- sleeping: "zzz",
194
- polling: "...",
195
- reasoning: "thinking",
196
- executing: "running",
197
- interrupted: "INTERRUPTED",
198
- };
199
- const phaseStr = phaseIcons[state.phase] ?? state.phase;
200
- // countdown to next tick
201
356
  if (state.phase === "sleeping" && state.nextTickAt) {
202
357
  const remaining = Math.max(0, Math.ceil((state.nextTickAt - Date.now()) / 1000));
203
- parts.push(`next cycle: ${remaining}s`);
358
+ parts.push(`next: ${remaining}s`);
204
359
  }
205
360
  else if (state.phase === "reasoning") {
206
361
  const elapsed = Math.floor((Date.now() - state.phaseStartedAt) / 1000);
207
362
  parts.push(`reasoning: ${elapsed}s`);
208
363
  }
209
364
  else {
210
- parts.push(phaseStr);
365
+ parts.push(state.phase);
211
366
  }
212
- // session count
213
367
  parts.push(`${state.sessionCount} sessions`);
368
+ parts.push(`poll #${state.pollCount}`);
214
369
  if (state.paused)
215
370
  parts.push("PAUSED");
216
- parts.push(`poll #${state.pollCount}`);
217
- const statusLine = parts.join(" | ");
218
- // write status to terminal title (visible in tmux pane title)
219
- process.stdout.write(`\x1b]0;aoaoe: ${statusLine}\x07`);
220
- // also write a status line above the prompt using save/restore cursor
221
- // this overwrites the line above the current prompt
222
- process.stderr.write(`${SAVE_CURSOR}\x1b[s` + // save position
223
- `\x1b[1A` + // move up one line
224
- `\r${CLEAR_LINE}` + // clear that line
225
- `${DIM}[${statusLine}]${RESET}` +
226
- `\x1b[u${RESTORE_CURSOR}` // restore position
227
- );
228
- }
229
- function printTasks() {
230
- const state = readState();
231
- if (!state || state.sessions.length === 0) {
232
- console.log(`${DIM}no active sessions${RESET}`);
233
- return;
234
- }
235
- console.log(`\n${BOLD}session tasks:${RESET}`);
236
- for (const s of state.sessions) {
237
- const statusIcon = s.status === "working" ? "~" : s.status === "idle" ? "." : s.status === "error" ? "!" : "?";
238
- const task = s.currentTask ?? `${DIM}(no task assigned)${RESET}`;
239
- const activity = s.lastActivity
240
- ? `${DIM}last: ${s.lastActivity.slice(0, 60)}${RESET}`
241
- : "";
242
- console.log(` ${statusIcon} ${BOLD}${s.title}${RESET} [${s.tool}] ${s.id.slice(0, 8)}`);
243
- console.log(` task: ${task}`);
244
- if (activity)
245
- console.log(` ${activity}`);
246
- }
247
- console.log();
371
+ return parts.join(" | ");
248
372
  }
373
+ // --- helpers ---
249
374
  function appendToInput(msg) {
250
375
  try {
251
376
  appendFileSync(INPUT_FILE, msg + "\n");
252
377
  }
253
- catch {
254
- // ignore write errors
255
- }
378
+ catch { }
256
379
  }
257
380
  function replayLog() {
258
381
  if (!existsSync(CONVO_LOG))
@@ -264,11 +387,8 @@ function replayLog() {
264
387
  console.log(`${DIM}--- end of history ---${RESET}\n`);
265
388
  }
266
389
  }
267
- catch {
268
- // ignore read errors
269
- }
390
+ catch { }
270
391
  }
271
- // colorize conversation log lines based on their tag
272
392
  function colorize(text) {
273
393
  return text.replace(/^(.*?\[)(observation|you|reasoner|action|\+ action|! action|system)(\].*$)/gm, (_, pre, tag, post) => {
274
394
  switch (tag) {
@@ -285,18 +405,19 @@ function colorize(text) {
285
405
  function printHelp() {
286
406
  console.log(`
287
407
  ${BOLD}commands:${RESET}
288
- /help show this help
289
- /status request daemon status
290
- /dashboard request dashboard output
291
- /tasks show per-session task assignments
292
- /verbose toggle verbose logging
293
- /pause pause the daemon
294
- /resume resume the daemon
295
- /interrupt interrupt the current reasoner call
296
- /clear clear the screen
408
+ /overview show all AoE sessions with tasks and status (works without daemon)
409
+ /tasks alias for /overview
410
+ /status daemon connection status + countdown
411
+ /dashboard request full dashboard from daemon
412
+ /interrupt interrupt the current reasoner call
413
+ /verbose toggle verbose logging
414
+ /pause pause the daemon
415
+ /resume resume the daemon
416
+ /clear clear the screen
417
+ /help show this help
297
418
 
298
419
  ${BOLD}shortcuts:${RESET}
299
- ESC ESC interrupt the current reasoner (same as /interrupt)
420
+ ESC ESC interrupt the current reasoner (same as /interrupt)
300
421
 
301
422
  ${BOLD}anything else${RESET} is sent to the reasoner as an operator message
302
423
  `);
@@ -304,14 +425,11 @@ ${BOLD}anything else${RESET} is sent to the reasoner as an operator message
304
425
  function cleanup() {
305
426
  unwatchFile(CONVO_LOG);
306
427
  try {
307
- // only remove PID file if it's still ours
308
428
  if (existsSync(PID_FILE) && readFileSync(PID_FILE, "utf-8").trim() === String(process.pid)) {
309
429
  unlinkSync(PID_FILE);
310
430
  }
311
431
  }
312
- catch {
313
- // ignore
314
- }
432
+ catch { }
315
433
  }
316
434
  main();
317
435
  //# sourceMappingURL=chat.js.map
package/dist/chat.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-state.d.ts","sourceRoot":"","sources":["../src/daemon-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAsB5F,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAM,GACnE,IAAI,CAaN;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAiBzE;AAED,wBAAgB,SAAS,IAAI,WAAW,GAAG,IAAI,CAO9C;AAGD,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAMxC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAMrC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAKnC"}
1
+ {"version":3,"file":"daemon-state.d.ts","sourceRoot":"","sources":["../src/daemon-state.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAuB5F,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAGpE;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,WAAW,EAClB,OAAO,GAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAM,GACnE,IAAI,CAaN;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,WAAW,GAAG,kBAAkB,EAAE,CAqBzE;AAED,wBAAgB,SAAS,IAAI,WAAW,GAAG,IAAI,CAO9C;AAGD,wBAAgB,gBAAgB,IAAI,IAAI,CAOvC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAMxC;AAED,wBAAgB,cAAc,IAAI,IAAI,CAMrC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAKnC"}
@@ -4,6 +4,7 @@
4
4
  import { writeFileSync, readFileSync, existsSync, unlinkSync, mkdirSync } from "node:fs";
5
5
  import { join } from "node:path";
6
6
  import { homedir } from "node:os";
7
+ import { parseTasks, formatTaskList } from "./task-parser.js";
7
8
  const AOAOE_DIR = join(homedir(), ".aoaoe");
8
9
  const STATE_FILE = join(AOAOE_DIR, "daemon-state.json");
9
10
  const INTERRUPT_FILE = join(AOAOE_DIR, "interrupt");
@@ -40,13 +41,16 @@ export function writeState(phase, updates = {}) {
40
41
  // best-effort, don't crash the daemon
41
42
  }
42
43
  }
43
- // build session state list from an observation, merging in tracked tasks
44
+ // build session state list from an observation, merging in tracked tasks + parsed TODOs
44
45
  export function buildSessionStates(obs) {
45
46
  return obs.sessions.map((snap) => {
46
47
  const s = snap.session;
47
48
  // extract last non-empty line from output as "last activity"
48
49
  const lines = snap.output.split("\n").filter((l) => l.trim());
49
50
  const lastActivity = lines.length > 0 ? lines[lines.length - 1].trim() : undefined;
51
+ // parse OpenCode-style TODO items from pane output
52
+ const todos = parseTasks(snap.output);
53
+ const todoSummary = todos.length > 0 ? formatTaskList(todos) : undefined;
50
54
  return {
51
55
  id: s.id,
52
56
  title: s.title,
@@ -56,6 +60,7 @@ export function buildSessionStates(obs) {
56
60
  lastActivity: lastActivity && lastActivity.length > 100
57
61
  ? lastActivity.slice(0, 97) + "..."
58
62
  : lastActivity,
63
+ todoSummary,
59
64
  };
60
65
  });
61
66
  }
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-state.js","sourceRoot":"","sources":["../src/daemon-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-state.js","sourceRoot":"","sources":["../src/daemon-state.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2DAA2D;AAC3D,gFAAgF;AAChF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9D,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;AACxD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAEpD,IAAI,YAAY,GAAgB;IAC9B,aAAa,EAAE,CAAC;IAChB,UAAU,EAAE,CAAC;IACb,cAAc,EAAE,MAAM;IACtB,KAAK,EAAE,UAAU;IACjB,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;IAC1B,SAAS,EAAE,CAAC;IACZ,MAAM,EAAE,KAAK;IACb,YAAY,EAAE,CAAC;IACf,WAAW,EAAE,CAAC;IACd,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF,+DAA+D;AAC/D,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE/C,MAAM,UAAU,cAAc,CAAC,SAAiB,EAAE,IAAY;IAC5D,mCAAmC;IACnC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,KAAkB,EAClB,UAAkE,EAAE;IAEpE,YAAY,GAAG;QACb,GAAG,YAAY;QACf,GAAG,OAAO;QACV,KAAK;QACL,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE;KAC3B,CAAC;IACF,IAAI,CAAC;QACH,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,sCAAsC;IACxC,CAAC;AACH,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,kBAAkB,CAAC,GAAgB;IACjD,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvB,6DAA6D;QAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACnF,mDAAmD;QACnD,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,OAAO;YACL,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACnC,YAAY,EAAE,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,GAAG;gBACrD,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;gBACnC,CAAC,CAAC,YAAY;YAChB,WAAW;SACZ,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAgB,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC;QACH,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,cAAc,CAAC;YAAE,UAAU,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,cAAc;IAChB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC;YAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,cAAc,EAAE,CAAC;AACnB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface ParsedTask {
2
+ text: string;
3
+ status: "done" | "in_progress" | "pending" | "failed";
4
+ }
5
+ export interface PaneOverview {
6
+ sessionId: string;
7
+ title: string;
8
+ tool: string;
9
+ status: string;
10
+ tasks: ParsedTask[];
11
+ lastLine: string;
12
+ model?: string;
13
+ context?: string;
14
+ cost?: string;
15
+ }
16
+ export declare function parseTasks(output: string): ParsedTask[];
17
+ export declare function parseModel(output: string): string | undefined;
18
+ export declare function parseContext(output: string): string | undefined;
19
+ export declare function parseCost(output: string): string | undefined;
20
+ export declare function parseLastLine(output: string): string;
21
+ export declare function formatTaskList(tasks: ParsedTask[]): string;
22
+ //# sourceMappingURL=task-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-parser.d.ts","sourceRoot":"","sources":["../src/task-parser.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvD;AAED,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,CAkCvD;AAGD,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI7D;AAGD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI/D;AAGD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI5D;AAGD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAgBpD;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAS1D"}
@@ -0,0 +1,103 @@
1
+ // task-parser.ts -- extract OpenCode/Claude TODO patterns from tmux pane output
2
+ // OpenCode renders todos in the right sidebar like:
3
+ // [✓] completed task text
4
+ // [•] in progress task text
5
+ // [ ] pending task text
6
+ // [✗] failed/cancelled task
7
+ // Also handles plain markdown-style checkboxes:
8
+ // - [x] done
9
+ // - [ ] not done
10
+ // parse TODO items from tmux captured output
11
+ export function parseTasks(output) {
12
+ const tasks = [];
13
+ const lines = output.split("\n");
14
+ for (const line of lines) {
15
+ const trimmed = line.trim();
16
+ // OpenCode-style: [✓] text, [•] text, [ ] text, [✗] text
17
+ const ocMatch = trimmed.match(/^\[([✓✗•\s])\]\s+(.+)$/);
18
+ if (ocMatch) {
19
+ const [, icon, text] = ocMatch;
20
+ let status;
21
+ if (icon === "✓")
22
+ status = "done";
23
+ else if (icon === "•")
24
+ status = "in_progress";
25
+ else if (icon === "✗")
26
+ status = "failed";
27
+ else
28
+ status = "pending";
29
+ tasks.push({ text: text.trim(), status });
30
+ continue;
31
+ }
32
+ // markdown checkbox: - [x] text, - [ ] text, - [~] text
33
+ const mdMatch = trimmed.match(/^[-*]\s+\[([xX~\s])\]\s+(.+)$/);
34
+ if (mdMatch) {
35
+ const [, icon, text] = mdMatch;
36
+ let status;
37
+ if (icon === "x" || icon === "X")
38
+ status = "done";
39
+ else if (icon === "~")
40
+ status = "in_progress";
41
+ else
42
+ status = "pending";
43
+ tasks.push({ text: text.trim(), status });
44
+ continue;
45
+ }
46
+ }
47
+ return tasks;
48
+ }
49
+ // extract model name from OpenCode pane output
50
+ export function parseModel(output) {
51
+ // matches lines like: " Build Claude Opus 4.6 Anthropic: Cloudflare AI Gateway · max"
52
+ const match = output.match(/(?:Build|Plan)\s+(Claude\s+\S+\s+[\d.]+|GPT-[\w.-]+|Gemini\s+[\w.-]+)/i);
53
+ return match?.[1];
54
+ }
55
+ // extract context info from OpenCode pane output
56
+ export function parseContext(output) {
57
+ // matches "137,918 tokens" or "111,881 tokens"
58
+ const match = output.match(/([\d,]+)\s+tokens/);
59
+ return match?.[1] ? `${match[1]} tokens` : undefined;
60
+ }
61
+ // extract cost from OpenCode pane output
62
+ export function parseCost(output) {
63
+ // matches "$3.42 spent"
64
+ const match = output.match(/\$([\d.]+)\s+spent/);
65
+ return match ? `$${match[1]}` : undefined;
66
+ }
67
+ // get last meaningful line (non-empty, not just UI chrome)
68
+ export function parseLastLine(output) {
69
+ const lines = output.split("\n");
70
+ // skip from bottom: empty lines, tmux chrome, opencode status bar
71
+ for (let i = lines.length - 1; i >= 0; i--) {
72
+ const trimmed = lines[i].trim();
73
+ if (!trimmed)
74
+ continue;
75
+ // skip opencode UI chrome lines
76
+ if (trimmed.startsWith("⬝") || trimmed.startsWith("╹") || trimmed.startsWith("▀"))
77
+ continue;
78
+ if (trimmed.includes("esc interrupt") || trimmed.includes("ctrl+p commands"))
79
+ continue;
80
+ if (trimmed.includes("OpenCode "))
81
+ continue;
82
+ if (trimmed.match(/^\s*[┃┃╹╻│]\s*$/))
83
+ continue;
84
+ // skip blank-looking lines with only box-drawing chars
85
+ if (trimmed.match(/^[┃│╹╻▀▄█\s]+$/))
86
+ continue;
87
+ return trimmed.length > 100 ? trimmed.slice(0, 97) + "..." : trimmed;
88
+ }
89
+ return "(no output)";
90
+ }
91
+ // format a task list for display
92
+ export function formatTaskList(tasks) {
93
+ if (tasks.length === 0)
94
+ return " (no tasks detected)";
95
+ return tasks.map((t) => {
96
+ const icon = t.status === "done" ? "✓"
97
+ : t.status === "in_progress" ? "•"
98
+ : t.status === "failed" ? "✗"
99
+ : "○";
100
+ return ` [${icon}] ${t.text}`;
101
+ }).join("\n");
102
+ }
103
+ //# sourceMappingURL=task-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-parser.js","sourceRoot":"","sources":["../src/task-parser.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -91,6 +91,7 @@ export interface DaemonSessionState {
91
91
  status: string;
92
92
  currentTask?: string;
93
93
  lastActivity?: string;
94
+ todoSummary?: string;
94
95
  }
95
96
  export interface DaemonState {
96
97
  tickStartedAt: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aoaoe",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Autonomous supervisor for agent-of-empires sessions using OpenCode or Claude Code",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",