janito 3.0.0__tar.gz → 3.1.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 (492) hide show
  1. {janito-3.0.0 → janito-3.1.0}/PKG-INFO +1 -1
  2. janito-3.1.0/janito/cli/chat_mode/bindings.py +64 -0
  3. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/session.py +7 -1
  4. {janito-3.0.0 → janito-3.1.0}/janito/cli/prompt_core.py +19 -9
  5. {janito-3.0.0 → janito-3.1.0}/janito/llm/agent.py +30 -17
  6. janito-3.1.0/janito/llm/cancellation_manager.py +62 -0
  7. {janito-3.0.0 → janito-3.1.0}/janito/llm/driver.py +7 -0
  8. janito-3.1.0/janito/llm/enter_cancellation.py +93 -0
  9. {janito-3.0.0 → janito-3.1.0}/janito.egg-info/PKG-INFO +1 -1
  10. {janito-3.0.0 → janito-3.1.0}/janito.egg-info/SOURCES.txt +2 -0
  11. janito-3.0.0/janito/cli/chat_mode/bindings.py +0 -38
  12. {janito-3.0.0 → janito-3.1.0}/.codespellrc +0 -0
  13. {janito-3.0.0 → janito-3.1.0}/.gitattributes +0 -0
  14. {janito-3.0.0 → janito-3.1.0}/.github/workflows/python-app.yml.disabled +0 -0
  15. {janito-3.0.0 → janito-3.1.0}/.gitignore +0 -0
  16. {janito-3.0.0 → janito-3.1.0}/.pre-commit-config.yaml +0 -0
  17. {janito-3.0.0 → janito-3.1.0}/.secrets.baseline +0 -0
  18. {janito-3.0.0 → janito-3.1.0}/.vscode/settings.json +0 -0
  19. {janito-3.0.0 → janito-3.1.0}/LICENSE +0 -0
  20. {janito-3.0.0 → janito-3.1.0}/MARKET_ANALYST_README.md +0 -0
  21. {janito-3.0.0 → janito-3.1.0}/README-dev.md +0 -0
  22. {janito-3.0.0 → janito-3.1.0}/README.md +0 -0
  23. {janito-3.0.0 → janito-3.1.0}/RELEASE_COMPARISON.md +0 -0
  24. {janito-3.0.0 → janito-3.1.0}/UPDATING_DOCS.md +0 -0
  25. {janito-3.0.0 → janito-3.1.0}/adding_mcp.txt +0 -0
  26. {janito-3.0.0 → janito-3.1.0}/docs/CHANGELOG.md +0 -0
  27. {janito-3.0.0 → janito-3.1.0}/docs/CHANGELOG_3.0.0.md +0 -0
  28. {janito-3.0.0 → janito-3.1.0}/docs/DIV.md +0 -0
  29. {janito-3.0.0 → janito-3.1.0}/docs/Interfaces.txt +0 -0
  30. {janito-3.0.0 → janito-3.1.0}/docs/PROFILES.md +0 -0
  31. {janito-3.0.0 → janito-3.1.0}/docs/TOOLBAR-STYLING.md +0 -0
  32. {janito-3.0.0 → janito-3.1.0}/docs/about/costs.md +0 -0
  33. {janito-3.0.0 → janito-3.1.0}/docs/about/vs-webchats.md +0 -0
  34. {janito-3.0.0 → janito-3.1.0}/docs/about/why.md +0 -0
  35. {janito-3.0.0 → janito-3.1.0}/docs/alibaba-setup.md +0 -0
  36. {janito-3.0.0 → janito-3.1.0}/docs/alternatives.md +0 -0
  37. {janito-3.0.0 → janito-3.1.0}/docs/cerebras-setup.md +0 -0
  38. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG.md +0 -0
  39. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  40. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  41. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  42. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  43. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  44. {janito-3.0.0 → janito-3.1.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  45. {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  46. {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
  47. {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/code-generation-observability.md +0 -0
  48. {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/our-approach.md +0 -0
  49. {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/why-string-replacement.md +0 -0
  50. {janito-3.0.0 → janito-3.1.0}/docs/concepts/analysis-style.md +0 -0
  51. {janito-3.0.0 → janito-3.1.0}/docs/concepts/human-guided-ai.md +0 -0
  52. {janito-3.0.0 → janito-3.1.0}/docs/concepts/index.md +0 -0
  53. {janito-3.0.0 → janito-3.1.0}/docs/concepts/language-model-clients.md +0 -0
  54. {janito-3.0.0 → janito-3.1.0}/docs/concepts/prompt-design-style.md +0 -0
  55. {janito-3.0.0 → janito-3.1.0}/docs/deepseek-setup.md +0 -0
  56. {janito-3.0.0 → janito-3.1.0}/docs/driver-flow.md +0 -0
  57. {janito-3.0.0 → janito-3.1.0}/docs/driver-request-cancellation.md +0 -0
  58. {janito-3.0.0 → janito-3.1.0}/docs/drivers/events.md +0 -0
  59. {janito-3.0.0 → janito-3.1.0}/docs/drivers.md +0 -0
  60. {janito-3.0.0 → janito-3.1.0}/docs/event-bus.md +0 -0
  61. {janito-3.0.0 → janito-3.1.0}/docs/guides/configuration.md +0 -0
  62. {janito-3.0.0 → janito-3.1.0}/docs/guides/developing.md +0 -0
  63. {janito-3.0.0 → janito-3.1.0}/docs/guides/disabled-tools.md +0 -0
  64. {janito-3.0.0 → janito-3.1.0}/docs/guides/installation.md +0 -0
  65. {janito-3.0.0 → janito-3.1.0}/docs/guides/market-data-sources.md +0 -0
  66. {janito-3.0.0 → janito-3.1.0}/docs/guides/profiles.md +0 -0
  67. {janito-3.0.0 → janito-3.1.0}/docs/guides/prompting/README.md +0 -0
  68. {janito-3.0.0 → janito-3.1.0}/docs/guides/read-chart-examples.md +0 -0
  69. {janito-3.0.0 → janito-3.1.0}/docs/guides/security-commands.md +0 -0
  70. {janito-3.0.0 → janito-3.1.0}/docs/guides/single-shot-terminal.md +0 -0
  71. {janito-3.0.0 → janito-3.1.0}/docs/guides/stock-market-guide.md +0 -0
  72. {janito-3.0.0 → janito-3.1.0}/docs/guides/terminal-shell.md +0 -0
  73. {janito-3.0.0 → janito-3.1.0}/docs/guides/tools-developer-guide.md +0 -0
  74. {janito-3.0.0 → janito-3.1.0}/docs/guides/url-whitelist.md +0 -0
  75. {janito-3.0.0 → janito-3.1.0}/docs/guides/using.md +0 -0
  76. {janito-3.0.0 → janito-3.1.0}/docs/guides/using_tools.md +0 -0
  77. {janito-3.0.0 → janito-3.1.0}/docs/ibm-setup.md +0 -0
  78. {janito-3.0.0 → janito-3.1.0}/docs/imgs/code-generation-observability.png +0 -0
  79. {janito-3.0.0 → janito-3.1.0}/docs/imgs/code_generation_observability.png +0 -0
  80. {janito-3.0.0 → janito-3.1.0}/docs/imgs/happy-programmer.png +0 -0
  81. {janito-3.0.0 → janito-3.1.0}/docs/imgs/happy-programmer.svg +0 -0
  82. {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal-one-shot.png +0 -0
  83. {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal-shell.png +0 -0
  84. {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal_one_shot.png +0 -0
  85. {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal_shell.png +0 -0
  86. {janito-3.0.0 → janito-3.1.0}/docs/index.md +0 -0
  87. {janito-3.0.0 → janito-3.1.0}/docs/llm-drivers-required-config.md +0 -0
  88. {janito-3.0.0 → janito-3.1.0}/docs/llm-drivers.md +0 -0
  89. {janito-3.0.0 → janito-3.1.0}/docs/meta/developer-toolchain.md +0 -0
  90. {janito-3.0.0 → janito-3.1.0}/docs/meta/quality-checks.txt +0 -0
  91. {janito-3.0.0 → janito-3.1.0}/docs/mistral-setup.md +0 -0
  92. {janito-3.0.0 → janito-3.1.0}/docs/moonshot-setup.md +0 -0
  93. {janito-3.0.0 → janito-3.1.0}/docs/openai-setup.md +0 -0
  94. {janito-3.0.0 → janito-3.1.0}/docs/overrides/partials/copyright.html +0 -0
  95. {janito-3.0.0 → janito-3.1.0}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
  96. {janito-3.0.0 → janito-3.1.0}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
  97. {janito-3.0.0 → janito-3.1.0}/docs/plugins/README.md +0 -0
  98. {janito-3.0.0 → janito-3.1.0}/docs/plugins/api-reference.md +0 -0
  99. {janito-3.0.0 → janito-3.1.0}/docs/plugins/architecture.md +0 -0
  100. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
  101. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/filemanager.md +0 -0
  102. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
  103. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
  104. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/system.md +0 -0
  105. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
  106. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
  107. {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
  108. {janito-3.0.0 → janito-3.1.0}/docs/plugins/configuration.md +0 -0
  109. {janito-3.0.0 → janito-3.1.0}/docs/plugins/examples/advanced.md +0 -0
  110. {janito-3.0.0 → janito-3.1.0}/docs/plugins/examples/basic.md +0 -0
  111. {janito-3.0.0 → janito-3.1.0}/docs/plugins/examples/intermediate.md +0 -0
  112. {janito-3.0.0 → janito-3.1.0}/docs/plugins/plugin-development.md +0 -0
  113. {janito-3.0.0 → janito-3.1.0}/docs/plugins/plugin-resources.md +0 -0
  114. {janito-3.0.0 → janito-3.1.0}/docs/plugins/publishing.md +0 -0
  115. {janito-3.0.0 → janito-3.1.0}/docs/plugins/remote-plugins.md +0 -0
  116. {janito-3.0.0 → janito-3.1.0}/docs/plugins/testing.md +0 -0
  117. {janito-3.0.0 → janito-3.1.0}/docs/provider-platform-access.md +0 -0
  118. {janito-3.0.0 → janito-3.1.0}/docs/public-sources.md +0 -0
  119. {janito-3.0.0 → janito-3.1.0}/docs/reference/api.md +0 -0
  120. {janito-3.0.0 → janito-3.1.0}/docs/reference/azure-openai.md +0 -0
  121. {janito-3.0.0 → janito-3.1.0}/docs/reference/cli-options.md +0 -0
  122. {janito-3.0.0 → janito-3.1.0}/docs/reference/message-handler-model.md +0 -0
  123. {janito-3.0.0 → janito-3.1.0}/docs/reference/rich-message-handler.md +0 -0
  124. {janito-3.0.0 → janito-3.1.0}/docs/security.md +0 -0
  125. {janito-3.0.0 → janito-3.1.0}/docs/supported-providers-models.md +0 -0
  126. {janito-3.0.0 → janito-3.1.0}/docs/tools/search-text.md +0 -0
  127. {janito-3.0.0 → janito-3.1.0}/docs/tools/show-image-grid.md +0 -0
  128. {janito-3.0.0 → janito-3.1.0}/docs/tools/show-image.md +0 -0
  129. {janito-3.0.0 → janito-3.1.0}/docs/tools-index.md +0 -0
  130. {janito-3.0.0 → janito-3.1.0}/docs/tools-natural-results.md +0 -0
  131. {janito-3.0.0 → janito-3.1.0}/docs/tools-precision.md +0 -0
  132. {janito-3.0.0 → janito-3.1.0}/docs/z-ai-setup.md +0 -0
  133. {janito-3.0.0 → janito-3.1.0}/examples/loop_protection_example.py +0 -0
  134. {janito-3.0.0 → janito-3.1.0}/examples/loop_protection_tool_example.py +0 -0
  135. {janito-3.0.0 → janito-3.1.0}/get_nasdaq_top.py +0 -0
  136. {janito-3.0.0 → janito-3.1.0}/ibm-logo.txt +0 -0
  137. {janito-3.0.0 → janito-3.1.0}/init_janito_tools.py +0 -0
  138. {janito-3.0.0 → janito-3.1.0}/janito/README.md +0 -0
  139. {janito-3.0.0 → janito-3.1.0}/janito/__init__.py +0 -0
  140. {janito-3.0.0 → janito-3.1.0}/janito/__main__.py +0 -0
  141. {janito-3.0.0 → janito-3.1.0}/janito/_version.py +0 -0
  142. {janito-3.0.0 → janito-3.1.0}/janito/agent/setup_agent.py +0 -0
  143. {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  144. {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  145. {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
  146. {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  147. {janito-3.0.0 → janito-3.1.0}/janito/cli/__init__.py +0 -0
  148. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/chat_entry.py +0 -0
  149. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/prompt_style.py +0 -0
  150. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/script_runner.py +0 -0
  151. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  152. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
  153. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  154. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  155. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  156. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  157. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  158. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  159. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  160. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  161. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  162. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  163. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  164. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  165. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  166. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  167. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
  168. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  169. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  170. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  171. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  172. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  173. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  174. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  175. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  176. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  177. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  178. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  179. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  180. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  181. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
  182. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  183. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
  184. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  185. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  186. {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/toolbar.py +0 -0
  187. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/check_tools.py +0 -0
  188. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
  189. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_config.py +0 -0
  190. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_drivers.py +0 -0
  191. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_models.py +0 -0
  192. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_plugins.py +0 -0
  193. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_profiles.py +0 -0
  194. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_providers.py +0 -0
  195. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
  196. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_tools.py +0 -0
  197. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/model_selection.py +0 -0
  198. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/model_utils.py +0 -0
  199. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/ping_providers.py +0 -0
  200. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/set_api_key.py +0 -0
  201. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/show_config.py +0 -0
  202. {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
  203. {janito-3.0.0 → janito-3.1.0}/janito/cli/config.py +0 -0
  204. {janito-3.0.0 → janito-3.1.0}/janito/cli/console.py +0 -0
  205. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/__init__.py +0 -0
  206. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/event_logger.py +0 -0
  207. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/getters.py +0 -0
  208. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/model_guesser.py +0 -0
  209. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/runner.py +0 -0
  210. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/setters.py +0 -0
  211. {janito-3.0.0 → janito-3.1.0}/janito/cli/core/unsetters.py +0 -0
  212. {janito-3.0.0 → janito-3.1.0}/janito/cli/main.py +0 -0
  213. {janito-3.0.0 → janito-3.1.0}/janito/cli/main_cli.py +0 -0
  214. {janito-3.0.0 → janito-3.1.0}/janito/cli/prompt_handler.py +0 -0
  215. {janito-3.0.0 → janito-3.1.0}/janito/cli/prompt_setup.py +0 -0
  216. {janito-3.0.0 → janito-3.1.0}/janito/cli/rich_terminal_reporter.py +0 -0
  217. {janito-3.0.0 → janito-3.1.0}/janito/cli/single_shot_mode/__init__.py +0 -0
  218. {janito-3.0.0 → janito-3.1.0}/janito/cli/single_shot_mode/handler.py +0 -0
  219. {janito-3.0.0 → janito-3.1.0}/janito/cli/utils.py +0 -0
  220. {janito-3.0.0 → janito-3.1.0}/janito/cli/verbose_output.py +0 -0
  221. {janito-3.0.0 → janito-3.1.0}/janito/config.py +0 -0
  222. {janito-3.0.0 → janito-3.1.0}/janito/config_manager.py +0 -0
  223. {janito-3.0.0 → janito-3.1.0}/janito/conversation_history.py +0 -0
  224. {janito-3.0.0 → janito-3.1.0}/janito/dir_walk_utils.py +0 -0
  225. {janito-3.0.0 → janito-3.1.0}/janito/docs/GETTING_STARTED.md +0 -0
  226. {janito-3.0.0 → janito-3.1.0}/janito/driver_events.py +0 -0
  227. {janito-3.0.0 → janito-3.1.0}/janito/drivers/azure_openai/driver.py +0 -0
  228. {janito-3.0.0 → janito-3.1.0}/janito/drivers/cerebras/__init__.py +0 -0
  229. {janito-3.0.0 → janito-3.1.0}/janito/drivers/dashscope.bak.zip +0 -0
  230. {janito-3.0.0 → janito-3.1.0}/janito/drivers/openai/README.md +0 -0
  231. {janito-3.0.0 → janito-3.1.0}/janito/drivers/openai/driver.py +0 -0
  232. {janito-3.0.0 → janito-3.1.0}/janito/drivers/openai_responses.bak.zip +0 -0
  233. {janito-3.0.0 → janito-3.1.0}/janito/drivers/zai/__init__.py +0 -0
  234. {janito-3.0.0 → janito-3.1.0}/janito/drivers/zai/driver.py +0 -0
  235. {janito-3.0.0 → janito-3.1.0}/janito/event_bus/__init__.py +0 -0
  236. {janito-3.0.0 → janito-3.1.0}/janito/event_bus/bus.py +0 -0
  237. {janito-3.0.0 → janito-3.1.0}/janito/event_bus/event.py +0 -0
  238. {janito-3.0.0 → janito-3.1.0}/janito/event_bus/handler.py +0 -0
  239. {janito-3.0.0 → janito-3.1.0}/janito/event_bus/queue_bus.py +0 -0
  240. {janito-3.0.0 → janito-3.1.0}/janito/exceptions.py +0 -0
  241. {janito-3.0.0 → janito-3.1.0}/janito/formatting.py +0 -0
  242. {janito-3.0.0 → janito-3.1.0}/janito/formatting_token.py +0 -0
  243. {janito-3.0.0 → janito-3.1.0}/janito/gitignore_utils.py +0 -0
  244. {janito-3.0.0 → janito-3.1.0}/janito/i18n/__init__.py +0 -0
  245. {janito-3.0.0 → janito-3.1.0}/janito/i18n/it.py +0 -0
  246. {janito-3.0.0 → janito-3.1.0}/janito/i18n/messages.py +0 -0
  247. {janito-3.0.0 → janito-3.1.0}/janito/i18n/pt.py +0 -0
  248. {janito-3.0.0 → janito-3.1.0}/janito/llm/README.md +0 -0
  249. {janito-3.0.0 → janito-3.1.0}/janito/llm/__init__.py +0 -0
  250. {janito-3.0.0 → janito-3.1.0}/janito/llm/auth.py +0 -0
  251. {janito-3.0.0 → janito-3.1.0}/janito/llm/auth_utils.py +0 -0
  252. {janito-3.0.0 → janito-3.1.0}/janito/llm/driver_config.py +0 -0
  253. {janito-3.0.0 → janito-3.1.0}/janito/llm/driver_config_builder.py +0 -0
  254. {janito-3.0.0 → janito-3.1.0}/janito/llm/driver_input.py +0 -0
  255. {janito-3.0.0 → janito-3.1.0}/janito/llm/message_parts.py +0 -0
  256. {janito-3.0.0 → janito-3.1.0}/janito/llm/model.py +0 -0
  257. {janito-3.0.0 → janito-3.1.0}/janito/llm/provider.py +0 -0
  258. {janito-3.0.0 → janito-3.1.0}/janito/mkdocs.yml +0 -0
  259. {janito-3.0.0 → janito-3.1.0}/janito/perf_singleton.py +0 -0
  260. {janito-3.0.0 → janito-3.1.0}/janito/performance_collector.py +0 -0
  261. {janito-3.0.0 → janito-3.1.0}/janito/platform_discovery.py +0 -0
  262. {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/__init__.py +0 -0
  263. {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/base.py +0 -0
  264. {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/core_loader.py +0 -0
  265. {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/core_loader_fixed.py +0 -0
  266. {janito-3.0.0 → janito-3.1.0}/janito/plugins/__init__.py +0 -0
  267. {janito-3.0.0 → janito-3.1.0}/janito/plugins/auto_loader.py +0 -0
  268. {janito-3.0.0 → janito-3.1.0}/janito/plugins/auto_loader_fixed.py +0 -0
  269. {janito-3.0.0 → janito-3.1.0}/janito/plugins/builtin.py +0 -0
  270. {janito-3.0.0 → janito-3.1.0}/janito/plugins/config.py +0 -0
  271. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/__init__.py +0 -0
  272. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/__init__.py +0 -0
  273. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
  274. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
  275. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
  276. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
  277. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
  278. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
  279. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
  280. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
  281. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
  282. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
  283. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
  284. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/__init__.py +0 -0
  285. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/copy_file.py +0 -0
  286. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/create_directory.py +0 -0
  287. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/create_file.py +0 -0
  288. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
  289. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/find_files.py +0 -0
  290. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/move_file.py +0 -0
  291. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/read_files.py +0 -0
  292. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/remove_directory.py +0 -0
  293. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/remove_file.py +0 -0
  294. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
  295. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
  296. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
  297. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
  298. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
  299. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
  300. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
  301. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
  302. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
  303. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
  304. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
  305. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
  306. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
  307. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/view_file.py +0 -0
  308. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/__init__.py +0 -0
  309. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/plugin.py +0 -0
  310. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/tools/__init__.py +0 -0
  311. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/tools/show_image.py +0 -0
  312. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
  313. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/system/__init__.py +0 -0
  314. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/system/tools/run_bash_command.py +0 -0
  315. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/system/tools/run_powershell_command.py +0 -0
  316. {janito-3.0.0 → janito-3.1.0}/janito/plugins/core_adapter.py +0 -0
  317. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/__init__.py +0 -0
  318. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/__init__.py +0 -0
  319. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/tools/python_code_run.py +0 -0
  320. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/tools/python_command_run.py +0 -0
  321. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/tools/python_file_run.py +0 -0
  322. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/visualization/__init__.py +0 -0
  323. {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/visualization/tools/read_chart.py +0 -0
  324. {janito-3.0.0 → janito-3.1.0}/janito/plugins/discovery.py +0 -0
  325. {janito-3.0.0 → janito-3.1.0}/janito/plugins/discovery_core.py +0 -0
  326. {janito-3.0.0 → janito-3.1.0}/janito/plugins/example_plugin.py +0 -0
  327. {janito-3.0.0 → janito-3.1.0}/janito/plugins/manager.py +0 -0
  328. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/__init__.py +0 -0
  329. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/ask_user.py +0 -0
  330. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/copy_file.py +0 -0
  331. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/core_tools_plugin.py +0 -0
  332. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/create_directory.py +0 -0
  333. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/create_file.py +0 -0
  334. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/decorators.py +0 -0
  335. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/delete_text_in_file.py +0 -0
  336. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/fetch_url.py +0 -0
  337. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/find_files.py +0 -0
  338. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/__init__.py +0 -0
  339. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/core.py +0 -0
  340. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/java_outline.py +0 -0
  341. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/markdown_outline.py +0 -0
  342. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/python_outline.py +0 -0
  343. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/search_outline.py +0 -0
  344. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/move_file.py +0 -0
  345. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/open_html_in_browser.py +0 -0
  346. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/open_url.py +0 -0
  347. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/python_code_run.py +0 -0
  348. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/python_command_run.py +0 -0
  349. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/python_file_run.py +0 -0
  350. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/read_chart.py +0 -0
  351. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/read_files.py +0 -0
  352. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/remove_directory.py +0 -0
  353. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/remove_file.py +0 -0
  354. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/replace_text_in_file.py +0 -0
  355. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/run_bash_command.py +0 -0
  356. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/run_powershell_command.py +0 -0
  357. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/__init__.py +0 -0
  358. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/core.py +0 -0
  359. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/match_lines.py +0 -0
  360. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/pattern_utils.py +0 -0
  361. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/traverse_directory.py +0 -0
  362. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/show_image.py +0 -0
  363. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/show_image_grid.py +0 -0
  364. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/__init__.py +0 -0
  365. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/core.py +0 -0
  366. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/css_validator.py +0 -0
  367. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/html_validator.py +0 -0
  368. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/jinja2_validator.py +0 -0
  369. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/js_validator.py +0 -0
  370. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/json_validator.py +0 -0
  371. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/markdown_validator.py +0 -0
  372. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/ps1_validator.py +0 -0
  373. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/python_validator.py +0 -0
  374. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/xml_validator.py +0 -0
  375. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/yaml_validator.py +0 -0
  376. {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/view_file.py +0 -0
  377. {janito-3.0.0 → janito-3.1.0}/janito/plugins/ui/__init__.py +0 -0
  378. {janito-3.0.0 → janito-3.1.0}/janito/plugins/ui/userinterface/__init__.py +0 -0
  379. {janito-3.0.0 → janito-3.1.0}/janito/plugins/ui/userinterface/tools/ask_user.py +0 -0
  380. {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/__init__.py +0 -0
  381. {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/__init__.py +0 -0
  382. {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/tools/fetch_url.py +0 -0
  383. {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
  384. {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/tools/open_url.py +0 -0
  385. {janito-3.0.0 → janito-3.1.0}/janito/provider_config.py +0 -0
  386. {janito-3.0.0 → janito-3.1.0}/janito/provider_registry.py +0 -0
  387. {janito-3.0.0 → janito-3.1.0}/janito/providers/__init__.py +0 -0
  388. {janito-3.0.0 → janito-3.1.0}/janito/providers/alibaba/__init__.py +0 -0
  389. {janito-3.0.0 → janito-3.1.0}/janito/providers/alibaba/model_info.py +0 -0
  390. {janito-3.0.0 → janito-3.1.0}/janito/providers/alibaba/provider.py +0 -0
  391. {janito-3.0.0 → janito-3.1.0}/janito/providers/anthropic/model_info.py +0 -0
  392. {janito-3.0.0 → janito-3.1.0}/janito/providers/anthropic/provider.py +0 -0
  393. {janito-3.0.0 → janito-3.1.0}/janito/providers/azure_openai/model_info.py +0 -0
  394. {janito-3.0.0 → janito-3.1.0}/janito/providers/azure_openai/provider.py +0 -0
  395. {janito-3.0.0 → janito-3.1.0}/janito/providers/cerebras/__init__.py +0 -0
  396. {janito-3.0.0 → janito-3.1.0}/janito/providers/cerebras/model_info.py +0 -0
  397. {janito-3.0.0 → janito-3.1.0}/janito/providers/cerebras/provider.py +0 -0
  398. {janito-3.0.0 → janito-3.1.0}/janito/providers/dashscope.bak.zip +0 -0
  399. {janito-3.0.0 → janito-3.1.0}/janito/providers/deepseek/__init__.py +0 -0
  400. {janito-3.0.0 → janito-3.1.0}/janito/providers/deepseek/model_info.py +0 -0
  401. {janito-3.0.0 → janito-3.1.0}/janito/providers/deepseek/provider.py +0 -0
  402. {janito-3.0.0 → janito-3.1.0}/janito/providers/google/__init__.py +0 -0
  403. {janito-3.0.0 → janito-3.1.0}/janito/providers/google/model_info.py +0 -0
  404. {janito-3.0.0 → janito-3.1.0}/janito/providers/google/provider.py +0 -0
  405. {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/README.md +0 -0
  406. {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/__init__.py +0 -0
  407. {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/model_info.py +0 -0
  408. {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/provider.py +0 -0
  409. {janito-3.0.0 → janito-3.1.0}/janito/providers/mistral/__init__.py +0 -0
  410. {janito-3.0.0 → janito-3.1.0}/janito/providers/mistral/model_info.py +0 -0
  411. {janito-3.0.0 → janito-3.1.0}/janito/providers/mistral/provider.py +0 -0
  412. {janito-3.0.0 → janito-3.1.0}/janito/providers/moonshot/__init__.py +0 -0
  413. {janito-3.0.0 → janito-3.1.0}/janito/providers/moonshot/model_info.py +0 -0
  414. {janito-3.0.0 → janito-3.1.0}/janito/providers/moonshot/provider.py +0 -0
  415. {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/__init__.py +0 -0
  416. {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/model_info.py +0 -0
  417. {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/provider.py +0 -0
  418. {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/schema_generator.py +0 -0
  419. {janito-3.0.0 → janito-3.1.0}/janito/providers/registry.py +0 -0
  420. {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/__init__.py +0 -0
  421. {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/model_info.py +0 -0
  422. {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/provider.py +0 -0
  423. {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/schema_generator.py +0 -0
  424. {janito-3.0.0 → janito-3.1.0}/janito/regions/__init__.py +0 -0
  425. {janito-3.0.0 → janito-3.1.0}/janito/regions/cli.py +0 -0
  426. {janito-3.0.0 → janito-3.1.0}/janito/regions/geo_utils.py +0 -0
  427. {janito-3.0.0 → janito-3.1.0}/janito/regions/provider_regions.py +0 -0
  428. {janito-3.0.0 → janito-3.1.0}/janito/report_events.py +0 -0
  429. {janito-3.0.0 → janito-3.1.0}/janito/shell.bak.zip +0 -0
  430. {janito-3.0.0 → janito-3.1.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  431. {janito-3.0.0 → janito-3.1.0}/janito/tools/README.md +0 -0
  432. {janito-3.0.0 → janito-3.1.0}/janito/tools/__init__.py +0 -0
  433. {janito-3.0.0 → janito-3.1.0}/janito/tools/adapters/__init__.py +0 -0
  434. {janito-3.0.0 → janito-3.1.0}/janito/tools/adapters/local/__init__.py +0 -0
  435. {janito-3.0.0 → janito-3.1.0}/janito/tools/adapters/local/adapter.py +0 -0
  436. {janito-3.0.0 → janito-3.1.0}/janito/tools/base.py +0 -0
  437. {janito-3.0.0 → janito-3.1.0}/janito/tools/cli_initializer.py +0 -0
  438. {janito-3.0.0 → janito-3.1.0}/janito/tools/disabled_tools.py +0 -0
  439. {janito-3.0.0 → janito-3.1.0}/janito/tools/function_adapter.py +0 -0
  440. {janito-3.0.0 → janito-3.1.0}/janito/tools/initialize.py +0 -0
  441. {janito-3.0.0 → janito-3.1.0}/janito/tools/inspect_registry.py +0 -0
  442. {janito-3.0.0 → janito-3.1.0}/janito/tools/loop_protection.py +0 -0
  443. {janito-3.0.0 → janito-3.1.0}/janito/tools/loop_protection_decorator.py +0 -0
  444. {janito-3.0.0 → janito-3.1.0}/janito/tools/outline_file.bak.zip +0 -0
  445. {janito-3.0.0 → janito-3.1.0}/janito/tools/path_security.py +0 -0
  446. {janito-3.0.0 → janito-3.1.0}/janito/tools/path_utils.py +0 -0
  447. {janito-3.0.0 → janito-3.1.0}/janito/tools/permissions.py +0 -0
  448. {janito-3.0.0 → janito-3.1.0}/janito/tools/permissions_parse.py +0 -0
  449. {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_base.py +0 -0
  450. {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_events.py +0 -0
  451. {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_run_exception.py +0 -0
  452. {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_use_tracker.py +0 -0
  453. {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_utils.py +0 -0
  454. {janito-3.0.0 → janito-3.1.0}/janito/tools/tools_adapter.py +0 -0
  455. {janito-3.0.0 → janito-3.1.0}/janito/tools/tools_schema.py +0 -0
  456. {janito-3.0.0 → janito-3.1.0}/janito/tools/url_whitelist.py +0 -0
  457. {janito-3.0.0 → janito-3.1.0}/janito/utils.py +0 -0
  458. {janito-3.0.0 → janito-3.1.0}/janito.egg-info/dependency_links.txt +0 -0
  459. {janito-3.0.0 → janito-3.1.0}/janito.egg-info/entry_points.txt +0 -0
  460. {janito-3.0.0 → janito-3.1.0}/janito.egg-info/requires.txt +0 -0
  461. {janito-3.0.0 → janito-3.1.0}/janito.egg-info/top_level.txt +0 -0
  462. {janito-3.0.0 → janito-3.1.0}/market_prompt_fix.py +0 -0
  463. {janito-3.0.0 → janito-3.1.0}/market_test.py +0 -0
  464. {janito-3.0.0 → janito-3.1.0}/mkdocs.yml +0 -0
  465. {janito-3.0.0 → janito-3.1.0}/mkdocs_hooks.py +0 -0
  466. {janito-3.0.0 → janito-3.1.0}/pyproject.toml +0 -0
  467. {janito-3.0.0 → janito-3.1.0}/pytest.ini +0 -0
  468. {janito-3.0.0 → janito-3.1.0}/requirements-dev.txt +0 -0
  469. {janito-3.0.0 → janito-3.1.0}/requirements.txt +0 -0
  470. {janito-3.0.0 → janito-3.1.0}/setup.cfg +0 -0
  471. {janito-3.0.0 → janito-3.1.0}/test.txt +0 -0
  472. {janito-3.0.0 → janito-3.1.0}/test_example.py +0 -0
  473. {janito-3.0.0 → janito-3.1.0}/test_http_errors.py +0 -0
  474. {janito-3.0.0 → janito-3.1.0}/test_http_errors_direct.py +0 -0
  475. {janito-3.0.0 → janito-3.1.0}/test_key_field_behavior.py +0 -0
  476. {janito-3.0.0 → janito-3.1.0}/test_key_field_protection.py +0 -0
  477. {janito-3.0.0 → janito-3.1.0}/test_loop_protection_return.py +0 -0
  478. {janito-3.0.0 → janito-3.1.0}/test_market_analyst.py +0 -0
  479. {janito-3.0.0 → janito-3.1.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
  480. {janito-3.0.0 → janito-3.1.0}/tests/adapters/local/test_read_files.py +0 -0
  481. {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_models.py +0 -0
  482. {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_providers.py +0 -0
  483. {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_providers_alibaba.py +0 -0
  484. {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_providers_moonshot.py +0 -0
  485. {janito-3.0.0 → janito-3.1.0}/tests/test_cli_version.py +0 -0
  486. {janito-3.0.0 → janito-3.1.0}/tests/test_disabled_tools.py +0 -0
  487. {janito-3.0.0 → janito-3.1.0}/tests/test_plugin_system.py +0 -0
  488. {janito-3.0.0 → janito-3.1.0}/tests/test_provider_alibaba.py +0 -0
  489. {janito-3.0.0 → janito-3.1.0}/tests/test_provider_cerebras.py +0 -0
  490. {janito-3.0.0 → janito-3.1.0}/tests/test_provider_moonshot.py +0 -0
  491. {janito-3.0.0 → janito-3.1.0}/tools/release.py +0 -0
  492. {janito-3.0.0 → janito-3.1.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: A new Python package called janito.
5
5
  Author-email: João Pinto <janito@ikignosis.org>
6
6
  Project-URL: Homepage, https://github.com/ikignosis/janito
@@ -0,0 +1,64 @@
1
+ """
2
+ Key bindings for Janito Chat CLI.
3
+ """
4
+
5
+ from prompt_toolkit.key_binding import KeyBindings
6
+ from janito.tools.permissions import get_global_allowed_permissions
7
+
8
+
9
+ class KeyBindingsFactory:
10
+ @staticmethod
11
+ def create():
12
+ bindings = KeyBindings()
13
+
14
+ @bindings.add("c-y")
15
+ def _(event):
16
+ buf = event.app.current_buffer
17
+ buf.text = "Yes"
18
+ buf.validate_and_handle()
19
+
20
+ @bindings.add("c-n")
21
+ def _(event):
22
+ buf = event.app.current_buffer
23
+ buf.text = "No"
24
+ buf.validate_and_handle()
25
+
26
+ @bindings.add("f2")
27
+ def _(event):
28
+ buf = event.app.current_buffer
29
+ buf.text = "/restart"
30
+ buf.validate_and_handle()
31
+
32
+ @bindings.add("f12")
33
+ def _(event):
34
+ buf = event.app.current_buffer
35
+ buf.text = "Do It"
36
+ buf.validate_and_handle()
37
+
38
+ @bindings.add("enter", eager=True)
39
+ def _(event):
40
+ """Handle Enter key to interrupt current request."""
41
+ import threading
42
+
43
+ # Get the current session context
44
+ from prompt_toolkit.application import get_app
45
+ app = get_app()
46
+
47
+ # Use global cancellation manager for robust cancellation
48
+ from janito.llm.cancellation_manager import get_cancellation_manager
49
+ cancel_manager = get_cancellation_manager()
50
+
51
+ cancelled = cancel_manager.cancel_current_request()
52
+ if cancelled:
53
+ # Provide user feedback
54
+ from rich.console import Console
55
+ console = Console()
56
+ console.print("[red]Request cancelled by Enter key[/red]")
57
+
58
+ # Prevent the Enter key from being processed as input
59
+ event.app.output.flush()
60
+ return
61
+
62
+ # If no active request to cancel, let normal Enter behavior proceed
63
+
64
+ return bindings
@@ -283,7 +283,13 @@ class ChatSession:
283
283
  )
284
284
  )
285
285
 
286
- self._prompt_handler.run_prompt(cmd_input)
286
+ try:
287
+ self._prompt_handler.run_prompt(cmd_input)
288
+ finally:
289
+ # Ensure cancellation manager is cleared
290
+ cancel_manager = get_cancellation_manager()
291
+ cancel_manager.clear_current_request()
292
+
287
293
  end_time = time.time()
288
294
  elapsed = end_time - start_time
289
295
  self.msg_count += 1
@@ -207,15 +207,25 @@ class PromptHandler:
207
207
  """
208
208
  try:
209
209
  self._print_verbose_debug("Calling agent.chat()...")
210
- final_event = self.agent.chat(prompt=user_prompt)
211
- if hasattr(self.agent, "set_latest_event"):
212
- self.agent.set_latest_event(final_event)
213
- self.agent.last_event = final_event
214
- self._print_verbose_debug(f"agent.chat() returned: {final_event}")
215
- self._print_verbose_final_event(final_event)
216
- if on_event and final_event is not None:
217
- on_event(final_event)
218
- global_event_bus.publish(final_event)
210
+
211
+ # Use global cancellation manager
212
+ from janito.llm.cancellation_manager import get_cancellation_manager
213
+ cancel_manager = get_cancellation_manager()
214
+ driver_cancel_event = cancel_manager.start_new_request()
215
+
216
+ try:
217
+ final_event = self.agent.chat(prompt=user_prompt)
218
+ if hasattr(self.agent, "set_latest_event"):
219
+ self.agent.set_latest_event(final_event)
220
+ self.agent.last_event = final_event
221
+ self._print_verbose_debug(f"agent.chat() returned: {final_event}")
222
+ self._print_verbose_final_event(final_event)
223
+ if on_event and final_event is not None:
224
+ on_event(final_event)
225
+ global_event_bus.publish(final_event)
226
+ finally:
227
+ cancel_manager.clear_current_request()
228
+
219
229
  except KeyboardInterrupt:
220
230
  # Capture user interrupt / cancellation
221
231
  self.console.print("[red]Interrupted by the user.[/red]")
@@ -318,23 +318,36 @@ class LLMAgent:
318
318
  loop_count = 1
319
319
  import threading
320
320
 
321
- cancel_event = threading.Event()
322
- while True:
323
- self._print_verbose_chat_loop(loop_count)
324
- driver_input = self._prepare_driver_input(config, cancel_event=cancel_event)
325
- self.input_queue.put(driver_input)
326
- try:
327
- result, added_tool_results = self._process_next_response()
328
- except KeyboardInterrupt:
329
- cancel_event.set()
330
- raise
331
- if getattr(self, "verbose_agent", False):
332
- print(
333
- f"[agent] [DEBUG] Returned from _process_next_response: result={result}, added_tool_results={added_tool_results}"
334
- )
335
- if self._should_exit_chat_loop(result, added_tool_results):
336
- return result
337
- loop_count += 1
321
+ # Use global cancellation manager
322
+ from janito.llm.cancellation_manager import get_cancellation_manager
323
+ cancel_manager = get_cancellation_manager()
324
+ driver_cancel_event = cancel_manager.start_new_request()
325
+
326
+ # Store cancellation event on agent for external access
327
+ self.cancel_event = driver_cancel_event
328
+
329
+ try:
330
+ while True:
331
+ self._print_verbose_chat_loop(loop_count)
332
+ driver_input = self._prepare_driver_input(config, cancel_event=driver_cancel_event)
333
+ self.input_queue.put(driver_input)
334
+ try:
335
+ result, added_tool_results = self._process_next_response()
336
+ except KeyboardInterrupt:
337
+ cancel_manager.cancel_current_request()
338
+ raise
339
+ if getattr(self, "verbose_agent", False):
340
+ print(
341
+ f"[agent] [DEBUG] Returned from _process_next_response: result={result}, added_tool_results={added_tool_results}"
342
+ )
343
+ if self._should_exit_chat_loop(result, added_tool_results):
344
+ return result
345
+ loop_count += 1
346
+ finally:
347
+ cancel_manager.clear_current_request()
348
+ # Clean up cancellation event
349
+ if hasattr(self, 'cancel_event'):
350
+ delattr(self, 'cancel_event')
338
351
 
339
352
  def _clear_driver_queues(self):
340
353
  if hasattr(self, "driver") and self.driver:
@@ -0,0 +1,62 @@
1
+ """
2
+ Global cancellation manager for LLM requests.
3
+ Provides a centralized way to cancel ongoing requests.
4
+ """
5
+
6
+ import threading
7
+ from typing import Optional
8
+
9
+
10
+ class CancellationManager:
11
+ """Manages cancellation of LLM requests across the application."""
12
+
13
+ def __init__(self):
14
+ self._current_cancel_event: Optional[threading.Event] = None
15
+ self._lock = threading.Lock()
16
+ self._keyboard_cancellation = None
17
+
18
+ def start_new_request(self) -> threading.Event:
19
+ """Start a new request and return its cancellation event."""
20
+ with self._lock:
21
+ # Create new cancellation event for this request
22
+ self._current_cancel_event = threading.Event()
23
+
24
+ # Start keyboard monitoring
25
+ from janito.llm.enter_cancellation import get_enter_cancellation
26
+ self._keyboard_cancellation = get_enter_cancellation()
27
+ self._keyboard_cancellation.start_monitoring(self._current_cancel_event)
28
+
29
+ return self._current_cancel_event
30
+
31
+ def cancel_current_request(self) -> bool:
32
+ """Cancel the current request if one is active."""
33
+ with self._lock:
34
+ if self._current_cancel_event is not None:
35
+ self._current_cancel_event.set()
36
+ return True
37
+ return False
38
+
39
+ def get_current_cancel_event(self) -> Optional[threading.Event]:
40
+ """Get the current cancellation event."""
41
+ with self._lock:
42
+ return self._current_cancel_event
43
+
44
+ def clear_current_request(self):
45
+ """Clear the current request cancellation event."""
46
+ with self._lock:
47
+ if self._keyboard_cancellation:
48
+ self._keyboard_cancellation.stop_monitoring()
49
+ self._keyboard_cancellation = None
50
+ self._current_cancel_event = None
51
+
52
+
53
+ # Global cancellation manager instance
54
+ _global_manager = None
55
+
56
+
57
+ def get_cancellation_manager() -> CancellationManager:
58
+ """Get the global cancellation manager instance."""
59
+ global _global_manager
60
+ if _global_manager is None:
61
+ _global_manager = CancellationManager()
62
+ return _global_manager
@@ -252,3 +252,10 @@ class LLMDriver(ABC):
252
252
  def _get_message_from_result(self, result):
253
253
  """Extract the message object from the provider result. Subclasses must implement this."""
254
254
  raise NotImplementedError("Subclasses must implement _get_message_from_result.")
255
+
256
+ def cancel_current_request(self):
257
+ """Cancel the current request being processed."""
258
+ # Use global cancellation manager to cancel the current request
259
+ from janito.llm.cancellation_manager import get_cancellation_manager
260
+ cancel_manager = get_cancellation_manager()
261
+ cancel_manager.cancel_current_request()
@@ -0,0 +1,93 @@
1
+ """
2
+ Enter key cancellation for LLM requests.
3
+ Allows pressing Enter to cancel ongoing requests.
4
+ """
5
+
6
+ import threading
7
+ import sys
8
+ import time
9
+ from typing import Optional
10
+
11
+
12
+ class EnterCancellation:
13
+ """Handles Enter key cancellation of LLM requests."""
14
+
15
+ def __init__(self):
16
+ self._cancel_event: Optional[threading.Event] = None
17
+ self._listener_thread: Optional[threading.Thread] = None
18
+ self._listening = False
19
+
20
+ def start_monitoring(self, cancel_event: threading.Event):
21
+ """Start monitoring for Enter key to cancel the request."""
22
+ if self._listening:
23
+ return
24
+
25
+ self._cancel_event = cancel_event
26
+ self._listening = True
27
+
28
+ self._listener_thread = threading.Thread(
29
+ target=self._monitor_enter_key, daemon=True
30
+ )
31
+ self._listener_thread.start()
32
+
33
+ def stop_monitoring(self):
34
+ """Stop monitoring for keyboard input."""
35
+ self._listening = False
36
+ if self._listener_thread and self._listener_thread.is_alive():
37
+ self._listener_thread.join(timeout=0.1)
38
+
39
+ def _monitor_enter_key(self):
40
+ """Monitor for Enter key press."""
41
+ try:
42
+ import sys
43
+ import select
44
+ import msvcrt # Windows-specific keyboard input
45
+
46
+ # Monitor for Enter key (Windows-specific implementation)
47
+ while self._listening and self._cancel_event and not self._cancel_event.is_set():
48
+ try:
49
+ # Windows-specific: check if key is available
50
+ if msvcrt.kbhit():
51
+ char = msvcrt.getch()
52
+ # Check for Enter key (carriage return or newline)
53
+ if char in [b'\r', b'\n']:
54
+ if self._cancel_event:
55
+ self._cancel_event.set()
56
+ break
57
+ else:
58
+ # Discard any other input
59
+ pass
60
+ else:
61
+ # Small delay to prevent high CPU usage
62
+ time.sleep(0.05)
63
+
64
+ except (IOError, OSError):
65
+ break
66
+ except Exception:
67
+ # Fallback to select-based approach for non-Windows
68
+ try:
69
+ if sys.stdin in select.select([sys.stdin], [], [], 0.05)[0]:
70
+ char = sys.stdin.read(1)
71
+ if char in ['\r', '\n']: # Enter key
72
+ if self._cancel_event:
73
+ self._cancel_event.set()
74
+ break
75
+ except:
76
+ pass
77
+ time.sleep(0.05)
78
+
79
+ except Exception:
80
+ # Silently handle any errors
81
+ pass
82
+
83
+
84
+ # Global instance
85
+ _global_enter_cancellation = None
86
+
87
+
88
+ def get_enter_cancellation() -> EnterCancellation:
89
+ """Get the global Enter cancellation instance."""
90
+ global _global_enter_cancellation
91
+ if _global_enter_cancellation is None:
92
+ _global_enter_cancellation = EnterCancellation()
93
+ return _global_enter_cancellation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 3.0.0
3
+ Version: 3.1.0
4
4
  Summary: A new Python package called janito.
5
5
  Author-email: João Pinto <janito@ikignosis.org>
6
6
  Project-URL: Homepage, https://github.com/ikignosis/janito
@@ -274,10 +274,12 @@ janito/llm/__init__.py
274
274
  janito/llm/agent.py
275
275
  janito/llm/auth.py
276
276
  janito/llm/auth_utils.py
277
+ janito/llm/cancellation_manager.py
277
278
  janito/llm/driver.py
278
279
  janito/llm/driver_config.py
279
280
  janito/llm/driver_config_builder.py
280
281
  janito/llm/driver_input.py
282
+ janito/llm/enter_cancellation.py
281
283
  janito/llm/message_parts.py
282
284
  janito/llm/model.py
283
285
  janito/llm/provider.py
@@ -1,38 +0,0 @@
1
- """
2
- Key bindings for Janito Chat CLI.
3
- """
4
-
5
- from prompt_toolkit.key_binding import KeyBindings
6
- from janito.tools.permissions import get_global_allowed_permissions
7
-
8
-
9
- class KeyBindingsFactory:
10
- @staticmethod
11
- def create():
12
- bindings = KeyBindings()
13
-
14
- @bindings.add("c-y")
15
- def _(event):
16
- buf = event.app.current_buffer
17
- buf.text = "Yes"
18
- buf.validate_and_handle()
19
-
20
- @bindings.add("c-n")
21
- def _(event):
22
- buf = event.app.current_buffer
23
- buf.text = "No"
24
- buf.validate_and_handle()
25
-
26
- @bindings.add("f2")
27
- def _(event):
28
- buf = event.app.current_buffer
29
- buf.text = "/restart"
30
- buf.validate_and_handle()
31
-
32
- @bindings.add("f12")
33
- def _(event):
34
- buf = event.app.current_buffer
35
- buf.text = "Do It"
36
- buf.validate_and_handle()
37
-
38
- return bindings
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes