@intlayer/mcp 8.9.4 → 8.9.6-canary.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.
@@ -1,7 +1,7 @@
1
+ import { createMCPClient } from "@ai-sdk/mcp";
1
2
  import { dirname as dirname$1 } from "node:path";
2
3
  import { fileURLToPath } from "node:url";
3
4
  import { isESModule } from "@intlayer/config/utils";
4
- import { createMCPClient } from "/Users/aymericpineau/Documents/intlayer_/node_modules/.bun/@ai-sdk+mcp@1.0.41+68a1e3a0c4588df3/node_modules/@ai-sdk/mcp/dist/index.mjs";
5
5
 
6
6
  //#region src/client/client.ts
7
7
  const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
@@ -1,4 +1,4 @@
1
- import { createMCPClient } from "/Users/aymericpineau/Documents/intlayer_/node_modules/.bun/@ai-sdk+mcp@1.0.41+68a1e3a0c4588df3/node_modules/@ai-sdk/mcp/dist/index.mjs";
1
+ import { createMCPClient } from "@ai-sdk/mcp";
2
2
 
3
3
  //#region src/client/sse.ts
4
4
  const main = async () => {
@@ -1,12 +1,12 @@
1
- import { loadAPITools } from "../tools/api.mjs";
2
1
  import { loadCLITools } from "../tools/cli.mjs";
3
- import { loadDocsTools } from "../tools/docs.mjs";
2
+ import { loadAPITools } from "../tools/api.mjs";
4
3
  import { loadInstallSkillsTool } from "../tools/installSkills.mjs";
5
- import { readFileSync } from "node:fs";
4
+ import { loadDocsTools } from "../tools/docs.mjs";
6
5
  import { dirname as dirname$1, resolve } from "node:path";
7
6
  import { fileURLToPath } from "node:url";
8
7
  import { isESModule } from "@intlayer/config/utils";
9
8
  import z from "zod";
9
+ import { readFileSync } from "node:fs";
10
10
 
11
11
  //#region src/server/server.ts
12
12
  const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
@@ -1,90 +1,89 @@
1
1
  #!/usr/bin/env node
2
2
  import { loadServer } from "./server.mjs";
3
3
  import { randomUUID } from "node:crypto";
4
+ import fastifyCors from "@fastify/cors";
5
+ import fastifyHelmet from "@fastify/helmet";
4
6
  import dotenv from "dotenv";
5
- import express from "express";
7
+ import Fastify from "fastify";
6
8
 
7
9
  //#region src/server/sse.ts
8
- const app = express();
9
- const env = app.get("env");
10
- dotenv.config({
11
- path: [
12
- `.env.${env}.local`,
13
- `.env.${env}`,
14
- ".env.local",
15
- ".env"
16
- ],
17
- quiet: true
18
- });
19
- app.use((req, res, next) => {
20
- res.header("Access-Control-Allow-Origin", "*");
21
- res.header("Access-Control-Allow-Methods", "GET, POST, DELETE, OPTIONS");
22
- res.header("Access-Control-Allow-Headers", "Content-Type, mcp-session-id");
23
- if (req.method === "OPTIONS") {
24
- res.sendStatus(200);
25
- return;
26
- }
27
- next();
28
- });
29
- app.use(express.json());
30
- const router = express.Router();
31
- const sessions = /* @__PURE__ */ new Map();
32
- router.post("/", async (req, res) => {
33
- const sessionId = req.headers["mcp-session-id"];
34
- let server;
35
- let currentSessionId;
36
- if (sessionId && sessions.has(sessionId)) {
37
- server = sessions.get(sessionId);
38
- currentSessionId = sessionId;
39
- } else if (!sessionId) {
40
- currentSessionId = randomUUID();
41
- server = loadServer({ isLocal: false });
42
- sessions.set(currentSessionId, server);
43
- res.setHeader("mcp-session-id", currentSessionId);
44
- } else {
45
- res.status(400).send({ messages: "Bad session id." });
46
- return;
47
- }
48
- try {
49
- const response = await server.handleMessage(req.body);
50
- if (response !== null && response !== void 0) res.json(response);
51
- else res.status(202).end();
52
- } catch (error) {
53
- res.status(500).json({
54
- jsonrpc: "2.0",
55
- id: req.body?.id ?? null,
56
- error: {
57
- code: -32e3,
58
- message: "Internal server error"
59
- }
60
- });
61
- }
62
- });
63
- router.get("/", (req, res) => {
64
- const sessionId = req.headers["mcp-session-id"];
65
- if (!sessionId || !sessions.has(sessionId)) {
66
- res.status(400).send({ messages: "Bad session id." });
67
- return;
68
- }
69
- res.status(200).end();
70
- });
71
- router.delete("/", (req, res) => {
72
- const sessionId = req.headers["mcp-session-id"];
73
- if (!sessionId || !sessions.has(sessionId)) {
74
- res.status(400).send({ messages: "Bad session id." });
75
- return;
76
- }
77
- sessions.delete(sessionId);
78
- res.status(200).end();
79
- });
80
- app.use("/", router);
81
- app.use("/health", (_req, res) => {
82
- res.send("OK");
83
- });
84
- const PORT = process.env.PORT ?? 3e3;
85
- app.listen(PORT, () => {
10
+ const startServer = async () => {
11
+ const app = Fastify();
12
+ const env = "development";
13
+ dotenv.config({
14
+ path: [
15
+ `.env.${env}.local`,
16
+ `.env.${env}`,
17
+ ".env.local",
18
+ ".env"
19
+ ],
20
+ quiet: true
21
+ });
22
+ await app.register(fastifyHelmet, {
23
+ contentSecurityPolicy: false,
24
+ global: true
25
+ });
26
+ await app.register(fastifyCors, {
27
+ origin: "*",
28
+ methods: [
29
+ "GET",
30
+ "POST",
31
+ "DELETE",
32
+ "OPTIONS"
33
+ ],
34
+ allowedHeaders: ["Content-Type", "mcp-session-id"]
35
+ });
36
+ const sessions = /* @__PURE__ */ new Map();
37
+ app.post("/", async (request, reply) => {
38
+ const sessionId = request.headers["mcp-session-id"];
39
+ let server;
40
+ let currentSessionId;
41
+ if (sessionId && sessions.has(sessionId)) {
42
+ server = sessions.get(sessionId);
43
+ currentSessionId = sessionId;
44
+ } else if (!sessionId) {
45
+ currentSessionId = randomUUID();
46
+ server = loadServer({ isLocal: false });
47
+ sessions.set(currentSessionId, server);
48
+ reply.header("mcp-session-id", currentSessionId);
49
+ } else return reply.status(400).send({ messages: "Bad session id." });
50
+ try {
51
+ const response = await server.handleMessage(request.body);
52
+ if (response !== null && response !== void 0) return reply.send(response);
53
+ return reply.status(202).send();
54
+ } catch (error) {
55
+ return reply.status(500).send({
56
+ jsonrpc: "2.0",
57
+ id: request.body?.id ?? null,
58
+ error: {
59
+ code: -32e3,
60
+ message: ["Internal server error", error]
61
+ }
62
+ });
63
+ }
64
+ });
65
+ app.get("/", async (request, reply) => {
66
+ const sessionId = request.headers["mcp-session-id"];
67
+ if (!sessionId || !sessions.has(sessionId)) return reply.status(400).send({ messages: "Bad session id." });
68
+ return reply.status(200).send();
69
+ });
70
+ app.delete("/", async (request, reply) => {
71
+ const sessionId = request.headers["mcp-session-id"];
72
+ if (!sessionId || !sessions.has(sessionId)) return reply.status(400).send({ messages: "Bad session id." });
73
+ sessions.delete(sessionId);
74
+ return reply.status(200).send();
75
+ });
76
+ app.get("/health", async (_request, reply) => {
77
+ return reply.send("OK");
78
+ });
79
+ const PORT = Number(process.env.PORT) || 3e3;
80
+ await app.listen({
81
+ port: PORT,
82
+ host: "0.0.0.0"
83
+ });
86
84
  console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);
87
- });
85
+ };
86
+ startServer();
88
87
 
