Files
ide/vite.config.ts
zooqueen a9815e515d Hanzo — an AI-native IDE in Rust
A ground-up desktop IDE: the Engram memory system, tree-sitter code
intelligence, a sandboxed execution engine and a multi-agent coding
engine, all in compiled Rust, on the VS Code workbench.

Identity is Hanzo IAM (hanzo.id) through the Hanzo CLI, tools arrive
over MCP from `hanzo-mcp`, models come from a local engine if one is
running or api.hanzo.ai if not, and a running editor is a peer on the
local ZAP bus at ~/.hanzo/ide.sock. The IDE and the CLI share one home
at ~/.hanzo.

Redistributed third-party software is listed in THIRD-PARTY-NOTICES.md.
2026-09-01 13:14:04 -07:00

136 lines
6.1 KiB
TypeScript

import { defineConfig } from 'vite'
import path from 'path'
import { resolve } from 'path'
// https://vitejs.dev/config/
export default defineConfig({
server: {
port: 5180,
headers: {
// Required for SharedArrayBuffer (used by @codingame extension host worker)
'Cross-Origin-Opener-Policy': 'same-origin',
'Cross-Origin-Embedder-Policy': 'credentialless',
},
},
build: {
target: 'esnext',
rollupOptions: {
// Two HTML entries: index.html boots the full workbench, chat.html
// is the detached-chat window's slim entry that mounts only the
// chat panel (no Monaco, no workbench).
input: {
main: resolve(__dirname, 'index.html'),
chat: resolve(__dirname, 'chat.html'),
},
output: {
// Keep @codingame chunks manageable
manualChunks: (id) => {
if (id.includes('@codingame/monaco-vscode-api')) return 'vscode-api'
if (id.includes('@codingame/monaco-vscode')) return 'vscode-overrides'
},
},
},
},
optimizeDeps: {
// Exclude ALL @codingame packages from pre-bundling — they use dynamic imports
exclude: [
'@codingame/monaco-vscode-api',
// Core platform
'@codingame/monaco-vscode-base-service-override',
'@codingame/monaco-vscode-host-service-override',
'@codingame/monaco-vscode-environment-service-override',
'@codingame/monaco-vscode-log-service-override',
'@codingame/monaco-vscode-lifecycle-service-override',
'@codingame/monaco-vscode-remote-agent-service-override',
// Files, models, working copy, editor
'@codingame/monaco-vscode-files-service-override',
'@codingame/monaco-vscode-model-service-override',
'@codingame/monaco-vscode-working-copy-service-override',
'@codingame/monaco-vscode-editor-service-override',
// Extensions
'@codingame/monaco-vscode-extensions-service-override',
'@codingame/monaco-vscode-extension-gallery-service-override',
// Theme, language, syntax
'@codingame/monaco-vscode-theme-service-override',
'@codingame/monaco-vscode-textmate-service-override',
'@codingame/monaco-vscode-languages-service-override',
'@codingame/monaco-vscode-language-detection-worker-service-override',
'@codingame/monaco-vscode-snippets-service-override',
'@codingame/monaco-vscode-emmet-service-override',
// Configuration, keybindings, preferences
'@codingame/monaco-vscode-configuration-service-override',
'@codingame/monaco-vscode-keybindings-service-override',
'@codingame/monaco-vscode-preferences-service-override',
// UI services
'@codingame/monaco-vscode-markers-service-override',
'@codingame/monaco-vscode-quickaccess-service-override',
'@codingame/monaco-vscode-notifications-service-override',
'@codingame/monaco-vscode-dialogs-service-override',
'@codingame/monaco-vscode-output-service-override',
'@codingame/monaco-vscode-accessibility-service-override',
// Views
'@codingame/monaco-vscode-explorer-service-override',
'@codingame/monaco-vscode-search-service-override',
'@codingame/monaco-vscode-scm-service-override',
'@codingame/monaco-vscode-outline-service-override',
'@codingame/monaco-vscode-timeline-service-override',
'@codingame/monaco-vscode-comments-service-override',
// Terminal
'@codingame/monaco-vscode-terminal-service-override',
// Storage, trust, auth, user data
'@codingame/monaco-vscode-storage-service-override',
'@codingame/monaco-vscode-workspace-trust-service-override',
'@codingame/monaco-vscode-secret-storage-service-override',
'@codingame/monaco-vscode-authentication-service-override',
'@codingame/monaco-vscode-user-data-sync-service-override',
'@codingame/monaco-vscode-user-data-profile-service-override',
'@codingame/monaco-vscode-edit-sessions-service-override',
// Debug, testing, tasks
'@codingame/monaco-vscode-debug-service-override',
'@codingame/monaco-vscode-testing-service-override',
'@codingame/monaco-vscode-task-service-override',
// Editor features
'@codingame/monaco-vscode-multi-diff-editor-service-override',
'@codingame/monaco-vscode-performance-service-override',
'@codingame/monaco-vscode-localization-service-override',
'@codingame/monaco-vscode-telemetry-service-override',
// Welcome, chat, notebook, etc.
'@codingame/monaco-vscode-welcome-service-override',
'@codingame/monaco-vscode-chat-service-override',
'@codingame/monaco-vscode-notebook-service-override',
'@codingame/monaco-vscode-interactive-service-override',
'@codingame/monaco-vscode-speech-service-override',
'@codingame/monaco-vscode-update-service-override',
'@codingame/monaco-vscode-relauncher-service-override',
// Workbench shell
'@codingame/monaco-vscode-workbench-service-override',
// Default extensions (all built-in VS Code extensions)
'@codingame/monaco-vscode-all-default-extensions',
'@codingame/monaco-vscode-theme-defaults-default-extension',
],
},
resolve: {
alias: {
// VS Code asks for its workers under monaco-editor's tree; this package
// keeps them in workers/. Without this the request fell through to the
// dev server's HTML fallback and the extension host got a page instead
// of a worker. Listed first — earlier keys win.
'monaco-editor/esm/vs/editor/editor.worker.js': resolve(
__dirname,
'node_modules/@codingame/monaco-vscode-api/workers/editor.worker.js',
),
path: 'path-browserify',
// An absolute path, not the bare specifier. VS Code builds its worker
// URLs by appending to this, and a bare specifier produced
// `/@fs/@codingame/…`, which does not resolve — the dev server answered
// those with index.html, so the extension-host iframe booted a second
// copy of the workbench instead of loading a worker.
'monaco-editor': resolve(__dirname, 'node_modules/@codingame/monaco-vscode-api/monaco'),
},
dedupe: ['@codingame/monaco-vscode-api'],
},
worker: {
format: 'es',
},
})