Commit Graph
326 Commits
Author SHA1 Message Date
zeekay 65b01566dc feat(browser): configurable backend + fix CDP bridge for websockets >= 13
- Add BROWSER_BACKEND env var: firefox | chrome | extension | playwright | auto
- Config persists to ~/.hanzo/extension/config.json
- Fix CDP bridge WebSocket handler signature for websockets >= 13 (new API)
- Add browser-based client resolution in CDP bridge
- Add /config GET/POST endpoints for extension preference sync
- Backend-aware routing: explicit backends don't fall back to Playwright
2026-03-04 19:35:00 -08:00
zeekay 0de73f60d8 feat(mcp): consolidate memory surface and restore local tool compatibility 2026-03-04 15:21:57 -08:00
zeekay 2ec9db354d fix(test-hanzo-tools): align tool expectations and modernize websockets import 2026-03-04 12:52:05 -08:00
zeekay 7a53a1ab49 fix(ci): resolve root lint failures across workspace packages 2026-03-04 12:15:14 -08:00
zeekay e5200f6c6b fix(ci): apply black formatting and bump hanzo-mcp to 0.12.3 2026-03-04 11:57:07 -08:00
zeekay cebd4cf875 fix(ci): clean lint/format and bump hanzo-mcp to 0.12.2 2026-03-04 11:53:51 -08:00
zeekay 6f87ee1994 chore(release): bump hanzo-mcp to 0.12.1 2026-03-04 11:30:57 -08:00
zeekay 6f4460c08d fix: finalize latest MCP/CLI/SDK updates 2026-03-04 11:27:19 -08:00
zeekay 8445d13e6c feat(dns): add multi-provider DNS CLI
- hanzo dns zones/list/add/rm/update commands
- Multi-provider architecture: Cloudflare + CoreDNS
- Parallel queries across all configured providers
- Provider abstraction for easy extension (Route53, GoDaddy, etc.)
- Thread-safe parallel execution with ThreadPoolExecutor
- Legacy credential format backward compatible
2026-03-03 23:04:29 -08:00
Zoo Queen 09a85ff71f fix(ci): apply black formatting to base.py and enhanced_repl.py
Reformat multiline string arguments in write_text() calls and
collapse a ternary expression to satisfy black<26.1 style check
in the Test Hanzo Python SDK CI workflow.
2026-03-03 07:58:23 -08:00
Zoo Queen 1db6fdf022 Add Pages resource and Gateway resource with DNS alignment
New Pages resource for CF Pages project/deployment/domain management.
New Gateway resource for rate limit and routing rule CRUD. DNS resource
gains update_record and verify_domain methods for platform alignment.
2026-03-03 07:45:05 -08:00
zeekay 698173e8be feat: rename PostHog analytics -> Insights in hanzo-mcp
- Add insights_analytics.py with InsightsAnalytics class
- Env var reads INSIGHTS_API_KEY first, falls back to POSTHOG_API_KEY
- Analytics = InsightsAnalytics alias preserves backward compat
- Delete posthog_analytics.py
- Update __init__.py imports
2026-03-02 14:09:16 -08:00
zeekay 72e94e336f fix(sdk): update paas resource module 2026-03-01 19:40:49 -08:00
zeekay 5be0ffcbec feat(sdk): add datastore, docdb, ingress, mpc, paas resource modules
New API resources for infrastructure management:
- datastore: RAG vector store operations
- docdb: document database CRUD
- ingress: traffic routing management
- mpc: multi-party computation endpoints
- paas: platform-as-a-service deployment
2026-03-01 19:37:21 -08:00
zeekay 1597088e91 chore(hanzo-mcp): update uv lockfile after dependency changes 2026-03-01 16:20:12 -08:00
zeekay ef24718904 fix(hanzo-mcp): add missing mypy type annotations to pass CI 2026-03-01 16:08:00 -08:00
zeekay 0059065538 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 ce042d0925 feat(memory): consolidate 9 memory tools → single unified memory tool
Switch TOOLS export from individual tools list to [UnifiedMemoryTool],
replacing 9 separate MCP tools (recall_memories, create_memories,
update_memories, delete_memories, manage_memories, recall_facts,
store_facts, summarize_to_memory, manage_knowledge_bases) with a
single action-param 'memory' tool. Individual tool classes remain
available for direct import.
2026-03-01 15:19:15 -08:00
zeekay 70f7ccd1ac feat(memory): add no-backend markdown fallback for all memory MCP tools
Memory tools now work out-of-the-box without any backend installed.
Instead of raising ImportError when hanzo-memory is not available,
all tools fall back to MarkdownMemoryBackend which:

