@caoruhua/open-claude-remote 1.0.7 → 1.0.9

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 (47) hide show
  1. package/README.md +6 -0
  2. package/dist/backend/src/api/router.d.ts +3 -1
  3. package/dist/backend/src/api/router.d.ts.map +1 -1
  4. package/dist/backend/src/api/router.js +3 -3
  5. package/dist/backend/src/api/router.js.map +1 -1
  6. package/dist/backend/src/cli-utils.d.ts +2 -0
  7. package/dist/backend/src/cli-utils.d.ts.map +1 -1
  8. package/dist/backend/src/cli-utils.js +6 -0
  9. package/dist/backend/src/cli-utils.js.map +1 -1
  10. package/dist/backend/src/cli.d.ts.map +1 -1
  11. package/dist/backend/src/cli.js +6 -0
  12. package/dist/backend/src/cli.js.map +1 -1
  13. package/dist/backend/src/config.d.ts.map +1 -1
  14. package/dist/backend/src/config.js +7 -0
  15. package/dist/backend/src/config.js.map +1 -1
  16. package/dist/backend/src/daemon/daemon-client.d.ts +4 -0
  17. package/dist/backend/src/daemon/daemon-client.d.ts.map +1 -1
  18. package/dist/backend/src/daemon/daemon-client.js +41 -0
  19. package/dist/backend/src/daemon/daemon-client.js.map +1 -1
  20. package/dist/backend/src/daemon/restart-state.d.ts +21 -0
  21. package/dist/backend/src/daemon/restart-state.d.ts.map +1 -0
  22. package/dist/backend/src/daemon/restart-state.js +85 -0
  23. package/dist/backend/src/daemon/restart-state.js.map +1 -0
  24. package/dist/backend/src/hooks/hook-receiver.d.ts.map +1 -1
  25. package/dist/backend/src/hooks/hook-receiver.js +4 -0
  26. package/dist/backend/src/hooks/hook-receiver.js.map +1 -1
  27. package/dist/backend/src/index.d.ts.map +1 -1
  28. package/dist/backend/src/index.js +47 -3
  29. package/dist/backend/src/index.js.map +1 -1
  30. package/dist/backend/src/instance/instance-manager.d.ts +5 -0
  31. package/dist/backend/src/instance/instance-manager.d.ts.map +1 -1
  32. package/dist/backend/src/instance/instance-manager.js +16 -0
  33. package/dist/backend/src/instance/instance-manager.js.map +1 -1
  34. package/dist/backend/src/instance/instance-session.d.ts +6 -0
  35. package/dist/backend/src/instance/instance-session.d.ts.map +1 -1
  36. package/dist/backend/src/instance/instance-session.js +16 -0
  37. package/dist/backend/src/instance/instance-session.js.map +1 -1
  38. package/dist/backend/src/instance/types.d.ts +2 -0
  39. package/dist/backend/src/instance/types.d.ts.map +1 -1
  40. package/dist/backend/src/utils/banner.d.ts.map +1 -1
  41. package/dist/backend/src/utils/banner.js +12 -9
  42. package/dist/backend/src/utils/banner.js.map +1 -1
  43. package/dist/backend/src/utils/string-display-width.d.ts +20 -0
  44. package/dist/backend/src/utils/string-display-width.d.ts.map +1 -0
  45. package/dist/backend/src/utils/string-display-width.js +79 -0
  46. package/dist/backend/src/utils/string-display-width.js.map +1 -0
  47. package/package.json +1 -1
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 终端字符串显示宽度工具
3
+ *
4
+ * CJK(中日韩)字符在终端中占 2 列宽度,而 JS 的 .length 只计算字符数。
5
+ * 本模块提供宽度感知的 pad/length 函数,确保 banner 等对齐输出正确。
6
+ */
7
+ /**
8
+ * 判断一个 Unicode code point 是否为东亚宽字符(占 2 列)
9
+ */
10
+ function isWideCharacter(codePoint) {
11
+ return (
12
+ // CJK Unified Ideographs
13
+ (codePoint >= 0x4E00 && codePoint <= 0x9FFF) ||
14
+ // CJK Unified Ideographs Extension A
15
+ (codePoint >= 0x3400 && codePoint <= 0x4DBF) ||
16
+ // CJK Unified Ideographs Extension B
17
+ (codePoint >= 0x20000 && codePoint <= 0x2A6DF) ||
18
+ // CJK Compatibility Ideographs
19
+ (codePoint >= 0xF900 && codePoint <= 0xFAFF) ||
20
+ // CJK Symbols and Punctuation
21
+ (codePoint >= 0x3000 && codePoint <= 0x303F) ||
22
+ // Hiragana
23
+ (codePoint >= 0x3040 && codePoint <= 0x309F) ||
24
+ // Katakana
25
+ (codePoint >= 0x30A0 && codePoint <= 0x30FF) ||
26
+ // Hangul Syllables
27
+ (codePoint >= 0xAC00 && codePoint <= 0xD7AF) ||
28
+ // Hangul Jamo
29
+ (codePoint >= 0x1100 && codePoint <= 0x11FF) ||
30
+ // Fullwidth Forms (Fullwidth ASCII variants, etc.)
31
+ (codePoint >= 0xFF01 && codePoint <= 0xFF60) ||
32
+ (codePoint >= 0xFFE0 && codePoint <= 0xFFE6) ||
33
+ // CJK Radicals Supplement
34
+ (codePoint >= 0x2E80 && codePoint <= 0x2EFF) ||
35
+ // Kangxi Radicals
36
+ (codePoint >= 0x2F00 && codePoint <= 0x2FDF) ||
37
+ // Enclosed CJK Letters and Months
38
+ (codePoint >= 0x3200 && codePoint <= 0x32FF) ||
39
+ // CJK Compatibility
40
+ (codePoint >= 0x3300 && codePoint <= 0x33FF) ||
41
+ // Bopomofo
42
+ (codePoint >= 0x3100 && codePoint <= 0x312F));
43
+ }
44
+ /**
45
+ * 计算字符串在终端中的显示宽度
46
+ * CJK 字符计为 2,其他字符计为 1
47
+ */
48
+ export function getDisplayWidth(str) {
49
+ let width = 0;
50
+ for (const char of str) {
51
+ const codePoint = char.codePointAt(0);
52
+ if (codePoint !== undefined && isWideCharacter(codePoint)) {
53
+ width += 2;
54
+ }
55
+ else {
56
+ width += 1;
57
+ }
58
+ }
59
+ return width;
60
+ }
61
+ /**
62
+ * 按显示宽度右填充字符串(类似 String.padEnd,但按终端列宽计算)
63
+ */
64
+ export function padEndDisplay(str, targetWidth, fillChar = ' ') {
65
+ const currentWidth = getDisplayWidth(str);
66
+ if (currentWidth >= targetWidth)
67
+ return str;
68
+ return str + fillChar.repeat(targetWidth - currentWidth);
69
+ }
70
+ /**
71
+ * 按显示宽度左填充字符串(类似 String.padStart,但按终端列宽计算)
72
+ */
73
+ export function padStartDisplay(str, targetWidth, fillChar = ' ') {
74
+ const currentWidth = getDisplayWidth(str);
75
+ if (currentWidth >= targetWidth)
76
+ return str;
77
+ return fillChar.repeat(targetWidth - currentWidth) + str;
78
+ }
79
+ //# sourceMappingURL=string-display-width.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"string-display-width.js","sourceRoot":"","sources":["../../../../backend/src/utils/string-display-width.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,SAAS,eAAe,CAAC,SAAiB;IACxC,OAAO;IACL,yBAAyB;IACzB,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,qCAAqC;QACrC,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,qCAAqC;QACrC,CAAC,SAAS,IAAI,OAAO,IAAI,SAAS,IAAI,OAAO,CAAC;QAC9C,+BAA+B;QAC/B,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,8BAA8B;QAC9B,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,WAAW;QACX,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,WAAW;QACX,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,mBAAmB;QACnB,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,cAAc;QACd,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,mDAAmD;QACnD,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,0BAA0B;QAC1B,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,kBAAkB;QAClB,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,kCAAkC;QAClC,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,oBAAoB;QACpB,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC;QAC5C,WAAW;QACX,CAAC,SAAS,IAAI,MAAM,IAAI,SAAS,IAAI,MAAM,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW;IACzC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,SAAS,KAAK,SAAS,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1D,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAQ,GAAG,GAAG;IAC5E,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,IAAI,WAAW;QAAE,OAAO,GAAG,CAAC;IAC5C,OAAO,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,GAAW,EAAE,WAAmB,EAAE,QAAQ,GAAG,GAAG;IAC9E,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,YAAY,IAAI,WAAW;QAAE,OAAO,GAAG,CAAC;IAC5C,OAAO,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,GAAG,CAAC;AAC3D,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@caoruhua/open-claude-remote",
3
- "version": "1.0.7",
3
+ "version": "1.0.9",
4
4
  "description": "Remote control proxy for Claude Code CLI - control your PC terminal from mobile browser",
5
5
  "keywords": [
6
6
  "claude",