From b1427e24227e5942823f92f071bfae83c3220b4d Mon Sep 17 00:00:00 2001 From: digua Date: Tue, 19 May 2026 21:46:00 +0800 Subject: [PATCH] feat(cli): add tsup build pipeline for npm publishing - Rename package to `chatlab-cli`, version 0.1.0 - Add tsup config with ESM output, bundle @openchatlab/* + stream-json - Update bin/chatlab.js from stub to actual entry point - Unify version reading via src/version.ts (CLI/MCP/HTTP API) - Add publishing fields: type, files, engines, publishConfig, keywords - Move @openchatlab/* to devDependencies (bundled into dist/) - Add better-sqlite3 to dependencies, @node-rs/jieba to optionalDependencies - Fix --web default path for bundled dist/ directory structure --- apps/cli/bin/chatlab.js | 13 +- apps/cli/package.json | 65 +++++-- apps/cli/src/cli.ts | 5 +- apps/cli/src/http/routes/system.ts | 6 +- apps/cli/src/mcp.ts | 3 +- apps/cli/src/version.ts | 19 +++ apps/cli/tsup.config.ts | 27 +++ package.json | 2 +- pnpm-lock.yaml | 263 ++++++++++++++++++++++++++++- 9 files changed, 366 insertions(+), 37 deletions(-) create mode 100644 apps/cli/src/version.ts create mode 100644 apps/cli/tsup.config.ts diff --git a/apps/cli/bin/chatlab.js b/apps/cli/bin/chatlab.js index 5624b8d0..11da8f35 100755 --- a/apps/cli/bin/chatlab.js +++ b/apps/cli/bin/chatlab.js @@ -1,13 +1,2 @@ #!/usr/bin/env node - -/** - * ChatLab CLI 入口 - * - * 开发阶段:通过 pnpm --filter chatlab dev 运行(使用 tsx) - * 发布阶段:构建后直接作为 Node.js 脚本运行 - */ - -// 开发阶段占位,实际通过 package.json scripts 的 tsx 运行 -console.error('Please run via: npx tsx apps/cli/src/cli.ts') -console.error('Or use: pnpm --filter @openchatlab/chatlab cli') -process.exit(1) +import('../dist/cli.js').then((m) => m.run()) diff --git a/apps/cli/package.json b/apps/cli/package.json index d1d488cd..8658d1d8 100644 --- a/apps/cli/package.json +++ b/apps/cli/package.json @@ -1,23 +1,70 @@ { - "name": "@openchatlab/chatlab", - "version": "0.0.1", - "private": true, + "name": "chatlab-cli", + "version": "0.1.0", "description": "ChatLab CLI & Service - 聊天记录分析工具", + "type": "module", "bin": { "chatlab": "./bin/chatlab.js" }, - "main": "./src/index.ts", - "types": "./src/index.ts", + "main": "./dist/index.js", + "files": [ + "bin/", + "dist/", + "dist-web/", + "LICENSE" + ], + "engines": { + "node": ">=20" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "git+https://github.com/ChatLab/ChatLab.git", + "directory": "apps/cli" + }, + "homepage": "https://github.com/ChatLab/ChatLab", + "keywords": [ + "chatlab", + "chat", + "analysis", + "wechat", + "qq", + "telegram", + "whatsapp", + "discord", + "mcp", + "cli" + ], "scripts": { "cli": "node scripts/ensure-native.mjs && tsx src/cli.ts", + "build": "tsup", "ensure-native": "node scripts/ensure-native.mjs", "rebuild-native": "bash scripts/rebuild-native.sh", - "rebuild-sqlite": "npm rebuild better-sqlite3" + "rebuild-sqlite": "npm rebuild better-sqlite3", + "prepublishOnly": "pnpm run build" }, "dependencies": { "@fastify/multipart": "^10.0.0", "@fastify/static": "^9.1.3", + "@mariozechner/pi-agent-core": "0.54.2", + "@mariozechner/pi-ai": "0.54.2", "@modelcontextprotocol/sdk": "^1.12.1", + "better-sqlite3": "^12.4.6", + "commander": "^13.1.0", + "fastify": "^5.8.4", + "gray-matter": "^4.0.3", + "js-tiktoken": "^1.0.21", + "smol-toml": "^1.3.1", + "stream-json": "^1.9.1", + "zod": "^3.24.4" + }, + "optionalDependencies": { + "@node-rs/jieba": "^2.0.1" + }, + "devDependencies": { "@openchatlab/config": "workspace:*", "@openchatlab/core": "workspace:*", "@openchatlab/node-runtime": "workspace:*", @@ -25,10 +72,8 @@ "@openchatlab/shared-types": "workspace:*", "@openchatlab/sync": "workspace:*", "@openchatlab/tools": "workspace:*", - "commander": "^13.1.0", - "fastify": "^5.8.4" - }, - "devDependencies": { + "@types/better-sqlite3": "^7.6.13", + "tsup": "^8.5.0", "tsx": "^4.21.0" } } diff --git a/apps/cli/src/cli.ts b/apps/cli/src/cli.ts index 56354825..c290657b 100644 --- a/apps/cli/src/cli.ts +++ b/apps/cli/src/cli.ts @@ -18,10 +18,11 @@ import { getMembers, executeReadonlySql, } from '@openchatlab/core' +import { getVersion } from './version' const program = new Command() -program.name('chatlab').description('ChatLab - 聊天记录分析工具').version('0.0.1') +program.name('chatlab').description('ChatLab - 聊天记录分析工具').version(getVersion()) // chatlab sessions - 列出所有会话 program @@ -295,7 +296,7 @@ program let webRoot: string | undefined if (options.web !== undefined) { - const webDir = typeof options.web === 'string' ? options.web : path.resolve(__dirname, '../../dist-web') + const webDir = typeof options.web === 'string' ? options.web : path.resolve(__dirname, '../dist-web') if (fs.existsSync(webDir)) { webRoot = path.resolve(webDir) } else { diff --git a/apps/cli/src/http/routes/system.ts b/apps/cli/src/http/routes/system.ts index e7ffcb9f..56305853 100644 --- a/apps/cli/src/http/routes/system.ts +++ b/apps/cli/src/http/routes/system.ts @@ -8,9 +8,7 @@ import type { FastifyInstance } from 'fastify' import type { DatabaseManager } from '@openchatlab/node-runtime' import { successResponse } from '../errors' - -// eslint-disable-next-line @typescript-eslint/no-require-imports -const pkg = require('../../../package.json') as { version: string } +import { getVersion } from '../../version' export function registerSystemRoutes(server: FastifyInstance, dbManager: DatabaseManager): void { server.get('/api/v1/status', async () => { @@ -23,7 +21,7 @@ export function registerSystemRoutes(server: FastifyInstance, dbManager: Databas return successResponse({ name: 'ChatLab API', - version: pkg.version, + version: getVersion(), uptime: Math.floor(process.uptime()), sessionCount, }) diff --git a/apps/cli/src/mcp.ts b/apps/cli/src/mcp.ts index b33aa2fa..45f31e1e 100644 --- a/apps/cli/src/mcp.ts +++ b/apps/cli/src/mcp.ts @@ -14,6 +14,7 @@ import { NodePathProvider, DatabaseManager } from '@openchatlab/node-runtime' import { getSessionMeta, getSessionOverview, getDatabaseSchema } from '@openchatlab/core' import { MCP_TOOL_REGISTRY, CoreDataProvider } from '@openchatlab/tools' import type { SessionListContext } from '@openchatlab/tools/src/definitions/sessions' +import { getVersion } from './version' const MCP_TOOL_PREFIX = 'chatlab_' @@ -73,7 +74,7 @@ export async function startMcpServer(): Promise { const server = new McpServer({ name: 'chatlab', - version: '0.0.1', + version: getVersion(), }) // --- 注册 Tools --- diff --git a/apps/cli/src/version.ts b/apps/cli/src/version.ts new file mode 100644 index 00000000..25caf638 --- /dev/null +++ b/apps/cli/src/version.ts @@ -0,0 +1,19 @@ +import { readFileSync } from 'fs' +import { resolve } from 'path' + +let cached: string | undefined + +/** + * Read version from apps/cli/package.json at runtime. + * Works for both tsx dev (src/) and bundled (dist/). + */ +export function getVersion(): string { + if (cached) return cached + try { + const pkgPath = resolve(__dirname, '../package.json') + cached = JSON.parse(readFileSync(pkgPath, 'utf-8')).version + } catch { + cached = '0.0.0-dev' + } + return cached! +} diff --git a/apps/cli/tsup.config.ts b/apps/cli/tsup.config.ts new file mode 100644 index 00000000..1d6b2cb3 --- /dev/null +++ b/apps/cli/tsup.config.ts @@ -0,0 +1,27 @@ +import { defineConfig } from 'tsup' + +export default defineConfig({ + entry: { + cli: 'src/cli.ts', + index: 'src/index.ts', + }, + format: ['esm'], + outDir: 'dist', + splitting: true, + sourcemap: true, + clean: true, + target: 'node20', + platform: 'node', + noExternal: [/^@openchatlab\//, 'stream-json'], + external: ['better-sqlite3', '@node-rs/jieba'], + banner: { + js: [ + "import { createRequire as __createRequire } from 'module';", + "import { dirname as __pathDirname } from 'path';", + "import { fileURLToPath as __fileURLToPath } from 'url';", + 'const require = __createRequire(import.meta.url);', + 'const __filename = __fileURLToPath(import.meta.url);', + 'const __dirname = __pathDirname(__filename);', + ].join('\n'), + }, +}) diff --git a/package.json b/package.json index 3efaa44a..49ffa06e 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dev:app": "vite --config vite.web.config.mts", "dev:serve": "bash scripts/dev-serve.sh", "dev:web": "pnpm run ensure:server-native && CHATLAB_AUTO_SERVE=1 vite --config vite.web.config.mts", - "ensure:server-native": "pnpm --filter @openchatlab/chatlab run ensure-native", + "ensure:server-native": "pnpm --filter chatlab-cli run ensure-native", "build:web": "vite build --config vite.web.config.mts", "format": "prettier --write .", "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 066f7b5a..a30cef78 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -96,9 +96,44 @@ importers: '@fastify/static': specifier: ^9.1.3 version: 9.1.3 + '@mariozechner/pi-agent-core': + specifier: 0.54.2 + version: 0.54.2(@modelcontextprotocol/sdk@1.29.0(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) + '@mariozechner/pi-ai': + specifier: 0.54.2 + version: 0.54.2(@modelcontextprotocol/sdk@1.29.0(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) '@modelcontextprotocol/sdk': specifier: ^1.12.1 version: 1.29.0(zod@3.25.76) + better-sqlite3: + specifier: ^12.4.6 + version: 12.6.2 + commander: + specifier: ^13.1.0 + version: 13.1.0 + fastify: + specifier: ^5.8.4 + version: 5.8.4 + gray-matter: + specifier: ^4.0.3 + version: 4.0.3 + js-tiktoken: + specifier: ^1.0.21 + version: 1.0.21 + smol-toml: + specifier: ^1.3.1 + version: 1.6.1 + stream-json: + specifier: ^1.9.1 + version: 1.9.1 + zod: + specifier: ^3.24.4 + version: 3.25.76 + optionalDependencies: + '@node-rs/jieba': + specifier: ^2.0.1 + version: 2.0.1 + devDependencies: '@openchatlab/config': specifier: workspace:* version: link:../../packages/config @@ -120,13 +155,12 @@ importers: '@openchatlab/tools': specifier: workspace:* version: link:../../packages/tools - commander: - specifier: ^13.1.0 - version: 13.1.0 - fastify: - specifier: ^5.8.4 - version: 5.8.4 - devDependencies: + '@types/better-sqlite3': + specifier: ^7.6.13 + version: 7.6.13 + tsup: + specifier: ^8.5.0 + version: 8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -2358,6 +2392,9 @@ packages: resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} engines: {node: '>=12'} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -2507,6 +2544,12 @@ packages: builder-util@26.4.1: resolution: {integrity: sha512-FlgH43XZ50w3UtS1RVGDWOz8v9qMXPC7upMtKMtBEnYdt1OVoS61NYhKm/4x+cIaWqJTXua0+VVPI+fSPGXNIw==} + bundle-require@5.1.0: + resolution: {integrity: sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + bytes@3.1.2: resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} engines: {node: '>= 0.8'} @@ -2558,6 +2601,10 @@ packages: resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + chokidar@4.0.3: + resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} + engines: {node: '>= 14.16.0'} + chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} @@ -2631,6 +2678,10 @@ packages: resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==} engines: {node: '>=18'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -3239,6 +3290,9 @@ packages: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} engines: {node: '>=10'} + fix-dts-default-cjs-exports@1.0.1: + resolution: {integrity: sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg==} + flat-cache@4.0.1: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} @@ -3655,6 +3709,10 @@ packages: jose@6.2.3: resolution: {integrity: sha512-YYVDInQKFJfR/xa3ojUTl8c2KoTwiL1R5Wg9YCydwH0x0B9grbzlg5HC7mMjCtUJjbQ/YnGEZIhI5tCgfTb4Hw==} + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-tiktoken@1.0.21: resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} @@ -3899,12 +3957,23 @@ packages: resolution: {integrity: sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==} engines: {node: '>= 12.0.0'} + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} linkifyjs@4.3.2: resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + local-pkg@1.1.2: resolution: {integrity: sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==} engines: {node: '>=14'} @@ -4134,6 +4203,9 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.11: resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} @@ -4419,6 +4491,10 @@ packages: resolution: {integrity: sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==} hasBin: true + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pkce-challenge@5.0.1: resolution: {integrity: sha512-wQ0b/W4Fr01qtpHlqSqspcj3EhBvimsdh0KlHhH8HRZnMsEa0ea2fTULOXOS9ccQr3om+GcGRk4e+isrZWV8qQ==} engines: {node: '>=16.20.0'} @@ -4433,6 +4509,24 @@ packages: resolution: {integrity: sha512-uysumyrvkUX0rX/dEVqt8gC3sTBzd4zoWfLeS29nb53imdaXVvLINYXTI2GNqzaMuvacNx4uJQ8+b3zXR0pkgQ==} engines: {node: '>=10.4.0'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss-selector-parser@6.1.2: resolution: {integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==} engines: {node: '>=4'} @@ -4616,6 +4710,10 @@ packages: resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} engines: {node: '>= 6'} + readdirp@4.1.2: + resolution: {integrity: sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==} + engines: {node: '>= 14.18.0'} + readdirp@5.0.0: resolution: {integrity: sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ==} engines: {node: '>= 20.19.0'} @@ -4652,6 +4750,10 @@ packages: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + resolve-pkg-maps@1.0.0: resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} @@ -4856,6 +4958,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.7.6: + resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} + engines: {node: '>= 12'} + speakingurl@14.0.1: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} @@ -4932,6 +5038,11 @@ packages: strnum@2.1.2: resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + sumchecker@3.0.1: resolution: {integrity: sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==} engines: {node: '>= 8.0'} @@ -4986,6 +5097,13 @@ packages: resolution: {integrity: sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==} engines: {node: '>=6.0.0'} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thread-stream@4.0.0: resolution: {integrity: sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==} engines: {node: '>=20'} @@ -4999,6 +5117,9 @@ packages: tiny-typed-emitter@2.1.0: resolution: {integrity: sha512-qVtvMxeXbVej0cQWKqVSSAHmKZEHAvxdF8HEUBFWts8h+xEo5m/lEiPakuyZ3BnCBjOD8i24kzNOiOLLgsSxhA==} + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + tinyexec@1.0.2: resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} engines: {node: '>=18'} @@ -5030,6 +5151,10 @@ packages: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + truncate-utf8-bytes@1.0.2: resolution: {integrity: sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==} @@ -5042,12 +5167,34 @@ packages: peerDependencies: typescript: '>=4.8.4' + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + tslib@2.3.0: resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==} tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@8.5.1: + resolution: {integrity: sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tsx@4.21.0: resolution: {integrity: sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==} engines: {node: '>=18.0.0'} @@ -8213,6 +8360,8 @@ snapshots: ansi-styles@6.2.3: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -8425,6 +8574,11 @@ snapshots: transitivePeerDependencies: - supports-color + bundle-require@5.1.0(esbuild@0.27.7): + dependencies: + esbuild: 0.27.7 + load-tsconfig: 0.2.5 + bytes@3.1.2: {} c12@3.3.3: @@ -8492,6 +8646,10 @@ snapshots: chalk@5.6.2: {} + chokidar@4.0.3: + dependencies: + readdirp: 4.1.2 + chokidar@5.0.0: dependencies: readdirp: 5.0.0 @@ -8552,6 +8710,8 @@ snapshots: commander@13.1.0: {} + commander@4.1.1: {} + commander@5.1.0: {} commander@9.5.0: @@ -9299,6 +9459,12 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 + fix-dts-default-cjs-exports@1.0.1: + dependencies: + magic-string: 0.30.21 + mlly: 1.8.0 + rollup: 4.57.1 + flat-cache@4.0.1: dependencies: flatted: 3.3.3 @@ -9780,6 +9946,8 @@ snapshots: jose@6.2.3: {} + joycon@3.1.1: {} + js-tiktoken@1.0.21: dependencies: base64-js: 1.5.1 @@ -9973,12 +10141,18 @@ snapshots: lightningcss-win32-arm64-msvc: 1.31.1 lightningcss-win32-x64-msvc: 1.31.1 + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + linkify-it@5.0.0: dependencies: uc.micro: 2.1.0 linkifyjs@4.3.2: {} + load-tsconfig@0.2.5: {} + local-pkg@1.1.2: dependencies: mlly: 1.8.0 @@ -10200,6 +10374,12 @@ snapshots: muggle-string@0.4.1: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.11: {} napi-build-utils@2.0.0: {} @@ -10462,6 +10642,8 @@ snapshots: sonic-boom: 4.2.1 thread-stream: 4.0.0 + pirates@4.0.7: {} + pkce-challenge@5.0.1: {} pkg-types@1.3.1: @@ -10482,6 +10664,15 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 + postcss-load-config@6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2): + dependencies: + lilconfig: 3.1.3 + optionalDependencies: + jiti: 2.6.1 + postcss: 8.5.6 + tsx: 4.21.0 + yaml: 2.8.2 + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 @@ -10739,6 +10930,8 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 + readdirp@4.1.2: {} + readdirp@5.0.0: {} real-require@0.2.0: {} @@ -10774,6 +10967,8 @@ snapshots: resolve-from@4.0.0: {} + resolve-from@5.0.0: {} + resolve-pkg-maps@1.0.0: {} responselike@2.0.1: @@ -11023,6 +11218,8 @@ snapshots: source-map@0.6.1: {} + source-map@0.7.6: {} + speakingurl@14.0.1: {} split2@4.2.0: {} @@ -11086,6 +11283,16 @@ snapshots: strnum@2.1.2: {} + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 + sumchecker@3.0.1: dependencies: debug: 4.4.3 @@ -11149,6 +11356,14 @@ snapshots: mkdirp: 0.5.6 rimraf: 2.6.3 + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + thread-stream@4.0.0: dependencies: real-require: 0.2.0 @@ -11161,6 +11376,8 @@ snapshots: tiny-typed-emitter@2.1.0: {} + tinyexec@0.3.2: {} + tinyexec@1.0.2: {} tinyglobby@0.2.15: @@ -11184,6 +11401,8 @@ snapshots: totalist@3.0.1: {} + tree-kill@1.2.2: {} + truncate-utf8-bytes@1.0.2: dependencies: utf8-byte-length: 1.0.5 @@ -11194,10 +11413,40 @@ snapshots: dependencies: typescript: 5.9.3 + ts-interface-checker@0.1.13: {} + tslib@2.3.0: {} tslib@2.8.1: {} + tsup@8.5.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(typescript@5.9.3)(yaml@2.8.2): + dependencies: + bundle-require: 5.1.0(esbuild@0.27.7) + cac: 6.7.14 + chokidar: 4.0.3 + consola: 3.4.2 + debug: 4.4.3 + esbuild: 0.27.7 + fix-dts-default-cjs-exports: 1.0.1 + joycon: 3.1.1 + picocolors: 1.1.1 + postcss-load-config: 6.0.1(jiti@2.6.1)(postcss@8.5.6)(tsx@4.21.0)(yaml@2.8.2) + resolve-from: 5.0.0 + rollup: 4.57.1 + source-map: 0.7.6 + sucrase: 3.35.1 + tinyexec: 0.3.2 + tinyglobby: 0.2.15 + tree-kill: 1.2.2 + optionalDependencies: + postcss: 8.5.6 + typescript: 5.9.3 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tsx@4.21.0: dependencies: esbuild: 0.27.7