zeekay
160af608ae
fix: restore 'version = ' prefix in 7 axis pyproject.toml files
...
The earlier patch-bump regex passed through a shell+python double-escape
that dropped the leading 'version = ' on each match and inserted a stray
\x01 byte, leaving '\x01"0.3.3"' instead of 'version = "0.3.3"'.
TOML parse fails (line 7 invalid statement) → CI publish-pypi 1/1 jobs
exit 1 → none of the 7 axis pkgs published.
Each TOML now parses with tomllib; ready for fresh tags.
2026-05-13 14:23:35 -07:00
zeekay
55ad444f3a
deps: bump 7 axis pkgs another patch to force fresh GHA tag-push trigger
...
(the prior tags pointed to commits CI didn't re-evaluate after the
black format-fix landed; bumping again so the new tags have unique
SHAs and the publish-pypi workflow fires cleanly)
2026-05-13 14:03:35 -07:00
zeekay
572dcd68f2
decomplect: HIP-0300 wire surface is the only public contract
...
The MCP wire (what tools/list reports) ships exactly one tool per axis:
fs, exec, code, git, fetch, plan — action-routed. The per-action classes
(ReadTool, WriteTool, EditTool, …) stay importable for in-process
read-only sandboxing (swarm sub-agents) but are NOT on the wire.
PyPI 0.3.1 of hanzo-tools-fs shipped the legacy split (7 tools) while
the local 0.3.1 source had already migrated to TOOLS=[FsTool]. Same
version number, two different contracts — the source of the
'Python MCP surfaces 32 tools, Node MCP surfaces 13' divergence
that breaks contract parity. Bumping to 0.3.2 publishes the
HIP-0300 surface for the first time.
- pkg/hanzo-tools-fs 0.3.1 → 0.3.2: TOOLS=[FsTool]; legacy classes
importable; dropped 'Edit = EditTool' alias; cleaner __init__.
- pkg/hanzo-tools-shell 0.6.3 → 0.6.4: bump only (source already
TOOLS=_get_detected_shell_tools()).
- pkg/hanzo-tools-code 0.1.0 → 0.1.1: bump only (TOOLS=[CodeTool]).
- pkg/hanzo-tools-vcs 0.1.0 → 0.1.1: bump only (TOOLS=[GitTool]).
- pkg/hanzo-tools-net 0.1.0 → 0.1.1: bump only (TOOLS=[FetchTool]).
- pkg/hanzo-tools-plan 0.1.0 → 0.1.1: bump only (TOOLS=[PlanTool]).
- pkg/hanzo-tools-agent 0.3.1 → 0.3.2: 'Edit' alias is gone — call
EditTool by its real name in swarm_tool.py.
- pkg/hanzo-mcp 0.15.3 → 0.15.4: gets the HIP-0300-clean wire when
consumed via 'uvx --refresh-package hanzo-tools-fs hanzo-mcp serve'.
2026-05-13 13:51:48 -07:00
zeekay
259d437061
fix: ruff lint errors across hanzo-tools-* packages (I001, F401, F541)
...
Fix 21 auto-fixable errors: import sorting (I001), unused import (F401),
and empty f-strings (F541) in 13 files across tool packages.
2026-03-06 23:44:10 -08:00
zeekay
4ebf26df3e
feat(mcp): unify tool surfaces, rename iching→zen, fix test infrastructure
...
- Consolidate memory tools into single unified surface
- Rename IChingTool → ZenTool across agent tools
- Rename tool files: proc_tool→exec_tool, net_tool→fetch_tool,
vcs_tool→git_tool, todo_tool→tasks_tool
- Add hanzo_tool.py for unified Hanzo API surface
- Add workspace_tool.py for config management
- Add hanzo-tools-ui package with GitHub API integration
- Add unified.py core tool dispatcher
- Update IAM client to RFC-compliant OAuth endpoints
- Fix pytest-asyncio plugin conflict: pin <1.0.0, fix addopts
double-registration, and align test APIs to current signatures
- Fix integration tests: PermissionManager API, ReviewProtocol
focus values, AgentTool parameter names, mock llm module for CI
2026-03-06 03:13:54 -08:00
zeekay
8c05bf99d6
fix(ci): pin black <26.1 to avoid internal error, lower requires-python to 3.12
...
Black 26.1.0 crashes on multiple exception types in parentheses.
The requires-python bump to 3.14 broke CI which runs Python 3.12.
2026-03-01 16:01:16 -08:00
zeekay
6c376a4d13
[chore] bump all packages to Python 3.14+
...
Update requires-python to >=3.14 in all 46 pkg/ pyproject.toml files
and the root pyproject.toml (47 files total).
2026-02-28 12:43:10 -08:00
zeekay
d094a8b481
rebrand: rename litellm module to llm — complete purge
...
All imports, test files, docs, and config references updated.
import litellm → import llm across entire codebase.
2026-02-25 15:13:14 -08:00
zooqueen and Hanzo Dev
b144973bfc
fix(lint): resolve all ruff + black errors across all packages
...
Fix 35 ruff errors (E722, F841, B904, B905, B007, E741, S202, S310,
S306, S110, TID251, UP042, F401) and run black on 526 files.
Co-authored-by: Hanzo Dev <[email protected] >
2026-02-21 23:32:32 -08:00
zooqueen and Hanzo Dev
920f767417
style: auto-fix ruff lint and format for Python 3.12
...
Run ruff check --fix and ruff format across the repo to fix ~495
auto-fixable lint errors (mostly I001 import sorting) and reformat
225 files to match the py312 target.
Co-authored-by: Hanzo Dev <[email protected] >
2026-02-20 21:29:31 -08:00
zeekay
b821c8bfa6
refactor: eliminate all TODOs, placeholders, stubs, and fake data
...
Comprehensive cleanup across 12 files:
hanzo CLI:
- auth.py: remove dead code, clean up auth flow comments
- mcp.py: clarify CLI context creation
- dev.py: clean up orchestrator comments, implement basic validation
- dashboard.py: remove demo data comments, add sample data label
- enhanced_repl.py: remove sleep simulation in login
- router/__init__.py: clarify fallback behavior
hanzo-repl:
- llm_client.py: implement actual Ollama health check via HTTP
- textual_repl.py: simplify parameter handling, remove TODO
hanzo-tools-agent:
- swarm_tool.py: rename stubs to _RequiresHanzoAgents, clean up
- cli_agent_base.py: clarify temp file substitution
- agent.py: implement _execute_agent using unified_agent_tool
hanzo-tools-database:
- memory_manager.py: implement generate_embedding with fastembed,
implement vector_search with sqlite-vec
All code now follows: one way to do it, composable, orthogonal, complete
2026-01-19 00:11:11 -08:00
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
41955bf7cd
chore: bump hanzo-mcp to 0.10.33, update shell dep to 0.5.4
2026-01-05 01:27:01 -08:00
zeekay
35c8288217
chore: bump versions for PyPI release
...
- hanzo-async: 0.1.0 (new)
- hanzo-tools-fs: 0.3.1
- hanzo-tools-shell: 0.5.1
- hanzo-tools-agent: 0.3.0
- hanzo-mcp: 0.10.31
2026-01-03 17:41:51 -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
cd89d0090a
fix(imports): update filesystem to fs in agent tools
2025-12-27 20:36:12 -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
6998188dea
style: format test files with black
2025-12-27 15:00:11 -08:00
zeekay
ec7eabd9fc
test: add basic test suites for all 18 hanzo-tools-* packages
2025-12-27 14:57:15 -08:00
zeekay
058fffc218
docs: add READMEs for all 18 hanzo-tools-* packages
2025-12-27 14:55:13 -08:00
zeekay
06f86e01f4
feat(agent): add direct API mode and auto-backgrounding
...
- Add _exec_api method for OpenAI/Anthropic-compatible API calls
- Add httpx and uvloop as optional dependencies [api] [perf]
- Auto-background long-running agent processes with ps --logs support
- Configure YOLO mode flags for all CLI agents
- Bump hanzo-tools-agent to v0.2.7, hanzo-mcp to v0.10.26
2025-12-27 13:06:01 -08:00
zeekay
955b30a004
Bump agent tools
2025-12-27 10:50:15 -08:00
zeekay
a9769ebb28
refactor: merge hanzo-tools-core into hanzo-tools
...
- hanzo-tools now contains core infrastructure (BaseTool, ToolRegistry, etc.)
- hanzo-tools-core becomes a thin backwards-compat wrapper
- All tool packages now depend on hanzo-tools>=0.3.0
- Reduces package count and simplifies dependency tree
2025-12-26 16:53:58 -08:00
zeekay
d2e5decf24
feat(consensus): add MCP mesh for agent-to-agent consensus
...
- MCPMesh: Register agents as MCP servers
- MCPAgent: Call tools on other agents
- run_mcp_consensus: N rounds of discussion via MCP
- create_mesh: Convenience factory
Each agent in consensus is available as MCP to every other.
2025-12-26 16:44:37 -08:00
zeekay
00c8bf1994
refactor: rename hanzo-metastable-consensus to hanzo-consensus
...
Simplified package naming for clarity.
2025-12-26 16:42:52 -08:00
zeekay
436ff4bf3d
feat: extract hanzo-metastable-consensus package
...
- New package: hanzo-metastable-consensus
- Two-phase finality: Sampling + Finality
- Used by hanzo-tools-agent for consensus action
- Reference: https://github.com/luxfi/consensus
2025-12-26 16:20:32 -08:00
zeekay
67d8c62d5c
feat(agent): multi-agent orchestration with DAG, swarm, Lux Quasar consensus
...
- Actions: run, dag, swarm, consensus, dispatch, list, status, config
- DAG execution with topological sort and {dep_id} output injection
- Swarm for work distribution with asyncio.Semaphore max_concurrent
- Lux Quasar consensus: Nova DAG + Quasar finality phases
- Photon luminance-weighted peer sampling (faster agents = higher weight)
Native agents: claude, codex, gemini, grok, qwen, vibe, dev
Anthropic-compatible agents (via claude CLI):
- minimax (MiniMax-M2.1)
- kimi (Kimi K2 / Moonshot)
- deepseek (DeepSeek)
- yi (Yi / 01.AI)
- glm (Zhipu GLM-4)
- baichuan (Baichuan4)
- step (StepFun)
- dashscope (Qwen Max via DashScope)
- qwen-cc (Qwen Plus via DashScope)
Consensus: https://github.com/luxfi/consensus
2025-12-26 16:08:35 -08:00
zeekay
4b4b69cd0a
refactor(agent): rename Lux Quasar to Metastable consensus
2025-12-26 15:49:42 -08:00
zeekay
d7f2fcdbf6
feat(agent): one tool with actions, not many tools
...
Consolidated agent tool with actions:
- run: single agent execution (claude -p default)
- dag: DAG execution with dependencies and {dep_id} injection
- swarm: work distribution with max_concurrent semaphore
- consensus: Lux Quasar protocol (Nova + Quasar phases)
- dispatch: different agents for different tasks
Removed hanzo-agents SDK dependency. Lightweight CLI execution.
Consensus: https://github.com/luxfi/consensus
2025-12-26 15:46:48 -08:00
zeekay
3f883514c8
chore: bump hanzo-mcp to 0.10.22, hanzo-tools-agent to 0.2.1
2025-12-26 12:25:51 -08:00
zeekay
303a05a616
feat(agent): agentic proxy with agent integration
...
Enhanced agent tool architecture:
- 8 CLI agents: claude, codex, gemini, grok, qwen, vibe, code, dev
- Auto-detects agent environment for seamless auth
- Shares hanzo-mcp config with spawned agents
- Lightweight - no heavy litellm dependency
Essential tools reorganization:
- Added agent, think, critic to essential tools
- Removed llm/consensus from essential (heavy deps, opt-in)
- HEAVY_TOOLS constant for tracking opt-in tools
Config sharing:
- HANZO_AGENT_PARENT=true passed to child agents
- MCP config env vars propagated
- API keys shared when appropriate
2025-12-26 12:25:16 -08:00
zeekay
5a1c976535
feat: consolidate tools - 52 to 30 tools
...
Major consolidation of hanzo-mcp tools:
Memory (9 → 1 tool):
- Unified UnifiedMemoryTool with actions: recall, create, update, delete,
manage, facts, store, summarize, kb
Agent (10+ → 3 tools):
- Unified UnifiedAgentTool for claude, codex, gemini, grok CLI agents
- Removed duplicate critic (use reasoning.critic instead)
- Kept iching and review tools
- Removed code_auth, network, request_clarification
LLM (3 → 2 tools):
- Removed llm_manage (consolidated into llm)
Tool Management (4 → 1 tool):
- Existing unified `tool` command handles install, enable, disable, list
Essential Tools:
- Added memory, shell, open, tool to ESSENTIAL_TOOLS
- Added memory to ESSENTIAL_SYSTEM_TOOLS (always enabled)
- Updated hanzo mode with iching, review, computer
Bug fixes:
- Fixed async await warning in dag_tool.py
- Fixed duplicate critic conflict between agent and reasoning
2025-12-26 11:43:19 -08:00
zeekay
23b8a161a9
chore: bump hanzo-tools-* to 0.2.0, hanzo-mcp to 0.10.17
...
Published all packages to PyPI:
- hanzo-tools-core 0.2.0
- hanzo-tools-filesystem 0.2.0
- hanzo-tools-shell 0.2.0
- hanzo-tools-browser 0.2.0
- hanzo-tools-memory 0.2.0
- hanzo-tools-todo 0.2.0
- hanzo-tools-reasoning 0.2.0
- hanzo-tools-lsp 0.2.0
- hanzo-tools-refactor 0.2.0
- hanzo-tools-database 0.2.0
- hanzo-tools-agent 0.2.0
- hanzo-tools-jupyter 0.2.0
- hanzo-tools-editor 0.2.0
- hanzo-tools-computer 0.2.0
- hanzo-mcp 0.10.17
2025-12-26 06:49:24 -08:00
zeekay
7ff34ba5bf
feat(hanzo-tools): v0.10.17 - modular tool packages + computer control
...
- Add hanzo-tools-computer package for pyautogui Mac automation
- Fix hanzo-tools-agent imports to use new package structure
- Add get_read_only_*_tools() helpers to filesystem/jupyter
- Remove BatchTool (replaced by dag - one tool per capability)
- Remove hanzo-persona dependency (not published yet)
- Simplify pyproject.toml for local development
Packages ready for PyPI:
- hanzo-tools-core
- hanzo-tools-filesystem
- hanzo-tools-shell
- hanzo-tools-browser
- hanzo-tools-memory
- hanzo-tools-todo
- hanzo-tools-reasoning
- hanzo-tools-lsp
- hanzo-tools-refactor
- hanzo-tools-database
- hanzo-tools-agent
- hanzo-tools-jupyter
- hanzo-tools-editor
- hanzo-tools-computer (NEW)
2025-12-26 06:37:28 -08:00
zeekay
30d59c9793
fix(tools): cleanup and architecture documentation
...
- Delete deprecated agent_tool_v1_deprecated.py and swarm_tool_v1_deprecated.py
- Keep CriticTool as name='critic' (not code_review) per user request
- Add missing stub classes for CLI agents when hanzo-agents unavailable
- Fix NameError: ClaudeCodeAgent not defined in tests
- Document hanzo-mcp vs hanzo-tools-* architecture in CLAUDE.md
2025-12-26 05:25:55 -08:00
zeekay
2d1bdd997f
refactor: cleanup and consolidate tool packages
...
- Delete deprecated files (agent_tool_v1_deprecated.py, swarm_tool_v1_deprecated.py)
- Consolidate duplicate LLM tools (merge llm_tool.py into llm_unified.py)
- Rename agent CriticTool to CodeReviewTool to avoid conflict with reasoning critic
- Fix stub classes in swarm_tool.py to raise ImportError instead of silent pass
- Update CLAUDE.md with accurate tool counts (62 tools across 17 packages)
2025-12-26 05:05:41 -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
f736cab3ed
fix(hanzo-tools-agent): add missing semaphore in deprecated swarm tool
...
Fixes F821 undefined name error in swarm_tool_v1_deprecated.py
2025-12-26 03:58:20 -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