Skip to content

feat(image-upload): send images to agent #84

feat(image-upload): send images to agent

feat(image-upload): send images to agent #84

Workflow file for this run

name: CLI Smoke Test
on:
push:
branches: [ main ]
paths:
- 'packages/happy-cli/**'
- '.github/workflows/cli-smoke-test.yml'
pull_request:
branches: [ main ]
paths:
- 'packages/happy-cli/**'
- '.github/workflows/cli-smoke-test.yml'
workflow_dispatch:
jobs:
smoke-test-linux:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [20, 24]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: yarn.lock
- name: Install dependencies
run: yarn install --immutable
- name: Build package
run: yarn workspace happy-coder build
- name: Pack package
run: yarn workspace happy-coder pack
- name: Install packed package globally
run: |
PACKAGE_FILE=$(ls packages/happy-cli/*.tgz)
npm install -g "./$PACKAGE_FILE"
- name: Test binary execution
run: |
# Test that the binary starts successfully
echo "Testing happy --help..."
timeout 30s happy --help || {
echo "Error: happy --help failed or timed out"
exit 1
}
echo "Testing happy --version..."
timeout 10s happy --version || {
echo "Error: happy --version failed or timed out"
exit 1
}
echo "Testing happy doctor..."
timeout 30s happy doctor || {
echo "Error: happy doctor failed or timed out"
exit 1
}
echo "Testing happy daemon status..."
timeout 10s happy daemon status || {
echo "Error: happy daemon status failed or timed out"
exit 1
}
echo "Smoke test passed on Linux!"
smoke-test-windows:
runs-on: windows-latest
strategy:
matrix:
node-version: [20, 24]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'yarn'
cache-dependency-path: yarn.lock
- name: Install dependencies
run: yarn install --immutable
- name: Build package
run: yarn workspace happy-coder build
- name: Pack package
run: yarn workspace happy-coder pack
- name: Install packed package globally
shell: cmd
run: |
for %%f in (packages\happy-cli\*.tgz) do npm install -g "%%f"
- name: Debug npm global installation structure
shell: cmd
run: |
for /f "tokens=*" %%i in ('npm config get prefix') do set NPM_PREFIX=%%i
echo NPM_PREFIX: %NPM_PREFIX%
echo Listing npm prefix directory:
dir "%NPM_PREFIX%" 2>nul || echo Failed to list NPM_PREFIX
echo.
echo Checking for node_modules in npm prefix:
if exist "%NPM_PREFIX%\node_modules" (
echo Found node_modules directory
dir "%NPM_PREFIX%\node_modules" 2>nul
echo.
echo Checking for happy-coder package:
if exist "%NPM_PREFIX%\node_modules\happy-coder" (
echo Found happy-coder package
dir "%NPM_PREFIX%\node_modules\happy-coder" 2>nul
echo.
echo Checking for dist directory:
if exist "%NPM_PREFIX%\node_modules\happy-coder\dist" (
echo Found dist directory
dir "%NPM_PREFIX%\node_modules\happy-coder\dist" 2>nul
) else (
echo No dist directory found
)
) else (
echo No happy-coder package found
)
) else (
echo No node_modules directory found
)
- name: Test binary execution
shell: cmd
run: |
@echo on
rem Get npm global prefix and add to PATH
for /f "tokens=*" %%i in ('npm config get prefix') do set NPM_PREFIX=%%i
set PATH=%NPM_PREFIX%;%PATH%
echo NPM_PREFIX: %NPM_PREFIX%
echo Current PATH: %PATH%
rem Debug: Check if happy exists in various locations
echo Checking for happy binary...
where happy 2>nul && echo Found happy in PATH || echo happy not found in PATH
if exist "%NPM_PREFIX%\happy.cmd" echo Found happy.cmd in NPM_PREFIX
if exist "%NPM_PREFIX%\node_modules\.bin\happy.cmd" echo Found happy.cmd in .bin directory
dir "%NPM_PREFIX%\*happy*" 2>nul || echo No happy files found in NPM_PREFIX
rem Debug: Check the actual contents and encoding of the installed file
if exist "%NPM_PREFIX%\happy.cmd" (
echo File size and type:
dir "%NPM_PREFIX%\happy.cmd"
echo.
echo First few lines of the file:
type "%NPM_PREFIX%\happy.cmd" | head -5
echo.
echo Hex dump of first 50 bytes to check line endings:
powershell -Command "Get-Content '%NPM_PREFIX%\happy.cmd' -Encoding Byte -TotalCount 50 | ForEach-Object { '{0:X2}' -f $_ } | Join-String -Separator ' '"
echo.
echo Testing with direct path...
"%NPM_PREFIX%\happy.cmd" --help
) else (
echo Testing happy --help...
happy --help
)
if errorlevel 1 (
echo Error: happy --help failed
exit /b 1
)
rem Test version
if exist "%NPM_PREFIX%\happy.cmd" (
"%NPM_PREFIX%\happy.cmd" --version
) else (
happy --version
)
if errorlevel 1 (
echo Error: happy --version failed
exit /b 1
)
rem Test doctor
echo Testing happy doctor...
if exist "%NPM_PREFIX%\happy.cmd" (
"%NPM_PREFIX%\happy.cmd" doctor
) else (
happy doctor
)
if errorlevel 1 (
echo Error: happy doctor failed
exit /b 1
)
rem Test daemon status
echo Testing happy daemon status...
if exist "%NPM_PREFIX%\happy.cmd" (
"%NPM_PREFIX%\happy.cmd" daemon status
) else (
happy daemon status
)
if errorlevel 1 (
echo Error: happy daemon status failed
exit /b 1
)
echo Smoke test passed on Windows!
# We don't need a smoke test for macOS because most contributors are developing on macOS.