@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.
Files changed (135) hide show
  1. package/dist/server.d.ts.map +1 -1
  2. package/dist/server.js +187 -59
  3. package/dist/server.js.map +1 -1
  4. package/dist/tools/babel-get.d.ts +2 -8
  5. package/dist/tools/babel-get.d.ts.map +1 -1
  6. package/dist/tools/babel-get.js +18 -26
  7. package/dist/tools/babel-get.js.map +1 -1
  8. package/dist/tools/babel-list.d.ts +2 -8
  9. package/dist/tools/babel-list.d.ts.map +1 -1
  10. package/dist/tools/babel-list.js +17 -28
  11. package/dist/tools/babel-list.js.map +1 -1
  12. package/dist/tools/engine-analyze.d.ts +2 -8
  13. package/dist/tools/engine-analyze.d.ts.map +1 -1
  14. package/dist/tools/engine-analyze.js +7 -16
  15. package/dist/tools/engine-analyze.js.map +1 -1
  16. package/dist/tools/glossary-delete.d.ts +2 -8
  17. package/dist/tools/glossary-delete.d.ts.map +1 -1
  18. package/dist/tools/glossary-delete.js +5 -14
  19. package/dist/tools/glossary-delete.js.map +1 -1
  20. package/dist/tools/glossary-export.d.ts +2 -8
  21. package/dist/tools/glossary-export.d.ts.map +1 -1
  22. package/dist/tools/glossary-export.js +6 -22
  23. package/dist/tools/glossary-export.js.map +1 -1
  24. package/dist/tools/glossary-get.d.ts +2 -8
  25. package/dist/tools/glossary-get.d.ts.map +1 -1
  26. package/dist/tools/glossary-get.js +13 -24
  27. package/dist/tools/glossary-get.js.map +1 -1
  28. package/dist/tools/glossary-import.d.ts +2 -8
  29. package/dist/tools/glossary-import.d.ts.map +1 -1
  30. package/dist/tools/glossary-import.js +11 -28
  31. package/dist/tools/glossary-import.js.map +1 -1
  32. package/dist/tools/glossary-set.d.ts +2 -8
  33. package/dist/tools/glossary-set.d.ts.map +1 -1
  34. package/dist/tools/glossary-set.js +12 -24
  35. package/dist/tools/glossary-set.js.map +1 -1
  36. package/dist/tools/invitation-send.d.ts +2 -8
  37. package/dist/tools/invitation-send.d.ts.map +1 -1
  38. package/dist/tools/invitation-send.js +10 -25
  39. package/dist/tools/invitation-send.js.map +1 -1
  40. package/dist/tools/language-codes.d.ts +2 -8
  41. package/dist/tools/language-codes.d.ts.map +1 -1
  42. package/dist/tools/language-codes.js +19 -37
  43. package/dist/tools/language-codes.js.map +1 -1
  44. package/dist/tools/language-list.d.ts +2 -8
  45. package/dist/tools/language-list.d.ts.map +1 -1
  46. package/dist/tools/language-list.js +9 -19
  47. package/dist/tools/language-list.js.map +1 -1
  48. package/dist/tools/me.d.ts +2 -8
  49. package/dist/tools/me.d.ts.map +1 -1
  50. package/dist/tools/me.js +13 -20
  51. package/dist/tools/me.js.map +1 -1
  52. package/dist/tools/member-list.d.ts +2 -8
  53. package/dist/tools/member-list.d.ts.map +1 -1
  54. package/dist/tools/member-list.js +21 -21
  55. package/dist/tools/member-list.js.map +1 -1
  56. package/dist/tools/pr-raise.d.ts +2 -8
  57. package/dist/tools/pr-raise.d.ts.map +1 -1
  58. package/dist/tools/pr-raise.js +12 -25
  59. package/dist/tools/pr-raise.js.map +1 -1
  60. package/dist/tools/project-create.d.ts +2 -8
  61. package/dist/tools/project-create.d.ts.map +1 -1
  62. package/dist/tools/project-create.js +26 -34
  63. package/dist/tools/project-create.js.map +1 -1
  64. package/dist/tools/project-download.d.ts +3 -8
  65. package/dist/tools/project-download.d.ts.map +1 -1
  66. package/dist/tools/project-download.js +15 -21
  67. package/dist/tools/project-download.js.map +1 -1
  68. package/dist/tools/project-get.d.ts +2 -8
  69. package/dist/tools/project-get.d.ts.map +1 -1
  70. package/dist/tools/project-get.js +15 -23
  71. package/dist/tools/project-get.js.map +1 -1
  72. package/dist/tools/project-language-add.d.ts +2 -8
  73. package/dist/tools/project-language-add.d.ts.map +1 -1
  74. package/dist/tools/project-language-add.js +9 -20
  75. package/dist/tools/project-language-add.js.map +1 -1
  76. package/dist/tools/project-language-remove.d.ts +2 -8
  77. package/dist/tools/project-language-remove.d.ts.map +1 -1
  78. package/dist/tools/project-language-remove.js +9 -14
  79. package/dist/tools/project-language-remove.js.map +1 -1
  80. package/dist/tools/project-list.d.ts +2 -8
  81. package/dist/tools/project-list.d.ts.map +1 -1
  82. package/dist/tools/project-list.js +21 -28
  83. package/dist/tools/project-list.js.map +1 -1
  84. package/dist/tools/project-sync.d.ts +2 -8
  85. package/dist/tools/project-sync.d.ts.map +1 -1
  86. package/dist/tools/project-sync.js +12 -21
  87. package/dist/tools/project-sync.js.map +1 -1
  88. package/dist/tools/provider-tokens-list.d.ts +2 -8
  89. package/dist/tools/provider-tokens-list.d.ts.map +1 -1
  90. package/dist/tools/provider-tokens-list.js +10 -20
  91. package/dist/tools/provider-tokens-list.js.map +1 -1
  92. package/dist/tools/run-and-wait.d.ts +19 -0
  93. package/dist/tools/run-and-wait.d.ts.map +1 -0
  94. package/dist/tools/run-and-wait.js +99 -0
  95. package/dist/tools/run-and-wait.js.map +1 -0
  96. package/dist/tools/run.d.ts +2 -8
  97. package/dist/tools/run.d.ts.map +1 -1
  98. package/dist/tools/run.js +17 -31
  99. package/dist/tools/run.js.map +1 -1
  100. package/dist/tools/scan.d.ts.map +1 -1
  101. package/dist/tools/scan.js +4 -7
  102. package/dist/tools/scan.js.map +1 -1
  103. package/dist/tools/status.d.ts +2 -8
  104. package/dist/tools/status.d.ts.map +1 -1
  105. package/dist/tools/status.js +33 -19
  106. package/dist/tools/status.js.map +1 -1
  107. package/dist/tools/tm-export.d.ts +2 -8
  108. package/dist/tools/tm-export.d.ts.map +1 -1
  109. package/dist/tools/tm-export.js +6 -22
  110. package/dist/tools/tm-export.js.map +1 -1
  111. package/dist/tools/tm-get.d.ts +2 -8
  112. package/dist/tools/tm-get.d.ts.map +1 -1
  113. package/dist/tools/tm-get.js +21 -31
  114. package/dist/tools/tm-get.js.map +1 -1
  115. package/dist/tools/tm-set.d.ts +2 -8
  116. package/dist/tools/tm-set.d.ts.map +1 -1
  117. package/dist/tools/tm-set.js +14 -35
  118. package/dist/tools/tm-set.js.map +1 -1
  119. package/dist/utils/api.d.ts +6 -0
  120. package/dist/utils/api.d.ts.map +1 -0
  121. package/dist/utils/api.js +45 -0
  122. package/dist/utils/api.js.map +1 -0
  123. package/dist/utils/errors.d.ts +9 -0
  124. package/dist/utils/errors.d.ts.map +1 -0
  125. package/dist/utils/errors.js +84 -0
  126. package/dist/utils/errors.js.map +1 -0
  127. package/dist/utils/response.d.ts +8 -0
  128. package/dist/utils/response.d.ts.map +1 -0
  129. package/dist/utils/response.js +17 -0
  130. package/dist/utils/response.js.map +1 -0
  131. package/dist/utils/scan-strings.d.ts +1 -1
  132. package/dist/utils/scan-strings.d.ts.map +1 -1
  133. package/dist/utils/scan-strings.js +129 -51
  134. package/dist/utils/scan-strings.js.map +1 -1
  135. 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 = String(t.provider ?? '?');
