Commit Graph
13 Commits
Author SHA1 Message Date
zeekay 169a7dccf2 feat: HANZO_AUTO_BACKGROUND_TIMEOUT=0 disables auto-backgrounding
- Setting timeout to 0 or negative now disables auto-backgrounding
  (uses 24h internal timeout instead of immediate backgrounding)
- Updated docstrings to document the disabled behavior
- hanzo-tools-shell 0.5.6, hanzo-tools-agent 0.3.1, hanzo-mcp 0.10.35
2026-01-05 12:50:30 -08:00
zeekay 86cb5e0eb5 feat: configurable HANZO_AUTO_BACKGROUND_TIMEOUT env var (default: 30s) 2026-01-05 06:41:08 -08:00
zeekay 4fa44a28fc refactor: remove ambiguous shell tool, keep specific shells
- Remove ShellTool from TOOLS list (too ambiguous)
- Keep zsh, bash, fish, dash as specific shell tools
- Update get_shell_tools to include bash
- Fix test imports (ShellTool now in shell_tools.py)
- Update tests to expect cmd as primary tool
- Verify asyncio.gather + uvloop works correctly

hanzo-tools-shell: 0.5.1 → 0.5.2
2026-01-04 13:27:34 -08:00
zeekay f34a70a041 feat: add hanzo-async unified async I/O with uvloop support
New package: hanzo-async
- Automatic uvloop detection and configuration
- Async file I/O (read_file, write_file, append_file, read_json, write_json)
- Async path operations (path_exists, is_file, is_dir, mkdir, etc.)
- Async subprocess execution (run_command, run_shell)
- Graceful fallback to asyncio on Windows or when uvloop not installed

Updated packages to use hanzo-async:
- hanzo-tools-shell: base_process.py, ps_tool.py, shell_tools.py
- hanzo-tools-agent: agent_tool.py, dataset.py
- hanzo-tools-fs: search.py
- hanzo-mcp: cli.py, auto_timeout.py, event_loop.py, version_tool.py

Shell improvements:
- Renamed zsh_tool.py to shell_tools.py (better organization)
- Added DashTool for Debian/Ubuntu's fast POSIX shell
- All shell tools now thin shims over CmdTool

Version info now shows async backend:
- CLI: hanzo-mcp 0.10.27 (async: uvloop 0.22.1)
- Tool: async: uvloop 0.22.1
2026-01-03 17:39:48 -08:00
zeekay 1143769c59 fix(lint): fix import sorting and lru_cache noqa
- Fix 12 import sorting issues (I001)
- Add noqa for lru_cache in shellflow.py (TID251 rule for Stainless SDK)
2025-12-27 20:32:45 -08:00
zeekay a8eb3c4b67 feat(shell): shellflow DSL parser with high-performance optimization
- Add shellflow.py: minimal DSL for DAG execution
  - Syntax: A ; B (sequential), { A & B } (parallel)
  - Compiles to JSON AST, S-expressions, or command list
  - Supports quoted strings, &&, ||, nested braces

- Performance optimizations:
  - Precompiled regex with local variable caching
  - Fast-path for simple/sequential commands (8x faster)
  - LRU cache for repeated patterns
  - Full type annotations for mypyc compilation

- Restore dag as separate semantic tool:
  - dag: for parallel/serial/graph execution
  - zsh: for shell commands with shellflow DSL
  - Both support nested arrays for auto-parallel

- Add comprehensive test suite (53 tests):
  - Tokenizer, parser, normalization tests
  - S-expression and command conversion tests
  - Performance benchmarks
  - Integration tests with real shell execution

Performance: ~7M ops/sec for simple commands,
~220k ops/sec for sequential, ~100k ops/sec for mixed DAGs
2025-12-27 14:44:33 -08:00
zeekay 289b7d5711 feat(shell): add Shellflow DSL for inline DAG syntax
Shellflow syntax:
  A ; B ; C           → sequential
  { A & B & C }       → parallel
  A ; { B & C } ; D   → mixed

