hanzo-mcp 0.8.3__tar.gz → 0.8.5__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.

Files changed (243) hide show
  1. hanzo_mcp-0.8.5/PKG-INFO +411 -0
  2. hanzo_mcp-0.8.5/README.md +341 -0
  3. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/__init__.py +1 -1
  4. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/cli.py +45 -21
  5. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/core/base_agent.py +4 -5
  6. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/core/model_registry.py +2 -2
  7. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/__init__.py +55 -28
  8. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/agent_tool.py +12 -1
  9. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/cli_tools.py +1 -2
  10. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/network_tool.py +11 -55
  11. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/unified_cli_tools.py +3 -3
  12. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/llm/llm_unified.py +2 -2
  13. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/__init__.py +7 -1
  14. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/bash_tool.py +14 -28
  15. hanzo_mcp-0.8.5/hanzo_mcp/tools/shell/zsh_tool.py +266 -0
  16. hanzo_mcp-0.8.5/hanzo_mcp.egg-info/PKG-INFO +411 -0
  17. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp.egg-info/SOURCES.txt +2 -0
  18. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/pyproject.toml +1 -2
  19. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_cli_tools.py +10 -10
  20. hanzo_mcp-0.8.5/tests/test_shell_tools.py +253 -0
  21. hanzo_mcp-0.8.3/PKG-INFO +0 -526
  22. hanzo_mcp-0.8.3/README.md +0 -456
  23. hanzo_mcp-0.8.3/hanzo_mcp.egg-info/PKG-INFO +0 -526
  24. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/__main__.py +0 -0
  25. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/analytics/__init__.py +0 -0
  26. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/analytics/posthog_analytics.py +0 -0
  27. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/bridge.py +0 -0
  28. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/cli_enhanced.py +0 -0
  29. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/cli_plugin.py +0 -0
  30. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/compute_nodes.py +0 -0
  31. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/config/__init__.py +0 -0
  32. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/config/settings.py +0 -0
  33. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/config/tool_config.py +0 -0
  34. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/dev_server.py +0 -0
  35. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/__init__.py +0 -0
  36. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/compact_conversation.py +0 -0
  37. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/create_release.py +0 -0
  38. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/enhanced_prompts.py +0 -0
  39. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/example_custom_prompt.py +0 -0
  40. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/project_system.py +0 -0
  41. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/project_todo_reminder.py +0 -0
  42. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/tool_explorer.py +0 -0
  43. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/prompts/utils.py +0 -0
  44. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/server.py +0 -0
  45. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/server_enhanced.py +0 -0
  46. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/__init__.py +0 -0
  47. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/agent.py +0 -0
  48. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/agent_tool_v1_deprecated.py +0 -0
  49. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/clarification_protocol.py +0 -0
  50. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/clarification_tool.py +0 -0
  51. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/claude_cli_tool.py +0 -0
  52. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/claude_desktop_auth.py +0 -0
  53. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/cli_agent_base.py +0 -0
  54. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/code_auth.py +0 -0
  55. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/code_auth_tool.py +0 -0
  56. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/codex_cli_tool.py +0 -0
  57. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/critic_tool.py +0 -0
  58. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/gemini_cli_tool.py +0 -0
  59. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/grok_cli_tool.py +0 -0
  60. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/iching_tool.py +0 -0
  61. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/prompt.py +0 -0
  62. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/review_tool.py +0 -0
  63. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/swarm_alias.py +0 -0
  64. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/swarm_tool.py +0 -0
  65. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/swarm_tool_v1_deprecated.py +0 -0
  66. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/agent/tool_adapter.py +0 -0
  67. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/__init__.py +0 -0
  68. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/base.py +0 -0
  69. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/batch_tool.py +0 -0
  70. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/config_tool.py +0 -0
  71. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/context.py +0 -0
  72. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/context_fix.py +0 -0
  73. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/critic_tool.py +0 -0
  74. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/decorators.py +0 -0
  75. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/enhanced_base.py +0 -0
  76. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/fastmcp_pagination.py +0 -0
  77. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/forgiving_edit.py +0 -0
  78. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/mode.py +0 -0
  79. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/mode_loader.py +0 -0
  80. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/paginated_base.py +0 -0
  81. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/paginated_response.py +0 -0
  82. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/pagination.py +0 -0
  83. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/permissions.py +0 -0
  84. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/personality.py +0 -0
  85. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/plugin_loader.py +0 -0
  86. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/stats.py +0 -0
  87. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/test_helpers.py +0 -0
  88. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/thinking_tool.py +0 -0
  89. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/tool_disable.py +0 -0
  90. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/tool_enable.py +0 -0
  91. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/tool_list.py +0 -0
  92. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/truncate.py +0 -0
  93. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/common/validation.py +0 -0
  94. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/config/__init__.py +0 -0
  95. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/config/config_tool.py +1 -1
  96. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/config/index_config.py +0 -0
  97. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/config/mode_tool.py +0 -0
  98. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/__init__.py +0 -0
  99. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/database_manager.py +0 -0
  100. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/graph.py +0 -0
  101. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/graph_add.py +0 -0
  102. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/graph_query.py +0 -0
  103. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/graph_remove.py +0 -0
  104. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/graph_search.py +0 -0
  105. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/graph_stats.py +0 -0
  106. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/sql.py +0 -0
  107. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/sql_query.py +0 -0
  108. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/sql_search.py +0 -0
  109. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/database/sql_stats.py +0 -0
  110. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/editor/__init__.py +0 -0
  111. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/editor/neovim_command.py +0 -0
  112. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/editor/neovim_edit.py +0 -0
  113. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/editor/neovim_session.py +0 -0
  114. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/__init__.py +0 -0
  115. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/ast_multi_edit.py +0 -0
  116. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/ast_tool.py +0 -0
  117. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/base.py +0 -0
  118. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/batch_search.py +0 -0
  119. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/content_replace.py +0 -0
  120. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/diff.py +0 -0
  121. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/directory_tree.py +0 -0
  122. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/directory_tree_paginated.py +0 -0
  123. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/edit.py +0 -0
  124. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/find.py +0 -0
  125. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/find_files.py +0 -0
  126. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/git_search.py +0 -0
  127. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/grep.py +0 -0
  128. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/multi_edit.py +0 -0
  129. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/read.py +0 -0
  130. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/rules_tool.py +0 -0
  131. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/search_tool.py +0 -0
  132. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/symbols_tool.py +0 -0
  133. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/tree.py +0 -0
  134. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/unix_aliases.py +0 -0
  135. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/watch.py +0 -0
  136. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/filesystem/write.py +0 -0
  137. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/jupyter/__init__.py +0 -0
  138. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/jupyter/base.py +0 -0
  139. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/jupyter/jupyter.py +0 -0
  140. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/jupyter/notebook_edit.py +0 -0
  141. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/jupyter/notebook_read.py +0 -0
  142. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/llm/__init__.py +0 -0
  143. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/llm/consensus_tool.py +0 -0
  144. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/llm/llm_manage.py +0 -0
  145. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/llm/llm_tool.py +0 -0
  146. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/llm/provider_tools.py +0 -0
  147. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/lsp/__init__.py +0 -0
  148. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/lsp/lsp_tool.py +0 -0
  149. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/mcp/__init__.py +0 -0
  150. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/mcp/mcp_add.py +0 -0
  151. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/mcp/mcp_remove.py +0 -0
  152. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/mcp/mcp_stats.py +0 -0
  153. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/mcp/mcp_tool.py +0 -0
  154. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/memory/__init__.py +0 -0
  155. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/memory/knowledge_tools.py +0 -0
  156. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/memory/memory_tools.py +0 -0
  157. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/search/__init__.py +0 -0
  158. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/search/find_tool.py +0 -0
  159. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/search/unified_search.py +0 -0
  160. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/auto_background.py +0 -0
  161. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/base.py +0 -0
  162. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/base_process.py +0 -0
  163. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/bash_session.py +0 -0
  164. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/bash_session_executor.py +0 -0
  165. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/command_executor.py +0 -0
  166. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/logs.py +0 -0
  167. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/npx.py +0 -0
  168. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/npx_background.py +0 -0
  169. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/npx_tool.py +0 -0
  170. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/open.py +0 -0
  171. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/pkill.py +0 -0
  172. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/process_tool.py +0 -0
  173. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/processes.py +0 -0
  174. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/run_background.py +0 -0
  175. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/run_command.py +0 -0
  176. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/run_command_windows.py +0 -0
  177. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/session_manager.py +0 -0
  178. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/session_storage.py +0 -0
  179. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/streaming_command.py +0 -0
  180. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/uvx.py +0 -0
  181. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/uvx_background.py +0 -0
  182. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/shell/uvx_tool.py +0 -0
  183. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/todo/__init__.py +0 -0
  184. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/todo/base.py +0 -0
  185. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/todo/todo.py +0 -0
  186. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/todo/todo_read.py +0 -0
  187. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/todo/todo_write.py +0 -0
  188. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/__init__.py +0 -0
  189. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/ast_analyzer.py +0 -0
  190. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/git_ingester.py +0 -0
  191. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/index_tool.py +0 -0
  192. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/infinity_store.py +0 -0
  193. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/mock_infinity.py +0 -0
  194. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/project_manager.py +0 -0
  195. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/vector.py +0 -0
  196. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/vector_index.py +0 -0
  197. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/tools/vector/vector_search.py +0 -0
  198. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp/types.py +0 -0
  199. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp.egg-info/dependency_links.txt +0 -0
  200. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp.egg-info/entry_points.txt +0 -0
  201. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp.egg-info/requires.txt +0 -0
  202. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/hanzo_mcp.egg-info/top_level.txt +0 -0
  203. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/setup.cfg +0 -0
  204. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_agent_tools_ci.py +0 -0
  205. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_async_support.py +0 -0
  206. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_batch_tool_edge_cases.py +0 -0
  207. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_cli.py +0 -0
  208. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_cli_agents_consolidated.py +0 -0
  209. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_e2e_demo.py +0 -0
  210. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_e2e_simple.py +0 -0
  211. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_failure_cases.py +0 -0
  212. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_find_tool_ffind.py +0 -0
  213. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_find_tool_integration.py +0 -0
  214. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_find_tool_registration.py +0 -0
  215. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_git_ingestion.py +0 -0
  216. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_hanzo_agents_integration.py +0 -0
  217. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_hanzo_mcp_integration.py +0 -0
  218. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_hanzo_mcp_local.py +0 -0
  219. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_hanzo_mcp_simple.py +0 -0
  220. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_hanzo_network_integration.py +0 -0
  221. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_litellm_warnings.py +0 -0
  222. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_lsp_tool.py +0 -0
  223. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_manual.py +0 -0
  224. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_memory_base.py +0 -0
  225. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_memory_basic.py +0 -0
  226. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_memory_consolidated.py +0 -0
  227. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_memory_simple.py +0 -0
  228. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_memory_utils.py +0 -0
  229. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_new_tools.py +0 -0
  230. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_performance.py +0 -0
  231. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_search.py +0 -0
  232. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_search_quality.py +0 -0
  233. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_shell_features.py +0 -0
  234. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_simple.py +0 -0
  235. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_stdio_protocol.py +0 -0
  236. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_stdio_simple.py +0 -0
  237. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_streaming_command.py +0 -0
  238. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_swarm_simple.py +0 -0
  239. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_tools_suite.py +0 -0
  240. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_unified_search.py +0 -0
  241. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_utils.py +0 -0
  242. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_vector_store.py +0 -0
  243. {hanzo_mcp-0.8.3 → hanzo_mcp-0.8.5}/tests/test_web3_integration.py +0 -0
