reasonix 0.33.0 → 0.33.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/cli/{chat-EIFLHBZ6.js → chat-ZMSAXE77.js} +6 -5
  2. package/dist/cli/{chunk-Q5GRLZJF.js → chunk-63KAV5DX.js} +8 -1
  3. package/dist/cli/{chunk-Q5GRLZJF.js.map → chunk-63KAV5DX.js.map} +1 -1
  4. package/dist/cli/chunk-DAEAAVDF.js +199 -0
  5. package/dist/cli/chunk-DAEAAVDF.js.map +1 -0
  6. package/dist/cli/{chunk-Q6YFXW7H.js → chunk-G7M3QWEN.js} +27 -213
  7. package/dist/cli/chunk-G7M3QWEN.js.map +1 -0
  8. package/dist/cli/{chunk-LVQX5KGF.js → chunk-OW7IHE6M.js} +45 -18
  9. package/dist/cli/chunk-OW7IHE6M.js.map +1 -0
  10. package/dist/cli/{chunk-D5DKXIP5.js → chunk-WVJL7ZO2.js} +15 -24
  11. package/dist/cli/chunk-WVJL7ZO2.js.map +1 -0
  12. package/dist/cli/{code-F4KJOE3K.js → code-R4TXQQEE.js} +6 -5
  13. package/dist/cli/{code-F4KJOE3K.js.map → code-R4TXQQEE.js.map} +1 -1
  14. package/dist/cli/{doctor-3TGB2NZN.js → doctor-V5HLCMSQ.js} +3 -2
  15. package/dist/cli/index.js +10 -9
  16. package/dist/cli/index.js.map +1 -1
  17. package/dist/cli/{replay-TMJASRC4.js → replay-Q43DSMG6.js} +2 -2
  18. package/dist/cli/{run-JMEOTQCG.js → run-HK3FP266.js} +3 -2
  19. package/dist/cli/{run-JMEOTQCG.js.map → run-HK3FP266.js.map} +1 -1
  20. package/dist/cli/{sessions-MOJAALJI.js → sessions-3XU2GGHX.js} +3 -2
  21. package/dist/cli/{sessions-MOJAALJI.js.map → sessions-3XU2GGHX.js.map} +1 -1
  22. package/dist/cli/{version-3MYFE4G6.js → version-5SGI2SEE.js} +3 -2
  23. package/dist/cli/{version-3MYFE4G6.js.map → version-5SGI2SEE.js.map} +1 -1
  24. package/dist/index.js.map +1 -1
  25. package/package.json +1 -1
  26. package/dist/cli/chunk-D5DKXIP5.js.map +0 -1
  27. package/dist/cli/chunk-LVQX5KGF.js.map +0 -1
  28. package/dist/cli/chunk-Q6YFXW7H.js.map +0 -1
  29. /package/dist/cli/{chat-EIFLHBZ6.js.map → chat-ZMSAXE77.js.map} +0 -0
  30. /package/dist/cli/{doctor-3TGB2NZN.js.map → doctor-V5HLCMSQ.js.map} +0 -0
  31. /package/dist/cli/{replay-TMJASRC4.js.map → replay-Q43DSMG6.js.map} +0 -0
