A centralized TypeScript Node.js actions manager designed to replace scattered .bat scripts and simplify Windows Task Scheduler automation. It provides a single entry point for running various automation tasks, tracking their execution history, and generating comprehensive status reports.
Built in May 2026. This application focuses on reliability, maintainability, and providing a great developer experience for local automation workflows.
- 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.
- 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%+).
- Execution Tracking: Automatically records last execution time and run type for every action.
- 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 formatUnit Testing: We use Vitest for unit and integration testing. All new logic should include corresponding tests.
pnpm testCoverage: The project has high coverage requirements (80%+). Ensure your tests maintain this threshold.
pnpm test:coverageCompilation: 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 with:
- Node.js - JavaScript runtime
- TypeScript - Type safety
- Enquirer - Interactive prompts
- Vitest - Testing framework
- tsx - TypeScript execution
This project is licensed under the MIT License - see the LICENSE file for details.