Usage:
  zsh("mkdir dist ; { cp a dist/ & cp b dist/ } ; zip out.zip dist/")

Compiles to JSON AST then executes via DAG.
Bump to v0.4.0
2025-12-27 14:17:04 -08:00
zeekay fb1873b2ac feat(shell): add bash tool and shell parameter for runtime switching
- Add shell parameter to zsh/bash/shell tools for runtime shell switching
- Add BashTool for bash-specific scripts
- Usage: zsh("cmd", shell="bash") or bash("cmd")
- Bump hanzo-tools-shell to v0.3.2
2025-12-27 13:32:07 -08:00
zeekay 47c9c200b3 refactor(shell): merge dag into zsh for unified shell tool
- ZshTool now includes full DAG functionality (serial, parallel, graph)
- Single "zsh" command for all shell operations
- Usage: zsh("ls") or zsh(["cmd1", "cmd2"]) or zsh([...], parallel=True)
- DagTool kept in codebase for backwards compatibility
- Removed DagTool from default TOOLS list
- Bump hanzo-tools-shell to v0.3.1
2025-12-27 13:09:33 -08:00
zeekay a2403c928b feat(shell): add curl, jq, wget tools for shell escaping-free operations
Add three new shell tools that bypass shell escaping issues by using
subprocess with list arguments instead of shell interpretation:

- curl: HTTP client with proper JSON body handling
- jq: JSON processor with direct filter passing
- wget: File/site downloads with mirror mode support

These tools solve the common problem of shell escaping nightmares
when working with complex JSON or special characters.

Updates:
- Added CurlTool, JqTool, WgetTool to hanzo-tools-shell
- Updated __all__ exports and TOOLS list
- Added tools to entrypoint_loader PACKAGE_TOOL_PREFIXES
2025-12-26 13:25:21 -08:00
zeekay c825db98e5 chore: run ruff format on all hanzo packages 2025-12-26 04:12:26 -08:00
zeekay a3b58c011f chore: fix ruff linting issues across all hanzo-tools packages
- Fix import sorting (I001) in all packages
- Fix bare except (E722) in lsp_tool.py
- Fix duplicate set item (B033) in refactor_tool.py
2025-12-26 04:11:10 -08:00
zeekay d5f8e3f2b5 feat(hanzo-tools): add modular tool packages with 53 tools across 13 packages
Introduces hanzo-tools-* namespace packages for independent tool installation:

Core packages:
- hanzo-tools-core: BaseTool, ToolRegistry, PermissionManager
- hanzo-tools-filesystem: read, write, edit, tree, find, search, ast (7 tools)
- hanzo-tools-shell: dag, ps, zsh, shell, npx, uvx, open (7 tools)

AI/Agent packages:
- hanzo-tools-agent: critic, iching, review, network, CLI agents (12 tools)
- hanzo-tools-memory: recall/create/update/delete memories, facts, KB (9 tools)
- hanzo-tools-reasoning: think, critic (2 tools)

Editor/Dev packages:
- hanzo-tools-lsp: Language Server Protocol tool (1 tool)
- hanzo-tools-refactor: rename, extract, inline, move, change_signature (1 tool)
- hanzo-tools-database: SQL + graph database tools (8 tools)
- hanzo-tools-editor: neovim integration (3 tools)
- hanzo-tools-jupyter: notebook read/edit (1 tool)
- hanzo-tools-browser: Playwright browser automation (1 tool)
- hanzo-tools-todo: unified todo management (1 tool)

Key improvements:
- All subprocess.run calls have timeout protection
- All tool .call() methods are async
- Namespace package pattern for mix-and-match installation
- Entry point discovery via hanzo.tools
- No blocking imports (all < 2s)

Also updates hanzo-mcp:
- Browser tool integration
- Tool install/registry for dynamic tool management
- Auto-background timeout reduced to 60s
2025-12-25 22:38:26 -08:00