@ibealec/create-zed-bridge 1.0.0 → 1.0.2

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.
package/dist/index.js CHANGED
@@ -8,6 +8,9 @@ import fs from "fs-extra";
8
8
  import path from "path";
9
9
  import { execSync } from "child_process";
10
10
  import Enquirer from "enquirer";
11
+ import { fileURLToPath } from "url";
12
+ var __filename = fileURLToPath(import.meta.url);
13
+ var __dirname = path.dirname(__filename);
11
14
  var program = new Command();
12
15
  async function detectProject(cwd) {
13
16
  const packageJsonPath = path.join(cwd, "package.json");
@@ -65,11 +68,30 @@ function getInstallCommand(pm, packages, isDev = false) {
65
68
  }
66
69
  }
67
70
  async function installDependencies(pm, cwd, spinner) {
68
- const deps = ["@zed-controller/react-bridge"];
69
- const devDeps = ["@locator/runtime", "@locator/babel-jsx"];
71
+ const templatesDir = path.join(__dirname, "..", "templates");
72
+ const nodeModulesDir = path.join(cwd, "node_modules");
73
+ const zedControllerDir = path.join(nodeModulesDir, "@zed-controller");
74
+ spinner.text = "Installing @zed-controller/shared...";
75
+ await fs.ensureDir(zedControllerDir);
76
+ await fs.copy(
77
+ path.join(templatesDir, "@zed-controller", "shared"),
78
+ path.join(zedControllerDir, "shared")
79
+ );
70
80
  spinner.text = "Installing @zed-controller/react-bridge...";
71
- execSync(getInstallCommand(pm, deps), { cwd, stdio: "pipe" });
81
+ await fs.copy(
82
+ path.join(templatesDir, "@zed-controller", "react-bridge"),
83
+ path.join(zedControllerDir, "react-bridge")
84
+ );
85
+ spinner.text = "Installing react-bridge dependencies...";
86
+ const reactBridgeDeps = [
87
+ "@xterm/xterm@^5.5.0",
88
+ "@xterm/addon-fit@^0.10.0",
89
+ "@xterm/addon-webgl@^0.18.0",
90
+ "html2canvas@^1.4.1"
91
+ ];
92
+ execSync(getInstallCommand(pm, reactBridgeDeps), { cwd, stdio: "pipe" });
72
93
  spinner.text = "Installing LocatorJS dependencies...";
94
+ const devDeps = ["@locator/runtime", "@locator/babel-jsx"];
73
95
  execSync(getInstallCommand(pm, devDeps, true), { cwd, stdio: "pipe" });
74
96
  }
