@lobehub/chat 1.128.0 → 1.128.1

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 (52) hide show
  1. package/.github/workflows/test.yml +8 -1
  2. package/CHANGELOG.md +25 -0
  3. package/changelog/v1.json +9 -0
  4. package/next.config.ts +8 -1
  5. package/package.json +71 -69
  6. package/packages/context-engine/ARCHITECTURE.md +425 -0
  7. package/packages/context-engine/package.json +40 -0
  8. package/packages/context-engine/src/base/BaseProcessor.ts +87 -0
  9. package/packages/context-engine/src/base/BaseProvider.ts +22 -0
  10. package/packages/context-engine/src/index.ts +32 -0
  11. package/packages/context-engine/src/pipeline.ts +219 -0
  12. package/packages/context-engine/src/processors/HistoryTruncate.ts +76 -0
  13. package/packages/context-engine/src/processors/InputTemplate.ts +83 -0
  14. package/packages/context-engine/src/processors/MessageCleanup.ts +87 -0
  15. package/packages/context-engine/src/processors/MessageContent.ts +298 -0
  16. package/packages/context-engine/src/processors/PlaceholderVariables.ts +196 -0
  17. package/packages/context-engine/src/processors/ToolCall.ts +186 -0
  18. package/packages/context-engine/src/processors/ToolMessageReorder.ts +113 -0
  19. package/packages/context-engine/src/processors/__tests__/HistoryTruncate.test.ts +175 -0
  20. package/packages/context-engine/src/processors/__tests__/InputTemplate.test.ts +243 -0
  21. package/packages/context-engine/src/processors/__tests__/MessageContent.test.ts +394 -0
  22. package/packages/context-engine/src/processors/__tests__/PlaceholderVariables.test.ts +334 -0
  23. package/packages/context-engine/src/processors/__tests__/ToolMessageReorder.test.ts +186 -0
  24. package/packages/context-engine/src/processors/index.ts +15 -0
  25. package/packages/context-engine/src/providers/HistorySummary.ts +102 -0
  26. package/packages/context-engine/src/providers/InboxGuide.ts +102 -0
  27. package/packages/context-engine/src/providers/SystemRoleInjector.ts +64 -0
  28. package/packages/context-engine/src/providers/ToolSystemRole.ts +118 -0
  29. package/packages/context-engine/src/providers/__tests__/HistorySummaryProvider.test.ts +112 -0
  30. package/packages/context-engine/src/providers/__tests__/InboxGuideProvider.test.ts +121 -0
  31. package/packages/context-engine/src/providers/__tests__/SystemRoleInjector.test.ts +200 -0
  32. package/packages/context-engine/src/providers/__tests__/ToolSystemRoleProvider.test.ts +140 -0
  33. package/packages/context-engine/src/providers/index.ts +11 -0
  34. package/packages/context-engine/src/types.ts +201 -0
  35. package/packages/context-engine/vitest.config.mts +10 -0
  36. package/packages/database/package.json +1 -1
  37. package/packages/prompts/src/prompts/systemRole/index.ts +1 -1
  38. package/packages/utils/src/index.ts +2 -0
  39. package/packages/utils/src/uriParser.test.ts +29 -0
  40. package/packages/utils/src/uriParser.ts +24 -0
  41. package/src/services/{__tests__ → chat}/chat.test.ts +22 -1032
  42. package/src/services/chat/clientModelRuntime.test.ts +385 -0
  43. package/src/services/chat/clientModelRuntime.ts +34 -0
  44. package/src/services/chat/contextEngineering.test.ts +848 -0
  45. package/src/services/chat/contextEngineering.ts +123 -0
  46. package/src/services/chat/helper.ts +61 -0
  47. package/src/services/{chat.ts → chat/index.ts} +24 -366
  48. package/src/services/chat/types.ts +9 -0
  49. package/src/services/models.ts +1 -1
  50. package/src/store/aiInfra/slices/aiModel/selectors.ts +2 -2
  51. package/src/store/chat/slices/aiChat/actions/generateAIChat.ts +1 -40
  52. /package/src/services/{__tests__ → chat}/__snapshots__/chat.test.ts.snap +0 -0
