From 561be99e8b188b700d03d7ee79bf10001d81a4d0 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Tue, 20 May 2025 12:41:17 -0500 Subject: [PATCH 01/10] Squash commits. --- Dockerfile | 36 ++++++++++++++++++ build-docker.sh | 3 ++ bun.lockb | Bin 290406 -> 325853 bytes src/cli.ts | 97 ++++++++++++++++++++++++++++++++++++++++-------- 4 files changed, 121 insertions(+), 15 deletions(-) create mode 100644 Dockerfile create mode 100755 build-docker.sh diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..e833a38 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +FROM node:20-slim + +# Set pipe fail option to properly handle errors +SHELL ["/bin/bash", "-o", "pipefail", "-c"] + +# Install required packages including Python for native module compilation +RUN apt-get update && apt-get install -y \ + git python3 make g++ curl unzip bash \ + build-essential python3 git && \ + rm -rf /var/lib/apt/lists/* + +# Install bun +RUN curl -fsSL https://bun.sh/install | bash +ENV PATH=/root/.bun/bin:$PATH + +# Create necessary directories +RUN mkdir -p /aidev /workspace +WORKDIR /aidev + +# Install dependencies at build time +# We'll copy package.json and bun.lockb during build +COPY . ./ + +# Install dependencies with more verbose output and rebuild native modules +# Install dependencies and properly rebuild native modules for the current architecture +RUN bun install --verbose \ + && cd node_modules/tree-sitter-typescript \ + && npm rebuild --build-from-source \ + && cd ../tree-sitter \ + && npm rebuild --build-from-source \ + && npm rebuild tree-sitter-go --build-from-source + +# We'll mount the source code and workspace at runtime +# This allows us to run the CLI without rebuilding the image for code changes + +CMD ["bun", "/aidev/src/cli.ts"] diff --git a/build-docker.sh b/build-docker.sh new file mode 100755 index 0000000..303c968 --- /dev/null +++ b/build-docker.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build --platform=linux/amd64 -t aidev . diff --git a/bun.lockb b/bun.lockb index 252730e2b8d257254b501ef53b0ad1b7d92dd7cb..288f87dd9dfb4c68c18625b6c348cf1452b7b3a0 100755 GIT binary patch delta 92329 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 delta 65145 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 { - if (options.cwd) { - process.chdir(options.cwd) + if (options.docker) { + if (!options.oneShot) { + throw new Error('The --one-shot option requires a prompt string.') + } + if (!options.yolo) { + throw new Error('The --yolo option is required when using --docker.') + } + + runInDocker(options) + } else { + if (options.cwd) { + process.chdir(options.cwd) + } + + chat( + preferences, + rules, + providers, + embeddingsClients, + tracker, + options.history, + options.port, + options.oneShot, + options.yolo, + ) } - - chat( - preferences, - rules, - providers, - embeddingsClients, - tracker, - options.history, - options.port, - options.oneShot, - options.yolo, - ) }) program.parse(process.argv) @@ -276,4 +291,56 @@ function attentionGetter(command: string): () => void { } } +/** + * Runs the CLI in a Docker container with the current workspace copied into it + */ +function runInDocker(options: any) { + const currentDir = process.cwd() + const dockerImage = 'aidev' + const containerWorkDir = '/workspace' + + // Find the aidev root directory (where package.json is located) + const scriptDir = __dirname + const aidevRootDir = scriptDir.substring(0, scriptDir.indexOf('/src')) + + // Build the Docker command to run the CLI + const dockerArgs = ['run', '--rm', '-it'] + + // Mount the target workspace (current dir or --cwd) as /workspace + const targetDir = options.cwd || currentDir + dockerArgs.push('-v', `${targetDir}:${containerWorkDir}`) + + // Mount only necessary source code and config files (excluding node_modules) as read-only + dockerArgs.push('-v', `${aidevRootDir}/src:/aidev/src:ro`) + dockerArgs.push('-v', `${aidevRootDir}/configs:/aidev/configs:ro`) + dockerArgs.push('-v', `${aidevRootDir}/scripts:/aidev/scripts:ro`) // Include scripts directory + + // Set the working directory inside the container + dockerArgs.push('-w', containerWorkDir) + + // Forward all CLI options to the container command, except --docker itself + const cliArgs = ['bun', '/aidev/src/cli.ts'] + + if (options.history) cliArgs.push('--history', options.history) + if (options.port) cliArgs.push('--port', options.port.toString()) + if (options.cwd) cliArgs.push('--cwd', '/workspace') + if (options.oneShot) cliArgs.push('--one-shot', options.oneShot) + if (options.yolo) cliArgs.push('--yolo') + + console.log(`Starting aidev in Docker container using image ${dockerImage}...`) + console.log(`Mounting target directory ${targetDir} to ${containerWorkDir}`) + console.log(`Mounting aidev source code from ${aidevRootDir}/src to /aidev/src (read-only)`) + + // Execute the Docker command + const dockerProcess = spawn('docker', dockerArgs.concat(dockerImage, ...cliArgs), { + stdio: 'inherit', + }) + + // Handle process exit + dockerProcess.on('close', code => { + console.log(`Docker container exited with code ${code}`) + process.exit(code || 0) + }) +} + main() From bc206b4ef368cf1ab83159174e4748b47d5af9a8 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Tue, 20 May 2025 21:57:34 -0500 Subject: [PATCH 02/10] WIP. --- src/cli.ts | 12 +++++++++++- src/providers/keys.ts | 2 +- src/providers/preferences.ts | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 385f17a..4d74ee3 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -13,7 +13,8 @@ import { createClient, registerContextListeners } from './mcp/client/client' import { registerTools } from './mcp/client/tools/tools' import { ChatProviders, initChatProviders } from './providers/chat_providers' import { EmbeddingsProviders, initEmbeddingsProviders } from './providers/embeddings_providers' -import { getPreferences, Preferences } from './providers/preferences' +import { keyDir } from './providers/keys' +import { getPreferences, Preferences, preferencesDir } from './providers/preferences' import { getRules } from './rules/loader' import { Rule } from './rules/types' import { buildSystemPrompt } from './system' @@ -315,6 +316,14 @@ function runInDocker(options: any) { dockerArgs.push('-v', `${aidevRootDir}/configs:/aidev/configs:ro`) dockerArgs.push('-v', `${aidevRootDir}/scripts:/aidev/scripts:ro`) // Include scripts directory + // Mount API keys directory as read-only + + dockerArgs.push('-v', `${keyDir()}:/root/.config/aidev/keys:ro`) + dockerArgs.push('-v', `${preferencesDir()}:/root/.config/aidev/preferences:ro`) + + dockerArgs.push('-e', 'AIDEV_KEY_DIR=/root/.config/aidev/keys') + dockerArgs.push('-e', 'AIDEV_PREFERENCES_DIR=/root/.config/aidev/preferences') + // Set the working directory inside the container dockerArgs.push('-w', containerWorkDir) @@ -330,6 +339,7 @@ function runInDocker(options: any) { console.log(`Starting aidev in Docker container using image ${dockerImage}...`) console.log(`Mounting target directory ${targetDir} to ${containerWorkDir}`) console.log(`Mounting aidev source code from ${aidevRootDir}/src to /aidev/src (read-only)`) + console.log(`Mounting API keys from ${keyDir} to /root/.config/aidev/keys (read-only)`) // Execute the Docker command const dockerProcess = spawn('docker', dockerArgs.concat(dockerImage, ...cliArgs), { diff --git a/src/providers/keys.ts b/src/providers/keys.ts index 434bd09..ab72e32 100644 --- a/src/providers/keys.ts +++ b/src/providers/keys.ts @@ -10,7 +10,7 @@ function keyPath(name: string): string { return path.join(keyDir(), `${name.toLowerCase()}.key`) } -function keyDir(): string { +export function keyDir(): string { return process.env['AIDEV_KEY_DIR'] || path.join(configDir(), 'keys') } diff --git a/src/providers/preferences.ts b/src/providers/preferences.ts index 09ce7da..71c45b0 100644 --- a/src/providers/preferences.ts +++ b/src/providers/preferences.ts @@ -78,7 +78,7 @@ async function preferencesPath(): Promise { return defaultPreferencesPath } -function preferencesDir(): string { +export function preferencesDir(): string { return process.env['AIDEV_PREFERENCES_DIR'] || configDir() } From 31921a928f1749099881df64145764c749a9a52c Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 10:43:40 -0500 Subject: [PATCH 03/10] WIP. --- bun.lockb | Bin 325853 -> 329145 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index 288f87dd9dfb4c68c18625b6c348cf1452b7b3a0..a9efe84a456820ce64c18cfa6b4e36e282d37cb4 100755 GIT binary patch delta 75398 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 delta 74272 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 Date: Wed, 4 Jun 2025 10:44:08 -0500 Subject: [PATCH 04/10] WIP. --- bun.lockb | Bin 329145 -> 328351 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/bun.lockb b/bun.lockb index a9efe84a456820ce64c18cfa6b4e36e282d37cb4..03be3c249bc60530ebcd0533dc24d261cd55559b 100755 GIT binary patch delta 48950 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 delta 48999 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 RCzrdTwMG{f_r>`}{{|04imm_v From f116cab1692719fbf9255075ccfc97fd9d452042 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 11:30:55 -0500 Subject: [PATCH 05/10] WIP. --- build-docker.sh | 3 -- scripts/build-docker.sh | 3 ++ src/cli.ts | 96 +++++++++++++++++------------------------ 3 files changed, 43 insertions(+), 59 deletions(-) delete mode 100755 build-docker.sh create mode 100755 scripts/build-docker.sh diff --git a/build-docker.sh b/build-docker.sh deleted file mode 100755 index 303c968..0000000 --- a/build-docker.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -docker build --platform=linux/amd64 -t aidev . diff --git a/scripts/build-docker.sh b/scripts/build-docker.sh new file mode 100755 index 0000000..4cd4c91 --- /dev/null +++ b/scripts/build-docker.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build --platform=linux/amd64 -t aidev:latest . diff --git a/src/cli.ts b/src/cli.ts index 8bbf42c..ef7b5d4 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,5 +1,6 @@ import { exec, spawn } from 'child_process' import EventEmitter from 'events' +import { dirname } from 'node:path' import { Transform, TransformCallback } from 'node:stream' import readline, { CompleterResult } from 'readline' import { program } from 'commander' @@ -59,7 +60,7 @@ async function main() { 'Skip user confirmation for potentially dangerous operations like file writing and shell execution.' const dockerFlags = '--docker' - const dockerDescription = 'Run in a Docker container with the current workspace copied into it.' + const dockerDescription = 'Run in a Docker container with the current workspace mounted into it.' program .option(historyFlags, historyDescription) @@ -76,6 +77,9 @@ async function main() { if (!options.yolo) { throw new Error('The --yolo option is required when using --docker.') } + if (options.port) { + throw new Error('The --port option is not supported when using --docker.') + } runInDocker(options) } else { @@ -291,65 +295,45 @@ function attentionGetter(command: string): () => void { } } -/** - * Runs the CLI in a Docker container with the current workspace copied into it - */ function runInDocker(options: any) { - const currentDir = process.cwd() - const dockerImage = 'aidev' - const containerWorkDir = '/workspace' - - // Find the aidev root directory (where package.json is located) - const scriptDir = __dirname - const aidevRootDir = scriptDir.substring(0, scriptDir.indexOf('/src')) - - // Build the Docker command to run the CLI - const dockerArgs = ['run', '--rm', '-it'] - - // Mount the target workspace (current dir or --cwd) as /workspace - const targetDir = options.cwd || currentDir - dockerArgs.push('-v', `${targetDir}:${containerWorkDir}`) - - // Mount only necessary source code and config files (excluding node_modules) as read-only - dockerArgs.push('-v', `${aidevRootDir}/src:/aidev/src:ro`) - dockerArgs.push('-v', `${aidevRootDir}/configs:/aidev/configs:ro`) - dockerArgs.push('-v', `${aidevRootDir}/scripts:/aidev/scripts:ro`) // Include scripts directory - - // Mount API keys directory as read-only - - dockerArgs.push('-v', `${keyDir()}:/root/.config/aidev/keys:ro`) - dockerArgs.push('-v', `${preferencesDir()}:/root/.config/aidev/preferences:ro`) - - dockerArgs.push('-e', 'AIDEV_KEY_DIR=/root/.config/aidev/keys') - dockerArgs.push('-e', 'AIDEV_PREFERENCES_DIR=/root/.config/aidev/preferences') - - // Set the working directory inside the container - dockerArgs.push('-w', containerWorkDir) - - // Forward all CLI options to the container command, except --docker itself - const cliArgs = ['bun', '/aidev/src/cli.ts'] - - if (options.history) cliArgs.push('--history', options.history) - if (options.port) cliArgs.push('--port', options.port.toString()) - if (options.cwd) cliArgs.push('--cwd', '/workspace') - if (options.oneShot) cliArgs.push('--one-shot', options.oneShot) - if (options.yolo) cliArgs.push('--yolo') - - console.log(`Starting aidev in Docker container using image ${dockerImage}...`) - console.log(`Mounting target directory ${targetDir} to ${containerWorkDir}`) - console.log(`Mounting aidev source code from ${aidevRootDir}/src to /aidev/src (read-only)`) - console.log(`Mounting API keys from ${keyDir} to /root/.config/aidev/keys (read-only)`) - - // Execute the Docker command - const dockerProcess = spawn('docker', dockerArgs.concat(dockerImage, ...cliArgs), { - stdio: 'inherit', - }) - - // Handle process exit - dockerProcess.on('close', code => { + spawn('docker', buildDockerArgs(options), { stdio: 'inherit' }).on('close', code => { console.log(`Docker container exited with code ${code}`) process.exit(code || 0) }) } +const dockerImage = 'aidev:latest' +const containerAidevDir = '/aidev' +const containerConfigDir = '/root/.config/aidev' +const containerWorkspace = '/workspace' +const containerKeyDir = `${containerConfigDir}/keys` +const containerPreferencesDir = `${containerConfigDir}/preferences` +const implicitAidevArgs = ['--one-shot', '--yolo'] + +function buildDockerArgs(options: any) { + const hostAidevDir = dirname(__dirname) + const hostWorkspace = options.cwd || process.cwd() + + const dockerArgs = [ + '--rm', + '-it', + ...['-v', `${hostWorkspace}:${containerWorkspace}:rw`], + ...['-v', `${hostAidevDir}:${containerAidevDir}:ro`], + ...['-v', `${keyDir()}:${containerKeyDir}:ro`], + ...['-v', `${preferencesDir()}:${containerPreferencesDir}:ro`], + ...['-e', `AIDEV_KEY_DIR=${containerKeyDir}`], + ...['-e', `AIDEV_PREFERENCES_DIR=${containerPreferencesDir}`], + ] + + const aidevArgs = [ + ...implicitAidevArgs, + ...['--cwd', containerWorkspace], + ...(options.history ? ['--history', options.history] : []), + ] + + const x = ['run', ...dockerArgs, dockerImage, '--', 'bun', `${containerAidevDir}/src/cli.ts`, ...aidevArgs] + console.log({ x }) + return x +} + main() From 22bce50d80eb447d3beb0b9f6ac513cbabf4e88e Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 11:48:36 -0500 Subject: [PATCH 06/10] WIP. --- Dockerfile | 40 +++++++++++++++++++--------------------- src/cli.ts | 8 +++----- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/Dockerfile b/Dockerfile index e833a38..ca96040 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,36 +1,34 @@ FROM node:20-slim -# Set pipe fail option to properly handle errors -SHELL ["/bin/bash", "-o", "pipefail", "-c"] - -# Install required packages including Python for native module compilation -RUN apt-get update && apt-get install -y \ - git python3 make g++ curl unzip bash \ - build-essential python3 git && \ - rm -rf /var/lib/apt/lists/* +# Install system dependencies +RUN apt-get update \ + && apt-get install -y \ + bash \ + build-essential \ + ca-certificates \ + curl \ + g++ \ + git \ + make \ + python3 \ + unzip \ + && rm -rf /var/lib/apt/lists/* # Install bun -RUN curl -fsSL https://bun.sh/install | bash +RUN /bin/bash -o pipefail -c 'curl -fsSL https://bun.sh/install | bash' ENV PATH=/root/.bun/bin:$PATH # Create necessary directories RUN mkdir -p /aidev /workspace WORKDIR /aidev -# Install dependencies at build time -# We'll copy package.json and bun.lockb during build -COPY . ./ - -# Install dependencies with more verbose output and rebuild native modules -# Install dependencies and properly rebuild native modules for the current architecture +# Install dependencies +COPY package.json bun.lockb ./ RUN bun install --verbose \ - && cd node_modules/tree-sitter-typescript \ + && cd /aidev/node_modules/tree-sitter-typescript \ && npm rebuild --build-from-source \ - && cd ../tree-sitter \ + && cd /aidev/node_modules/tree-sitter \ && npm rebuild --build-from-source \ && npm rebuild tree-sitter-go --build-from-source -# We'll mount the source code and workspace at runtime -# This allows us to run the CLI without rebuilding the image for code changes - -CMD ["bun", "/aidev/src/cli.ts"] +ENTRYPOINT ["bun", "--cwd", "/aidev", "dev"] diff --git a/src/cli.ts b/src/cli.ts index ef7b5d4..0361d23 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -308,7 +308,6 @@ const containerConfigDir = '/root/.config/aidev' const containerWorkspace = '/workspace' const containerKeyDir = `${containerConfigDir}/keys` const containerPreferencesDir = `${containerConfigDir}/preferences` -const implicitAidevArgs = ['--one-shot', '--yolo'] function buildDockerArgs(options: any) { const hostAidevDir = dirname(__dirname) @@ -326,14 +325,13 @@ function buildDockerArgs(options: any) { ] const aidevArgs = [ - ...implicitAidevArgs, + ...['--one-shot', options.oneShot], + ...['--yolo'], ...['--cwd', containerWorkspace], ...(options.history ? ['--history', options.history] : []), ] - const x = ['run', ...dockerArgs, dockerImage, '--', 'bun', `${containerAidevDir}/src/cli.ts`, ...aidevArgs] - console.log({ x }) - return x + return ['run', ...dockerArgs, dockerImage, '--', ...aidevArgs] } main() From 063d9cfc835ed2a1e9d88fb8142176ee66a3e4b6 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 12:17:32 -0500 Subject: [PATCH 07/10] WIP. --- debug-docker.js | 146 ++++++++++++++++++++++++++++++++++++++++++++++++ src/cli.ts | 50 +++++++++++++++-- 2 files changed, 191 insertions(+), 5 deletions(-) create mode 100644 debug-docker.js diff --git a/debug-docker.js b/debug-docker.js new file mode 100644 index 0000000..47ef7f8 --- /dev/null +++ b/debug-docker.js @@ -0,0 +1,146 @@ +#!/usr/bin/env node + +const { spawn } = require('child_process'); +const { dirname } = require('path'); + +// Simple debug script to test Docker setup +function debugDocker() { + const hostAidevDir = dirname(__dirname); + const hostWorkspace = process.cwd(); + + console.log('=== Docker Debug Information ==='); + console.log('Host aidev directory:', hostAidevDir); + console.log('Host workspace:', hostWorkspace); + console.log(); + + // Test 1: Check if Docker is running + console.log('1. Testing Docker availability...'); + const dockerTest = spawn('docker', ['--version'], { stdio: 'pipe' }); + + dockerTest.stdout.on('data', (data) => { + console.log('Docker version:', data.toString().trim()); + }); + + dockerTest.stderr.on('data', (data) => { + console.error('Docker version error:', data.toString().trim()); + }); + + dockerTest.on('close', (code) => { + if (code === 0) { + console.log('✓ Docker is available\n'); + testDockerImage(); + } else { + console.log('✗ Docker is not available or not running\n'); + process.exit(1); + } + }); +} + +function testDockerImage() { + console.log('2. Testing Docker image availability...'); + const imageTest = spawn('docker', ['images', 'aidev:latest'], { stdio: 'pipe' }); + + let output = ''; + imageTest.stdout.on('data', (data) => { + output += data.toString(); + }); + + imageTest.on('close', (code) => { + if (output.includes('aidev') && output.includes('latest')) { + console.log('✓ aidev:latest image found\n'); + testSimpleContainer(); + } else { + console.log('✗ aidev:latest image not found'); + console.log('Available images:'); + console.log(output); + console.log('\nYou may need to build the Docker image first.\n'); + process.exit(1); + } + }); +} + +function testSimpleContainer() { + console.log('3. Testing simple container execution...'); + const containerTest = spawn('docker', [ + 'run', '--rm', 'aidev:latest', 'echo', 'Container test successful' + ], { stdio: 'pipe' }); + + containerTest.stdout.on('data', (data) => { + console.log('Container output:', data.toString().trim()); + }); + + containerTest.stderr.on('data', (data) => { + console.error('Container error:', data.toString().trim()); + }); + + containerTest.on('close', (code) => { + if (code === 0) { + console.log('✓ Simple container execution successful\n'); + testMountedContainer(); + } else { + console.log('✗ Simple container execution failed\n'); + process.exit(1); + } + }); +} + +function testMountedContainer() { + console.log('4. Testing container with mounts...'); + const hostAidevDir = dirname(__dirname); + const hostWorkspace = process.cwd(); + + const mountTest = spawn('docker', [ + 'run', '--rm', + '-v', `${hostWorkspace}:/workspace:rw`, + '-v', `${hostAidevDir}:/aidev:ro`, + 'aidev:latest', + 'ls', '-la', '/workspace', '/aidev' + ], { stdio: 'pipe' }); + + mountTest.stdout.on('data', (data) => { + console.log('Mount test output:', data.toString()); + }); + + mountTest.stderr.on('data', (data) => { + console.error('Mount test error:', data.toString()); + }); + + mountTest.on('close', (code) => { + if (code === 0) { + console.log('✓ Container mounts working\n'); + testInteractiveContainer(); + } else { + console.log('✗ Container mounts failed\n'); + process.exit(1); + } + }); +} + +function testInteractiveContainer() { + console.log('5. Testing interactive container (will timeout after 10 seconds)...'); + const hostAidevDir = dirname(__dirname); + const hostWorkspace = process.cwd(); + + const interactiveTest = spawn('docker', [ + 'run', '--rm', '-it', + '-v', `${hostWorkspace}:/workspace:rw`, + '-v', `${hostAidevDir}:/aidev:ro`, + 'aidev:latest', + 'sleep', '5' + ], { stdio: 'inherit' }); + + const timeout = setTimeout(() => { + console.log('\nTimeout reached, killing container...'); + interactiveTest.kill('SIGTERM'); + }, 10000); + + interactiveTest.on('close', (code, signal) => { + clearTimeout(timeout); + console.log(`Interactive test completed with code ${code}, signal ${signal}`); + console.log('\n=== Debug Complete ==='); + console.log('If all tests passed, the issue may be with the aidev command itself inside the container.'); + console.log('Try running with the updated debugging output to see where it hangs.'); + }); +} + +debugDocker(); \ No newline at end of file diff --git a/src/cli.ts b/src/cli.ts index 0361d23..20e8f63 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -81,7 +81,10 @@ async function main() { throw new Error('The --port option is not supported when using --docker.') } - runInDocker(options) + runInDocker(options).catch(error => { + console.error('Error running in Docker:', error) + process.exit(1) + }) } else { if (options.cwd) { process.chdir(options.cwd) @@ -295,11 +298,48 @@ function attentionGetter(command: string): () => void { } } -function runInDocker(options: any) { - spawn('docker', buildDockerArgs(options), { stdio: 'inherit' }).on('close', code => { - console.log(`Docker container exited with code ${code}`) - process.exit(code || 0) +async function runInDocker(options: any) { + const dockerArgs = buildDockerArgs(options) + + console.log('Starting Docker container with args:') + console.log('docker', dockerArgs.join(' ')) + console.log() + + const dockerProcess = spawn('docker', dockerArgs, { stdio: 'inherit' }) + + setInterval(() => console.log('hi...\n'), 1000) + + // Wrap the child process in a Promise to properly await completion + const dockerPromise = new Promise((resolve, reject) => { + dockerProcess.on('error', error => { + console.error('Docker process error:', error) + reject(error) + }) + + dockerProcess.on('close', (code, signal) => { + console.log(`Docker container exited with code ${code}, signal ${signal}`) + resolve(code || 0) + }) }) + + const cleanup = () => { + dockerProcess.kill('SIGTERM') + + setTimeout(() => { + if (!dockerProcess.killed) { + dockerProcess.kill('SIGKILL') + } + }, 5000) + } + + for (const signal of ['SIGINT', 'SIGTERM', 'SIGQUIT', 'SIGKILL']) { + process.on(signal, cleanup) + } + + console.log('waiting') + const code = await dockerPromise + console.log({ code }) + process.exit(code) } const dockerImage = 'aidev:latest' From 74ae22a2d02a2b90745fa3452723386736f6f4a3 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 12:27:57 -0500 Subject: [PATCH 08/10] WIP. --- src/cli.ts | 67 +++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 51 insertions(+), 16 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 20e8f63..4686cf1 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -305,41 +305,76 @@ async function runInDocker(options: any) { console.log('docker', dockerArgs.join(' ')) console.log() - const dockerProcess = spawn('docker', dockerArgs, { stdio: 'inherit' }) + const dockerProcess = spawn('docker', dockerArgs, { + stdio: 'inherit', + // Ensure we can see all output immediately + env: { ...process.env, FORCE_COLOR: '1' } + }) - setInterval(() => console.log('hi...\n'), 1000) + // Remove the setInterval that was potentially interfering with output + // setInterval(() => console.log('hi...\n'), 1000) // Wrap the child process in a Promise to properly await completion const dockerPromise = new Promise((resolve, reject) => { + let hasResolved = false + dockerProcess.on('error', error => { console.error('Docker process error:', error) - reject(error) + if (!hasResolved) { + hasResolved = true + reject(error) + } }) dockerProcess.on('close', (code, signal) => { console.log(`Docker container exited with code ${code}, signal ${signal}`) - resolve(code || 0) + if (!hasResolved) { + hasResolved = true + resolve(code || 0) + } + }) + + dockerProcess.on('exit', (code, signal) => { + console.log(`Docker process exited with code ${code}, signal ${signal}`) + if (!hasResolved) { + hasResolved = true + resolve(code || 0) + } }) }) + let isCleaningUp = false const cleanup = () => { - dockerProcess.kill('SIGTERM') - - setTimeout(() => { - if (!dockerProcess.killed) { - dockerProcess.kill('SIGKILL') - } - }, 5000) + if (isCleaningUp) return + isCleaningUp = true + + console.log('Cleaning up Docker process...') + if (!dockerProcess.killed) { + dockerProcess.kill('SIGTERM') + + setTimeout(() => { + if (!dockerProcess.killed) { + console.log('Force killing Docker process...') + dockerProcess.kill('SIGKILL') + } + }, 5000) + } } - for (const signal of ['SIGINT', 'SIGTERM', 'SIGQUIT', 'SIGKILL']) { + // Only handle SIGINT and SIGTERM for graceful shutdown + for (const signal of ['SIGINT', 'SIGTERM']) { process.on(signal, cleanup) } - console.log('waiting') - const code = await dockerPromise - console.log({ code }) - process.exit(code) + try { + console.log('Waiting for Docker container to complete...') + const code = await dockerPromise + console.log(`Docker completed with exit code: ${code}`) + process.exit(code) + } catch (error) { + console.error('Docker execution failed:', error) + process.exit(1) + } } const dockerImage = 'aidev:latest' From 6f0556b14d21ba855f6c495488839a7e51ffc0f1 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 16:05:49 -0500 Subject: [PATCH 09/10] WIP. --- src/cli.ts | 261 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 191 insertions(+), 70 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 4686cf1..1aafe87 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -1,8 +1,10 @@ import { exec, spawn } from 'child_process' import EventEmitter from 'events' +import { ChildProcess } from 'node:child_process' import { dirname } from 'node:path' import { Transform, TransformCallback } from 'node:stream' import readline, { CompleterResult } from 'readline' +import { Subprocess } from 'bun' import { program } from 'commander' import { EventSource } from 'eventsource' import { completer } from './chat/completer' @@ -81,11 +83,15 @@ async function main() { throw new Error('The --port option is not supported when using --docker.') } + console.log('invoking docker...') + runInDocker(options).catch(error => { console.error('Error running in Docker:', error) process.exit(1) }) } else { + console.log('running normally...') + if (options.cwd) { process.chdir(options.cwd) } @@ -121,6 +127,98 @@ async function chat( let context: ChatContext if (!process.stdin.setRawMode) { + if (oneShot && yolo) { + console.log('ok doing this weirdo route') + + // FAKE + const interruptHandler = { + withInterruptHandler: (f: (signal: AbortSignal) => Promise): Promise => { + return f(new AbortController().signal) + }, + } + + // FAKE + const prompter = { + question: (): Promise => Promise.reject('user input not allowed in this context'), + choice: (): Promise => Promise.reject('user input not allowed in this context'), + options: (): Promise => Promise.reject('user input not allowed in this context'), + } + + // readline.emitKeypressEvents(process.stdin) + // process.stdin.setRawMode(true) + // const filter = new ShiftEnterFilter() + // process.stdin.pipe(filter) + + // const rl = readline.createInterface({ + // input: filter, + // output: process.stdout, + // terminal: true, + // completer: (line: string, callback: (err?: null | Error, result?: CompleterResult) => void): void => { + // if (context) { + // completer(context, line).then(result => callback(undefined, result)) + // } + // }, + // }) + + // filter.on('shiftenter', () => { + // ;(rl as unknown as { _insertString: (s: string) => void })._insertString('\n') + // }) + + const client = await createClient(port) + const system = await buildSystemPrompt(preferences) + const contextStateManager = await createContextState() + await registerTools(client) + + try { + // const interruptHandler = createInterruptHandler(rl) + // const interruptInputOptions = rootInterruptHandlerOptions(rl) + // const prompter = createPrompter( + // rl, + // interruptHandler, + // attentionGetter(preferences.attentionCommand ?? defaultAttentionCommand), + // ) + + const provider = await providers.createProvider({ + contextState: contextStateManager, + modelName: preferences.defaultModel, + system, + }) + + context = { + preferences, + rules, + providers, + embeddingsClients, + tracker, + interruptHandler, + prompter, + provider, + events: new EventEmitter(), + contextStateManager, + yolo, + } + + await registerContextListeners(context, client) + + if (historyFilename) { + await loadHistory(context, historyFilename) + } + + const modelName = `${context.provider.modelName} (${context.provider.providerName})` + console.log(`${historyFilename ? 'Resuming' : 'Beginning'} session with ${modelName}...\n`) + + await interruptHandler.withInterruptHandler(() => handle(context, oneShot)) + + return + } finally { + // process.stdin.unpipe(filter) + // filter.destroy() + // rl.close() + contextStateManager.dispose() + client?.close() + } + } + throw new Error('chat command is not supported in this environment.') } @@ -299,81 +397,108 @@ function attentionGetter(command: string): () => void { } async function runInDocker(options: any) { - const dockerArgs = buildDockerArgs(options) - - console.log('Starting Docker container with args:') - console.log('docker', dockerArgs.join(' ')) - console.log() + const dockerArgs = buildDockerCommand(options) - const dockerProcess = spawn('docker', dockerArgs, { - stdio: 'inherit', - // Ensure we can see all output immediately - env: { ...process.env, FORCE_COLOR: '1' } - }) - - // Remove the setInterval that was potentially interfering with output - // setInterval(() => console.log('hi...\n'), 1000) - - // Wrap the child process in a Promise to properly await completion - const dockerPromise = new Promise((resolve, reject) => { - let hasResolved = false + // Generate a unique container name for cleanup + const containerName = `aidev-${Date.now()}-${Math.random().toString(36).substring(7)}` + const fullDockerArgs = ['docker', 'run', '--name', containerName, ...dockerArgs] - dockerProcess.on('error', error => { - console.error('Docker process error:', error) - if (!hasResolved) { - hasResolved = true - reject(error) - } - }) + let subprocess: any = null + let cleanupCalled = false - dockerProcess.on('close', (code, signal) => { - console.log(`Docker container exited with code ${code}, signal ${signal}`) - if (!hasResolved) { - hasResolved = true - resolve(code || 0) - } - }) + // Cleanup function + const cleanup = async () => { + if (cleanupCalled) return + cleanupCalled = true - dockerProcess.on('exit', (code, signal) => { - console.log(`Docker process exited with code ${code}, signal ${signal}`) - if (!hasResolved) { - hasResolved = true - resolve(code || 0) + try { + // Kill the subprocess if still running + if (subprocess && !subprocess.killed) { + subprocess.kill() } - }) - }) - let isCleaningUp = false - const cleanup = () => { - if (isCleaningUp) return - isCleaningUp = true - - console.log('Cleaning up Docker process...') - if (!dockerProcess.killed) { - dockerProcess.kill('SIGTERM') - - setTimeout(() => { - if (!dockerProcess.killed) { - console.log('Force killing Docker process...') - dockerProcess.kill('SIGKILL') - } - }, 5000) + // Stop and remove container + const stopProc = Bun.spawn(['docker', 'stop', containerName], { + stdout: 'pipe', + stderr: 'pipe', + }) + await stopProc.exited + + const rmProc = Bun.spawn(['docker', 'rm', '-f', containerName], { + stdout: 'pipe', + stderr: 'pipe', + }) + await rmProc.exited + } catch { + // Ignore cleanup errors } } - // Only handle SIGINT and SIGTERM for graceful shutdown - for (const signal of ['SIGINT', 'SIGTERM']) { - process.on(signal, cleanup) + // Set up signal handlers + const signals: NodeJS.Signals[] = ['SIGINT', 'SIGTERM', 'SIGHUP', 'SIGQUIT'] + const signalHandlers: Array<() => void> = [] + + for (const signal of signals) { + const handler = () => { + cleanup().then(() => { + process.exit(128 + (signal === 'SIGINT' ? 2 : 15)) + }) + } + signalHandlers.push(handler) + process.on(signal, handler) } try { - console.log('Waiting for Docker container to complete...') - const code = await dockerPromise - console.log(`Docker completed with exit code: ${code}`) - process.exit(code) + console.log(fullDockerArgs.join(' ')) + // Spawn the Docker process + subprocess = Bun.spawn(fullDockerArgs, { + stdout: 'pipe', + stderr: 'pipe', + stdin: 'inherit', // Allow interactive input + }) + + // Stream output in real-time + const stdoutChunks: Uint8Array[] = [] + const stderrChunks: Uint8Array[] = [] + + // Handle stdout + const stdoutPromise = (async () => { + for await (const chunk of subprocess.stdout) { + stdoutChunks.push(chunk) + process.stdout.write(chunk) + } + })() + + // Handle stderr + const stderrPromise = (async () => { + for await (const chunk of subprocess.stderr) { + stderrChunks.push(chunk) + process.stderr.write(chunk) + } + })() + + // Wait for completion + const [exitCode] = await Promise.all([subprocess.exited, stdoutPromise, stderrPromise]) + console.log({ exitCode }) + + // Check exit code + if (exitCode !== 0) { + const stderr = Buffer.concat(stderrChunks).toString() + const error = new Error(`Docker container exited with code ${exitCode}`) + ;(error as any).exitCode = exitCode + ;(error as any).stderr = stderr + throw error + } } catch (error) { - console.error('Docker execution failed:', error) - process.exit(1) + // Clean up on any error + await cleanup() + throw error + } finally { + // Remove signal handlers + let i = 0 + for (const signal of signals) { + process.off(signal, signalHandlers[i++]) + } } } @@ -384,29 +509,25 @@ const containerWorkspace = '/workspace' const containerKeyDir = `${containerConfigDir}/keys` const containerPreferencesDir = `${containerConfigDir}/preferences` -function buildDockerArgs(options: any) { +function buildDockerCommand(options: any) { const hostAidevDir = dirname(__dirname) const hostWorkspace = options.cwd || process.cwd() - const dockerArgs = [ + return [ '--rm', - '-it', ...['-v', `${hostWorkspace}:${containerWorkspace}:rw`], ...['-v', `${hostAidevDir}:${containerAidevDir}:ro`], ...['-v', `${keyDir()}:${containerKeyDir}:ro`], ...['-v', `${preferencesDir()}:${containerPreferencesDir}:ro`], ...['-e', `AIDEV_KEY_DIR=${containerKeyDir}`], ...['-e', `AIDEV_PREFERENCES_DIR=${containerPreferencesDir}`], - ] - - const aidevArgs = [ + dockerImage, + '--', ...['--one-shot', options.oneShot], ...['--yolo'], ...['--cwd', containerWorkspace], ...(options.history ? ['--history', options.history] : []), ] - - return ['run', ...dockerArgs, dockerImage, '--', ...aidevArgs] } main() From 2948aa20d3770e3ccd1d9f7aff986254807d4702 Mon Sep 17 00:00:00 2001 From: Eric Fritz Date: Wed, 4 Jun 2025 20:27:29 -0500 Subject: [PATCH 10/10] WIP. --- src/cli.ts | 3 +++ src/util/progress/progress.ts | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/cli.ts b/src/cli.ts index 1aafe87..f229d2e 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -207,10 +207,13 @@ async function chat( const modelName = `${context.provider.modelName} (${context.provider.providerName})` console.log(`${historyFilename ? 'Resuming' : 'Beginning'} session with ${modelName}...\n`) + console.log('a') await interruptHandler.withInterruptHandler(() => handle(context, oneShot)) + console.log('b') return } finally { + console.log('c') // process.stdin.unpipe(filter) // filter.destroy() // rl.close() diff --git a/src/util/progress/progress.ts b/src/util/progress/progress.ts index e893971..e48351e 100644 --- a/src/util/progress/progress.ts +++ b/src/util/progress/progress.ts @@ -13,6 +13,26 @@ export type ProgressOptions = { } export async function withProgress(f: ProgressSubject, options: ProgressOptions): Promise> { + if (!process.stdin.setRawMode) { + console.log('ok weirdo way') + // setInterval(() => console.log('tick'), 1000) + let snapshot: T | undefined + console.log(options.progress(undefined)) + try { + const response = await f(latest => { + snapshot = latest + // console.log(options.progress(snapshot)) + }) + console.log(options.success(response)) + return { ok: true, response } + } catch (error: any) { + console.log(options.failure(snapshot, error)) + return { ok: false, error } + } finally { + console.log('DONE') + } + } + const spinner = ora({ text: options.progress(undefined), discardStdin: false,