89
88
  //#endregion
90
89
  //# sourceMappingURL=sse.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { randomUUID } from 'node:crypto';\nimport dotenv from 'dotenv';\nimport express, { type Request, type Response } from 'express';\nimport { loadServer, type McpServer } from './server';\n\nconst app = express();\nconst env = app.get('env');\n\ndotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n quiet: true,\n});\n\napp.use((req, res, next) => {\n res.header('Access-Control-Allow-Origin', '*');\n res.header('Access-Control-Allow-Methods', 'GET, POST, DELETE, OPTIONS');\n res.header('Access-Control-Allow-Headers', 'Content-Type, mcp-session-id');\n if (req.method === 'OPTIONS') {\n res.sendStatus(200);\n return;\n }\n next();\n});\n\napp.use(express.json());\nconst router = express.Router();\n\nconst sessions = new Map<string, McpServer>();\n\nrouter.post('/', async (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n\n let server: McpServer;\n let currentSessionId: string;\n\n if (sessionId && sessions.has(sessionId)) {\n server = sessions.get(sessionId)!;\n currentSessionId = sessionId;\n } else if (!sessionId) {\n currentSessionId = randomUUID();\n server = loadServer({ isLocal: false });\n sessions.set(currentSessionId, server);\n res.setHeader('mcp-session-id', currentSessionId);\n } else {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n\n try {\n const response = await server.handleMessage(req.body);\n if (response !== null && response !== undefined) {\n res.json(response);\n } else {\n res.status(202).end();\n }\n } catch (error) {\n res.status(500).json({\n jsonrpc: '2.0',\n id: req.body?.id ?? null,\n error: { code: -32000, message: 'Internal server error' },\n });\n }\n});\n\nrouter.get('/', (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n if (!sessionId || !sessions.has(sessionId)) {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n res.status(200).end();\n});\n\nrouter.delete('/', (req: Request, res: Response) => {\n const sessionId = req.headers['mcp-session-id'] as string | undefined;\n if (!sessionId || !sessions.has(sessionId)) {\n res.status(400).send({ messages: 'Bad session id.' });\n return;\n }\n sessions.delete(sessionId);\n res.status(200).end();\n});\n\napp.use('/', router);\napp.use('/health', (_req: Request, res: Response) => {\n res.send('OK');\n});\n\nconst PORT = process.env.PORT ?? 3000;\napp.listen(PORT, () => {\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n});\n"],"mappings":";;;;;;;AAOA,MAAM,MAAM,SAAS;AACrB,MAAM,MAAM,IAAI,IAAI,MAAM;AAE1B,OAAO,OAAO;CACZ,MAAM;EAAC,QAAQ,IAAI;EAAS,QAAQ;EAAO;EAAc;EAAO;CAChE,OAAO;CACR,CAAC;AAEF,IAAI,KAAK,KAAK,KAAK,SAAS;CAC1B,IAAI,OAAO,+BAA+B,IAAI;CAC9C,IAAI,OAAO,gCAAgC,6BAA6B;CACxE,IAAI,OAAO,gCAAgC,+BAA+B;CAC1E,IAAI,IAAI,WAAW,WAAW;EAC5B,IAAI,WAAW,IAAI;EACnB;;CAEF,MAAM;EACN;AAEF,IAAI,IAAI,QAAQ,MAAM,CAAC;AACvB,MAAM,SAAS,QAAQ,QAAQ;AAE/B,MAAM,2BAAW,IAAI,KAAwB;AAE7C,OAAO,KAAK,KAAK,OAAO,KAAc,QAAkB;CACtD,MAAM,YAAY,IAAI,QAAQ;CAE9B,IAAI;CACJ,IAAI;CAEJ,IAAI,aAAa,SAAS,IAAI,UAAU,EAAE;EACxC,SAAS,SAAS,IAAI,UAAU;EAChC,mBAAmB;QACd,IAAI,CAAC,WAAW;EACrB,mBAAmB,YAAY;EAC/B,SAAS,WAAW,EAAE,SAAS,OAAO,CAAC;EACvC,SAAS,IAAI,kBAAkB,OAAO;EACtC,IAAI,UAAU,kBAAkB,iBAAiB;QAC5C;EACL,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;EACrD;;CAGF,IAAI;EACF,MAAM,WAAW,MAAM,OAAO,cAAc,IAAI,KAAK;EACrD,IAAI,aAAa,QAAQ,aAAa,QACpC,IAAI,KAAK,SAAS;OAElB,IAAI,OAAO,IAAI,CAAC,KAAK;UAEhB,OAAO;EACd,IAAI,OAAO,IAAI,CAAC,KAAK;GACnB,SAAS;GACT,IAAI,IAAI,MAAM,MAAM;GACpB,OAAO;IAAE,MAAM;IAAQ,SAAS;IAAyB;GAC1D,CAAC;;EAEJ;AAEF,OAAO,IAAI,MAAM,KAAc,QAAkB;CAC/C,MAAM,YAAY,IAAI,QAAQ;CAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,UAAU,EAAE;EAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;EACrD;;CAEF,IAAI,OAAO,IAAI,CAAC,KAAK;EACrB;AAEF,OAAO,OAAO,MAAM,KAAc,QAAkB;CAClD,MAAM,YAAY,IAAI,QAAQ;CAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,UAAU,EAAE;EAC1C,IAAI,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;EACrD;;CAEF,SAAS,OAAO,UAAU;CAC1B,IAAI,OAAO,IAAI,CAAC,KAAK;EACrB;AAEF,IAAI,IAAI,KAAK,OAAO;AACpB,IAAI,IAAI,YAAY,MAAe,QAAkB;CACnD,IAAI,KAAK,KAAK;EACd;AAEF,MAAM,OAAO,QAAQ,IAAI,QAAQ;AACjC,IAAI,OAAO,YAAY;CACrB,QAAQ,KAAK,gDAAgD,OAAO;EACpE"}