13
- const createdAt = String(t.created_at ?? '?');
14
- const expiresAt = t.expires_at ? String(t.expires_at) : 'never';
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
- const message = err instanceof Object && err !== null && 'response' in err
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":"AAEA,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;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mGAAmG,EAAE,CAAC;aAChJ,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa,CAAC,uBAAuB,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;QACvE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;YAC9C,MAAM,SAAS,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,aAAa,SAAS,iBAAiB,SAAS,EAAE,CAAC,CAAC;QAC3F,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,qCAAqC,OAAO,EAAE,EAAE,CAAC;YAC1F,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
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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"}
@@ -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?: undefined;
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
@@ -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;AAEtC,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;;;;;;;;;;;;GA4CvE"}
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
- content: [
17
- {
18
- type: 'text',
19
- text: [
20
- `🚀 Babel translation run started!`,
21
- ``,
22
- ` Babel ID: ${babelId}`,
23
- ` Target languages: ${target_locales.join(', ')}`,
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
- const message = err instanceof Object && err !== null && 'response' in err
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
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/tools/run.ts"],"names":[],"mappings":"AASA,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAqB,EAAE,MAAiB;IACtE,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC;IAExE,IAAI,CAAC;QACH,MAAM,IAAI,GAA4B;YACpC,UAAU;YACV,cAAc;YACd,aAAa,EAAE,aAAa,IAAI,IAAI;YACpC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAE1D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA+B,CAAC;QACtD,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE,CAAW,CAAC;QAErD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,mCAAmC;wBACnC,EAAE;wBACF,eAAe,OAAO,EAAE;wBACxB,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;wBAClD,sBAAsB,aAAa,IAAI,IAAI,EAAE;wBAC7C,EAAE;wBACF,wCAAwC;qBACzC,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF;SACF,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,gCAAgC,OAAO,EAAE,EAAE,CAAC;YACrF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
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"}
@@ -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;;;;;;;;;;;;GAiElD"}
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"}
@@ -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) {
@@ -1 +1 @@
1
- {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/tools/scan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../src/tools/scan.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,7 @@ export declare function handleStatus(client: AxiosInstance, params: StatusParams
7
7
  type: "text";
8
8
  text: string;
9
9
  }[];
10
- isError?: undefined;
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;AAEtC,UAAU,YAAY;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY;;;;;;;;;;;;GAuC7E"}
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"}
@@ -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 ?? 'unknown';
7
- const completedAt = data.completed_at ?? null;
8
- const error = data.error ?? null;
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
- return {
21
- content: [{ type: 'text', text: lines.join('\n') }],
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
- const message = err instanceof Object && err !== null && 'response' in err
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
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/tools/status.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAqB,EAAE,MAAoB;IAC5E,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAE5B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,QAAQ,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,GAAG,QAAQ,CAAC,IAA+B,CAAC;QAEtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,IAAI,SAAS,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,YAAsB,IAAI,IAAI,CAAC;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,IAAI,IAAI,CAAC;QAE3C,MAAM,KAAK,GAAa;YACtB,wBAAwB,QAAQ,EAAE;YAClC,EAAE;YACF,aAAa,MAAM,EAAE;SACtB,CAAC;QAEF,IAAI,WAAW,EAAE,CAAC;YAChB,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC;QAClC,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,2BAA2B,OAAO,EAAE,EAAE,CAAC;YAChF,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
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?: undefined;
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;AAEtC,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc;;;;;;;;;;;;GA4BjF"}
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"}
@@ -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
- responseType: 'text',
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
- const message = err instanceof Object && err !== null && 'response' in err
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":"AAMA,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,MAAsB;IAChF,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC;IAE9B,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,aAAa,UAAU,YAAY,EAAE;YACrE,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEtF,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,4BAA4B,UAAU,KAAK,GAAG,CAAC,MAAM,eAAe,GAAG,EAAE;iBAChF;aACF;SACF,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"}
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"}
@@ -9,13 +9,7 @@ export declare function handleTmGet(client: AxiosInstance, params: TmGetParams):
9
9
  type: "text";
10
10
  text: string;
11
11
  }[];
12
- isError?: undefined;
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;AAEtC,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;;;;;;;;;;;;GA4C3E"}
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"}
@@ -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 query = new URLSearchParams();
5
- if (search)
6
- query.set('search', search);
7
- if (target_lang)
8
- query.set('target_lang', target_lang);
9
- const qs = query.toString();
10
- const url = `/projects/${project_id}/tm${qs ? `?${qs}` : ''}`;
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 = Array.isArray(response.data) ? response.data : [];
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
- `📚 Translation Memory (${entries.length} entries)${search ? ` matching "${search}"` : ''}:`,
19
+ `📄 Translation Memory (${entries.length} entries)${params.search ? ` matching "${params.search}"` : ''}:`,
20
20
  '',
21
21
  ];
22
- for (const e of entries) {
23
- const src = String(e.source_text ?? '?');
24
- const tgt = String(e.translated_text ?? '?');
25
- const srcLang = String(e.source_lang ?? '?');
26
- const tgtLang = String(e.target_lang ?? '?');
27
- lines.push(` • ${srcLang} → ${tgtLang}: "${src}" "${tgt}"`);
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
- const message = err instanceof Object && err !== null && 'response' in err
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
@@ -1 +1 @@
1
- {"version":3,"file":"tm-get.js","sourceRoot":"","sources":["../../src/tools/tm-get.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAqB,EAAE,MAAmB;IAC1E,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACpC,IAAI,MAAM;YAAE,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,WAAW;YAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC5B,MAAM,GAAG,GAAG,aAAa,UAAU,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC9D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAElE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,yCAAyC,EAAE,CAAC;aACtF,CAAC;QACJ,CAAC;QAED,MAAM,KAAK,GAAa;YACtB,0BAA0B,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG;YAC5F,EAAE;SACH,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,eAAe,IAAI,GAAG,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,MAAM,OAAO,MAAM,GAAG,QAAQ,GAAG,GAAG,CAAC,CAAC;QACjE,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,uCAAuC,OAAO,EAAE,EAAE,CAAC;YAC5F,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
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"}