janito 3.14.2__tar.gz → 3.15.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.14.2/janito.egg-info → janito-3.15.0}/PKG-INFO +9 -29
- janito-3.15.0/README.md +26 -0
- janito-3.15.0/docs/guides/releasing.md +87 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/terminal-shell.md +1 -1
- {janito-3.14.2 → janito-3.15.0}/docs/index.md +1 -0
- {janito-3.14.2 → janito-3.15.0}/examples/loop_protection_tool_example.py +145 -147
- {janito-3.14.2 → janito-3.15.0}/janito/platform_discovery.py +1 -8
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/adapter.py +3 -2
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/ask_user.py +111 -112
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/copy_file.py +86 -87
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/create_directory.py +111 -112
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/create_file.py +0 -1
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/delete_text_in_file.py +133 -134
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/fetch_url.py +465 -466
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/find_files.py +142 -143
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/markdown_view.py +0 -1
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/move_file.py +130 -131
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/open_html_in_browser.py +50 -51
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/open_url.py +36 -37
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/python_code_run.py +171 -172
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/python_command_run.py +170 -171
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/python_file_run.py +171 -172
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/read_chart.py +258 -259
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/read_files.py +57 -58
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/remove_directory.py +54 -55
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/remove_file.py +57 -58
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/replace_text_in_file.py +275 -276
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/run_bash_command.py +182 -183
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/run_powershell_command.py +217 -218
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/show_image.py +0 -1
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/show_image_grid.py +0 -1
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/view_file.py +0 -1
- {janito-3.14.2 → janito-3.15.0}/janito/providers/alibaba/provider.py +1 -1
- janito-3.15.0/janito/tools/base.py +19 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tool_base.py +122 -121
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tools_schema.py +104 -104
- {janito-3.14.2 → janito-3.15.0/janito.egg-info}/PKG-INFO +9 -29
- {janito-3.14.2 → janito-3.15.0}/janito.egg-info/SOURCES.txt +1 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/copy_file.py +86 -87
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/create_file.py +86 -87
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/delete_text_in_file.py +133 -134
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/find_files.py +142 -143
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/move_file.py +130 -131
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/read_files.py +57 -58
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/remove_directory.py +54 -55
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/remove_file.py +57 -58
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/replace_text_in_file.py +269 -270
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/view_file.py +171 -172
- {janito-3.14.2 → janito-3.15.0}/plugins/core/system/tools/run_bash_command.py +182 -183
- {janito-3.14.2 → janito-3.15.0}/plugins/core/system/tools/run_powershell_command.py +217 -218
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/pythondev/tools/python_code_run.py +171 -172
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/pythondev/tools/python_command_run.py +170 -171
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/pythondev/tools/python_file_run.py +171 -172
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/visualization/tools/read_chart.py +258 -259
- {janito-3.14.2 → janito-3.15.0}/plugins/ui/userinterface/tools/ask_user.py +109 -110
- {janito-3.14.2 → janito-3.15.0}/plugins/web/webtools/tools/fetch_url.py +0 -1
- {janito-3.14.2 → janito-3.15.0}/plugins/web/webtools/tools/open_html_in_browser.py +50 -51
- {janito-3.14.2 → janito-3.15.0}/plugins/web/webtools/tools/open_url.py +36 -37
- {janito-3.14.2 → janito-3.15.0}/tools/release.py +246 -187
- janito-3.14.2/README.md +0 -46
- janito-3.14.2/janito/tools/base.py +0 -12
- {janito-3.14.2 → janito-3.15.0}/.codespellrc +0 -0
- {janito-3.14.2 → janito-3.15.0}/.gitattributes +0 -0
- {janito-3.14.2 → janito-3.15.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.14.2 → janito-3.15.0}/.gitignore +0 -0
- {janito-3.14.2 → janito-3.15.0}/.pre-commit-config.yaml +0 -0
- {janito-3.14.2 → janito-3.15.0}/.secrets.baseline +0 -0
- {janito-3.14.2 → janito-3.15.0}/.vscode/settings.json +0 -0
- {janito-3.14.2 → janito-3.15.0}/LICENSE +0 -0
- {janito-3.14.2 → janito-3.15.0}/MARKET_ANALYST_README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/README-dev.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/RELEASE_COMPARISON.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/UPDATING_DOCS.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/adding_mcp.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/alibaba-qwen3.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/cow.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/detailed_cow.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/CHANGELOG.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/DIV.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/Interfaces.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/PROFILES.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/about/costs.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/about/vs-webchats.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/about/why.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/agent/agent-lifecycle.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/agent/tools-workflow-lifecycle.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/alibaba-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/alternatives.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/anthropic-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/cerebras-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/CHANGELOG.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/cli.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/concepts/analysis-style.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/concepts/index.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/configuration.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/deepseek-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/driver-flow.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/driver-request-cancellation.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/drivers/events.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/drivers.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/event-bus.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/google-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/configuration.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/developing.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/disabled-tools.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/installation.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/market-data-sources.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/profiles.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/prompting/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/security-commands.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/url-whitelist.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/using.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/guides/using_tools.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/ibm-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/llm-drivers.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/meta/quality-checks.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/mistral-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/models/supported_models.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/moonshot-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/openai-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/api-reference.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/architecture.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/filemanager.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/configuration.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/examples/basic.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/plugin-development.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/publishing.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/plugins/testing.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/provider-platform-access.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/providers.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/public-sources.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/reference/api.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/reference/azure-openai.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/reference/cli-options.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/reference/message-handler-model.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/security.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/supported-providers-models.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools/search-text.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools/show-image-grid.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools/show-image.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools-index.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools-natural-results.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools-precision.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/tools.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/docs/z-ai-setup.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/examples/loop_protection_example.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/get_nasdaq_top.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/ibm-logo.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/__main__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/_version.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/agent/setup_agent.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/agent_events.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/session.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/clear_context.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/interactive.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_plugins.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/console.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/event_logger.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/getters.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/model_guesser.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/runner.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/setters.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/core/unsetters.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/main.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/main_cli.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/prompt_core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/prompt_handler.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/prompt_setup.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/cli/verbose_output.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/config_manager.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/conversation_history.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/dir_walk_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/driver_events.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/openai/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/openai/driver.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/drivers/zai/driver.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/event_bus/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/event_bus/bus.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/event_bus/event.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/event_bus/handler.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/exceptions.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/formatting.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/formatting_token.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/gitignore_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/hello.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/i18n/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/i18n/it.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/i18n/messages.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/i18n/pt.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/agent.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/auth.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/auth_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/driver.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/driver_config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/driver_input.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/message_parts.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/model.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/llm/response_cache.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/perf_singleton.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/performance_collector.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/auto_loader.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/auto_loader_fixed.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/base.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/builtin.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/core_adapter.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/core_loader.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/core_loader_fixed.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/discovery.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/discovery_core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/manager.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/clear_context.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/get_file_outline/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/get_file_outline/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/get_file_outline/java_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/get_file_outline/markdown_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/get_file_outline/python_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/get_file_outline/search_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/search_text/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/search_text/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/search_text/match_lines.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/search_text/pattern_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/search_text/traverse_directory.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/css_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/html_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/js_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/json_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/python_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/txt_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/plugins/tools/local/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/provider_config.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/provider_registry.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/alibaba/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/alibaba/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/google/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/google/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/google/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/ibm/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/ibm/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/mistral/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/moonshot/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/moonshot/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/openai/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/openai/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/openai/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/registry.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/zai/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/zai/model_info.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/zai/provider.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/regions/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/regions/cli.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/regions/geo_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/regions/provider_regions.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/report_events.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/shell.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tests/test_tool_adapter_case_insensitive.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/README.md +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/disabled_tools.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/function_adapter.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/inspect_registry.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/loop_protection.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/path_security.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/path_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/permissions.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/permissions_parse.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tool_events.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tool_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/tools_adapter.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/tools/url_whitelist.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito/utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito.egg-info/requires.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/janito.egg-info/top_level.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/market_prompt_fix.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/mkdocs.log +0 -0
- {janito-3.14.2 → janito-3.15.0}/mkdocs.yml +0 -0
- {janito-3.14.2 → janito-3.15.0}/mkdocs_hooks.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/penguin_ascii.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/imagedisplay/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/imagedisplay/plugin.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/imagedisplay/tools/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/imagedisplay/tools/show_image.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/core/system/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/pythondev/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/dev/visualization/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/example_plugin.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/ui/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/web/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/plugins/web/webtools/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/pyproject.toml +0 -0
- {janito-3.14.2 → janito-3.15.0}/requirements-dev.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/requirements.txt +0 -0
- {janito-3.14.2 → janito-3.15.0}/setup.cfg +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/local/test_read_file/__init__.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/local/test_read_file/read_file.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/local/test_read_file/test_read_file.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/local/test_read_files.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_cli_list_models.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_cli_list_providers.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_cli_version.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_disabled_tools.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_plugin_system.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_provider_alibaba.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_provider_cerebras.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tests/test_provider_moonshot.py +0 -0
- {janito-3.14.2 → janito-3.15.0}/tox.ini +0 -0
- {janito-3.14.2 → janito-3.15.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 3.
|
3
|
+
Version: 3.15.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
|
@@ -40,7 +40,7 @@ Dynamic: license-file
|
|
40
40
|
$ janito --help
|
41
41
|
Usage: janito <command>
|
42
42
|
|
43
|
-
|
43
|
+
A command-line tool for managing your projects.
|
44
44
|
|
45
45
|
Run "janito <command> --help" for more information on a command.
|
46
46
|
```
|
@@ -48,35 +48,15 @@ Run "janito <command> --help" for more information on a command.
|
|
48
48
|
## Setup
|
49
49
|
|
50
50
|
```bash
|
51
|
-
#
|
52
|
-
|
51
|
+
# Install using pip
|
52
|
+
pip install janito
|
53
53
|
|
54
|
-
#
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
# Fedora/RHEL
|
60
|
-
cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
|
61
|
-
[repo.nine.ch]
|
62
|
-
name=Nine Repo
|
63
|
-
baseurl=https://repo.nine.ch/yum/
|
64
|
-
enabled=1
|
65
|
-
gpgcheck=0
|
66
|
-
EOF
|
67
|
-
dnf install janito
|
68
|
-
|
69
|
-
# Arch
|
70
|
-
# Install yay: https://github.com/Jguer/yay#binary
|
71
|
-
yay --version
|
72
|
-
yay -S janito-bin
|
54
|
+
# Or install from source
|
55
|
+
git clone https://github.com/yourusername/janito.git
|
56
|
+
cd janito
|
57
|
+
pip install -e .
|
73
58
|
```
|
74
59
|
|
75
|
-
For Windows users, janito is also built for arm64 and amd64. You can download the
|
76
|
-
latest exe file from the [releases](https://github.com/ninech/janito/releases) and
|
77
|
-
install it.
|
78
|
-
|
79
60
|
## Getting started
|
80
61
|
|
81
|
-
*
|
82
|
-
* run `janito --help` to get a list of all available commands
|
62
|
+
* Run `janito --help` to get a list of all available commands
|
janito-3.15.0/README.md
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# Janito
|
2
|
+
|
3
|
+
```bash
|
4
|
+
$ janito --help
|
5
|
+
Usage: janito <command>
|
6
|
+
|
7
|
+
A command-line tool for managing your projects.
|
8
|
+
|
9
|
+
Run "janito <command> --help" for more information on a command.
|
10
|
+
```
|
11
|
+
|
12
|
+
## Setup
|
13
|
+
|
14
|
+
```bash
|
15
|
+
# Install using pip
|
16
|
+
pip install janito
|
17
|
+
|
18
|
+
# Or install from source
|
19
|
+
git clone https://github.com/yourusername/janito.git
|
20
|
+
cd janito
|
21
|
+
pip install -e .
|
22
|
+
```
|
23
|
+
|
24
|
+
## Getting started
|
25
|
+
|
26
|
+
* Run `janito --help` to get a list of all available commands
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# Releasing Janito
|
2
|
+
|
3
|
+
This guide explains the release process for Janito, including how to create new releases and what the automated release script does.
|
4
|
+
|
5
|
+
## Prerequisites
|
6
|
+
|
7
|
+
Before you can create a release, you need to:
|
8
|
+
|
9
|
+
1. Set up a GitHub Personal Access Token (PAT):
|
10
|
+
|
11
|
+
- Go to GitHub Settings → Developer settings → Personal access tokens
|
12
|
+
- Generate a new token with `repo` scope
|
13
|
+
- Store it securely
|
14
|
+
|
15
|
+
2. Set the GITHUB_TOKEN environment variable:
|
16
|
+
```bash
|
17
|
+
export GITHUB_TOKEN="your-token-here"
|
18
|
+
```
|
19
|
+
|
20
|
+
3. Install required Python packages:
|
21
|
+
```bash
|
22
|
+
pip install requests twine build
|
23
|
+
```
|
24
|
+
|
25
|
+
## Release Process
|
26
|
+
|
27
|
+
The release process is automated through the `tools/release.py` script. Here's how it works:
|
28
|
+
|
29
|
+
### 1. Create a Git Tag
|
30
|
+
|
31
|
+
First, create a new git tag following semantic versioning (vX.Y.Z):
|
32
|
+
|
33
|
+
```bash
|
34
|
+
# Check current latest tag
|
35
|
+
git tag -l "v*" --sort=-v:refname | head -n 1
|
36
|
+
|
37
|
+
# Create new tag (increment patch version)
|
38
|
+
git tag vX.Y.Z
|
39
|
+
|
40
|
+
# Push the tag to remote
|
41
|
+
git push origin vX.Y.Z
|
42
|
+
```
|
43
|
+
|
44
|
+
### 2. Run the Release Script
|
45
|
+
|
46
|
+
Execute the release script:
|
47
|
+
|
48
|
+
```bash
|
49
|
+
python tools/release.py
|
50
|
+
```
|
51
|
+
|
52
|
+
The script will:
|
53
|
+
|
54
|
+
- Verify you have the required tools installed
|
55
|
+
- Check that there are no uncommitted changes
|
56
|
+
- Get the version from the latest git tag
|
57
|
+
- Verify the tag points to the current commit
|
58
|
+
- Build the package
|
59
|
+
- Upload to PyPI
|
60
|
+
- Create a GitHub release
|
61
|
+
|
62
|
+
### 3. What the GitHub Release Includes
|
63
|
+
|
64
|
+
The automated GitHub release will:
|
65
|
+
|
66
|
+
- Use the tag name as the release title
|
67
|
+
- Include a basic changelog message linking to CHANGELOG.md
|
68
|
+
- Be marked as a production release (not draft or prerelease)
|
69
|
+
|
70
|
+
## Build Only Mode
|
71
|
+
|
72
|
+
If you want to build the package without uploading it, use:
|
73
|
+
|
74
|
+
```bash
|
75
|
+
python tools/release.py --build-only
|
76
|
+
```
|
77
|
+
|
78
|
+
This is useful for testing the build process locally.
|
79
|
+
|
80
|
+
## Troubleshooting
|
81
|
+
|
82
|
+
Common issues and solutions:
|
83
|
+
|
84
|
+
- **GITHUB_TOKEN not set**: Make sure you've exported the environment variable
|
85
|
+
- **Tag doesn't point to current commit**: Make sure you're on the correct commit before tagging
|
86
|
+
- **Version already exists on PyPI**: Increment the version number in your tag
|
87
|
+
- **Uncommitted changes**: Commit or stash your changes before releasing
|
@@ -10,7 +10,7 @@ Janito works best with modern Unicode-capable terminals. **Windows Terminal is t
|
|
10
10
|
|
11
11
|
Janito includes built-in support for executing shell commands across platforms:
|
12
12
|
|
13
|
-
- **Bash commands** (`run_bash_command`) - Execute bash shell commands on Linux, macOS, and Windows (via
|
13
|
+
- **Bash commands** (`run_bash_command`) - Execute bash shell commands on Linux, macOS, and Windows (via Git Bash)
|
14
14
|
- **PowerShell commands** (`run_powershell_command`) - Execute PowerShell commands on Windows and cross-platform (requires PowerShell Core)
|
15
15
|
|
16
16
|
These tools can be enabled/disabled via configuration and provide live output streaming, timeout handling, and security controls.
|
@@ -59,5 +59,6 @@ Explore our comprehensive documentation:
|
|
59
59
|
- [Supported Models](models/supported_models.md)
|
60
60
|
- [Tools & Plugins](tools.md)
|
61
61
|
- [Developer Guide](guides/developing.md)
|
62
|
+
- [Releasing Guide](guides/releasing.md)
|
62
63
|
|
63
64
|
> **Note**: The list of supported models is automatically generated from the codebase. When new models are added, this documentation updates automatically.*
|
@@ -1,147 +1,145 @@
|
|
1
|
-
#!/usr/bin/env python3
|
2
|
-
"""
|
3
|
-
Example showing how to add loop protection to a custom tool.
|
4
|
-
|
5
|
-
This example demonstrates how to create a custom tool with loop protection
|
6
|
-
using the @protect_against_loops decorator.
|
7
|
-
"""
|
8
|
-
|
9
|
-
from janito.tools.tool_base import ToolBase, ToolPermissions
|
10
|
-
from janito.tools.loop_protection_decorator import protect_against_loops
|
11
|
-
from janito.plugins.tools.local.adapter import register_local_tool
|
12
|
-
|
13
|
-
|
14
|
-
@register_local_tool
|
15
|
-
class CustomFileAnalyzerTool(ToolBase):
|
16
|
-
"""
|
17
|
-
Example custom tool that analyzes files with loop protection.
|
18
|
-
|
19
|
-
This tool demonstrates how to use the @protect_against_loops decorator
|
20
|
-
to prevent excessive operations on the same file.
|
21
|
-
"""
|
22
|
-
|
23
|
-
permissions = ToolPermissions(read=True)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
""
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
result
|
51
|
-
result += f"
|
52
|
-
result += f"
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
result
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
lines
|
106
|
-
|
107
|
-
results.append(f"{path}: {
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
except
|
112
|
-
results.append(f"{path}:
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
"
|
122
|
-
print("
|
123
|
-
print("
|
124
|
-
print("
|
125
|
-
print(
|
126
|
-
|
127
|
-
print()
|
128
|
-
|
129
|
-
print("
|
130
|
-
print("
|
131
|
-
print(
|
132
|
-
|
133
|
-
print()
|
134
|
-
|
135
|
-
print("
|
136
|
-
print("
|
137
|
-
print(
|
138
|
-
print("
|
139
|
-
print()
|
140
|
-
print("
|
141
|
-
print("-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
if __name__ == "__main__":
|
147
|
-
usage_examples()
|
1
|
+
#!/usr/bin/env python3
|
2
|
+
"""
|
3
|
+
Example showing how to add loop protection to a custom tool.
|
4
|
+
|
5
|
+
This example demonstrates how to create a custom tool with loop protection
|
6
|
+
using the @protect_against_loops decorator.
|
7
|
+
"""
|
8
|
+
|
9
|
+
from janito.tools.tool_base import ToolBase, ToolPermissions
|
10
|
+
from janito.tools.loop_protection_decorator import protect_against_loops
|
11
|
+
from janito.plugins.tools.local.adapter import register_local_tool
|
12
|
+
|
13
|
+
|
14
|
+
@register_local_tool
|
15
|
+
class CustomFileAnalyzerTool(ToolBase):
|
16
|
+
"""
|
17
|
+
Example custom tool that analyzes files with loop protection.
|
18
|
+
|
19
|
+
This tool demonstrates how to use the @protect_against_loops decorator
|
20
|
+
to prevent excessive operations on the same file.
|
21
|
+
"""
|
22
|
+
|
23
|
+
permissions = ToolPermissions(read=True)
|
24
|
+
|
25
|
+
@protect_against_loops(max_calls=5, time_window=10.0)
|
26
|
+
def run(self, path: str, analysis_type: str = "basic") -> str:
|
27
|
+
"""
|
28
|
+
Analyze a file with the specified analysis type.
|
29
|
+
|
30
|
+
Args:
|
31
|
+
path (str): Path to the file to analyze
|
32
|
+
analysis_type (str): Type of analysis to perform ("basic" or "detailed")
|
33
|
+
|
34
|
+
Returns:
|
35
|
+
str: Analysis results
|
36
|
+
"""
|
37
|
+
self.report_action(f"Analyzing '{path}' with {analysis_type} analysis")
|
38
|
+
|
39
|
+
try:
|
40
|
+
# Simulate file analysis
|
41
|
+
with open(path, "r", encoding="utf-8") as f:
|
42
|
+
content = f.read()
|
43
|
+
|
44
|
+
# Perform analysis based on type
|
45
|
+
if analysis_type == "basic":
|
46
|
+
lines = len(content.splitlines())
|
47
|
+
words = len(content.split())
|
48
|
+
chars = len(content)
|
49
|
+
result = f"Basic analysis of {path}:\n"
|
50
|
+
result += f" Lines: {lines}\n"
|
51
|
+
result += f" Words: {words}\n"
|
52
|
+
result += f" Characters: {chars}\n"
|
53
|
+
else:
|
54
|
+
# Detailed analysis could include more metrics
|
55
|
+
result = f"Detailed analysis of {path}:\n"
|
56
|
+
result += f" Content preview: {content[:100]}...\n"
|
57
|
+
|
58
|
+
self.report_success(f"Analysis of {path} completed")
|
59
|
+
return result
|
60
|
+
|
61
|
+
except FileNotFoundError:
|
62
|
+
self.report_error(f"File not found: {path}")
|
63
|
+
return f"Error: File '{path}' not found"
|
64
|
+
except Exception as e:
|
65
|
+
self.report_error(f"Error analyzing {path}: {e}")
|
66
|
+
return f"Error analyzing file: {e}"
|
67
|
+
|
68
|
+
|
69
|
+
@register_local_tool
|
70
|
+
class BatchFileProcessorTool(ToolBase):
|
71
|
+
"""
|
72
|
+
Example tool that processes multiple files with loop protection.
|
73
|
+
|
74
|
+
This tool demonstrates how to use the @protect_against_loops decorator
|
75
|
+
with tools that operate on multiple files.
|
76
|
+
"""
|
77
|
+
|
78
|
+
permissions = ToolPermissions(read=True)
|
79
|
+
|
80
|
+
@protect_against_loops(max_calls=5, time_window=10.0)
|
81
|
+
def run(self, file_paths: list, operation: str = "count") -> str:
|
82
|
+
"""
|
83
|
+
Process multiple files with the specified operation.
|
84
|
+
|
85
|
+
Args:
|
86
|
+
file_paths (list): List of file paths to process
|
87
|
+
operation (str): Operation to perform ("count", "uppercase", etc.)
|
88
|
+
|
89
|
+
Returns:
|
90
|
+
str: Processing results
|
91
|
+
"""
|
92
|
+
self.report_action(
|
93
|
+
f"Processing {len(file_paths)} files with {operation} operation"
|
94
|
+
)
|
95
|
+
|
96
|
+
results = []
|
97
|
+
for path in file_paths:
|
98
|
+
try:
|
99
|
+
with open(path, "r", encoding="utf-8") as f:
|
100
|
+
content = f.read()
|
101
|
+
|
102
|
+
if operation == "count":
|
103
|
+
lines = len(content.splitlines())
|
104
|
+
words = len(content.split())
|
105
|
+
results.append(f"{path}: {lines} lines, {words} words")
|
106
|
+
elif operation == "uppercase":
|
107
|
+
results.append(f"{path}: {content.upper()}")
|
108
|
+
|
109
|
+
except FileNotFoundError:
|
110
|
+
results.append(f"{path}: File not found")
|
111
|
+
except Exception as e:
|
112
|
+
results.append(f"{path}: Error - {e}")
|
113
|
+
|
114
|
+
self.report_success(f"Processed {len(file_paths)} files")
|
115
|
+
return "\n".join(results)
|
116
|
+
|
117
|
+
|
118
|
+
def usage_examples():
|
119
|
+
"""Show how to use the custom tools with loop protection."""
|
120
|
+
print("=== Custom Tool with Loop Protection Examples ===\n")
|
121
|
+
print("Example 1: CustomFileAnalyzerTool")
|
122
|
+
print(" @protect_against_loops()")
|
123
|
+
print(" def run(self, path: str, analysis_type: str = 'basic') -> str:")
|
124
|
+
print(" # Implementation here")
|
125
|
+
print()
|
126
|
+
|
127
|
+
print("Example 2: BatchFileProcessorTool")
|
128
|
+
print(" @protect_against_loops('file_paths')")
|
129
|
+
print(" def run(self, file_paths: list, operation: str = 'count') -> str:")
|
130
|
+
print(" # Implementation here")
|
131
|
+
print()
|
132
|
+
|
133
|
+
print("To use these tools in your application:")
|
134
|
+
print("1. Import the tool classes")
|
135
|
+
print("2. Register them with the tools adapter")
|
136
|
+
print("3. Call them like any other tool")
|
137
|
+
print()
|
138
|
+
print("The loop protection will automatically prevent:")
|
139
|
+
print("- More than 5 operations on the same file within 10 seconds")
|
140
|
+
print("- Excessive resource consumption from repeated file access")
|
141
|
+
print("- Potential infinite loops in tool execution")
|
142
|
+
|
143
|
+
|
144
|
+
if __name__ == "__main__":
|
145
|
+
usage_examples()
|
@@ -24,13 +24,7 @@ class PlatformDiscovery:
|
|
24
24
|
return f"Git Bash ({self.os_environ.get('MSYSTEM')})"
|
25
25
|
return None
|
26
26
|
|
27
|
-
|
28
|
-
if self.os_environ.get("WSL_DISTRO_NAME"):
|
29
|
-
shell = self.os_environ.get("SHELL")
|
30
|
-
shell_name = shell.split("/")[-1] if shell else "unknown"
|
31
|
-
distro = self.os_environ.get("WSL_DISTRO_NAME")
|
32
|
-
return f"{shell_name} (WSL: {distro})"
|
33
|
-
return None
|
27
|
+
|
34
28
|
|
35
29
|
def _detect_powershell(self):
|
36
30
|
try:
|
@@ -87,7 +81,6 @@ class PlatformDiscovery:
|
|
87
81
|
"""
|
88
82
|
shell_info = (
|
89
83
|
self._detect_git_bash()
|
90
|
-
or self._detect_wsl()
|
91
84
|
or self._detect_powershell()
|
92
85
|
or self._detect_shell_env()
|
93
86
|
or self._detect_comspec()
|
@@ -76,10 +76,11 @@ class LocalToolsAdapter(ToolsAdapter):
|
|
76
76
|
raise TypeError(
|
77
77
|
f"Tool '{tool_class.__name__}' must implement a callable 'run' method."
|
78
78
|
)
|
79
|
-
|
79
|
+
# Derive tool name from class name by convention
|
80
|
+
tool_name = instance.tool_name
|
80
81
|
if not tool_name or not isinstance(tool_name, str):
|
81
82
|
raise ValueError(
|
82
|
-
f"Tool '{tool_class.__name__}' must provide a
|
83
|
+
f"Tool '{tool_class.__name__}' must provide a valid tool_name property."
|
83
84
|
)
|
84
85
|
if tool_name in self._tools:
|
85
86
|
raise ValueError(f"Tool '{tool_name}' is already registered.")
|