janito 2.32.0__tar.gz → 3.0.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 (502) hide show
  1. {janito-2.32.0 → janito-3.0.0}/PKG-INFO +1 -2
  2. janito-3.0.0/docs/CHANGELOG.md +133 -0
  3. janito-3.0.0/docs/CHANGELOG_3.0.0.md +141 -0
  4. janito-3.0.0/init_janito_tools.py +51 -0
  5. {janito-2.32.0 → janito-3.0.0}/janito/agent/setup_agent.py +26 -0
  6. {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +2 -0
  7. {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +2 -0
  8. {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +2 -0
  9. {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +2 -0
  10. janito-3.0.0/janito/cli/cli_commands/check_tools.py +212 -0
  11. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_plugins.py +52 -43
  12. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/getters.py +3 -0
  13. {janito-2.32.0 → janito-3.0.0}/janito/cli/main_cli.py +9 -12
  14. {janito-2.32.0 → janito-3.0.0}/janito/drivers/openai/driver.py +1 -0
  15. {janito-2.32.0 → janito-3.0.0}/janito/drivers/zai/driver.py +1 -0
  16. janito-3.0.0/janito/llm/auth_utils.py +30 -0
  17. janito-3.0.0/janito/plugin_system/__init__.py +10 -0
  18. {janito-2.32.0/janito/plugins → janito-3.0.0/janito/plugin_system}/base.py +5 -2
  19. janito-2.32.0/janito/plugins/core_loader_fixed.py → janito-3.0.0/janito/plugin_system/core_loader.py +45 -26
  20. janito-3.0.0/janito/plugin_system/core_loader_fixed.py +149 -0
  21. {janito-2.32.0 → janito-3.0.0}/janito/plugins/auto_loader_fixed.py +12 -11
  22. {janito-2.32.0 → janito-3.0.0}/janito/plugins/builtin.py +15 -1
  23. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/codeanalyzer/__init__.py +9 -0
  24. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/filemanager/__init__.py +33 -0
  25. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/__init__.py +1 -1
  26. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/plugin.py +2 -2
  27. janito-3.0.0/janito/plugins/core/imagedisplay/tools/__init__.py +1 -0
  28. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/tools/show_image.py +12 -3
  29. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/tools/show_image_grid.py +12 -3
  30. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/system/__init__.py +3 -0
  31. {janito-2.32.0 → janito-3.0.0}/janito/plugins/core_adapter.py +11 -9
  32. {janito-2.32.0 → janito-3.0.0/janito}/plugins/dev/pythondev/__init__.py +9 -0
  33. {janito-2.32.0 → janito-3.0.0/janito}/plugins/dev/visualization/__init__.py +3 -0
  34. {janito-2.32.0 → janito-3.0.0}/janito/plugins/discovery.py +5 -5
  35. {janito-2.32.0 → janito-3.0.0/janito}/plugins/example_plugin.py +1 -1
  36. {janito-2.32.0 → janito-3.0.0}/janito/plugins/manager.py +1 -1
  37. janito-3.0.0/janito/plugins/tools/__init__.py +10 -0
  38. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/ask_user.py +3 -3
  39. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/copy_file.py +3 -3
  40. janito-3.0.0/janito/plugins/tools/core_tools_plugin.py +88 -0
  41. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/create_directory.py +3 -3
  42. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/create_file.py +4 -4
  43. janito-3.0.0/janito/plugins/tools/decorators.py +19 -0
  44. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/delete_text_in_file.py +4 -4
  45. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/fetch_url.py +48 -30
  46. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/find_files.py +3 -3
  47. janito-3.0.0/janito/plugins/tools/get_file_outline/__init__.py +7 -0
  48. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/core.py +3 -3
  49. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/move_file.py +3 -3
  50. {janito-2.32.0/plugins/web/webtools → janito-3.0.0/janito/plugins}/tools/open_html_in_browser.py +3 -3
  51. {janito-2.32.0/plugins/web/webtools → janito-3.0.0/janito/plugins}/tools/open_url.py +3 -3
  52. {janito-2.32.0/plugins/dev/pythondev → janito-3.0.0/janito/plugins}/tools/python_code_run.py +3 -3
  53. {janito-2.32.0/plugins/dev/pythondev → janito-3.0.0/janito/plugins}/tools/python_command_run.py +3 -3
  54. {janito-2.32.0/plugins/dev/pythondev → janito-3.0.0/janito/plugins}/tools/python_file_run.py +3 -3
  55. {janito-2.32.0/plugins/dev/visualization → janito-3.0.0/janito/plugins}/tools/read_chart.py +3 -3
  56. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/read_files.py +3 -3
  57. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/remove_directory.py +3 -3
  58. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/remove_file.py +3 -3
  59. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/replace_text_in_file.py +4 -4
  60. {janito-2.32.0/plugins/core/system → janito-3.0.0/janito/plugins}/tools/run_bash_command.py +3 -3
  61. {janito-2.32.0/plugins/core/system → janito-3.0.0/janito/plugins}/tools/run_powershell_command.py +3 -3
  62. janito-3.0.0/janito/plugins/tools/search_text/__init__.py +7 -0
  63. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/core.py +3 -3
  64. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/show_image.py +15 -6
  65. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/show_image_grid.py +15 -6
  66. janito-3.0.0/janito/plugins/tools/validate_file_syntax/__init__.py +7 -0
  67. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/core.py +2 -2
  68. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/view_file.py +3 -3
  69. {janito-2.32.0 → janito-3.0.0/janito}/plugins/web/webtools/tools/fetch_url.py +37 -27
  70. janito-3.0.0/janito/tools/__init__.py +60 -0
  71. janito-3.0.0/janito/tools/adapters/__init__.py +6 -0
  72. janito-3.0.0/janito/tools/adapters/local/__init__.py +10 -0
  73. janito-3.0.0/janito/tools/cli_initializer.py +88 -0
  74. janito-3.0.0/janito/tools/function_adapter.py +142 -0
  75. janito-3.0.0/janito/tools/initialize.py +70 -0
  76. {janito-2.32.0 → janito-3.0.0}/janito.egg-info/PKG-INFO +1 -2
  77. {janito-2.32.0 → janito-3.0.0}/janito.egg-info/SOURCES.txt +121 -112
  78. {janito-2.32.0 → janito-3.0.0}/janito.egg-info/requires.txt +0 -1
  79. janito-3.0.0/test_http_errors.py +100 -0
  80. janito-3.0.0/test_http_errors_direct.py +53 -0
  81. janito-2.32.0/docs/CHANGELOG.md +0 -49
  82. janito-2.32.0/janito/llm/auth_utils.py +0 -21
  83. janito-2.32.0/janito/plugins/__init__.py +0 -17
  84. janito-2.32.0/janito/plugins/core_loader.py +0 -120
  85. janito-2.32.0/janito/tools/__init__.py +0 -36
  86. janito-2.32.0/janito/tools/adapters/__init__.py +0 -1
  87. janito-2.32.0/janito/tools/adapters/local/__init__.py +0 -73
  88. janito-2.32.0/janito/tools/function_adapter.py +0 -65
  89. janito-2.32.0/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -1
  90. janito-2.32.0/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -1
  91. janito-2.32.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -1
  92. janito-2.32.0/plugins/core/imagedisplay/tools/__init__.py +0 -1
  93. janito-2.32.0/plugins.txt +0 -1
  94. {janito-2.32.0 → janito-3.0.0}/.codespellrc +0 -0
  95. {janito-2.32.0 → janito-3.0.0}/.gitattributes +0 -0
  96. {janito-2.32.0 → janito-3.0.0}/.github/workflows/python-app.yml.disabled +0 -0
  97. {janito-2.32.0 → janito-3.0.0}/.gitignore +0 -0
  98. {janito-2.32.0 → janito-3.0.0}/.pre-commit-config.yaml +0 -0
  99. {janito-2.32.0 → janito-3.0.0}/.secrets.baseline +0 -0
  100. {janito-2.32.0 → janito-3.0.0}/.vscode/settings.json +0 -0
  101. {janito-2.32.0 → janito-3.0.0}/LICENSE +0 -0
  102. {janito-2.32.0 → janito-3.0.0}/MARKET_ANALYST_README.md +0 -0
  103. {janito-2.32.0 → janito-3.0.0}/README-dev.md +0 -0
  104. {janito-2.32.0 → janito-3.0.0}/README.md +0 -0
  105. {janito-2.32.0 → janito-3.0.0}/RELEASE_COMPARISON.md +0 -0
  106. {janito-2.32.0 → janito-3.0.0}/UPDATING_DOCS.md +0 -0
  107. {janito-2.32.0 → janito-3.0.0}/adding_mcp.txt +0 -0
  108. {janito-2.32.0 → janito-3.0.0}/docs/DIV.md +0 -0
  109. {janito-2.32.0 → janito-3.0.0}/docs/Interfaces.txt +0 -0
  110. {janito-2.32.0 → janito-3.0.0}/docs/PROFILES.md +0 -0
  111. {janito-2.32.0 → janito-3.0.0}/docs/TOOLBAR-STYLING.md +0 -0
  112. {janito-2.32.0 → janito-3.0.0}/docs/about/costs.md +0 -0
  113. {janito-2.32.0 → janito-3.0.0}/docs/about/vs-webchats.md +0 -0
  114. {janito-2.32.0 → janito-3.0.0}/docs/about/why.md +0 -0
  115. {janito-2.32.0 → janito-3.0.0}/docs/alibaba-setup.md +0 -0
  116. {janito-2.32.0 → janito-3.0.0}/docs/alternatives.md +0 -0
  117. {janito-2.32.0 → janito-3.0.0}/docs/cerebras-setup.md +0 -0
  118. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG.md +0 -0
  119. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  120. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  121. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  122. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  123. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  124. {janito-2.32.0 → janito-3.0.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  125. {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  126. {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
  127. {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/code-generation-observability.md +0 -0
  128. {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/our-approach.md +0 -0
  129. {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/why-string-replacement.md +0 -0
  130. {janito-2.32.0 → janito-3.0.0}/docs/concepts/analysis-style.md +0 -0
  131. {janito-2.32.0 → janito-3.0.0}/docs/concepts/human-guided-ai.md +0 -0
  132. {janito-2.32.0 → janito-3.0.0}/docs/concepts/index.md +0 -0
  133. {janito-2.32.0 → janito-3.0.0}/docs/concepts/language-model-clients.md +0 -0
  134. {janito-2.32.0 → janito-3.0.0}/docs/concepts/prompt-design-style.md +0 -0
  135. {janito-2.32.0 → janito-3.0.0}/docs/deepseek-setup.md +0 -0
  136. {janito-2.32.0 → janito-3.0.0}/docs/driver-flow.md +0 -0
  137. {janito-2.32.0 → janito-3.0.0}/docs/driver-request-cancellation.md +0 -0
  138. {janito-2.32.0 → janito-3.0.0}/docs/drivers/events.md +0 -0
  139. {janito-2.32.0 → janito-3.0.0}/docs/drivers.md +0 -0
  140. {janito-2.32.0 → janito-3.0.0}/docs/event-bus.md +0 -0
  141. {janito-2.32.0 → janito-3.0.0}/docs/guides/configuration.md +0 -0
  142. {janito-2.32.0 → janito-3.0.0}/docs/guides/developing.md +0 -0
  143. {janito-2.32.0 → janito-3.0.0}/docs/guides/disabled-tools.md +0 -0
  144. {janito-2.32.0 → janito-3.0.0}/docs/guides/installation.md +0 -0
  145. {janito-2.32.0 → janito-3.0.0}/docs/guides/market-data-sources.md +0 -0
  146. {janito-2.32.0 → janito-3.0.0}/docs/guides/profiles.md +0 -0
  147. {janito-2.32.0 → janito-3.0.0}/docs/guides/prompting/README.md +0 -0
  148. {janito-2.32.0 → janito-3.0.0}/docs/guides/read-chart-examples.md +0 -0
  149. {janito-2.32.0 → janito-3.0.0}/docs/guides/security-commands.md +0 -0
  150. {janito-2.32.0 → janito-3.0.0}/docs/guides/single-shot-terminal.md +0 -0
  151. {janito-2.32.0 → janito-3.0.0}/docs/guides/stock-market-guide.md +0 -0
  152. {janito-2.32.0 → janito-3.0.0}/docs/guides/terminal-shell.md +0 -0
  153. {janito-2.32.0 → janito-3.0.0}/docs/guides/tools-developer-guide.md +0 -0
  154. {janito-2.32.0 → janito-3.0.0}/docs/guides/url-whitelist.md +0 -0
  155. {janito-2.32.0 → janito-3.0.0}/docs/guides/using.md +0 -0
  156. {janito-2.32.0 → janito-3.0.0}/docs/guides/using_tools.md +0 -0
  157. {janito-2.32.0 → janito-3.0.0}/docs/ibm-setup.md +0 -0
  158. {janito-2.32.0 → janito-3.0.0}/docs/imgs/code-generation-observability.png +0 -0
  159. {janito-2.32.0 → janito-3.0.0}/docs/imgs/code_generation_observability.png +0 -0
  160. {janito-2.32.0 → janito-3.0.0}/docs/imgs/happy-programmer.png +0 -0
  161. {janito-2.32.0 → janito-3.0.0}/docs/imgs/happy-programmer.svg +0 -0
  162. {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal-one-shot.png +0 -0
  163. {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal-shell.png +0 -0
  164. {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal_one_shot.png +0 -0
  165. {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal_shell.png +0 -0
  166. {janito-2.32.0 → janito-3.0.0}/docs/index.md +0 -0
  167. {janito-2.32.0 → janito-3.0.0}/docs/llm-drivers-required-config.md +0 -0
  168. {janito-2.32.0 → janito-3.0.0}/docs/llm-drivers.md +0 -0
  169. {janito-2.32.0 → janito-3.0.0}/docs/meta/developer-toolchain.md +0 -0
  170. {janito-2.32.0 → janito-3.0.0}/docs/meta/quality-checks.txt +0 -0
  171. {janito-2.32.0 → janito-3.0.0}/docs/mistral-setup.md +0 -0
  172. {janito-2.32.0 → janito-3.0.0}/docs/moonshot-setup.md +0 -0
  173. {janito-2.32.0 → janito-3.0.0}/docs/openai-setup.md +0 -0
  174. {janito-2.32.0 → janito-3.0.0}/docs/overrides/partials/copyright.html +0 -0
  175. {janito-2.32.0 → janito-3.0.0}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
  176. {janito-2.32.0 → janito-3.0.0}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
  177. {janito-2.32.0 → janito-3.0.0}/docs/plugins/README.md +0 -0
  178. {janito-2.32.0 → janito-3.0.0}/docs/plugins/api-reference.md +0 -0
  179. {janito-2.32.0 → janito-3.0.0}/docs/plugins/architecture.md +0 -0
  180. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
  181. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/filemanager.md +0 -0
  182. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
  183. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
  184. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/system.md +0 -0
  185. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
  186. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
  187. {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
  188. {janito-2.32.0 → janito-3.0.0}/docs/plugins/configuration.md +0 -0
  189. {janito-2.32.0 → janito-3.0.0}/docs/plugins/examples/advanced.md +0 -0
  190. {janito-2.32.0 → janito-3.0.0}/docs/plugins/examples/basic.md +0 -0
  191. {janito-2.32.0 → janito-3.0.0}/docs/plugins/examples/intermediate.md +0 -0
  192. {janito-2.32.0 → janito-3.0.0}/docs/plugins/plugin-development.md +0 -0
  193. {janito-2.32.0 → janito-3.0.0}/docs/plugins/plugin-resources.md +0 -0
  194. {janito-2.32.0 → janito-3.0.0}/docs/plugins/publishing.md +0 -0
  195. {janito-2.32.0 → janito-3.0.0}/docs/plugins/remote-plugins.md +0 -0
  196. {janito-2.32.0 → janito-3.0.0}/docs/plugins/testing.md +0 -0
  197. {janito-2.32.0 → janito-3.0.0}/docs/provider-platform-access.md +0 -0
  198. {janito-2.32.0 → janito-3.0.0}/docs/public-sources.md +0 -0
  199. {janito-2.32.0 → janito-3.0.0}/docs/reference/api.md +0 -0
  200. {janito-2.32.0 → janito-3.0.0}/docs/reference/azure-openai.md +0 -0
  201. {janito-2.32.0 → janito-3.0.0}/docs/reference/cli-options.md +0 -0
  202. {janito-2.32.0 → janito-3.0.0}/docs/reference/message-handler-model.md +0 -0
  203. {janito-2.32.0 → janito-3.0.0}/docs/reference/rich-message-handler.md +0 -0
  204. {janito-2.32.0 → janito-3.0.0}/docs/security.md +0 -0
  205. {janito-2.32.0 → janito-3.0.0}/docs/supported-providers-models.md +0 -0
  206. {janito-2.32.0 → janito-3.0.0}/docs/tools/search-text.md +0 -0
  207. {janito-2.32.0 → janito-3.0.0}/docs/tools/show-image-grid.md +0 -0
  208. {janito-2.32.0 → janito-3.0.0}/docs/tools/show-image.md +0 -0
  209. {janito-2.32.0 → janito-3.0.0}/docs/tools-index.md +0 -0
  210. {janito-2.32.0 → janito-3.0.0}/docs/tools-natural-results.md +0 -0
  211. {janito-2.32.0 → janito-3.0.0}/docs/tools-precision.md +0 -0
  212. {janito-2.32.0 → janito-3.0.0}/docs/z-ai-setup.md +0 -0
  213. {janito-2.32.0 → janito-3.0.0}/examples/loop_protection_example.py +0 -0
  214. {janito-2.32.0 → janito-3.0.0}/examples/loop_protection_tool_example.py +0 -0
  215. {janito-2.32.0 → janito-3.0.0}/get_nasdaq_top.py +0 -0
  216. {janito-2.32.0 → janito-3.0.0}/ibm-logo.txt +0 -0
  217. {janito-2.32.0 → janito-3.0.0}/janito/README.md +0 -0
  218. {janito-2.32.0 → janito-3.0.0}/janito/__init__.py +0 -0
  219. {janito-2.32.0 → janito-3.0.0}/janito/__main__.py +0 -0
  220. {janito-2.32.0 → janito-3.0.0}/janito/_version.py +0 -0
  221. {janito-2.32.0 → janito-3.0.0}/janito/cli/__init__.py +0 -0
  222. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/bindings.py +0 -0
  223. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/chat_entry.py +0 -0
  224. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/prompt_style.py +0 -0
  225. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/script_runner.py +0 -0
  226. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/session.py +0 -0
  227. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  228. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
  229. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  230. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  231. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  232. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  233. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  234. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  235. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  236. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  237. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  238. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  239. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  240. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  241. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  242. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  243. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
  244. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  245. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  246. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  247. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  248. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  249. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  250. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  251. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  252. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  253. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  254. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  255. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  256. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  257. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
  258. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  259. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
  260. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  261. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  262. {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/toolbar.py +0 -0
  263. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
  264. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_config.py +0 -0
  265. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_drivers.py +0 -0
  266. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_models.py +0 -0
  267. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_profiles.py +0 -0
  268. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_providers.py +0 -0
  269. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
  270. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_tools.py +0 -0
  271. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/model_selection.py +0 -0
  272. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/model_utils.py +0 -0
  273. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/ping_providers.py +0 -0
  274. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/set_api_key.py +0 -0
  275. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/show_config.py +0 -0
  276. {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
  277. {janito-2.32.0 → janito-3.0.0}/janito/cli/config.py +0 -0
  278. {janito-2.32.0 → janito-3.0.0}/janito/cli/console.py +0 -0
  279. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/__init__.py +0 -0
  280. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/event_logger.py +0 -0
  281. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/model_guesser.py +0 -0
  282. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/runner.py +0 -0
  283. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/setters.py +0 -0
  284. {janito-2.32.0 → janito-3.0.0}/janito/cli/core/unsetters.py +0 -0
  285. {janito-2.32.0 → janito-3.0.0}/janito/cli/main.py +0 -0
  286. {janito-2.32.0 → janito-3.0.0}/janito/cli/prompt_core.py +0 -0
  287. {janito-2.32.0 → janito-3.0.0}/janito/cli/prompt_handler.py +0 -0
  288. {janito-2.32.0 → janito-3.0.0}/janito/cli/prompt_setup.py +0 -0
  289. {janito-2.32.0 → janito-3.0.0}/janito/cli/rich_terminal_reporter.py +0 -0
  290. {janito-2.32.0 → janito-3.0.0}/janito/cli/single_shot_mode/__init__.py +0 -0
  291. {janito-2.32.0 → janito-3.0.0}/janito/cli/single_shot_mode/handler.py +0 -0
  292. {janito-2.32.0 → janito-3.0.0}/janito/cli/utils.py +0 -0
  293. {janito-2.32.0 → janito-3.0.0}/janito/cli/verbose_output.py +0 -0
  294. {janito-2.32.0 → janito-3.0.0}/janito/config.py +0 -0
  295. {janito-2.32.0 → janito-3.0.0}/janito/config_manager.py +0 -0
  296. {janito-2.32.0 → janito-3.0.0}/janito/conversation_history.py +0 -0
  297. {janito-2.32.0 → janito-3.0.0}/janito/dir_walk_utils.py +0 -0
  298. {janito-2.32.0 → janito-3.0.0}/janito/docs/GETTING_STARTED.md +0 -0
  299. {janito-2.32.0 → janito-3.0.0}/janito/driver_events.py +0 -0
  300. {janito-2.32.0 → janito-3.0.0}/janito/drivers/azure_openai/driver.py +0 -0
  301. {janito-2.32.0 → janito-3.0.0}/janito/drivers/cerebras/__init__.py +0 -0
  302. {janito-2.32.0 → janito-3.0.0}/janito/drivers/dashscope.bak.zip +0 -0
  303. {janito-2.32.0 → janito-3.0.0}/janito/drivers/openai/README.md +0 -0
  304. {janito-2.32.0 → janito-3.0.0}/janito/drivers/openai_responses.bak.zip +0 -0
  305. {janito-2.32.0 → janito-3.0.0}/janito/drivers/zai/__init__.py +0 -0
  306. {janito-2.32.0 → janito-3.0.0}/janito/event_bus/__init__.py +0 -0
  307. {janito-2.32.0 → janito-3.0.0}/janito/event_bus/bus.py +0 -0
  308. {janito-2.32.0 → janito-3.0.0}/janito/event_bus/event.py +0 -0
  309. {janito-2.32.0 → janito-3.0.0}/janito/event_bus/handler.py +0 -0
  310. {janito-2.32.0 → janito-3.0.0}/janito/event_bus/queue_bus.py +0 -0
  311. {janito-2.32.0 → janito-3.0.0}/janito/exceptions.py +0 -0
  312. {janito-2.32.0 → janito-3.0.0}/janito/formatting.py +0 -0
  313. {janito-2.32.0 → janito-3.0.0}/janito/formatting_token.py +0 -0
  314. {janito-2.32.0 → janito-3.0.0}/janito/gitignore_utils.py +0 -0
  315. {janito-2.32.0 → janito-3.0.0}/janito/i18n/__init__.py +0 -0
  316. {janito-2.32.0 → janito-3.0.0}/janito/i18n/it.py +0 -0
  317. {janito-2.32.0 → janito-3.0.0}/janito/i18n/messages.py +0 -0
  318. {janito-2.32.0 → janito-3.0.0}/janito/i18n/pt.py +0 -0
  319. {janito-2.32.0 → janito-3.0.0}/janito/llm/README.md +0 -0
  320. {janito-2.32.0 → janito-3.0.0}/janito/llm/__init__.py +0 -0
  321. {janito-2.32.0 → janito-3.0.0}/janito/llm/agent.py +0 -0
  322. {janito-2.32.0 → janito-3.0.0}/janito/llm/auth.py +0 -0
  323. {janito-2.32.0 → janito-3.0.0}/janito/llm/driver.py +0 -0
  324. {janito-2.32.0 → janito-3.0.0}/janito/llm/driver_config.py +0 -0
  325. {janito-2.32.0 → janito-3.0.0}/janito/llm/driver_config_builder.py +0 -0
  326. {janito-2.32.0 → janito-3.0.0}/janito/llm/driver_input.py +0 -0
  327. {janito-2.32.0 → janito-3.0.0}/janito/llm/message_parts.py +0 -0
  328. {janito-2.32.0 → janito-3.0.0}/janito/llm/model.py +0 -0
  329. {janito-2.32.0 → janito-3.0.0}/janito/llm/provider.py +0 -0
  330. {janito-2.32.0 → janito-3.0.0}/janito/mkdocs.yml +0 -0
  331. {janito-2.32.0 → janito-3.0.0}/janito/perf_singleton.py +0 -0
  332. {janito-2.32.0 → janito-3.0.0}/janito/performance_collector.py +0 -0
  333. {janito-2.32.0 → janito-3.0.0}/janito/platform_discovery.py +0 -0
  334. {janito-2.32.0 → janito-3.0.0/janito}/plugins/__init__.py +0 -0
  335. {janito-2.32.0 → janito-3.0.0}/janito/plugins/auto_loader.py +0 -0
  336. {janito-2.32.0 → janito-3.0.0}/janito/plugins/config.py +0 -0
  337. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/__init__.py +0 -0
  338. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/__init__.py +0 -0
  339. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/core.py +0 -0
  340. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/java_outline.py +0 -0
  341. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/markdown_outline.py +0 -0
  342. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/python_outline.py +0 -0
  343. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/search_outline.py +0 -0
  344. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/__init__.py +0 -0
  345. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/core.py +0 -0
  346. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/match_lines.py +0 -0
  347. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/pattern_utils.py +0 -0
  348. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/traverse_directory.py +0 -0
  349. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/copy_file.py +0 -0
  350. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/create_directory.py +0 -0
  351. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/filemanager/tools/create_file.py +0 -0
  352. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/delete_text_in_file.py +0 -0
  353. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/find_files.py +0 -0
  354. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/move_file.py +0 -0
  355. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/read_files.py +0 -0
  356. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/remove_directory.py +0 -0
  357. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/remove_file.py +0 -0
  358. {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
  359. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/__init__.py +0 -0
  360. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/core.py +0 -0
  361. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/css_validator.py +0 -0
  362. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/html_validator.py +0 -0
  363. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/jinja2_validator.py +0 -0
  364. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/js_validator.py +0 -0
  365. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/json_validator.py +0 -0
  366. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/markdown_validator.py +0 -0
  367. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/ps1_validator.py +0 -0
  368. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/python_validator.py +0 -0
  369. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/xml_validator.py +0 -0
  370. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/yaml_validator.py +0 -0
  371. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/view_file.py +0 -0
  372. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/system/tools}/run_bash_command.py +0 -0
  373. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/system/tools}/run_powershell_command.py +0 -0
  374. {janito-2.32.0 → janito-3.0.0/janito}/plugins/dev/__init__.py +0 -0
  375. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/pythondev/tools}/python_code_run.py +0 -0
  376. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/pythondev/tools}/python_command_run.py +0 -0
  377. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/pythondev/tools}/python_file_run.py +0 -0
  378. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/visualization/tools}/read_chart.py +0 -0
  379. {janito-2.32.0 → janito-3.0.0}/janito/plugins/discovery_core.py +0 -0
  380. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/java_outline.py +0 -0
  381. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/markdown_outline.py +0 -0
  382. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/python_outline.py +0 -0
  383. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/search_outline.py +0 -0
  384. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/match_lines.py +0 -0
  385. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/pattern_utils.py +0 -0
  386. {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/traverse_directory.py +0 -0
  387. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/css_validator.py +0 -0
  388. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/html_validator.py +0 -0
  389. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/jinja2_validator.py +0 -0
  390. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/js_validator.py +0 -0
  391. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/json_validator.py +0 -0
  392. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/markdown_validator.py +0 -0
  393. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/ps1_validator.py +0 -0
  394. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/python_validator.py +0 -0
  395. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/xml_validator.py +0 -0
  396. {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/yaml_validator.py +0 -0
  397. {janito-2.32.0 → janito-3.0.0/janito}/plugins/ui/__init__.py +0 -0
  398. {janito-2.32.0 → janito-3.0.0/janito}/plugins/ui/userinterface/__init__.py +0 -0
  399. {janito-2.32.0 → janito-3.0.0/janito}/plugins/ui/userinterface/tools/ask_user.py +0 -0
  400. {janito-2.32.0 → janito-3.0.0/janito}/plugins/web/__init__.py +0 -0
  401. {janito-2.32.0 → janito-3.0.0/janito}/plugins/web/webtools/__init__.py +0 -0
  402. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/web/webtools/tools}/open_html_in_browser.py +0 -0
  403. {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/web/webtools/tools}/open_url.py +0 -0
  404. {janito-2.32.0 → janito-3.0.0}/janito/provider_config.py +0 -0
  405. {janito-2.32.0 → janito-3.0.0}/janito/provider_registry.py +0 -0
  406. {janito-2.32.0 → janito-3.0.0}/janito/providers/__init__.py +0 -0
  407. {janito-2.32.0 → janito-3.0.0}/janito/providers/alibaba/__init__.py +0 -0
  408. {janito-2.32.0 → janito-3.0.0}/janito/providers/alibaba/model_info.py +0 -0
  409. {janito-2.32.0 → janito-3.0.0}/janito/providers/alibaba/provider.py +0 -0
  410. {janito-2.32.0 → janito-3.0.0}/janito/providers/anthropic/model_info.py +0 -0
  411. {janito-2.32.0 → janito-3.0.0}/janito/providers/anthropic/provider.py +0 -0
  412. {janito-2.32.0 → janito-3.0.0}/janito/providers/azure_openai/model_info.py +0 -0
  413. {janito-2.32.0 → janito-3.0.0}/janito/providers/azure_openai/provider.py +0 -0
  414. {janito-2.32.0 → janito-3.0.0}/janito/providers/cerebras/__init__.py +0 -0
  415. {janito-2.32.0 → janito-3.0.0}/janito/providers/cerebras/model_info.py +0 -0
  416. {janito-2.32.0 → janito-3.0.0}/janito/providers/cerebras/provider.py +0 -0
  417. {janito-2.32.0 → janito-3.0.0}/janito/providers/dashscope.bak.zip +0 -0
  418. {janito-2.32.0 → janito-3.0.0}/janito/providers/deepseek/__init__.py +0 -0
  419. {janito-2.32.0 → janito-3.0.0}/janito/providers/deepseek/model_info.py +0 -0
  420. {janito-2.32.0 → janito-3.0.0}/janito/providers/deepseek/provider.py +0 -0
  421. {janito-2.32.0 → janito-3.0.0}/janito/providers/google/__init__.py +0 -0
  422. {janito-2.32.0 → janito-3.0.0}/janito/providers/google/model_info.py +0 -0
  423. {janito-2.32.0 → janito-3.0.0}/janito/providers/google/provider.py +0 -0
  424. {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/README.md +0 -0
  425. {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/__init__.py +0 -0
  426. {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/model_info.py +0 -0
  427. {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/provider.py +0 -0
  428. {janito-2.32.0 → janito-3.0.0}/janito/providers/mistral/__init__.py +0 -0
  429. {janito-2.32.0 → janito-3.0.0}/janito/providers/mistral/model_info.py +0 -0
  430. {janito-2.32.0 → janito-3.0.0}/janito/providers/mistral/provider.py +0 -0
  431. {janito-2.32.0 → janito-3.0.0}/janito/providers/moonshot/__init__.py +0 -0
  432. {janito-2.32.0 → janito-3.0.0}/janito/providers/moonshot/model_info.py +0 -0
  433. {janito-2.32.0 → janito-3.0.0}/janito/providers/moonshot/provider.py +0 -0
  434. {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/__init__.py +0 -0
  435. {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/model_info.py +0 -0
  436. {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/provider.py +0 -0
  437. {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/schema_generator.py +0 -0
  438. {janito-2.32.0 → janito-3.0.0}/janito/providers/registry.py +0 -0
  439. {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/__init__.py +0 -0
  440. {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/model_info.py +0 -0
  441. {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/provider.py +0 -0
  442. {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/schema_generator.py +0 -0
  443. {janito-2.32.0 → janito-3.0.0}/janito/regions/__init__.py +0 -0
  444. {janito-2.32.0 → janito-3.0.0}/janito/regions/cli.py +0 -0
  445. {janito-2.32.0 → janito-3.0.0}/janito/regions/geo_utils.py +0 -0
  446. {janito-2.32.0 → janito-3.0.0}/janito/regions/provider_regions.py +0 -0
  447. {janito-2.32.0 → janito-3.0.0}/janito/report_events.py +0 -0
  448. {janito-2.32.0 → janito-3.0.0}/janito/shell.bak.zip +0 -0
  449. {janito-2.32.0 → janito-3.0.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  450. {janito-2.32.0 → janito-3.0.0}/janito/tools/README.md +0 -0
  451. {janito-2.32.0 → janito-3.0.0}/janito/tools/adapters/local/adapter.py +0 -0
  452. {janito-2.32.0 → janito-3.0.0}/janito/tools/base.py +0 -0
  453. {janito-2.32.0 → janito-3.0.0}/janito/tools/disabled_tools.py +0 -0
  454. {janito-2.32.0 → janito-3.0.0}/janito/tools/inspect_registry.py +0 -0
  455. {janito-2.32.0 → janito-3.0.0}/janito/tools/loop_protection.py +0 -0
  456. {janito-2.32.0 → janito-3.0.0}/janito/tools/loop_protection_decorator.py +0 -0
  457. {janito-2.32.0 → janito-3.0.0}/janito/tools/outline_file.bak.zip +0 -0
  458. {janito-2.32.0 → janito-3.0.0}/janito/tools/path_security.py +0 -0
  459. {janito-2.32.0 → janito-3.0.0}/janito/tools/path_utils.py +0 -0
  460. {janito-2.32.0 → janito-3.0.0}/janito/tools/permissions.py +0 -0
  461. {janito-2.32.0 → janito-3.0.0}/janito/tools/permissions_parse.py +0 -0
  462. {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_base.py +0 -0
  463. {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_events.py +0 -0
  464. {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_run_exception.py +0 -0
  465. {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_use_tracker.py +0 -0
  466. {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_utils.py +0 -0
  467. {janito-2.32.0 → janito-3.0.0}/janito/tools/tools_adapter.py +0 -0
  468. {janito-2.32.0 → janito-3.0.0}/janito/tools/tools_schema.py +0 -0
  469. {janito-2.32.0 → janito-3.0.0}/janito/tools/url_whitelist.py +0 -0
  470. {janito-2.32.0 → janito-3.0.0}/janito/utils.py +0 -0
  471. {janito-2.32.0 → janito-3.0.0}/janito.egg-info/dependency_links.txt +0 -0
  472. {janito-2.32.0 → janito-3.0.0}/janito.egg-info/entry_points.txt +0 -0
  473. {janito-2.32.0 → janito-3.0.0}/janito.egg-info/top_level.txt +0 -0
  474. {janito-2.32.0 → janito-3.0.0}/market_prompt_fix.py +0 -0
  475. {janito-2.32.0 → janito-3.0.0}/market_test.py +0 -0
  476. {janito-2.32.0 → janito-3.0.0}/mkdocs.yml +0 -0
  477. {janito-2.32.0 → janito-3.0.0}/mkdocs_hooks.py +0 -0
  478. {janito-2.32.0 → janito-3.0.0}/pyproject.toml +0 -0
  479. {janito-2.32.0 → janito-3.0.0}/pytest.ini +0 -0
  480. {janito-2.32.0 → janito-3.0.0}/requirements-dev.txt +0 -0
  481. {janito-2.32.0 → janito-3.0.0}/requirements.txt +0 -0
  482. {janito-2.32.0 → janito-3.0.0}/setup.cfg +0 -0
  483. {janito-2.32.0 → janito-3.0.0}/test.txt +0 -0
  484. {janito-2.32.0 → janito-3.0.0}/test_example.py +0 -0
  485. {janito-2.32.0 → janito-3.0.0}/test_key_field_behavior.py +0 -0
  486. {janito-2.32.0 → janito-3.0.0}/test_key_field_protection.py +0 -0
  487. {janito-2.32.0 → janito-3.0.0}/test_loop_protection_return.py +0 -0
  488. {janito-2.32.0 → janito-3.0.0}/test_market_analyst.py +0 -0
  489. {janito-2.32.0 → janito-3.0.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
  490. {janito-2.32.0 → janito-3.0.0}/tests/adapters/local/test_read_files.py +0 -0
  491. {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_models.py +0 -0
  492. {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_providers.py +0 -0
  493. {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_providers_alibaba.py +0 -0
  494. {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_providers_moonshot.py +0 -0
  495. {janito-2.32.0 → janito-3.0.0}/tests/test_cli_version.py +0 -0
  496. {janito-2.32.0 → janito-3.0.0}/tests/test_disabled_tools.py +0 -0
  497. {janito-2.32.0 → janito-3.0.0}/tests/test_plugin_system.py +0 -0
  498. {janito-2.32.0 → janito-3.0.0}/tests/test_provider_alibaba.py +0 -0
  499. {janito-2.32.0 → janito-3.0.0}/tests/test_provider_cerebras.py +0 -0
  500. {janito-2.32.0 → janito-3.0.0}/tests/test_provider_moonshot.py +0 -0
  501. {janito-2.32.0 → janito-3.0.0}/tools/release.py +0 -0
  502. {janito-2.32.0 → janito-3.0.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 2.32.0
3
+ Version: 3.0.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
@@ -30,7 +30,6 @@ Requires-Dist: black; extra == "dev"
30
30
  Requires-Dist: questionary>=2.0.1; extra == "dev"
31
31
  Requires-Dist: setuptools_scm>=8.0; extra == "dev"
32
32
  Provides-Extra: coder
33
- Requires-Dist: janito-coder; extra == "coder"
34
33
  Dynamic: license-file
35
34
 
36
35
  # nctl
@@ -0,0 +1,133 @@
1
+ # Changelog
2
+
3
+ All notable changes to Janito will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [Unreleased]
9
+
10
+ ### Added
11
+
12
+ ### Changed
13
+
14
+ ### Deprecated
15
+
16
+ ### Removed
17
+
18
+ ### Fixed
19
+
20
+ ### Security
21
+
22
+ ## [3.0.0] - 2025-08-23
23
+
24
+ ### Major Architecture Refactoring
25
+
26
+ #### Plugin System Overhaul
27
+ - **Complete plugin system redesign** with unified architecture
28
+ - **Consolidated core plugins** into cohesive `janito/plugins/` structure
29
+ - **Eliminated legacy loading mechanisms** (`core_loader.py`, `core_loader_fixed.py`, `base.py`)
30
+ - **Streamlined plugin discovery** with improved initialization process
31
+ - **Enhanced maintainability** through simplified plugin architecture
32
+
33
+ #### Removed Legacy Components
34
+ - Deleted deprecated plugin loading systems
35
+ - Removed redundant `plugins.txt` configuration file
36
+ - Eliminated duplicate tool adapter implementations
37
+ - Cleaned up temporary test files (`test_core_plugins*.py`)
38
+
39
+ #### Enhanced Plugin Organization
40
+ - **Unified plugin structure** with clear module hierarchy
41
+ - **Consolidated tool categories**:
42
+ - Core system tools (file operations, system commands)
43
+ - Development tools (Python execution, code analysis)
44
+ - UI tools (user interaction, visualization)
45
+ - Web tools (URL fetching, browser integration)
46
+ - **Improved plugin discovery** with automatic initialization
47
+
48
+ ### Technical Improvements
49
+
50
+ #### Code Quality
51
+ - **Reduced complexity** through architectural simplification
52
+ - **Eliminated code duplication** across plugin implementations
53
+ - **Enhanced modularity** with clear separation of concerns
54
+ - **Improved testability** with focused plugin modules
55
+
56
+ #### Configuration Simplification
57
+ - **Streamlined plugin configuration** with unified settings
58
+ - **Simplified initialization process** for new plugins
59
+ - **Reduced configuration overhead** for plugin developers
60
+
61
+ ### Breaking Changes
62
+
63
+ #### Plugin System
64
+ - **Legacy plugin loading mechanisms removed** - plugins must use new system
65
+ - **Plugin directory structure changed** - see updated documentation
66
+ - **Configuration format updated** - simplified plugin settings
67
+
68
+ #### Removed Files
69
+ - `plugins.txt` configuration file
70
+ - Legacy plugin loading modules
71
+ - Temporary test files
72
+ - Redundant tool adapter implementations
73
+
74
+ ### Migration Guide
75
+
76
+ #### For Plugin Developers
77
+ 1. **Update plugin structure** to match new unified architecture
78
+ 2. **Migrate configuration** to new simplified format
79
+ 3. **Test compatibility** with new plugin discovery system
80
+ 4. **Review documentation** for updated development patterns
81
+
82
+ #### For Users
83
+ 1. **Update configuration files** to use new plugin system
84
+ 2. **Review plugin settings** for simplified format
85
+ 3. **Test existing workflows** with new architecture
86
+
87
+ ### Documentation Updates
88
+ - **Comprehensive plugin development guide** with updated patterns
89
+ - **Migration documentation** for legacy plugin system
90
+ - **Enhanced API reference** with new plugin interfaces
91
+
92
+ ## [2.27.0] - 2025-08-22
93
+
94
+ ### Removed
95
+
96
+ - **Breaking Change**: Removed `--role` argument and interactive profile selection
97
+ - The `--role` argument has been completely removed from the CLI
98
+ - Interactive profile selection has been removed from chat mode
99
+ - Use `--profile <name>` or shorthand flags like `--developer` and `--market` instead
100
+ - Default behavior now uses the Developer profile when no profile is specified
101
+
102
+ ### Changed
103
+
104
+ - Updated documentation to reflect removal of role argument
105
+ - Added comprehensive profile documentation in `PROFILES.md`
106
+ - Simplified profile selection to use explicit flags only
107
+
108
+ ## [Previous Versions]
109
+
110
+ ### Added
111
+
112
+ - Initial support for profiles and roles
113
+ - Interactive profile selection in chat mode
114
+ - `--role` argument for specifying developer roles
115
+ - `--profile` argument for system prompt templates
116
+ - `--developer` and `--market` shorthand flags
117
+
118
+ ### Available Profiles
119
+
120
+ - **Developer**: Optimized for software development tasks
121
+ - **Market Analyst**: Specialized for market analysis and business insights
122
+
123
+ ### Supported Providers
124
+
125
+ - Moonshot AI (default)
126
+ - OpenAI
127
+ - Anthropic
128
+ - IBM WatsonX
129
+ - Google AI
130
+
131
+ ---
132
+
133
+ For detailed information about profiles and their usage, see [PROFILES.md](PROFILES.md).
@@ -0,0 +1,141 @@
1
+ # Changelog - Version 3.0.0
2
+
3
+ ## [3.0.0] - 2025-08-23
4
+
5
+ ### Major Architecture Refactoring
6
+
7
+ #### Plugin System Overhaul
8
+ - **Complete plugin system redesign** with unified architecture
9
+ - **Consolidated core plugins** into cohesive `janito/plugins/` structure
10
+ - **Eliminated legacy loading mechanisms** (`core_loader.py`, `core_loader_fixed.py`, `base.py`)
11
+ - **Streamlined plugin discovery** with improved initialization process
12
+ - **Enhanced maintainability** through simplified plugin architecture
13
+
14
+ #### Removed Legacy Components
15
+ - Deleted deprecated plugin loading systems
16
+ - Removed redundant `plugins.txt` configuration file
17
+ - Eliminated duplicate tool adapter implementations
18
+ - Cleaned up temporary test files (`test_core_plugins*.py`)
19
+
20
+ #### Enhanced Plugin Organization
21
+ - **Unified plugin structure** with clear module hierarchy
22
+ - **Consolidated tool categories**:
23
+ - Core system tools (file operations, system commands)
24
+ - Development tools (Python execution, code analysis)
25
+ - UI tools (user interaction, visualization)
26
+ - Web tools (URL fetching, browser integration)
27
+ - **Improved plugin discovery** with automatic initialization
28
+
29
+ ### Technical Improvements
30
+
31
+ #### Code Quality
32
+ - **Reduced complexity** through architectural simplification
33
+ - **Eliminated code duplication** across plugin implementations
34
+ - **Enhanced modularity** with clear separation of concerns
35
+ - **Improved testability** with focused plugin modules
36
+
37
+ #### Configuration Simplification
38
+ - **Streamlined plugin configuration** with unified settings
39
+ - **Simplified initialization process** for new plugins
40
+ - **Reduced configuration overhead** for plugin developers
41
+
42
+ ### Developer Experience
43
+
44
+ #### Plugin Development
45
+ - **Simplified plugin creation** with consistent patterns
46
+ - **Clear plugin boundaries** and responsibilities
47
+ - **Enhanced documentation** with comprehensive examples
48
+ - **Reduced boilerplate** code for new plugins
49
+
50
+ #### Migration Path
51
+ - **Backward compatibility** maintained for existing plugins
52
+ - **Smooth transition** from legacy plugin system
53
+ - **Comprehensive documentation** for migration guidance
54
+
55
+ ### Breaking Changes
56
+
57
+ #### Plugin System
58
+ - **Legacy plugin loading mechanisms removed** - plugins must use new system
59
+ - **Plugin directory structure changed** - see updated documentation
60
+ - **Configuration format updated** - simplified plugin settings
61
+
62
+ #### Removed Files
63
+ - `plugins.txt` configuration file
64
+ - Legacy plugin loading modules
65
+ - Temporary test files
66
+ - Redundant tool adapter implementations
67
+
68
+ ### Migration Guide
69
+
70
+ #### For Plugin Developers
71
+ 1. **Update plugin structure** to match new unified architecture
72
+ 2. **Migrate configuration** to new simplified format
73
+ 3. **Test compatibility** with new plugin discovery system
74
+ 4. **Review documentation** for updated development patterns
75
+
76
+ #### For Users
77
+ 1. **Update configuration files** to use new plugin system
78
+ 2. **Review plugin settings** for simplified format
79
+ 3. **Test existing workflows** with new architecture
80
+
81
+ ### Documentation Updates
82
+
83
+ #### New Documentation
84
+ - **Comprehensive plugin development guide** with updated patterns
85
+ - **Migration documentation** for legacy plugin system
86
+ - **Enhanced API reference** with new plugin interfaces
87
+ - **Updated examples** demonstrating new architecture
88
+
89
+ #### Updated Guides
90
+ - **Plugin creation tutorials** with modern patterns
91
+ - **Configuration documentation** reflecting new system
92
+ - **Best practices** for plugin development
93
+
94
+ ### Performance Improvements
95
+
96
+ #### Startup Time
97
+ - **Faster plugin discovery** through optimized loading
98
+ - **Reduced initialization overhead** with consolidated modules
99
+ - **Improved caching** for plugin metadata
100
+
101
+ #### Memory Usage
102
+ - **Reduced memory footprint** through code consolidation
103
+ - **Eliminated duplicate implementations** across plugins
104
+ - **Optimized plugin loading** with lazy initialization
105
+
106
+ ### Security Enhancements
107
+
108
+ #### Plugin Isolation
109
+ - **Improved plugin sandboxing** with clear boundaries
110
+ - **Enhanced security validation** for plugin loading
111
+ - **Reduced attack surface** through simplified architecture
112
+
113
+ ### Future Roadmap
114
+
115
+ #### Plugin Ecosystem
116
+ - **Community plugin repository** integration planned
117
+ - **Plugin marketplace** development in progress
118
+ - **Advanced plugin features** for complex workflows
119
+
120
+ #### Technical Enhancements
121
+ - **Performance optimizations** for large plugin sets
122
+ - **Advanced plugin configuration** options
123
+ - **Plugin dependency management** improvements
124
+
125
+ ---
126
+
127
+ ## Upgrade Notes
128
+
129
+ ### Before Upgrading
130
+ 1. **Backup existing configuration** files
131
+ 2. **Document current plugin setup** for reference
132
+ 3. **Test critical workflows** with current version
133
+
134
+ ### After Upgrading
135
+ 1. **Review new plugin documentation** for updated patterns
136
+ 2. **Update configuration files** to new format
137
+ 3. **Test all plugins** for compatibility
138
+ 4. **Report any issues** to development team
139
+
140
+ ### Support
141
+ - **Migration assistance** available through GitHub issues
@@ -0,0 +1,51 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Initialize janito tools for CLI usage.
4
+
5
+ This script loads all core plugins and registers their tools
6
+ with the local tools adapter.
7
+ """
8
+
9
+ import sys
10
+ import os
11
+ from pathlib import Path
12
+
13
+ # Add current directory to path
14
+ sys.path.insert(0, str(Path.cwd()))
15
+
16
+ from janito.plugins.core_loader_fixed import load_core_plugin
17
+ from janito.tools.adapters.local.adapter import LocalToolsAdapter
18
+
19
+
20
+ def init_janito_tools():
21
+ """Initialize all janito tools for CLI usage."""
22
+ adapter = LocalToolsAdapter()
23
+
24
+ # Core plugins to load
25
+ core_plugins = [
26
+ "core.filemanager",
27
+ "core.codeanalyzer",
28
+ "core.system",
29
+ "core.imagedisplay",
30
+ "dev.pythondev",
31
+ "dev.visualization",
32
+ ]
33
+
34
+ loaded = 0
35
+ for plugin_name in core_plugins:
36
+ plugin = load_core_plugin(plugin_name)
37
+ if plugin:
38
+ tools = plugin.get_tools()
39
+ for tool_class in tools:
40
+ adapter.register_tool(tool_class)
41
+ loaded += 1
42
+
43
+ return adapter, loaded
44
+
45
+
46
+ if __name__ == "__main__":
47
+ adapter, count = init_janito_tools()
48
+ print(f"Initialized {count} tools")
49
+ print("Available tools:")
50
+ for tool_name in sorted(list(adapter._tools.keys())):
51
+ print(f" - {tool_name}")
@@ -155,6 +155,32 @@ def _prepare_template_context(role, profile, allowed_permissions, args=None):
155
155
  getattr(args, "emoji", False) if "args" in locals() else False
156
156
  )
157
157
 
158
+ # Add current date/time with timezone using standard library
159
+ from datetime import datetime, timezone
160
+ import time
161
+
162
+ # Get local time with timezone info
163
+ local_time = datetime.now()
164
+
165
+ # Get timezone offset
166
+ if time.daylight:
167
+ offset = time.altzone
168
+ else:
169
+ offset = time.timezone
170
+
171
+ # Format offset as +HHMM or -HHMM
172
+ offset_hours = -offset // 3600
173
+ offset_minutes = abs(offset) % 3600 // 60
174
+ offset_str = f"{offset_hours:+03d}{offset_minutes:02d}"
175
+
176
+ # Get timezone name
177
+ tz_name = time.tzname[time.daylight and time.daylight or 0]
178
+
179
+ context["current_datetime"] = local_time.strftime(
180
+ f"%Y-%m-%d %H:%M:%S {tz_name}{offset_str}"
181
+ )
182
+ context["timezone"] = f"{tz_name} (UTC{offset_str})"
183
+
158
184
  return context
159
185
 
160
186
 
@@ -4,6 +4,8 @@
4
4
  {% if description %}Description: {{ description }}{% endif %}
5
5
  {% if author %}Author: {{ author }}{% endif %}
6
6
  {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
+ {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
+ {% if timezone %}Timezone: {{ timezone }}{% endif %}
7
9
 
8
10
  {# General role setup
9
11
  ex. "Search in code" -> Python Developer -> find(*.py) | Java Developer -> find(*.java)
@@ -4,6 +4,8 @@
4
4
  {% if description %}Description: {{ description }}{% endif %}
5
5
  {% if author %}Author: {{ author }}{% endif %}
6
6
  {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
+ {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
+ {% if timezone %}Timezone: {{ timezone }}{% endif %}
7
9
 
8
10
  You are: {{ role | default('software developer') }}
9
11
 
@@ -4,6 +4,8 @@
4
4
  {% if description %}Description: {{ description }}{% endif %}
5
5
  {% if author %}Author: {{ author }}{% endif %}
6
6
  {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
+ {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
+ {% if timezone %}Timezone: {{ timezone }}{% endif %}
7
9
 
8
10
  You are: {{ role | default('market analyst specializing in financial markets, business intelligence, and economic research') }}
9
11
 
@@ -4,6 +4,8 @@
4
4
  {% if description %}Description: {{ description }}{% endif %}
5
5
  {% if author %}Author: {{ author }}{% endif %}
6
6
  {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
+ {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
+ {% if timezone %}Timezone: {{ timezone }}{% endif %}
7
9
 
8
10
  You are: {{ role | default('helpful assistant') }}
9
11
 
@@ -0,0 +1,212 @@
1
+ """
2
+ CLI Command: Check all registered tools for signature validation and availability
3
+ """
4
+
5
+ import inspect
6
+ import sys
7
+ from typing import Dict, List, Tuple, Any
8
+
9
+
10
+ def _validate_tool_signature(tool_instance) -> Tuple[bool, List[str]]:
11
+ """Validate the signature of a tool's run method."""
12
+ errors = []
13
+
14
+ if not hasattr(tool_instance, "run"):
15
+ errors.append("Missing 'run' method")
16
+ return False, errors
17
+
18
+ try:
19
+ sig = inspect.signature(tool_instance.run)
20
+ except ValueError as e:
21
+ errors.append(f"Invalid signature: {e}")
22
+ return False, errors
23
+
24
+ # Basic signature validation - just check if it's callable
25
+ if not callable(getattr(tool_instance, "run")):
26
+ errors.append("'run' method is not callable")
27
+
28
+ return len(errors) == 0, errors
29
+
30
+
31
+ def _check_tool_availability(tool_instance) -> Tuple[bool, List[str]]:
32
+ """Check if a tool is available for use."""
33
+ errors = []
34
+
35
+ # Check if tool has required attributes
36
+ required_attrs = ["tool_name"]
37
+ for attr in required_attrs:
38
+ if not hasattr(tool_instance, attr):
39
+ errors.append(f"Missing required attribute: {attr}")
40
+
41
+ # Check description (optional for now)
42
+ if not hasattr(tool_instance, "description"):
43
+ pass # Allow missing description
44
+
45
+ # Check permissions
46
+ if not hasattr(tool_instance, "permissions"):
47
+ # Function-based tools use permissions from function decorators
48
+ pass # Allow missing permissions for function-based tools
49
+ else:
50
+ perms = tool_instance.permissions
51
+ if (
52
+ not hasattr(perms, "read")
53
+ or not hasattr(perms, "write")
54
+ or not hasattr(perms, "execute")
55
+ ):
56
+ errors.append("Invalid permissions structure")
57
+
58
+ return len(errors) == 0, errors
59
+
60
+
61
+ def _get_tool_status_summary(
62
+ tools: List[Any], disabled_tools: List[str]
63
+ ) -> Dict[str, Any]:
64
+ """Get a comprehensive status summary for all tools."""
65
+ summary = {
66
+ "total": len(tools),
67
+ "available": 0,
68
+ "disabled": 0,
69
+ "invalid": 0,
70
+ "details": [],
71
+ }
72
+
73
+ for tool in tools:
74
+ tool_name = getattr(tool, "tool_name", str(tool))
75
+
76
+ # Check if disabled
77
+ is_disabled = tool_name in disabled_tools
78
+
79
+ # Validate signature and availability
80
+ sig_valid, sig_errors = _validate_tool_signature(tool)
81
+ avail_valid, avail_errors = _check_tool_availability(tool)
82
+
83
+ status = {
84
+ "name": tool_name,
85
+ "disabled": is_disabled,
86
+ "signature_valid": sig_valid,
87
+ "available": avail_valid,
88
+ "signature_errors": sig_errors,
89
+ "availability_errors": avail_errors,
90
+ }
91
+
92
+ summary["details"].append(status)
93
+
94
+ if is_disabled:
95
+ summary["disabled"] += 1
96
+ elif not sig_valid or not avail_valid:
97
+ summary["invalid"] += 1
98
+ else:
99
+ summary["available"] += 1
100
+
101
+ return summary
102
+
103
+
104
+ def _print_check_results(console, summary: Dict[str, Any], verbose: bool = False):
105
+ """Print the tool check results in a formatted way."""
106
+ from rich.table import Table
107
+ from rich.panel import Panel
108
+ from rich.text import Text
109
+
110
+ # Overall summary
111
+ summary_text = Text()
112
+ summary_text.append(f"Total tools: {summary['total']}", style="cyan")
113
+ summary_text.append(" | ")
114
+ summary_text.append(f"Available: {summary['available']}", style="green")
115
+ summary_text.append(" | ")
116
+ summary_text.append(f"Disabled: {summary['disabled']}", style="yellow")
117
+ summary_text.append(" | ")
118
+ summary_text.append(f"Invalid: {summary['invalid']}", style="red")
119
+
120
+ console.print(Panel(summary_text, title="Tool Check Summary", style="bold"))
121
+
122
+ # Always show the table for check-tools
123
+ table = Table(title="Tool Details", show_header=True, header_style="bold")
124
+ table.add_column("Tool", style="cyan", no_wrap=True)
125
+ table.add_column("Status", style="green")
126
+ table.add_column("Issues", style="red")
127
+
128
+ for detail in summary["details"]:
129
+ name = detail["name"]
130
+
131
+ if detail["disabled"]:
132
+ status = "[yellow]Disabled[/yellow]"
133
+ issues = "-"
134
+ elif not detail["available"] or not detail["signature_valid"]:
135
+ status = "[red]Invalid[/red]"
136
+ all_issues = detail["signature_errors"] + detail["availability_errors"]
137
+ issues = "\n".join(all_issues)
138
+ else:
139
+ status = "[green]Available[/green]"
140
+ issues = "-"
141
+
142
+ table.add_row(name, status, issues)
143
+
144
+ console.print(table)
145
+
146
+
147
+ def handle_check_tools(args=None):
148
+ """Handle the --check-tools CLI command."""
149
+ from janito.tools.adapters.local.adapter import LocalToolsAdapter
150
+ import janito.tools # Ensure all tools are registered
151
+
152
+ # Load disabled tools from config
153
+ from janito.tools.disabled_tools import DisabledToolsState
154
+ from janito.config import config
155
+
156
+ disabled_str = config.get("disabled_tools", "")
157
+ if disabled_str:
158
+ DisabledToolsState.set_disabled_tools(disabled_str)
159
+ disabled_tools = DisabledToolsState.get_disabled_tools()
160
+
161
+ # Initialize tools properly using the same approach as list_tools.py
162
+ from janito.tools.adapters.local.adapter import LocalToolsAdapter
163
+ from janito.tools.tool_base import ToolPermissions
164
+ import janito.tools # Ensure all tools are registered
165
+
166
+ read = getattr(args, "read", False) if args else False
167
+ write = getattr(args, "write", False) if args else False
168
+ execute = getattr(args, "exec", False) if args else False
169
+ if not (read or write or execute):
170
+ read = write = execute = True
171
+ from janito.tools.permissions import set_global_allowed_permissions
172
+
173
+ set_global_allowed_permissions(
174
+ ToolPermissions(read=read, write=write, execute=execute)
175
+ )
176
+
177
+ # Load disabled tools from config
178
+ from janito.tools.disabled_tools import DisabledToolsState
179
+ from janito.config import config
180
+
181
+ disabled_str = config.get("disabled_tools", "")
182
+ if disabled_str:
183
+ DisabledToolsState.set_disabled_tools(disabled_str)
184
+ disabled_tools = DisabledToolsState.get_disabled_tools()
185
+
186
+ # Initialize tools using the same method as list_tools.py
187
+ from janito.tools.initialize import initialize_tools
188
+
189
+ registry = initialize_tools()
190
+
191
+ # Get actual tool instances
192
+ tool_instances = []
193
+ for name, tool_info in registry._tools.items():
194
+ if "instance" in tool_info:
195
+ tool_instances.append(tool_info["instance"])
196
+
197
+ if not tool_instances:
198
+ print("No tools registered.")
199
+ return
200
+
201
+ from rich.console import Console
202
+
203
+ console = Console()
204
+
205
+ verbose = getattr(args, "verbose", False) if args else False
206
+
207
+ summary = _get_tool_status_summary(tool_instances, disabled_tools)
208
+ _print_check_results(console, summary, verbose=verbose)
209
+
210
+ # Exit with error code if there are invalid tools
211
+ if summary["invalid"] > 0:
212
+ sys.exit(1)