@@ -11,7 +11,14 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- package: [file-loaders, prompts, model-runtime, web-crawler, electron-server-ipc, utils]
14
+ package:
15
+ - file-loaders
16
+ - prompts
17
+ - model-runtime
18
+ - web-crawler
19
+ - electron-server-ipc
20
+ - utils
21
+ - context-engine
15
22
 
16
23
  name: Test package ${{ matrix.package }}
17
24
 
package/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.128.1](https://github.com/lobehub/lobe-chat/compare/v1.128.0...v1.128.1)
6
+
7
+ <sup>Released on **2025-09-12**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Refactor message proccesser to the context engine.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Code refactoring
19
+
20
+ - **misc**: Refactor message proccesser to the context engine, closes [#9230](https://github.com/lobehub/lobe-chat/issues/9230) ([dacfffd](https://github.com/lobehub/lobe-chat/commit/dacfffd))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ## [Version 1.128.0](https://github.com/lobehub/lobe-chat/compare/v1.127.4...v1.128.0)
6
31
 
7
32
  <sup>Released on **2025-09-12**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Refactor message proccesser to the context engine."
6
+ ]
7
+ },
8
+ "date": "2025-09-12",
9
+ "version": "1.128.1"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "features": [
package/next.config.ts CHANGED
@@ -26,6 +26,9 @@ const nextConfig: NextConfig = {
26
26
  emotion: true,
27
27
  },
28
28
  compress: isProd,
29
+ eslint: {
30
+ ignoreDuringBuilds: true,
31
+ },
29
32
  experimental: {
30
33
  optimizePackageImports: [
31
34
  'emoji-mart',
@@ -195,6 +198,7 @@ const nextConfig: NextConfig = {
195
198
  },
196
199
  },
197
200
  reactStrictMode: true,
201
+
198
202
  redirects: async () => [
199
203
  {
200
204
  destination: '/sitemap-index.xml',
@@ -264,10 +268,13 @@ const nextConfig: NextConfig = {
264
268
  source: '/repos',
265
269
  },
266
270
  ],
271
+
267
272
  // when external packages in dev mode with turbopack, this config will lead to bundle error
268
273
  serverExternalPackages: isProd ? ['@electric-sql/pglite'] : undefined,
269
-
270
274
  transpilePackages: ['pdfjs-dist', 'mermaid'],
275
+ typescript: {
276
+ ignoreBuildErrors: true,
277
+ },
271
278
 
272
279
  webpack(config) {
273
280
  config.experiments = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.128.0",
3
+ "version": "1.128.1",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -29,15 +29,16 @@
29
29
  "packages/*"
30
30
  ],
31
31
  "scripts": {
32
- "prebuild": "tsx scripts/prebuild.mts",
32
+ "prebuild": "tsx scripts/prebuild.mts && npm run lint",
33
33
  "build": "cross-env NODE_OPTIONS=--max-old-space-size=6144 next build",
34
34
  "postbuild": "npm run build-sitemap && npm run build-migrate-db",
35
35
  "build-migrate-db": "bun run db:migrate",
36
36
  "build-sitemap": "tsx ./scripts/buildSitemapIndex/index.ts",
37
37
  "build:analyze": "NODE_OPTIONS=--max-old-space-size=6144 ANALYZE=true next build",
38
38
  "build:docker": "npm run prebuild && NODE_OPTIONS=--max-old-space-size=6144 DOCKER=true next build && npm run build-sitemap",
39
- "prebuild:electron": "cross-env NEXT_PUBLIC_IS_DESKTOP_APP=1 tsx scripts/prebuild.mts",
39
+ "prebuild:electron": "cross-env NEXT_PUBLIC_IS_DESKTOP_APP=1 tsx scripts/prebuild.mts && npm run lint",
40
40
  "build:electron": "cross-env NODE_OPTIONS=--max-old-space-size=6144 NEXT_PUBLIC_IS_DESKTOP_APP=1 NEXT_PUBLIC_SERVICE_MODE=server next build",
41
+ "clean:node_modules": "bash -lc 'set -e; echo \"Removing all node_modules...\"; rm -rf node_modules; pnpm -r exec rm -rf node_modules; rm -rf apps/desktop/node_modules; echo \"All node_modules removed.\"'",
41
42
  "db:generate": "drizzle-kit generate && npm run db:generate-client && npm run workflow:dbml",
42
43
  "db:generate-client": "tsx ./scripts/migrateClientDB/compile-migrations.ts",
43
44
  "db:migrate": "MIGRATION_DB=1 tsx ./scripts/migrateServerDB/index.ts",
@@ -123,26 +124,27 @@
123
124
  "@ant-design/pro-components": "^2.8.10",
124
125
  "@anthropic-ai/sdk": "^0.61.0",
125
126
  "@auth/core": "^0.40.0",
126
- "@aws-sdk/client-s3": "^3.862.0",
127
- "@aws-sdk/s3-request-presigner": "^3.862.0",
127
+ "@aws-sdk/client-s3": "^3.887.0",
128
+ "@aws-sdk/s3-request-presigner": "^3.887.0",
128
129
  "@azure-rest/ai-inference": "1.0.0-beta.5",
129
- "@azure/core-auth": "^1.10.0",
130
+ "@azure/core-auth": "^1.10.1",
130
131
  "@cfworker/json-schema": "^4.1.1",
131
- "@clerk/localizations": "^3.20.7",
132
- "@clerk/nextjs": "^6.29.0",
133
- "@clerk/themes": "^2.4.5",
132
+ "@clerk/localizations": "^3.25.0",
133
+ "@clerk/nextjs": "^6.31.10",
134
+ "@clerk/themes": "^2.4.18",
134
135
  "@codesandbox/sandpack-react": "^2.20.0",
135
136
  "@cyntler/react-doc-viewer": "^1.17.0",
136
137
  "@electric-sql/pglite": "0.2.17",
137
138
  "@emotion/react": "^11.14.0",
138
- "@fal-ai/client": "^1.6.1",
139
- "@formkit/auto-animate": "^0.8.2",
140
- "@google/genai": "^1.13.0",
139
+ "@fal-ai/client": "^1.6.2",
140
+ "@formkit/auto-animate": "^0.8.4",
141
+ "@google/genai": "^1.19.0",
141
142
  "@huggingface/inference": "^2.8.1",
142
143
  "@icons-pack/react-simple-icons": "9.6.0",
143
144
  "@khmyznikov/pwa-install": "0.3.9",
144
- "@langchain/community": "^0.3.50",
145
+ "@langchain/community": "^0.3.55",
145
146
  "@lobechat/const": "workspace:*",
147
+ "@lobechat/context-engine": "workspace:*",
146
148
  "@lobechat/database": "workspace:*",
147
149
  "@lobechat/electron-client-ipc": "workspace:*",
148
150
  "@lobechat/electron-server-ipc": "workspace:*",
@@ -152,81 +154,81 @@
152
154
  "@lobechat/utils": "workspace:*",
153
155
  "@lobechat/web-crawler": "workspace:*",
154
156
  "@lobehub/analytics": "^1.6.0",
155
- "@lobehub/charts": "^2.0.0",
157
+ "@lobehub/charts": "^2.1.2",
156
158
  "@lobehub/chat-plugin-sdk": "^1.32.4",
157
159
  "@lobehub/chat-plugins-gateway": "^1.9.0",
158
160
  "@lobehub/editor": "^1.8.0",
159
- "@lobehub/icons": "^2.31.0",
161
+ "@lobehub/icons": "^2.32.2",
160
162
  "@lobehub/market-sdk": "^0.22.7",
161
163
  "@lobehub/tts": "^2.0.1",
162
- "@lobehub/ui": "^2.12.2",
163
- "@modelcontextprotocol/sdk": "^1.17.1",
164
+ "@lobehub/ui": "^2.12.4",
165
+ "@modelcontextprotocol/sdk": "^1.18.0",
164
166
  "@neondatabase/serverless": "^1.0.1",
165
- "@next/third-parties": "^15.4.6",
167
+ "@next/third-parties": "^15.5.3",
166
168
  "@react-spring/web": "^9.7.5",
167
169
  "@sentry/nextjs": "^7.120.4",
168
- "@serwist/next": "^9.1.1",
170
+ "@serwist/next": "^9.2.1",
169
171
  "@t3-oss/env-nextjs": "^0.13.8",
170
- "@tanstack/react-query": "^5.84.1",
171
- "@trpc/client": "^11.4.4",
172
- "@trpc/next": "^11.4.4",
173
- "@trpc/react-query": "^11.4.4",
174
- "@trpc/server": "^11.4.4",
172
+ "@tanstack/react-query": "^5.87.4",
173
+ "@trpc/client": "^11.5.1",
174
+ "@trpc/next": "^11.5.1",
175
+ "@trpc/react-query": "^11.5.1",
176
+ "@trpc/server": "^11.5.1",
175
177
  "@vercel/analytics": "^1.5.0",
176
178
  "@vercel/edge-config": "^1.4.0",
177
- "@vercel/functions": "^2.2.8",
179
+ "@vercel/functions": "^2.2.13",
178
180
  "@vercel/speed-insights": "^1.2.0",
179
181
  "@xterm/xterm": "^5.5.0",
180
- "ahooks": "^3.9.0",
181
- "antd": "^5.26.7",
182
+ "ahooks": "^3.9.5",
183
+ "antd": "^5.27.3",
182
184
  "antd-style": "^3.7.1",
183
185
  "brotli-wasm": "^3.0.1",
184
186
  "chroma-js": "^3.1.2",
185
187
  "cookie": "^1.0.2",
186
188
  "countries-and-timezones": "^3.8.0",
187
- "dayjs": "^1.11.13",
189
+ "dayjs": "^1.11.18",
188
190
  "debug": "^4.4.1",
189
191
  "dexie": "^3.2.7",
190
- "diff": "^8.0.0",
191
- "drizzle-orm": "^0.44.4",
192
+ "diff": "^8.0.2",
193
+ "drizzle-orm": "^0.44.5",
192
194
  "drizzle-zod": "^0.5.1",
193
195
  "epub2": "^3.0.2",
194
196
  "fast-deep-equal": "^3.1.3",
195
197
  "file-type": "^21.0.0",
196
198
  "framer-motion": "^12.23.12",
197
- "gpt-tokenizer": "^3.0.0",
199
+ "gpt-tokenizer": "^3.0.1",
198
200
  "gray-matter": "^4.0.3",
199
201
  "html-to-text": "^9.0.5",
200
- "i18next": "^25.3.2",
202
+ "i18next": "^25.5.2",
201
203
  "i18next-browser-languagedetector": "^8.2.0",
202
204
  "i18next-resources-to-backend": "^1.2.1",
203
205
  "idb-keyval": "^6.2.2",
204
- "immer": "^10.1.1",
206
+ "immer": "^10.1.3",
205
207
  "jose": "^5.10.0",
206
208
  "js-sha256": "^0.11.1",
207
209
  "jsonl-parse-stringify": "^1.0.3",
208
210
  "keyv": "^4.5.4",
209
- "langchain": "^0.3.30",
210
- "langfuse": "^3.38.4",
211
- "langfuse-core": "^3.38.4",
211
+ "langchain": "^0.3.33",
212
+ "langfuse": "^3.38.5",
213
+ "langfuse-core": "^3.38.5",
212
214
  "lodash-es": "^4.17.21",
213
215
  "lucide-react": "^0.542.0",
214
216
  "mammoth": "^1.10.0",
215
217
  "markdown-to-txt": "^2.0.1",
216
218
  "mdast-util-to-markdown": "^2.1.2",
217
219
  "model-bank": "workspace:*",
218
- "modern-screenshot": "^4.6.5",
220
+ "modern-screenshot": "^4.6.6",
219
221
  "nanoid": "^5.1.5",
220
222
  "next": "~15.3.5",
221
223
  "next-auth": "5.0.0-beta.29",
222
224
  "next-mdx-remote": "^5.0.0",
223
- "nextjs-toploader": "^3.8.16",
225
+ "nextjs-toploader": "^3.9.17",
224
226
  "node-machine-id": "^1.1.12",
225
227
  "numeral": "^2.0.6",
226
- "nuqs": "^2.4.3",
228
+ "nuqs": "^2.6.0",
227
229
  "officeparser": "5.1.1",
228
- "oidc-provider": "^9.4.0",
229
- "ollama": "^0.5.16",
230
+ "oidc-provider": "^9.5.1",
231
+ "ollama": "^0.5.17",
230
232
  "openai": "^4.104.0",
231
233
  "openapi-fetch": "^0.9.8",
232
234
  "partial-json": "^0.1.7",
@@ -234,44 +236,44 @@
234
236
  "pdf-parse": "^1.1.1",
235
237
  "pdfjs-dist": "4.8.69",
236
238
  "pg": "^8.16.3",
237
- "pino": "^9.8.0",
239
+ "pino": "^9.9.5",
238
240
  "plaiceholder": "^3.0.0",
239
241
  "polished": "^4.3.1",
240
- "posthog-js": "^1.258.6",
242
+ "posthog-js": "^1.264.2",
241
243
  "pure-rand": "^7.0.1",
242
244
  "pwa-install-handler": "^2.6.3",
243
- "query-string": "^9.2.2",
245
+ "query-string": "^9.3.0",
244
246
  "random-words": "^2.0.1",
245
247
  "react": "^19.1.1",
246
248
  "react-confetti": "^6.4.0",
247
249
  "react-dom": "^19.1.1",
248
250
  "react-fast-marquee": "^1.6.5",
249
251
  "react-hotkeys-hook": "^5.1.0",
250
- "react-i18next": "^15.6.1",
252
+ "react-i18next": "^15.7.3",
251
253
  "react-layout-kit": "^2.0.0",
252
254
  "react-lazy-load": "^4.0.1",
253
255
  "react-pdf": "^9.2.1",
254
256
  "react-rnd": "^10.5.2",
255
- "react-scan": "^0.4.0",
256
- "react-virtuoso": "^4.13.0",
257
+ "react-scan": "^0.4.3",
258
+ "react-virtuoso": "^4.14.0",
257
259
  "react-wrap-balancer": "^1.1.1",
258
260
  "remark": "^15.0.1",
259
261
  "remark-gfm": "^4.0.1",
260
262
  "remark-html": "^16.0.1",
261
263
  "request-filtering-agent": "^2.0.1",
262
- "resolve-accept-language": "^3.1.12",
264
+ "resolve-accept-language": "^3.1.13",
263
265
  "rtl-detect": "^1.1.2",
264
266
  "semver": "^7.7.2",
265
267
  "sharp": "^0.34.3",
266
- "shiki": "^3.9.2",
268
+ "shiki": "^3.12.2",
267
269
  "stripe": "^17.7.0",
268
270
  "superjson": "^2.2.2",
269
- "svix": "^1.70.1",
271
+ "svix": "^1.76.1",
270
272
  "swr": "2.3.4",
271
273
  "systemjs": "^6.15.1",
272
274
  "tokenx": "^0.4.1",
273
275
  "ts-md5": "^1.3.1",
274
- "ua-parser-js": "^1.0.40",
276
+ "ua-parser-js": "^1.0.41",
275
277
  "unstructured-client": "^0.19.0",
276
278
  "url-join": "^5.0.0",
277
279
  "use-merge-value": "^1.2.0",
@@ -291,12 +293,12 @@
291
293
  "@lobehub/lint": "^1.26.2",
292
294
  "@lobehub/market-types": "^1.11.4",
293
295
  "@lobehub/seo-cli": "^1.7.0",
294
- "@next/bundle-analyzer": "^15.4.6",
295
- "@next/eslint-plugin-next": "^15.4.6",
296
+ "@next/bundle-analyzer": "^15.5.3",
297
+ "@next/eslint-plugin-next": "^15.5.3",
296
298
  "@peculiar/webcrypto": "^1.5.0",
297
299
  "@prettier/sync": "^0.6.1",
298
300
  "@semantic-release/exec": "^6.0.3",
299
- "@testing-library/jest-dom": "^6.6.4",
301
+ "@testing-library/jest-dom": "^6.8.0",
300
302
  "@testing-library/react": "^16.3.0",
301
303
  "@testing-library/user-event": "^14.6.1",
302
304
  "@types/chroma-js": "^3.1.1",
@@ -307,14 +309,14 @@
307
309
  "@types/json-schema": "^7.0.15",
308
310
  "@types/lodash": "^4.17.20",
309
311
  "@types/lodash-es": "^4.17.12",
310
- "@types/node": "^22.17.0",
312
+ "@types/node": "^22.18.1",
311
313
  "@types/numeral": "^2.0.5",
312
- "@types/oidc-provider": "^9.1.2",
314
+ "@types/oidc-provider": "^9.5.0",
313
315
  "@types/pg": "^8.15.5",
314
- "@types/react": "^19.1.9",
315
- "@types/react-dom": "^19.1.7",
316
+ "@types/react": "^19.1.12",
317
+ "@types/react-dom": "^19.1.9",
316
318
  "@types/rtl-detect": "^1.0.3",
317
- "@types/semver": "^7.7.0",
319
+ "@types/semver": "^7.7.1",
318
320
  "@types/systemjs": "^6.15.3",
319
321
  "@types/ua-parser-js": "^0.7.39",
320
322
  "@types/unist": "^3.0.3",
@@ -327,18 +329,18 @@
327
329
  "consola": "^3.4.2",
328
330
  "cross-env": "^10.0.0",
329
331
  "crypto-js": "^4.2.0",
330
- "dbdocs": "^0.16.0",
331
- "dotenv": "^17.0.0",
332
- "dotenv-expand": "^12.0.2",
332
+ "dbdocs": "^0.16.1",
333
+ "dotenv": "^17.2.2",
334
+ "dotenv-expand": "^12.0.3",
333
335
  "dpdm-fast": "^1.0.13",
334
336
  "drizzle-dbml-generator": "^0.10.0",
335
337
  "drizzle-kit": "^0.31.4",
336
338
  "eslint": "^8.57.1",
337
339
  "eslint-plugin-mdx": "^3.6.2",
338
- "fake-indexeddb": "^6.0.1",
340
+ "fake-indexeddb": "^6.2.2",
339
341
  "fs-extra": "^11.3.1",
340
342
  "glob": "^11.0.3",
341
- "happy-dom": "^18.0.0",
343
+ "happy-dom": "^18.0.1",
342
344
  "husky": "^9.1.7",
343
345
  "just-diff": "^6.0.2",
344
346
  "lint-staged": "^15.5.2",
@@ -347,18 +349,18 @@
347
349
  "mcp-hello-world": "^1.1.2",
348
350
  "mime": "^4.0.7",
349
351
  "node-fetch": "^3.3.2",
350
- "node-gyp": "^11.3.0",
351
- "openapi-typescript": "^7.8.0",
352
+ "node-gyp": "^11.4.2",
353
+ "openapi-typescript": "^7.9.1",
352
354
  "p-map": "^7.0.3",
353
355
  "prettier": "^3.6.2",
354
356
  "remark-cli": "^12.0.1",
355
357
  "remark-frontmatter": "^5.0.0",
356
- "remark-mdx": "^3.1.0",
358
+ "remark-mdx": "^3.1.1",
357
359
  "remark-parse": "^11.0.0",
358
360
  "semantic-release": "^21.1.2",
359
- "serwist": "^9.1.1",
361
+ "serwist": "^9.2.1",
360
362
  "stylelint": "^15.11.0",
361
- "tsx": "^4.20.3",
363
+ "tsx": "^4.20.5",
362
364
  "type-fest": "^4.41.0",
363
365
  "typescript": "^5.9.2",
364
366
  "unified": "^11.0.5",