Actions Manager is a centralized TypeScript and Node.js automation platform designed to replace scattered .bat scripts and streamline Windows Task Scheduler. It provides a single entry point for running, organizing, and monitoring automation tasks through an interactive CLI or scheduled execution. Include execution history tracking, automatic report generation, strict TypeScript typing, robust error handling, ESM architecture, and testing with Vitest.
Built in May 2026, the project focuses on maintainability, reliability, and improving developer productivity for local automation workflows.
- 🎛️ Centralized action management with a single entry point (
actionsManager.bat) - 🖥️ Interactive CLI menu powered by
enquirerfor manual action selection - 📅 Windows Task Scheduler integration for automated execution
- 📜 Automatic history logging to
data/history.jsonandACTIONS_REPORT.txt - 📊 Real-time status reports for at-a-glance task monitoring
- ⏱️ Execution tracking with last run time and run type recording
- 🏗️ Modern ESM architecture with TypeScript for future-proof code
- 🛡️ Robust error handling (suppresses noisy stack traces for expected failures)
- 🔒 Full TypeScript with strict type checking
- 🧪 Comprehensive testing with Vitest (80%+ coverage requirement)
- ⌨️ ESC navigation support for graceful menu exits
- 🔇 Quiet mode to suppress Node.js deprecation warnings
- ⚡ Fast execution via
tsx
- Centralized Action Management: Single entry point for all project actions via
actionsManager.bat. - Interactive CLI: Dynamic dropdown menu powered by
enquirerfor manual action selection. - Task Scheduler Integration: Direct execution mode optimized for Windows Task Scheduler.
- Automatic History Logging: Every run is recorded to
data/history.jsonandACTIONS_REPORT.txt. - Real-Time Status Reporting: Generates monitoring reports for at-a-glance task status.
- Execution Tracking: Automatically records last execution time and run type for every action.
- Modern ESM Architecture: Built using ES Modules and TypeScript for a future-proof codebase.
- Robust Error Handling: Suppresses noisy stack traces for expected failures while preserving them for crashes.
- Type Safety: Full TypeScript implementation with strict type checking.
- Comprehensive Testing: Full Vitest setup with high coverage requirements (80%+).
- Unified Entry Point: One
.batfile replaces multiple scattered scripts on your desktop. - ESC Navigation: Full support for
Escto exit menus gracefully. - Quiet Mode: Suppresses Node.js deprecation warnings and unnecessary shell noise.
- Automatic Documentation: History and reports are generated automatically without manual intervention.
- Fast Execution: Uses
tsxfor high-performance execution of TypeScript files.
- Node.js: v20 or higher recommended.
- pnpm: Fast, disk space efficient package manager.
- TypeScript: The project uses
tsxfor execution.
- Clone the repository:
git clone https://github.com/orassayag/actions-manager.git
cd actions-manager- Install dependencies:
pnpm install- Configure your report path:
Edit settings.ts to set your desired
ACTIONS_REPORT.txtlocation.
Edit settings.ts to manage global configurations:
reportPath: Absolute path where the status report will be generated (e.g., your Desktop).
- Create the action file: Create
src/actions/myNewAction.tsimplementing theActionDefinitioninterface. - Register the action: Open
src/registry.ts, import your action and add it to theactionsarray.
Start the interactive CLI menu to select and run actions manually:
./actionsManager.batPoint your Task Scheduler task to the batch file and pass the action name as an argument:
- Program/script:
C:\path\to\actions-manager\actionsManager.bat - Add arguments:
actionName - Start in:
C:\path\to\actions-manager
| Action Name (argument) | Label | Schedule |
|---|---|---|
dailyEventsBot |
Daily Events Bot | Daily |
syncDaily |
Sync Daily Documents | Daily |
syncAutoPackagesUpdater |
Auto Packages Updater | Weekly |
seriesAndMovies |
Series & Movies | Manual |
reposScanReporter |
Repos Scan Reporter | Weekly |
contactsScanMaintainer |
Contacts Scan Maintainer | Weekly |
globalPackageUpdater |
Global Package Updater | Manual |
- Use Meaningful Labels: Ensure action labels are descriptive for the CLI menu.
- Handle Sub-Processes: Use
spawnSyncorexecSyncwithstdio: 'inherit'to preserve interactive flows. - Monitor the Report: Periodically check
ACTIONS_REPORT.txton your desktop for task status. - Test Before Scheduling: Run actions manually via the CLI before setting them up in Task Scheduler.
- Keep Settings Local: Use settings.ts for environment-specific paths.
Start the interactive menu:
pnpm startRun in live mode (disables dry-mode):
pnpm start:liveRun with no cache:
pnpm start:no-cacheRun in auto mode (for Task Scheduler):
pnpm syncDevelopment mode with auto-reload:
pnpm devRun all tests:
pnpm testWatch mode (during development):
pnpm test:watchRun tests without coverage:
pnpm test:no-coverageRun Vitest UI:
pnpm test:uiLint code:
pnpm lintFormat code:
pnpm format
pnpm format:check # Check without modifyingCompile TypeScript:
pnpm buildLinting: The project uses ESLint with strict rules to ensure code quality and consistency.
pnpm lintFormatting: Prettier is used for code formatting. Always format your code before submitting a pull request.
pnpm formatCompilation: Compile the TypeScript source to JavaScript:
pnpm buildExecution:
The project uses tsx for direct execution of TypeScript files during development.
This project follows clean architecture principles:
- Layered Architecture: Decoupled entry, interactive, execution, and history layers.
- Registry Pattern: Centralized registration of actions for easy management.
- Single Responsibility: Each action is a standalone module in the
actions/directory. - Robust Persistence: JSON-based history tracking for reliable data storage.
- Fail-Safe Design: Errors in one action don't prevent others from being managed.
actions-manager/
├── src/
│ ├── actions/ # Individual action implementations
│ ├── __tests__/ # Unit tests and infrastructure tests
│ ├── history.ts # History tracking and report generation logic
│ ├── index.ts # Main entry point and CLI logic
│ ├── prompt.ts # Enquirer-based interactive menu logic
│ ├── registry.ts # Central registry for all actions
│ ├── runner.ts # Execution engine for actions
│ ├── settings.ts # Global project settings
│ └── types.ts # TypeScript interfaces and types
├── data/ # Local JSON storage for execution history
├── dist/ # Compiled JavaScript output
├── actionsManager.bat # Main Windows entry point
├── vitest.config.ts # Vitest configuration
├── tsconfig.json # TypeScript configuration
└── package.json # Project dependencies and scripts
- Registry Pattern: All actions are registered in a central registry for discovery.
- Command Pattern: Actions encapsulate execution logic within a
runfunction. - Strategy Pattern: Different execution strategies for manual vs. scheduled runs.
- Observer Pattern: Logging and reporting systems observe action lifecycle events.
We welcome contributions! Please follow these guidelines:
- Report issues via GitHub Issues.
- Submit pull requests for new features or bug fixes.
- Maintain high test coverage for any new logic.
- Follow the existing ESM and TypeScript patterns.
For questions, issues, or contributions:
- GitHub Issues: https://github.com/orassayag/actions-manager/issues
- Email: orassayag@gmail.com
This application has an MIT license - see the LICENSE file for details.
- Or Assayag - Initial work - orassayag
- Or Assayag orassayag@gmail.com
- GitHub: https://github.com/orassayag
- StackOverflow: https://stackoverflow.com/users/4442606/or-assayag?tab=profile
- LinkedIn: https://linkedin.com/in/orassayag
- Built for educational and research purposes
- Respects robots.txt and implements rate limiting
- Uses user-agent rotation to avoid detection
- Implements polite crawling practices