@@ -12,9 +12,10 @@ import {
12
12
  SURFACE,
13
13
  TONE,
14
14
  TONE_ACTIVE,
15
+ balanceColor,
15
16
  formatBalance,
16
17
  formatCost
17
- } from "./chunk-Q5GRLZJF.js";
18
+ } from "./chunk-63KAV5DX.js";
18
19
  import {
19
20
  dumpStartupProfile,
20
21
  markPhase
@@ -25,7 +26,6 @@ import {
25
26
  ToolRegistry,
26
27
  applyEditBlocks,
27
28
  bridgeMcpTools,
28
- countTokens,
29
29
  detectAtPicker,
30
30
  expandAtMentions,
31
31
  expandAtUrls,
@@ -42,7 +42,7 @@ import {
42
42
  spawnSubagent,
43
43
  toWholeFileEditBlock,
44
44
  webFetch
45
- } from "./chunk-Q6YFXW7H.js";
45
+ } from "./chunk-G7M3QWEN.js";
46
46
  import {
47
47
  McpClient,
48
48
  SseTransport,
@@ -76,7 +76,10 @@ import {
76
76
  } from "./chunk-MHDNZXJJ.js";
77
77
  import {
78
78
  runDoctorChecks
79
- } from "./chunk-D5DKXIP5.js";
79
+ } from "./chunk-WVJL7ZO2.js";
80
+ import {
81
+ countTokens
82
+ } from "./chunk-DAEAAVDF.js";
80
83
  import {
81
84
  DeepSeekClient
82
85
  } from "./chunk-KMWKGPFZ.js";
@@ -5263,12 +5266,12 @@ function processMultilineKey(value, cursor, keyIn) {
5263
5266
  return { next: null, cursor: Math.min(value.length, cursor + 1), submit: false };
5264
5267
  }
5265
5268
  if (key.upArrow) {
5266
- if (value.length === 0) return { ...NOOP, chatScrollHandoff: "up" };
5269
+ if (value.length === 0) return { ...NOOP, historyHandoff: "prev" };
5267
5270
  const moved = moveCursorUp(value, cursor);
5268
5271
  return moved === cursor ? NOOP : { next: null, cursor: moved, submit: false };
5269
5272
  }
5270
5273
  if (key.downArrow) {
5271
- if (value.length === 0) return { ...NOOP, chatScrollHandoff: "down" };
5274
+ if (value.length === 0) return { ...NOOP, historyHandoff: "next" };
5272
5275
  const moved = moveCursorDown(value, cursor);
5273
5276
  return moved === cursor ? NOOP : { next: null, cursor: moved, submit: false };
5274
5277
  }
@@ -5621,9 +5624,7 @@ function PromptInput({
5621
5624
  disabled,
5622
5625
  placeholder,
5623
5626
  onHistoryPrev,
5624
- onHistoryNext,
5625
- onChatScrollUp,
5626
- onChatScrollDown
5627
+ onHistoryNext
5627
5628
  }) {
5628
5629
  const inputLineCount = value.length > 0 ? value.split("\n").length : 1;
5629
5630
  const reserveMax = Math.min(Math.ceil(inputLineCount / 4) * 4 + 3, 24);
@@ -5705,8 +5706,6 @@ function PromptInput({
5705
5706
  }
5706
5707
  if (action.historyHandoff === "prev") onHistoryPrev?.();
5707
5708
  if (action.historyHandoff === "next") onHistoryNext?.();
5708
- if (action.chatScrollHandoff === "up") onChatScrollUp?.();
5709
- if (action.chatScrollHandoff === "down") onChatScrollDown?.();
5710
5709
  }, !disabled);
5711
5710
  const { stdout } = useStdout6();
5712
5711
  const cols = stdout?.columns ?? 80;
@@ -5714,7 +5713,7 @@ function PromptInput({
5714
5713
  const continuationIndent = " ";
5715
5714
  const prefixCells = promptPrefix.length;
5716
5715
  const visibleCells = Math.max(8, cols - prefixCells - 3);
5717
- const effectivePlaceholder = disabled ? placeholder ?? "\u2026waiting for response\u2026" : placeholder ?? "type a message \xB7 slash for commands \xB7 at-sign for files";
5716
+ const effectivePlaceholder = disabled ? placeholder ?? "\u2026waiting for response\u2026" : placeholder ?? "ask anything \xB7 slash for commands \xB7 at-sign for files";
5718
5717
  const lines = value.length > 0 ? value.split("\n") : [""];
5719
5718
  const accentColor = disabled ? FG.faint : TONE.brand;
5720
5719
  const cursorVisible = true;
@@ -5834,7 +5833,17 @@ function PromptInput({
5834
5833
  }
5835
5834
  }
5836
5835
  return rows;
5837
- })(), showHugeBufferHints && !disabled ? /* @__PURE__ */ React23.createElement(Box19, null, /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, ` [${lines.length} lines \xB7 PgUp/PgDn jump \xB7 Ctrl+U clear \xB7 Ctrl+W del word]`)) : null, !disabled ? /* @__PURE__ */ React23.createElement(Box19, { marginTop: 1 }, /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, " \u23CE send \xB7 shift/alt+\u23CE newline \xB7 \u2191\u2193 history \xB7 esc abort \xB7 ctrl-c quit")) : /* @__PURE__ */ React23.createElement(Box19, { marginTop: 1 }, /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, " esc to stop")));
5836
+ })(), showHugeBufferHints && !disabled ? /* @__PURE__ */ React23.createElement(Box19, null, /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, ` [${lines.length} lines \xB7 PgUp/PgDn jump \xB7 Ctrl+U clear \xB7 Ctrl+W del word]`)) : null, !disabled ? /* @__PURE__ */ React23.createElement(Box19, { marginTop: 1 }, /* @__PURE__ */ React23.createElement(HintRow, null)) : /* @__PURE__ */ React23.createElement(Box19, { marginTop: 1 }, /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, " esc to stop")));
5837
+ }
5838
+ function HintRow() {
5839
+ const items = [
5840
+ { key: "\u23CE", sep: "send" },
5841
+ { key: "\u21E7\u23CE", sep: "newline" },
5842
+ { key: "\u2191\u2193", sep: "history" },
5843
+ { key: "esc", sep: "abort" },
5844
+ { key: "^C", sep: "quit" }
5845
+ ];
5846
+ return /* @__PURE__ */ React23.createElement(Box19, { flexDirection: "row" }, /* @__PURE__ */ React23.createElement(Text19, null, " "), items.map((item, i) => /* @__PURE__ */ React23.createElement(React23.Fragment, { key: item.key }, i > 0 && /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, " \xB7 "), /* @__PURE__ */ React23.createElement(Text19, { color: FG.meta }, item.key), /* @__PURE__ */ React23.createElement(Text19, { color: FG.faint }, ` ${item.sep}`))));
5838
5847
  }
