janito 3.0.0__tar.gz → 3.1.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.0.0 → janito-3.1.0}/PKG-INFO +1 -1
- janito-3.1.0/janito/cli/chat_mode/bindings.py +64 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/session.py +7 -1
- {janito-3.0.0 → janito-3.1.0}/janito/cli/prompt_core.py +19 -9
- {janito-3.0.0 → janito-3.1.0}/janito/llm/agent.py +30 -17
- janito-3.1.0/janito/llm/cancellation_manager.py +62 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/driver.py +7 -0
- janito-3.1.0/janito/llm/enter_cancellation.py +93 -0
- {janito-3.0.0 → janito-3.1.0}/janito.egg-info/PKG-INFO +1 -1
- {janito-3.0.0 → janito-3.1.0}/janito.egg-info/SOURCES.txt +2 -0
- janito-3.0.0/janito/cli/chat_mode/bindings.py +0 -38
- {janito-3.0.0 → janito-3.1.0}/.codespellrc +0 -0
- {janito-3.0.0 → janito-3.1.0}/.gitattributes +0 -0
- {janito-3.0.0 → janito-3.1.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.0.0 → janito-3.1.0}/.gitignore +0 -0
- {janito-3.0.0 → janito-3.1.0}/.pre-commit-config.yaml +0 -0
- {janito-3.0.0 → janito-3.1.0}/.secrets.baseline +0 -0
- {janito-3.0.0 → janito-3.1.0}/.vscode/settings.json +0 -0
- {janito-3.0.0 → janito-3.1.0}/LICENSE +0 -0
- {janito-3.0.0 → janito-3.1.0}/MARKET_ANALYST_README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/README-dev.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/RELEASE_COMPARISON.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/UPDATING_DOCS.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/adding_mcp.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/CHANGELOG.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/CHANGELOG_3.0.0.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/DIV.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/Interfaces.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/PROFILES.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/about/costs.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/about/vs-webchats.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/about/why.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/alibaba-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/alternatives.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/cerebras-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/concepts/analysis-style.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/concepts/index.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/deepseek-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/driver-flow.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/driver-request-cancellation.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/drivers/events.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/drivers.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/event-bus.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/configuration.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/developing.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/disabled-tools.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/installation.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/market-data-sources.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/profiles.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/prompting/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/read-chart-examples.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/security-commands.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/terminal-shell.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/url-whitelist.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/using.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/guides/using_tools.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/ibm-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/index.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/llm-drivers.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/meta/quality-checks.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/mistral-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/moonshot-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/openai-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/api-reference.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/architecture.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/filemanager.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/configuration.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/examples/basic.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/plugin-development.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/publishing.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/plugins/testing.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/provider-platform-access.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/public-sources.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/reference/api.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/reference/azure-openai.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/reference/cli-options.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/reference/message-handler-model.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/security.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/supported-providers-models.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/tools/search-text.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/tools/show-image-grid.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/tools/show-image.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/tools-index.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/tools-natural-results.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/tools-precision.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/docs/z-ai-setup.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/examples/loop_protection_example.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/examples/loop_protection_tool_example.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/get_nasdaq_top.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/ibm-logo.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/init_janito_tools.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/__main__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/_version.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/agent/setup_agent.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/check_tools.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_plugins.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/console.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/event_logger.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/getters.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/model_guesser.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/runner.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/setters.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/core/unsetters.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/main.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/main_cli.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/prompt_handler.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/prompt_setup.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/cli/verbose_output.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/config_manager.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/conversation_history.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/dir_walk_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/driver_events.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/openai/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/openai/driver.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/drivers/zai/driver.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/event_bus/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/event_bus/bus.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/event_bus/event.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/event_bus/handler.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/exceptions.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/formatting.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/formatting_token.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/gitignore_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/i18n/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/i18n/it.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/i18n/messages.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/i18n/pt.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/auth.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/auth_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/driver_config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/driver_input.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/message_parts.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/model.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/llm/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/mkdocs.yml +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/perf_singleton.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/performance_collector.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/platform_discovery.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/base.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/core_loader.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugin_system/core_loader_fixed.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/auto_loader.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/auto_loader_fixed.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/builtin.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/copy_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/create_directory.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/create_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/find_files.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/move_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/read_files.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/remove_directory.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/remove_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/filemanager/tools/view_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/plugin.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/tools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/tools/show_image.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/system/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/system/tools/run_bash_command.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core/system/tools/run_powershell_command.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/core_adapter.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/tools/python_code_run.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/tools/python_command_run.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/pythondev/tools/python_file_run.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/visualization/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/dev/visualization/tools/read_chart.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/discovery.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/discovery_core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/example_plugin.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/manager.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/ask_user.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/copy_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/core_tools_plugin.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/create_directory.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/create_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/decorators.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/delete_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/fetch_url.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/find_files.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/move_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/open_html_in_browser.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/open_url.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/python_code_run.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/python_command_run.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/python_file_run.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/read_chart.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/read_files.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/remove_directory.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/remove_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/replace_text_in_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/run_bash_command.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/run_powershell_command.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/match_lines.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/pattern_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/search_text/traverse_directory.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/show_image.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/show_image_grid.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/core.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/tools/view_file.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/ui/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/tools/fetch_url.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/plugins/web/webtools/tools/open_url.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/provider_config.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/provider_registry.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/alibaba/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/alibaba/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/alibaba/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/google/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/google/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/google/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/ibm/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/mistral/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/moonshot/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/moonshot/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/registry.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/model_info.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/provider.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/regions/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/regions/cli.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/regions/geo_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/regions/provider_regions.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/report_events.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/shell.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/README.md +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/adapters/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/adapters/local/__init__.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/base.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/cli_initializer.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/disabled_tools.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/function_adapter.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/initialize.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/inspect_registry.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/loop_protection.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/path_security.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/path_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/permissions.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/permissions_parse.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_base.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_events.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tool_utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tools_adapter.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/tools_schema.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/tools/url_whitelist.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito/utils.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito.egg-info/requires.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/janito.egg-info/top_level.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/market_prompt_fix.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/market_test.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/mkdocs.yml +0 -0
- {janito-3.0.0 → janito-3.1.0}/mkdocs_hooks.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/pyproject.toml +0 -0
- {janito-3.0.0 → janito-3.1.0}/pytest.ini +0 -0
- {janito-3.0.0 → janito-3.1.0}/requirements-dev.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/requirements.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/setup.cfg +0 -0
- {janito-3.0.0 → janito-3.1.0}/test.txt +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_example.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_http_errors.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_http_errors_direct.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_key_field_behavior.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_key_field_protection.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_loop_protection_return.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/test_market_analyst.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/adapters/local/test_read_files.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_models.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_providers.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_cli_version.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_disabled_tools.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_plugin_system.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_provider_alibaba.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_provider_cerebras.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tests/test_provider_moonshot.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tools/release.py +0 -0
- {janito-3.0.0 → janito-3.1.0}/tox.ini +0 -0
@@ -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("enter", eager=True)
|
39
|
+
def _(event):
|
40
|
+
"""Handle Enter key to interrupt current request."""
|
41
|
+
import threading
|
42
|
+
|
43
|
+
# Get the current session context
|
44
|
+
from prompt_toolkit.application import get_app
|
45
|
+
app = get_app()
|
46
|
+
|
47
|
+
# Use global cancellation manager for robust cancellation
|
48
|
+
from janito.llm.cancellation_manager import get_cancellation_manager
|
49
|
+
cancel_manager = get_cancellation_manager()
|
50
|
+
|
51
|
+
cancelled = cancel_manager.cancel_current_request()
|
52
|
+
if cancelled:
|
53
|
+
# Provide user feedback
|
54
|
+
from rich.console import Console
|
55
|
+
console = Console()
|
56
|
+
console.print("[red]Request cancelled by Enter key[/red]")
|
57
|
+
|
58
|
+
# Prevent the Enter key from being processed as input
|
59
|
+
event.app.output.flush()
|
60
|
+
return
|
61
|
+
|
62
|
+
# If no active request to cancel, let normal Enter behavior proceed
|
63
|
+
|
64
|
+
return bindings
|
@@ -283,7 +283,13 @@ class ChatSession:
|
|
283
283
|
)
|
284
284
|
)
|
285
285
|
|
286
|
-
|
286
|
+
try:
|
287
|
+
self._prompt_handler.run_prompt(cmd_input)
|
288
|
+
finally:
|
289
|
+
# Ensure cancellation manager is cleared
|
290
|
+
cancel_manager = get_cancellation_manager()
|
291
|
+
cancel_manager.clear_current_request()
|
292
|
+
|
287
293
|
end_time = time.time()
|
288
294
|
elapsed = end_time - start_time
|
289
295
|
self.msg_count += 1
|
@@ -207,15 +207,25 @@ 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
|
+
cancel_manager = get_cancellation_manager()
|
214
|
+
driver_cancel_event = cancel_manager.start_new_request()
|
215
|
+
|
216
|
+
try:
|
217
|
+
final_event = self.agent.chat(prompt=user_prompt)
|
218
|
+
if hasattr(self.agent, "set_latest_event"):
|
219
|
+
self.agent.set_latest_event(final_event)
|
220
|
+
self.agent.last_event = final_event
|
221
|
+
self._print_verbose_debug(f"agent.chat() returned: {final_event}")
|
222
|
+
self._print_verbose_final_event(final_event)
|
223
|
+
if on_event and final_event is not None:
|
224
|
+
on_event(final_event)
|
225
|
+
global_event_bus.publish(final_event)
|
226
|
+
finally:
|
227
|
+
cancel_manager.clear_current_request()
|
228
|
+
|
219
229
|
except KeyboardInterrupt:
|
220
230
|
# Capture user interrupt / cancellation
|
221
231
|
self.console.print("[red]Interrupted by the user.[/red]")
|
@@ -318,23 +318,36 @@ class LLMAgent:
|
|
318
318
|
loop_count = 1
|
319
319
|
import threading
|
320
320
|
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
321
|
+
# Use global cancellation manager
|
322
|
+
from janito.llm.cancellation_manager import get_cancellation_manager
|
323
|
+
cancel_manager = get_cancellation_manager()
|
324
|
+
driver_cancel_event = cancel_manager.start_new_request()
|
325
|
+
|
326
|
+
# Store cancellation event on agent for external access
|
327
|
+
self.cancel_event = driver_cancel_event
|
328
|
+
|
329
|
+
try:
|
330
|
+
while True:
|
331
|
+
self._print_verbose_chat_loop(loop_count)
|
332
|
+
driver_input = self._prepare_driver_input(config, cancel_event=driver_cancel_event)
|
333
|
+
self.input_queue.put(driver_input)
|
334
|
+
try:
|
335
|
+
result, added_tool_results = self._process_next_response()
|
336
|
+
except KeyboardInterrupt:
|
337
|
+
cancel_manager.cancel_current_request()
|
338
|
+
raise
|
339
|
+
if getattr(self, "verbose_agent", False):
|
340
|
+
print(
|
341
|
+
f"[agent] [DEBUG] Returned from _process_next_response: result={result}, added_tool_results={added_tool_results}"
|
342
|
+
)
|
343
|
+
if self._should_exit_chat_loop(result, added_tool_results):
|
344
|
+
return result
|
345
|
+
loop_count += 1
|
346
|
+
finally:
|
347
|
+
cancel_manager.clear_current_request()
|
348
|
+
# Clean up cancellation event
|
349
|
+
if hasattr(self, 'cancel_event'):
|
350
|
+
delattr(self, 'cancel_event')
|
338
351
|
|
339
352
|
def _clear_driver_queues(self):
|
340
353
|
if hasattr(self, "driver") and self.driver:
|
@@ -0,0 +1,62 @@
|
|
1
|
+
"""
|
2
|
+
Global cancellation manager for LLM requests.
|
3
|
+
Provides a centralized way to cancel ongoing requests.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import threading
|
7
|
+
from typing import Optional
|
8
|
+
|
9
|
+
|
10
|
+
class CancellationManager:
|
11
|
+
"""Manages cancellation of LLM requests across the application."""
|
12
|
+
|
13
|
+
def __init__(self):
|
14
|
+
self._current_cancel_event: Optional[threading.Event] = None
|
15
|
+
self._lock = threading.Lock()
|
16
|
+
self._keyboard_cancellation = None
|
17
|
+
|
18
|
+
def start_new_request(self) -> threading.Event:
|
19
|
+
"""Start a new request and return its cancellation event."""
|
20
|
+
with self._lock:
|
21
|
+
# Create new cancellation event for this request
|
22
|
+
self._current_cancel_event = threading.Event()
|
23
|
+
|
24
|
+
# Start keyboard monitoring
|
25
|
+
from janito.llm.enter_cancellation import get_enter_cancellation
|
26
|
+
self._keyboard_cancellation = get_enter_cancellation()
|
27
|
+
self._keyboard_cancellation.start_monitoring(self._current_cancel_event)
|
28
|
+
|
29
|
+
return self._current_cancel_event
|
30
|
+
|
31
|
+
def cancel_current_request(self) -> bool:
|
32
|
+
"""Cancel the current request if one is active."""
|
33
|
+
with self._lock:
|
34
|
+
if self._current_cancel_event is not None:
|
35
|
+
self._current_cancel_event.set()
|
36
|
+
return True
|
37
|
+
return False
|
38
|
+
|
39
|
+
def get_current_cancel_event(self) -> Optional[threading.Event]:
|
40
|
+
"""Get the current cancellation event."""
|
41
|
+
with self._lock:
|
42
|
+
return self._current_cancel_event
|
43
|
+
|
44
|
+
def clear_current_request(self):
|
45
|
+
"""Clear the current request cancellation event."""
|
46
|
+
with self._lock:
|
47
|
+
if self._keyboard_cancellation:
|
48
|
+
self._keyboard_cancellation.stop_monitoring()
|
49
|
+
self._keyboard_cancellation = None
|
50
|
+
self._current_cancel_event = None
|
51
|
+
|
52
|
+
|
53
|
+
# Global cancellation manager instance
|
54
|
+
_global_manager = None
|
55
|
+
|
56
|
+
|
57
|
+
def get_cancellation_manager() -> CancellationManager:
|
58
|
+
"""Get the global cancellation manager instance."""
|
59
|
+
global _global_manager
|
60
|
+
if _global_manager is None:
|
61
|
+
_global_manager = CancellationManager()
|
62
|
+
return _global_manager
|
@@ -252,3 +252,10 @@ class LLMDriver(ABC):
|
|
252
252
|
def _get_message_from_result(self, result):
|
253
253
|
"""Extract the message object from the provider result. Subclasses must implement this."""
|
254
254
|
raise NotImplementedError("Subclasses must implement _get_message_from_result.")
|
255
|
+
|
256
|
+
def cancel_current_request(self):
|
257
|
+
"""Cancel the current request being processed."""
|
258
|
+
# Use global cancellation manager to cancel the current request
|
259
|
+
from janito.llm.cancellation_manager import get_cancellation_manager
|
260
|
+
cancel_manager = get_cancellation_manager()
|
261
|
+
cancel_manager.cancel_current_request()
|
@@ -0,0 +1,93 @@
|
|
1
|
+
"""
|
2
|
+
Enter key cancellation for LLM requests.
|
3
|
+
Allows pressing Enter to cancel ongoing requests.
|
4
|
+
"""
|
5
|
+
|
6
|
+
import threading
|
7
|
+
import sys
|
8
|
+
import time
|
9
|
+
from typing import Optional
|
10
|
+
|
11
|
+
|
12
|
+
class EnterCancellation:
|
13
|
+
"""Handles Enter key cancellation of LLM requests."""
|
14
|
+
|
15
|
+
def __init__(self):
|
16
|
+
self._cancel_event: Optional[threading.Event] = None
|
17
|
+
self._listener_thread: Optional[threading.Thread] = None
|
18
|
+
self._listening = False
|
19
|
+
|
20
|
+
def start_monitoring(self, cancel_event: threading.Event):
|
21
|
+
"""Start monitoring for Enter key to cancel the request."""
|
22
|
+
if self._listening:
|
23
|
+
return
|
24
|
+
|
25
|
+
self._cancel_event = cancel_event
|
26
|
+
self._listening = True
|
27
|
+
|
28
|
+
self._listener_thread = threading.Thread(
|
29
|
+
target=self._monitor_enter_key, daemon=True
|
30
|
+
)
|
31
|
+
self._listener_thread.start()
|
32
|
+
|
33
|
+
def stop_monitoring(self):
|
34
|
+
"""Stop monitoring for keyboard input."""
|
35
|
+
self._listening = False
|
36
|
+
if self._listener_thread and self._listener_thread.is_alive():
|
37
|
+
self._listener_thread.join(timeout=0.1)
|
38
|
+
|
39
|
+
def _monitor_enter_key(self):
|
40
|
+
"""Monitor for Enter key press."""
|
41
|
+
try:
|
42
|
+
import sys
|
43
|
+
import select
|
44
|
+
import msvcrt # Windows-specific keyboard input
|
45
|
+
|
46
|
+
# Monitor for Enter key (Windows-specific implementation)
|
47
|
+
while self._listening and self._cancel_event and not self._cancel_event.is_set():
|
48
|
+
try:
|
49
|
+
# Windows-specific: check if key is available
|
50
|
+
if msvcrt.kbhit():
|
51
|
+
char = msvcrt.getch()
|
52
|
+
# Check for Enter key (carriage return or newline)
|
53
|
+
if char in [b'\r', b'\n']:
|
54
|
+
if self._cancel_event:
|
55
|
+
self._cancel_event.set()
|
56
|
+
break
|
57
|
+
else:
|
58
|
+
# Discard any other input
|
59
|
+
pass
|
60
|
+
else:
|
61
|
+
# Small delay to prevent high CPU usage
|
62
|
+
time.sleep(0.05)
|
63
|
+
|
64
|
+
except (IOError, OSError):
|
65
|
+
break
|
66
|
+
except Exception:
|
67
|
+
# Fallback to select-based approach for non-Windows
|
68
|
+
try:
|
69
|
+
if sys.stdin in select.select([sys.stdin], [], [], 0.05)[0]:
|
70
|
+
char = sys.stdin.read(1)
|
71
|
+
if char in ['\r', '\n']: # Enter key
|
72
|
+
if self._cancel_event:
|
73
|
+
self._cancel_event.set()
|
74
|
+
break
|
75
|
+
except:
|
76
|
+
pass
|
77
|
+
time.sleep(0.05)
|
78
|
+
|
79
|
+
except Exception:
|
80
|
+
# Silently handle any errors
|
81
|
+
pass
|
82
|
+
|
83
|
+
|
84
|
+
# Global instance
|
85
|
+
_global_enter_cancellation = None
|
86
|
+
|
87
|
+
|
88
|
+
def get_enter_cancellation() -> EnterCancellation:
|
89
|
+
"""Get the global Enter cancellation instance."""
|
90
|
+
global _global_enter_cancellation
|
91
|
+
if _global_enter_cancellation is None:
|
92
|
+
_global_enter_cancellation = EnterCancellation()
|
93
|
+
return _global_enter_cancellation
|
@@ -274,10 +274,12 @@ janito/llm/__init__.py
|
|
274
274
|
janito/llm/agent.py
|
275
275
|
janito/llm/auth.py
|
276
276
|
janito/llm/auth_utils.py
|
277
|
+
janito/llm/cancellation_manager.py
|
277
278
|
janito/llm/driver.py
|
278
279
|
janito/llm/driver_config.py
|
279
280
|
janito/llm/driver_config_builder.py
|
280
281
|
janito/llm/driver_input.py
|
282
|
+
janito/llm/enter_cancellation.py
|
281
283
|
janito/llm/message_parts.py
|
282
284
|
janito/llm/model.py
|
283
285
|
janito/llm/provider.py
|
@@ -1,38 +0,0 @@
|
|
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
|
-
return bindings
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|