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.
- package/dashboard/dist/app.css +1 -1
- package/dashboard/dist/app.js +3 -3
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/{acp-XEUHGG7X.js → acp-NEUYWGUU.js} +26 -26
- package/dist/cli/chat-QA6IVFJD.js +49 -0
- package/dist/cli/{chunk-HGK57NBN.js → chunk-2W4F3RIZ.js} +2 -2
- package/dist/cli/{chunk-UO6E7FN3.js → chunk-3OXD5CBM.js} +32756 -31192
- package/dist/cli/chunk-3OXD5CBM.js.map +1 -0
- package/dist/cli/{chunk-UMZ6KHTS.js → chunk-5YLEKX2V.js} +2 -2
- package/dist/cli/{chunk-BA5R6BAE.js → chunk-6QBUXA73.js} +2 -2
- package/dist/cli/chunk-77JIQ7SL.js +40 -0
- package/dist/cli/chunk-77JIQ7SL.js.map +1 -0
- package/dist/cli/{chunk-6XWXIVQ3.js → chunk-AMSK3ZLB.js} +2 -2
- package/dist/cli/chunk-AMSK3ZLB.js.map +1 -0
- package/dist/cli/{chunk-A5PBEIJ7.js → chunk-AOYUW3HR.js} +37 -4
- package/dist/cli/chunk-AOYUW3HR.js.map +1 -0
- package/dist/cli/{chunk-3YRTIWFX.js → chunk-ARBGTNHM.js} +2 -2
- package/dist/cli/{chunk-3BTK5BHI.js → chunk-B4MOGWHW.js} +2 -2
- package/dist/cli/{chunk-5AIDYVH2.js → chunk-CFJY64UA.js} +2 -2
- package/dist/cli/{chunk-SBHF5NWD.js → chunk-CGVW5W7N.js} +14 -14
- package/dist/cli/{chunk-SBHF5NWD.js.map → chunk-CGVW5W7N.js.map} +1 -1
- package/dist/cli/{chunk-DVD67FXQ.js → chunk-CLHMV6OL.js} +568 -66
- package/dist/cli/chunk-CLHMV6OL.js.map +1 -0
- package/dist/cli/{chunk-2WUEAI2I.js → chunk-CPCUMMSR.js} +3 -3
- package/dist/cli/{chunk-JHWQDJZA.js → chunk-CTRM32BP.js} +2 -2
- package/dist/cli/{chunk-544J4PXD.js → chunk-D6WRFR6V.js} +5 -5
- package/dist/cli/{chunk-N4SEBLU4.js → chunk-DLTE4GBY.js} +3 -3
- package/dist/cli/{chunk-NRROJXXT.js → chunk-FY5UERSG.js} +9 -9
- package/dist/cli/{chunk-C2MRSJTV.js → chunk-GFJJEW3Z.js} +18 -10
- package/dist/cli/chunk-GFJJEW3Z.js.map +1 -0
- package/dist/cli/{chunk-R6KIHEF3.js → chunk-GNRKXRRE.js} +743 -660
- package/dist/cli/chunk-GNRKXRRE.js.map +1 -0
- package/dist/cli/{chunk-SXSAWOB7.js → chunk-HI6THNAZ.js} +19 -17
- package/dist/cli/chunk-HI6THNAZ.js.map +1 -0
- package/dist/cli/{chunk-K4YQFULP.js → chunk-HNZ4727T.js} +15 -15
- package/dist/cli/chunk-I3NE5S63.js +54 -0
- package/dist/cli/{chunk-EAMXOWUW.js.map → chunk-I3NE5S63.js.map} +1 -1
- package/dist/cli/{chunk-FEZK652I.js → chunk-MVLPXZAA.js} +834 -10
- package/dist/cli/chunk-MVLPXZAA.js.map +1 -0
- package/dist/cli/{chunk-36BM7INR.js → chunk-MW64SQUE.js} +2 -2
- package/dist/cli/{chunk-Z3MKG7MQ.js → chunk-OMNRXZNA.js} +2 -2
- package/dist/cli/{chunk-7YPMTE3U.js → chunk-RCC73DWQ.js} +5 -9
- package/dist/cli/chunk-RCC73DWQ.js.map +1 -0
- package/dist/cli/{chunk-2HVTBFCI.js → chunk-RHQOGG43.js} +5 -3
- package/dist/cli/chunk-RHQOGG43.js.map +1 -0
- package/dist/cli/{chunk-EWVFGYT6.js → chunk-VVPV5HU6.js} +2 -2
- package/dist/cli/{chunk-7YB26OQO.js → chunk-WPY7AFS6.js} +2 -2
- package/dist/cli/{chunk-BM6BBFAV.js → chunk-XBYHNZ5Z.js} +2 -2
- package/dist/cli/{chunk-WPOKBW5E.js → chunk-XNMXVL6C.js} +2 -2
- package/dist/cli/{chunk-SVD4UPRQ.js → chunk-XUZHBQSM.js} +2 -2
- package/dist/cli/{chunk-Q46B3Z7H.js → chunk-YMYX6QTC.js} +8 -5
- package/dist/cli/{chunk-Q46B3Z7H.js.map → chunk-YMYX6QTC.js.map} +1 -1
- package/dist/cli/{chunk-K3QJ3GKI.js → chunk-Z663GVUB.js} +3 -3
- package/dist/cli/{code-BMXLBC7D.js → code-WN6D4VZO.js} +35 -36
- package/dist/cli/{code-BMXLBC7D.js.map → code-WN6D4VZO.js.map} +1 -1
- package/dist/cli/{commands-E4RZXMF6.js → commands-DHETOY7O.js} +4 -4
- package/dist/cli/{commit-KSRQ64IL.js → commit-BBUYAKZV.js} +3 -3
- package/dist/cli/{config-QNDONOTU.js → config-KV7VV5LG.js} +4 -2
- package/dist/cli/{desktop-H3ZHIMDA.js → desktop-LJVXWXNF.js} +557 -70
- package/dist/cli/desktop-LJVXWXNF.js.map +1 -0
- package/dist/cli/diff-2JHMQAHI.js +165 -0
- package/dist/cli/{diff-I4PYI43W.js.map → diff-2JHMQAHI.js.map} +1 -1
- package/dist/cli/{doctor-Y2E4MY2F.js → doctor-GI5LOEZL.js} +11 -11
- package/dist/cli/{events-47HOT7ZA.js → events-LBKMLFM4.js} +5 -5
- package/dist/cli/index.js +40 -39
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/{mcp-76DK63ZB.js → mcp-DKEJK5ND.js} +3 -3
- package/dist/cli/{mcp-browse-SDNUGO74.js → mcp-browse-V7KWDY32.js} +15 -15
- package/dist/cli/{mcp-browse-SDNUGO74.js.map → mcp-browse-V7KWDY32.js.map} +1 -1
- package/dist/cli/{mcp-inspect-BL5DEO5M.js → mcp-inspect-MTABNHVM.js} +5 -5
- package/dist/cli/{prompt-JLATI3P7.js → prompt-ATI7DKHF.js} +5 -5
- package/dist/cli/{prune-sessions-WHZDFUKD.js → prune-sessions-YQQSZTZS.js} +4 -4
- package/dist/cli/{replay-MHXS7C7Z.js → replay-ZJQ4I4CJ.js} +30 -30
- package/dist/cli/{replay-MHXS7C7Z.js.map → replay-ZJQ4I4CJ.js.map} +1 -1
- package/dist/cli/{run-SXNCPRJE.js → run-HFPRNWJY.js} +22 -22
- package/dist/cli/{server-GEHOE6CO.js → server-UHKO2VVM.js} +23 -23
- package/dist/cli/{sessions-EPBFYISL.js → sessions-IQEWWUH3.js} +16 -16
- package/dist/cli/setup-5BYKCL62.js +502 -0
- package/dist/cli/setup-5BYKCL62.js.map +1 -0
- package/dist/cli/{stats-4WB4XHBP.js → stats-OFCGOQMZ.js} +6 -6
- package/dist/cli/{version-4SP3DLLH.js → version-EODUFAAI.js} +16 -16
- package/dist/index.d.ts +12 -1
- package/dist/index.js +613 -78
- package/dist/index.js.map +1 -1
- package/package.json +21 -3
- package/dist/cli/chat-NJ2Q5KHG.js +0 -50
- package/dist/cli/chunk-2HVTBFCI.js.map +0 -1
- package/dist/cli/chunk-5BBC6YMV.js +0 -832
- package/dist/cli/chunk-5BBC6YMV.js.map +0 -1
- package/dist/cli/chunk-6XWXIVQ3.js.map +0 -1
- package/dist/cli/chunk-7YPMTE3U.js.map +0 -1
- package/dist/cli/chunk-A5PBEIJ7.js.map +0 -1
- package/dist/cli/chunk-C2MRSJTV.js.map +0 -1
- package/dist/cli/chunk-DVD67FXQ.js.map +0 -1
- package/dist/cli/chunk-EAMXOWUW.js +0 -54
- package/dist/cli/chunk-FEZK652I.js.map +0 -1
- package/dist/cli/chunk-R6KIHEF3.js.map +0 -1
- package/dist/cli/chunk-SXSAWOB7.js.map +0 -1
- package/dist/cli/chunk-UO6E7FN3.js.map +0 -1
- package/dist/cli/chunk-UPW544V3.js +0 -96
- package/dist/cli/chunk-UPW544V3.js.map +0 -1
- package/dist/cli/desktop-H3ZHIMDA.js.map +0 -1
- package/dist/cli/devtools-HW3WDT3Q.js +0 -91
- package/dist/cli/devtools-HW3WDT3Q.js.map +0 -1
- package/dist/cli/diff-I4PYI43W.js +0 -165
- package/dist/cli/setup-IW2XR5XI.js +0 -593
- package/dist/cli/setup-IW2XR5XI.js.map +0 -1
- /package/dist/cli/{acp-XEUHGG7X.js.map → acp-NEUYWGUU.js.map} +0 -0
- /package/dist/cli/{chat-NJ2Q5KHG.js.map → chat-QA6IVFJD.js.map} +0 -0
- /package/dist/cli/{chunk-HGK57NBN.js.map → chunk-2W4F3RIZ.js.map} +0 -0
- /package/dist/cli/{chunk-UMZ6KHTS.js.map → chunk-5YLEKX2V.js.map} +0 -0
- /package/dist/cli/{chunk-BA5R6BAE.js.map → chunk-6QBUXA73.js.map} +0 -0
- /package/dist/cli/{chunk-3YRTIWFX.js.map → chunk-ARBGTNHM.js.map} +0 -0
- /package/dist/cli/{chunk-3BTK5BHI.js.map → chunk-B4MOGWHW.js.map} +0 -0
- /package/dist/cli/{chunk-5AIDYVH2.js.map → chunk-CFJY64UA.js.map} +0 -0
- /package/dist/cli/{chunk-2WUEAI2I.js.map → chunk-CPCUMMSR.js.map} +0 -0
- /package/dist/cli/{chunk-JHWQDJZA.js.map → chunk-CTRM32BP.js.map} +0 -0
- /package/dist/cli/{chunk-544J4PXD.js.map → chunk-D6WRFR6V.js.map} +0 -0
- /package/dist/cli/{chunk-N4SEBLU4.js.map → chunk-DLTE4GBY.js.map} +0 -0
- /package/dist/cli/{chunk-NRROJXXT.js.map → chunk-FY5UERSG.js.map} +0 -0
- /package/dist/cli/{chunk-K4YQFULP.js.map → chunk-HNZ4727T.js.map} +0 -0
- /package/dist/cli/{chunk-36BM7INR.js.map → chunk-MW64SQUE.js.map} +0 -0
- /package/dist/cli/{chunk-Z3MKG7MQ.js.map → chunk-OMNRXZNA.js.map} +0 -0
- /package/dist/cli/{chunk-EWVFGYT6.js.map → chunk-VVPV5HU6.js.map} +0 -0
- /package/dist/cli/{chunk-7YB26OQO.js.map → chunk-WPY7AFS6.js.map} +0 -0
- /package/dist/cli/{chunk-BM6BBFAV.js.map → chunk-XBYHNZ5Z.js.map} +0 -0
- /package/dist/cli/{chunk-WPOKBW5E.js.map → chunk-XNMXVL6C.js.map} +0 -0
- /package/dist/cli/{chunk-SVD4UPRQ.js.map → chunk-XUZHBQSM.js.map} +0 -0
- /package/dist/cli/{chunk-K3QJ3GKI.js.map → chunk-Z663GVUB.js.map} +0 -0
- /package/dist/cli/{commands-E4RZXMF6.js.map → commands-DHETOY7O.js.map} +0 -0
- /package/dist/cli/{commit-KSRQ64IL.js.map → commit-BBUYAKZV.js.map} +0 -0
- /package/dist/cli/{config-QNDONOTU.js.map → config-KV7VV5LG.js.map} +0 -0
- /package/dist/cli/{doctor-Y2E4MY2F.js.map → doctor-GI5LOEZL.js.map} +0 -0
- /package/dist/cli/{events-47HOT7ZA.js.map → events-LBKMLFM4.js.map} +0 -0
- /package/dist/cli/{mcp-76DK63ZB.js.map → mcp-DKEJK5ND.js.map} +0 -0
- /package/dist/cli/{mcp-inspect-BL5DEO5M.js.map → mcp-inspect-MTABNHVM.js.map} +0 -0
- /package/dist/cli/{prompt-JLATI3P7.js.map → prompt-ATI7DKHF.js.map} +0 -0
- /package/dist/cli/{prune-sessions-WHZDFUKD.js.map → prune-sessions-YQQSZTZS.js.map} +0 -0
- /package/dist/cli/{run-SXNCPRJE.js.map → run-HFPRNWJY.js.map} +0 -0
- /package/dist/cli/{server-GEHOE6CO.js.map → server-UHKO2VVM.js.map} +0 -0
- /package/dist/cli/{sessions-EPBFYISL.js.map → sessions-IQEWWUH3.js.map} +0 -0
- /package/dist/cli/{stats-4WB4XHBP.js.map → stats-OFCGOQMZ.js.map} +0 -0
- /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
|