18 Commits
Author SHA1 Message Date
zeekayandHanzo Dev 95e2025681 iam: address the rows IAM serves, and read the shape each route answers
A row is named by owner and name — /v1/iam/users/hanzo/z — read with GET,
replaced with PUT, removed with DELETE. The hand-written clients reached for
verb-noun addresses, and the CLI and route table reached for a verb hanging off
the collection; both spellings are gone from the server.

A collection GET answers a wrapper keyed by the plural, and the key is not
always the word in the path — audit-logs answers auditLogs. Every reader now
takes the key from the table and raises when it is absent, because reading a
missing key as [] reports "none" for a healthy org. A row answers the record
itself, absence is 404, and a refusal is an RFC 9457 problem document carrying
the reason. account, memberships, password and login keep the {status, msg,
data} envelope and have their own reader.

The credential goes in Authorization as client_secret_basic, which is where IAM
reads one; the pair used to ride the query string, where it authenticated
nothing and landed in every log on the path. A password rides beside the user
row rather than inside it, so IAM hashes it and nothing writes it in the clear.
An update reads the row before replacing it, since PUT replaces the whole
record.

Role membership is the role's own users list, so adding and removing a member
reads the role, edits the list and writes it back.

The IAM tool drops enforce, system_info and health; the team tool reaches
IAM's workspaces, memberships, invitations and account instead of deferring to
an address it never had. Both name organizations only when the caller does —
IAM scopes the read, and a hardcoded owner is a refusal for everyone outside it.

The CLI route table is checked against IAM's own registered routes, and every
address here was verified against the running server.

Co-authored-by: Hanzo Dev <[email protected]>
2026-08-24 03:36:48 -07:00
zeekay aa18787d58 hanzo iam: address the routes IAM serves
Every command in this tree called /api/get-users, /api/set-password,
/api/add-provider and twenty-five more — the Casdoor-era surface. IAM
serves /v1/iam/<entity> and /v1/iam/password; all twenty-eight 404d. The
client id and secret rode in the query string besides, where the server
never looks and every log does.

IAM's entities all have the same five routes, so this is one
implementation of them over a table of fourteen entities rather than
fourteen hand-written command trees: 1391 lines to 300, and every entity
gains the verbs only some of them had. The credential goes in
Authorization — Basic for a confidential client, a bearer when one is
exported — and configure writes ~/.hanzo/auth.json 0600.

test_iam_cli reads IAM's own route registrations out of its Go source and
asserts every route this CLI names is one of them: 70 checked, and it is
what caught certs/get answering GET where the table said POST.
2026-08-23 12:46:01 -07:00
zooqueenandHanzo 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
zeekay b21ca3a5ce fix: run ruff check --fix and format across entire codebase 2025-12-26 04:31:06 -08:00
zeekay 56ccb8cff1 fix: Convert test functions to proper pytest format
- Refactor tests in test_workflow.py, test_memory.py, and test_signal_handling.py
  to use assertions instead of returning booleans (pytest strict mode requires None)
