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.
Files changed (52) hide show
  1. package/dashboard/app.css +16 -14
  2. package/dashboard/dist/app.js +35 -15
  3. package/dashboard/dist/app.js.map +1 -1
  4. package/dist/cli/{chat-TL4HMNEQ.js → chat-AB5D7I3V.js} +9 -9
  5. package/dist/cli/{chunk-5SAMVHA3.js → chunk-GPHBJWCV.js} +395 -175
  6. package/dist/cli/chunk-GPHBJWCV.js.map +1 -0
  7. package/dist/cli/{chunk-F3ILWP2L.js → chunk-IDP65VCC.js} +2 -2
  8. package/dist/cli/{chunk-OERAGRJX.js → chunk-JJTOZPM3.js} +2 -2
  9. package/dist/cli/{chunk-U3V2ZQ5J.js → chunk-KJQIA4US.js} +6 -2
  10. package/dist/cli/chunk-KJQIA4US.js.map +1 -0
  11. package/dist/cli/{chunk-LNTORE5K.js → chunk-N2IC4XDL.js} +149 -35
  12. package/dist/cli/chunk-N2IC4XDL.js.map +1 -0
  13. package/dist/cli/{chunk-SA4UGZPG.js → chunk-RJ5GUVS2.js} +6 -1
  14. package/dist/cli/chunk-RJ5GUVS2.js.map +1 -0
  15. package/dist/cli/{chunk-Q36KBLSU.js → chunk-SN7YH6FC.js} +125 -1
  16. package/dist/cli/chunk-SN7YH6FC.js.map +1 -0
  17. package/dist/cli/{chunk-6TMHAK5D.js → chunk-ZU45XW3P.js} +2 -2
  18. package/dist/cli/code-XBEFHXVM.js +433 -0
  19. package/dist/cli/code-XBEFHXVM.js.map +1 -0
  20. package/dist/cli/{doctor-YASM64X6.js → doctor-A565GMWD.js} +4 -4
  21. package/dist/cli/index.js +15 -15
  22. package/dist/cli/{prompt-V47QKSAR.js → prompt-YEKXMNNV.js} +3 -3
  23. package/dist/cli/{replay-JEDLU7F2.js → replay-P2WC5N5X.js} +2 -2
  24. package/dist/cli/replay-P2WC5N5X.js.map +1 -0
  25. package/dist/cli/{run-NHD2RSTD.js → run-QBWJETS3.js} +6 -6
  26. package/dist/cli/{server-MC4A4WAJ.js → server-SMLVXIW4.js} +5 -5
  27. package/dist/cli/{sessions-ZHWJEW4L.js → sessions-55RIZVWG.js} +6 -6
  28. package/dist/cli/{setup-DK43MT47.js → setup-QXMONZ4P.js} +2 -2
  29. package/dist/cli/{version-O362UKPM.js → version-Q2HA3AAC.js} +6 -6
  30. package/dist/index.d.ts +5 -0
  31. package/dist/index.js +273 -31
  32. package/dist/index.js.map +1 -1
  33. package/package.json +1 -1
  34. package/dist/cli/chunk-5SAMVHA3.js.map +0 -1
  35. package/dist/cli/chunk-LNTORE5K.js.map +0 -1
  36. package/dist/cli/chunk-Q36KBLSU.js.map +0 -1
  37. package/dist/cli/chunk-SA4UGZPG.js.map +0 -1
  38. package/dist/cli/chunk-U3V2ZQ5J.js.map +0 -1
  39. package/dist/cli/code-V6F4BKMG.js +0 -153
  40. package/dist/cli/code-V6F4BKMG.js.map +0 -1
  41. package/dist/cli/replay-JEDLU7F2.js.map +0 -1
  42. /package/dist/cli/{chat-TL4HMNEQ.js.map → chat-AB5D7I3V.js.map} +0 -0
  43. /package/dist/cli/{chunk-F3ILWP2L.js.map → chunk-IDP65VCC.js.map} +0 -0
  44. /package/dist/cli/{chunk-OERAGRJX.js.map → chunk-JJTOZPM3.js.map} +0 -0
  45. /package/dist/cli/{chunk-6TMHAK5D.js.map → chunk-ZU45XW3P.js.map} +0 -0
  46. /package/dist/cli/{doctor-YASM64X6.js.map → doctor-A565GMWD.js.map} +0 -0
  47. /package/dist/cli/{prompt-V47QKSAR.js.map → prompt-YEKXMNNV.js.map} +0 -0
  48. /package/dist/cli/{run-NHD2RSTD.js.map → run-QBWJETS3.js.map} +0 -0
  49. /package/dist/cli/{server-MC4A4WAJ.js.map → server-SMLVXIW4.js.map} +0 -0
  50. /package/dist/cli/{sessions-ZHWJEW4L.js.map → sessions-55RIZVWG.js.map} +0 -0
  51. /package/dist/cli/{setup-DK43MT47.js.map → setup-QXMONZ4P.js.map} +0 -0
  52. /package/dist/cli/{version-O362UKPM.js.map → version-Q2HA3AAC.js.map} +0 -0