75
97
  function modifyViteConfig(configPath) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { execSync } from 'child_process';\nimport Enquirer from 'enquirer';\n\nconst program = new Command();\n\ninterface SetupOptions {\n serverUrl?: string;\n projectRoot?: string;\n skipInstall?: boolean;\n}\n\ninterface ProjectInfo {\n packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun';\n hasVite: boolean;\n hasReact: boolean;\n mainTsxPath: string | null;\n viteConfigPath: string | null;\n envExamplePath: string;\n srcDir: string;\n}\n\nasync function detectProject(cwd: string): Promise<ProjectInfo> {\n const packageJsonPath = path.join(cwd, 'package.json');\n\n if (!fs.existsSync(packageJsonPath)) {\n throw new Error('No package.json found. Please run this command in a React project directory.');\n }\n\n const packageJson = await fs.readJson(packageJsonPath);\n const allDeps = { ...packageJson.dependencies, ...packageJson.devDependencies };\n\n // Detect package manager\n let packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun' = 'npm';\n if (fs.existsSync(path.join(cwd, 'bun.lockb'))) packageManager = 'bun';\n else if (fs.existsSync(path.join(cwd, 'pnpm-lock.yaml'))) packageManager = 'pnpm';\n else if (fs.existsSync(path.join(cwd, 'yarn.lock'))) packageManager = 'yarn';\n\n // Detect Vite\n const hasVite = !!allDeps['vite'];\n\n // Detect React\n const hasReact = !!allDeps['react'];\n\n // Find vite config\n let viteConfigPath: string | null = null;\n const viteConfigNames = ['vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs'];\n for (const name of viteConfigNames) {\n const fullPath = path.join(cwd, name);\n if (fs.existsSync(fullPath)) {\n viteConfigPath = fullPath;\n break;\n }\n }\n\n // Find main.tsx or main.jsx\n let mainTsxPath: string | null = null;\n const srcDir = path.join(cwd, 'src');\n const mainNames = ['main.tsx', 'main.jsx', 'index.tsx', 'index.jsx'];\n for (const name of mainNames) {\n const fullPath = path.join(srcDir, name);\n if (fs.existsSync(fullPath)) {\n mainTsxPath = fullPath;\n break;\n }\n }\n\n return {\n packageManager,\n hasVite,\n hasReact,\n mainTsxPath,\n viteConfigPath,\n envExamplePath: path.join(cwd, '.env.local.example'),\n srcDir,\n };\n}\n\nfunction getInstallCommand(pm: string, packages: string[], isDev = false): string {\n const devFlag = isDev ? (pm === 'npm' ? '--save-dev' : '-D') : '';\n switch (pm) {\n case 'yarn':\n return `yarn add ${devFlag} ${packages.join(' ')}`;\n case 'pnpm':\n return `pnpm add ${devFlag} ${packages.join(' ')}`;\n case 'bun':\n return `bun add ${devFlag} ${packages.join(' ')}`;\n default:\n return `npm install ${devFlag} ${packages.join(' ')}`;\n }\n}\n\ntype Spinner = ReturnType<typeof ora>;\n\nasync function installDependencies(pm: string, cwd: string, spinner: Spinner): Promise<void> {\n const deps = ['@zed-controller/react-bridge'];\n const devDeps = ['@locator/runtime', '@locator/babel-jsx'];\n\n spinner.text = 'Installing @zed-controller/react-bridge...';\n execSync(getInstallCommand(pm, deps), { cwd, stdio: 'pipe' });\n\n spinner.text = 'Installing LocatorJS dependencies...';\n execSync(getInstallCommand(pm, devDeps, true), { cwd, stdio: 'pipe' });\n}\n\nfunction modifyViteConfig(configPath: string): { success: boolean; message: string } {\n let content = fs.readFileSync(configPath, 'utf-8');\n\n // Check if already configured\n if (content.includes('@locator/babel-jsx')) {\n return { success: true, message: 'LocatorJS already configured in vite.config' };\n }\n\n // Find the react plugin configuration\n const reactPluginRegex = /react\\s*\\(\\s*\\{/;\n const reactPluginSimpleRegex = /react\\s*\\(\\s*\\)/;\n\n if (reactPluginRegex.test(content)) {\n // React plugin has config object - add babel config\n content = content.replace(\n reactPluginRegex,\n `react({\n babel: {\n plugins: [\n // LocatorJS - adds source location data to elements (dev only)\n ...(mode === 'development' ? [require.resolve('@locator/babel-jsx')] : []),\n ],\n },`\n );\n\n // Ensure mode is a parameter in defineConfig\n if (!content.includes('({ mode })') && !content.includes('{ mode }')) {\n content = content.replace(\n /defineConfig\\s*\\(\\s*\\{/,\n 'defineConfig(({ mode }) => ({'\n );\n // Need to close the function properly\n const lastBrace = content.lastIndexOf('});');\n if (lastBrace !== -1) {\n content = content.slice(0, lastBrace) + '}));';\n }\n }\n } else if (reactPluginSimpleRegex.test(content)) {\n // React plugin with no config - add full babel config\n content = content.replace(\n reactPluginSimpleRegex,\n `react({\n babel: {\n plugins: [\n // LocatorJS - adds source location data to elements (dev only)\n ...(mode === 'development' ? [require.resolve('@locator/babel-jsx')] : []),\n ],\n },\n })`\n );\n\n // Ensure mode is a parameter\n if (!content.includes('({ mode })') && !content.includes('{ mode }')) {\n content = content.replace(\n /defineConfig\\s*\\(\\s*\\{/,\n 'defineConfig(({ mode }) => ({'\n );\n const lastBrace = content.lastIndexOf('});');\n if (lastBrace !== -1) {\n content = content.slice(0, lastBrace) + '}));';\n }\n }\n } else {\n return {\n success: false,\n message: 'Could not find react() plugin in vite.config. Please add LocatorJS manually.'\n };\n }\n\n fs.writeFileSync(configPath, content);\n return { success: true, message: 'Vite config updated with LocatorJS' };\n}\n\nfunction createEnvExample(envPath: string, serverUrl: string, projectRoot: string): void {\n const content = `# Zed Controller Integration\n# Get your token by running: npm run token --workspace=server (in zed-controller)\nVITE_ZED_SERVER_URL=${serverUrl}\nVITE_ZED_TOKEN=your-jwt-token-here\nVITE_PROJECT_ROOT=${projectRoot}\n`;\n fs.writeFileSync(envPath, content);\n}\n\nfunction generateMainTsxCode(isTypeScript: boolean): string {\n return `\n// ============================================\n// Zed Controller / React Bridge Setup\n// Add these imports at the top of your file:\n// ============================================\n\nimport { ClaudeBridgeProvider } from '@zed-controller/react-bridge';\n\n// Add LocatorJS runtime initialization (before ReactDOM.render):\nif (import.meta.env.DEV) {\n import('@locator/runtime').then((locator) => {\n locator.default({});\n });\n}\n\n// Environment variables:\nconst ZED_SERVER_URL = import.meta.env.VITE_ZED_SERVER_URL || 'https://localhost:3000';\nconst ZED_TOKEN = import.meta.env.VITE_ZED_TOKEN || '';\nconst PROJECT_ROOT = import.meta.env.VITE_PROJECT_ROOT || '';\n\n// ============================================\n// Wrap your app with ClaudeBridgeProvider:\n// ============================================\n\n// Before:\n// ReactDOM.createRoot(document.getElementById('root')!).render(\n// <React.StrictMode>\n// <App />\n// </React.StrictMode>\n// );\n\n// After:\n// ReactDOM.createRoot(document.getElementById('root')!).render(\n// <React.StrictMode>\n// <ClaudeBridgeProvider\n// serverUrl={ZED_SERVER_URL}\n// token={ZED_TOKEN}\n// projectRoot={PROJECT_ROOT}\n// questionShortcut=\"Meta+Shift+L\"\n// enabled={import.meta.env.DEV && !!ZED_TOKEN}\n// onTaskCreated={(taskId) => console.log('[ClaudeBridge] Task created:', taskId)}\n// onTaskCompleted={(taskId) => console.log('[ClaudeBridge] Task completed:', taskId)}\n// onError={(error) => console.error('[ClaudeBridge] Error:', error)}\n// >\n// <App />\n// </ClaudeBridgeProvider>\n// </React.StrictMode>\n// );\n`;\n}\n\nasync function runSetup(options: SetupOptions): Promise<void> {\n const cwd = process.cwd();\n\n console.log(chalk.bold.cyan('\\nšŸš€ Zed Controller / React Bridge Setup\\n'));\n\n const spinner = ora('Detecting project...').start();\n\n let projectInfo: ProjectInfo;\n try {\n projectInfo = await detectProject(cwd);\n } catch (error) {\n spinner.fail((error as Error).message);\n process.exit(1);\n }\n\n if (!projectInfo.hasReact) {\n spinner.fail('This does not appear to be a React project. React is required.');\n process.exit(1);\n }\n\n if (!projectInfo.hasVite) {\n spinner.warn('Vite not detected. LocatorJS setup will need to be done manually.');\n }\n\n spinner.succeed(`Detected ${projectInfo.packageManager} project with ${projectInfo.hasVite ? 'Vite + ' : ''}React`);\n\n // Gather configuration\n let serverUrl = options.serverUrl;\n let projectRoot = options.projectRoot;\n\n if (!serverUrl || !projectRoot) {\n const answers = await Enquirer.prompt<{ serverUrl: string; projectRoot: string }>([\n {\n type: 'input',\n name: 'serverUrl',\n message: 'Zed Controller server URL:',\n initial: serverUrl || 'https://localhost:3000',\n skip: !!serverUrl,\n },\n {\n type: 'input',\n name: 'projectRoot',\n message: 'Project root path (absolute):',\n initial: projectRoot || cwd,\n skip: !!projectRoot,\n },\n ]);\n serverUrl = serverUrl || answers.serverUrl;\n projectRoot = projectRoot || answers.projectRoot;\n }\n\n // Install dependencies\n if (!options.skipInstall) {\n spinner.start('Installing dependencies...');\n try {\n await installDependencies(projectInfo.packageManager, cwd, spinner);\n spinner.succeed('Dependencies installed');\n } catch (error) {\n spinner.fail('Failed to install dependencies');\n console.error(chalk.red((error as Error).message));\n process.exit(1);\n }\n }\n\n // Modify Vite config\n if (projectInfo.viteConfigPath) {\n spinner.start('Configuring Vite...');\n const result = modifyViteConfig(projectInfo.viteConfigPath);\n if (result.success) {\n spinner.succeed(result.message);\n } else {\n spinner.warn(result.message);\n }\n }\n\n // Create .env.local.example\n spinner.start('Creating .env.local.example...');\n createEnvExample(projectInfo.envExamplePath, serverUrl!, projectRoot!);\n spinner.succeed('Created .env.local.example');\n\n // Generate main.tsx instructions\n console.log(chalk.bold.yellow('\\nšŸ“ Manual Setup Required:\\n'));\n console.log(chalk.gray('Add the following to your main entry file (main.tsx or index.tsx):'));\n console.log(chalk.cyan(generateMainTsxCode(projectInfo.mainTsxPath?.endsWith('.tsx') ?? true)));\n\n // Final instructions\n console.log(chalk.bold.green('\\nāœ… Setup Complete!\\n'));\n console.log(chalk.white('Next steps:'));\n console.log(chalk.gray(' 1. Copy .env.local.example to .env.local'));\n console.log(chalk.gray(' 2. Get your JWT token from zed-controller server'));\n console.log(chalk.gray(' 3. Update VITE_ZED_TOKEN in .env.local'));\n console.log(chalk.gray(' 4. Add ClaudeBridgeProvider wrapper to your main.tsx (see above)'));\n console.log(chalk.gray(' 5. Start your dev server and press Meta+Shift+L to test'));\n console.log();\n}\n\nprogram\n .name('@ibealec/create-zed-bridge')\n .description('Setup @zed-controller/react-bridge and LocatorJS in your React project')\n .version('1.0.0')\n .option('-s, --server-url <url>', 'Zed Controller server URL')\n .option('-p, --project-root <path>', 'Project root path')\n .option('--skip-install', 'Skip installing dependencies')\n .action(runSetup);\n\nprogram.parse();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { Command } from 'commander';\nimport chalk from 'chalk';\nimport ora from 'ora';\nimport fs from 'fs-extra';\nimport path from 'path';\nimport { execSync } from 'child_process';\nimport Enquirer from 'enquirer';\nimport { fileURLToPath } from 'url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nconst program = new Command();\n\ninterface SetupOptions {\n serverUrl?: string;\n projectRoot?: string;\n skipInstall?: boolean;\n}\n\ninterface ProjectInfo {\n packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun';\n hasVite: boolean;\n hasReact: boolean;\n mainTsxPath: string | null;\n viteConfigPath: string | null;\n envExamplePath: string;\n srcDir: string;\n}\n\nasync function detectProject(cwd: string): Promise<ProjectInfo> {\n const packageJsonPath = path.join(cwd, 'package.json');\n\n if (!fs.existsSync(packageJsonPath)) {\n throw new Error('No package.json found. Please run this command in a React project directory.');\n }\n\n const packageJson = await fs.readJson(packageJsonPath);\n const allDeps = { ...packageJson.dependencies, ...packageJson.devDependencies };\n\n // Detect package manager\n let packageManager: 'npm' | 'yarn' | 'pnpm' | 'bun' = 'npm';\n if (fs.existsSync(path.join(cwd, 'bun.lockb'))) packageManager = 'bun';\n else if (fs.existsSync(path.join(cwd, 'pnpm-lock.yaml'))) packageManager = 'pnpm';\n else if (fs.existsSync(path.join(cwd, 'yarn.lock'))) packageManager = 'yarn';\n\n // Detect Vite\n const hasVite = !!allDeps['vite'];\n\n // Detect React\n const hasReact = !!allDeps['react'];\n\n // Find vite config\n let viteConfigPath: string | null = null;\n const viteConfigNames = ['vite.config.ts', 'vite.config.js', 'vite.config.mts', 'vite.config.mjs'];\n for (const name of viteConfigNames) {\n const fullPath = path.join(cwd, name);\n if (fs.existsSync(fullPath)) {\n viteConfigPath = fullPath;\n break;\n }\n }\n\n // Find main.tsx or main.jsx\n let mainTsxPath: string | null = null;\n const srcDir = path.join(cwd, 'src');\n const mainNames = ['main.tsx', 'main.jsx', 'index.tsx', 'index.jsx'];\n for (const name of mainNames) {\n const fullPath = path.join(srcDir, name);\n if (fs.existsSync(fullPath)) {\n mainTsxPath = fullPath;\n break;\n }\n }\n\n return {\n packageManager,\n hasVite,\n hasReact,\n mainTsxPath,\n viteConfigPath,\n envExamplePath: path.join(cwd, '.env.local.example'),\n srcDir,\n };\n}\n\nfunction getInstallCommand(pm: string, packages: string[], isDev = false): string {\n const devFlag = isDev ? (pm === 'npm' ? '--save-dev' : '-D') : '';\n switch (pm) {\n case 'yarn':\n return `yarn add ${devFlag} ${packages.join(' ')}`;\n case 'pnpm':\n return `pnpm add ${devFlag} ${packages.join(' ')}`;\n case 'bun':\n return `bun add ${devFlag} ${packages.join(' ')}`;\n default:\n return `npm install ${devFlag} ${packages.join(' ')}`;\n }\n}\n\ntype Spinner = ReturnType<typeof ora>;\n\nasync function installDependencies(pm: string, cwd: string, spinner: Spinner): Promise<void> {\n // Path to bundled templates (relative to dist/index.js -> ../templates)\n const templatesDir = path.join(__dirname, '..', 'templates');\n const nodeModulesDir = path.join(cwd, 'node_modules');\n const zedControllerDir = path.join(nodeModulesDir, '@zed-controller');\n\n // Copy bundled @zed-controller packages to node_modules\n spinner.text = 'Installing @zed-controller/shared...';\n await fs.ensureDir(zedControllerDir);\n await fs.copy(\n path.join(templatesDir, '@zed-controller', 'shared'),\n path.join(zedControllerDir, 'shared')\n );\n\n spinner.text = 'Installing @zed-controller/react-bridge...';\n await fs.copy(\n path.join(templatesDir, '@zed-controller', 'react-bridge'),\n path.join(zedControllerDir, 'react-bridge')\n );\n\n // Install react-bridge's npm dependencies\n spinner.text = 'Installing react-bridge dependencies...';\n const reactBridgeDeps = [\n '@xterm/xterm@^5.5.0',\n '@xterm/addon-fit@^0.10.0',\n '@xterm/addon-webgl@^0.18.0',\n 'html2canvas@^1.4.1'\n ];\n execSync(getInstallCommand(pm, reactBridgeDeps), { cwd, stdio: 'pipe' });\n\n // Install LocatorJS dev dependencies\n spinner.text = 'Installing LocatorJS dependencies...';\n const devDeps = ['@locator/runtime', '@locator/babel-jsx'];\n execSync(getInstallCommand(pm, devDeps, true), { cwd, stdio: 'pipe' });\n}\n\nfunction modifyViteConfig(configPath: string): { success: boolean; message: string } {\n let content = fs.readFileSync(configPath, 'utf-8');\n\n // Check if already configured\n if (content.includes('@locator/babel-jsx')) {\n return { success: true, message: 'LocatorJS already configured in vite.config' };\n }\n\n // Find the react plugin configuration\n const reactPluginRegex = /react\\s*\\(\\s*\\{/;\n const reactPluginSimpleRegex = /react\\s*\\(\\s*\\)/;\n\n if (reactPluginRegex.test(content)) {\n // React plugin has config object - add babel config\n content = content.replace(\n reactPluginRegex,\n `react({\n babel: {\n plugins: [\n // LocatorJS - adds source location data to elements (dev only)\n ...(mode === 'development' ? [require.resolve('@locator/babel-jsx')] : []),\n ],\n },`\n );\n\n // Ensure mode is a parameter in defineConfig\n if (!content.includes('({ mode })') && !content.includes('{ mode }')) {\n content = content.replace(\n /defineConfig\\s*\\(\\s*\\{/,\n 'defineConfig(({ mode }) => ({'\n );\n // Need to close the function properly\n const lastBrace = content.lastIndexOf('});');\n if (lastBrace !== -1) {\n content = content.slice(0, lastBrace) + '}));';\n }\n }\n } else if (reactPluginSimpleRegex.test(content)) {\n // React plugin with no config - add full babel config\n content = content.replace(\n reactPluginSimpleRegex,\n `react({\n babel: {\n plugins: [\n // LocatorJS - adds source location data to elements (dev only)\n ...(mode === 'development' ? [require.resolve('@locator/babel-jsx')] : []),\n ],\n },\n })`\n );\n\n // Ensure mode is a parameter\n if (!content.includes('({ mode })') && !content.includes('{ mode }')) {\n content = content.replace(\n /defineConfig\\s*\\(\\s*\\{/,\n 'defineConfig(({ mode }) => ({'\n );\n const lastBrace = content.lastIndexOf('});');\n if (lastBrace !== -1) {\n content = content.slice(0, lastBrace) + '}));';\n }\n }\n } else {\n return {\n success: false,\n message: 'Could not find react() plugin in vite.config. Please add LocatorJS manually.'\n };\n }\n\n fs.writeFileSync(configPath, content);\n return { success: true, message: 'Vite config updated with LocatorJS' };\n}\n\nfunction createEnvExample(envPath: string, serverUrl: string, projectRoot: string): void {\n const content = `# Zed Controller Integration\n# Get your token by running: npm run token --workspace=server (in zed-controller)\nVITE_ZED_SERVER_URL=${serverUrl}\nVITE_ZED_TOKEN=your-jwt-token-here\nVITE_PROJECT_ROOT=${projectRoot}\n`;\n fs.writeFileSync(envPath, content);\n}\n\nfunction generateMainTsxCode(isTypeScript: boolean): string {\n return `\n// ============================================\n// Zed Controller / React Bridge Setup\n// Add these imports at the top of your file:\n// ============================================\n\nimport { ClaudeBridgeProvider } from '@zed-controller/react-bridge';\n\n// Add LocatorJS runtime initialization (before ReactDOM.render):\nif (import.meta.env.DEV) {\n import('@locator/runtime').then((locator) => {\n locator.default({});\n });\n}\n\n// Environment variables:\nconst ZED_SERVER_URL = import.meta.env.VITE_ZED_SERVER_URL || 'https://localhost:3000';\nconst ZED_TOKEN = import.meta.env.VITE_ZED_TOKEN || '';\nconst PROJECT_ROOT = import.meta.env.VITE_PROJECT_ROOT || '';\n\n// ============================================\n// Wrap your app with ClaudeBridgeProvider:\n// ============================================\n\n// Before:\n// ReactDOM.createRoot(document.getElementById('root')!).render(\n// <React.StrictMode>\n// <App />\n// </React.StrictMode>\n// );\n\n// After:\n// ReactDOM.createRoot(document.getElementById('root')!).render(\n// <React.StrictMode>\n// <ClaudeBridgeProvider\n// serverUrl={ZED_SERVER_URL}\n// token={ZED_TOKEN}\n// projectRoot={PROJECT_ROOT}\n// questionShortcut=\"Meta+Shift+L\"\n// enabled={import.meta.env.DEV && !!ZED_TOKEN}\n// onTaskCreated={(taskId) => console.log('[ClaudeBridge] Task created:', taskId)}\n// onTaskCompleted={(taskId) => console.log('[ClaudeBridge] Task completed:', taskId)}\n// onError={(error) => console.error('[ClaudeBridge] Error:', error)}\n// >\n// <App />\n// </ClaudeBridgeProvider>\n// </React.StrictMode>\n// );\n`;\n}\n\nasync function runSetup(options: SetupOptions): Promise<void> {\n const cwd = process.cwd();\n\n console.log(chalk.bold.cyan('\\nšŸš€ Zed Controller / React Bridge Setup\\n'));\n\n const spinner = ora('Detecting project...').start();\n\n let projectInfo: ProjectInfo;\n try {\n projectInfo = await detectProject(cwd);\n } catch (error) {\n spinner.fail((error as Error).message);\n process.exit(1);\n }\n\n if (!projectInfo.hasReact) {\n spinner.fail('This does not appear to be a React project. React is required.');\n process.exit(1);\n }\n\n if (!projectInfo.hasVite) {\n spinner.warn('Vite not detected. LocatorJS setup will need to be done manually.');\n }\n\n spinner.succeed(`Detected ${projectInfo.packageManager} project with ${projectInfo.hasVite ? 'Vite + ' : ''}React`);\n\n // Gather configuration\n let serverUrl = options.serverUrl;\n let projectRoot = options.projectRoot;\n\n if (!serverUrl || !projectRoot) {\n const answers = await Enquirer.prompt<{ serverUrl: string; projectRoot: string }>([\n {\n type: 'input',\n name: 'serverUrl',\n message: 'Zed Controller server URL:',\n initial: serverUrl || 'https://localhost:3000',\n skip: !!serverUrl,\n },\n {\n type: 'input',\n name: 'projectRoot',\n message: 'Project root path (absolute):',\n initial: projectRoot || cwd,\n skip: !!projectRoot,\n },\n ]);\n serverUrl = serverUrl || answers.serverUrl;\n projectRoot = projectRoot || answers.projectRoot;\n }\n\n // Install dependencies\n if (!options.skipInstall) {\n spinner.start('Installing dependencies...');\n try {\n await installDependencies(projectInfo.packageManager, cwd, spinner);\n spinner.succeed('Dependencies installed');\n } catch (error) {\n spinner.fail('Failed to install dependencies');\n console.error(chalk.red((error as Error).message));\n process.exit(1);\n }\n }\n\n // Modify Vite config\n if (projectInfo.viteConfigPath) {\n spinner.start('Configuring Vite...');\n const result = modifyViteConfig(projectInfo.viteConfigPath);\n if (result.success) {\n spinner.succeed(result.message);\n } else {\n spinner.warn(result.message);\n }\n }\n\n // Create .env.local.example\n spinner.start('Creating .env.local.example...');\n createEnvExample(projectInfo.envExamplePath, serverUrl!, projectRoot!);\n spinner.succeed('Created .env.local.example');\n\n // Generate main.tsx instructions\n console.log(chalk.bold.yellow('\\nšŸ“ Manual Setup Required:\\n'));\n console.log(chalk.gray('Add the following to your main entry file (main.tsx or index.tsx):'));\n console.log(chalk.cyan(generateMainTsxCode(projectInfo.mainTsxPath?.endsWith('.tsx') ?? true)));\n\n // Final instructions\n console.log(chalk.bold.green('\\nāœ… Setup Complete!\\n'));\n console.log(chalk.white('Next steps:'));\n console.log(chalk.gray(' 1. Copy .env.local.example to .env.local'));\n console.log(chalk.gray(' 2. Get your JWT token from zed-controller server'));\n console.log(chalk.gray(' 3. Update VITE_ZED_TOKEN in .env.local'));\n console.log(chalk.gray(' 4. Add ClaudeBridgeProvider wrapper to your main.tsx (see above)'));\n console.log(chalk.gray(' 5. Start your dev server and press Meta+Shift+L to test'));\n console.log();\n}\n\nprogram\n .name('@ibealec/create-zed-bridge')\n .description('Setup @zed-controller/react-bridge and LocatorJS in your React project')\n .version('1.0.0')\n .option('-s, --server-url <url>', 'Zed Controller server URL')\n .option('-p, --project-root <path>', 'Project root path')\n .option('--skip-install', 'Skip installing dependencies')\n .action(runSetup);\n\nprogram.parse();\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ibealec/create-zed-bridge",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "Setup script for @zed-controller/react-bridge and LocatorJS integration",
5
5
  "type": "module",
6
6
  "bin": {