janito 3.13.0__tar.gz → 3.13.3__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 (498) hide show
  1. {janito-3.13.0 → janito-3.13.3}/PKG-INFO +1 -1
  2. {janito-3.13.0 → janito-3.13.3}/janito/agent/setup_agent.py +4 -0
  3. {janito-3.13.0 → janito-3.13.3}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +100 -99
  4. {janito-3.13.0 → janito-3.13.3}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +90 -89
  5. {janito-3.13.0 → janito-3.13.3}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +118 -117
  6. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/clear_context.py +13 -2
  7. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/show_system_prompt.py +4 -0
  8. {janito-3.13.0 → janito-3.13.3}/janito/platform_discovery.py +207 -147
  9. janito-3.13.3/janito/plugins/tools/local/clear_context.py +86 -0
  10. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/view_file.py +1 -1
  11. {janito-3.13.0 → janito-3.13.3}/janito/providers/alibaba/provider.py +2 -2
  12. {janito-3.13.0 → janito-3.13.3}/janito/providers/azure_openai/provider.py +11 -11
  13. {janito-3.13.0 → janito-3.13.3}/janito/providers/ibm/provider.py +2 -2
  14. {janito-3.13.0 → janito-3.13.3}/janito.egg-info/PKG-INFO +1 -1
  15. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/view_file.py +1 -1
  16. janito-3.13.0/janito/plugins/tools/local/clear_context.py +0 -86
  17. {janito-3.13.0 → janito-3.13.3}/.codespellrc +0 -0
  18. {janito-3.13.0 → janito-3.13.3}/.gitattributes +0 -0
  19. {janito-3.13.0 → janito-3.13.3}/.github/workflows/python-app.yml.disabled +0 -0
  20. {janito-3.13.0 → janito-3.13.3}/.gitignore +0 -0
  21. {janito-3.13.0 → janito-3.13.3}/.pre-commit-config.yaml +0 -0
  22. {janito-3.13.0 → janito-3.13.3}/.secrets.baseline +0 -0
  23. {janito-3.13.0 → janito-3.13.3}/.vscode/settings.json +0 -0
  24. {janito-3.13.0 → janito-3.13.3}/LICENSE +0 -0
  25. {janito-3.13.0 → janito-3.13.3}/MARKET_ANALYST_README.md +0 -0
  26. {janito-3.13.0 → janito-3.13.3}/README-dev.md +0 -0
  27. {janito-3.13.0 → janito-3.13.3}/README.md +0 -0
  28. {janito-3.13.0 → janito-3.13.3}/RELEASE_COMPARISON.md +0 -0
  29. {janito-3.13.0 → janito-3.13.3}/UPDATING_DOCS.md +0 -0
  30. {janito-3.13.0 → janito-3.13.3}/adding_mcp.txt +0 -0
  31. {janito-3.13.0 → janito-3.13.3}/alibaba-qwen3.md +0 -0
  32. {janito-3.13.0 → janito-3.13.3}/cow.txt +0 -0
  33. {janito-3.13.0 → janito-3.13.3}/detailed_cow.txt +0 -0
  34. {janito-3.13.0 → janito-3.13.3}/docs/CHANGELOG.md +0 -0
  35. {janito-3.13.0 → janito-3.13.3}/docs/DIV.md +0 -0
  36. {janito-3.13.0 → janito-3.13.3}/docs/Interfaces.txt +0 -0
  37. {janito-3.13.0 → janito-3.13.3}/docs/PROFILES.md +0 -0
  38. {janito-3.13.0 → janito-3.13.3}/docs/README.md +0 -0
  39. {janito-3.13.0 → janito-3.13.3}/docs/TOOLBAR-STYLING.md +0 -0
  40. {janito-3.13.0 → janito-3.13.3}/docs/about/costs.md +0 -0
  41. {janito-3.13.0 → janito-3.13.3}/docs/about/vs-webchats.md +0 -0
  42. {janito-3.13.0 → janito-3.13.3}/docs/about/why.md +0 -0
  43. {janito-3.13.0 → janito-3.13.3}/docs/agent/agent-lifecycle.md +0 -0
  44. {janito-3.13.0 → janito-3.13.3}/docs/agent/tools-workflow-lifecycle.md +0 -0
  45. {janito-3.13.0 → janito-3.13.3}/docs/alibaba-setup.md +0 -0
  46. {janito-3.13.0 → janito-3.13.3}/docs/alternatives.md +0 -0
  47. {janito-3.13.0 → janito-3.13.3}/docs/anthropic-setup.md +0 -0
  48. {janito-3.13.0 → janito-3.13.3}/docs/cerebras-setup.md +0 -0
  49. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/CHANGELOG.md +0 -0
  50. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  51. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  52. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  53. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  54. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  55. {janito-3.13.0 → janito-3.13.3}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  56. {janito-3.13.0 → janito-3.13.3}/docs/cli.md +0 -0
  57. {janito-3.13.0 → janito-3.13.3}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  58. {janito-3.13.0 → janito-3.13.3}/docs/code_intelligence/code-generation-challenges.md +0 -0
  59. {janito-3.13.0 → janito-3.13.3}/docs/code_intelligence/code-generation-observability.md +0 -0
  60. {janito-3.13.0 → janito-3.13.3}/docs/code_intelligence/our-approach.md +0 -0
  61. {janito-3.13.0 → janito-3.13.3}/docs/code_intelligence/why-string-replacement.md +0 -0
  62. {janito-3.13.0 → janito-3.13.3}/docs/concepts/analysis-style.md +0 -0
  63. {janito-3.13.0 → janito-3.13.3}/docs/concepts/human-guided-ai.md +0 -0
  64. {janito-3.13.0 → janito-3.13.3}/docs/concepts/index.md +0 -0
  65. {janito-3.13.0 → janito-3.13.3}/docs/concepts/language-model-clients.md +0 -0
  66. {janito-3.13.0 → janito-3.13.3}/docs/concepts/prompt-design-style.md +0 -0
  67. {janito-3.13.0 → janito-3.13.3}/docs/configuration.md +0 -0
  68. {janito-3.13.0 → janito-3.13.3}/docs/deepseek-setup.md +0 -0
  69. {janito-3.13.0 → janito-3.13.3}/docs/driver-flow.md +0 -0
  70. {janito-3.13.0 → janito-3.13.3}/docs/driver-request-cancellation.md +0 -0
  71. {janito-3.13.0 → janito-3.13.3}/docs/drivers/events.md +0 -0
  72. {janito-3.13.0 → janito-3.13.3}/docs/drivers.md +0 -0
  73. {janito-3.13.0 → janito-3.13.3}/docs/event-bus.md +0 -0
  74. {janito-3.13.0 → janito-3.13.3}/docs/google-setup.md +0 -0
  75. {janito-3.13.0 → janito-3.13.3}/docs/guides/configuration.md +0 -0
  76. {janito-3.13.0 → janito-3.13.3}/docs/guides/developing.md +0 -0
  77. {janito-3.13.0 → janito-3.13.3}/docs/guides/disabled-tools.md +0 -0
  78. {janito-3.13.0 → janito-3.13.3}/docs/guides/installation.md +0 -0
  79. {janito-3.13.0 → janito-3.13.3}/docs/guides/market-data-sources.md +0 -0
  80. {janito-3.13.0 → janito-3.13.3}/docs/guides/profiles.md +0 -0
  81. {janito-3.13.0 → janito-3.13.3}/docs/guides/prompting/README.md +0 -0
  82. {janito-3.13.0 → janito-3.13.3}/docs/guides/security-commands.md +0 -0
  83. {janito-3.13.0 → janito-3.13.3}/docs/guides/single-shot-terminal.md +0 -0
  84. {janito-3.13.0 → janito-3.13.3}/docs/guides/stock-market-guide.md +0 -0
  85. {janito-3.13.0 → janito-3.13.3}/docs/guides/terminal-shell.md +0 -0
  86. {janito-3.13.0 → janito-3.13.3}/docs/guides/tools-developer-guide.md +0 -0
  87. {janito-3.13.0 → janito-3.13.3}/docs/guides/url-whitelist.md +0 -0
  88. {janito-3.13.0 → janito-3.13.3}/docs/guides/using.md +0 -0
  89. {janito-3.13.0 → janito-3.13.3}/docs/guides/using_tools.md +0 -0
  90. {janito-3.13.0 → janito-3.13.3}/docs/ibm-setup.md +0 -0
  91. {janito-3.13.0 → janito-3.13.3}/docs/imgs/code-generation-observability.png +0 -0
  92. {janito-3.13.0 → janito-3.13.3}/docs/imgs/code_generation_observability.png +0 -0
  93. {janito-3.13.0 → janito-3.13.3}/docs/imgs/happy-programmer.png +0 -0
  94. {janito-3.13.0 → janito-3.13.3}/docs/imgs/happy-programmer.svg +0 -0
  95. {janito-3.13.0 → janito-3.13.3}/docs/imgs/terminal-one-shot.png +0 -0
  96. {janito-3.13.0 → janito-3.13.3}/docs/imgs/terminal-shell.png +0 -0
  97. {janito-3.13.0 → janito-3.13.3}/docs/imgs/terminal_one_shot.png +0 -0
  98. {janito-3.13.0 → janito-3.13.3}/docs/imgs/terminal_shell.png +0 -0
  99. {janito-3.13.0 → janito-3.13.3}/docs/index.md +0 -0
  100. {janito-3.13.0 → janito-3.13.3}/docs/llm-drivers-required-config.md +0 -0
  101. {janito-3.13.0 → janito-3.13.3}/docs/llm-drivers.md +0 -0
  102. {janito-3.13.0 → janito-3.13.3}/docs/meta/developer-toolchain.md +0 -0
  103. {janito-3.13.0 → janito-3.13.3}/docs/meta/quality-checks.txt +0 -0
  104. {janito-3.13.0 → janito-3.13.3}/docs/mistral-setup.md +0 -0
  105. {janito-3.13.0 → janito-3.13.3}/docs/models/supported_models.md +0 -0
  106. {janito-3.13.0 → janito-3.13.3}/docs/moonshot-setup.md +0 -0
  107. {janito-3.13.0 → janito-3.13.3}/docs/openai-setup.md +0 -0
  108. {janito-3.13.0 → janito-3.13.3}/docs/overrides/partials/copyright.html +0 -0
  109. {janito-3.13.0 → janito-3.13.3}/docs/plugins/README.md +0 -0
  110. {janito-3.13.0 → janito-3.13.3}/docs/plugins/api-reference.md +0 -0
  111. {janito-3.13.0 → janito-3.13.3}/docs/plugins/architecture.md +0 -0
  112. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
  113. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/filemanager.md +0 -0
  114. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
  115. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/pythondev.md +0 -0
  116. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/system.md +0 -0
  117. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/userinterface.md +0 -0
  118. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/visualization.md +0 -0
  119. {janito-3.13.0 → janito-3.13.3}/docs/plugins/built-in-plugins/webtools.md +0 -0
  120. {janito-3.13.0 → janito-3.13.3}/docs/plugins/configuration.md +0 -0
  121. {janito-3.13.0 → janito-3.13.3}/docs/plugins/examples/advanced.md +0 -0
  122. {janito-3.13.0 → janito-3.13.3}/docs/plugins/examples/basic.md +0 -0
  123. {janito-3.13.0 → janito-3.13.3}/docs/plugins/examples/intermediate.md +0 -0
  124. {janito-3.13.0 → janito-3.13.3}/docs/plugins/plugin-development.md +0 -0
  125. {janito-3.13.0 → janito-3.13.3}/docs/plugins/plugin-resources.md +0 -0
  126. {janito-3.13.0 → janito-3.13.3}/docs/plugins/publishing.md +0 -0
  127. {janito-3.13.0 → janito-3.13.3}/docs/plugins/remote-plugins.md +0 -0
  128. {janito-3.13.0 → janito-3.13.3}/docs/plugins/testing.md +0 -0
  129. {janito-3.13.0 → janito-3.13.3}/docs/provider-platform-access.md +0 -0
  130. {janito-3.13.0 → janito-3.13.3}/docs/providers.md +0 -0
  131. {janito-3.13.0 → janito-3.13.3}/docs/public-sources.md +0 -0
  132. {janito-3.13.0 → janito-3.13.3}/docs/reference/api.md +0 -0
  133. {janito-3.13.0 → janito-3.13.3}/docs/reference/azure-openai.md +0 -0
  134. {janito-3.13.0 → janito-3.13.3}/docs/reference/cli-options.md +0 -0
  135. {janito-3.13.0 → janito-3.13.3}/docs/reference/message-handler-model.md +0 -0
  136. {janito-3.13.0 → janito-3.13.3}/docs/reference/rich-message-handler.md +0 -0
  137. {janito-3.13.0 → janito-3.13.3}/docs/security.md +0 -0
  138. {janito-3.13.0 → janito-3.13.3}/docs/supported-providers-models.md +0 -0
  139. {janito-3.13.0 → janito-3.13.3}/docs/tools/search-text.md +0 -0
  140. {janito-3.13.0 → janito-3.13.3}/docs/tools/show-image-grid.md +0 -0
  141. {janito-3.13.0 → janito-3.13.3}/docs/tools/show-image.md +0 -0
  142. {janito-3.13.0 → janito-3.13.3}/docs/tools-index.md +0 -0
  143. {janito-3.13.0 → janito-3.13.3}/docs/tools-natural-results.md +0 -0
  144. {janito-3.13.0 → janito-3.13.3}/docs/tools-precision.md +0 -0
  145. {janito-3.13.0 → janito-3.13.3}/docs/tools.md +0 -0
  146. {janito-3.13.0 → janito-3.13.3}/docs/z-ai-setup.md +0 -0
  147. {janito-3.13.0 → janito-3.13.3}/examples/loop_protection_example.py +0 -0
  148. {janito-3.13.0 → janito-3.13.3}/examples/loop_protection_tool_example.py +0 -0
  149. {janito-3.13.0 → janito-3.13.3}/get_nasdaq_top.py +0 -0
  150. {janito-3.13.0 → janito-3.13.3}/ibm-logo.txt +0 -0
  151. {janito-3.13.0 → janito-3.13.3}/janito/README.md +0 -0
  152. {janito-3.13.0 → janito-3.13.3}/janito/__init__.py +0 -0
  153. {janito-3.13.0 → janito-3.13.3}/janito/__main__.py +0 -0
  154. {janito-3.13.0 → janito-3.13.3}/janito/_version.py +0 -0
  155. {janito-3.13.0 → janito-3.13.3}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  156. {janito-3.13.0 → janito-3.13.3}/janito/agent_events.py +0 -0
  157. {janito-3.13.0 → janito-3.13.3}/janito/cli/__init__.py +0 -0
  158. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/bindings.py +0 -0
  159. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/chat_entry.py +0 -0
  160. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/prompt_style.py +0 -0
  161. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/script_runner.py +0 -0
  162. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/session.py +0 -0
  163. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  164. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
  165. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  166. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  167. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  168. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  169. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  170. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  171. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  172. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  173. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  174. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/interactive.py +0 -0
  175. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  176. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  177. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  178. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  179. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  180. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
  181. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  182. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  183. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  184. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  185. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  186. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  187. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  188. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  189. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  190. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  191. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  192. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  193. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  194. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/input_history.py +0 -0
  195. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  196. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/session/history.py +0 -0
  197. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  198. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  199. {janito-3.13.0 → janito-3.13.3}/janito/cli/chat_mode/toolbar.py +0 -0
  200. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
  201. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_config.py +0 -0
  202. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_drivers.py +0 -0
  203. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_models.py +0 -0
  204. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_plugins.py +0 -0
  205. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_profiles.py +0 -0
  206. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_providers.py +0 -0
  207. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_providers_region.py +0 -0
  208. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/list_tools.py +0 -0
  209. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/model_selection.py +0 -0
  210. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/model_utils.py +0 -0
  211. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/ping_providers.py +0 -0
  212. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/set_api_key.py +0 -0
  213. {janito-3.13.0 → janito-3.13.3}/janito/cli/cli_commands/show_config.py +0 -0
  214. {janito-3.13.0 → janito-3.13.3}/janito/cli/config.py +0 -0
  215. {janito-3.13.0 → janito-3.13.3}/janito/cli/console.py +0 -0
  216. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/__init__.py +0 -0
  217. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/event_logger.py +0 -0
  218. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/getters.py +0 -0
  219. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/model_guesser.py +0 -0
  220. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/runner.py +0 -0
  221. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/setters.py +0 -0
  222. {janito-3.13.0 → janito-3.13.3}/janito/cli/core/unsetters.py +0 -0
  223. {janito-3.13.0 → janito-3.13.3}/janito/cli/main.py +0 -0
  224. {janito-3.13.0 → janito-3.13.3}/janito/cli/main_cli.py +0 -0
  225. {janito-3.13.0 → janito-3.13.3}/janito/cli/prompt_core.py +0 -0
  226. {janito-3.13.0 → janito-3.13.3}/janito/cli/prompt_handler.py +0 -0
  227. {janito-3.13.0 → janito-3.13.3}/janito/cli/prompt_setup.py +0 -0
  228. {janito-3.13.0 → janito-3.13.3}/janito/cli/rich_terminal_reporter.py +0 -0
  229. {janito-3.13.0 → janito-3.13.3}/janito/cli/single_shot_mode/__init__.py +0 -0
  230. {janito-3.13.0 → janito-3.13.3}/janito/cli/single_shot_mode/handler.py +0 -0
  231. {janito-3.13.0 → janito-3.13.3}/janito/cli/utils.py +0 -0
  232. {janito-3.13.0 → janito-3.13.3}/janito/cli/verbose_output.py +0 -0
  233. {janito-3.13.0 → janito-3.13.3}/janito/config.py +0 -0
  234. {janito-3.13.0 → janito-3.13.3}/janito/config_manager.py +0 -0
  235. {janito-3.13.0 → janito-3.13.3}/janito/conversation_history.py +0 -0
  236. {janito-3.13.0 → janito-3.13.3}/janito/dir_walk_utils.py +0 -0
  237. {janito-3.13.0 → janito-3.13.3}/janito/docs/GETTING_STARTED.md +0 -0
  238. {janito-3.13.0 → janito-3.13.3}/janito/driver_events.py +0 -0
  239. {janito-3.13.0 → janito-3.13.3}/janito/drivers/azure_openai/driver.py +0 -0
  240. {janito-3.13.0 → janito-3.13.3}/janito/drivers/cerebras/__init__.py +0 -0
  241. {janito-3.13.0 → janito-3.13.3}/janito/drivers/dashscope.bak.zip +0 -0
  242. {janito-3.13.0 → janito-3.13.3}/janito/drivers/openai/README.md +0 -0
  243. {janito-3.13.0 → janito-3.13.3}/janito/drivers/openai/driver.py +0 -0
  244. {janito-3.13.0 → janito-3.13.3}/janito/drivers/openai_responses.bak.zip +0 -0
  245. {janito-3.13.0 → janito-3.13.3}/janito/drivers/zai/__init__.py +0 -0
  246. {janito-3.13.0 → janito-3.13.3}/janito/drivers/zai/driver.py +0 -0
  247. {janito-3.13.0 → janito-3.13.3}/janito/event_bus/__init__.py +0 -0
  248. {janito-3.13.0 → janito-3.13.3}/janito/event_bus/bus.py +0 -0
  249. {janito-3.13.0 → janito-3.13.3}/janito/event_bus/event.py +0 -0
  250. {janito-3.13.0 → janito-3.13.3}/janito/event_bus/handler.py +0 -0
  251. {janito-3.13.0 → janito-3.13.3}/janito/event_bus/queue_bus.py +0 -0
  252. {janito-3.13.0 → janito-3.13.3}/janito/exceptions.py +0 -0
  253. {janito-3.13.0 → janito-3.13.3}/janito/formatting.py +0 -0
  254. {janito-3.13.0 → janito-3.13.3}/janito/formatting_token.py +0 -0
  255. {janito-3.13.0 → janito-3.13.3}/janito/gitignore_utils.py +0 -0
  256. {janito-3.13.0 → janito-3.13.3}/janito/hello.txt +0 -0
  257. {janito-3.13.0 → janito-3.13.3}/janito/i18n/__init__.py +0 -0
  258. {janito-3.13.0 → janito-3.13.3}/janito/i18n/it.py +0 -0
  259. {janito-3.13.0 → janito-3.13.3}/janito/i18n/messages.py +0 -0
  260. {janito-3.13.0 → janito-3.13.3}/janito/i18n/pt.py +0 -0
  261. {janito-3.13.0 → janito-3.13.3}/janito/llm/README.md +0 -0
  262. {janito-3.13.0 → janito-3.13.3}/janito/llm/__init__.py +0 -0
  263. {janito-3.13.0 → janito-3.13.3}/janito/llm/agent.py +0 -0
  264. {janito-3.13.0 → janito-3.13.3}/janito/llm/auth.py +0 -0
  265. {janito-3.13.0 → janito-3.13.3}/janito/llm/auth_utils.py +0 -0
  266. {janito-3.13.0 → janito-3.13.3}/janito/llm/driver.py +0 -0
  267. {janito-3.13.0 → janito-3.13.3}/janito/llm/driver_config.py +0 -0
  268. {janito-3.13.0 → janito-3.13.3}/janito/llm/driver_config_builder.py +0 -0
  269. {janito-3.13.0 → janito-3.13.3}/janito/llm/driver_input.py +0 -0
  270. {janito-3.13.0 → janito-3.13.3}/janito/llm/message_parts.py +0 -0
  271. {janito-3.13.0 → janito-3.13.3}/janito/llm/model.py +0 -0
  272. {janito-3.13.0 → janito-3.13.3}/janito/llm/provider.py +0 -0
  273. {janito-3.13.0 → janito-3.13.3}/janito/llm/response_cache.py +0 -0
  274. {janito-3.13.0 → janito-3.13.3}/janito/perf_singleton.py +0 -0
  275. {janito-3.13.0 → janito-3.13.3}/janito/performance_collector.py +0 -0
  276. {janito-3.13.0 → janito-3.13.3}/janito/plugins/__init__.py +0 -0
  277. {janito-3.13.0 → janito-3.13.3}/janito/plugins/auto_loader.py +0 -0
  278. {janito-3.13.0 → janito-3.13.3}/janito/plugins/auto_loader_fixed.py +0 -0
  279. {janito-3.13.0 → janito-3.13.3}/janito/plugins/base.py +0 -0
  280. {janito-3.13.0 → janito-3.13.3}/janito/plugins/builtin.py +0 -0
  281. {janito-3.13.0 → janito-3.13.3}/janito/plugins/config.py +0 -0
  282. {janito-3.13.0 → janito-3.13.3}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
  283. {janito-3.13.0 → janito-3.13.3}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
  284. {janito-3.13.0 → janito-3.13.3}/janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py +0 -0
  285. {janito-3.13.0 → janito-3.13.3}/janito/plugins/core_adapter.py +0 -0
  286. {janito-3.13.0 → janito-3.13.3}/janito/plugins/core_loader.py +0 -0
  287. {janito-3.13.0 → janito-3.13.3}/janito/plugins/core_loader_fixed.py +0 -0
  288. {janito-3.13.0 → janito-3.13.3}/janito/plugins/discovery.py +0 -0
  289. {janito-3.13.0 → janito-3.13.3}/janito/plugins/discovery_core.py +0 -0
  290. {janito-3.13.0 → janito-3.13.3}/janito/plugins/manager.py +0 -0
  291. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/__init__.py +0 -0
  292. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/__init__.py +0 -0
  293. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/adapter.py +0 -0
  294. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/ask_user.py +0 -0
  295. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/copy_file.py +0 -0
  296. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/create_directory.py +0 -0
  297. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/create_file.py +0 -0
  298. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/delete_text_in_file.py +0 -0
  299. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/fetch_url.py +0 -0
  300. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/find_files.py +0 -0
  301. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/get_file_outline/__init__.py +0 -0
  302. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/get_file_outline/core.py +0 -0
  303. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/get_file_outline/java_outline.py +0 -0
  304. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/get_file_outline/markdown_outline.py +0 -0
  305. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/get_file_outline/python_outline.py +0 -0
  306. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/get_file_outline/search_outline.py +0 -0
  307. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/markdown_view.py +0 -0
  308. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/move_file.py +0 -0
  309. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/open_html_in_browser.py +0 -0
  310. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/open_url.py +0 -0
  311. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/python_code_run.py +0 -0
  312. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/python_command_run.py +0 -0
  313. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/python_file_run.py +0 -0
  314. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/read_chart.py +0 -0
  315. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/read_files.py +0 -0
  316. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/remove_directory.py +0 -0
  317. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/remove_file.py +0 -0
  318. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/replace_text_in_file.py +0 -0
  319. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/run_bash_command.py +0 -0
  320. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/run_powershell_command.py +0 -0
  321. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/search_text/__init__.py +0 -0
  322. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/search_text/core.py +0 -0
  323. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/search_text/match_lines.py +0 -0
  324. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/search_text/pattern_utils.py +0 -0
  325. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/search_text/traverse_directory.py +0 -0
  326. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/show_image.py +0 -0
  327. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/show_image_grid.py +0 -0
  328. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/__init__.py +0 -0
  329. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/core.py +0 -0
  330. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/css_validator.py +0 -0
  331. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/html_validator.py +0 -0
  332. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/jinja2_validator.py +0 -0
  333. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/js_validator.py +0 -0
  334. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/json_validator.py +0 -0
  335. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/markdown_validator.py +0 -0
  336. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/ps1_validator.py +0 -0
  337. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/python_validator.py +0 -0
  338. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/txt_validator.py +0 -0
  339. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/xml_validator.py +0 -0
  340. {janito-3.13.0 → janito-3.13.3}/janito/plugins/tools/local/validate_file_syntax/yaml_validator.py +0 -0
  341. {janito-3.13.0 → janito-3.13.3}/janito/provider_config.py +0 -0
  342. {janito-3.13.0 → janito-3.13.3}/janito/provider_registry.py +0 -0
  343. {janito-3.13.0 → janito-3.13.3}/janito/providers/__init__.py +0 -0
  344. {janito-3.13.0 → janito-3.13.3}/janito/providers/alibaba/__init__.py +0 -0
  345. {janito-3.13.0 → janito-3.13.3}/janito/providers/alibaba/model_info.py +0 -0
  346. {janito-3.13.0 → janito-3.13.3}/janito/providers/anthropic/model_info.py +0 -0
  347. {janito-3.13.0 → janito-3.13.3}/janito/providers/anthropic/provider.py +0 -0
  348. {janito-3.13.0 → janito-3.13.3}/janito/providers/azure_openai/model_info.py +0 -0
  349. {janito-3.13.0 → janito-3.13.3}/janito/providers/cerebras/__init__.py +0 -0
  350. {janito-3.13.0 → janito-3.13.3}/janito/providers/cerebras/model_info.py +0 -0
  351. {janito-3.13.0 → janito-3.13.3}/janito/providers/cerebras/provider.py +0 -0
  352. {janito-3.13.0 → janito-3.13.3}/janito/providers/dashscope.bak.zip +0 -0
  353. {janito-3.13.0 → janito-3.13.3}/janito/providers/deepseek/__init__.py +0 -0
  354. {janito-3.13.0 → janito-3.13.3}/janito/providers/deepseek/model_info.py +0 -0
  355. {janito-3.13.0 → janito-3.13.3}/janito/providers/deepseek/provider.py +0 -0
  356. {janito-3.13.0 → janito-3.13.3}/janito/providers/google/__init__.py +0 -0
  357. {janito-3.13.0 → janito-3.13.3}/janito/providers/google/model_info.py +0 -0
  358. {janito-3.13.0 → janito-3.13.3}/janito/providers/google/provider.py +0 -0
  359. {janito-3.13.0 → janito-3.13.3}/janito/providers/ibm/README.md +0 -0
  360. {janito-3.13.0 → janito-3.13.3}/janito/providers/ibm/__init__.py +0 -0
  361. {janito-3.13.0 → janito-3.13.3}/janito/providers/ibm/model_info.py +0 -0
  362. {janito-3.13.0 → janito-3.13.3}/janito/providers/mistral/__init__.py +0 -0
  363. {janito-3.13.0 → janito-3.13.3}/janito/providers/mistral/model_info.py +0 -0
  364. {janito-3.13.0 → janito-3.13.3}/janito/providers/mistral/provider.py +0 -0
  365. {janito-3.13.0 → janito-3.13.3}/janito/providers/moonshot/__init__.py +0 -0
  366. {janito-3.13.0 → janito-3.13.3}/janito/providers/moonshot/model_info.py +0 -0
  367. {janito-3.13.0 → janito-3.13.3}/janito/providers/moonshot/provider.py +0 -0
  368. {janito-3.13.0 → janito-3.13.3}/janito/providers/openai/__init__.py +0 -0
  369. {janito-3.13.0 → janito-3.13.3}/janito/providers/openai/model_info.py +0 -0
  370. {janito-3.13.0 → janito-3.13.3}/janito/providers/openai/provider.py +0 -0
  371. {janito-3.13.0 → janito-3.13.3}/janito/providers/openai/schema_generator.py +0 -0
  372. {janito-3.13.0 → janito-3.13.3}/janito/providers/registry.py +0 -0
  373. {janito-3.13.0 → janito-3.13.3}/janito/providers/zai/__init__.py +0 -0
  374. {janito-3.13.0 → janito-3.13.3}/janito/providers/zai/model_info.py +0 -0
  375. {janito-3.13.0 → janito-3.13.3}/janito/providers/zai/provider.py +0 -0
  376. {janito-3.13.0 → janito-3.13.3}/janito/providers/zai/schema_generator.py +0 -0
  377. {janito-3.13.0 → janito-3.13.3}/janito/regions/__init__.py +0 -0
  378. {janito-3.13.0 → janito-3.13.3}/janito/regions/cli.py +0 -0
  379. {janito-3.13.0 → janito-3.13.3}/janito/regions/geo_utils.py +0 -0
  380. {janito-3.13.0 → janito-3.13.3}/janito/regions/provider_regions.py +0 -0
  381. {janito-3.13.0 → janito-3.13.3}/janito/report_events.py +0 -0
  382. {janito-3.13.0 → janito-3.13.3}/janito/shell.bak.zip +0 -0
  383. {janito-3.13.0 → janito-3.13.3}/janito/tests/test_tool_adapter_case_insensitive.py +0 -0
  384. {janito-3.13.0 → janito-3.13.3}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  385. {janito-3.13.0 → janito-3.13.3}/janito/tools/README.md +0 -0
  386. {janito-3.13.0 → janito-3.13.3}/janito/tools/__init__.py +0 -0
  387. {janito-3.13.0 → janito-3.13.3}/janito/tools/base.py +0 -0
  388. {janito-3.13.0 → janito-3.13.3}/janito/tools/disabled_tools.py +0 -0
  389. {janito-3.13.0 → janito-3.13.3}/janito/tools/function_adapter.py +0 -0
  390. {janito-3.13.0 → janito-3.13.3}/janito/tools/inspect_registry.py +0 -0
  391. {janito-3.13.0 → janito-3.13.3}/janito/tools/loop_protection.py +0 -0
  392. {janito-3.13.0 → janito-3.13.3}/janito/tools/loop_protection_decorator.py +0 -0
  393. {janito-3.13.0 → janito-3.13.3}/janito/tools/outline_file.bak.zip +0 -0
  394. {janito-3.13.0 → janito-3.13.3}/janito/tools/path_security.py +0 -0
  395. {janito-3.13.0 → janito-3.13.3}/janito/tools/path_utils.py +0 -0
  396. {janito-3.13.0 → janito-3.13.3}/janito/tools/permissions.py +0 -0
  397. {janito-3.13.0 → janito-3.13.3}/janito/tools/permissions_parse.py +0 -0
  398. {janito-3.13.0 → janito-3.13.3}/janito/tools/tool_base.py +0 -0
  399. {janito-3.13.0 → janito-3.13.3}/janito/tools/tool_events.py +0 -0
  400. {janito-3.13.0 → janito-3.13.3}/janito/tools/tool_run_exception.py +0 -0
  401. {janito-3.13.0 → janito-3.13.3}/janito/tools/tool_use_tracker.py +0 -0
  402. {janito-3.13.0 → janito-3.13.3}/janito/tools/tool_utils.py +0 -0
  403. {janito-3.13.0 → janito-3.13.3}/janito/tools/tools_adapter.py +0 -0
  404. {janito-3.13.0 → janito-3.13.3}/janito/tools/tools_schema.py +0 -0
  405. {janito-3.13.0 → janito-3.13.3}/janito/tools/url_whitelist.py +0 -0
  406. {janito-3.13.0 → janito-3.13.3}/janito/utils.py +0 -0
  407. {janito-3.13.0 → janito-3.13.3}/janito.egg-info/SOURCES.txt +0 -0
  408. {janito-3.13.0 → janito-3.13.3}/janito.egg-info/dependency_links.txt +0 -0
  409. {janito-3.13.0 → janito-3.13.3}/janito.egg-info/entry_points.txt +0 -0
  410. {janito-3.13.0 → janito-3.13.3}/janito.egg-info/requires.txt +0 -0
  411. {janito-3.13.0 → janito-3.13.3}/janito.egg-info/top_level.txt +0 -0
  412. {janito-3.13.0 → janito-3.13.3}/market_prompt_fix.py +0 -0
  413. {janito-3.13.0 → janito-3.13.3}/mkdocs.log +0 -0
  414. {janito-3.13.0 → janito-3.13.3}/mkdocs.yml +0 -0
  415. {janito-3.13.0 → janito-3.13.3}/mkdocs_hooks.py +0 -0
  416. {janito-3.13.0 → janito-3.13.3}/penguin_ascii.py +0 -0
  417. {janito-3.13.0 → janito-3.13.3}/plugins/__init__.py +0 -0
  418. {janito-3.13.0 → janito-3.13.3}/plugins/core/__init__.py +0 -0
  419. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/__init__.py +0 -0
  420. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
  421. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
  422. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
  423. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
  424. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
  425. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
  426. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
  427. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
  428. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
  429. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
  430. {janito-3.13.0 → janito-3.13.3}/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
  431. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/__init__.py +0 -0
  432. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/copy_file.py +0 -0
  433. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/create_file.py +0 -0
  434. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
  435. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/find_files.py +0 -0
  436. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/move_file.py +0 -0
  437. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/read_files.py +0 -0
  438. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/remove_directory.py +0 -0
  439. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/remove_file.py +0 -0
  440. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
  441. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
  442. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
  443. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
  444. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
  445. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
  446. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
  447. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
  448. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
  449. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
  450. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
  451. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
  452. {janito-3.13.0 → janito-3.13.3}/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
  453. {janito-3.13.0 → janito-3.13.3}/plugins/core/imagedisplay/__init__.py +0 -0
  454. {janito-3.13.0 → janito-3.13.3}/plugins/core/imagedisplay/plugin.py +0 -0
  455. {janito-3.13.0 → janito-3.13.3}/plugins/core/imagedisplay/tools/__init__.py +0 -0
  456. {janito-3.13.0 → janito-3.13.3}/plugins/core/imagedisplay/tools/show_image.py +0 -0
  457. {janito-3.13.0 → janito-3.13.3}/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
  458. {janito-3.13.0 → janito-3.13.3}/plugins/core/system/__init__.py +0 -0
  459. {janito-3.13.0 → janito-3.13.3}/plugins/core/system/tools/run_bash_command.py +0 -0
  460. {janito-3.13.0 → janito-3.13.3}/plugins/core/system/tools/run_powershell_command.py +0 -0
  461. {janito-3.13.0 → janito-3.13.3}/plugins/dev/__init__.py +0 -0
  462. {janito-3.13.0 → janito-3.13.3}/plugins/dev/pythondev/__init__.py +0 -0
  463. {janito-3.13.0 → janito-3.13.3}/plugins/dev/pythondev/tools/python_code_run.py +0 -0
  464. {janito-3.13.0 → janito-3.13.3}/plugins/dev/pythondev/tools/python_command_run.py +0 -0
  465. {janito-3.13.0 → janito-3.13.3}/plugins/dev/pythondev/tools/python_file_run.py +0 -0
  466. {janito-3.13.0 → janito-3.13.3}/plugins/dev/visualization/__init__.py +0 -0
  467. {janito-3.13.0 → janito-3.13.3}/plugins/dev/visualization/tools/read_chart.py +0 -0
  468. {janito-3.13.0 → janito-3.13.3}/plugins/example_plugin.py +0 -0
  469. {janito-3.13.0 → janito-3.13.3}/plugins/ui/__init__.py +0 -0
  470. {janito-3.13.0 → janito-3.13.3}/plugins/ui/userinterface/__init__.py +0 -0
  471. {janito-3.13.0 → janito-3.13.3}/plugins/ui/userinterface/tools/ask_user.py +0 -0
  472. {janito-3.13.0 → janito-3.13.3}/plugins/web/__init__.py +0 -0
  473. {janito-3.13.0 → janito-3.13.3}/plugins/web/webtools/__init__.py +0 -0
  474. {janito-3.13.0 → janito-3.13.3}/plugins/web/webtools/tools/fetch_url.py +0 -0
  475. {janito-3.13.0 → janito-3.13.3}/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
  476. {janito-3.13.0 → janito-3.13.3}/plugins/web/webtools/tools/open_url.py +0 -0
  477. {janito-3.13.0 → janito-3.13.3}/pyproject.toml +0 -0
  478. {janito-3.13.0 → janito-3.13.3}/requirements-dev.txt +0 -0
  479. {janito-3.13.0 → janito-3.13.3}/requirements.txt +0 -0
  480. {janito-3.13.0 → janito-3.13.3}/setup.cfg +0 -0
  481. {janito-3.13.0 → janito-3.13.3}/tests/local/get_file_outline/test_core_outline.py +0 -0
  482. {janito-3.13.0 → janito-3.13.3}/tests/local/test_read_file/__init__.py +0 -0
  483. {janito-3.13.0 → janito-3.13.3}/tests/local/test_read_file/read_file.py +0 -0
  484. {janito-3.13.0 → janito-3.13.3}/tests/local/test_read_file/test_read_file.py +0 -0
  485. {janito-3.13.0 → janito-3.13.3}/tests/local/test_read_files.py +0 -0
  486. {janito-3.13.0 → janito-3.13.3}/tests/test_cli_list_models.py +0 -0
  487. {janito-3.13.0 → janito-3.13.3}/tests/test_cli_list_providers.py +0 -0
  488. {janito-3.13.0 → janito-3.13.3}/tests/test_cli_list_providers_alibaba.py +0 -0
  489. {janito-3.13.0 → janito-3.13.3}/tests/test_cli_list_providers_moonshot.py +0 -0
  490. {janito-3.13.0 → janito-3.13.3}/tests/test_cli_version.py +0 -0
  491. {janito-3.13.0 → janito-3.13.3}/tests/test_disabled_tools.py +0 -0
  492. {janito-3.13.0 → janito-3.13.3}/tests/test_plugin_system.py +0 -0
  493. {janito-3.13.0 → janito-3.13.3}/tests/test_provider_alibaba.py +0 -0
  494. {janito-3.13.0 → janito-3.13.3}/tests/test_provider_cerebras.py +0 -0
  495. {janito-3.13.0 → janito-3.13.3}/tests/test_provider_moonshot.py +0 -0
  496. {janito-3.13.0 → janito-3.13.3}/tools/release.py +0 -0
  497. {janito-3.13.0 → janito-3.13.3}/tox.ini +0 -0
  498. {janito-3.13.0 → janito-3.13.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 3.13.0
3
+ Version: 3.13.3
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
@@ -134,6 +134,10 @@ def _prepare_template_context(role, profile, allowed_permissions, args=None):
134
134
  context["platform"] = pd.get_platform_name()
135
135
  context["python_version"] = pd.get_python_version()
136
136
  context["shell_info"] = pd.detect_shell()
137
+ # Add Linux distro info if on Linux
138
+ if pd.is_linux():
139
+ context["linux_distro"] = pd.get_linux_distro()
140
+ context["distro_info"] = pd.get_distro_info()
137
141
 
138
142
  # Add allowed sites for market analyst profile
139
143
  if profile == "market-analyst":
@@ -1,99 +1,100 @@
1
- {# Profile Metadata #}
2
- {% if name %}Name: {{ name }}{% endif %}
3
- {% if version %}Version: {{ version }}{% endif %}
4
- {% if description %}Description: {{ description }}{% endif %}
5
- {% if author %}Author: {{ author }}{% endif %}
6
- {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
- {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
- {% if timezone %}Timezone: {{ timezone }}{% endif %}
9
-
10
- {# General role setup
11
- ex. "Search in code" -> Python Developer -> find(*.py) | Java Developer -> find(*.java)
12
- #}
13
- You are: {{ role | default('developer') }}
14
-
15
- {% if capabilities %}
16
- ## Capabilities
17
- {% for capability in capabilities %}
18
- - {{ capability }}
19
- {% endfor %}
20
- {% else %}
21
- ## Capabilities
22
- - Software development and engineering
23
- - Code analysis and debugging
24
- - File system operations
25
- - Python development and tooling
26
- - Cross-platform development
27
- {% endif %}
28
-
29
- {% if constraints %}
30
- ## Constraints
31
- {% for constraint in constraints %}
32
- - {{ constraint }}
33
- {% endfor %}
34
- {% endif %}
35
-
36
- {% if environment or platform or python_version or shell_info %}
37
- ## Environment
38
- {% if platform %}Platform: {{ platform }}{% endif %}
39
- {% if python_version %}Python version: {{ python_version }}{% endif %}
40
- {% if shell_info %}Shell/Environment: {{ shell_info }}{% endif %}
41
- {% endif %}
42
-
43
- {% if examples %}
44
- ## Examples
45
- {% for example in examples %}
46
- ### {{ example.title }}
47
- {{ example.description }}
48
- ```
49
- {{ example.code }}
50
- ```
51
- {% endfor %}
52
- {% endif %}
53
-
54
- {% if custom_instructions %}
55
- ## Custom Instructions
56
- {{ custom_instructions }}
57
- {% endif %}
58
-
59
- {% if available_tools %}
60
- ## Available Tools
61
- {% for tool in available_tools %}
62
- - **{{ tool.name }}**: {{ tool.description }}
63
- {% if tool.parameters %}
64
- Parameters: {{ tool.parameters | join(', ') }}
65
- {% endif %}
66
- {% endfor %}
67
- {% endif %}
68
-
69
- ## Guidelines
70
- {% if allowed_permissions %}
71
- - Before using the namespace tools provide a short reason
72
- {% endif %}
73
- {% if allowed_permissions and 'r' in allowed_permissions %}
74
- {# Exploratory hint #}
75
- - Before answering to the user, explore the content related to the question
76
- {# Reduces chunking roundtip #}
77
- - When exploring full files content, provide empty range to read the entire files instead of chunked reads
78
- {% endif %}
79
- {% if allowed_permissions and 'w' in allowed_permissions %}
80
- {# Reduce unrequest code verbosity overhead #}
81
- - Use the namespace functions to deliver the code changes instead of showing the code.
82
- {# Drive edit mode, place holders critical as shown to be crucial to avoid corruption with code placeholders #}
83
- - Prefer making localized edits using string replacements. If the required change is extensive, replace the entire file instead, provide full content without placeholders.
84
- {# Without this, the LLM choses to create files from a literal interpretation of the purpose and intention #}
85
- - Before creating files search the code for the location related to the file purpose
86
- {# This will trigger a search for the old names/locations to be updates #}
87
- - After moving, removing or renaming functions or classes to different modules, update all imports, references, tests, and documentation to reflect the new locations, then verify functionality.
88
- {# Keeping docstrings update is key to have semanatic match between prompts and code #}
89
- - Once development or updates are finished, ensure that new or updated packages, modules, functions are properly documented.
90
- {# Trying to prevent surrogates generation, found this frequently in gpt4.1/windows #}
91
- - While writing code, if you need an emoji or special Unicode character in a string, then insert the actual character (e.g., 📖) directly instead of using surrogate pairs or escape sequences.
92
- {% endif %}
93
- {% if emoji_enabled %}
94
- ## Emoji Usage
95
- - Feel free to use emojis in your responses to make them more engaging and expressive 🎉
96
- - Use appropriate emojis to enhance communication: for success, ⚠️ for warnings, 🔄 for progress, etc.
97
- - Emojis should complement the message, not replace clear explanations
98
- {% endif %}
99
-
1
+ {# Profile Metadata #}
2
+ {% if name %}Name: {{ name }}{% endif %}
3
+ {% if version %}Version: {{ version }}{% endif %}
4
+ {% if description %}Description: {{ description }}{% endif %}
5
+ {% if author %}Author: {{ author }}{% endif %}
6
+ {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
+ {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
+ {% if timezone %}Timezone: {{ timezone }}{% endif %}
9
+
10
+ {# General role setup
11
+ ex. "Search in code" -> Python Developer -> find(*.py) | Java Developer -> find(*.java)
12
+ #}
13
+ You are: {{ role | default('developer') }}
14
+
15
+ {% if capabilities %}
16
+ ## Capabilities
17
+ {% for capability in capabilities %}
18
+ - {{ capability }}
19
+ {% endfor %}
20
+ {% else %}
21
+ ## Capabilities
22
+ - Software development and engineering
23
+ - Code analysis and debugging
24
+ - File system operations
25
+ - Python development and tooling
26
+ - Cross-platform development
27
+ {% endif %}
28
+
29
+ {% if constraints %}
30
+ ## Constraints
31
+ {% for constraint in constraints %}
32
+ - {{ constraint }}
33
+ {% endfor %}
34
+ {% endif %}
35
+
36
+ {% if environment or platform or python_version or shell_info or linux_distro %}
37
+ ## Environment
38
+ {% if platform %}Platform: {{ platform }}{% endif %}
39
+ {% if linux_distro %}Linux Distribution: {{ linux_distro }}{% endif %}
40
+ {% if python_version %}Python version: {{ python_version }}{% endif %}
41
+ {% if shell_info %}Shell/Environment: {{ shell_info }}{% endif %}
42
+ {% endif %}
43
+
44
+ {% if examples %}
45
+ ## Examples
46
+ {% for example in examples %}
47
+ ### {{ example.title }}
48
+ {{ example.description }}
49
+ ```
50
+ {{ example.code }}
51
+ ```
52
+ {% endfor %}
53
+ {% endif %}
54
+
55
+ {% if custom_instructions %}
56
+ ## Custom Instructions
57
+ {{ custom_instructions }}
58
+ {% endif %}
59
+
60
+ {% if available_tools %}
61
+ ## Available Tools
62
+ {% for tool in available_tools %}
63
+ - **{{ tool.name }}**: {{ tool.description }}
64
+ {% if tool.parameters %}
65
+ Parameters: {{ tool.parameters | join(', ') }}
66
+ {% endif %}
67
+ {% endfor %}
68
+ {% endif %}
69
+
70
+ ## Guidelines
71
+ {% if allowed_permissions %}
72
+ - Before using the namespace tools provide a short reason
73
+ {% endif %}
74
+ {% if allowed_permissions and 'r' in allowed_permissions %}
75
+ {# Exploratory hint #}
76
+ - Before answering to the user, explore the content related to the question
77
+ {# Reduces chunking roundtip #}
78
+ - When exploring full files content, provide empty range to read the entire files instead of chunked reads
79
+ {% endif %}
80
+ {% if allowed_permissions and 'w' in allowed_permissions %}
81
+ {# Reduce unrequest code verbosity overhead #}
82
+ - Use the namespace functions to deliver the code changes instead of showing the code.
83
+ {# Drive edit mode, place holders critical as shown to be crucial to avoid corruption with code placeholders #}
84
+ - Prefer making localized edits using string replacements. If the required change is extensive, replace the entire file instead, provide full content without placeholders.
85
+ {# Without this, the LLM choses to create files from a literal interpretation of the purpose and intention #}
86
+ - Before creating files search the code for the location related to the file purpose
87
+ {# This will trigger a search for the old names/locations to be updates #}
88
+ - After moving, removing or renaming functions or classes to different modules, update all imports, references, tests, and documentation to reflect the new locations, then verify functionality.
89
+ {# Keeping docstrings update is key to have semanatic match between prompts and code #}
90
+ - Once development or updates are finished, ensure that new or updated packages, modules, functions are properly documented.
91
+ {# Trying to prevent surrogates generation, found this frequently in gpt4.1/windows #}
92
+ - While writing code, if you need an emoji or special Unicode character in a string, then insert the actual character (e.g., 📖) directly instead of using surrogate pairs or escape sequences.
93
+ {% endif %}
94
+ {% if emoji_enabled %}
95
+ ## Emoji Usage
96
+ - Feel free to use emojis in your responses to make them more engaging and expressive 🎉
97
+ - Use appropriate emojis to enhance communication: ✅ for success, ⚠️ for warnings, 🔄 for progress, etc.
98
+ - Emojis should complement the message, not replace clear explanations
99
+ {% endif %}
100
+
@@ -1,89 +1,90 @@
1
- {# Profile Metadata #}
2
- {% if name %}Name: {{ name }}{% endif %}
3
- {% if version %}Version: {{ version }}{% endif %}
4
- {% if description %}Description: {{ description }}{% endif %}
5
- {% if author %}Author: {{ author }}{% endif %}
6
- {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
- {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
- {% if timezone %}Timezone: {{ timezone }}{% endif %}
9
-
10
- You are: {{ role | default('software developer') }}
11
-
12
- {% if capabilities %}
13
- ## Capabilities
14
- {% for capability in capabilities %}
15
- - {{ capability }}
16
- {% endfor %}
17
- {% endif %}
18
-
19
- {% if constraints %}
20
- ## Constraints
21
- {% for constraint in constraints %}
22
- - {{ constraint }}
23
- {% endfor %}
24
- {% endif %}
25
-
26
- {% if environment or platform or shell_info %}
27
- ## Environment
28
- {% if platform %}Platform: {{ platform }}{% endif %}
29
- {% if python_version %}Python version: {{ python_version }}{% endif %}
30
- {% if shell_info %}Shell/Environment: {{ shell_info }}{% endif %}
31
- {% endif %}
32
-
33
- {% if examples %}
34
- ## Examples
35
- {% for example in examples %}
36
- ### {{ example.title }}
37
- {{ example.description }}
38
- ```
39
- {{ example.code }}
40
- ```
41
- {% endfor %}
42
- {% endif %}
43
-
44
- {% if custom_instructions %}
45
- ## Custom Instructions
46
- {{ custom_instructions }}
47
- {% endif %}
48
-
49
- {% if available_tools %}
50
- ## Available Tools
51
- {% for tool in available_tools %}
52
- - **{{ tool.name }}**: {{ tool.description }}
53
- {% if tool.parameters %}
54
- Parameters: {{ tool.parameters | join(', ') }}
55
- {% endif %}
56
- {% endfor %}
57
- {% endif %}
58
-
59
- ## Guidelines
60
- {% if allowed_permissions %}
61
- - Before using the namespace tools provide a short reason
62
- {% endif %}
63
- {% if allowed_permissions and 'r' in allowed_permissions %}
64
- {# Exploratory hint #}
65
- - Before answering to the user, explore the content related to the question
66
- {# Reduces chunking roundtip #}
67
- - When exploring full files content, provide empty range to read the entire files instead of chunked reads
68
- {% endif %}
69
- {% if allowed_permissions and 'w' in allowed_permissions %}
70
- {# Reduce unrequest code verbosity overhead #}
71
- - Use the namespace functions to deliver the code changes instead of showing the code.
72
- {# Drive edit mode, place holders critical as shown to be crucial to avoid corruption with code placeholders #}
73
- - Prefer making localized edits using string replacements. If the required change is extensive, replace the entire file instead, provide full content without placeholders.
74
- {# Without this, the LLM choses to create files from a literal interpretation of the purpose and intention #}
75
- - Before creating files search the code for the location related to the file purpose
76
- {# This will trigger a search for the old names/locations to be updates #}
77
- - After moving, removing or renaming functions or classes to different modules, update all imports, references, tests, and documentation to reflect the new locations, then verify functionality.
78
- {# Keeping docstrings update is key to have semanatic match between prompts and code #}
79
- - Once development or updates are finished, ensure that new or updated packages, modules, functions are properly documented.
80
- {# Trying to prevent surrogates generation, found this frequently in gpt4.1/windows #}
81
- - While writing code, if you need an emoji or special Unicode character in a string, then insert the actual character (e.g., 📖) directly instead of using surrogate pairs or escape sequences.
82
- {% endif %}
83
- {% if emoji_enabled %}
84
- ## Emoji Usage
85
- - Feel free to use emojis in your responses to make them more engaging and expressive 🎉
86
- - Use appropriate emojis to enhance communication: for success, ⚠️ for warnings, 🔄 for progress, etc.
87
- - Emojis should complement the message, not replace clear explanations
88
- {% endif %}
89
-
1
+ {# Profile Metadata #}
2
+ {% if name %}Name: {{ name }}{% endif %}
3
+ {% if version %}Version: {{ version }}{% endif %}
4
+ {% if description %}Description: {{ description }}{% endif %}
5
+ {% if author %}Author: {{ author }}{% endif %}
6
+ {% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
7
+ {% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
8
+ {% if timezone %}Timezone: {{ timezone }}{% endif %}
9
+
10
+ You are: {{ role | default('software developer') }}
11
+
12
+ {% if capabilities %}
13
+ ## Capabilities
14
+ {% for capability in capabilities %}
15
+ - {{ capability }}
16
+ {% endfor %}
17
+ {% endif %}
18
+
19
+ {% if constraints %}
20
+ ## Constraints
21
+ {% for constraint in constraints %}
22
+ - {{ constraint }}
23
+ {% endfor %}
24
+ {% endif %}
25
+
26
+ {% if environment or platform or shell_info or linux_distro %}
27
+ ## Environment
28
+ {% if platform %}Platform: {{ platform }}{% endif %}
29
+ {% if linux_distro %}Linux Distribution: {{ linux_distro }}{% endif %}
30
+ {% if python_version %}Python version: {{ python_version }}{% endif %}
31
+ {% if shell_info %}Shell/Environment: {{ shell_info }}{% endif %}
32
+ {% endif %}
33
+
34
+ {% if examples %}
35
+ ## Examples
36
+ {% for example in examples %}
37
+ ### {{ example.title }}
38
+ {{ example.description }}
39
+ ```
40
+ {{ example.code }}
41
+ ```
42
+ {% endfor %}
43
+ {% endif %}
44
+
45
+ {% if custom_instructions %}
46
+ ## Custom Instructions
47
+ {{ custom_instructions }}
48
+ {% endif %}
49
+
50
+ {% if available_tools %}
51
+ ## Available Tools
52
+ {% for tool in available_tools %}
53
+ - **{{ tool.name }}**: {{ tool.description }}
54
+ {% if tool.parameters %}
55
+ Parameters: {{ tool.parameters | join(', ') }}
56
+ {% endif %}
57
+ {% endfor %}
58
+ {% endif %}
59
+
60
+ ## Guidelines
61
+ {% if allowed_permissions %}
62
+ - Before using the namespace tools provide a short reason
63
+ {% endif %}
64
+ {% if allowed_permissions and 'r' in allowed_permissions %}
65
+ {# Exploratory hint #}
66
+ - Before answering to the user, explore the content related to the question
67
+ {# Reduces chunking roundtip #}
68
+ - When exploring full files content, provide empty range to read the entire files instead of chunked reads
69
+ {% endif %}
70
+ {% if allowed_permissions and 'w' in allowed_permissions %}
71
+ {# Reduce unrequest code verbosity overhead #}
72
+ - Use the namespace functions to deliver the code changes instead of showing the code.
73
+ {# Drive edit mode, place holders critical as shown to be crucial to avoid corruption with code placeholders #}
74
+ - Prefer making localized edits using string replacements. If the required change is extensive, replace the entire file instead, provide full content without placeholders.
75
+ {# Without this, the LLM choses to create files from a literal interpretation of the purpose and intention #}
76
+ - Before creating files search the code for the location related to the file purpose
77
+ {# This will trigger a search for the old names/locations to be updates #}
78
+ - After moving, removing or renaming functions or classes to different modules, update all imports, references, tests, and documentation to reflect the new locations, then verify functionality.
79
+ {# Keeping docstrings update is key to have semanatic match between prompts and code #}
80
+ - Once development or updates are finished, ensure that new or updated packages, modules, functions are properly documented.
81
+ {# Trying to prevent surrogates generation, found this frequently in gpt4.1/windows #}
82
+ - While writing code, if you need an emoji or special Unicode character in a string, then insert the actual character (e.g., 📖) directly instead of using surrogate pairs or escape sequences.
83
+ {% endif %}
84
+ {% if emoji_enabled %}
85
+ ## Emoji Usage
86
+ - Feel free to use emojis in your responses to make them more engaging and expressive 🎉
87
+ - Use appropriate emojis to enhance communication: ✅ for success, ⚠️ for warnings, 🔄 for progress, etc.
88
+ - Emojis should complement the message, not replace clear explanations
89
+ {% endif %}
90
+