reasonix 0.51.0 → 0.52.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 (143) hide show
  1. package/dashboard/dist/app.css +1 -1
  2. package/dashboard/dist/app.js +3 -3
  3. package/dashboard/dist/app.js.map +1 -1
  4. package/dist/cli/{acp-XEUHGG7X.js → acp-NEUYWGUU.js} +26 -26
  5. package/dist/cli/chat-QA6IVFJD.js +49 -0
  6. package/dist/cli/{chunk-HGK57NBN.js → chunk-2W4F3RIZ.js} +2 -2
  7. package/dist/cli/{chunk-UO6E7FN3.js → chunk-3OXD5CBM.js} +32756 -31192
  8. package/dist/cli/chunk-3OXD5CBM.js.map +1 -0
  9. package/dist/cli/{chunk-UMZ6KHTS.js → chunk-5YLEKX2V.js} +2 -2
  10. package/dist/cli/{chunk-BA5R6BAE.js → chunk-6QBUXA73.js} +2 -2
  11. package/dist/cli/chunk-77JIQ7SL.js +40 -0
  12. package/dist/cli/chunk-77JIQ7SL.js.map +1 -0
  13. package/dist/cli/{chunk-6XWXIVQ3.js → chunk-AMSK3ZLB.js} +2 -2
  14. package/dist/cli/chunk-AMSK3ZLB.js.map +1 -0
  15. package/dist/cli/{chunk-A5PBEIJ7.js → chunk-AOYUW3HR.js} +37 -4
  16. package/dist/cli/chunk-AOYUW3HR.js.map +1 -0
  17. package/dist/cli/{chunk-3YRTIWFX.js → chunk-ARBGTNHM.js} +2 -2
  18. package/dist/cli/{chunk-3BTK5BHI.js → chunk-B4MOGWHW.js} +2 -2
  19. package/dist/cli/{chunk-5AIDYVH2.js → chunk-CFJY64UA.js} +2 -2
  20. package/dist/cli/{chunk-SBHF5NWD.js → chunk-CGVW5W7N.js} +14 -14
  21. package/dist/cli/{chunk-SBHF5NWD.js.map → chunk-CGVW5W7N.js.map} +1 -1
  22. package/dist/cli/{chunk-DVD67FXQ.js → chunk-CLHMV6OL.js} +568 -66
  23. package/dist/cli/chunk-CLHMV6OL.js.map +1 -0
  24. package/dist/cli/{chunk-2WUEAI2I.js → chunk-CPCUMMSR.js} +3 -3
  25. package/dist/cli/{chunk-JHWQDJZA.js → chunk-CTRM32BP.js} +2 -2
  26. package/dist/cli/{chunk-544J4PXD.js → chunk-D6WRFR6V.js} +5 -5
  27. package/dist/cli/{chunk-N4SEBLU4.js → chunk-DLTE4GBY.js} +3 -3
  28. package/dist/cli/{chunk-NRROJXXT.js → chunk-FY5UERSG.js} +9 -9
  29. package/dist/cli/{chunk-C2MRSJTV.js → chunk-GFJJEW3Z.js} +18 -10
  30. package/dist/cli/chunk-GFJJEW3Z.js.map +1 -0
  31. package/dist/cli/{chunk-R6KIHEF3.js → chunk-GNRKXRRE.js} +743 -660
  32. package/dist/cli/chunk-GNRKXRRE.js.map +1 -0
  33. package/dist/cli/{chunk-SXSAWOB7.js → chunk-HI6THNAZ.js} +19 -17
  34. package/dist/cli/chunk-HI6THNAZ.js.map +1 -0
  35. package/dist/cli/{chunk-K4YQFULP.js → chunk-HNZ4727T.js} +15 -15
  36. package/dist/cli/chunk-I3NE5S63.js +54 -0
  37. package/dist/cli/{chunk-EAMXOWUW.js.map → chunk-I3NE5S63.js.map} +1 -1
  38. package/dist/cli/{chunk-FEZK652I.js → chunk-MVLPXZAA.js} +834 -10
  39. package/dist/cli/chunk-MVLPXZAA.js.map +1 -0
  40. package/dist/cli/{chunk-36BM7INR.js → chunk-MW64SQUE.js} +2 -2
  41. package/dist/cli/{chunk-Z3MKG7MQ.js → chunk-OMNRXZNA.js} +2 -2
  42. package/dist/cli/{chunk-7YPMTE3U.js → chunk-RCC73DWQ.js} +5 -9
  43. package/dist/cli/chunk-RCC73DWQ.js.map +1 -0
  44. package/dist/cli/{chunk-2HVTBFCI.js → chunk-RHQOGG43.js} +5 -3
  45. package/dist/cli/chunk-RHQOGG43.js.map +1 -0
  46. package/dist/cli/{chunk-EWVFGYT6.js → chunk-VVPV5HU6.js} +2 -2
  47. package/dist/cli/{chunk-7YB26OQO.js → chunk-WPY7AFS6.js} +2 -2
  48. package/dist/cli/{chunk-BM6BBFAV.js → chunk-XBYHNZ5Z.js} +2 -2
  49. package/dist/cli/{chunk-WPOKBW5E.js → chunk-XNMXVL6C.js} +2 -2
  50. package/dist/cli/{chunk-SVD4UPRQ.js → chunk-XUZHBQSM.js} +2 -2
  51. package/dist/cli/{chunk-Q46B3Z7H.js → chunk-YMYX6QTC.js} +8 -5
  52. package/dist/cli/{chunk-Q46B3Z7H.js.map → chunk-YMYX6QTC.js.map} +1 -1
  53. package/dist/cli/{chunk-K3QJ3GKI.js → chunk-Z663GVUB.js} +3 -3
  54. package/dist/cli/{code-BMXLBC7D.js → code-WN6D4VZO.js} +35 -36
  55. package/dist/cli/{code-BMXLBC7D.js.map → code-WN6D4VZO.js.map} +1 -1
  56. package/dist/cli/{commands-E4RZXMF6.js → commands-DHETOY7O.js} +4 -4
  57. package/dist/cli/{commit-KSRQ64IL.js → commit-BBUYAKZV.js} +3 -3
  58. package/dist/cli/{config-QNDONOTU.js → config-KV7VV5LG.js} +4 -2
  59. package/dist/cli/{desktop-H3ZHIMDA.js → desktop-LJVXWXNF.js} +557 -70
  60. package/dist/cli/desktop-LJVXWXNF.js.map +1 -0
  61. package/dist/cli/diff-2JHMQAHI.js +165 -0
  62. package/dist/cli/{diff-I4PYI43W.js.map → diff-2JHMQAHI.js.map} +1 -1
  63. package/dist/cli/{doctor-Y2E4MY2F.js → doctor-GI5LOEZL.js} +11 -11
  64. package/dist/cli/{events-47HOT7ZA.js → events-LBKMLFM4.js} +5 -5
  65. package/dist/cli/index.js +40 -39
  66. package/dist/cli/index.js.map +1 -1
  67. package/dist/cli/{mcp-76DK63ZB.js → mcp-DKEJK5ND.js} +3 -3
  68. package/dist/cli/{mcp-browse-SDNUGO74.js → mcp-browse-V7KWDY32.js} +15 -15
  69. package/dist/cli/{mcp-browse-SDNUGO74.js.map → mcp-browse-V7KWDY32.js.map} +1 -1
  70. package/dist/cli/{mcp-inspect-BL5DEO5M.js → mcp-inspect-MTABNHVM.js} +5 -5
  71. package/dist/cli/{prompt-JLATI3P7.js → prompt-ATI7DKHF.js} +5 -5
  72. package/dist/cli/{prune-sessions-WHZDFUKD.js → prune-sessions-YQQSZTZS.js} +4 -4
  73. package/dist/cli/{replay-MHXS7C7Z.js → replay-ZJQ4I4CJ.js} +30 -30
  74. package/dist/cli/{replay-MHXS7C7Z.js.map → replay-ZJQ4I4CJ.js.map} +1 -1
  75. package/dist/cli/{run-SXNCPRJE.js → run-HFPRNWJY.js} +22 -22
  76. package/dist/cli/{server-GEHOE6CO.js → server-UHKO2VVM.js} +23 -23
  77. package/dist/cli/{sessions-EPBFYISL.js → sessions-IQEWWUH3.js} +16 -16
  78. package/dist/cli/setup-5BYKCL62.js +502 -0
  79. package/dist/cli/setup-5BYKCL62.js.map +1 -0
  80. package/dist/cli/{stats-4WB4XHBP.js → stats-OFCGOQMZ.js} +6 -6
  81. package/dist/cli/{version-4SP3DLLH.js → version-EODUFAAI.js} +16 -16
  82. package/dist/index.d.ts +12 -1
  83. package/dist/index.js +613 -78
  84. package/dist/index.js.map +1 -1
  85. package/package.json +21 -3
  86. package/dist/cli/chat-NJ2Q5KHG.js +0 -50
  87. package/dist/cli/chunk-2HVTBFCI.js.map +0 -1
  88. package/dist/cli/chunk-5BBC6YMV.js +0 -832
  89. package/dist/cli/chunk-5BBC6YMV.js.map +0 -1
  90. package/dist/cli/chunk-6XWXIVQ3.js.map +0 -1
  91. package/dist/cli/chunk-7YPMTE3U.js.map +0 -1
  92. package/dist/cli/chunk-A5PBEIJ7.js.map +0 -1
  93. package/dist/cli/chunk-C2MRSJTV.js.map +0 -1
  94. package/dist/cli/chunk-DVD67FXQ.js.map +0 -1
  95. package/dist/cli/chunk-EAMXOWUW.js +0 -54
  96. package/dist/cli/chunk-FEZK652I.js.map +0 -1
  97. package/dist/cli/chunk-R6KIHEF3.js.map +0 -1
  98. package/dist/cli/chunk-SXSAWOB7.js.map +0 -1
  99. package/dist/cli/chunk-UO6E7FN3.js.map +0 -1
  100. package/dist/cli/chunk-UPW544V3.js +0 -96
  101. package/dist/cli/chunk-UPW544V3.js.map +0 -1
  102. package/dist/cli/desktop-H3ZHIMDA.js.map +0 -1
  103. package/dist/cli/devtools-HW3WDT3Q.js +0 -91
  104. package/dist/cli/devtools-HW3WDT3Q.js.map +0 -1
  105. package/dist/cli/diff-I4PYI43W.js +0 -165
  106. package/dist/cli/setup-IW2XR5XI.js +0 -593
  107. package/dist/cli/setup-IW2XR5XI.js.map +0 -1
  108. /package/dist/cli/{acp-XEUHGG7X.js.map → acp-NEUYWGUU.js.map} +0 -0
  109. /package/dist/cli/{chat-NJ2Q5KHG.js.map → chat-QA6IVFJD.js.map} +0 -0
  110. /package/dist/cli/{chunk-HGK57NBN.js.map → chunk-2W4F3RIZ.js.map} +0 -0
  111. /package/dist/cli/{chunk-UMZ6KHTS.js.map → chunk-5YLEKX2V.js.map} +0 -0
  112. /package/dist/cli/{chunk-BA5R6BAE.js.map → chunk-6QBUXA73.js.map} +0 -0
  113. /package/dist/cli/{chunk-3YRTIWFX.js.map → chunk-ARBGTNHM.js.map} +0 -0
  114. /package/dist/cli/{chunk-3BTK5BHI.js.map → chunk-B4MOGWHW.js.map} +0 -0
  115. /package/dist/cli/{chunk-5AIDYVH2.js.map → chunk-CFJY64UA.js.map} +0 -0
  116. /package/dist/cli/{chunk-2WUEAI2I.js.map → chunk-CPCUMMSR.js.map} +0 -0
  117. /package/dist/cli/{chunk-JHWQDJZA.js.map → chunk-CTRM32BP.js.map} +0 -0
  118. /package/dist/cli/{chunk-544J4PXD.js.map → chunk-D6WRFR6V.js.map} +0 -0
  119. /package/dist/cli/{chunk-N4SEBLU4.js.map → chunk-DLTE4GBY.js.map} +0 -0
  120. /package/dist/cli/{chunk-NRROJXXT.js.map → chunk-FY5UERSG.js.map} +0 -0
  121. /package/dist/cli/{chunk-K4YQFULP.js.map → chunk-HNZ4727T.js.map} +0 -0
  122. /package/dist/cli/{chunk-36BM7INR.js.map → chunk-MW64SQUE.js.map} +0 -0
  123. /package/dist/cli/{chunk-Z3MKG7MQ.js.map → chunk-OMNRXZNA.js.map} +0 -0
  124. /package/dist/cli/{chunk-EWVFGYT6.js.map → chunk-VVPV5HU6.js.map} +0 -0
  125. /package/dist/cli/{chunk-7YB26OQO.js.map → chunk-WPY7AFS6.js.map} +0 -0
  126. /package/dist/cli/{chunk-BM6BBFAV.js.map → chunk-XBYHNZ5Z.js.map} +0 -0
  127. /package/dist/cli/{chunk-WPOKBW5E.js.map → chunk-XNMXVL6C.js.map} +0 -0
  128. /package/dist/cli/{chunk-SVD4UPRQ.js.map → chunk-XUZHBQSM.js.map} +0 -0
  129. /package/dist/cli/{chunk-K3QJ3GKI.js.map → chunk-Z663GVUB.js.map} +0 -0
  130. /package/dist/cli/{commands-E4RZXMF6.js.map → commands-DHETOY7O.js.map} +0 -0
  131. /package/dist/cli/{commit-KSRQ64IL.js.map → commit-BBUYAKZV.js.map} +0 -0
  132. /package/dist/cli/{config-QNDONOTU.js.map → config-KV7VV5LG.js.map} +0 -0
  133. /package/dist/cli/{doctor-Y2E4MY2F.js.map → doctor-GI5LOEZL.js.map} +0 -0
  134. /package/dist/cli/{events-47HOT7ZA.js.map → events-LBKMLFM4.js.map} +0 -0
  135. /package/dist/cli/{mcp-76DK63ZB.js.map → mcp-DKEJK5ND.js.map} +0 -0
  136. /package/dist/cli/{mcp-inspect-BL5DEO5M.js.map → mcp-inspect-MTABNHVM.js.map} +0 -0
  137. /package/dist/cli/{prompt-JLATI3P7.js.map → prompt-ATI7DKHF.js.map} +0 -0
  138. /package/dist/cli/{prune-sessions-WHZDFUKD.js.map → prune-sessions-YQQSZTZS.js.map} +0 -0
  139. /package/dist/cli/{run-SXNCPRJE.js.map → run-HFPRNWJY.js.map} +0 -0
  140. /package/dist/cli/{server-GEHOE6CO.js.map → server-UHKO2VVM.js.map} +0 -0
  141. /package/dist/cli/{sessions-EPBFYISL.js.map → sessions-IQEWWUH3.js.map} +0 -0
  142. /package/dist/cli/{stats-4WB4XHBP.js.map → stats-OFCGOQMZ.js.map} +0 -0
  143. /package/dist/cli/{version-4SP3DLLH.js.map → version-EODUFAAI.js.map} +0 -0