@@ -0,0 +1,411 @@
1
+ Metadata-Version: 2.4
2
+ Name: hanzo-mcp
3
+ Version: 0.8.5
4
+ Summary: The Zen of Hanzo MCP: One server to rule them all. The ultimate MCP that orchestrates all others.
5
+ Author-email: Hanzo Industries Inc <dev@hanzo.ai>
6
+ License: MIT
7
+ Project-URL: Homepage, https://github.com/hanzoai/mcp
8
+ Project-URL: Bug Tracker, https://github.com/hanzoai/mcp/issues
9
+ Project-URL: Documentation, https://mcp.hanzo.ai
10
+ Keywords: mcp,claude,hanzo,code,agent
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: License :: OSI Approved :: MIT License
13
+ Classifier: Operating System :: OS Independent
14
+ Requires-Python: >=3.12
15
+ Description-Content-Type: text/markdown
16
+ Requires-Dist: mcp>=1.9.4
17
+ Requires-Dist: fastmcp>=2.9.2
18
+ Requires-Dist: httpx>=0.28.1
19
+ Requires-Dist: uvicorn>=0.34.0
20
+ Requires-Dist: openai>=1.62.0
21
+ Requires-Dist: python-dotenv>=1.0.1
22
+ Requires-Dist: litellm>=1.73.2
23
+ Requires-Dist: grep-ast>=0.8.1
24
+ Requires-Dist: bashlex>=0.18
25
+ Requires-Dist: libtmux>=0.39.0
26
+ Requires-Dist: nbformat>=5.10.4
27
+ Requires-Dist: psutil>=6.0.0
28
+ Requires-Dist: pydantic>=2.9.2
29
+ Requires-Dist: pydantic-settings>=2.7.0
30
+ Requires-Dist: typing-extensions>=4.13.0
31
+ Requires-Dist: watchdog>=6.0.0
32
+ Requires-Dist: keyring>=24.0.0
33
+ Requires-Dist: ffind>=1.3.0
34
+ Provides-Extra: dev
35
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
37
+ Requires-Dist: ruff>=0.1.0; extra == "dev"
38
+ Requires-Dist: black>=23.3.0; extra == "dev"
39
+ Requires-Dist: sphinx>=8.0.0; extra == "dev"
40
+ Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == "dev"
41
+ Requires-Dist: myst-parser>=4.0.0; extra == "dev"
42
+ Requires-Dist: sphinx-copybutton>=0.5.0; extra == "dev"
43
+ Requires-Dist: mypy>=1.10.0; extra == "dev"
44
+ Requires-Dist: types-aiofiles>=23.2.0; extra == "dev"
45
+ Requires-Dist: types-psutil>=5.9.5; extra == "dev"
46
+ Requires-Dist: types-setuptools>=69.5.0; extra == "dev"
47
+ Provides-Extra: docs
48
+ Requires-Dist: sphinx>=8.0.0; extra == "docs"
49
+ Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == "docs"
50
+ Requires-Dist: myst-parser>=4.0.0; extra == "docs"
51
+ Requires-Dist: sphinx-copybutton>=0.5.0; extra == "docs"
52
+ Provides-Extra: analytics
53
+ Requires-Dist: posthog>=3.0.0; extra == "analytics"
54
+ Provides-Extra: test
55
+ Requires-Dist: pytest>=7.0.0; extra == "test"
56
+ Requires-Dist: pytest-cov>=4.1.0; extra == "test"
57
+ Requires-Dist: pytest-mock>=3.10.0; extra == "test"
58
+ Requires-Dist: pytest-asyncio>=0.25.3; extra == "test"
59
+ Requires-Dist: twisted; extra == "test"
60
+ Provides-Extra: agents
61
+ Requires-Dist: hanzo-agents>=0.1.0; extra == "agents"
62
+ Provides-Extra: memory
63
+ Requires-Dist: hanzo-memory>=1.0.0; extra == "memory"
64
+ Provides-Extra: performance
65
+ Requires-Dist: ujson>=5.7.0; extra == "performance"
66
+ Requires-Dist: orjson>=3.9.0; extra == "performance"
67
+ Provides-Extra: publish
68
+ Requires-Dist: twine>=4.0.2; extra == "publish"
69
+ Requires-Dist: build>=1.0.3; extra == "publish"
70
+
71
+ # Hanzo Model Context Protocol (MCP)
72
+
73
+ [![PyPI](https://img.shields.io/pypi/v/hanzo-mcp.svg)](https://pypi.org/project/hanzo-mcp/)
74
+ [![Python Version](https://img.shields.io/pypi/pyversions/hanzo-mcp.svg)](https://pypi.org/project/hanzo-mcp/)
75
+
76
+ Model Context Protocol implementation for advanced tool use and context management.
77
+
78
+ ## Installation
79
+
80
+ ```bash
81
+ pip install hanzo-mcp
82
+ ```
83
+
84
+ ## Features
85
+
86
+ - **Tool Management**: Register and manage AI tools
87
+ - **File Operations**: Read, write, edit files
88
+ - **Code Intelligence**: AST analysis, symbol search
89
+ - **Shell Execution**: Run commands safely
90
+ - **Agent Delegation**: Recursive agent capabilities
91
+ - **Memory Integration**: Persistent context storage
92
+ - **Batch Operations**: Execute multiple tools efficiently
93
+
94
+ ## Quick Start
95
+
96
+ ### Basic Usage
97
+
98
+ ```python
99
+ from hanzo_mcp import create_mcp_server
100
+
101
+ # Create MCP server
102
+ server = create_mcp_server()
103
+
104
+ # Register tools
105
+ server.register_filesystem_tools()
106
+ server.register_shell_tools()
107
+ server.register_agent_tools()
108
+
109
+ # Start server
110
+ await server.start()
111
+ ```
112
+
113
+ ### Tool Categories
114
+
115
+ #### Filesystem Tools
116
+
117
+ ```python
118
+ # Read file
119
+ content = await server.tools.read(file_path="/path/to/file.py")
120
+
121
+ # Write file
122
+ await server.tools.write(
123
+ file_path="/path/to/new.py",
124
+ content="print('Hello')"
125
+ )
126
+
127
+ # Edit file
128
+ await server.tools.edit(
129
+ file_path="/path/to/file.py",
130
+ old_string="old code",
131
+ new_string="new code"
132
+ )
133
+
134
+ # Multi-edit
135
+ await server.tools.multi_edit(
136
+ file_path="/path/to/file.py",
137
+ edits=[
138
+ {"old_string": "foo", "new_string": "bar"},
139
+ {"old_string": "baz", "new_string": "qux"}
140
+ ]
141
+ )
142
+ ```
143
+
144
+ #### Search Tools
145
+
146
+ ```python
147
+ # Unified search (grep + AST + semantic)
148
+ results = await server.tools.search(
149
+ pattern="function_name",
150
+ path="/project"
151
+ )
152
+
153
+ # AST-aware search
154
+ results = await server.tools.grep_ast(
155
+ pattern="class.*Service",
156
+ path="/src"
157
+ )
158
+
159
+ # Symbol search
160
+ symbols = await server.tools.symbols(
161
+ pattern="def test_",
162
+ path="/tests"
163
+ )
164
+ ```
165
+
166
+ #### Shell Tools
167
+
168
+ ```python
169
+ # Run command
170
+ result = await server.tools.bash(
171
+ command="ls -la",
172
+ cwd="/project"
173
+ )
174
+
175
+ # Run with auto-backgrounding
176
+ result = await server.tools.bash(
177
+ command="python server.py",
178
+ timeout=120000 # Auto-backgrounds after 2 min
179
+ )
180
+
181
+ # Manage processes
182
+ processes = await server.tools.process(action="list")
183
+ logs = await server.tools.process(
184
+ action="logs",
185
+ id="bash_abc123"
186
+ )
187
+ ```
188
+
189
+ #### Agent Tools
190
+
191
+ ```python
192
+ # Dispatch agent for complex tasks
193
+ result = await server.tools.dispatch_agent(
194
+ prompt="Analyze the codebase architecture",
195
+ path="/project"
196
+ )
197
+
198
+ # Network of agents
199
+ result = await server.tools.network(
200
+ task="Implement user authentication",
201
+ agents=["architect", "developer", "tester"]
202
+ )
203
+
204
+ # CLI tool integration
205
+ result = await server.tools.claude(
206
+ args=["--analyze", "main.py"]
207
+ )
208
+ ```
209
+
210
+ #### Batch Operations
211
+
212
+ ```python
213
+ # Execute multiple tools in parallel
214
+ results = await server.tools.batch(
215
+ description="Read multiple files",
216
+ invocations=[
217
+ {"tool_name": "read", "input": {"file_path": "file1.py"}},
218
+ {"tool_name": "read", "input": {"file_path": "file2.py"}},
219
+ {"tool_name": "grep", "input": {"pattern": "TODO"}}
220
+ ]
221
+ )
222
+ ```
223
+
224
+ ## Advanced Features
225
+
226
+ ### Custom Tools
227
+
228
+ ```python
229
+ from hanzo_mcp import Tool
230
+
231
+ class MyCustomTool(Tool):
232
+ name = "my_tool"
233
+ description = "Custom tool"
234
+
235
+ async def call(self, ctx, **params):
236
+ # Tool implementation
237
+ return "Result"
238
+
239
+ # Register custom tool
240
+ server.register_tool(MyCustomTool())
241
+ ```
242
+
243
+ ### Permission Management
244
+
245
+ ```python
246
+ from hanzo_mcp import PermissionManager
247
+
248
+ # Create permission manager
249
+ pm = PermissionManager()
250
+
251
+ # Set permission mode
252
+ pm.set_mode("review") # review, auto_approve, auto_deny
253
+
254
+ # Check permission
255
+ allowed = await pm.check_permission(
256
+ tool="write",
257
+ params={"file_path": "/etc/passwd"}
258
+ )
259
+ ```
260
+
261
+ ### Context Management
262
+
263
+ ```python
264
+ from hanzo_mcp import ToolContext
265
+
266
+ # Create context
267
+ ctx = ToolContext(
268
+ cwd="/project",
269
+ env={"API_KEY": "secret"},
270
+ timeout=30000
271
+ )
272
+
273
+ # Use with tools
274
+ result = await tool.call(ctx, **params)
275
+ ```
276
+
277
+ ## Configuration
278
+
279
+ ### Environment Variables
280
+
281
+ ```bash
282
+ # API keys for agent tools
283
+ ANTHROPIC_API_KEY=sk-ant-...
284
+ OPENAI_API_KEY=sk-...
285
+
286
+ # Tool settings
287
+ MCP_PERMISSION_MODE=review
288
+ MCP_MAX_FILE_SIZE=10485760
289
+ MCP_TIMEOUT=120000
290
+
291
+ # Search settings
292
+ MCP_SEARCH_IGNORE=node_modules,*.pyc
293
+ MCP_SEARCH_MAX_RESULTS=100
294
+ ```
295
+
296
+ ### Configuration File
297
+
298
+ ```yaml
299
+ tools:
300
+ filesystem:
301
+ enabled: true
302
+ max_file_size: 10MB
303
+ allowed_paths:
304
+ - /home/user/projects
305
+ - /tmp
306
+
307
+ shell:
308
+ enabled: true
309
+ timeout: 120000
310
+ auto_background: true
311
+
312
+ agent:
313
+ enabled: true
314
+ models:
315
+ - claude-3-opus
316
+ - gpt-4
317
+
318
+ search:
319
+ ignore_patterns:
320
+ - node_modules
321
+ - "*.pyc"
322
+ - .git
323
+ max_results: 100
324
+
325
+ permissions:
326
+ mode: review # review, auto_approve, auto_deny
327
+ whitelist:
328
+ - read
329
+ - grep
330
+ - search
331
+ blacklist:
332
+ - rm
333
+ - sudo
334
+ ```
335
+
336
+ ## CLI Usage
337
+
338
+ ### Installation to Claude Desktop
339
+
340
+ ```bash
341
+ # Install to Claude Desktop
342
+ hanzo-mcp install-desktop
343
+
344
+ # Serve MCP
345
+ hanzo-mcp serve --port 3000
346
+ ```
347
+
348
+ ### Standalone Server
349
+
350
+ ```bash
351
+ # Start MCP server
352
+ hanzo-mcp serve
353
+
354
+ # With custom config
355
+ hanzo-mcp serve --config mcp-config.yaml
356
+
357
+ # With specific tools
358
+ hanzo-mcp serve --tools filesystem,shell,agent
359
+ ```
360
+
361
+ ## Development
362
+
363
+ ### Setup
364
+
365
+ ```bash
366
+ cd pkg/hanzo-mcp
367
+ uv sync --all-extras
368
+ ```
369
+
370
+ ### Testing
371
+
372
+ ```bash
373
+ # Unit tests
374
+ pytest tests/ -v
375
+
376
+ # Integration tests
377
+ pytest tests/ -m integration
378
+
379
+ # With coverage
380
+ pytest tests/ --cov=hanzo_mcp
381
+ ```
382
+
383
+ ### Building
384
+
385
+ ```bash
386
+ uv build
387
+ ```
388
+
389
+ ## Architecture
390
+
391
+ ### Tool Categories
392
+
393
+ - **Filesystem**: File operations (read, write, edit)
394
+ - **Search**: Code search (grep, AST, semantic)
395
+ - **Shell**: Command execution and process management
396
+ - **Agent**: AI agent delegation and orchestration
397
+ - **Memory**: Context and knowledge persistence
398
+ - **Config**: Configuration management
399
+ - **LLM**: Direct LLM interactions
400
+
401
+ ### Security
402
+
403
+ - Permission system for dangerous operations
404
+ - Path validation and sandboxing
405
+ - Command injection protection
406
+ - Rate limiting on operations
407
+ - Audit logging
408
+
409
+ ## License
410
+
411
+ Apache License 2.0