package/dashboard/app.css CHANGED
@@ -85,7 +85,7 @@ a:hover { text-decoration: underline; }
85
85
  /* ── Doc chrome ─────────────────────────────────────────────────────────── */
86
86
  .page {
87
87
  display: grid;
88
- grid-template-columns: 240px minmax(0, 1fr);
88
+ grid-template-columns: 260px minmax(0, 1fr);
89
89
  max-width: 1320px;
90
90
  margin: 0 auto;
91
91
  min-height: 100vh;
@@ -94,18 +94,19 @@ a:hover { text-decoration: underline; }
94
94
  position: sticky; top: 0; align-self: start;
95
95
  height: 100vh; overflow-y: auto;
96
96
  border-right: 1px solid var(--bd);
97
- padding: 28px 18px;
97
+ padding: 28px 16px;
98
98
  background: var(--bg);
99
99
  }
100
- .toc h1 { font-size: 14px; font-weight: 700; margin: 0 0 4px; color: var(--fg-0); letter-spacing: .03em; font-family: var(--font-mono); }
100
+ .toc h1 { font-size: 15px; font-weight: 700; margin: 0 0 4px; color: var(--fg-0); letter-spacing: .03em; font-family: var(--font-mono); }
101
101
  .toc h1 .dot { color: var(--c-brand); margin-right: 8px; }
102
- .toc .sub { font-size: 11px; color: var(--fg-3); margin: 0 0 18px; letter-spacing: .04em; }
103
- .toc-section { font-size: 10px; text-transform: uppercase; letter-spacing: .14em; color: var(--fg-4); margin: 22px 0 6px; font-weight: 700; }
102
+ .toc .sub { font-size: 12px; color: var(--fg-3); margin: 0 0 18px; letter-spacing: .04em; }
103
+ .toc-section { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--fg-4); margin: 22px 0 6px; font-weight: 700; }
104
104
  .toc-section:first-of-type { margin-top: 0; }
105
105
  .toc ul { list-style: none; padding: 0; margin: 0; }
106
106
  .toc li a {
107
- display: block; padding: 3px 8px; margin: 1px 0;
108
- color: var(--fg-2); font-size: 12.5px; border-radius: var(--r);
107
+ display: block; padding: 4px 10px; margin: 1px 0;
108
+ color: var(--fg-2); font-size: 14px; line-height: 1.4;
109
+ border-radius: var(--r); overflow-wrap: anywhere;
109
110
  }
110
111
  .toc li a:hover { color: var(--fg-0); background: var(--bg-elev); text-decoration: none; }
111
112
 
@@ -118,7 +119,7 @@ main { padding: 32px 40px 60px 32px; min-width: 0; }
118
119
  }
