- Add combined coverage script to merge lcov reports
- Update GitHub workflows to generate and upload combined coverage
- Install missing CLI dependencies (ora, yaml, cli-table3, mock-fs)
- Add initial tests for SessionManager and IssueHandler
- Exclude type-only files from coverage metrics
- Update jest config to exclude type files from coverage
This ensures Codecov receives coverage data from both the main project
and CLI subdirectory, providing accurate overall project coverage metrics.
* feat: Implement Claude orchestration provider for parallel session management
- Add ClaudeWebhookProvider implementing the webhook provider interface
- Create orchestration system for running multiple Claude containers in parallel
- Implement smart task decomposition to break complex projects into workstreams
- Add session management with dependency tracking between sessions
- Support multiple execution strategies (parallel, sequential, wait_for_core)
- Create comprehensive test suite for all components
- Add documentation for Claude orchestration API and usage
This enables super-charged Claude capabilities for the MCP hackathon by allowing
multiple Claude instances to work on different aspects of a project simultaneously,
with intelligent coordination and result aggregation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: Add session management endpoints for MCP integration
- Add SessionHandler for individual session CRUD operations
- Create endpoints: session.create, session.get, session.list, session.start, session.output
- Fix Claude invocation in Docker containers using proper claude chat command
- Add volume mounts for persistent storage across session lifecycle
- Simplify OrchestrationHandler to create single coordination sessions
- Update documentation with comprehensive MCP integration examples
- Add comprehensive unit and integration tests for new endpoints
- Support dependencies and automatic session queuing/starting
This enables Claude Desktop to orchestrate multiple Claude Code sessions via MCP Server tools.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Update ClaudeWebhookProvider validation for session endpoints
- Make project fields optional for session management operations
- Add validation for session.create requiring session field
- Update tests to match new validation rules
- Fix failing CI tests
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Use Promise.reject for validation errors in parsePayload
- Convert synchronous throws to Promise.reject for async consistency
- Fixes failing unit tests expecting rejected promises
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Mock SessionManager in integration tests to avoid Docker calls in CI
- Add SessionManager mock to prevent Docker operations during tests
- Fix claude-webhook.test.ts to use proper test setup and payload structure
- Ensure all integration tests can run without Docker dependency
- Fix payload structure to include 'data' wrapper
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Mock child_process to prevent Docker calls in CI tests
- Mock execSync and spawn at child_process level to prevent any Docker commands
- This ensures tests work in CI environment without Docker
- Tests now pass both locally and in CI Docker build
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Address PR review comments and fix linter warnings
- Move @types/uuid to devDependencies
- Replace timestamp+Math.random with crypto.randomUUID() for better uniqueness
- Extract magic number into EXTRA_SESSIONS_COUNT constant
- Update determineStrategy return type to use literal union
- Fix unnecessary optional chaining warnings
- Handle undefined labels in GitHub transformers
- Make TaskDecomposer.decompose synchronous
- Add proper eslint-disable comments for intentional sync methods
- Fix all TypeScript and formatting issues
* fix: Mock SessionManager in integration tests to prevent Docker calls in CI
- Add SessionManager mocks to claude-session.test.ts
- Add SessionManager mocks to claude-webhook.test.ts
- Prevents 500 errors when running tests in CI without Docker
- All integration tests now pass without requiring Docker runtime
* fix: Run only unit tests in Docker builds to avoid Docker-in-Docker issues
- Change test stage to run 'npm run test:unit' instead of 'npm test'
- Skips integration tests that require Docker runtime
- Prevents CI failures in Docker container builds
- Integration tests still run in regular CI workflow
* fix: Use Dockerfile CMD for tests in Docker build CI
- Remove explicit 'npm test' command from docker run
- Let Docker use the CMD defined in Dockerfile (npm run test:unit)
- This ensures consistency and runs only unit tests in Docker builds
---------
Co-authored-by: Claude <noreply@anthropic.com>
* fix: merge entrypoint scripts and fix auto-tagging tool permissions
- Merged duplicate claudecode-entrypoint.sh and claudecode-tagging-entrypoint.sh scripts
- Added dynamic tool selection based on OPERATION_TYPE environment variable
- Fixed auto-tagging permissions to include required Bash(gh:*) commands
- Removed 95% code duplication between entrypoint scripts
- Simplified claudeService.ts to use unified entrypoint
- Auto-tagging now uses: Read,GitHub,Bash(gh issue edit:*),Bash(gh issue view:*),Bash(gh label list:*)
- General operations continue to use full tool set
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update Dockerfile to use unified entrypoint script
- Remove references to deleted claudecode-tagging-entrypoint.sh
- Update build process to use single unified entrypoint script
* fix: remove unnecessary async from promisify mock to fix lint error
* feat: add Husky pre-commit hooks with Prettier as primary formatter
- Added Husky for Git pre-commit hooks
- Configured eslint-config-prettier to avoid ESLint/Prettier conflicts
- Prettier handles all formatting, ESLint handles code quality only
- Pre-commit hooks: Prettier format, ESLint check, TypeScript check
- Updated documentation with pre-commit hook setup
- All code quality issues resolved
* feat: consolidate workflows and fix permission issues with clean Docker runners
- Replace 3 complex workflows with 2 lean ones (pull-request.yml, main.yml)
- Add Docker runner configuration for clean, isolated builds
- Remove file permission hacks - use ephemeral containers instead
- Split workload: GitHub-hosted for tests/security, self-hosted for Docker builds
- Add comprehensive pre-commit configuration for security
- Update documentation to be more pragmatic
- Fix credential file permissions and security audit
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: allow Husky prepare script to fail in production builds
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: update CI badge to reference new main.yml workflow
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Remove all Discord chatbot implementation files
- Remove generic chatbot provider infrastructure
- Update docker-compose.yml to use environment variables instead of Docker secrets
- Keep dual secret support (files take priority, env vars as fallback)
- Document secret configuration options in .env.example
- Clean up related tests and documentation
- Prepare codebase for CLI-first approach with future plugin architecture
This simplifies the codebase by removing incomplete chatbot functionality
while maintaining flexible secret management for both development and production.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix E2E tests to skip gracefully when Docker images are missing
- Update default test script to exclude E2E tests (require Docker)
- Add ESLint disable comments for necessary optional chains in webhook handling
- Maintain defensive programming for GitHub webhook payload parsing
- All unit tests now pass with proper error handling
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add dynamic version and Docker Hub badges to README
- Include Docker pull and run commands for easy quickstart
- Update package.json version to 0.1.0
- Provide both Docker image and source installation options
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive tests for index.ts (91.93% coverage)
- Add tests for routes/claude.ts (91.66% coverage)
- Add tests for routes/github.ts (100% coverage)
- Add tests for utils/startup-metrics.ts (100% coverage)
- Add tests for utils/sanitize.ts with actual exported functions
- Add tests for routes/chatbot.js
- Update test configuration to exclude test files from TypeScript build
- Fix linting issues in test files
- Install @types/supertest for TypeScript test support
- Update .gitignore to exclude compiled TypeScript test artifacts
Overall test coverage improved from ~65% to 76.5%
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove 11 JavaScript source files that have been migrated to TypeScript
- Update package.json scripts to reference TypeScript files
- Update documentation and scripts to reference .ts instead of .js
- Keep JavaScript files without TypeScript equivalents (chatbot-related)
This completes the TypeScript migration for core application files while
maintaining backward compatibility for components not yet migrated.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move TypeScript from devDependencies to dependencies to ensure it's available in production
- Update startup script to always compile TypeScript for latest source
- Fix container restart loop caused by missing TypeScript compiler
- Ensure webhook service starts successfully with compiled dist files
Resolve conflicts in package.json by:
- Keeping TypeScript support (.{js,ts}) for test patterns
- Preserving chatbot-specific test script
- Maintaining compatibility with new TypeScript infrastructure
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fix unused crypto import in DiscordProvider by using destructured import
- Add rate limiting to chatbot webhook endpoints using express-rate-limit
- Remove Slack/Nextcloud placeholder implementations to focus on Discord only
- Update tests to handle mocking issues and environment variables
- Clean up documentation to reflect Discord-only implementation
- Simplify architecture while maintaining extensibility for future platforms
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Downgrade babel-jest from 30.0.0-beta.3 to 29.7.0 for ts-jest compatibility
- Resolves ERESOLVE dependency conflicts in CI/CD
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
## Overview
Establishes comprehensive TypeScript infrastructure and tooling for
the claude-github-webhook project as specified in issue #101.
## Dependencies Added
- Core TypeScript: typescript, @types/node, @types/express, @types/body-parser
- Development: ts-node for dev execution
- ESLint: @typescript-eslint/parser, @typescript-eslint/eslint-plugin
- Testing: ts-jest, babel-jest for Jest TypeScript support
## Configuration Files
- tsconfig.json: Strict TypeScript config targeting ES2022/CommonJS
- eslint.config.js: Updated with TypeScript support and strict rules
- jest.config.js: Configured for both .js and .ts test files
- babel.config.js: Babel configuration for JavaScript transformation
## Build Scripts
- npm run build: Compile TypeScript to dist/
- npm run build⌚ Watch mode compilation
- npm run typecheck: Type checking without compilation
- npm run clean: Clean build artifacts
- npm run dev: Development with ts-node
- npm run dev⌚ Development with nodemon + ts-node
## Infrastructure Verified
✅ TypeScript compilation works
✅ ESLint supports TypeScript files
✅ Jest runs tests with TypeScript support
✅ All existing tests pass (67 tests, 2 skipped)
✅ Docker build process updated for TypeScript
## Documentation
- CLAUDE.md updated with TypeScript build commands and architecture
- Migration strategy documented (Phase 1: Infrastructure, Phase 2: Code conversion)
- TypeScript coding guidelines added
## Backward Compatibility
- Existing JavaScript files continue to work during transition
- Support for both .js and .ts files in tests and linting
- No breaking changes to existing functionality
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive chatbot provider architecture supporting Discord webhooks with extensible design for future Slack and Nextcloud integration. Includes dependency injection, signature verification, comprehensive test suite, and full documentation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- 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>
- 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>
- Delete placeholder E2E test file that only tested mocked values
- Remove empty integration test directories (aws/, claude/, github/)
- Clean up package.json test scripts (removed test:integration and test:e2e)
- Update CI workflow to remove E2E test job
These placeholder tests provided no real value as they only verified
hardcoded mock responses. Real E2E and integration tests can be added
when there's actual functionality to test.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Install @octokit/rest package for secure GitHub API access
- Replace manual URL construction with Octokit client methods
- Fix all 6 CodeQL security alerts (3 critical SSRF, 3 medium)
- Update all GitHub API calls to use type-safe Octokit methods
- Maintain backward compatibility with existing tests
This addresses the server-side request forgery vulnerabilities identified
by CodeQL by using GitHub's official client library instead of manually
constructing API URLs.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Fixed missing catch clause in handleWebhook function
- Removed extra closing braces causing syntax errors
- Fixed indentation issues throughout githubController.js
- Updated lint scripts for ESLint 9 flat config
- Applied automatic formatting fixes
- Fixed test data for check-suite tests
All tests now pass and code meets linting standards.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove pre-commit package with high severity vulnerabilities
- Install husky as modern, secure pre-commit hook manager
- Update setup:dev script to use husky install
- All security vulnerabilities now resolved (0 found)
- Revert CI audit level back to moderate
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add GitHub Actions workflows for CI, security scanning, and deployment
- Implement automated PR review system triggered by successful check suites
- Add ESLint and Prettier for code quality and formatting
- Configure Dependabot for automated dependency updates
- Add comprehensive test coverage for check suite webhook events
- Include Docker builds and container registry publishing
- Add security scanning with CodeQL, npm audit, and TruffleHog
- Create PR and issue templates for better collaboration
- Add comprehensive CI/CD documentation
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>