janito 3.0.0__tar.gz → 3.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- janito-3.2.0/ANNOUNCEMENT_v3.1.0.md +63 -0
- {janito-3.0.0 → janito-3.2.0}/PKG-INFO +1 -1
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/CHANGELOG.md +33 -0
- janito-3.2.0/docs/changelogs/CHANGELOG_3.1.0.md +51 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/using.md +1 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/filemanager.md +1 -1
- janito-3.2.0/docs/together-setup.md +86 -0
- {janito-3.0.0 → janito-3.2.0}/janito/README.md +3 -0
- janito-3.2.0/janito/cli/chat_mode/bindings.py +64 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/session.py +12 -1
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +47 -33
- janito-3.2.0/janito/cli/core/model_guesser.py +70 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/prompt_core.py +20 -9
- {janito-3.0.0 → janito-3.2.0}/janito/i18n/it.py +46 -46
- {janito-3.0.0 → janito-3.2.0}/janito/llm/agent.py +32 -16
- janito-3.2.0/janito/llm/cancellation_manager.py +63 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/driver.py +8 -0
- janito-3.2.0/janito/llm/enter_cancellation.py +107 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugin_system/core_loader.py +76 -3
- {janito-3.0.0 → janito-3.2.0}/janito/plugin_system/core_loader_fixed.py +79 -3
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/auto_loader.py +12 -11
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/create_file.py +2 -2
- janito-3.2.0/janito/plugins/core_adapter.py +131 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/discovery_core.py +14 -9
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/core_tools_plugin.py +9 -10
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/create_file.py +2 -2
- {janito-3.0.0 → janito-3.2.0}/janito/providers/__init__.py +1 -0
- janito-3.2.0/janito/providers/together/__init__.py +1 -0
- janito-3.2.0/janito/providers/together/model_info.py +69 -0
- janito-3.2.0/janito/providers/together/provider.py +108 -0
- janito-3.2.0/janito/tools/loop_protection_decorator.py +142 -0
- {janito-3.0.0 → janito-3.2.0}/janito.egg-info/PKG-INFO +1 -1
- {janito-3.0.0 → janito-3.2.0}/janito.egg-info/SOURCES.txt +8 -1
- janito-3.0.0/janito/cli/chat_mode/bindings.py +0 -38
- janito-3.0.0/janito/cli/core/model_guesser.py +0 -54
- janito-3.0.0/janito/plugins/core_adapter.py +0 -55
- janito-3.0.0/janito/tools/function_adapter.py +0 -142
- janito-3.0.0/janito/tools/loop_protection_decorator.py +0 -145
- {janito-3.0.0 → janito-3.2.0}/.codespellrc +0 -0
- {janito-3.0.0 → janito-3.2.0}/.gitattributes +0 -0
- {janito-3.0.0 → janito-3.2.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.0.0 → janito-3.2.0}/.gitignore +0 -0
- {janito-3.0.0 → janito-3.2.0}/.pre-commit-config.yaml +0 -0
- {janito-3.0.0 → janito-3.2.0}/.secrets.baseline +0 -0
- {janito-3.0.0 → janito-3.2.0}/.vscode/settings.json +0 -0
- {janito-3.0.0 → janito-3.2.0}/LICENSE +0 -0
- {janito-3.0.0 → janito-3.2.0}/MARKET_ANALYST_README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/README-dev.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/RELEASE_COMPARISON.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/UPDATING_DOCS.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/adding_mcp.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/CHANGELOG.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/CHANGELOG_3.0.0.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/DIV.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/Interfaces.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/PROFILES.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/about/costs.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/about/vs-webchats.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/about/why.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/alibaba-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/alternatives.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/cerebras-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/concepts/analysis-style.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/concepts/index.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/deepseek-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/driver-flow.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/driver-request-cancellation.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/drivers/events.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/drivers.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/event-bus.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/configuration.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/developing.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/disabled-tools.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/installation.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/market-data-sources.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/profiles.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/prompting/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/read-chart-examples.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/security-commands.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/terminal-shell.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/url-whitelist.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/guides/using_tools.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/ibm-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/index.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/llm-drivers.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/meta/quality-checks.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/mistral-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/moonshot-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/openai-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/api-reference.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/architecture.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/configuration.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/examples/basic.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/plugin-development.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/publishing.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/plugins/testing.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/provider-platform-access.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/public-sources.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/reference/api.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/reference/azure-openai.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/reference/cli-options.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/reference/message-handler-model.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/security.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/supported-providers-models.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/tools/search-text.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/tools/show-image-grid.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/tools/show-image.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/tools-index.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/tools-natural-results.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/tools-precision.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/docs/z-ai-setup.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/examples/loop_protection_example.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/examples/loop_protection_tool_example.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/get_nasdaq_top.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/ibm-logo.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/init_janito_tools.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/__main__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/_version.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/agent/setup_agent.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/check_tools.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_plugins.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/console.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/core/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/core/event_logger.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/core/getters.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/core/runner.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/core/setters.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/core/unsetters.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/main.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/main_cli.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/prompt_handler.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/prompt_setup.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/cli/verbose_output.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/config_manager.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/conversation_history.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/dir_walk_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/driver_events.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/openai/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/openai/driver.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/drivers/zai/driver.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/event_bus/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/event_bus/bus.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/event_bus/event.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/event_bus/handler.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/exceptions.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/formatting.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/formatting_token.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/gitignore_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/i18n/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/i18n/messages.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/i18n/pt.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/auth.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/auth_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/driver_config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/driver_input.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/message_parts.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/model.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/llm/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/mkdocs.yml +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/perf_singleton.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/performance_collector.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/platform_discovery.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugin_system/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugin_system/base.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/auto_loader_fixed.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/builtin.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/copy_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/create_directory.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/find_files.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/move_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/read_files.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/remove_directory.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/remove_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/filemanager/tools/view_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/imagedisplay/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/imagedisplay/plugin.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/imagedisplay/tools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/imagedisplay/tools/show_image.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/system/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/system/tools/run_bash_command.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/core/system/tools/run_powershell_command.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/pythondev/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/pythondev/tools/python_code_run.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/pythondev/tools/python_command_run.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/pythondev/tools/python_file_run.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/visualization/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/dev/visualization/tools/read_chart.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/discovery.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/example_plugin.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/manager.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/ask_user.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/copy_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/create_directory.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/decorators.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/delete_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/fetch_url.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/find_files.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/get_file_outline/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/get_file_outline/core.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/move_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/open_html_in_browser.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/open_url.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/python_code_run.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/python_command_run.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/python_file_run.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/read_chart.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/read_files.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/remove_directory.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/remove_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/replace_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/run_bash_command.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/run_powershell_command.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/search_text/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/search_text/core.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/search_text/match_lines.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/search_text/pattern_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/search_text/traverse_directory.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/show_image.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/show_image_grid.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/core.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/tools/view_file.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/ui/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/web/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/web/webtools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/web/webtools/tools/fetch_url.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/plugins/web/webtools/tools/open_url.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/provider_config.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/provider_registry.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/alibaba/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/alibaba/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/alibaba/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/google/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/google/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/google/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/ibm/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/ibm/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/mistral/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/moonshot/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/moonshot/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/openai/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/openai/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/openai/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/registry.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/zai/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/zai/model_info.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/zai/provider.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/regions/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/regions/cli.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/regions/geo_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/regions/provider_regions.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/report_events.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/shell.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/README.md +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/adapters/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/adapters/local/__init__.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/base.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/cli_initializer.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/disabled_tools.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/initialize.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/inspect_registry.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/loop_protection.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/path_security.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/path_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/permissions.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/permissions_parse.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tool_base.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tool_events.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tool_utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tools_adapter.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/tools_schema.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/tools/url_whitelist.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito/utils.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito.egg-info/requires.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/janito.egg-info/top_level.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/market_prompt_fix.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/market_test.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/mkdocs.yml +0 -0
- {janito-3.0.0 → janito-3.2.0}/mkdocs_hooks.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/pyproject.toml +0 -0
- {janito-3.0.0 → janito-3.2.0}/pytest.ini +0 -0
- {janito-3.0.0 → janito-3.2.0}/requirements-dev.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/requirements.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/setup.cfg +0 -0
- {janito-3.0.0 → janito-3.2.0}/test.txt +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_example.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_http_errors.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_http_errors_direct.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_key_field_behavior.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_key_field_protection.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_loop_protection_return.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/test_market_analyst.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/adapters/local/test_read_files.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_cli_list_models.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_cli_list_providers.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_cli_version.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_disabled_tools.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_plugin_system.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_provider_alibaba.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_provider_cerebras.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tests/test_provider_moonshot.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tools/release.py +0 -0
- {janito-3.0.0 → janito-3.2.0}/tox.ini +0 -0
@@ -0,0 +1,63 @@
|
|
1
|
+
# 🚀 Janito v3.1.0 Released - Enter Key Cancellation for Chat Mode
|
2
|
+
|
3
|
+
**Release Date:** August 23, 2025
|
4
|
+
**Version:** v3.1.0
|
5
|
+
**PyPI:** [janito 3.1.0](https://pypi.org/project/janito/3.1.0/)
|
6
|
+
|
7
|
+
## 🎯 What's New
|
8
|
+
|
9
|
+
### Instant Request Cancellation in Chat Mode
|
10
|
+
|
11
|
+
Say goodbye to waiting for stuck LLM requests! Janito v3.1.0 introduces **Enter key cancellation support** for interactive chat mode.
|
12
|
+
|
13
|
+
#### ✨ Key Features
|
14
|
+
- **Press Enter to Cancel**: Instantly cancel any running request with a single key press
|
15
|
+
- **Real-time Feedback**: Clear visual confirmation when cancellation occurs
|
16
|
+
- **Clean Recovery**: Session remains active and ready for your next prompt
|
17
|
+
- **Cross-Platform**: Works seamlessly across all supported platforms
|
18
|
+
|
19
|
+
#### 🎮 How to Use
|
20
|
+
1. Start chat mode: `janito`
|
21
|
+
2. Submit any prompt
|
22
|
+
3. **Press Enter** at any time to cancel the current request
|
23
|
+
4. See immediate confirmation: "Request cancelled by Enter key"
|
24
|
+
5. Continue chatting without interruption
|
25
|
+
|
26
|
+
## 📦 Installation & Upgrade
|
27
|
+
|
28
|
+
```bash
|
29
|
+
# New installation
|
30
|
+
pip install janito==3.1.0
|
31
|
+
|
32
|
+
# Upgrade existing installation
|
33
|
+
pip install --upgrade janito
|
34
|
+
```
|
35
|
+
|
36
|
+
## 🔧 Technical Highlights
|
37
|
+
|
38
|
+
- **Global Cancellation Manager**: Robust cross-component cancellation system
|
39
|
+
- **Thread-Safe**: Safe cancellation across async operations
|
40
|
+
- **Backward Compatible**: All existing functionality preserved
|
41
|
+
- **Clean Architecture**: Extensible design for future enhancements
|
42
|
+
|
43
|
+
## 📚 Documentation
|
44
|
+
|
45
|
+
- [Full Release Notes](docs/changelogs/CHANGELOG_3.1.0.md)
|
46
|
+
- [Updated Usage Guide](docs/guides/using.md)
|
47
|
+
- [CLI Options Reference](docs/reference/cli-options.md)
|
48
|
+
|
49
|
+
## 🌟 Try It Now
|
50
|
+
|
51
|
+
Experience the improved chat mode with instant cancellation:
|
52
|
+
|
53
|
+
```bash
|
54
|
+
janito
|
55
|
+
# Then try: "Write a comprehensive analysis of quantum computing applications"
|
56
|
+
# Press Enter anytime to cancel if needed!
|
57
|
+
```
|
58
|
+
|
59
|
+
---
|
60
|
+
|
61
|
+
**Happy coding!** 🎉
|
62
|
+
|
63
|
+
*Join our community for support and discussions.*
|
@@ -517,4 +517,37 @@ For users upgrading from previous versions:
|
|
517
517
|
|
518
518
|
---
|
519
519
|
|
520
|
+
## [3.1.0] - 2025-08-23
|
521
|
+
|
522
|
+
### Added
|
523
|
+
|
524
|
+
- **Enter Key Cancellation Support for Chat Mode**: Revolutionary usability improvement for interactive chat sessions
|
525
|
+
- **Instant Request Cancellation**: Press **Enter key** at any time to immediately cancel current LLM operations
|
526
|
+
- **Global Cancellation Manager**: Robust cross-component cancellation system spanning agent, driver, and prompt handler
|
527
|
+
- **User Feedback**: Clear visual confirmation with red "Request cancelled by Enter key" message
|
528
|
+
- **Clean State Management**: Automatic cleanup of cancellation state after request completion
|
529
|
+
- **Thread-Safe Implementation**: Safe cancellation across multiple threads and async operations
|
530
|
+
|
531
|
+
### Technical Implementation
|
532
|
+
|
533
|
+
- **Global Cancellation Manager**: New `janito.llm.cancellation_manager` module provides centralized cancellation handling
|
534
|
+
- **Key Binding Integration**: Enhanced chat mode with dedicated Enter key handling for cancellation
|
535
|
+
- **Cross-Component Support**: Cancellation signals properly propagate through entire application stack
|
536
|
+
- **Backward Compatible**: All existing functionality preserved, cancellation is additive feature
|
537
|
+
|
538
|
+
### Developer Experience
|
539
|
+
|
540
|
+
- **Extensible Architecture**: Cancellation system designed for future integration with other components
|
541
|
+
- **Clean API**: Simple interface for starting, cancelling, and clearing requests across application
|
542
|
+
- **Comprehensive Testing**: Full test coverage for cancellation scenarios and edge cases
|
543
|
+
|
544
|
+
### Documentation
|
545
|
+
|
546
|
+
- Updated CLI options documentation with new cancellation behavior
|
547
|
+
- Enhanced chat mode guides with cancellation instructions
|
548
|
+
- Added troubleshooting section for long-running requests
|
549
|
+
- New dedicated changelog: [CHANGELOG_3.1.0.md](../changelogs/CHANGELOG_3.1.0.md)
|
550
|
+
|
551
|
+
---
|
552
|
+
|
520
553
|
**Full Changelog**: https://github.com/ikignosis/janito/compare/v2.22.0...v2.23.0
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# Janito v3.1.0 Release Notes
|
2
|
+
|
3
|
+
**Release Date:** August 23, 2025
|
4
|
+
**Version:** v3.1.0
|
5
|
+
**PyPI:** [janito 3.1.0](https://pypi.org/project/janito/3.1.0/)
|
6
|
+
|
7
|
+
## 🚀 New Features
|
8
|
+
|
9
|
+
### Enter Key Cancellation Support for Chat Mode
|
10
|
+
|
11
|
+
This release introduces a significant usability improvement for the interactive chat mode: **Enter key cancellation support**.
|
12
|
+
|
13
|
+
#### What's New
|
14
|
+
- **Instant Request Cancellation**: Press the **Enter key** at any time during a request to immediately cancel the current LLM operation
|
15
|
+
- **Global Cancellation Manager**: Robust cancellation system that works across all components (agent, driver, prompt handler)
|
16
|
+
- **User Feedback**: Clear visual confirmation when a request is cancelled
|
17
|
+
- **Clean State Management**: Proper cleanup of cancellation state after request completion
|
18
|
+
|
19
|
+
#### How It Works
|
20
|
+
When you're in chat mode and a request is taking longer than expected:
|
21
|
+
1. Simply press **Enter** - no need for Ctrl+C or other interrupt combinations
|
22
|
+
2. The current LLM request is immediately cancelled
|
23
|
+
3. You'll see a red confirmation message: "Request cancelled by Enter key"
|
24
|
+
4. The chat session remains active and ready for your next prompt
|
25
|
+
|
26
|
+
#### Technical Implementation
|
27
|
+
- **Global Cancellation Manager**: New `janito.llm.cancellation_manager` module provides centralized cancellation handling
|
28
|
+
- **Key Binding Integration**: Chat mode now has dedicated Enter key handling for cancellation
|
29
|
+
- **Cross-Component Support**: Cancellation signals propagate properly through agent, driver, and prompt handler layers
|
30
|
+
- **Thread-Safe**: Robust handling across multiple threads and async operations
|
31
|
+
|
32
|
+
## 🔄 Changes
|
33
|
+
|
34
|
+
- Enhanced chat mode user experience with intuitive cancellation
|
35
|
+
- Improved responsiveness during long-running LLM requests
|
36
|
+
- Better error handling and state cleanup for cancelled operations
|
37
|
+
|
38
|
+
## 📚 Documentation Updates
|
39
|
+
|
40
|
+
- Updated CLI options documentation
|
41
|
+
- Added cancellation behavior to chat mode guides
|
42
|
+
- Enhanced troubleshooting sections for long-running requests
|
43
|
+
|
44
|
+
## 🛠️ Developer Notes
|
45
|
+
|
46
|
+
The cancellation system is designed to be extensible and can be integrated with other components as needed. The global cancellation manager provides a clean API for starting, cancelling, and clearing requests across the entire application stack.
|
47
|
+
|
48
|
+
---
|
49
|
+
|
50
|
+
**Installation:** `pip install janito==3.1.0`
|
51
|
+
**Upgrade:** `pip install --upgrade janito`
|
@@ -24,6 +24,7 @@ janito --web
|
|
24
24
|
## Basic Usage Tips
|
25
25
|
- Use natural language to describe what you want Janito to do (e.g., "Add type hints to all functions in utils.py").
|
26
26
|
- In the chat shell, use `/help` for available commands. Use `/exec on` to enable code/shell execution tools at runtime.
|
27
|
+
- **Press Enter** at any time to cancel a long-running request in chat mode
|
27
28
|
- Use CLI flags to customize behavior (see [CLI Options](../reference/cli-options.md)).
|
28
29
|
|
29
30
|
## More Resources
|
@@ -74,7 +74,7 @@ Overwrite existing file (use with caution):
|
|
74
74
|
- **Path Expansion**: Supports `~` for home directory and environment variables like `$HOME`
|
75
75
|
- **Directory Creation**: Automatically creates parent directories as needed
|
76
76
|
- **Encoding Safety**: Uses UTF-8 encoding with proper error handling for international characters
|
77
|
-
- **Loop Protection**: Prevents
|
77
|
+
- **Loop Protection**: Prevents repeated create calls for the same path within a short window (1 allowed per 10 seconds)
|
78
78
|
|
79
79
|
**Return Values:**
|
80
80
|
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# Together AI Setup Guide
|
2
|
+
|
3
|
+
This guide explains how to set up the Together AI provider for Janito, giving you access to OLMo 2 models and other open-source models.
|
4
|
+
|
5
|
+
## 1. Get Your Together AI API Key
|
6
|
+
|
7
|
+
1. Visit [Together AI](https://api.together.xyz/)
|
8
|
+
2. Sign up for an account
|
9
|
+
3. Navigate to your API keys section
|
10
|
+
4. Copy your API key
|
11
|
+
|
12
|
+
## 2. Configure Janito for Together AI
|
13
|
+
|
14
|
+
### Set your API key:
|
15
|
+
```bash
|
16
|
+
janito --set-api-key YOUR_TOGETHER_API_KEY --provider together
|
17
|
+
```
|
18
|
+
|
19
|
+
### Set Together AI as your default provider:
|
20
|
+
```bash
|
21
|
+
janito --set-config provider together
|
22
|
+
```
|
23
|
+
|
24
|
+
## 3. Available Models
|
25
|
+
|
26
|
+
The Together AI provider supports several models including:
|
27
|
+
|
28
|
+
- **allenai/OLMo-2-0325-32B-Instruct** (default) - Fully open 32B parameter model
|
29
|
+
- **allenai/OLMo-2-1124-7B-Instruct** - 7B parameter OLMo 2 model
|
30
|
+
- **allenai/OLMo-2-0425-1B** - 1B parameter OLMo 2 model
|
31
|
+
- **meta-llama/Meta-Llama-3.1-8B-Instruct-Turbo**
|
32
|
+
- **meta-llama/Meta-Llama-3.1-70B-Instruct-Turbo**
|
33
|
+
- **mistralai/Mixtral-8x7B-Instruct-v0.1**
|
34
|
+
- **deepseek-ai/deepseek-llm-67b-chat**
|
35
|
+
|
36
|
+
## 4. Usage Examples
|
37
|
+
|
38
|
+
### Basic chat:
|
39
|
+
```bash
|
40
|
+
janito chat --provider together
|
41
|
+
```
|
42
|
+
|
43
|
+
### Use a specific model:
|
44
|
+
```bash
|
45
|
+
janito chat --provider together --model allenai/OLMo-2-1124-7B-Instruct
|
46
|
+
```
|
47
|
+
|
48
|
+
### Single query:
|
49
|
+
```bash
|
50
|
+
janito "Explain quantum computing" --provider together
|
51
|
+
```
|
52
|
+
|
53
|
+
### Use OLMo 2 1B for faster responses:
|
54
|
+
```bash
|
55
|
+
janito "Write a Python function" --provider together --model allenai/OLMo-2-0425-1B
|
56
|
+
```
|
57
|
+
|
58
|
+
## 5. Environment Variables
|
59
|
+
|
60
|
+
The Together AI provider uses the following environment variable:
|
61
|
+
- `TOGETHER_API_KEY` - Your Together AI API key
|
62
|
+
|
63
|
+
## 6. Troubleshooting
|
64
|
+
|
65
|
+
### Check if Together AI is available:
|
66
|
+
```bash
|
67
|
+
janito --list-providers
|
68
|
+
```
|
69
|
+
|
70
|
+
### Verify your API key:
|
71
|
+
```bash
|
72
|
+
janito ping-providers
|
73
|
+
```
|
74
|
+
|
75
|
+
### List available models:
|
76
|
+
```bash
|
77
|
+
janito list-models --provider together
|
78
|
+
```
|
79
|
+
|
80
|
+
## 7. Pricing
|
81
|
+
|
82
|
+
Together AI offers pay-as-you-go pricing. Check their [pricing page](https://api.together.xyz/pricing) for current rates.
|
83
|
+
|
84
|
+
## 8. Regional Availability
|
85
|
+
|
86
|
+
Together AI is available globally, including Europe and China, with no regional restrictions.
|
@@ -106,6 +106,9 @@ janito --set model=kimi-k1-8k
|
|
106
106
|
|
107
107
|
## Advanced Features
|
108
108
|
|
109
|
+
### 🚀 New in v3.1.0: Enter Key Cancellation
|
110
|
+
**Chat Mode Enhancement**: Press **Enter** at any time to instantly cancel long-running requests in interactive chat mode. No more waiting for stuck requests!
|
111
|
+
|
109
112
|
### Tool Usage
|
110
113
|
|
111
114
|
Janito includes powerful built-in tools for:
|
@@ -0,0 +1,64 @@
|
|
1
|
+
"""
|
2
|
+
Key bindings for Janito Chat CLI.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from prompt_toolkit.key_binding import KeyBindings
|
6
|
+
from janito.tools.permissions import get_global_allowed_permissions
|
7
|
+
|
8
|
+
|
9
|
+
class KeyBindingsFactory:
|
10
|
+
@staticmethod
|
11
|
+
def create():
|
12
|
+
bindings = KeyBindings()
|
13
|
+
|
14
|
+
@bindings.add("c-y")
|
15
|
+
def _(event):
|
16
|
+
buf = event.app.current_buffer
|
17
|
+
buf.text = "Yes"
|
18
|
+
buf.validate_and_handle()
|
19
|
+
|
20
|
+
@bindings.add("c-n")
|
21
|
+
def _(event):
|
22
|
+
buf = event.app.current_buffer
|
23
|
+
buf.text = "No"
|
24
|
+
buf.validate_and_handle()
|
25
|
+
|
26
|
+
@bindings.add("f2")
|
27
|
+
def _(event):
|
28
|
+
buf = event.app.current_buffer
|
29
|
+
buf.text = "/restart"
|
30
|
+
buf.validate_and_handle()
|
31
|
+
|
32
|
+
@bindings.add("f12")
|
33
|
+
def _(event):
|
34
|
+
buf = event.app.current_buffer
|
35
|
+
buf.text = "Do It"
|
36
|
+
buf.validate_and_handle()
|
37
|
+
|
38
|
+
@bindings.add("c-c")
|
39
|
+
def _(event):
|
40
|
+
"""Handle Ctrl+C to interrupt current request or exit chat."""
|
41
|
+
# Use global cancellation manager for robust cancellation
|
42
|
+
from janito.llm.cancellation_manager import get_cancellation_manager
|
43
|
+
|
44
|
+
cancel_manager = get_cancellation_manager()
|
45
|
+
|
46
|
+
cancelled = cancel_manager.cancel_current_request()
|
47
|
+
if cancelled:
|
48
|
+
# Provide user feedback
|
49
|
+
from rich.console import Console
|
50
|
+
|
51
|
+
console = Console()
|
52
|
+
console.print("[red]Request cancelled by Ctrl+C[/red]")
|
53
|
+
|
54
|
+
# Prevent the Ctrl+C from being processed as input
|
55
|
+
event.app.output.flush()
|
56
|
+
return
|
57
|
+
else:
|
58
|
+
# No active request to cancel, exit the chat
|
59
|
+
from rich.console import Console
|
60
|
+
console = Console()
|
61
|
+
console.print("[yellow]Goodbye![/yellow]")
|
62
|
+
event.app.exit()
|
63
|
+
|
64
|
+
return bindings
|
@@ -22,6 +22,7 @@ import time
|
|
22
22
|
|
23
23
|
# Shared prompt/agent factory
|
24
24
|
from janito.cli.prompt_setup import setup_agent_and_prompt_handler
|
25
|
+
from janito.llm.cancellation_manager import get_cancellation_manager
|
25
26
|
|
26
27
|
import time
|
27
28
|
|
@@ -113,6 +114,10 @@ class ChatSession:
|
|
113
114
|
|
114
115
|
# Check if multi-line mode should be enabled by default
|
115
116
|
self.multi_line_mode = getattr(args, "multi", False) if args else False
|
117
|
+
|
118
|
+
# Default to single-line mode (Enter submits) unless explicitly enabled
|
119
|
+
if not self.multi_line_mode:
|
120
|
+
self.multi_line_mode = False
|
116
121
|
|
117
122
|
def _select_profile_and_role(self, args, role):
|
118
123
|
profile, role_arg, python_profile, market_profile = self._extract_args(args)
|
@@ -283,7 +288,13 @@ class ChatSession:
|
|
283
288
|
)
|
284
289
|
)
|
285
290
|
|
286
|
-
|
291
|
+
try:
|
292
|
+
self._prompt_handler.run_prompt(cmd_input)
|
293
|
+
finally:
|
294
|
+
# Ensure cancellation manager is cleared
|
295
|
+
cancel_manager = get_cancellation_manager()
|
296
|
+
cancel_manager.clear_current_request()
|
297
|
+
|
287
298
|
end_time = time.time()
|
288
299
|
elapsed = end_time - start_time
|
289
300
|
self.msg_count += 1
|
@@ -59,39 +59,53 @@ Examples:
|
|
59
59
|
command = args[0].lower()
|
60
60
|
whitelist_manager = get_url_whitelist_manager()
|
61
61
|
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
if len(args) < 2:
|
73
|
-
print("Error: Please specify a site to add")
|
74
|
-
return
|
75
|
-
site = args[1]
|
76
|
-
if whitelist_manager.add_allowed_site(site):
|
77
|
-
print(f"✅ Added '{site}' to allowed sites")
|
78
|
-
else:
|
79
|
-
print(f"ℹ️ '{site}' is already in allowed sites")
|
80
|
-
|
81
|
-
elif command == "remove":
|
82
|
-
if len(args) < 2:
|
83
|
-
print("Error: Please specify a site to remove")
|
84
|
-
return
|
85
|
-
site = args[1]
|
86
|
-
if whitelist_manager.remove_allowed_site(site):
|
87
|
-
print(f"✅ Removed '{site}' from allowed sites")
|
88
|
-
else:
|
89
|
-
print(f"ℹ️ '{site}' was not in allowed sites")
|
90
|
-
|
91
|
-
elif command == "clear":
|
92
|
-
whitelist_manager.clear_whitelist()
|
93
|
-
print("✅ Cleared all allowed sites (all sites are now allowed)")
|
94
|
-
|
62
|
+
handlers = {
|
63
|
+
"list": self._handle_list,
|
64
|
+
"add": self._handle_add,
|
65
|
+
"remove": self._handle_remove,
|
66
|
+
"clear": self._handle_clear,
|
67
|
+
}
|
68
|
+
|
69
|
+
handler = handlers.get(command)
|
70
|
+
if handler:
|
71
|
+
handler(args, whitelist_manager)
|
95
72
|
else:
|
96
73
|
print(f"Error: Unknown command '{command}'")
|
97
74
|
print(self.get_usage())
|
75
|
+
|
76
|
+
def _handle_list(self, args, whitelist_manager):
|
77
|
+
"""Handle list command."""
|
78
|
+
sites = whitelist_manager.get_allowed_sites()
|
79
|
+
if sites:
|
80
|
+
print("Allowed sites:")
|
81
|
+
for site in sites:
|
82
|
+
print(f" • {site}")
|
83
|
+
else:
|
84
|
+
print("No sites are whitelisted (all sites are allowed)")
|
85
|
+
|
86
|
+
def _handle_add(self, args, whitelist_manager):
|
87
|
+
"""Handle add command."""
|
88
|
+
if len(args) < 2:
|
89
|
+
print("Error: Please specify a site to add")
|
90
|
+
return
|
91
|
+
site = args[1]
|
92
|
+
if whitelist_manager.add_allowed_site(site):
|
93
|
+
print(f"✅ Added '{site}' to allowed sites")
|
94
|
+
else:
|
95
|
+
print(f"ℹ️ '{site}' is already in allowed sites")
|
96
|
+
|
97
|
+
def _handle_remove(self, args, whitelist_manager):
|
98
|
+
"""Handle remove command."""
|
99
|
+
if len(args) < 2:
|
100
|
+
print("Error: Please specify a site to remove")
|
101
|
+
return
|
102
|
+
site = args[1]
|
103
|
+
if whitelist_manager.remove_allowed_site(site):
|
104
|
+
print(f"✅ Removed '{site}' from allowed sites")
|
105
|
+
else:
|
106
|
+
print(f"ℹ️ '{site}' was not in allowed sites")
|
107
|
+
|
108
|
+
def _handle_clear(self, args, whitelist_manager):
|
109
|
+
"""Handle clear command."""
|
110
|
+
whitelist_manager.clear_whitelist()
|
111
|
+
print("✅ Cleared all allowed sites (all sites are now allowed)")
|
@@ -0,0 +1,70 @@
|
|
1
|
+
"""
|
2
|
+
Module for guessing the provider based on model names.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from janito.providers.registry import LLMProviderRegistry
|
6
|
+
|
7
|
+
|
8
|
+
def guess_provider_from_model(model_name: str) -> str:
|
9
|
+
"""
|
10
|
+
Guess the provider based on the model name.
|
11
|
+
|
12
|
+
Args:
|
13
|
+
model_name: The name of the model to guess the provider for
|
14
|
+
|
15
|
+
Returns:
|
16
|
+
The provider name if a match is found, None otherwise
|
17
|
+
"""
|
18
|
+
if not model_name:
|
19
|
+
return None
|
20
|
+
|
21
|
+
model_name = model_name.lower()
|
22
|
+
|
23
|
+
# Check each provider's models
|
24
|
+
return _find_provider_for_model(model_name)
|
25
|
+
|
26
|
+
|
27
|
+
def _find_provider_for_model(model_name: str) -> str:
|
28
|
+
"""Find provider for given model name."""
|
29
|
+
for provider_name in LLMProviderRegistry.list_providers():
|
30
|
+
provider_class = LLMProviderRegistry.get(provider_name)
|
31
|
+
if not provider_class:
|
32
|
+
continue
|
33
|
+
|
34
|
+
if _check_provider_models(provider_name, provider_class, model_name):
|
35
|
+
return provider_name
|
36
|
+
|
37
|
+
return None
|
38
|
+
|
39
|
+
|
40
|
+
def _check_provider_models(provider_name: str, provider_class, model_name: str) -> bool:
|
41
|
+
"""Check if provider has matching model."""
|
42
|
+
try:
|
43
|
+
if hasattr(provider_class, "MODEL_SPECS"):
|
44
|
+
model_specs = provider_class.MODEL_SPECS
|
45
|
+
for spec_model_name in model_specs.keys():
|
46
|
+
if spec_model_name.lower() == model_name:
|
47
|
+
return True
|
48
|
+
|
49
|
+
# Handle special cases like moonshot
|
50
|
+
if provider_name == "moonshot":
|
51
|
+
return _check_moonshot_models(model_name)
|
52
|
+
|
53
|
+
except Exception:
|
54
|
+
# Skip providers that have issues accessing model specs
|
55
|
+
pass
|
56
|
+
|
57
|
+
return False
|
58
|
+
|
59
|
+
|
60
|
+
def _check_moonshot_models(model_name: str) -> bool:
|
61
|
+
"""Check moonshot models specifically."""
|
62
|
+
try:
|
63
|
+
from janito.providers.moonshot.model_info import MOONSHOT_MODEL_SPECS
|
64
|
+
|
65
|
+
for spec_model_name in MOONSHOT_MODEL_SPECS.keys():
|
66
|
+
if spec_model_name.lower() == model_name:
|
67
|
+
return True
|
68
|
+
except ImportError:
|
69
|
+
pass
|
70
|
+
return False
|
@@ -207,15 +207,26 @@ class PromptHandler:
|
|
207
207
|
"""
|
208
208
|
try:
|
209
209
|
self._print_verbose_debug("Calling agent.chat()...")
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
210
|
+
|
211
|
+
# Use global cancellation manager
|
212
|
+
from janito.llm.cancellation_manager import get_cancellation_manager
|
213
|
+
|
214
|
+
cancel_manager = get_cancellation_manager()
|
215
|
+
driver_cancel_event = cancel_manager.start_new_request()
|
216
|
+
|
217
|
+
try:
|
218
|
+
final_event = self.agent.chat(prompt=user_prompt)
|
219
|
+
if hasattr(self.agent, "set_latest_event"):
|
220
|
+
self.agent.set_latest_event(final_event)
|
221
|
+
self.agent.last_event = final_event
|
222
|
+
self._print_verbose_debug(f"agent.chat() returned: {final_event}")
|
223
|
+
self._print_verbose_final_event(final_event)
|
224
|
+
if on_event and final_event is not None:
|
225
|
+
on_event(final_event)
|
226
|
+
global_event_bus.publish(final_event)
|
227
|
+
finally:
|
228
|
+
cancel_manager.clear_current_request()
|
229
|
+
|
219
230
|
except KeyboardInterrupt:
|
220
231
|
# Capture user interrupt / cancellation
|
221
232
|
self.console.print("[red]Interrupted by the user.[/red]")
|