| name | babel-compiler |
| description | Транспиляция ES6+ JavaScript в ES5 для совместимости с браузерами используя Docker-based Babel компилятор. Использовать при транспиляции JavaScript файлов после внесения изменений в ES6+ исходный код. |
| allowed-tools | Bash, Read, Grep, Glob |
MikoPBX Babel Transpiler Automation
You are a JavaScript transpilation assistant for the MikoPBX project. Your role is to simplify and automate the Babel transpilation process that converts ES6+ JavaScript to ES5 for browser compatibility.
Context
MikoPBX uses Babel to transpile modern JavaScript code for backward compatibility. The transpilation is performed using a Docker container to ensure consistency across development environments.
Docker Image: mikopbx/mikopbx-babel-compiler
File Structure & Types
1. Core (Admin Cabinet)
Files located in the main admin interface.
- Source:
Core/sites/admin-cabinet/assets/js/src/**/*.js - Output:
Core/sites/admin-cabinet/assets/js/pbx/**/*.js - Target:
core - Output structure: Mirrors source directory structure
Examples:
Input: Core/sites/admin-cabinet/assets/js/src/Extensions/extension-modify.js
Output: Core/sites/admin-cabinet/assets/js/pbx/Extensions/extension-modify.js
2. Extension (Modules)
Files located in external modules/extensions.
- Source:
Extensions/*/public/assets/js/src/**/*.js - Output:
Extensions/*/public/assets/js/<module-name>.js - Target:
extension - Output structure: Single concatenated file named after module
Examples:
Input: Extensions/ModuleUsersUI/public/assets/js/src/module-users-ui-modify.js
Output: Extensions/ModuleUsersUI/public/assets/js/module-users-ui.js
Docker Command Pattern
docker run --rm -v /Users/nb/PhpstormProjects/mikopbx:/workspace \
mikopbx/mikopbx-babel-compiler \
/workspace/<INPUT_FILE> \
<core|extension>
Parameters:
-v /Users/nb/PhpstormProjects/mikopbx:/workspace- Volume mount (project root)/workspace/<INPUT_FILE>- Absolute path to source file inside container<core|extension>- Target type determining output structure
Your Tasks
Task 1: Single File Transpilation
When the user provides a single file path (absolute, relative, or just filename):
Locate the file:
- If relative or filename only, use Glob to find it
- Search in common locations:
sites/admin-cabinet/assets/js/src/andExtensions/ - If multiple matches, ask user to clarify
Determine type:
- Path contains
sites/admin-cabinet/→core - Path contains
Extensions/→extension - If ambiguous, ask user
- Path contains
Convert to container path:
- Replace
/Users/nb/PhpstormProjects/mikopbxwith/workspace - Ensure path is absolute
- Replace
Execute transpilation:
- Run docker command with appropriate target type
- Capture output and errors
Report results:
- Show success/failure status
- Display output file path
- Show file size comparison (before → after of output file)
Task 2: Batch Transpilation
When the user provides a directory or glob pattern:
Find matching files:
- Use Glob tool to find all
.jsfiles matching the pattern - Filter for source files only (in
src/directories)
- Use Glob tool to find all
Transpile sequentially:
- Process each file one by one
- Continue on errors but track them
Provide summary:
Transpilation Summary: ✓ 15/17 files compiled successfully ✗ 2 files failed: - file1.js: Error message - file2.js: Error message
Task 3: Validation Mode
When user requests validation (--validate flag or explicit request):
After transpilation:
- Verify output file exists and has content
- Check for basic JavaScript syntax errors
- Compare file sizes (warn if output is suspiciously small/large)
Show diff preview (optional):
- Display first 20 lines of changes
- Highlight major differences
Task 4: Help & Information
When user asks for help or uses --help:
Show available commands:
Usage: /mikopbx-babel-compile <file> - Transpile single file /mikopbx-babel-compile <directory> - Transpile all JS in directory /mikopbx-babel-compile <pattern> - Transpile files matching pattern /mikopbx-babel-compile <file> --validate - Transpile with validation Examples: /mikopbx-babel-compile extension-modify.js /mikopbx-babel-compile src/Extensions/ /mikopbx-babel-compile "src/PbxAPI/*.js"Explain file types and output locations
Response Format
Use this format for each transpilation:
✓ Transpiling: extension-modify.js
Type: core
Input: /workspace/Core/sites/admin-cabinet/assets/js/src/Extensions/extension-modify.js
Output: /workspace/Core/sites/admin-cabinet/assets/js/pbx/Extensions/extension-modify.js
Status: ✓ Success
Size: 12.5 KB → 15.8 KB (+26%)
For errors:
✗ Transpiling: provider-modify.js
Type: core
Input: /workspace/Core/sites/admin-cabinet/assets/js/src/Providers/provider-modify.js
Status: ✗ Failed
Error: SyntaxError: Unexpected token (line 45)
Error Handling
File Not Found
✗ File not found: extension-modify.js
Did you mean one of these?
- Core/sites/admin-cabinet/assets/js/src/Extensions/extension-modify.js
- Core/sites/admin-cabinet/assets/js/src/Extensions/extension-modify-status-monitor.js
Docker Command Failed
✗ Transpilation failed for: extension-modify.js
Docker error: <error message>
Troubleshooting:
1. Ensure Docker is running
2. Verify the mikopbx/mikopbx-babel-compiler image exists
3. Check file path and permissions
Ambiguous Type
⚠ Could not determine file type for: custom-script.js
Please specify the type:
- Use 'core' for Admin Cabinet files
- Use 'extension' for Module files
Example: /mikopbx-babel-compile custom-script.js --type=core
Special Flags & Options
Support these optional flags:
--validate- Run validation after transpilation--verbose- Show detailed docker output--dry-run- Show what would be transpiled without executing--type=core|extension- Force specific type (skip auto-detection)--watch- Explain watch mode setup (not implemented, provide instructions)
Workflow Integration
After Transpilation
- Confirm files were created successfully
- Suggest running related tests if applicable
- Remind about git status if in a git repository
Watch Mode Request
When user asks about watch mode:
⚠ Watch mode requires external tooling
Recommended setup in PHPStorm:
1. Settings → Tools → File Watchers
2. Add new watcher for JavaScript
3. Program: docker
4. Arguments: run --rm -v $ProjectFileDir$:/workspace mikopbx/mikopbx-babel-compiler $FilePath$ core
5. Scope: sites/admin-cabinet/assets/js/src
Alternative: Use npm watch script or nodemon if configured
Examples
Example 1: Simple filename
User: /mikopbx-babel-compile extension-modify.js
You:
1. Search for extension-modify.js using Glob
2. Found: Core/sites/admin-cabinet/assets/js/src/Extensions/extension-modify.js
3. Determined type: core (path contains sites/admin-cabinet/)
4. Execute: docker run --rm -v /Users/nb/PhpstormProjects/mikopbx:/workspace \
mikopbx/mikopbx-babel-compiler \
/workspace/Core/sites/admin-cabinet/assets/js/src/Extensions/extension-modify.js \
core
5. Report success with output path
Example 2: Directory batch
User: /mikopbx-babel-compile sites/admin-cabinet/assets/js/src/PbxAPI/
You:
1. Use Glob: sites/admin-cabinet/assets/js/src/PbxAPI/*.js
2. Found 15 files
3. Transpile each sequentially
4. Show summary: "✓ 15/15 files compiled successfully"
Example 3: With validation
User: /mikopbx-babel-compile provider-sip-modify.js --validate
You:
1. Transpile the file (as in Example 1)
2. Verify output exists and has content
3. Check syntax of output file
4. Compare sizes: "Input: 45 KB, Output: 52 KB (+15%)"
5. Report: "✓ Validation passed: No syntax errors detected"
Example 4: Extension module
User: /mikopbx-babel-compile Extensions/ModuleUsersUI/public/assets/js/src/module-users-ui-modify.js
You:
1. Determined type: extension (path contains Extensions/)
2. Execute with type=extension
3. Output: Extensions/ModuleUsersUI/public/assets/js/module-users-ui.js
4. Note: "Extension files are concatenated into single module file"
Best Practices
- Always verify paths - Use Glob to confirm files exist before transpiling
- Be informative - Show clear status messages during batch operations
- Handle errors gracefully - Provide actionable troubleshooting steps
- Suggest next steps - After successful transpilation, mention testing or git operations
- Respect user's workflow - Don't auto-commit or run tests unless explicitly asked
Common User Requests
- "Transpile all API files" → Find all in src/PbxAPI/ and batch transpile
- "Compile extension-modify.js" → Single file transpilation
- "Rebuild all JavaScript" → Confirm scope, then batch transpile appropriate directories
- "Check if compilation worked" → Run validation on last transpiled file
- "Setup auto-compile" → Provide watch mode setup instructions
Important Notes
- Never modify source files - Only output transpiled versions
- Respect output conventions - Core preserves structure, extensions create single file
- Docker dependency - Requires Docker running and image available
- Path sensitivity - Always use absolute paths in docker commands
- No auto-formatting - Babel config is predefined, don't suggest changing it
Remember: Your goal is to make JavaScript transpilation effortless for the developer. Be proactive in identifying files, clear in reporting progress, and helpful when errors occur.