119
120
  .section > h2 .num { color: var(--fg-4); margin-right: 10px; font-weight: 500; }
120
121
  .section > .lede {
121
- color: var(--fg-2); margin: 0 0 22px; font-size: 13px; max-width: 700px; line-height: 1.6;
122
+ color: var(--fg-2); margin: 0 0 22px; font-size: 15px; max-width: 720px; line-height: 1.6;
122
123
  }
123
124
  .subsec { margin-bottom: 22px; }
124
125
  .subsec > h3 {
@@ -126,8 +127,8 @@ main { padding: 32px 40px 60px 32px; min-width: 0; }
126
127
  margin: 24px 0 4px; letter-spacing: .04em; text-transform: uppercase;
127
128
  font-family: var(--font-mono);
128
129
  }
129
- .subsec > h3 .desc { color: var(--fg-3); font-weight: 400; margin-left: 10px; font-size: 12px; text-transform: none; letter-spacing: 0; }
130
- .subsec > p { color: var(--fg-3); font-size: 12.5px; margin: 0 0 12px; max-width: 720px; line-height: 1.6; }
130
+ .subsec > h3 .desc { color: var(--fg-3); font-weight: 400; margin-left: 10px; font-size: 13px; text-transform: none; letter-spacing: 0; }
131
+ .subsec > p { color: var(--fg-3); font-size: 15px; margin: 0 0 12px; max-width: 720px; line-height: 1.6; }
131
132
 
132
133
  /* "Mock" — a faux-window frame to display dashboard pieces inside the design doc */
