@babelize/mcp 1.0.4 → 1.0.6
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/server.d.ts.map +1 -1
- package/dist/server.js +187 -59
- package/dist/server.js.map +1 -1
- package/dist/tools/babel-get.d.ts +2 -8
- package/dist/tools/babel-get.d.ts.map +1 -1
- package/dist/tools/babel-get.js +18 -26
- package/dist/tools/babel-get.js.map +1 -1
- package/dist/tools/babel-list.d.ts +2 -8
- package/dist/tools/babel-list.d.ts.map +1 -1
- package/dist/tools/babel-list.js +17 -28
- package/dist/tools/babel-list.js.map +1 -1
- package/dist/tools/engine-analyze.d.ts +2 -8
- package/dist/tools/engine-analyze.d.ts.map +1 -1
- package/dist/tools/engine-analyze.js +7 -16
- package/dist/tools/engine-analyze.js.map +1 -1
- package/dist/tools/glossary-delete.d.ts +2 -8
- package/dist/tools/glossary-delete.d.ts.map +1 -1
- package/dist/tools/glossary-delete.js +5 -14
- package/dist/tools/glossary-delete.js.map +1 -1
- package/dist/tools/glossary-export.d.ts +2 -8
- package/dist/tools/glossary-export.d.ts.map +1 -1
- package/dist/tools/glossary-export.js +6 -22
- package/dist/tools/glossary-export.js.map +1 -1
- package/dist/tools/glossary-get.d.ts +2 -8
- package/dist/tools/glossary-get.d.ts.map +1 -1
- package/dist/tools/glossary-get.js +13 -24
- package/dist/tools/glossary-get.js.map +1 -1
- package/dist/tools/glossary-import.d.ts +2 -8
- package/dist/tools/glossary-import.d.ts.map +1 -1
- package/dist/tools/glossary-import.js +11 -28
- package/dist/tools/glossary-import.js.map +1 -1
- package/dist/tools/glossary-set.d.ts +2 -8
- package/dist/tools/glossary-set.d.ts.map +1 -1
- package/dist/tools/glossary-set.js +12 -24
- package/dist/tools/glossary-set.js.map +1 -1
- package/dist/tools/invitation-send.d.ts +2 -8
- package/dist/tools/invitation-send.d.ts.map +1 -1
- package/dist/tools/invitation-send.js +10 -25
- package/dist/tools/invitation-send.js.map +1 -1
- package/dist/tools/language-codes.d.ts +2 -8
- package/dist/tools/language-codes.d.ts.map +1 -1
- package/dist/tools/language-codes.js +19 -37
- package/dist/tools/language-codes.js.map +1 -1
- package/dist/tools/language-list.d.ts +2 -8
- package/dist/tools/language-list.d.ts.map +1 -1
- package/dist/tools/language-list.js +9 -19
- package/dist/tools/language-list.js.map +1 -1
- package/dist/tools/me.d.ts +2 -8
- package/dist/tools/me.d.ts.map +1 -1
- package/dist/tools/me.js +13 -20
- package/dist/tools/me.js.map +1 -1
- package/dist/tools/member-list.d.ts +2 -8
- package/dist/tools/member-list.d.ts.map +1 -1
- package/dist/tools/member-list.js +21 -21
- package/dist/tools/member-list.js.map +1 -1
- package/dist/tools/pr-raise.d.ts +2 -8
- package/dist/tools/pr-raise.d.ts.map +1 -1
- package/dist/tools/pr-raise.js +12 -25
- package/dist/tools/pr-raise.js.map +1 -1
- package/dist/tools/project-create.d.ts +2 -8
- package/dist/tools/project-create.d.ts.map +1 -1
- package/dist/tools/project-create.js +26 -34
- package/dist/tools/project-create.js.map +1 -1
- package/dist/tools/project-download.d.ts +3 -8
- package/dist/tools/project-download.d.ts.map +1 -1
- package/dist/tools/project-download.js +15 -21
- package/dist/tools/project-download.js.map +1 -1
- package/dist/tools/project-get.d.ts +2 -8
- package/dist/tools/project-get.d.ts.map +1 -1
- package/dist/tools/project-get.js +15 -23
- package/dist/tools/project-get.js.map +1 -1
- package/dist/tools/project-language-add.d.ts +2 -8
- package/dist/tools/project-language-add.d.ts.map +1 -1
- package/dist/tools/project-language-add.js +9 -20
- package/dist/tools/project-language-add.js.map +1 -1
- package/dist/tools/project-language-remove.d.ts +2 -8
- package/dist/tools/project-language-remove.d.ts.map +1 -1
- package/dist/tools/project-language-remove.js +9 -14
- package/dist/tools/project-language-remove.js.map +1 -1
- package/dist/tools/project-list.d.ts +2 -8
- package/dist/tools/project-list.d.ts.map +1 -1
- package/dist/tools/project-list.js +21 -28
- package/dist/tools/project-list.js.map +1 -1
- package/dist/tools/project-sync.d.ts +2 -8
- package/dist/tools/project-sync.d.ts.map +1 -1
- package/dist/tools/project-sync.js +12 -21
- package/dist/tools/project-sync.js.map +1 -1
- package/dist/tools/provider-tokens-list.d.ts +2 -8
- package/dist/tools/provider-tokens-list.d.ts.map +1 -1
- package/dist/tools/provider-tokens-list.js +10 -20
- package/dist/tools/provider-tokens-list.js.map +1 -1
- package/dist/tools/run-and-wait.d.ts +19 -0
- package/dist/tools/run-and-wait.d.ts.map +1 -0
- package/dist/tools/run-and-wait.js +99 -0
- package/dist/tools/run-and-wait.js.map +1 -0
- package/dist/tools/run.d.ts +2 -8
- package/dist/tools/run.d.ts.map +1 -1
- package/dist/tools/run.js +17 -31
- package/dist/tools/run.js.map +1 -1
- package/dist/tools/scan.d.ts.map +1 -1
- package/dist/tools/scan.js +4 -7
- package/dist/tools/scan.js.map +1 -1
- package/dist/tools/status.d.ts +2 -8
- package/dist/tools/status.d.ts.map +1 -1
- package/dist/tools/status.js +33 -19
- package/dist/tools/status.js.map +1 -1
- package/dist/tools/tm-export.d.ts +2 -8
- package/dist/tools/tm-export.d.ts.map +1 -1
- package/dist/tools/tm-export.js +6 -22
- package/dist/tools/tm-export.js.map +1 -1
- package/dist/tools/tm-get.d.ts +2 -8
- package/dist/tools/tm-get.d.ts.map +1 -1
- package/dist/tools/tm-get.js +21 -31
- package/dist/tools/tm-get.js.map +1 -1
- package/dist/tools/tm-set.d.ts +2 -8
- package/dist/tools/tm-set.d.ts.map +1 -1
- package/dist/tools/tm-set.js +14 -35
- package/dist/tools/tm-set.js.map +1 -1
- package/dist/utils/api.d.ts +6 -0
- package/dist/utils/api.d.ts.map +1 -0
- package/dist/utils/api.js +45 -0
- package/dist/utils/api.js.map +1 -0
- package/dist/utils/errors.d.ts +9 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +84 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/response.d.ts +8 -0
- package/dist/utils/response.d.ts.map +1 -0
- package/dist/utils/response.js +17 -0
- package/dist/utils/response.js.map +1 -0
- package/dist/utils/scan-strings.d.ts +1 -1
- package/dist/utils/scan-strings.d.ts.map +1 -1
- package/dist/utils/scan-strings.js +129 -51
- package/dist/utils/scan-strings.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,33 +1,23 @@
|
|
|
1
|
+
import { toErrorResponse } from '../utils/errors.js';
|
|
2
|
+
import { success } from '../utils/response.js';
|
|
3
|
+
import { asString } from '../utils/api.js';
|
|
1
4
|
export async function handleProviderTokensList(client) {
|
|
2
5
|
try {
|
|
3
6
|
const response = await client.get('/auth/provider-tokens');
|
|
4
7
|
const tokens = Array.isArray(response.data) ? response.data : [];
|
|
5
8
|
if (tokens.length === 0) {
|
|
6
|
-
return
|
|
7
|
-
content: [{ type: 'text', text: '🔑 No provider tokens configured. Use babelize_run with the default provider or add a BYOK token.' }],
|
|
8
|
-
};
|
|
9
|
+
return success('🔑 No provider tokens connected.');
|
|
9
10
|
}
|
|
10
|
-
const lines = [`🔑 Provider Tokens (${tokens.length}):`, ''];
|
|
11
|
+
const lines = [`🔑 Connected Provider Tokens (${tokens.length}):`, ''];
|
|
11
12
|
for (const t of tokens) {
|
|
12
|
-
const provider =
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
lines.push(` • ${provider.padEnd(12)} Created: ${createdAt} | Expires: ${expiresAt}`);
|
|
13
|
+
const provider = asString(t.provider ?? t.id);
|
|
14
|
+
const email = asString(t.email ?? '');
|
|
15
|
+
lines.push(` • ${provider}${email ? ` (${email})` : ''}`);
|
|
16
16
|
}
|
|
17
|
-
return
|
|
18
|
-
content: [{ type: 'text', text: lines.join('\n') }],
|
|
19
|
-
};
|
|
17
|
+
return success(lines.join('\n'));
|
|
20
18
|
}
|
|
21
19
|
catch (err) {
|
|
22
|
-
|
|
23
|
-
? (err.response?.data?.error || 'Unknown error')
|
|
24
|
-
: err instanceof Error
|
|
25
|
-
? err.message
|
|
26
|
-
: 'Unknown error';
|
|
27
|
-
return {
|
|
28
|
-
content: [{ type: 'text', text: `❌ Failed to list provider tokens: ${message}` }],
|
|
29
|
-
isError: true,
|
|
30
|
-
};
|
|
20
|
+
return toErrorResponse(err, 'Failed to list provider tokens');
|
|
31
21
|
}
|
|
32
22
|
}
|
|
33
23
|
//# sourceMappingURL=provider-tokens-list.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-tokens-list.js","sourceRoot":"","sources":["../../src/tools/provider-tokens-list.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"provider-tokens-list.js","sourceRoot":"","sources":["../../src/tools/provider-tokens-list.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAAqB;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,OAAO,CAAC,kCAAkC,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,iCAAiC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QACjF,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC9C,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;IAChE,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { AxiosInstance } from 'axios';
|
|
2
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
3
|
+
interface RunAndWaitParams {
|
|
4
|
+
project_id: string;
|
|
5
|
+
target_locales: string[];
|
|
6
|
+
source_locale?: string;
|
|
7
|
+
framework?: 'react' | 'nextjs' | 'unknown' | 'static';
|
|
8
|
+
poll_interval?: number;
|
|
9
|
+
max_polls?: number;
|
|
10
|
+
}
|
|
11
|
+
export declare function handleRunAndWait(client: AxiosInstance, params: RunAndWaitParams, signal?: AbortSignal, server?: McpServer): Promise<{
|
|
12
|
+
content: {
|
|
13
|
+
type: "text";
|
|
14
|
+
text: string;
|
|
15
|
+
}[];
|
|
16
|
+
isError: true;
|
|
17
|
+
} | import("../utils/response.js").ToolResponse>;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=run-and-wait.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-and-wait.d.ts","sourceRoot":"","sources":["../../src/tools/run-and-wait.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;IACtD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,gBAAgB,EACxB,MAAM,CAAC,EAAE,WAAW,EACpB,MAAM,CAAC,EAAE,SAAS;;;;;;iDAsGnB"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { toErrorResponse } from '../utils/errors.js';
|
|
2
|
+
import { success } from '../utils/response.js';
|
|
3
|
+
import { asString } from '../utils/api.js';
|
|
4
|
+
const POLL_INTERVAL_MS = 5_000;
|
|
5
|
+
const MAX_POLLS = 120;
|
|
6
|
+
function sleep(ms) {
|
|
7
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
8
|
+
}
|
|
9
|
+
export async function handleRunAndWait(client, params, signal, server) {
|
|
10
|
+
const { project_id, target_locales, source_locale, framework } = params;
|
|
11
|
+
const pollInterval = params.poll_interval ?? POLL_INTERVAL_MS;
|
|
12
|
+
const maxPolls = params.max_polls ?? MAX_POLLS;
|
|
13
|
+
let babelId;
|
|
14
|
+
try {
|
|
15
|
+
const body = {
|
|
16
|
+
project_id,
|
|
17
|
+
target_locales,
|
|
18
|
+
source_locale: source_locale || 'en',
|
|
19
|
+
dry_run: false,
|
|
20
|
+
};
|
|
21
|
+
if (framework)
|
|
22
|
+
body.framework = framework;
|
|
23
|
+
const response = await client.post('/engine/babel', body);
|
|
24
|
+
const data = response.data;
|
|
25
|
+
babelId = (data.babel_id ?? data.id);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
return toErrorResponse(err, 'Failed to start translation run');
|
|
29
|
+
}
|
|
30
|
+
const terminalStates = new Set(['completed', 'failed', 'cancelled', 'error']);
|
|
31
|
+
const startedAt = Date.now();
|
|
32
|
+
for (let i = 0; i < maxPolls; i++) {
|
|
33
|
+
if (signal?.aborted) {
|
|
34
|
+
return success([
|
|
35
|
+
'🛑 Translation run polling cancelled.',
|
|
36
|
+
` Babel ID: ${babelId}`,
|
|
37
|
+
'',
|
|
38
|
+
'The run continues on the server. Use babelize_status to check progress.',
|
|
39
|
+
].join('\n'));
|
|
40
|
+
}
|
|
41
|
+
await sleep(pollInterval);
|
|
42
|
+
if (signal?.aborted) {
|
|
43
|
+
return success([
|
|
44
|
+
'🛑 Translation run polling cancelled.',
|
|
45
|
+
` Babel ID: ${babelId}`,
|
|
46
|
+
'',
|
|
47
|
+
'The run continues on the server. Use babelize_status to check progress.',
|
|
48
|
+
].join('\n'));
|
|
49
|
+
}
|
|
50
|
+
try {
|
|
51
|
+
const statusResponse = await client.get(`/engine/status/${babelId}`);
|
|
52
|
+
const statusData = statusResponse.data;
|
|
53
|
+
const status = asString(statusData.status, 'unknown');
|
|
54
|
+
const totalBatches = statusData.total_batches;
|
|
55
|
+
const completedBatches = statusData.completed_batches;
|
|
56
|
+
if (server) {
|
|
57
|
+
const progress = totalBatches && completedBatches
|
|
58
|
+
? `batch ${completedBatches}/${totalBatches}`
|
|
59
|
+
: `poll ${i + 1}/${maxPolls}`;
|
|
60
|
+
server.sendLoggingMessage({
|
|
61
|
+
level: 'info',
|
|
62
|
+
data: `[${babelId}] ${status} — ${progress} (${Math.round((Date.now() - startedAt) / 1000)}s elapsed)`,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
if (status === 'completed') {
|
|
66
|
+
const lines = [
|
|
67
|
+
'✅ Translation run completed!',
|
|
68
|
+
'',
|
|
69
|
+
` Babel ID: ${babelId}`,
|
|
70
|
+
` Status: ${status}`,
|
|
71
|
+
];
|
|
72
|
+
if (statusData.completed_at) {
|
|
73
|
+
lines.push(` Completed: ${asString(statusData.completed_at)}`);
|
|
74
|
+
}
|
|
75
|
+
if (totalBatches !== undefined && completedBatches !== undefined) {
|
|
76
|
+
lines.push(` Batches: ${completedBatches}/${totalBatches}`);
|
|
77
|
+
}
|
|
78
|
+
return success(lines.join('\n'));
|
|
79
|
+
}
|
|
80
|
+
if (terminalStates.has(status)) {
|
|
81
|
+
return success([
|
|
82
|
+
`⚠️ Translation run ended with status: ${status}`,
|
|
83
|
+
` Babel ID: ${babelId}`,
|
|
84
|
+
statusData.error ? ` Error: ${asString(statusData.error)}` : '',
|
|
85
|
+
].filter(Boolean).join('\n'));
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
// Poll failed — keep trying
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return success([
|
|
93
|
+
`⏱️ Translation run still processing after ${Math.round(maxPolls * pollInterval / 1000)}s.`,
|
|
94
|
+
` Babel ID: ${babelId}`,
|
|
95
|
+
'',
|
|
96
|
+
'Use babelize_status or babelize_babel_get to check progress manually.',
|
|
97
|
+
].join('\n'));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=run-and-wait.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-and-wait.js","sourceRoot":"","sources":["../../src/tools/run-and-wait.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/run.d.ts
CHANGED
|
@@ -10,13 +10,7 @@ export declare function handleRun(client: AxiosInstance, params: RunParams): Pro
|
|
|
10
10
|
type: "text";
|
|
11
11
|
text: string;
|
|
12
12
|
}[];
|
|
13
|
-
isError
|
|
14
|
-
} |
|
|
15
|
-
content: {
|
|
16
|
-
type: "text";
|
|
17
|
-
text: string;
|
|
18
|
-
}[];
|
|
19
|
-
isError: boolean;
|
|
20
|
-
}>;
|
|
13
|
+
isError: true;
|
|
14
|
+
} | import("../utils/response.js").ToolResponse>;
|
|
21
15
|
export {};
|
|
22
16
|
//# sourceMappingURL=run.d.ts.map
|
package/dist/tools/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC,UAAU,SAAS;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;CACvD;AAED,wBAAsB,SAAS,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,SAAS;;;;;;iDA0BvE"}
|
package/dist/tools/run.js
CHANGED
|
@@ -1,44 +1,30 @@
|
|
|
1
|
+
import { toErrorResponse } from '../utils/errors.js';
|
|
2
|
+
import { success } from '../utils/response.js';
|
|
1
3
|
export async function handleRun(client, params) {
|
|
2
|
-
const { project_id, target_locales, source_locale, framework } = params;
|
|
3
4
|
try {
|
|
4
5
|
const body = {
|
|
5
|
-
project_id,
|
|
6
|
-
target_locales,
|
|
7
|
-
source_locale: source_locale || 'en',
|
|
6
|
+
project_id: params.project_id,
|
|
7
|
+
target_locales: params.target_locales,
|
|
8
|
+
source_locale: params.source_locale || 'en',
|
|
8
9
|
dry_run: false,
|
|
9
10
|
};
|
|
10
|
-
if (framework)
|
|
11
|
-
body.framework = framework;
|
|
11
|
+
if (params.framework)
|
|
12
|
+
body.framework = params.framework;
|
|
12
13
|
const response = await client.post('/engine/babel', body);
|
|
13
14
|
const data = response.data;
|
|
14
15
|
const babelId = (data.babel_id ?? data.id);
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
` Source language: ${source_locale || 'en'}`,
|
|
25
|
-
``,
|
|
26
|
-
`Use babelize_status to check progress.`,
|
|
27
|
-
].join('\n'),
|
|
28
|
-
},
|
|
29
|
-
],
|
|
30
|
-
};
|
|
16
|
+
return success([
|
|
17
|
+
'🚀 Babel translation run started!',
|
|
18
|
+
'',
|
|
19
|
+
` Babel ID: ${babelId}`,
|
|
20
|
+
` Target languages: ${params.target_locales.join(', ')}`,
|
|
21
|
+
` Source language: ${params.source_locale || 'en'}`,
|
|
22
|
+
'',
|
|
23
|
+
'Use babelize_status to check progress.',
|
|
24
|
+
].join('\n'));
|
|
31
25
|
}
|
|
32
26
|
catch (err) {
|
|
33
|
-
|
|
34
|
-
? (err.response?.data?.error || 'Unknown error')
|
|
35
|
-
: err instanceof Error
|
|
36
|
-
? err.message
|
|
37
|
-
: 'Unknown error';
|
|
38
|
-
return {
|
|
39
|
-
content: [{ type: 'text', text: `❌ Failed to start babel run: ${message}` }],
|
|
40
|
-
isError: true,
|
|
41
|
-
};
|
|
27
|
+
return toErrorResponse(err, 'Failed to start babel run');
|
|
42
28
|
}
|
|
43
29
|
}
|
|
44
30
|
//# sourceMappingURL=run.js.map
|
package/dist/tools/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAS/C,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAqB,EAAE,MAAiB;IACtE,IAAI,CAAC;QACH,MAAM,IAAI,GAA4B;YACpC,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI;YAC3C,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,MAAM,CAAC,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAExD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA+B,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAW,CAAC;QAErD,OAAO,OAAO,CAAC;YACb,mCAAmC;YACnC,EAAE;YACF,eAAe,OAAO,EAAE;YACxB,uBAAuB,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACzD,sBAAsB,MAAM,CAAC,aAAa,IAAI,IAAI,EAAE;YACpD,EAAE;YACF,wCAAwC;SACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAChB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,GAAG,EAAE,2BAA2B,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
|
package/dist/tools/scan.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/tools/scan.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../src/tools/scan.ts"],"names":[],"mappings":"AAGA,UAAU,UAAU;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,wBAAsB,UAAU,CAAC,MAAM,EAAE,UAAU;;;;;;;;;;;;GA6DlD"}
|
package/dist/tools/scan.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { stat } from 'node:fs/promises';
|
|
2
2
|
import { scanDirectory } from '../utils/scan-strings.js';
|
|
3
3
|
export async function handleScan(params) {
|
|
4
|
-
const { directory, extensions } = params;
|
|
5
|
-
// Verify the directory exists
|
|
6
4
|
try {
|
|
7
|
-
const dirStat = await stat(directory);
|
|
5
|
+
const dirStat = await stat(params.directory);
|
|
8
6
|
if (!dirStat.isDirectory()) {
|
|
9
7
|
return {
|
|
10
8
|
content: [{ type: 'text', text: 'Error: Path is not a directory' }],
|
|
@@ -14,14 +12,13 @@ export async function handleScan(params) {
|
|
|
14
12
|
}
|
|
15
13
|
catch {
|
|
16
14
|
return {
|
|
17
|
-
content: [{ type: 'text', text: `Error: Directory not found: ${directory}` }],
|
|
15
|
+
content: [{ type: 'text', text: `Error: Directory not found: ${params.directory}` }],
|
|
18
16
|
isError: true,
|
|
19
17
|
};
|
|
20
18
|
}
|
|
21
|
-
// Progress indicator for large directories
|
|
22
19
|
const startTime = Date.now();
|
|
23
|
-
process.stderr.write(`Scanning ${directory} for hardcoded strings...\n`);
|
|
24
|
-
const results = await scanDirectory(directory, extensions);
|
|
20
|
+
process.stderr.write(`Scanning ${params.directory} for hardcoded strings...\n`);
|
|
21
|
+
const results = await scanDirectory(params.directory, params.extensions);
|
|
25
22
|
const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
|
|
26
23
|
process.stderr.write(`Scan complete in ${elapsed}s. Found ${results.length} files with strings.\n`);
|
|
27
24
|
if (results.length === 0) {
|
package/dist/tools/scan.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/tools/scan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAOzD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAkB;IACjD,
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/tools/scan.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/status.d.ts
CHANGED
|
@@ -7,13 +7,7 @@ export declare function handleStatus(client: AxiosInstance, params: StatusParams
|
|
|
7
7
|
type: "text";
|
|
8
8
|
text: string;
|
|
9
9
|
}[];
|
|
10
|
-
isError
|
|
11
|
-
} |
|
|
12
|
-
content: {
|
|
13
|
-
type: "text";
|
|
14
|
-
text: string;
|
|
15
|
-
}[];
|
|
16
|
-
isError: boolean;
|
|
17
|
-
}>;
|
|
10
|
+
isError: true;
|
|
11
|
+
} | import("../utils/response.js").ToolResponse>;
|
|
18
12
|
export {};
|
|
19
13
|
//# sourceMappingURL=status.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY;;;;;;iDAoD7E"}
|
package/dist/tools/status.js
CHANGED
|
@@ -1,36 +1,50 @@
|
|
|
1
|
+
import { toErrorResponse } from '../utils/errors.js';
|
|
2
|
+
import { success } from '../utils/response.js';
|
|
3
|
+
import { asString } from '../utils/api.js';
|
|
1
4
|
export async function handleStatus(client, params) {
|
|
2
|
-
const { babel_id } = params;
|
|
3
5
|
try {
|
|
4
|
-
const response = await client.get(`/engine/status/${babel_id}`);
|
|
6
|
+
const response = await client.get(`/engine/status/${params.babel_id}`);
|
|
5
7
|
const data = response.data;
|
|
6
|
-
const status = data.status
|
|
7
|
-
const
|
|
8
|
-
const
|
|
8
|
+
const status = asString(data.status, 'unknown');
|
|
9
|
+
const createdAt = data.created_at;
|
|
10
|
+
const completedAt = data.completed_at;
|
|
11
|
+
const error = data.error;
|
|
12
|
+
const totalBatches = data.total_batches;
|
|
13
|
+
const completedBatches = data.completed_batches;
|
|
9
14
|
const lines = [
|
|
10
|
-
`📊 Babel Run Status: ${babel_id}`,
|
|
11
|
-
|
|
15
|
+
`📊 Babel Run Status: ${params.babel_id}`,
|
|
16
|
+
'',
|
|
12
17
|
` Status: ${status}`,
|
|
13
18
|
];
|
|
19
|
+
if (createdAt) {
|
|
20
|
+
const elapsed = Math.floor((Date.now() - new Date(createdAt).getTime()) / 1000);
|
|
21
|
+
const mins = Math.floor(elapsed / 60);
|
|
22
|
+
const secs = elapsed % 60;
|
|
23
|
+
lines.push(` Created: ${createdAt}`);
|
|
24
|
+
lines.push(` Elapsed: ${mins}m ${secs}s`);
|
|
25
|
+
}
|
|
14
26
|
if (completedAt) {
|
|
15
27
|
lines.push(` Completed: ${completedAt}`);
|
|
16
28
|
}
|
|
29
|
+
if (totalBatches !== undefined && completedBatches !== undefined) {
|
|
30
|
+
lines.push(` Progress: ${completedBatches}/${totalBatches} batches`);
|
|
31
|
+
}
|
|
17
32
|
if (error) {
|
|
18
33
|
lines.push(` Error: ${error}`);
|
|
19
34
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
35
|
+
if (status === 'processing' || status === 'running') {
|
|
36
|
+
lines.push('');
|
|
37
|
+
lines.push(' ℹ️ Run is still processing. Use babelize_babel_get for detailed progress logs.');
|
|
38
|
+
const logs = data.logs;
|
|
39
|
+
if (logs && logs.length > 0) {
|
|
40
|
+
const lastLog = logs[logs.length - 1];
|
|
41
|
+
lines.push(` Latest: [${asString(lastLog.status)}] ${asString(lastLog.step)}${lastLog.message ? ` — ${asString(lastLog.message)}` : ''}`);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return success(lines.join('\n'));
|
|
23
45
|
}
|
|
24
46
|
catch (err) {
|
|
25
|
-
|
|
26
|
-
? (err.response?.data?.error || 'Unknown error')
|
|
27
|
-
: err instanceof Error
|
|
28
|
-
? err.message
|
|
29
|
-
: 'Unknown error';
|
|
30
|
-
return {
|
|
31
|
-
content: [{ type: 'text', text: `❌ Failed to get status: ${message}` }],
|
|
32
|
-
isError: true,
|
|
33
|
-
};
|
|
47
|
+
return toErrorResponse(err, 'Failed to get status');
|
|
34
48
|
}
|
|
35
49
|
}
|
|
36
50
|
//# sourceMappingURL=status.js.map
|
package/dist/tools/status.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,7 @@ export declare function handleTmExport(client: AxiosInstance, params: TmExportPa
|
|
|
7
7
|
type: "text";
|
|
8
8
|
text: string;
|
|
9
9
|
}[];
|
|
10
|
-
isError
|
|
11
|
-
} |
|
|
12
|
-
content: {
|
|
13
|
-
type: "text";
|
|
14
|
-
text: string;
|
|
15
|
-
}[];
|
|
16
|
-
isError: boolean;
|
|
17
|
-
}>;
|
|
10
|
+
isError: true;
|
|
11
|
+
} | import("../utils/response.js").ToolResponse>;
|
|
18
12
|
export {};
|
|
19
13
|
//# sourceMappingURL=tm-export.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tm-export.d.ts","sourceRoot":"","sources":["../../src/tools/tm-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tm-export.d.ts","sourceRoot":"","sources":["../../src/tools/tm-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAItC,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc;;;;;;iDASjF"}
|
package/dist/tools/tm-export.js
CHANGED
|
@@ -1,29 +1,13 @@
|
|
|
1
|
+
import { toErrorResponse } from '../utils/errors.js';
|
|
2
|
+
import { success } from '../utils/response.js';
|
|
1
3
|
export async function handleTmExport(client, params) {
|
|
2
|
-
const { project_id } = params;
|
|
3
4
|
try {
|
|
4
|
-
const response = await client.get(`/projects/${project_id}/tm/export
|
|
5
|
-
|
|
6
|
-
});
|
|
7
|
-
const tmx = typeof response.data === 'string' ? response.data : String(response.data);
|
|
8
|
-
return {
|
|
9
|
-
content: [
|
|
10
|
-
{
|
|
11
|
-
type: 'text',
|
|
12
|
-
text: `✅ TMX export for project ${project_id} (${tmx.length} chars):\n\n${tmx}`,
|
|
13
|
-
},
|
|
14
|
-
],
|
|
15
|
-
};
|
|
5
|
+
const response = await client.get(`/projects/${params.project_id}/tm/export`);
|
|
6
|
+
const tmx = typeof response.data === 'string' ? response.data : JSON.stringify(response.data);
|
|
7
|
+
return success(`📄 Translation Memory (TMX) for project ${params.project_id}:\n\n${tmx}`);
|
|
16
8
|
}
|
|
17
9
|
catch (err) {
|
|
18
|
-
|
|
19
|
-
? (err.response?.data?.error || 'Unknown error')
|
|
20
|
-
: err instanceof Error
|
|
21
|
-
? err.message
|
|
22
|
-
: 'Unknown error';
|
|
23
|
-
return {
|
|
24
|
-
content: [{ type: 'text', text: `❌ Failed to export TM: ${message}` }],
|
|
25
|
-
isError: true,
|
|
26
|
-
};
|
|
10
|
+
return toErrorResponse(err, 'Failed to export TM');
|
|
27
11
|
}
|
|
28
12
|
}
|
|
29
13
|
//# sourceMappingURL=tm-export.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tm-export.js","sourceRoot":"","sources":["../../src/tools/tm-export.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tm-export.js","sourceRoot":"","sources":["../../src/tools/tm-export.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAM/C,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAsB;IAChF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,CAAC,UAAU,YAAY,CAAC,CAAC;QAC9E,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAE9F,OAAO,OAAO,CAAC,2CAA2C,MAAM,CAAC,UAAU,QAAQ,GAAG,EAAE,CAAC,CAAC;IAC5F,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
package/dist/tools/tm-get.d.ts
CHANGED
|
@@ -9,13 +9,7 @@ export declare function handleTmGet(client: AxiosInstance, params: TmGetParams):
|
|
|
9
9
|
type: "text";
|
|
10
10
|
text: string;
|
|
11
11
|
}[];
|
|
12
|
-
isError
|
|
13
|
-
} |
|
|
14
|
-
content: {
|
|
15
|
-
type: "text";
|
|
16
|
-
text: string;
|
|
17
|
-
}[];
|
|
18
|
-
isError: boolean;
|
|
19
|
-
}>;
|
|
12
|
+
isError: true;
|
|
13
|
+
} | import("../utils/response.js").ToolResponse>;
|
|
20
14
|
export {};
|
|
21
15
|
//# sourceMappingURL=tm-get.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tm-get.d.ts","sourceRoot":"","sources":["../../src/tools/tm-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"tm-get.d.ts","sourceRoot":"","sources":["../../src/tools/tm-get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW;;;;;;iDA+B3E"}
|
package/dist/tools/tm-get.js
CHANGED
|
@@ -1,45 +1,35 @@
|
|
|
1
|
+
import { toErrorResponse } from '../utils/errors.js';
|
|
2
|
+
import { success } from '../utils/response.js';
|
|
3
|
+
import { asString, extractList } from '../utils/api.js';
|
|
1
4
|
export async function handleTmGet(client, params) {
|
|
2
|
-
const { project_id, search, target_lang } = params;
|
|
3
5
|
try {
|
|
4
|
-
const
|
|
5
|
-
if (search)
|
|
6
|
-
|
|
7
|
-
if (target_lang)
|
|
8
|
-
|
|
9
|
-
const
|
|
10
|
-
const url = `/projects/${project_id}/tm${
|
|
6
|
+
const searchParams = new URLSearchParams();
|
|
7
|
+
if (params.search)
|
|
8
|
+
searchParams.set('search', params.search);
|
|
9
|
+
if (params.target_lang)
|
|
10
|
+
searchParams.set('target_lang', params.target_lang);
|
|
11
|
+
const query = searchParams.toString();
|
|
12
|
+
const url = `/projects/${params.project_id}/tm${query ? `?${query}` : ''}`;
|
|
11
13
|
const response = await client.get(url);
|
|
12
|
-
const entries =
|
|
14
|
+
const entries = extractList(response.data, 'data', 'entries');
|
|
13
15
|
if (entries.length === 0) {
|
|
14
|
-
return
|
|
15
|
-
content: [{ type: 'text', text: '📚 No translation memory entries found.' }],
|
|
16
|
-
};
|
|
16
|
+
return success('📄 No translation memory entries found.');
|
|
17
17
|
}
|
|
18
18
|
const lines = [
|
|
19
|
-
|
|
19
|
+
`📄 Translation Memory (${entries.length} entries)${params.search ? ` matching "${params.search}"` : ''}:`,
|
|
20
20
|
'',
|
|
21
21
|
];
|
|
22
|
-
for (const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
const
|
|
26
|
-
const
|
|
27
|
-
lines.push(` • ${
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
const source = asString(entry.source_text ?? entry.source);
|
|
24
|
+
const target = asString(entry.translated_text ?? entry.target);
|
|
25
|
+
const sourceLang = asString(entry.source_lang, '?');
|
|
26
|
+
const targetLang = asString(entry.target_lang, '?');
|
|
27
|
+
lines.push(` • [${sourceLang} → ${targetLang}] "${source}" = "${target}"`);
|
|
28
28
|
}
|
|
29
|
-
return
|
|
30
|
-
content: [{ type: 'text', text: lines.join('\n') }],
|
|
31
|
-
};
|
|
29
|
+
return success(lines.join('\n'));
|
|
32
30
|
}
|
|
33
31
|
catch (err) {
|
|
34
|
-
|
|
35
|
-
? (err.response?.data?.error || 'Unknown error')
|
|
36
|
-
: err instanceof Error
|
|
37
|
-
? err.message
|
|
38
|
-
: 'Unknown error';
|
|
39
|
-
return {
|
|
40
|
-
content: [{ type: 'text', text: `❌ Failed to get translation memory: ${message}` }],
|
|
41
|
-
isError: true,
|
|
42
|
-
};
|
|
32
|
+
return toErrorResponse(err, 'Failed to get TM entries');
|
|
43
33
|
}
|
|
44
34
|
}
|
|
45
35
|
//# sourceMappingURL=tm-get.js.map
|
package/dist/tools/tm-get.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tm-get.js","sourceRoot":"","sources":["../../src/tools/tm-get.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tm-get.js","sourceRoot":"","sources":["../../src/tools/tm-get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAQnE,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAqB,EAAE,MAAmB;IAC1E,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,MAAM;YAAE,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,WAAW;YAAE,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,aAAa,MAAM,CAAC,UAAU,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3E,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAA8B,CAAC;QAE3F,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,OAAO,CAAC,yCAAyC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,0BAA0B,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;YAC1G,EAAE;SACH,CAAC;QAEF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,eAAe,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/D,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;YACpD,KAAK,CAAC,IAAI,CAAC,QAAQ,UAAU,MAAM,UAAU,MAAM,MAAM,QAAQ,MAAM,GAAG,CAAC,CAAC;QAC9E,CAAC;QAED,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC,GAAG,EAAE,0BAA0B,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC"}
|