Conversation
- Add HOST environment variable support in ConfigService - Update server to bind to configurable host address - Set default to localhost for npm, 0.0.0.0 for Docker - Update .env.example files with HOST variable - Configure docker-compose.yml with HOST=0.0.0.0 - Install additional Docker dependencies (bash, openssh, git) - Add Puppet/Facter environment variables for Alpine compatibility
Add comprehensive guide for HOST/PORT configuration covering npm development and Docker deployment scenarios
- Create asyncHandler wrapper for Express route handlers - Apply to all route handlers for consistent error handling - Add explicit Promise<void> return types
Support Bolt task show output format with [name, description] tuples in addition to existing object formats
- Add explicit type annotation to db.get callback - Use double quotes for consistency
- Update vitest to 4.0.9 - Reorder dependencies alphabetically - Add schema.sql copy to build script
Infrastructure & DevOps: - Add pre-commit hooks configuration with comprehensive checks - Add setup script for pre-commit installation - Add markdownlint and secrets baseline configs - Update CI/CD workflows for pre-commit integration - Add new pre-commit-and-commit Kiro hook Docker Improvements: - Pin Bolt CLI version to 3.27.4 for consistency - Add ARM64 facter configuration for Alpine Linux detection - Pin apk package versions for security and reproducibility - Add automatic architecture detection in docker-run.sh (amd64/arm64) - Update docker-compose.yml configuration Documentation: - Add comprehensive pre-commit hooks section to README - Fix markdown formatting issues across documentation - Update Docker deployment instructions - Move NETWORK_CONFIGURATION.md to docs/ directory Code Quality: - Fix end-of-file newlines across all hook and steering files - Fix markdown linting issues in multiple files - Remove deprecated commit-message-helper hook - Apply formatting fixes to TypeScript and Svelte files Note: Bypassing markdownlint for pre-existing issues in .kiro/ files
Expert Mode Feature: - Add expert mode toggle in navigation with persistent state - Track expert mode status in execution records - Display expert mode indicator in execution lists and details - Add expertMode.svelte.ts for state management - Update BoltService to accept and track expert mode parameter - Modify command and task routes to handle expert mode flag Database Improvements: - Add migration support with migrations.sql file - Implement runMigrations() method in DatabaseService - Add expert_mode column to executions table - Gracefully handle duplicate column errors during migrations Infrastructure Updates: - Fix shellcheck warning in docker-run.sh (declare and assign separately) - Update docker-compose.yml with latest configuration - Clean up test-bolt-project files - Update .dockerignore patterns - Adjust backend package.json formatting Testing: - Update BoltService tests for expert mode parameter - Update ExecutionRepository tests for expert mode field - Ensure backward compatibility with existing executions
…eter forms Added comprehensive task organization system that groups Bolt tasks by their modules for better discoverability and management. Backend changes: - Enhanced BoltService with module extraction and task grouping logic - Added TasksByModule interface for structured task organization - Implemented /api/tasks/by-module endpoint for organized task retrieval Frontend changes: - Created TaskParameterForm component for dynamic task parameter handling - Built TaskRunInterface component with module-based task organization - Integrated task execution interface into NodeDetailPage - Added collapsible module sections with task counts Infrastructure: - Added Bolt project configuration files (bolt-project.yaml, Puppetfile, inventory.yaml) - Updated .gitignore to exclude Bolt generated files and caches Documentation: - Updated spec design with task organization architecture - Added requirements for task grouping and parameter handling - Marked task 14 (task organization) as complete
Add comprehensive expert mode functionality across frontend and backend: Backend changes: - Integrate ErrorHandlingService with structured error handling - Add expert mode middleware to expose internal details - Capture Bolt commands in BoltService for all execution methods - Add puppet run endpoint with real-time output streaming Frontend changes: - Add expert mode toggle in ErrorAlert component - Display Bolt commands in ExecutionsPage and NodeDetailPage - Create PuppetRunInterface for manual Bolt execution - Add DetailedErrorDisplay component with stack traces - Implement ANSI to HTML converter for terminal output - Add expert mode header to all API requests Infrastructure: - Create ErrorHandlingService with categorized error types - Add error handling middleware with expert/standard modes - Implement comprehensive error handling tests - Update task tracking for completed expert mode implementation
Implemented flexible package installation system with support for multiple task types (tp::install, package, etc.) configurable via environment variables. Backend Changes: - Added PackageTaskConfig schema for flexible task parameter mapping - Extended ConfigService to load and validate package tasks from PACKAGE_TASKS env var - Implemented BoltService.installPackage() method for executing package installation tasks - Added /api/packages/install endpoint for package installation requests - Updated error handling in middleware and tests Frontend Changes: - Created PackageInstallInterface component with task selection and parameter inputs - Enhanced NodeDetailPage with package installation tab - Improved PuppetRunInterface and TaskRunInterface with better error handling and UI feedback - Added dynamic form generation based on task parameter mappings Configuration: - Added PACKAGE_TASKS environment variable with JSON array of task configurations - Included examples for tp::install and package resource types - Updated .env.example files with configuration templates This enables operators to install packages on nodes through the UI using any Bolt task, with parameter mappings defined in configuration rather than hardcoded in the application.
Implemented Server-Sent Events (SSE) streaming for real-time command output across all Bolt operations (commands, packages, tasks, puppet). Changes: - Added StreamingCallback interface to BoltService for stdout/stderr/command streaming - Created StreamingExecutionManager service to manage SSE connections and execution lifecycle - Added /api/streaming/:executionId endpoint for SSE connections - Enhanced all route handlers (commands, packages, tasks, puppet) with streaming support - Updated task 24 in specs with detailed streaming implementation plan - Added comprehensive documentation in REALTIME_STREAMING_IMPLEMENTATION.md The streaming implementation allows clients to receive real-time output from long-running Bolt operations, improving user experience and enabling progress monitoring.
…ntation Implemented Server-Sent Events (SSE) support for real-time streaming of command and task execution output in expert mode. Changes: - Added RealtimeOutputViewer component for displaying streaming output with auto-scroll and syntax highlighting - Created executionStream.svelte.ts utility for SSE connection management and reactive state updates - Updated StreamingExecutionManager to emit command events alongside stdout/stderr - Modified all execution routes (command, task, puppet-run, package install) to support streaming - Removed duplicate error handling in packages route (now handled by global middleware) - Added comprehensive documentation for execution stream utility in lib/README.md - Updated tasks.md marking streaming subtasks 24.1-24.6 as complete The streaming feature displays Bolt commands prominently when expert mode is enabled and provides real-time feedback during long-running operations.
…faces Implement comprehensive realtime streaming integration throughout the application: Backend improvements: - Enhanced StreamingExecutionManager with robust error handling and connection lifecycle management - Added configuration support for streaming settings (timeout, heartbeat interval, max connections) - Improved event emission with proper error boundaries and connection cleanup - Added metrics tracking for active connections and event counts Frontend integration: - Integrated RealtimeOutputViewer in NodeDetailPage for all execution types (commands, tasks, Puppet runs, packages) - Added streaming support to ExecutionsPage for viewing running executions in realtime - Enhanced RealtimeOutputViewer component with better error handling, loading states, and auto-scroll control - Improved UI feedback with connection status indicators and error recovery options Configuration: - Added STREAMING_ENABLED, STREAMING_TIMEOUT_MS, STREAMING_HEARTBEAT_INTERVAL_MS environment variables - Updated .env.example with streaming configuration documentation This completes tasks 24.7 and 24.8 from the implementation plan, providing users with realtime visibility into command and task execution across the entire application.
Add complete API documentation for Pabawi including: - docs/api.md: Detailed endpoint documentation with request/response examples - Health and configuration endpoints - Inventory and node management - Facts gathering - Command execution with whitelist validation - Task execution with parameter handling - Puppet run configuration and execution - Package installation interface - Execution history and filtering - Real-time streaming via Server-Sent Events (SSE) - Expert mode support for enhanced debugging - Common workflows and usage examples - docs/openapi.yaml: OpenAPI 3.0 specification - Complete schema definitions for all request/response types - Path definitions for all endpoints - Parameter and header documentation - Error response schemas with expert mode fields - SSE streaming event definitions - .kiro/specs/pabawi/tasks.md: Mark task 18 as complete - Task 18.1: OpenAPI specification (complete) - Task 18.2: API documentation (complete) All documentation includes expert mode features showing full Bolt commands and enhanced error details for troubleshooting.
… queue Implement Task 19: Performance Optimizations - Add caching layer for inventory (30s TTL) and facts (5min TTL) - Implement cache invalidation methods and configuration options - Add database indexes for execution queries (status, started_at, target_nodes) - Create ExecutionQueue service with configurable concurrent limit (default: 5) - Add GET /api/executions/queue endpoint for queue monitoring - Add configuration via CACHE_INVENTORY_TTL, CACHE_FACTS_TTL, CONCURRENT_EXECUTION_LIMIT, MAX_QUEUE_SIZE - Include performance test suite for database queries - Update API documentation with queue endpoint details This improves system performance by reducing redundant Bolt CLI calls and database query times, while preventing resource exhaustion through execution limiting.
Add complete documentation suite covering troubleshooting, configuration, user guide, and E2E testing. Implement Playwright-based E2E tests for critical user flows including inventory navigation, command execution, facts gathering, and task execution. Documentation added: - docs/troubleshooting.md: comprehensive troubleshooting guide with diagnostics, common issues, and expert mode debugging - docs/configuration.md: complete configuration reference for all environment variables - docs/user-guide.md: step-by-step user guide for all features - docs/e2e-testing.md: E2E testing guide with setup and execution instructions Testing added: - E2E test suite with Playwright covering inventory, commands, facts, and tasks - Integration tests for API endpoints and Bolt service - playwright.config.ts with proper test configuration Project updates: - Updated tasks.md to mark documentation and testing tasks complete - Added IMPLEMENTATION_STATUS.md tracking feature completion - Updated README.md with testing documentation links - Added test dependencies to package.json - Updated .gitignore for test artifacts
Add support for 'puppet' and 'package' execution types throughout the application. Backend changes: - Update database schema with migration to add puppet and package to type constraint - Update ExecutionResult type definition to include new types - Modify execution repository and route handlers to support new types Frontend changes: - Add color coding for new types (puppet: orange, package: green) - Add display label mapping (puppet → 'puppet run', package → 'package') - Update ExecutionsPage component with type badges and labels - Update type definitions across components (PackageInstallInterface, PuppetRunInterface, TaskRunInterface, RealtimeOutputViewer, NodeDetailPage) This enables proper tracking and display of Puppet runs and package installations in the execution history.
- Add version number (v0.1.0) to navigation header - Simplify duration formatting to always display in seconds - Right-align duration column for better readability - Remove expert mode badge from executions table
There was a problem hiding this comment.
Pull request overview
This PR introduces comprehensive documentation for the Pabawi project, including troubleshooting guides, API documentation, configuration guides, and testing documentation. The changes also include updates to configuration files, test implementations, and minor code adjustments to support better testing and Docker deployment.
Key Changes
- Added extensive troubleshooting documentation with diagnostic procedures and common error solutions
- Implemented comprehensive API documentation with OpenAPI specification
- Created detailed configuration guides for various deployment scenarios
- Added E2E testing documentation and database performance testing
- Updated Docker and Bolt project configurations for improved usability
Reviewed changes
Copilot reviewed 92 out of 154 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| docs/troubleshooting.md | Comprehensive troubleshooting guide covering installation, Bolt integration, configuration, and common errors |
| docs/openapi.yaml | Complete OpenAPI 3.0 specification for the Pabawi REST API |
| docs/configuration.md | Detailed configuration guide with environment variables and deployment scenarios |
| docs/api.md | Human-readable API documentation with examples and workflows |
| docs/e2e-testing.md | End-to-end testing guide using Playwright |
| docs/description.md | Minor formatting improvements to technical summary |
| docs/NETWORK_CONFIGURATION.md | Network configuration guide for various deployment scenarios |
| docker-compose.yml | Updated image name and Bolt project path, added HOST environment variable |
| bolt-project/inventory.yaml | Simplified inventory by removing unused node groups |
| bolt-project/bolt-project.yaml | New Bolt project configuration file |
| bolt-project/Puppetfile | New Puppetfile with module dependencies |
| backend/tsconfig.json | Updated to include test files and removed rootDir restriction |
| backend/test/**/*.test.ts | Multiple new test files for services, database, and error handling |
| backend/src/routes/streaming.ts | New streaming router implementation |
| backend/src/routes/facts.ts | Updated to use asyncHandler |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Fix build script to ensure dist/database directory exists - Apply consistent code formatting (quotes, line breaks) - Remove unused variables and parameters - Remove unused imports - Improve code readability and maintainability
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 93 out of 155 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
No description provided.