claudish 6.4.0 → 6.4.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.
package/dist/index.js CHANGED
@@ -13996,10 +13996,10 @@ class ScrollbackBuffer {
13996
13996
  const cleaned = data.replace(ANSI_RE, "");
13997
13997
  const newLines = cleaned.split(`
13998
13998
  `);
13999
- for (const line of newLines) {
14000
- if (line === "" && newLines.indexOf(line) === newLines.length - 1)
13999
+ for (let i = 0;i < newLines.length; i++) {
14000
+ if (newLines[i] === "" && i === newLines.length - 1)
14001
14001
  continue;
14002
- this.lines[this.head] = line;
14002
+ this.lines[this.head] = newLines[i];
14003
14003
  this.head = (this.head + 1) % this.capacity;
14004
14004
  if (this.count < this.capacity)
14005
14005
  this.count++;
@@ -14039,6 +14039,7 @@ var init_scrollback_buffer = __esm(() => {
14039
14039
  class SignalWatcher {
14040
14040
  sessionId;
14041
14041
  callback;
14042
+ quietPeriodMs;
14042
14043
  _state = "starting";
14043
14044
  quietTimer = null;
14044
14045
  toolBatchTimer = null;
@@ -14046,9 +14047,10 @@ class SignalWatcher {
14046
14047
  toolBatchName = null;
14047
14048
  lastChunkHadQuestion = false;
14048
14049
  disposed = false;
14049
- constructor(sessionId, callback) {
14050
+ constructor(sessionId, callback, quietPeriodMs = QUIET_PERIOD_MS) {
14050
14051
  this.sessionId = sessionId;
14051
14052
  this.callback = callback;
14053
+ this.quietPeriodMs = quietPeriodMs;
14052
14054
  }
14053
14055
  get state() {
14054
14056
  return this._state;
@@ -14074,7 +14076,7 @@ class SignalWatcher {
14074
14076
  const lastLine = lines[lines.length - 1] || text.trim();
14075
14077
  this.transition("waiting_for_input", { content: lastLine });
14076
14078
  }
14077
- }, QUIET_PERIOD_MS);
14079
+ }, this.quietPeriodMs);
14078
14080
  }
14079
14081
  processExited(exitCode) {
14080
14082
  if (this.disposed)
@@ -30954,7 +30956,7 @@ async function fetchGLMCodingModels() {
30954
30956
  return [];
30955
30957
  }
30956
30958
  }
30957
- var __filename4, __dirname4, VERSION = "6.4.0", CACHE_MAX_AGE_DAYS2 = 2, CLAUDISH_CACHE_DIR2, BUNDLED_MODELS_PATH, CACHED_MODELS_PATH, ALL_MODELS_JSON_PATH;
30959
+ var __filename4, __dirname4, VERSION = "6.4.2", CACHE_MAX_AGE_DAYS2 = 2, CLAUDISH_CACHE_DIR2, BUNDLED_MODELS_PATH, CACHED_MODELS_PATH, ALL_MODELS_JSON_PATH;
30958
30960
  var init_cli = __esm(() => {
30959
30961
  init_config();
30960
30962
  init_model_loader();
@@ -94874,7 +94876,7 @@ class MtmDiagRunner {
94874
94876
  const quotedArgs = claudeArgs.map((a) => shellQuote(a)).join(" ");
94875
94877
  const claudeCmd = `${shellQuote(claudeCommand)} ${quotedArgs}`;
94876
94878
  const mergedEnv = { ...process.env, ...env2 };
94877
- this.mtmProc = spawn4(mtmBin, ["-e", claudeCmd, "-S", this.statusPath, "-L", this.logPath], {
94879
+ this.mtmProc = spawn4(mtmBin, ["-t", "xterm-256color", "-e", claudeCmd, "-S", this.statusPath, "-L", this.logPath], {
94878
94880
  stdio: "inherit",
94879
94881
  env: mergedEnv
94880
94882
  });
@@ -95039,14 +95041,18 @@ function renderStatusBar(state) {
95039
95041
  return parts.join("\t");
95040
95042
  }
95041
95043
  function parseLogMessage(msg) {
95042
- const providerMatch = msg.match(/\[(\w+)\]/);
95044
+ const providerMatch = msg.match(/\[(?!Fallback|Streaming|Auto-route|SSE)([^\]]+)\]/);
95043
95045
  const provider = providerMatch?.[1];
95046
+ if (msg.includes("All") && msg.includes("failed")) {
95047
+ const countMatch = msg.match(/All (\d+)/);
95048
+ return { isError: true, short: `all ${countMatch?.[1] || ""} providers failed`, provider };
95049
+ }
95044
95050
  if (msg.includes("[Fallback]")) {
95045
95051
  if (msg.includes("succeeded")) {
95046
95052
  const n = msg.match(/after (\d+)/)?.[1] || "?";
95047
95053
  return { isError: false, short: `succeeded after ${n} retries`, provider };
95048
95054
  }
95049
- const failMatch = msg.match(/(\w[\w\s]*?) failed/);
95055
+ const failMatch = msg.match(/\]\s*(.+?)\s+failed/);
95050
95056
  return { isError: false, short: failMatch ? `${failMatch[1]} failed, retrying` : "fallback", provider };
95051
95057
  }
95052
95058
  const httpMatch = msg.match(/HTTP (\d{3})/);
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudish",
3
- "version": "6.4.0",
3
+ "version": "6.4.2",
4
4
  "description": "Run Claude Code with any model - OpenRouter, Ollama, LM Studio & local models",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "1.2.0",
3
- "lastUpdated": "2026-03-27",
3
+ "lastUpdated": "2026-03-28",
4
4
  "source": "https://openrouter.ai/models?categories=programming&fmt=cards&order=top-weekly",
5
5
  "models": [
6
6
  {
@@ -12,9 +12,9 @@
12
12
  "category": "programming",
13
13
  "priority": 1,
14
14
  "pricing": {
15
- "input": "$0.20/1M",
16
- "output": "$1.17/1M",
17
- "average": "$0.69/1M"
15
+ "input": "$0.19/1M",
16
+ "output": "$1.15/1M",
17
+ "average": "$0.67/1M"
18
18
  },
19
19
  "context": "196K",
20
20
  "maxOutputTokens": 65536,
@@ -34,9 +34,9 @@
34
34
  "category": "vision",
35
35
  "priority": 2,
36
36
  "pricing": {
37
- "input": "$0.45/1M",
37
+ "input": "$0.42/1M",
38
38
  "output": "$2.20/1M",
39
- "average": "$1.32/1M"
39
+ "average": "$1.31/1M"
40
40
  },
41
41
  "context": "262K",
42
42
  "maxOutputTokens": 65535,