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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/cli/commands/diff.ts","../../src/cli/ui/DiffApp.tsx"],"sourcesContent":["import { writeFileSync } from \"node:fs\";\nimport { basename } from \"node:path\";\nimport { render } from \"ink\";\nimport React from \"react\";\nimport { diffTranscripts, renderMarkdown, renderSummaryTable } from \"../../transcript/diff.js\";\nimport { readTranscript } from \"../../transcript/log.js\";\nimport { DiffApp } from \"../ui/DiffApp.js\";\n\nexport interface DiffOptions {\n a: string;\n b: string;\n mdPath?: string;\n labelA?: string;\n labelB?: string;\n /** Force stdout summary table (no Ink TUI). Auto when stdout isn't a TTY. */\n print?: boolean;\n /** Force the TUI even when stdout isn't a TTY (rare). */\n tui?: boolean;\n}\n\nexport async function diffCommand(opts: DiffOptions): Promise<void> {\n const aParsed = readTranscript(opts.a);\n const bParsed = readTranscript(opts.b);\n\n const report = diffTranscripts(\n { label: opts.labelA ?? basename(opts.a), parsed: aParsed },\n { label: opts.labelB ?? basename(opts.b), parsed: bParsed },\n );\n\n const wantMarkdown = !!opts.mdPath;\n const wantPrint = opts.print || !process.stdout.isTTY;\n const wantTui = opts.tui || (!wantPrint && !wantMarkdown);\n\n if (wantMarkdown) {\n // Markdown export implies the user wants an artifact, not a TUI.\n // Still echo the stdout summary to confirm the action.\n console.log(renderSummaryTable(report));\n const md = renderMarkdown(report);\n writeFileSync(opts.mdPath!, md, \"utf8\");\n console.log(`\\nmarkdown report written to ${opts.mdPath}`);\n return;\n }\n\n if (wantTui) {\n const { waitUntilExit } = render(React.createElement(DiffApp, { report }), {\n exitOnCtrlC: true,\n patchConsole: false,\n });\n await waitUntilExit();\n return;\n }\n\n // stdout fallback (piped, --print, or non-TTY)\n console.log(renderSummaryTable(report));\n}\n","/**\n * Ink TUI for `reasonix diff`. Split-pane: A on the left, B on the right,\n * shared cursor. Header shows aggregate deltas; footer shows the current\n * pair's divergence note (if any) + key cheat sheet.\n *\n * j/k moves the cursor by one turn; n/N jumps to the next/prev divergent\n * turn — which is the whole point of a diff tool. Quit with q.\n *\n * Pure navigation lives in src/diff.ts (findNextDivergence / findPrevDivergence).\n */\n\nimport { Box, Static, Text, useApp, useInput } from \"ink\";\nimport React, { useState } from \"react\";\nimport { t } from \"../../i18n/index.js\";\nimport {\n type DiffReport,\n type TurnPair,\n findNextDivergence,\n findPrevDivergence,\n} from \"../../transcript/diff.js\";\nimport { RecordView } from \"./RecordView.js\";\n\nexport interface DiffAppProps {\n report: DiffReport;\n}\n\nexport function DiffApp({ report }: DiffAppProps) {\n const { exit } = useApp();\n const maxIdx = Math.max(0, report.pairs.length - 1);\n // Start at the first divergence when one exists — that's the user's most\n // likely destination. Falls back to idx 0 for fully-matching diffs.\n const initialIdx = report.firstDivergenceTurn\n ? report.pairs.findIndex((p) => p.turn === report.firstDivergenceTurn)\n : 0;\n const [idx, setIdx] = useState(Math.max(0, initialIdx));\n\n useInput((input, key) => {\n if (input === \"q\" || (key.ctrl && input === \"c\")) {\n exit();\n return;\n }\n if (input === \"j\" || key.downArrow || input === \" \" || key.return) {\n setIdx((i) => Math.min(maxIdx, i + 1));\n } else if (input === \"k\" || key.upArrow) {\n setIdx((i) => Math.max(0, i - 1));\n } else if (input === \"g\") {\n setIdx(0);\n } else if (input === \"G\") {\n setIdx(maxIdx);\n } else if (input === \"n\") {\n const next = findNextDivergence(report.pairs, idx);\n if (next !== -1) setIdx(next);\n } else if (input === \"N\" || input === \"p\") {\n const prev = findPrevDivergence(report.pairs, idx);\n if (prev !== -1) setIdx(prev);\n }\n });\n\n const pair = report.pairs[idx];\n\n return (\n <Box flexDirection=\"column\">\n <DiffHeader report={report} />\n\n <Box marginTop={1} paddingX={1} justifyContent=\"space-between\">\n <Text color=\"cyan\" bold>\n {t(\"diffApp.turnLabel\", {\n turn: pair?.turn ?? \"?\",\n current: idx + 1,\n total: report.pairs.length,\n })}\n </Text>\n <Text>{pair ? <KindBadge kind={pair.kind} /> : null}</Text>\n </Box>\n\n <Box flexDirection=\"row\" marginTop={1}>\n <Pane label={report.a.label} headerColor=\"blue\" records={paneRecords(pair, \"a\")} />\n <Pane label={report.b.label} headerColor=\"magenta\" records={paneRecords(pair, \"b\")} />\n </Box>\n\n {pair?.divergenceNote ? (\n <Box marginTop={1} paddingX={1}>\n <Text color=\"yellow\">★ </Text>\n <Text>{pair.divergenceNote}</Text>\n </Box>\n ) : null}\n\n <Box marginTop={1} paddingX={1} borderStyle=\"single\" borderColor=\"gray\">\n <Text dimColor>\n <Text bold>j</Text>/<Text bold>\\u2193</Text> next \\u00b7 <Text bold>k</Text>/\n <Text bold>\\u2191</Text> prev \\u00b7 <Text bold>n</Text> next-diverge \\u00b7{\" \"}\n <Text bold>N</Text>/<Text bold>p</Text> prev-diverge \\u00b7 <Text bold>g</Text>/\n <Text bold>G</Text> first/last \\u00b7 <Text bold>q</Text> quit\n </Text>\n </Box>\n </Box>\n );\n}\n\n// ----------------------------------------------------------------------------\n\nfunction DiffHeader({ report }: { report: DiffReport }) {\n const a = report.a;\n const b = report.b;\n\n const cacheDelta = b.stats.cacheHitRatio - a.stats.cacheHitRatio;\n const costDelta =\n a.stats.totalCostUsd > 0\n ? ((b.stats.totalCostUsd - a.stats.totalCostUsd) / a.stats.totalCostUsd) * 100\n : 0;\n\n // Prefix stability one-liner (same logic as the stdout summary).\n const aStable = a.stats.prefixHashes.length <= 1;\n const bStable = b.stats.prefixHashes.length <= 1;\n let prefixLine: string | null = null;\n if (aStable !== bStable) {\n const stableLabel = aStable ? report.a.label : report.b.label;\n const churnLabel = aStable ? report.b.label : report.a.label;\n const churnCount = aStable ? b.stats.prefixHashes.length : a.stats.prefixHashes.length;\n prefixLine = `${stableLabel} stayed byte-stable; ${churnLabel} churned ${churnCount} distinct prefixes.`;\n } else if (a.stats.prefixHashes[0] && a.stats.prefixHashes[0] === b.stats.prefixHashes[0]) {\n prefixLine = `shared prefix hash ${a.stats.prefixHashes[0].slice(0, 12)}… — cache delta attributable to log stability, not prompt change.`;\n }\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"cyan\" paddingX={1}>\n <Box justifyContent=\"space-between\">\n <Text>\n <Text color=\"cyan\" bold>\n {t(\"diffApp.title\")}\n </Text>\n <Text dimColor> \\u00b7 A=</Text>\n <Text color=\"blue\">{a.label}</Text>\n <Text dimColor> vs B=</Text>\n <Text color=\"magenta\">{b.label}</Text>\n </Text>\n <Text dimColor>{t(\"diffApp.turnsAligned\", { count: report.pairs.length })}</Text>\n </Box>\n\n <Box marginTop={1} gap={3}>\n <Text>\n <Text dimColor>cache </Text>\n <Text>{(a.stats.cacheHitRatio * 100).toFixed(1)}%</Text>\n <Text dimColor> → </Text>\n <Text>{(b.stats.cacheHitRatio * 100).toFixed(1)}%</Text>\n <Text color={cacheDelta >= 0 ? \"green\" : \"red\"} bold>\n {\" \"}\n {cacheDelta >= 0 ? \"+\" : \"\"}\n {(cacheDelta * 100).toFixed(1)}pp\n </Text>\n </Text>\n <Text>\n <Text dimColor>cost </Text>\n <Text>${a.stats.totalCostUsd.toFixed(6)}</Text>\n <Text dimColor> → </Text>\n <Text>${b.stats.totalCostUsd.toFixed(6)}</Text>\n <Text color={costDelta <= 0 ? \"green\" : \"red\"} bold>\n {\" \"}\n {costDelta >= 0 ? \"+\" : \"\"}\n {costDelta.toFixed(1)}%\n </Text>\n </Text>\n <Text>\n <Text dimColor>model calls </Text>\n <Text>\n {a.stats.turns} → {b.stats.turns}\n </Text>\n </Text>\n </Box>\n\n {prefixLine ? (\n <Box marginTop={1}>\n <Text dimColor italic>\n {prefixLine}\n </Text>\n </Box>\n ) : null}\n </Box>\n );\n}\n\nfunction Pane({\n label,\n headerColor,\n records,\n}: {\n label: string;\n headerColor: \"blue\" | \"magenta\";\n records: TurnPair[\"aTools\"];\n}) {\n return (\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n paddingX={1}\n borderStyle=\"single\"\n borderColor={headerColor}\n >\n <Text color={headerColor} bold>\n {label}\n </Text>\n {records.length === 0 ? (\n <Box marginTop={1}>\n <Text dimColor italic>\n {t(\"diffApp.paneEmpty\")}\n </Text>\n </Box>\n ) : (\n <Static items={records.map((rec, i) => ({ key: `${label}-${i}`, rec }))}>\n {({ key, rec }) => <RecordView key={key} rec={rec} compact />}\n </Static>\n )}\n </Box>\n );\n}\n\nfunction KindBadge({ kind }: { kind: TurnPair[\"kind\"] }) {\n if (kind === \"match\") {\n return <Text color=\"green\">{t(\"diffApp.kindMatch\")}</Text>;\n }\n if (kind === \"diverge\") {\n return <Text color=\"yellow\">{t(\"diffApp.kindDiverge\")}</Text>;\n }\n if (kind === \"only_in_a\") {\n return <Text color=\"blue\">{t(\"diffApp.kindOnlyInA\")}</Text>;\n }\n return <Text color=\"magenta\">{t(\"diffApp.kindOnlyInB\")}</Text>;\n}\n\n// ----------------------------------------------------------------------------\n\nfunction paneRecords(pair: TurnPair | undefined, side: \"a\" | \"b\"): TurnPair[\"aTools\"] {\n if (!pair) return [];\n const tools = side === \"a\" ? pair.aTools : pair.bTools;\n const assistant = side === \"a\" ? pair.aAssistant : pair.bAssistant;\n const out: TurnPair[\"aTools\"] = [...tools];\n if (assistant) out.push(assistant);\n return out;\n}\n"],"mappings":"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","names":["import_react","React","React"]}
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/diff.ts","../../src/cli/ui/DiffApp.tsx"],"sourcesContent":["import { writeFileSync } from \"node:fs\";\nimport { basename } from \"node:path\";\nimport { render } from \"ink\";\nimport React from \"react\";\nimport { diffTranscripts, renderMarkdown, renderSummaryTable } from \"../../transcript/diff.js\";\nimport { readTranscript } from \"../../transcript/log.js\";\nimport { DiffApp } from \"../ui/DiffApp.js\";\n\nexport interface DiffOptions {\n a: string;\n b: string;\n mdPath?: string;\n labelA?: string;\n labelB?: string;\n /** Force stdout summary table (no Ink TUI). Auto when stdout isn't a TTY. */\n print?: boolean;\n /** Force the TUI even when stdout isn't a TTY (rare). */\n tui?: boolean;\n}\n\nexport async function diffCommand(opts: DiffOptions): Promise<void> {\n const aParsed = readTranscript(opts.a);\n const bParsed = readTranscript(opts.b);\n\n const report = diffTranscripts(\n { label: opts.labelA ?? basename(opts.a), parsed: aParsed },\n { label: opts.labelB ?? basename(opts.b), parsed: bParsed },\n );\n\n const wantMarkdown = !!opts.mdPath;\n const wantPrint = opts.print || !process.stdout.isTTY;\n const wantTui = opts.tui || (!wantPrint && !wantMarkdown);\n\n if (wantMarkdown) {\n // Markdown export implies the user wants an artifact, not a TUI.\n // Still echo the stdout summary to confirm the action.\n console.log(renderSummaryTable(report));\n const md = renderMarkdown(report);\n writeFileSync(opts.mdPath!, md, \"utf8\");\n console.log(`\\nmarkdown report written to ${opts.mdPath}`);\n return;\n }\n\n if (wantTui) {\n const { waitUntilExit } = render(React.createElement(DiffApp, { report }), {\n exitOnCtrlC: true,\n patchConsole: false,\n });\n await waitUntilExit();\n return;\n }\n\n // stdout fallback (piped, --print, or non-TTY)\n console.log(renderSummaryTable(report));\n}\n","/**\n * Ink TUI for `reasonix diff`. Split-pane: A on the left, B on the right,\n * shared cursor. Header shows aggregate deltas; footer shows the current\n * pair's divergence note (if any) + key cheat sheet.\n *\n * j/k moves the cursor by one turn; n/N jumps to the next/prev divergent\n * turn — which is the whole point of a diff tool. Quit with q.\n *\n * Pure navigation lives in src/diff.ts (findNextDivergence / findPrevDivergence).\n */\n\nimport { Box, Static, Text, useApp, useInput } from \"ink\";\nimport React, { useState } from \"react\";\nimport { t } from \"../../i18n/index.js\";\nimport {\n type DiffReport,\n type TurnPair,\n findNextDivergence,\n findPrevDivergence,\n} from \"../../transcript/diff.js\";\nimport { RecordView } from \"./RecordView.js\";\n\nexport interface DiffAppProps {\n report: DiffReport;\n}\n\nexport function DiffApp({ report }: DiffAppProps) {\n const { exit } = useApp();\n const maxIdx = Math.max(0, report.pairs.length - 1);\n // Start at the first divergence when one exists — that's the user's most\n // likely destination. Falls back to idx 0 for fully-matching diffs.\n const initialIdx = report.firstDivergenceTurn\n ? report.pairs.findIndex((p) => p.turn === report.firstDivergenceTurn)\n : 0;\n const [idx, setIdx] = useState(Math.max(0, initialIdx));\n\n useInput((input, key) => {\n if (input === \"q\" || (key.ctrl && input === \"c\")) {\n exit();\n return;\n }\n if (input === \"j\" || key.downArrow || input === \" \" || key.return) {\n setIdx((i) => Math.min(maxIdx, i + 1));\n } else if (input === \"k\" || key.upArrow) {\n setIdx((i) => Math.max(0, i - 1));\n } else if (input === \"g\") {\n setIdx(0);\n } else if (input === \"G\") {\n setIdx(maxIdx);\n } else if (input === \"n\") {\n const next = findNextDivergence(report.pairs, idx);\n if (next !== -1) setIdx(next);\n } else if (input === \"N\" || input === \"p\") {\n const prev = findPrevDivergence(report.pairs, idx);\n if (prev !== -1) setIdx(prev);\n }\n });\n\n const pair = report.pairs[idx];\n\n return (\n <Box flexDirection=\"column\">\n <DiffHeader report={report} />\n\n <Box marginTop={1} paddingX={1} justifyContent=\"space-between\">\n <Text color=\"cyan\" bold>\n {t(\"diffApp.turnLabel\", {\n turn: pair?.turn ?? \"?\",\n current: idx + 1,\n total: report.pairs.length,\n })}\n </Text>\n <Text>{pair ? <KindBadge kind={pair.kind} /> : null}</Text>\n </Box>\n\n <Box flexDirection=\"row\" marginTop={1}>\n <Pane label={report.a.label} headerColor=\"blue\" records={paneRecords(pair, \"a\")} />\n <Pane label={report.b.label} headerColor=\"magenta\" records={paneRecords(pair, \"b\")} />\n </Box>\n\n {pair?.divergenceNote ? (\n <Box marginTop={1} paddingX={1}>\n <Text color=\"yellow\">★ </Text>\n <Text>{pair.divergenceNote}</Text>\n </Box>\n ) : null}\n\n <Box marginTop={1} paddingX={1} borderStyle=\"single\" borderColor=\"gray\">\n <Text dimColor>\n <Text bold>j</Text>/<Text bold>\\u2193</Text> next \\u00b7 <Text bold>k</Text>/\n <Text bold>\\u2191</Text> prev \\u00b7 <Text bold>n</Text> next-diverge \\u00b7{\" \"}\n <Text bold>N</Text>/<Text bold>p</Text> prev-diverge \\u00b7 <Text bold>g</Text>/\n <Text bold>G</Text> first/last \\u00b7 <Text bold>q</Text> quit\n </Text>\n </Box>\n </Box>\n );\n}\n\n// ----------------------------------------------------------------------------\n\nfunction DiffHeader({ report }: { report: DiffReport }) {\n const a = report.a;\n const b = report.b;\n\n const cacheDelta = b.stats.cacheHitRatio - a.stats.cacheHitRatio;\n const costDelta =\n a.stats.totalCostUsd > 0\n ? ((b.stats.totalCostUsd - a.stats.totalCostUsd) / a.stats.totalCostUsd) * 100\n : 0;\n\n // Prefix stability one-liner (same logic as the stdout summary).\n const aStable = a.stats.prefixHashes.length <= 1;\n const bStable = b.stats.prefixHashes.length <= 1;\n let prefixLine: string | null = null;\n if (aStable !== bStable) {\n const stableLabel = aStable ? report.a.label : report.b.label;\n const churnLabel = aStable ? report.b.label : report.a.label;\n const churnCount = aStable ? b.stats.prefixHashes.length : a.stats.prefixHashes.length;\n prefixLine = `${stableLabel} stayed byte-stable; ${churnLabel} churned ${churnCount} distinct prefixes.`;\n } else if (a.stats.prefixHashes[0] && a.stats.prefixHashes[0] === b.stats.prefixHashes[0]) {\n prefixLine = `shared prefix hash ${a.stats.prefixHashes[0].slice(0, 12)}… — cache delta attributable to log stability, not prompt change.`;\n }\n\n return (\n <Box flexDirection=\"column\" borderStyle=\"round\" borderColor=\"cyan\" paddingX={1}>\n <Box justifyContent=\"space-between\">\n <Text>\n <Text color=\"cyan\" bold>\n {t(\"diffApp.title\")}\n </Text>\n <Text dimColor> \\u00b7 A=</Text>\n <Text color=\"blue\">{a.label}</Text>\n <Text dimColor> vs B=</Text>\n <Text color=\"magenta\">{b.label}</Text>\n </Text>\n <Text dimColor>{t(\"diffApp.turnsAligned\", { count: report.pairs.length })}</Text>\n </Box>\n\n <Box marginTop={1} gap={3}>\n <Text>\n <Text dimColor>cache </Text>\n <Text>{(a.stats.cacheHitRatio * 100).toFixed(1)}%</Text>\n <Text dimColor> → </Text>\n <Text>{(b.stats.cacheHitRatio * 100).toFixed(1)}%</Text>\n <Text color={cacheDelta >= 0 ? \"green\" : \"red\"} bold>\n {\" \"}\n {cacheDelta >= 0 ? \"+\" : \"\"}\n {(cacheDelta * 100).toFixed(1)}pp\n </Text>\n </Text>\n <Text>\n <Text dimColor>cost </Text>\n <Text>${a.stats.totalCostUsd.toFixed(6)}</Text>\n <Text dimColor> → </Text>\n <Text>${b.stats.totalCostUsd.toFixed(6)}</Text>\n <Text color={costDelta <= 0 ? \"green\" : \"red\"} bold>\n {\" \"}\n {costDelta >= 0 ? \"+\" : \"\"}\n {costDelta.toFixed(1)}%\n </Text>\n </Text>\n <Text>\n <Text dimColor>model calls </Text>\n <Text>\n {a.stats.turns} → {b.stats.turns}\n </Text>\n </Text>\n </Box>\n\n {prefixLine ? (\n <Box marginTop={1}>\n <Text dimColor italic>\n {prefixLine}\n </Text>\n </Box>\n ) : null}\n </Box>\n );\n}\n\nfunction Pane({\n label,\n headerColor,\n records,\n}: {\n label: string;\n headerColor: \"blue\" | \"magenta\";\n records: TurnPair[\"aTools\"];\n}) {\n return (\n <Box\n flexDirection=\"column\"\n flexGrow={1}\n paddingX={1}\n borderStyle=\"single\"\n borderColor={headerColor}\n >\n <Text color={headerColor} bold>\n {label}\n </Text>\n {records.length === 0 ? (\n <Box marginTop={1}>\n <Text dimColor italic>\n {t(\"diffApp.paneEmpty\")}\n </Text>\n </Box>\n ) : (\n <Static items={records.map((rec, i) => ({ key: `${label}-${i}`, rec }))}>\n {({ key, rec }) => <RecordView key={key} rec={rec} compact />}\n </Static>\n )}\n </Box>\n );\n}\n\nfunction KindBadge({ kind }: { kind: TurnPair[\"kind\"] }) {\n if (kind === \"match\") {\n return <Text color=\"green\">{t(\"diffApp.kindMatch\")}</Text>;\n }\n if (kind === \"diverge\") {\n return <Text color=\"yellow\">{t(\"diffApp.kindDiverge\")}</Text>;\n }\n if (kind === \"only_in_a\") {\n return <Text color=\"blue\">{t(\"diffApp.kindOnlyInA\")}</Text>;\n }\n return <Text color=\"magenta\">{t(\"diffApp.kindOnlyInB\")}</Text>;\n}\n\n// ----------------------------------------------------------------------------\n\nfunction paneRecords(pair: TurnPair | undefined, side: \"a\" | \"b\"): TurnPair[\"aTools\"] {\n if (!pair) return [];\n const tools = side === \"a\" ? pair.aTools : pair.bTools;\n const assistant = side === \"a\" ? pair.aAssistant : pair.bAssistant;\n const out: TurnPair[\"aTools\"] = [...tools];\n if (assistant) out.push(assistant);\n return out;\n}\n"],"mappings":"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","names":["import_react","React","React"]}
|
|
@@ -4,24 +4,24 @@ import {
|
|
|
4
4
|
doctorCommand,
|
|
5
5
|
formatDoctorJson,
|
|
6
6
|
runDoctorChecks
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
7
|
+
} from "./chunk-HI6THNAZ.js";
|
|
8
|
+
import "./chunk-VVPV5HU6.js";
|
|
9
|
+
import "./chunk-WPY7AFS6.js";
|
|
10
|
+
import "./chunk-YMYX6QTC.js";
|
|
11
11
|
import "./chunk-BOWSNGQC.js";
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-25T6CVUP.js";
|
|
14
|
-
import "./chunk-2WUEAI2I.js";
|
|
12
|
+
import "./chunk-CPCUMMSR.js";
|
|
15
13
|
import "./chunk-6UNHNVJR.js";
|
|
16
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-AMSK3ZLB.js";
|
|
17
15
|
import "./chunk-XXC2BYTV.js";
|
|
16
|
+
import "./chunk-GFJJEW3Z.js";
|
|
17
|
+
import "./chunk-25T6CVUP.js";
|
|
18
18
|
import "./chunk-2UQP6H6T.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-CLHMV6OL.js";
|
|
20
|
+
import "./chunk-AOYUW3HR.js";
|
|
21
21
|
import "./chunk-TUK7OWJA.js";
|
|
22
22
|
export {
|
|
23
23
|
doctorCommand,
|
|
24
24
|
formatDoctorJson,
|
|
25
25
|
runDoctorChecks
|
|
26
26
|
};
|
|
27
|
-
//# sourceMappingURL=doctor-
|
|
27
|
+
//# sourceMappingURL=doctor-GI5LOEZL.js.map
|
|
@@ -5,12 +5,12 @@ import {
|
|
|
5
5
|
} from "./chunk-J5XJHLWM.js";
|
|
6
6
|
import {
|
|
7
7
|
eventLogPath
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-XNMXVL6C.js";
|
|
9
|
+
import "./chunk-AMSK3ZLB.js";
|
|
10
10
|
import {
|
|
11
11
|
t
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-CLHMV6OL.js";
|
|
13
|
+
import "./chunk-AOYUW3HR.js";
|
|
14
14
|
import "./chunk-TUK7OWJA.js";
|
|
15
15
|
|
|
16
16
|
// src/core/reducers.ts
|
|
@@ -341,4 +341,4 @@ function mapReplacer(_key, value) {
|
|
|
341
341
|
export {
|
|
342
342
|
eventsCommand
|
|
343
343
|
};
|
|
344
|
-
//# sourceMappingURL=events-
|
|
344
|
+
//# sourceMappingURL=events-LBKMLFM4.js.map
|
package/dist/cli/index.js
CHANGED
|
@@ -5,36 +5,36 @@ import {
|
|
|
5
5
|
startCpuProfile,
|
|
6
6
|
stopAndSaveCpuProfile
|
|
7
7
|
} from "./chunk-ZZM6QJ4W.js";
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-BA5R6BAE.js";
|
|
15
|
-
import "./chunk-HGK57NBN.js";
|
|
8
|
+
import "./chunk-HNZ4727T.js";
|
|
9
|
+
import "./chunk-MW64SQUE.js";
|
|
10
|
+
import "./chunk-D6WRFR6V.js";
|
|
11
|
+
import "./chunk-RCC73DWQ.js";
|
|
12
|
+
import "./chunk-5YLEKX2V.js";
|
|
13
|
+
import "./chunk-2W4F3RIZ.js";
|
|
16
14
|
import {
|
|
17
15
|
applyMemoryStack,
|
|
18
16
|
escalationContract
|
|
19
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-DLTE4GBY.js";
|
|
20
18
|
import {
|
|
21
19
|
installProxyIfConfigured
|
|
22
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-YMYX6QTC.js";
|
|
23
21
|
import "./chunk-BOWSNGQC.js";
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-25T6CVUP.js";
|
|
26
|
-
import "./chunk-2WUEAI2I.js";
|
|
22
|
+
import "./chunk-CPCUMMSR.js";
|
|
27
23
|
import "./chunk-6UNHNVJR.js";
|
|
28
24
|
import {
|
|
29
25
|
listSessions
|
|
30
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-AMSK3ZLB.js";
|
|
31
27
|
import {
|
|
32
28
|
VERSION
|
|
33
29
|
} from "./chunk-XXC2BYTV.js";
|
|
30
|
+
import "./chunk-GFJJEW3Z.js";
|
|
31
|
+
import "./chunk-25T6CVUP.js";
|
|
34
32
|
import "./chunk-2UQP6H6T.js";
|
|
33
|
+
import "./chunk-ARBGTNHM.js";
|
|
34
|
+
import "./chunk-6QBUXA73.js";
|
|
35
35
|
import {
|
|
36
36
|
t
|
|
37
|
-
} from "./chunk-
|
|
37
|
+
} from "./chunk-CLHMV6OL.js";
|
|
38
38
|
import {
|
|
39
39
|
DEFAULT_MODEL,
|
|
40
40
|
ensureDashboardToken,
|
|
@@ -46,7 +46,7 @@ import {
|
|
|
46
46
|
readConfig,
|
|
47
47
|
saveReasoningEffort,
|
|
48
48
|
specToRaw
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-AOYUW3HR.js";
|
|
50
50
|
import {
|
|
51
51
|
__commonJS,
|
|
52
52
|
__require,
|
|
@@ -3260,6 +3260,7 @@ var cliNoProxy = process.argv.includes("--no-proxy");
|
|
|
3260
3260
|
var cfgProxy = loadProxyConfig();
|
|
3261
3261
|
installProxyIfConfigured(process.env, {
|
|
3262
3262
|
disabled: cliNoProxy || cfgProxy.disabled === true,
|
|
3263
|
+
url: cfgProxy.url,
|
|
3263
3264
|
extraNoProxy: cfgProxy.noProxy,
|
|
3264
3265
|
bypassDeepSeekDirect: cfgProxy.bypassDeepSeekDirect
|
|
3265
3266
|
});
|
|
@@ -3344,11 +3345,11 @@ program2.action(async (opts) => {
|
|
|
3344
3345
|
const cfg = readConfig();
|
|
3345
3346
|
const mode = resolveBareCommandMode(cfg);
|
|
3346
3347
|
if (mode === "setup") {
|
|
3347
|
-
const { setupCommand } = await import("./setup-
|
|
3348
|
+
const { setupCommand } = await import("./setup-5BYKCL62.js");
|
|
3348
3349
|
await setupCommand({ forceKeyStep: true });
|
|
3349
3350
|
return;
|
|
3350
3351
|
}
|
|
3351
|
-
const { codeCommand } = await import("./code-
|
|
3352
|
+
const { codeCommand } = await import("./code-WN6D4VZO.js");
|
|
3352
3353
|
await codeCommand({
|
|
3353
3354
|
dir: process.cwd(),
|
|
3354
3355
|
forceResume: !!opts.continue,
|
|
@@ -3356,7 +3357,7 @@ program2.action(async (opts) => {
|
|
|
3356
3357
|
});
|
|
3357
3358
|
});
|
|
3358
3359
|
program2.command("setup").description(t("cli.setup")).action(async () => {
|
|
3359
|
-
const { setupCommand } = await import("./setup-
|
|
3360
|
+
const { setupCommand } = await import("./setup-5BYKCL62.js");
|
|
3360
3361
|
await setupCommand({ forceKeyStep: true });
|
|
3361
3362
|
});
|
|
3362
3363
|
program2.command("code [dir]").description(t("cli.code")).option("-m, --model <id>", t("ui.modelOverride")).option("--effort <level>", t("ui.effortHintShort")).option("--no-session", t("ui.noSession")).option("--no-mouse", t("ui.noMouseHint")).option("--no-proxy", t("ui.noProxyHint")).option("-r, --resume", t("ui.resumeHint")).option("-n, --new", t("ui.newHint")).option("--transcript <path>", t("ui.transcriptHint")).option("--budget <usd>", t("ui.budgetHint"), (v) => Number.parseFloat(v)).option("--no-dashboard", t("ui.noDashboard")).option("--open-dashboard", t("ui.openDashboardHint")).option("--dashboard-port <port>", t("ui.dashboardPortHint")).option(
|
|
@@ -3369,7 +3370,7 @@ program2.command("code [dir]").description(t("cli.code")).option("-m, --model <i
|
|
|
3369
3370
|
persistEffortFlag(opts.effort);
|
|
3370
3371
|
const profiling = await maybeStartCpuProfile(opts.profile);
|
|
3371
3372
|
try {
|
|
3372
|
-
const { codeCommand } = await import("./code-
|
|
3373
|
+
const { codeCommand } = await import("./code-WN6D4VZO.js");
|
|
3373
3374
|
await codeCommand({
|
|
3374
3375
|
dir,
|
|
3375
3376
|
model: opts.model,
|
|
@@ -3420,7 +3421,7 @@ program2.command("chat").description(t("cli.chat")).option("-m, --model <id>", t
|
|
|
3420
3421
|
(msg) => process.stderr.write(`${msg}
|
|
3421
3422
|
`)
|
|
3422
3423
|
);
|
|
3423
|
-
const { chatCommand } = await import("./chat-
|
|
3424
|
+
const { chatCommand } = await import("./chat-QA6IVFJD.js");
|
|
3424
3425
|
const chatBase = opts.system ?? defaultSystemPrompt(defaults.model);
|
|
3425
3426
|
const chatCwd = process.cwd();
|
|
3426
3427
|
const chatRebuildSystem = () => applyMemoryStack(chatBase, chatCwd);
|
|
@@ -3463,7 +3464,7 @@ program2.command("run <task>").description(t("cli.run")).option("-m, --model <id
|
|
|
3463
3464
|
effort: opts.effort,
|
|
3464
3465
|
noConfig: opts.config === false
|
|
3465
3466
|
});
|
|
3466
|
-
const { runCommand } = await import("./run-
|
|
3467
|
+
const { runCommand } = await import("./run-HFPRNWJY.js");
|
|
3467
3468
|
await runCommand({
|
|
3468
3469
|
task,
|
|
3469
3470
|
model: defaults.model,
|
|
@@ -3487,7 +3488,7 @@ program2.command("acp").description("run reasonix as an Agent Client Protocol (A
|
|
|
3487
3488
|
effort: opts.effort,
|
|
3488
3489
|
noConfig: false
|
|
3489
3490
|
});
|
|
3490
|
-
const { acpCommand } = await import("./acp-
|
|
3491
|
+
const { acpCommand } = await import("./acp-NEUYWGUU.js");
|
|
3491
3492
|
await acpCommand({
|
|
3492
3493
|
model: defaults.model,
|
|
3493
3494
|
budgetUsd: parseBudgetFlag(opts.budget),
|
|
@@ -3506,7 +3507,7 @@ program2.command("desktop").description("headless JSON-RPC chat for the desktop
|
|
|
3506
3507
|
effort: opts.effort,
|
|
3507
3508
|
noConfig: false
|
|
3508
3509
|
});
|
|
3509
|
-
const { desktopCommand } = await import("./desktop-
|
|
3510
|
+
const { desktopCommand } = await import("./desktop-LJVXWXNF.js");
|
|
3510
3511
|
await desktopCommand({
|
|
3511
3512
|
model: defaults.model,
|
|
3512
3513
|
budgetUsd: parseBudgetFlag(opts.budget),
|
|
@@ -3514,27 +3515,27 @@ program2.command("desktop").description("headless JSON-RPC chat for the desktop
|
|
|
3514
3515
|
});
|
|
3515
3516
|
});
|
|
3516
3517
|
program2.command("stats [transcript]").description(t("cli.stats")).action(async (transcript) => {
|
|
3517
|
-
const { statsCommand } = await import("./stats-
|
|
3518
|
+
const { statsCommand } = await import("./stats-OFCGOQMZ.js");
|
|
3518
3519
|
statsCommand({ transcript });
|
|
3519
3520
|
});
|
|
3520
3521
|
program2.command("doctor").description(t("cli.doctor")).option("--json", t("ui.jsonHint")).action(async (opts) => {
|
|
3521
|
-
const { doctorCommand } = await import("./doctor-
|
|
3522
|
+
const { doctorCommand } = await import("./doctor-GI5LOEZL.js");
|
|
3522
3523
|
await doctorCommand({ json: !!opts.json });
|
|
3523
3524
|
});
|
|
3524
3525
|
program2.command("commit").description(t("cli.commit")).option("-m, --model <id>", t("ui.modelOverrideFlash")).option("-y, --yes", t("ui.skipConfirmHint")).action(async (opts) => {
|
|
3525
|
-
const { commitCommand } = await import("./commit-
|
|
3526
|
+
const { commitCommand } = await import("./commit-BBUYAKZV.js");
|
|
3526
3527
|
await commitCommand({ model: opts.model, yes: !!opts.yes });
|
|
3527
3528
|
});
|
|
3528
3529
|
program2.command("sessions [name]").description(t("cli.sessions")).option("-v, --verbose", t("ui.verboseHint")).action(async (name, opts) => {
|
|
3529
|
-
const { sessionsCommand } = await import("./sessions-
|
|
3530
|
+
const { sessionsCommand } = await import("./sessions-IQEWWUH3.js");
|
|
3530
3531
|
sessionsCommand({ name, verbose: !!opts.verbose });
|
|
3531
3532
|
});
|
|
3532
3533
|
program2.command("prune-sessions").description(t("cli.pruneSessions")).option("--days <n>", t("ui.pruneDaysHint"), (v) => Number.parseInt(v, 10)).option("--dry-run", t("ui.pruneDryRunHint")).action(async (opts) => {
|
|
3533
|
-
const { pruneSessionsCommand } = await import("./prune-sessions-
|
|
3534
|
+
const { pruneSessionsCommand } = await import("./prune-sessions-YQQSZTZS.js");
|
|
3534
3535
|
pruneSessionsCommand({ days: opts.days, dryRun: !!opts.dryRun });
|
|
3535
3536
|
});
|
|
3536
3537
|
program2.command("events <name>").description(t("cli.events")).option("--type <type>", t("ui.eventTypeHint")).option("--since <id>", t("ui.eventSinceHint"), (v) => Number.parseInt(v, 10)).option("--tail <n>", t("ui.eventTailHint"), (v) => Number.parseInt(v, 10)).option("--json", t("ui.jsonHint")).option("--projection", t("ui.projectionHint")).action(async (name, opts) => {
|
|
3537
|
-
const { eventsCommand } = await import("./events-
|
|
3538
|
+
const { eventsCommand } = await import("./events-LBKMLFM4.js");
|
|
3538
3539
|
eventsCommand({
|
|
3539
3540
|
name,
|
|
3540
3541
|
type: opts.type,
|
|
@@ -3545,7 +3546,7 @@ program2.command("events <name>").description(t("cli.events")).option("--type <t
|
|
|
3545
3546
|
});
|
|
3546
3547
|
});
|
|
3547
3548
|
program2.command("replay <transcript>").description(t("cli.replay")).option("--print", t("ui.printHint")).option("--head <n>", t("ui.headHint"), (v) => Number.parseInt(v, 10)).option("--tail <n>", t("ui.tailHint"), (v) => Number.parseInt(v, 10)).action(async (transcript, opts) => {
|
|
3548
|
-
const { replayCommand } = await import("./replay-
|
|
3549
|
+
const { replayCommand } = await import("./replay-ZJQ4I4CJ.js");
|
|
3549
3550
|
await replayCommand({
|
|
3550
3551
|
path: transcript,
|
|
3551
3552
|
print: !!opts.print,
|
|
@@ -3554,7 +3555,7 @@ program2.command("replay <transcript>").description(t("cli.replay")).option("--p
|
|
|
3554
3555
|
});
|
|
3555
3556
|
});
|
|
3556
3557
|
program2.command("diff <a> <b>").description(t("cli.diff")).option("--md <path>", t("ui.mdReportHint")).option("--print", t("ui.printHintTable")).option("--tui", t("ui.tuiHint")).option("--label-a <label>", t("ui.labelAHint")).option("--label-b <label>", t("ui.labelBHint")).action(async (a, b, opts) => {
|
|
3557
|
-
const { diffCommand } = await import("./diff-
|
|
3558
|
+
const { diffCommand } = await import("./diff-2JHMQAHI.js");
|
|
3558
3559
|
await diffCommand({
|
|
3559
3560
|
a,
|
|
3560
3561
|
b,
|
|
@@ -3568,7 +3569,7 @@ program2.command("diff <a> <b>").description(t("cli.diff")).option("--md <path>"
|
|
|
3568
3569
|
var mcp = program2.command("mcp").description(t("cli.mcp"));
|
|
3569
3570
|
mcp.command("list").description(t("ui.mcpListDescription")).option("--json", t("ui.jsonHintCatalog")).option("--local", t("ui.mcpLocalHint")).option("--refresh", t("ui.mcpRefreshHint")).option("--limit <n>", t("ui.mcpLimitHint"), (v) => Number.parseInt(v, 10)).option("--pages <n>", t("ui.mcpPagesHint"), (v) => Number.parseInt(v, 10)).option("--all", t("ui.mcpAllHint")).action(async (opts) => {
|
|
3570
3571
|
try {
|
|
3571
|
-
const { mcpListCommand } = await import("./mcp-
|
|
3572
|
+
const { mcpListCommand } = await import("./mcp-DKEJK5ND.js");
|
|
3572
3573
|
await mcpListCommand({
|
|
3573
3574
|
json: !!opts.json,
|
|
3574
3575
|
local: !!opts.local,
|
|
@@ -3585,7 +3586,7 @@ mcp.command("list").description(t("ui.mcpListDescription")).option("--json", t("
|
|
|
3585
3586
|
});
|
|
3586
3587
|
mcp.command("search <query>").description(t("ui.mcpSearchDescription")).option("--json", t("ui.jsonHintCatalog")).option("--refresh", t("ui.mcpRefreshHint")).option("--limit <n>", t("ui.mcpLimitHint"), (v) => Number.parseInt(v, 10)).option("--max-pages <n>", t("ui.mcpMaxPagesHint"), (v) => Number.parseInt(v, 10)).action(async (query, opts) => {
|
|
3587
3588
|
try {
|
|
3588
|
-
const { mcpSearchCommand } = await import("./mcp-
|
|
3589
|
+
const { mcpSearchCommand } = await import("./mcp-DKEJK5ND.js");
|
|
3589
3590
|
await mcpSearchCommand(query, {
|
|
3590
3591
|
json: !!opts.json,
|
|
3591
3592
|
refresh: !!opts.refresh,
|
|
@@ -3600,7 +3601,7 @@ mcp.command("search <query>").description(t("ui.mcpSearchDescription")).option("
|
|
|
3600
3601
|
});
|
|
3601
3602
|
mcp.command("install <name>").description(t("ui.mcpInstallDescription")).option("--refresh", t("ui.mcpRefreshHint")).option("--max-pages <n>", t("ui.mcpMaxPagesHint"), (v) => Number.parseInt(v, 10)).action(async (name, opts) => {
|
|
3602
3603
|
try {
|
|
3603
|
-
const { mcpInstallCommand } = await import("./mcp-
|
|
3604
|
+
const { mcpInstallCommand } = await import("./mcp-DKEJK5ND.js");
|
|
3604
3605
|
await mcpInstallCommand(name, {
|
|
3605
3606
|
refresh: !!opts.refresh,
|
|
3606
3607
|
maxPages: typeof opts.maxPages === "number" && opts.maxPages > 0 ? opts.maxPages : void 0
|
|
@@ -3613,7 +3614,7 @@ mcp.command("install <name>").description(t("ui.mcpInstallDescription")).option(
|
|
|
3613
3614
|
});
|
|
3614
3615
|
mcp.command("browse").description(t("ui.mcpBrowseDescription")).action(async () => {
|
|
3615
3616
|
try {
|
|
3616
|
-
const { mcpBrowseCommand } = await import("./mcp-browse-
|
|
3617
|
+
const { mcpBrowseCommand } = await import("./mcp-browse-V7KWDY32.js");
|
|
3617
3618
|
await mcpBrowseCommand();
|
|
3618
3619
|
} catch (err) {
|
|
3619
3620
|
process.stderr.write(`mcp browse failed: ${err.message}
|
|
@@ -3622,7 +3623,7 @@ mcp.command("browse").description(t("ui.mcpBrowseDescription")).action(async ()
|
|
|
3622
3623
|
}
|
|
3623
3624
|
});
|
|
3624
3625
|
mcp.command("inspect <spec>").description(t("ui.mcpInspectDescription")).option("--json", t("ui.jsonHintReport")).action(async (spec, opts) => {
|
|
3625
|
-
const { formatMcpInspectFailure, mcpInspectCommand } = await import("./mcp-inspect-
|
|
3626
|
+
const { formatMcpInspectFailure, mcpInspectCommand } = await import("./mcp-inspect-MTABNHVM.js");
|
|
3626
3627
|
try {
|
|
3627
3628
|
await mcpInspectCommand({ spec, json: !!opts.json });
|
|
3628
3629
|
} catch (err) {
|
|
@@ -3632,7 +3633,7 @@ mcp.command("inspect <spec>").description(t("ui.mcpInspectDescription")).option(
|
|
|
3632
3633
|
}
|
|
3633
3634
|
});
|
|
3634
3635
|
program2.command("version").description(t("cli.version")).action(async () => {
|
|
3635
|
-
const { versionCommand } = await import("./version-
|
|
3636
|
+
const { versionCommand } = await import("./version-EODUFAAI.js");
|
|
3636
3637
|
versionCommand();
|
|
3637
3638
|
});
|
|
3638
3639
|
program2.command("update").description(t("cli.update")).option("--dry-run", t("ui.dryRunHint")).action(async (opts) => {
|
|
@@ -3641,7 +3642,7 @@ program2.command("update").description(t("cli.update")).option("--dry-run", t("u
|
|
|
3641
3642
|
});
|
|
3642
3643
|
program2.command("index").description(t("cli.index")).option("--rebuild", t("ui.rebuildHint")).option("--model <name>", t("ui.embedModelHint")).option("--dir <path>", t("ui.projectDirHint")).option("--ollama-url <url>", t("ui.ollamaUrlHint")).option("-y, --yes", t("ui.skipPromptsHint")).action(
|
|
3643
3644
|
async (opts) => {
|
|
3644
|
-
const { indexCommand } = await import("./commands-
|
|
3645
|
+
const { indexCommand } = await import("./commands-DHETOY7O.js");
|
|
3645
3646
|
await indexCommand(opts);
|
|
3646
3647
|
}
|
|
3647
3648
|
);
|