@vibeapi/api-helper 0.0.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/LICENSE +25 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +18 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/auth.d.ts +1 -0
- package/dist/commands/auth.js +119 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/config.d.ts +1 -0
- package/dist/commands/config.js +130 -0
- package/dist/commands/config.js.map +1 -0
- package/dist/commands/doctor.d.ts +1 -0
- package/dist/commands/doctor.js +105 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/index.d.ts +4 -0
- package/dist/commands/index.js +5 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/lang.d.ts +1 -0
- package/dist/commands/lang.js +28 -0
- package/dist/commands/lang.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api-validator.d.ts +12 -0
- package/dist/lib/api-validator.js +79 -0
- package/dist/lib/api-validator.js.map +1 -0
- package/dist/lib/claude-code-manager.d.ts +86 -0
- package/dist/lib/claude-code-manager.js +233 -0
- package/dist/lib/claude-code-manager.js.map +1 -0
- package/dist/lib/command.d.ts +10 -0
- package/dist/lib/command.js +168 -0
- package/dist/lib/command.js.map +1 -0
- package/dist/lib/config.d.ts +64 -0
- package/dist/lib/config.js +226 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/i18n.d.ts +20 -0
- package/dist/lib/i18n.js +149 -0
- package/dist/lib/i18n.js.map +1 -0
- package/dist/lib/opencode-manager.d.ts +55 -0
- package/dist/lib/opencode-manager.js +134 -0
- package/dist/lib/opencode-manager.js.map +1 -0
- package/dist/lib/tool-manager.d.ts +25 -0
- package/dist/lib/tool-manager.js +280 -0
- package/dist/lib/tool-manager.js.map +1 -0
- package/dist/lib/wizard.d.ts +24 -0
- package/dist/lib/wizard.js +483 -0
- package/dist/lib/wizard.js.map +1 -0
- package/dist/locales/en_US.json +150 -0
- package/dist/locales/zh_CN.json +150 -0
- package/dist/utils/logger.d.ts +55 -0
- package/dist/utils/logger.js +202 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/string-width.d.ts +38 -0
- package/dist/utils/string-width.js +131 -0
- package/dist/utils/string-width.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calculate the visual display width of a string
|
|
3
|
+
* Handles emoji, CJK characters, and ANSI escape codes
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Strip ANSI escape codes from a string
|
|
7
|
+
*/
|
|
8
|
+
export function stripAnsi(str) {
|
|
9
|
+
// eslint-disable-next-line no-control-regex
|
|
10
|
+
return str.replace(/\u001b\[[0-9;]*m/g, '');
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Calculate the visual width of a character
|
|
14
|
+
* - Emoji and wide characters (CJK): 2
|
|
15
|
+
* - Regular ASCII: 1
|
|
16
|
+
* - Zero-width characters: 0
|
|
17
|
+
*/
|
|
18
|
+
function charWidth(char) {
|
|
19
|
+
const code = char.codePointAt(0);
|
|
20
|
+
if (!code)
|
|
21
|
+
return 0;
|
|
22
|
+
// Zero-width characters
|
|
23
|
+
if (code === 0x200b || // Zero-width space
|
|
24
|
+
code === 0x200c || // Zero-width non-joiner
|
|
25
|
+
code === 0x200d || // Zero-width joiner
|
|
26
|
+
code === 0xfeff || // Zero-width no-break space
|
|
27
|
+
(code >= 0xfe00 && code <= 0xfe0f) // Variation Selectors (emoji style selectors)
|
|
28
|
+
) {
|
|
29
|
+
return 0;
|
|
30
|
+
}
|
|
31
|
+
// Emoji and symbols (rough approximation)
|
|
32
|
+
// Most emoji are in these ranges and display as 2 characters wide
|
|
33
|
+
if ((code >= 0x1f300 && code <= 0x1f9ff) || // Misc Symbols and Pictographs, Emoticons, etc.
|
|
34
|
+
(code >= 0x2600 && code <= 0x26ff) || // Misc symbols
|
|
35
|
+
(code >= 0x2700 && code <= 0x27bf) || // Dingbats
|
|
36
|
+
(code >= 0x1f000 && code <= 0x1f02f) || // Mahjong Tiles, Domino Tiles
|
|
37
|
+
(code >= 0x1f0a0 && code <= 0x1f0ff) // Playing Cards
|
|
38
|
+
) {
|
|
39
|
+
return 2;
|
|
40
|
+
}
|
|
41
|
+
// CJK characters (Chinese, Japanese, Korean)
|
|
42
|
+
// These are typically displayed as 2 characters wide
|
|
43
|
+
if ((code >= 0x4e00 && code <= 0x9fff) || // CJK Unified Ideographs
|
|
44
|
+
(code >= 0x3400 && code <= 0x4dbf) || // CJK Unified Ideographs Extension A
|
|
45
|
+
(code >= 0x20000 && code <= 0x2a6df) || // CJK Unified Ideographs Extension B
|
|
46
|
+
(code >= 0x2a700 && code <= 0x2b73f) || // CJK Unified Ideographs Extension C
|
|
47
|
+
(code >= 0x2b740 && code <= 0x2b81f) || // CJK Unified Ideographs Extension D
|
|
48
|
+
(code >= 0x2b820 && code <= 0x2ceaf) || // CJK Unified Ideographs Extension E
|
|
49
|
+
(code >= 0xf900 && code <= 0xfaff) || // CJK Compatibility Ideographs
|
|
50
|
+
(code >= 0x2f800 && code <= 0x2fa1f) || // CJK Compatibility Ideographs Supplement
|
|
51
|
+
(code >= 0x3040 && code <= 0x309f) || // Hiragana
|
|
52
|
+
(code >= 0x30a0 && code <= 0x30ff) || // Katakana
|
|
53
|
+
(code >= 0xac00 && code <= 0xd7af) || // Hangul Syllables
|
|
54
|
+
(code >= 0x1100 && code <= 0x11ff) || // Hangul Jamo
|
|
55
|
+
(code >= 0x3130 && code <= 0x318f) || // Hangul Compatibility Jamo
|
|
56
|
+
(code >= 0xa960 && code <= 0xa97f) || // Hangul Jamo Extended-A
|
|
57
|
+
(code >= 0xd7b0 && code <= 0xd7ff) // Hangul Jamo Extended-B
|
|
58
|
+
) {
|
|
59
|
+
return 2;
|
|
60
|
+
}
|
|
61
|
+
// Fullwidth characters
|
|
62
|
+
if (code >= 0xff00 && code <= 0xffef) {
|
|
63
|
+
return 2;
|
|
64
|
+
}
|
|
65
|
+
// Default to 1 for regular ASCII and other characters
|
|
66
|
+
return 1;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Calculate the visual display width of a string
|
|
70
|
+
* Strips ANSI codes and counts visual width of each character
|
|
71
|
+
*/
|
|
72
|
+
export function stringWidth(str) {
|
|
73
|
+
const cleaned = stripAnsi(str);
|
|
74
|
+
let width = 0;
|
|
75
|
+
// Use Array.from to properly handle surrogate pairs
|
|
76
|
+
for (const char of Array.from(cleaned)) {
|
|
77
|
+
width += charWidth(char);
|
|
78
|
+
}
|
|
79
|
+
return width;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Pad a string to a specific visual width
|
|
83
|
+
* @param str - The string to pad
|
|
84
|
+
* @param targetWidth - The target visual width
|
|
85
|
+
* @param char - The character to use for padding (default: space)
|
|
86
|
+
* @param align - Alignment: 'left', 'right', or 'center' (default: 'left')
|
|
87
|
+
*/
|
|
88
|
+
export function padString(str, targetWidth, char = ' ', align = 'left') {
|
|
89
|
+
const currentWidth = stringWidth(str);
|
|
90
|
+
const padWidth = Math.max(0, targetWidth - currentWidth);
|
|
91
|
+
if (padWidth === 0)
|
|
92
|
+
return str;
|
|
93
|
+
const padding = char.repeat(padWidth);
|
|
94
|
+
if (align === 'right') {
|
|
95
|
+
return padding + str;
|
|
96
|
+
}
|
|
97
|
+
else if (align === 'center') {
|
|
98
|
+
const leftPad = Math.floor(padWidth / 2);
|
|
99
|
+
const rightPad = padWidth - leftPad;
|
|
100
|
+
return char.repeat(leftPad) + str + char.repeat(rightPad);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
return str + padding;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Create a box border line
|
|
108
|
+
* @param leftChar - Left border character
|
|
109
|
+
* @param rightChar - Right border character
|
|
110
|
+
* @param fillChar - Fill character
|
|
111
|
+
* @param width - Total width including borders
|
|
112
|
+
*/
|
|
113
|
+
export function createBorderLine(leftChar, rightChar, fillChar, width) {
|
|
114
|
+
const innerWidth = width - stringWidth(leftChar) - stringWidth(rightChar);
|
|
115
|
+
return leftChar + fillChar.repeat(Math.max(0, innerWidth)) + rightChar;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Create a box content line with borders
|
|
119
|
+
* @param content - The content to display
|
|
120
|
+
* @param leftChar - Left border character
|
|
121
|
+
* @param rightChar - Right border character
|
|
122
|
+
* @param width - Total width including borders
|
|
123
|
+
* @param align - Content alignment
|
|
124
|
+
*/
|
|
125
|
+
export function createContentLine(content, leftChar, rightChar, width, align = 'left') {
|
|
126
|
+
const borderWidth = stringWidth(leftChar) + stringWidth(rightChar);
|
|
127
|
+
const innerWidth = width - borderWidth;
|
|
128
|
+
const paddedContent = padString(content, innerWidth, ' ', align);
|
|
129
|
+
return leftChar + paddedContent + rightChar;
|
|
130
|
+
}
|
|
131
|
+
//# sourceMappingURL=string-width.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"string-width.js","sourceRoot":"","sources":["../../src/utils/string-width.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,4CAA4C;IAC5C,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,IAAY;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IAEpB,wBAAwB;IACxB,IACI,IAAI,KAAK,MAAM,IAAI,mBAAmB;QACtC,IAAI,KAAK,MAAM,IAAI,wBAAwB;QAC3C,IAAI,KAAK,MAAM,IAAI,oBAAoB;QACvC,IAAI,KAAK,MAAM,IAAI,4BAA4B;QAC/C,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,8CAA8C;MACnF,CAAC;QACC,OAAO,CAAC,CAAC;IACb,CAAC;IAED,0CAA0C;IAC1C,kEAAkE;IAClE,IACI,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,gDAAgD;QACxF,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,eAAe;QACvD,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,WAAW;QACnD,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,8BAA8B;QACtE,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,CAAI,gBAAgB;MAC1D,CAAC;QACC,OAAO,CAAC,CAAC;IACb,CAAC;IAED,6CAA6C;IAC7C,qDAAqD;IACrD,IACI,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,yBAAyB;QACjE,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,qCAAqC;QAC7E,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,qCAAqC;QAC7E,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,qCAAqC;QAC7E,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,qCAAqC;QAC7E,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,qCAAqC;QAC7E,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,+BAA+B;QACvE,CAAC,IAAI,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,0CAA0C;QAClF,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,WAAW;QACnD,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,WAAW;QACnD,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,mBAAmB;QAC3D,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,cAAc;QACtD,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,4BAA4B;QACpE,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,IAAM,yBAAyB;QACjE,CAAC,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,CAAM,yBAAyB;MACnE,CAAC;QACC,OAAO,CAAC,CAAC;IACb,CAAC;IAED,uBAAuB;IACvB,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;QACnC,OAAO,CAAC,CAAC;IACb,CAAC;IAED,sDAAsD;IACtD,OAAO,CAAC,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACnC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,oDAAoD;IACpD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACrB,GAAW,EACX,WAAmB,EACnB,OAAe,GAAG,EAClB,QAAqC,MAAM;IAE3C,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC,CAAC;IACzD,IAAI,QAAQ,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAE/B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAEtC,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,GAAG,GAAG,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACJ,OAAO,GAAG,GAAG,OAAO,CAAC;IACzB,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC5B,QAAgB,EAChB,SAAiB,EACjB,QAAgB,EAChB,KAAa;IAEb,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IAC1E,OAAO,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC;AAC3E,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC7B,OAAe,EACf,QAAgB,EAChB,SAAiB,EACjB,KAAa,EACb,QAAqC,MAAM;IAE3C,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,KAAK,GAAG,WAAW,CAAC;IACvC,MAAM,aAAa,GAAG,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACjE,OAAO,QAAQ,GAAG,aAAa,GAAG,SAAS,CAAC;AAChD,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@vibeapi/api-helper",
|
|
3
|
+
"version": "0.0.2",
|
|
4
|
+
"description": "CLI tool for managing AI coding assistants (Claude Code, OpenCode) with Anthropic API",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"api-helper": "dist/cli.js",
|
|
9
|
+
"chelper": "dist/cli.js"
|
|
10
|
+
},
|
|
11
|
+
"homepage": "https://www.vibeapi.cn/",
|
|
12
|
+
"bugs": {
|
|
13
|
+
"url": "https://www.vibeapi.cn/support"
|
|
14
|
+
},
|
|
15
|
+
"type": "module",
|
|
16
|
+
"files": [
|
|
17
|
+
"dist",
|
|
18
|
+
"README.md",
|
|
19
|
+
"LICENSE"
|
|
20
|
+
],
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.0.0"
|
|
23
|
+
},
|
|
24
|
+
"publishConfig": {
|
|
25
|
+
"access": "public"
|
|
26
|
+
},
|
|
27
|
+
"scripts": {
|
|
28
|
+
"build": "tsc && cp -r src/locales dist/",
|
|
29
|
+
"dev": "tsx watch src/cli.ts",
|
|
30
|
+
"start": "node dist/cli.js",
|
|
31
|
+
"clean": "rm -rf dist",
|
|
32
|
+
"prepublishOnly": "pnpm run clean && pnpm run build",
|
|
33
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
|
34
|
+
"lint": "eslint .",
|
|
35
|
+
"lint:fix": "eslint . --fix"
|
|
36
|
+
},
|
|
37
|
+
"keywords": [
|
|
38
|
+
"cli",
|
|
39
|
+
"coding",
|
|
40
|
+
"helper",
|
|
41
|
+
"tools",
|
|
42
|
+
"anthropic",
|
|
43
|
+
"claude",
|
|
44
|
+
"ai",
|
|
45
|
+
"assistant",
|
|
46
|
+
"claude-code",
|
|
47
|
+
"opencode"
|
|
48
|
+
],
|
|
49
|
+
"author": "VibeAPI",
|
|
50
|
+
"license": "UNLICENSED",
|
|
51
|
+
"private": false,
|
|
52
|
+
"packageManager": "pnpm@10.15.0",
|
|
53
|
+
"dependencies": {
|
|
54
|
+
"chalk": "^5.3.0",
|
|
55
|
+
"commander": "^12.1.0",
|
|
56
|
+
"inquirer": "^9.2.12",
|
|
57
|
+
"js-yaml": "^4.1.0",
|
|
58
|
+
"ora": "^8.0.1",
|
|
59
|
+
"terminal-link": "^5.0.0"
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@eslint/js": "^9.39.1",
|
|
63
|
+
"@types/inquirer": "^9.0.7",
|
|
64
|
+
"@types/js-yaml": "^4.0.9",
|
|
65
|
+
"@types/node": "^24.10.1",
|
|
66
|
+
"eslint": "^9.39.1",
|
|
67
|
+
"globals": "^16.5.0",
|
|
68
|
+
"nodemon": "^3.1.11",
|
|
69
|
+
"tsx": "^4.20.6",
|
|
70
|
+
"typescript": "^5.9.3",
|
|
71
|
+
"typescript-eslint": "^8.46.4"
|
|
72
|
+
}
|
|
73
|
+
}
|