janito 2.32.0__tar.gz → 3.0.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-2.32.0 → janito-3.0.0}/PKG-INFO +1 -2
- janito-3.0.0/docs/CHANGELOG.md +133 -0
- janito-3.0.0/docs/CHANGELOG_3.0.0.md +141 -0
- janito-3.0.0/init_janito_tools.py +51 -0
- {janito-2.32.0 → janito-3.0.0}/janito/agent/setup_agent.py +26 -0
- {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +2 -0
- {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +2 -0
- {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +2 -0
- {janito-2.32.0 → janito-3.0.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +2 -0
- janito-3.0.0/janito/cli/cli_commands/check_tools.py +212 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_plugins.py +52 -43
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/getters.py +3 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/main_cli.py +9 -12
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/openai/driver.py +1 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/zai/driver.py +1 -0
- janito-3.0.0/janito/llm/auth_utils.py +30 -0
- janito-3.0.0/janito/plugin_system/__init__.py +10 -0
- {janito-2.32.0/janito/plugins → janito-3.0.0/janito/plugin_system}/base.py +5 -2
- janito-2.32.0/janito/plugins/core_loader_fixed.py → janito-3.0.0/janito/plugin_system/core_loader.py +45 -26
- janito-3.0.0/janito/plugin_system/core_loader_fixed.py +149 -0
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/auto_loader_fixed.py +12 -11
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/builtin.py +15 -1
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/codeanalyzer/__init__.py +9 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/filemanager/__init__.py +33 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/__init__.py +1 -1
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/plugin.py +2 -2
- janito-3.0.0/janito/plugins/core/imagedisplay/tools/__init__.py +1 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/tools/show_image.py +12 -3
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/imagedisplay/tools/show_image_grid.py +12 -3
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/system/__init__.py +3 -0
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/core_adapter.py +11 -9
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/dev/pythondev/__init__.py +9 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/dev/visualization/__init__.py +3 -0
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/discovery.py +5 -5
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/example_plugin.py +1 -1
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/manager.py +1 -1
- janito-3.0.0/janito/plugins/tools/__init__.py +10 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/ask_user.py +3 -3
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/copy_file.py +3 -3
- janito-3.0.0/janito/plugins/tools/core_tools_plugin.py +88 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/create_directory.py +3 -3
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/create_file.py +4 -4
- janito-3.0.0/janito/plugins/tools/decorators.py +19 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/delete_text_in_file.py +4 -4
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/fetch_url.py +48 -30
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/find_files.py +3 -3
- janito-3.0.0/janito/plugins/tools/get_file_outline/__init__.py +7 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/core.py +3 -3
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/move_file.py +3 -3
- {janito-2.32.0/plugins/web/webtools → janito-3.0.0/janito/plugins}/tools/open_html_in_browser.py +3 -3
- {janito-2.32.0/plugins/web/webtools → janito-3.0.0/janito/plugins}/tools/open_url.py +3 -3
- {janito-2.32.0/plugins/dev/pythondev → janito-3.0.0/janito/plugins}/tools/python_code_run.py +3 -3
- {janito-2.32.0/plugins/dev/pythondev → janito-3.0.0/janito/plugins}/tools/python_command_run.py +3 -3
- {janito-2.32.0/plugins/dev/pythondev → janito-3.0.0/janito/plugins}/tools/python_file_run.py +3 -3
- {janito-2.32.0/plugins/dev/visualization → janito-3.0.0/janito/plugins}/tools/read_chart.py +3 -3
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/read_files.py +3 -3
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/remove_directory.py +3 -3
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/remove_file.py +3 -3
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/replace_text_in_file.py +4 -4
- {janito-2.32.0/plugins/core/system → janito-3.0.0/janito/plugins}/tools/run_bash_command.py +3 -3
- {janito-2.32.0/plugins/core/system → janito-3.0.0/janito/plugins}/tools/run_powershell_command.py +3 -3
- janito-3.0.0/janito/plugins/tools/search_text/__init__.py +7 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/core.py +3 -3
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/show_image.py +15 -6
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/tools}/show_image_grid.py +15 -6
- janito-3.0.0/janito/plugins/tools/validate_file_syntax/__init__.py +7 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/core.py +2 -2
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/view_file.py +3 -3
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/web/webtools/tools/fetch_url.py +37 -27
- janito-3.0.0/janito/tools/__init__.py +60 -0
- janito-3.0.0/janito/tools/adapters/__init__.py +6 -0
- janito-3.0.0/janito/tools/adapters/local/__init__.py +10 -0
- janito-3.0.0/janito/tools/cli_initializer.py +88 -0
- janito-3.0.0/janito/tools/function_adapter.py +142 -0
- janito-3.0.0/janito/tools/initialize.py +70 -0
- {janito-2.32.0 → janito-3.0.0}/janito.egg-info/PKG-INFO +1 -2
- {janito-2.32.0 → janito-3.0.0}/janito.egg-info/SOURCES.txt +121 -112
- {janito-2.32.0 → janito-3.0.0}/janito.egg-info/requires.txt +0 -1
- janito-3.0.0/test_http_errors.py +100 -0
- janito-3.0.0/test_http_errors_direct.py +53 -0
- janito-2.32.0/docs/CHANGELOG.md +0 -49
- janito-2.32.0/janito/llm/auth_utils.py +0 -21
- janito-2.32.0/janito/plugins/__init__.py +0 -17
- janito-2.32.0/janito/plugins/core_loader.py +0 -120
- janito-2.32.0/janito/tools/__init__.py +0 -36
- janito-2.32.0/janito/tools/adapters/__init__.py +0 -1
- janito-2.32.0/janito/tools/adapters/local/__init__.py +0 -73
- janito-2.32.0/janito/tools/function_adapter.py +0 -65
- janito-2.32.0/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -1
- janito-2.32.0/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -1
- janito-2.32.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -1
- janito-2.32.0/plugins/core/imagedisplay/tools/__init__.py +0 -1
- janito-2.32.0/plugins.txt +0 -1
- {janito-2.32.0 → janito-3.0.0}/.codespellrc +0 -0
- {janito-2.32.0 → janito-3.0.0}/.gitattributes +0 -0
- {janito-2.32.0 → janito-3.0.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-2.32.0 → janito-3.0.0}/.gitignore +0 -0
- {janito-2.32.0 → janito-3.0.0}/.pre-commit-config.yaml +0 -0
- {janito-2.32.0 → janito-3.0.0}/.secrets.baseline +0 -0
- {janito-2.32.0 → janito-3.0.0}/.vscode/settings.json +0 -0
- {janito-2.32.0 → janito-3.0.0}/LICENSE +0 -0
- {janito-2.32.0 → janito-3.0.0}/MARKET_ANALYST_README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/README-dev.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/RELEASE_COMPARISON.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/UPDATING_DOCS.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/adding_mcp.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/DIV.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/Interfaces.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/PROFILES.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/about/costs.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/about/vs-webchats.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/about/why.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/alibaba-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/alternatives.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/cerebras-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/concepts/analysis-style.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/concepts/index.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/deepseek-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/driver-flow.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/driver-request-cancellation.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/drivers/events.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/drivers.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/event-bus.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/configuration.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/developing.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/disabled-tools.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/installation.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/market-data-sources.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/profiles.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/prompting/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/read-chart-examples.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/security-commands.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/terminal-shell.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/url-whitelist.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/using.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/guides/using_tools.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/ibm-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/index.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/llm-drivers.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/meta/quality-checks.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/mistral-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/moonshot-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/openai-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/MIGRATION_COMPLETE.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/api-reference.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/architecture.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/filemanager.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/configuration.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/examples/advanced.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/examples/basic.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/examples/intermediate.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/plugin-development.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/plugin-resources.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/publishing.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/remote-plugins.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/plugins/testing.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/provider-platform-access.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/public-sources.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/reference/api.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/reference/azure-openai.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/reference/cli-options.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/reference/message-handler-model.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/security.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/supported-providers-models.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/tools/search-text.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/tools/show-image-grid.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/tools/show-image.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/tools-index.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/tools-natural-results.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/tools-precision.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/docs/z-ai-setup.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/examples/loop_protection_example.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/examples/loop_protection_tool_example.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/get_nasdaq_top.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/ibm-logo.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/__main__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/_version.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/session.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/config.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/console.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/event_logger.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/model_guesser.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/runner.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/setters.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/core/unsetters.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/main.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/prompt_core.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/prompt_handler.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/prompt_setup.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/cli/verbose_output.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/config.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/config_manager.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/conversation_history.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/dir_walk_utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/driver_events.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/openai/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/event_bus/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/event_bus/bus.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/event_bus/event.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/event_bus/handler.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/exceptions.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/formatting.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/formatting_token.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/gitignore_utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/i18n/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/i18n/it.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/i18n/messages.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/i18n/pt.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/agent.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/auth.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/driver.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/driver_config.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/driver_input.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/message_parts.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/model.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/llm/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/mkdocs.yml +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/perf_singleton.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/performance_collector.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/platform_discovery.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/auto_loader.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/config.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/__init__.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/__init__.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/core.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/java_outline.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/markdown_outline.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/python_outline.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/get_file_outline/search_outline.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/__init__.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/core.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/match_lines.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/pattern_utils.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/codeanalyzer/tools}/search_text/traverse_directory.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/copy_file.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/create_directory.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/filemanager/tools/create_file.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/delete_text_in_file.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/find_files.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/move_file.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/read_files.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/remove_directory.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/remove_file.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/__init__.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/core.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/css_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/html_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/js_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/json_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/markdown_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/ps1_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/python_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/xml_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/yaml_validator.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/filemanager/tools}/view_file.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/system/tools}/run_bash_command.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/core/system/tools}/run_powershell_command.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/dev/__init__.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/pythondev/tools}/python_code_run.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/pythondev/tools}/python_command_run.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/pythondev/tools}/python_file_run.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/dev/visualization/tools}/read_chart.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/plugins/discovery_core.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/java_outline.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/python_outline.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/get_file_outline/search_outline.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/match_lines.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/pattern_utils.py +0 -0
- {janito-2.32.0/plugins/core/codeanalyzer → janito-3.0.0/janito/plugins}/tools/search_text/traverse_directory.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-2.32.0/plugins/core/filemanager → janito-3.0.0/janito/plugins}/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/ui/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/ui/userinterface/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/web/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0/janito}/plugins/web/webtools/__init__.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/web/webtools/tools}/open_html_in_browser.py +0 -0
- {janito-2.32.0/janito/tools/adapters/local → janito-3.0.0/janito/plugins/web/webtools/tools}/open_url.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/provider_config.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/provider_registry.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/alibaba/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/alibaba/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/alibaba/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/cerebras/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/cerebras/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/cerebras/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/google/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/google/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/google/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/ibm/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/mistral/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/mistral/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/mistral/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/moonshot/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/moonshot/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/moonshot/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/registry.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/model_info.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/provider.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/regions/__init__.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/regions/cli.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/regions/geo_utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/regions/provider_regions.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/report_events.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/shell.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/README.md +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/base.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/disabled_tools.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/inspect_registry.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/loop_protection.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/path_security.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/path_utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/permissions.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/permissions_parse.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_base.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_events.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tool_utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tools_adapter.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/tools_schema.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/tools/url_whitelist.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito/utils.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/janito.egg-info/top_level.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/market_prompt_fix.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/market_test.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/mkdocs.yml +0 -0
- {janito-2.32.0 → janito-3.0.0}/mkdocs_hooks.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/pyproject.toml +0 -0
- {janito-2.32.0 → janito-3.0.0}/pytest.ini +0 -0
- {janito-2.32.0 → janito-3.0.0}/requirements-dev.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/requirements.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/setup.cfg +0 -0
- {janito-2.32.0 → janito-3.0.0}/test.txt +0 -0
- {janito-2.32.0 → janito-3.0.0}/test_example.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/test_key_field_behavior.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/test_key_field_protection.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/test_loop_protection_return.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/test_market_analyst.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/adapters/local/test_read_files.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_models.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_providers.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_cli_version.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_disabled_tools.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_plugin_system.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_provider_alibaba.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_provider_cerebras.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tests/test_provider_moonshot.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tools/release.py +0 -0
- {janito-2.32.0 → janito-3.0.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version:
|
3
|
+
Version: 3.0.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,7 +30,6 @@ 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"
|
34
33
|
Dynamic: license-file
|
35
34
|
|
36
35
|
# nctl
|
@@ -0,0 +1,133 @@
|
|
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
|
+
### Added
|
11
|
+
|
12
|
+
### Changed
|
13
|
+
|
14
|
+
### Deprecated
|
15
|
+
|
16
|
+
### Removed
|
17
|
+
|
18
|
+
### Fixed
|
19
|
+
|
20
|
+
### Security
|
21
|
+
|
22
|
+
## [3.0.0] - 2025-08-23
|
23
|
+
|
24
|
+
### Major Architecture Refactoring
|
25
|
+
|
26
|
+
#### Plugin System Overhaul
|
27
|
+
- **Complete plugin system redesign** with unified architecture
|
28
|
+
- **Consolidated core plugins** into cohesive `janito/plugins/` structure
|
29
|
+
- **Eliminated legacy loading mechanisms** (`core_loader.py`, `core_loader_fixed.py`, `base.py`)
|
30
|
+
- **Streamlined plugin discovery** with improved initialization process
|
31
|
+
- **Enhanced maintainability** through simplified plugin architecture
|
32
|
+
|
33
|
+
#### Removed Legacy Components
|
34
|
+
- Deleted deprecated plugin loading systems
|
35
|
+
- Removed redundant `plugins.txt` configuration file
|
36
|
+
- Eliminated duplicate tool adapter implementations
|
37
|
+
- Cleaned up temporary test files (`test_core_plugins*.py`)
|
38
|
+
|
39
|
+
#### Enhanced Plugin Organization
|
40
|
+
- **Unified plugin structure** with clear module hierarchy
|
41
|
+
- **Consolidated tool categories**:
|
42
|
+
- Core system tools (file operations, system commands)
|
43
|
+
- Development tools (Python execution, code analysis)
|
44
|
+
- UI tools (user interaction, visualization)
|
45
|
+
- Web tools (URL fetching, browser integration)
|
46
|
+
- **Improved plugin discovery** with automatic initialization
|
47
|
+
|
48
|
+
### Technical Improvements
|
49
|
+
|
50
|
+
#### Code Quality
|
51
|
+
- **Reduced complexity** through architectural simplification
|
52
|
+
- **Eliminated code duplication** across plugin implementations
|
53
|
+
- **Enhanced modularity** with clear separation of concerns
|
54
|
+
- **Improved testability** with focused plugin modules
|
55
|
+
|
56
|
+
#### Configuration Simplification
|
57
|
+
- **Streamlined plugin configuration** with unified settings
|
58
|
+
- **Simplified initialization process** for new plugins
|
59
|
+
- **Reduced configuration overhead** for plugin developers
|
60
|
+
|
61
|
+
### Breaking Changes
|
62
|
+
|
63
|
+
#### Plugin System
|
64
|
+
- **Legacy plugin loading mechanisms removed** - plugins must use new system
|
65
|
+
- **Plugin directory structure changed** - see updated documentation
|
66
|
+
- **Configuration format updated** - simplified plugin settings
|
67
|
+
|
68
|
+
#### Removed Files
|
69
|
+
- `plugins.txt` configuration file
|
70
|
+
- Legacy plugin loading modules
|
71
|
+
- Temporary test files
|
72
|
+
- Redundant tool adapter implementations
|
73
|
+
|
74
|
+
### Migration Guide
|
75
|
+
|
76
|
+
#### For Plugin Developers
|
77
|
+
1. **Update plugin structure** to match new unified architecture
|
78
|
+
2. **Migrate configuration** to new simplified format
|
79
|
+
3. **Test compatibility** with new plugin discovery system
|
80
|
+
4. **Review documentation** for updated development patterns
|
81
|
+
|
82
|
+
#### For Users
|
83
|
+
1. **Update configuration files** to use new plugin system
|
84
|
+
2. **Review plugin settings** for simplified format
|
85
|
+
3. **Test existing workflows** with new architecture
|
86
|
+
|
87
|
+
### Documentation Updates
|
88
|
+
- **Comprehensive plugin development guide** with updated patterns
|
89
|
+
- **Migration documentation** for legacy plugin system
|
90
|
+
- **Enhanced API reference** with new plugin interfaces
|
91
|
+
|
92
|
+
## [2.27.0] - 2025-08-22
|
93
|
+
|
94
|
+
### Removed
|
95
|
+
|
96
|
+
- **Breaking Change**: Removed `--role` argument and interactive profile selection
|
97
|
+
- The `--role` argument has been completely removed from the CLI
|
98
|
+
- Interactive profile selection has been removed from chat mode
|
99
|
+
- Use `--profile <name>` or shorthand flags like `--developer` and `--market` instead
|
100
|
+
- Default behavior now uses the Developer profile when no profile is specified
|
101
|
+
|
102
|
+
### Changed
|
103
|
+
|
104
|
+
- Updated documentation to reflect removal of role argument
|
105
|
+
- Added comprehensive profile documentation in `PROFILES.md`
|
106
|
+
- Simplified profile selection to use explicit flags only
|
107
|
+
|
108
|
+
## [Previous Versions]
|
109
|
+
|
110
|
+
### Added
|
111
|
+
|
112
|
+
- Initial support for profiles and roles
|
113
|
+
- Interactive profile selection in chat mode
|
114
|
+
- `--role` argument for specifying developer roles
|
115
|
+
- `--profile` argument for system prompt templates
|
116
|
+
- `--developer` and `--market` shorthand flags
|
117
|
+
|
118
|
+
### Available Profiles
|
119
|
+
|
120
|
+
- **Developer**: Optimized for software development tasks
|
121
|
+
- **Market Analyst**: Specialized for market analysis and business insights
|
122
|
+
|
123
|
+
### Supported Providers
|
124
|
+
|
125
|
+
- Moonshot AI (default)
|
126
|
+
- OpenAI
|
127
|
+
- Anthropic
|
128
|
+
- IBM WatsonX
|
129
|
+
- Google AI
|
130
|
+
|
131
|
+
---
|
132
|
+
|
133
|
+
For detailed information about profiles and their usage, see [PROFILES.md](PROFILES.md).
|
@@ -0,0 +1,141 @@
|
|
1
|
+
# Changelog - Version 3.0.0
|
2
|
+
|
3
|
+
## [3.0.0] - 2025-08-23
|
4
|
+
|
5
|
+
### Major Architecture Refactoring
|
6
|
+
|
7
|
+
#### Plugin System Overhaul
|
8
|
+
- **Complete plugin system redesign** with unified architecture
|
9
|
+
- **Consolidated core plugins** into cohesive `janito/plugins/` structure
|
10
|
+
- **Eliminated legacy loading mechanisms** (`core_loader.py`, `core_loader_fixed.py`, `base.py`)
|
11
|
+
- **Streamlined plugin discovery** with improved initialization process
|
12
|
+
- **Enhanced maintainability** through simplified plugin architecture
|
13
|
+
|
14
|
+
#### Removed Legacy Components
|
15
|
+
- Deleted deprecated plugin loading systems
|
16
|
+
- Removed redundant `plugins.txt` configuration file
|
17
|
+
- Eliminated duplicate tool adapter implementations
|
18
|
+
- Cleaned up temporary test files (`test_core_plugins*.py`)
|
19
|
+
|
20
|
+
#### Enhanced Plugin Organization
|
21
|
+
- **Unified plugin structure** with clear module hierarchy
|
22
|
+
- **Consolidated tool categories**:
|
23
|
+
- Core system tools (file operations, system commands)
|
24
|
+
- Development tools (Python execution, code analysis)
|
25
|
+
- UI tools (user interaction, visualization)
|
26
|
+
- Web tools (URL fetching, browser integration)
|
27
|
+
- **Improved plugin discovery** with automatic initialization
|
28
|
+
|
29
|
+
### Technical Improvements
|
30
|
+
|
31
|
+
#### Code Quality
|
32
|
+
- **Reduced complexity** through architectural simplification
|
33
|
+
- **Eliminated code duplication** across plugin implementations
|
34
|
+
- **Enhanced modularity** with clear separation of concerns
|
35
|
+
- **Improved testability** with focused plugin modules
|
36
|
+
|
37
|
+
#### Configuration Simplification
|
38
|
+
- **Streamlined plugin configuration** with unified settings
|
39
|
+
- **Simplified initialization process** for new plugins
|
40
|
+
- **Reduced configuration overhead** for plugin developers
|
41
|
+
|
42
|
+
### Developer Experience
|
43
|
+
|
44
|
+
#### Plugin Development
|
45
|
+
- **Simplified plugin creation** with consistent patterns
|
46
|
+
- **Clear plugin boundaries** and responsibilities
|
47
|
+
- **Enhanced documentation** with comprehensive examples
|
48
|
+
- **Reduced boilerplate** code for new plugins
|
49
|
+
|
50
|
+
#### Migration Path
|
51
|
+
- **Backward compatibility** maintained for existing plugins
|
52
|
+
- **Smooth transition** from legacy plugin system
|
53
|
+
- **Comprehensive documentation** for migration guidance
|
54
|
+
|
55
|
+
### Breaking Changes
|
56
|
+
|
57
|
+
#### Plugin System
|
58
|
+
- **Legacy plugin loading mechanisms removed** - plugins must use new system
|
59
|
+
- **Plugin directory structure changed** - see updated documentation
|
60
|
+
- **Configuration format updated** - simplified plugin settings
|
61
|
+
|
62
|
+
#### Removed Files
|
63
|
+
- `plugins.txt` configuration file
|
64
|
+
- Legacy plugin loading modules
|
65
|
+
- Temporary test files
|
66
|
+
- Redundant tool adapter implementations
|
67
|
+
|
68
|
+
### Migration Guide
|
69
|
+
|
70
|
+
#### For Plugin Developers
|
71
|
+
1. **Update plugin structure** to match new unified architecture
|
72
|
+
2. **Migrate configuration** to new simplified format
|
73
|
+
3. **Test compatibility** with new plugin discovery system
|
74
|
+
4. **Review documentation** for updated development patterns
|
75
|
+
|
76
|
+
#### For Users
|
77
|
+
1. **Update configuration files** to use new plugin system
|
78
|
+
2. **Review plugin settings** for simplified format
|
79
|
+
3. **Test existing workflows** with new architecture
|
80
|
+
|
81
|
+
### Documentation Updates
|
82
|
+
|
83
|
+
#### New Documentation
|
84
|
+
- **Comprehensive plugin development guide** with updated patterns
|
85
|
+
- **Migration documentation** for legacy plugin system
|
86
|
+
- **Enhanced API reference** with new plugin interfaces
|
87
|
+
- **Updated examples** demonstrating new architecture
|
88
|
+
|
89
|
+
#### Updated Guides
|
90
|
+
- **Plugin creation tutorials** with modern patterns
|
91
|
+
- **Configuration documentation** reflecting new system
|
92
|
+
- **Best practices** for plugin development
|
93
|
+
|
94
|
+
### Performance Improvements
|
95
|
+
|
96
|
+
#### Startup Time
|
97
|
+
- **Faster plugin discovery** through optimized loading
|
98
|
+
- **Reduced initialization overhead** with consolidated modules
|
99
|
+
- **Improved caching** for plugin metadata
|
100
|
+
|
101
|
+
#### Memory Usage
|
102
|
+
- **Reduced memory footprint** through code consolidation
|
103
|
+
- **Eliminated duplicate implementations** across plugins
|
104
|
+
- **Optimized plugin loading** with lazy initialization
|
105
|
+
|
106
|
+
### Security Enhancements
|
107
|
+
|
108
|
+
#### Plugin Isolation
|
109
|
+
- **Improved plugin sandboxing** with clear boundaries
|
110
|
+
- **Enhanced security validation** for plugin loading
|
111
|
+
- **Reduced attack surface** through simplified architecture
|
112
|
+
|
113
|
+
### Future Roadmap
|
114
|
+
|
115
|
+
#### Plugin Ecosystem
|
116
|
+
- **Community plugin repository** integration planned
|
117
|
+
- **Plugin marketplace** development in progress
|
118
|
+
- **Advanced plugin features** for complex workflows
|
119
|
+
|
120
|
+
#### Technical Enhancements
|
121
|
+
- **Performance optimizations** for large plugin sets
|
122
|
+
- **Advanced plugin configuration** options
|
123
|
+
- **Plugin dependency management** improvements
|
124
|
+
|
125
|
+
---
|
126
|
+
|
127
|
+
## Upgrade Notes
|
128
|
+
|
129
|
+
### Before Upgrading
|
130
|
+
1. **Backup existing configuration** files
|
131
|
+
2. **Document current plugin setup** for reference
|
132
|
+
3. **Test critical workflows** with current version
|
133
|
+
|
134
|
+
### After Upgrading
|
135
|
+
1. **Review new plugin documentation** for updated patterns
|
136
|
+
2. **Update configuration files** to new format
|
137
|
+
3. **Test all plugins** for compatibility
|
138
|
+
4. **Report any issues** to development team
|
139
|
+
|
140
|
+
### Support
|
141
|
+
- **Migration assistance** available through GitHub issues
|
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Initialize janito tools for CLI usage.
|
4
|
+
|
5
|
+
This script loads all core plugins and registers their tools
|
6
|
+
with the local tools adapter.
|
7
|
+
"""
|
8
|
+
|
9
|
+
import sys
|
10
|
+
import os
|
11
|
+
from pathlib import Path
|
12
|
+
|
13
|
+
# Add current directory to path
|
14
|
+
sys.path.insert(0, str(Path.cwd()))
|
15
|
+
|
16
|
+
from janito.plugins.core_loader_fixed import load_core_plugin
|
17
|
+
from janito.tools.adapters.local.adapter import LocalToolsAdapter
|
18
|
+
|
19
|
+
|
20
|
+
def init_janito_tools():
|
21
|
+
"""Initialize all janito tools for CLI usage."""
|
22
|
+
adapter = LocalToolsAdapter()
|
23
|
+
|
24
|
+
# Core plugins to load
|
25
|
+
core_plugins = [
|
26
|
+
"core.filemanager",
|
27
|
+
"core.codeanalyzer",
|
28
|
+
"core.system",
|
29
|
+
"core.imagedisplay",
|
30
|
+
"dev.pythondev",
|
31
|
+
"dev.visualization",
|
32
|
+
]
|
33
|
+
|
34
|
+
loaded = 0
|
35
|
+
for plugin_name in core_plugins:
|
36
|
+
plugin = load_core_plugin(plugin_name)
|
37
|
+
if plugin:
|
38
|
+
tools = plugin.get_tools()
|
39
|
+
for tool_class in tools:
|
40
|
+
adapter.register_tool(tool_class)
|
41
|
+
loaded += 1
|
42
|
+
|
43
|
+
return adapter, loaded
|
44
|
+
|
45
|
+
|
46
|
+
if __name__ == "__main__":
|
47
|
+
adapter, count = init_janito_tools()
|
48
|
+
print(f"Initialized {count} tools")
|
49
|
+
print("Available tools:")
|
50
|
+
for tool_name in sorted(list(adapter._tools.keys())):
|
51
|
+
print(f" - {tool_name}")
|
@@ -155,6 +155,32 @@ def _prepare_template_context(role, profile, allowed_permissions, args=None):
|
|
155
155
|
getattr(args, "emoji", False) if "args" in locals() else False
|
156
156
|
)
|
157
157
|
|
158
|
+
# Add current date/time with timezone using standard library
|
159
|
+
from datetime import datetime, timezone
|
160
|
+
import time
|
161
|
+
|
162
|
+
# Get local time with timezone info
|
163
|
+
local_time = datetime.now()
|
164
|
+
|
165
|
+
# Get timezone offset
|
166
|
+
if time.daylight:
|
167
|
+
offset = time.altzone
|
168
|
+
else:
|
169
|
+
offset = time.timezone
|
170
|
+
|
171
|
+
# Format offset as +HHMM or -HHMM
|
172
|
+
offset_hours = -offset // 3600
|
173
|
+
offset_minutes = abs(offset) % 3600 // 60
|
174
|
+
offset_str = f"{offset_hours:+03d}{offset_minutes:02d}"
|
175
|
+
|
176
|
+
# Get timezone name
|
177
|
+
tz_name = time.tzname[time.daylight and time.daylight or 0]
|
178
|
+
|
179
|
+
context["current_datetime"] = local_time.strftime(
|
180
|
+
f"%Y-%m-%d %H:%M:%S {tz_name}{offset_str}"
|
181
|
+
)
|
182
|
+
context["timezone"] = f"{tz_name} (UTC{offset_str})"
|
183
|
+
|
158
184
|
return context
|
159
185
|
|
160
186
|
|
@@ -4,6 +4,8 @@
|
|
4
4
|
{% if description %}Description: {{ description }}{% endif %}
|
5
5
|
{% if author %}Author: {{ author }}{% endif %}
|
6
6
|
{% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
|
7
|
+
{% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
|
8
|
+
{% if timezone %}Timezone: {{ timezone }}{% endif %}
|
7
9
|
|
8
10
|
{# General role setup
|
9
11
|
ex. "Search in code" -> Python Developer -> find(*.py) | Java Developer -> find(*.java)
|
@@ -4,6 +4,8 @@
|
|
4
4
|
{% if description %}Description: {{ description }}{% endif %}
|
5
5
|
{% if author %}Author: {{ author }}{% endif %}
|
6
6
|
{% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
|
7
|
+
{% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
|
8
|
+
{% if timezone %}Timezone: {{ timezone }}{% endif %}
|
7
9
|
|
8
10
|
You are: {{ role | default('software developer') }}
|
9
11
|
|
@@ -4,6 +4,8 @@
|
|
4
4
|
{% if description %}Description: {{ description }}{% endif %}
|
5
5
|
{% if author %}Author: {{ author }}{% endif %}
|
6
6
|
{% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
|
7
|
+
{% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
|
8
|
+
{% if timezone %}Timezone: {{ timezone }}{% endif %}
|
7
9
|
|
8
10
|
You are: {{ role | default('market analyst specializing in financial markets, business intelligence, and economic research') }}
|
9
11
|
|
@@ -4,6 +4,8 @@
|
|
4
4
|
{% if description %}Description: {{ description }}{% endif %}
|
5
5
|
{% if author %}Author: {{ author }}{% endif %}
|
6
6
|
{% if tags %}Tags: {{ tags | join(', ') }}{% endif %}
|
7
|
+
{% if current_datetime %}Current Date/Time: {{ current_datetime }}{% endif %}
|
8
|
+
{% if timezone %}Timezone: {{ timezone }}{% endif %}
|
7
9
|
|
8
10
|
You are: {{ role | default('helpful assistant') }}
|
9
11
|
|
@@ -0,0 +1,212 @@
|
|
1
|
+
"""
|
2
|
+
CLI Command: Check all registered tools for signature validation and availability
|
3
|
+
"""
|
4
|
+
|
5
|
+
import inspect
|
6
|
+
import sys
|
7
|
+
from typing import Dict, List, Tuple, Any
|
8
|
+
|
9
|
+
|
10
|
+
def _validate_tool_signature(tool_instance) -> Tuple[bool, List[str]]:
|
11
|
+
"""Validate the signature of a tool's run method."""
|
12
|
+
errors = []
|
13
|
+
|
14
|
+
if not hasattr(tool_instance, "run"):
|
15
|
+
errors.append("Missing 'run' method")
|
16
|
+
return False, errors
|
17
|
+
|
18
|
+
try:
|
19
|
+
sig = inspect.signature(tool_instance.run)
|
20
|
+
except ValueError as e:
|
21
|
+
errors.append(f"Invalid signature: {e}")
|
22
|
+
return False, errors
|
23
|
+
|
24
|
+
# Basic signature validation - just check if it's callable
|
25
|
+
if not callable(getattr(tool_instance, "run")):
|
26
|
+
errors.append("'run' method is not callable")
|
27
|
+
|
28
|
+
return len(errors) == 0, errors
|
29
|
+
|
30
|
+
|
31
|
+
def _check_tool_availability(tool_instance) -> Tuple[bool, List[str]]:
|
32
|
+
"""Check if a tool is available for use."""
|
33
|
+
errors = []
|
34
|
+
|
35
|
+
# Check if tool has required attributes
|
36
|
+
required_attrs = ["tool_name"]
|
37
|
+
for attr in required_attrs:
|
38
|
+
if not hasattr(tool_instance, attr):
|
39
|
+
errors.append(f"Missing required attribute: {attr}")
|
40
|
+
|
41
|
+
# Check description (optional for now)
|
42
|
+
if not hasattr(tool_instance, "description"):
|
43
|
+
pass # Allow missing description
|
44
|
+
|
45
|
+
# Check permissions
|
46
|
+
if not hasattr(tool_instance, "permissions"):
|
47
|
+
# Function-based tools use permissions from function decorators
|
48
|
+
pass # Allow missing permissions for function-based tools
|
49
|
+
else:
|
50
|
+
perms = tool_instance.permissions
|
51
|
+
if (
|
52
|
+
not hasattr(perms, "read")
|
53
|
+
or not hasattr(perms, "write")
|
54
|
+
or not hasattr(perms, "execute")
|
55
|
+
):
|
56
|
+
errors.append("Invalid permissions structure")
|
57
|
+
|
58
|
+
return len(errors) == 0, errors
|
59
|
+
|
60
|
+
|
61
|
+
def _get_tool_status_summary(
|
62
|
+
tools: List[Any], disabled_tools: List[str]
|
63
|
+
) -> Dict[str, Any]:
|
64
|
+
"""Get a comprehensive status summary for all tools."""
|
65
|
+
summary = {
|
66
|
+
"total": len(tools),
|
67
|
+
"available": 0,
|
68
|
+
"disabled": 0,
|
69
|
+
"invalid": 0,
|
70
|
+
"details": [],
|
71
|
+
}
|
72
|
+
|
73
|
+
for tool in tools:
|
74
|
+
tool_name = getattr(tool, "tool_name", str(tool))
|
75
|
+
|
76
|
+
# Check if disabled
|
77
|
+
is_disabled = tool_name in disabled_tools
|
78
|
+
|
79
|
+
# Validate signature and availability
|
80
|
+
sig_valid, sig_errors = _validate_tool_signature(tool)
|
81
|
+
avail_valid, avail_errors = _check_tool_availability(tool)
|
82
|
+
|
83
|
+
status = {
|
84
|
+
"name": tool_name,
|
85
|
+
"disabled": is_disabled,
|
86
|
+
"signature_valid": sig_valid,
|
87
|
+
"available": avail_valid,
|
88
|
+
"signature_errors": sig_errors,
|
89
|
+
"availability_errors": avail_errors,
|
90
|
+
}
|
91
|
+
|
92
|
+
summary["details"].append(status)
|
93
|
+
|
94
|
+
if is_disabled:
|
95
|
+
summary["disabled"] += 1
|
96
|
+
elif not sig_valid or not avail_valid:
|
97
|
+
summary["invalid"] += 1
|
98
|
+
else:
|
99
|
+
summary["available"] += 1
|
100
|
+
|
101
|
+
return summary
|
102
|
+
|
103
|
+
|
104
|
+
def _print_check_results(console, summary: Dict[str, Any], verbose: bool = False):
|
105
|
+
"""Print the tool check results in a formatted way."""
|
106
|
+
from rich.table import Table
|
107
|
+
from rich.panel import Panel
|
108
|
+
from rich.text import Text
|
109
|
+
|
110
|
+
# Overall summary
|
111
|
+
summary_text = Text()
|
112
|
+
summary_text.append(f"Total tools: {summary['total']}", style="cyan")
|
113
|
+
summary_text.append(" | ")
|
114
|
+
summary_text.append(f"Available: {summary['available']}", style="green")
|
115
|
+
summary_text.append(" | ")
|
116
|
+
summary_text.append(f"Disabled: {summary['disabled']}", style="yellow")
|
117
|
+
summary_text.append(" | ")
|
118
|
+
summary_text.append(f"Invalid: {summary['invalid']}", style="red")
|
119
|
+
|
120
|
+
console.print(Panel(summary_text, title="Tool Check Summary", style="bold"))
|
121
|
+
|
122
|
+
# Always show the table for check-tools
|
123
|
+
table = Table(title="Tool Details", show_header=True, header_style="bold")
|
124
|
+
table.add_column("Tool", style="cyan", no_wrap=True)
|
125
|
+
table.add_column("Status", style="green")
|
126
|
+
table.add_column("Issues", style="red")
|
127
|
+
|
128
|
+
for detail in summary["details"]:
|
129
|
+
name = detail["name"]
|
130
|
+
|
131
|
+
if detail["disabled"]:
|
132
|
+
status = "[yellow]Disabled[/yellow]"
|
133
|
+
issues = "-"
|
134
|
+
elif not detail["available"] or not detail["signature_valid"]:
|
135
|
+
status = "[red]Invalid[/red]"
|
136
|
+
all_issues = detail["signature_errors"] + detail["availability_errors"]
|
137
|
+
issues = "\n".join(all_issues)
|
138
|
+
else:
|
139
|
+
status = "[green]Available[/green]"
|
140
|
+
issues = "-"
|
141
|
+
|
142
|
+
table.add_row(name, status, issues)
|
143
|
+
|
144
|
+
console.print(table)
|
145
|
+
|
146
|
+
|
147
|
+
def handle_check_tools(args=None):
|
148
|
+
"""Handle the --check-tools CLI command."""
|
149
|
+
from janito.tools.adapters.local.adapter import LocalToolsAdapter
|
150
|
+
import janito.tools # Ensure all tools are registered
|
151
|
+
|
152
|
+
# Load disabled tools from config
|
153
|
+
from janito.tools.disabled_tools import DisabledToolsState
|
154
|
+
from janito.config import config
|
155
|
+
|
156
|
+
disabled_str = config.get("disabled_tools", "")
|
157
|
+
if disabled_str:
|
158
|
+
DisabledToolsState.set_disabled_tools(disabled_str)
|
159
|
+
disabled_tools = DisabledToolsState.get_disabled_tools()
|
160
|
+
|
161
|
+
# Initialize tools properly using the same approach as list_tools.py
|
162
|
+
from janito.tools.adapters.local.adapter import LocalToolsAdapter
|
163
|
+
from janito.tools.tool_base import ToolPermissions
|
164
|
+
import janito.tools # Ensure all tools are registered
|
165
|
+
|
166
|
+
read = getattr(args, "read", False) if args else False
|
167
|
+
write = getattr(args, "write", False) if args else False
|
168
|
+
execute = getattr(args, "exec", False) if args else False
|
169
|
+
if not (read or write or execute):
|
170
|
+
read = write = execute = True
|
171
|
+
from janito.tools.permissions import set_global_allowed_permissions
|
172
|
+
|
173
|
+
set_global_allowed_permissions(
|
174
|
+
ToolPermissions(read=read, write=write, execute=execute)
|
175
|
+
)
|
176
|
+
|
177
|
+
# Load disabled tools from config
|
178
|
+
from janito.tools.disabled_tools import DisabledToolsState
|
179
|
+
from janito.config import config
|
180
|
+
|
181
|
+
disabled_str = config.get("disabled_tools", "")
|
182
|
+
if disabled_str:
|
183
|
+
DisabledToolsState.set_disabled_tools(disabled_str)
|
184
|
+
disabled_tools = DisabledToolsState.get_disabled_tools()
|
185
|
+
|
186
|
+
# Initialize tools using the same method as list_tools.py
|
187
|
+
from janito.tools.initialize import initialize_tools
|
188
|
+
|
189
|
+
registry = initialize_tools()
|
190
|
+
|
191
|
+
# Get actual tool instances
|
192
|
+
tool_instances = []
|
193
|
+
for name, tool_info in registry._tools.items():
|
194
|
+
if "instance" in tool_info:
|
195
|
+
tool_instances.append(tool_info["instance"])
|
196
|
+
|
197
|
+
if not tool_instances:
|
198
|
+
print("No tools registered.")
|
199
|
+
return
|
200
|
+
|
201
|
+
from rich.console import Console
|
202
|
+
|
203
|
+
console = Console()
|
204
|
+
|
205
|
+
verbose = getattr(args, "verbose", False) if args else False
|
206
|
+
|
207
|
+
summary = _get_tool_status_summary(tool_instances, disabled_tools)
|
208
|
+
_print_check_results(console, summary, verbose=verbose)
|
209
|
+
|
210
|
+
# Exit with error code if there are invalid tools
|
211
|
+
if summary["invalid"] > 0:
|
212
|
+
sys.exit(1)
|