Metadata-Version: 2.4
Name: hashcli
Version: 0.3.3
Summary: Hash - Intelligent CLI system with dual-mode functionality (LLM chat and command proxy)
Author: Wensheng Wang
License-Expression: MIT
Project-URL: Homepage, https://github.com/wensheng/hash
Project-URL: Repository, https://github.com/wensheng/hash.git
Project-URL: Documentation, https://github.com/wensheng/hash/docs
Project-URL: Bug Tracker, https://github.com/wensheng/hash/issues
Keywords: cli,llm,assistant,terminal,ai,hash
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: System Shells
Classifier: Topic :: Utilities
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: openai>=2.0.0
Requires-Dist: anthropic>=0.60.0
Requires-Dist: typer>=0.15.0
Requires-Dist: rich>=13.0.0
Requires-Dist: pydantic>=2.0.0
Requires-Dist: aiohttp>=3.8.0
Requires-Dist: tomli>=2.0.1; python_version < "3.11"
Requires-Dist: tomli-w>=1.0.0
Requires-Dist: google-genai<2.0.0,>=1.57.0
Requires-Dist: termcolor<4.0.0,>=3.3.0
Requires-Dist: colorama<0.5.0,>=0.4.6; sys_platform == "win32"
Requires-Dist: shtab<2.0.0,>=1.8.0
Requires-Dist: ddgs<10.0.0,>=9.10.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
Requires-Dist: pytest-mock<4.0.0,>=3.15.1; extra == "dev"
Requires-Dist: black>=23.0.0; extra == "dev"
Requires-Dist: isort>=5.0.0; extra == "dev"
Requires-Dist: mypy>=1.0.0; extra == "dev"
Requires-Dist: flake8>=6.0.0; extra == "dev"
Requires-Dist: pre-commit>=3.0.0; extra == "dev"
Dynamic: license-file

# Hashcli

## Overview

Hash (HAcker SHell) is an intelligent command-line interface (CLI) system that serves as a versatile terminal assistant. It operates as both an LLM-powered conversational agent and a command proxy system, offering two distinct interaction modes: natural language queries for assistance and slash-prefixed commands for direct functionality.

## Installation

```bash
pip install hashcli
```

**Shell Integration**

## Features

- **Dual-Mode Functionality**:
  - LLM Chat Mode: Natural language queries for intelligent assistance
  - Command Proxy Mode: Slash-prefixed commands for direct functionality
- **Multi-Provider LLM Support**: Works with OpenAI, Anthropic, and Google AI
- **Tool Calling**: Execute shell commands, read files, list directories
- **Conversation History**: Persistent storage of conversation sessions
- **Shell Integration**: Seamless integration with zsh and fish shells using `#` prefix
- **Cross-Platform**: Works on Linux, macOS, and Windows

## Usage

### LLM Chat Mode
```bash
# how do I list large files?
# explain this error: permission denied
# help me debug this python script
```

replace `#` with `hashcli`  if you do no want to set up shell integration.

### Command Proxy Mode
```bash
#/ls -la
#/model gpt-4
#/clean
#/fix "implement authentication"
```

Slash commands check for system commands first (e.g., `/ls`, `/grep`, `/find`) and execute them directly when available.

## Shell Integration

Hash can be integrated with your shell for a seamless experience using the `#` prefix:

```bash
# how do I check disk usage?
# /ls -la
```

## Docker Development Environment

This project includes a Docker environment for testing shell integrations:

1. Build the container:
```bash
docker-compose build
```

2. Start the container:
```bash
docker-compose up -d
```

3. Enter the container with zsh:
```bash
docker-compose exec hashcli-test zsh
```

4. Or enter with fish:
```bash
docker-compose exec hashcli-test fish
```

5. Test the shell integration:
```bash
# how do I list files?
# /ls -la
```

5. Run tests:
```bash
docker-compose exec hashcli-test ./test_installation.sh
```
