janito 3.2.0__tar.gz → 3.4.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 → janito-3.4.0}/PKG-INFO +2 -1
- janito-3.4.0/docs/CHANGELOG.md +49 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/CHANGELOG.md +0 -33
- {janito-3.2.0 → janito-3.4.0}/docs/guides/using.md +0 -1
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/filemanager.md +1 -1
- {janito-3.2.0 → janito-3.4.0}/janito/README.md +0 -3
- janito-3.4.0/janito/cli/chat_mode/bindings.py +38 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/session.py +1 -12
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +33 -47
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_plugins.py +43 -52
- {janito-3.2.0 → janito-3.4.0}/janito/cli/core/getters.py +0 -3
- janito-3.4.0/janito/cli/core/model_guesser.py +54 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/main_cli.py +12 -9
- {janito-3.2.0 → janito-3.4.0}/janito/cli/prompt_core.py +9 -20
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/openai/driver.py +0 -1
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/zai/driver.py +0 -1
- {janito-3.2.0 → janito-3.4.0}/janito/i18n/it.py +46 -46
- {janito-3.2.0 → janito-3.4.0}/janito/llm/agent.py +16 -32
- janito-3.4.0/janito/llm/auth_utils.py +21 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/driver.py +0 -8
- janito-3.4.0/janito/plugins/__init__.py +17 -0
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/auto_loader.py +11 -12
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/auto_loader_fixed.py +11 -12
- {janito-3.2.0/janito/plugin_system → janito-3.4.0/janito/plugins}/base.py +2 -5
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/builtin.py +1 -15
- janito-3.4.0/janito/plugins/core_adapter.py +53 -0
- janito-3.4.0/janito/plugins/core_loader.py +120 -0
- janito-3.4.0/janito/plugins/core_loader_fixed.py +125 -0
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/discovery.py +5 -5
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/discovery_core.py +9 -14
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/manager.py +1 -1
- {janito-3.2.0 → janito-3.4.0}/janito/providers/__init__.py +0 -1
- janito-3.4.0/janito/providers/alibaba/__init__.py +0 -0
- janito-3.4.0/janito/tools/__init__.py +36 -0
- janito-3.4.0/janito/tools/adapters/__init__.py +1 -0
- janito-3.4.0/janito/tools/adapters/local/__init__.py +73 -0
- {janito-3.2.0/janito/plugins/tools → janito-3.4.0/janito/tools/adapters/local}/ask_user.py +3 -3
- {janito-3.2.0/janito/plugins/tools → janito-3.4.0/janito/tools/adapters/local}/create_file.py +6 -6
- {janito-3.2.0/janito/plugins/tools → janito-3.4.0/janito/tools/adapters/local}/fetch_url.py +3 -3
- {janito-3.2.0/janito/plugins/tools → janito-3.4.0/janito/tools/adapters/local}/replace_text_in_file.py +4 -4
- {janito-3.2.0/janito/plugins/tools → janito-3.4.0/janito/tools/adapters/local}/show_image.py +6 -15
- {janito-3.2.0/janito/plugins/tools → janito-3.4.0/janito/tools/adapters/local}/show_image_grid.py +6 -15
- janito-3.4.0/janito/tools/function_adapter.py +65 -0
- janito-3.4.0/janito/tools/loop_protection_decorator.py +145 -0
- {janito-3.2.0 → janito-3.4.0}/janito.egg-info/PKG-INFO +2 -1
- {janito-3.2.0 → janito-3.4.0}/janito.egg-info/SOURCES.txt +114 -127
- {janito-3.2.0 → janito-3.4.0}/janito.egg-info/requires.txt +1 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/codeanalyzer/__init__.py +0 -9
- janito-3.4.0/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +1 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/get_file_outline/core.py +3 -3
- janito-3.4.0/plugins/core/codeanalyzer/tools/search_text/__init__.py +1 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/search_text/core.py +3 -3
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/filemanager/__init__.py +0 -33
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/copy_file.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/create_directory.py +3 -3
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/filemanager/tools/create_file.py +2 -2
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/delete_text_in_file.py +4 -4
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/find_files.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/move_file.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/read_files.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/remove_directory.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/remove_file.py +3 -3
- janito-3.4.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/core.py +2 -2
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/view_file.py +3 -3
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/imagedisplay/__init__.py +1 -1
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/imagedisplay/plugin.py +2 -2
- janito-3.4.0/plugins/core/imagedisplay/tools/__init__.py +1 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/imagedisplay/tools/show_image.py +3 -12
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/imagedisplay/tools/show_image_grid.py +3 -12
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/system/__init__.py +0 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/system}/tools/run_bash_command.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/system}/tools/run_powershell_command.py +3 -3
- {janito-3.2.0/janito → janito-3.4.0}/plugins/dev/pythondev/__init__.py +0 -9
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/dev/pythondev}/tools/python_code_run.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/dev/pythondev}/tools/python_command_run.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/dev/pythondev}/tools/python_file_run.py +3 -3
- {janito-3.2.0/janito → janito-3.4.0}/plugins/dev/visualization/__init__.py +0 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/dev/visualization}/tools/read_chart.py +3 -3
- {janito-3.2.0/janito → janito-3.4.0}/plugins/example_plugin.py +1 -1
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/web/webtools}/tools/open_html_in_browser.py +3 -3
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/web/webtools}/tools/open_url.py +3 -3
- janito-3.4.0/plugins.txt +1 -0
- janito-3.2.0/ANNOUNCEMENT_v3.1.0.md +0 -63
- janito-3.2.0/docs/CHANGELOG.md +0 -133
- janito-3.2.0/docs/CHANGELOG_3.0.0.md +0 -141
- janito-3.2.0/docs/changelogs/CHANGELOG_3.1.0.md +0 -51
- janito-3.2.0/docs/together-setup.md +0 -86
- janito-3.2.0/init_janito_tools.py +0 -51
- janito-3.2.0/janito/cli/chat_mode/bindings.py +0 -64
- janito-3.2.0/janito/cli/cli_commands/check_tools.py +0 -212
- janito-3.2.0/janito/cli/core/model_guesser.py +0 -70
- janito-3.2.0/janito/llm/auth_utils.py +0 -30
- janito-3.2.0/janito/llm/cancellation_manager.py +0 -63
- janito-3.2.0/janito/llm/enter_cancellation.py +0 -107
- janito-3.2.0/janito/plugin_system/__init__.py +0 -10
- janito-3.2.0/janito/plugin_system/core_loader.py +0 -217
- janito-3.2.0/janito/plugin_system/core_loader_fixed.py +0 -225
- janito-3.2.0/janito/plugins/core/imagedisplay/tools/__init__.py +0 -1
- janito-3.2.0/janito/plugins/core_adapter.py +0 -131
- janito-3.2.0/janito/plugins/tools/__init__.py +0 -10
- janito-3.2.0/janito/plugins/tools/core_tools_plugin.py +0 -87
- janito-3.2.0/janito/plugins/tools/decorators.py +0 -19
- janito-3.2.0/janito/plugins/tools/get_file_outline/__init__.py +0 -7
- janito-3.2.0/janito/plugins/tools/search_text/__init__.py +0 -7
- janito-3.2.0/janito/plugins/tools/validate_file_syntax/__init__.py +0 -7
- janito-3.2.0/janito/providers/together/__init__.py +0 -1
- janito-3.2.0/janito/providers/together/model_info.py +0 -69
- janito-3.2.0/janito/providers/together/provider.py +0 -108
- janito-3.2.0/janito/tools/__init__.py +0 -60
- janito-3.2.0/janito/tools/adapters/__init__.py +0 -6
- janito-3.2.0/janito/tools/adapters/local/__init__.py +0 -10
- janito-3.2.0/janito/tools/cli_initializer.py +0 -88
- janito-3.2.0/janito/tools/initialize.py +0 -70
- janito-3.2.0/janito/tools/loop_protection_decorator.py +0 -142
- {janito-3.2.0 → janito-3.4.0}/.codespellrc +0 -0
- {janito-3.2.0 → janito-3.4.0}/.gitattributes +0 -0
- {janito-3.2.0 → janito-3.4.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.2.0 → janito-3.4.0}/.gitignore +0 -0
- {janito-3.2.0 → janito-3.4.0}/.pre-commit-config.yaml +0 -0
- {janito-3.2.0 → janito-3.4.0}/.secrets.baseline +0 -0
- {janito-3.2.0 → janito-3.4.0}/.vscode/settings.json +0 -0
- {janito-3.2.0 → janito-3.4.0}/LICENSE +0 -0
- {janito-3.2.0 → janito-3.4.0}/MARKET_ANALYST_README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/README-dev.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/RELEASE_COMPARISON.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/UPDATING_DOCS.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/adding_mcp.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/DIV.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/Interfaces.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/PROFILES.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/about/costs.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/about/vs-webchats.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/about/why.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/alibaba-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/alternatives.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/cerebras-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/concepts/analysis-style.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/concepts/index.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/deepseek-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/driver-flow.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/driver-request-cancellation.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/drivers/events.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/drivers.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/event-bus.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/configuration.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/developing.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/disabled-tools.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/installation.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/market-data-sources.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/profiles.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/prompting/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/read-chart-examples.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/security-commands.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/terminal-shell.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/url-whitelist.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/guides/using_tools.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/ibm-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/index.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/llm-drivers.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/meta/quality-checks.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/mistral-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/moonshot-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/openai-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/api-reference.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/architecture.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/configuration.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/examples/basic.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/plugin-development.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/publishing.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/plugins/testing.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/provider-platform-access.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/public-sources.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/reference/api.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/reference/azure-openai.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/reference/cli-options.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/reference/message-handler-model.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/security.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/supported-providers-models.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/tools/search-text.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/tools/show-image-grid.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/tools/show-image.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/tools-index.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/tools-natural-results.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/tools-precision.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/docs/z-ai-setup.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/examples/loop_protection_example.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/examples/loop_protection_tool_example.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/get_nasdaq_top.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/ibm-logo.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/__main__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/_version.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/agent/setup_agent.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/console.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/core/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/core/event_logger.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/core/runner.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/core/setters.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/core/unsetters.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/main.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/prompt_handler.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/prompt_setup.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/cli/verbose_output.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/config_manager.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/conversation_history.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/dir_walk_utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/driver_events.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/openai/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/event_bus/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/event_bus/bus.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/event_bus/event.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/event_bus/handler.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/exceptions.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/formatting.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/formatting_token.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/gitignore_utils.py +0 -0
- /janito-3.2.0/janito/providers/alibaba/__init__.py → /janito-3.4.0/janito/hello.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/i18n/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/i18n/messages.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/i18n/pt.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/auth.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/driver_config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/driver_input.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/message_parts.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/model.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/llm/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/mkdocs.yml +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/perf_singleton.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/performance_collector.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/platform_discovery.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/plugins/config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/provider_config.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/provider_registry.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/alibaba/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/alibaba/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/google/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/google/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/google/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/ibm/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/ibm/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/mistral/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/moonshot/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/moonshot/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/openai/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/openai/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/openai/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/registry.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/zai/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/zai/model_info.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/zai/provider.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/regions/__init__.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/regions/cli.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/regions/geo_utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/regions/provider_regions.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/report_events.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/shell.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/README.md +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/copy_file.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/create_directory.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/delete_text_in_file.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/find_files.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/get_file_outline/__init__.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/get_file_outline/core.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/get_file_outline/java_outline.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/get_file_outline/markdown_outline.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/get_file_outline/python_outline.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/get_file_outline/search_outline.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/move_file.py +0 -0
- {janito-3.2.0/janito/plugins/web/webtools/tools → janito-3.4.0/janito/tools/adapters/local}/open_html_in_browser.py +0 -0
- {janito-3.2.0/janito/plugins/web/webtools/tools → janito-3.4.0/janito/tools/adapters/local}/open_url.py +0 -0
- {janito-3.2.0/janito/plugins/dev/pythondev/tools → janito-3.4.0/janito/tools/adapters/local}/python_code_run.py +0 -0
- {janito-3.2.0/janito/plugins/dev/pythondev/tools → janito-3.4.0/janito/tools/adapters/local}/python_command_run.py +0 -0
- {janito-3.2.0/janito/plugins/dev/pythondev/tools → janito-3.4.0/janito/tools/adapters/local}/python_file_run.py +0 -0
- {janito-3.2.0/janito/plugins/dev/visualization/tools → janito-3.4.0/janito/tools/adapters/local}/read_chart.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/read_files.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/remove_directory.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/remove_file.py +0 -0
- {janito-3.2.0/janito/plugins/core/system/tools → janito-3.4.0/janito/tools/adapters/local}/run_bash_command.py +0 -0
- {janito-3.2.0/janito/plugins/core/system/tools → janito-3.4.0/janito/tools/adapters/local}/run_powershell_command.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/search_text/__init__.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/search_text/core.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/search_text/match_lines.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/search_text/pattern_utils.py +0 -0
- {janito-3.2.0/janito/plugins/core/codeanalyzer/tools → janito-3.4.0/janito/tools/adapters/local}/search_text/traverse_directory.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/__init__.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/core.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/css_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/html_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/js_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/json_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/python_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.2.0/janito/plugins/core/filemanager/tools → janito-3.4.0/janito/tools/adapters/local}/view_file.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/base.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/disabled_tools.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/inspect_registry.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/loop_protection.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/path_security.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/path_utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/permissions.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/permissions_parse.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tool_base.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tool_events.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tool_utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tools_adapter.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/tools_schema.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/tools/url_whitelist.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito/utils.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/janito.egg-info/top_level.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/market_prompt_fix.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/market_test.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/mkdocs.yml +0 -0
- {janito-3.2.0 → janito-3.4.0}/mkdocs_hooks.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/__init__.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/__init__.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/search_text/match_lines.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/search_text/pattern_utils.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/codeanalyzer}/tools/search_text/traverse_directory.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.2.0/janito/plugins → janito-3.4.0/plugins/core/filemanager}/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/dev/__init__.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/ui/__init__.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/web/__init__.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/web/webtools/__init__.py +0 -0
- {janito-3.2.0/janito → janito-3.4.0}/plugins/web/webtools/tools/fetch_url.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/pyproject.toml +0 -0
- {janito-3.2.0 → janito-3.4.0}/pytest.ini +0 -0
- {janito-3.2.0 → janito-3.4.0}/requirements-dev.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/requirements.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/setup.cfg +0 -0
- {janito-3.2.0 → janito-3.4.0}/test.txt +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_example.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_http_errors.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_http_errors_direct.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_key_field_behavior.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_key_field_protection.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_loop_protection_return.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/test_market_analyst.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/adapters/local/test_read_files.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_cli_list_models.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_cli_list_providers.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_cli_version.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_disabled_tools.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_plugin_system.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_provider_alibaba.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_provider_cerebras.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tests/test_provider_moonshot.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tools/release.py +0 -0
- {janito-3.2.0 → janito-3.4.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.4.0
|
4
4
|
Summary: A new Python package called janito.
|
5
5
|
Author-email: João Pinto <janito@ikignosis.org>
|
6
6
|
Project-URL: Homepage, https://github.com/ikignosis/janito
|
@@ -30,6 +30,7 @@ Requires-Dist: black; extra == "dev"
|
|
30
30
|
Requires-Dist: questionary>=2.0.1; extra == "dev"
|
31
31
|
Requires-Dist: setuptools_scm>=8.0; extra == "dev"
|
32
32
|
Provides-Extra: coder
|
33
|
+
Requires-Dist: janito-coder; extra == "coder"
|
33
34
|
Dynamic: license-file
|
34
35
|
|
35
36
|
# nctl
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to Janito will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [Unreleased]
|
9
|
+
|
10
|
+
### Removed
|
11
|
+
|
12
|
+
- **Breaking Change**: Removed `--role` argument and interactive profile selection
|
13
|
+
- The `--role` argument has been completely removed from the CLI
|
14
|
+
- Interactive profile selection has been removed from chat mode
|
15
|
+
- Use `--profile <name>` or shorthand flags like `--developer` and `--market` instead
|
16
|
+
- Default behavior now uses the Developer profile when no profile is specified
|
17
|
+
|
18
|
+
### Changed
|
19
|
+
|
20
|
+
- Updated documentation to reflect removal of role argument
|
21
|
+
- Added comprehensive profile documentation in `PROFILES.md`
|
22
|
+
- Simplified profile selection to use explicit flags only
|
23
|
+
|
24
|
+
## [Previous Versions]
|
25
|
+
|
26
|
+
### Added
|
27
|
+
|
28
|
+
- Initial support for profiles and roles
|
29
|
+
- Interactive profile selection in chat mode
|
30
|
+
- `--role` argument for specifying developer roles
|
31
|
+
- `--profile` argument for system prompt templates
|
32
|
+
- `--developer` and `--market` shorthand flags
|
33
|
+
|
34
|
+
### Available Profiles
|
35
|
+
|
36
|
+
- **Developer**: Optimized for software development tasks
|
37
|
+
- **Market Analyst**: Specialized for market analysis and business insights
|
38
|
+
|
39
|
+
### Supported Providers
|
40
|
+
|
41
|
+
- Moonshot AI (default)
|
42
|
+
- OpenAI
|
43
|
+
- Anthropic
|
44
|
+
- IBM WatsonX
|
45
|
+
- Google AI
|
46
|
+
|
47
|
+
---
|
48
|
+
|
49
|
+
For detailed information about profiles and their usage, see [PROFILES.md](PROFILES.md).
|
@@ -517,37 +517,4 @@ 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
|
-
|
553
520
|
**Full Changelog**: https://github.com/ikignosis/janito/compare/v2.22.0...v2.23.0
|
@@ -24,7 +24,6 @@ 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
|
28
27
|
- Use CLI flags to customize behavior (see [CLI Options](../reference/cli-options.md)).
|
29
28
|
|
30
29
|
## 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 excessive file creation calls (max 5 per 10 seconds per file)
|
78
78
|
|
79
79
|
**Return Values:**
|
80
80
|
|
@@ -106,9 +106,6 @@ 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
|
-
|
112
109
|
### Tool Usage
|
113
110
|
|
114
111
|
Janito includes powerful built-in tools for:
|
@@ -0,0 +1,38 @@
|
|
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
|
@@ -22,7 +22,6 @@ 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
|
26
25
|
|
27
26
|
import time
|
28
27
|
|
@@ -114,10 +113,6 @@ class ChatSession:
|
|
114
113
|
|
115
114
|
# Check if multi-line mode should be enabled by default
|
116
115
|
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
|
121
116
|
|
122
117
|
def _select_profile_and_role(self, args, role):
|
123
118
|
profile, role_arg, python_profile, market_profile = self._extract_args(args)
|
@@ -288,13 +283,7 @@ class ChatSession:
|
|
288
283
|
)
|
289
284
|
)
|
290
285
|
|
291
|
-
|
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
|
-
|
286
|
+
self._prompt_handler.run_prompt(cmd_input)
|
298
287
|
end_time = time.time()
|
299
288
|
elapsed = end_time - start_time
|
300
289
|
self.msg_count += 1
|
@@ -59,53 +59,39 @@ 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
|
-
|
62
|
+
if command == "list":
|
63
|
+
sites = whitelist_manager.get_allowed_sites()
|
64
|
+
if sites:
|
65
|
+
print("Allowed sites:")
|
66
|
+
for site in sites:
|
67
|
+
print(f" • {site}")
|
68
|
+
else:
|
69
|
+
print("No sites are whitelisted (all sites are allowed)")
|
70
|
+
|
71
|
+
elif command == "add":
|
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
|
+
|
72
95
|
else:
|
73
96
|
print(f"Error: Unknown command '{command}'")
|
74
97
|
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)")
|
@@ -8,11 +8,7 @@ from janito.plugins.discovery import list_available_plugins
|
|
8
8
|
import os
|
9
9
|
from janito.plugins.manager import PluginManager
|
10
10
|
from janito.plugins.builtin import BuiltinPluginRegistry
|
11
|
-
from janito.plugins.auto_loader_fixed import
|
12
|
-
load_core_plugins,
|
13
|
-
get_loaded_core_plugins,
|
14
|
-
is_core_plugin,
|
15
|
-
)
|
11
|
+
from janito.plugins.auto_loader_fixed import load_core_plugins, get_loaded_core_plugins, is_core_plugin
|
16
12
|
from rich.console import Console
|
17
13
|
from rich.table import Table
|
18
14
|
from rich.panel import Panel
|
@@ -55,8 +51,7 @@ def _list_available_plugins():
|
|
55
51
|
console.print(table)
|
56
52
|
|
57
53
|
# Show core plugins
|
58
|
-
from janito.
|
59
|
-
|
54
|
+
from janito.plugins.core_loader_fixed import get_core_plugins
|
60
55
|
core_plugins = get_core_plugins()
|
61
56
|
core_table = Table(title="Core Plugins (Enabled by Default)")
|
62
57
|
core_table.add_column("Plugin Name", style="cyan", no_wrap=True)
|
@@ -67,16 +62,14 @@ def _list_available_plugins():
|
|
67
62
|
|
68
63
|
console.print(core_table)
|
69
64
|
else:
|
70
|
-
console.print(
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
)
|
79
|
-
)
|
65
|
+
console.print(Panel(
|
66
|
+
"No plugins found in search paths\n"
|
67
|
+
f"[dim]Search paths:[/dim]\n"
|
68
|
+
f" • {os.getcwd()}/plugins\n"
|
69
|
+
f" • {os.path.expanduser('~')}/.janito/plugins",
|
70
|
+
title="No Plugins Found",
|
71
|
+
style="yellow"
|
72
|
+
))
|
80
73
|
|
81
74
|
|
82
75
|
def _print_builtin_plugins(builtin_plugins):
|
@@ -99,7 +92,7 @@ def _print_external_plugins(available, builtin_plugins):
|
|
99
92
|
def _list_plugin_resources():
|
100
93
|
"""List all resources from loaded plugins using rich formatting."""
|
101
94
|
from janito.plugins.auto_loader_fixed import get_plugin_manager
|
102
|
-
|
95
|
+
|
103
96
|
console = Console()
|
104
97
|
manager = get_plugin_manager()
|
105
98
|
all_resources = manager.list_all_resources()
|
@@ -107,11 +100,11 @@ def _list_plugin_resources():
|
|
107
100
|
if all_resources:
|
108
101
|
for plugin_name, resources in all_resources.items():
|
109
102
|
metadata = manager.get_plugin_metadata(plugin_name)
|
110
|
-
version = metadata.version if metadata else
|
111
|
-
|
103
|
+
version = metadata.version if metadata else 'unknown'
|
104
|
+
|
112
105
|
# Create panel for each plugin
|
113
106
|
panel_content = []
|
114
|
-
|
107
|
+
|
115
108
|
tools = [r for r in resources if r["type"] == "tool"]
|
116
109
|
commands = [r for r in resources if r["type"] == "command"]
|
117
110
|
configs = [r for r in resources if r["type"] == "config"]
|
@@ -129,25 +122,19 @@ def _list_plugin_resources():
|
|
129
122
|
if configs:
|
130
123
|
panel_content.append("[bold yellow]Configuration:[/bold yellow]")
|
131
124
|
for config in configs:
|
132
|
-
panel_content.append(
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
title=f"{plugin_name} v{version}",
|
140
|
-
style="cyan",
|
141
|
-
)
|
142
|
-
)
|
125
|
+
panel_content.append(f" • {config['name']}: {config['description']}")
|
126
|
+
|
127
|
+
console.print(Panel(
|
128
|
+
"\n".join(panel_content),
|
129
|
+
title=f"{plugin_name} v{version}",
|
130
|
+
style="cyan"
|
131
|
+
))
|
143
132
|
else:
|
144
|
-
console.print(
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
)
|
150
|
-
)
|
133
|
+
console.print(Panel(
|
134
|
+
"No plugins are currently loaded.",
|
135
|
+
title="No Plugin Resources",
|
136
|
+
style="yellow"
|
137
|
+
))
|
151
138
|
|
152
139
|
|
153
140
|
def _print_resources_by_type(resources):
|
@@ -175,7 +162,7 @@ def _print_resources_by_type(resources):
|
|
175
162
|
def _list_loaded_plugins():
|
176
163
|
"""List loaded plugins using rich formatting."""
|
177
164
|
from janito.plugins.auto_loader_fixed import get_plugin_manager
|
178
|
-
|
165
|
+
|
179
166
|
console = Console()
|
180
167
|
manager = get_plugin_manager()
|
181
168
|
loaded = manager.list_plugins()
|
@@ -190,38 +177,42 @@ def _list_loaded_plugins():
|
|
190
177
|
|
191
178
|
core_plugins = []
|
192
179
|
other_plugins = []
|
193
|
-
|
180
|
+
|
194
181
|
for plugin_name in loaded:
|
195
182
|
if is_core_plugin(plugin_name):
|
196
183
|
core_plugins.append(plugin_name)
|
197
184
|
else:
|
198
185
|
other_plugins.append(plugin_name)
|
199
|
-
|
186
|
+
|
200
187
|
# Add core plugins
|
201
188
|
for plugin_name in core_plugins:
|
202
189
|
metadata = manager.get_plugin_metadata(plugin_name)
|
203
190
|
if metadata:
|
204
191
|
table.add_row(
|
205
|
-
metadata.name,
|
192
|
+
metadata.name,
|
193
|
+
metadata.version,
|
194
|
+
metadata.description,
|
195
|
+
"🔵 Core"
|
206
196
|
)
|
207
|
-
|
197
|
+
|
208
198
|
# Add other plugins
|
209
199
|
for plugin_name in other_plugins:
|
210
200
|
metadata = manager.get_plugin_metadata(plugin_name)
|
211
201
|
if metadata:
|
212
202
|
table.add_row(
|
213
|
-
metadata.name,
|
203
|
+
metadata.name,
|
204
|
+
metadata.version,
|
205
|
+
metadata.description,
|
206
|
+
"🔶 External"
|
214
207
|
)
|
215
208
|
|
216
209
|
console.print(table)
|
217
210
|
else:
|
218
|
-
console.print(
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
)
|
224
|
-
)
|
211
|
+
console.print(Panel(
|
212
|
+
"No plugins are currently loaded.",
|
213
|
+
title="No Plugins Loaded",
|
214
|
+
style="yellow"
|
215
|
+
))
|
225
216
|
|
226
217
|
|
227
218
|
def _print_plugin_details(manager, plugin_name):
|
@@ -5,7 +5,6 @@ import sys
|
|
5
5
|
from janito.cli.cli_commands.list_providers import handle_list_providers
|
6
6
|
from janito.cli.cli_commands.list_models import handle_list_models
|
7
7
|
from janito.cli.cli_commands.list_tools import handle_list_tools
|
8
|
-
from janito.cli.cli_commands.check_tools import handle_check_tools
|
9
8
|
from janito.cli.cli_commands.show_config import handle_show_config
|
10
9
|
from janito.cli.cli_commands.list_config import handle_list_config
|
11
10
|
from janito.cli.cli_commands.list_drivers import handle_list_drivers
|
@@ -29,7 +28,6 @@ GETTER_KEYS = [
|
|
29
28
|
"list_plugins",
|
30
29
|
"list_plugins_available",
|
31
30
|
"list_resources",
|
32
|
-
"check_tools",
|
33
31
|
]
|
34
32
|
|
35
33
|
|
@@ -66,7 +64,6 @@ def handle_getter(args, config_mgr=None):
|
|
66
64
|
"list_plugins": partial(handle_list_plugins, args),
|
67
65
|
"list_plugins_available": partial(handle_list_plugins, args),
|
68
66
|
"list_resources": partial(handle_list_plugins, args),
|
69
|
-
"check_tools": partial(handle_check_tools, args),
|
70
67
|
}
|
71
68
|
for arg in GETTER_KEYS:
|
72
69
|
if getattr(args, arg, False) and arg in GETTER_DISPATCH:
|
@@ -0,0 +1,54 @@
|
|
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
|
+
for provider_name in LLMProviderRegistry.list_providers():
|
25
|
+
provider_class = LLMProviderRegistry.get(provider_name)
|
26
|
+
if not provider_class:
|
27
|
+
continue
|
28
|
+
|
29
|
+
# Get model specs for this provider
|
30
|
+
try:
|
31
|
+
if hasattr(provider_class, "MODEL_SPECS"):
|
32
|
+
model_specs = provider_class.MODEL_SPECS
|
33
|
+
for spec_model_name in model_specs.keys():
|
34
|
+
if spec_model_name.lower() == model_name:
|
35
|
+
return provider_name
|
36
|
+
|
37
|
+
# Handle special cases like moonshot
|
38
|
+
if provider_name == "moonshot":
|
39
|
+
try:
|
40
|
+
from janito.providers.moonshot.model_info import (
|
41
|
+
MOONSHOT_MODEL_SPECS,
|
42
|
+
)
|
43
|
+
|
44
|
+
for spec_model_name in MOONSHOT_MODEL_SPECS.keys():
|
45
|
+
if spec_model_name.lower() == model_name:
|
46
|
+
return "moonshot"
|
47
|
+
except ImportError:
|
48
|
+
pass
|
49
|
+
|
50
|
+
except Exception:
|
51
|
+
# Skip providers that have issues accessing model specs
|
52
|
+
continue
|
53
|
+
|
54
|
+
return None
|
@@ -238,13 +238,6 @@ definition = [
|
|
238
238
|
"help": "List all resources (tools, commands, config) from loaded plugins",
|
239
239
|
},
|
240
240
|
),
|
241
|
-
(
|
242
|
-
["--check-tools"],
|
243
|
-
{
|
244
|
-
"action": "store_true",
|
245
|
-
"help": "Check all registered tools for signature validation and availability",
|
246
|
-
},
|
247
|
-
),
|
248
241
|
]
|
249
242
|
|
250
243
|
MODIFIER_KEYS = [
|
@@ -276,7 +269,18 @@ GETTER_KEYS = [
|
|
276
269
|
"region_info",
|
277
270
|
"list_providers_region",
|
278
271
|
"ping",
|
279
|
-
|
272
|
+
]
|
273
|
+
GETTER_KEYS = [
|
274
|
+
"show_config",
|
275
|
+
"list_providers",
|
276
|
+
"list_profiles",
|
277
|
+
"list_models",
|
278
|
+
"list_tools",
|
279
|
+
"list_config",
|
280
|
+
"list_drivers",
|
281
|
+
"region_info",
|
282
|
+
"list_providers_region",
|
283
|
+
"ping",
|
280
284
|
]
|
281
285
|
|
282
286
|
|
@@ -402,7 +406,6 @@ class JanitoCLI:
|
|
402
406
|
or self.args.list_plugins_available
|
403
407
|
or self.args.list_resources
|
404
408
|
or self.args.ping
|
405
|
-
or self.args.check_tools
|
406
409
|
):
|
407
410
|
self._maybe_print_verbose_provider_model()
|
408
411
|
handle_getter(self.args)
|
@@ -207,26 +207,15 @@ 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
|
-
|
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
|
-
|
210
|
+
final_event = self.agent.chat(prompt=user_prompt)
|
211
|
+
if hasattr(self.agent, "set_latest_event"):
|
212
|
+
self.agent.set_latest_event(final_event)
|
213
|
+
self.agent.last_event = final_event
|
214
|
+
self._print_verbose_debug(f"agent.chat() returned: {final_event}")
|
215
|
+
self._print_verbose_final_event(final_event)
|
216
|
+
if on_event and final_event is not None:
|
217
|
+
on_event(final_event)
|
218
|
+
global_event_bus.publish(final_event)
|
230
219
|
except KeyboardInterrupt:
|
231
220
|
# Capture user interrupt / cancellation
|
232
221
|
self.console.print("[red]Interrupted by the user.[/red]")
|
@@ -181,7 +181,6 @@ class OpenAIModelDriver(LLMDriver):
|
|
181
181
|
is_insufficient_quota = (
|
182
182
|
"insufficient_quota" in lower_err
|
183
183
|
or "exceeded your current quota" in lower_err
|
184
|
-
or "exceeded_current_quota_error" in lower_err
|
185
184
|
)
|
186
185
|
is_rate_limit = (
|
187
186
|
status_code == 429
|