- Replace npx jest with npm run test:ci in CI coverage job
- Update test:ci script to match original command pattern
- Ensures jest is properly available through npm scripts
Fixes#91🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix jest command not found in coverage job by using npx jest
- Fix lint command in CI/CD pipeline to use lint:check
- Fix E2E test helper conditionalDescribe function to properly skip tests when Docker images are missing
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Enhanced description to emphasize end-to-end autonomous workflows
- Added new section highlighting autonomous workflow capabilities including:
- Complete feature implementation from requirements to deployment
- Intelligent PR management with automated merging
- CI/CD integration with build monitoring and failure response
- Multi-hour operation support with task completion guarantee
- Updated example commands to show more complex autonomous tasks
- Enhanced architecture diagrams to reflect autonomous request flow
- Updated container lifecycle to show iterative development process
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The coverage job was failing because it was running E2E tests that require
Docker containers, but the coverage job only depends on unit tests, not the
docker job.
Changed the coverage generation to only run unit tests by using
testPathPattern to exclude E2E tests. This is appropriate since:
- E2E tests are primarily for workflow testing
- Unit tests provide sufficient code coverage metrics
- Docker containers are not available in the coverage job environment
Resolves CI pipeline failure after codecov badge merge.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Remove token parameter from codecov badge URL since claude-hub is now a public repository.
The badge now uses the standard public codecov URL format.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed E2E test assertions to match actual container behavior
- Added test:e2e npm script for running E2E tests
- Removed 14 obsolete shell test scripts replaced by Jest E2E tests
- Updated CLAUDE.md documentation with E2E test command
- Created MIGRATION_NOTICE.md documenting the test migration
- Applied consistent formatting with Prettier and ESLint
All 80 E2E tests now pass successfully. The tests work with mock credentials
and gracefully skip tests requiring real tokens (GitHub, AWS, Anthropic).
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Implements Phase 1.1 of testing modernization:
- Consolidates 16 shell scripts into 8 comprehensive Jest E2E test suites
- Creates modular test utilities (ContainerExecutor, testHelpers) for reusable functionality
- Implements conditional test skipping when Docker images are unavailable
- Provides programmatic Docker command execution with proper error handling and timeouts
- Maintains backward compatibility while enabling automated validation and CI/CD integration
New E2E test structure:
- container-execution.test.js: Basic container functionality and lifecycle management
- claude-integration.test.js: Claude API and CLI integration testing
- aws-authentication.test.js: AWS credential mounting and profile validation
- security-firewall.test.js: Firewall initialization and security capabilities
- github-integration.test.js: GitHub CLI and webhook integration
- full-workflow.test.js: End-to-end workflow testing
- docker-execution.test.js: Docker runtime validation and error handling
- api-integration.test.js: API and credential integration testing
Benefits:
- Automated validation with consistent reporting
- CI/CD integration support
- Better error handling and debugging
- Modular and maintainable test structure
- Graceful handling of missing dependencies
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Auto-fix formatting for switch statement indentation and quote consistency.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Prevents false positives in security audit by excluding test files that contain intentional fake credentials for testing logger redaction functionality.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive test suite for parameter validation edge cases
- Add tests for all GitHub API integration scenarios in test mode
- Add tests for error handling paths and input validation
- Add comprehensive tests for getFallbackLabels function coverage
- Test all PR operations: getCombinedStatus, hasReviewedPRAtCommit, getCheckSuitesForRef, managePRLabels
- Improve test mocking and resolve linting issues
- Achieve 33+ percentage points increase in test coverage
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix clone URL from yourusername/claude-github-webhook to intelligence-assist/claude-hub
- Fix issues URL to point to correct repository
- Update directory name in clone instructions to match repository name
* feat: implement wait-for-all-checks PR review trigger
This change modifies the PR review triggering logic to wait for ALL check suites
to complete successfully before triggering a single PR review, preventing duplicate
reviews from different check suites (build, security scans, etc.).
Key changes:
- Added PR_REVIEW_WAIT_FOR_ALL_CHECKS env var (default: true)
- Added PR_REVIEW_DEBOUNCE_MS for configurable delay (default: 5000ms)
- Implemented checkAllCheckSuitesComplete() function that queries GitHub API
- Made PR_REVIEW_TRIGGER_WORKFLOW optional (only used when wait-for-all is false)
- Updated tests to handle new behavior
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: correct indentation and remove test-results from git
- Fix ESLint indentation errors in claudeService.js
- Remove test-results directory from git tracking (added to .gitignore)
🤖 Generated with Claude Code (https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: add Claude CLI database sharing and backup system
- Mount host ~/.claude directory in container for shared context
- Add .dockerignore to optimize build context
- Create backup script with daily/weekly retention strategy
- Add cron setup for automated backups to /backup partition
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: add missing makeGitHubRequest function to githubService
The checkAllCheckSuitesComplete function was failing because it tried to call
githubService.makeGitHubRequest which didn't exist. This was causing PR reviews
to never trigger with the 'Waiting for other check suites to complete' message.
Added the missing function to make direct GitHub API requests using Octokit.
* fix: add URL validation to makeGitHubRequest to prevent SSRF vulnerability
* refactor: remove makeGitHubRequest to fix SSRF vulnerability
- Replace makeGitHubRequest with getCheckSuitesForRef using Octokit
- Simplify getWorkflowNameFromCheckSuite to use app info from webhook
- Fix tests to match new implementation
- Add PR review environment variables to .env file
---------
Co-authored-by: Jonathan Flatt <jonflatt@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: ClaudeBot <claude@example.com>
- Added brain_factory.png to new assets/ directory
- Updated README to reference image in assets folder
- Maintains proper project structure with dedicated assets location
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Complete rewrite focused on technical users and immediate value
- Added brain factory header image with descriptive alt text
- Improved accessibility with proper heading structure and emoji placement
- Streamlined content with focus on architecture and performance
- Clear examples and quick start instructions
- Enhanced troubleshooting and monitoring sections
- Better link text for screen reader compatibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Removed version pin from @anthropic-ai/claude-code to allow automatic updates
- Added hadolint ignore directive for DL3016 on this specific line
- This allows us to stay current with Claude Code updates while maintaining security for other packages
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed python3-pip version to 23.0.1+dfsg-1 (without +deb12u1 suffix)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated git version to 1:2.39.5-0+deb12u2
- Updated curl version to 7.88.1-10+deb12u12
- Use wildcard for Docker CLI version (5:27.*) for better compatibility
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Set SHELL with pipefail option (DL4006)
- Pin all apt package versions (DL3008)
- Add --no-install-recommends flag to apt-get (DL3015)
- Pin Claude Code npm package version to 1.0.3 (DL3016)
- Fix groupadd/usermod error handling pattern (SC2015)
- Consolidate RUN instructions for permission changes (DL3059)
These changes address all Hadolint warnings and improve container security.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove Node.js 18.x from PR workflow test matrix
- Update README.md to require Node.js 20+ instead of 16+
- Add engines field to package.json specifying Node.js >=20.0.0
- Fix linting issues (unused import and indentation)
This addresses the compatibility issue with @octokit/rest v22.0.0
which dropped support for Node.js 18, simplifying our CI/CD pipeline
and ensuring consistent Node.js version requirements.
Resolves#68🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
The auto-tagging functionality was failing because the specialized entrypoint script was not included in the Docker image build. This adds the missing script to the /scripts/runtime directory and ensures proper permissions.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove complex error response tracking from tests
- Simplify all responses to standard webhook success format
- Update test expectations to match new selective workflow triggering
- Remove outdated test scenarios that don't apply to new implementation
- All tests now pass with cleaner, more focused assertions
The tests now properly reflect our simplified approach:
- Single environment variable controls which workflow triggers reviews
- Standard webhook responses for all scenarios
- Repository-independent configuration
- No complex error result tracking
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add PR_REVIEW_TRIGGER_WORKFLOW environment variable for precise control
- Make automated PR reviews repository-independent
- Fix Docker security scan conditional logic in pr.yml
- Add security job dependencies to docker-build job
- Filter out CodeQL/analysis-only workflows from triggering PR reviews
- Update documentation with new configuration options
- Partial test fixes for new workflow filtering logic
This prevents multiple PR reviews from different check suites and makes
the system work across any repository with proper configuration.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create dedicated PR workflow (pr.yml) with comprehensive CI checks
- Remove pull_request triggers from ci.yml, security.yml, and deploy.yml
- Remove develop branch references for trunk-based development
- Include security scans, CodeQL analysis, and Docker builds in PR workflow
- Prevent automated PR review from triggering multiple times
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Updated awsCredentialProvider tests to mock fs.promises.readFile
- Changed all readFileSync references to readFile in test mocks
- All tests now pass with the async file operations
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Convert async file operations in awsCredentialProvider.js to use fs.promises
- Add eslint-disable comments for necessary sync operations during initialization
- Fix warnings in logger.js, secureCredentials.js, and test files
- All 21 linter warnings resolved
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>