@better-i18n/mcp 0.0.2 → 0.2.0
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/base-tool.d.ts +5 -1
- package/dist/base-tool.d.ts.map +1 -1
- package/dist/base-tool.js +16 -1
- package/dist/base-tool.js.map +1 -1
- package/dist/client.d.ts +6 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/index.js +25 -6
- package/dist/index.js.map +1 -1
- package/dist/tools/addLanguage.d.ts.map +1 -1
- package/dist/tools/addLanguage.js +2 -5
- package/dist/tools/addLanguage.js.map +1 -1
- package/dist/tools/createKeys.d.ts +1 -0
- package/dist/tools/createKeys.d.ts.map +1 -1
- package/dist/tools/createKeys.js +20 -35
- package/dist/tools/createKeys.js.map +1 -1
- package/dist/tools/deleteKeys.d.ts +9 -0
- package/dist/tools/deleteKeys.d.ts.map +1 -0
- package/dist/tools/deleteKeys.js +43 -0
- package/dist/tools/deleteKeys.js.map +1 -0
- package/dist/tools/getSync.d.ts +8 -0
- package/dist/tools/getSync.d.ts.map +1 -0
- package/dist/tools/getSync.js +28 -0
- package/dist/tools/getSync.js.map +1 -0
- package/dist/tools/getSyncs.d.ts +8 -0
- package/dist/tools/getSyncs.d.ts.map +1 -0
- package/dist/tools/getSyncs.js +47 -0
- package/dist/tools/getSyncs.js.map +1 -0
- package/dist/tools/listKeys.d.ts +1 -1
- package/dist/tools/listKeys.d.ts.map +1 -1
- package/dist/tools/listKeys.js +3 -7
- package/dist/tools/listKeys.js.map +1 -1
- package/dist/tools/listProjects.d.ts +0 -1
- package/dist/tools/listProjects.d.ts.map +1 -1
- package/dist/tools/listProjects.js +7 -20
- package/dist/tools/listProjects.js.map +1 -1
- package/dist/tools/updateKeys.d.ts +3 -1
- package/dist/tools/updateKeys.d.ts.map +1 -1
- package/dist/tools/updateKeys.js +28 -38
- package/dist/tools/updateKeys.js.map +1 -1
- package/dist/types/index.d.ts +15 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/base-tool.d.ts
CHANGED
|
@@ -35,9 +35,13 @@ export declare function success(data: Record<string, unknown>): ToolResult;
|
|
|
35
35
|
*/
|
|
36
36
|
export declare function error(message: string): ToolResult;
|
|
37
37
|
/**
|
|
38
|
-
* Wraps tool execution with common error handling
|
|
38
|
+
* Wraps tool execution with common error handling for project-scoped tools
|
|
39
39
|
*/
|
|
40
40
|
export declare function executeTool<T extends {
|
|
41
41
|
project: string;
|
|
42
42
|
}>(args: unknown, schema: z.ZodType<T>, handler: (input: T, parsed: ParsedProject) => Promise<ToolResult>): Promise<ToolResult>;
|
|
43
|
+
/**
|
|
44
|
+
* Wraps tool execution with common error handling for non-project tools
|
|
45
|
+
*/
|
|
46
|
+
export declare function executeSimpleTool<T>(args: unknown, schema: z.ZodType<T>, handler: (input: T) => Promise<ToolResult>): Promise<ToolResult>;
|
|
43
47
|
//# sourceMappingURL=base-tool.d.ts.map
|
package/dist/base-tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;CAMhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CASjE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAUjD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7D,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,UAAU,CAAC,GAChE,OAAO,CAAC,UAAU,CAAC,CAWrB"}
|
|
1
|
+
{"version":3,"file":"base-tool.d.ts","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAEnD;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;EAExB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;CAMhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,UAAU,CASjE;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAUjD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,EAC7D,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,UAAU,CAAC,GAChE,OAAO,CAAC,UAAU,CAAC,CAWrB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,GACzC,OAAO,CAAC,UAAU,CAAC,CAUrB"}
|
package/dist/base-tool.js
CHANGED
|
@@ -49,7 +49,7 @@ export function error(message) {
|
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
51
|
/**
|
|
52
|
-
* Wraps tool execution with common error handling
|
|
52
|
+
* Wraps tool execution with common error handling for project-scoped tools
|
|
53
53
|
*/
|
|
54
54
|
export async function executeTool(args, schema, handler) {
|
|
55
55
|
try {
|
|
@@ -64,4 +64,19 @@ export async function executeTool(args, schema, handler) {
|
|
|
64
64
|
return error(err instanceof Error ? err.message : String(err));
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* Wraps tool execution with common error handling for non-project tools
|
|
69
|
+
*/
|
|
70
|
+
export async function executeSimpleTool(args, schema, handler) {
|
|
71
|
+
try {
|
|
72
|
+
const input = schema.parse(args);
|
|
73
|
+
return await handler(input);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (err instanceof z.ZodError) {
|
|
77
|
+
return error(`Validation error: ${err.errors.map(e => e.message).join(", ")}`);
|
|
78
|
+
}
|
|
79
|
+
return error(err instanceof Error ? err.message : String(err));
|
|
80
|
+
}
|
|
81
|
+
}
|
|
67
82
|
//# sourceMappingURL=base-tool.js.map
|
package/dist/base-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-tool.js","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,WAAW,EACT,6HAA6H;KAChI;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,MAAoB,EACpB,OAAiE;IAEjE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"base-tool.js","sourceRoot":"","sources":["../src/base-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAsB,MAAM,cAAc,CAAC;AAGhE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC3B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,EAAE;QACP,IAAI,EAAE,QAAiB;QACvB,WAAW,EACT,6HAA6H;KAChI;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,OAAO,CAAC,IAA6B;IACnD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;aACpC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO;aACd;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAa,EACb,MAAoB,EACpB,OAAiE;IAEjE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,IAAa,EACb,MAAoB,EACpB,OAA0C;IAE1C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,MAAM,OAAO,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,qBAAqB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -6,6 +6,12 @@ export interface ClientConfig {
|
|
|
6
6
|
apiKey: string;
|
|
7
7
|
debug?: boolean;
|
|
8
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Loosely typed client for MCP server usage.
|
|
11
|
+
* The MCP package runs standalone without API router types,
|
|
12
|
+
* so we allow arbitrary nested property access on the tRPC client.
|
|
13
|
+
*/
|
|
14
|
+
export type BetterI18nClient = Record<string, any>;
|
|
9
15
|
/**
|
|
10
16
|
* Create a tRPC client authenticated with API key
|
|
11
17
|
*
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,GAAG;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,0CAmEnD"}
|
package/dist/client.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* tRPC client for Better i18n API with API key authentication
|
|
3
3
|
*/
|
|
4
|
-
import { createTRPCClient, httpBatchLink } from "@trpc/client";
|
|
4
|
+
import { createTRPCClient, httpBatchLink, } from "@trpc/client";
|
|
5
5
|
/**
|
|
6
6
|
* Create a tRPC client authenticated with API key
|
|
7
7
|
*
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,gBAAgB,EAChB,aAAa,GACd,MAAM,cAAc,CAAC;AAoBtB;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CACpC,MAAkD;IAElD,mDAAmD;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC;QAC7C,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC;IAEnD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,gGAAgG;IAChG,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,OAAO,gBAAgB,CAAgB;QACrC,KAAK,EAAE;YACL,aAAa,CAAC;gBACZ,GAAG;gBACH,OAAO,EAAE,GAAG,EAAE;oBACZ,MAAM,OAAO,GAA2B;wBACtC,WAAW,EAAE,MAAM,CAAC,MAAM;qBAC3B,CAAC;oBACF,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;wBAC1B,OAAO,CAAC,mBAAmB,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC;oBACvD,CAAC;oBACD,OAAO,OAAO,CAAC;gBACjB,CAAC;gBACD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;oBAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;oBAE/B,oFAAoF;oBACpF,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;wBAC/C,aAAa,GAAG,QAAQ,CAAC;wBAEzB,sCAAsC;wBACtC,IAAI,CAAC;4BACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;4BACpC,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;4BACtD,OAAO,CAAC,KAAK,CAAC,mBAAmB,SAAS,EAAE,CAAC,CAAC;wBAChD,CAAC;wBAAC,MAAM,CAAC;4BACP,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,EAAE,CAAC,CAAC;wBAC/C,CAAC;oBACH,CAAC;oBAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAE1C,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;wBAC/C,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;4BAChB,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;wBACzD,CAAC;6BAAM,CAAC;4BACN,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;4BACxC,IAAI,CAAC;gCACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;gCACzC,OAAO,CAAC,KAAK,CACX,mBAAmB,QAAQ,CAAC,MAAM,WAAW,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CACtE,CAAC;4BACJ,CAAC;4BAAC,MAAM,CAAC;gCACP,OAAO,CAAC,KAAK,CAAC,mBAAmB,QAAQ,CAAC,MAAM,QAAQ,CAAC,CAAC;4BAC5D,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,OAAO,QAAQ,CAAC;gBAClB,CAAC;aACF,CAAC;SACH;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,7 +12,10 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
|
|
|
12
12
|
import { createBetterI18nClient } from "./client.js";
|
|
13
13
|
import { addLanguage } from "./tools/addLanguage.js";
|
|
14
14
|
import { createKeys } from "./tools/createKeys.js";
|
|
15
|
+
import { deleteKeys } from "./tools/deleteKeys.js";
|
|
15
16
|
import { getProject } from "./tools/getProject.js";
|
|
17
|
+
import { getSync } from "./tools/getSync.js";
|
|
18
|
+
import { getSyncs } from "./tools/getSyncs.js";
|
|
16
19
|
import { listKeys } from "./tools/listKeys.js";
|
|
17
20
|
import { listProjects } from "./tools/listProjects.js";
|
|
18
21
|
import { updateKeys } from "./tools/updateKeys.js";
|
|
@@ -62,31 +65,47 @@ class BetterI18nServer {
|
|
|
62
65
|
listKeys.definition,
|
|
63
66
|
createKeys.definition,
|
|
64
67
|
updateKeys.definition,
|
|
68
|
+
deleteKeys.definition,
|
|
69
|
+
getSyncs.definition,
|
|
70
|
+
getSync.definition,
|
|
65
71
|
],
|
|
66
72
|
}));
|
|
67
73
|
// Execute tools
|
|
68
74
|
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
69
75
|
const { name, arguments: args } = request.params;
|
|
76
|
+
if (!this.apiClient) {
|
|
77
|
+
throw new Error("API client not initialized. Call init() first.");
|
|
78
|
+
}
|
|
79
|
+
const client = this.apiClient;
|
|
70
80
|
try {
|
|
71
81
|
let result;
|
|
72
82
|
switch (name) {
|
|
73
83
|
case "listProjects":
|
|
74
|
-
result = await listProjects.execute(
|
|
84
|
+
result = await listProjects.execute(client, args);
|
|
75
85
|
break;
|
|
76
86
|
case "getProject":
|
|
77
|
-
result = await getProject.execute(
|
|
87
|
+
result = await getProject.execute(client, args);
|
|
78
88
|
break;
|
|
79
89
|
case "addLanguage":
|
|
80
|
-
result = await addLanguage.execute(
|
|
90
|
+
result = await addLanguage.execute(client, args);
|
|
81
91
|
break;
|
|
82
92
|
case "listKeys":
|
|
83
|
-
result = await listKeys.execute(
|
|
93
|
+
result = await listKeys.execute(client, args);
|
|
84
94
|
break;
|
|
85
95
|
case "createKeys":
|
|
86
|
-
result = await createKeys.execute(
|
|
96
|
+
result = await createKeys.execute(client, args);
|
|
87
97
|
break;
|
|
88
98
|
case "updateKeys":
|
|
89
|
-
result = await updateKeys.execute(
|
|
99
|
+
result = await updateKeys.execute(client, args);
|
|
100
|
+
break;
|
|
101
|
+
case "deleteKeys":
|
|
102
|
+
result = await deleteKeys.execute(client, args);
|
|
103
|
+
break;
|
|
104
|
+
case "getSyncs":
|
|
105
|
+
result = await getSyncs.execute(client, args);
|
|
106
|
+
break;
|
|
107
|
+
case "getSync":
|
|
108
|
+
result = await getSync.execute(client, args);
|
|
90
109
|
break;
|
|
91
110
|
default:
|
|
92
111
|
throw new Error(`Unknown tool: ${name}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;GAMG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,gBAAgB;IACZ,MAAM,CAAS;IACf,SAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addLanguage.d.ts","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"addLanguage.d.ts","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,WAAW,EAAE,IA+BzB,CAAC"}
|
|
@@ -11,15 +11,12 @@ const inputSchema = projectSchema.extend({
|
|
|
11
11
|
export const addLanguage = {
|
|
12
12
|
definition: {
|
|
13
13
|
name: "addLanguage",
|
|
14
|
-
description: "Add a new target language to the project
|
|
14
|
+
description: "Add a new target language to the project. Use ISO 639-1 codes (e.g. 'fr', 'ja', 'de', 'es').",
|
|
15
15
|
inputSchema: {
|
|
16
16
|
type: "object",
|
|
17
17
|
properties: {
|
|
18
18
|
...projectInputProperty,
|
|
19
|
-
languageCode: {
|
|
20
|
-
type: "string",
|
|
21
|
-
description: "ISO 639-1 language code (e.g., 'fr', 'ja', 'de', 'es')",
|
|
22
|
-
},
|
|
19
|
+
languageCode: { type: "string" },
|
|
23
20
|
},
|
|
24
21
|
required: ["project", "languageCode"],
|
|
25
22
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addLanguage.js","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"addLanguage.js","sourceRoot":"","sources":["../../src/tools/addLanguage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACvC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,WAAW,GAAS;IAC/B,UAAU,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,8FAA8F;QAChG,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aACjC;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,cAAc,CAAC;SACtC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;YACjD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,YAAY,EAAE,KAAK,CAAC,YAAY;SACjC,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,aAAa,EAAE,MAAM,CAAC,aAAa;SACpC,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* createKeys MCP Tool
|
|
3
3
|
*
|
|
4
4
|
* Creates one or more translation keys with source text and optional translations.
|
|
5
|
+
* Compact schema: k=[{n, ns, v, t}] — direct pass-through to API.
|
|
5
6
|
*/
|
|
6
7
|
import type { Tool } from "../types/index.js";
|
|
7
8
|
export declare const createKeys: Tool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createKeys.d.ts","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createKeys.d.ts","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAa9C,eAAO,MAAM,UAAU,EAAE,IAmDxB,CAAC"}
|
package/dist/tools/createKeys.js
CHANGED
|
@@ -2,68 +2,53 @@
|
|
|
2
2
|
* createKeys MCP Tool
|
|
3
3
|
*
|
|
4
4
|
* Creates one or more translation keys with source text and optional translations.
|
|
5
|
+
* Compact schema: k=[{n, ns, v, t}] — direct pass-through to API.
|
|
5
6
|
*/
|
|
6
7
|
import { z } from "zod";
|
|
7
8
|
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
9
|
const inputSchema = projectSchema.extend({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
10
|
+
k: z.array(z.object({
|
|
11
|
+
n: z.string(),
|
|
12
|
+
ns: z.string().optional(),
|
|
13
|
+
v: z.string().optional(),
|
|
14
|
+
t: z.record(z.string(), z.string()).optional(),
|
|
14
15
|
})),
|
|
15
16
|
});
|
|
16
17
|
export const createKeys = {
|
|
17
18
|
definition: {
|
|
18
19
|
name: "createKeys",
|
|
19
|
-
description: "Create
|
|
20
|
+
description: "Create translation keys. k=[{n: key name, ns: namespace, v: source text, t: {langCode: text} target translations}]. Don't include source language in t, it goes in v.",
|
|
20
21
|
inputSchema: {
|
|
21
22
|
type: "object",
|
|
22
23
|
properties: {
|
|
23
24
|
...projectInputProperty,
|
|
24
|
-
|
|
25
|
+
k: {
|
|
25
26
|
type: "array",
|
|
26
|
-
description: "Array of translation keys to create",
|
|
27
27
|
items: {
|
|
28
28
|
type: "object",
|
|
29
29
|
properties: {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
},
|
|
34
|
-
namespace: {
|
|
35
|
-
type: "string",
|
|
36
|
-
description: "Namespace for the key. Defaults to 'default'.",
|
|
37
|
-
},
|
|
38
|
-
sourceText: {
|
|
39
|
-
type: "string",
|
|
40
|
-
description: "Source text in default language (usually English)",
|
|
41
|
-
},
|
|
42
|
-
translations: {
|
|
43
|
-
type: "object",
|
|
44
|
-
description: "Translations for target languages. Keys are language codes, values are translated text.",
|
|
45
|
-
},
|
|
30
|
+
n: { type: "string" },
|
|
31
|
+
ns: { type: "string" },
|
|
32
|
+
v: { type: "string" },
|
|
33
|
+
t: { type: "object" },
|
|
46
34
|
},
|
|
47
|
-
required: ["
|
|
35
|
+
required: ["n"],
|
|
48
36
|
},
|
|
49
37
|
},
|
|
50
38
|
},
|
|
51
|
-
required: ["project", "
|
|
39
|
+
required: ["project", "k"],
|
|
52
40
|
},
|
|
53
41
|
},
|
|
54
42
|
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
55
|
-
// Map to compact format expected by API
|
|
56
|
-
// k: array of keys { n, ns, v, t }
|
|
57
|
-
const compactKeys = input.keys.map((k) => ({
|
|
58
|
-
n: k.key,
|
|
59
|
-
ns: k.namespace || "default",
|
|
60
|
-
v: k.sourceText,
|
|
61
|
-
t: k.translations,
|
|
62
|
-
}));
|
|
63
43
|
const result = await client.mcp.createKeys.mutate({
|
|
64
44
|
orgSlug: workspaceId,
|
|
65
45
|
projectSlug,
|
|
66
|
-
k:
|
|
46
|
+
k: input.k.map((item) => ({
|
|
47
|
+
n: item.n,
|
|
48
|
+
ns: item.ns || "default",
|
|
49
|
+
v: item.v,
|
|
50
|
+
t: item.t,
|
|
51
|
+
})),
|
|
67
52
|
});
|
|
68
53
|
return success({
|
|
69
54
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createKeys.js","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"createKeys.js","sourceRoot":"","sources":["../../src/tools/createKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,KAAK,CACR,CAAC,CAAC,MAAM,CAAC;QACP,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QACb,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACxB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KAC/C,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,uKAAuK;QACzK,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,CAAC,EAAE;oBACD,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACrB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACtB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACrB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACtB;wBACD,QAAQ,EAAE,CAAC,GAAG,CAAC;qBAChB;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC;SAC3B;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS;gBACxB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,CAAC,EAAE,IAAI,CAAC,CAAC;aACV,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC,CACF;CACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deleteKeys MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Soft-deletes translation keys by marking them with a deletedAt timestamp.
|
|
5
|
+
* Keys are permanently removed on the next publish.
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool } from "../types/index.js";
|
|
8
|
+
export declare const deleteKeys: Tool;
|
|
9
|
+
//# sourceMappingURL=deleteKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteKeys.d.ts","sourceRoot":"","sources":["../../src/tools/deleteKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,UAAU,EAAE,IAkCxB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* deleteKeys MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Soft-deletes translation keys by marking them with a deletedAt timestamp.
|
|
5
|
+
* Keys are permanently removed on the next publish.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
9
|
+
const inputSchema = projectSchema.extend({
|
|
10
|
+
keyIds: z.array(z.string().uuid()).min(1).max(100),
|
|
11
|
+
});
|
|
12
|
+
export const deleteKeys = {
|
|
13
|
+
definition: {
|
|
14
|
+
name: "deleteKeys",
|
|
15
|
+
description: "Soft-delete translation keys by UUID. Keys are marked for deletion and removed from CDN/GitHub on next publish. Get UUIDs from listKeys.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
...projectInputProperty,
|
|
20
|
+
keyIds: {
|
|
21
|
+
type: "array",
|
|
22
|
+
items: { type: "string" },
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
required: ["project", "keyIds"],
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
29
|
+
const result = await client.mcp.deleteKeys.mutate({
|
|
30
|
+
orgSlug: workspaceId,
|
|
31
|
+
projectSlug,
|
|
32
|
+
keyIds: input.keyIds,
|
|
33
|
+
});
|
|
34
|
+
return success({
|
|
35
|
+
success: true,
|
|
36
|
+
project: input.project,
|
|
37
|
+
markedCount: result.markedCount,
|
|
38
|
+
marked: result.marked,
|
|
39
|
+
skipped: result.skipped,
|
|
40
|
+
});
|
|
41
|
+
}),
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=deleteKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteKeys.js","sourceRoot":"","sources":["../../src/tools/deleteKeys.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACnD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,0IAA0I;QAC5I,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,MAAM,EAAE;oBACN,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC;SAChC;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSync.d.ts","sourceRoot":"","sources":["../../src/tools/getSync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAM9C,eAAO,MAAM,OAAO,EAAE,IAmBrB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* getSync MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Get detailed information about a specific sync operation.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { executeSimpleTool, success } from "../base-tool.js";
|
|
8
|
+
const inputSchema = z.object({
|
|
9
|
+
syncId: z.string(),
|
|
10
|
+
});
|
|
11
|
+
export const getSync = {
|
|
12
|
+
definition: {
|
|
13
|
+
name: "getSync",
|
|
14
|
+
description: "Get details about a specific sync operation including logs and affected keys. Use syncId from getSyncs response.",
|
|
15
|
+
inputSchema: {
|
|
16
|
+
type: "object",
|
|
17
|
+
properties: {
|
|
18
|
+
syncId: { type: "string" },
|
|
19
|
+
},
|
|
20
|
+
required: ["syncId"],
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
execute: (client, args) => executeSimpleTool(args, inputSchema, async (input) => {
|
|
24
|
+
const result = await client.mcp.getSync.query({ syncId: input.syncId });
|
|
25
|
+
return success(result);
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=getSync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSync.js","sourceRoot":"","sources":["../../src/tools/getSync.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG7D,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;CACnB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAS;IAC3B,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EACT,kHAAkH;QACpH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC3B;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QACnD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSyncs.d.ts","sourceRoot":"","sources":["../../src/tools/getSyncs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAU9C,eAAO,MAAM,QAAQ,EAAE,IAkCtB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* getSyncs MCP Tool
|
|
3
|
+
*
|
|
4
|
+
* Lists recent sync operations for a project.
|
|
5
|
+
*/
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
|
+
const inputSchema = projectSchema.extend({
|
|
9
|
+
limit: z.number().min(1).max(50).optional(),
|
|
10
|
+
status: z.enum(["pending", "in_progress", "completed", "failed"]).optional(),
|
|
11
|
+
type: z
|
|
12
|
+
.enum(["initial_import", "source_sync", "cdn_upload", "publish_batch"])
|
|
13
|
+
.optional(),
|
|
14
|
+
});
|
|
15
|
+
export const getSyncs = {
|
|
16
|
+
definition: {
|
|
17
|
+
name: "getSyncs",
|
|
18
|
+
description: "List recent sync operations for a project. Returns sync jobs with status, type, and timing. Use to check if syncs succeeded or failed.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
...projectInputProperty,
|
|
23
|
+
limit: { type: "number" },
|
|
24
|
+
status: {
|
|
25
|
+
type: "string",
|
|
26
|
+
enum: ["pending", "in_progress", "completed", "failed"],
|
|
27
|
+
},
|
|
28
|
+
type: {
|
|
29
|
+
type: "string",
|
|
30
|
+
enum: ["initial_import", "source_sync", "cdn_upload", "publish_batch"],
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
required: ["project"],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
37
|
+
const result = await client.mcp.getSyncs.query({
|
|
38
|
+
orgSlug: workspaceId,
|
|
39
|
+
projectSlug,
|
|
40
|
+
limit: input.limit,
|
|
41
|
+
status: input.status,
|
|
42
|
+
type: input.type,
|
|
43
|
+
});
|
|
44
|
+
return success(result);
|
|
45
|
+
}),
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=getSyncs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getSyncs.js","sourceRoot":"","sources":["../../src/tools/getSyncs.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC3C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5E,IAAI,EAAE,CAAC;SACJ,IAAI,CAAC,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC,CAAC;SACtE,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,wIAAwI;QAC1I,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,CAAC;iBACxD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,CAAC;iBACvE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC7C,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;SACjB,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
package/dist/tools/listKeys.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* listKeys MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Lists ALL translation keys
|
|
4
|
+
* Lists ALL translation keys with source text and translations.
|
|
5
5
|
*/
|
|
6
6
|
import type { Tool } from "../types/index.js";
|
|
7
7
|
export declare const listKeys: Tool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listKeys.d.ts","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAO9C,eAAO,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"listKeys.d.ts","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAO9C,eAAO,MAAM,QAAQ,EAAE,IA6BtB,CAAC"}
|
package/dist/tools/listKeys.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* listKeys MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Lists ALL translation keys
|
|
4
|
+
* Lists ALL translation keys with source text and translations.
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
@@ -12,19 +12,15 @@ const inputSchema = projectSchema.extend({
|
|
|
12
12
|
export const listKeys = {
|
|
13
13
|
definition: {
|
|
14
14
|
name: "listKeys",
|
|
15
|
-
description: "Get all translation keys with their source text and translations. Returns ALL keys in a single response. Use 'namespaces' to filter by namespace or 'search' to
|
|
15
|
+
description: "Get all translation keys with their id, source text, and translations. Returns ALL keys in a single response. Use 'namespaces' to filter by namespace or 'search' to find keys by name.",
|
|
16
16
|
inputSchema: {
|
|
17
17
|
type: "object",
|
|
18
18
|
properties: {
|
|
19
19
|
...projectInputProperty,
|
|
20
|
-
search: {
|
|
21
|
-
type: "string",
|
|
22
|
-
description: "Search term to find in key names or source text.",
|
|
23
|
-
},
|
|
20
|
+
search: { type: "string" },
|
|
24
21
|
namespaces: {
|
|
25
22
|
type: "array",
|
|
26
23
|
items: { type: "string" },
|
|
27
|
-
description: "Filter by specific namespaces (e.g., ['nav', 'home']).",
|
|
28
24
|
},
|
|
29
25
|
},
|
|
30
26
|
required: ["project"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listKeys.js","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"listKeys.js","sourceRoot":"","sources":["../../src/tools/listKeys.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,QAAQ,GAAS;IAC5B,UAAU,EAAE;QACV,IAAI,EAAE,UAAU;QAChB,WAAW,EACT,yLAAyL;QAC3L,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBAC1B,UAAU,EAAE;oBACV,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBAC1B;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC3E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACvD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* listProjects MCP Tool
|
|
3
3
|
*
|
|
4
4
|
* Lists all projects the user has access to across all organizations.
|
|
5
|
-
* Use this tool FIRST to discover available projects before other operations.
|
|
6
5
|
*/
|
|
7
6
|
import type { Tool } from "../types/index.js";
|
|
8
7
|
export declare const listProjects: Tool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listProjects.d.ts","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"listProjects.d.ts","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAK9C,eAAO,MAAM,YAAY,EAAE,IAgB1B,CAAC"}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* listProjects MCP Tool
|
|
3
3
|
*
|
|
4
4
|
* Lists all projects the user has access to across all organizations.
|
|
5
|
-
* Use this tool FIRST to discover available projects before other operations.
|
|
6
5
|
*/
|
|
7
|
-
import { success } from "../base-tool.js";
|
|
6
|
+
import { executeSimpleTool, success } from "../base-tool.js";
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
const inputSchema = z.object({});
|
|
8
9
|
export const listProjects = {
|
|
9
10
|
definition: {
|
|
10
11
|
name: "listProjects",
|
|
@@ -12,25 +13,11 @@ export const listProjects = {
|
|
|
12
13
|
inputSchema: {
|
|
13
14
|
type: "object",
|
|
14
15
|
properties: {},
|
|
15
|
-
required: [],
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
|
-
execute:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
catch (err) {
|
|
24
|
-
return {
|
|
25
|
-
content: [
|
|
26
|
-
{
|
|
27
|
-
type: "text",
|
|
28
|
-
text: `Error listing projects: ${err instanceof Error ? err.message : String(err)}`,
|
|
29
|
-
},
|
|
30
|
-
],
|
|
31
|
-
isError: true,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
},
|
|
18
|
+
execute: (client, args) => executeSimpleTool(args, inputSchema, async () => {
|
|
19
|
+
const result = await client.mcp.listProjects.query();
|
|
20
|
+
return success(result);
|
|
21
|
+
}),
|
|
35
22
|
};
|
|
36
23
|
//# sourceMappingURL=listProjects.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listProjects.js","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"listProjects.js","sourceRoot":"","sources":["../../src/tools/listProjects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEjC,MAAM,CAAC,MAAM,YAAY,GAAS;IAChC,UAAU,EAAE;QACV,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gHAAgH;QAClH,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;SACf;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,iBAAiB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC;CACL,CAAC"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* updateKeys MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Updates translations for one or more keys
|
|
4
|
+
* Updates source text and/or target translations for one or more keys.
|
|
5
|
+
* Compact schema: t=[{k, ns, l, t, s, st}] — direct pass-through to API.
|
|
6
|
+
* Each entry = one language update for one key. s=true for source text.
|
|
5
7
|
*/
|
|
6
8
|
import type { Tool } from "../types/index.js";
|
|
7
9
|
export declare const updateKeys: Tool;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"updateKeys.d.ts","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAe9C,eAAO,MAAM,UAAU,EAAE,IAuDxB,CAAC"}
|
package/dist/tools/updateKeys.js
CHANGED
|
@@ -1,71 +1,61 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* updateKeys MCP Tool
|
|
3
3
|
*
|
|
4
|
-
* Updates translations for one or more keys
|
|
4
|
+
* Updates source text and/or target translations for one or more keys.
|
|
5
|
+
* Compact schema: t=[{k, ns, l, t, s, st}] — direct pass-through to API.
|
|
6
|
+
* Each entry = one language update for one key. s=true for source text.
|
|
5
7
|
*/
|
|
6
8
|
import { z } from "zod";
|
|
7
9
|
import { executeTool, projectInputProperty, projectSchema, success, } from "../base-tool.js";
|
|
8
10
|
const inputSchema = projectSchema.extend({
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
t: z.array(z.object({
|
|
12
|
+
k: z.string(),
|
|
13
|
+
ns: z.string().optional(),
|
|
14
|
+
l: z.string(),
|
|
15
|
+
t: z.string(),
|
|
16
|
+
s: z.boolean().optional(),
|
|
17
|
+
st: z.string().optional(),
|
|
13
18
|
})),
|
|
14
19
|
});
|
|
15
20
|
export const updateKeys = {
|
|
16
21
|
definition: {
|
|
17
22
|
name: "updateKeys",
|
|
18
|
-
description: "Update translations
|
|
23
|
+
description: "Update translations. Each entry in t updates ONE language for ONE key. t=[{k: key name, ns: namespace, l: language code, t: new text, s: true for source text update, st: status}].",
|
|
19
24
|
inputSchema: {
|
|
20
25
|
type: "object",
|
|
21
26
|
properties: {
|
|
22
27
|
...projectInputProperty,
|
|
23
|
-
|
|
28
|
+
t: {
|
|
24
29
|
type: "array",
|
|
25
|
-
description: "Array of translation updates",
|
|
26
30
|
items: {
|
|
27
31
|
type: "object",
|
|
28
32
|
properties: {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
},
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
description: "Namespace for the key. Defaults to 'default'.",
|
|
36
|
-
},
|
|
37
|
-
translations: {
|
|
38
|
-
type: "object",
|
|
39
|
-
description: "Translations to update. Keys are language codes, values are translated text. Include source language to update sourceText.",
|
|
40
|
-
},
|
|
33
|
+
k: { type: "string" },
|
|
34
|
+
ns: { type: "string" },
|
|
35
|
+
l: { type: "string" },
|
|
36
|
+
t: { type: "string" },
|
|
37
|
+
s: { type: "boolean" },
|
|
38
|
+
st: { type: "string" },
|
|
41
39
|
},
|
|
42
|
-
required: ["
|
|
40
|
+
required: ["k", "l", "t"],
|
|
43
41
|
},
|
|
44
42
|
},
|
|
45
43
|
},
|
|
46
|
-
required: ["project", "
|
|
44
|
+
required: ["project", "t"],
|
|
47
45
|
},
|
|
48
46
|
},
|
|
49
47
|
execute: (client, args) => executeTool(args, inputSchema, async (input, { workspaceId, projectSlug }) => {
|
|
50
|
-
// Flatten and map to compact format expected by API
|
|
51
|
-
// t: array of updates { k, n, ns, l, t, s }
|
|
52
|
-
const compactUpdates = [];
|
|
53
|
-
for (const k of input.keys) {
|
|
54
|
-
for (const [lang, text] of Object.entries(k.translations)) {
|
|
55
|
-
compactUpdates.push({
|
|
56
|
-
k: k.key, // Identifier
|
|
57
|
-
n: k.key, // Name
|
|
58
|
-
ns: k.namespace || "default",
|
|
59
|
-
l: lang,
|
|
60
|
-
t: text,
|
|
61
|
-
s: false, // Let API detect if this is source language via code match
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
48
|
const result = await client.mcp.updateKeys.mutate({
|
|
66
49
|
orgSlug: workspaceId,
|
|
67
50
|
projectSlug,
|
|
68
|
-
t:
|
|
51
|
+
t: input.t.map((item) => ({
|
|
52
|
+
k: item.k,
|
|
53
|
+
ns: item.ns || "default",
|
|
54
|
+
l: item.l,
|
|
55
|
+
t: item.t,
|
|
56
|
+
s: item.s,
|
|
57
|
+
st: item.st,
|
|
58
|
+
})),
|
|
69
59
|
});
|
|
70
60
|
return success({
|
|
71
61
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"updateKeys.js","sourceRoot":"","sources":["../../src/tools/updateKeys.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,aAAa,EACb,OAAO,GACR,MAAM,iBAAiB,CAAC;AAGzB,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,CAAC;IACvC,CAAC,EAAE,CAAC,CAAC,KAAK,CACR,CAAC,CAAC,MAAM,CAAC;QACP,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QACb,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACzB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QACb,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;QACb,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QACzB,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC1B,CAAC,CACH;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,UAAU,EAAE;QACV,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,qLAAqL;QACvL,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,oBAAoB;gBACvB,CAAC,EAAE;oBACD,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,UAAU,EAAE;4BACV,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACrB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACtB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACrB,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;4BACrB,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;4BACtB,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;yBACvB;wBACD,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;qBAC1B;iBACF;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,CAAC;SAC3B;KACF;IAED,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,CACxB,WAAW,CACT,IAAI,EACJ,WAAW,EACX,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YAChD,OAAO,EAAE,WAAW;YACpB,WAAW;YACX,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACxB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,EAAE,EAAE,IAAI,CAAC,EAAE,IAAI,SAAS;gBACxB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,EAAE,EAAE,IAAI,CAAC,EAAE;aACZ,CAAC,CAAC;SACJ,CAAC,CAAC;QAEH,OAAO,OAAO,CAAC;YACb,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC,CACF;CACJ,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -4,12 +4,22 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* MCP Tool definition
|
|
6
6
|
*/
|
|
7
|
+
/** JSON Schema property definition */
|
|
8
|
+
interface JsonSchemaProperty {
|
|
9
|
+
type: string;
|
|
10
|
+
description?: string;
|
|
11
|
+
enum?: string[];
|
|
12
|
+
items?: JsonSchemaProperty;
|
|
13
|
+
properties?: Record<string, JsonSchemaProperty>;
|
|
14
|
+
required?: string[];
|
|
15
|
+
default?: unknown;
|
|
16
|
+
}
|
|
7
17
|
export interface ToolDefinition {
|
|
8
18
|
name: string;
|
|
9
19
|
description: string;
|
|
10
20
|
inputSchema: {
|
|
11
21
|
type: "object";
|
|
12
|
-
properties: Record<string,
|
|
22
|
+
properties: Record<string, JsonSchemaProperty>;
|
|
13
23
|
required?: string[];
|
|
14
24
|
};
|
|
15
25
|
}
|
|
@@ -27,11 +37,14 @@ export interface ToolResult {
|
|
|
27
37
|
isError?: boolean;
|
|
28
38
|
[key: string]: unknown;
|
|
29
39
|
}
|
|
40
|
+
/** API client type for MCP tools */
|
|
41
|
+
import type { BetterI18nClient } from "../client.js";
|
|
30
42
|
/**
|
|
31
43
|
* MCP Tool implementation
|
|
32
44
|
*/
|
|
33
45
|
export interface Tool {
|
|
34
46
|
definition: ToolDefinition;
|
|
35
|
-
execute: (client:
|
|
47
|
+
execute: (client: BetterI18nClient, args: unknown) => Promise<ToolResult>;
|
|
36
48
|
}
|
|
49
|
+
export {};
|
|
37
50
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,sCAAsC;AACtC,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAC/C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,UAAU,CAAC;QACpC,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,oCAAoC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,cAAc,CAAC;IAC3B,OAAO,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC3E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@better-i18n/mcp",
|
|
3
|
-
"version": "0.0
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "MCP server for Better i18n translation management - AI-powered translation workflow for Cursor, Claude, and other AI assistants",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"dev": "bun run src/index.ts",
|
|
45
45
|
"typecheck": "tsc --noEmit",
|
|
46
46
|
"clean": "rm -rf dist",
|
|
47
|
-
"prepublishOnly": "npm run clean && npm run build"
|
|
47
|
+
"prepublishOnly": "npm run clean && npm run build && chmod +x ./dist/index.js"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
50
|
"@modelcontextprotocol/sdk": "^1.0.4",
|