- Fix test_batch_orchestrator.py to mock file finding to avoid filesystem scans
- Add 'integration' pytest marker to both root pyproject.toml and pkg/hanzo/pytest.ini
- Account for system memories in memory manager tests
2025-12-09 14:52:53 -08:00
zeekay 4572399cb3 fix: move test file to correct location for CI 2025-09-07 15:47:56 -05:00
zeekay 674e329c06 fix: resolve import sorting lint issue in test_tool_detector.py 2025-09-07 15:35:01 -05:00
zeekay f7aecfbf52 fix: improve AI tool detection and fallback mechanism (v0.3.31)
- Fix Hanzo Node detection to test actual chat endpoint instead of health check
- Check both ports 3690 (default) and 8000 for Hanzo Node
- Add session-based failed tool tracking to avoid repeated attempts
- Cache working tool selection for better performance
- Fix hanzo-mcp integration with proper dependencies
- Add comprehensive test suite for tool detection (14 tests)
- Test and verify OpenAI Codex integration
2025-09-07 15:33:06 -05:00
zeekay c5905180f7 fix: Resolve all linting issues for CI compliance
- Fix syntax errors (indentation) in hanzo-mcp tools
- Replace all bare except statements with except Exception
- Fix import sorting issues across all packages
- Update type annotations to use modern X | Y syntax for Python 3.10+
- Ensure all packages pass ruff linting checks
2025-09-06 03:43:53 -05:00
zeekay 3fbebf0b14 feat(mcp config): support tools.*.enabled; feat(fs): 'symbols' alias for 'ast'; test: disable pytest plugin autoload for local+CI; chore: bump mcp to 0.8.3; docs: update AGENTS.md; integrate new unified agent architecture + model registry + batch orchestrator 2025-09-05 20:28:26 -05:00
zeekay a99730cbb0 feat: Add CLI tools support to hanzo-mcp with batch execution
- Implement unified CLI tools module for all AI providers
- Add support for claude/cc, codex, gemini, grok, openhands/oh, hanzo-dev, cline, aider
- Enable parallel batch execution of CLI tools
- Add comprehensive test suite with 16 passing tests
- Fix typing issues with mypy strict mode
- Add GitHub Actions CI/CD workflow with optional integration tests
- Support authentication flow for all providers
- Follow DRY principle with single source of truth
2025-09-05 18:26:03 -05:00
zeekay f80e78b872 feat: Add streaming, rate limiting, and enhanced testing to hanzo dev
Major improvements:
- Streaming responses with real-time feedback
- Smart rate limiting with exponential backoff
- Error recovery with circuit breaker pattern
- Comprehensive test suite (all tests passing)
- Fixed CI/CD pipeline issues
- TypeWriter effect for code display
- Adaptive rate limits per API provider

Performance:
- Prevents API overuse with smart throttling
- Automatic fallback on rate limit errors
- Burst protection and cooldown periods
- Per-API customized limits

Version bump to 0.3.21
2025-08-20 04:17:18 -05:00
zeekay a4abe8b404 fix: Fix linting errors - syntax error in bridge.py and bare except clauses 2025-08-19 03:19:40 -05:00
zeekay a740c20452 fix: Ensure all tests pass and CI is green
- Fix import sorting with ruff
- Format code with black for consistent style
- Add proper sys.path handling in tests
- Add comprehensive tests for dev module and orchestrator config
- Ensure all 4 tests pass successfully
- Fix fallback mode to work without hanzo-network
- Tested locally: all tests passing
2025-08-18 22:54:49 -05:00
zeekay c618f277b2 fix: Add basic test for hanzo package to fix CI
- Added simple import test to ensure package works
- Fixes 'no tests found' error in CI
2025-08-14 02:19:20 -05:00
zeekay f1b274911b fix: Resolve all lint issues and remove invalid tests
- Fixed import sorting issues (I001)
- Added timeout to urllib.request.urlopen with S310 suppression
- Fixed bare except statements (E722)
- Removed unused import in hanzo-network
- Removed test_node_command.py that was testing non-existent features
- All lint checks now pass 100%
2025-08-14 02:17:05 -05:00
zeekay ea3116aac9 Fix all test issues and achieve 100% test pass rate
- Remove all unconditional pytest.skip() calls
- Fix file content tests to handle both strict/non-strict modes
- Fix missing device_capabilities module in hanzo-network
- Fix HanzoNetProvider imports and exports
- Fix local_llm.py import errors
- Create test helper classes for pagination tests
- Fix FastMCP paginator test constructor args
- Configure all API keys from ~/.zsh/after.zsh
- All tests now pass or skip conditionally based on actual requirements
2025-08-12 16:19:34 -05:00
zeekay b90e7752eb feat: improved hanzo/net integration with proper dependency checks
- Added net_check utility for verifying hanzo/net installation
- Improved error handling and dependency detection
- Added comprehensive tests for node command
- Set up CI/CD workflows for both projects
- Better handling of venv and Python paths
2025-08-06 21:18:39 -05:00