@babelize/mcp 1.0.1 → 1.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/dist/index.js +29 -6
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +330 -40
- package/dist/server.js.map +1 -1
- package/dist/tools/babel-get.d.ts +19 -0
- package/dist/tools/babel-get.d.ts.map +1 -0
- package/dist/tools/babel-get.js +48 -0
- package/dist/tools/babel-get.js.map +1 -0
- package/dist/tools/babel-list.d.ts +21 -0
- package/dist/tools/babel-list.d.ts.map +1 -0
- package/dist/tools/babel-list.js +47 -0
- package/dist/tools/babel-list.js.map +1 -0
- package/dist/tools/engine-analyze.d.ts +20 -0
- package/dist/tools/engine-analyze.d.ts.map +1 -0
- package/dist/tools/engine-analyze.js +29 -0
- package/dist/tools/engine-analyze.js.map +1 -0
- package/dist/tools/glossary-delete.d.ts +20 -0
- package/dist/tools/glossary-delete.d.ts.map +1 -0
- package/dist/tools/glossary-delete.js +21 -0
- package/dist/tools/glossary-delete.js.map +1 -0
- package/dist/tools/glossary-export.d.ts +19 -0
- package/dist/tools/glossary-export.d.ts.map +1 -0
- package/dist/tools/glossary-export.js +29 -0
- package/dist/tools/glossary-export.js.map +1 -0
- package/dist/tools/glossary-import.d.ts +20 -0
- package/dist/tools/glossary-import.d.ts.map +1 -0
- package/dist/tools/glossary-import.js +36 -0
- package/dist/tools/glossary-import.js.map +1 -0
- package/dist/tools/invitation-send.d.ts +21 -0
- package/dist/tools/invitation-send.d.ts.map +1 -0
- package/dist/tools/invitation-send.js +32 -0
- package/dist/tools/invitation-send.js.map +1 -0
- package/dist/tools/language-codes.d.ts +21 -0
- package/dist/tools/language-codes.d.ts.map +1 -0
- package/dist/tools/language-codes.js +77 -0
- package/dist/tools/language-codes.js.map +1 -0
- package/dist/tools/language-list.d.ts +15 -0
- package/dist/tools/language-list.d.ts.map +1 -0
- package/dist/tools/language-list.js +34 -0
- package/dist/tools/language-list.js.map +1 -0
- package/dist/tools/me.d.ts +15 -0
- package/dist/tools/me.d.ts.map +1 -0
- package/dist/tools/me.js +37 -0
- package/dist/tools/me.js.map +1 -0
- package/dist/tools/member-list.d.ts +19 -0
- package/dist/tools/member-list.d.ts.map +1 -0
- package/dist/tools/member-list.js +35 -0
- package/dist/tools/member-list.js.map +1 -0
- package/dist/tools/pr-raise.d.ts +19 -0
- package/dist/tools/pr-raise.d.ts.map +1 -0
- package/dist/tools/pr-raise.js +33 -0
- package/dist/tools/pr-raise.js.map +1 -0
- package/dist/tools/project-create.d.ts +24 -0
- package/dist/tools/project-create.d.ts.map +1 -0
- package/dist/tools/project-create.js +43 -0
- package/dist/tools/project-create.js.map +1 -0
- package/dist/tools/project-download.d.ts +19 -0
- package/dist/tools/project-download.d.ts.map +1 -0
- package/dist/tools/project-download.js +32 -0
- package/dist/tools/project-download.js.map +1 -0
- package/dist/tools/project-get.d.ts +19 -0
- package/dist/tools/project-get.d.ts.map +1 -0
- package/dist/tools/project-get.js +35 -0
- package/dist/tools/project-get.js.map +1 -0
- package/dist/tools/project-language-add.d.ts +20 -0
- package/dist/tools/project-language-add.d.ts.map +1 -0
- package/dist/tools/project-language-add.js +27 -0
- package/dist/tools/project-language-add.js.map +1 -0
- package/dist/tools/project-language-remove.d.ts +20 -0
- package/dist/tools/project-language-remove.d.ts.map +1 -0
- package/dist/tools/project-language-remove.js +21 -0
- package/dist/tools/project-language-remove.js.map +1 -0
- package/dist/tools/project-list.d.ts +20 -0
- package/dist/tools/project-list.d.ts.map +1 -0
- package/dist/tools/project-list.js +46 -0
- package/dist/tools/project-list.js.map +1 -0
- package/dist/tools/project-sync.d.ts +19 -0
- package/dist/tools/project-sync.d.ts.map +1 -0
- package/dist/tools/project-sync.js +29 -0
- package/dist/tools/project-sync.js.map +1 -0
- package/dist/tools/provider-tokens-list.d.ts +15 -0
- package/dist/tools/provider-tokens-list.d.ts.map +1 -0
- package/dist/tools/provider-tokens-list.js +33 -0
- package/dist/tools/provider-tokens-list.js.map +1 -0
- package/dist/tools/run.d.ts +1 -0
- package/dist/tools/run.d.ts.map +1 -1
- package/dist/tools/run.js +6 -3
- package/dist/tools/run.js.map +1 -1
- package/dist/tools/tm-export.d.ts +19 -0
- package/dist/tools/tm-export.d.ts.map +1 -0
- package/dist/tools/tm-export.js +29 -0
- package/dist/tools/tm-export.js.map +1 -0
- package/dist/tools/tm-get.d.ts +21 -0
- package/dist/tools/tm-get.d.ts.map +1 -0
- package/dist/tools/tm-get.js +45 -0
- package/dist/tools/tm-get.js.map +1 -0
- package/dist/tools/tm-set.d.ts +23 -0
- package/dist/tools/tm-set.d.ts.map +1 -0
- package/dist/tools/tm-set.js +44 -0
- package/dist/tools/tm-set.js.map +1 -0
- package/dist/utils/scan-strings.d.ts +1 -0
- package/dist/utils/scan-strings.d.ts.map +1 -1
- package/dist/utils/scan-strings.js +59 -1
- package/dist/utils/scan-strings.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -27,12 +27,35 @@ Configuration file:
|
|
|
27
27
|
.babelize/config.json in the current working directory
|
|
28
28
|
|
|
29
29
|
Available tools (via MCP):
|
|
30
|
-
babelize_scan
|
|
31
|
-
babelize_scan_strings
|
|
32
|
-
babelize_run
|
|
33
|
-
babelize_status
|
|
34
|
-
|
|
35
|
-
|
|
30
|
+
babelize_scan Scan a local directory for hardcoded strings
|
|
31
|
+
babelize_scan_strings Extract translatable strings from a code snippet
|
|
32
|
+
babelize_run Start a translation pipeline run
|
|
33
|
+
babelize_status Check status of a running translation
|
|
34
|
+
babelize_project_list List all translation projects
|
|
35
|
+
babelize_project_get Get details of a specific project
|
|
36
|
+
babelize_project_create Create a new translation project
|
|
37
|
+
babelize_babel_list List translation runs (babels)
|
|
38
|
+
babelize_babel_get Get detailed babel run info and logs
|
|
39
|
+
babelize_language_list List all supported languages
|
|
40
|
+
babelize_language_codes Look up language code mappings
|
|
41
|
+
babelize_engine_analyze Analyze source code for i18n readiness
|
|
42
|
+
babelize_project_language_add Add a language to a project
|
|
43
|
+
babelize_project_language_remove Remove a language from a project
|
|
44
|
+
babelize_member_list List project members
|
|
45
|
+
babelize_invitation_send Send a team invitation
|
|
46
|
+
babelize_project_sync Trigger repository sync
|
|
47
|
+
babelize_pr_raise Create a PR with translations
|
|
48
|
+
babelize_project_download Download project as ZIP
|
|
49
|
+
babelize_me Get current user profile
|
|
50
|
+
babelize_provider_tokens_list List connected BYOK providers
|
|
51
|
+
babelize_tm_get List translation memory entries
|
|
52
|
+
babelize_tm_set Add a translation memory entry
|
|
53
|
+
babelize_tm_export Export translation memory as TMX
|
|
54
|
+
babelize_glossary_get List glossary entries for a project
|
|
55
|
+
babelize_glossary_set Add or update a glossary entry
|
|
56
|
+
babelize_glossary_delete Delete a glossary entry
|
|
57
|
+
babelize_glossary_import Bulk import glossary from CSV
|
|
58
|
+
babelize_glossary_export Export glossary as CSV
|
|
36
59
|
|
|
37
60
|
Documentation: https://docs.babelize.co
|
|
38
61
|
`.trim();
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAiB,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,IAAI,GAAG;iBACE,WAAW
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,GAAG,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAExD,MAAM,WAAW,GAAG,GAAG,CAAC,OAAiB,CAAC;AAE1C,SAAS,QAAQ;IACf,MAAM,IAAI,GAAG;iBACE,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoD3B,CAAC,IAAI,EAAE,CAAC;IACP,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,QAAQ,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACtD,OAAO,CAAC,KAAK,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE7C,OAAO,CAAC,KAAK,CAAC,kBAAkB,WAAW,qBAAqB,CAAC,CAAC;IAClE,OAAO,CAAC,KAAK,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC;IACtC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAEpC,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAiDpE,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAwevE"}
|
package/dist/server.js
CHANGED
|
@@ -6,10 +6,42 @@ import { handleRun } from './tools/run.js';
|
|
|
6
6
|
import { handleStatus } from './tools/status.js';
|
|
7
7
|
import { handleGlossaryGet } from './tools/glossary-get.js';
|
|
8
8
|
import { handleGlossarySet } from './tools/glossary-set.js';
|
|
9
|
+
import { handleProjectList } from './tools/project-list.js';
|
|
10
|
+
import { handleProjectGet } from './tools/project-get.js';
|
|
11
|
+
import { handleProjectCreate } from './tools/project-create.js';
|
|
12
|
+
import { handleBabelList } from './tools/babel-list.js';
|
|
13
|
+
import { handleBabelGet } from './tools/babel-get.js';
|
|
14
|
+
import { handleLanguageList } from './tools/language-list.js';
|
|
15
|
+
import { handleLanguageCodes } from './tools/language-codes.js';
|
|
16
|
+
import { handleEngineAnalyze } from './tools/engine-analyze.js';
|
|
17
|
+
import { handleTmGet } from './tools/tm-get.js';
|
|
18
|
+
import { handleTmSet } from './tools/tm-set.js';
|
|
19
|
+
import { handleTmExport } from './tools/tm-export.js';
|
|
20
|
+
import { handleGlossaryDelete } from './tools/glossary-delete.js';
|
|
21
|
+
import { handleGlossaryImport } from './tools/glossary-import.js';
|
|
22
|
+
import { handleGlossaryExport } from './tools/glossary-export.js';
|
|
23
|
+
import { handleProjectLanguageAdd } from './tools/project-language-add.js';
|
|
24
|
+
import { handleProjectLanguageRemove } from './tools/project-language-remove.js';
|
|
25
|
+
import { handleMemberList } from './tools/member-list.js';
|
|
26
|
+
import { handleInvitationSend } from './tools/invitation-send.js';
|
|
27
|
+
import { handleProjectSync } from './tools/project-sync.js';
|
|
28
|
+
import { handlePrRaise } from './tools/pr-raise.js';
|
|
29
|
+
import { handleProjectDownload } from './tools/project-download.js';
|
|
30
|
+
import { handleMe } from './tools/me.js';
|
|
31
|
+
import { handleProviderTokensList } from './tools/provider-tokens-list.js';
|
|
9
32
|
import { extractStrings } from './utils/scan-strings.js';
|
|
10
33
|
import pkg from '../package.json' with { type: 'json' };
|
|
11
34
|
const CLI_VERSION = pkg.version;
|
|
12
35
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
36
|
+
function requireClient(client) {
|
|
37
|
+
if (!client) {
|
|
38
|
+
return {
|
|
39
|
+
content: [{ type: 'text', text: '❌ API key required. Set BABELIZE_API_KEY or pass --api-key.' }],
|
|
40
|
+
isError: true,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
13
45
|
export function createServer(apiUrl, apiKey) {
|
|
14
46
|
const client = apiKey ? getClient(apiUrl, apiKey) : null;
|
|
15
47
|
const server = new McpServer({
|
|
@@ -27,30 +59,312 @@ export function createServer(apiUrl, apiKey) {
|
|
|
27
59
|
}, async (params) => {
|
|
28
60
|
return handleScan(params);
|
|
29
61
|
});
|
|
62
|
+
register('babelize_scan_strings', {
|
|
63
|
+
description: 'Extract hardcoded translatable strings from a code snippet. No API key required.',
|
|
64
|
+
inputSchema: z.object({ code: z.string() }),
|
|
65
|
+
}, ({ code }) => {
|
|
66
|
+
const results = extractStrings(code);
|
|
67
|
+
if (results.length === 0) {
|
|
68
|
+
return {
|
|
69
|
+
content: [{ type: 'text', text: 'No translatable strings found.' }],
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const lines = results.map((s) => ` Line ${s.line}: "${s.text}"`);
|
|
73
|
+
return {
|
|
74
|
+
content: [
|
|
75
|
+
{
|
|
76
|
+
type: 'text',
|
|
77
|
+
text: [`Found ${results.length} translatable strings:`, ...lines].join('\n'),
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
// --- Project tools ---
|
|
83
|
+
register('babelize_project_list', {
|
|
84
|
+
description: 'List all translation projects. Requires API key.',
|
|
85
|
+
inputSchema: z.object({
|
|
86
|
+
page: z.number().optional(),
|
|
87
|
+
limit: z.number().optional(),
|
|
88
|
+
}),
|
|
89
|
+
}, async (params) => {
|
|
90
|
+
const err = requireClient(client);
|
|
91
|
+
if (err)
|
|
92
|
+
return err;
|
|
93
|
+
return handleProjectList(client, params);
|
|
94
|
+
});
|
|
95
|
+
register('babelize_project_get', {
|
|
96
|
+
description: 'Get details of a specific translation project. Requires API key.',
|
|
97
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
98
|
+
}, async (params) => {
|
|
99
|
+
const err = requireClient(client);
|
|
100
|
+
if (err)
|
|
101
|
+
return err;
|
|
102
|
+
return handleProjectGet(client, params);
|
|
103
|
+
});
|
|
104
|
+
register('babelize_project_create', {
|
|
105
|
+
description: 'Create a new translation project. Requires API key.',
|
|
106
|
+
inputSchema: z.object({
|
|
107
|
+
name: z.string(),
|
|
108
|
+
source_language: z.string().optional(),
|
|
109
|
+
target_languages: z.array(z.string()).optional(),
|
|
110
|
+
repo_url: z.string().optional(),
|
|
111
|
+
branch: z.string().optional(),
|
|
112
|
+
brand_voice: z.string().optional(),
|
|
113
|
+
}),
|
|
114
|
+
}, async (params) => {
|
|
115
|
+
const err = requireClient(client);
|
|
116
|
+
if (err)
|
|
117
|
+
return err;
|
|
118
|
+
return handleProjectCreate(client, params);
|
|
119
|
+
});
|
|
120
|
+
// --- Babel / Run tools ---
|
|
121
|
+
register('babelize_babel_list', {
|
|
122
|
+
description: 'List translation runs (babels). Requires API key.',
|
|
123
|
+
inputSchema: z.object({
|
|
124
|
+
project_id: z.string().optional(),
|
|
125
|
+
page: z.number().optional(),
|
|
126
|
+
limit: z.number().optional(),
|
|
127
|
+
}),
|
|
128
|
+
}, async (params) => {
|
|
129
|
+
const err = requireClient(client);
|
|
130
|
+
if (err)
|
|
131
|
+
return err;
|
|
132
|
+
return handleBabelList(client, params);
|
|
133
|
+
});
|
|
134
|
+
register('babelize_babel_get', {
|
|
135
|
+
description: 'Get detailed info and logs for a translation run. Requires API key.',
|
|
136
|
+
inputSchema: z.object({ babel_id: z.string() }),
|
|
137
|
+
}, async (params) => {
|
|
138
|
+
const err = requireClient(client);
|
|
139
|
+
if (err)
|
|
140
|
+
return err;
|
|
141
|
+
return handleBabelGet(client, params);
|
|
142
|
+
});
|
|
143
|
+
// --- Language tools ---
|
|
144
|
+
register('babelize_language_list', {
|
|
145
|
+
description: 'List all supported languages. Requires API key.',
|
|
146
|
+
inputSchema: z.object({}),
|
|
147
|
+
}, async (params) => {
|
|
148
|
+
const err = requireClient(client);
|
|
149
|
+
if (err)
|
|
150
|
+
return err;
|
|
151
|
+
return handleLanguageList(client);
|
|
152
|
+
});
|
|
153
|
+
register('babelize_language_codes', {
|
|
154
|
+
description: 'Look up language code mappings (ISO ↔ FLORES-200). Requires API key.',
|
|
155
|
+
inputSchema: z.object({
|
|
156
|
+
action: z.enum(['supported', 'rtl', 'to-flores', 'from-flores', 'check']).optional(),
|
|
157
|
+
iso_code: z.string().optional(),
|
|
158
|
+
flores_code: z.string().optional(),
|
|
159
|
+
}),
|
|
160
|
+
}, async (params) => {
|
|
161
|
+
const err = requireClient(client);
|
|
162
|
+
if (err)
|
|
163
|
+
return err;
|
|
164
|
+
return handleLanguageCodes(client, params);
|
|
165
|
+
});
|
|
166
|
+
// --- Engine tools ---
|
|
167
|
+
register('babelize_engine_analyze', {
|
|
168
|
+
description: 'Analyze source code for framework detection and i18n readiness. Requires API key.',
|
|
169
|
+
inputSchema: z.object({
|
|
170
|
+
code: z.string(),
|
|
171
|
+
filename: z.string().optional(),
|
|
172
|
+
}),
|
|
173
|
+
}, async (params) => {
|
|
174
|
+
const err = requireClient(client);
|
|
175
|
+
if (err)
|
|
176
|
+
return err;
|
|
177
|
+
return handleEngineAnalyze(client, params);
|
|
178
|
+
});
|
|
179
|
+
// --- Translation Memory tools ---
|
|
180
|
+
register('babelize_tm_get', {
|
|
181
|
+
description: 'List translation memory entries for a project. Requires API key.',
|
|
182
|
+
inputSchema: z.object({
|
|
183
|
+
project_id: z.string(),
|
|
184
|
+
search: z.string().optional(),
|
|
185
|
+
target_lang: z.string().optional(),
|
|
186
|
+
}),
|
|
187
|
+
}, async (params) => {
|
|
188
|
+
const err = requireClient(client);
|
|
189
|
+
if (err)
|
|
190
|
+
return err;
|
|
191
|
+
return handleTmGet(client, params);
|
|
192
|
+
});
|
|
193
|
+
register('babelize_tm_set', {
|
|
194
|
+
description: 'Add a translation memory entry. Requires API key.',
|
|
195
|
+
inputSchema: z.object({
|
|
196
|
+
project_id: z.string(),
|
|
197
|
+
source_text: z.string(),
|
|
198
|
+
source_lang: z.string().optional(),
|
|
199
|
+
target_lang: z.string(),
|
|
200
|
+
translated_text: z.string(),
|
|
201
|
+
}),
|
|
202
|
+
}, async (params) => {
|
|
203
|
+
const err = requireClient(client);
|
|
204
|
+
if (err)
|
|
205
|
+
return err;
|
|
206
|
+
return handleTmSet(client, params);
|
|
207
|
+
});
|
|
208
|
+
register('babelize_tm_export', {
|
|
209
|
+
description: 'Export translation memory as TMX. Requires API key.',
|
|
210
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
211
|
+
}, async (params) => {
|
|
212
|
+
const err = requireClient(client);
|
|
213
|
+
if (err)
|
|
214
|
+
return err;
|
|
215
|
+
return handleTmExport(client, params);
|
|
216
|
+
});
|
|
217
|
+
// --- Glossary tools ---
|
|
218
|
+
register('babelize_glossary_delete', {
|
|
219
|
+
description: 'Delete a glossary entry. Requires API key.',
|
|
220
|
+
inputSchema: z.object({
|
|
221
|
+
project_id: z.string(),
|
|
222
|
+
entry_id: z.string(),
|
|
223
|
+
}),
|
|
224
|
+
}, async (params) => {
|
|
225
|
+
const err = requireClient(client);
|
|
226
|
+
if (err)
|
|
227
|
+
return err;
|
|
228
|
+
return handleGlossaryDelete(client, params);
|
|
229
|
+
});
|
|
230
|
+
register('babelize_glossary_import', {
|
|
231
|
+
description: 'Bulk import glossary entries from CSV string. Requires API key.',
|
|
232
|
+
inputSchema: z.object({
|
|
233
|
+
project_id: z.string(),
|
|
234
|
+
csv: z.string(),
|
|
235
|
+
}),
|
|
236
|
+
}, async (params) => {
|
|
237
|
+
const err = requireClient(client);
|
|
238
|
+
if (err)
|
|
239
|
+
return err;
|
|
240
|
+
return handleGlossaryImport(client, params);
|
|
241
|
+
});
|
|
242
|
+
register('babelize_glossary_export', {
|
|
243
|
+
description: 'Export glossary entries as CSV. Requires API key.',
|
|
244
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
245
|
+
}, async (params) => {
|
|
246
|
+
const err = requireClient(client);
|
|
247
|
+
if (err)
|
|
248
|
+
return err;
|
|
249
|
+
return handleGlossaryExport(client, params);
|
|
250
|
+
});
|
|
251
|
+
// --- Project Language tools ---
|
|
252
|
+
register('babelize_project_language_add', {
|
|
253
|
+
description: 'Add a language to a project. Requires API key.',
|
|
254
|
+
inputSchema: z.object({
|
|
255
|
+
project_id: z.string(),
|
|
256
|
+
language_id: z.string(),
|
|
257
|
+
}),
|
|
258
|
+
}, async (params) => {
|
|
259
|
+
const err = requireClient(client);
|
|
260
|
+
if (err)
|
|
261
|
+
return err;
|
|
262
|
+
return handleProjectLanguageAdd(client, params);
|
|
263
|
+
});
|
|
264
|
+
register('babelize_project_language_remove', {
|
|
265
|
+
description: 'Remove a language from a project. Requires API key.',
|
|
266
|
+
inputSchema: z.object({
|
|
267
|
+
project_id: z.string(),
|
|
268
|
+
language_id: z.string(),
|
|
269
|
+
}),
|
|
270
|
+
}, async (params) => {
|
|
271
|
+
const err = requireClient(client);
|
|
272
|
+
if (err)
|
|
273
|
+
return err;
|
|
274
|
+
return handleProjectLanguageRemove(client, params);
|
|
275
|
+
});
|
|
276
|
+
// --- Team tools ---
|
|
277
|
+
register('babelize_member_list', {
|
|
278
|
+
description: 'List members of a project. Requires API key.',
|
|
279
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
280
|
+
}, async (params) => {
|
|
281
|
+
const err = requireClient(client);
|
|
282
|
+
if (err)
|
|
283
|
+
return err;
|
|
284
|
+
return handleMemberList(client, params);
|
|
285
|
+
});
|
|
286
|
+
register('babelize_invitation_send', {
|
|
287
|
+
description: 'Send a team invitation to a project. Requires API key.',
|
|
288
|
+
inputSchema: z.object({
|
|
289
|
+
project_id: z.string(),
|
|
290
|
+
email: z.string(),
|
|
291
|
+
role: z.enum(['admin', 'editor', 'viewer']),
|
|
292
|
+
}),
|
|
293
|
+
}, async (params) => {
|
|
294
|
+
const err = requireClient(client);
|
|
295
|
+
if (err)
|
|
296
|
+
return err;
|
|
297
|
+
return handleInvitationSend(client, params);
|
|
298
|
+
});
|
|
299
|
+
// --- Sync & Deploy tools ---
|
|
300
|
+
register('babelize_project_sync', {
|
|
301
|
+
description: 'Trigger a repository sync for a project. Requires API key.',
|
|
302
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
303
|
+
}, async (params) => {
|
|
304
|
+
const err = requireClient(client);
|
|
305
|
+
if (err)
|
|
306
|
+
return err;
|
|
307
|
+
return handleProjectSync(client, params);
|
|
308
|
+
});
|
|
309
|
+
register('babelize_pr_raise', {
|
|
310
|
+
description: 'Create a GitHub Pull Request with translations. Requires API key.',
|
|
311
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
312
|
+
}, async (params) => {
|
|
313
|
+
const err = requireClient(client);
|
|
314
|
+
if (err)
|
|
315
|
+
return err;
|
|
316
|
+
return handlePrRaise(client, params);
|
|
317
|
+
});
|
|
318
|
+
register('babelize_project_download', {
|
|
319
|
+
description: 'Download translated project files as ZIP. Requires API key.',
|
|
320
|
+
inputSchema: z.object({ project_id: z.string() }),
|
|
321
|
+
}, async (params) => {
|
|
322
|
+
const err = requireClient(client);
|
|
323
|
+
if (err)
|
|
324
|
+
return err;
|
|
325
|
+
return handleProjectDownload(client, params);
|
|
326
|
+
});
|
|
327
|
+
// --- Account tools ---
|
|
328
|
+
register('babelize_me', {
|
|
329
|
+
description: 'Get current user profile and credits. Requires API key.',
|
|
330
|
+
inputSchema: z.object({}),
|
|
331
|
+
}, async (params) => {
|
|
332
|
+
const err = requireClient(client);
|
|
333
|
+
if (err)
|
|
334
|
+
return err;
|
|
335
|
+
return handleMe(client);
|
|
336
|
+
});
|
|
337
|
+
register('babelize_provider_tokens_list', {
|
|
338
|
+
description: 'List connected BYOK translation provider tokens. Requires API key.',
|
|
339
|
+
inputSchema: z.object({}),
|
|
340
|
+
}, async (params) => {
|
|
341
|
+
const err = requireClient(client);
|
|
342
|
+
if (err)
|
|
343
|
+
return err;
|
|
344
|
+
return handleProviderTokensList(client);
|
|
345
|
+
});
|
|
346
|
+
// --- Existing tools ---
|
|
30
347
|
register('babelize_run', {
|
|
31
348
|
description: 'Trigger a Babelize translation run for target languages. Requires API key.',
|
|
32
349
|
inputSchema: z.object({
|
|
33
350
|
project_id: z.string(),
|
|
34
351
|
target_locales: z.array(z.string()),
|
|
35
352
|
source_locale: z.string().optional(),
|
|
353
|
+
framework: z.enum(['react', 'nextjs', 'unknown', 'static']).optional(),
|
|
36
354
|
}),
|
|
37
355
|
}, async (params) => {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
isError: true,
|
|
42
|
-
};
|
|
356
|
+
const err = requireClient(client);
|
|
357
|
+
if (err)
|
|
358
|
+
return err;
|
|
43
359
|
return handleRun(client, params);
|
|
44
360
|
});
|
|
45
361
|
register('babelize_status', {
|
|
46
362
|
description: 'Check status of a translation run. Requires API key.',
|
|
47
363
|
inputSchema: z.object({ babel_id: z.string() }),
|
|
48
364
|
}, async (params) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
isError: true,
|
|
53
|
-
};
|
|
365
|
+
const err = requireClient(client);
|
|
366
|
+
if (err)
|
|
367
|
+
return err;
|
|
54
368
|
return handleStatus(client, params);
|
|
55
369
|
});
|
|
56
370
|
register('babelize_glossary_get', {
|
|
@@ -60,11 +374,9 @@ export function createServer(apiUrl, apiKey) {
|
|
|
60
374
|
search: z.string().optional(),
|
|
61
375
|
}),
|
|
62
376
|
}, async (params) => {
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
isError: true,
|
|
67
|
-
};
|
|
377
|
+
const err = requireClient(client);
|
|
378
|
+
if (err)
|
|
379
|
+
return err;
|
|
68
380
|
return handleGlossaryGet(client, params);
|
|
69
381
|
});
|
|
70
382
|
register('babelize_glossary_set', {
|
|
@@ -77,33 +389,11 @@ export function createServer(apiUrl, apiKey) {
|
|
|
77
389
|
locale: z.string().optional(),
|
|
78
390
|
}),
|
|
79
391
|
}, async (params) => {
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
isError: true,
|
|
84
|
-
};
|
|
392
|
+
const err = requireClient(client);
|
|
393
|
+
if (err)
|
|
394
|
+
return err;
|
|
85
395
|
return handleGlossarySet(client, params);
|
|
86
396
|
});
|
|
87
|
-
register('babelize_scan_strings', {
|
|
88
|
-
description: 'Extract hardcoded translatable strings from a code snippet. No API key required.',
|
|
89
|
-
inputSchema: z.object({ code: z.string() }),
|
|
90
|
-
}, ({ code }) => {
|
|
91
|
-
const results = extractStrings(code);
|
|
92
|
-
if (results.length === 0) {
|
|
93
|
-
return {
|
|
94
|
-
content: [{ type: 'text', text: 'No translatable strings found.' }],
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
const lines = results.map((s) => ` Line ${s.line}: "${s.text}"`);
|
|
98
|
-
return {
|
|
99
|
-
content: [
|
|
100
|
-
{
|
|
101
|
-
type: 'text',
|
|
102
|
-
text: [`Found ${results.length} translatable strings:`, ...lines].join('\n'),
|
|
103
|
-
},
|
|
104
|
-
],
|
|
105
|
-
};
|
|
106
|
-
});
|
|
107
397
|
return server;
|
|
108
398
|
}
|
|
109
399
|
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
interface BabelGetParams {
|
|
3
|
+
babel_id: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function handleBabelGet(client: AxiosInstance, params: BabelGetParams): Promise<{
|
|
6
|
+
content: {
|
|
7
|
+
type: "text";
|
|
8
|
+
text: string;
|
|
9
|
+
}[];
|
|
10
|
+
isError?: undefined;
|
|
11
|
+
} | {
|
|
12
|
+
content: {
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
}[];
|
|
16
|
+
isError: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=babel-get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"babel-get.d.ts","sourceRoot":"","sources":["../../src/tools/babel-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc;;;;;;;;;;;;GAkDjF"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export async function handleBabelGet(client, params) {
|
|
2
|
+
const { babel_id } = params;
|
|
3
|
+
try {
|
|
4
|
+
const response = await client.get(`/babels/${babel_id}`);
|
|
5
|
+
const b = response.data;
|
|
6
|
+
const lines = [
|
|
7
|
+
`📊 Babel Run: ${babel_id}`,
|
|
8
|
+
``,
|
|
9
|
+
` Status: ${String(b.status ?? 'unknown')}`,
|
|
10
|
+
` Project ID: ${String(b.project_id ?? '?')}`,
|
|
11
|
+
` Source: ${String(b.source_language ?? '?')}`,
|
|
12
|
+
` Targets: ${b.target_languages ? (Array.isArray(b.target_languages) ? b.target_languages.join(', ') : String(b.target_languages)) : '?'}`,
|
|
13
|
+
` Trigger: ${String(b.trigger_source ?? '?')}`,
|
|
14
|
+
` Created: ${String(b.created_at ?? '?')}`,
|
|
15
|
+
];
|
|
16
|
+
if (b.completed_at) {
|
|
17
|
+
lines.push(` Completed: ${String(b.completed_at)}`);
|
|
18
|
+
}
|
|
19
|
+
if (b.credits_used !== undefined && b.credits_used !== null) {
|
|
20
|
+
lines.push(` Credits: ${String(b.credits_used)}`);
|
|
21
|
+
}
|
|
22
|
+
const logs = b.logs;
|
|
23
|
+
if (logs && logs.length > 0) {
|
|
24
|
+
lines.push('', ' Logs:');
|
|
25
|
+
for (const log of logs) {
|
|
26
|
+
const step = String(log.step ?? '?');
|
|
27
|
+
const logStatus = String(log.status ?? '?');
|
|
28
|
+
const message = String(log.message ?? '');
|
|
29
|
+
lines.push(` • [${logStatus}] ${step}${message ? ` — ${message}` : ''}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
const message = err instanceof Object && err !== null && 'response' in err
|
|
38
|
+
? (err.response?.data?.error || 'Unknown error')
|
|
39
|
+
: err instanceof Error
|
|
40
|
+
? err.message
|
|
41
|
+
: 'Unknown error';
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: 'text', text: `❌ Failed to get babel: ${message}` }],
|
|
44
|
+
isError: true,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=babel-get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"babel-get.js","sourceRoot":"","sources":["../../src/tools/babel-get.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAsB;IAChF,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;QACzD,MAAM,CAAC,GAAG,QAAQ,CAAC,IAA+B,CAAC;QAEnD,MAAM,KAAK,GAAa;YACtB,iBAAiB,QAAQ,EAAE;YAC3B,EAAE;YACF,kBAAkB,MAAM,CAAC,CAAC,CAAC,MAAM,IAAI,SAAS,CAAC,EAAE;YACjD,kBAAkB,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE;YAC/C,kBAAkB,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,EAAE;YACpD,kBAAkB,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;YAC/I,kBAAkB,MAAM,CAAC,CAAC,CAAC,cAAc,IAAI,GAAG,CAAC,EAAE;YACnD,kBAAkB,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,EAAE;SAChD,CAAC;QAEF,IAAI,CAAC,CAAC,YAAY,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,IAAkD,CAAC;QAClE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC;gBACrC,MAAM,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAC1C,KAAK,CAAC,IAAI,CAAC,UAAU,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC9E,CAAC;QACH,CAAC;QAED,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SAC7D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,OAAO,GAAG,GAAG,YAAY,MAAM,IAAI,GAAG,KAAK,IAAI,IAAI,UAAU,IAAI,GAAG;YACxE,CAAC,CAAC,CAAE,GAAiD,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,eAAe,CAAC;YAC/F,CAAC,CAAC,GAAG,YAAY,KAAK;gBACpB,CAAC,CAAC,GAAG,CAAC,OAAO;gBACb,CAAC,CAAC,eAAe,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,0BAA0B,OAAO,EAAE,EAAE,CAAC;YAC/E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
interface BabelListParams {
|
|
3
|
+
project_id?: string;
|
|
4
|
+
page?: number;
|
|
5
|
+
limit?: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function handleBabelList(client: AxiosInstance, params: BabelListParams): Promise<{
|
|
8
|
+
content: {
|
|
9
|
+
type: "text";
|
|
10
|
+
text: string;
|
|
11
|
+
}[];
|
|
12
|
+
isError?: undefined;
|
|
13
|
+
} | {
|
|
14
|
+
content: {
|
|
15
|
+
type: "text";
|
|
16
|
+
text: string;
|
|
17
|
+
}[];
|
|
18
|
+
isError: boolean;
|
|
19
|
+
}>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=babel-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"babel-list.d.ts","sourceRoot":"","sources":["../../src/tools/babel-list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,UAAU,eAAe;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe;;;;;;;;;;;;GA6CnF"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export async function handleBabelList(client, params) {
|
|
2
|
+
const { project_id, page, limit } = params;
|
|
3
|
+
try {
|
|
4
|
+
const query = new URLSearchParams();
|
|
5
|
+
if (project_id)
|
|
6
|
+
query.set('project_id', project_id);
|
|
7
|
+
if (page)
|
|
8
|
+
query.set('page', String(page));
|
|
9
|
+
if (limit)
|
|
10
|
+
query.set('limit', String(limit));
|
|
11
|
+
const qs = query.toString();
|
|
12
|
+
const url = `/babels${qs ? `?${qs}` : ''}`;
|
|
13
|
+
const response = await client.get(url);
|
|
14
|
+
const data = response.data;
|
|
15
|
+
const babels = Array.isArray(data) ? data : data.data ?? [];
|
|
16
|
+
if (babels.length === 0) {
|
|
17
|
+
return {
|
|
18
|
+
content: [{ type: 'text', text: '📊 No translation runs found.' }],
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const lines = [`📊 Translation Runs (${babels.length}):`, ''];
|
|
22
|
+
for (const b of babels) {
|
|
23
|
+
const id = String(b.id ?? '?');
|
|
24
|
+
const status = String(b.status ?? 'unknown');
|
|
25
|
+
const targets = b.target_languages ? (Array.isArray(b.target_languages) ? b.target_languages.join(', ') : String(b.target_languages)) : '?';
|
|
26
|
+
const createdAt = String(b.created_at ?? '?');
|
|
27
|
+
lines.push(` • ${id} [${status}]`);
|
|
28
|
+
lines.push(` Targets: ${targets} | Created: ${createdAt}`);
|
|
29
|
+
lines.push('');
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
const message = err instanceof Object && err !== null && 'response' in err
|
|
37
|
+
? (err.response?.data?.error || 'Unknown error')
|
|
38
|
+
: err instanceof Error
|
|
39
|
+
? err.message
|
|
40
|
+
: 'Unknown error';
|
|
41
|
+
return {
|
|
42
|
+
content: [{ type: 'text', text: `❌ Failed to list babels: ${message}` }],
|
|
43
|
+
isError: true,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=babel-list.js.map
|