mirror of
https://github.com/PawanOsman/ChatGPT.git
synced 2026-07-18 08:05:57 +02:00
7bb5801a8c
Replace the ChatGPT reverse proxy (Docker/proxy server) entirely with OpenCursor: a Cursor-like agentic coding extension for VS Code. - Remove proxy server, Dockerfiles, docker-compose setups, and CI workflows - Add agent loop with tools (files, shell, search, web, MCP), multi-provider LLM support (OpenAI-compatible, Ollama, llama.cpp) with OAuth - Add semantic indexing, workspace context, and @-mentions - Add sidebar chat + settings webview UI (React), inline review, personas, hooks, and approval policies - Switch to pnpm, esbuild bundling, and VS Code extension packaging
79 lines
1.9 KiB
JavaScript
79 lines
1.9 KiB
JavaScript
const esbuild = require("esbuild");
|
|
|
|
const production = process.argv.includes('--production');
|
|
const watch = process.argv.includes('--watch');
|
|
|
|
/**
|
|
* @type {import('esbuild').Plugin}
|
|
*/
|
|
const esbuildProblemMatcherPlugin = {
|
|
name: 'esbuild-problem-matcher',
|
|
|
|
setup(build) {
|
|
build.onStart(() => {
|
|
console.log('[watch] build started');
|
|
});
|
|
build.onEnd((result) => {
|
|
result.errors.forEach(({ text, location }) => {
|
|
console.error(`✘ [ERROR] ${text}`);
|
|
console.error(` ${location.file}:${location.line}:${location.column}:`);
|
|
});
|
|
console.log('[watch] build finished');
|
|
});
|
|
},
|
|
};
|
|
|
|
async function main() {
|
|
const ctx = await esbuild.context({
|
|
entryPoints: [
|
|
'src/extension.ts'
|
|
],
|
|
bundle: true,
|
|
format: 'cjs',
|
|
minify: production,
|
|
sourcemap: !production,
|
|
sourcesContent: false,
|
|
platform: 'node',
|
|
outfile: 'dist/extension.js',
|
|
external: ['vscode', '@huggingface/transformers', '@huggingface/hub', 'onnxruntime-node', 'sharp'],
|
|
logLevel: 'silent',
|
|
plugins: [
|
|
/* add to the end of plugins array */
|
|
esbuildProblemMatcherPlugin,
|
|
],
|
|
});
|
|
|
|
// React webview bundles (browser)
|
|
const webviewCtx = await esbuild.context({
|
|
entryPoints: {
|
|
sidebar: 'webview-ui/sidebar/main.tsx',
|
|
settings: 'webview-ui/settings/main.tsx',
|
|
},
|
|
bundle: true,
|
|
format: 'iife',
|
|
minify: production,
|
|
sourcemap: !production,
|
|
sourcesContent: false,
|
|
platform: 'browser',
|
|
target: ['es2020'],
|
|
outdir: 'dist/webview',
|
|
loader: { '.css': 'css' },
|
|
define: { 'process.env.NODE_ENV': production ? '"production"' : '"development"' },
|
|
logLevel: 'silent',
|
|
plugins: [esbuildProblemMatcherPlugin],
|
|
});
|
|
|
|
if (watch) {
|
|
await Promise.all([ctx.watch(), webviewCtx.watch()]);
|
|
} else {
|
|
await Promise.all([ctx.rebuild(), webviewCtx.rebuild()]);
|
|
await ctx.dispose();
|
|
await webviewCtx.dispose();
|
|
}
|
|
}
|
|
|
|
main().catch(e => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|