janito 3.5.1__tar.gz → 3.6.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (533) hide show
  1. janito-3.6.1/CHANGELOG.md +39 -0
  2. janito-3.6.1/EVERLYN_README.md +134 -0
  3. janito-3.6.1/EverlynAI.psd1 +22 -0
  4. janito-3.6.1/EverlynAI.psm1 +7 -0
  5. {janito-3.5.1/janito.egg-info → janito-3.6.1}/PKG-INFO +7 -8
  6. {janito-3.5.1 → janito-3.6.1}/README.md +6 -6
  7. janito-3.6.1/debug_attribute_access.py +41 -0
  8. janito-3.6.1/debug_conditions.py +83 -0
  9. janito-3.6.1/debug_detailed.py +77 -0
  10. janito-3.6.1/debug_exact_logic.py +59 -0
  11. janito-3.6.1/debug_fetch_url.py +33 -0
  12. janito-3.6.1/debug_fetch_url2.py +40 -0
  13. janito-3.6.1/debug_fetch_url3.py +55 -0
  14. janito-3.6.1/debug_real_status.py +57 -0
  15. janito-3.6.1/debug_status_code.py +36 -0
  16. {janito-3.5.1 → janito-3.6.1}/docs/CHANGELOG.md +10 -0
  17. {janito-3.5.1 → janito-3.6.1}/docs/moonshot-setup.md +5 -6
  18. {janito-3.5.1 → janito-3.6.1}/docs/supported-providers-models.md +2 -1
  19. janito-3.6.1/everlyn.md +82 -0
  20. janito-3.6.1/everlyn_homepage.html +1 -0
  21. {janito-3.5.1 → janito-3.6.1}/janito/README.md +4 -4
  22. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_tools.py +6 -1
  23. {janito-3.5.1 → janito-3.6.1}/janito/cli/main_cli.py +1 -1
  24. {janito-3.5.1 → janito-3.6.1}/janito/cli/rich_terminal_reporter.py +2 -2
  25. janito-3.6.1/janito/data/blocked.txt +96 -0
  26. {janito-3.5.1 → janito-3.6.1}/janito/docs/GETTING_STARTED.md +8 -9
  27. janito-3.6.1/janito/plugins/tools/__init__.py +39 -0
  28. janito-3.6.1/janito/plugins/tools/core/__init__.py +65 -0
  29. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/ask_user.py +1 -1
  30. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/copy_file.py +1 -1
  31. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/create_directory.py +1 -1
  32. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/create_file.py +2 -2
  33. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/delete_text_in_file.py +2 -2
  34. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/fetch_url.py +18 -21
  35. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/find_files.py +1 -1
  36. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/core.py +1 -1
  37. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/move_file.py +1 -1
  38. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/open_html_in_browser.py +1 -1
  39. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/open_url.py +1 -1
  40. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/python_code_run.py +1 -1
  41. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/python_command_run.py +1 -1
  42. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/python_file_run.py +1 -1
  43. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/read_chart.py +1 -1
  44. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/read_files.py +1 -1
  45. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/remove_directory.py +1 -1
  46. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/remove_file.py +1 -1
  47. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/replace_text_in_file.py +2 -2
  48. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/run_bash_command.py +1 -1
  49. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/run_powershell_command.py +1 -1
  50. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/core.py +1 -1
  51. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/show_image.py +1 -1
  52. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/show_image_grid.py +1 -1
  53. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/core.py +1 -1
  54. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/view_file.py +1 -1
  55. {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/webtools/__init__.py +1 -11
  56. {janito-3.5.1 → janito-3.6.1}/janito/providers/moonshot/model_info.py +15 -4
  57. {janito-3.5.1 → janito-3.6.1}/janito/providers/moonshot/provider.py +1 -1
  58. {janito-3.5.1 → janito-3.6.1}/janito/tools/__init__.py +14 -4
  59. janito-3.6.1/janito/tools/adapters/local/copy_file.py +0 -0
  60. janito-3.6.1/janito/tools/adapters/local/create_file.py +0 -0
  61. janito-3.6.1/janito/tools/adapters/local/move_file.py +0 -0
  62. janito-3.6.1/janito/tools/adapters/local/remove_file.py +0 -0
  63. janito-3.6.1/janito/tools/adapters/local/view_file.py +0 -0
  64. janito-3.6.1/janito/tools/blocked_sites.py +74 -0
  65. {janito-3.5.1 → janito-3.6.1/janito.egg-info}/PKG-INFO +7 -8
  66. {janito-3.5.1 → janito-3.6.1}/janito.egg-info/SOURCES.txt +78 -49
  67. {janito-3.5.1 → janito-3.6.1}/janito.egg-info/requires.txt +0 -2
  68. {janito-3.5.1 → janito-3.6.1}/pyproject.toml +2 -2
  69. janito-3.6.1/test_404.py +16 -0
  70. janito-3.6.1/test_actual_404.py +27 -0
  71. janito-3.6.1/test_blocked_sites.py +32 -0
  72. janito-3.6.1/test_fixed_404.py +27 -0
  73. janito-3.6.1/test_fixed_404_local.py +37 -0
  74. janito-3.6.1/test_multiple_status_codes.py +46 -0
  75. janito-3.6.1/test_real_404.py +19 -0
  76. janito-3.6.1/test_status_codes.py +50 -0
  77. janito-3.5.1/janito/plugins/tools/__init__.py +0 -10
  78. janito-3.5.1/janito/plugins/tools/core_tools_plugin.py +0 -87
  79. janito-3.5.1/janito/plugins/web/webtools/tools/fetch_url.py +0 -458
  80. {janito-3.5.1 → janito-3.6.1}/.codespellrc +0 -0
  81. {janito-3.5.1 → janito-3.6.1}/.gitattributes +0 -0
  82. {janito-3.5.1 → janito-3.6.1}/.github/workflows/python-app.yml.disabled +0 -0
  83. {janito-3.5.1 → janito-3.6.1}/.gitignore +0 -0
  84. {janito-3.5.1 → janito-3.6.1}/.pre-commit-config.yaml +0 -0
  85. {janito-3.5.1 → janito-3.6.1}/.secrets.baseline +0 -0
  86. {janito-3.5.1 → janito-3.6.1}/.vscode/settings.json +0 -0
  87. {janito-3.5.1 → janito-3.6.1}/ANNOUNCEMENT_v3.1.0.md +0 -0
  88. {janito-3.5.1 → janito-3.6.1}/ANNOUNCEMENT_v3.5.1.md +0 -0
  89. {janito-3.5.1 → janito-3.6.1}/LICENSE +0 -0
  90. {janito-3.5.1 → janito-3.6.1}/MARKET_ANALYST_README.md +0 -0
  91. {janito-3.5.1 → janito-3.6.1}/README-dev.md +0 -0
  92. {janito-3.5.1 → janito-3.6.1}/RELEASE_COMPARISON.md +0 -0
  93. {janito-3.5.1 → janito-3.6.1}/UPDATING_DOCS.md +0 -0
  94. {janito-3.5.1 → janito-3.6.1}/adding_mcp.txt +0 -0
  95. {janito-3.5.1 → janito-3.6.1}/docs/CHANGELOG_3.0.0.md +0 -0
  96. {janito-3.5.1 → janito-3.6.1}/docs/CNAME +0 -0
  97. {janito-3.5.1 → janito-3.6.1}/docs/DIV.md +0 -0
  98. {janito-3.5.1 → janito-3.6.1}/docs/Interfaces.txt +0 -0
  99. {janito-3.5.1 → janito-3.6.1}/docs/PROFILES.md +0 -0
  100. {janito-3.5.1 → janito-3.6.1}/docs/TOOLBAR-STYLING.md +0 -0
  101. {janito-3.5.1 → janito-3.6.1}/docs/about/costs.md +0 -0
  102. {janito-3.5.1 → janito-3.6.1}/docs/about/vs-webchats.md +0 -0
  103. {janito-3.5.1 → janito-3.6.1}/docs/about/why.md +0 -0
  104. {janito-3.5.1 → janito-3.6.1}/docs/alibaba-setup.md +0 -0
  105. {janito-3.5.1 → janito-3.6.1}/docs/alternatives.md +0 -0
  106. {janito-3.5.1 → janito-3.6.1}/docs/assets/images/social-preview.png +0 -0
  107. {janito-3.5.1 → janito-3.6.1}/docs/cerebras-setup.md +0 -0
  108. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG.md +0 -0
  109. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
  110. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
  111. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
  112. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
  113. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_3.1.0.md +0 -0
  114. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_3.5.0.md +0 -0
  115. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_3.5.1.md +0 -0
  116. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
  117. {janito-3.5.1 → janito-3.6.1}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
  118. {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
  119. {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/code-generation-challenges.md +0 -0
  120. {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/code-generation-observability.md +0 -0
  121. {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/our-approach.md +0 -0
  122. {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/why-string-replacement.md +0 -0
  123. {janito-3.5.1 → janito-3.6.1}/docs/concepts/analysis-style.md +0 -0
  124. {janito-3.5.1 → janito-3.6.1}/docs/concepts/human-guided-ai.md +0 -0
  125. {janito-3.5.1 → janito-3.6.1}/docs/concepts/index.md +0 -0
  126. {janito-3.5.1 → janito-3.6.1}/docs/concepts/language-model-clients.md +0 -0
  127. {janito-3.5.1 → janito-3.6.1}/docs/concepts/prompt-design-style.md +0 -0
  128. {janito-3.5.1 → janito-3.6.1}/docs/deepseek-setup.md +0 -0
  129. {janito-3.5.1 → janito-3.6.1}/docs/driver-flow.md +0 -0
  130. {janito-3.5.1 → janito-3.6.1}/docs/driver-request-cancellation.md +0 -0
  131. {janito-3.5.1 → janito-3.6.1}/docs/drivers/events.md +0 -0
  132. {janito-3.5.1 → janito-3.6.1}/docs/drivers.md +0 -0
  133. {janito-3.5.1 → janito-3.6.1}/docs/event-bus.md +0 -0
  134. {janito-3.5.1 → janito-3.6.1}/docs/guides/configuration.md +0 -0
  135. {janito-3.5.1 → janito-3.6.1}/docs/guides/developing.md +0 -0
  136. {janito-3.5.1 → janito-3.6.1}/docs/guides/disabled-tools.md +0 -0
  137. {janito-3.5.1 → janito-3.6.1}/docs/guides/installation.md +0 -0
  138. {janito-3.5.1 → janito-3.6.1}/docs/guides/market-data-sources.md +0 -0
  139. {janito-3.5.1 → janito-3.6.1}/docs/guides/profiles.md +0 -0
  140. {janito-3.5.1 → janito-3.6.1}/docs/guides/prompting/README.md +0 -0
  141. {janito-3.5.1 → janito-3.6.1}/docs/guides/read-chart-examples.md +0 -0
  142. {janito-3.5.1 → janito-3.6.1}/docs/guides/security-commands.md +0 -0
  143. {janito-3.5.1 → janito-3.6.1}/docs/guides/single-shot-terminal.md +0 -0
  144. {janito-3.5.1 → janito-3.6.1}/docs/guides/stock-market-guide.md +0 -0
  145. {janito-3.5.1 → janito-3.6.1}/docs/guides/terminal-shell.md +0 -0
  146. {janito-3.5.1 → janito-3.6.1}/docs/guides/tools-developer-guide.md +0 -0
  147. {janito-3.5.1 → janito-3.6.1}/docs/guides/url-whitelist.md +0 -0
  148. {janito-3.5.1 → janito-3.6.1}/docs/guides/using.md +0 -0
  149. {janito-3.5.1 → janito-3.6.1}/docs/guides/using_tools.md +0 -0
  150. {janito-3.5.1 → janito-3.6.1}/docs/ibm-setup.md +0 -0
  151. {janito-3.5.1 → janito-3.6.1}/docs/imgs/code-generation-observability.png +0 -0
  152. {janito-3.5.1 → janito-3.6.1}/docs/imgs/code_generation_observability.png +0 -0
  153. {janito-3.5.1 → janito-3.6.1}/docs/imgs/happy-programmer.png +0 -0
  154. {janito-3.5.1 → janito-3.6.1}/docs/imgs/happy-programmer.svg +0 -0
  155. {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal-one-shot.png +0 -0
  156. {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal-shell.png +0 -0
  157. {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal_one_shot.png +0 -0
  158. {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal_shell.png +0 -0
  159. {janito-3.5.1 → janito-3.6.1}/docs/index.md +0 -0
  160. {janito-3.5.1 → janito-3.6.1}/docs/llm-drivers-required-config.md +0 -0
  161. {janito-3.5.1 → janito-3.6.1}/docs/llm-drivers.md +0 -0
  162. {janito-3.5.1 → janito-3.6.1}/docs/meta/developer-toolchain.md +0 -0
  163. {janito-3.5.1 → janito-3.6.1}/docs/meta/quality-checks.txt +0 -0
  164. {janito-3.5.1 → janito-3.6.1}/docs/mistral-setup.md +0 -0
  165. {janito-3.5.1 → janito-3.6.1}/docs/openai-setup.md +0 -0
  166. {janito-3.5.1 → janito-3.6.1}/docs/overrides/main.html +0 -0
  167. {janito-3.5.1 → janito-3.6.1}/docs/overrides/partials/copyright.html +0 -0
  168. {janito-3.5.1 → janito-3.6.1}/docs/overrides/partials/social.html +0 -0
  169. {janito-3.5.1 → janito-3.6.1}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
  170. {janito-3.5.1 → janito-3.6.1}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
  171. {janito-3.5.1 → janito-3.6.1}/docs/plugins/README.md +0 -0
  172. {janito-3.5.1 → janito-3.6.1}/docs/plugins/api-reference.md +0 -0
  173. {janito-3.5.1 → janito-3.6.1}/docs/plugins/architecture.md +0 -0
  174. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
  175. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/filemanager.md +0 -0
  176. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
  177. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/pythondev.md +0 -0
  178. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/system.md +0 -0
  179. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/userinterface.md +0 -0
  180. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/visualization.md +0 -0
  181. {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/webtools.md +0 -0
  182. {janito-3.5.1 → janito-3.6.1}/docs/plugins/configuration.md +0 -0
  183. {janito-3.5.1 → janito-3.6.1}/docs/plugins/examples/advanced.md +0 -0
  184. {janito-3.5.1 → janito-3.6.1}/docs/plugins/examples/basic.md +0 -0
  185. {janito-3.5.1 → janito-3.6.1}/docs/plugins/examples/intermediate.md +0 -0
  186. {janito-3.5.1 → janito-3.6.1}/docs/plugins/plugin-development.md +0 -0
  187. {janito-3.5.1 → janito-3.6.1}/docs/plugins/plugin-resources.md +0 -0
  188. {janito-3.5.1 → janito-3.6.1}/docs/plugins/publishing.md +0 -0
  189. {janito-3.5.1 → janito-3.6.1}/docs/plugins/remote-plugins.md +0 -0
  190. {janito-3.5.1 → janito-3.6.1}/docs/plugins/testing.md +0 -0
  191. {janito-3.5.1 → janito-3.6.1}/docs/provider-platform-access.md +0 -0
  192. {janito-3.5.1 → janito-3.6.1}/docs/public-sources.md +0 -0
  193. {janito-3.5.1 → janito-3.6.1}/docs/reference/api.md +0 -0
  194. {janito-3.5.1 → janito-3.6.1}/docs/reference/azure-openai.md +0 -0
  195. {janito-3.5.1 → janito-3.6.1}/docs/reference/cli-options.md +0 -0
  196. {janito-3.5.1 → janito-3.6.1}/docs/reference/message-handler-model.md +0 -0
  197. {janito-3.5.1 → janito-3.6.1}/docs/reference/rich-message-handler.md +0 -0
  198. {janito-3.5.1 → janito-3.6.1}/docs/security.md +0 -0
  199. {janito-3.5.1 → janito-3.6.1}/docs/together-setup.md +0 -0
  200. {janito-3.5.1 → janito-3.6.1}/docs/tools/search-text.md +0 -0
  201. {janito-3.5.1 → janito-3.6.1}/docs/tools/show-image-grid.md +0 -0
  202. {janito-3.5.1 → janito-3.6.1}/docs/tools/show-image.md +0 -0
  203. {janito-3.5.1 → janito-3.6.1}/docs/tools-index.md +0 -0
  204. {janito-3.5.1 → janito-3.6.1}/docs/tools-natural-results.md +0 -0
  205. {janito-3.5.1 → janito-3.6.1}/docs/tools-precision.md +0 -0
  206. {janito-3.5.1 → janito-3.6.1}/docs/z-ai-setup.md +0 -0
  207. {janito-3.5.1 → janito-3.6.1}/examples/loop_protection_example.py +0 -0
  208. {janito-3.5.1 → janito-3.6.1}/examples/loop_protection_tool_example.py +0 -0
  209. {janito-3.5.1 → janito-3.6.1}/get_nasdaq_top.py +0 -0
  210. {janito-3.5.1 → janito-3.6.1}/ibm-logo.txt +0 -0
  211. {janito-3.5.1 → janito-3.6.1}/init_janito_tools.py +0 -0
  212. {janito-3.5.1 → janito-3.6.1}/janito/__init__.py +0 -0
  213. {janito-3.5.1 → janito-3.6.1}/janito/__main__.py +0 -0
  214. {janito-3.5.1 → janito-3.6.1}/janito/_version.py +0 -0
  215. {janito-3.5.1 → janito-3.6.1}/janito/agent/setup_agent.py +0 -0
  216. {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
  217. {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
  218. {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
  219. {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
  220. {janito-3.5.1 → janito-3.6.1}/janito/cli/__init__.py +0 -0
  221. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/bindings.py +0 -0
  222. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/chat_entry.py +0 -0
  223. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/prompt_style.py +0 -0
  224. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/script_runner.py +0 -0
  225. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/session.py +0 -0
  226. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
  227. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
  228. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
  229. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
  230. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
  231. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/base.py +0 -0
  232. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
  233. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
  234. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
  235. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/help.py +0 -0
  236. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
  237. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
  238. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/model.py +0 -0
  239. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
  240. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
  241. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
  242. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
  243. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/read.py +0 -0
  244. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/role.py +0 -0
  245. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
  246. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
  247. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
  248. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/session.py +0 -0
  249. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
  250. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
  251. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
  252. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
  253. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
  254. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/write.py +0 -0
  255. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
  256. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/input_history.py +0 -0
  257. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
  258. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session/history.py +0 -0
  259. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session/manager.py +0 -0
  260. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
  261. {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/toolbar.py +0 -0
  262. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/check_tools.py +0 -0
  263. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
  264. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_config.py +0 -0
  265. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_drivers.py +0 -0
  266. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_models.py +0 -0
  267. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_plugins.py +0 -0
  268. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_profiles.py +0 -0
  269. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_providers.py +0 -0
  270. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_providers_region.py +0 -0
  271. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/model_selection.py +0 -0
  272. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/model_utils.py +0 -0
  273. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/ping_providers.py +0 -0
  274. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/set_api_key.py +0 -0
  275. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/show_config.py +0 -0
  276. {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/show_system_prompt.py +0 -0
  277. {janito-3.5.1 → janito-3.6.1}/janito/cli/config.py +0 -0
  278. {janito-3.5.1 → janito-3.6.1}/janito/cli/console.py +0 -0
  279. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/__init__.py +0 -0
  280. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/event_logger.py +0 -0
  281. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/getters.py +0 -0
  282. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/model_guesser.py +0 -0
  283. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/runner.py +0 -0
  284. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/setters.py +0 -0
  285. {janito-3.5.1 → janito-3.6.1}/janito/cli/core/unsetters.py +0 -0
  286. {janito-3.5.1 → janito-3.6.1}/janito/cli/main.py +0 -0
  287. {janito-3.5.1 → janito-3.6.1}/janito/cli/prompt_core.py +0 -0
  288. {janito-3.5.1 → janito-3.6.1}/janito/cli/prompt_handler.py +0 -0
  289. {janito-3.5.1 → janito-3.6.1}/janito/cli/prompt_setup.py +0 -0
  290. {janito-3.5.1 → janito-3.6.1}/janito/cli/single_shot_mode/__init__.py +0 -0
  291. {janito-3.5.1 → janito-3.6.1}/janito/cli/single_shot_mode/handler.py +0 -0
  292. {janito-3.5.1 → janito-3.6.1}/janito/cli/utils.py +0 -0
  293. {janito-3.5.1 → janito-3.6.1}/janito/cli/verbose_output.py +0 -0
  294. {janito-3.5.1 → janito-3.6.1}/janito/config.py +0 -0
  295. {janito-3.5.1 → janito-3.6.1}/janito/config_manager.py +0 -0
  296. {janito-3.5.1 → janito-3.6.1}/janito/conversation_history.py +0 -0
  297. {janito-3.5.1 → janito-3.6.1}/janito/dir_walk_utils.py +0 -0
  298. {janito-3.5.1 → janito-3.6.1}/janito/driver_events.py +0 -0
  299. {janito-3.5.1 → janito-3.6.1}/janito/drivers/azure_openai/driver.py +0 -0
  300. {janito-3.5.1 → janito-3.6.1}/janito/drivers/cerebras/__init__.py +0 -0
  301. {janito-3.5.1 → janito-3.6.1}/janito/drivers/dashscope.bak.zip +0 -0
  302. {janito-3.5.1 → janito-3.6.1}/janito/drivers/openai/README.md +0 -0
  303. {janito-3.5.1 → janito-3.6.1}/janito/drivers/openai/driver.py +0 -0
  304. {janito-3.5.1 → janito-3.6.1}/janito/drivers/openai_responses.bak.zip +0 -0
  305. {janito-3.5.1 → janito-3.6.1}/janito/drivers/zai/__init__.py +0 -0
  306. {janito-3.5.1 → janito-3.6.1}/janito/drivers/zai/driver.py +0 -0
  307. {janito-3.5.1 → janito-3.6.1}/janito/event_bus/__init__.py +0 -0
  308. {janito-3.5.1 → janito-3.6.1}/janito/event_bus/bus.py +0 -0
  309. {janito-3.5.1 → janito-3.6.1}/janito/event_bus/event.py +0 -0
  310. {janito-3.5.1 → janito-3.6.1}/janito/event_bus/handler.py +0 -0
  311. {janito-3.5.1 → janito-3.6.1}/janito/event_bus/queue_bus.py +0 -0
  312. {janito-3.5.1 → janito-3.6.1}/janito/exceptions.py +0 -0
  313. {janito-3.5.1 → janito-3.6.1}/janito/formatting.py +0 -0
  314. {janito-3.5.1 → janito-3.6.1}/janito/formatting_token.py +0 -0
  315. {janito-3.5.1 → janito-3.6.1}/janito/gitignore_utils.py +0 -0
  316. {janito-3.5.1 → janito-3.6.1}/janito/hello.txt +0 -0
  317. {janito-3.5.1 → janito-3.6.1}/janito/i18n/__init__.py +0 -0
  318. {janito-3.5.1 → janito-3.6.1}/janito/i18n/it.py +0 -0
  319. {janito-3.5.1 → janito-3.6.1}/janito/i18n/messages.py +0 -0
  320. {janito-3.5.1 → janito-3.6.1}/janito/i18n/pt.py +0 -0
  321. {janito-3.5.1 → janito-3.6.1}/janito/llm/README.md +0 -0
  322. {janito-3.5.1 → janito-3.6.1}/janito/llm/__init__.py +0 -0
  323. {janito-3.5.1 → janito-3.6.1}/janito/llm/agent.py +0 -0
  324. {janito-3.5.1 → janito-3.6.1}/janito/llm/auth.py +0 -0
  325. {janito-3.5.1 → janito-3.6.1}/janito/llm/auth_utils.py +0 -0
  326. {janito-3.5.1 → janito-3.6.1}/janito/llm/cancellation_manager.py +0 -0
  327. {janito-3.5.1 → janito-3.6.1}/janito/llm/driver.py +0 -0
  328. {janito-3.5.1 → janito-3.6.1}/janito/llm/driver_config.py +0 -0
  329. {janito-3.5.1 → janito-3.6.1}/janito/llm/driver_config_builder.py +0 -0
  330. {janito-3.5.1 → janito-3.6.1}/janito/llm/driver_input.py +0 -0
  331. {janito-3.5.1 → janito-3.6.1}/janito/llm/enter_cancellation.py +0 -0
  332. {janito-3.5.1 → janito-3.6.1}/janito/llm/message_parts.py +0 -0
  333. {janito-3.5.1 → janito-3.6.1}/janito/llm/model.py +0 -0
  334. {janito-3.5.1 → janito-3.6.1}/janito/llm/provider.py +0 -0
  335. {janito-3.5.1 → janito-3.6.1}/janito/mkdocs.yml +0 -0
  336. {janito-3.5.1 → janito-3.6.1}/janito/perf_singleton.py +0 -0
  337. {janito-3.5.1 → janito-3.6.1}/janito/performance_collector.py +0 -0
  338. {janito-3.5.1 → janito-3.6.1}/janito/platform_discovery.py +0 -0
  339. {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/__init__.py +0 -0
  340. {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/base.py +0 -0
  341. {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/core_loader.py +0 -0
  342. {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/core_loader_fixed.py +0 -0
  343. {janito-3.5.1 → janito-3.6.1}/janito/plugins/__init__.py +0 -0
  344. {janito-3.5.1 → janito-3.6.1}/janito/plugins/auto_loader.py +0 -0
  345. {janito-3.5.1 → janito-3.6.1}/janito/plugins/auto_loader_fixed.py +0 -0
  346. {janito-3.5.1 → janito-3.6.1}/janito/plugins/builtin.py +0 -0
  347. {janito-3.5.1 → janito-3.6.1}/janito/plugins/config.py +0 -0
  348. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/__init__.py +0 -0
  349. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/__init__.py +0 -0
  350. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
  351. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
  352. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
  353. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
  354. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
  355. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
  356. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
  357. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
  358. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
  359. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
  360. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
  361. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/__init__.py +0 -0
  362. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/copy_file.py +0 -0
  363. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/create_directory.py +0 -0
  364. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/create_file.py +0 -0
  365. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
  366. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/find_files.py +0 -0
  367. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/move_file.py +0 -0
  368. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/read_files.py +0 -0
  369. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/remove_directory.py +0 -0
  370. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/remove_file.py +0 -0
  371. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
  372. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
  373. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
  374. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
  375. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
  376. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
  377. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
  378. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
  379. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
  380. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
  381. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
  382. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
  383. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
  384. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/view_file.py +0 -0
  385. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/__init__.py +0 -0
  386. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/plugin.py +0 -0
  387. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/tools/__init__.py +0 -0
  388. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/tools/show_image.py +0 -0
  389. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
  390. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/system/__init__.py +0 -0
  391. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/system/tools/run_bash_command.py +0 -0
  392. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/system/tools/run_powershell_command.py +0 -0
  393. {janito-3.5.1 → janito-3.6.1}/janito/plugins/core_adapter.py +0 -0
  394. {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/__init__.py +0 -0
  395. {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/pythondev/__init__.py +0 -0
  396. {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/visualization/__init__.py +0 -0
  397. {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/visualization/tools/read_chart.py +0 -0
  398. {janito-3.5.1 → janito-3.6.1}/janito/plugins/discovery.py +0 -0
  399. {janito-3.5.1 → janito-3.6.1}/janito/plugins/discovery_core.py +0 -0
  400. {janito-3.5.1 → janito-3.6.1}/janito/plugins/example_plugin.py +0 -0
  401. {janito-3.5.1 → janito-3.6.1}/janito/plugins/manager.py +0 -0
  402. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/decorators.py +0 -0
  403. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/__init__.py +0 -0
  404. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/java_outline.py +0 -0
  405. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/markdown_outline.py +0 -0
  406. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/python_outline.py +0 -0
  407. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/search_outline.py +0 -0
  408. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/__init__.py +0 -0
  409. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/match_lines.py +0 -0
  410. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/pattern_utils.py +0 -0
  411. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/traverse_directory.py +0 -0
  412. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/__init__.py +0 -0
  413. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/css_validator.py +0 -0
  414. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/html_validator.py +0 -0
  415. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/jinja2_validator.py +0 -0
  416. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/js_validator.py +0 -0
  417. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/json_validator.py +0 -0
  418. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/markdown_validator.py +0 -0
  419. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/ps1_validator.py +0 -0
  420. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/python_validator.py +0 -0
  421. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/xml_validator.py +0 -0
  422. {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/yaml_validator.py +0 -0
  423. {janito-3.5.1 → janito-3.6.1}/janito/plugins/ui/__init__.py +0 -0
  424. {janito-3.5.1 → janito-3.6.1}/janito/plugins/ui/userinterface/__init__.py +0 -0
  425. {janito-3.5.1 → janito-3.6.1}/janito/plugins/ui/userinterface/tools/ask_user.py +0 -0
  426. {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/__init__.py +0 -0
  427. {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
  428. {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/webtools/tools/open_url.py +0 -0
  429. {janito-3.5.1 → janito-3.6.1}/janito/provider_config.py +0 -0
  430. {janito-3.5.1 → janito-3.6.1}/janito/provider_registry.py +0 -0
  431. {janito-3.5.1 → janito-3.6.1}/janito/providers/__init__.py +0 -0
  432. {janito-3.5.1 → janito-3.6.1}/janito/providers/alibaba/__init__.py +0 -0
  433. {janito-3.5.1 → janito-3.6.1}/janito/providers/alibaba/model_info.py +0 -0
  434. {janito-3.5.1 → janito-3.6.1}/janito/providers/alibaba/provider.py +0 -0
  435. {janito-3.5.1 → janito-3.6.1}/janito/providers/anthropic/model_info.py +0 -0
  436. {janito-3.5.1 → janito-3.6.1}/janito/providers/anthropic/provider.py +0 -0
  437. {janito-3.5.1 → janito-3.6.1}/janito/providers/azure_openai/model_info.py +0 -0
  438. {janito-3.5.1 → janito-3.6.1}/janito/providers/azure_openai/provider.py +0 -0
  439. {janito-3.5.1 → janito-3.6.1}/janito/providers/cerebras/__init__.py +0 -0
  440. {janito-3.5.1 → janito-3.6.1}/janito/providers/cerebras/model_info.py +0 -0
  441. {janito-3.5.1 → janito-3.6.1}/janito/providers/cerebras/provider.py +0 -0
  442. {janito-3.5.1 → janito-3.6.1}/janito/providers/dashscope.bak.zip +0 -0
  443. {janito-3.5.1 → janito-3.6.1}/janito/providers/deepseek/__init__.py +0 -0
  444. {janito-3.5.1 → janito-3.6.1}/janito/providers/deepseek/model_info.py +0 -0
  445. {janito-3.5.1 → janito-3.6.1}/janito/providers/deepseek/provider.py +0 -0
  446. {janito-3.5.1 → janito-3.6.1}/janito/providers/google/__init__.py +0 -0
  447. {janito-3.5.1 → janito-3.6.1}/janito/providers/google/model_info.py +0 -0
  448. {janito-3.5.1 → janito-3.6.1}/janito/providers/google/provider.py +0 -0
  449. {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/README.md +0 -0
  450. {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/__init__.py +0 -0
  451. {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/model_info.py +0 -0
  452. {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/provider.py +0 -0
  453. {janito-3.5.1 → janito-3.6.1}/janito/providers/mistral/__init__.py +0 -0
  454. {janito-3.5.1 → janito-3.6.1}/janito/providers/mistral/model_info.py +0 -0
  455. {janito-3.5.1 → janito-3.6.1}/janito/providers/mistral/provider.py +0 -0
  456. {janito-3.5.1 → janito-3.6.1}/janito/providers/moonshot/__init__.py +0 -0
  457. {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/__init__.py +0 -0
  458. {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/model_info.py +0 -0
  459. {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/provider.py +0 -0
  460. {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/schema_generator.py +0 -0
  461. {janito-3.5.1 → janito-3.6.1}/janito/providers/registry.py +0 -0
  462. {janito-3.5.1 → janito-3.6.1}/janito/providers/together/__init__.py +0 -0
  463. {janito-3.5.1 → janito-3.6.1}/janito/providers/together/model_info.py +0 -0
  464. {janito-3.5.1 → janito-3.6.1}/janito/providers/together/provider.py +0 -0
  465. {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/__init__.py +0 -0
  466. {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/model_info.py +0 -0
  467. {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/provider.py +0 -0
  468. {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/schema_generator.py +0 -0
  469. {janito-3.5.1 → janito-3.6.1}/janito/regions/__init__.py +0 -0
  470. {janito-3.5.1 → janito-3.6.1}/janito/regions/cli.py +0 -0
  471. {janito-3.5.1 → janito-3.6.1}/janito/regions/geo_utils.py +0 -0
  472. {janito-3.5.1 → janito-3.6.1}/janito/regions/provider_regions.py +0 -0
  473. {janito-3.5.1 → janito-3.6.1}/janito/report_events.py +0 -0
  474. {janito-3.5.1 → janito-3.6.1}/janito/shell.bak.zip +0 -0
  475. {janito-3.5.1 → janito-3.6.1}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
  476. {janito-3.5.1 → janito-3.6.1}/janito/tools/README.md +0 -0
  477. {janito-3.5.1 → janito-3.6.1}/janito/tools/adapters/__init__.py +0 -0
  478. {janito-3.5.1 → janito-3.6.1}/janito/tools/adapters/local/__init__.py +0 -0
  479. {janito-3.5.1 → janito-3.6.1}/janito/tools/adapters/local/adapter.py +0 -0
  480. {janito-3.5.1 → janito-3.6.1}/janito/tools/base.py +0 -0
  481. {janito-3.5.1 → janito-3.6.1}/janito/tools/cli_initializer.py +0 -0
  482. {janito-3.5.1 → janito-3.6.1}/janito/tools/disabled_tools.py +0 -0
  483. {janito-3.5.1 → janito-3.6.1}/janito/tools/initialize.py +0 -0
  484. {janito-3.5.1 → janito-3.6.1}/janito/tools/inspect_registry.py +0 -0
  485. {janito-3.5.1 → janito-3.6.1}/janito/tools/loop_protection.py +0 -0
  486. {janito-3.5.1 → janito-3.6.1}/janito/tools/loop_protection_decorator.py +0 -0
  487. {janito-3.5.1 → janito-3.6.1}/janito/tools/outline_file.bak.zip +0 -0
  488. {janito-3.5.1 → janito-3.6.1}/janito/tools/path_security.py +0 -0
  489. {janito-3.5.1 → janito-3.6.1}/janito/tools/path_utils.py +0 -0
  490. {janito-3.5.1 → janito-3.6.1}/janito/tools/permissions.py +0 -0
  491. {janito-3.5.1 → janito-3.6.1}/janito/tools/permissions_parse.py +0 -0
  492. {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_base.py +0 -0
  493. {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_events.py +0 -0
  494. {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_run_exception.py +0 -0
  495. {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_use_tracker.py +0 -0
  496. {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_utils.py +0 -0
  497. {janito-3.5.1 → janito-3.6.1}/janito/tools/tools_adapter.py +0 -0
  498. {janito-3.5.1 → janito-3.6.1}/janito/tools/tools_schema.py +0 -0
  499. {janito-3.5.1 → janito-3.6.1}/janito/tools/url_whitelist.py +0 -0
  500. {janito-3.5.1 → janito-3.6.1}/janito/utils.py +0 -0
  501. {janito-3.5.1 → janito-3.6.1}/janito.egg-info/dependency_links.txt +0 -0
  502. {janito-3.5.1 → janito-3.6.1}/janito.egg-info/entry_points.txt +0 -0
  503. {janito-3.5.1 → janito-3.6.1}/janito.egg-info/top_level.txt +0 -0
  504. {janito-3.5.1 → janito-3.6.1}/market_prompt_fix.py +0 -0
  505. {janito-3.5.1 → janito-3.6.1}/market_test.py +0 -0
  506. {janito-3.5.1 → janito-3.6.1}/mkdocs.yml +0 -0
  507. {janito-3.5.1 → janito-3.6.1}/mkdocs_hooks.py +0 -0
  508. {janito-3.5.1 → janito-3.6.1}/pytest.ini +0 -0
  509. {janito-3.5.1 → janito-3.6.1}/requirements-dev.txt +0 -0
  510. {janito-3.5.1 → janito-3.6.1}/requirements.txt +0 -0
  511. {janito-3.5.1 → janito-3.6.1}/setup.cfg +0 -0
  512. {janito-3.5.1 → janito-3.6.1}/test.txt +0 -0
  513. {janito-3.5.1 → janito-3.6.1}/test_example.py +0 -0
  514. {janito-3.5.1 → janito-3.6.1}/test_http_errors.py +0 -0
  515. {janito-3.5.1 → janito-3.6.1}/test_http_errors_direct.py +0 -0
  516. {janito-3.5.1 → janito-3.6.1}/test_key_field_behavior.py +0 -0
  517. {janito-3.5.1 → janito-3.6.1}/test_key_field_protection.py +0 -0
  518. {janito-3.5.1 → janito-3.6.1}/test_loop_protection_return.py +0 -0
  519. {janito-3.5.1 → janito-3.6.1}/test_market_analyst.py +0 -0
  520. {janito-3.5.1 → janito-3.6.1}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
  521. {janito-3.5.1 → janito-3.6.1}/tests/adapters/local/test_read_files.py +0 -0
  522. {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_models.py +0 -0
  523. {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_providers.py +0 -0
  524. {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_providers_alibaba.py +0 -0
  525. {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_providers_moonshot.py +0 -0
  526. {janito-3.5.1 → janito-3.6.1}/tests/test_cli_version.py +0 -0
  527. {janito-3.5.1 → janito-3.6.1}/tests/test_disabled_tools.py +0 -0
  528. {janito-3.5.1 → janito-3.6.1}/tests/test_plugin_system.py +0 -0
  529. {janito-3.5.1 → janito-3.6.1}/tests/test_provider_alibaba.py +0 -0
  530. {janito-3.5.1 → janito-3.6.1}/tests/test_provider_cerebras.py +0 -0
  531. {janito-3.5.1 → janito-3.6.1}/tests/test_provider_moonshot.py +0 -0
  532. {janito-3.5.1 → janito-3.6.1}/tools/release.py +0 -0
  533. {janito-3.5.1 → janito-3.6.1}/tox.ini +0 -0
@@ -0,0 +1,39 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [3.6.0] - 2025-09-04
9
+
10
+ ### Added
11
+
12
+ - **Blocked Sites Functionality**: Added comprehensive blocked sites management to prevent access to known problematic sites
13
+
14
+ - Created `BlockedSitesManager` class to handle blocked sites checking
15
+ - Added `janito/data/blocked.txt` with list of sites requiring authentication/paywalls
16
+ - Integrated blocked sites check into `fetch_url` tool
17
+ - Sites blocked include: Reuters, WSJ, NYT, academic databases, social media platforms, streaming services, and other paywall-protected content
18
+
19
+ ### Security
20
+
21
+ - Enhanced URL filtering with dual-layer protection (blocked sites + whitelist)
22
+ - Added domain-based blocking for subdomains of blocked sites
23
+ - Improved error messaging for blocked sites
24
+
25
+ ### Technical
26
+
27
+ - Added package data inclusion for `blocked.txt` in distribution
28
+ - Created test script `test_blocked_sites.py` for verification
29
+ - Updated fetch_url tool to check blocked sites before whitelist
30
+
31
+ ## [3.5.1] - 2024-08-29
32
+
33
+ ### Fixed
34
+ - Bug fixes and performance improvements
35
+
36
+ ## [3.5.0] - 2024-08-29
37
+
38
+ ### Added
39
+ - Initial release with core functionality
@@ -0,0 +1,134 @@
1
+ # Everlyn AI PowerShell Integration
2
+
3
+ This repository contains PowerShell modules and tools for integrating with Everlyn AI - the fastest AI video generation platform in the world.
4
+
5
+ ## Features
6
+
7
+ - **Fast Video Generation**: Generate AI videos in 15 seconds vs 5 minutes industry standard
8
+ - **Cost Effective**: 25x lower cost than competitors
9
+ - **Multiple Input Types**: Text-to-video and image-to-video generation
10
+ - **PowerShell Integration**: Native PowerShell cmdlets for easy automation
11
+ - **Credit Management**: Track and manage your API credits
12
+
13
+ ## Installation
14
+
15
+ 1. Download the `EverlynAI.psm1` and `EverlynAI.psd1` files
16
+ 2. Place them in your PowerShell modules directory (e.g., `Documents\WindowsPowerShell\Modules\EverlynAI`)
17
+ 3. Import the module: `Import-Module EverlynAI`
18
+
19
+ ## Quick Start
20
+
21
+ ```powershell
22
+ # Connect to Everlyn AI
23
+ Connect-EverlynAI -ApiKey "your-api-key-here"
24
+
25
+ # Check your credits
26
+ Get-EverlynAICredits
27
+
28
+ # Generate a video from text
29
+ New-EverlynAIVideo -Prompt "A cat playing in a garden" -Duration 5
30
+
31
+ # Generate a video from an image
32
+ New-EverlynAIVideo -ImagePath "C:\images\cat.jpg" -Prompt "Make the cat dance" -Duration 10
33
+ ```
34
+
35
+ ## Available Commands
36
+
37
+ ### Connect-EverlynAI
38
+ Establishes connection to the Everlyn AI API.
39
+
40
+ ```powershell
41
+ Connect-EverlynAI -ApiKey "your-api-key"
42
+ ```
43
+
44
+ ### Get-EverlynAICredits
45
+ Retrieves your current credit balance.
46
+
47
+ ```powershell
48
+ Get-EverlynAICredits
49
+ ```
50
+
51
+ ### New-EverlynAIVideo
52
+ Creates a new AI-generated video.
53
+
54
+ ```powershell
55
+ # Text to video
56
+ New-EverlynAIVideo -Prompt "Your prompt here" -Duration 5
57
+
58
+ # Image to video
59
+ New-EverlynAIVideo -ImagePath "path/to/image.jpg" -Duration 10
60
+ ```
61
+
62
+ ## API Documentation
63
+
64
+ ### Base URL
65
+ ```
66
+ https://api.everlyn.ai
67
+ ```
68
+
69
+ ### Authentication
70
+ All API requests require an API key passed in the Authorization header:
71
+ ```
72
+ Authorization: Bearer your-api-key
73
+ ```
74
+
75
+ ### Endpoints
76
+
77
+ #### GET /v1/credits
78
+ Retrieve your current credit balance.
79
+
80
+ **Response:**
81
+ ```json
82
+ {
83
+ "credits": 100,
84
+ "used": 25,
85
+ "remaining": 75
86
+ }
87
+ ```
88
+
89
+ #### POST /v1/videos
90
+ Create a new video generation request.
91
+
92
+ **Request Body:**
93
+ ```json
94
+ {
95
+ "type": "text_to_video",
96
+ "prompt": "A cat playing in a garden",
97
+ "duration": 5,
98
+ "model": "default"
99
+ }
100
+ ```
101
+
102
+ **Response:**
103
+ ```json
104
+ {
105
+ "id": "video-12345",
106
+ "status": "processing",
107
+ "estimated_time": 15
108
+ }
109
+ ```
110
+
111
+ ## Pricing
112
+
113
+ Everlyn AI offers competitive pricing:
114
+
115
+ - **Starter**: $9.99/month - 80 credits (~40 videos)
116
+ - **Standard**: $34.99/month - 350 credits (~175 videos)
117
+ - **Pro**: $94.99/month - 1000 credits (~500 videos)
118
+
119
+ ## Requirements
120
+
121
+ - PowerShell 5.1 or later
122
+ - Windows 10/11 or Windows Server 2016+
123
+ - Internet connection for API access
124
+
125
+ ## Support
126
+
127
+ For support and documentation:
128
+ - Website: https://everlyn.ai
129
+ - Discord: https://discord.com/invite/DTeDvmeMyT
130
+ - Email: support@everlyn.ai
131
+
132
+ ## License
133
+
134
+ This project is licensed under the MIT License - see the LICENSE file for details.
@@ -0,0 +1,22 @@
1
+ @{
2
+ RootModule = 'EverlynAI.psm1'
3
+ ModuleVersion = '1.0.0'
4
+ GUID = '12345678-1234-1234-1234-123456789012'
5
+ Author = 'Your Name'
6
+ CompanyName = 'Your Company'
7
+ Copyright = '(c) 2025 Your Company. All rights reserved.'
8
+ Description = 'PowerShell module for interacting with Everlyn AI API'
9
+ PowerShellVersion = '5.1'
10
+ FunctionsToExport = @('Connect-EverlynAI', 'Get-EverlynAICredits', 'New-EverlynAIVideo')
11
+ CmdletsToExport = @()
12
+ VariablesToExport = @()
13
+ AliasesToExport = @()
14
+ PrivateData = @{
15
+ PSData = @{
16
+ Tags = @('AI', 'Video', 'Image', 'Generation', 'Everlyn')
17
+ LicenseUri = ''
18
+ ProjectUri = ''
19
+ ReleaseNotes = 'Initial release of Everlyn AI PowerShell module'
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,7 @@
1
+ # Everlyn AI PowerShell Module
2
+ $Script:EverlynBaseUrl = "https://api.everlyn.ai"
3
+ $Script:ApiKey = $null
4
+ $Script:DefaultHeaders = @{"Content-Type" = "application/json"; "User-Agent" = "EverlynAI-PowerShell/1.0"}
5
+ function Connect-EverlynAI { param([Parameter(Mandatory=$true)][string]$ApiKey); $Script:ApiKey = $ApiKey; $Script:DefaultHeaders["Authorization"] = "Bearer $ApiKey"; Write-Host "Connected to Everlyn AI API" -ForegroundColor Green }
6
+ function Get-EverlynAICredits { if (-not $Script:ApiKey) { throw "Not connected to Everlyn AI. Use Connect-EverlynAI first." }; try { $response = Invoke-RestMethod -Uri "$Script:EverlynBaseUrl/v1/credits" -Headers $Script:DefaultHeaders -Method Get; return $response } catch { throw "Failed to get credits: $_" } }
7
+ function New-EverlynAIVideo { param([Parameter(Mandatory=$true)][string]$Prompt, [int]$Duration = 5); if (-not $Script:ApiKey) { throw "Not connected to Everlyn AI. Use Connect-EverlynAI first." }; Write-Host "Video generation: $Prompt (Duration: ${Duration}s)" }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: janito
3
- Version: 3.5.1
3
+ Version: 3.6.1
4
4
  Summary: A new Python package called janito.
5
5
  Author-email: João Pinto <janito@ikignosis.org>
6
6
  Project-URL: Homepage, https://github.com/ikignosis/janito
@@ -29,7 +29,6 @@ Requires-Dist: codespell==2.4.1; extra == "dev"
29
29
  Requires-Dist: black; extra == "dev"
30
30
  Requires-Dist: questionary>=2.0.1; extra == "dev"
31
31
  Requires-Dist: setuptools_scm>=8.0; extra == "dev"
32
- Provides-Extra: coder
33
32
  Dynamic: license-file
34
33
 
35
34
  # Janito CLI
@@ -46,7 +45,7 @@ pip install janito
46
45
 
47
46
  ### First-Time Setup
48
47
 
49
- 1. **Get your API key**: Sign up at [Moonshot AI](https://platform.moonshot.cn/) and get your API key
48
+ 1. **Get your API key**: Sign up at [Moonshot AI](https://platform.moonshot.ai) and get your API key
50
49
  2. **Set your API key**:
51
50
  ```bash
52
51
  janito --set-api-key YOUR_MOONSHOT_API_KEY -p moonshot
@@ -60,7 +59,7 @@ pip install janito
60
59
  janito "Create a Python script that reads a CSV file"
61
60
 
62
61
  # Using a specific Moonshot model
63
- janito -m kimi-k1-8k "Explain quantum computing"
62
+ janito -m kimi-k2-0905 "Explain quantum computing"
64
63
  ```
65
64
 
66
65
  **Other Providers**
@@ -106,16 +105,16 @@ In chat mode, you can:
106
105
  Set default provider and model:
107
106
  ```bash
108
107
  janito --set provider=moonshot
109
- janito --set model=kimi-k1-8k
108
+ janito --set model=kimi-k2-0905
110
109
  ```
111
110
 
112
111
  ## Providers
113
112
 
114
113
  ### Moonshot (Recommended)
115
114
 
116
- - **Models**: kimi-k1-8k, kimi-k1-32k, kimi-k1-128k, kimi-k2-turbo-preview
115
+ - **Models**: kimi-k2-0905, kimi-k2-turbo-preview, kimi-k2-0711-preview
117
116
  - **Strengths**: Excellent Chinese/English support, competitive pricing, fast responses
118
- - **Setup**: Get API key from [Moonshot AI Platform](https://platform.moonshot.cn/)
117
+ - **Setup**: Get API key from [Moonshot AI Platform](https://platform.moonshot.ai)
119
118
 
120
119
  ### OpenAI
121
120
 
@@ -167,7 +166,7 @@ You can also configure via environment variables:
167
166
  ```bash
168
167
  export MOONSHOT_API_KEY=your_key_here
169
168
  export JANITO_PROVIDER=moonshot
170
- export JANITO_MODEL=kimi-k1-8k
169
+ export JANITO_MODEL=kimi-k2-0905
171
170
  ```
172
171
 
173
172
  **OpenAI:**
@@ -12,7 +12,7 @@ pip install janito
12
12
 
13
13
  ### First-Time Setup
14
14
 
15
- 1. **Get your API key**: Sign up at [Moonshot AI](https://platform.moonshot.cn/) and get your API key
15
+ 1. **Get your API key**: Sign up at [Moonshot AI](https://platform.moonshot.ai) and get your API key
16
16
  2. **Set your API key**:
17
17
  ```bash
18
18
  janito --set-api-key YOUR_MOONSHOT_API_KEY -p moonshot
@@ -26,7 +26,7 @@ pip install janito
26
26
  janito "Create a Python script that reads a CSV file"
27
27
 
28
28
  # Using a specific Moonshot model
29
- janito -m kimi-k1-8k "Explain quantum computing"
29
+ janito -m kimi-k2-0905 "Explain quantum computing"
30
30
  ```
31
31
 
32
32
  **Other Providers**
@@ -72,16 +72,16 @@ In chat mode, you can:
72
72
  Set default provider and model:
73
73
  ```bash
74
74
  janito --set provider=moonshot
75
- janito --set model=kimi-k1-8k
75
+ janito --set model=kimi-k2-0905
76
76
  ```
77
77
 
78
78
  ## Providers
79
79
 
80
80
  ### Moonshot (Recommended)
81
81
 
82
- - **Models**: kimi-k1-8k, kimi-k1-32k, kimi-k1-128k, kimi-k2-turbo-preview
82
+ - **Models**: kimi-k2-0905, kimi-k2-turbo-preview, kimi-k2-0711-preview
83
83
  - **Strengths**: Excellent Chinese/English support, competitive pricing, fast responses
84
- - **Setup**: Get API key from [Moonshot AI Platform](https://platform.moonshot.cn/)
84
+ - **Setup**: Get API key from [Moonshot AI Platform](https://platform.moonshot.ai)
85
85
 
86
86
  ### OpenAI
87
87
 
@@ -133,7 +133,7 @@ You can also configure via environment variables:
133
133
  ```bash
134
134
  export MOONSHOT_API_KEY=your_key_here
135
135
  export JANITO_PROVIDER=moonshot
136
- export JANITO_MODEL=kimi-k1-8k
136
+ export JANITO_MODEL=kimi-k2-0905
137
137
  ```
138
138
 
139
139
  **OpenAI:**
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to check attribute access"""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'janito'))
7
+
8
+ import requests
9
+
10
+ def debug_attribute_access():
11
+ """Debug the attribute access issue"""
12
+
13
+ url = "https://httpbin.org/status/404"
14
+
15
+ try:
16
+ session = requests.Session()
17
+ response = session.get(url, timeout=10)
18
+ response.raise_for_status()
19
+ except requests.exceptions.HTTPError as http_err:
20
+ print(f"HTTPError: {http_err}")
21
+ print(f"http_err.response: {http_err.response}")
22
+ print(f"hasattr(http_err, 'response'): {hasattr(http_err, 'response')}")
23
+ print(f"http_err.response is None: {http_err.response is None}")
24
+
25
+ if http_err.response:
26
+ print(f"http_err.response.status_code: {http_err.response.status_code}")
27
+ print(f"hasattr(http_err.response, 'status_code'): {hasattr(http_err.response, 'status_code')}")
28
+
29
+ # Test the exact logic
30
+ status_code = http_err.response.status_code if http_err.response else None
31
+ print(f"status_code: {status_code}")
32
+
33
+ # Test alternative access
34
+ try:
35
+ status_code_alt = http_err.response.status_code
36
+ print(f"status_code_alt: {status_code_alt}")
37
+ except Exception as e:
38
+ print(f"Error accessing status_code: {e}")
39
+
40
+ if __name__ == "__main__":
41
+ debug_attribute_access()
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to check the conditions"""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'janito'))
7
+
8
+ import requests
9
+
10
+ def debug_conditions():
11
+ """Debug the conditions in fetch_url"""
12
+
13
+ # Simulate the exact scenario
14
+ class MockResponse:
15
+ def __init__(self, status_code):
16
+ self.status_code = status_code
17
+
18
+ class MockHTTPError:
19
+ def __init__(self, status_code):
20
+ self.response = MockResponse(status_code)
21
+
22
+ # Test different status codes
23
+ test_cases = [400, 401, 403, 404, 500, 503]
24
+
25
+ for status_code in test_cases:
26
+ print(f"\nTesting status code: {status_code}")
27
+
28
+ mock_error = MockHTTPError(status_code)
29
+
30
+ # Test the exact logic from fetch_url
31
+ status_code_extracted = mock_error.response.status_code if mock_error.response else None
32
+ print(f" Extracted status_code: {status_code_extracted}")
33
+ print(f" Type: {type(status_code_extracted)}")
34
+
35
+ # Test the conditions
36
+ condition1 = status_code_extracted and 400 <= status_code_extracted < 500
37
+ condition2 = status_code_extracted and 500 <= status_code_extracted < 600
38
+
39
+ print(f" 400 <= status_code < 500: {condition1}")
40
+ print(f" 500 <= status_code < 600: {condition2}")
41
+
42
+ # Test the mapping
43
+ status_descriptions = {
44
+ 400: "Bad Request",
45
+ 401: "Unauthorized",
46
+ 403: "Forbidden",
47
+ 404: "Not Found",
48
+ 405: "Method Not Allowed",
49
+ 408: "Request Timeout",
50
+ 409: "Conflict",
51
+ 410: "Gone",
52
+ 413: "Payload Too Large",
53
+ 414: "URI Too Long",
54
+ 415: "Unsupported Media Type",
55
+ 429: "Too Many Requests",
56
+ 500: "Internal Server Error",
57
+ 501: "Not Implemented",
58
+ 502: "Bad Gateway",
59
+ 503: "Service Unavailable",
60
+ 504: "Gateway Timeout",
61
+ 505: "HTTP Version Not Supported",
62
+ }
63
+
64
+ if condition1:
65
+ description = status_descriptions.get(status_code_extracted, "Client Error")
66
+ print(f" Should return: HTTP {status_code_extracted} {description}")
67
+ elif condition2:
68
+ description = status_descriptions.get(status_code_extracted, "Server Error")
69
+ print(f" Should return: HTTP {status_code_extracted} {description}")
70
+ else:
71
+ status_code_str = str(status_code_extracted) if status_code_extracted else "Error"
72
+ description = status_descriptions.get(
73
+ status_code_extracted,
74
+ (
75
+ "Server Error"
76
+ if status_code_extracted and status_code_extracted >= 500
77
+ else "Client Error"
78
+ ),
79
+ )
80
+ print(f" Should return: HTTP {status_code_str} {description}")
81
+
82
+ if __name__ == "__main__":
83
+ debug_conditions()
@@ -0,0 +1,77 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to trace fetch_url behavior with detailed logging"""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'janito'))
7
+
8
+ import requests
9
+ from janito.plugins.tools.fetch_url import FetchUrl
10
+
11
+ def debug_detailed():
12
+ """Debug the fetch_url behavior with detailed logging"""
13
+
14
+ url = "https://httpbin.org/status/404"
15
+
16
+ # Let's manually trace the code flow
17
+ print("Testing URL:", url)
18
+
19
+ try:
20
+ session = requests.Session()
21
+ response = session.get(url, timeout=10)
22
+ print(f"Response status: {response.status_code}")
23
+ response.raise_for_status()
24
+ except requests.exceptions.HTTPError as http_err:
25
+ status_code = http_err.response.status_code if http_err.response else None
26
+ print(f"Caught HTTPError with status: {status_code}")
27
+
28
+ # Simulate the exact code from fetch_url
29
+ status_descriptions = {
30
+ 400: "Bad Request",
31
+ 401: "Unauthorized",
32
+ 403: "Forbidden",
33
+ 404: "Not Found",
34
+ 405: "Method Not Allowed",
35
+ 408: "Request Timeout",
36
+ 409: "Conflict",
37
+ 410: "Gone",
38
+ 413: "Payload Too Large",
39
+ 414: "URI Too Long",
40
+ 415: "Unsupported Media Type",
41
+ 429: "Too Many Requests",
42
+ 500: "Internal Server Error",
43
+ 501: "Not Implemented",
44
+ 502: "Bad Gateway",
45
+ 503: "Service Unavailable",
46
+ 504: "Gateway Timeout",
47
+ 505: "HTTP Version Not Supported",
48
+ }
49
+
50
+ if status_code and 400 <= status_code < 500:
51
+ description = status_descriptions.get(status_code, "Client Error")
52
+ error_message = f"HTTP {status_code} {description}"
53
+ print(f"Should return: {error_message}")
54
+ elif status_code and 500 <= status_code < 600:
55
+ description = status_descriptions.get(status_code, "Server Error")
56
+ error_message = f"HTTP {status_code} {description}"
57
+ print(f"Should return: {error_message}")
58
+ else:
59
+ status_code_str = str(status_code) if status_code else "Error"
60
+ description = status_descriptions.get(
61
+ status_code,
62
+ (
63
+ "Server Error"
64
+ if status_code and status_code >= 500
65
+ else "Client Error"
66
+ ),
67
+ )
68
+ error_message = f"HTTP {status_code_str} {description}"
69
+ print(f"Should return: {error_message}")
70
+
71
+ # Now test the actual tool
72
+ tool = FetchUrl()
73
+ result = tool.run(url=url)
74
+ print(f"Actual tool result: {result}")
75
+
76
+ if __name__ == "__main__":
77
+ debug_detailed()
@@ -0,0 +1,59 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to trace the exact logic"""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'janito'))
7
+
8
+ import requests
9
+
10
+ def debug_exact_logic():
11
+ """Debug the exact logic in fetch_url"""
12
+
13
+ url = "https://httpbin.org/status/404"
14
+
15
+ try:
16
+ session = requests.Session()
17
+ response = session.get(url, timeout=10)
18
+ response.raise_for_status()
19
+ except requests.exceptions.HTTPError as http_err:
20
+ print(f"HTTPError: {http_err}")
21
+
22
+ # Test the exact line from fetch_url
23
+ status_code = http_err.response.status_code if http_err.response else None
24
+ print(f"status_code = {status_code}")
25
+
26
+ # Test the condition
27
+ print(f"400 <= status_code < 500: {400 <= status_code < 500 if status_code else False}")
28
+
29
+ # Test the mapping
30
+ status_descriptions = {
31
+ 400: "Bad Request",
32
+ 401: "Unauthorized",
33
+ 403: "Forbidden",
34
+ 404: "Not Found",
35
+ 405: "Method Not Allowed",
36
+ 408: "Request Timeout",
37
+ 409: "Conflict",
38
+ 410: "Gone",
39
+ 413: "Payload Too Large",
40
+ 414: "URI Too Long",
41
+ 415: "Unsupported Media Type",
42
+ 429: "Too Many Requests",
43
+ 500: "Internal Server Error",
44
+ 501: "Not Implemented",
45
+ 502: "Bad Gateway",
46
+ 503: "Service Unavailable",
47
+ 504: "Gateway Timeout",
48
+ 505: "HTTP Version Not Supported",
49
+ }
50
+
51
+ description = status_descriptions.get(status_code, "Client Error")
52
+ print(f"description = {description}")
53
+
54
+ # Test the final message
55
+ error_message = f"HTTP {status_code} {description}"
56
+ print(f"error_message = {error_message}")
57
+
58
+ if __name__ == "__main__":
59
+ debug_exact_logic()
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to trace fetch_url behavior"""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'janito'))
7
+
8
+ import requests
9
+ from janito.plugins.tools.fetch_url import FetchUrl
10
+
11
+ def debug_fetch_url():
12
+ """Debug the fetch_url behavior step by step"""
13
+
14
+ url = "https://httpbin.org/status/404"
15
+
16
+ try:
17
+ # Test direct requests behavior
18
+ session = requests.Session()
19
+ response = session.get(url, timeout=10)
20
+ print(f"Direct request status: {response.status_code}")
21
+ response.raise_for_status()
22
+ except requests.exceptions.HTTPError as http_err:
23
+ print(f"HTTPError caught: {http_err}")
24
+ print(f"Response status: {http_err.response.status_code if http_err.response else 'None'}")
25
+ print(f"Response: {http_err.response}")
26
+
27
+ # Test with our tool
28
+ tool = FetchUrl()
29
+ result = tool.run(url=url)
30
+ print(f"Tool result: {result}")
31
+
32
+ if __name__ == "__main__":
33
+ debug_fetch_url()
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env python3
2
+ """Debug script to trace fetch_url behavior with different URLs"""
3
+
4
+ import sys
5
+ import os
6
+ sys.path.insert(0, os.path.join(os.path.dirname(__file__), 'janito'))
7
+
8
+ import requests
9
+ from janito.plugins.tools.fetch_url import FetchUrl
10
+
11
+ def debug_fetch_url():
12
+ """Debug the fetch_url behavior step by step"""
13
+
14
+ urls = [
15
+ "https://httpbin.org/status/404",
16
+ "https://httpstat.us/404",
17
+ "https://example.com/nonexistent"
18
+ ]
19
+
20
+ for url in urls:
21
+ print(f"\nTesting URL: {url}")
22
+ try:
23
+ # Test direct requests behavior
24
+ session = requests.Session()
25
+ response = session.get(url, timeout=10)
26
+ print(f" Direct request status: {response.status_code}")
27
+ response.raise_for_status()
28
+ except requests.exceptions.HTTPError as http_err:
29
+ print(f" HTTPError caught: {http_err}")
30
+ print(f" Response status: {http_err.response.status_code if http_err.response else 'None'}")
31
+ except Exception as e:
32
+ print(f" Other error: {e}")
33
+
34
+ # Test with our tool
35
+ tool = FetchUrl()
36
+ result = tool.run(url=url)
37
+ print(f" Tool result: {result}")
38
+
39
+ if __name__ == "__main__":
40
+ debug_fetch_url()