janito 3.8.0__tar.gz → 3.10.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 (497) hide show
  1. {janito-3.8.0 → janito-3.10.0}/.gitignore +71 -66
  2. {janito-3.8.0 → janito-3.10.0}/PKG-INFO +84 -84
  3. janito-3.10.0/README.md +49 -0
  4. {janito-3.8.0 → janito-3.10.0}/docs/about/why.md +1 -1
  5. janito-3.10.0/docs/agent/agent-lifecycle.md +75 -0
  6. janito-3.10.0/docs/agent/tools-workflow-lifecycle.md +116 -0
  7. {janito-3.8.0 → janito-3.10.0}/docs/cerebras-setup.md +73 -73
  8. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG.md +1 -1
  9. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +1 -1
  10. {janito-3.8.0 → janito-3.10.0}/docs/concepts/analysis-style.md +40 -41
  11. {janito-3.8.0 → janito-3.10.0}/docs/concepts/language-model-clients.md +45 -45
  12. {janito-3.8.0 → janito-3.10.0}/docs/concepts/prompt-design-style.md +96 -97
  13. {janito-3.8.0 → janito-3.10.0}/docs/guides/disabled-tools.md +2 -2
  14. {janito-3.8.0 → janito-3.10.0}/docs/guides/security-commands.md +2 -2
  15. {janito-3.8.0 → janito-3.10.0}/docs/guides/tools-developer-guide.md +2 -2
  16. {janito-3.8.0 → janito-3.10.0}/docs/guides/url-whitelist.md +3 -3
  17. {janito-3.8.0 → janito-3.10.0}/docs/meta/developer-toolchain.md +39 -40
  18. {janito-3.8.0 → janito-3.10.0}/docs/plugins/architecture.md +2 -2
  19. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/filemanager.md +48 -1
  20. {janito-3.8.0 → janito-3.10.0}/docs/plugins/testing.md +1 -1
  21. {janito-3.8.0 → janito-3.10.0}/docs/reference/api.md +106 -106
  22. {janito-3.8.0 → janito-3.10.0}/docs/reference/cli-options.md +1 -1
  23. {janito-3.8.0 → janito-3.10.0}/examples/loop_protection_tool_example.py +1 -1
  24. janito-3.10.0/janito/agent_events.py +75 -0
  25. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/session.py +1 -0
  26. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/__init__.py +2 -0
  27. janito-3.10.0/janito/cli/chat_mode/shell/commands/interactive.py +33 -0
  28. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/toolbar.py +16 -1
  29. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_tools.py +1 -1
  30. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/runner.py +33 -0
  31. {janito-3.8.0 → janito-3.10.0}/janito/cli/main_cli.py +9 -0
  32. {janito-3.8.0 → janito-3.10.0}/janito/cli/prompt_core.py +301 -257
  33. {janito-3.8.0 → janito-3.10.0}/janito/cli/rich_terminal_reporter.py +170 -171
  34. {janito-3.8.0 → janito-3.10.0}/janito/cli/single_shot_mode/handler.py +19 -0
  35. {janito-3.8.0 → janito-3.10.0}/janito/llm/agent.py +65 -0
  36. {janito-3.8.0 → janito-3.10.0/janito}/plugins/core/filemanager/tools/validate_file_syntax/core.py +7 -2
  37. janito-3.10.0/janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py +28 -0
  38. {janito-3.8.0 → janito-3.10.0}/janito/plugins/manager.py +1 -1
  39. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/__init__.py +7 -0
  40. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/adapter.py +1 -1
  41. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/ask_user.py +1 -1
  42. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/copy_file.py +1 -1
  43. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/create_directory.py +45 -2
  44. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/create_file.py +10 -6
  45. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/delete_text_in_file.py +2 -2
  46. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/fetch_url.py +3 -3
  47. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/find_files.py +1 -1
  48. {janito-3.8.0/plugins/core/codeanalyzer/tools → janito-3.10.0/janito/plugins/tools/local}/get_file_outline/core.py +2 -2
  49. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/move_file.py +1 -1
  50. {janito-3.8.0/plugins/web/webtools/tools → janito-3.10.0/janito/plugins/tools/local}/open_html_in_browser.py +1 -1
  51. {janito-3.8.0/plugins/web/webtools/tools → janito-3.10.0/janito/plugins/tools/local}/open_url.py +1 -1
  52. {janito-3.8.0/plugins/dev/pythondev/tools → janito-3.10.0/janito/plugins/tools/local}/python_code_run.py +1 -1
  53. {janito-3.8.0/plugins/dev/pythondev/tools → janito-3.10.0/janito/plugins/tools/local}/python_command_run.py +1 -1
  54. {janito-3.8.0/plugins/dev/pythondev/tools → janito-3.10.0/janito/plugins/tools/local}/python_file_run.py +1 -1
  55. {janito-3.8.0/plugins/dev/visualization/tools → janito-3.10.0/janito/plugins/tools/local}/read_chart.py +1 -1
  56. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/read_files.py +1 -1
  57. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/remove_directory.py +1 -1
  58. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/remove_file.py +1 -1
  59. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/replace_text_in_file.py +2 -2
  60. {janito-3.8.0/plugins/core/system/tools → janito-3.10.0/janito/plugins/tools/local}/run_bash_command.py +1 -1
  61. {janito-3.8.0/plugins/core/system/tools → janito-3.10.0/janito/plugins/tools/local}/run_powershell_command.py +1 -1
  62. {janito-3.8.0/plugins/core/codeanalyzer/tools → janito-3.10.0/janito/plugins/tools/local}/search_text/core.py +2 -2
  63. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/show_image.py +1 -1
  64. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/show_image_grid.py +1 -1
  65. janito-3.10.0/janito/plugins/tools/local/validate_file_syntax/core.py +119 -0
  66. janito-3.10.0/janito/plugins/tools/local/validate_file_syntax/txt_validator.py +28 -0
  67. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/view_file.py +1 -1
  68. janito-3.10.0/janito/tests/test_tool_adapter_case_insensitive.py +112 -0
  69. {janito-3.8.0 → janito-3.10.0}/janito/tools/__init__.py +2 -2
  70. {janito-3.8.0 → janito-3.10.0}/janito/tools/inspect_registry.py +1 -1
  71. {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_base.py +8 -1
  72. {janito-3.8.0 → janito-3.10.0}/janito/tools/tools_adapter.py +514 -510
  73. {janito-3.8.0 → janito-3.10.0}/janito.egg-info/PKG-INFO +84 -84
  74. {janito-3.8.0 → janito-3.10.0}/janito.egg-info/SOURCES.txt +63 -64
  75. janito-3.10.0/janito.egg-info/top_level.txt +1 -0
  76. {janito-3.8.0 → janito-3.10.0}/mkdocs.yml +88 -88
  77. {janito-3.8.0 → janito-3.10.0}/mkdocs_hooks.py +51 -51
  78. janito-3.10.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
  79. {janito-3.8.0 → janito-3.10.0}/plugins/web/webtools/tools/fetch_url.py +2 -2
  80. {janito-3.8.0 → janito-3.10.0}/setup.cfg +4 -4
  81. janito-3.10.0/tests/local/test_read_file/__init__.py +1 -0
  82. janito-3.10.0/tests/local/test_read_file/read_file.py +69 -0
  83. janito-3.10.0/tests/local/test_read_file/test_read_file.py +83 -0
  84. janito-3.8.0/README.md +0 -49
  85. janito-3.8.0/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -52
  86. janito-3.8.0/docs/plugins/MIGRATION_COMPLETE.md +0 -73
  87. janito-3.8.0/janito/tools/adapters/local/create_directory.py +0 -70
  88. janito-3.8.0/janito.egg-info/top_level.txt +0 -2
  89. janito-3.8.0/market_test.py +0 -108
  90. janito-3.8.0/pytest.ini +0 -3
  91. janito-3.8.0/test.txt +0 -1
  92. janito-3.8.0/test_example.py +0 -90
  93. janito-3.8.0/test_http_errors.py +0 -100
  94. janito-3.8.0/test_http_errors_direct.py +0 -53
  95. janito-3.8.0/test_key_field_behavior.py +0 -104
  96. janito-3.8.0/test_key_field_protection.py +0 -74
  97. janito-3.8.0/test_loop_protection_return.py +0 -67
  98. janito-3.8.0/test_market_analyst.py +0 -133
  99. {janito-3.8.0 → janito-3.10.0}/.codespellrc +0 -0
  100. {janito-3.8.0 → janito-3.10.0}/.gitattributes +0 -0
  101. {janito-3.8.0 → janito-3.10.0}/.github/workflows/python-app.yml.disabled +0 -0
  102. {janito-3.8.0 → janito-3.10.0}/.pre-commit-config.yaml +0 -0
  103. {janito-3.8.0 → janito-3.10.0}/.secrets.baseline +0 -0
  104. {janito-3.8.0 → janito-3.10.0}/.vscode/settings.json +0 -0
  105. {janito-3.8.0 → janito-3.10.0}/LICENSE +0 -0
  106. {janito-3.8.0 → janito-3.10.0}/MARKET_ANALYST_README.md +0 -0
  107. {janito-3.8.0 → janito-3.10.0}/README-dev.md +0 -0
  108. {janito-3.8.0 → janito-3.10.0}/RELEASE_COMPARISON.md +0 -0
  109. {janito-3.8.0 → janito-3.10.0}/UPDATING_DOCS.md +0 -0
  110. {janito-3.8.0 → janito-3.10.0}/adding_mcp.txt +0 -0
  111. {janito-3.8.0 → janito-3.10.0}/docs/CHANGELOG.md +0 -0
  112. {janito-3.8.0 → janito-3.10.0}/docs/DIV.md +0 -0
  113. {janito-3.8.0 → janito-3.10.0}/docs/Interfaces.txt +0 -0
  114. {janito-3.8.0 → janito-3.10.0}/docs/PROFILES.md +0 -0
  115. {janito-3.8.0 → janito-3.10.0}/docs/TOOLBAR-STYLING.md +0 -0
  116. {janito-3.8.0 → janito-3.10.0}/docs/about/costs.md +0 -0
  117. {janito-3.8.0 → janito-3.10.0}/docs/about/vs-webchats.md +0 -0
  118. {janito-3.8.0 → janito-3.10.0}/docs/alibaba-setup.md +0 -0
  119. {janito-3.8.0 → janito-3.10.0}/docs/alternatives.md +0 -0
  120. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  121. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  122. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  123. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  124. {janito-3.8.0 → janito-3.10.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  125. {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  126. {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
  127. {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/code-generation-observability.md +0 -0
  128. {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/our-approach.md +0 -0
  129. {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/why-string-replacement.md +0 -0
  130. {janito-3.8.0 → janito-3.10.0}/docs/concepts/human-guided-ai.md +0 -0
  131. {janito-3.8.0 → janito-3.10.0}/docs/concepts/index.md +0 -0
  132. {janito-3.8.0 → janito-3.10.0}/docs/deepseek-setup.md +0 -0
  133. {janito-3.8.0 → janito-3.10.0}/docs/driver-flow.md +0 -0
  134. {janito-3.8.0 → janito-3.10.0}/docs/driver-request-cancellation.md +0 -0
  135. {janito-3.8.0 → janito-3.10.0}/docs/drivers/events.md +0 -0
  136. {janito-3.8.0 → janito-3.10.0}/docs/drivers.md +0 -0
  137. {janito-3.8.0 → janito-3.10.0}/docs/event-bus.md +0 -0
  138. {janito-3.8.0 → janito-3.10.0}/docs/guides/configuration.md +0 -0
  139. {janito-3.8.0 → janito-3.10.0}/docs/guides/developing.md +0 -0
  140. {janito-3.8.0 → janito-3.10.0}/docs/guides/installation.md +0 -0
  141. {janito-3.8.0 → janito-3.10.0}/docs/guides/market-data-sources.md +0 -0
  142. {janito-3.8.0 → janito-3.10.0}/docs/guides/profiles.md +0 -0
  143. {janito-3.8.0 → janito-3.10.0}/docs/guides/prompting/README.md +0 -0
  144. {janito-3.8.0 → janito-3.10.0}/docs/guides/read-chart-examples.md +0 -0
  145. {janito-3.8.0 → janito-3.10.0}/docs/guides/single-shot-terminal.md +0 -0
  146. {janito-3.8.0 → janito-3.10.0}/docs/guides/stock-market-guide.md +0 -0
  147. {janito-3.8.0 → janito-3.10.0}/docs/guides/terminal-shell.md +0 -0
  148. {janito-3.8.0 → janito-3.10.0}/docs/guides/using.md +0 -0
  149. {janito-3.8.0 → janito-3.10.0}/docs/guides/using_tools.md +0 -0
  150. {janito-3.8.0 → janito-3.10.0}/docs/ibm-setup.md +0 -0
  151. {janito-3.8.0 → janito-3.10.0}/docs/imgs/code-generation-observability.png +0 -0
  152. {janito-3.8.0 → janito-3.10.0}/docs/imgs/code_generation_observability.png +0 -0
  153. {janito-3.8.0 → janito-3.10.0}/docs/imgs/happy-programmer.png +0 -0
  154. {janito-3.8.0 → janito-3.10.0}/docs/imgs/happy-programmer.svg +0 -0
  155. {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal-one-shot.png +0 -0
  156. {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal-shell.png +0 -0
  157. {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal_one_shot.png +0 -0
  158. {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal_shell.png +0 -0
  159. {janito-3.8.0 → janito-3.10.0}/docs/index.md +0 -0
  160. {janito-3.8.0 → janito-3.10.0}/docs/llm-drivers-required-config.md +0 -0
  161. {janito-3.8.0 → janito-3.10.0}/docs/llm-drivers.md +0 -0
  162. {janito-3.8.0 → janito-3.10.0}/docs/meta/quality-checks.txt +0 -0
  163. {janito-3.8.0 → janito-3.10.0}/docs/mistral-setup.md +0 -0
  164. {janito-3.8.0 → janito-3.10.0}/docs/moonshot-setup.md +0 -0
  165. {janito-3.8.0 → janito-3.10.0}/docs/openai-setup.md +0 -0
  166. {janito-3.8.0 → janito-3.10.0}/docs/overrides/partials/copyright.html +0 -0
  167. {janito-3.8.0 → janito-3.10.0}/docs/plugins/README.md +0 -0
  168. {janito-3.8.0 → janito-3.10.0}/docs/plugins/api-reference.md +0 -0
  169. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
  170. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
  171. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
  172. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/system.md +0 -0
  173. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
  174. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
  175. {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
  176. {janito-3.8.0 → janito-3.10.0}/docs/plugins/configuration.md +0 -0
  177. {janito-3.8.0 → janito-3.10.0}/docs/plugins/examples/advanced.md +0 -0
  178. {janito-3.8.0 → janito-3.10.0}/docs/plugins/examples/basic.md +0 -0
  179. {janito-3.8.0 → janito-3.10.0}/docs/plugins/examples/intermediate.md +0 -0
  180. {janito-3.8.0 → janito-3.10.0}/docs/plugins/plugin-development.md +0 -0
  181. {janito-3.8.0 → janito-3.10.0}/docs/plugins/plugin-resources.md +0 -0
  182. {janito-3.8.0 → janito-3.10.0}/docs/plugins/publishing.md +0 -0
  183. {janito-3.8.0 → janito-3.10.0}/docs/plugins/remote-plugins.md +0 -0
  184. {janito-3.8.0 → janito-3.10.0}/docs/provider-platform-access.md +0 -0
  185. {janito-3.8.0 → janito-3.10.0}/docs/public-sources.md +0 -0
  186. {janito-3.8.0 → janito-3.10.0}/docs/reference/azure-openai.md +0 -0
  187. {janito-3.8.0 → janito-3.10.0}/docs/reference/message-handler-model.md +0 -0
  188. {janito-3.8.0 → janito-3.10.0}/docs/reference/rich-message-handler.md +0 -0
  189. {janito-3.8.0 → janito-3.10.0}/docs/security.md +0 -0
  190. {janito-3.8.0 → janito-3.10.0}/docs/supported-providers-models.md +0 -0
  191. {janito-3.8.0 → janito-3.10.0}/docs/tools/search-text.md +0 -0
  192. {janito-3.8.0 → janito-3.10.0}/docs/tools/show-image-grid.md +0 -0
  193. {janito-3.8.0 → janito-3.10.0}/docs/tools/show-image.md +0 -0
  194. {janito-3.8.0 → janito-3.10.0}/docs/tools-index.md +0 -0
  195. {janito-3.8.0 → janito-3.10.0}/docs/tools-natural-results.md +0 -0
  196. {janito-3.8.0 → janito-3.10.0}/docs/tools-precision.md +0 -0
  197. {janito-3.8.0 → janito-3.10.0}/docs/z-ai-setup.md +0 -0
  198. {janito-3.8.0 → janito-3.10.0}/examples/loop_protection_example.py +0 -0
  199. {janito-3.8.0 → janito-3.10.0}/get_nasdaq_top.py +0 -0
  200. {janito-3.8.0 → janito-3.10.0}/ibm-logo.txt +0 -0
  201. {janito-3.8.0 → janito-3.10.0}/janito/README.md +0 -0
  202. {janito-3.8.0 → janito-3.10.0}/janito/__init__.py +0 -0
  203. {janito-3.8.0 → janito-3.10.0}/janito/__main__.py +0 -0
  204. {janito-3.8.0 → janito-3.10.0}/janito/_version.py +0 -0
  205. {janito-3.8.0 → janito-3.10.0}/janito/agent/setup_agent.py +0 -0
  206. {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  207. {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  208. {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
  209. {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  210. {janito-3.8.0 → janito-3.10.0}/janito/cli/__init__.py +0 -0
  211. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/bindings.py +0 -0
  212. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/chat_entry.py +0 -0
  213. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/prompt_style.py +0 -0
  214. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/script_runner.py +0 -0
  215. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  216. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  217. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  218. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  219. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  220. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  221. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  222. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  223. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  224. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  225. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  226. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  227. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  228. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  229. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  230. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
  231. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  232. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  233. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  234. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  235. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  236. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  237. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  238. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  239. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  240. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  241. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  242. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  243. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  244. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
  245. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  246. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
  247. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  248. {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  249. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
  250. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_config.py +0 -0
  251. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_drivers.py +0 -0
  252. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_models.py +0 -0
  253. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_plugins.py +0 -0
  254. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_profiles.py +0 -0
  255. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_providers.py +0 -0
  256. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
  257. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/model_selection.py +0 -0
  258. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/model_utils.py +0 -0
  259. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/ping_providers.py +0 -0
  260. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/set_api_key.py +0 -0
  261. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/show_config.py +0 -0
  262. {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
  263. {janito-3.8.0 → janito-3.10.0}/janito/cli/config.py +0 -0
  264. {janito-3.8.0 → janito-3.10.0}/janito/cli/console.py +0 -0
  265. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/__init__.py +0 -0
  266. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/event_logger.py +0 -0
  267. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/getters.py +0 -0
  268. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/model_guesser.py +0 -0
  269. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/setters.py +0 -0
  270. {janito-3.8.0 → janito-3.10.0}/janito/cli/core/unsetters.py +0 -0
  271. {janito-3.8.0 → janito-3.10.0}/janito/cli/main.py +0 -0
  272. {janito-3.8.0 → janito-3.10.0}/janito/cli/prompt_handler.py +0 -0
  273. {janito-3.8.0 → janito-3.10.0}/janito/cli/prompt_setup.py +0 -0
  274. {janito-3.8.0 → janito-3.10.0}/janito/cli/single_shot_mode/__init__.py +0 -0
  275. {janito-3.8.0 → janito-3.10.0}/janito/cli/utils.py +0 -0
  276. {janito-3.8.0 → janito-3.10.0}/janito/cli/verbose_output.py +0 -0
  277. {janito-3.8.0 → janito-3.10.0}/janito/config.py +0 -0
  278. {janito-3.8.0 → janito-3.10.0}/janito/config_manager.py +0 -0
  279. {janito-3.8.0 → janito-3.10.0}/janito/conversation_history.py +0 -0
  280. {janito-3.8.0 → janito-3.10.0}/janito/dir_walk_utils.py +0 -0
  281. {janito-3.8.0 → janito-3.10.0}/janito/docs/GETTING_STARTED.md +0 -0
  282. {janito-3.8.0 → janito-3.10.0}/janito/driver_events.py +0 -0
  283. {janito-3.8.0 → janito-3.10.0}/janito/drivers/azure_openai/driver.py +0 -0
  284. {janito-3.8.0 → janito-3.10.0}/janito/drivers/cerebras/__init__.py +0 -0
  285. {janito-3.8.0 → janito-3.10.0}/janito/drivers/dashscope.bak.zip +0 -0
  286. {janito-3.8.0 → janito-3.10.0}/janito/drivers/openai/README.md +0 -0
  287. {janito-3.8.0 → janito-3.10.0}/janito/drivers/openai/driver.py +0 -0
  288. {janito-3.8.0 → janito-3.10.0}/janito/drivers/openai_responses.bak.zip +0 -0
  289. {janito-3.8.0 → janito-3.10.0}/janito/drivers/zai/__init__.py +0 -0
  290. {janito-3.8.0 → janito-3.10.0}/janito/drivers/zai/driver.py +0 -0
  291. {janito-3.8.0 → janito-3.10.0}/janito/event_bus/__init__.py +0 -0
  292. {janito-3.8.0 → janito-3.10.0}/janito/event_bus/bus.py +0 -0
  293. {janito-3.8.0 → janito-3.10.0}/janito/event_bus/event.py +0 -0
  294. {janito-3.8.0 → janito-3.10.0}/janito/event_bus/handler.py +0 -0
  295. {janito-3.8.0 → janito-3.10.0}/janito/event_bus/queue_bus.py +0 -0
  296. {janito-3.8.0 → janito-3.10.0}/janito/exceptions.py +0 -0
  297. {janito-3.8.0 → janito-3.10.0}/janito/formatting.py +0 -0
  298. {janito-3.8.0 → janito-3.10.0}/janito/formatting_token.py +0 -0
  299. {janito-3.8.0 → janito-3.10.0}/janito/gitignore_utils.py +0 -0
  300. {janito-3.8.0 → janito-3.10.0}/janito/hello.txt +0 -0
  301. {janito-3.8.0 → janito-3.10.0}/janito/i18n/__init__.py +0 -0
  302. {janito-3.8.0 → janito-3.10.0}/janito/i18n/it.py +0 -0
  303. {janito-3.8.0 → janito-3.10.0}/janito/i18n/messages.py +0 -0
  304. {janito-3.8.0 → janito-3.10.0}/janito/i18n/pt.py +0 -0
  305. {janito-3.8.0 → janito-3.10.0}/janito/llm/README.md +0 -0
  306. {janito-3.8.0 → janito-3.10.0}/janito/llm/__init__.py +0 -0
  307. {janito-3.8.0 → janito-3.10.0}/janito/llm/auth.py +0 -0
  308. {janito-3.8.0 → janito-3.10.0}/janito/llm/auth_utils.py +0 -0
  309. {janito-3.8.0 → janito-3.10.0}/janito/llm/driver.py +0 -0
  310. {janito-3.8.0 → janito-3.10.0}/janito/llm/driver_config.py +0 -0
  311. {janito-3.8.0 → janito-3.10.0}/janito/llm/driver_config_builder.py +0 -0
  312. {janito-3.8.0 → janito-3.10.0}/janito/llm/driver_input.py +0 -0
  313. {janito-3.8.0 → janito-3.10.0}/janito/llm/message_parts.py +0 -0
  314. {janito-3.8.0 → janito-3.10.0}/janito/llm/model.py +0 -0
  315. {janito-3.8.0 → janito-3.10.0}/janito/llm/provider.py +0 -0
  316. {janito-3.8.0 → janito-3.10.0}/janito/mkdocs.yml +0 -0
  317. {janito-3.8.0 → janito-3.10.0}/janito/perf_singleton.py +0 -0
  318. {janito-3.8.0 → janito-3.10.0}/janito/performance_collector.py +0 -0
  319. {janito-3.8.0 → janito-3.10.0}/janito/platform_discovery.py +0 -0
  320. {janito-3.8.0 → janito-3.10.0}/janito/plugins/__init__.py +0 -0
  321. {janito-3.8.0 → janito-3.10.0}/janito/plugins/auto_loader.py +0 -0
  322. {janito-3.8.0 → janito-3.10.0}/janito/plugins/auto_loader_fixed.py +0 -0
  323. {janito-3.8.0 → janito-3.10.0}/janito/plugins/base.py +0 -0
  324. {janito-3.8.0 → janito-3.10.0}/janito/plugins/builtin.py +0 -0
  325. {janito-3.8.0 → janito-3.10.0}/janito/plugins/config.py +0 -0
  326. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/__init__.py +0 -0
  327. {janito-3.8.0 → janito-3.10.0}/janito/plugins/core_adapter.py +0 -0
  328. {janito-3.8.0 → janito-3.10.0}/janito/plugins/core_loader.py +0 -0
  329. {janito-3.8.0 → janito-3.10.0}/janito/plugins/core_loader_fixed.py +0 -0
  330. {janito-3.8.0 → janito-3.10.0}/janito/plugins/discovery.py +0 -0
  331. {janito-3.8.0 → janito-3.10.0}/janito/plugins/discovery_core.py +0 -0
  332. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/__init__.py +0 -0
  333. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/__init__.py +0 -0
  334. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/java_outline.py +0 -0
  335. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/markdown_outline.py +0 -0
  336. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/python_outline.py +0 -0
  337. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/search_outline.py +0 -0
  338. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/__init__.py +0 -0
  339. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/match_lines.py +0 -0
  340. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/pattern_utils.py +0 -0
  341. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/traverse_directory.py +0 -0
  342. {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/validate_file_syntax/__init__.py +0 -0
  343. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/css_validator.py +0 -0
  344. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/html_validator.py +0 -0
  345. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/jinja2_validator.py +0 -0
  346. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/js_validator.py +0 -0
  347. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/json_validator.py +0 -0
  348. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/markdown_validator.py +0 -0
  349. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/ps1_validator.py +0 -0
  350. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/python_validator.py +0 -0
  351. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/xml_validator.py +0 -0
  352. {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/yaml_validator.py +0 -0
  353. {janito-3.8.0 → janito-3.10.0}/janito/provider_config.py +0 -0
  354. {janito-3.8.0 → janito-3.10.0}/janito/provider_registry.py +0 -0
  355. {janito-3.8.0 → janito-3.10.0}/janito/providers/__init__.py +0 -0
  356. {janito-3.8.0 → janito-3.10.0}/janito/providers/alibaba/__init__.py +0 -0
  357. {janito-3.8.0 → janito-3.10.0}/janito/providers/alibaba/model_info.py +0 -0
  358. {janito-3.8.0 → janito-3.10.0}/janito/providers/alibaba/provider.py +0 -0
  359. {janito-3.8.0 → janito-3.10.0}/janito/providers/anthropic/model_info.py +0 -0
  360. {janito-3.8.0 → janito-3.10.0}/janito/providers/anthropic/provider.py +0 -0
  361. {janito-3.8.0 → janito-3.10.0}/janito/providers/azure_openai/model_info.py +0 -0
  362. {janito-3.8.0 → janito-3.10.0}/janito/providers/azure_openai/provider.py +0 -0
  363. {janito-3.8.0 → janito-3.10.0}/janito/providers/cerebras/__init__.py +0 -0
  364. {janito-3.8.0 → janito-3.10.0}/janito/providers/cerebras/model_info.py +0 -0
  365. {janito-3.8.0 → janito-3.10.0}/janito/providers/cerebras/provider.py +0 -0
  366. {janito-3.8.0 → janito-3.10.0}/janito/providers/dashscope.bak.zip +0 -0
  367. {janito-3.8.0 → janito-3.10.0}/janito/providers/deepseek/__init__.py +0 -0
  368. {janito-3.8.0 → janito-3.10.0}/janito/providers/deepseek/model_info.py +0 -0
  369. {janito-3.8.0 → janito-3.10.0}/janito/providers/deepseek/provider.py +0 -0
  370. {janito-3.8.0 → janito-3.10.0}/janito/providers/google/__init__.py +0 -0
  371. {janito-3.8.0 → janito-3.10.0}/janito/providers/google/model_info.py +0 -0
  372. {janito-3.8.0 → janito-3.10.0}/janito/providers/google/provider.py +0 -0
  373. {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/README.md +0 -0
  374. {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/__init__.py +0 -0
  375. {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/model_info.py +0 -0
  376. {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/provider.py +0 -0
  377. {janito-3.8.0 → janito-3.10.0}/janito/providers/mistral/__init__.py +0 -0
  378. {janito-3.8.0 → janito-3.10.0}/janito/providers/mistral/model_info.py +0 -0
  379. {janito-3.8.0 → janito-3.10.0}/janito/providers/mistral/provider.py +0 -0
  380. {janito-3.8.0 → janito-3.10.0}/janito/providers/moonshot/__init__.py +0 -0
  381. {janito-3.8.0 → janito-3.10.0}/janito/providers/moonshot/model_info.py +0 -0
  382. {janito-3.8.0 → janito-3.10.0}/janito/providers/moonshot/provider.py +0 -0
  383. {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/__init__.py +0 -0
  384. {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/model_info.py +0 -0
  385. {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/provider.py +0 -0
  386. {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/schema_generator.py +0 -0
  387. {janito-3.8.0 → janito-3.10.0}/janito/providers/registry.py +0 -0
  388. {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/__init__.py +0 -0
  389. {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/model_info.py +0 -0
  390. {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/provider.py +0 -0
  391. {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/schema_generator.py +0 -0
  392. {janito-3.8.0 → janito-3.10.0}/janito/regions/__init__.py +0 -0
  393. {janito-3.8.0 → janito-3.10.0}/janito/regions/cli.py +0 -0
  394. {janito-3.8.0 → janito-3.10.0}/janito/regions/geo_utils.py +0 -0
  395. {janito-3.8.0 → janito-3.10.0}/janito/regions/provider_regions.py +0 -0
  396. {janito-3.8.0 → janito-3.10.0}/janito/report_events.py +0 -0
  397. {janito-3.8.0 → janito-3.10.0}/janito/shell.bak.zip +0 -0
  398. {janito-3.8.0 → janito-3.10.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  399. {janito-3.8.0 → janito-3.10.0}/janito/tools/README.md +0 -0
  400. {janito-3.8.0 → janito-3.10.0}/janito/tools/base.py +0 -0
  401. {janito-3.8.0 → janito-3.10.0}/janito/tools/disabled_tools.py +0 -0
  402. {janito-3.8.0 → janito-3.10.0}/janito/tools/function_adapter.py +0 -0
  403. {janito-3.8.0 → janito-3.10.0}/janito/tools/loop_protection.py +0 -0
  404. {janito-3.8.0 → janito-3.10.0}/janito/tools/loop_protection_decorator.py +0 -0
  405. {janito-3.8.0 → janito-3.10.0}/janito/tools/outline_file.bak.zip +0 -0
  406. {janito-3.8.0 → janito-3.10.0}/janito/tools/path_security.py +0 -0
  407. {janito-3.8.0 → janito-3.10.0}/janito/tools/path_utils.py +0 -0
  408. {janito-3.8.0 → janito-3.10.0}/janito/tools/permissions.py +0 -0
  409. {janito-3.8.0 → janito-3.10.0}/janito/tools/permissions_parse.py +0 -0
  410. {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_events.py +0 -0
  411. {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_run_exception.py +0 -0
  412. {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_use_tracker.py +0 -0
  413. {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_utils.py +0 -0
  414. {janito-3.8.0 → janito-3.10.0}/janito/tools/tools_schema.py +0 -0
  415. {janito-3.8.0 → janito-3.10.0}/janito/tools/url_whitelist.py +0 -0
  416. {janito-3.8.0 → janito-3.10.0}/janito/utils.py +0 -0
  417. {janito-3.8.0 → janito-3.10.0}/janito.egg-info/dependency_links.txt +0 -0
  418. {janito-3.8.0 → janito-3.10.0}/janito.egg-info/entry_points.txt +0 -0
  419. {janito-3.8.0 → janito-3.10.0}/janito.egg-info/requires.txt +0 -0
  420. {janito-3.8.0 → janito-3.10.0}/market_prompt_fix.py +0 -0
  421. {janito-3.8.0 → janito-3.10.0}/plugins/__init__.py +0 -0
  422. {janito-3.8.0 → janito-3.10.0}/plugins/core/__init__.py +0 -0
  423. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/__init__.py +0 -0
  424. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
  425. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/codeanalyzer/tools}/get_file_outline/core.py +0 -0
  426. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
  427. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
  428. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
  429. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
  430. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
  431. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/codeanalyzer/tools}/search_text/core.py +0 -0
  432. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
  433. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
  434. {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
  435. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/__init__.py +0 -0
  436. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/copy_file.py +0 -0
  437. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/create_file.py +0 -0
  438. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/delete_text_in_file.py +0 -0
  439. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/find_files.py +0 -0
  440. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/move_file.py +0 -0
  441. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/read_files.py +0 -0
  442. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/remove_directory.py +0 -0
  443. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/remove_file.py +0 -0
  444. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
  445. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/validate_file_syntax/core.py +0 -0
  446. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
  447. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
  448. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
  449. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
  450. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
  451. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
  452. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
  453. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
  454. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
  455. {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
  456. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/view_file.py +0 -0
  457. {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/__init__.py +0 -0
  458. {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/plugin.py +0 -0
  459. {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/tools/__init__.py +0 -0
  460. {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/tools/show_image.py +0 -0
  461. {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
  462. {janito-3.8.0 → janito-3.10.0}/plugins/core/system/__init__.py +0 -0
  463. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/system/tools}/run_bash_command.py +0 -0
  464. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/system/tools}/run_powershell_command.py +0 -0
  465. {janito-3.8.0 → janito-3.10.0}/plugins/dev/__init__.py +0 -0
  466. {janito-3.8.0 → janito-3.10.0}/plugins/dev/pythondev/__init__.py +0 -0
  467. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/pythondev/tools}/python_code_run.py +0 -0
  468. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/pythondev/tools}/python_command_run.py +0 -0
  469. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/pythondev/tools}/python_file_run.py +0 -0
  470. {janito-3.8.0 → janito-3.10.0}/plugins/dev/visualization/__init__.py +0 -0
  471. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/visualization/tools}/read_chart.py +0 -0
  472. {janito-3.8.0 → janito-3.10.0}/plugins/example_plugin.py +0 -0
  473. {janito-3.8.0 → janito-3.10.0}/plugins/ui/__init__.py +0 -0
  474. {janito-3.8.0 → janito-3.10.0}/plugins/ui/userinterface/__init__.py +0 -0
  475. {janito-3.8.0 → janito-3.10.0}/plugins/ui/userinterface/tools/ask_user.py +0 -0
  476. {janito-3.8.0 → janito-3.10.0}/plugins/web/__init__.py +0 -0
  477. {janito-3.8.0 → janito-3.10.0}/plugins/web/webtools/__init__.py +0 -0
  478. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/web/webtools/tools}/open_html_in_browser.py +0 -0
  479. {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/web/webtools/tools}/open_url.py +0 -0
  480. {janito-3.8.0 → janito-3.10.0}/plugins.txt +0 -0
  481. {janito-3.8.0 → janito-3.10.0}/pyproject.toml +0 -0
  482. {janito-3.8.0 → janito-3.10.0}/requirements-dev.txt +0 -0
  483. {janito-3.8.0 → janito-3.10.0}/requirements.txt +0 -0
  484. {janito-3.8.0/tests/adapters → janito-3.10.0/tests}/local/get_file_outline/test_core_outline.py +0 -0
  485. {janito-3.8.0/tests/adapters → janito-3.10.0/tests}/local/test_read_files.py +0 -0
  486. {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_models.py +0 -0
  487. {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_providers.py +0 -0
  488. {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_providers_alibaba.py +0 -0
  489. {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_providers_moonshot.py +0 -0
  490. {janito-3.8.0 → janito-3.10.0}/tests/test_cli_version.py +0 -0
  491. {janito-3.8.0 → janito-3.10.0}/tests/test_disabled_tools.py +0 -0
  492. {janito-3.8.0 → janito-3.10.0}/tests/test_plugin_system.py +0 -0
  493. {janito-3.8.0 → janito-3.10.0}/tests/test_provider_alibaba.py +0 -0
  494. {janito-3.8.0 → janito-3.10.0}/tests/test_provider_cerebras.py +0 -0
  495. {janito-3.8.0 → janito-3.10.0}/tests/test_provider_moonshot.py +0 -0
  496. {janito-3.8.0 → janito-3.10.0}/tools/release.py +0 -0
  497. {janito-3.8.0 → janito-3.10.0}/tox.ini +0 -0
@@ -1,66 +1,71 @@
1
- # Byte-compiled / optimized / DLL files
2
- __pycache__/
3
- *.py[cod]
4
- *$py.class
5
-
6
- # Distribution / packaging
7
- .Python
8
- build/
9
- develop-eggs/
10
- dist/
11
- downloads/
12
- eggs/
13
- .eggs/
14
- lib/
15
- lib64/
16
- parts/
17
- sdist/
18
- var/
19
- *.egg-info/
20
- .installed.cfg
21
- *.egg
22
-
23
- # Wheel files
24
- *.whl
25
-
26
- # Installer logs
27
- pip-log.txt
28
- pip-delete-this-directory.txt
29
-
30
- # Unit test / coverage reports
31
- htmlcov/
32
- .tox/
33
- .nox/
34
- .coverage
35
- .coverage.*
36
- .cache
37
- nosetests.xml
38
- coverage.xml
39
- *.cover
40
- .hypothesis/
41
- .pytest_cache/
42
-
43
- # Jupyter Notebook
44
- .ipynb_checkpoints
45
-
46
- # pyenv
47
- .python-version
48
-
49
- # mypy
50
- .mypy_cache/
51
- .dmypy.json
52
-
53
- # Pyre type checker
54
- .pyre/
55
-
56
- # Backup files
57
- *.bak
58
-
59
- # Ruff cache
60
- .ruff_cache/
61
-
62
- # Janito logs/history (if not needed in VCS)
63
- .janito/
64
-
65
- # MkDocs build output
66
- site/
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # Distribution / packaging
7
+ .Python
8
+ build/
9
+ develop-eggs/
10
+ dist/
11
+ downloads/
12
+ eggs/
13
+ .eggs/
14
+ lib/
15
+ lib64/
16
+ parts/
17
+ sdist/
18
+ var/
19
+ *.egg-info/
20
+ .installed.cfg
21
+ *.egg
22
+
23
+ # Wheel files
24
+ *.whl
25
+
26
+ # Installer logs
27
+ pip-log.txt
28
+ pip-delete-this-directory.txt
29
+
30
+ # Unit test / coverage reports
31
+ htmlcov/
32
+ .tox/
33
+ .nox/
34
+ .coverage
35
+ .coverage.*
36
+ .cache
37
+ nosetests.xml
38
+ coverage.xml
39
+ *.cover
40
+ .hypothesis/
41
+ .pytest_cache/
42
+
43
+ # Jupyter Notebook
44
+ .ipynb_checkpoints
45
+
46
+ # pyenv
47
+ .python-version
48
+
49
+ # mypy
50
+ .mypy_cache/
51
+ .dmypy.json
52
+
53
+ # Pyre type checker
54
+ .pyre/
55
+
56
+ # Backup files
57
+ *.bak
58
+
59
+ # Ruff cache
60
+ .ruff_cache/
61
+
62
+ # Janito logs/history (if not needed in VCS)
63
+ .janito/
64
+
65
+ # MkDocs build output
66
+ site/
67
+
68
+ # Virtual environments
69
+ .venv/
70
+ venv/
71
+ env/
@@ -1,84 +1,84 @@
1
- Metadata-Version: 2.4
2
- Name: janito
3
- Version: 3.8.0
4
- Summary: A new Python package called janito.
5
- Author-email: João Pinto <janito@ikignosis.org>
6
- Project-URL: Homepage, https://github.com/ikignosis/janito
7
- Requires-Python: >=3.7
8
- Description-Content-Type: text/markdown
9
- License-File: LICENSE
10
- Requires-Dist: attrs==25.3.0
11
- Requires-Dist: rich==14.0.0
12
- Requires-Dist: pathspec==0.12.1
13
- Requires-Dist: setuptools>=61.0
14
- Requires-Dist: pyyaml>=6.0
15
- Requires-Dist: jinja2>=3.0.0
16
- Requires-Dist: prompt_toolkit>=3.0.51
17
- Requires-Dist: lxml>=5.4.0
18
- Requires-Dist: requests>=2.32.4
19
- Requires-Dist: bs4>=0.0.2
20
- Requires-Dist: questionary>=2.0.1
21
- Requires-Dist: openai>=1.68.0
22
- Requires-Dist: Pillow>=10.0.0
23
- Provides-Extra: dev
24
- Requires-Dist: pytest; extra == "dev"
25
- Requires-Dist: pre-commit; extra == "dev"
26
- Requires-Dist: ruff==0.11.9; extra == "dev"
27
- Requires-Dist: detect-secrets==1.4.0; extra == "dev"
28
- Requires-Dist: codespell==2.4.1; extra == "dev"
29
- Requires-Dist: black; extra == "dev"
30
- Requires-Dist: questionary>=2.0.1; extra == "dev"
31
- Requires-Dist: setuptools_scm>=8.0; extra == "dev"
32
- Provides-Extra: coder
33
- Requires-Dist: janito-coder; extra == "coder"
34
- Dynamic: license-file
35
-
36
- # nctl
37
-
38
- ```bash
39
- $ nctl --help
40
- Usage: nctl <command>
41
-
42
- Interact with Nine API resources. See https://docs.nineapis.ch for the full API docs.
43
-
44
- Run "nctl <command> --help" for more information on a command.
45
- ```
46
-
47
- ## Setup
48
-
49
- ```bash
50
- # If you have go already installed
51
- go install github.com/ninech/nctl@latest
52
-
53
- # Homebrew
54
- brew install ninech/taps/nctl
55
-
56
- # Debian/Ubuntu
57
- echo "deb [trusted=yes] https://repo.nine.ch/deb/ /" | sudo tee /etc/apt/sources.list.d/repo.nine.ch.list
58
- sudo apt-get update
59
- sudo apt-get install nctl
60
-
61
- # Fedora/RHEL
62
- cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
63
- [repo.nine.ch]
64
- name=Nine Repo
65
- baseurl=https://repo.nine.ch/yum/
66
- enabled=1
67
- gpgcheck=0
68
- EOF
69
- dnf install nctl
70
-
71
- # Arch
72
- # Install yay: https://github.com/Jguer/yay#binary
73
- yay --version
74
- yay -S nctl-bin
75
- ```
76
-
77
- For Windows users, nctl is also built for arm64 and amd64. You can download the
78
- latest exe file from the [releases](https://github.com/ninech/nctl/releases) and
79
- install it.
80
-
81
- ## Getting started
82
-
83
- * login to the API using `nctl auth login`
84
- * run `nctl --help` to get a list of all available commands
1
+ Metadata-Version: 2.4
2
+ Name: janito
3
+ Version: 3.10.0
4
+ Summary: A new Python package called janito.
5
+ Author-email: João Pinto <janito@ikignosis.org>
6
+ Project-URL: Homepage, https://github.com/ikignosis/janito
7
+ Requires-Python: >=3.7
8
+ Description-Content-Type: text/markdown
9
+ License-File: LICENSE
10
+ Requires-Dist: attrs==25.3.0
11
+ Requires-Dist: rich==14.0.0
12
+ Requires-Dist: pathspec==0.12.1
13
+ Requires-Dist: setuptools>=61.0
14
+ Requires-Dist: pyyaml>=6.0
15
+ Requires-Dist: jinja2>=3.0.0
16
+ Requires-Dist: prompt_toolkit>=3.0.51
17
+ Requires-Dist: lxml>=5.4.0
18
+ Requires-Dist: requests>=2.32.4
19
+ Requires-Dist: bs4>=0.0.2
20
+ Requires-Dist: questionary>=2.0.1
21
+ Requires-Dist: openai>=1.68.0
22
+ Requires-Dist: Pillow>=10.0.0
23
+ Provides-Extra: dev
24
+ Requires-Dist: pytest; extra == "dev"
25
+ Requires-Dist: pre-commit; extra == "dev"
26
+ Requires-Dist: ruff==0.11.9; extra == "dev"
27
+ Requires-Dist: detect-secrets==1.4.0; extra == "dev"
28
+ Requires-Dist: codespell==2.4.1; extra == "dev"
29
+ Requires-Dist: black; extra == "dev"
30
+ Requires-Dist: questionary>=2.0.1; extra == "dev"
31
+ Requires-Dist: setuptools_scm>=8.0; extra == "dev"
32
+ Provides-Extra: coder
33
+ Requires-Dist: janito-coder; extra == "coder"
34
+ Dynamic: license-file
35
+
36
+ # Janito
37
+
38
+ ```bash
39
+ $ janito --help
40
+ Usage: janito <command>
41
+
42
+ Interact with Nine API resources. See https://docs.nineapis.ch for the full API docs.
43
+
44
+ Run "janito <command> --help" for more information on a command.
45
+ ```
46
+
47
+ ## Setup
48
+
49
+ ```bash
50
+ # If you have go already installed
51
+ go install github.com/ninech/janito@latest
52
+
53
+ # Homebrew
54
+ brew install ninech/taps/janito
55
+
56
+ # Debian/Ubuntu
57
+ echo "deb [trusted=yes] https://repo.nine.ch/deb/ /" | sudo tee /etc/apt/sources.list.d/repo.nine.ch.list
58
+ sudo apt-get update
59
+ sudo apt-get install janito
60
+
61
+ # Fedora/RHEL
62
+ cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
63
+ [repo.nine.ch]
64
+ name=Nine Repo
65
+ baseurl=https://repo.nine.ch/yum/
66
+ enabled=1
67
+ gpgcheck=0
68
+ EOF
69
+ dnf install janito
70
+
71
+ # Arch
72
+ # Install yay: https://github.com/Jguer/yay#binary
73
+ yay --version
74
+ yay -S janito-bin
75
+ ```
76
+
77
+ For Windows users, janito is also built for arm64 and amd64. You can download the
78
+ latest exe file from the [releases](https://github.com/ninech/janito/releases) and
79
+ install it.
80
+
81
+ ## Getting started
82
+
83
+ * login to the API using `janito auth login`
84
+ * run `janito --help` to get a list of all available commands
@@ -0,0 +1,49 @@
1
+ # Janito
2
+
3
+ ```bash
4
+ $ janito --help
5
+ Usage: janito <command>
6
+
7
+ Interact with Nine API resources. See https://docs.nineapis.ch for the full API docs.
8
+
9
+ Run "janito <command> --help" for more information on a command.
10
+ ```
11
+
12
+ ## Setup
13
+
14
+ ```bash
15
+ # If you have go already installed
16
+ go install github.com/ninech/janito@latest
17
+
18
+ # Homebrew
19
+ brew install ninech/taps/janito
20
+
21
+ # Debian/Ubuntu
22
+ echo "deb [trusted=yes] https://repo.nine.ch/deb/ /" | sudo tee /etc/apt/sources.list.d/repo.nine.ch.list
23
+ sudo apt-get update
24
+ sudo apt-get install janito
25
+
26
+ # Fedora/RHEL
27
+ cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
28
+ [repo.nine.ch]
29
+ name=Nine Repo
30
+ baseurl=https://repo.nine.ch/yum/
31
+ enabled=1
32
+ gpgcheck=0
33
+ EOF
34
+ dnf install janito
35
+
36
+ # Arch
37
+ # Install yay: https://github.com/Jguer/yay#binary
38
+ yay --version
39
+ yay -S janito-bin
40
+ ```
41
+
42
+ For Windows users, janito is also built for arm64 and amd64. You can download the
43
+ latest exe file from the [releases](https://github.com/ninech/janito/releases) and
44
+ install it.
45
+
46
+ ## Getting started
47
+
48
+ * login to the API using `janito auth login`
49
+ * run `janito --help` to get a list of all available commands
@@ -12,7 +12,7 @@ Janito is designed to give you maximum control over how AI assists you with your
12
12
 
13
13
  - 💻 **Not Locked to an Editor:** Janito works in the terminal, scripts, or web—no need for a heavyweight IDE or plugin ecosystem.
14
14
  - 🧰 **Composable and Extensible:** Tools can be enabled, disabled, or customized for each session, letting you experiment or automate workflows.
15
- - 🕒 **Session-Scoped Adjustments:** Temporary overrides (via CLI options or prompt tweaks) let you try new approaches without changing your global setup.
15
+ - 🕒 **Session-Scoped Adjustments:** Session-based overrides (via CLI options or prompt tweaks) let you try new approaches without changing your global setup.
16
16
 
17
17
  ## 🧑‍💻 Example: Prompt-Driven Focus
18
18
 
@@ -0,0 +1,75 @@
1
+ # Agent Lifecycle and Tool Execution Synchronization
2
+
3
+ This document details the lifecycle of an agent in Janito, focusing on how state and events are synchronized with tool execution.
4
+
5
+ ## Overview
6
+
7
+ The agent lifecycle in Janito involves several key phases, from initialization to tool execution and event handling. Understanding this lifecycle is crucial for developers working with or extending the agent system.
8
+
9
+ ## Agent Initialization
10
+
11
+ 1. **Configuration Loading**: The agent loads its configuration, including enabled tools, permissions, and other settings.
12
+ 2. **Event Bus Setup**: An event bus is initialized for internal communication between components.
13
+ 3. **Tool Registration**: Tools are registered with the appropriate adapters, making them available for execution.
14
+ 4. **Permission Initialization**: Global permission settings are established, determining which tools can be used.
15
+
16
+ ## Main Execution Loop
17
+
18
+ The agent operates in a continuous loop that processes user input, executes tools, and responds with results:
19
+
20
+ 1. **Input Processing**: The agent receives input from the user or other sources.
21
+ 2. **Planning**: Based on the input, the agent determines which tools to use and in what order.
22
+ 3. **Tool Execution**: Tools are executed with the necessary parameters.
23
+ 4. **Result Processing**: The agent processes the results from tool executions.
24
+ 5. **Response Generation**: A response is generated and sent back to the user.
25
+
26
+ ## Tool Execution Lifecycle
27
+
28
+ When a tool is executed, it goes through a specific lifecycle:
29
+
30
+ 1. **Discovery**: The agent looks up the tool by name in the tools registry.
31
+ 2. **Permission Validation**: The tool's required permissions are checked against the global allowed permissions.
32
+ 3. **Argument Validation**: The provided arguments are validated against the tool's signature and schema.
33
+ 4. **Path Security Check**: For tools that work with file paths, path security validation ensures that only allowed paths are accessed.
34
+ 5. **Execution**: The tool is executed with the provided arguments.
35
+ 6. **Event Publishing**: Throughout the execution process, various events are published to the event bus:
36
+
37
+ - `ToolCallStarted`: When a tool execution begins
38
+ - `ToolCallFinished`: When a tool execution completes successfully
39
+ - `ToolCallError`: When a tool execution encounters an error
40
+
41
+ ## Event Synchronization
42
+
43
+ Events play a crucial role in synchronizing state throughout the agent lifecycle:
44
+
45
+ 1. **Tool Events**: Published during tool execution to track progress and handle errors.
46
+ 2. **Report Events**: Used for user-facing messages, including actions, errors, warnings, and success messages.
47
+ 3. **System Events**: Handle internal state changes and system-level notifications.
48
+
49
+ The event bus ensures that all components can react to important events in real-time, maintaining consistency across the system.
50
+
51
+ ## State Management
52
+
53
+ The agent maintains several types of state:
54
+
55
+ 1. **Configuration State**: Settings that control agent behavior.
56
+ 2. **Permission State**: Current allowed permissions for tool execution.
57
+ 3. **Execution State**: Information about currently running tools and their progress.
58
+ 4. **Conversation State**: History of interactions with the user.
59
+
60
+ State changes are synchronized through the event bus, ensuring all components have access to the most current information.
61
+
62
+ ## Error Handling and Recovery
63
+
64
+ The agent includes comprehensive error handling:
65
+
66
+ 1. **Tool Errors**: Caught and converted to `ToolCallException` with detailed error messages.
67
+ 2. **Permission Violations**: Detected and prevented before tool execution.
68
+ 3. **Path Security Violations**: Prevented through path validation.
69
+ 4. **Loop Protection**: Prevents infinite execution loops through decorator-based protection.
70
+
71
+ When errors occur, they are published to the event bus and handled appropriately by the agent's error recovery mechanisms.
72
+
73
+ ## Conclusion
74
+
75
+ The agent lifecycle in Janito is designed to be robust, secure, and extensible. By understanding how state and events are synchronized with tool execution, developers can effectively work with and extend the agent system.
@@ -0,0 +1,116 @@
1
+ # Agent and Tools Workflow and Lifecycle
2
+
3
+ This document explains how tools are integrated into Janito's agent system, covering their workflow from registration to execution and the overall lifecycle.
4
+
5
+ ## Overview
6
+
7
+ Janito's agent system uses a modular approach to tool management, allowing for flexible registration, permission control, and execution of various tools. Tools are implemented as classes that inherit from `ToolBase` and are registered with a tools adapter.
8
+
9
+ ## Tool Registration
10
+
11
+ ### 1. Tool Implementation
12
+
13
+ Tools are implemented as classes that inherit from `ToolBase`:
14
+
15
+ - Must define a `permissions` attribute of type `ToolPermissions`
16
+ - Must implement a `run` method with proper type hints and docstrings
17
+ - Should have a unique `tool_name` class attribute
18
+
19
+ Example:
20
+ ```python
21
+ from janito.tools.tool_base import ToolBase, ToolPermissions
22
+ from janito.plugins.adapters.local.adapter import register_local_tool
23
+
24
+ @register_local_tool
25
+ class MyTool(ToolBase):
26
+ """
27
+ Processes a file a given number of times.
28
+ """
29
+ permissions = ToolPermissions(read=True, write=True)
30
+ tool_name = "my_tool"
31
+
32
+ def run(self, filename: str, count: int) -> str:
33
+ """
34
+ Processes the specified file repeatedly.
35
+
36
+ Args:
37
+ filename (str): The path to the file to process.
38
+ count (int): How many times to process the file.
39
+
40
+ Returns:
41
+ str: Status message after processing.
42
+ """
43
+ # Implementation here
44
+ return f"Processed {filename} {count} times"
45
+ ```
46
+
47
+ ### 2. Tool Registration
48
+
49
+ Tools can be registered in two ways:
50
+
51
+ 1. Using the `@register_local_tool` decorator
52
+ 2. Manually registering with a `LocalToolsAdapter` instance
53
+
54
+ The decorator approach automatically registers the tool with the singleton adapter.
55
+
56
+ ## Tool Permissions
57
+
58
+ Each tool defines its required permissions using the `ToolPermissions` named tuple:
59
+
60
+ - `read`: Permission to read files
61
+ - `write`: Permission to write/modify files
62
+ - `execute`: Permission to execute commands
63
+
64
+ These permissions are checked against the global allowed permissions at runtime.
65
+
66
+ ## Tool Execution Lifecycle
67
+
68
+ ### 1. Tool Discovery
69
+
70
+ When the agent needs to execute a tool, it first looks up the tool by name using the tools adapter.
71
+
72
+ ### 2. Permission Validation
73
+
74
+ The adapter checks if the tool's required permissions are allowed by the current permission settings.
75
+
76
+ ### 3. Argument Validation
77
+
78
+ Before execution, the tool's arguments are validated against both the function signature and any defined schema.
79
+
80
+ ### 4. Path Security Check
81
+
82
+ For tools that work with file paths, path security validation ensures that only allowed paths are accessed.
83
+
84
+ ### 5. Execution
85
+
86
+ The tool is executed with the provided arguments, and the result is returned.
87
+
88
+ ### 6. Event Publishing
89
+
90
+ Throughout the execution process, various events are published to the event bus:
91
+
92
+ - `ToolCallStarted`: When a tool execution begins
93
+ - `ToolCallFinished`: When a tool execution completes successfully
94
+ - `ToolCallError`: When a tool execution encounters an error
95
+
96
+ ## Error Handling
97
+
98
+ The tools adapter includes comprehensive error handling:
99
+
100
+ - Missing or invalid arguments are caught and reported
101
+ - Path security violations are detected and prevented
102
+ - Loop protection prevents infinite execution loops
103
+ - Runtime errors in tools are caught and converted to `ToolCallException`
104
+
105
+ ## Customization
106
+
107
+ The tools system can be customized by:
108
+
109
+ 1. Implementing custom tools adapters for different execution environments
110
+ 2. Modifying permission settings at runtime
111
+ 3. Disabling specific tools through configuration
112
+ 4. Extending the base `ToolBase` class for specialized functionality
113
+
114
+ ## Conclusion
115
+
116
+ Janito's agent and tools system provides a robust, secure, and extensible framework for integrating various functionalities. By following the established patterns for tool implementation and registration, developers can easily add new capabilities while maintaining security and consistency.