janito 3.12.1__tar.gz → 3.12.2__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.12.1 → janito-3.12.2}/PKG-INFO +1 -1
  2. janito-3.12.2/alibaba-qwen3.md +81 -0
  3. janito-3.12.2/cow.txt +7 -0
  4. janito-3.12.2/detailed_cow.txt +12 -0
  5. {janito-3.12.1 → janito-3.12.2}/docs/index.md +1 -1
  6. {janito-3.12.1 → janito-3.12.2}/docs/plugins/README.md +101 -101
  7. {janito-3.12.1 → janito-3.12.2}/docs/plugins/architecture.md +127 -127
  8. janito-3.12.2/docs/plugins/built-in-plugins/visualization.md +62 -0
  9. {janito-3.12.1 → janito-3.12.2}/docs/tools-index.md +1 -11
  10. {janito-3.12.1 → janito-3.12.2}/janito/agent/setup_agent.py +378 -377
  11. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/session.py +505 -505
  12. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_profiles.py +104 -107
  13. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/show_system_prompt.py +166 -166
  14. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/runner.py +250 -266
  15. {janito-3.12.1 → janito-3.12.2}/janito/cli/main_cli.py +520 -519
  16. {janito-3.12.1 → janito-3.12.2}/janito/cli/single_shot_mode/handler.py +167 -167
  17. {janito-3.12.1 → janito-3.12.2}/janito/llm/__init__.py +6 -5
  18. {janito-3.12.1 → janito-3.12.2}/janito/llm/driver.py +290 -254
  19. janito-3.12.2/janito/llm/response_cache.py +57 -0
  20. {janito-3.12.1 → janito-3.12.2}/janito/plugins/builtin.py +64 -88
  21. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/__init__.py +82 -80
  22. janito-3.12.2/janito/plugins/tools/local/markdown_view.py +94 -0
  23. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/show_image.py +119 -74
  24. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/show_image_grid.py +134 -76
  25. {janito-3.12.1 → janito-3.12.2}/janito/providers/alibaba/model_info.py +136 -105
  26. {janito-3.12.1 → janito-3.12.2}/janito.egg-info/PKG-INFO +1 -1
  27. {janito-3.12.1 → janito-3.12.2}/janito.egg-info/SOURCES.txt +6 -4
  28. janito-3.12.2/penguin_ascii.py +73 -0
  29. {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/tools/show_image.py +117 -74
  30. janito-3.12.1/docs/guides/read-chart-examples.md +0 -181
  31. janito-3.12.1/docs/plugins/built-in-plugins/visualization.md +0 -94
  32. janito-3.12.1/plugins.txt +0 -1
  33. janito-3.12.1/tux.svg +0 -438
  34. janito-3.12.1/tux_dynamic.png +0 -0
  35. {janito-3.12.1 → janito-3.12.2}/.codespellrc +0 -0
  36. {janito-3.12.1 → janito-3.12.2}/.gitattributes +0 -0
  37. {janito-3.12.1 → janito-3.12.2}/.github/workflows/python-app.yml.disabled +0 -0
  38. {janito-3.12.1 → janito-3.12.2}/.gitignore +0 -0
  39. {janito-3.12.1 → janito-3.12.2}/.pre-commit-config.yaml +0 -0
  40. {janito-3.12.1 → janito-3.12.2}/.secrets.baseline +0 -0
  41. {janito-3.12.1 → janito-3.12.2}/.vscode/settings.json +0 -0
  42. {janito-3.12.1 → janito-3.12.2}/LICENSE +0 -0
  43. {janito-3.12.1 → janito-3.12.2}/MARKET_ANALYST_README.md +0 -0
  44. {janito-3.12.1 → janito-3.12.2}/README-dev.md +0 -0
  45. {janito-3.12.1 → janito-3.12.2}/README.md +0 -0
  46. {janito-3.12.1 → janito-3.12.2}/RELEASE_COMPARISON.md +0 -0
  47. {janito-3.12.1 → janito-3.12.2}/UPDATING_DOCS.md +0 -0
  48. {janito-3.12.1 → janito-3.12.2}/adding_mcp.txt +0 -0
  49. {janito-3.12.1 → janito-3.12.2}/docs/CHANGELOG.md +0 -0
  50. {janito-3.12.1 → janito-3.12.2}/docs/DIV.md +0 -0
  51. {janito-3.12.1 → janito-3.12.2}/docs/Interfaces.txt +0 -0
  52. {janito-3.12.1 → janito-3.12.2}/docs/PROFILES.md +0 -0
  53. {janito-3.12.1 → janito-3.12.2}/docs/TOOLBAR-STYLING.md +0 -0
  54. {janito-3.12.1 → janito-3.12.2}/docs/about/costs.md +0 -0
  55. {janito-3.12.1 → janito-3.12.2}/docs/about/vs-webchats.md +0 -0
  56. {janito-3.12.1 → janito-3.12.2}/docs/about/why.md +0 -0
  57. {janito-3.12.1 → janito-3.12.2}/docs/agent/agent-lifecycle.md +0 -0
  58. {janito-3.12.1 → janito-3.12.2}/docs/agent/tools-workflow-lifecycle.md +0 -0
  59. {janito-3.12.1 → janito-3.12.2}/docs/alibaba-setup.md +0 -0
  60. {janito-3.12.1 → janito-3.12.2}/docs/alternatives.md +0 -0
  61. {janito-3.12.1 → janito-3.12.2}/docs/cerebras-setup.md +0 -0
  62. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG.md +0 -0
  63. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  64. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  65. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  66. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  67. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  68. {janito-3.12.1 → janito-3.12.2}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  69. {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  70. {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/code-generation-challenges.md +0 -0
  71. {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/code-generation-observability.md +0 -0
  72. {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/our-approach.md +0 -0
  73. {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/why-string-replacement.md +0 -0
  74. {janito-3.12.1 → janito-3.12.2}/docs/concepts/analysis-style.md +0 -0
  75. {janito-3.12.1 → janito-3.12.2}/docs/concepts/human-guided-ai.md +0 -0
  76. {janito-3.12.1 → janito-3.12.2}/docs/concepts/index.md +0 -0
  77. {janito-3.12.1 → janito-3.12.2}/docs/concepts/language-model-clients.md +0 -0
  78. {janito-3.12.1 → janito-3.12.2}/docs/concepts/prompt-design-style.md +0 -0
  79. {janito-3.12.1 → janito-3.12.2}/docs/deepseek-setup.md +0 -0
  80. {janito-3.12.1 → janito-3.12.2}/docs/driver-flow.md +0 -0
  81. {janito-3.12.1 → janito-3.12.2}/docs/driver-request-cancellation.md +0 -0
  82. {janito-3.12.1 → janito-3.12.2}/docs/drivers/events.md +0 -0
  83. {janito-3.12.1 → janito-3.12.2}/docs/drivers.md +0 -0
  84. {janito-3.12.1 → janito-3.12.2}/docs/event-bus.md +0 -0
  85. {janito-3.12.1 → janito-3.12.2}/docs/guides/configuration.md +0 -0
  86. {janito-3.12.1 → janito-3.12.2}/docs/guides/developing.md +0 -0
  87. {janito-3.12.1 → janito-3.12.2}/docs/guides/disabled-tools.md +0 -0
  88. {janito-3.12.1 → janito-3.12.2}/docs/guides/installation.md +0 -0
  89. {janito-3.12.1 → janito-3.12.2}/docs/guides/market-data-sources.md +0 -0
  90. {janito-3.12.1 → janito-3.12.2}/docs/guides/profiles.md +0 -0
  91. {janito-3.12.1 → janito-3.12.2}/docs/guides/prompting/README.md +0 -0
  92. {janito-3.12.1 → janito-3.12.2}/docs/guides/security-commands.md +0 -0
  93. {janito-3.12.1 → janito-3.12.2}/docs/guides/single-shot-terminal.md +0 -0
  94. {janito-3.12.1 → janito-3.12.2}/docs/guides/stock-market-guide.md +0 -0
  95. {janito-3.12.1 → janito-3.12.2}/docs/guides/terminal-shell.md +0 -0
  96. {janito-3.12.1 → janito-3.12.2}/docs/guides/tools-developer-guide.md +0 -0
  97. {janito-3.12.1 → janito-3.12.2}/docs/guides/url-whitelist.md +0 -0
  98. {janito-3.12.1 → janito-3.12.2}/docs/guides/using.md +0 -0
  99. {janito-3.12.1 → janito-3.12.2}/docs/guides/using_tools.md +0 -0
  100. {janito-3.12.1 → janito-3.12.2}/docs/ibm-setup.md +0 -0
  101. {janito-3.12.1 → janito-3.12.2}/docs/imgs/code-generation-observability.png +0 -0
  102. {janito-3.12.1 → janito-3.12.2}/docs/imgs/code_generation_observability.png +0 -0
  103. {janito-3.12.1 → janito-3.12.2}/docs/imgs/happy-programmer.png +0 -0
  104. {janito-3.12.1 → janito-3.12.2}/docs/imgs/happy-programmer.svg +0 -0
  105. {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal-one-shot.png +0 -0
  106. {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal-shell.png +0 -0
  107. {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal_one_shot.png +0 -0
  108. {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal_shell.png +0 -0
  109. {janito-3.12.1 → janito-3.12.2}/docs/llm-drivers-required-config.md +0 -0
  110. {janito-3.12.1 → janito-3.12.2}/docs/llm-drivers.md +0 -0
  111. {janito-3.12.1 → janito-3.12.2}/docs/meta/developer-toolchain.md +0 -0
  112. {janito-3.12.1 → janito-3.12.2}/docs/meta/quality-checks.txt +0 -0
  113. {janito-3.12.1 → janito-3.12.2}/docs/mistral-setup.md +0 -0
  114. {janito-3.12.1 → janito-3.12.2}/docs/moonshot-setup.md +0 -0
  115. {janito-3.12.1 → janito-3.12.2}/docs/openai-setup.md +0 -0
  116. {janito-3.12.1 → janito-3.12.2}/docs/overrides/partials/copyright.html +0 -0
  117. {janito-3.12.1 → janito-3.12.2}/docs/plugins/api-reference.md +0 -0
  118. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
  119. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/filemanager.md +0 -0
  120. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
  121. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/pythondev.md +0 -0
  122. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/system.md +0 -0
  123. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/userinterface.md +0 -0
  124. {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/webtools.md +0 -0
  125. {janito-3.12.1 → janito-3.12.2}/docs/plugins/configuration.md +0 -0
  126. {janito-3.12.1 → janito-3.12.2}/docs/plugins/examples/advanced.md +0 -0
  127. {janito-3.12.1 → janito-3.12.2}/docs/plugins/examples/basic.md +0 -0
  128. {janito-3.12.1 → janito-3.12.2}/docs/plugins/examples/intermediate.md +0 -0
  129. {janito-3.12.1 → janito-3.12.2}/docs/plugins/plugin-development.md +0 -0
  130. {janito-3.12.1 → janito-3.12.2}/docs/plugins/plugin-resources.md +0 -0
  131. {janito-3.12.1 → janito-3.12.2}/docs/plugins/publishing.md +0 -0
  132. {janito-3.12.1 → janito-3.12.2}/docs/plugins/remote-plugins.md +0 -0
  133. {janito-3.12.1 → janito-3.12.2}/docs/plugins/testing.md +0 -0
  134. {janito-3.12.1 → janito-3.12.2}/docs/provider-platform-access.md +0 -0
  135. {janito-3.12.1 → janito-3.12.2}/docs/public-sources.md +0 -0
  136. {janito-3.12.1 → janito-3.12.2}/docs/reference/api.md +0 -0
  137. {janito-3.12.1 → janito-3.12.2}/docs/reference/azure-openai.md +0 -0
  138. {janito-3.12.1 → janito-3.12.2}/docs/reference/cli-options.md +0 -0
  139. {janito-3.12.1 → janito-3.12.2}/docs/reference/message-handler-model.md +0 -0
  140. {janito-3.12.1 → janito-3.12.2}/docs/reference/rich-message-handler.md +0 -0
  141. {janito-3.12.1 → janito-3.12.2}/docs/security.md +0 -0
  142. {janito-3.12.1 → janito-3.12.2}/docs/supported-providers-models.md +0 -0
  143. {janito-3.12.1 → janito-3.12.2}/docs/tools/search-text.md +0 -0
  144. {janito-3.12.1 → janito-3.12.2}/docs/tools/show-image-grid.md +0 -0
  145. {janito-3.12.1 → janito-3.12.2}/docs/tools/show-image.md +0 -0
  146. {janito-3.12.1 → janito-3.12.2}/docs/tools-natural-results.md +0 -0
  147. {janito-3.12.1 → janito-3.12.2}/docs/tools-precision.md +0 -0
  148. {janito-3.12.1 → janito-3.12.2}/docs/z-ai-setup.md +0 -0
  149. {janito-3.12.1 → janito-3.12.2}/examples/loop_protection_example.py +0 -0
  150. {janito-3.12.1 → janito-3.12.2}/examples/loop_protection_tool_example.py +0 -0
  151. {janito-3.12.1 → janito-3.12.2}/get_nasdaq_top.py +0 -0
  152. {janito-3.12.1 → janito-3.12.2}/ibm-logo.txt +0 -0
  153. {janito-3.12.1 → janito-3.12.2}/janito/README.md +0 -0
  154. {janito-3.12.1 → janito-3.12.2}/janito/__init__.py +0 -0
  155. {janito-3.12.1 → janito-3.12.2}/janito/__main__.py +0 -0
  156. {janito-3.12.1 → janito-3.12.2}/janito/_version.py +0 -0
  157. {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  158. {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  159. {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
  160. {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  161. {janito-3.12.1 → janito-3.12.2}/janito/agent_events.py +0 -0
  162. {janito-3.12.1 → janito-3.12.2}/janito/cli/__init__.py +0 -0
  163. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/bindings.py +0 -0
  164. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/chat_entry.py +0 -0
  165. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/prompt_style.py +0 -0
  166. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/script_runner.py +0 -0
  167. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  168. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
  169. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  170. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  171. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  172. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  173. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  174. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  175. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  176. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  177. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  178. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/interactive.py +0 -0
  179. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  180. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  181. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  182. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  183. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  184. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
  185. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  186. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  187. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  188. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  189. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  190. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  191. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  192. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  193. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  194. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  195. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  196. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  197. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  198. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/input_history.py +0 -0
  199. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  200. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session/history.py +0 -0
  201. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  202. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  203. {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/toolbar.py +0 -0
  204. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
  205. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_config.py +0 -0
  206. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_drivers.py +0 -0
  207. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_models.py +0 -0
  208. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_plugins.py +0 -0
  209. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_providers.py +0 -0
  210. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_providers_region.py +0 -0
  211. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_tools.py +0 -0
  212. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/model_selection.py +0 -0
  213. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/model_utils.py +0 -0
  214. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/ping_providers.py +0 -0
  215. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/set_api_key.py +0 -0
  216. {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/show_config.py +0 -0
  217. {janito-3.12.1 → janito-3.12.2}/janito/cli/config.py +0 -0
  218. {janito-3.12.1 → janito-3.12.2}/janito/cli/console.py +0 -0
  219. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/__init__.py +0 -0
  220. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/event_logger.py +0 -0
  221. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/getters.py +0 -0
  222. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/model_guesser.py +0 -0
  223. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/setters.py +0 -0
  224. {janito-3.12.1 → janito-3.12.2}/janito/cli/core/unsetters.py +0 -0
  225. {janito-3.12.1 → janito-3.12.2}/janito/cli/main.py +0 -0
  226. {janito-3.12.1 → janito-3.12.2}/janito/cli/prompt_core.py +0 -0
  227. {janito-3.12.1 → janito-3.12.2}/janito/cli/prompt_handler.py +0 -0
  228. {janito-3.12.1 → janito-3.12.2}/janito/cli/prompt_setup.py +0 -0
  229. {janito-3.12.1 → janito-3.12.2}/janito/cli/rich_terminal_reporter.py +0 -0
  230. {janito-3.12.1 → janito-3.12.2}/janito/cli/single_shot_mode/__init__.py +0 -0
  231. {janito-3.12.1 → janito-3.12.2}/janito/cli/utils.py +0 -0
  232. {janito-3.12.1 → janito-3.12.2}/janito/cli/verbose_output.py +0 -0
  233. {janito-3.12.1 → janito-3.12.2}/janito/config.py +0 -0
  234. {janito-3.12.1 → janito-3.12.2}/janito/config_manager.py +0 -0
  235. {janito-3.12.1 → janito-3.12.2}/janito/conversation_history.py +0 -0
  236. {janito-3.12.1 → janito-3.12.2}/janito/dir_walk_utils.py +0 -0
  237. {janito-3.12.1 → janito-3.12.2}/janito/docs/GETTING_STARTED.md +0 -0
  238. {janito-3.12.1 → janito-3.12.2}/janito/driver_events.py +0 -0
  239. {janito-3.12.1 → janito-3.12.2}/janito/drivers/azure_openai/driver.py +0 -0
  240. {janito-3.12.1 → janito-3.12.2}/janito/drivers/cerebras/__init__.py +0 -0
  241. {janito-3.12.1 → janito-3.12.2}/janito/drivers/dashscope.bak.zip +0 -0
  242. {janito-3.12.1 → janito-3.12.2}/janito/drivers/openai/README.md +0 -0
  243. {janito-3.12.1 → janito-3.12.2}/janito/drivers/openai/driver.py +0 -0
  244. {janito-3.12.1 → janito-3.12.2}/janito/drivers/openai_responses.bak.zip +0 -0
  245. {janito-3.12.1 → janito-3.12.2}/janito/drivers/zai/__init__.py +0 -0
  246. {janito-3.12.1 → janito-3.12.2}/janito/drivers/zai/driver.py +0 -0
  247. {janito-3.12.1 → janito-3.12.2}/janito/event_bus/__init__.py +0 -0
  248. {janito-3.12.1 → janito-3.12.2}/janito/event_bus/bus.py +0 -0
  249. {janito-3.12.1 → janito-3.12.2}/janito/event_bus/event.py +0 -0
  250. {janito-3.12.1 → janito-3.12.2}/janito/event_bus/handler.py +0 -0
  251. {janito-3.12.1 → janito-3.12.2}/janito/event_bus/queue_bus.py +0 -0
  252. {janito-3.12.1 → janito-3.12.2}/janito/exceptions.py +0 -0
  253. {janito-3.12.1 → janito-3.12.2}/janito/formatting.py +0 -0
  254. {janito-3.12.1 → janito-3.12.2}/janito/formatting_token.py +0 -0
  255. {janito-3.12.1 → janito-3.12.2}/janito/gitignore_utils.py +0 -0
  256. {janito-3.12.1 → janito-3.12.2}/janito/hello.txt +0 -0
  257. {janito-3.12.1 → janito-3.12.2}/janito/i18n/__init__.py +0 -0
  258. {janito-3.12.1 → janito-3.12.2}/janito/i18n/it.py +0 -0
  259. {janito-3.12.1 → janito-3.12.2}/janito/i18n/messages.py +0 -0
  260. {janito-3.12.1 → janito-3.12.2}/janito/i18n/pt.py +0 -0
  261. {janito-3.12.1 → janito-3.12.2}/janito/llm/README.md +0 -0
  262. {janito-3.12.1 → janito-3.12.2}/janito/llm/agent.py +0 -0
  263. {janito-3.12.1 → janito-3.12.2}/janito/llm/auth.py +0 -0
  264. {janito-3.12.1 → janito-3.12.2}/janito/llm/auth_utils.py +0 -0
  265. {janito-3.12.1 → janito-3.12.2}/janito/llm/driver_config.py +0 -0
  266. {janito-3.12.1 → janito-3.12.2}/janito/llm/driver_config_builder.py +0 -0
  267. {janito-3.12.1 → janito-3.12.2}/janito/llm/driver_input.py +0 -0
  268. {janito-3.12.1 → janito-3.12.2}/janito/llm/message_parts.py +0 -0
  269. {janito-3.12.1 → janito-3.12.2}/janito/llm/model.py +0 -0
  270. {janito-3.12.1 → janito-3.12.2}/janito/llm/provider.py +0 -0
  271. {janito-3.12.1 → janito-3.12.2}/janito/perf_singleton.py +0 -0
  272. {janito-3.12.1 → janito-3.12.2}/janito/performance_collector.py +0 -0
  273. {janito-3.12.1 → janito-3.12.2}/janito/platform_discovery.py +0 -0
  274. {janito-3.12.1 → janito-3.12.2}/janito/plugins/__init__.py +0 -0
  275. {janito-3.12.1 → janito-3.12.2}/janito/plugins/auto_loader.py +0 -0
  276. {janito-3.12.1 → janito-3.12.2}/janito/plugins/auto_loader_fixed.py +0 -0
  277. {janito-3.12.1 → janito-3.12.2}/janito/plugins/base.py +0 -0
  278. {janito-3.12.1 → janito-3.12.2}/janito/plugins/config.py +0 -0
  279. {janito-3.12.1 → janito-3.12.2}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
  280. {janito-3.12.1 → janito-3.12.2}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
  281. {janito-3.12.1 → janito-3.12.2}/janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py +0 -0
  282. {janito-3.12.1 → janito-3.12.2}/janito/plugins/core_adapter.py +0 -0
  283. {janito-3.12.1 → janito-3.12.2}/janito/plugins/core_loader.py +0 -0
  284. {janito-3.12.1 → janito-3.12.2}/janito/plugins/core_loader_fixed.py +0 -0
  285. {janito-3.12.1 → janito-3.12.2}/janito/plugins/discovery.py +0 -0
  286. {janito-3.12.1 → janito-3.12.2}/janito/plugins/discovery_core.py +0 -0
  287. {janito-3.12.1 → janito-3.12.2}/janito/plugins/manager.py +0 -0
  288. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/__init__.py +0 -0
  289. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/adapter.py +0 -0
  290. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/ask_user.py +0 -0
  291. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/copy_file.py +0 -0
  292. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/create_directory.py +0 -0
  293. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/create_file.py +0 -0
  294. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/delete_text_in_file.py +0 -0
  295. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/fetch_url.py +0 -0
  296. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/find_files.py +0 -0
  297. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/__init__.py +0 -0
  298. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/core.py +0 -0
  299. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/java_outline.py +0 -0
  300. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/markdown_outline.py +0 -0
  301. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/python_outline.py +0 -0
  302. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/search_outline.py +0 -0
  303. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/move_file.py +0 -0
  304. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/open_html_in_browser.py +0 -0
  305. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/open_url.py +0 -0
  306. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/python_code_run.py +0 -0
  307. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/python_command_run.py +0 -0
  308. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/python_file_run.py +0 -0
  309. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/read_chart.py +0 -0
  310. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/read_files.py +0 -0
  311. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/remove_directory.py +0 -0
  312. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/remove_file.py +0 -0
  313. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/replace_text_in_file.py +0 -0
  314. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/run_bash_command.py +0 -0
  315. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/run_powershell_command.py +0 -0
  316. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/__init__.py +0 -0
  317. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/core.py +0 -0
  318. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/match_lines.py +0 -0
  319. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/pattern_utils.py +0 -0
  320. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/traverse_directory.py +0 -0
  321. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/__init__.py +0 -0
  322. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/core.py +0 -0
  323. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/css_validator.py +0 -0
  324. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/html_validator.py +0 -0
  325. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/jinja2_validator.py +0 -0
  326. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/js_validator.py +0 -0
  327. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/json_validator.py +0 -0
  328. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/markdown_validator.py +0 -0
  329. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/ps1_validator.py +0 -0
  330. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/python_validator.py +0 -0
  331. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/txt_validator.py +0 -0
  332. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/xml_validator.py +0 -0
  333. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/yaml_validator.py +0 -0
  334. {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/view_file.py +0 -0
  335. {janito-3.12.1 → janito-3.12.2}/janito/provider_config.py +0 -0
  336. {janito-3.12.1 → janito-3.12.2}/janito/provider_registry.py +0 -0
  337. {janito-3.12.1 → janito-3.12.2}/janito/providers/__init__.py +0 -0
  338. {janito-3.12.1 → janito-3.12.2}/janito/providers/alibaba/__init__.py +0 -0
  339. {janito-3.12.1 → janito-3.12.2}/janito/providers/alibaba/provider.py +0 -0
  340. {janito-3.12.1 → janito-3.12.2}/janito/providers/anthropic/model_info.py +0 -0
  341. {janito-3.12.1 → janito-3.12.2}/janito/providers/anthropic/provider.py +0 -0
  342. {janito-3.12.1 → janito-3.12.2}/janito/providers/azure_openai/model_info.py +0 -0
  343. {janito-3.12.1 → janito-3.12.2}/janito/providers/azure_openai/provider.py +0 -0
  344. {janito-3.12.1 → janito-3.12.2}/janito/providers/cerebras/__init__.py +0 -0
  345. {janito-3.12.1 → janito-3.12.2}/janito/providers/cerebras/model_info.py +0 -0
  346. {janito-3.12.1 → janito-3.12.2}/janito/providers/cerebras/provider.py +0 -0
  347. {janito-3.12.1 → janito-3.12.2}/janito/providers/dashscope.bak.zip +0 -0
  348. {janito-3.12.1 → janito-3.12.2}/janito/providers/deepseek/__init__.py +0 -0
  349. {janito-3.12.1 → janito-3.12.2}/janito/providers/deepseek/model_info.py +0 -0
  350. {janito-3.12.1 → janito-3.12.2}/janito/providers/deepseek/provider.py +0 -0
  351. {janito-3.12.1 → janito-3.12.2}/janito/providers/google/__init__.py +0 -0
  352. {janito-3.12.1 → janito-3.12.2}/janito/providers/google/model_info.py +0 -0
  353. {janito-3.12.1 → janito-3.12.2}/janito/providers/google/provider.py +0 -0
  354. {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/README.md +0 -0
  355. {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/__init__.py +0 -0
  356. {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/model_info.py +0 -0
  357. {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/provider.py +0 -0
  358. {janito-3.12.1 → janito-3.12.2}/janito/providers/mistral/__init__.py +0 -0
  359. {janito-3.12.1 → janito-3.12.2}/janito/providers/mistral/model_info.py +0 -0
  360. {janito-3.12.1 → janito-3.12.2}/janito/providers/mistral/provider.py +0 -0
  361. {janito-3.12.1 → janito-3.12.2}/janito/providers/moonshot/__init__.py +0 -0
  362. {janito-3.12.1 → janito-3.12.2}/janito/providers/moonshot/model_info.py +0 -0
  363. {janito-3.12.1 → janito-3.12.2}/janito/providers/moonshot/provider.py +0 -0
  364. {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/__init__.py +0 -0
  365. {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/model_info.py +0 -0
  366. {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/provider.py +0 -0
  367. {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/schema_generator.py +0 -0
  368. {janito-3.12.1 → janito-3.12.2}/janito/providers/registry.py +0 -0
  369. {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/__init__.py +0 -0
  370. {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/model_info.py +0 -0
  371. {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/provider.py +0 -0
  372. {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/schema_generator.py +0 -0
  373. {janito-3.12.1 → janito-3.12.2}/janito/regions/__init__.py +0 -0
  374. {janito-3.12.1 → janito-3.12.2}/janito/regions/cli.py +0 -0
  375. {janito-3.12.1 → janito-3.12.2}/janito/regions/geo_utils.py +0 -0
  376. {janito-3.12.1 → janito-3.12.2}/janito/regions/provider_regions.py +0 -0
  377. {janito-3.12.1 → janito-3.12.2}/janito/report_events.py +0 -0
  378. {janito-3.12.1 → janito-3.12.2}/janito/shell.bak.zip +0 -0
  379. {janito-3.12.1 → janito-3.12.2}/janito/tests/test_tool_adapter_case_insensitive.py +0 -0
  380. {janito-3.12.1 → janito-3.12.2}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  381. {janito-3.12.1 → janito-3.12.2}/janito/tools/README.md +0 -0
  382. {janito-3.12.1 → janito-3.12.2}/janito/tools/__init__.py +0 -0
  383. {janito-3.12.1 → janito-3.12.2}/janito/tools/base.py +0 -0
  384. {janito-3.12.1 → janito-3.12.2}/janito/tools/disabled_tools.py +0 -0
  385. {janito-3.12.1 → janito-3.12.2}/janito/tools/function_adapter.py +0 -0
  386. {janito-3.12.1 → janito-3.12.2}/janito/tools/inspect_registry.py +0 -0
  387. {janito-3.12.1 → janito-3.12.2}/janito/tools/loop_protection.py +0 -0
  388. {janito-3.12.1 → janito-3.12.2}/janito/tools/loop_protection_decorator.py +0 -0
  389. {janito-3.12.1 → janito-3.12.2}/janito/tools/outline_file.bak.zip +0 -0
  390. {janito-3.12.1 → janito-3.12.2}/janito/tools/path_security.py +0 -0
  391. {janito-3.12.1 → janito-3.12.2}/janito/tools/path_utils.py +0 -0
  392. {janito-3.12.1 → janito-3.12.2}/janito/tools/permissions.py +0 -0
  393. {janito-3.12.1 → janito-3.12.2}/janito/tools/permissions_parse.py +0 -0
  394. {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_base.py +0 -0
  395. {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_events.py +0 -0
  396. {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_run_exception.py +0 -0
  397. {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_use_tracker.py +0 -0
  398. {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_utils.py +0 -0
  399. {janito-3.12.1 → janito-3.12.2}/janito/tools/tools_adapter.py +0 -0
  400. {janito-3.12.1 → janito-3.12.2}/janito/tools/tools_schema.py +0 -0
  401. {janito-3.12.1 → janito-3.12.2}/janito/tools/url_whitelist.py +0 -0
  402. {janito-3.12.1 → janito-3.12.2}/janito/utils.py +0 -0
  403. {janito-3.12.1 → janito-3.12.2}/janito.egg-info/dependency_links.txt +0 -0
  404. {janito-3.12.1 → janito-3.12.2}/janito.egg-info/entry_points.txt +0 -0
  405. {janito-3.12.1 → janito-3.12.2}/janito.egg-info/requires.txt +0 -0
  406. {janito-3.12.1 → janito-3.12.2}/janito.egg-info/top_level.txt +0 -0
  407. {janito-3.12.1 → janito-3.12.2}/market_prompt_fix.py +0 -0
  408. {janito-3.12.1 → janito-3.12.2}/mkdocs.log +0 -0
  409. {janito-3.12.1 → janito-3.12.2}/mkdocs.yml +0 -0
  410. {janito-3.12.1 → janito-3.12.2}/mkdocs_hooks.py +0 -0
  411. {janito-3.12.1 → janito-3.12.2}/plugins/__init__.py +0 -0
  412. {janito-3.12.1 → janito-3.12.2}/plugins/core/__init__.py +0 -0
  413. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/__init__.py +0 -0
  414. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
  415. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
  416. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
  417. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
  418. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
  419. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
  420. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
  421. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
  422. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
  423. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
  424. {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
  425. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/__init__.py +0 -0
  426. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/copy_file.py +0 -0
  427. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/create_file.py +0 -0
  428. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
  429. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/find_files.py +0 -0
  430. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/move_file.py +0 -0
  431. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/read_files.py +0 -0
  432. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/remove_directory.py +0 -0
  433. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/remove_file.py +0 -0
  434. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
  435. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
  436. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
  437. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
  438. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
  439. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
  440. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
  441. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
  442. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
  443. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
  444. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
  445. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
  446. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
  447. {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/view_file.py +0 -0
  448. {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/__init__.py +0 -0
  449. {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/plugin.py +0 -0
  450. {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/tools/__init__.py +0 -0
  451. {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
  452. {janito-3.12.1 → janito-3.12.2}/plugins/core/system/__init__.py +0 -0
  453. {janito-3.12.1 → janito-3.12.2}/plugins/core/system/tools/run_bash_command.py +0 -0
  454. {janito-3.12.1 → janito-3.12.2}/plugins/core/system/tools/run_powershell_command.py +0 -0
  455. {janito-3.12.1 → janito-3.12.2}/plugins/dev/__init__.py +0 -0
  456. {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/__init__.py +0 -0
  457. {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/tools/python_code_run.py +0 -0
  458. {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/tools/python_command_run.py +0 -0
  459. {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/tools/python_file_run.py +0 -0
  460. {janito-3.12.1 → janito-3.12.2}/plugins/dev/visualization/__init__.py +0 -0
  461. {janito-3.12.1 → janito-3.12.2}/plugins/dev/visualization/tools/read_chart.py +0 -0
  462. {janito-3.12.1 → janito-3.12.2}/plugins/example_plugin.py +0 -0
  463. {janito-3.12.1 → janito-3.12.2}/plugins/ui/__init__.py +0 -0
  464. {janito-3.12.1 → janito-3.12.2}/plugins/ui/userinterface/__init__.py +0 -0
  465. {janito-3.12.1 → janito-3.12.2}/plugins/ui/userinterface/tools/ask_user.py +0 -0
  466. {janito-3.12.1 → janito-3.12.2}/plugins/web/__init__.py +0 -0
  467. {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/__init__.py +0 -0
  468. {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/tools/fetch_url.py +0 -0
  469. {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
  470. {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/tools/open_url.py +0 -0
  471. {janito-3.12.1 → janito-3.12.2}/pyproject.toml +0 -0
  472. {janito-3.12.1 → janito-3.12.2}/requirements-dev.txt +0 -0
  473. {janito-3.12.1 → janito-3.12.2}/requirements.txt +0 -0
  474. {janito-3.12.1 → janito-3.12.2}/setup.cfg +0 -0
  475. {janito-3.12.1 → janito-3.12.2}/tests/local/get_file_outline/test_core_outline.py +0 -0
  476. {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_file/__init__.py +0 -0
  477. {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_file/read_file.py +0 -0
  478. {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_file/test_read_file.py +0 -0
  479. {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_files.py +0 -0
  480. {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_models.py +0 -0
  481. {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_providers.py +0 -0
  482. {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_providers_alibaba.py +0 -0
  483. {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_providers_moonshot.py +0 -0
  484. {janito-3.12.1 → janito-3.12.2}/tests/test_cli_version.py +0 -0
  485. {janito-3.12.1 → janito-3.12.2}/tests/test_disabled_tools.py +0 -0
  486. {janito-3.12.1 → janito-3.12.2}/tests/test_plugin_system.py +0 -0
  487. {janito-3.12.1 → janito-3.12.2}/tests/test_provider_alibaba.py +0 -0
  488. {janito-3.12.1 → janito-3.12.2}/tests/test_provider_cerebras.py +0 -0
  489. {janito-3.12.1 → janito-3.12.2}/tests/test_provider_moonshot.py +0 -0
  490. {janito-3.12.1 → janito-3.12.2}/tools/release.py +0 -0
  491. {janito-3.12.1 → janito-3.12.2}/tox.ini +0 -0
  492. {janito-3.12.1 → janito-3.12.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 3.12.1
3
+ Version: 3.12.2
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,81 @@
1
+ # Alibaba Cloud Qwen Models Overview
2
+
3
+ ## Flagship Models (Singapore Region)
4
+
5
+ | Model | Description | Max Context Window | Input Price (per million tokens) | Output Price (per million tokens) |
6
+ |--------------|------------------------------------------------|--------------------|----------------------------------|-----------------------------------|
7
+ | Qwen-Max | Ideal for complex tasks, most powerful | 32,768 | $1.6 | $6.4 |
8
+ | Qwen-Plus | Balanced performance, speed, and cost | 1,000,000 | $0.4 | $1.2 |
9
+ | Qwen-Flash | Ideal for simple tasks, fast and low-cost | 1,000,000 | $0.05 | $0.4 |
10
+ | Qwen-Coder | Excellent code model, excels at tool calling | 1,000,000 | $0.3 | $1.5 |
11
+
12
+ ## Model Categories
13
+
14
+ ### Text Generation - Qwen
15
+ Commercial models:
16
+ - QwQ
17
+ - Qwen-Max
18
+ - Qwen-Plus
19
+ - Qwen-Flash
20
+
21
+ Open-source models:
22
+ - Qwen3
23
+ - Qwen2.5
24
+
25
+ Multimodal models:
26
+ - Qwen-VL (visual understanding)
27
+ - QVQ (visual reasoning)
28
+ - Qwen-Omni (omni-modal)
29
+ - Qwen-Omni-Realtime (real-time multimodal)
30
+
31
+ Domain-specific models:
32
+ - Code model
33
+ - Translation model
34
+ - Role-play model
35
+
36
+ ### Image Generation - Qwen
37
+ - Qwen-Image: Text-to-image, excels at rendering complex text (Chinese/English)
38
+ - Qwen-Image-Edit: Image and text editing operations (style transfer, text modification, object editing)
39
+ - Wan: Generates exquisite images from a single sentence
40
+
41
+ ### Video Generation
42
+ - Text-to-video: Generates videos from a single sentence
43
+ - Image-to-video:
44
+ - First-frame-to-video
45
+ - First-and-last-frame-to-video
46
+ - Multi-image-to-video
47
+
48
+ ### Video Editing
49
+ - General-purpose video editing: Performs various video editing tasks based on text, images, and videos
50
+
51
+ ### Embedding
52
+ - Text embedding: Converts text into numbers for search, clustering, recommendation, and classification tasks
53
+
54
+ ## Qwen-Max Details
55
+
56
+ ### Qwen3-Max (Preview)
57
+ - Context window: 262,144 tokens
58
+ - Maximum input: 258,048 tokens
59
+ - Maximum output: 65,536 tokens
60
+ - Input pricing (tiered):
61
+ - 0-32K tokens: $1.2 per million tokens
62
+ - 32K-128K tokens: $2.4 per million tokens
63
+ - 128K-252K tokens: $3 per million tokens
64
+ - Output price: $6 per million tokens
65
+ - Free quota: 1 million tokens (validity: 90 days after activating Alibaba Cloud Model Studio)
66
+ - Supports context cache
67
+
68
+ ### Qwen-Max (Stable/Latest)
69
+ - Context window: 32,768 tokens
70
+ - Maximum input: 30,720 tokens
71
+ - Maximum output: 8,192 tokens
72
+ - Input price: $1.6 per million tokens
73
+ - Output price: $6.4 per million tokens
74
+ - 50% discount for batch calling
75
+ - Free quota: 1 million tokens each for input and output (validity: 90 days after activating Alibaba Cloud Model Studio)
76
+
77
+ ### Qwen-Max Snapshots
78
+ - qwen-max-2025-01-25 (also known as qwen-max-0125, Qwen2.5-Max)
79
+
80
+ ## Qwen-Plus
81
+ This model provides balanced capabilities between Qwen-Max and Qwen-Flash, making it ideal for moderately complex tasks.
janito-3.12.2/cow.txt ADDED
@@ -0,0 +1,7 @@
1
+
2
+ (__)
3
+ (oo)
4
+ /-------\/
5
+ / | ||
6
+ * ||----||
7
+ ^^ ^^
@@ -0,0 +1,12 @@
1
+
2
+ (__)
3
+ (oo)
4
+ /-------\/
5
+ / | ||
6
+ * ||----||
7
+ ^^ ^^
8
+ \ ^__^
9
+ \ (oo)\_______
10
+ (__)\ )\/\
11
+ ||----w |
12
+ || ||
@@ -32,7 +32,7 @@ Learn how to use Janito effectively:
32
32
  - [Profiles](guides/profiles.md) - Custom configurations for different workflows
33
33
  - [Stock Market Guide](guides/stock-market-guide.md) - Accessing financial market data
34
34
  - [Market Data Sources](guides/market-data-sources.md) - Reliable sources for financial data
35
- - [Read Chart Examples](guides/read-chart-examples.md) - Data visualization in the terminal
35
+
36
36
 
37
37
  ### Development & Extension
38
38
 
@@ -1,102 +1,102 @@
1
- # Janito Plugin System Documentation
2
-
3
- This directory contains comprehensive documentation for the Janito plugin system, consolidated from multiple sources for easier access.
4
-
5
- ## Quick Navigation
6
-
7
- - **[Plugin Development Guide](plugin-development.md)** - Complete guide for creating plugins
8
- - **[Remote Plugins](remote-plugins.md)** - Using plugins from remote repositories
9
- - **[Built-in Plugins](../built-in-plugins.md)** - Documentation for included plugins
10
- - **[API Reference](api-reference.md)** - Technical details and interfaces
11
- - **[Examples](examples/)** - Working plugin examples
12
-
13
- ## Overview
14
-
15
- The Janito plugin system allows you to extend functionality with custom tools, commands, and features. Plugins can be:
16
-
17
- - **Local plugins** - Stored in `./plugins/` or `~/.janito/plugins/`
18
- - **Remote plugins** - Loaded from the `ikignosis/janito-plugins` repository
19
- - **Built-in plugins** - Included with janito-coder
20
-
21
- ## Quick Start
22
-
23
- ### Creating a Basic Plugin
24
-
25
- ```python
26
- from janito.plugins.base import Plugin, PluginMetadata
27
- from janito.tools.tool_base import ToolBase, ToolPermissions
28
-
29
- class HelloTool(ToolBase):
30
- tool_name = "hello"
31
- permissions = ToolPermissions(read=True, write=False, execute=True)
32
-
33
- def run(self, name="World"):
34
- return f"Hello, {name}!"
35
-
36
- class HelloPlugin(Plugin):
37
- def get_metadata(self):
38
- return PluginMetadata(
39
- name="hello",
40
- version="1.0.0",
41
- description="A simple greeting plugin",
42
- author="You"
43
- )
44
-
45
- def get_tools(self):
46
- return [HelloTool]
47
- ```
48
-
49
- ### Enabling Plugins
50
-
51
- Add to `janito.json`:
52
-
53
- ```json
54
- {
55
- "plugins": {
56
- "load": {
57
- "hello": true
58
- }
59
- }
60
- }
61
- ```
62
-
63
- ## Available Documentation
64
-
65
- ### Core Documentation
66
- - [Plugin Development Guide](plugin-development.md) - Step-by-step plugin creation
67
- - [Remote Plugins](remote-plugins.md) - Using community plugins
68
- - [Configuration](configuration.md) - Plugin configuration options
69
-
70
- ### Built-in Plugins
71
- - [Git Analyzer](../built-in-plugins/git-analyzer.md) - Git repository analysis
72
- - [Code Navigator](../built-in-plugins/code-navigator.md) - Code navigation tools
73
- - [Example Plugin](../built-in-plugins/example.md) - Basic plugin example
74
-
75
- ### Advanced Topics
76
- - [Plugin Architecture](architecture.md) - System design and internals
77
- - [Testing Plugins](testing.md) - Writing tests for plugins
78
- - [Publishing Plugins](publishing.md) - Sharing plugins with the community
79
-
80
- ## Getting Help
81
-
82
- - **Issues**: Report problems on GitHub
83
- - **Discussions**: Join community forums
84
- - **Examples**: Check the `examples/` directory for working samples
85
-
86
- ## Directory Structure
87
-
88
- ```
89
- docs/plugins/
90
- ├── README.md # This file
91
- ├── plugin-development.md # Complete development guide
92
- ├── remote-plugins.md # Remote repository usage
93
- ├── built-in-plugins/ # Built-in plugin docs
94
- │ ├── git-analyzer.md
95
- │ ├── code-navigator.md
96
- │ └── example.md
97
- ├── examples/ # Sample plugins
98
- │ ├── basic/
99
- │ ├── intermediate/
100
- │ └── advanced/
101
- └── api-reference.md # Technical reference
1
+ # Janito Plugin System Documentation
2
+
3
+ This directory contains comprehensive documentation for the Janito plugin system, consolidated from multiple sources for easier access.
4
+
5
+ ## Quick Navigation
6
+
7
+ - **[Plugin Development Guide](plugin-development.md)** - Complete guide for creating plugins
8
+ - **[Remote Plugins](remote-plugins.md)** - Using plugins from remote repositories
9
+ - **[Built-in Plugins](../built-in-plugins.md)** - Documentation for included plugins
10
+ - **[API Reference](api-reference.md)** - Technical details and interfaces
11
+ - **[Examples](examples/)** - Working plugin examples
12
+
13
+ ## Overview
14
+
15
+ The Janito plugin system allows you to extend functionality with custom tools, commands, and features. Plugins can be:
16
+
17
+ - **Local plugins** - Stored in `./plugins/` or `~/.janito/plugins/`
18
+ - **Remote plugins** - Loaded from the `ikignosis/janito-plugins` repository
19
+ - **Built-in plugins** - Included with janito
20
+
21
+ ## Quick Start
22
+
23
+ ### Creating a Basic Plugin
24
+
25
+ ```python
26
+ from janito.plugins.base import Plugin, PluginMetadata
27
+ from janito.tools.tool_base import ToolBase, ToolPermissions
28
+
29
+ class HelloTool(ToolBase):
30
+ tool_name = "hello"
31
+ permissions = ToolPermissions(read=True, write=False, execute=True)
32
+
33
+ def run(self, name="World"):
34
+ return f"Hello, {name}!"
35
+
36
+ class HelloPlugin(Plugin):
37
+ def get_metadata(self):
38
+ return PluginMetadata(
39
+ name="hello",
40
+ version="1.0.0",
41
+ description="A simple greeting plugin",
42
+ author="You"
43
+ )
44
+
45
+ def get_tools(self):
46
+ return [HelloTool]
47
+ ```
48
+
49
+ ### Enabling Plugins
50
+
51
+ Add to `janito.json`:
52
+
53
+ ```json
54
+ {
55
+ "plugins": {
56
+ "load": {
57
+ "hello": true
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ ## Available Documentation
64
+
65
+ ### Core Documentation
66
+ - [Plugin Development Guide](plugin-development.md) - Step-by-step plugin creation
67
+ - [Remote Plugins](remote-plugins.md) - Using community plugins
68
+ - [Configuration](configuration.md) - Plugin configuration options
69
+
70
+ ### Built-in Plugins
71
+ - [Git Analyzer](../built-in-plugins/git-analyzer.md) - Git repository analysis
72
+ - [Code Navigator](../built-in-plugins/code-navigator.md) - Code navigation tools
73
+ - [Example Plugin](../built-in-plugins/example.md) - Basic plugin example
74
+
75
+ ### Advanced Topics
76
+ - [Plugin Architecture](architecture.md) - System design and internals
77
+ - [Testing Plugins](testing.md) - Writing tests for plugins
78
+ - [Publishing Plugins](publishing.md) - Sharing plugins with the community
79
+
80
+ ## Getting Help
81
+
82
+ - **Issues**: Report problems on GitHub
83
+ - **Discussions**: Join community forums
84
+ - **Examples**: Check the `examples/` directory for working samples
85
+
86
+ ## Directory Structure
87
+
88
+ ```
89
+ docs/plugins/
90
+ ├── README.md # This file
91
+ ├── plugin-development.md # Complete development guide
92
+ ├── remote-plugins.md # Remote repository usage
93
+ ├── built-in-plugins/ # Built-in plugin docs
94
+ │ ├── git-analyzer.md
95
+ │ ├── code-navigator.md
96
+ │ └── example.md
97
+ ├── examples/ # Sample plugins
98
+ │ ├── basic/
99
+ │ ├── intermediate/
100
+ │ └── advanced/
101
+ └── api-reference.md # Technical reference
102
102
  ```
@@ -1,128 +1,128 @@
1
- # Plugin Architecture
2
-
3
- ## Overview
4
-
5
- The Janito plugin architecture is designed to provide a flexible and extensible system for adding functionality. The architecture separates the interface definitions from the actual implementations, allowing for organized plugin management while maintaining a clean codebase.
6
-
7
- ## Architecture Components
8
-
9
- ### Plugin Interface Layer
10
-
11
- Located in the `plugins/` directory, this layer contains the plugin definitions and interfaces. Each plugin is organized by functional domain:
12
-
13
- ```
14
- plugins/
15
- ├── core/ # Core system functionality
16
- │ ├── filemanager/
17
- │ ├── codeanalyzer/
18
- │ └── system/
19
- ├── web/ # Web-related functionality
20
- │ └── webtools/
21
- ├── dev/ # Development tools
22
- │ ├── pythondev/
23
- │ └── visualization/
24
- └── ui/ # User interface
25
- └── userinterface/
26
- ```
27
-
28
- ### Implementation Layer
29
-
30
- The actual tool implementations are located in `janito/plugins/tools/local/`. This separation ensures that the core functionality remains stable while the plugin interfaces can be organized and extended.
31
-
32
- ```
33
- janito/plugins/tools/local/
34
- ├── create_file.py
35
- ├── read_files.py
36
- ├── view_file.py
37
- ├── replace_text_in_file.py
38
- ├── validate_file_syntax/
39
- ├── create_directory.py
40
- ├── remove_directory.py
41
- ├── remove_file.py
42
- ├── copy_file.py
43
- ├── move_file.py
44
- ├── find_files.py
45
- ├── get_file_outline/
46
- ├── search_text/
47
- ├── run_powershell_command.py
48
- ├── fetch_url.py
49
- ├── open_url.py
50
- ├── open_html_in_browser.py
51
- ├── python_code_run.py
52
- ├── python_command_run.py
53
- ├── python_file_run.py
54
- ├── read_chart.py
55
- └── ask_user.py
56
- ```
57
-
58
- ## Resource Flow
59
-
60
- 1. **Plugin Registration**: Plugins are registered with the system at startup
61
- 2. **Tool Discovery**: The system discovers available tools from registered plugins
62
- 3. **Resource Contribution**: Each plugin contributes its tools to the global tool registry
63
- 4. **Tool Execution**: When a tool is called, the system routes the request to the appropriate implementation
64
-
65
- ## Plugin Loading Process
66
-
67
- 1. **Discovery**: The system scans for plugins in `./plugins/`, `~/.janito/plugins/`, and remote repositories
68
- 2. **Validation**: Plugin metadata and interfaces are validated
69
- 3. **Initialization**: The `initialize()` method is called on each loaded plugin
70
- 4. **Registration**: Tools and commands are registered with the system
71
- 5. **Availability**: Plugins are now available for use
72
-
73
- ## Resource Contribution Mechanism
74
-
75
- Plugins contribute resources through several methods:
76
-
77
- ### Tools
78
-
79
- The primary resource type, tools are registered via the `get_tools()` method:
80
-
81
- ```python
82
- def get_tools(self) -> List[Type[ToolBase]]:
83
- return [HelloWorldTool, CalculatorTool]
84
- ```
85
-
86
- ### Commands
87
-
88
- CLI commands are contributed through `get_commands()`:
89
-
90
- ```python
91
- def get_commands(self) -> Dict[str, Any]:
92
- return {"mycommand": my_command_handler}
93
- ```
94
-
95
- ### Configuration
96
-
97
- Plugins can define their configuration schema:
98
-
99
- ```python
100
- def get_config_schema(self) -> Dict[str, Any]:
101
- return {
102
- "type": "object",
103
- "properties": {
104
- "timeout": {"type": "number", "default": 30}
105
- }
106
- }
107
- ```
108
-
109
- ## Security Model
110
-
111
- The architecture includes several security features:
112
-
113
- - **Permission System**: Each tool has defined read, write, and execute permissions
114
- - **Path Validation**: File operations include path validation to prevent directory traversal
115
- - **Sandboxing**: Potentially dangerous operations are sandboxed and monitored
116
- - **User Confirmation**: Sensitive operations require explicit user approval
117
- - **Timeouts**: Long-running operations are automatically terminated
118
-
119
- ## Extension Points
120
-
121
- The architecture supports several extension points:
122
-
123
- - **New Plugins**: Add new functionality by creating plugins in the `plugins/` directory
124
- - **Custom Tools**: Implement new tools by extending `ToolBase`
125
- - **Remote Plugins**: Load plugins from external repositories
126
- - **Configuration**: Customize plugin behavior through configuration files
127
-
1
+ # Plugin Architecture
2
+
3
+ ## Overview
4
+
5
+ The Janito plugin architecture is designed to provide a flexible and extensible system for adding functionality. The architecture separates the interface definitions from the actual implementations, allowing for organized plugin management while maintaining a clean codebase.
6
+
7
+ ## Architecture Components
8
+
9
+ ### Plugin Interface Layer
10
+
11
+ Located in the `plugins/` directory, this layer contains the plugin definitions and interfaces. Each plugin is organized by functional domain:
12
+
13
+ ```
14
+ plugins/
15
+ ├── core/ # Core system functionality
16
+ │ ├── filemanager/
17
+ │ ├── codeanalyzer/
18
+ │ └── system/
19
+ ├── web/ # Web-related functionality
20
+ │ └── webtools/
21
+ ├── dev/ # Development tools
22
+ │ ├── pythondev/
23
+ │ └── visualization/
24
+ └── ui/ # User interface
25
+ └── userinterface/
26
+ ```
27
+
28
+ ### Implementation Layer
29
+
30
+ The actual tool implementations are located in `janito/plugins/tools/local/`. This separation ensures that the core functionality remains stable while the plugin interfaces can be organized and extended.
31
+
32
+ ```
33
+ janito/plugins/tools/local/
34
+ ├── create_file.py
35
+ ├── read_files.py
36
+ ├── view_file.py
37
+ ├── replace_text_in_file.py
38
+ ├── validate_file_syntax/
39
+ ├── create_directory.py
40
+ ├── remove_directory.py
41
+ ├── remove_file.py
42
+ ├── copy_file.py
43
+ ├── move_file.py
44
+ ├── find_files.py
45
+ ├── get_file_outline/
46
+ ├── search_text/
47
+ ├── run_powershell_command.py
48
+ ├── fetch_url.py
49
+ ├── open_url.py
50
+ ├── open_html_in_browser.py
51
+ ├── python_code_run.py
52
+ ├── python_command_run.py
53
+ ├── python_file_run.py
54
+
55
+ └── ask_user.py
56
+ ```
57
+
58
+ ## Resource Flow
59
+
60
+ 1. **Plugin Registration**: Plugins are registered with the system at startup
61
+ 2. **Tool Discovery**: The system discovers available tools from registered plugins
62
+ 3. **Resource Contribution**: Each plugin contributes its tools to the global tool registry
63
+ 4. **Tool Execution**: When a tool is called, the system routes the request to the appropriate implementation
64
+
65
+ ## Plugin Loading Process
66
+
67
+ 1. **Discovery**: The system scans for plugins in `./plugins/`, `~/.janito/plugins/`, and remote repositories
68
+ 2. **Validation**: Plugin metadata and interfaces are validated
69
+ 3. **Initialization**: The `initialize()` method is called on each loaded plugin
70
+ 4. **Registration**: Tools and commands are registered with the system
71
+ 5. **Availability**: Plugins are now available for use
72
+
73
+ ## Resource Contribution Mechanism
74
+
75
+ Plugins contribute resources through several methods:
76
+
77
+ ### Tools
78
+
79
+ The primary resource type, tools are registered via the `get_tools()` method:
80
+
81
+ ```python
82
+ def get_tools(self) -> List[Type[ToolBase]]:
83
+ return [HelloWorldTool, CalculatorTool]
84
+ ```
85
+
86
+ ### Commands
87
+
88
+ CLI commands are contributed through `get_commands()`:
89
+
90
+ ```python
91
+ def get_commands(self) -> Dict[str, Any]:
92
+ return {"mycommand": my_command_handler}
93
+ ```
94
+
95
+ ### Configuration
96
+
97
+ Plugins can define their configuration schema:
98
+
99
+ ```python
100
+ def get_config_schema(self) -> Dict[str, Any]:
101
+ return {
102
+ "type": "object",
103
+ "properties": {
104
+ "timeout": {"type": "number", "default": 30}
105
+ }
106
+ }
107
+ ```
108
+
109
+ ## Security Model
110
+
111
+ The architecture includes several security features:
112
+
113
+ - **Permission System**: Each tool has defined read, write, and execute permissions
114
+ - **Path Validation**: File operations include path validation to prevent directory traversal
115
+ - **Sandboxing**: Potentially dangerous operations are sandboxed and monitored
116
+ - **User Confirmation**: Sensitive operations require explicit user approval
117
+ - **Timeouts**: Long-running operations are automatically terminated
118
+
119
+ ## Extension Points
120
+
121
+ The architecture supports several extension points:
122
+
123
+ - **New Plugins**: Add new functionality by creating plugins in the `plugins/` directory
124
+ - **Custom Tools**: Implement new tools by extending `ToolBase`
125
+ - **Remote Plugins**: Load plugins from external repositories
126
+ - **Configuration**: Customize plugin behavior through configuration files
127
+
128
128
  This architecture enables a powerful, secure, and extensible system for building AI-assisted development tools.
@@ -0,0 +1,62 @@
1
+ # Visualization Plugin
2
+
3
+ ## Overview
4
+
5
+ The Visualization plugin provides data visualization and charting capabilities. This plugin enables the display of data in various visual formats, making it easier to understand and analyze information.
6
+
7
+ ## Resources Provided
8
+
9
+ ### Tools
10
+
11
+ | Tool Name | Function | Description |
12
+ |-----------|----------|-------------|
13
+
14
+ | `show_image` | Display single image | Shows a single image inline in the terminal using rich |
15
+ | `show_image_grid` | Display image grid | Shows multiple images in a grid inline in the terminal |
16
+
17
+ ## Usage Examples
18
+
19
+ ### Displaying an Image
20
+ ```json
21
+ {
22
+ "tool": "show_image",
23
+ "path": "chart.png",
24
+ "width": 80,
25
+ "preserve_aspect": true
26
+ }
27
+ ```
28
+
29
+ ### Creating an Image Grid
30
+ ```json
31
+ {
32
+ "tool": "show_image_grid",
33
+ "paths": ["image1.png", "image2.png", "image3.png"],
34
+ "columns": 2,
35
+ "width": 40
36
+ }
37
+ ```
38
+
39
+
40
+
41
+
42
+ ## Configuration
43
+
44
+ This plugin does not require any specific configuration. Image display uses default dimensions and styling.
45
+
46
+
47
+ ## Security Considerations
48
+
49
+ - Images are displayed client-side with no external dependencies
50
+ - No data is transmitted to external services
51
+ - Large images are resized to prevent performance issues
52
+
53
+ ## Integration
54
+
55
+ The Visualization plugin provides image display capabilities for:
56
+
57
+ - Visual content presentation
58
+ - Multi-image comparisons
59
+ - Documentation with visual elements
60
+ - Terminal-based image viewing
61
+
62
+ This enables rich visual presentation capabilities within the terminal interface.
@@ -39,15 +39,7 @@ Returns:
39
39
  Example Usage:
40
40
  - `show_image_grid(paths=["img/tux.png", "img/tux_display.png"], columns=2, width=40)`
41
41
 
42
- #### read_chart
43
42
 
44
- Display charts and data visualizations in the terminal using rich.
45
-
46
- **Arguments:**
47
-
48
- - `data` (dict): Chart data in JSON format. Should contain 'type' (bar, line, pie, table) and 'data' keys.
49
- - `title` (str, optional): Chart title. Defaults to "Chart".
50
- - `width` (int, optional): Chart width. Defaults to 80.
51
43
  - `height` (int, optional): Chart height. Defaults to 20.
52
44
 
53
45
  **Returns:**
@@ -56,9 +48,7 @@ Display charts and data visualizations in the terminal using rich.
56
48
 
57
49
  **Example Usage:**
58
50
 
59
- - Display a table: `read_chart(data={"type": "table", "data": [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]}, title="Users")`
60
- - Display a bar chart: `read_chart(data={"type": "bar", "data": {"Q1": 100, "Q2": 150}}, title="Sales")`
61
- - Display a pie chart: `read_chart(data={"type": "pie", "data": {"Desktop": 45, "Mobile": 30}}, title="Usage")`
51
+
62
52
 
63
53
  ### Web Tools
64
54