feat: hanzo-dev Python TUI + LSP + hooks + sandbox + vim + git + multi-auth + full parity

Rename hanzo-repl → hanzo-dev to match @hanzo/dev (Rust/TS).

New packages:
- hanzo-lsp: async LSP client (diagnostics, go-to-def, references, context enrichment)
- hanzo-hooks: pre/post tool use hooks (shell scripts, exit-code deny)
- hanzo-sandbox: container detection, filesystem isolation, Linux unshare

hanzo-dev TUI:
- Vim keybindings (Normal/Insert/Visual/Command modes, 37 tests)
- Git slash commands (/branch /commit /worktree /diff /stash, 13 tests)
- All slash commands at parity: /model /permissions /clear /resume /memory
  /init /export /session /plan /solve /code /auto /fast /remote-control
- Multi-provider auth: Anthropic OAuth, OpenAI device code, Hanzo PKCE, auto-detect

Auth:
- login_with_anthropic() — PKCE via console.hanzo.ai
- login_with_openai() — device code flow via auth.openai.com
- login_auto() — env var detection + saved credential fallback
- OAuthCredentialStore supports provider keys (hanzo/anthropic/openai)

Parity test suite (38 tests): SSE, MCP normalization, permissions, compaction,
token usage, PKCE RFC vector, config, backoff, session roundtrip, hooks.

348 tests total, 0 failures across Python + Rust + Universe E2E.
This commit is contained in:
2026-04-01 10:41:46 -07:00
parent ffe73447a3
commit ebb04882d6
60 changed files with 4578 additions and 462 deletions
+1 -1
View File
@@ -24,7 +24,7 @@ if [ ! -f "pyproject.toml" ] || [ ! -d "pkg" ]; then
fi
# Packages to build
PACKAGES=("hanzoai" "hanzo" "hanzo-mcp" "hanzo-memory" "hanzo-network" "hanzo-agents" "hanzo-repl")
PACKAGES=("hanzoai" "hanzo" "hanzo-mcp" "hanzo-memory" "hanzo-network" "hanzo-agents" "hanzo-dev")
echo -e "${YELLOW}Packages to build:${NC}"
for pkg in "${PACKAGES[@]}"; do
+1 -1
View File
@@ -31,7 +31,7 @@ if [ -z "$PYPI_TOKEN" ]; then
fi
# Packages to publish (in order)
PACKAGES=("hanzoai" "hanzo" "hanzo-mcp" "hanzo-memory" "hanzo-network" "hanzo-agents" "hanzo-repl")
PACKAGES=("hanzoai" "hanzo" "hanzo-mcp" "hanzo-memory" "hanzo-network" "hanzo-agents" "hanzo-dev")
echo -e "${YELLOW}Packages to publish:${NC}"
for pkg in "${PACKAGES[@]}"; do
+1 -1
View File
@@ -21,7 +21,7 @@ if [ $# -eq 0 ]; then
echo " • hanzo-memory (memory systems)"
echo " • hanzo-network (distributed compute)"
echo " • hanzo-agents (multi-agent workflows)"
echo " • hanzo-repl (interactive REPL)"
echo " • hanzo-dev (interactive dev environment)"
exit 1
fi