1
+ {"version":3,"file":"sse.mjs","names":[],"sources":["../../../src/server/sse.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { randomUUID } from 'node:crypto';\nimport fastifyCors from '@fastify/cors';\nimport fastifyHelmet from '@fastify/helmet';\nimport dotenv from 'dotenv';\nimport Fastify from 'fastify';\nimport { loadServer, type McpServer } from './server';\n\nconst startServer = async () => {\n const app = Fastify();\n\n const env = process.env.NODE_ENV || 'development';\n\n dotenv.config({\n path: [`.env.${env}.local`, `.env.${env}`, '.env.local', '.env'],\n quiet: true,\n });\n\n await app.register(fastifyHelmet, {\n contentSecurityPolicy: false,\n global: true,\n });\n\n await app.register(fastifyCors, {\n origin: '*',\n methods: ['GET', 'POST', 'DELETE', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'mcp-session-id'],\n });\n\n const sessions = new Map<string, McpServer>();\n\n app.post('/', async (request, reply) => {\n const sessionId = request.headers['mcp-session-id'] as string | undefined;\n\n let server: McpServer;\n let currentSessionId: string;\n\n if (sessionId && sessions.has(sessionId)) {\n server = sessions.get(sessionId)!;\n currentSessionId = sessionId;\n } else if (!sessionId) {\n currentSessionId = randomUUID();\n server = loadServer({ isLocal: false });\n sessions.set(currentSessionId, server);\n reply.header('mcp-session-id', currentSessionId);\n } else {\n return reply.status(400).send({ messages: 'Bad session id.' });\n }\n\n try {\n const response = await server.handleMessage(request.body);\n if (response !== null && response !== undefined) {\n return reply.send(response);\n }\n return reply.status(202).send();\n } catch (error) {\n return reply.status(500).send({\n jsonrpc: '2.0',\n id: (request.body as any)?.id ?? null,\n error: { code: -32000, message: ['Internal server error', error] },\n });\n }\n });\n\n app.get('/', async (request, reply) => {\n const sessionId = request.headers['mcp-session-id'] as string | undefined;\n if (!sessionId || !sessions.has(sessionId)) {\n return reply.status(400).send({ messages: 'Bad session id.' });\n }\n return reply.status(200).send();\n });\n\n app.delete('/', async (request, reply) => {\n const sessionId = request.headers['mcp-session-id'] as string | undefined;\n if (!sessionId || !sessions.has(sessionId)) {\n return reply.status(400).send({ messages: 'Bad session id.' });\n }\n sessions.delete(sessionId);\n return reply.status(200).send();\n });\n\n app.get('/health', async (_request, reply) => {\n return reply.send('OK');\n });\n\n const PORT = Number(process.env.PORT) || 3000;\n await app.listen({ port: PORT, host: '0.0.0.0' });\n console.info(`MCP Streamable HTTP Server listening on port ${PORT}`);\n};\n\nstartServer();\n"],"mappings":";;;;;;;;;AASA,MAAM,cAAc,YAAY;CAC9B,MAAM,MAAM,SAAS;CAErB,MAAM;CAEN,OAAO,OAAO;EACZ,MAAM;GAAC,QAAQ,IAAI;GAAS,QAAQ;GAAO;GAAc;GAAO;EAChE,OAAO;EACR,CAAC;CAEF,MAAM,IAAI,SAAS,eAAe;EAChC,uBAAuB;EACvB,QAAQ;EACT,CAAC;CAEF,MAAM,IAAI,SAAS,aAAa;EAC9B,QAAQ;EACR,SAAS;GAAC;GAAO;GAAQ;GAAU;GAAU;EAC7C,gBAAgB,CAAC,gBAAgB,iBAAiB;EACnD,CAAC;CAEF,MAAM,2BAAW,IAAI,KAAwB;CAE7C,IAAI,KAAK,KAAK,OAAO,SAAS,UAAU;EACtC,MAAM,YAAY,QAAQ,QAAQ;EAElC,IAAI;EACJ,IAAI;EAEJ,IAAI,aAAa,SAAS,IAAI,UAAU,EAAE;GACxC,SAAS,SAAS,IAAI,UAAU;GAChC,mBAAmB;SACd,IAAI,CAAC,WAAW;GACrB,mBAAmB,YAAY;GAC/B,SAAS,WAAW,EAAE,SAAS,OAAO,CAAC;GACvC,SAAS,IAAI,kBAAkB,OAAO;GACtC,MAAM,OAAO,kBAAkB,iBAAiB;SAEhD,OAAO,MAAM,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;EAGhE,IAAI;GACF,MAAM,WAAW,MAAM,OAAO,cAAc,QAAQ,KAAK;GACzD,IAAI,aAAa,QAAQ,aAAa,QACpC,OAAO,MAAM,KAAK,SAAS;GAE7B,OAAO,MAAM,OAAO,IAAI,CAAC,MAAM;WACxB,OAAO;GACd,OAAO,MAAM,OAAO,IAAI,CAAC,KAAK;IAC5B,SAAS;IACT,IAAK,QAAQ,MAAc,MAAM;IACjC,OAAO;KAAE,MAAM;KAAQ,SAAS,CAAC,yBAAyB,MAAM;KAAE;IACnE,CAAC;;GAEJ;CAEF,IAAI,IAAI,KAAK,OAAO,SAAS,UAAU;EACrC,MAAM,YAAY,QAAQ,QAAQ;EAClC,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,UAAU,EACxC,OAAO,MAAM,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;EAEhE,OAAO,MAAM,OAAO,IAAI,CAAC,MAAM;GAC/B;CAEF,IAAI,OAAO,KAAK,OAAO,SAAS,UAAU;EACxC,MAAM,YAAY,QAAQ,QAAQ;EAClC,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,UAAU,EACxC,OAAO,MAAM,OAAO,IAAI,CAAC,KAAK,EAAE,UAAU,mBAAmB,CAAC;EAEhE,SAAS,OAAO,UAAU;EAC1B,OAAO,MAAM,OAAO,IAAI,CAAC,MAAM;GAC/B;CAEF,IAAI,IAAI,WAAW,OAAO,UAAU,UAAU;EAC5C,OAAO,MAAM,KAAK,KAAK;GACvB;CAEF,MAAM,OAAO,OAAO,QAAQ,IAAI,KAAK,IAAI;CACzC,MAAM,IAAI,OAAO;EAAE,MAAM;EAAM,MAAM;EAAW,CAAC;CACjD,QAAQ,KAAK,gDAAgD,OAAO;;AAGtE,aAAa"}
@@ -1,8 +1,8 @@
1
1
  import { relative } from "node:path";