133
134
  .mock {
@@ -155,11 +156,11 @@ main { padding: 32px 40px 60px 32px; min-width: 0; }
155
156
  .swatch .chip { width: 22px; height: 22px; border-radius: var(--r); flex-shrink: 0; border: 1px solid rgba(255,255,255,.04); }
156
157
  .swatch .meta { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
157
158
  .swatch .name { color: var(--fg-1); font-size: 11.5px; }
158
- .swatch .hex { color: var(--fg-3); font-size: 10.5px; }
159
+ .swatch .hex { color: var(--fg-3); font-size: 11.5px; }
159
160
 
160
161
  .scale-row { display: flex; align-items: baseline; gap: 16px; padding: 6px 0; border-bottom: 1px dashed #181b22; }
161
162
  .scale-row:last-child { border-bottom: none; }
162
- .scale-row .lbl { font-family: var(--font-mono); font-size: 10.5px; color: var(--fg-3); width: 70px; flex-shrink: 0; }
163
+ .scale-row .lbl { font-family: var(--font-mono); font-size: 11.5px; color: var(--fg-3); width: 76px; flex-shrink: 0; }
163
164
  .scale-row .ex { color: var(--fg-1); }
164
165
 
165
166
  .glyph-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 6px; }
@@ -311,12 +312,13 @@ main { padding: 32px 40px 60px 32px; min-width: 0; }
311
312
  .pill.acc { color: var(--c-accent); background: rgba(210,168,255,.10); }
312
313
 
313
314
  /* Table */
314
- .tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
315
+ .tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; table-layout: auto; }
315
316
  .tbl th, .tbl td { padding: 8px 10px; text-align: left; border-bottom: 1px solid var(--bd); }
316
317
  .tbl th { font-family: var(--font-mono); font-size: 10.5px; font-weight: 600; color: var(--fg-3); text-transform: uppercase; letter-spacing: .08em; background: var(--bg-elev); }
318
+ .tbl th.num, .tbl td.num { font-family: var(--font-mono); text-align: right; font-variant-numeric: tabular-nums; }
317
319
  .tbl td { color: var(--fg-1); }
318
320
  .tbl tbody tr:hover { background: var(--bg-hover); }
319
- .tbl td.num { font-family: var(--font-mono); text-align: right; color: var(--fg-0); font-variant-numeric: tabular-nums; }
321
+ .tbl td.num { color: var(--fg-0); }
320
322
  .tbl td.dim { color: var(--fg-3); }
321
323
  .tbl td.path { font-family: var(--font-mono); font-size: 11.5px; color: var(--fg-2); }
322
324
 
@@ -19392,12 +19392,19 @@ var en = {
19392
19392
  dailyMeta: "cost \xB7 cache saved \xB7 turns",
19393
19393
  noData: "No usage data yet \u2014 run a turn in reasonix chat / code / run and refresh.",
19394
19394
  windows: "Rolling windows",
19395
+ colWindow: "window",
19395
19396
  colTurns: "turns",
19396
19397
  colCacheHit: "cache hit",
19397
19398
  colCost: "cost (USD)",
19398
19399
  colCacheSaved: "cache saved",
19399
19400
  colVsClaude: "vs Claude",
19400
19401
  colSaved: "saved",
19402
+ axisTime: "time",
19403
+ axisUsd: "USD",
19404
+ axisTurns: "turns",
19405
+ seriesCost: "cost",
19406
+ seriesCacheSaved: "cache saved",
19407
+ seriesTurns: "turns",
19401
19408
  mostUsed: "Most used models",
19402
19409
  colModel: "model"
19403
19410
  },
@@ -19966,12 +19973,19 @@ var zhCN = {
19966
19973
  dailyMeta: "\u8D39\u7528 \xB7 \u7F13\u5B58\u8282\u7701 \xB7 \u8F6E\u6B21",
19967
19974
  noData: "\u6682\u65E0\u7528\u91CF\u6570\u636E \u2014 \u5728 reasonix chat / code / run \u4E2D\u6267\u884C\u4E00\u8F6E\uFF0C\u7136\u540E\u5237\u65B0\u3002",
19968
19975
  windows: "\u6EDA\u52A8\u7A97\u53E3",
19976
+ colWindow: "\u65F6\u95F4\u8303\u56F4",
19969
19977
  colTurns: "\u8F6E\u6B21",
19970
19978
  colCacheHit: "\u7F13\u5B58\u547D\u4E2D",
19971
19979
  colCost: "\u8D39\u7528 (USD)",
19972
19980
  colCacheSaved: "\u7F13\u5B58\u8282\u7701",
19973
19981
  colVsClaude: "\u5BF9\u6BD4 Claude",
19974
19982
  colSaved: "\u8282\u7701",
19983
+ axisTime: "\u65F6\u95F4",
19984
+ axisUsd: "\u7F8E\u5143",
19985
+ axisTurns: "\u8F6E\u6B21",
19986
+ seriesCost: "\u8D39\u7528",
19987
+ seriesCacheSaved: "\u7F13\u5B58\u8282\u7701",
19988
+ seriesTurns: "\u8F6E\u6B21",
19975
19989
  mostUsed: "\u6700\u5E38\u7528\u6A21\u578B",
19976
19990
  colModel: "\u6A21\u578B"
19977
19991
  },
@@ -23846,7 +23860,7 @@ function ChatPanel() {
23846
23860
  function SideRail({ stats, budgetUsd, activePlan }) {
23847
23861
  useLang();
23848
23862
  if (!stats && !activePlan) return html4`<aside class="chat-rail"></aside>`;
23849
- const cachePct = stats ? Math.round(stats.cacheHitRatio * 100) : 0;
23863
+ const cachePct = stats ? stats.cacheHitRatio * 100 : 0;
23850
23864
  const cacheTone = cachePct >= 80 ? "ok" : cachePct >= 50 ? "" : "warn";
23851
23865
  const showBudget = stats != null && typeof budgetUsd === "number" && budgetUsd > 0;
23852
23866
  const budgetPct = showBudget ? Math.min(120, stats.totalCostUsd / budgetUsd * 100) : 0;
@@ -23864,7 +23878,7 @@ function SideRail({ stats, budgetUsd, activePlan }) {
23864
23878
  <div class="progress-row" style="margin-top:8px">
23865
23879
  <span class="lbl">${t4("chat.railCacheHit")}</span>
23866
23880
  <div class=${`progress ${cacheTone}`}><div class="progress-fill" style=${`width:${cachePct}%`}></div></div>
23867
- <span class="v">${cachePct}%</span>
23881
+ <span class="v">${cachePct.toFixed(1)}%</span>
23868
23882
  </div>
23869
23883
  </div>
23870
23884
  ` : null}
@@ -27311,6 +27325,7 @@ function loadUPlot() {
27311
27325
  function UsageChart({ days: days2 }) {
27312
27326
  const containerRef = A2(null);
27313
27327
  const plotRef = A2(null);
27328
+ useLang();
27314
27329
  y2(() => {
27315
27330
  let cancelled = false;
27316
27331
  loadUPlot().then((uPlot2) => {
@@ -27338,7 +27353,7 @@ function UsageChart({ days: days2 }) {
27338
27353
  { stroke: "#94a3b8", grid: { stroke: "rgba(148, 163, 184, 0.08)" } },
27339
27354
  {
27340
27355
  scale: "y",
27341
- label: "USD",
27356
+ label: t4("usage.axisUsd"),
27342
27357
  stroke: "#94a3b8",
27343
27358
  grid: { stroke: "rgba(148, 163, 184, 0.08)" },
27344
27359
  values: (_u, v3) => v3.map((n3) => `$${n3.toFixed(4)}`)
@@ -27346,17 +27361,22 @@ function UsageChart({ days: days2 }) {
27346
27361
  {
27347
27362
  scale: "turns",
27348
27363
  side: 1,
27349
- label: "turns",
27364
+ label: t4("usage.axisTurns"),
27350
27365
  stroke: "#94a3b8",
27351
27366
  grid: { show: false }
27352
27367
  }
27353
27368
  ],
27354
27369
  series: [
27355
- {},
27356
- { label: "cost", stroke: "#67e8f9", width: 2, fill: "rgba(103, 232, 249, 0.10)" },
27357
- { label: "cache saved", stroke: "#5eead4", width: 2, dash: [4, 4] },
27370
+ { label: t4("usage.axisTime") },
27371
+ {
27372
+ label: t4("usage.seriesCost"),
27373
+ stroke: "#67e8f9",
27374
+ width: 2,
27375
+ fill: "rgba(103, 232, 249, 0.10)"
27376
+ },
27377
+ { label: t4("usage.seriesCacheSaved"), stroke: "#5eead4", width: 2, dash: [4, 4] },
27358
27378
  {
27359
- label: "turns",
27379
+ label: t4("usage.seriesTurns"),
27360
27380
  stroke: "#c4b5fd",
27361
27381
  scale: "turns",
27362
27382
  width: 1.5,
@@ -27442,13 +27462,13 @@ function UsagePanel() {
27442
27462
  <table class="tbl">
27443
27463
  <thead>
27444
27464
  <tr>
27445
- <th></th>
27446
- <th>${t4("usage.colTurns")}</th>
27447
- <th>${t4("usage.colCacheHit")}</th>
27448
- <th>${t4("usage.colCost")}</th>
27449
- <th>${t4("usage.colCacheSaved")}</th>
27450
- <th>${t4("usage.colVsClaude")}</th>
27451
- <th>${t4("usage.colSaved")}</th>
27465
+ <th>${t4("usage.colWindow")}</th>
27466
+ <th class="num">${t4("usage.colTurns")}</th>
27467
+ <th class="num">${t4("usage.colCacheHit")}</th>
27468
+ <th class="num">${t4("usage.colCost")}</th>
27469
+ <th class="num">${t4("usage.colCacheSaved")}</th>
27470
+ <th class="num">${t4("usage.colVsClaude")}</th>
27471
+ <th class="num">${t4("usage.colSaved")}</th>
27452
27472
  </tr>
27453
27473
  </thead>
27454
27474
  <tbody>