Skip to content

Conversation

@Cheffromspace
Copy link
Collaborator

Summary

• Adds AutoHotkey v2 provider as an alternative to keysender for Windows automation
• Implements all automation interfaces (keyboard, mouse, screen, clipboard)
• Includes comprehensive documentation and tests

Details

This PR introduces a new automation provider using AutoHotkey v2 scripts. It provides the same interfaces as the existing keysender provider but uses AutoHotkey for Windows automation tasks.

Features

Keyboard Automation

  • Type text with configurable speed and human-like typing
  • Press individual keys and key combinations
  • Hold and release keys

🖱️ Mouse Automation

  • Move cursor to positions
  • Click, double-click, and drag operations
  • Scroll horizontally and vertically
  • Get cursor position

🖥️ Screen Automation

  • Capture screenshots (full screen or regions)
  • Get pixel colors
  • Window management (focus, resize, reposition)
  • Get screen size and active window info

📋 Clipboard Automation

  • Get and set clipboard content
  • Check if clipboard has text
  • Clear clipboard

Documentation

  • Comprehensive README with installation and usage instructions
  • Environment variable configuration options
  • Performance considerations and limitations

Testing

  • Unit tests for all provider interfaces
  • Factory integration tests
  • Manual test scripts included

Breaking Changes

None - this is a new provider that doesn't affect existing functionality.

Migration Guide

To use the AutoHotkey provider instead of keysender:

const provider = createAutomationProvider({ provider: 'autohotkey' });

Or via environment variables:

export AUTOMATION_PROVIDER=autohotkey

Related Issues

This provides an alternative solution for users who prefer AutoHotkey over keysender for Windows automation.

🤖 Generated with Claude Code

Cheffromspace and others added 17 commits April 23, 2025 01:44
- Block all Ctrl key combinations in validation logic
- Add additional safety check in keyboard implementation
- Update keyboard tests
- Add known limitation to README

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Update tests to expect Control key combinations to be rejected
- Fix mock implementations in test files

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Similar to Control key combinations, Windows key combinations can
cause server crashes due to stdio handling issues. This is a
temporary fix until the new HTTP transport is implemented.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
…nations

fix: prevent crashes from control key combinations
…10.2

feat: upgrade to MCP SDK 1.10.2 for HTTP streaming support
Implements streamable HTTP transport for the MCP server using SDK 1.10.2. Features include:
- Session management for tracking user interactions
- CORS configuration for cross-origin requests
- HTTP endpoint for streaming and batch responses
- Updated MCP server implementation to support multiple transports
- Updated documentation with accurate SDK API reference

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Extract HTTP transport to dedicated module with robust security checks
- Implement apiKey authentication middleware
- Add CORS security warnings and validation
- Make CORS configuration more restrictive by default
- Add session management with proper cleanup
- Add security best practices documentation
- Add HTTP transport tests

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Implement comprehensive close() method in HttpTransportManager for proper resource cleanup
- Fix TypeScript typing issues with Express middleware
- Remove commented-out supertest import from tests
- Improve error handling with targeted error catching
- Fix centralized version management using environment variables
- Update tests for close() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Phase 1: Set up HTTP Stream Transport Server
- Add streaming typeText method with human-like typing rhythm
- Implement progressive character-by-character streaming updates
- Add delay randomization and special handling for punctuation
- Update MCP tool interface to support humanlike option

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
- Add comprehensive unit tests for streaming keyboard functionality
- Implement chunking for memory-efficient processing of long text
- Add detailed JSDoc comments for better maintainability
- Optimize progress reporting to reduce overhead for long texts
- Enhance human-like typing with pauses at end of words

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
…streaming

feat: implement human-like typing with streaming support
…improvements

enhance: improve human-like typing with streaming support
Implements automation interfaces using AutoHotkey v2 scripts for Windows environments.

✨ Features:
• Keyboard automation (type, press keys, combinations)
• Mouse automation (move, click, scroll, drag)
• Screen automation (capture, get colors, window management)
• Clipboard automation (get/set content, clear)

📚 Documentation:
• README with installation and usage instructions
• Environment variables for configuration
• Performance considerations and limitations

🧪 Testing:
• Unit tests for provider interfaces
• Factory integration tests
• Test scripts for manual verification

This provides an alternative to keysender for Windows automation tasks.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants