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.
- janito-3.6.1/CHANGELOG.md +39 -0
- janito-3.6.1/EVERLYN_README.md +134 -0
- janito-3.6.1/EverlynAI.psd1 +22 -0
- janito-3.6.1/EverlynAI.psm1 +7 -0
- {janito-3.5.1/janito.egg-info → janito-3.6.1}/PKG-INFO +7 -8
- {janito-3.5.1 → janito-3.6.1}/README.md +6 -6
- janito-3.6.1/debug_attribute_access.py +41 -0
- janito-3.6.1/debug_conditions.py +83 -0
- janito-3.6.1/debug_detailed.py +77 -0
- janito-3.6.1/debug_exact_logic.py +59 -0
- janito-3.6.1/debug_fetch_url.py +33 -0
- janito-3.6.1/debug_fetch_url2.py +40 -0
- janito-3.6.1/debug_fetch_url3.py +55 -0
- janito-3.6.1/debug_real_status.py +57 -0
- janito-3.6.1/debug_status_code.py +36 -0
- {janito-3.5.1 → janito-3.6.1}/docs/CHANGELOG.md +10 -0
- {janito-3.5.1 → janito-3.6.1}/docs/moonshot-setup.md +5 -6
- {janito-3.5.1 → janito-3.6.1}/docs/supported-providers-models.md +2 -1
- janito-3.6.1/everlyn.md +82 -0
- janito-3.6.1/everlyn_homepage.html +1 -0
- {janito-3.5.1 → janito-3.6.1}/janito/README.md +4 -4
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_tools.py +6 -1
- {janito-3.5.1 → janito-3.6.1}/janito/cli/main_cli.py +1 -1
- {janito-3.5.1 → janito-3.6.1}/janito/cli/rich_terminal_reporter.py +2 -2
- janito-3.6.1/janito/data/blocked.txt +96 -0
- {janito-3.5.1 → janito-3.6.1}/janito/docs/GETTING_STARTED.md +8 -9
- janito-3.6.1/janito/plugins/tools/__init__.py +39 -0
- janito-3.6.1/janito/plugins/tools/core/__init__.py +65 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/ask_user.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/copy_file.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/create_directory.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/create_file.py +2 -2
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/delete_text_in_file.py +2 -2
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/fetch_url.py +18 -21
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/find_files.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/core.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/move_file.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/open_html_in_browser.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/open_url.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/python_code_run.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/python_command_run.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/python_file_run.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/read_chart.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/read_files.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/remove_directory.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/remove_file.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/replace_text_in_file.py +2 -2
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/run_bash_command.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/run_powershell_command.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/core.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/show_image.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/show_image_grid.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/core.py +1 -1
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/view_file.py +1 -1
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/webtools/__init__.py +1 -11
- {janito-3.5.1 → janito-3.6.1}/janito/providers/moonshot/model_info.py +15 -4
- {janito-3.5.1 → janito-3.6.1}/janito/providers/moonshot/provider.py +1 -1
- {janito-3.5.1 → janito-3.6.1}/janito/tools/__init__.py +14 -4
- janito-3.6.1/janito/tools/adapters/local/copy_file.py +0 -0
- janito-3.6.1/janito/tools/adapters/local/create_file.py +0 -0
- janito-3.6.1/janito/tools/adapters/local/move_file.py +0 -0
- janito-3.6.1/janito/tools/adapters/local/remove_file.py +0 -0
- janito-3.6.1/janito/tools/adapters/local/view_file.py +0 -0
- janito-3.6.1/janito/tools/blocked_sites.py +74 -0
- {janito-3.5.1 → janito-3.6.1/janito.egg-info}/PKG-INFO +7 -8
- {janito-3.5.1 → janito-3.6.1}/janito.egg-info/SOURCES.txt +78 -49
- {janito-3.5.1 → janito-3.6.1}/janito.egg-info/requires.txt +0 -2
- {janito-3.5.1 → janito-3.6.1}/pyproject.toml +2 -2
- janito-3.6.1/test_404.py +16 -0
- janito-3.6.1/test_actual_404.py +27 -0
- janito-3.6.1/test_blocked_sites.py +32 -0
- janito-3.6.1/test_fixed_404.py +27 -0
- janito-3.6.1/test_fixed_404_local.py +37 -0
- janito-3.6.1/test_multiple_status_codes.py +46 -0
- janito-3.6.1/test_real_404.py +19 -0
- janito-3.6.1/test_status_codes.py +50 -0
- janito-3.5.1/janito/plugins/tools/__init__.py +0 -10
- janito-3.5.1/janito/plugins/tools/core_tools_plugin.py +0 -87
- janito-3.5.1/janito/plugins/web/webtools/tools/fetch_url.py +0 -458
- {janito-3.5.1 → janito-3.6.1}/.codespellrc +0 -0
- {janito-3.5.1 → janito-3.6.1}/.gitattributes +0 -0
- {janito-3.5.1 → janito-3.6.1}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.5.1 → janito-3.6.1}/.gitignore +0 -0
- {janito-3.5.1 → janito-3.6.1}/.pre-commit-config.yaml +0 -0
- {janito-3.5.1 → janito-3.6.1}/.secrets.baseline +0 -0
- {janito-3.5.1 → janito-3.6.1}/.vscode/settings.json +0 -0
- {janito-3.5.1 → janito-3.6.1}/ANNOUNCEMENT_v3.1.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/ANNOUNCEMENT_v3.5.1.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/LICENSE +0 -0
- {janito-3.5.1 → janito-3.6.1}/MARKET_ANALYST_README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/README-dev.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/RELEASE_COMPARISON.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/UPDATING_DOCS.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/adding_mcp.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/CHANGELOG_3.0.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/CNAME +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/DIV.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/Interfaces.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/PROFILES.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/about/costs.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/about/vs-webchats.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/about/why.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/alibaba-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/alternatives.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/assets/images/social-preview.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/cerebras-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_3.1.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_3.5.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/CHANGELOG_3.5.1.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/concepts/analysis-style.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/concepts/index.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/concepts/language-model-clients.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/concepts/prompt-design-style.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/deepseek-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/driver-flow.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/driver-request-cancellation.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/drivers/events.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/drivers.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/event-bus.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/configuration.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/developing.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/disabled-tools.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/installation.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/market-data-sources.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/profiles.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/prompting/README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/read-chart-examples.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/security-commands.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/terminal-shell.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/tools-developer-guide.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/url-whitelist.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/using.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/guides/using_tools.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/ibm-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/index.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/llm-drivers.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/meta/developer-toolchain.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/meta/quality-checks.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/mistral-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/openai-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/overrides/main.html +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/overrides/partials/social.html +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/api-reference.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/architecture.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/filemanager.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/configuration.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/examples/basic.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/plugin-development.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/publishing.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/plugins/testing.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/provider-platform-access.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/public-sources.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/reference/api.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/reference/azure-openai.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/reference/cli-options.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/reference/message-handler-model.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/security.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/together-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/tools/search-text.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/tools/show-image-grid.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/tools/show-image.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/tools-index.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/tools-natural-results.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/tools-precision.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/docs/z-ai-setup.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/examples/loop_protection_example.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/examples/loop_protection_tool_example.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/get_nasdaq_top.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/ibm-logo.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/init_janito_tools.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/__main__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/_version.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/agent/setup_agent.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {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
- {janito-3.5.1 → janito-3.6.1}/janito/cli/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/session.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/check_tools.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_plugins.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/console.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/event_logger.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/getters.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/model_guesser.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/runner.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/setters.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/core/unsetters.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/main.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/prompt_core.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/prompt_handler.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/prompt_setup.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/cli/verbose_output.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/config_manager.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/conversation_history.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/dir_walk_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/driver_events.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/openai/README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/openai/driver.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/drivers/zai/driver.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/event_bus/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/event_bus/bus.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/event_bus/event.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/event_bus/handler.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/exceptions.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/formatting.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/formatting_token.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/gitignore_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/hello.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/i18n/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/i18n/it.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/i18n/messages.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/i18n/pt.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/agent.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/auth.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/auth_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/cancellation_manager.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/driver.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/driver_config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/driver_input.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/enter_cancellation.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/message_parts.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/model.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/llm/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/mkdocs.yml +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/perf_singleton.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/performance_collector.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/platform_discovery.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/base.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/core_loader.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugin_system/core_loader_fixed.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/auto_loader.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/auto_loader_fixed.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/builtin.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/copy_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/create_directory.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/create_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/find_files.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/move_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/read_files.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/remove_directory.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/remove_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/filemanager/tools/view_file.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/plugin.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/tools/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/tools/show_image.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/system/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/system/tools/run_bash_command.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core/system/tools/run_powershell_command.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/core_adapter.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/pythondev/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/visualization/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/dev/visualization/tools/read_chart.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/discovery.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/discovery_core.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/example_plugin.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/manager.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/decorators.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/__init__.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/java_outline.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/markdown_outline.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/python_outline.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/get_file_outline/search_outline.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/__init__.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/match_lines.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/pattern_utils.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/search_text/traverse_directory.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/__init__.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/css_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/html_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/js_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/json_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/python_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.5.1/janito/plugins/tools → janito-3.6.1/janito/plugins/tools/core}/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/ui/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/plugins/web/webtools/tools/open_url.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/provider_config.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/provider_registry.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/alibaba/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/alibaba/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/alibaba/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/google/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/google/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/google/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/ibm/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/mistral/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/registry.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/together/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/together/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/together/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/model_info.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/provider.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/regions/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/regions/cli.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/regions/geo_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/regions/provider_regions.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/report_events.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/shell.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/README.md +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/adapters/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/adapters/local/__init__.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/base.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/cli_initializer.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/disabled_tools.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/initialize.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/inspect_registry.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/loop_protection.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/path_security.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/path_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/permissions.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/permissions_parse.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_base.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_events.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tool_utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tools_adapter.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/tools_schema.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/tools/url_whitelist.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito/utils.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/janito.egg-info/top_level.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/market_prompt_fix.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/market_test.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/mkdocs.yml +0 -0
- {janito-3.5.1 → janito-3.6.1}/mkdocs_hooks.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/pytest.ini +0 -0
- {janito-3.5.1 → janito-3.6.1}/requirements-dev.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/requirements.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/setup.cfg +0 -0
- {janito-3.5.1 → janito-3.6.1}/test.txt +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_example.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_http_errors.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_http_errors_direct.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_key_field_behavior.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_key_field_protection.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_loop_protection_return.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/test_market_analyst.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/adapters/local/test_read_files.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_models.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_providers.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_cli_version.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_disabled_tools.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_plugin_system.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_provider_alibaba.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_provider_cerebras.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tests/test_provider_moonshot.py +0 -0
- {janito-3.5.1 → janito-3.6.1}/tools/release.py +0 -0
- {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.
|
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.
|
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-
|
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-
|
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-
|
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.
|
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-
|
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.
|
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-
|
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-
|
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-
|
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.
|
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-
|
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()
|