@ora-ai/cli 0.1.0

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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +102 -0
  3. package/dist/auth-commands.d.ts +39 -0
  4. package/dist/auth-commands.d.ts.map +1 -0
  5. package/dist/auth-commands.js +116 -0
  6. package/dist/auth-commands.js.map +1 -0
  7. package/dist/core/auth.d.ts +41 -0
  8. package/dist/core/auth.d.ts.map +1 -0
  9. package/dist/core/auth.js +110 -0
  10. package/dist/core/auth.js.map +1 -0
  11. package/dist/core/config.d.ts +26 -0
  12. package/dist/core/config.d.ts.map +1 -0
  13. package/dist/core/config.js +51 -0
  14. package/dist/core/config.js.map +1 -0
  15. package/dist/core/http.d.ts +46 -0
  16. package/dist/core/http.d.ts.map +1 -0
  17. package/dist/core/http.js +82 -0
  18. package/dist/core/http.js.map +1 -0
  19. package/dist/core/login.d.ts +14 -0
  20. package/dist/core/login.d.ts.map +1 -0
  21. package/dist/core/login.js +70 -0
  22. package/dist/core/login.js.map +1 -0
  23. package/dist/core/output.d.ts +18 -0
  24. package/dist/core/output.d.ts.map +1 -0
  25. package/dist/core/output.js +94 -0
  26. package/dist/core/output.js.map +1 -0
  27. package/dist/core/run-operation.d.ts +57 -0
  28. package/dist/core/run-operation.d.ts.map +1 -0
  29. package/dist/core/run-operation.js +119 -0
  30. package/dist/core/run-operation.js.map +1 -0
  31. package/dist/core/sse.d.ts +13 -0
  32. package/dist/core/sse.d.ts.map +1 -0
  33. package/dist/core/sse.js +63 -0
  34. package/dist/core/sse.js.map +1 -0
  35. package/dist/generated/operations.d.ts +47 -0
  36. package/dist/generated/operations.d.ts.map +1 -0
  37. package/dist/generated/operations.js +2050 -0
  38. package/dist/generated/operations.js.map +1 -0
  39. package/dist/generated/types.d.ts +1039 -0
  40. package/dist/generated/types.d.ts.map +1 -0
  41. package/dist/generated/types.js +5 -0
  42. package/dist/generated/types.js.map +1 -0
  43. package/dist/index.d.ts +7 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +17 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/interactive/derive-prompts.d.ts +44 -0
  48. package/dist/interactive/derive-prompts.d.ts.map +1 -0
  49. package/dist/interactive/derive-prompts.js +58 -0
  50. package/dist/interactive/derive-prompts.js.map +1 -0
  51. package/dist/interactive/inquirer-prompter.d.ts +11 -0
  52. package/dist/interactive/inquirer-prompter.d.ts.map +1 -0
  53. package/dist/interactive/inquirer-prompter.js +64 -0
  54. package/dist/interactive/inquirer-prompter.js.map +1 -0
  55. package/dist/interactive/menu.d.ts +25 -0
  56. package/dist/interactive/menu.d.ts.map +1 -0
  57. package/dist/interactive/menu.js +57 -0
  58. package/dist/interactive/menu.js.map +1 -0
  59. package/dist/interactive/prompter.d.ts +25 -0
  60. package/dist/interactive/prompter.d.ts.map +1 -0
  61. package/dist/interactive/prompter.js +14 -0
  62. package/dist/interactive/prompter.js.map +1 -0
  63. package/dist/interactive/session.d.ts +19 -0
  64. package/dist/interactive/session.d.ts.map +1 -0
  65. package/dist/interactive/session.js +204 -0
  66. package/dist/interactive/session.js.map +1 -0
  67. package/dist/program.d.ts +81 -0
  68. package/dist/program.d.ts.map +1 -0
  69. package/dist/program.js +178 -0
  70. package/dist/program.js.map +1 -0
  71. package/dist/render/ansi.d.ts +13 -0
  72. package/dist/render/ansi.d.ts.map +1 -0
  73. package/dist/render/ansi.js +34 -0
  74. package/dist/render/ansi.js.map +1 -0
  75. package/dist/render/banner.d.ts +7 -0
  76. package/dist/render/banner.d.ts.map +1 -0
  77. package/dist/render/banner.js +18 -0
  78. package/dist/render/banner.js.map +1 -0
  79. package/dist/render/glyphs.d.ts +39 -0
  80. package/dist/render/glyphs.d.ts.map +1 -0
  81. package/dist/render/glyphs.js +83 -0
  82. package/dist/render/glyphs.js.map +1 -0
  83. package/dist/render/index.d.ts +13 -0
  84. package/dist/render/index.d.ts.map +1 -0
  85. package/dist/render/index.js +24 -0
  86. package/dist/render/index.js.map +1 -0
  87. package/dist/render/insight-lines.d.ts +8 -0
  88. package/dist/render/insight-lines.d.ts.map +1 -0
  89. package/dist/render/insight-lines.js +62 -0
  90. package/dist/render/insight-lines.js.map +1 -0
  91. package/dist/render/insight.d.ts +9 -0
  92. package/dist/render/insight.d.ts.map +1 -0
  93. package/dist/render/insight.js +68 -0
  94. package/dist/render/insight.js.map +1 -0
  95. package/dist/render/journey-graph.d.ts +73 -0
  96. package/dist/render/journey-graph.d.ts.map +1 -0
  97. package/dist/render/journey-graph.js +250 -0
  98. package/dist/render/journey-graph.js.map +1 -0
  99. package/dist/render/journey.d.ts +14 -0
  100. package/dist/render/journey.d.ts.map +1 -0
  101. package/dist/render/journey.js +67 -0
  102. package/dist/render/journey.js.map +1 -0
  103. package/dist/render/live-panel.d.ts +34 -0
  104. package/dist/render/live-panel.d.ts.map +1 -0
  105. package/dist/render/live-panel.js +84 -0
  106. package/dist/render/live-panel.js.map +1 -0
  107. package/dist/render/mode.d.ts +19 -0
  108. package/dist/render/mode.d.ts.map +1 -0
  109. package/dist/render/mode.js +23 -0
  110. package/dist/render/mode.js.map +1 -0
  111. package/dist/render/registry.d.ts +17 -0
  112. package/dist/render/registry.d.ts.map +1 -0
  113. package/dist/render/registry.js +34 -0
  114. package/dist/render/registry.js.map +1 -0
  115. package/dist/render/run-list.d.ts +11 -0
  116. package/dist/render/run-list.d.ts.map +1 -0
  117. package/dist/render/run-list.js +53 -0
  118. package/dist/render/run-list.js.map +1 -0
  119. package/dist/render/spinner.d.ts +14 -0
  120. package/dist/render/spinner.d.ts.map +1 -0
  121. package/dist/render/spinner.js +37 -0
  122. package/dist/render/spinner.js.map +1 -0
  123. package/dist/render/table.d.ts +20 -0
  124. package/dist/render/table.d.ts.map +1 -0
  125. package/dist/render/table.js +29 -0
  126. package/dist/render/table.js.map +1 -0
  127. package/dist/render/trajectory.d.ts +19 -0
  128. package/dist/render/trajectory.d.ts.map +1 -0
  129. package/dist/render/trajectory.js +75 -0
  130. package/dist/render/trajectory.js.map +1 -0
  131. package/dist/render/tunnel.d.ts +10 -0
  132. package/dist/render/tunnel.d.ts.map +1 -0
  133. package/dist/render/tunnel.js +108 -0
  134. package/dist/render/tunnel.js.map +1 -0
  135. package/dist/render/usage.d.ts +29 -0
  136. package/dist/render/usage.d.ts.map +1 -0
  137. package/dist/render/usage.js +83 -0
  138. package/dist/render/usage.js.map +1 -0
  139. package/dist/tunnel-command.d.ts +15 -0
  140. package/dist/tunnel-command.d.ts.map +1 -0
  141. package/dist/tunnel-command.js +267 -0
  142. package/dist/tunnel-command.js.map +1 -0
  143. package/dist/watch.d.ts +53 -0
  144. package/dist/watch.d.ts.map +1 -0
  145. package/dist/watch.js +305 -0
  146. package/dist/watch.js.map +1 -0
  147. package/package.json +36 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey-graph.js","sourceRoot":"","sources":["../../src/render/journey-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Rich renderer for a single studio journey (`GET /studio/v1/journeys/:id` —
3
+ * a goal run across several harness agents in parallel). Per agent: a
4
+ * progress marker (●/◐/○), the harness + model + status, and the SPEND chips
5
+ * (tokens in/out, cache read/write, cost, turns, duration) from the agent's
6
+ * usage. A totals line sums the whole journey's spend.
7
+ *
8
+ * The step-by-step GRAPH lives on the run's trajectory (see trajectory.ts /
9
+ * `ora studio runs trajectory <runId>`) — this card is the journey's roster +
10
+ * bill.
11
+ */
12
+ import type { Renderer } from "./registry.js";
13
+ export declare const journeyRenderer: Renderer;
14
+ //# sourceMappingURL=journey.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey.d.ts","sourceRoot":"","sources":["../../src/render/journey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAqE9C,eAAO,MAAM,eAAe,EAAE,QAI7B,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Rich renderer for a single studio journey (`GET /studio/v1/journeys/:id` —
3
+ * a goal run across several harness agents in parallel). Per agent: a
4
+ * progress marker (●/◐/○), the harness + model + status, and the SPEND chips
5
+ * (tokens in/out, cache read/write, cost, turns, duration) from the agent's
6
+ * usage. A totals line sums the whole journey's spend.
7
+ *
8
+ * The step-by-step GRAPH lives on the run's trajectory (see trajectory.ts /
9
+ * `ora studio runs trajectory <runId>`) — this card is the journey's roster +
10
+ * bill.
11
+ */
12
+ import chalk from "chalk";
13
+ import { accent, progressGlyph } from "./glyphs.js";
14
+ import { readUsage, sumUsage, usageChips } from "./usage.js";
15
+ /**
16
+ * `data.agents` + `data.goal` together are unique to the single-journey
17
+ * artifact: trajectory/insight/run-list have no `data` envelope at all, and
18
+ * journeys.list nests rows under `data.results`, never `data.agents`
19
+ * directly. Pinned on the live-captured fixture (__fixtures__/journey.json —
20
+ * a REAL journey from the e2e org, not schema-derived).
21
+ *
22
+ * Every element must also be a non-null object (mirrors run-list's `isRunRow`
23
+ * check on its rows) — a `null`/primitive agent would otherwise pass the
24
+ * array check here and then throw reading `agent.status`/`agent.harness` in
25
+ * `renderStage`. Rejecting it here sends the payload to the plain fallback.
26
+ */
27
+ function isJourney(data) {
28
+ if (typeof data !== "object" || data === null)
29
+ return false;
30
+ const inner = data.data;
31
+ if (typeof inner !== "object" || inner === null)
32
+ return false;
33
+ const i = inner;
34
+ return (Array.isArray(i.agents) &&
35
+ i.agents.every((a) => typeof a === "object" && a !== null) &&
36
+ typeof i.goal === "string" &&
37
+ typeof i.status === "string");
38
+ }
39
+ function renderStage(agent) {
40
+ const status = typeof agent.status === "string" ? agent.status : "unknown";
41
+ const harness = typeof agent.harness === "string" ? agent.harness : "agent";
42
+ const model = typeof agent.model === "string" ? chalk.dim(` ${agent.model}`) : "";
43
+ const lines = [`${progressGlyph(status)} ${harness}${model} (${status})`];
44
+ const chips = usageChips(readUsage(agent.usage));
45
+ if (chips)
46
+ lines.push(` ${chalk.dim(chips)}`);
47
+ return lines;
48
+ }
49
+ function render(data) {
50
+ const inner = data.data;
51
+ const header = accent.bold(`Journey — ${inner.goal} [${inner.status}]`);
52
+ const lines = [header, ...inner.agents.flatMap(renderStage)];
53
+ // The whole journey's bill, summed across agents — rendered only when at
54
+ // least one agent has reported any spend at all.
55
+ const totals = usageChips(sumUsage(inner.agents.map((a) => readUsage(a.usage))));
56
+ if (totals && inner.agents.length > 1) {
57
+ lines.push(chalk.dim("─".repeat(24)));
58
+ lines.push(`${chalk.bold("total")} ${totals}`);
59
+ }
60
+ return lines.join("\n");
61
+ }
62
+ export const journeyRenderer = {
63
+ name: "journey",
64
+ canRender: isJourney,
65
+ render,
66
+ };
67
+ //# sourceMappingURL=journey.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"journey.js","sourceRoot":"","sources":["../../src/render/journey.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAkB7D;;;;;;;;;;;GAWG;AACH,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,KAAK,GAAI,IAAgC,CAAC,IAAI,CAAC;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,OAAO,CACL,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACvB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC;QAC1D,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ;QAC1B,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5E,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClF,MAAM,KAAK,GAAG,CAAC,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,OAAO,GAAG,KAAK,KAAK,MAAM,GAAG,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACjD,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,MAAM,CAAC,IAAa;IAC3B,MAAM,KAAK,GAAI,IAAoB,CAAC,IAAI,CAAC;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACxE,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;IAE7D,yEAAyE;IACzE,iDAAiD;IACjD,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,IAAI,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,MAAM;CACP,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * A live region that owns the bottom of the screen while a run streams. The
3
+ * whole graph is repainted in place on every step (that full redraw is what
4
+ * makes it feel alive); between steps only the top status line pulses.
5
+ * Painting is per-line erase-and-rewrite (\x1b[2K), never a screen clear,
6
+ * which keeps the redraw flicker-free. On a non-TTY every method is a no-op;
7
+ * the caller prints per-event lines instead. Ported from the standalone
8
+ * eralabs-ai/ora-cli renderer.
9
+ */
10
+ export interface LivePanelDeps {
11
+ write: (text: string) => void;
12
+ isTty: boolean;
13
+ now?: () => number;
14
+ }
15
+ export declare class LivePanel {
16
+ private readonly deps;
17
+ private rows;
18
+ private beat;
19
+ private readonly bornAt;
20
+ private ticker;
21
+ private content;
22
+ private headline;
23
+ private readonly now;
24
+ constructor(deps: LivePanelDeps);
25
+ get live(): boolean;
26
+ open(): void;
27
+ draw(content: string[], headline: string): void;
28
+ /** Stop and erase the region so a permanent copy can be printed below. */
29
+ close(): void;
30
+ private banner;
31
+ private pulse;
32
+ private repaint;
33
+ }
34
+ //# sourceMappingURL=live-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-panel.d.ts","sourceRoot":"","sources":["../../src/render/live-panel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,qBAAa,SAAS;IASR,OAAO,CAAC,QAAQ,CAAC,IAAI;IARjC,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,MAAM,CAA6C;IAC3D,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;gBAEN,IAAI,EAAE,aAAa;IAKhD,IAAI,IAAI,IAAI,OAAO,CAElB;IAED,IAAI,IAAI,IAAI;IAOZ,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM/C,0EAA0E;IAC1E,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,MAAM;IASd,OAAO,CAAC,KAAK;IAOb,OAAO,CAAC,OAAO;CAahB"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * A live region that owns the bottom of the screen while a run streams. The
3
+ * whole graph is repainted in place on every step (that full redraw is what
4
+ * makes it feel alive); between steps only the top status line pulses.
5
+ * Painting is per-line erase-and-rewrite (\x1b[2K), never a screen clear,
6
+ * which keeps the redraw flicker-free. On a non-TTY every method is a no-op;
7
+ * the caller prints per-event lines instead. Ported from the standalone
8
+ * eralabs-ai/ora-cli renderer.
9
+ */
10
+ import chalk from "chalk";
11
+ /** Pulse frames — a breathing diamond, echoing the ◆ intent root. */
12
+ const PULSE = ["◇", "◇", "◈", "◈", "◆", "◆", "◈", "◈"];
13
+ export class LivePanel {
14
+ deps;
15
+ rows = 0;
16
+ beat = 0;
17
+ bornAt;
18
+ ticker;
19
+ content = [];
20
+ headline = "";
21
+ now;
22
+ constructor(deps) {
23
+ this.deps = deps;
24
+ this.now = deps.now ?? Date.now;
25
+ this.bornAt = this.now();
26
+ }
27
+ get live() {
28
+ return this.deps.isTty;
29
+ }
30
+ open() {
31
+ if (this.live && !this.ticker) {
32
+ this.ticker = setInterval(() => this.pulse(), 100);
33
+ this.ticker.unref?.();
34
+ }
35
+ }
36
+ draw(content, headline) {
37
+ this.content = content;
38
+ this.headline = headline;
39
+ this.repaint();
40
+ }
41
+ /** Stop and erase the region so a permanent copy can be printed below. */
42
+ close() {
43
+ if (this.ticker) {
44
+ clearInterval(this.ticker);
45
+ this.ticker = undefined;
46
+ }
47
+ if (this.live && this.rows > 0) {
48
+ this.deps.write(`\x1b[${this.rows}A\r\x1b[0J`);
49
+ this.rows = 0;
50
+ }
51
+ }
52
+ banner() {
53
+ const glyph = chalk.cyan(PULSE[this.beat % PULSE.length]);
54
+ const elapsed = Math.floor((this.now() - this.bornAt) / 1000);
55
+ const full = `${this.headline} ${elapsed}s`;
56
+ const cap = Math.max(10, (process.stdout.columns ?? 80) - 6);
57
+ const text = full.length > cap ? `${full.slice(0, cap - 1)}…` : full;
58
+ return ` ${glyph} ${chalk.bold(text)}`;
59
+ }
60
+ pulse() {
61
+ if (!this.live || this.rows === 0)
62
+ return;
63
+ this.beat += 1;
64
+ // Rewrite only the banner line (the top row of the region).
65
+ this.deps.write(`\x1b[${this.rows}A\r\x1b[2K${this.banner()}\x1b[${this.rows}B\r`);
66
+ }
67
+ repaint() {
68
+ if (!this.live)
69
+ return;
70
+ const lines = [this.banner(), "", ...this.content];
71
+ let out = "";
72
+ if (this.rows > 0)
73
+ out += `\x1b[${this.rows}A\r`;
74
+ out += lines.map((line) => `\x1b[2K${line}`).join("\n");
75
+ // Erase any leftover rows from a previously-taller frame.
76
+ if (this.rows > lines.length)
77
+ out += `\n\x1b[0J`;
78
+ out += "\n";
79
+ this.deps.write(out);
80
+ this.rows = lines.length + (this.rows > lines.length ? 1 : 0);
81
+ this.rows = lines.length;
82
+ }
83
+ }
84
+ //# sourceMappingURL=live-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-panel.js","sourceRoot":"","sources":["../../src/render/live-panel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,qEAAqE;AACrE,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAQvD,MAAM,OAAO,SAAS;IASS;IARrB,IAAI,GAAG,CAAC,CAAC;IACT,IAAI,GAAG,CAAC,CAAC;IACA,MAAM,CAAS;IACxB,MAAM,CAA6C;IACnD,OAAO,GAAa,EAAE,CAAC;IACvB,QAAQ,GAAG,EAAE,CAAC;IACL,GAAG,CAAe;IAEnC,YAA6B,IAAmB;QAAnB,SAAI,GAAJ,IAAI,CAAe;QAC9C,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;QACxB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAiB,EAAE,QAAgB;QACtC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,0EAA0E;IAC1E,KAAK;QACH,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QAC1B,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,YAAY,CAAC,CAAC;YAC/C,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,MAAM;QACZ,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QAC9D,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,KAAK,OAAO,GAAG,CAAC;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK;QACX,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO;QAC1C,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;QACf,4DAA4D;QAC5D,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,aAAa,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IACrF,CAAC;IAEO,OAAO;QACb,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;YAAE,GAAG,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,CAAC;QACjD,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,0DAA0D;QAC1D,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM;YAAE,GAAG,IAAI,WAAW,CAAC;QACjD,GAAG,IAAI,IAAI,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Output-mode resolution. ONE pure decision, made once per action (program.ts)
3
+ * and threaded everywhere else — no other module re-derives it from flags/env.
4
+ *
5
+ * Precedence (highest wins):
6
+ * 1. --json — the raw, scriptable passthrough. Wins over --plain
7
+ * too: a script that (mistakenly) passes both still gets machine output.
8
+ * 2. !stdoutIsTty — piped/redirected stdout never gets ANSI/rich frames,
9
+ * NO_COLOR or not: a script parsing plain text must not be surprised by
10
+ * color codes just because NO_COLOR was left unset.
11
+ * 3. --plain / NO_COLOR — an explicit downgrade from rich to plain in a TTY.
12
+ * 4. otherwise — a real terminal with no downgrade gets rich.
13
+ */
14
+ export type OutputMode = "json" | "plain" | "rich";
15
+ export declare function resolveOutputMode(opts: {
16
+ json?: boolean;
17
+ plain?: boolean;
18
+ }, env: NodeJS.ProcessEnv, stdoutIsTty: boolean): OutputMode;
19
+ //# sourceMappingURL=mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../src/render/mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,EACzC,GAAG,EAAE,MAAM,CAAC,UAAU,EACtB,WAAW,EAAE,OAAO,GACnB,UAAU,CAKZ"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Output-mode resolution. ONE pure decision, made once per action (program.ts)
3
+ * and threaded everywhere else — no other module re-derives it from flags/env.
4
+ *
5
+ * Precedence (highest wins):
6
+ * 1. --json — the raw, scriptable passthrough. Wins over --plain
7
+ * too: a script that (mistakenly) passes both still gets machine output.
8
+ * 2. !stdoutIsTty — piped/redirected stdout never gets ANSI/rich frames,
9
+ * NO_COLOR or not: a script parsing plain text must not be surprised by
10
+ * color codes just because NO_COLOR was left unset.
11
+ * 3. --plain / NO_COLOR — an explicit downgrade from rich to plain in a TTY.
12
+ * 4. otherwise — a real terminal with no downgrade gets rich.
13
+ */
14
+ export function resolveOutputMode(opts, env, stdoutIsTty) {
15
+ if (opts.json)
16
+ return "json";
17
+ if (!stdoutIsTty)
18
+ return "plain";
19
+ if (opts.plain || env.NO_COLOR)
20
+ return "plain";
21
+ return "rich";
22
+ }
23
+ //# sourceMappingURL=mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mode.js","sourceRoot":"","sources":["../../src/render/mode.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,UAAU,iBAAiB,CAC/B,IAAyC,EACzC,GAAsB,EACtB,WAAoB;IAEpB,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC;IAC7B,IAAI,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC;IACjC,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC;IAC/C,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The rich-renderer registry — a Registry of Strategies (see the `solid-dp`
3
+ * skill), not a switch over payload shape. Task 6 registers renderers here
4
+ * (trajectory frames, run tables, …); this task ships the registry EMPTY, so
5
+ * `renderRich` always falls through to the plain fallback and rich === plain.
6
+ *
7
+ * Registration order is preserved and is the match priority: the first
8
+ * registered renderer whose `canRender` accepts the payload wins.
9
+ */
10
+ export interface Renderer {
11
+ readonly name: string;
12
+ canRender(data: unknown): boolean;
13
+ render(data: unknown): string;
14
+ }
15
+ export declare function registerRenderer(r: Renderer): void;
16
+ export declare function renderRich(data: unknown, fallback: (d: unknown) => string): string;
17
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/render/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IAClC,MAAM,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;CAC/B;AAID,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAElD;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,MAAM,GAAG,MAAM,CAiBlF"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The rich-renderer registry — a Registry of Strategies (see the `solid-dp`
3
+ * skill), not a switch over payload shape. Task 6 registers renderers here
4
+ * (trajectory frames, run tables, …); this task ships the registry EMPTY, so
5
+ * `renderRich` always falls through to the plain fallback and rich === plain.
6
+ *
7
+ * Registration order is preserved and is the match priority: the first
8
+ * registered renderer whose `canRender` accepts the payload wins.
9
+ */
10
+ const renderers = [];
11
+ export function registerRenderer(r) {
12
+ renderers.push(r);
13
+ }
14
+ export function renderRich(data, fallback) {
15
+ for (const r of renderers) {
16
+ if (!r.canRender(data))
17
+ continue;
18
+ // Last line of defense: canRender narrowed the TOP-LEVEL shape, but a
19
+ // renderer can still throw on a value it didn't specifically validate
20
+ // (nested fields it assumes are present/well-typed). Never let that
21
+ // become a rich-only command failure — degrade to the same plain output
22
+ // a --json/piped run would have produced. Silent on purpose: the
23
+ // fallback output IS the product here, not a diagnostic; surfacing the
24
+ // renderer name would just be noise the user can't act on.
25
+ try {
26
+ return r.render(data);
27
+ }
28
+ catch {
29
+ return fallback(data);
30
+ }
31
+ }
32
+ return fallback(data);
33
+ }
34
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/render/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,MAAM,SAAS,GAAe,EAAE,CAAC;AAEjC,MAAM,UAAU,gBAAgB,CAAC,CAAW;IAC1C,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa,EAAE,QAAgC;IACxE,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC;YAAE,SAAS;QACjC,sEAAsE;QACtE,sEAAsE;QACtE,oEAAoE;QACpE,wEAAwE;QACxE,iEAAiE;QACjE,uEAAuE;QACvE,2DAA2D;QAC3D,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Rich renderer for a runs LIST payload (`GET .../runs`). The same tabular
3
+ * shape core/output.ts's plain fallback draws — column truncation, width
4
+ * computation, padded-line joining all come from the shared `./table.js`
5
+ * (a leaf module both this file and core/output.ts depend on, so there is no
6
+ * cycle) — plus a leading status-glyph column, which is local to this
7
+ * renderer: core/output.ts's plain table has no concept of a run's status.
8
+ */
9
+ import type { Renderer } from "./registry.js";
10
+ export declare const runListRenderer: Renderer;
11
+ //# sourceMappingURL=run-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-list.d.ts","sourceRoot":"","sources":["../../src/render/run-list.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAgD9C,eAAO,MAAM,eAAe,EAAE,QAI7B,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Rich renderer for a runs LIST payload (`GET .../runs`). The same tabular
3
+ * shape core/output.ts's plain fallback draws — column truncation, width
4
+ * computation, padded-line joining all come from the shared `./table.js`
5
+ * (a leaf module both this file and core/output.ts depend on, so there is no
6
+ * cycle) — plus a leading status-glyph column, which is local to this
7
+ * renderer: core/output.ts's plain table has no concept of a run's status.
8
+ */
9
+ import chalk from "chalk";
10
+ import { outcomeGlyph } from "./glyphs.js";
11
+ import { MAX_COLUMNS, cell, columnWidths, padLine, rowCountLabel } from "./table.js";
12
+ // A curated preference order (not raw Object.keys) so the glyph column is
13
+ // always paired with the columns a human actually scans a run by — id would
14
+ // otherwise crowd out status/model if we just took the row's first 6 keys.
15
+ const PREFERRED_COLUMNS = ["id", "harness", "model", "status", "outcome", "duration_ms", "cost_usd"];
16
+ function isRunRow(row) {
17
+ if (typeof row !== "object" || row === null)
18
+ return false;
19
+ const r = row;
20
+ return typeof r.id === "string" && typeof r.harness === "string" && typeof r.status === "string";
21
+ }
22
+ /**
23
+ * Top-level `results` (not nested under `data`, unlike journeys.list) whose
24
+ * rows carry id+harness+status together is unique among this CLI's captured
25
+ * shapes — `harness` never appears on an insight/trajectory/journey payload.
26
+ * Pinned on the live-captured fixture (__fixtures__/run-list.json).
27
+ */
28
+ function isRunList(data) {
29
+ if (typeof data !== "object" || data === null)
30
+ return false;
31
+ const d = data;
32
+ return Array.isArray(d.results) && d.results.every(isRunRow);
33
+ }
34
+ function render(data) {
35
+ const rows = data.results;
36
+ if (rows.length === 0)
37
+ return chalk.dim(rowCountLabel(0));
38
+ const columns = PREFERRED_COLUMNS.filter((c) => c in rows[0]).slice(0, MAX_COLUMNS);
39
+ const header = ["", ...columns];
40
+ const cellRows = rows.map((r) => [outcomeGlyph(r.status), ...columns.map((c) => cell(r[c]))]);
41
+ const widths = columnWidths(header, cellRows);
42
+ return [
43
+ chalk.bold(padLine(header, widths)),
44
+ ...cellRows.map((cells) => padLine(cells, widths)),
45
+ chalk.dim(rowCountLabel(rows.length)),
46
+ ].join("\n");
47
+ }
48
+ export const runListRenderer = {
49
+ name: "run-list",
50
+ canRender: isRunList,
51
+ render,
52
+ };
53
+ //# sourceMappingURL=run-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run-list.js","sourceRoot":"","sources":["../../src/render/run-list.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAQrF,0EAA0E;AAC1E,4EAA4E;AAC5E,2EAA2E;AAC3E,MAAM,iBAAiB,GAAG,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,CAAC,CAAC;AAErG,SAAS,QAAQ,CAAC,GAAY;IAC5B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC1D,MAAM,CAAC,GAAG,GAA8B,CAAC;IACzC,OAAO,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC;AACnG,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC5D,MAAM,CAAC,GAAG,IAA+B,CAAC;IAC1C,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,MAAM,CAAC,IAAa;IAC3B,MAAM,IAAI,GAAI,IAAoB,CAAC,OAAO,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1D,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IACpF,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE9C,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACtC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAa;IACvC,IAAI,EAAE,UAAU;IAChB,SAAS,EAAE,SAAS;IACpB,MAAM;CACP,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * A minimal \r-rewrite spinner for rich-mode TTY progress (e.g. `--watch`
3
+ * while waiting on the first stream event). `write` is injected — the
4
+ * spinner never touches process.stdout itself — so callers can no-op it in
5
+ * plain/json mode and tests never need a real terminal.
6
+ *
7
+ * No npm `ora` dependency (see glyphs.ts's doc comment): one setInterval and
8
+ * a fixed frame set is the whole feature.
9
+ */
10
+ export declare function createSpinner(write: (text: string) => void): {
11
+ start(label: string): void;
12
+ stop(): void;
13
+ };
14
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../src/render/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,wBAAgB,aAAa,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG;IAAE,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,IAAI,IAAI,CAAA;CAAE,CAwBzG"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * A minimal \r-rewrite spinner for rich-mode TTY progress (e.g. `--watch`
3
+ * while waiting on the first stream event). `write` is injected — the
4
+ * spinner never touches process.stdout itself — so callers can no-op it in
5
+ * plain/json mode and tests never need a real terminal.
6
+ *
7
+ * No npm `ora` dependency (see glyphs.ts's doc comment): one setInterval and
8
+ * a fixed frame set is the whole feature.
9
+ */
10
+ import { accent } from "./glyphs.js";
11
+ const FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
12
+ const INTERVAL_MS = 80;
13
+ export function createSpinner(write) {
14
+ let timer;
15
+ let frame = 0;
16
+ const render = (label) => {
17
+ write(`\r${accent(FRAMES[frame % FRAMES.length])} ${label}`);
18
+ frame += 1;
19
+ };
20
+ return {
21
+ start(label) {
22
+ if (timer)
23
+ clearInterval(timer); // restart, not stack, on a second start()
24
+ frame = 0;
25
+ render(label);
26
+ timer = setInterval(() => render(label), INTERVAL_MS);
27
+ },
28
+ stop() {
29
+ if (timer) {
30
+ clearInterval(timer);
31
+ timer = undefined;
32
+ }
33
+ write("\r"); // erase the spinner line
34
+ },
35
+ };
36
+ }
37
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../src/render/spinner.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAClE,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB,MAAM,UAAU,aAAa,CAAC,KAA6B;IACzD,IAAI,KAAiD,CAAC;IACtD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,CAAC,KAAa,EAAQ,EAAE;QACrC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;QAC7D,KAAK,IAAI,CAAC,CAAC;IACb,CAAC,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,KAAa;YACjB,IAAI,KAAK;gBAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,0CAA0C;YAC3E,KAAK,GAAG,CAAC,CAAC;YACV,MAAM,CAAC,KAAK,CAAC,CAAC;YACd,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC;QACxD,CAAC;QACD,IAAI;YACF,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB;QAC3C,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Pure list-table formatting helpers, shared by the plain fallback
3
+ * (core/output.ts's renderTable) and the rich run-list renderer
4
+ * (render/run-list.ts): cell truncation, column-width computation, and
5
+ * padded-line joining. A LEAF module — imports nothing from this package —
6
+ * so both a core/ module and a render/ module can depend on it with no
7
+ * cycle. Keeping this logic in exactly one place means the two table
8
+ * renderers can never silently drift on truncation or alignment.
9
+ */
10
+ export declare const MAX_COLUMNS = 6;
11
+ export declare const MAX_CELL = 40;
12
+ /** Renders one cell value as display text, truncating long strings with an ellipsis. */
13
+ export declare function cell(value: unknown): string;
14
+ /** Per-column width = the longest cell in that column, including its header. `rows` are already-formatted cell text (see `cell`), one array per row, index-aligned with `header`. */
15
+ export declare function columnWidths(header: string[], rows: string[][]): number[];
16
+ /** Pads each cell to its column's width and joins with two spaces, trimming trailing padding. */
17
+ export declare function padLine(cells: string[], widths: number[]): string;
18
+ /** "N rows" / "1 row" footer text (uncolored — callers apply their own dim/bold). */
19
+ export declare function rowCountLabel(count: number): string;
20
+ //# sourceMappingURL=table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/render/table.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,QAAQ,KAAK,CAAC;AAE3B,wFAAwF;AACxF,wBAAgB,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAG3C;AAED,qLAAqL;AACrL,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,EAAE,CAEzE;AAED,iGAAiG;AACjG,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAEjE;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Pure list-table formatting helpers, shared by the plain fallback
3
+ * (core/output.ts's renderTable) and the rich run-list renderer
4
+ * (render/run-list.ts): cell truncation, column-width computation, and
5
+ * padded-line joining. A LEAF module — imports nothing from this package —
6
+ * so both a core/ module and a render/ module can depend on it with no
7
+ * cycle. Keeping this logic in exactly one place means the two table
8
+ * renderers can never silently drift on truncation or alignment.
9
+ */
10
+ export const MAX_COLUMNS = 6;
11
+ export const MAX_CELL = 40;
12
+ /** Renders one cell value as display text, truncating long strings with an ellipsis. */
13
+ export function cell(value) {
14
+ const s = value === null || value === undefined ? "" : typeof value === "object" ? JSON.stringify(value) : String(value);
15
+ return s.length > MAX_CELL ? `${s.slice(0, MAX_CELL - 1)}…` : s;
16
+ }
17
+ /** Per-column width = the longest cell in that column, including its header. `rows` are already-formatted cell text (see `cell`), one array per row, index-aligned with `header`. */
18
+ export function columnWidths(header, rows) {
19
+ return header.map((h, i) => Math.max(h.length, ...rows.map((r) => r[i].length)));
20
+ }
21
+ /** Pads each cell to its column's width and joins with two spaces, trimming trailing padding. */
22
+ export function padLine(cells, widths) {
23
+ return cells.map((s, i) => s.padEnd(widths[i])).join(" ").trimEnd();
24
+ }
25
+ /** "N rows" / "1 row" footer text (uncolored — callers apply their own dim/bold). */
26
+ export function rowCountLabel(count) {
27
+ return `${count} row${count === 1 ? "" : "s"}`;
28
+ }
29
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/render/table.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC;AAC7B,MAAM,CAAC,MAAM,QAAQ,GAAG,EAAE,CAAC;AAE3B,wFAAwF;AACxF,MAAM,UAAU,IAAI,CAAC,KAAc;IACjC,MAAM,CAAC,GAAG,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzH,OAAO,CAAC,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,qLAAqL;AACrL,MAAM,UAAU,YAAY,CAAC,MAAgB,EAAE,IAAgB;IAC7D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,OAAO,CAAC,KAAe,EAAE,MAAgB;IACvD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC;AACvE,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,OAAO,GAAG,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACjD,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Rich renderer for a run's trajectory artifact (`GET .../runs/:id/trajectory`
3
+ * — see `@ora/trace-normalize`'s `TrajectoryData`). Draws the JOURNEY GRAPH —
4
+ * the same picture the ora product shows: the intent root, every tool action
5
+ * as a rounded box, attribution-driven edges, reasoning pinned as (…) notes
6
+ * above the action it produced — followed by the step summary. Ported from
7
+ * the standalone eralabs-ai/ora-cli renderer (render/journey-graph.ts).
8
+ */
9
+ import type { Renderer } from "./registry.js";
10
+ interface TrajectoryStepLike {
11
+ type?: unknown;
12
+ kind?: unknown;
13
+ tool?: unknown;
14
+ elapsed_ms?: unknown;
15
+ }
16
+ export declare function renderStep(step: TrajectoryStepLike): string;
17
+ export declare const trajectoryRenderer: Renderer;
18
+ export {};
19
+ //# sourceMappingURL=trajectory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trajectory.d.ts","sourceRoot":"","sources":["../../src/render/trajectory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAoDD,wBAAgB,UAAU,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAE3D;AAmBD,eAAO,MAAM,kBAAkB,EAAE,QAIhC,CAAC"}