janito 2.27.0__tar.gz → 2.27.1__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 (479) hide show
  1. {janito-2.27.0 → janito-2.27.1}/PKG-INFO +3 -1
  2. janito-2.27.1/docs/plugins/ACTUAL_TOOLS_LOCATION.md +49 -0
  3. janito-2.27.1/docs/plugins/MIGRATION_COMPLETE.md +73 -0
  4. janito-2.27.1/docs/plugins/api-reference.md +221 -0
  5. janito-2.27.1/docs/plugins/architecture.md +128 -0
  6. janito-2.27.1/docs/plugins/built-in-plugins/codeanalyzer.md +65 -0
  7. janito-2.27.1/docs/plugins/built-in-plugins/filemanager.md +65 -0
  8. janito-2.27.1/docs/plugins/built-in-plugins/pythondev.md +64 -0
  9. janito-2.27.1/docs/plugins/built-in-plugins/system.md +62 -0
  10. janito-2.27.1/docs/plugins/built-in-plugins/userinterface.md +61 -0
  11. janito-2.27.1/docs/plugins/built-in-plugins/visualization.md +87 -0
  12. janito-2.27.1/docs/plugins/built-in-plugins/webtools.md +65 -0
  13. janito-2.27.1/docs/plugins/configuration.md +127 -0
  14. janito-2.27.1/docs/plugins/examples/advanced.md +326 -0
  15. janito-2.27.1/docs/plugins/examples/basic.md +82 -0
  16. janito-2.27.1/docs/plugins/examples/intermediate.md +145 -0
  17. janito-2.27.1/docs/plugins/plugin-development.md +170 -0
  18. janito-2.27.1/docs/plugins/plugin-resources.md +76 -0
  19. janito-2.27.1/docs/plugins/publishing.md +253 -0
  20. janito-2.27.1/docs/plugins/remote-plugins.md +96 -0
  21. janito-2.27.1/docs/plugins/testing.md +253 -0
  22. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/session.py +37 -23
  23. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/__init__.py +2 -0
  24. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/help.py +6 -1
  25. janito-2.27.1/janito/cli/chat_mode/shell/commands/provider.py +25 -0
  26. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/toolbar.py +15 -1
  27. janito-2.27.1/janito/cli/cli_commands/enable_disable_plugin.py +64 -0
  28. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_plugins.py +20 -4
  29. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/getters.py +6 -0
  30. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/runner.py +15 -1
  31. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/setters.py +18 -6
  32. {janito-2.27.0 → janito-2.27.1}/janito/cli/main_cli.py +4 -5
  33. janito-2.27.1/janito/plugins/builtin.py +84 -0
  34. {janito-2.27.0 → janito-2.27.1}/janito/plugins/discovery.py +83 -1
  35. {janito-2.27.0 → janito-2.27.1}/janito/plugins/manager.py +2 -0
  36. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/ask_user.py +7 -1
  37. janito-2.27.1/janito/tools/base.py +11 -0
  38. {janito-2.27.0 → janito-2.27.1}/janito.egg-info/PKG-INFO +3 -1
  39. {janito-2.27.0 → janito-2.27.1}/janito.egg-info/SOURCES.txt +81 -8
  40. {janito-2.27.0 → janito-2.27.1}/janito.egg-info/requires.txt +3 -0
  41. janito-2.27.1/janito.egg-info/top_level.txt +1 -0
  42. janito-2.27.1/plugins/__init__.py +33 -0
  43. janito-2.27.1/plugins/core/__init__.py +7 -0
  44. janito-2.27.1/plugins/core/codeanalyzer/__init__.py +25 -0
  45. janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +1 -0
  46. janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/core.py +122 -0
  47. janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +47 -0
  48. janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +14 -0
  49. janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +303 -0
  50. janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +36 -0
  51. janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/__init__.py +1 -0
  52. janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/core.py +205 -0
  53. janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/match_lines.py +67 -0
  54. janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +73 -0
  55. janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +145 -0
  56. janito-2.27.1/plugins/core/filemanager/__init__.py +63 -0
  57. janito-2.27.1/plugins/core/filemanager/tools/copy_file.py +87 -0
  58. janito-2.27.1/plugins/core/filemanager/tools/create_directory.py +70 -0
  59. janito-2.27.1/plugins/core/filemanager/tools/create_file.py +87 -0
  60. janito-2.27.1/plugins/core/filemanager/tools/delete_text_in_file.py +134 -0
  61. janito-2.27.1/plugins/core/filemanager/tools/find_files.py +143 -0
  62. janito-2.27.1/plugins/core/filemanager/tools/move_file.py +131 -0
  63. janito-2.27.1/plugins/core/filemanager/tools/read_files.py +58 -0
  64. janito-2.27.1/plugins/core/filemanager/tools/remove_directory.py +55 -0
  65. janito-2.27.1/plugins/core/filemanager/tools/remove_file.py +58 -0
  66. janito-2.27.1/plugins/core/filemanager/tools/replace_text_in_file.py +270 -0
  67. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
  68. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/core.py +114 -0
  69. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +35 -0
  70. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +100 -0
  71. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +47 -0
  72. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +27 -0
  73. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +6 -0
  74. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +109 -0
  75. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +32 -0
  76. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +5 -0
  77. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +11 -0
  78. janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +6 -0
  79. janito-2.27.1/plugins/core/filemanager/tools/view_file.py +172 -0
  80. janito-2.27.1/plugins/core/system/__init__.py +17 -0
  81. janito-2.27.1/plugins/core/system/tools/run_bash_command.py +183 -0
  82. janito-2.27.1/plugins/core/system/tools/run_powershell_command.py +218 -0
  83. janito-2.27.1/plugins/dev/__init__.py +7 -0
  84. janito-2.27.1/plugins/dev/pythondev/__init__.py +24 -0
  85. janito-2.27.1/plugins/dev/pythondev/tools/python_code_run.py +172 -0
  86. janito-2.27.1/plugins/dev/pythondev/tools/python_command_run.py +170 -0
  87. janito-2.27.1/plugins/dev/pythondev/tools/python_file_run.py +171 -0
  88. janito-2.27.1/plugins/dev/visualization/__init__.py +17 -0
  89. janito-2.27.1/plugins/dev/visualization/tools/read_chart.py +259 -0
  90. janito-2.27.1/plugins/ui/__init__.py +7 -0
  91. janito-2.27.1/plugins/ui/userinterface/__init__.py +14 -0
  92. janito-2.27.1/plugins/ui/userinterface/tools/ask_user.py +110 -0
  93. janito-2.27.1/plugins/web/__init__.py +7 -0
  94. janito-2.27.1/plugins/web/webtools/__init__.py +25 -0
  95. janito-2.27.1/plugins/web/webtools/tools/fetch_url.py +411 -0
  96. janito-2.27.1/plugins/web/webtools/tools/open_html_in_browser.py +51 -0
  97. janito-2.27.1/plugins/web/webtools/tools/open_url.py +37 -0
  98. janito-2.27.1/plugins.txt +1 -0
  99. {janito-2.27.0 → janito-2.27.1}/pyproject.toml +1 -0
  100. janito-2.27.0/README-PLUGINS.md +0 -68
  101. janito-2.27.0/docs/guides/plugins.md +0 -209
  102. janito-2.27.0/docs/guides/remote-plugins.md +0 -198
  103. janito-2.27.0/janito-coder/janito_coder/__init__.py +0 -9
  104. janito-2.27.0/janito-coder/janito_coder/plugins/__init__.py +0 -27
  105. janito-2.27.0/janito-coder/janito_coder/plugins/code_navigator.py +0 -618
  106. janito-2.27.0/janito-coder/janito_coder/plugins/git_analyzer.py +0 -273
  107. janito-2.27.0/janito-coder/pyproject.toml +0 -347
  108. janito-2.27.0/janito.egg-info/top_level.txt +0 -2
  109. {janito-2.27.0 → janito-2.27.1}/.codespellrc +0 -0
  110. {janito-2.27.0 → janito-2.27.1}/.gitattributes +0 -0
  111. {janito-2.27.0 → janito-2.27.1}/.github/workflows/python-app.yml.disabled +0 -0
  112. {janito-2.27.0 → janito-2.27.1}/.gitignore +0 -0
  113. {janito-2.27.0 → janito-2.27.1}/.pre-commit-config.yaml +0 -0
  114. {janito-2.27.0 → janito-2.27.1}/.secrets.baseline +0 -0
  115. {janito-2.27.0 → janito-2.27.1}/.vscode/settings.json +0 -0
  116. {janito-2.27.0 → janito-2.27.1}/LICENSE +0 -0
  117. {janito-2.27.0 → janito-2.27.1}/MARKET_ANALYST_README.md +0 -0
  118. {janito-2.27.0 → janito-2.27.1}/README-dev.md +0 -0
  119. {janito-2.27.0 → janito-2.27.1}/README.md +0 -0
  120. {janito-2.27.0 → janito-2.27.1}/RELEASE_COMPARISON.md +0 -0
  121. {janito-2.27.0 → janito-2.27.1}/UPDATING_DOCS.md +0 -0
  122. {janito-2.27.0 → janito-2.27.1}/adding_mcp.txt +0 -0
  123. {janito-2.27.0 → janito-2.27.1}/docs/DIV.md +0 -0
  124. {janito-2.27.0 → janito-2.27.1}/docs/Interfaces.txt +0 -0
  125. {janito-2.27.0 → janito-2.27.1}/docs/TOOLBAR-STYLING.md +0 -0
  126. {janito-2.27.0 → janito-2.27.1}/docs/about/costs.md +0 -0
  127. {janito-2.27.0 → janito-2.27.1}/docs/about/vs-webchats.md +0 -0
  128. {janito-2.27.0 → janito-2.27.1}/docs/about/why.md +0 -0
  129. {janito-2.27.0 → janito-2.27.1}/docs/alibaba-setup.md +0 -0
  130. {janito-2.27.0 → janito-2.27.1}/docs/alternatives.md +0 -0
  131. {janito-2.27.0 → janito-2.27.1}/docs/cerebras-setup.md +0 -0
  132. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/CHANGELOG.md +0 -0
  133. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  134. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  135. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  136. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  137. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  138. {janito-2.27.0 → janito-2.27.1}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  139. {janito-2.27.0 → janito-2.27.1}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  140. {janito-2.27.0 → janito-2.27.1}/docs/code_intelligence/code-generation-challenges.md +0 -0
  141. {janito-2.27.0 → janito-2.27.1}/docs/code_intelligence/code-generation-observability.md +0 -0
  142. {janito-2.27.0 → janito-2.27.1}/docs/code_intelligence/our-approach.md +0 -0
  143. {janito-2.27.0 → janito-2.27.1}/docs/code_intelligence/why-string-replacement.md +0 -0
  144. {janito-2.27.0 → janito-2.27.1}/docs/concepts/analysis-style.md +0 -0
  145. {janito-2.27.0 → janito-2.27.1}/docs/concepts/human-guided-ai.md +0 -0
  146. {janito-2.27.0 → janito-2.27.1}/docs/concepts/index.md +0 -0
  147. {janito-2.27.0 → janito-2.27.1}/docs/concepts/language-model-clients.md +0 -0
  148. {janito-2.27.0 → janito-2.27.1}/docs/concepts/prompt-design-style.md +0 -0
  149. {janito-2.27.0 → janito-2.27.1}/docs/deepseek-setup.md +0 -0
  150. {janito-2.27.0 → janito-2.27.1}/docs/driver-flow.md +0 -0
  151. {janito-2.27.0 → janito-2.27.1}/docs/driver-request-cancellation.md +0 -0
  152. {janito-2.27.0 → janito-2.27.1}/docs/drivers/events.md +0 -0
  153. {janito-2.27.0 → janito-2.27.1}/docs/drivers.md +0 -0
  154. {janito-2.27.0 → janito-2.27.1}/docs/event-bus.md +0 -0
  155. {janito-2.27.0 → janito-2.27.1}/docs/guides/configuration.md +0 -0
  156. {janito-2.27.0 → janito-2.27.1}/docs/guides/developing.md +0 -0
  157. {janito-2.27.0 → janito-2.27.1}/docs/guides/disabled-tools.md +0 -0
  158. {janito-2.27.0 → janito-2.27.1}/docs/guides/installation.md +0 -0
  159. {janito-2.27.0 → janito-2.27.1}/docs/guides/market-data-sources.md +0 -0
  160. {janito-2.27.0 → janito-2.27.1}/docs/guides/profiles.md +0 -0
  161. {janito-2.27.0 → janito-2.27.1}/docs/guides/prompting/README.md +0 -0
  162. {janito-2.27.0 → janito-2.27.1}/docs/guides/read-chart-examples.md +0 -0
  163. {janito-2.27.0 → janito-2.27.1}/docs/guides/security-commands.md +0 -0
  164. {janito-2.27.0 → janito-2.27.1}/docs/guides/single-shot-terminal.md +0 -0
  165. {janito-2.27.0 → janito-2.27.1}/docs/guides/stock-market-guide.md +0 -0
  166. {janito-2.27.0 → janito-2.27.1}/docs/guides/terminal-shell.md +0 -0
  167. {janito-2.27.0 → janito-2.27.1}/docs/guides/tools-developer-guide.md +0 -0
  168. {janito-2.27.0 → janito-2.27.1}/docs/guides/url-whitelist.md +0 -0
  169. {janito-2.27.0 → janito-2.27.1}/docs/guides/using.md +0 -0
  170. {janito-2.27.0 → janito-2.27.1}/docs/guides/using_tools.md +0 -0
  171. {janito-2.27.0 → janito-2.27.1}/docs/ibm-setup.md +0 -0
  172. {janito-2.27.0 → janito-2.27.1}/docs/imgs/code-generation-observability.png +0 -0
  173. {janito-2.27.0 → janito-2.27.1}/docs/imgs/code_generation_observability.png +0 -0
  174. {janito-2.27.0 → janito-2.27.1}/docs/imgs/happy-programmer.png +0 -0
  175. {janito-2.27.0 → janito-2.27.1}/docs/imgs/happy-programmer.svg +0 -0
  176. {janito-2.27.0 → janito-2.27.1}/docs/imgs/terminal-one-shot.png +0 -0
  177. {janito-2.27.0 → janito-2.27.1}/docs/imgs/terminal-shell.png +0 -0
  178. {janito-2.27.0 → janito-2.27.1}/docs/imgs/terminal_one_shot.png +0 -0
  179. {janito-2.27.0 → janito-2.27.1}/docs/imgs/terminal_shell.png +0 -0
  180. {janito-2.27.0 → janito-2.27.1}/docs/index.md +0 -0
  181. {janito-2.27.0 → janito-2.27.1}/docs/llm-drivers-required-config.md +0 -0
  182. {janito-2.27.0 → janito-2.27.1}/docs/llm-drivers.md +0 -0
  183. {janito-2.27.0 → janito-2.27.1}/docs/meta/developer-toolchain.md +0 -0
  184. {janito-2.27.0 → janito-2.27.1}/docs/meta/quality-checks.txt +0 -0
  185. {janito-2.27.0 → janito-2.27.1}/docs/mistral-setup.md +0 -0
  186. {janito-2.27.0 → janito-2.27.1}/docs/moonshotai-setup.md +0 -0
  187. {janito-2.27.0 → janito-2.27.1}/docs/openai-setup.md +0 -0
  188. {janito-2.27.0 → janito-2.27.1}/docs/overrides/partials/copyright.html +0 -0
  189. {janito-2.27.0 → janito-2.27.1}/docs/plugins/README.md +0 -0
  190. {janito-2.27.0 → janito-2.27.1}/docs/provider-platform-access.md +0 -0
  191. {janito-2.27.0 → janito-2.27.1}/docs/pt/README-pt.md +0 -0
  192. {janito-2.27.0 → janito-2.27.1}/docs/pt/README.md +0 -0
  193. {janito-2.27.0 → janito-2.27.1}/docs/pt/configuracao.md +0 -0
  194. {janito-2.27.0 → janito-2.27.1}/docs/pt/exemplos.md +0 -0
  195. {janito-2.27.0 → janito-2.27.1}/docs/pt/faq-pt.md +0 -0
  196. {janito-2.27.0 → janito-2.27.1}/docs/pt/ferramentas.md +0 -0
  197. {janito-2.27.0 → janito-2.27.1}/docs/pt/guia-uso.md +0 -0
  198. {janito-2.27.0 → janito-2.27.1}/docs/pt/instalacao.md +0 -0
  199. {janito-2.27.0 → janito-2.27.1}/docs/pt/perfis.md +0 -0
  200. {janito-2.27.0 → janito-2.27.1}/docs/public-sources.md +0 -0
  201. {janito-2.27.0 → janito-2.27.1}/docs/reference/api.md +0 -0
  202. {janito-2.27.0 → janito-2.27.1}/docs/reference/azure-openai.md +0 -0
  203. {janito-2.27.0 → janito-2.27.1}/docs/reference/cli-options.md +0 -0
  204. {janito-2.27.0 → janito-2.27.1}/docs/reference/message-handler-model.md +0 -0
  205. {janito-2.27.0 → janito-2.27.1}/docs/reference/rich-message-handler.md +0 -0
  206. {janito-2.27.0 → janito-2.27.1}/docs/security.md +0 -0
  207. {janito-2.27.0 → janito-2.27.1}/docs/supported-providers-models.md +0 -0
  208. {janito-2.27.0 → janito-2.27.1}/docs/tools/search-text.md +0 -0
  209. {janito-2.27.0 → janito-2.27.1}/docs/tools-index.md +0 -0
  210. {janito-2.27.0 → janito-2.27.1}/docs/tools-natural-results.md +0 -0
  211. {janito-2.27.0 → janito-2.27.1}/docs/tools-precision.md +0 -0
  212. {janito-2.27.0 → janito-2.27.1}/docs/z-ai-setup.md +0 -0
  213. {janito-2.27.0 → janito-2.27.1}/examples/loop_protection_example.py +0 -0
  214. {janito-2.27.0 → janito-2.27.1}/examples/loop_protection_tool_example.py +0 -0
  215. {janito-2.27.0 → janito-2.27.1}/get_nasdaq_top.py +0 -0
  216. {janito-2.27.0 → janito-2.27.1}/ibm-logo.txt +0 -0
  217. {janito-2.27.0 → janito-2.27.1}/janito/README.md +0 -0
  218. {janito-2.27.0 → janito-2.27.1}/janito/__init__.py +0 -0
  219. {janito-2.27.0 → janito-2.27.1}/janito/__main__.py +0 -0
  220. {janito-2.27.0 → janito-2.27.1}/janito/_version.py +0 -0
  221. {janito-2.27.0 → janito-2.27.1}/janito/agent/setup_agent.py +0 -0
  222. {janito-2.27.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  223. {janito-2.27.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  224. {janito-2.27.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
  225. {janito-2.27.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  226. {janito-2.27.0 → janito-2.27.1}/janito/cli/__init__.py +0 -0
  227. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/bindings.py +0 -0
  228. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/chat_entry.py +0 -0
  229. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/prompt_style.py +0 -0
  230. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/script_runner.py +0 -0
  231. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/session_profile_select.py +0 -0
  232. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  233. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  234. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  235. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  236. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  237. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  238. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  239. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  240. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  241. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  242. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  243. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  244. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  245. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  246. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  247. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  248. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  249. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  250. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  251. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  252. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  253. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  254. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  255. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  256. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  257. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  258. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  259. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/input_history.py +0 -0
  260. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  261. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session/history.py +0 -0
  262. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  263. {janito-2.27.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  264. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_config.py +0 -0
  265. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_drivers.py +0 -0
  266. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_models.py +0 -0
  267. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_profiles.py +0 -0
  268. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_providers.py +0 -0
  269. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_providers_region.py +0 -0
  270. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/list_tools.py +0 -0
  271. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/model_selection.py +0 -0
  272. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/model_utils.py +0 -0
  273. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/ping_providers.py +0 -0
  274. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/set_api_key.py +0 -0
  275. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/show_config.py +0 -0
  276. {janito-2.27.0 → janito-2.27.1}/janito/cli/cli_commands/show_system_prompt.py +0 -0
  277. {janito-2.27.0 → janito-2.27.1}/janito/cli/config.py +0 -0
  278. {janito-2.27.0 → janito-2.27.1}/janito/cli/console.py +0 -0
  279. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/__init__.py +0 -0
  280. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/event_logger.py +0 -0
  281. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/model_guesser.py +0 -0
  282. {janito-2.27.0 → janito-2.27.1}/janito/cli/core/unsetters.py +0 -0
  283. {janito-2.27.0 → janito-2.27.1}/janito/cli/main.py +0 -0
  284. {janito-2.27.0 → janito-2.27.1}/janito/cli/prompt_core.py +0 -0
  285. {janito-2.27.0 → janito-2.27.1}/janito/cli/prompt_handler.py +0 -0
  286. {janito-2.27.0 → janito-2.27.1}/janito/cli/prompt_setup.py +0 -0
  287. {janito-2.27.0 → janito-2.27.1}/janito/cli/rich_terminal_reporter.py +0 -0
  288. {janito-2.27.0 → janito-2.27.1}/janito/cli/single_shot_mode/__init__.py +0 -0
  289. {janito-2.27.0 → janito-2.27.1}/janito/cli/single_shot_mode/handler.py +0 -0
  290. {janito-2.27.0 → janito-2.27.1}/janito/cli/utils.py +0 -0
  291. {janito-2.27.0 → janito-2.27.1}/janito/cli/verbose_output.py +0 -0
  292. {janito-2.27.0 → janito-2.27.1}/janito/config.py +0 -0
  293. {janito-2.27.0 → janito-2.27.1}/janito/config_manager.py +0 -0
  294. {janito-2.27.0 → janito-2.27.1}/janito/conversation_history.py +0 -0
  295. {janito-2.27.0 → janito-2.27.1}/janito/dir_walk_utils.py +0 -0
  296. {janito-2.27.0 → janito-2.27.1}/janito/docs/GETTING_STARTED.md +0 -0
  297. {janito-2.27.0 → janito-2.27.1}/janito/driver_events.py +0 -0
  298. {janito-2.27.0 → janito-2.27.1}/janito/drivers/azure_openai/driver.py +0 -0
  299. {janito-2.27.0 → janito-2.27.1}/janito/drivers/cerebras/__init__.py +0 -0
  300. {janito-2.27.0 → janito-2.27.1}/janito/drivers/dashscope.bak.zip +0 -0
  301. {janito-2.27.0 → janito-2.27.1}/janito/drivers/openai/README.md +0 -0
  302. {janito-2.27.0 → janito-2.27.1}/janito/drivers/openai/driver.py +0 -0
  303. {janito-2.27.0 → janito-2.27.1}/janito/drivers/openai_responses.bak.zip +0 -0
  304. {janito-2.27.0 → janito-2.27.1}/janito/drivers/zai/__init__.py +0 -0
  305. {janito-2.27.0 → janito-2.27.1}/janito/drivers/zai/driver.py +0 -0
  306. {janito-2.27.0 → janito-2.27.1}/janito/event_bus/__init__.py +0 -0
  307. {janito-2.27.0 → janito-2.27.1}/janito/event_bus/bus.py +0 -0
  308. {janito-2.27.0 → janito-2.27.1}/janito/event_bus/event.py +0 -0
  309. {janito-2.27.0 → janito-2.27.1}/janito/event_bus/handler.py +0 -0
  310. {janito-2.27.0 → janito-2.27.1}/janito/event_bus/queue_bus.py +0 -0
  311. {janito-2.27.0 → janito-2.27.1}/janito/exceptions.py +0 -0
  312. {janito-2.27.0 → janito-2.27.1}/janito/formatting.py +0 -0
  313. {janito-2.27.0 → janito-2.27.1}/janito/formatting_token.py +0 -0
  314. {janito-2.27.0 → janito-2.27.1}/janito/gitignore_utils.py +0 -0
  315. {janito-2.27.0 → janito-2.27.1}/janito/i18n/__init__.py +0 -0
  316. {janito-2.27.0 → janito-2.27.1}/janito/i18n/it.py +0 -0
  317. {janito-2.27.0 → janito-2.27.1}/janito/i18n/messages.py +0 -0
  318. {janito-2.27.0 → janito-2.27.1}/janito/i18n/pt.py +0 -0
  319. {janito-2.27.0 → janito-2.27.1}/janito/llm/README.md +0 -0
  320. {janito-2.27.0 → janito-2.27.1}/janito/llm/__init__.py +0 -0
  321. {janito-2.27.0 → janito-2.27.1}/janito/llm/agent.py +0 -0
  322. {janito-2.27.0 → janito-2.27.1}/janito/llm/auth.py +0 -0
  323. {janito-2.27.0 → janito-2.27.1}/janito/llm/auth_utils.py +0 -0
  324. {janito-2.27.0 → janito-2.27.1}/janito/llm/driver.py +0 -0
  325. {janito-2.27.0 → janito-2.27.1}/janito/llm/driver_config.py +0 -0
  326. {janito-2.27.0 → janito-2.27.1}/janito/llm/driver_config_builder.py +0 -0
  327. {janito-2.27.0 → janito-2.27.1}/janito/llm/driver_input.py +0 -0
  328. {janito-2.27.0 → janito-2.27.1}/janito/llm/message_parts.py +0 -0
  329. {janito-2.27.0 → janito-2.27.1}/janito/llm/model.py +0 -0
  330. {janito-2.27.0 → janito-2.27.1}/janito/llm/provider.py +0 -0
  331. {janito-2.27.0 → janito-2.27.1}/janito/mkdocs.yml +0 -0
  332. {janito-2.27.0 → janito-2.27.1}/janito/perf_singleton.py +0 -0
  333. {janito-2.27.0 → janito-2.27.1}/janito/performance_collector.py +0 -0
  334. {janito-2.27.0 → janito-2.27.1}/janito/platform_discovery.py +0 -0
  335. {janito-2.27.0 → janito-2.27.1}/janito/plugins/__init__.py +0 -0
  336. {janito-2.27.0 → janito-2.27.1}/janito/plugins/base.py +0 -0
  337. {janito-2.27.0 → janito-2.27.1}/janito/plugins/config.py +0 -0
  338. {janito-2.27.0 → janito-2.27.1}/janito/provider_config.py +0 -0
  339. {janito-2.27.0 → janito-2.27.1}/janito/provider_registry.py +0 -0
  340. {janito-2.27.0 → janito-2.27.1}/janito/providers/__init__.py +0 -0
  341. {janito-2.27.0 → janito-2.27.1}/janito/providers/alibaba/__init__.py +0 -0
  342. {janito-2.27.0 → janito-2.27.1}/janito/providers/alibaba/model_info.py +0 -0
  343. {janito-2.27.0 → janito-2.27.1}/janito/providers/alibaba/provider.py +0 -0
  344. {janito-2.27.0 → janito-2.27.1}/janito/providers/anthropic/model_info.py +0 -0
  345. {janito-2.27.0 → janito-2.27.1}/janito/providers/anthropic/provider.py +0 -0
  346. {janito-2.27.0 → janito-2.27.1}/janito/providers/azure_openai/model_info.py +0 -0
  347. {janito-2.27.0 → janito-2.27.1}/janito/providers/azure_openai/provider.py +0 -0
  348. {janito-2.27.0 → janito-2.27.1}/janito/providers/cerebras/__init__.py +0 -0
  349. {janito-2.27.0 → janito-2.27.1}/janito/providers/cerebras/model_info.py +0 -0
  350. {janito-2.27.0 → janito-2.27.1}/janito/providers/cerebras/provider.py +0 -0
  351. {janito-2.27.0 → janito-2.27.1}/janito/providers/dashscope.bak.zip +0 -0
  352. {janito-2.27.0 → janito-2.27.1}/janito/providers/deepseek/__init__.py +0 -0
  353. {janito-2.27.0 → janito-2.27.1}/janito/providers/deepseek/model_info.py +0 -0
  354. {janito-2.27.0 → janito-2.27.1}/janito/providers/deepseek/provider.py +0 -0
  355. {janito-2.27.0 → janito-2.27.1}/janito/providers/google/__init__.py +0 -0
  356. {janito-2.27.0 → janito-2.27.1}/janito/providers/google/model_info.py +0 -0
  357. {janito-2.27.0 → janito-2.27.1}/janito/providers/google/provider.py +0 -0
  358. {janito-2.27.0 → janito-2.27.1}/janito/providers/ibm/README.md +0 -0
  359. {janito-2.27.0 → janito-2.27.1}/janito/providers/ibm/__init__.py +0 -0
  360. {janito-2.27.0 → janito-2.27.1}/janito/providers/ibm/model_info.py +0 -0
  361. {janito-2.27.0 → janito-2.27.1}/janito/providers/ibm/provider.py +0 -0
  362. {janito-2.27.0 → janito-2.27.1}/janito/providers/mistral/__init__.py +0 -0
  363. {janito-2.27.0 → janito-2.27.1}/janito/providers/mistral/model_info.py +0 -0
  364. {janito-2.27.0 → janito-2.27.1}/janito/providers/mistral/provider.py +0 -0
  365. {janito-2.27.0 → janito-2.27.1}/janito/providers/moonshotai/__init__.py +0 -0
  366. {janito-2.27.0 → janito-2.27.1}/janito/providers/moonshotai/model_info.py +0 -0
  367. {janito-2.27.0 → janito-2.27.1}/janito/providers/moonshotai/provider.py +0 -0
  368. {janito-2.27.0 → janito-2.27.1}/janito/providers/openai/__init__.py +0 -0
  369. {janito-2.27.0 → janito-2.27.1}/janito/providers/openai/model_info.py +0 -0
  370. {janito-2.27.0 → janito-2.27.1}/janito/providers/openai/provider.py +0 -0
  371. {janito-2.27.0 → janito-2.27.1}/janito/providers/openai/schema_generator.py +0 -0
  372. {janito-2.27.0 → janito-2.27.1}/janito/providers/registry.py +0 -0
  373. {janito-2.27.0 → janito-2.27.1}/janito/providers/zai/__init__.py +0 -0
  374. {janito-2.27.0 → janito-2.27.1}/janito/providers/zai/model_info.py +0 -0
  375. {janito-2.27.0 → janito-2.27.1}/janito/providers/zai/provider.py +0 -0
  376. {janito-2.27.0 → janito-2.27.1}/janito/providers/zai/schema_generator.py +0 -0
  377. {janito-2.27.0 → janito-2.27.1}/janito/regions/__init__.py +0 -0
  378. {janito-2.27.0 → janito-2.27.1}/janito/regions/cli.py +0 -0
  379. {janito-2.27.0 → janito-2.27.1}/janito/regions/geo_utils.py +0 -0
  380. {janito-2.27.0 → janito-2.27.1}/janito/regions/provider_regions.py +0 -0
  381. {janito-2.27.0 → janito-2.27.1}/janito/report_events.py +0 -0
  382. {janito-2.27.0 → janito-2.27.1}/janito/shell.bak.zip +0 -0
  383. {janito-2.27.0 → janito-2.27.1}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  384. {janito-2.27.0 → janito-2.27.1}/janito/tools/README.md +0 -0
  385. {janito-2.27.0 → janito-2.27.1}/janito/tools/__init__.py +0 -0
  386. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/__init__.py +0 -0
  387. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/__init__.py +0 -0
  388. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/adapter.py +0 -0
  389. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/copy_file.py +0 -0
  390. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/create_directory.py +0 -0
  391. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/create_file.py +0 -0
  392. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/delete_text_in_file.py +0 -0
  393. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/fetch_url.py +0 -0
  394. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/find_files.py +0 -0
  395. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/__init__.py +0 -0
  396. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/core.py +0 -0
  397. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/java_outline.py +0 -0
  398. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/markdown_outline.py +0 -0
  399. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/python_outline.py +0 -0
  400. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/search_outline.py +0 -0
  401. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/move_file.py +0 -0
  402. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/open_html_in_browser.py +0 -0
  403. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/open_url.py +0 -0
  404. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/python_code_run.py +0 -0
  405. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/python_command_run.py +0 -0
  406. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/python_file_run.py +0 -0
  407. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/read_chart.py +0 -0
  408. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/read_files.py +0 -0
  409. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/remove_directory.py +0 -0
  410. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/remove_file.py +0 -0
  411. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/replace_text_in_file.py +0 -0
  412. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/run_bash_command.py +0 -0
  413. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/run_powershell_command.py +0 -0
  414. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/__init__.py +0 -0
  415. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/core.py +0 -0
  416. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/match_lines.py +0 -0
  417. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/pattern_utils.py +0 -0
  418. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/traverse_directory.py +0 -0
  419. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/__init__.py +0 -0
  420. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/core.py +0 -0
  421. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/css_validator.py +0 -0
  422. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/html_validator.py +0 -0
  423. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/jinja2_validator.py +0 -0
  424. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/js_validator.py +0 -0
  425. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/json_validator.py +0 -0
  426. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/markdown_validator.py +0 -0
  427. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/ps1_validator.py +0 -0
  428. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/python_validator.py +0 -0
  429. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/xml_validator.py +0 -0
  430. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/yaml_validator.py +0 -0
  431. {janito-2.27.0 → janito-2.27.1}/janito/tools/adapters/local/view_file.py +0 -0
  432. {janito-2.27.0 → janito-2.27.1}/janito/tools/disabled_tools.py +0 -0
  433. {janito-2.27.0 → janito-2.27.1}/janito/tools/inspect_registry.py +0 -0
  434. {janito-2.27.0 → janito-2.27.1}/janito/tools/loop_protection.py +0 -0
  435. {janito-2.27.0 → janito-2.27.1}/janito/tools/loop_protection_decorator.py +0 -0
  436. {janito-2.27.0 → janito-2.27.1}/janito/tools/outline_file.bak.zip +0 -0
  437. {janito-2.27.0 → janito-2.27.1}/janito/tools/path_security.py +0 -0
  438. {janito-2.27.0 → janito-2.27.1}/janito/tools/path_utils.py +0 -0
  439. {janito-2.27.0 → janito-2.27.1}/janito/tools/permissions.py +0 -0
  440. {janito-2.27.0 → janito-2.27.1}/janito/tools/permissions_parse.py +0 -0
  441. {janito-2.27.0 → janito-2.27.1}/janito/tools/tool_base.py +0 -0
  442. {janito-2.27.0 → janito-2.27.1}/janito/tools/tool_events.py +0 -0
  443. {janito-2.27.0 → janito-2.27.1}/janito/tools/tool_run_exception.py +0 -0
  444. {janito-2.27.0 → janito-2.27.1}/janito/tools/tool_use_tracker.py +0 -0
  445. {janito-2.27.0 → janito-2.27.1}/janito/tools/tool_utils.py +0 -0
  446. {janito-2.27.0 → janito-2.27.1}/janito/tools/tools_adapter.py +0 -0
  447. {janito-2.27.0 → janito-2.27.1}/janito/tools/tools_schema.py +0 -0
  448. {janito-2.27.0 → janito-2.27.1}/janito/tools/url_whitelist.py +0 -0
  449. {janito-2.27.0 → janito-2.27.1}/janito/utils.py +0 -0
  450. {janito-2.27.0 → janito-2.27.1}/janito.egg-info/dependency_links.txt +0 -0
  451. {janito-2.27.0 → janito-2.27.1}/janito.egg-info/entry_points.txt +0 -0
  452. {janito-2.27.0 → janito-2.27.1}/market_prompt_fix.py +0 -0
  453. {janito-2.27.0 → janito-2.27.1}/market_test.py +0 -0
  454. {janito-2.27.0 → janito-2.27.1}/mkdocs.yml +0 -0
  455. {janito-2.27.0 → janito-2.27.1}/mkdocs_hooks.py +0 -0
  456. {janito-2.27.0 → janito-2.27.1}/plugins/example_plugin.py +0 -0
  457. {janito-2.27.0 → janito-2.27.1}/pytest.ini +0 -0
  458. {janito-2.27.0 → janito-2.27.1}/requirements-dev.txt +0 -0
  459. {janito-2.27.0 → janito-2.27.1}/requirements.txt +0 -0
  460. {janito-2.27.0 → janito-2.27.1}/setup.cfg +0 -0
  461. {janito-2.27.0 → janito-2.27.1}/test_example.py +0 -0
  462. {janito-2.27.0 → janito-2.27.1}/test_key_field_behavior.py +0 -0
  463. {janito-2.27.0 → janito-2.27.1}/test_key_field_protection.py +0 -0
  464. {janito-2.27.0 → janito-2.27.1}/test_loop_protection_return.py +0 -0
  465. {janito-2.27.0 → janito-2.27.1}/test_market_analyst.py +0 -0
  466. {janito-2.27.0 → janito-2.27.1}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
  467. {janito-2.27.0 → janito-2.27.1}/tests/adapters/local/test_read_files.py +0 -0
  468. {janito-2.27.0 → janito-2.27.1}/tests/test_cli_list_models.py +0 -0
  469. {janito-2.27.0 → janito-2.27.1}/tests/test_cli_list_providers.py +0 -0
  470. {janito-2.27.0 → janito-2.27.1}/tests/test_cli_list_providers_alibaba.py +0 -0
  471. {janito-2.27.0 → janito-2.27.1}/tests/test_cli_list_providers_moonshotai.py +0 -0
  472. {janito-2.27.0 → janito-2.27.1}/tests/test_cli_version.py +0 -0
  473. {janito-2.27.0 → janito-2.27.1}/tests/test_disabled_tools.py +0 -0
  474. {janito-2.27.0 → janito-2.27.1}/tests/test_plugin_system.py +0 -0
  475. {janito-2.27.0 → janito-2.27.1}/tests/test_provider_alibaba.py +0 -0
  476. {janito-2.27.0 → janito-2.27.1}/tests/test_provider_cerebras.py +0 -0
  477. {janito-2.27.0 → janito-2.27.1}/tests/test_provider_moonshotai.py +0 -0
  478. {janito-2.27.0 → janito-2.27.1}/tools/release.py +0 -0
  479. {janito-2.27.0 → janito-2.27.1}/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.27.1
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
@@ -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.
@@ -0,0 +1,65 @@
1
+ # File Manager Plugin
2
+
3
+ ## Overview
4
+
5
+ The File Manager plugin provides essential file and directory operations for managing project files. This plugin enables basic file system operations that are crucial for code editing and project management.
6
+
7
+ ## Resources Provided
8
+
9
+ ### Tools
10
+
11
+ | Tool Name | Function | Description |
12
+ |-----------|----------|-------------|
13
+ | `create_file` | Create new files with content | Creates a new file at the specified path with optional content and overwrite capability |
14
+ | `read_files` | Read multiple files at once | Reads the contents of multiple files and returns them as a concatenated string |
15
+ | `view_file` | Read specific portions of files | Reads specific lines or the entire content of a file with optional line range |
16
+ | `replace_text_in_file` | Find and replace text in files | Searches for exact text in a file and replaces it with new text (single or all occurrences) |
17
+ | `validate_file_syntax` | Check file syntax | Validates the syntax of various file types (Python, Markdown, JSON, etc.) |
18
+ | `create_directory` | Create new directories | Creates a new directory at the specified path |
19
+ | `remove_directory` | Remove directories | Deletes directories, with optional recursive removal of non-empty directories |
20
+ | `remove_file` | Delete files | Removes a file at the specified path |
21
+ | `copy_file` | Copy files or directories | Copies one or more files/directories to a target location |
22
+ | `move_file` | Move or rename files/directories | Moves or renames files and directories |
23
+ | `find_files` | Search for files by pattern | Finds files matching a pattern in specified directories, respecting .gitignore |
24
+
25
+ ## Usage Examples
26
+
27
+ ### Creating a New File
28
+ ```json
29
+ {
30
+ "tool": "create_file",
31
+ "path": "src/hello.py",
32
+ "content": "print('Hello, World!')"
33
+ }
34
+ ```
35
+
36
+ ### Reading Multiple Files
37
+ ```json
38
+ {
39
+ "tool": "read_files",
40
+ "paths": ["src/main.py", "src/utils.py"]
41
+ }
42
+ ```
43
+
44
+ ### Finding Python Files
45
+ ```json
46
+ {
47
+ "tool": "find_files",
48
+ "paths": ".",
49
+ "pattern": "*.py"
50
+ }
51
+ ```
52
+
53
+ ## Configuration
54
+
55
+ This plugin does not require any specific configuration and uses the system's default file permissions and access controls.
56
+
57
+ ## Security Considerations
58
+
59
+ - File operations are subject to the user's file system permissions
60
+ - Path validation prevents directory traversal attacks
61
+ - Sensitive file operations require explicit user confirmation in interactive mode
62
+
63
+ ## Integration
64
+
65
+ The File Manager plugin integrates with the core Janito system to provide file operations that can be used in automation scripts, code generation workflows, and project management tasks.
@@ -0,0 +1,64 @@
1
+ # Python Development Plugin
2
+
3
+ ## Overview
4
+
5
+ The Python Development plugin provides tools for Python code execution and development. This plugin enables running Python code in various ways, supporting development, testing, and automation workflows.
6
+
7
+ ## Resources Provided
8
+
9
+ ### Tools
10
+
11
+ | Tool Name | Function | Description |
12
+ |-----------|----------|-------------|
13
+ | `python_code_run` | Execute Python code via stdin | Runs Python code by passing it to the interpreter via standard input |
14
+ | `python_command_run` | Execute Python with -c flag | Executes Python code using the `python -c` command-line flag |
15
+ | `python_file_run` | Run Python script files | Executes Python scripts from files with configurable timeout |
16
+
17
+ ## Usage Examples
18
+
19
+ ### Running Python Code
20
+ ```json
21
+ {
22
+ "tool": "python_code_run",
23
+ "code": "print('Hello from Python!')\nfor i in range(3):\n print(f'Iteration {i}')"
24
+ }
25
+ ```
26
+
27
+ ### Executing a One-liner
28
+ ```json
29
+ {
30
+ "tool": "python_command_run",
31
+ "code": "import sys; print(f'Python {sys.version}')"
32
+ }
33
+ ```
34
+
35
+ ### Running a Script File
36
+ ```json
37
+ {
38
+ "tool": "python_file_run",
39
+ "path": "scripts/data_processor.py",
40
+ "timeout": 120
41
+ }
42
+ ```
43
+
44
+ ## Configuration
45
+
46
+ This plugin does not require any specific configuration. Python execution uses the system's default Python interpreter and environment.
47
+
48
+ ## Security Considerations
49
+
50
+ - Code execution requires explicit user permission
51
+ - All Python operations are sandboxed and monitored
52
+ - Long-running scripts are automatically terminated based on timeout settings
53
+ - Access to system resources is controlled through Python's security model
54
+
55
+ ## Integration
56
+
57
+ The Python Development plugin integrates with the code execution system to provide:
58
+
59
+ - Interactive Python development environment
60
+ - Automated testing and validation
61
+ - Script-based automation workflows
62
+ - Dynamic code generation and execution
63
+
64
+ This enables powerful Python-based automation while maintaining security boundaries and user control.