- Add create, save, get, list, and delete for workspaces
- Enable adding and removing files/dirs by path or name
- Integrate codewalker for recursive file discovery
- Make workspaces stateful with created/updated timestamps
- Update example to demonstrate new lifecycle methods
- Implement level-scoped .gitignore/.heroignore matching
- Rewrite directory walker to use new ignore matcher
- Replace filemap parser with robust header-based logic
- Support `FILE`, `FILECHANGE`, and legacy header formats
- Add extensive tests for new parsing and ignore features
- Introduce HeropromptChild to unify file and dir items
- Replace nested Dir/File structs with a flat `children` list
- Generate prompt content by traversing the filesystem on-demand
- Add `workspace.add_file` for direct file selection
- Simplify `workspace.add_dir` to only add the directory path
- Add `list()` method to generate a full workspace file tree
- Introduce `WorkspaceItem` and `WorkspaceList` structs
- Remove `HeropromptSession` to simplify the public API
- Rename Heroscript action to `heropromptworkspace.configure`
- Enable full heroscript encoding/decoding for workspaces
- Add `select_all` option to recursively add directory contents
- Implement `select_all_files_and_dirs` for file traversal
- Rework prompt building with file tree and content formatters
- Improve `get_file_extension` to handle dotfiles and special files
- Update prompt template to use new structured data model
- Introduce sessions and workspaces for managing context
- Allow adding directories and selecting files
- Generate structured prompts with file maps and content
- Add example script and a prompt template
- Define core data models like `HeropromptWorkspace`
- Moved git repository handling logic from `gittools` to a new
`gitresolver` module for better code organization and reusability.
- Created a `GitUrlResolver` interface to abstract git URL resolution.
- Implemented a `GitToolsResolver` struct to adapt the existing
`gittools` functionality to the new interface. This allows for
future extensibility with different git repository management
strategies.
- Improved error handling and added more informative error messages.
- Improved the structure of the `heroscript` by breaking down the
actions into smaller, more manageable units.
- Add a new ip-api client to the project.
- This client uses the ip-api.com API to get IP information.
- An example is provided in `examples/develop/ipapi`.
Co-authored-by: mahmmoud.hassanein <mahmmoud.hassanein@gmail.com>
- Add a new WireGuard installer to the project.
- This installer handles installation and uninstallation of WireGuard.
Co-authored-by: mahmmoud.hassanein <mahmmoud.hassanein@gmail.com>
- Updated WireGuard client to use `wg-quick` instead of `sudo wg-quick`.
- Improved error handling in WireGuard client.
- Added `sudo` to `wg show` command for proper permissions.
- Updated example `wireguard.vsh` script to reflect changes.
- Added a new `wg0.conf` file for the WireGuard configuration.
- Resolved the issue where the script wasn't finding the configuration file.
Co-authored-by: mahmmoud.hassanein <mahmmoud.hassanein@gmail.com>
- Add a WireGuard client to the project.
- New utility functions have been added to parse the output of `wg show` command and improve error handling.
- Add start, down, show, show_config, generate_private_key, and get_public_key method to interact with the wg binary.
- Created a new example file to offer more clear usage.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Add a new VastAI client to the project.
- This client allows users to search for and create GPU instances on VastAI.
- It uses the VastAI API to interact with the platform.
- Includes functionality for searching offers, getting top offers, and creating instances.
Co-authored-by: mahmmoud.hassanein <mahmmoud.hassanein@gmail.com>
- Refactor RunPod client to use environment variables for API key.
- Update RunPod example script to reflect changes.
- Remove unused gql_builder.v file.
- Update README.md to reflect changes.
- Improve error handling and logging.
- Use json2 for JSON encoding/decoding.
- Update dependencies.
- Implemented more endpoints for managing pods.
Co-authored-by: mahmmoud.hassanein <mahmmoud.hassanein@gmail.com>
- Refactor RunPod client to use a new GraphQL builder.
- This improves the readability and maintainability of the code.
- The old `build_query` function was removed, and the new
- `QueryBuilder` struct is now used. This allows for a more
- flexible and extensible approach to constructing GraphQL
- queries. The example in `runpod_example.vsh` is now
- commented out until the new GraphQL builder is fully
- implemented.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Update the RunPod example to use a new API key and
- reduce resource allocation for pods.
- Added stop pod functionality to the RunPod client and example.
- Updated the RunPod client to use new API endpoints.
- Updated the base URL for the RunPod client.
- Added authorization header to HTTP client.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Added functionality to start spot pods using the RunPod API.
- Improved error handling and clarity in the RunPod client.
- Added more detailed comments to the code for better readability.
- Refactored the HTTP client and utils to improve modularity.
- Updated example to demonstrate spot pod creation and starting.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Added a new `start_on_demand_pod` function to the RunPod client.
- Improved the `create_on_demand_pod` function to handle nested machine structure in the response.
- Updated the example to use the new functions and handle the new response structure.
- Updated the API key for the example.
- Added more descriptive field names in the `create_on_demand_pod` input.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Added more options to the RunPod example, including:
- `cloud_type`, `gpu_count`, `volume_in_gb`,
- `container_disk_in_gb`, `min_vcpu_count`,
- `min_memory_in_gb`, `gpu_type_id`, `ports`, and
- `volume_mount_path`. This provides a more
- comprehensive demonstration of RunPod's capabilities.
- Updated the example to create an on-demand pod with
- specified resources and settings. The spot pod
- creation remains largely unchanged. Improved the
- clarity and completeness of the example. Removed
- commented-out code for better readability. Also
- updated the `PodFindAndDeployOnDemandRequest` struct
- to remove default values, allowing for more flexible
- pod configurations.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Added a new RunPod client to the project.
- Updated the example to use the new client.
- Improved error handling in the client.
- Refactored the code for better readability.
Co-authored-by: mariobassem12 <mariobassem12@gmail.com>
- Add support for creating spot pods using the RunPod API.
- Implement `create_spot_pod` function in the `RunPod` client.
- Refactor RunPod client to handle different query types and response structures.
- Improve error handling and logging for GraphQL requests.
- Update example to demonstrate spot pod creation.
Co-authored-by: mahmmoud.hassanein <mahmmoud.hassanein@gmail.com>
- Refactor RunPod client to use generics for requests and
responses.
- This improves code readability and maintainability.
- Remove redundant code for building GraphQL queries and
handling HTTP requests.
- Add support for environment variables in pod creation.
- Update example with new API key and environment variables.
Co-authored-by: supermario <mariobassem12@gmail.com>
- Add a new RunPod client to the project.
- This client allows users to interact with the RunPod API to create and manage pods.
- Includes example usage and configuration options.