2
- import z from "zod";
3
2
  import { listProjects } from "@intlayer/chokidar/cli";
4
3
  import { build, extract, fill, init, listContentDeclarationRows, listMissingTranslations, pull, push } from "@intlayer/cli";
5
4
  import { ALL_LOCALES } from "@intlayer/types/allLocales";
5
+ import z from "zod";
6
6
 
7
7
  //#region src/tools/cli.ts
8
8
  const configOptionsSchema = z.object({
@@ -1,6 +1,6 @@
1
- import { loadAPITools } from "./api.mjs";
2
1
  import { loadCLITools } from "./cli.mjs";
3
- import { loadDocsTools } from "./docs.mjs";
2
+ import { loadAPITools } from "./api.mjs";
4
3
  import { loadInstallSkillsTool } from "./installSkills.mjs";
4
+ import { loadDocsTools } from "./docs.mjs";
5
5
 
6
6
  export { loadAPITools, loadCLITools, loadDocsTools, loadInstallSkillsTool };
@@ -1,6 +1,6 @@
1
- import * as readline from "node:readline";
2
- import z from "zod";
3
1
  import { PLATFORMS, SKILLS, installSkills } from "@intlayer/chokidar/cli";
2
+ import z from "zod";
3
+ import * as readline from "node:readline";
4
4
 
5
5
  //#region src/tools/installSkills.ts
6
6
  const loadInstallSkillsTool = (server) => {
@@ -1,4 +1,4 @@
1
- import { MCPClient } from "/Users/aymericpineau/Documents/intlayer_/node_modules/.bun/@ai-sdk+mcp@1.0.41+68a1e3a0c4588df3/node_modules/@ai-sdk/mcp/dist/index.mjs";
1
+ import { MCPClient } from "@ai-sdk/mcp";
2
2
 
3
3
  //#region src/client/client.d.ts
4
4
  declare const dirname: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/mcp",
3
- "version": "8.9.4",
3
+ "version": "8.9.6-canary.0",
4
4
  "private": false,
5
5
  "description": "Intlayer MCP server. Handle MCP to help IDE to use Intlayer. It build, fill, pull, push, dictionaries",
6
6
  "keywords": [
@@ -109,27 +109,28 @@
109
109
  "typecheck": "tsc --noEmit --project tsconfig.types.json"
110
110
  },
111
111
  "dependencies": {
112
- "@intlayer/api": "8.9.4",
113
- "@intlayer/chokidar": "8.9.4",
114
- "@intlayer/cli": "8.9.4",
115
- "@intlayer/config": "8.9.4",
116
- "@intlayer/docs": "8.9.4",
117
- "@intlayer/types": "8.9.4",
112
+ "@fastify/cors": "11.2.0",
113
+ "@fastify/helmet": "13.0.2",
114
+ "@intlayer/api": "8.9.6-canary.0",
115
+ "@intlayer/chokidar": "8.9.6-canary.0",
116
+ "@intlayer/cli": "8.9.6-canary.0",
117
+ "@intlayer/config": "8.9.6-canary.0",
118
+ "@intlayer/docs": "8.9.6-canary.0",
119
+ "@intlayer/types": "8.9.6-canary.0",
118
120
  "dotenv": "17.4.2",
119
- "express": "5.2.1",
121
+ "fastify": "5.8.5",
120
122
  "zod": "4.4.3"
121
123
  },
122
124
  "devDependencies": {
123
- "@intlayer/types": "8.9.4",
124
- "@types/express": "5.0.6",
125
- "@types/node": "25.6.2",
125
+ "@intlayer/types": "8.9.6-canary.0",
126
+ "@types/node": "25.8.0",
126
127
  "@utils/ts-config": "1.0.4",
127
128
  "@utils/ts-config-types": "1.0.4",
128
129
  "@utils/tsdown-config": "1.0.4",
129
130
  "rimraf": "6.1.3",
130
131
  "tsdown": "0.22.00",
131
132
  "typescript": "6.0.3",
132
- "vitest": "4.1.5"
133
+ "vitest": "4.1.6"
133
134
  },
134
135
  "engines": {
135
136
  "node": ">=14.18"