* feat: bundle mcp-server into release app so AI Chat works - Add esbuild bundle script (scripts/bundle-mcp-server.mjs) that compiles mcp-server/index.js and ws-bridge.js into self-contained CJS bundles - Output goes to src-tauri/resources/mcp-server/ (gitignored) - Add Tauri resources config to copy bundles into Contents/Resources/mcp-server/ - Update mcp_server_dir() to look in Contents/Resources/ (not Contents/) in release - Add bundle-mcp npm script; hook it into tauri beforeBuildCommand - Exclude generated resources from ESLint Previously AI Chat showed 'mcp-server not found at .../Contents/mcp-server' because the release path lacked the 'Resources' segment and no files were bundled. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ci: bundle mcp-server resources before Rust tests * fix: add mcp-server as pnpm workspace package so esbuild can resolve its deps in CI * fix: exclude src-tauri/target from eslint to fix CI lint failure --------- Co-authored-by: Test <test@test.com> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
46 lines
1.3 KiB
JavaScript
46 lines
1.3 KiB
JavaScript
/**
|
|
* Bundle the mcp-server Node.js files into self-contained CJS bundles
|
|
* that can be shipped as Tauri resources inside the .app bundle.
|
|
*
|
|
* Output: src-tauri/resources/mcp-server/{index.js,ws-bridge.js}
|
|
*/
|
|
import { build } from 'esbuild'
|
|
import { fileURLToPath } from 'url'
|
|
import { dirname, join } from 'path'
|
|
import { mkdirSync, writeFileSync } from 'fs'
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
const ROOT = join(__dirname, '..')
|
|
const SRC = join(ROOT, 'mcp-server')
|
|
const OUT = join(ROOT, 'src-tauri', 'resources', 'mcp-server')
|
|
|
|
mkdirSync(OUT, { recursive: true })
|
|
|
|
// Tell Node.js that this directory contains CJS bundles, even if the
|
|
// root package.json declares "type": "module".
|
|
writeFileSync(join(OUT, 'package.json'), JSON.stringify({ type: 'commonjs' }))
|
|
|
|
const shared = {
|
|
platform: 'node',
|
|
bundle: true,
|
|
format: 'cjs',
|
|
target: 'node18',
|
|
// Mark optional native bindings as external — ws works fine without them
|
|
external: ['bufferutil', 'utf-8-validate'],
|
|
logLevel: 'warning',
|
|
}
|
|
|
|
await build({
|
|
...shared,
|
|
entryPoints: [join(SRC, 'index.js')],
|
|
outfile: join(OUT, 'index.js'),
|
|
})
|
|
|
|
await build({
|
|
...shared,
|
|
entryPoints: [join(SRC, 'ws-bridge.js')],
|
|
outfile: join(OUT, 'ws-bridge.js'),
|
|
})
|
|
|
|
console.log('mcp-server bundled → src-tauri/resources/mcp-server/')
|