5839
5848
  function splitLineByPastes(line) {
5840
5849
  const out = [];
@@ -9160,6 +9169,7 @@ function Countdown({ endsAt, color = TONE.brand }) {
9160
9169
  // src/cli/ui/layout/StatusRow.tsx
9161
9170
  var RULE_PAD = 4;
9162
9171
  var RULE_MIN = 20;
9172
+ var WALLET_MIN_COLS = 90;
9163
9173
  function StatusRow() {
9164
9174
  const status2 = useAgentState((s) => s.status);
9165
9175
  const session = useAgentState((s) => s.session);
@@ -9167,7 +9177,26 @@ function StatusRow() {
9167
9177
  const cols = stdout?.columns ?? 80;
9168
9178
  const ruleWidth = Math.max(RULE_MIN, cols - RULE_PAD);
9169
9179
  const hasTurn = status2.cost > 0;
9170
- return /* @__PURE__ */ React55.createElement(Box45, { flexDirection: "column" }, /* @__PURE__ */ React55.createElement(Box45, null, /* @__PURE__ */ React55.createElement(Text48, null, " "), /* @__PURE__ */ React55.createElement(Text48, { color: FG.faint }, "\u2500".repeat(ruleWidth))), /* @__PURE__ */ React55.createElement(Box45, { flexDirection: "row" }, /* @__PURE__ */ React55.createElement(Text48, null, " "), status2.recording ? /* @__PURE__ */ React55.createElement(RecordingPill, { rec: status2.recording }) : status2.countdownSeconds !== void 0 ? /* @__PURE__ */ React55.createElement(CountdownRow, { mode: status2.mode, secondsLeft: status2.countdownSeconds }) : /* @__PURE__ */ React55.createElement(ModePill2, { mode: status2.mode, network: status2.network, detail: status2.networkDetail }), /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { color: FG.sub }, `${session.id} \xB7 ${session.branch}`), hasTurn && /* @__PURE__ */ React55.createElement(React55.Fragment, null, /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { bold: true, color: TONE.brand }, "\u25B8 "), /* @__PURE__ */ React55.createElement(Text48, { bold: true, color: FG.body }, `${formatCost(status2.cost, status2.balanceCurrency)} turn`)), /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { color: TONE.accent }, `cache ${Math.round(status2.cacheHit * 100)}%`)));
9180
+ const hasSession = status2.sessionCost > 0;
9181
+ const hasBalance = typeof status2.balance === "number";
9182
+ const showWallet = cols >= WALLET_MIN_COLS && (hasSession || hasBalance);
9183
+ return /* @__PURE__ */ React55.createElement(Box45, { flexDirection: "column" }, /* @__PURE__ */ React55.createElement(Box45, null, /* @__PURE__ */ React55.createElement(Text48, null, " "), /* @__PURE__ */ React55.createElement(Text48, { color: FG.faint }, "\u2500".repeat(ruleWidth))), /* @__PURE__ */ React55.createElement(Box45, { flexDirection: "row" }, /* @__PURE__ */ React55.createElement(Text48, null, " "), status2.recording ? /* @__PURE__ */ React55.createElement(RecordingPill, { rec: status2.recording }) : status2.countdownSeconds !== void 0 ? /* @__PURE__ */ React55.createElement(CountdownRow, { mode: status2.mode, secondsLeft: status2.countdownSeconds }) : /* @__PURE__ */ React55.createElement(ModePill2, { mode: status2.mode, network: status2.network, detail: status2.networkDetail }), /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { color: FG.sub }, `${session.id} \xB7 ${session.branch}`), hasTurn && /* @__PURE__ */ React55.createElement(React55.Fragment, null, /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { bold: true, color: TONE.brand }, "\u25B8 "), /* @__PURE__ */ React55.createElement(Text48, { bold: true, color: FG.body }, `${formatCost(status2.cost, status2.balanceCurrency)} turn`)), /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { color: TONE.accent }, `cache ${Math.round(status2.cacheHit * 100)}%`), showWallet && /* @__PURE__ */ React55.createElement(
9184
+ WalletPill,
9185
+ {
9186
+ sessionCostUsd: status2.sessionCost,
9187
+ balance: status2.balance,
9188
+ currency: status2.balanceCurrency
9189
+ }
9190
+ )));
9191
+ }
9192
+ function WalletPill({
9193
+ sessionCostUsd,
9194
+ balance,
9195
+ currency
9196
+ }) {
9197
+ const showSpent = sessionCostUsd > 0;
9198
+ const showBalance = typeof balance === "number";
9199
+ return /* @__PURE__ */ React55.createElement(React55.Fragment, null, /* @__PURE__ */ React55.createElement(Sep, null), /* @__PURE__ */ React55.createElement(Text48, { color: FG.meta }, "\u26C1 "), showSpent && /* @__PURE__ */ React55.createElement(Text48, { color: FG.body }, `${formatCost(sessionCostUsd, currency, 2)} spent`), showSpent && showBalance && /* @__PURE__ */ React55.createElement(Text48, { color: FG.meta }, " / "), showBalance && /* @__PURE__ */ React55.createElement(Text48, { bold: true, color: balanceColor(balance, currency) }, formatBalance(balance, currency, { fractionDigits: 2 })), showBalance && /* @__PURE__ */ React55.createElement(Text48, { color: FG.faint }, " left"));
9171
9200
  }
9172
9201
  function ModePill2({
9173
9202
  mode: mode2,
@@ -14455,9 +14484,7 @@ Stay in plan mode \u2014 address the feedback (explore more if needed), then sub
14455
14484
  onSubmit: handleSubmit,
14456
14485
  disabled: busy,
14457
14486
  onHistoryPrev: recallPrev,
14458
- onHistoryNext: recallNext,
14459
- onChatScrollUp: chatScroll.scrollUp,
14460
- onChatScrollDown: chatScroll.scrollDown
14487
+ onHistoryNext: recallNext
14461
14488
  }
14462
14489
  ), slashMatches !== null ? /* @__PURE__ */ React59.createElement(
14463
14490
  SlashSuggestions,
@@ -14931,4 +14958,4 @@ async function chatCommand(opts) {
14931
14958
  export {
14932
14959
  chatCommand
14933
14960
  };
14934
- //# sourceMappingURL=chunk-LVQX5KGF.js.map
14961
+ //# sourceMappingURL=chunk-OW7IHE6M.js.map