Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
261 changes: 48 additions & 213 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,257 +2,92 @@ name: CI

on:
push:
branches: [main]
branches: [main, develop]
pull_request:
branches: [main]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
branches: [main, develop]

jobs:
lint:
name: Lint
test:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [18.x, 20.x, 22.x]

steps:
- name: Checkout repository
uses: actions/checkout@v6
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v6
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: ${{ matrix.node-version }}
cache: "npm"

- name: Install dependencies
run: npm ci

- name: Run ESLint
run: npm run lint

format:
name: Format Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "20"
cache: "npm"
- name: Bootstrap subprojects
run: npm run bootstrap:subprojects

- name: Install dependencies
run: npm ci
- name: Run linter
run: npm run lint

- name: Check formatting
run: npm run format:check

type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: "20"
cache: "npm"

- name: Install root dependencies
run: npm ci
- name: Type check
run: npm run type-check

- name: Install CLI dependencies
run: cd CLI && npm ci
- name: Run tests
run: npm run test:all

- name: Install dapp-factory dependencies
run: cd dapp-factory && npm ci
- name: Check dependencies
run: npm run deps:check

- name: Run type checks
run: npm run type-check
- name: Security audit
run: npm audit --audit-level moderate

test:
name: Test
dependency-audit:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v6
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: 20.x
cache: "npm"

- name: Install root dependencies
- name: Install dependencies
run: npm ci

- name: Install CLI dependencies
run: cd CLI && npm ci
- name: Bootstrap subprojects
run: npm run bootstrap:subprojects

- name: Install dapp-factory dependencies
run: cd dapp-factory && npm ci
- name: Comprehensive dependency audit
run: npm run deps:audit

- name: Run root tests
run: npm run test

- name: Run CLI tests
run: npm run test:cli

- name: Run dapp-factory tests
run: npm run test:dapp

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
if: always()
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: unittests
fail_ci_if_error: false
verbose: true
continue-on-error: true

security-audit:
name: Security Audit
build-verification:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6
- uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v6
- name: Use Node.js 20.x
uses: actions/setup-node@v4
with:
node-version: "20"
node-version: 20.x
cache: "npm"

- name: Audit root dependencies
run: npm audit --audit-level=high

- name: Install and audit CLI dependencies
run: |
cd CLI
npm ci
npm audit --audit-level=high

- name: Install and audit dapp-factory dependencies
run: |
cd dapp-factory
npm ci
npm audit --audit-level=high

- name: Install and audit plugin mcp-server dependencies
run: |
cd plugin-factory/examples/mcp-server
npm ci
npm audit --audit-level=high

validate-structure:
name: Validate Structure
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v6

- name: Check required files exist
run: |
echo "Checking required files..."
test -f "package.json" && echo "✓ package.json"
test -f "README.md" && echo "✓ README.md"
test -f "CLAUDE.md" && echo "✓ CLAUDE.md"
test -f "SECURITY.md" && echo "✓ SECURITY.md"
test -f "eslint.config.js" && echo "✓ eslint.config.js"
test -f ".prettierrc" && echo "✓ .prettierrc"
test -f "CHANGELOG.md" && echo "✓ CHANGELOG.md"
test -f "CONTRIBUTING.md" && echo "✓ CONTRIBUTING.md"
test -f "LICENSE" && echo "✓ LICENSE"
echo "All required files present!"

- name: Check pipeline directories
run: |
echo "Checking pipeline directories..."
test -d "app-factory" && echo "✓ app-factory/"
test -d "dapp-factory" && echo "✓ dapp-factory/"
test -d "agent-factory" && echo "✓ agent-factory/"
test -d "plugin-factory" && echo "✓ plugin-factory/"
test -d "miniapp-pipeline" && echo "✓ miniapp-pipeline/"
echo "All pipeline directories present!"

- name: Validate CLAUDE.md files
run: |
echo "Validating CLAUDE.md constitution files..."
for dir in app-factory dapp-factory agent-factory plugin-factory miniapp-pipeline; do
if [ -f "$dir/CLAUDE.md" ]; then
echo "✓ $dir/CLAUDE.md exists"
else
echo "✗ Missing $dir/CLAUDE.md"
exit 1
fi
done
echo "All pipeline constitutions present!"

