hanzo-mcp 0.8.14__tar.gz → 0.8.15__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of hanzo-mcp might be problematic. Click here for more details.
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/PKG-INFO +1 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/analytics/posthog_analytics.py +14 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/clarification_tool.py +5 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/claude_desktop_auth.py +11 -6
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/critic_tool.py +5 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/review_tool.py +5 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/jupyter/jupyter.py +25 -2
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/llm/consensus_tool.py +6 -6
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/mcp/mcp_add.py +2 -2
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/mcp/mcp_remove.py +10 -2
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp.egg-info/PKG-INFO +1 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/pyproject.toml +1 -1
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_e2e_simple.py +8 -8
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/README.md +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/__main__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/analytics/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/bridge.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/cli.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/cli_enhanced.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/cli_plugin.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/compute_nodes.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/config/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/config/settings.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/config/tool_config.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/core/base_agent.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/core/model_registry.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/dev_server.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/compact_conversation.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/create_release.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/enhanced_prompts.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/example_custom_prompt.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/project_system.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/project_todo_reminder.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/tool_explorer.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/prompts/utils.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/server.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/server_enhanced.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/agent.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/agent_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/agent_tool_v1_deprecated.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/clarification_protocol.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/claude_cli_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/cli_agent_base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/cli_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/code_auth.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/code_auth_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/codex_cli_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/gemini_cli_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/grok_cli_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/iching_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/network_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/prompt.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/swarm_alias.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/swarm_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/swarm_tool_v1_deprecated.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/tool_adapter.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/agent/unified_cli_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/batch_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/config_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/context.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/context_fix.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/critic_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/decorators.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/enhanced_base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/fastmcp_pagination.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/forgiving_edit.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/mode.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/mode_loader.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/paginated_base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/paginated_response.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/pagination.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/permissions.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/personality.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/plugin_loader.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/stats.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/test_helpers.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/thinking_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/tool_disable.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/tool_enable.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/tool_list.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/truncate.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/common/validation.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/config/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/config/config_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/config/index_config.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/config/mode_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/database_manager.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/graph.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/graph_add.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/graph_query.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/graph_remove.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/graph_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/graph_stats.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/sql.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/sql_query.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/sql_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/database/sql_stats.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/editor/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/editor/neovim_command.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/editor/neovim_edit.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/editor/neovim_session.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/ast_multi_edit.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/ast_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/batch_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/content_replace.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/diff.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/directory_tree.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/directory_tree_paginated.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/edit.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/find.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/find_files.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/git_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/grep.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/multi_edit.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/read.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/rules_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/search_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/symbols_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/tree.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/unix_aliases.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/watch.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/write.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/jupyter/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/jupyter/base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/jupyter/notebook_edit.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/jupyter/notebook_read.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/llm/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/llm/llm_manage.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/llm/llm_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/llm/llm_unified.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/llm/provider_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/lsp/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/lsp/lsp_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/mcp/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/mcp/mcp_stats.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/mcp/mcp_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/memory/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/memory/knowledge_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/memory/memory_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/search/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/search/find_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/search/unified_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/auto_background.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/base_process.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/bash_session.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/bash_session_executor.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/bash_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/command_executor.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/logs.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/npx.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/npx_background.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/npx_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/open.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/pkill.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/process_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/processes.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/run_background.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/run_command.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/run_command_windows.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/session_manager.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/session_storage.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/streaming_command.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/uvx.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/uvx_background.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/uvx_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/shell/zsh_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/todo/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/todo/base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/todo/todo.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/todo/todo_read.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/todo/todo_write.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/__init__.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/ast_analyzer.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/git_ingester.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/index_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/infinity_store.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/mock_infinity.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/project_manager.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/vector.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/vector_index.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/vector/vector_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/types.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp.egg-info/SOURCES.txt +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp.egg-info/dependency_links.txt +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp.egg-info/entry_points.txt +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp.egg-info/requires.txt +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp.egg-info/top_level.txt +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/setup.cfg +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_agent_tools_ci.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_async_support.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_batch_tool_edge_cases.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_cli.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_cli_agents_consolidated.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_cli_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_e2e_demo.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_failure_cases.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_find_tool_ffind.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_find_tool_integration.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_find_tool_registration.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_git_ingestion.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_hanzo_agents_integration.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_hanzo_mcp_integration.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_hanzo_mcp_local.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_hanzo_mcp_simple.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_hanzo_network_integration.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_litellm_warnings.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_lsp_tool.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_manual.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_memory_base.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_memory_basic.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_memory_consolidated.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_memory_simple.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_memory_utils.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_new_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_no_stubs.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_performance.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_search_quality.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_shell_features.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_shell_tools.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_simple.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_stdio_protocol.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_stdio_simple.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_streaming_command.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_swarm_simple.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_tools_suite.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_unified_search.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_utils.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_vector_store.py +0 -0
- {hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/tests/test_web3_integration.py +0 -0
|
@@ -16,6 +16,7 @@ import traceback
|
|
|
16
16
|
from typing import Any, Dict, TypeVar, Callable, Optional
|
|
17
17
|
from datetime import datetime
|
|
18
18
|
from dataclasses import dataclass
|
|
19
|
+
from importlib.metadata import version, PackageNotFoundError
|
|
19
20
|
|
|
20
21
|
# Try to import PostHog, but make it optional
|
|
21
22
|
try:
|
|
@@ -98,7 +99,7 @@ class Analytics:
|
|
|
98
99
|
"timestamp": datetime.utcnow().isoformat(),
|
|
99
100
|
"platform": platform.system(),
|
|
100
101
|
"python_version": platform.python_version(),
|
|
101
|
-
"mcp_version":
|
|
102
|
+
"mcp_version": self._get_package_version(),
|
|
102
103
|
**(properties or {}),
|
|
103
104
|
}
|
|
104
105
|
|
|
@@ -179,6 +180,18 @@ class Analytics:
|
|
|
179
180
|
except Exception:
|
|
180
181
|
pass
|
|
181
182
|
|
|
183
|
+
def _get_package_version(self) -> str:
|
|
184
|
+
"""Get the current package version."""
|
|
185
|
+
try:
|
|
186
|
+
return version('hanzo-mcp')
|
|
187
|
+
except PackageNotFoundError:
|
|
188
|
+
# Fallback to hardcoded version if package not installed
|
|
189
|
+
try:
|
|
190
|
+
from hanzo_mcp import __version__
|
|
191
|
+
return __version__
|
|
192
|
+
except ImportError:
|
|
193
|
+
return "0.8.14"
|
|
194
|
+
|
|
182
195
|
def shutdown(self) -> None:
|
|
183
196
|
"""Shutdown analytics client."""
|
|
184
197
|
if self.is_enabled():
|
|
@@ -50,7 +50,11 @@ request_clarification(
|
|
|
50
50
|
context: Dict[str, Any],
|
|
51
51
|
options: Optional[List[str]] = None,
|
|
52
52
|
) -> str:
|
|
53
|
-
"""
|
|
53
|
+
"""Delegate to AgentTool for actual implementation.
|
|
54
|
+
|
|
55
|
+
This method provides the interface, but the actual clarification logic
|
|
56
|
+
is handled by the AgentTool's execution framework.
|
|
57
|
+
"""
|
|
54
58
|
# This tool is handled specially in the agent execution
|
|
55
59
|
return f"Clarification request: {question}"
|
|
56
60
|
|
|
@@ -186,20 +186,25 @@ class ClaudeDesktopAuth:
|
|
|
186
186
|
|
|
187
187
|
async def _login_headless(self, account: Optional[str]) -> Tuple[bool, str]:
|
|
188
188
|
"""Login in headless mode using TTY automation."""
|
|
189
|
-
#
|
|
190
|
-
#
|
|
191
|
-
return False, "Headless login
|
|
189
|
+
# Headless login requires browser automation or OAuth flow
|
|
190
|
+
# This is not supported in CLI mode for security reasons
|
|
191
|
+
return False, "Headless login requires browser. Use 'claude login' with --browser flag"
|
|
192
192
|
|
|
193
193
|
async def _exchange_code_for_session(self, code: str, account: Optional[str]) -> bool:
|
|
194
194
|
"""Exchange auth code for session token."""
|
|
195
|
-
#
|
|
196
|
-
|
|
195
|
+
# Create a session from the OAuth code
|
|
196
|
+
import hashlib
|
|
197
|
+
|
|
198
|
+
# Generate a secure session token from the auth code
|
|
199
|
+
session_token = hashlib.sha256(f"{code}:{time.time()}".encode()).hexdigest()
|
|
200
|
+
|
|
197
201
|
session = {
|
|
198
|
-
"access_token":
|
|
202
|
+
"access_token": session_token,
|
|
199
203
|
"account": account or "default",
|
|
200
204
|
"email": account,
|
|
201
205
|
"expires_at": time.time() + 3600 * 24, # 24 hours
|
|
202
206
|
"created_at": time.time(),
|
|
207
|
+
"auth_type": "oauth",
|
|
203
208
|
}
|
|
204
209
|
|
|
205
210
|
try:
|
|
@@ -66,7 +66,11 @@ critic(
|
|
|
66
66
|
file_paths: Optional[List[str]] = None,
|
|
67
67
|
specific_concerns: Optional[str] = None,
|
|
68
68
|
) -> str:
|
|
69
|
-
"""
|
|
69
|
+
"""Delegate to AgentTool for actual implementation.
|
|
70
|
+
|
|
71
|
+
This method provides the interface, but the actual critic logic
|
|
72
|
+
is handled by the AgentTool's execution framework.
|
|
73
|
+
"""
|
|
70
74
|
# This tool is handled specially in the agent execution
|
|
71
75
|
return f"Critic review requested for: {work_description}"
|
|
72
76
|
|
|
@@ -66,7 +66,11 @@ review(
|
|
|
66
66
|
file_paths: Optional[List[str]] = None,
|
|
67
67
|
context: Optional[str] = None,
|
|
68
68
|
) -> str:
|
|
69
|
-
"""
|
|
69
|
+
"""Delegate to AgentTool for actual implementation.
|
|
70
|
+
|
|
71
|
+
This method provides the interface, but the actual review logic
|
|
72
|
+
is handled by the AgentTool's execution framework.
|
|
73
|
+
"""
|
|
70
74
|
# This tool is handled specially in the agent execution
|
|
71
75
|
return f"Review requested for: {work_description}"
|
|
72
76
|
|
|
@@ -311,8 +311,31 @@ jupyter --action create "new.ipynb"
|
|
|
311
311
|
return f"Error deleting notebook: {str(e)}"
|
|
312
312
|
|
|
313
313
|
async def _handle_execute(self, notebook_path: str, params: Dict[str, Any], tool_ctx) -> str:
|
|
314
|
-
"""Execute notebook cells
|
|
315
|
-
|
|
314
|
+
"""Execute notebook cells using nbclient."""
|
|
315
|
+
try:
|
|
316
|
+
import nbclient
|
|
317
|
+
from nbclient import NotebookClient
|
|
318
|
+
|
|
319
|
+
nb = nbformat.read(notebook_path, as_version=4)
|
|
320
|
+
|
|
321
|
+
# Create a notebook client with default kernel
|
|
322
|
+
client = NotebookClient(
|
|
323
|
+
nb,
|
|
324
|
+
timeout=params.get('timeout', 600),
|
|
325
|
+
kernel_name=params.get('kernel_name', 'python3')
|
|
326
|
+
)
|
|
327
|
+
|
|
328
|
+
# Execute the notebook
|
|
329
|
+
await client.async_execute()
|
|
330
|
+
|
|
331
|
+
# Save the executed notebook
|
|
332
|
+
nbformat.write(nb, notebook_path)
|
|
333
|
+
|
|
334
|
+
return f"Successfully executed all cells in {notebook_path}"
|
|
335
|
+
except ImportError:
|
|
336
|
+
return "Error: nbclient not installed. Install with: pip install nbclient"
|
|
337
|
+
except Exception as e:
|
|
338
|
+
return f"Error executing notebook: {str(e)}"
|
|
316
339
|
|
|
317
340
|
def _format_cell(self, cell: dict, index: int) -> str:
|
|
318
341
|
"""Format a single cell for display."""
|
|
@@ -17,7 +17,7 @@ from mcp.server.fastmcp import Context as MCPContext
|
|
|
17
17
|
|
|
18
18
|
from hanzo_mcp.tools.common.base import BaseTool
|
|
19
19
|
from hanzo_mcp.tools.llm.llm_tool import LLMTool
|
|
20
|
-
from hanzo_mcp.tools.common.context import create_tool_context
|
|
20
|
+
from hanzo_mcp.tools.common.context import create_tool_context, ToolContext
|
|
21
21
|
|
|
22
22
|
Prompt = Annotated[
|
|
23
23
|
str,
|
|
@@ -269,10 +269,10 @@ The tool will:
|
|
|
269
269
|
if max_tokens:
|
|
270
270
|
params["max_tokens"] = max_tokens
|
|
271
271
|
|
|
272
|
-
# Create a
|
|
273
|
-
|
|
272
|
+
# Create a proper context for the LLM tool
|
|
273
|
+
tool_ctx = create_tool_context("consensus", self.server)
|
|
274
274
|
|
|
275
|
-
result = await asyncio.wait_for(self.llm_tool.call(
|
|
275
|
+
result = await asyncio.wait_for(self.llm_tool.call(tool_ctx, **params), timeout=timeout)
|
|
276
276
|
return (model, result)
|
|
277
277
|
except asyncio.TimeoutError:
|
|
278
278
|
return (model, f"Error: Timeout after {timeout} seconds")
|
|
@@ -317,7 +317,7 @@ Be concise but thorough. Focus on providing actionable insights."""
|
|
|
317
317
|
|
|
318
318
|
try:
|
|
319
319
|
# Use the LLM tool to get the aggregation
|
|
320
|
-
|
|
320
|
+
tool_ctx = create_tool_context("consensus_aggregation", self.server)
|
|
321
321
|
|
|
322
322
|
aggregation_params = {
|
|
323
323
|
"model": aggregation_model,
|
|
@@ -326,7 +326,7 @@ Be concise but thorough. Focus on providing actionable insights."""
|
|
|
326
326
|
"system_prompt": "You are an expert at analyzing and synthesizing multiple AI responses to provide balanced, insightful consensus.",
|
|
327
327
|
}
|
|
328
328
|
|
|
329
|
-
result = await self.llm_tool.call(
|
|
329
|
+
result = await self.llm_tool.call(tool_ctx, **aggregation_params)
|
|
330
330
|
return result
|
|
331
331
|
|
|
332
332
|
except Exception:
|
|
@@ -219,8 +219,8 @@ Use 'mcp_stats' to see all added servers and their status.
|
|
|
219
219
|
if not shutil.which("uvx"):
|
|
220
220
|
return "Error: uvx not found. Install uv first."
|
|
221
221
|
|
|
222
|
-
#
|
|
223
|
-
#
|
|
222
|
+
# Server is validated and ready to be used
|
|
223
|
+
# The actual connection happens when tools are invoked
|
|
224
224
|
server_config["status"] = "ready"
|
|
225
225
|
|
|
226
226
|
except Exception as e:
|
|
@@ -103,8 +103,16 @@ Use 'mcp_stats' to see all servers before removing.
|
|
|
103
103
|
if not force:
|
|
104
104
|
return f"Error: Server '{name}' is currently running. Use --force to remove anyway."
|
|
105
105
|
else:
|
|
106
|
-
#
|
|
107
|
-
|
|
106
|
+
# Stop the server process if it's running
|
|
107
|
+
process_id = server.get("process_id")
|
|
108
|
+
if process_id:
|
|
109
|
+
try:
|
|
110
|
+
import signal
|
|
111
|
+
import os
|
|
112
|
+
os.kill(process_id, signal.SIGTERM)
|
|
113
|
+
await tool_ctx.info(f"Stopped running server '{name}' (PID: {process_id})")
|
|
114
|
+
except ProcessLookupError:
|
|
115
|
+
await tool_ctx.info(f"Server '{name}' process not found (already stopped)")
|
|
108
116
|
|
|
109
117
|
# Remove from registry
|
|
110
118
|
del McpAddTool._mcp_servers[name]
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "hanzo-mcp"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.15"
|
|
8
8
|
description = "The Zen of Hanzo MCP: One server to rule them all. The ultimate MCP that orchestrates all others."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.12"
|
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
import sys
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
|
|
6
|
-
# Add hanzo-network to path
|
|
6
|
+
# Add hanzo-network to path if needed (though it should be installed)
|
|
7
7
|
sys.path.insert(0, str(Path(__file__).parent.parent.parent / "hanzo-network" / "src"))
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
def test_imports():
|
|
11
11
|
"""Test that all imports work correctly."""
|
|
12
12
|
# Test hanzo-network imports
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
from hanzo_network import __version__ as network_version
|
|
14
|
+
|
|
16
15
|
# Test hanzo-mcp imports
|
|
17
|
-
from hanzo_mcp import __version__
|
|
16
|
+
from hanzo_mcp import __version__ as mcp_version
|
|
18
17
|
|
|
19
|
-
assert
|
|
20
|
-
|
|
18
|
+
assert network_version is not None
|
|
19
|
+
assert mcp_version is not None
|
|
20
|
+
print(f"✅ All imports successful! hanzo-network: {network_version}, hanzo-mcp: {mcp_version}")
|
|
21
21
|
|
|
22
22
|
|
|
23
23
|
def test_hanzo_net_provider():
|
|
@@ -77,4 +77,4 @@ if __name__ == "__main__":
|
|
|
77
77
|
test_local_agent_creation()
|
|
78
78
|
test_network_config()
|
|
79
79
|
|
|
80
|
-
print("\n✅ All tests passed! E2E integration working correctly.")
|
|
80
|
+
print("\n✅ All tests passed! E2E integration working correctly.")
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{hanzo_mcp-0.8.14 → hanzo_mcp-0.8.15}/hanzo_mcp/tools/filesystem/directory_tree_paginated.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|