@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.
- package/README.md +6 -0
- package/dist/backend/src/api/router.d.ts +3 -1
- package/dist/backend/src/api/router.d.ts.map +1 -1
- package/dist/backend/src/api/router.js +3 -3
- package/dist/backend/src/api/router.js.map +1 -1
- package/dist/backend/src/cli-utils.d.ts +2 -0
- package/dist/backend/src/cli-utils.d.ts.map +1 -1
- package/dist/backend/src/cli-utils.js +6 -0
- package/dist/backend/src/cli-utils.js.map +1 -1
- package/dist/backend/src/cli.d.ts.map +1 -1
- package/dist/backend/src/cli.js +6 -0
- package/dist/backend/src/cli.js.map +1 -1
- package/dist/backend/src/config.d.ts.map +1 -1
- package/dist/backend/src/config.js +7 -0
- package/dist/backend/src/config.js.map +1 -1
- package/dist/backend/src/daemon/daemon-client.d.ts +4 -0
- package/dist/backend/src/daemon/daemon-client.d.ts.map +1 -1
- package/dist/backend/src/daemon/daemon-client.js +41 -0
- package/dist/backend/src/daemon/daemon-client.js.map +1 -1
- package/dist/backend/src/daemon/restart-state.d.ts +21 -0
- package/dist/backend/src/daemon/restart-state.d.ts.map +1 -0
- package/dist/backend/src/daemon/restart-state.js +85 -0
- package/dist/backend/src/daemon/restart-state.js.map +1 -0
- package/dist/backend/src/hooks/hook-receiver.d.ts.map +1 -1
- package/dist/backend/src/hooks/hook-receiver.js +4 -0
- package/dist/backend/src/hooks/hook-receiver.js.map +1 -1
- package/dist/backend/src/index.d.ts.map +1 -1
- package/dist/backend/src/index.js +47 -3
- package/dist/backend/src/index.js.map +1 -1
- package/dist/backend/src/instance/instance-manager.d.ts +5 -0
- package/dist/backend/src/instance/instance-manager.d.ts.map +1 -1
- package/dist/backend/src/instance/instance-manager.js +16 -0
- package/dist/backend/src/instance/instance-manager.js.map +1 -1
- package/dist/backend/src/instance/instance-session.d.ts +6 -0
- package/dist/backend/src/instance/instance-session.d.ts.map +1 -1
- package/dist/backend/src/instance/instance-session.js +16 -0
- package/dist/backend/src/instance/instance-session.js.map +1 -1
- package/dist/backend/src/instance/types.d.ts +2 -0
- package/dist/backend/src/instance/types.d.ts.map +1 -1
- package/dist/backend/src/utils/banner.d.ts.map +1 -1
- package/dist/backend/src/utils/banner.js +12 -9
- package/dist/backend/src/utils/banner.js.map +1 -1
- package/dist/backend/src/utils/string-display-width.d.ts +20 -0
- package/dist/backend/src/utils/string-display-width.d.ts.map +1 -0
- package/dist/backend/src/utils/string-display-width.js +79 -0
- package/dist/backend/src/utils/string-display-width.js.map +1 -0
- 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"}
|