ci-complete:
name: CI Complete
needs: [lint, format, type-check, test, security-audit, validate-structure]
runs-on: ubuntu-latest
if: always()
steps:
- name: Check job results
run: |
echo "=== CI Summary ==="
echo ""

# Critical jobs that must pass
critical_failed=0

if [ "${{ needs.validate-structure.result }}" != "success" ]; then
echo "FAIL: Structure validation failed"
critical_failed=1
else
echo "✓ Structure validation passed"
fi

if [ "${{ needs.lint.result }}" != "success" ]; then
echo "FAIL: Linting failed"
critical_failed=1
else
echo "✓ Linting passed"
fi

if [ "${{ needs.format.result }}" != "success" ]; then
echo "FAIL: Format check failed"
critical_failed=1
else
echo "✓ Format check passed"
fi
- name: Install dependencies
run: npm ci

if [ "${{ needs.type-check.result }}" != "success" ]; then
echo "FAIL: Type check failed"
critical_failed=1
else
echo "✓ Type check passed"
fi
- name: Bootstrap subprojects
run: npm run bootstrap:subprojects

if [ "${{ needs.test.result }}" != "success" ]; then
echo "FAIL: Tests failed"
critical_failed=1
else
echo "✓ Tests passed"
fi
- name: Build CLI
run: npm run build:cli

if [ "${{ needs.security-audit.result }}" != "success" ]; then
echo "FAIL: Security audit failed"
critical_failed=1
else
echo "✓ Security audit passed"
fi
- name: Build dapp factory
run: npm run build:dapp

echo ""
if [ $critical_failed -eq 1 ]; then
echo "CI FAILED: One or more critical checks failed"
exit 1
else
echo "CI PASSED: All critical checks passed"
fi
- name: Test CLI functionality
run: cd CLI && npm test
61 changes: 61 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Added

- GitHub Actions CI workflow for automated testing
- Unit tests for core package configuration loader
- Automated dependency auditing in CI

### Changed

- Updated @vitest/coverage-v8 to 4.1.0
- Updated lint-staged to 16.4.0
- Updated typescript-eslint to 8.57.1

### Fixed

- Missing test coverage for critical core package functionality

## [12.0.1] - 2026-03-17

### Added

- MCP integration with enhanced Ralph QA
- 2026 tech stack updates
- Starter templates system
- Tour Guide mascot with 3D rendering
- VS Code preview system

### Changed

- Improved documentation structure
- Enhanced security controls
- Updated dependencies to latest versions

### Fixed

- Various bug fixes and improvements

## [12.0.0] - 2026-03-01

### Added

- MCP integration for enhanced AI-tool communication
- Enhanced Ralph QA with automated testing
- Comprehensive documentation overhaul

### Breaking Changes

- Updated minimum Node.js version to 18.0.0
- Restructured configuration format for MCP compatibility

---

_Note: This changelog was created retroactively. Future releases will have detailed change tracking._
16 changes: 8 additions & 8 deletions CLI/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -36,19 +36,19 @@
"node": ">=18.0.0"
},
"dependencies": {
"@anthropic-ai/sdk": "^0.32.0",
"@anthropic-ai/sdk": "^0.80.0",
"ajv": "^8.17.1",
"chalk": "^5.3.0",
"commander": "^12.1.0",
"dotenv": "^16.4.5",
"inquirer": "^12.2.0",
"ora": "^8.1.0"
"dotenv": "^16.6.1",
"inquirer": "^12.11.1",
"ora": "^8.2.0"
},
"devDependencies": {
"@types/inquirer": "^9.0.7",
"@types/node": "^22.10.0",
"@vitest/coverage-v8": "^4.0.18",
"typescript": "^5.6.3",
"vitest": "^4.0.18"
"@types/node": "^22.19.15",
"@vitest/coverage-v8": "^4.1.0",
"typescript": "^5.7.3",
"vitest": "^4.1.0"
}
}
Loading
Loading