reasonix 0.34.0 → 0.35.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/app.css +16 -14
- package/dashboard/dist/app.js +35 -15
- package/dashboard/dist/app.js.map +1 -1
- package/dist/cli/{chat-TL4HMNEQ.js → chat-AB5D7I3V.js} +9 -9
- package/dist/cli/{chunk-5SAMVHA3.js → chunk-GPHBJWCV.js} +395 -175
- package/dist/cli/chunk-GPHBJWCV.js.map +1 -0
- package/dist/cli/{chunk-F3ILWP2L.js → chunk-IDP65VCC.js} +2 -2
- package/dist/cli/{chunk-OERAGRJX.js → chunk-JJTOZPM3.js} +2 -2
- package/dist/cli/{chunk-U3V2ZQ5J.js → chunk-KJQIA4US.js} +6 -2
- package/dist/cli/chunk-KJQIA4US.js.map +1 -0
- package/dist/cli/{chunk-LNTORE5K.js → chunk-N2IC4XDL.js} +149 -35
- package/dist/cli/chunk-N2IC4XDL.js.map +1 -0
- package/dist/cli/{chunk-SA4UGZPG.js → chunk-RJ5GUVS2.js} +6 -1
- package/dist/cli/chunk-RJ5GUVS2.js.map +1 -0
- package/dist/cli/{chunk-Q36KBLSU.js → chunk-SN7YH6FC.js} +125 -1
- package/dist/cli/chunk-SN7YH6FC.js.map +1 -0
- package/dist/cli/{chunk-6TMHAK5D.js → chunk-ZU45XW3P.js} +2 -2
- package/dist/cli/code-XBEFHXVM.js +433 -0
- package/dist/cli/code-XBEFHXVM.js.map +1 -0
- package/dist/cli/{doctor-YASM64X6.js → doctor-A565GMWD.js} +4 -4
- package/dist/cli/index.js +15 -15
- package/dist/cli/{prompt-V47QKSAR.js → prompt-YEKXMNNV.js} +3 -3
- package/dist/cli/{replay-JEDLU7F2.js → replay-P2WC5N5X.js} +2 -2
- package/dist/cli/replay-P2WC5N5X.js.map +1 -0
- package/dist/cli/{run-NHD2RSTD.js → run-QBWJETS3.js} +6 -6
- package/dist/cli/{server-MC4A4WAJ.js → server-SMLVXIW4.js} +5 -5
- package/dist/cli/{sessions-ZHWJEW4L.js → sessions-55RIZVWG.js} +6 -6
- package/dist/cli/{setup-DK43MT47.js → setup-QXMONZ4P.js} +2 -2
- package/dist/cli/{version-O362UKPM.js → version-Q2HA3AAC.js} +6 -6
- package/dist/index.d.ts +5 -0
- package/dist/index.js +273 -31
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/cli/chunk-5SAMVHA3.js.map +0 -1
- package/dist/cli/chunk-LNTORE5K.js.map +0 -1
- package/dist/cli/chunk-Q36KBLSU.js.map +0 -1
- package/dist/cli/chunk-SA4UGZPG.js.map +0 -1
- package/dist/cli/chunk-U3V2ZQ5J.js.map +0 -1
- package/dist/cli/code-V6F4BKMG.js +0 -153
- package/dist/cli/code-V6F4BKMG.js.map +0 -1
- package/dist/cli/replay-JEDLU7F2.js.map +0 -1
- /package/dist/cli/{chat-TL4HMNEQ.js.map → chat-AB5D7I3V.js.map} +0 -0
- /package/dist/cli/{chunk-F3ILWP2L.js.map → chunk-IDP65VCC.js.map} +0 -0
- /package/dist/cli/{chunk-OERAGRJX.js.map → chunk-JJTOZPM3.js.map} +0 -0
- /package/dist/cli/{chunk-6TMHAK5D.js.map → chunk-ZU45XW3P.js.map} +0 -0
- /package/dist/cli/{doctor-YASM64X6.js.map → doctor-A565GMWD.js.map} +0 -0
- /package/dist/cli/{prompt-V47QKSAR.js.map → prompt-YEKXMNNV.js.map} +0 -0
- /package/dist/cli/{run-NHD2RSTD.js.map → run-QBWJETS3.js.map} +0 -0
- /package/dist/cli/{server-MC4A4WAJ.js.map → server-SMLVXIW4.js.map} +0 -0
- /package/dist/cli/{sessions-ZHWJEW4L.js.map → sessions-55RIZVWG.js.map} +0 -0
- /package/dist/cli/{setup-DK43MT47.js.map → setup-QXMONZ4P.js.map} +0 -0
- /package/dist/cli/{version-O362UKPM.js.map → version-Q2HA3AAC.js.map} +0 -0
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import {
|
|
3
3
|
CODE_SYSTEM_PROMPT,
|
|
4
4
|
codeSystemPrompt
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import "./chunk-
|
|
5
|
+
} from "./chunk-ZU45XW3P.js";
|
|
6
|
+
import "./chunk-KJQIA4US.js";
|
|
7
7
|
export {
|
|
8
8
|
CODE_SYSTEM_PROMPT,
|
|
9
9
|
codeSystemPrompt
|
|
10
10
|
};
|
|
11
|
-
//# sourceMappingURL=prompt-
|
|
11
|
+
//# sourceMappingURL=prompt-YEKXMNNV.js.map
|
|
@@ -80,7 +80,7 @@ function ChromeRow({
|
|
|
80
80
|
const modePill = pickModePill(planMode, editMode);
|
|
81
81
|
const proPill = escalated ? { label: "\u21E7 pro", color: COLOR.err } : proArmed ? { label: "\u21E7 pro", color: COLOR.warn } : null;
|
|
82
82
|
const projectName = rootDir ? basename(rootDir) : null;
|
|
83
|
-
const cachePct =
|
|
83
|
+
const cachePct = (summary.cacheHitRatio * 100).toFixed(1);
|
|
84
84
|
const cacheColor = summary.cacheHitRatio >= 0.7 ? COLOR.ok : summary.cacheHitRatio >= 0.4 ? COLOR.warn : COLOR.err;
|
|
85
85
|
const balanceLabel = balance ? `[${formatBalance(balance.total, balance.currency, { label: true })}]` : "";
|
|
86
86
|
const costLabel = `[${formatCost(summary.totalCostUsd, balance?.currency)}]`;
|
|
@@ -272,4 +272,4 @@ function oneLine(s, max = 200) {
|
|
|
272
272
|
export {
|
|
273
273
|
replayCommand
|
|
274
274
|
};
|
|
275
|
-
//# sourceMappingURL=replay-
|
|
275
|
+
//# sourceMappingURL=replay-P2WC5N5X.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/cli/commands/replay.ts","../../src/cli/ui/ReplayApp.tsx","../../src/cli/ui/StatsPanel.tsx"],"sourcesContent":["import { render } from \"ink\";\nimport React from \"react\";\nimport type { TranscriptRecord } from \"../../transcript/log.js\";\nimport { groupRecordsByTurn, replayFromFile } from \"../../transcript/replay.js\";\nimport { ReplayApp } from \"../ui/ReplayApp.js\";\n\nexport interface ReplayOptions {\n path: string;\n head?: number;\n tail?: number;\n /** Force stdout pretty-print mode (no Ink TUI). Also auto-enabled when stdout is not a TTY. */\n print?: boolean;\n}\n\nexport async function replayCommand(opts: ReplayOptions): Promise<void> {\n const wantPrint =\n opts.print || !process.stdout.isTTY || opts.head !== undefined || opts.tail !== undefined;\n if (wantPrint) {\n printReplay(opts);\n return;\n }\n\n const { parsed } = replayFromFile(opts.path);\n const pages = groupRecordsByTurn(parsed.records);\n const { waitUntilExit } = render(React.createElement(ReplayApp, { meta: parsed.meta, pages }), {\n exitOnCtrlC: true,\n patchConsole: false,\n });\n await waitUntilExit();\n}\n\n// stdout pretty-print path (original behavior, preserved for piping / CI)\n\nfunction printReplay(opts: ReplayOptions): void {\n const { parsed, stats } = replayFromFile(opts.path);\n\n if (parsed.meta) {\n const m = parsed.meta;\n const bits: string[] = [`source=${m.source}`];\n if (m.model) bits.push(`model=${m.model}`);\n if (m.task) bits.push(`task=${m.task}`);\n if (m.mode) bits.push(`mode=${m.mode}`);\n if (m.repeat !== undefined) bits.push(`repeat=${m.repeat}`);\n bits.push(`started=${m.startedAt}`);\n console.log(`[meta] ${bits.join(\" \")}`);\n console.log(\"\");\n }\n\n const records = sliceRecords(parsed.records, opts);\n for (const rec of records) {\n renderRecord(rec);\n }\n\n console.log(\"\");\n console.log(\"── summary ─────────────────────────────────────────\");\n console.log(`model calls: ${stats.turns}`);\n console.log(`user turns: ${stats.userTurns}`);\n console.log(`tool calls: ${stats.toolCalls}`);\n console.log(`cache hit: ${(stats.cacheHitRatio * 100).toFixed(1)}%`);\n console.log(`cost: $${stats.totalCostUsd.toFixed(6)}`);\n console.log(`claude equivalent: $${stats.claudeEquivalentUsd.toFixed(6)}`);\n console.log(`savings vs claude: ${stats.savingsVsClaudePct.toFixed(1)}%`);\n console.log(`models: ${stats.models.join(\", \") || \"—\"}`);\n console.log(`prefix hashes: ${stats.prefixHashes.length} distinct`);\n if (stats.prefixHashes.length === 1) {\n console.log(` (byte-stable prefix: ${stats.prefixHashes[0]?.slice(0, 16)}…)`);\n } else if (stats.prefixHashes.length > 1) {\n console.log(\" (prefix churned — cache-hostile session)\");\n }\n}\n\nfunction sliceRecords(records: TranscriptRecord[], opts: ReplayOptions): TranscriptRecord[] {\n if (opts.head !== undefined && opts.head > 0) return records.slice(0, opts.head);\n if (opts.tail !== undefined && opts.tail > 0) return records.slice(-opts.tail);\n return records;\n}\n\nfunction renderRecord(rec: TranscriptRecord): void {\n const turn = `[t${rec.turn}]`;\n if (rec.role === \"user\") {\n console.log(`${turn} USER: ${oneLine(rec.content)}`);\n } else if (rec.role === \"assistant_final\") {\n const cost = rec.cost !== undefined ? ` $${rec.cost.toFixed(6)}` : \"\";\n const cache =\n rec.usage &&\n (rec.usage.prompt_cache_hit_tokens !== undefined ||\n rec.usage.prompt_cache_miss_tokens !== undefined)\n ? (() => {\n const hit = rec.usage!.prompt_cache_hit_tokens ?? 0;\n const miss = rec.usage!.prompt_cache_miss_tokens ?? 0;\n const total = hit + miss;\n return total > 0 ? ` cache=${((hit / total) * 100).toFixed(1)}%` : \"\";\n })()\n : \"\";\n console.log(`${turn} AGENT:${cost}${cache} ${oneLine(rec.content)}`);\n } else if (rec.role === \"tool\") {\n const args = rec.args ? ` args=${oneLine(rec.args, 80)}` : \"\";\n console.log(`${turn} TOOL ${rec.tool ?? \"?\"}:${args} → ${oneLine(rec.content, 120)}`);\n } else if (rec.role === \"error\") {\n console.log(`${turn} ERROR: ${rec.error ?? rec.content}`);\n } else if (rec.role === \"done\") {\n // Suppress — visually noisy, not informative in replay.\n } else {\n console.log(`${turn} ${rec.role}: ${oneLine(rec.content)}`);\n }\n}\n\nfunction oneLine(s: string, max = 200): string {\n const collapsed = s.replace(/\\s+/g, \" \").trim();\n return collapsed.length > max ? `${collapsed.slice(0, max)}…` : collapsed;\n}\n","/**\n * Ink TUI for `reasonix replay`. Read-only: no input box, no loop.\n * j/k navigation across turn-pages, cumulative stats sidebar updates\n * as you move through time.\n *\n * The navigation logic (grouping records into pages, computing cumulative\n * stats) lives in src/replay.ts as pure functions; this file is just\n * presentation + key bindings.\n */\n\nimport { Box, Static, Text, useApp, useInput } from \"ink\";\nimport React, { useMemo, useState } from \"react\";\nimport type { TranscriptMeta } from \"../../transcript/log.js\";\nimport { type TurnPage, computeCumulativeStats } from \"../../transcript/replay.js\";\nimport { RecordView } from \"./RecordView.js\";\nimport { StatsPanel } from \"./StatsPanel.js\";\n\nexport interface ReplayAppProps {\n meta: TranscriptMeta | null;\n pages: TurnPage[];\n}\n\nexport function ReplayApp({ meta, pages }: ReplayAppProps) {\n const { exit } = useApp();\n const maxIdx = Math.max(0, pages.length - 1);\n // Start at the last page — more useful than \"start from the beginning\"\n // in practice: users mostly want to see the summary + last turn first.\n const [idx, setIdx] = useState(maxIdx);\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 === \"h\" || key.leftArrow) {\n setIdx(0);\n } else if (input === \"l\" || key.rightArrow) {\n setIdx(maxIdx);\n }\n });\n\n const cumStats = useMemo(() => computeCumulativeStats(pages, idx), [pages, idx]);\n\n const summary = {\n turns: cumStats.turns,\n totalCostUsd: cumStats.totalCostUsd,\n totalInputCostUsd: cumStats.totalInputCostUsd,\n totalOutputCostUsd: cumStats.totalOutputCostUsd,\n claudeEquivalentUsd: cumStats.claudeEquivalentUsd,\n savingsVsClaudePct: cumStats.savingsVsClaudePct,\n cacheHitRatio: cumStats.cacheHitRatio,\n // Replay is read-only — no live last-turn prompt tokens to show.\n lastPromptTokens: 0,\n lastTurnCostUsd: 0,\n };\n\n const prefixHash =\n cumStats.prefixHashes.length === 1\n ? cumStats.prefixHashes[0]!.slice(0, 16)\n : cumStats.prefixHashes.length === 0\n ? \"(untracked)\"\n : `(churned ×${cumStats.prefixHashes.length})`;\n\n const currentPage = pages[idx];\n const progressLabel =\n pages.length === 0 ? \"empty transcript\" : `turn ${idx + 1} / ${pages.length}`;\n\n return (\n <Box flexDirection=\"column\">\n <StatsPanel summary={summary} />\n\n <Box flexDirection=\"column\" marginTop={1} paddingX={1}>\n <Box justifyContent=\"space-between\">\n <Text color=\"cyan\" bold>\n {progressLabel}\n </Text>\n {meta ? (\n <Text dimColor>\n {meta.source}\n {meta.task ? ` · ${meta.task}` : \"\"}\n {meta.mode ? ` · ${meta.mode}` : \"\"}\n </Text>\n ) : null}\n </Box>\n\n {currentPage ? (\n <Static items={currentPage.records.map((rec, i) => ({ key: `${idx}-${i}`, rec }))}>\n {({ key, rec }) => <RecordView key={key} rec={rec} />}\n </Static>\n ) : (\n <Text dimColor italic>\n no records\n </Text>\n )}\n </Box>\n\n <Box marginTop={1} paddingX={1} borderStyle=\"single\" borderColor=\"gray\">\n <Text dimColor>\n <Text bold>j</Text>/<Text bold>↓</Text>/<Text bold>space</Text> next · <Text bold>k</Text>\n /<Text bold>↑</Text> prev · <Text bold>g</Text> first · <Text bold>G</Text> last ·{\" \"}\n <Text bold>q</Text> quit\n </Text>\n </Box>\n </Box>\n );\n}\n","import { basename } from \"node:path\";\nimport { Box, Text, useStdout } from \"ink\";\nimport React from \"react\";\nimport stringWidth from \"string-width\";\nimport type { EditMode } from \"../../config.js\";\nimport type { SessionSummary } from \"../../telemetry/stats.js\";\nimport { Bar, ChromeRule } from \"./primitives.js\";\nimport { COLOR, GRADIENT } from \"./theme.js\";\nimport { formatBalance, formatCost } from \"./theme/tokens.js\";\n\nconst COLD_START_TURNS = 3;\n\nexport interface StatsPanelProps {\n summary: SessionSummary;\n planMode?: boolean;\n editMode?: EditMode;\n balance?: { currency: string; total: number } | null;\n updateAvailable?: string | null;\n proArmed?: boolean;\n escalated?: boolean;\n budgetUsd?: number | null;\n rootDir?: string;\n sessionName?: string | null;\n}\n\nexport function StatsPanel({\n summary,\n planMode,\n editMode,\n balance,\n updateAvailable,\n proArmed,\n escalated,\n budgetUsd,\n rootDir,\n sessionName,\n}: StatsPanelProps) {\n const coldStart = summary.turns <= COLD_START_TURNS;\n return (\n <Box flexDirection=\"column\" paddingX={1}>\n <ChromeRow\n editMode={editMode}\n planMode={planMode}\n proArmed={proArmed ?? false}\n escalated={escalated ?? false}\n summary={summary}\n coldStart={coldStart}\n rootDir={rootDir}\n sessionName={sessionName ?? null}\n updateAvailable={updateAvailable}\n balance={balance ?? null}\n />\n <ChromeRule />\n {budgetUsd !== null && budgetUsd !== undefined ? (\n <BudgetRow spent={summary.totalCostUsd} cap={budgetUsd} />\n ) : null}\n </Box>\n );\n}\n\nfunction ChromeRow({\n editMode,\n planMode,\n proArmed,\n escalated,\n summary,\n coldStart,\n rootDir,\n sessionName,\n updateAvailable,\n balance,\n}: {\n editMode?: EditMode;\n planMode?: boolean;\n proArmed: boolean;\n escalated: boolean;\n summary: SessionSummary;\n coldStart: boolean;\n rootDir?: string;\n sessionName?: string | null;\n updateAvailable?: string | null;\n balance?: { currency: string; total: number } | null;\n}) {\n const modePill = pickModePill(planMode, editMode);\n const proPill = escalated\n ? { label: \"⇧ pro\", color: COLOR.err }\n : proArmed\n ? { label: \"⇧ pro\", color: COLOR.warn }\n : null;\n const projectName = rootDir ? basename(rootDir) : null;\n const cachePct = (summary.cacheHitRatio * 100).toFixed(1);\n const cacheColor =\n summary.cacheHitRatio >= 0.7 ? COLOR.ok : summary.cacheHitRatio >= 0.4 ? COLOR.warn : COLOR.err;\n const balanceLabel = balance\n ? `[${formatBalance(balance.total, balance.currency, { label: true })}]`\n : \"\";\n const costLabel = `[${formatCost(summary.totalCostUsd, balance?.currency)}]`;\n const cacheLabel = \"[c ▰▰▰▰▰▰ 100%]\";\n const updateLabel = updateAvailable ? `↑ ${updateAvailable}` : \"\";\n\n // Greedy width-aware fit. Layout (every gap = 2 cells, applied as suffix\n // to update/mode/pro and as prefix to balance/cache):\n // [brand][·project][›session]<spacer>[update][mode][pro][cost][balance][cache]\n // Always shown: brand, project (if rootDir), mode (if set), pro (if armed),\n // cost. These carve fixedLeft / fixedRight first.\n // Optional, dropped greedy by priority: balance > cache > session > update.\n // The flexbox spacer can shrink to 0, so no minimum reserve.\n const { stdout } = useStdout();\n const cols = (stdout?.columns ?? 80) - 2; // subtract paddingX={1} on both sides\n const SEP_DOT = stringWidth(\" · \");\n const SEP_ARROW = stringWidth(\" › \");\n const GAP = 2;\n\n const fixedLeft =\n stringWidth(\"◈ reasonix\") + (projectName ? SEP_DOT + stringWidth(projectName) : 0);\n const modeW = modePill ? GAP + stringWidth(`[${modePill.label}]`) : 0;\n const proW = proPill ? GAP + stringWidth(`[${proPill.label}]`) : 0;\n const fixedRight = modeW + proW + stringWidth(costLabel);\n let budget = cols - fixedLeft - fixedRight;\n\n const balW = balance ? GAP + stringWidth(balanceLabel) : 0;\n const cacheW = GAP + stringWidth(cacheLabel);\n const sessionW = sessionName ? SEP_ARROW + stringWidth(sessionName) : 0;\n const updateW = updateLabel ? GAP + stringWidth(updateLabel) : 0;\n\n const showBalance = balW > 0 && budget >= balW;\n if (showBalance) budget -= balW;\n const showCache = budget >= cacheW;\n if (showCache) budget -= cacheW;\n const showSession = sessionW > 0 && budget >= sessionW;\n if (showSession) budget -= sessionW;\n const showUpdate = updateW > 0 && budget >= updateW;\n if (showUpdate) budget -= updateW;\n\n return (\n <Box>\n <Text bold color={GRADIENT[0]}>\n {\"◈ \"}\n </Text>\n <Text color={COLOR.brand} bold>\n reasonix\n </Text>\n {projectName ? (\n <>\n <Text color={COLOR.info} dimColor>\n {\" · \"}\n </Text>\n <Text>{projectName}</Text>\n {showSession && sessionName ? (\n <>\n <Text color={COLOR.info} dimColor>\n {\" › \"}\n </Text>\n <Text color={COLOR.info}>{sessionName}</Text>\n </>\n ) : null}\n </>\n ) : null}\n\n <Box flexGrow={1} />\n\n {showUpdate ? (\n <>\n <Text color={COLOR.warn} bold>\n {updateLabel}\n </Text>\n <Text>{\" \"}</Text>\n </>\n ) : null}\n {modePill ? (\n <>\n <Text color={modePill.color} bold>\n {`[${modePill.label}]`}\n </Text>\n <Text>{\" \"}</Text>\n </>\n ) : null}\n {proPill ? (\n <>\n <Text color={proPill.color} bold>\n {`[${proPill.label}]`}\n </Text>\n <Text>{\" \"}</Text>\n </>\n ) : null}\n <Text\n color={\n summary.turns === 0 || coldStart ? COLOR.info : sessionCostColor(summary.totalCostUsd)\n }\n bold={summary.turns > 0 && !coldStart}\n dimColor={summary.turns === 0 || coldStart}\n >\n {costLabel}\n </Text>\n {showBalance && balance ? (\n <>\n <Text>{\" \"}</Text>\n <Text color={balance.total < 1 ? COLOR.err : balance.total < 5 ? COLOR.warn : COLOR.ok}>\n {balanceLabel}\n </Text>\n </>\n ) : null}\n {showCache ? (\n <>\n <Text>{\" \"}</Text>\n <Text dimColor>{\"[\"}</Text>\n <Text dimColor>{\"c \"}</Text>\n <Bar\n ratio={summary.cacheHitRatio}\n color={coldStart ? COLOR.info : cacheColor}\n cells={6}\n dim={coldStart}\n />\n <Text> </Text>\n <Text color={coldStart ? undefined : cacheColor} dimColor={coldStart}>\n {coldStart && summary.turns === 0 ? \"—\" : `${cachePct}%`}\n </Text>\n <Text dimColor>{\"]\"}</Text>\n </>\n ) : null}\n </Box>\n );\n}\n\nfunction pickModePill(\n planMode: boolean | undefined,\n editMode: EditMode | undefined,\n): { label: string; color: string } | null {\n if (planMode) return { label: \"PLAN\", color: COLOR.err };\n if (editMode === \"yolo\") return { label: \"yolo\", color: COLOR.err };\n if (editMode === \"auto\") return { label: \"auto\", color: COLOR.primary };\n if (editMode === \"review\") return { label: \"review\", color: COLOR.info };\n return null;\n}\n\nfunction BudgetRow({ spent, cap }: { spent: number; cap: number }) {\n const pct = Math.max(0, (spent / cap) * 100);\n const color = pct >= 100 ? \"#f87171\" : pct >= 80 ? \"#fbbf24\" : \"#94a3b8\";\n return (\n <Box>\n <Text dimColor>{\" budget \"}</Text>\n <Text color={color}>\n {`$${spent.toFixed(4)} / $${cap.toFixed(2)}`}\n <Text dimColor>{` (${pct.toFixed(0)}%)`}</Text>\n </Text>\n </Box>\n );\n}\n\nfunction sessionCostColor(cost: number): string | undefined {\n if (cost <= 0) return undefined;\n if (cost >= 5) return COLOR.err;\n if (cost >= 0.5) return COLOR.warn;\n return COLOR.ok;\n}\n"],"mappings":"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","names":["React","Box","Text","React","React","Box","Text","React"]}
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
ImmutablePrefix,
|
|
12
12
|
ToolRegistry,
|
|
13
13
|
bridgeMcpTools
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-N2IC4XDL.js";
|
|
15
15
|
import {
|
|
16
16
|
McpClient,
|
|
17
17
|
SseTransport,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
recordFromLoopEvent,
|
|
26
26
|
writeRecord
|
|
27
27
|
} from "./chunk-XHQIK7B6.js";
|
|
28
|
-
import "./chunk-
|
|
28
|
+
import "./chunk-ZU45XW3P.js";
|
|
29
29
|
import "./chunk-DAEAAVDF.js";
|
|
30
30
|
import {
|
|
31
31
|
DeepSeekClient
|
|
@@ -34,12 +34,12 @@ import {
|
|
|
34
34
|
loadDotenv
|
|
35
35
|
} from "./chunk-3Q3C4W66.js";
|
|
36
36
|
import "./chunk-SX6L4HZZ.js";
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-KJQIA4US.js";
|
|
38
|
+
import "./chunk-JJTOZPM3.js";
|
|
39
39
|
import "./chunk-2AWTGJ2C.js";
|
|
40
40
|
import "./chunk-5X7LZJDE.js";
|
|
41
41
|
import "./chunk-DFP4YSVM.js";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-SN7YH6FC.js";
|
|
43
43
|
import {
|
|
44
44
|
defaultConfigPath,
|
|
45
45
|
isPlausibleKey,
|
|
@@ -214,4 +214,4 @@ transcript: ${opts.transcript}
|
|
|
214
214
|
export {
|
|
215
215
|
runCommand
|
|
216
216
|
};
|
|
217
|
-
//# sourceMappingURL=run-
|
|
217
|
+
//# sourceMappingURL=run-QBWJETS3.js.map
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import {
|
|
10
10
|
SLASH_COMMANDS,
|
|
11
11
|
listPlanArchives
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-RJ5GUVS2.js";
|
|
13
13
|
import "./chunk-G3XNWSFN.js";
|
|
14
14
|
import {
|
|
15
15
|
fetchSmitheryDetail,
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
PROJECT_MEMORY_FILE,
|
|
26
26
|
SKILLS_DIRNAME,
|
|
27
27
|
SKILL_FILE
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-KJQIA4US.js";
|
|
29
29
|
import "./chunk-FM57FNPJ.js";
|
|
30
30
|
import {
|
|
31
31
|
INDEX_DIR_NAME,
|
|
@@ -44,7 +44,7 @@ import {
|
|
|
44
44
|
globalSettingsPath,
|
|
45
45
|
loadHooks,
|
|
46
46
|
projectSettingsPath
|
|
47
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-JJTOZPM3.js";
|
|
48
48
|
import {
|
|
49
49
|
VERSION
|
|
50
50
|
} from "./chunk-2AWTGJ2C.js";
|
|
@@ -58,7 +58,7 @@ import {
|
|
|
58
58
|
getLanguage,
|
|
59
59
|
getSupportedLanguages,
|
|
60
60
|
setLanguage
|
|
61
|
-
} from "./chunk-
|
|
61
|
+
} from "./chunk-SN7YH6FC.js";
|
|
62
62
|
import {
|
|
63
63
|
DEFAULT_INDEX_EXCLUDES,
|
|
64
64
|
DEFAULT_MAX_FILE_BYTES,
|
|
@@ -2965,4 +2965,4 @@ export {
|
|
|
2965
2965
|
readBody,
|
|
2966
2966
|
startDashboardServer
|
|
2967
2967
|
};
|
|
2968
|
-
//# sourceMappingURL=server-
|
|
2968
|
+
//# sourceMappingURL=server-SMLVXIW4.js.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-N2IC4XDL.js";
|
|
3
3
|
import "./chunk-I6YIAK6C.js";
|
|
4
4
|
import "./chunk-XJLZ4HKU.js";
|
|
5
5
|
import "./chunk-XHQIK7B6.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-ZU45XW3P.js";
|
|
7
7
|
import "./chunk-DAEAAVDF.js";
|
|
8
8
|
import "./chunk-KMWKGPFZ.js";
|
|
9
9
|
import "./chunk-3Q3C4W66.js";
|
|
10
10
|
import "./chunk-SX6L4HZZ.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-KJQIA4US.js";
|
|
12
|
+
import "./chunk-JJTOZPM3.js";
|
|
13
13
|
import "./chunk-2AWTGJ2C.js";
|
|
14
14
|
import "./chunk-5X7LZJDE.js";
|
|
15
15
|
import {
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
loadSessionMessages,
|
|
18
18
|
sessionPath
|
|
19
19
|
} from "./chunk-DFP4YSVM.js";
|
|
20
|
-
import "./chunk-
|
|
20
|
+
import "./chunk-SN7YH6FC.js";
|
|
21
21
|
import "./chunk-5JXXEPDM.js";
|
|
22
22
|
import "./chunk-WUI3P4RA.js";
|
|
23
23
|
import "./chunk-ZTLZO42A.js";
|
|
@@ -101,4 +101,4 @@ function truncate(s, max) {
|
|
|
101
101
|
export {
|
|
102
102
|
sessionsCommand
|
|
103
103
|
};
|
|
104
|
-
//# sourceMappingURL=sessions-
|
|
104
|
+
//# sourceMappingURL=sessions-55RIZVWG.js.map
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
onLanguageChange,
|
|
22
22
|
setLanguage,
|
|
23
23
|
t
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-SN7YH6FC.js";
|
|
25
25
|
import {
|
|
26
26
|
defaultConfigPath,
|
|
27
27
|
isPlausibleKey,
|
|
@@ -402,4 +402,4 @@ async function setupCommand(_opts = {}) {
|
|
|
402
402
|
export {
|
|
403
403
|
setupCommand
|
|
404
404
|
};
|
|
405
|
-
//# sourceMappingURL=setup-
|
|
405
|
+
//# sourceMappingURL=setup-QXMONZ4P.js.map
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import "./chunk-
|
|
2
|
+
import "./chunk-N2IC4XDL.js";
|
|
3
3
|
import "./chunk-I6YIAK6C.js";
|
|
4
4
|
import "./chunk-XJLZ4HKU.js";
|
|
5
5
|
import "./chunk-XHQIK7B6.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-ZU45XW3P.js";
|
|
7
7
|
import "./chunk-DAEAAVDF.js";
|
|
8
8
|
import "./chunk-KMWKGPFZ.js";
|
|
9
9
|
import "./chunk-3Q3C4W66.js";
|
|
10
10
|
import "./chunk-SX6L4HZZ.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-KJQIA4US.js";
|
|
12
|
+
import "./chunk-JJTOZPM3.js";
|
|
13
13
|
import {
|
|
14
14
|
VERSION
|
|
15
15
|
} from "./chunk-2AWTGJ2C.js";
|
|
16
16
|
import "./chunk-5X7LZJDE.js";
|
|
17
17
|
import "./chunk-DFP4YSVM.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-SN7YH6FC.js";
|
|
19
19
|
import "./chunk-5JXXEPDM.js";
|
|
20
20
|
import "./chunk-WUI3P4RA.js";
|
|
21
21
|
import "./chunk-ZTLZO42A.js";
|
|
@@ -28,4 +28,4 @@ function versionCommand() {
|
|
|
28
28
|
export {
|
|
29
29
|
versionCommand
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=version-
|
|
31
|
+
//# sourceMappingURL=version-Q2HA3AAC.js.map
|
package/dist/index.d.ts
CHANGED
|
@@ -658,12 +658,15 @@ type ToolCallAuditEvent = {
|
|
|
658
658
|
type ToolCallAuditListener = (event: ToolCallAuditEvent) => void;
|
|
659
659
|
/** String return short-circuits dispatch; null/undefined falls through to the tool fn. */
|
|
660
660
|
type ToolInterceptor = (name: string, args: Record<string, unknown>) => string | null | undefined | Promise<string | null | undefined>;
|
|
661
|
+
/** Final-stage post-processor — runs on every dispatch return (success and error paths) so callers can append context like a remaining-budget hint. Whatever it returns becomes the dispatch result. */
|
|
662
|
+
type ToolResultAugmenter = (name: string, args: Record<string, unknown>, result: string) => string;
|
|
661
663
|
declare class ToolRegistry {
|
|
662
664
|
private readonly _tools;
|
|
663
665
|
private readonly _autoFlatten;
|
|
664
666
|
private _planMode;
|
|
665
667
|
private _interceptor;
|
|
666
668
|
private _auditListener;
|
|
669
|
+
private _resultAugmenter;
|
|
667
670
|
constructor(opts?: ToolRegistryOptions);
|
|
668
671
|
/** Enable / disable plan-mode enforcement at dispatch. */
|
|
669
672
|
setPlanMode(on: boolean): void;
|
|
@@ -672,6 +675,8 @@ declare class ToolRegistry {
|
|
|
672
675
|
/** At most one interceptor active; calling twice replaces. */
|
|
673
676
|
setToolInterceptor(fn: ToolInterceptor | null): void;
|
|
674
677
|
setAuditListener(fn: ToolCallAuditListener | null): void;
|
|
678
|
+
/** Final-stage post-processor; replaces previous augmenter when called twice. Pass null to clear. */
|
|
679
|
+
setResultAugmenter(fn: ToolResultAugmenter | null): void;
|
|
675
680
|
register<A, R>(def: ToolDefinition<A, R>): this;
|
|
676
681
|
/** Drop a registered tool. Returns true if the name was present. Used by MCP hot-unbridge. */
|
|
677
682
|
unregister(name: string): boolean;
|