janito 2.27.0__tar.gz → 2.28.0__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.
Files changed (486) hide show
  1. {janito-2.27.0 → janito-2.28.0}/PKG-INFO +3 -1
  2. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG.md +4 -4
  3. {janito-2.27.0 → janito-2.28.0}/docs/index.md +2 -2
  4. janito-2.27.0/docs/moonshotai-setup.md → janito-2.28.0/docs/moonshot-setup.md +16 -16
  5. janito-2.28.0/docs/plugins/ACTUAL_TOOLS_LOCATION.md +49 -0
  6. janito-2.28.0/docs/plugins/MIGRATION_COMPLETE.md +73 -0
  7. janito-2.28.0/docs/plugins/api-reference.md +221 -0
  8. janito-2.28.0/docs/plugins/architecture.md +128 -0
  9. janito-2.28.0/docs/plugins/built-in-plugins/codeanalyzer.md +65 -0
  10. janito-2.28.0/docs/plugins/built-in-plugins/filemanager.md +65 -0
  11. janito-2.28.0/docs/plugins/built-in-plugins/pythondev.md +64 -0
  12. janito-2.28.0/docs/plugins/built-in-plugins/system.md +62 -0
  13. janito-2.28.0/docs/plugins/built-in-plugins/userinterface.md +61 -0
  14. janito-2.28.0/docs/plugins/built-in-plugins/visualization.md +87 -0
  15. janito-2.28.0/docs/plugins/built-in-plugins/webtools.md +65 -0
  16. janito-2.28.0/docs/plugins/configuration.md +127 -0
  17. janito-2.28.0/docs/plugins/examples/advanced.md +326 -0
  18. janito-2.28.0/docs/plugins/examples/basic.md +82 -0
  19. janito-2.28.0/docs/plugins/examples/intermediate.md +145 -0
  20. janito-2.28.0/docs/plugins/plugin-development.md +170 -0
  21. janito-2.28.0/docs/plugins/plugin-resources.md +76 -0
  22. janito-2.28.0/docs/plugins/publishing.md +253 -0
  23. janito-2.28.0/docs/plugins/remote-plugins.md +96 -0
  24. janito-2.28.0/docs/plugins/testing.md +253 -0
  25. {janito-2.27.0 → janito-2.28.0}/docs/provider-platform-access.md +2 -2
  26. {janito-2.27.0 → janito-2.28.0}/docs/supported-providers-models.md +2 -2
  27. {janito-2.27.0 → janito-2.28.0}/examples/loop_protection_example.py +14 -14
  28. {janito-2.27.0 → janito-2.28.0}/examples/loop_protection_tool_example.py +26 -24
  29. janito-2.28.0/get_nasdaq_top.py +232 -0
  30. {janito-2.27.0 → janito-2.28.0}/janito/README.md +9 -9
  31. {janito-2.27.0 → janito-2.28.0}/janito/agent/setup_agent.py +29 -16
  32. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/script_runner.py +1 -1
  33. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/session.py +50 -24
  34. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/session_profile_select.py +8 -2
  35. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/__init__.py +2 -0
  36. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/execute.py +4 -2
  37. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/help.py +8 -1
  38. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/privileges.py +6 -2
  39. janito-2.28.0/janito/cli/chat_mode/shell/commands/provider.py +28 -0
  40. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/read.py +4 -2
  41. janito-2.28.0/janito/cli/chat_mode/shell/commands/security/__init__.py +1 -0
  42. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +16 -13
  43. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/security_command.py +14 -10
  44. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/tools.py +4 -2
  45. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +17 -12
  46. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/write.py +4 -2
  47. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/toolbar.py +15 -1
  48. janito-2.28.0/janito/cli/cli_commands/enable_disable_plugin.py +87 -0
  49. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_models.py +2 -2
  50. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_plugins.py +35 -19
  51. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_profiles.py +6 -6
  52. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_providers.py +1 -1
  53. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/model_utils.py +45 -20
  54. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/ping_providers.py +10 -10
  55. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/set_api_key.py +5 -3
  56. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/show_config.py +13 -7
  57. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/show_system_prompt.py +13 -6
  58. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/getters.py +7 -0
  59. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/model_guesser.py +18 -15
  60. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/runner.py +28 -6
  61. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/setters.py +21 -6
  62. {janito-2.27.0 → janito-2.28.0}/janito/cli/main_cli.py +14 -12
  63. {janito-2.27.0 → janito-2.28.0}/janito/cli/prompt_core.py +2 -0
  64. {janito-2.27.0 → janito-2.28.0}/janito/cli/prompt_setup.py +4 -4
  65. {janito-2.27.0 → janito-2.28.0}/janito/cli/single_shot_mode/handler.py +2 -0
  66. {janito-2.27.0 → janito-2.28.0}/janito/config_manager.py +2 -0
  67. {janito-2.27.0 → janito-2.28.0}/janito/docs/GETTING_STARTED.md +9 -9
  68. janito-2.28.0/janito/drivers/cerebras/__init__.py +1 -0
  69. {janito-2.27.0 → janito-2.28.0}/janito/exceptions.py +6 -4
  70. {janito-2.27.0 → janito-2.28.0}/janito/plugins/__init__.py +2 -2
  71. {janito-2.27.0 → janito-2.28.0}/janito/plugins/base.py +48 -40
  72. janito-2.28.0/janito/plugins/builtin.py +88 -0
  73. {janito-2.27.0 → janito-2.28.0}/janito/plugins/config.py +16 -19
  74. {janito-2.27.0 → janito-2.28.0}/janito/plugins/discovery.py +129 -40
  75. {janito-2.27.0 → janito-2.28.0}/janito/plugins/manager.py +63 -59
  76. {janito-2.27.0 → janito-2.28.0}/janito/provider_registry.py +10 -10
  77. {janito-2.27.0 → janito-2.28.0}/janito/providers/__init__.py +1 -1
  78. {janito-2.27.0 → janito-2.28.0}/janito/providers/alibaba/model_info.py +3 -5
  79. {janito-2.27.0 → janito-2.28.0}/janito/providers/alibaba/provider.py +3 -1
  80. janito-2.28.0/janito/providers/cerebras/__init__.py +1 -0
  81. {janito-2.27.0 → janito-2.28.0}/janito/providers/cerebras/model_info.py +12 -27
  82. {janito-2.27.0 → janito-2.28.0}/janito/providers/cerebras/provider.py +11 -9
  83. janito-2.28.0/janito/providers/mistral/__init__.py +1 -0
  84. {janito-2.27.0 → janito-2.28.0}/janito/providers/mistral/model_info.py +1 -1
  85. {janito-2.27.0 → janito-2.28.0}/janito/providers/mistral/provider.py +1 -1
  86. janito-2.28.0/janito/providers/moonshot/__init__.py +1 -0
  87. {janito-2.27.0/janito/providers/moonshotai → janito-2.28.0/janito/providers/moonshot}/model_info.py +3 -3
  88. {janito-2.27.0/janito/providers/moonshotai → janito-2.28.0/janito/providers/moonshot}/provider.py +8 -8
  89. {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/provider.py +3 -1
  90. {janito-2.27.0 → janito-2.28.0}/janito/report_events.py +0 -1
  91. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/ask_user.py +7 -1
  92. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/create_file.py +1 -1
  93. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/fetch_url.py +45 -29
  94. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/python_command_run.py +2 -1
  95. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/python_file_run.py +1 -0
  96. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/run_powershell_command.py +1 -1
  97. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/core.py +1 -1
  98. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/jinja2_validator.py +14 -11
  99. janito-2.28.0/janito/tools/base.py +12 -0
  100. {janito-2.27.0 → janito-2.28.0}/janito/tools/loop_protection.py +24 -22
  101. {janito-2.27.0 → janito-2.28.0}/janito/tools/path_utils.py +7 -7
  102. {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_base.py +0 -2
  103. {janito-2.27.0 → janito-2.28.0}/janito/tools/tools_adapter.py +15 -5
  104. {janito-2.27.0 → janito-2.28.0}/janito/tools/url_whitelist.py +27 -26
  105. {janito-2.27.0 → janito-2.28.0}/janito.egg-info/PKG-INFO +3 -1
  106. {janito-2.27.0 → janito-2.28.0}/janito.egg-info/SOURCES.txt +87 -14
  107. {janito-2.27.0 → janito-2.28.0}/janito.egg-info/requires.txt +3 -0
  108. janito-2.28.0/janito.egg-info/top_level.txt +1 -0
  109. {janito-2.27.0 → janito-2.28.0}/market_prompt_fix.py +46 -35
  110. {janito-2.27.0 → janito-2.28.0}/market_test.py +31 -22
  111. {janito-2.27.0 → janito-2.28.0}/mkdocs.yml +1 -1
  112. {janito-2.27.0 → janito-2.28.0}/mkdocs_hooks.py +12 -12
  113. janito-2.28.0/plugins/__init__.py +35 -0
  114. janito-2.28.0/plugins/core/__init__.py +7 -0
  115. janito-2.28.0/plugins/core/codeanalyzer/__init__.py +34 -0
  116. janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +1 -0
  117. janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/core.py +122 -0
  118. janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +47 -0
  119. janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +14 -0
  120. janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +303 -0
  121. janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +36 -0
  122. janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/__init__.py +1 -0
  123. janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/core.py +205 -0
  124. janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/match_lines.py +67 -0
  125. janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +73 -0
  126. janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +145 -0
  127. janito-2.28.0/plugins/core/filemanager/__init__.py +91 -0
  128. janito-2.28.0/plugins/core/filemanager/tools/copy_file.py +87 -0
  129. janito-2.28.0/plugins/core/filemanager/tools/create_directory.py +70 -0
  130. janito-2.28.0/plugins/core/filemanager/tools/create_file.py +87 -0
  131. janito-2.28.0/plugins/core/filemanager/tools/delete_text_in_file.py +134 -0
  132. janito-2.28.0/plugins/core/filemanager/tools/find_files.py +143 -0
  133. janito-2.28.0/plugins/core/filemanager/tools/move_file.py +131 -0
  134. janito-2.28.0/plugins/core/filemanager/tools/read_files.py +58 -0
  135. janito-2.28.0/plugins/core/filemanager/tools/remove_directory.py +55 -0
  136. janito-2.28.0/plugins/core/filemanager/tools/remove_file.py +58 -0
  137. janito-2.28.0/plugins/core/filemanager/tools/replace_text_in_file.py +270 -0
  138. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
  139. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/core.py +114 -0
  140. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +35 -0
  141. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +100 -0
  142. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +50 -0
  143. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +27 -0
  144. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +6 -0
  145. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +109 -0
  146. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +32 -0
  147. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +5 -0
  148. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +11 -0
  149. janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +6 -0
  150. janito-2.28.0/plugins/core/filemanager/tools/view_file.py +172 -0
  151. janito-2.28.0/plugins/core/system/__init__.py +20 -0
  152. janito-2.28.0/plugins/core/system/tools/run_bash_command.py +183 -0
  153. janito-2.28.0/plugins/core/system/tools/run_powershell_command.py +218 -0
  154. janito-2.28.0/plugins/dev/__init__.py +7 -0
  155. janito-2.28.0/plugins/dev/pythondev/__init__.py +28 -0
  156. janito-2.28.0/plugins/dev/pythondev/tools/python_code_run.py +172 -0
  157. janito-2.28.0/plugins/dev/pythondev/tools/python_command_run.py +171 -0
  158. janito-2.28.0/plugins/dev/pythondev/tools/python_file_run.py +172 -0
  159. janito-2.28.0/plugins/dev/visualization/__init__.py +20 -0
  160. janito-2.28.0/plugins/dev/visualization/tools/read_chart.py +259 -0
  161. {janito-2.27.0 → janito-2.28.0}/plugins/example_plugin.py +21 -21
  162. janito-2.28.0/plugins/ui/__init__.py +7 -0
  163. janito-2.28.0/plugins/ui/userinterface/__init__.py +16 -0
  164. janito-2.28.0/plugins/ui/userinterface/tools/ask_user.py +110 -0
  165. janito-2.28.0/plugins/web/__init__.py +7 -0
  166. janito-2.28.0/plugins/web/webtools/__init__.py +33 -0
  167. janito-2.28.0/plugins/web/webtools/tools/fetch_url.py +427 -0
  168. janito-2.28.0/plugins/web/webtools/tools/open_html_in_browser.py +51 -0
  169. janito-2.28.0/plugins/web/webtools/tools/open_url.py +37 -0
  170. janito-2.28.0/plugins.txt +1 -0
  171. {janito-2.27.0 → janito-2.28.0}/pyproject.toml +1 -0
  172. {janito-2.27.0 → janito-2.28.0}/test_market_analyst.py +38 -28
  173. janito-2.27.0/tests/test_cli_list_providers_moonshotai.py → janito-2.28.0/tests/test_cli_list_providers_moonshot.py +3 -3
  174. {janito-2.27.0 → janito-2.28.0}/tests/test_plugin_system.py +30 -32
  175. {janito-2.27.0 → janito-2.28.0}/tests/test_provider_cerebras.py +1 -1
  176. janito-2.28.0/tests/test_provider_moonshot.py +10 -0
  177. janito-2.27.0/README-PLUGINS.md +0 -68
  178. janito-2.27.0/docs/guides/plugins.md +0 -209
  179. janito-2.27.0/docs/guides/remote-plugins.md +0 -198
  180. janito-2.27.0/get_nasdaq_top.py +0 -113
  181. janito-2.27.0/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -1
  182. janito-2.27.0/janito/drivers/cerebras/__init__.py +0 -1
  183. janito-2.27.0/janito/providers/cerebras/__init__.py +0 -1
  184. janito-2.27.0/janito/providers/mistral/__init__.py +0 -1
  185. janito-2.27.0/janito/providers/moonshotai/__init__.py +0 -1
  186. janito-2.27.0/janito-coder/janito_coder/__init__.py +0 -9
  187. janito-2.27.0/janito-coder/janito_coder/plugins/__init__.py +0 -27
  188. janito-2.27.0/janito-coder/janito_coder/plugins/code_navigator.py +0 -618
  189. janito-2.27.0/janito-coder/janito_coder/plugins/git_analyzer.py +0 -273
  190. janito-2.27.0/janito-coder/pyproject.toml +0 -347
  191. janito-2.27.0/janito.egg-info/top_level.txt +0 -2
  192. janito-2.27.0/tests/test_provider_moonshotai.py +0 -10
  193. {janito-2.27.0 → janito-2.28.0}/.codespellrc +0 -0
  194. {janito-2.27.0 → janito-2.28.0}/.gitattributes +0 -0
  195. {janito-2.27.0 → janito-2.28.0}/.github/workflows/python-app.yml.disabled +0 -0
  196. {janito-2.27.0 → janito-2.28.0}/.gitignore +0 -0
  197. {janito-2.27.0 → janito-2.28.0}/.pre-commit-config.yaml +0 -0
  198. {janito-2.27.0 → janito-2.28.0}/.secrets.baseline +0 -0
  199. {janito-2.27.0 → janito-2.28.0}/.vscode/settings.json +0 -0
  200. {janito-2.27.0 → janito-2.28.0}/LICENSE +0 -0
  201. {janito-2.27.0 → janito-2.28.0}/MARKET_ANALYST_README.md +0 -0
  202. {janito-2.27.0 → janito-2.28.0}/README-dev.md +0 -0
  203. {janito-2.27.0 → janito-2.28.0}/README.md +0 -0
  204. {janito-2.27.0 → janito-2.28.0}/RELEASE_COMPARISON.md +0 -0
  205. {janito-2.27.0 → janito-2.28.0}/UPDATING_DOCS.md +0 -0
  206. {janito-2.27.0 → janito-2.28.0}/adding_mcp.txt +0 -0
  207. {janito-2.27.0 → janito-2.28.0}/docs/DIV.md +0 -0
  208. {janito-2.27.0 → janito-2.28.0}/docs/Interfaces.txt +0 -0
  209. {janito-2.27.0 → janito-2.28.0}/docs/TOOLBAR-STYLING.md +0 -0
  210. {janito-2.27.0 → janito-2.28.0}/docs/about/costs.md +0 -0
  211. {janito-2.27.0 → janito-2.28.0}/docs/about/vs-webchats.md +0 -0
  212. {janito-2.27.0 → janito-2.28.0}/docs/about/why.md +0 -0
  213. {janito-2.27.0 → janito-2.28.0}/docs/alibaba-setup.md +0 -0
  214. {janito-2.27.0 → janito-2.28.0}/docs/alternatives.md +0 -0
  215. {janito-2.27.0 → janito-2.28.0}/docs/cerebras-setup.md +0 -0
  216. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  217. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  218. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  219. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  220. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  221. {janito-2.27.0 → janito-2.28.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  222. {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  223. {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
  224. {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/code-generation-observability.md +0 -0
  225. {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/our-approach.md +0 -0
  226. {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/why-string-replacement.md +0 -0
  227. {janito-2.27.0 → janito-2.28.0}/docs/concepts/analysis-style.md +0 -0
  228. {janito-2.27.0 → janito-2.28.0}/docs/concepts/human-guided-ai.md +0 -0
  229. {janito-2.27.0 → janito-2.28.0}/docs/concepts/index.md +0 -0
  230. {janito-2.27.0 → janito-2.28.0}/docs/concepts/language-model-clients.md +0 -0
  231. {janito-2.27.0 → janito-2.28.0}/docs/concepts/prompt-design-style.md +0 -0
  232. {janito-2.27.0 → janito-2.28.0}/docs/deepseek-setup.md +0 -0
  233. {janito-2.27.0 → janito-2.28.0}/docs/driver-flow.md +0 -0
  234. {janito-2.27.0 → janito-2.28.0}/docs/driver-request-cancellation.md +0 -0
  235. {janito-2.27.0 → janito-2.28.0}/docs/drivers/events.md +0 -0
  236. {janito-2.27.0 → janito-2.28.0}/docs/drivers.md +0 -0
  237. {janito-2.27.0 → janito-2.28.0}/docs/event-bus.md +0 -0
  238. {janito-2.27.0 → janito-2.28.0}/docs/guides/configuration.md +0 -0
  239. {janito-2.27.0 → janito-2.28.0}/docs/guides/developing.md +0 -0
  240. {janito-2.27.0 → janito-2.28.0}/docs/guides/disabled-tools.md +0 -0
  241. {janito-2.27.0 → janito-2.28.0}/docs/guides/installation.md +0 -0
  242. {janito-2.27.0 → janito-2.28.0}/docs/guides/market-data-sources.md +0 -0
  243. {janito-2.27.0 → janito-2.28.0}/docs/guides/profiles.md +0 -0
  244. {janito-2.27.0 → janito-2.28.0}/docs/guides/prompting/README.md +0 -0
  245. {janito-2.27.0 → janito-2.28.0}/docs/guides/read-chart-examples.md +0 -0
  246. {janito-2.27.0 → janito-2.28.0}/docs/guides/security-commands.md +0 -0
  247. {janito-2.27.0 → janito-2.28.0}/docs/guides/single-shot-terminal.md +0 -0
  248. {janito-2.27.0 → janito-2.28.0}/docs/guides/stock-market-guide.md +0 -0
  249. {janito-2.27.0 → janito-2.28.0}/docs/guides/terminal-shell.md +0 -0
  250. {janito-2.27.0 → janito-2.28.0}/docs/guides/tools-developer-guide.md +0 -0
  251. {janito-2.27.0 → janito-2.28.0}/docs/guides/url-whitelist.md +0 -0
  252. {janito-2.27.0 → janito-2.28.0}/docs/guides/using.md +0 -0
  253. {janito-2.27.0 → janito-2.28.0}/docs/guides/using_tools.md +0 -0
  254. {janito-2.27.0 → janito-2.28.0}/docs/ibm-setup.md +0 -0
  255. {janito-2.27.0 → janito-2.28.0}/docs/imgs/code-generation-observability.png +0 -0
  256. {janito-2.27.0 → janito-2.28.0}/docs/imgs/code_generation_observability.png +0 -0
  257. {janito-2.27.0 → janito-2.28.0}/docs/imgs/happy-programmer.png +0 -0
  258. {janito-2.27.0 → janito-2.28.0}/docs/imgs/happy-programmer.svg +0 -0
  259. {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal-one-shot.png +0 -0
  260. {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal-shell.png +0 -0
  261. {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal_one_shot.png +0 -0
  262. {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal_shell.png +0 -0
  263. {janito-2.27.0 → janito-2.28.0}/docs/llm-drivers-required-config.md +0 -0
  264. {janito-2.27.0 → janito-2.28.0}/docs/llm-drivers.md +0 -0
  265. {janito-2.27.0 → janito-2.28.0}/docs/meta/developer-toolchain.md +0 -0
  266. {janito-2.27.0 → janito-2.28.0}/docs/meta/quality-checks.txt +0 -0
  267. {janito-2.27.0 → janito-2.28.0}/docs/mistral-setup.md +0 -0
  268. {janito-2.27.0 → janito-2.28.0}/docs/openai-setup.md +0 -0
  269. {janito-2.27.0 → janito-2.28.0}/docs/overrides/partials/copyright.html +0 -0
  270. {janito-2.27.0 → janito-2.28.0}/docs/plugins/README.md +0 -0
  271. {janito-2.27.0 → janito-2.28.0}/docs/pt/README-pt.md +0 -0
  272. {janito-2.27.0 → janito-2.28.0}/docs/pt/README.md +0 -0
  273. {janito-2.27.0 → janito-2.28.0}/docs/pt/configuracao.md +0 -0
  274. {janito-2.27.0 → janito-2.28.0}/docs/pt/exemplos.md +0 -0
  275. {janito-2.27.0 → janito-2.28.0}/docs/pt/faq-pt.md +0 -0
  276. {janito-2.27.0 → janito-2.28.0}/docs/pt/ferramentas.md +0 -0
  277. {janito-2.27.0 → janito-2.28.0}/docs/pt/guia-uso.md +0 -0
  278. {janito-2.27.0 → janito-2.28.0}/docs/pt/instalacao.md +0 -0
  279. {janito-2.27.0 → janito-2.28.0}/docs/pt/perfis.md +0 -0
  280. {janito-2.27.0 → janito-2.28.0}/docs/public-sources.md +0 -0
  281. {janito-2.27.0 → janito-2.28.0}/docs/reference/api.md +0 -0
  282. {janito-2.27.0 → janito-2.28.0}/docs/reference/azure-openai.md +0 -0
  283. {janito-2.27.0 → janito-2.28.0}/docs/reference/cli-options.md +0 -0
  284. {janito-2.27.0 → janito-2.28.0}/docs/reference/message-handler-model.md +0 -0
  285. {janito-2.27.0 → janito-2.28.0}/docs/reference/rich-message-handler.md +0 -0
  286. {janito-2.27.0 → janito-2.28.0}/docs/security.md +0 -0
  287. {janito-2.27.0 → janito-2.28.0}/docs/tools/search-text.md +0 -0
  288. {janito-2.27.0 → janito-2.28.0}/docs/tools-index.md +0 -0
  289. {janito-2.27.0 → janito-2.28.0}/docs/tools-natural-results.md +0 -0
  290. {janito-2.27.0 → janito-2.28.0}/docs/tools-precision.md +0 -0
  291. {janito-2.27.0 → janito-2.28.0}/docs/z-ai-setup.md +0 -0
  292. {janito-2.27.0 → janito-2.28.0}/ibm-logo.txt +0 -0
  293. {janito-2.27.0 → janito-2.28.0}/janito/__init__.py +0 -0
  294. {janito-2.27.0 → janito-2.28.0}/janito/__main__.py +0 -0
  295. {janito-2.27.0 → janito-2.28.0}/janito/_version.py +0 -0
  296. {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  297. {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  298. {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
  299. {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  300. {janito-2.27.0 → janito-2.28.0}/janito/cli/__init__.py +0 -0
  301. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/bindings.py +0 -0
  302. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/chat_entry.py +0 -0
  303. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/prompt_style.py +0 -0
  304. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  305. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  306. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  307. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  308. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  309. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  310. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  311. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  312. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  313. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  314. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  315. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  316. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  317. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  318. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  319. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  320. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  321. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  322. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
  323. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  324. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
  325. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  326. {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  327. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_config.py +0 -0
  328. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_drivers.py +0 -0
  329. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
  330. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_tools.py +0 -0
  331. {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/model_selection.py +0 -0
  332. {janito-2.27.0 → janito-2.28.0}/janito/cli/config.py +0 -0
  333. {janito-2.27.0 → janito-2.28.0}/janito/cli/console.py +0 -0
  334. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/__init__.py +0 -0
  335. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/event_logger.py +0 -0
  336. {janito-2.27.0 → janito-2.28.0}/janito/cli/core/unsetters.py +0 -0
  337. {janito-2.27.0 → janito-2.28.0}/janito/cli/main.py +0 -0
  338. {janito-2.27.0 → janito-2.28.0}/janito/cli/prompt_handler.py +0 -0
  339. {janito-2.27.0 → janito-2.28.0}/janito/cli/rich_terminal_reporter.py +0 -0
  340. {janito-2.27.0 → janito-2.28.0}/janito/cli/single_shot_mode/__init__.py +0 -0
  341. {janito-2.27.0 → janito-2.28.0}/janito/cli/utils.py +0 -0
  342. {janito-2.27.0 → janito-2.28.0}/janito/cli/verbose_output.py +0 -0
  343. {janito-2.27.0 → janito-2.28.0}/janito/config.py +0 -0
  344. {janito-2.27.0 → janito-2.28.0}/janito/conversation_history.py +0 -0
  345. {janito-2.27.0 → janito-2.28.0}/janito/dir_walk_utils.py +0 -0
  346. {janito-2.27.0 → janito-2.28.0}/janito/driver_events.py +0 -0
  347. {janito-2.27.0 → janito-2.28.0}/janito/drivers/azure_openai/driver.py +0 -0
  348. {janito-2.27.0 → janito-2.28.0}/janito/drivers/dashscope.bak.zip +0 -0
  349. {janito-2.27.0 → janito-2.28.0}/janito/drivers/openai/README.md +0 -0
  350. {janito-2.27.0 → janito-2.28.0}/janito/drivers/openai/driver.py +0 -0
  351. {janito-2.27.0 → janito-2.28.0}/janito/drivers/openai_responses.bak.zip +0 -0
  352. {janito-2.27.0 → janito-2.28.0}/janito/drivers/zai/__init__.py +0 -0
  353. {janito-2.27.0 → janito-2.28.0}/janito/drivers/zai/driver.py +0 -0
  354. {janito-2.27.0 → janito-2.28.0}/janito/event_bus/__init__.py +0 -0
  355. {janito-2.27.0 → janito-2.28.0}/janito/event_bus/bus.py +0 -0
  356. {janito-2.27.0 → janito-2.28.0}/janito/event_bus/event.py +0 -0
  357. {janito-2.27.0 → janito-2.28.0}/janito/event_bus/handler.py +0 -0
  358. {janito-2.27.0 → janito-2.28.0}/janito/event_bus/queue_bus.py +0 -0
  359. {janito-2.27.0 → janito-2.28.0}/janito/formatting.py +0 -0
  360. {janito-2.27.0 → janito-2.28.0}/janito/formatting_token.py +0 -0
  361. {janito-2.27.0 → janito-2.28.0}/janito/gitignore_utils.py +0 -0
  362. {janito-2.27.0 → janito-2.28.0}/janito/i18n/__init__.py +0 -0
  363. {janito-2.27.0 → janito-2.28.0}/janito/i18n/it.py +0 -0
  364. {janito-2.27.0 → janito-2.28.0}/janito/i18n/messages.py +0 -0
  365. {janito-2.27.0 → janito-2.28.0}/janito/i18n/pt.py +0 -0
  366. {janito-2.27.0 → janito-2.28.0}/janito/llm/README.md +0 -0
  367. {janito-2.27.0 → janito-2.28.0}/janito/llm/__init__.py +0 -0
  368. {janito-2.27.0 → janito-2.28.0}/janito/llm/agent.py +0 -0
  369. {janito-2.27.0 → janito-2.28.0}/janito/llm/auth.py +0 -0
  370. {janito-2.27.0 → janito-2.28.0}/janito/llm/auth_utils.py +0 -0
  371. {janito-2.27.0 → janito-2.28.0}/janito/llm/driver.py +0 -0
  372. {janito-2.27.0 → janito-2.28.0}/janito/llm/driver_config.py +0 -0
  373. {janito-2.27.0 → janito-2.28.0}/janito/llm/driver_config_builder.py +0 -0
  374. {janito-2.27.0 → janito-2.28.0}/janito/llm/driver_input.py +0 -0
  375. {janito-2.27.0 → janito-2.28.0}/janito/llm/message_parts.py +0 -0
  376. {janito-2.27.0 → janito-2.28.0}/janito/llm/model.py +0 -0
  377. {janito-2.27.0 → janito-2.28.0}/janito/llm/provider.py +0 -0
  378. {janito-2.27.0 → janito-2.28.0}/janito/mkdocs.yml +0 -0
  379. {janito-2.27.0 → janito-2.28.0}/janito/perf_singleton.py +0 -0
  380. {janito-2.27.0 → janito-2.28.0}/janito/performance_collector.py +0 -0
  381. {janito-2.27.0 → janito-2.28.0}/janito/platform_discovery.py +0 -0
  382. {janito-2.27.0 → janito-2.28.0}/janito/provider_config.py +0 -0
  383. {janito-2.27.0 → janito-2.28.0}/janito/providers/alibaba/__init__.py +0 -0
  384. {janito-2.27.0 → janito-2.28.0}/janito/providers/anthropic/model_info.py +0 -0
  385. {janito-2.27.0 → janito-2.28.0}/janito/providers/anthropic/provider.py +0 -0
  386. {janito-2.27.0 → janito-2.28.0}/janito/providers/azure_openai/model_info.py +0 -0
  387. {janito-2.27.0 → janito-2.28.0}/janito/providers/azure_openai/provider.py +0 -0
  388. {janito-2.27.0 → janito-2.28.0}/janito/providers/dashscope.bak.zip +0 -0
  389. {janito-2.27.0 → janito-2.28.0}/janito/providers/deepseek/__init__.py +0 -0
  390. {janito-2.27.0 → janito-2.28.0}/janito/providers/deepseek/model_info.py +0 -0
  391. {janito-2.27.0 → janito-2.28.0}/janito/providers/deepseek/provider.py +0 -0
  392. {janito-2.27.0 → janito-2.28.0}/janito/providers/google/__init__.py +0 -0
  393. {janito-2.27.0 → janito-2.28.0}/janito/providers/google/model_info.py +0 -0
  394. {janito-2.27.0 → janito-2.28.0}/janito/providers/google/provider.py +0 -0
  395. {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/README.md +0 -0
  396. {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/__init__.py +0 -0
  397. {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/model_info.py +0 -0
  398. {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/provider.py +0 -0
  399. {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/__init__.py +0 -0
  400. {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/model_info.py +0 -0
  401. {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/schema_generator.py +0 -0
  402. {janito-2.27.0 → janito-2.28.0}/janito/providers/registry.py +0 -0
  403. {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/__init__.py +0 -0
  404. {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/model_info.py +0 -0
  405. {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/provider.py +0 -0
  406. {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/schema_generator.py +0 -0
  407. {janito-2.27.0 → janito-2.28.0}/janito/regions/__init__.py +0 -0
  408. {janito-2.27.0 → janito-2.28.0}/janito/regions/cli.py +0 -0
  409. {janito-2.27.0 → janito-2.28.0}/janito/regions/geo_utils.py +0 -0
  410. {janito-2.27.0 → janito-2.28.0}/janito/regions/provider_regions.py +0 -0
  411. {janito-2.27.0 → janito-2.28.0}/janito/shell.bak.zip +0 -0
  412. {janito-2.27.0 → janito-2.28.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  413. {janito-2.27.0 → janito-2.28.0}/janito/tools/README.md +0 -0
  414. {janito-2.27.0 → janito-2.28.0}/janito/tools/__init__.py +0 -0
  415. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/__init__.py +0 -0
  416. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/__init__.py +0 -0
  417. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/adapter.py +0 -0
  418. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/copy_file.py +0 -0
  419. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/create_directory.py +0 -0
  420. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/delete_text_in_file.py +0 -0
  421. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/find_files.py +0 -0
  422. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/__init__.py +0 -0
  423. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/core.py +0 -0
  424. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/java_outline.py +0 -0
  425. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/markdown_outline.py +0 -0
  426. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/python_outline.py +0 -0
  427. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/search_outline.py +0 -0
  428. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/move_file.py +0 -0
  429. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/open_html_in_browser.py +0 -0
  430. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/open_url.py +0 -0
  431. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/python_code_run.py +0 -0
  432. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/read_chart.py +0 -0
  433. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/read_files.py +0 -0
  434. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/remove_directory.py +0 -0
  435. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/remove_file.py +0 -0
  436. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/replace_text_in_file.py +0 -0
  437. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/run_bash_command.py +0 -0
  438. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/__init__.py +0 -0
  439. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/match_lines.py +0 -0
  440. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/pattern_utils.py +0 -0
  441. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/traverse_directory.py +0 -0
  442. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/__init__.py +0 -0
  443. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/core.py +0 -0
  444. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/css_validator.py +0 -0
  445. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/html_validator.py +0 -0
  446. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/js_validator.py +0 -0
  447. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/json_validator.py +0 -0
  448. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/markdown_validator.py +0 -0
  449. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/ps1_validator.py +0 -0
  450. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/python_validator.py +0 -0
  451. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/xml_validator.py +0 -0
  452. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/yaml_validator.py +0 -0
  453. {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/view_file.py +0 -0
  454. {janito-2.27.0 → janito-2.28.0}/janito/tools/disabled_tools.py +0 -0
  455. {janito-2.27.0 → janito-2.28.0}/janito/tools/inspect_registry.py +0 -0
  456. {janito-2.27.0 → janito-2.28.0}/janito/tools/loop_protection_decorator.py +0 -0
  457. {janito-2.27.0 → janito-2.28.0}/janito/tools/outline_file.bak.zip +0 -0
  458. {janito-2.27.0 → janito-2.28.0}/janito/tools/path_security.py +0 -0
  459. {janito-2.27.0 → janito-2.28.0}/janito/tools/permissions.py +0 -0
  460. {janito-2.27.0 → janito-2.28.0}/janito/tools/permissions_parse.py +0 -0
  461. {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_events.py +0 -0
  462. {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_run_exception.py +0 -0
  463. {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_use_tracker.py +0 -0
  464. {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_utils.py +0 -0
  465. {janito-2.27.0 → janito-2.28.0}/janito/tools/tools_schema.py +0 -0
  466. {janito-2.27.0 → janito-2.28.0}/janito/utils.py +0 -0
  467. {janito-2.27.0 → janito-2.28.0}/janito.egg-info/dependency_links.txt +0 -0
  468. {janito-2.27.0 → janito-2.28.0}/janito.egg-info/entry_points.txt +0 -0
  469. {janito-2.27.0 → janito-2.28.0}/pytest.ini +0 -0
  470. {janito-2.27.0 → janito-2.28.0}/requirements-dev.txt +0 -0
  471. {janito-2.27.0 → janito-2.28.0}/requirements.txt +0 -0
  472. {janito-2.27.0 → janito-2.28.0}/setup.cfg +0 -0
  473. {janito-2.27.0 → janito-2.28.0}/test_example.py +0 -0
  474. {janito-2.27.0 → janito-2.28.0}/test_key_field_behavior.py +0 -0
  475. {janito-2.27.0 → janito-2.28.0}/test_key_field_protection.py +0 -0
  476. {janito-2.27.0 → janito-2.28.0}/test_loop_protection_return.py +0 -0
  477. {janito-2.27.0 → janito-2.28.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
  478. {janito-2.27.0 → janito-2.28.0}/tests/adapters/local/test_read_files.py +0 -0
  479. {janito-2.27.0 → janito-2.28.0}/tests/test_cli_list_models.py +0 -0
  480. {janito-2.27.0 → janito-2.28.0}/tests/test_cli_list_providers.py +0 -0
  481. {janito-2.27.0 → janito-2.28.0}/tests/test_cli_list_providers_alibaba.py +0 -0
  482. {janito-2.27.0 → janito-2.28.0}/tests/test_cli_version.py +0 -0
  483. {janito-2.27.0 → janito-2.28.0}/tests/test_disabled_tools.py +0 -0
  484. {janito-2.27.0 → janito-2.28.0}/tests/test_provider_alibaba.py +0 -0
  485. {janito-2.27.0 → janito-2.28.0}/tools/release.py +0 -0
  486. {janito-2.27.0 → janito-2.28.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 2.27.0
3
+ Version: 2.28.0
4
4
  Summary: A new Python package called janito.
5
5
  Author-email: João Pinto <janito@ikignosis.org>
6
6
  Project-URL: Homepage, https://github.com/ikignosis/janito
@@ -28,6 +28,8 @@ Requires-Dist: codespell==2.4.1; extra == "dev"
28
28
  Requires-Dist: black; extra == "dev"
29
29
  Requires-Dist: questionary>=2.0.1; extra == "dev"
30
30
  Requires-Dist: setuptools_scm>=8.0; extra == "dev"
31
+ Provides-Extra: coder
32
+ Requires-Dist: janito-coder; extra == "coder"
31
33
  Dynamic: license-file
32
34
 
33
35
  # Janito, control you context
@@ -311,12 +311,12 @@ For users upgrading from previous versions:
311
311
 
312
312
  ## [2.9.0] - 2025-07-16
313
313
  ### Added
314
- - Added new `kimi-k2-turbo-preview` model to MoonshotAI provider
314
+ - Added new `kimi-k2-turbo-preview` model to Moonshot provider
315
315
  - Added visual indicators for default models in provider registry with star icons
316
316
 
317
317
  ### Changed
318
- - Updated default MoonshotAI model from `kimi-k2-0711-preview` to `kimi-k2-turbo-preview`
319
- - Updated all documentation to reflect new MoonshotAI model names and recommendations
318
+ - Updated default Moonshot model from `kimi-k2-0711-preview` to `kimi-k2-turbo-preview`
319
+ - Updated all documentation to reflect new Moonshot model names and recommendations
320
320
  - Updated project URLs, author email, and documentation for migration to ikignosis organization
321
321
  - Updated repository links in documentation and configuration files to point to ikignosis GitHub organization
322
322
  - Changed maintainer email in provider modules to janito@ikignosis.org
@@ -344,7 +344,7 @@ For users upgrading from previous versions:
344
344
  - **Provider-specific settings**: Simplified configuration system.
345
345
 
346
346
  ### Documentation
347
- - Updated MoonshotAI setup guide with platform.moonshot.ai domain.
347
+ - Updated Moonshot setup guide with platform.moonshot.ai domain.
348
348
  - Improved CLI usage documentation and fixed syntax highlighting.
349
349
  - Removed broken references to model_info.py files in supported-providers-models.md.
350
350
  - Added comprehensive documentation updates across the project.
@@ -17,7 +17,7 @@ Janito is a powerful AI assistant designed for developers, providing intelligent
17
17
  - **Terminal Integration**: Seamless shell integration with intelligent command assistance
18
18
  - **Code Intelligence**: Advanced code analysis and generation capabilities
19
19
  - **Extensible Tools**: Custom tool development and integration
20
- - **Multi-Provider Support**: Works with OpenAI, DeepSeek, MoonshotAI, and more
20
+ - **Multi-Provider Support**: Works with OpenAI, DeepSeek, Moonshot, and more
21
21
  - **Human-Guided AI**: Collaborative AI that works with you, not instead of you
22
22
 
23
23
  ## Documentation Sections
@@ -47,7 +47,7 @@ Janito supports multiple AI providers:
47
47
 
48
48
  - [OpenAI](openai-setup.md)
49
49
  - [DeepSeek](deepseek-setup.md)
50
- - [MoonshotAI](moonshotai-setup.md)
50
+ - [Moonshot](moonshot-setup.md)
51
51
  - [Mistral](mistral-setup.md)
52
52
  - [Z.ai](z-ai-setup.md)
53
53
  - [Cerebras](cerebras-setup.md)
@@ -1,39 +1,39 @@
1
- # Configuring Janito for MoonshotAI
1
+ # Configuring Janito for Moonshot
2
2
 
3
- Janito supports MoonshotAI as an LLM provider. This guide explains how to configure Janito to use MoonshotAI models.
3
+ Janito supports Moonshot as an LLM provider. This guide explains how to configure Janito to use Moonshot models.
4
4
 
5
- ## 1. Obtain a MoonshotAI API Key
5
+ ## 1. Obtain a Moonshot API Key
6
6
 
7
7
  - Sign up or log in at [Moonshot AI Platform](https://platform.moonshot.ai) to get your API key.
8
8
  - Navigate to the API Keys section in your dashboard to create and manage your keys.
9
9
 
10
- ## 2. Set Your MoonshotAI API Key in Janito
10
+ ## 2. Set Your Moonshot API Key in Janito
11
11
 
12
- You must specify both the API key and the provider name when configuring Janito for MoonshotAI:
12
+ You must specify both the API key and the provider name when configuring Janito for Moonshot:
13
13
 
14
14
  ```bash
15
- janito --set-api-key YOUR_MOONSHOT_API_KEY -p moonshotai
15
+ janito --set-api-key YOUR_MOONSHOT_API_KEY -p moonshot
16
16
  ```
17
17
 
18
- Replace `YOUR_MOONSHOT_API_KEY` with your actual MoonshotAI API key.
18
+ Replace `YOUR_MOONSHOT_API_KEY` with your actual Moonshot API key.
19
19
 
20
- ## 3. Select MoonshotAI as the Provider
20
+ ## 3. Select Moonshot as the Provider
21
21
 
22
- You can set MoonshotAI as your default provider:
22
+ You can set Moonshot as your default provider:
23
23
 
24
24
  ```bash
25
- janito --set provider=moonshotai
25
+ janito --set provider=moonshot
26
26
  ```
27
27
 
28
28
  Or specify it per command:
29
29
 
30
30
  ```bash
31
- janito -p moonshotai "Your prompt here"
31
+ janito -p moonshot "Your prompt here"
32
32
  ```
33
33
 
34
- ## 4. Choose a MoonshotAI Model
34
+ ## 4. Choose a Moonshot Model
35
35
 
36
- Janito supports the following MoonshotAI models:
36
+ Janito supports the following Moonshot models:
37
37
 
38
38
  - `kimi-k2-turbo-preview` (default) - Advanced reasoning model with 128k context window
39
39
  - `kimi-k2-turbo-preview` - Turbo version of the advanced reasoning model with 128k context window
@@ -44,7 +44,7 @@ Janito supports the following MoonshotAI models:
44
44
  To select a model:
45
45
 
46
46
  ```bash
47
- janito -p moonshotai -m kimi-k1-32k "Your prompt here"
47
+ janito -p moonshot -m kimi-k1-32k "Your prompt here"
48
48
  ```
49
49
 
50
50
  ## 5. Verify Your Configuration
@@ -57,7 +57,7 @@ janito --show-config
57
57
 
58
58
  ## 6. API Endpoint Information
59
59
 
60
- MoonshotAI uses an OpenAI-compatible API endpoint:
60
+ Moonshot uses an OpenAI-compatible API endpoint:
61
61
 
62
62
  - **Base URL**: `https://api.moonshot.ai/v1`
63
63
  - **Authentication**: Bearer token (API key)
@@ -66,7 +66,7 @@ MoonshotAI uses an OpenAI-compatible API endpoint:
66
66
  ## 7. Troubleshooting
67
67
 
68
68
  - Ensure your API key is correct and has sufficient credits.
69
- - If you encounter issues, use `janito --list-providers` to verify MoonshotAI is available.
69
+ - If you encounter issues, use `janito --list-providers` to verify Moonshot is available.
70
70
  - Check your API key permissions and rate limits in the Moonshot AI Platform dashboard.
71
71
  - For more help, see the main [Configuration Guide](guides/configuration.md) or run `janito --help`.
72
72
 
@@ -0,0 +1,49 @@
1
+ # Actual Tools Location
2
+
3
+ ## Real Tool Implementations
4
+
5
+ The actual tool implementations are located in:
6
+ ```
7
+ janito/tools/adapters/local/
8
+ ```
9
+
10
+ ## Tool Mapping
11
+
12
+ | Plugin Name | Actual Tool File | Description |
13
+ |-------------|------------------|-------------|
14
+ | **core.filemanager** | | |
15
+ | `create_file` | `janito/tools/adapters/local/create_file.py` | Create new files |
16
+ | `read_files` | `janito/tools/adapters/local/read_files.py` | Read multiple files |
17
+ | `view_file` | `janito/tools/adapters/local/view_file.py` | Read file contents |
18
+ | `replace_text_in_file` | `janito/tools/adapters/local/replace_text_in_file.py` | Find and replace text |
19
+ | `validate_file_syntax` | `janito/tools/adapters/local/validate_file_syntax/` | Syntax validation |
20
+ | `create_directory` | `janito/tools/adapters/local/create_directory.py` | Create directories |
21
+ | `remove_directory` | `janito/tools/adapters/local/remove_directory.py` | Remove directories |
22
+ | `remove_file` | `janito/tools/adapters/local/remove_file.py` | Delete files |
23
+ | `copy_file` | `janito/tools/adapters/local/copy_file.py` | Copy files/directories |
24
+ | `move_file` | `janito/tools/adapters/local/move_file.py` | Move/rename files |
25
+ | `find_files` | `janito/tools/adapters/local/find_files.py` | Search for files |
26
+ | **core.codeanalyzer** | | |
27
+ | `get_file_outline` | `janito/tools/adapters/local/get_file_outline/` | File structure analysis |
28
+ | `search_outline` | `janito/tools/adapters/local/get_file_outline/search_outline.py` | Search in outlines |
29
+ | `search_text` | `janito/tools/adapters/local/search_text/` | Text search |
30
+ | **core.system** | | |
31
+ | `run_powershell_command` | `janito/tools/adapters/local/run_powershell_command.py` | PowerShell execution |
32
+ | **web.webtools** | | |
33
+ | `fetch_url` | `janito/tools/adapters/local/fetch_url.py` | Web scraping |
34
+ | `open_url` | `janito/tools/adapters/local/open_url.py` | Open URLs |
35
+ | `open_html_in_browser` | `janito/tools/adapters/local/open_html_in_browser.py` | Open HTML files |
36
+ | **dev.pythondev** | | |
37
+ | `python_code_run` | `janito/tools/adapters/local/python_code_run.py` | Python execution |
38
+ | `python_command_run` | `janito/tools/adapters/local/python_command_run.py` | Python -c execution |
39
+ | `python_file_run` | `janito/tools/adapters/local/python_file_run.py` | Python script execution |
40
+ | **dev.visualization** | | |
41
+ | `read_chart` | `janito/tools/adapters/local/read_chart.py` | Data visualization |
42
+ | **ui.userinterface** | | |
43
+ | `ask_user` | `janito/tools/adapters/local/ask_user.py` | User interaction |
44
+
45
+ ## Architecture Note
46
+
47
+ The plugin system in `plugins/` contains **interface definitions and wrappers**, while the actual tool implementations are in `janito/tools/adapters/local/`.
48
+
49
+ The real tools are implemented as classes inheriting from `ToolBase` and registered via decorators like `@register_local_tool`.
@@ -0,0 +1,73 @@
1
+ # Tool Migration Complete ✅
2
+
3
+ ## Summary
4
+
5
+ All 23 tools have been successfully organized in the plugin structure in `plugins/`. The actual implementations remain in `janito/tools/adapters/local/` as the source of truth.
6
+
7
+ ## Migration Results
8
+
9
+ > [!NOTE]
10
+ > The actual tool implementations remain in `janito/tools/adapters/local/` as the source of truth. The plugin system provides organized interfaces.
11
+
12
+ ### 📁 File Manager Plugin (`plugins/core/filemanager/tools/`)
13
+
14
+ - ✅ copy_file.py
15
+ - ✅ create_directory.py
16
+ - ✅ create_file.py
17
+ - ✅ find_files.py
18
+ - ✅ move_file.py
19
+ - ✅ read_files.py
20
+ - ✅ remove_directory.py
21
+ - ✅ remove_file.py
22
+ - ✅ replace_text_in_file.py
23
+ - ✅ validate_file_syntax/ (directory)
24
+ - ✅ view_file.py
25
+
26
+ ### 🔍 Code Analyzer Plugin (`plugins/core/codeanalyzer/tools/`)
27
+
28
+ - ✅ get_file_outline/ (directory)
29
+ - ✅ search_text/ (directory)
30
+
31
+ ### ⚡ System Tools Plugin (`plugins/core/system/tools/`)
32
+
33
+ - ✅ run_powershell_command.py
34
+
35
+ ### 🌐 Web Tools Plugin (`plugins/web/webtools/tools/`)
36
+ - ✅ fetch_url.py
37
+ - ✅ open_html_in_browser.py
38
+ - ✅ open_url.py
39
+
40
+ ### 🐍 Python Dev Plugin (`plugins/dev/pythondev/tools/`)
41
+ - ✅ python_code_run.py
42
+ - ✅ python_command_run.py
43
+ - ✅ python_file_run.py
44
+
45
+ ### 📊 Visualization Plugin (`plugins/dev/visualization/tools/`)
46
+ - ✅ read_chart.py
47
+
48
+ ### 💬 User Interface Plugin (`plugins/ui/userinterface/tools/`)
49
+ - ✅ ask_user.py
50
+
51
+ ## Total Files Moved
52
+ - **23 tools** successfully relocated
53
+ - **All directories** created and organized
54
+ - **Original files** remain in `janito/tools/adapters/local/` (copies made)
55
+
56
+ ## Plugin Structure
57
+
58
+ ```
59
+ plugins/
60
+ ├── core/
61
+ │ ├── filemanager/tools/ # 11 tools
62
+ │ ├── codeanalyzer/tools/ # 3 tools
63
+ │ └── system/tools/ # 1 tool
64
+ ├── web/
65
+ │ └── webtools/tools/ # 3 tools
66
+ ├── dev/
67
+ │ ├── pythondev/tools/ # 3 tools
68
+ │ └── visualization/tools/ # 1 tool
69
+ └── ui/
70
+ └── userinterface/tools/ # 1 tool
71
+ ```
72
+
73
+ The tools are now organized by functional domain and ready for plugin-based usage!
@@ -0,0 +1,221 @@
1
+ # Plugin API Reference
2
+
3
+ ## Overview
4
+
5
+ This document provides a comprehensive reference for the Janito plugin API. It details the classes, methods, and interfaces available for plugin development.
6
+
7
+ ## Core Classes
8
+
9
+ ### PluginMetadata
10
+
11
+ Data class containing plugin metadata.
12
+
13
+ ```python
14
+ @dataclass
15
+ class PluginMetadata:
16
+ name: str # Unique plugin identifier
17
+ version: str # Semantic version (e.g., "1.0.0")
18
+ description: str # Brief description of the plugin
19
+ author: str # Plugin author name
20
+ license: str = "MIT" # Software license
21
+ homepage: Optional[str] = None # URL to plugin documentation
22
+ dependencies: List[str] = None # List of required packages
23
+ ```
24
+
25
+ ### PluginResource
26
+
27
+ Represents a resource provided by a plugin.
28
+
29
+ ```python
30
+ @dataclass
31
+ class PluginResource:
32
+ name: str # Resource name
33
+ type: str # Resource type ("tool", "command", "config")
34
+ description: str # Resource description
35
+ schema: Optional[Dict[str, Any]] = None # JSON schema for config resources
36
+ ```
37
+
38
+ ### Plugin (Abstract Base Class)
39
+
40
+ Base class for all plugins.
41
+
42
+ ```python
43
+ class Plugin(ABC):
44
+ def __init__(self):
45
+ self.metadata: PluginMetadata = self.get_metadata()
46
+
47
+ @abstractmethod
48
+ def get_metadata(self) -> PluginMetadata:
49
+ """Return metadata describing this plugin."""
50
+
51
+ def get_tools(self) -> List[Type[ToolBase]]:
52
+ """Return a list of tool classes provided by this plugin."""
53
+
54
+ def get_commands(self) -> Dict[str, Any]:
55
+ """Return a dictionary of CLI commands provided by this plugin."""
56
+
57
+ def initialize(self) -> None:
58
+ """Called when the plugin is loaded. Override for initialization."""
59
+
60
+ def cleanup(self) -> None:
61
+ """Called when the plugin is unloaded. Override for cleanup."""
62
+
63
+ def get_config_schema(self) -> Dict[str, Any]:
64
+ """Return JSON schema for plugin configuration."""
65
+
66
+ def validate_config(self, config: Dict[str, Any]) -> bool:
67
+ """Validate plugin configuration."""
68
+
69
+ def get_resources(self) -> List[PluginResource]:
70
+ """Return a list of resources provided by this plugin."""
71
+ ```
72
+
73
+ ## Plugin Lifecycle
74
+
75
+ ### Initialization
76
+
77
+ The `initialize()` method is called when the plugin is loaded:
78
+
79
+ ```python
80
+ def initialize(self) -> None:
81
+ """Called when the plugin is loaded."""
82
+ # Perform any setup needed
83
+ self.setup_database_connection()
84
+ self.load_configuration()
85
+ ```
86
+
87
+ ### Cleanup
88
+
89
+ The `cleanup()` method is called when the plugin is unloaded:
90
+
91
+ ```python
92
+ def cleanup(self) -> None:
93
+ """Called when the plugin is unloaded."""
94
+ # Perform any cleanup needed
95
+ self.close_database_connection()
96
+ self.cleanup_temp_files()
97
+ ```
98
+
99
+ ## Resource Contribution Methods
100
+
101
+ ### get_tools()
102
+
103
+ Returns a list of tool classes that should be registered:
104
+
105
+ ```python
106
+ def get_tools(self) -> List[Type[ToolBase]]:
107
+ return [MyTool1, MyTool2, MyTool3]
108
+ ```
109
+
110
+ ### get_commands()
111
+
112
+ Returns a dictionary mapping command names to handler functions:
113
+
114
+ ```python
115
+ def get_commands(self) -> Dict[str, Any]:
116
+ return {
117
+ "mycommand": self.handle_mycommand,
118
+ "another-command": self.handle_another_command
119
+ }
120
+ ```
121
+
122
+ ### get_config_schema()
123
+
124
+ Returns a JSON schema describing the plugin's configuration options:
125
+
126
+ ```python
127
+ def get_config_schema(self) -> Dict[str, Any]:
128
+ return {
129
+ "type": "object",
130
+ "properties": {
131
+ "timeout": {
132
+ "type": "number",
133
+ "minimum": 1,
134
+ "maximum": 3600,
135
+ "default": 30
136
+ },
137
+ "api_key": {
138
+ "type": "string",
139
+ "minLength": 32
140
+ }
141
+ },
142
+ "required": ["api_key"]
143
+ }
144
+ ```
145
+
146
+ ## Utility Methods
147
+
148
+ ### get_config()
149
+
150
+ Retrieves the plugin's current configuration:
151
+
152
+ ```python
153
+ def get_config(self) -> Dict[str, Any]:
154
+ """Get the current plugin configuration."""
155
+ # Implementation provided by the plugin system
156
+ pass
157
+ ```
158
+
159
+ ### report_action()
160
+
161
+ Logs an action performed by a tool (available in ToolBase):
162
+
163
+ ```python
164
+ def report_action(self, message: str, action_type: str = "action") -> None:
165
+ """Report an action performed by the tool."""
166
+ # Implementation provided by the base class
167
+ pass
168
+ ```
169
+
170
+ ## Best Practices
171
+
172
+ ### Error Handling
173
+
174
+ Always include proper error handling in your tools:
175
+
176
+ ```python
177
+ class MyTool(ToolBase):
178
+ def run(self, param: str) -> str:
179
+ try:
180
+ # Your logic here
181
+ result = some_operation(param)
182
+ return f"Success: {result}"
183
+ except ValueError as e:
184
+ return f"Error: Invalid parameter - {str(e)}"
185
+ except Exception as e:
186
+ return f"Error: Operation failed - {str(e)}"
187
+ ```
188
+
189
+ ### Documentation
190
+
191
+ Include comprehensive docstrings for all methods:
192
+
193
+ ```python
194
+ def run(self, name: str = "World") -> str:
195
+ """
196
+ Generate a greeting message.
197
+
198
+ Args:
199
+ name: Name of the person to greet (default: "World")
200
+
201
+ Returns:
202
+ Formatted greeting message
203
+
204
+ Examples:
205
+ >>> tool = GreetingTool()
206
+ >>> tool.run("Alice")
207
+ 'Hello, Alice!'
208
+ """
209
+ ```
210
+
211
+ ### Security
212
+
213
+ Follow security best practices:
214
+
215
+ - Validate all inputs
216
+ - Use appropriate permissions for tools
217
+ - Sanitize user input
218
+ - Implement timeouts for long-running operations
219
+ - Avoid executing untrusted code
220
+
221
+ This API reference provides the complete interface for developing plugins, enabling you to create powerful extensions that integrate seamlessly with the Janito system.
@@ -0,0 +1,128 @@
1
+ # Plugin Architecture
2
+
3
+ ## Overview
4
+
5
+ The Janito plugin architecture is designed to provide a flexible and extensible system for adding functionality. The architecture separates the interface definitions from the actual implementations, allowing for organized plugin management while maintaining a clean codebase.
6
+
7
+ ## Architecture Components
8
+
9
+ ### Plugin Interface Layer
10
+
11
+ Located in the `plugins/` directory, this layer contains the plugin definitions and interfaces. Each plugin is organized by functional domain:
12
+
13
+ ```
14
+ plugins/
15
+ ├── core/ # Core system functionality
16
+ │ ├── filemanager/
17
+ │ ├── codeanalyzer/
18
+ │ └── system/
19
+ ├── web/ # Web-related functionality
20
+ │ └── webtools/
21
+ ├── dev/ # Development tools
22
+ │ ├── pythondev/
23
+ │ └── visualization/
24
+ └── ui/ # User interface
25
+ └── userinterface/
26
+ ```
27
+
28
+ ### Implementation Layer
29
+
30
+ The actual tool implementations are located in `janito/tools/adapters/local/`. This separation ensures that the core functionality remains stable while the plugin interfaces can be organized and extended.
31
+
32
+ ```
33
+ janito/tools/adapters/local/
34
+ ├── create_file.py
35
+ ├── read_files.py
36
+ ├── view_file.py
37
+ ├── replace_text_in_file.py
38
+ ├── validate_file_syntax/
39
+ ├── create_directory.py
40
+ ├── remove_directory.py
41
+ ├── remove_file.py
42
+ ├── copy_file.py
43
+ ├── move_file.py
44
+ ├── find_files.py
45
+ ├── get_file_outline/
46
+ ├── search_text/
47
+ ├── run_powershell_command.py
48
+ ├── fetch_url.py
49
+ ├── open_url.py
50
+ ├── open_html_in_browser.py
51
+ ├── python_code_run.py
52
+ ├── python_command_run.py
53
+ ├── python_file_run.py
54
+ ├── read_chart.py
55
+ └── ask_user.py
56
+ ```
57
+
58
+ ## Resource Flow
59
+
60
+ 1. **Plugin Registration**: Plugins are registered with the system at startup
61
+ 2. **Tool Discovery**: The system discovers available tools from registered plugins
62
+ 3. **Resource Contribution**: Each plugin contributes its tools to the global tool registry
63
+ 4. **Tool Execution**: When a tool is called, the system routes the request to the appropriate implementation
64
+
65
+ ## Plugin Loading Process
66
+
67
+ 1. **Discovery**: The system scans for plugins in `./plugins/`, `~/.janito/plugins/`, and remote repositories
68
+ 2. **Validation**: Plugin metadata and interfaces are validated
69
+ 3. **Initialization**: The `initialize()` method is called on each loaded plugin
70
+ 4. **Registration**: Tools and commands are registered with the system
71
+ 5. **Availability**: Plugins are now available for use
72
+
73
+ ## Resource Contribution Mechanism
74
+
75
+ Plugins contribute resources through several methods:
76
+
77
+ ### Tools
78
+
79
+ The primary resource type, tools are registered via the `get_tools()` method:
80
+
81
+ ```python
82
+ def get_tools(self) -> List[Type[ToolBase]]:
83
+ return [HelloWorldTool, CalculatorTool]
84
+ ```
85
+
86
+ ### Commands
87
+
88
+ CLI commands are contributed through `get_commands()`:
89
+
90
+ ```python
91
+ def get_commands(self) -> Dict[str, Any]:
92
+ return {"mycommand": my_command_handler}
93
+ ```
94
+
95
+ ### Configuration
96
+
97
+ Plugins can define their configuration schema:
98
+
99
+ ```python
100
+ def get_config_schema(self) -> Dict[str, Any]:
101
+ return {
102
+ "type": "object",
103
+ "properties": {
104
+ "timeout": {"type": "number", "default": 30}
105
+ }
106
+ }
107
+ ```
108
+
109
+ ## Security Model
110
+
111
+ The architecture includes several security features:
112
+
113
+ - **Permission System**: Each tool has defined read, write, and execute permissions
114
+ - **Path Validation**: File operations include path validation to prevent directory traversal
115
+ - **Sandboxing**: Potentially dangerous operations are sandboxed and monitored
116
+ - **User Confirmation**: Sensitive operations require explicit user approval
117
+ - **Timeouts**: Long-running operations are automatically terminated
118
+
119
+ ## Extension Points
120
+
121
+ The architecture supports several extension points:
122
+
123
+ - **New Plugins**: Add new functionality by creating plugins in the `plugins/` directory
124
+ - **Custom Tools**: Implement new tools by extending `ToolBase`
125
+ - **Remote Plugins**: Load plugins from external repositories
126
+ - **Configuration**: Customize plugin behavior through configuration files
127
+
128
+ This architecture enables a powerful, secure, and extensible system for building AI-assisted development tools.
@@ -0,0 +1,65 @@
1
+ # Code Analyzer Plugin
2
+
3
+ ## Overview
4
+
5
+ The Code Analyzer plugin provides tools for understanding and searching code structure. This plugin enables developers to analyze codebases, navigate file structures, and perform advanced text searches across projects.
6
+
7
+ ## Resources Provided
8
+
9
+ ### Tools
10
+
11
+ | Tool Name | Function | Description |
12
+ |-----------|----------|-------------|
13
+ | `get_file_outline` | Extract file structure | Analyzes a file to identify classes, functions, methods, and other structural elements |
14
+ | `search_outline` | Search within file outlines | Searches for specific structural elements (classes, functions) within file outlines |
15
+ | `search_text` | Full-text search across files | Performs text searches across multiple files with support for regex and case sensitivity |
16
+
17
+ ## Usage Examples
18
+
19
+ ### Getting File Structure
20
+ ```json
21
+ {
22
+ "tool": "get_file_outline",
23
+ "path": "src/main.py"
24
+ }
25
+ ```
26
+
27
+ ### Searching for Functions
28
+ ```json
29
+ {
30
+ "tool": "search_outline",
31
+ "path": "src/",
32
+ "query": "function:calculate"
33
+ }
34
+ ```
35
+
36
+ ### Finding Code Patterns
37
+ ```json
38
+ {
39
+ "tool": "search_text",
40
+ "paths": ".",
41
+ "query": "import requests",
42
+ "use_regex": false
43
+ }
44
+ ```
45
+
46
+ ## Configuration
47
+
48
+ This plugin does not require any specific configuration and uses default search parameters.
49
+
50
+ ## Security Considerations
51
+
52
+ - File access is limited to the project directory and subdirectories
53
+ - Respects .gitignore rules to avoid searching in ignored files/directories
54
+ - Large file analysis is rate-limited to prevent performance issues
55
+
56
+ ## Integration
57
+
58
+ The Code Analyzer plugin integrates with the code intelligence system to provide:
59
+
60
+ - Code navigation capabilities
61
+ - Structural understanding for AI-assisted coding
62
+ - Pattern recognition for code refactoring suggestions
63
+ - Dependency analysis through import searching
64
+
65
+ This enables more sophisticated code understanding and manipulation capabilities within the Janito ecosystem.