omniharness-cli 0.1.37 → 0.1.39

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.
@@ -30,14 +30,23 @@ export type HarnessEvent = {
30
30
  type: 'tool_result';
31
31
  tool: string;
32
32
  summary: string;
33
+ detail?: string;
33
34
  } | {
34
35
  type: 'approval_requested';
35
36
  tool: string;
36
37
  input: Record<string, unknown>;
38
+ } | {
39
+ type: 'route';
40
+ provider?: string;
41
+ fallback: boolean;
42
+ attempts: number;
43
+ reason?: string;
37
44
  } | {
38
45
  type: 'text';
39
46
  content: string;
40
47
  model?: string;
48
+ provider?: string;
49
+ fallback?: boolean;
41
50
  compression?: CompressionInfo;
42
51
  } | {
43
52
  type: 'preview';
@@ -47,13 +56,31 @@ export type HarnessEvent = {
47
56
  name: string;
48
57
  kind: AttachmentInput['kind'];
49
58
  size: number;
59
+ } | {
60
+ type: 'agent';
61
+ id: string;
62
+ label: string;
63
+ status: 'spawned' | 'working' | 'done' | 'error';
64
+ note?: string;
50
65
  } | {
51
66
  type: 'todos';
52
67
  todos: readonly TodoItem[];
53
68
  };
69
+ /** A trust scope the user can pick to skip future prompts for similar calls. */
70
+ export interface ApprovalScope {
71
+ id: string;
72
+ label: string;
73
+ }
54
74
  export interface ApprovalAction {
55
75
  tool: string;
56
76
  input: Record<string, unknown>;
77
+ /** Most specific first (exact command → prefix → whole tool). */
78
+ scopes: readonly ApprovalScope[];
79
+ }
80
+ export interface ApprovalResolution {
81
+ approved: boolean;
82
+ /** Scope id to remember so matching calls auto-approve for the rest of the session. */
83
+ trust?: string;
57
84
  }
58
85
  export interface MastraEngine {
59
86
  readonly client: OmniRouteClient;
@@ -64,11 +91,19 @@ export interface MastraEngine {
64
91
  subscribe(listener: (event: HarnessEvent) => void): () => void;
65
92
  selectModel(model: string): Promise<void>;
66
93
  attach(paths: readonly string[]): Promise<readonly AttachmentInput[]>;
67
- setApprovalHandler(handler: (action: ApprovalAction) => Promise<boolean>): void;
94
+ setApprovalHandler(handler: (action: ApprovalAction) => Promise<ApprovalResolution>): void;
68
95
  run(prompt: string, signal?: AbortSignal): Promise<{
69
96
  content: string;
70
97
  model: string;
71
98
  }>;
99
+ /**
100
+ * CRAZY mode only: fan out up to `maxAgents` parallel workers that each claim
101
+ * a pending todo, run an auto-approved tool loop, and stream `agent` events.
102
+ * Returns when the todo queue is drained or the run is cancelled.
103
+ */
104
+ runSwarm(options?: {
105
+ maxAgents?: number;
106
+ }): Promise<void>;
72
107
  /** Abort the in-flight run; the turn ends with a 'cancelled' status. */
73
108
  cancel(): void;
74
109
  /** Drop transcript, task queue and persisted session; starts a fresh chat. */
@@ -44,6 +44,8 @@ export async function createMastraEngine(config) {
44
44
  let preview = null;
45
45
  let previewChild = null;
46
46
  let approvalHandler = null;
47
+ // Session-scoped trust: scope ids the user chose to always allow.
48
+ const trustRules = new Set();
47
49
  let pendingAttachments = [];
48
50
  const semanticCache = await loadSemanticIndex(config.workspaceRoot);
49
51
  let activeRunController = null;
@@ -266,6 +268,21 @@ export async function createMastraEngine(config) {
266
268
  previewChild.kill();
267
269
  previewChild = null;
268
270
  }
271
+ /** Trust scopes offered for a call, most specific first. */
272
+ function scopesFor(tool, input) {
273
+ if (tool === 'run_command') {
274
+ const command = typeof input.command === 'string' ? input.command.trim() : '';
275
+ const base = command.split(/\s+/)[0] ?? '';
276
+ const scopes = [];
277
+ if (command)
278
+ scopes.push({ id: `cmd:exact:${command}`, label: `always run exactly: ${command.slice(0, 48)}` });
279
+ if (base)
280
+ scopes.push({ id: `cmd:base:${base}`, label: `always run: ${base} …` });
281
+ scopes.push({ id: 'tool:run_command', label: 'always run any command' });
282
+ return scopes;
283
+ }
284
+ return [{ id: `tool:${tool}`, label: `always allow: ${tool}` }];
285
+ }
269
286
  async function runTool(call, signal) {
270
287
  const registered = systemTools[call.function.name];
271
288
  if (!registered)
@@ -278,10 +295,16 @@ export async function createMastraEngine(config) {
278
295
  parsed = {};
279
296
  }
280
297
  if (state.mode !== 'crazy' && approvalHandler && registered.highRisk) {
281
- emit({ type: 'approval_requested', tool: call.function.name, input: parsed });
282
- const approved = await approvalHandler({ tool: call.function.name, input: parsed });
283
- if (!approved)
284
- return 'user denied this tool call';
298
+ const scopes = scopesFor(call.function.name, parsed);
299
+ const trusted = scopes.some((scope) => trustRules.has(scope.id));
300
+ if (!trusted) {
301
+ emit({ type: 'approval_requested', tool: call.function.name, input: parsed });
302
+ const decision = await approvalHandler({ tool: call.function.name, input: parsed, scopes });
303
+ if (decision.trust)
304
+ trustRules.add(decision.trust);
305
+ if (!decision.approved)
306
+ return 'user denied this tool call';
307
+ }
285
308
  }
286
309
  try {
287
310
  return await registered.execute(parsed, signal);
@@ -377,6 +400,17 @@ export async function createMastraEngine(config) {
377
400
  let reasoning = '';
378
401
  let toolCalls = [];
379
402
  let compression;
403
+ // Surface OmniRoute's provider choice as a transcript event whenever it
404
+ // changes across a turn — a normal cross-provider route or a failover.
405
+ let lastRouteKey = '';
406
+ const emitRoute = () => {
407
+ const fb = client.snapshotMetrics().fallback;
408
+ const key = `${fb.activeProvider ?? ''}|${fb.attempts}`;
409
+ if (key === lastRouteKey || (fb.activeProvider === undefined && fb.attempts === 0))
410
+ return;
411
+ lastRouteKey = key;
412
+ emit({ type: 'route', provider: fb.activeProvider, fallback: fb.attempts > 0, attempts: fb.attempts, reason: fb.lastFailure });
413
+ };
380
414
  try {
381
415
  return await executeRound();
382
416
  }
@@ -420,6 +454,7 @@ export async function createMastraEngine(config) {
420
454
  model = result.model;
421
455
  if (result.compression)
422
456
  compression = result.compression;
457
+ emitRoute();
423
458
  };
424
459
  await finishRound();
425
460
  while (toolCalls.length > 0) {
@@ -447,7 +482,7 @@ export async function createMastraEngine(config) {
447
482
  emit({ type: 'tool_start', tool: call.function.name, input: undefined });
448
483
  const output = await runTool(call, runSignal);
449
484
  const summary = output.split('\n')[0] ?? '';
450
- emit({ type: 'tool_result', tool: call.function.name, summary });
485
+ emit({ type: 'tool_result', tool: call.function.name, summary, detail: output.slice(0, 2000) });
451
486
  results.push({ call, output });
452
487
  wire.push({ role: 'tool', tool_call_id: call.id, content: truncate(output) });
453
488
  executedAny = true;
@@ -482,6 +517,7 @@ export async function createMastraEngine(config) {
482
517
  model = next.model;
483
518
  if (next.compression)
484
519
  compression = next.compression;
520
+ emitRoute();
485
521
  }
486
522
  state.taskStatus = 'completed';
487
523
  state.metrics = client.snapshotMetrics();
@@ -502,7 +538,8 @@ export async function createMastraEngine(config) {
502
538
  const tool = result.call.function.name;
503
539
  state.messages = [...state.messages, { role: 'tool', content: result.output.slice(0, 500), toolName: tool, createdAt: new Date().toISOString() }];
504
540
  }
505
- emit({ type: 'text', content: answer, model, compression });
541
+ const routeFb = client.snapshotMetrics().fallback;
542
+ emit({ type: 'text', content: answer, model, provider: routeFb.activeProvider, fallback: routeFb.attempts > 0, compression });
506
543
  state.messages = [...state.messages, { role: 'assistant', content: answer, model, createdAt: new Date().toISOString() }];
507
544
  try {
508
545
  await saveSession(state.workspace.root, {
@@ -513,7 +550,108 @@ export async function createMastraEngine(config) {
513
550
  return { content: answer, model };
514
551
  }
515
552
  },
553
+ async runSwarm(options) {
554
+ if (state.mode !== 'crazy')
555
+ return;
556
+ const maxAgents = Math.max(1, Math.min(4, options?.maxAgents ?? 3));
557
+ const controller = new AbortController();
558
+ activeRunController = controller;
559
+ const sig = controller.signal;
560
+ // Atomic pending-todo claim shared by all workers.
561
+ let cursor = 0;
562
+ const claim = () => {
563
+ const queue = state.taskQueue;
564
+ while (cursor < queue.length) {
565
+ const item = queue[cursor];
566
+ cursor += 1;
567
+ if (item && item.status === 'pending')
568
+ return item;
569
+ }
570
+ return null;
571
+ };
572
+ const systemFrame = SYSTEM_FRAME(client.endpoint, state.workspace.root, 'crazy', skills.map((skill) => skill.name), memory);
573
+ const worker = async (id) => {
574
+ emit({ type: 'agent', id, label: id, status: 'spawned' });
575
+ for (;;) {
576
+ if (sig.aborted)
577
+ return;
578
+ const todo = claim();
579
+ if (!todo) {
580
+ emit({ type: 'agent', id, label: id, status: 'done' });
581
+ return;
582
+ }
583
+ applyTodo({ action: 'start', id: todo.id });
584
+ emit({ type: 'agent', id, label: todo.title.slice(0, 48), status: 'working', note: todo.title.slice(0, 80) });
585
+ const wire = [
586
+ { role: 'system', content: `${systemFrame}\n\nYou are worker agent ${id} in a parallel swarm. Complete ONLY this task and then stop, concisely: ${todo.title}` },
587
+ { role: 'user', content: todo.title },
588
+ ];
589
+ try {
590
+ await converseLoop(wire, sig);
591
+ applyTodo({ action: 'complete', id: todo.id });
592
+ emit({ type: 'agent', id, label: todo.title.slice(0, 48), status: 'working', note: `done: ${todo.title.slice(0, 60)}` });
593
+ }
594
+ catch (reason) {
595
+ emit({ type: 'agent', id, label: todo.title.slice(0, 48), status: 'error', note: reason instanceof Error ? reason.message : String(reason) });
596
+ }
597
+ }
598
+ };
599
+ const ids = Array.from({ length: maxAgents }, (_, index) => `A${index + 1}`);
600
+ await Promise.all(ids.map(worker));
601
+ state.taskStatus = 'completed';
602
+ state.metrics = client.snapshotMetrics();
603
+ try {
604
+ await saveSession(state.workspace.root, {
605
+ messages: [...state.messages], taskQueue: [...state.taskQueue], savedAt: new Date().toISOString(),
606
+ });
607
+ }
608
+ catch { /* session persistence is best-effort */ }
609
+ },
516
610
  };
611
+ /** Compact tool loop for a swarm worker: stream, run tools (auto-approved in crazy mode), repeat. */
612
+ async function converseLoop(wire, sig, maxTurns = 40) {
613
+ let turns = 0;
614
+ for (;;) {
615
+ if (sig.aborted)
616
+ return;
617
+ let content = '';
618
+ let toolCalls = [];
619
+ const result = await client.chatStream(state.activeModel, wire, {
620
+ signal: sig, tools: toolSchemas,
621
+ onDelta: (delta) => {
622
+ if (delta.type === 'text') {
623
+ content += delta.delta;
624
+ emit({ type: 'text_delta', delta: delta.delta });
625
+ }
626
+ else if (delta.type === 'tool_call') {
627
+ if (!toolCalls.some((call) => call.id === delta.call.id))
628
+ toolCalls.push(delta.call);
629
+ else
630
+ toolCalls = toolCalls.map((call) => call.id === delta.call.id ? delta.call : call);
631
+ }
632
+ },
633
+ });
634
+ if (toolCalls.length === 0) {
635
+ if (content) {
636
+ emit({ type: 'text', content, model: result.model });
637
+ state.messages = [...state.messages, { role: 'assistant', content, model: result.model, createdAt: new Date().toISOString() }];
638
+ }
639
+ return;
640
+ }
641
+ wire.push({ role: 'assistant', content, tool_calls: toolCalls });
642
+ for (const call of toolCalls) {
643
+ if (sig.aborted)
644
+ return;
645
+ turns += 1;
646
+ if (turns > maxTurns)
647
+ return;
648
+ emit({ type: 'tool_start', tool: call.function.name, input: undefined });
649
+ const output = await runTool(call, sig);
650
+ emit({ type: 'tool_result', tool: call.function.name, summary: output.split('\n')[0] ?? '', detail: output.slice(0, 2000) });
651
+ wire.push({ role: 'tool', tool_call_id: call.id, content: truncate(output) });
652
+ }
653
+ }
654
+ }
517
655
  }
518
656
  function asWireMessage(message) {
519
657
  if (message.role === 'user' || message.role === 'assistant')
@@ -1 +1 @@
1
- {"version":3,"file":"mastraEngine.js","sourceRoot":"","sources":["../../src/agent/mastraEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mastraEngine.js","sourceRoot":"","sources":["../../src/agent/mastraEngine.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -5,6 +5,23 @@ import { createMastraEngine } from './agent/mastraEngine.js';
5
5
  import { TerminalInterface } from './ui/terminalInterface.js';
6
6
  import { ownVersion, runUpdate } from './update.js';
7
7
  import { readActiveCombo } from './config/settings.js';
8
+ const ALT_ENTER = '\x1b[?1049h\x1b[H';
9
+ const ALT_LEAVE = '\x1b[?1049l';
10
+ /** Plain-text transcript flushed to the primary buffer on exit — the audit trail. */
11
+ function dumpTranscript(messages) {
12
+ if (messages.length === 0)
13
+ return;
14
+ const label = {
15
+ user: 'you', assistant: 'assistant', thought: 'think', action: 'action',
16
+ tool: 'tool', command: 'command', error: 'error',
17
+ };
18
+ process.stdout.write('\n');
19
+ for (const message of messages) {
20
+ const who = message.model ?? label[message.role] ?? message.role;
21
+ process.stdout.write(`\n─ ${who} ─────\n${message.content.trim()}\n`);
22
+ }
23
+ process.stdout.write('\n');
24
+ }
8
25
  const command = process.argv[2];
9
26
  if (command === 'update') {
10
27
  process.exitCode = runUpdate();
@@ -16,8 +33,23 @@ else {
16
33
  void (async () => {
17
34
  const saved = await readActiveCombo();
18
35
  const engine = await createMastraEngine({ workspaceRoot: process.cwd(), model: saved });
36
+ // Render the structured UI in the alternate screen buffer so that, on exit,
37
+ // the primary buffer's scrollback is left holding the plain-text transcript —
38
+ // the raw audit trail, without maintaining a parallel log.
39
+ const alt = process.stdout.isTTY === true;
40
+ if (alt)
41
+ process.stdout.write(ALT_ENTER);
19
42
  // The app owns Ctrl+C so idle quits but an in-flight run is cancelled first.
20
- render(_jsx(TerminalInterface, { engine: engine }), { exitOnCtrlC: false });
43
+ const { waitUntilExit } = render(_jsx(TerminalInterface, { engine: engine }), { exitOnCtrlC: false });
44
+ try {
45
+ await waitUntilExit();
46
+ }
47
+ finally {
48
+ if (alt) {
49
+ process.stdout.write(ALT_LEAVE);
50
+ dumpTranscript(engine.state.messages);
51
+ }
52
+ }
21
53
  })();
22
54
  }
23
55
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,QAAQ,GAAG,SAAS,EAAE,CAAC;AACjC,CAAC;KAAM,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;KAAM,CAAC;IACN,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;QACtC,MAAS,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3F,6EAA6E;QAC7E,MAAM,CAAC,KAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,GAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";;AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAGvD,MAAM,SAAS,GAAG,mBAAmB,CAAC;AACtC,MAAM,SAAS,GAAG,aAAa,CAAC;AAEhC,qFAAqF;AACrF,SAAS,cAAc,CAAC,QAAmC;IACzD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAClC,MAAM,KAAK,GAA2C;QACpD,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ;QACvE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO;KACjD,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,WAAW,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAEhC,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;IACzB,OAAO,CAAC,QAAQ,GAAG,SAAS,EAAE,CAAC;AACjC,CAAC;KAAM,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,eAAe,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;KAAM,CAAC;IACN,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;QACtC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxF,4EAA4E;QAC5E,8EAA8E;QAC9E,2DAA2D;QAC3D,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC;QAC1C,IAAI,GAAG;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzC,6EAA6E;QAC7E,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC,KAAC,iBAAiB,IAAC,MAAM,EAAE,MAAM,GAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,IAAI,CAAC;YACH,MAAM,aAAa,EAAE,CAAC;QACxB,CAAC;gBAAS,CAAC;YACT,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAChC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Named session snapshots on top of the single-session store.
3
+ *
4
+ * Snapshots live in `<root>/.omniharness/sessions/<name>.json` with the same
5
+ * StoredSession shape. The active session stays at the legacy `session.json`
6
+ * path so resume-on-startup is unchanged; `/sessions` lists named snapshots
7
+ * and can restore one into the active slot.
8
+ */
9
+ import type { StoredSession } from './sessionStore.js';
10
+ /** List saved snapshot names (newest mtime first); empty when none exist. */
11
+ export declare function listSessions(root: string): Promise<{
12
+ name: string;
13
+ savedAt: string;
14
+ }[]>;
15
+ /** Save the current session under a snapshot name (overwrites same-name). */
16
+ export declare function saveSnapshot(root: string, name: string, session: StoredSession): Promise<void>;
17
+ /** Load a snapshot by name; null when missing or corrupt. */
18
+ export declare function loadSnapshot(root: string, name: string): Promise<StoredSession | null>;
19
+ /** Delete a snapshot; missing snapshots are a no-op. */
20
+ export declare function deleteSnapshot(root: string, name: string): Promise<void>;
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Named session snapshots on top of the single-session store.
3
+ *
4
+ * Snapshots live in `<root>/.omniharness/sessions/<name>.json` with the same
5
+ * StoredSession shape. The active session stays at the legacy `session.json`
6
+ * path so resume-on-startup is unchanged; `/sessions` lists named snapshots
7
+ * and can restore one into the active slot.
8
+ */
9
+ import { mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises';
10
+ import { join } from 'node:path';
11
+ const SESSIONS_DIR = 'sessions';
12
+ function sessionsDir(root) {
13
+ return join(root, '.omniharness', SESSIONS_DIR);
14
+ }
15
+ function snapshotPath(root, name) {
16
+ // Names are filesystem-safe: letters, digits, dash, underscore, dot (no path parts).
17
+ const safe = name.replace(/[^A-Za-z0-9._-]/g, '_');
18
+ return join(sessionsDir(root), `${safe}.json`);
19
+ }
20
+ /** List saved snapshot names (newest mtime first); empty when none exist. */
21
+ export async function listSessions(root) {
22
+ try {
23
+ const entries = await readdir(sessionsDir(root));
24
+ const out = [];
25
+ for (const entry of entries) {
26
+ if (!entry.endsWith('.json'))
27
+ continue;
28
+ try {
29
+ const raw = await readFile(join(sessionsDir(root), entry), 'utf8');
30
+ const data = JSON.parse(raw);
31
+ const info = await (await import('node:fs/promises')).stat(join(sessionsDir(root), entry));
32
+ out.push({ name: entry.slice(0, -5), savedAt: String(data.savedAt ?? ''), mtime: info.mtimeMs });
33
+ }
34
+ catch { /* unreadable snapshot: skip */ }
35
+ }
36
+ return out.sort((a, b) => b.mtime - a.mtime).map(({ name, savedAt }) => ({ name, savedAt }));
37
+ }
38
+ catch {
39
+ return [];
40
+ }
41
+ }
42
+ /** Save the current session under a snapshot name (overwrites same-name). */
43
+ export async function saveSnapshot(root, name, session) {
44
+ await mkdir(sessionsDir(root), { recursive: true });
45
+ await writeFile(snapshotPath(root, name), JSON.stringify(session, null, 2), 'utf8');
46
+ }
47
+ /** Load a snapshot by name; null when missing or corrupt. */
48
+ export async function loadSnapshot(root, name) {
49
+ try {
50
+ const raw = await readFile(snapshotPath(root, name), 'utf8');
51
+ const data = JSON.parse(raw);
52
+ if (!Array.isArray(data.messages))
53
+ return null;
54
+ return data;
55
+ }
56
+ catch {
57
+ return null;
58
+ }
59
+ }
60
+ /** Delete a snapshot; missing snapshots are a no-op. */
61
+ export async function deleteSnapshot(root, name) {
62
+ try {
63
+ await rm(snapshotPath(root, name), { force: true });
64
+ }
65
+ catch { /* best-effort */ }
66
+ }
67
+ //# sourceMappingURL=sessionList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionList.js","sourceRoot":"","sources":["../src/sessionList.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Collapsible message groups for the transcript.
3
+ *
4
+ * Pure module: folds runs of tool-role lines into a single synthetic summary
5
+ * line so a long tool trail reads as one line ("▸ 4 tool calls · Ctrl+G to
6
+ * expand") instead of a wall of output. Runs shorter than 3 lines stay
7
+ * unfolded (a lone tool note isn't noise). Expansion is controlled by the
8
+ * caller (Ctrl+G toggles globally); non-tool lines always pass through.
9
+ */
10
+ export interface GroupableLine {
11
+ role: 'user' | 'assistant' | 'error' | 'thinking' | 'tool';
12
+ text: string;
13
+ toolName?: string;
14
+ }
15
+ export interface GroupInfo {
16
+ count: number;
17
+ /** The folded tool texts, shown when the group is expanded. */
18
+ hidden: readonly string[];
19
+ }
20
+ export interface GroupedLine extends GroupableLine {
21
+ /** Present only on synthetic group-summary lines. */
22
+ group?: GroupInfo;
23
+ }
24
+ /**
25
+ * Fold runs of tool lines. With `expanded` false, runs of 3+ tool lines
26
+ * collapse to one synthetic summary line carrying `group` metadata.
27
+ *
28
+ * `protectFrom` is a line index (into `lines`) at or after which nothing
29
+ * folds: the "collapse by recency, not kind" rule — the active turn stays
30
+ * fully expanded so nothing about the current decision is hidden, while
31
+ * settled history behind it still compresses. Pass `lines.length` (default)
32
+ * to fold everything, or the index of the last user turn to shield it.
33
+ */
34
+ export declare function foldToolGroups(lines: readonly GroupableLine[], expanded: boolean, protectFrom?: number): GroupedLine[];