- Reads context from local .md files (MEMORY.md, LLM.md, CLAUDE.md,
  AGENTS.md, GEMINI.md, etc.) in CWD and parent dirs up to 4 levels
- Writes new memories to MEMORY.md at project root or ~/.claude/MEMORY.md
- Uses keyword scoring for search (zero external dependencies)
- Stores session facts in-memory

Changes:
- pkg/hanzo-tools-memory: add markdown_memory.py (new MarkdownMemoryBackend)
- pkg/hanzo-tools-memory: update memory_tools.py, knowledge_tools.py,
  unified_memory_tool.py to use markdown fallback via _get_backend()
- pkg/hanzo-tools-memory: update __init__.py to export ALL_TOOL_CLASSES
  (individual tools) so each gets its own MCP tool name
- pkg/hanzo-tools-memory: bump to 0.2.1 (published to PyPI)
- pkg/hanzo-mcp: bump to 0.11.8 to force uvx venv rebuild (published)

Install hanzo-tools-memory[full] for full vector search via hanzo-memory.
2026-03-01 14:54:12 -08:00
zeekay 8eb2c01761 [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 67f62c5e7e Update hanzo-mcp config and browser tool 2026-02-26 20:56:54 -08:00
7bd7fa5e52 feat(iam): add set-password and enforce-hashing CLI commands (#27)
* feat(iam): add set-password and enforce-hashing CLI commands

Adds two new top-level IAM commands:
- `hanzo iam set-password USER` — directly set/reset a user's password
  via the /api/set-password endpoint (server-side argon2id hashing)
- `hanzo iam enforce-hashing` — set org passwordType to argon2id and
  audit all users for plaintext passwords

* style: format iam.py with black line-length rules

---------

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-26 12:38:49 -08:00
zeekay 7b02ee5321 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
zeekay 3056408c77 rebrand: replace litellm package dep with hanzo-llm
All pyproject.toml deps now reference hanzo-llm (Hanzo's fork)
instead of upstream litellm. Python import name stays as litellm.
2026-02-25 14:39:34 -08:00
zeekay 3b2ff8a735 refactor(mcp): rename hanzo-tools-platform to hanzo-tools-paas
Clearer name — "paas" immediately conveys what the tool does.
MCP tool name changes from "platform" to "paas".
2026-02-24 22:04:47 -08:00
zeekay 2ac4267645 feat(mcp): add auth, kms, and platform MCP tools
Add 3 new hanzo-tools-* packages exposing Hanzo platform services via MCP:

- hanzo-tools-auth: HanzoSession singleton + LoginTool (status/whoami/logout/refresh)
- hanzo-tools-kms: KMSTool (list/get/set/delete/inject secrets via KMS)
- hanzo-tools-platform: PlatformTool (PaaS deployments, IAM users/orgs, cloud services)

Wire into hanzo-mcp as dependencies and register in entrypoint loader.
2026-02-24 21:56:50 -08:00
Zoo QueenandHanzo Dev 0336e4cb73 feat(hanzo-cli): add native hanzo.toml support for PaaS deployments
Add TOML config parser that converts hanzo.toml manifests into PaaS
container API payloads. New `deploy up` command reads hanzo.toml from
CWD and creates or updates containers. Also adds --config flag to
`deploy create` for explicit manifest path. Adds tomli dependency for
Python 3.9/3.10 compat.

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-22 15:59:24 -08:00
Zoo Queen e00a78af44 fix(bot): use OPENCLAW_GATEWAY_TOKEN and write bot.json config
The installed @hanzo/bot binary (v2026.2.16) reads OPENCLAW_GATEWAY_TOKEN
for the node run command's token resolution, not BOT_GATEWAY_TOKEN.
Also writes gateway config to bot.json so the config loader picks it up
as a fallback.
2026-02-22 15:42:15 -08:00
Zoo Queen 9ab8514f12 feat(hanzo-cli): add bot node agent commands with browser OAuth login
Add install, login, logout, run, stop subcommands to `hanzo bot` for
managing local bot agent nodes that connect to gw.hanzo.bot. Browser
OAuth flow authenticates against hanzobot-client-id with dedicated token
storage at ~/.hanzo/bot/token.json. Password grant fallback via
--no-browser flag.

Normalize env var lookup: IAM_ canonical prefix with HANZO_IAM_ accepted
as backwards-compatible fallback via _env() helper in both auth.py and
bot/commands.py.
2026-02-22 14:49:04 -08:00
zeekay 0863631ac1 Add hanzo-s3 package — S3-compatible storage client wrapper
Wraps minio Python client with Hanzo-branded aliases:
- hanzo_s3.Client / S3Client (→ minio.Minio)
- hanzo_s3.S3Error / S3Exception
- hanzo_s3.S3Admin / Admin (→ minio.MinioAdmin)
2026-02-22 14:39:07 -08:00
Zoo QueenandHanzo Dev e854fe7918 fix(lint): format hanzo-mcp tests with ruff
Co-authored-by: Hanzo Dev <[email protected]>
2026-02-21 23:37:18 -08:00
Zoo QueenandHanzo Dev a84ec95815 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
Zoo QueenandHanzo Dev 550a70e021 fix(lint): run black formatter on all 69 unformatted files
Co-authored-by: Hanzo Dev <[email protected]>
2026-02-21 14:49:49 -08:00
Zoo QueenandHanzo Dev 59a53d420a fix(lint): resolve all ruff E722, S310, S202, S103, B905 errors
Replace bare except with except Exception, add noqa for legitimate
URL opens, tarfile extraction, chmod on installed binaries.

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-21 14:44:43 -08:00
Zoo QueenandHanzo Dev 16bbf92830 fix(cli): sort imports to satisfy ruff I001 lint rule
Co-authored-by: Hanzo Dev <[email protected]>
2026-02-21 13:56:05 -08:00
Zoo Queen 4d23bf600e feat(cli): replace all 18 stub commands with real API implementations
Every service command (vector, kv, search, doc, events, pubsub, queues,
jobs, secrets, tasks, fn, auto, flow, ml, o11y, cx, growth, platform)
now makes authenticated HTTP calls via shared service_request/check_response
utilities in base.py. No stubs, no hardcoded data, no placeholders.

Bump hanzo 0.4.0→0.4.1, hanzo-cli 0.2.0→0.2.1.
2026-02-21 13:46:55 -08:00
Zoo Queen defa363dc7 docs(hanzo-tools): add README with architecture, API, and usage examples 2026-02-21 12:15:26 -08:00
Zoo Queen 7c3f6ad247 feat(cli): add bot commands, s3 storage, dev/net passthrough
- Add `hanzo bot` command group (status, logs, deploy, env, events) via PaaS API
- Replace all storage placeholders with real boto3 S3 API calls to s3.hanzo.ai
- Rename `hanzo storage` → `hanzo s3` (storage kept as alias)
- Rewrite `hanzo dev` as lazy-install passthrough to @hanzo/dev binary
- Rewrite `hanzo net`/`hanzo node` as passthrough to hanzod binary
- Remove ~350 lines of inline orchestrator/node code in favor of os.execvp()
2026-02-21 11:54:01 -08:00
Zoo QueenandHanzo Dev 5fbe8db90e feat(cli): add k8s kubectl wrapper and remove REPL
- Add `hanzo k8s` command group to hanzo-cli that wraps kubectl with
  Hanzo-managed auth and default namespace. Uses KubectlGroup that
  dynamically proxies unknown subcommands to kubectl (e.g.
  `hanzo k8s get pods` -> `kubectl get pods -n hanzo`).
- Remove REPL mode from hanzo wrapper: bare `hanzo` now shows help
  instead of dropping into interactive REPL.
- Remove hanzo-ai, hanzo-chat, hanzo-repl entry points.
- Make hanzo-cli a core dependency of hanzo (was optional [cli] extra).
- Remove unused typer dep, move openai/anthropic/prompt-toolkit to
  optional extras ([ai], [interactive]).

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-21 09:46:50 -08:00
Zoo QueenandHanzo Dev 55fb40fd67 fix: move hanzo-cli/kms to optional deps to unblock publish
hanzo-cli and hanzo-kms need to be published to PyPI first before
hanzo can depend on them. Move to optional [cli] extra for now.

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-20 22:17:02 -08:00
Zoo QueenandHanzo Dev c637b7a2ea feat: bump versions and add hanzo-cli/kms/iam to publish workflow
- hanzo-kms 1.0.0 -> 1.1.0 (fix create_secret null comment bug)
- hanzo-cli 0.1.0 -> 0.2.0 (add paas/kms/iam subcommands, top-level deploy alias)
- hanzo 0.3.48 -> 0.4.0 (add hanzo-cli and hanzo-kms as dependencies)
- Add hanzo-cli, hanzo-kms, hanzo-iam to publish-pypi.yml workflow

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-20 22:15:39 -08:00
Zoo QueenandHanzo Dev 566aa987fc feat(cli): add top-level deploy alias and fix KMS create_secret
- Add `hanzo deploy` as top-level alias for `hanzo paas deploy`
- Fix KMS create_secret sending null secretComment (caused 422 errors)
- Login callback page styling (from previous session)

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-20 22:13:04 -08:00
Zoo QueenandHanzo Dev 4e9bab4047 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
Zoo QueenandHanzo Dev e67acae9db fix(cli): refactor PaaS auth flow and fix container deploy payload
Extract _exchange_iam_token method for cleaner auth caching logic.
Fix deploy_env to send full container payload on PUT (PaaS requires it).
Add e2e test scaffold.

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-20 19:09:05 -08:00
Zoo QueenandHanzo Dev 7d77ee615f feat: add hanzo-cli unified CLI with IAM, KMS, PaaS management
- New hanzo-cli package (0.1.0) providing the `hanzo` command
- Auth: browser OAuth + ROPC password login against hanzo.id (Casdoor)
- IAM subcommands: users, user, set-password, orgs, apps, sync-app
- KMS subcommands: list, get, set, delete, inject
- PaaS subcommands: orgs, projects, envs, deploy (create/status/logs/redeploy/env/delete)
- PaaS deploy supports both Docker images (--image) and git repos (--repo)
- Sticky org/project/env context for PaaS commands
- PaaS client with IAM→PaaS session exchange and auto-refresh
- hanzo-iam SDK v1.1.0: bearer_token auth, admin helpers, set_password/get_applications/update_application

Co-authored-by: Hanzo Dev <[email protected]>
2026-02-18 20:58:43 -08:00
zeekay 19add7aee2 feat: wire CLI to PaaS API with IAM session exchange
- Add PaaS API client with IAM→session token exchange, auto-refresh,
  and session caching (~/.hanzo/paas_session.json)
- Add `hanzo auth context` for org/project/env selection against live API
- Wire `hanzo run` commands to PaaS container CRUD endpoints
- Wire `hanzo k8s` commands to PaaS cluster and workload endpoints
- Add `hanzo git` commands for provider/repo/branch management
- Fix auth.json token format handling (nested tokens.access_token)
- Extract shared find_container/extract_list helpers to api_client
2026-02-15 18:31:44 -08:00
zeekay 6505ae6571 chore: sync uncommitted changes 2026-02-13 22:16:03 -08:00
zeekay 8e0f575a1c feat: auth/IAM refactor + add hanzo-iam and hanzo-web3 packages
- Rewrite auth.py with full OAuth token management flow
- Rewrite iam.py with comprehensive IAM commands (users, orgs, apps)
- Add hanzo-iam package for IAM SDK
- Add hanzo-web3 package for blockchain SDK
- Update API providers for new auth flow
2026-02-12 20:47:40 -08:00
zeekay fad19cbb9a feat(tools): add Rust<>Python parity for plan, patch, wait tools
- plan: add update/get/clear actions for step tracking (Rust update_plan parity)
- fs: add patch action with Rust grammar format parser (*** Begin Patch)
- proc: add wait action for background polling, array command support

Aligns Python MCP tools with Rust dev tool schemas for cross-language compatibility.
2026-02-06 07:25:02 -08:00
zeekay 73fbba8141 feat: add hanzo-kms package, MCP proxy tools, and agent reflexion
- Add hanzo-kms v1.0.0: Secret management SDK compatible with Infisical API
  - Sync and async clients with multiple auth methods (Universal, AWS IAM, Azure, GCP, K8s)
  - Full CRUD operations for secrets with environment injection

- Add MCP proxy system for lazy-loading external MCP servers
  - mcp_proxy.py: Dynamic MCP server connection and tool discovery
  - proxy_tool.py: Tool for managing external MCP server proxies
  - platform_auth.py: Hanzo Platform authentication utilities
  - Built-in servers: platform, github, cloudflare, postgres, sqlite, docker, k8s

- Add agent reflexion module for self-correction and rule management
  - ReflexionEngine for reflection and rule-based behavior updates
  - Integration with hanzo-memory for persistent rules

- Add self_learning_agent example demonstrating reflexion capabilities

- Update ps_tool with improved process management and log handling
- Update browser tools with enhanced CDP bridge and automation
- Bump dependency versions across all tool packages

All tests pass (3156 passed)
2026-02-04 10:55:08 -08:00