@@ -1,165 +0,0 @@
1
- #!/usr/bin/env node
2
- import { createRequire as __cr } from 'node:module'; if (typeof globalThis.require === 'undefined') { globalThis.require = __cr(import.meta.url); }
3
- import {
4
- RecordView
5
- } from "./chunk-EAMXOWUW.js";
6
- import {
7
- diffTranscripts,
8
- findNextDivergence,
9
- findPrevDivergence,
10
- renderMarkdown,
11
- renderSummaryTable
12
- } from "./chunk-36BM7INR.js";
13
- import {
14
- readTranscript
15
- } from "./chunk-544J4PXD.js";
16
- import "./chunk-BA5R6BAE.js";
17
- import {
18
- Box_default,
19
- Static,
20
- Text,
21
- render_default,
22
- require_react,
23
- use_app_default,
24
- use_input_default
25
- } from "./chunk-UO6E7FN3.js";
26
- import "./chunk-C2MRSJTV.js";
27
- import "./chunk-25T6CVUP.js";
28
- import {
29
- t
30
- } from "./chunk-DVD67FXQ.js";
31
- import "./chunk-A5PBEIJ7.js";
32
- import {
33
- __toESM
34
- } from "./chunk-TUK7OWJA.js";
35
-
36
- // src/cli/commands/diff.ts
37
- import { writeFileSync } from "fs";
38
- import { basename } from "path";
39
- var import_react2 = __toESM(require_react(), 1);
40
-
41
- // src/cli/ui/DiffApp.tsx
42
- var import_react = __toESM(require_react(), 1);
43
- function DiffApp({ report }) {
44
- const { exit } = use_app_default();
45
- const maxIdx = Math.max(0, report.pairs.length - 1);
46
- const initialIdx = report.firstDivergenceTurn ? report.pairs.findIndex((p) => p.turn === report.firstDivergenceTurn) : 0;
47
- const [idx, setIdx] = (0, import_react.useState)(Math.max(0, initialIdx));
48
- use_input_default((input, key) => {
49
- if (input === "q" || key.ctrl && input === "c") {
50
- exit();
51
- return;
52
- }
53
- if (input === "j" || key.downArrow || input === " " || key.return) {
54
- setIdx((i) => Math.min(maxIdx, i + 1));
55
- } else if (input === "k" || key.upArrow) {
56
- setIdx((i) => Math.max(0, i - 1));
57
- } else if (input === "g") {
58
- setIdx(0);
59
- } else if (input === "G") {
60
- setIdx(maxIdx);
61
- } else if (input === "n") {
62
- const next = findNextDivergence(report.pairs, idx);
63
- if (next !== -1) setIdx(next);
64
- } else if (input === "N" || input === "p") {
65
- const prev = findPrevDivergence(report.pairs, idx);
66
- if (prev !== -1) setIdx(prev);
67
- }
68
- });
69
- const pair = report.pairs[idx];
70
- return /* @__PURE__ */ import_react.default.createElement(Box_default, { flexDirection: "column" }, /* @__PURE__ */ import_react.default.createElement(DiffHeader, { report }), /* @__PURE__ */ import_react.default.createElement(Box_default, { marginTop: 1, paddingX: 1, justifyContent: "space-between" }, /* @__PURE__ */ import_react.default.createElement(Text, { color: "cyan", bold: true }, t("diffApp.turnLabel", {
71
- turn: pair?.turn ?? "?",
72
- current: idx + 1,
73
- total: report.pairs.length
74
- })), /* @__PURE__ */ import_react.default.createElement(Text, null, pair ? /* @__PURE__ */ import_react.default.createElement(KindBadge, { kind: pair.kind }) : null)), /* @__PURE__ */ import_react.default.createElement(Box_default, { flexDirection: "row", marginTop: 1 }, /* @__PURE__ */ import_react.default.createElement(Pane, { label: report.a.label, headerColor: "blue", records: paneRecords(pair, "a") }), /* @__PURE__ */ import_react.default.createElement(Pane, { label: report.b.label, headerColor: "magenta", records: paneRecords(pair, "b") })), pair?.divergenceNote ? /* @__PURE__ */ import_react.default.createElement(Box_default, { marginTop: 1, paddingX: 1 }, /* @__PURE__ */ import_react.default.createElement(Text, { color: "yellow" }, "\u2605 "), /* @__PURE__ */ import_react.default.createElement(Text, null, pair.divergenceNote)) : null, /* @__PURE__ */ import_react.default.createElement(Box_default, { marginTop: 1, paddingX: 1, borderStyle: "single", borderColor: "gray" }, /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "j"), "/", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "\\u2193"), " next \\u00b7 ", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "k"), "/", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "\\u2191"), " prev \\u00b7 ", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "n"), " next-diverge \\u00b7", " ", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "N"), "/", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "p"), " prev-diverge \\u00b7 ", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "g"), "/", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "G"), " first/last \\u00b7 ", /* @__PURE__ */ import_react.default.createElement(Text, { bold: true }, "q"), " quit")));
75
- }
76
- function DiffHeader({ report }) {
77
- const a = report.a;
78
- const b = report.b;
79
- const cacheDelta = b.stats.cacheHitRatio - a.stats.cacheHitRatio;
80
- const costDelta = a.stats.totalCostUsd > 0 ? (b.stats.totalCostUsd - a.stats.totalCostUsd) / a.stats.totalCostUsd * 100 : 0;
81
- const aStable = a.stats.prefixHashes.length <= 1;
82
- const bStable = b.stats.prefixHashes.length <= 1;
83
- let prefixLine = null;
84
- if (aStable !== bStable) {
85
- const stableLabel = aStable ? report.a.label : report.b.label;
86
- const churnLabel = aStable ? report.b.label : report.a.label;
87
- const churnCount = aStable ? b.stats.prefixHashes.length : a.stats.prefixHashes.length;
88
- prefixLine = `${stableLabel} stayed byte-stable; ${churnLabel} churned ${churnCount} distinct prefixes.`;
89
- } else if (a.stats.prefixHashes[0] && a.stats.prefixHashes[0] === b.stats.prefixHashes[0]) {
90
- prefixLine = `shared prefix hash ${a.stats.prefixHashes[0].slice(0, 12)}\u2026 \u2014 cache delta attributable to log stability, not prompt change.`;
91
- }
92
- return /* @__PURE__ */ import_react.default.createElement(Box_default, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 1 }, /* @__PURE__ */ import_react.default.createElement(Box_default, { justifyContent: "space-between" }, /* @__PURE__ */ import_react.default.createElement(Text, null, /* @__PURE__ */ import_react.default.createElement(Text, { color: "cyan", bold: true }, t("diffApp.title")), /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, " \\u00b7 A="), /* @__PURE__ */ import_react.default.createElement(Text, { color: "blue" }, a.label), /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, " vs B="), /* @__PURE__ */ import_react.default.createElement(Text, { color: "magenta" }, b.label)), /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, t("diffApp.turnsAligned", { count: report.pairs.length }))), /* @__PURE__ */ import_react.default.createElement(Box_default, { marginTop: 1, gap: 3 }, /* @__PURE__ */ import_react.default.createElement(Text, null, /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, "cache "), /* @__PURE__ */ import_react.default.createElement(Text, null, (a.stats.cacheHitRatio * 100).toFixed(1), "%"), /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, " \u2192 "), /* @__PURE__ */ import_react.default.createElement(Text, null, (b.stats.cacheHitRatio * 100).toFixed(1), "%"), /* @__PURE__ */ import_react.default.createElement(Text, { color: cacheDelta >= 0 ? "green" : "red", bold: true }, " ", cacheDelta >= 0 ? "+" : "", (cacheDelta * 100).toFixed(1), "pp")), /* @__PURE__ */ import_react.default.createElement(Text, null, /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, "cost "), /* @__PURE__ */ import_react.default.createElement(Text, null, "$", a.stats.totalCostUsd.toFixed(6)), /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, " \u2192 "), /* @__PURE__ */ import_react.default.createElement(Text, null, "$", b.stats.totalCostUsd.toFixed(6)), /* @__PURE__ */ import_react.default.createElement(Text, { color: costDelta <= 0 ? "green" : "red", bold: true }, " ", costDelta >= 0 ? "+" : "", costDelta.toFixed(1), "%")), /* @__PURE__ */ import_react.default.createElement(Text, null, /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true }, "model calls "), /* @__PURE__ */ import_react.default.createElement(Text, null, a.stats.turns, " \u2192 ", b.stats.turns))), prefixLine ? /* @__PURE__ */ import_react.default.createElement(Box_default, { marginTop: 1 }, /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true, italic: true }, prefixLine)) : null);
93
- }
94
- function Pane({
95
- label,
96
- headerColor,
97
- records
98
- }) {
99
- return /* @__PURE__ */ import_react.default.createElement(
100
- Box_default,
101
- {
102
- flexDirection: "column",
103
- flexGrow: 1,
104
- paddingX: 1,
105
- borderStyle: "single",
106
- borderColor: headerColor
107
- },
108
- /* @__PURE__ */ import_react.default.createElement(Text, { color: headerColor, bold: true }, label),
109
- records.length === 0 ? /* @__PURE__ */ import_react.default.createElement(Box_default, { marginTop: 1 }, /* @__PURE__ */ import_react.default.createElement(Text, { dimColor: true, italic: true }, t("diffApp.paneEmpty"))) : /* @__PURE__ */ import_react.default.createElement(Static, { items: records.map((rec, i) => ({ key: `${label}-${i}`, rec })) }, ({ key, rec }) => /* @__PURE__ */ import_react.default.createElement(RecordView, { key, rec, compact: true }))
110
- );
111
- }
112
- function KindBadge({ kind }) {
113
- if (kind === "match") {
114
- return /* @__PURE__ */ import_react.default.createElement(Text, { color: "green" }, t("diffApp.kindMatch"));
115
- }
116
- if (kind === "diverge") {
117
- return /* @__PURE__ */ import_react.default.createElement(Text, { color: "yellow" }, t("diffApp.kindDiverge"));
118
- }
119
- if (kind === "only_in_a") {
120
- return /* @__PURE__ */ import_react.default.createElement(Text, { color: "blue" }, t("diffApp.kindOnlyInA"));
121
- }
122
- return /* @__PURE__ */ import_react.default.createElement(Text, { color: "magenta" }, t("diffApp.kindOnlyInB"));
123
- }
124
- function paneRecords(pair, side) {
125
- if (!pair) return [];
126
- const tools = side === "a" ? pair.aTools : pair.bTools;
127
- const assistant = side === "a" ? pair.aAssistant : pair.bAssistant;
128
- const out = [...tools];
129
- if (assistant) out.push(assistant);
130
- return out;
131
- }
132
-
133
- // src/cli/commands/diff.ts
134
- async function diffCommand(opts) {
135
- const aParsed = readTranscript(opts.a);
136
- const bParsed = readTranscript(opts.b);
137
- const report = diffTranscripts(
138
- { label: opts.labelA ?? basename(opts.a), parsed: aParsed },
139
- { label: opts.labelB ?? basename(opts.b), parsed: bParsed }
140
- );
141
- const wantMarkdown = !!opts.mdPath;
142
- const wantPrint = opts.print || !process.stdout.isTTY;
143
- const wantTui = opts.tui || !wantPrint && !wantMarkdown;
144
- if (wantMarkdown) {
145
- console.log(renderSummaryTable(report));
146
- const md = renderMarkdown(report);
147
- writeFileSync(opts.mdPath, md, "utf8");
148
- console.log(`
149
- markdown report written to ${opts.mdPath}`);
150
- return;
151
- }
152
- if (wantTui) {
153
- const { waitUntilExit } = render_default(import_react2.default.createElement(DiffApp, { report }), {
154
- exitOnCtrlC: true,
155
- patchConsole: false
156
- });
157
- await waitUntilExit();
158
- return;
159
- }
160
- console.log(renderSummaryTable(report));
161
- }
162
- export {
163
- diffCommand
164
- };
165
- //# sourceMappingURL=diff-I4PYI43W.js.map