codeam-cli 1.4.46 → 1.4.48

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 (2) hide show
  1. package/dist/index.js +21 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -116,7 +116,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
116
116
  // package.json
117
117
  var package_default = {
118
118
  name: "codeam-cli",
119
- version: "1.4.46",
119
+ version: "1.4.48",
120
120
  description: "Remote control Claude Code from your mobile device",
121
121
  main: "dist/index.js",
122
122
  bin: {
@@ -899,11 +899,17 @@ var http2 = __toESM(require("http"));
899
899
 
900
900
  // src/services/parseChrome.ts
901
901
  var SPINNER_RE = /^[✳✢✶✻✽✴✷✸✹⠋⠙⠹⠸⠼⠴⠦⠧⠇⠏◐◑◒◓▁▂▃▄▅▆▇█]\s/;
902
+ var BULLET_TOOL_RE = /^•\s+(?:Read(?:ing)?|Edit(?:ing)?|Writ(?:e|ing)|Bash|Runn(?:ing)?|Search(?:ing)?|Glob(?:bing)?|Grep(?:ping)?|Creat(?:e|ing)|Execut(?:e|ing)|Task|Agent|NotebookEdit)\b/i;
903
+ var TREE_LINE_RE = /^└\s/;
904
+ var STATUS_LINE_RE = /^\+\s/;
902
905
  function isChromeLine(line) {
903
906
  const t = line.trim();
904
907
  if (!t) return false;
905
908
  if (/^[─━—═─\-]{3,}$/.test(t)) return true;
906
909
  if (SPINNER_RE.test(t)) return true;
910
+ if (BULLET_TOOL_RE.test(t)) return true;
911
+ if (TREE_LINE_RE.test(t)) return true;
912
+ if (STATUS_LINE_RE.test(t) && /\d+\s*s\s*[·•]|\bthought\s+for\b|\d+\s*tokens|\(thinking\)/i.test(t)) return true;
907
913
  if (/esc.{0,5}to.{0,5}interrupt/i.test(t)) return true;
908
914
  if (/high\s*[·•]\s*\/effort/i.test(t)) return true;
909
915
  if (/^[❯>]\s*$/.test(t)) return true;
@@ -928,9 +934,17 @@ function parseChromeLine(line) {
928
934
  if (/^\(thinking\)\s*$/.test(t)) {
929
935
  return { tool: "thinking", label: "Thinking\u2026", status: "running" };
930
936
  }
937
+ if (TREE_LINE_RE.test(t)) return null;
938
+ if (STATUS_LINE_RE.test(t) && /\d+\s*s\s*[·•]|\bthought\s+for\b|\d+\s*tokens|\(thinking\)/i.test(t)) {
939
+ const label = t.slice(2).replace(/\s*\(\d+s.*\)$/, "").replace(/\s*\(thinking\)\s*$/i, "").replace(/…$/, "").trim() || "Thinking\u2026";
940
+ return { tool: "thinking", label, status: "running" };
941
+ }
931
942
  let text = t;
932
943
  if (SPINNER_RE.test(t)) {
933
944
  text = t.slice(2).trim();
945
+ } else if (BULLET_TOOL_RE.test(t)) {
946
+ text = t.slice(2).trim();
947
+ text = text.replace(/\s*\(ctrl\+?o[^)]*\)/gi, "").replace(/,\s*reading\s+\d+\s+files?\s*…?/gi, "").replace(/,\s*\d+\s+files?\s*…?/gi, "").replace(/…$/, "").trim();
934
948
  }
935
949
  if (!text) return null;
936
950
  return classifyStep(text);
@@ -1193,6 +1207,12 @@ function filterChrome(lines) {
1193
1207
  if (t.replace(/\s/g, "").length === 1) continue;
1194
1208
  if ((t.match(/─/g)?.length ?? 0) >= 6) continue;
1195
1209
  if (/ctrl\+?o\s+to\s+expand/i.test(t)) continue;
1210
+ if (/^•\s+(?:Read(?:ing)?|Edit(?:ing)?|Writ(?:e|ing)|Bash|Runn(?:ing)?|Search(?:ing)?|Glob(?:bing)?|Grep(?:ping)?|Creat(?:e|ing)|Execut(?:e|ing)|Task|Agent|NotebookEdit)\b/i.test(
1211
+ t
1212
+ ))
1213
+ continue;
1214
+ if (/^└\s/.test(t)) continue;
1215
+ if (/^\+\s/.test(t) && /\d+\s*s\s*[·•]|\bthought\s+for\b|\d+\s*tokens|\(thinking\)/i.test(t)) continue;
1196
1216
  const stripped = t.replace(/^[│╭╰╮╯┌└┐┘├┤┬┴┼]\s?/, "");
1197
1217
  if (/^[❯>]\s+\S/.test(stripped) && !/^[❯>]\s*\d+\./.test(stripped)) {
1198
1218
  skipEchoContinuation = true;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codeam-cli",
3
- "version": "1.4.46",
3
+ "version": "1.4.48",
4
4
  "description": "Remote control Claude Code from your mobile device",
5
5
  "main": "dist/index.js",
6
6
  "bin": {