janito 3.12.1__tar.gz → 3.12.2__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.12.1 → janito-3.12.2}/PKG-INFO +1 -1
- janito-3.12.2/alibaba-qwen3.md +81 -0
- janito-3.12.2/cow.txt +7 -0
- janito-3.12.2/detailed_cow.txt +12 -0
- {janito-3.12.1 → janito-3.12.2}/docs/index.md +1 -1
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/README.md +101 -101
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/architecture.md +127 -127
- janito-3.12.2/docs/plugins/built-in-plugins/visualization.md +62 -0
- {janito-3.12.1 → janito-3.12.2}/docs/tools-index.md +1 -11
- {janito-3.12.1 → janito-3.12.2}/janito/agent/setup_agent.py +378 -377
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/session.py +505 -505
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_profiles.py +104 -107
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/show_system_prompt.py +166 -166
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/runner.py +250 -266
- {janito-3.12.1 → janito-3.12.2}/janito/cli/main_cli.py +520 -519
- {janito-3.12.1 → janito-3.12.2}/janito/cli/single_shot_mode/handler.py +167 -167
- {janito-3.12.1 → janito-3.12.2}/janito/llm/__init__.py +6 -5
- {janito-3.12.1 → janito-3.12.2}/janito/llm/driver.py +290 -254
- janito-3.12.2/janito/llm/response_cache.py +57 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/builtin.py +64 -88
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/__init__.py +82 -80
- janito-3.12.2/janito/plugins/tools/local/markdown_view.py +94 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/show_image.py +119 -74
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/show_image_grid.py +134 -76
- {janito-3.12.1 → janito-3.12.2}/janito/providers/alibaba/model_info.py +136 -105
- {janito-3.12.1 → janito-3.12.2}/janito.egg-info/PKG-INFO +1 -1
- {janito-3.12.1 → janito-3.12.2}/janito.egg-info/SOURCES.txt +6 -4
- janito-3.12.2/penguin_ascii.py +73 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/tools/show_image.py +117 -74
- janito-3.12.1/docs/guides/read-chart-examples.md +0 -181
- janito-3.12.1/docs/plugins/built-in-plugins/visualization.md +0 -94
- janito-3.12.1/plugins.txt +0 -1
- janito-3.12.1/tux.svg +0 -438
- janito-3.12.1/tux_dynamic.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/.codespellrc +0 -0
- {janito-3.12.1 → janito-3.12.2}/.gitattributes +0 -0
- {janito-3.12.1 → janito-3.12.2}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.12.1 → janito-3.12.2}/.gitignore +0 -0
- {janito-3.12.1 → janito-3.12.2}/.pre-commit-config.yaml +0 -0
- {janito-3.12.1 → janito-3.12.2}/.secrets.baseline +0 -0
- {janito-3.12.1 → janito-3.12.2}/.vscode/settings.json +0 -0
- {janito-3.12.1 → janito-3.12.2}/LICENSE +0 -0
- {janito-3.12.1 → janito-3.12.2}/MARKET_ANALYST_README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/README-dev.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/RELEASE_COMPARISON.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/UPDATING_DOCS.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/adding_mcp.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/CHANGELOG.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/DIV.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/Interfaces.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/PROFILES.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/about/costs.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/about/vs-webchats.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/about/why.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/agent/agent-lifecycle.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/agent/tools-workflow-lifecycle.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/alibaba-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/alternatives.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/cerebras-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/concepts/analysis-style.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/concepts/index.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/concepts/language-model-clients.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/concepts/prompt-design-style.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/deepseek-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/driver-flow.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/driver-request-cancellation.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/drivers/events.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/drivers.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/event-bus.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/configuration.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/developing.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/disabled-tools.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/installation.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/market-data-sources.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/profiles.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/prompting/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/security-commands.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/terminal-shell.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/tools-developer-guide.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/url-whitelist.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/using.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/guides/using_tools.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/ibm-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/llm-drivers.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/meta/developer-toolchain.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/meta/quality-checks.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/mistral-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/moonshot-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/openai-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/api-reference.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/filemanager.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/configuration.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/examples/basic.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/plugin-development.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/publishing.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/plugins/testing.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/provider-platform-access.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/public-sources.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/reference/api.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/reference/azure-openai.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/reference/cli-options.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/reference/message-handler-model.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/security.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/supported-providers-models.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/tools/search-text.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/tools/show-image-grid.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/tools/show-image.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/tools-natural-results.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/tools-precision.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/docs/z-ai-setup.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/examples/loop_protection_example.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/examples/loop_protection_tool_example.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/get_nasdaq_top.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/ibm-logo.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/__main__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/_version.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/agent_events.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/interactive.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_plugins.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/console.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/event_logger.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/getters.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/model_guesser.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/setters.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/core/unsetters.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/main.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/prompt_core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/prompt_handler.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/prompt_setup.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/cli/verbose_output.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/config_manager.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/conversation_history.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/dir_walk_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/driver_events.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/openai/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/openai/driver.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/drivers/zai/driver.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/event_bus/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/event_bus/bus.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/event_bus/event.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/event_bus/handler.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/exceptions.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/formatting.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/formatting_token.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/gitignore_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/hello.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/i18n/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/i18n/it.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/i18n/messages.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/i18n/pt.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/agent.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/auth.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/auth_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/driver_config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/driver_input.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/message_parts.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/model.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/llm/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/perf_singleton.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/performance_collector.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/platform_discovery.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/auto_loader.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/auto_loader_fixed.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/base.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/core_adapter.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/core_loader.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/core_loader_fixed.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/discovery.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/discovery_core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/manager.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/adapter.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/ask_user.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/copy_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/create_directory.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/create_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/delete_text_in_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/fetch_url.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/find_files.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/java_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/markdown_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/python_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/get_file_outline/search_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/move_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/open_html_in_browser.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/open_url.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/python_code_run.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/python_command_run.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/python_file_run.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/read_chart.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/read_files.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/remove_directory.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/remove_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/replace_text_in_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/run_bash_command.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/run_powershell_command.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/match_lines.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/pattern_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/search_text/traverse_directory.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/css_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/html_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/js_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/json_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/python_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/txt_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/plugins/tools/local/view_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/provider_config.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/provider_registry.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/alibaba/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/alibaba/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/google/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/google/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/google/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/ibm/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/mistral/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/moonshot/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/moonshot/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/registry.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/model_info.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/provider.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/regions/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/regions/cli.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/regions/geo_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/regions/provider_regions.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/report_events.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/shell.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tests/test_tool_adapter_case_insensitive.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/README.md +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/base.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/disabled_tools.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/function_adapter.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/inspect_registry.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/loop_protection.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/path_security.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/path_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/permissions.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/permissions_parse.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_base.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_events.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tool_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tools_adapter.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/tools_schema.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/tools/url_whitelist.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito/utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito.egg-info/requires.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/janito.egg-info/top_level.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/market_prompt_fix.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/mkdocs.log +0 -0
- {janito-3.12.1 → janito-3.12.2}/mkdocs.yml +0 -0
- {janito-3.12.1 → janito-3.12.2}/mkdocs_hooks.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/copy_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/create_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/delete_text_in_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/find_files.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/move_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/read_files.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/remove_directory.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/remove_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/core.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/filemanager/tools/view_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/plugin.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/tools/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/system/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/system/tools/run_bash_command.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/core/system/tools/run_powershell_command.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/tools/python_code_run.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/tools/python_command_run.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/pythondev/tools/python_file_run.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/visualization/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/dev/visualization/tools/read_chart.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/example_plugin.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/ui/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/web/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/tools/fetch_url.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/tools/open_html_in_browser.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/plugins/web/webtools/tools/open_url.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/pyproject.toml +0 -0
- {janito-3.12.1 → janito-3.12.2}/requirements-dev.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/requirements.txt +0 -0
- {janito-3.12.1 → janito-3.12.2}/setup.cfg +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_file/__init__.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_file/read_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_file/test_read_file.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/local/test_read_files.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_models.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_providers.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_cli_version.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_disabled_tools.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_plugin_system.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_provider_alibaba.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_provider_cerebras.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tests/test_provider_moonshot.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tools/release.py +0 -0
- {janito-3.12.1 → janito-3.12.2}/tox.ini +0 -0
- {janito-3.12.1 → janito-3.12.2}/uv.lock +0 -0
@@ -0,0 +1,81 @@
|
|
1
|
+
# Alibaba Cloud Qwen Models Overview
|
2
|
+
|
3
|
+
## Flagship Models (Singapore Region)
|
4
|
+
|
5
|
+
| Model | Description | Max Context Window | Input Price (per million tokens) | Output Price (per million tokens) |
|
6
|
+
|--------------|------------------------------------------------|--------------------|----------------------------------|-----------------------------------|
|
7
|
+
| Qwen-Max | Ideal for complex tasks, most powerful | 32,768 | $1.6 | $6.4 |
|
8
|
+
| Qwen-Plus | Balanced performance, speed, and cost | 1,000,000 | $0.4 | $1.2 |
|
9
|
+
| Qwen-Flash | Ideal for simple tasks, fast and low-cost | 1,000,000 | $0.05 | $0.4 |
|
10
|
+
| Qwen-Coder | Excellent code model, excels at tool calling | 1,000,000 | $0.3 | $1.5 |
|
11
|
+
|
12
|
+
## Model Categories
|
13
|
+
|
14
|
+
### Text Generation - Qwen
|
15
|
+
Commercial models:
|
16
|
+
- QwQ
|
17
|
+
- Qwen-Max
|
18
|
+
- Qwen-Plus
|
19
|
+
- Qwen-Flash
|
20
|
+
|
21
|
+
Open-source models:
|
22
|
+
- Qwen3
|
23
|
+
- Qwen2.5
|
24
|
+
|
25
|
+
Multimodal models:
|
26
|
+
- Qwen-VL (visual understanding)
|
27
|
+
- QVQ (visual reasoning)
|
28
|
+
- Qwen-Omni (omni-modal)
|
29
|
+
- Qwen-Omni-Realtime (real-time multimodal)
|
30
|
+
|
31
|
+
Domain-specific models:
|
32
|
+
- Code model
|
33
|
+
- Translation model
|
34
|
+
- Role-play model
|
35
|
+
|
36
|
+
### Image Generation - Qwen
|
37
|
+
- Qwen-Image: Text-to-image, excels at rendering complex text (Chinese/English)
|
38
|
+
- Qwen-Image-Edit: Image and text editing operations (style transfer, text modification, object editing)
|
39
|
+
- Wan: Generates exquisite images from a single sentence
|
40
|
+
|
41
|
+
### Video Generation
|
42
|
+
- Text-to-video: Generates videos from a single sentence
|
43
|
+
- Image-to-video:
|
44
|
+
- First-frame-to-video
|
45
|
+
- First-and-last-frame-to-video
|
46
|
+
- Multi-image-to-video
|
47
|
+
|
48
|
+
### Video Editing
|
49
|
+
- General-purpose video editing: Performs various video editing tasks based on text, images, and videos
|
50
|
+
|
51
|
+
### Embedding
|
52
|
+
- Text embedding: Converts text into numbers for search, clustering, recommendation, and classification tasks
|
53
|
+
|
54
|
+
## Qwen-Max Details
|
55
|
+
|
56
|
+
### Qwen3-Max (Preview)
|
57
|
+
- Context window: 262,144 tokens
|
58
|
+
- Maximum input: 258,048 tokens
|
59
|
+
- Maximum output: 65,536 tokens
|
60
|
+
- Input pricing (tiered):
|
61
|
+
- 0-32K tokens: $1.2 per million tokens
|
62
|
+
- 32K-128K tokens: $2.4 per million tokens
|
63
|
+
- 128K-252K tokens: $3 per million tokens
|
64
|
+
- Output price: $6 per million tokens
|
65
|
+
- Free quota: 1 million tokens (validity: 90 days after activating Alibaba Cloud Model Studio)
|
66
|
+
- Supports context cache
|
67
|
+
|
68
|
+
### Qwen-Max (Stable/Latest)
|
69
|
+
- Context window: 32,768 tokens
|
70
|
+
- Maximum input: 30,720 tokens
|
71
|
+
- Maximum output: 8,192 tokens
|
72
|
+
- Input price: $1.6 per million tokens
|
73
|
+
- Output price: $6.4 per million tokens
|
74
|
+
- 50% discount for batch calling
|
75
|
+
- Free quota: 1 million tokens each for input and output (validity: 90 days after activating Alibaba Cloud Model Studio)
|
76
|
+
|
77
|
+
### Qwen-Max Snapshots
|
78
|
+
- qwen-max-2025-01-25 (also known as qwen-max-0125, Qwen2.5-Max)
|
79
|
+
|
80
|
+
## Qwen-Plus
|
81
|
+
This model provides balanced capabilities between Qwen-Max and Qwen-Flash, making it ideal for moderately complex tasks.
|
janito-3.12.2/cow.txt
ADDED
@@ -32,7 +32,7 @@ Learn how to use Janito effectively:
|
|
32
32
|
- [Profiles](guides/profiles.md) - Custom configurations for different workflows
|
33
33
|
- [Stock Market Guide](guides/stock-market-guide.md) - Accessing financial market data
|
34
34
|
- [Market Data Sources](guides/market-data-sources.md) - Reliable sources for financial data
|
35
|
-
|
35
|
+
|
36
36
|
|
37
37
|
### Development & Extension
|
38
38
|
|
@@ -1,102 +1,102 @@
|
|
1
|
-
# Janito Plugin System Documentation
|
2
|
-
|
3
|
-
This directory contains comprehensive documentation for the Janito plugin system, consolidated from multiple sources for easier access.
|
4
|
-
|
5
|
-
## Quick Navigation
|
6
|
-
|
7
|
-
- **[Plugin Development Guide](plugin-development.md)** - Complete guide for creating plugins
|
8
|
-
- **[Remote Plugins](remote-plugins.md)** - Using plugins from remote repositories
|
9
|
-
- **[Built-in Plugins](../built-in-plugins.md)** - Documentation for included plugins
|
10
|
-
- **[API Reference](api-reference.md)** - Technical details and interfaces
|
11
|
-
- **[Examples](examples/)** - Working plugin examples
|
12
|
-
|
13
|
-
## Overview
|
14
|
-
|
15
|
-
The Janito plugin system allows you to extend functionality with custom tools, commands, and features. Plugins can be:
|
16
|
-
|
17
|
-
- **Local plugins** - Stored in `./plugins/` or `~/.janito/plugins/`
|
18
|
-
- **Remote plugins** - Loaded from the `ikignosis/janito-plugins` repository
|
19
|
-
- **Built-in plugins** - Included with janito
|
20
|
-
|
21
|
-
## Quick Start
|
22
|
-
|
23
|
-
### Creating a Basic Plugin
|
24
|
-
|
25
|
-
```python
|
26
|
-
from janito.plugins.base import Plugin, PluginMetadata
|
27
|
-
from janito.tools.tool_base import ToolBase, ToolPermissions
|
28
|
-
|
29
|
-
class HelloTool(ToolBase):
|
30
|
-
tool_name = "hello"
|
31
|
-
permissions = ToolPermissions(read=True, write=False, execute=True)
|
32
|
-
|
33
|
-
def run(self, name="World"):
|
34
|
-
return f"Hello, {name}!"
|
35
|
-
|
36
|
-
class HelloPlugin(Plugin):
|
37
|
-
def get_metadata(self):
|
38
|
-
return PluginMetadata(
|
39
|
-
name="hello",
|
40
|
-
version="1.0.0",
|
41
|
-
description="A simple greeting plugin",
|
42
|
-
author="You"
|
43
|
-
)
|
44
|
-
|
45
|
-
def get_tools(self):
|
46
|
-
return [HelloTool]
|
47
|
-
```
|
48
|
-
|
49
|
-
### Enabling Plugins
|
50
|
-
|
51
|
-
Add to `janito.json`:
|
52
|
-
|
53
|
-
```json
|
54
|
-
{
|
55
|
-
"plugins": {
|
56
|
-
"load": {
|
57
|
-
"hello": true
|
58
|
-
}
|
59
|
-
}
|
60
|
-
}
|
61
|
-
```
|
62
|
-
|
63
|
-
## Available Documentation
|
64
|
-
|
65
|
-
### Core Documentation
|
66
|
-
- [Plugin Development Guide](plugin-development.md) - Step-by-step plugin creation
|
67
|
-
- [Remote Plugins](remote-plugins.md) - Using community plugins
|
68
|
-
- [Configuration](configuration.md) - Plugin configuration options
|
69
|
-
|
70
|
-
### Built-in Plugins
|
71
|
-
- [Git Analyzer](../built-in-plugins/git-analyzer.md) - Git repository analysis
|
72
|
-
- [Code Navigator](../built-in-plugins/code-navigator.md) - Code navigation tools
|
73
|
-
- [Example Plugin](../built-in-plugins/example.md) - Basic plugin example
|
74
|
-
|
75
|
-
### Advanced Topics
|
76
|
-
- [Plugin Architecture](architecture.md) - System design and internals
|
77
|
-
- [Testing Plugins](testing.md) - Writing tests for plugins
|
78
|
-
- [Publishing Plugins](publishing.md) - Sharing plugins with the community
|
79
|
-
|
80
|
-
## Getting Help
|
81
|
-
|
82
|
-
- **Issues**: Report problems on GitHub
|
83
|
-
- **Discussions**: Join community forums
|
84
|
-
- **Examples**: Check the `examples/` directory for working samples
|
85
|
-
|
86
|
-
## Directory Structure
|
87
|
-
|
88
|
-
```
|
89
|
-
docs/plugins/
|
90
|
-
├── README.md # This file
|
91
|
-
├── plugin-development.md # Complete development guide
|
92
|
-
├── remote-plugins.md # Remote repository usage
|
93
|
-
├── built-in-plugins/ # Built-in plugin docs
|
94
|
-
│ ├── git-analyzer.md
|
95
|
-
│ ├── code-navigator.md
|
96
|
-
│ └── example.md
|
97
|
-
├── examples/ # Sample plugins
|
98
|
-
│ ├── basic/
|
99
|
-
│ ├── intermediate/
|
100
|
-
│ └── advanced/
|
101
|
-
└── api-reference.md # Technical reference
|
1
|
+
# Janito Plugin System Documentation
|
2
|
+
|
3
|
+
This directory contains comprehensive documentation for the Janito plugin system, consolidated from multiple sources for easier access.
|
4
|
+
|
5
|
+
## Quick Navigation
|
6
|
+
|
7
|
+
- **[Plugin Development Guide](plugin-development.md)** - Complete guide for creating plugins
|
8
|
+
- **[Remote Plugins](remote-plugins.md)** - Using plugins from remote repositories
|
9
|
+
- **[Built-in Plugins](../built-in-plugins.md)** - Documentation for included plugins
|
10
|
+
- **[API Reference](api-reference.md)** - Technical details and interfaces
|
11
|
+
- **[Examples](examples/)** - Working plugin examples
|
12
|
+
|
13
|
+
## Overview
|
14
|
+
|
15
|
+
The Janito plugin system allows you to extend functionality with custom tools, commands, and features. Plugins can be:
|
16
|
+
|
17
|
+
- **Local plugins** - Stored in `./plugins/` or `~/.janito/plugins/`
|
18
|
+
- **Remote plugins** - Loaded from the `ikignosis/janito-plugins` repository
|
19
|
+
- **Built-in plugins** - Included with janito
|
20
|
+
|
21
|
+
## Quick Start
|
22
|
+
|
23
|
+
### Creating a Basic Plugin
|
24
|
+
|
25
|
+
```python
|
26
|
+
from janito.plugins.base import Plugin, PluginMetadata
|
27
|
+
from janito.tools.tool_base import ToolBase, ToolPermissions
|
28
|
+
|
29
|
+
class HelloTool(ToolBase):
|
30
|
+
tool_name = "hello"
|
31
|
+
permissions = ToolPermissions(read=True, write=False, execute=True)
|
32
|
+
|
33
|
+
def run(self, name="World"):
|
34
|
+
return f"Hello, {name}!"
|
35
|
+
|
36
|
+
class HelloPlugin(Plugin):
|
37
|
+
def get_metadata(self):
|
38
|
+
return PluginMetadata(
|
39
|
+
name="hello",
|
40
|
+
version="1.0.0",
|
41
|
+
description="A simple greeting plugin",
|
42
|
+
author="You"
|
43
|
+
)
|
44
|
+
|
45
|
+
def get_tools(self):
|
46
|
+
return [HelloTool]
|
47
|
+
```
|
48
|
+
|
49
|
+
### Enabling Plugins
|
50
|
+
|
51
|
+
Add to `janito.json`:
|
52
|
+
|
53
|
+
```json
|
54
|
+
{
|
55
|
+
"plugins": {
|
56
|
+
"load": {
|
57
|
+
"hello": true
|
58
|
+
}
|
59
|
+
}
|
60
|
+
}
|
61
|
+
```
|
62
|
+
|
63
|
+
## Available Documentation
|
64
|
+
|
65
|
+
### Core Documentation
|
66
|
+
- [Plugin Development Guide](plugin-development.md) - Step-by-step plugin creation
|
67
|
+
- [Remote Plugins](remote-plugins.md) - Using community plugins
|
68
|
+
- [Configuration](configuration.md) - Plugin configuration options
|
69
|
+
|
70
|
+
### Built-in Plugins
|
71
|
+
- [Git Analyzer](../built-in-plugins/git-analyzer.md) - Git repository analysis
|
72
|
+
- [Code Navigator](../built-in-plugins/code-navigator.md) - Code navigation tools
|
73
|
+
- [Example Plugin](../built-in-plugins/example.md) - Basic plugin example
|
74
|
+
|
75
|
+
### Advanced Topics
|
76
|
+
- [Plugin Architecture](architecture.md) - System design and internals
|
77
|
+
- [Testing Plugins](testing.md) - Writing tests for plugins
|
78
|
+
- [Publishing Plugins](publishing.md) - Sharing plugins with the community
|
79
|
+
|
80
|
+
## Getting Help
|
81
|
+
|
82
|
+
- **Issues**: Report problems on GitHub
|
83
|
+
- **Discussions**: Join community forums
|
84
|
+
- **Examples**: Check the `examples/` directory for working samples
|
85
|
+
|
86
|
+
## Directory Structure
|
87
|
+
|
88
|
+
```
|
89
|
+
docs/plugins/
|
90
|
+
├── README.md # This file
|
91
|
+
├── plugin-development.md # Complete development guide
|
92
|
+
├── remote-plugins.md # Remote repository usage
|
93
|
+
├── built-in-plugins/ # Built-in plugin docs
|
94
|
+
│ ├── git-analyzer.md
|
95
|
+
│ ├── code-navigator.md
|
96
|
+
│ └── example.md
|
97
|
+
├── examples/ # Sample plugins
|
98
|
+
│ ├── basic/
|
99
|
+
│ ├── intermediate/
|
100
|
+
│ └── advanced/
|
101
|
+
└── api-reference.md # Technical reference
|
102
102
|
```
|
@@ -1,128 +1,128 @@
|
|
1
|
-
# Plugin Architecture
|
2
|
-
|
3
|
-
## Overview
|
4
|
-
|
5
|
-
The Janito plugin architecture is designed to provide a flexible and extensible system for adding functionality. The architecture separates the interface definitions from the actual implementations, allowing for organized plugin management while maintaining a clean codebase.
|
6
|
-
|
7
|
-
## Architecture Components
|
8
|
-
|
9
|
-
### Plugin Interface Layer
|
10
|
-
|
11
|
-
Located in the `plugins/` directory, this layer contains the plugin definitions and interfaces. Each plugin is organized by functional domain:
|
12
|
-
|
13
|
-
```
|
14
|
-
plugins/
|
15
|
-
├── core/ # Core system functionality
|
16
|
-
│ ├── filemanager/
|
17
|
-
│ ├── codeanalyzer/
|
18
|
-
│ └── system/
|
19
|
-
├── web/ # Web-related functionality
|
20
|
-
│ └── webtools/
|
21
|
-
├── dev/ # Development tools
|
22
|
-
│ ├── pythondev/
|
23
|
-
│ └── visualization/
|
24
|
-
└── ui/ # User interface
|
25
|
-
└── userinterface/
|
26
|
-
```
|
27
|
-
|
28
|
-
### Implementation Layer
|
29
|
-
|
30
|
-
The actual tool implementations are located in `janito/plugins/tools/local/`. This separation ensures that the core functionality remains stable while the plugin interfaces can be organized and extended.
|
31
|
-
|
32
|
-
```
|
33
|
-
janito/plugins/tools/local/
|
34
|
-
├── create_file.py
|
35
|
-
├── read_files.py
|
36
|
-
├── view_file.py
|
37
|
-
├── replace_text_in_file.py
|
38
|
-
├── validate_file_syntax/
|
39
|
-
├── create_directory.py
|
40
|
-
├── remove_directory.py
|
41
|
-
├── remove_file.py
|
42
|
-
├── copy_file.py
|
43
|
-
├── move_file.py
|
44
|
-
├── find_files.py
|
45
|
-
├── get_file_outline/
|
46
|
-
├── search_text/
|
47
|
-
├── run_powershell_command.py
|
48
|
-
├── fetch_url.py
|
49
|
-
├── open_url.py
|
50
|
-
├── open_html_in_browser.py
|
51
|
-
├── python_code_run.py
|
52
|
-
├── python_command_run.py
|
53
|
-
├── python_file_run.py
|
54
|
-
|
55
|
-
└── ask_user.py
|
56
|
-
```
|
57
|
-
|
58
|
-
## Resource Flow
|
59
|
-
|
60
|
-
1. **Plugin Registration**: Plugins are registered with the system at startup
|
61
|
-
2. **Tool Discovery**: The system discovers available tools from registered plugins
|
62
|
-
3. **Resource Contribution**: Each plugin contributes its tools to the global tool registry
|
63
|
-
4. **Tool Execution**: When a tool is called, the system routes the request to the appropriate implementation
|
64
|
-
|
65
|
-
## Plugin Loading Process
|
66
|
-
|
67
|
-
1. **Discovery**: The system scans for plugins in `./plugins/`, `~/.janito/plugins/`, and remote repositories
|
68
|
-
2. **Validation**: Plugin metadata and interfaces are validated
|
69
|
-
3. **Initialization**: The `initialize()` method is called on each loaded plugin
|
70
|
-
4. **Registration**: Tools and commands are registered with the system
|
71
|
-
5. **Availability**: Plugins are now available for use
|
72
|
-
|
73
|
-
## Resource Contribution Mechanism
|
74
|
-
|
75
|
-
Plugins contribute resources through several methods:
|
76
|
-
|
77
|
-
### Tools
|
78
|
-
|
79
|
-
The primary resource type, tools are registered via the `get_tools()` method:
|
80
|
-
|
81
|
-
```python
|
82
|
-
def get_tools(self) -> List[Type[ToolBase]]:
|
83
|
-
return [HelloWorldTool, CalculatorTool]
|
84
|
-
```
|
85
|
-
|
86
|
-
### Commands
|
87
|
-
|
88
|
-
CLI commands are contributed through `get_commands()`:
|
89
|
-
|
90
|
-
```python
|
91
|
-
def get_commands(self) -> Dict[str, Any]:
|
92
|
-
return {"mycommand": my_command_handler}
|
93
|
-
```
|
94
|
-
|
95
|
-
### Configuration
|
96
|
-
|
97
|
-
Plugins can define their configuration schema:
|
98
|
-
|
99
|
-
```python
|
100
|
-
def get_config_schema(self) -> Dict[str, Any]:
|
101
|
-
return {
|
102
|
-
"type": "object",
|
103
|
-
"properties": {
|
104
|
-
"timeout": {"type": "number", "default": 30}
|
105
|
-
}
|
106
|
-
}
|
107
|
-
```
|
108
|
-
|
109
|
-
## Security Model
|
110
|
-
|
111
|
-
The architecture includes several security features:
|
112
|
-
|
113
|
-
- **Permission System**: Each tool has defined read, write, and execute permissions
|
114
|
-
- **Path Validation**: File operations include path validation to prevent directory traversal
|
115
|
-
- **Sandboxing**: Potentially dangerous operations are sandboxed and monitored
|
116
|
-
- **User Confirmation**: Sensitive operations require explicit user approval
|
117
|
-
- **Timeouts**: Long-running operations are automatically terminated
|
118
|
-
|
119
|
-
## Extension Points
|
120
|
-
|
121
|
-
The architecture supports several extension points:
|
122
|
-
|
123
|
-
- **New Plugins**: Add new functionality by creating plugins in the `plugins/` directory
|
124
|
-
- **Custom Tools**: Implement new tools by extending `ToolBase`
|
125
|
-
- **Remote Plugins**: Load plugins from external repositories
|
126
|
-
- **Configuration**: Customize plugin behavior through configuration files
|
127
|
-
|
1
|
+
# Plugin Architecture
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
The Janito plugin architecture is designed to provide a flexible and extensible system for adding functionality. The architecture separates the interface definitions from the actual implementations, allowing for organized plugin management while maintaining a clean codebase.
|
6
|
+
|
7
|
+
## Architecture Components
|
8
|
+
|
9
|
+
### Plugin Interface Layer
|
10
|
+
|
11
|
+
Located in the `plugins/` directory, this layer contains the plugin definitions and interfaces. Each plugin is organized by functional domain:
|
12
|
+
|
13
|
+
```
|
14
|
+
plugins/
|
15
|
+
├── core/ # Core system functionality
|
16
|
+
│ ├── filemanager/
|
17
|
+
│ ├── codeanalyzer/
|
18
|
+
│ └── system/
|
19
|
+
├── web/ # Web-related functionality
|
20
|
+
│ └── webtools/
|
21
|
+
├── dev/ # Development tools
|
22
|
+
│ ├── pythondev/
|
23
|
+
│ └── visualization/
|
24
|
+
└── ui/ # User interface
|
25
|
+
└── userinterface/
|
26
|
+
```
|
27
|
+
|
28
|
+
### Implementation Layer
|
29
|
+
|
30
|
+
The actual tool implementations are located in `janito/plugins/tools/local/`. This separation ensures that the core functionality remains stable while the plugin interfaces can be organized and extended.
|
31
|
+
|
32
|
+
```
|
33
|
+
janito/plugins/tools/local/
|
34
|
+
├── create_file.py
|
35
|
+
├── read_files.py
|
36
|
+
├── view_file.py
|
37
|
+
├── replace_text_in_file.py
|
38
|
+
├── validate_file_syntax/
|
39
|
+
├── create_directory.py
|
40
|
+
├── remove_directory.py
|
41
|
+
├── remove_file.py
|
42
|
+
├── copy_file.py
|
43
|
+
├── move_file.py
|
44
|
+
├── find_files.py
|
45
|
+
├── get_file_outline/
|
46
|
+
├── search_text/
|
47
|
+
├── run_powershell_command.py
|
48
|
+
├── fetch_url.py
|
49
|
+
├── open_url.py
|
50
|
+
├── open_html_in_browser.py
|
51
|
+
├── python_code_run.py
|
52
|
+
├── python_command_run.py
|
53
|
+
├── python_file_run.py
|
54
|
+
|
55
|
+
└── ask_user.py
|
56
|
+
```
|
57
|
+
|
58
|
+
## Resource Flow
|
59
|
+
|
60
|
+
1. **Plugin Registration**: Plugins are registered with the system at startup
|
61
|
+
2. **Tool Discovery**: The system discovers available tools from registered plugins
|
62
|
+
3. **Resource Contribution**: Each plugin contributes its tools to the global tool registry
|
63
|
+
4. **Tool Execution**: When a tool is called, the system routes the request to the appropriate implementation
|
64
|
+
|
65
|
+
## Plugin Loading Process
|
66
|
+
|
67
|
+
1. **Discovery**: The system scans for plugins in `./plugins/`, `~/.janito/plugins/`, and remote repositories
|
68
|
+
2. **Validation**: Plugin metadata and interfaces are validated
|
69
|
+
3. **Initialization**: The `initialize()` method is called on each loaded plugin
|
70
|
+
4. **Registration**: Tools and commands are registered with the system
|
71
|
+
5. **Availability**: Plugins are now available for use
|
72
|
+
|
73
|
+
## Resource Contribution Mechanism
|
74
|
+
|
75
|
+
Plugins contribute resources through several methods:
|
76
|
+
|
77
|
+
### Tools
|
78
|
+
|
79
|
+
The primary resource type, tools are registered via the `get_tools()` method:
|
80
|
+
|
81
|
+
```python
|
82
|
+
def get_tools(self) -> List[Type[ToolBase]]:
|
83
|
+
return [HelloWorldTool, CalculatorTool]
|
84
|
+
```
|
85
|
+
|
86
|
+
### Commands
|
87
|
+
|
88
|
+
CLI commands are contributed through `get_commands()`:
|
89
|
+
|
90
|
+
```python
|
91
|
+
def get_commands(self) -> Dict[str, Any]:
|
92
|
+
return {"mycommand": my_command_handler}
|
93
|
+
```
|
94
|
+
|
95
|
+
### Configuration
|
96
|
+
|
97
|
+
Plugins can define their configuration schema:
|
98
|
+
|
99
|
+
```python
|
100
|
+
def get_config_schema(self) -> Dict[str, Any]:
|
101
|
+
return {
|
102
|
+
"type": "object",
|
103
|
+
"properties": {
|
104
|
+
"timeout": {"type": "number", "default": 30}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
```
|
108
|
+
|
109
|
+
## Security Model
|
110
|
+
|
111
|
+
The architecture includes several security features:
|
112
|
+
|
113
|
+
- **Permission System**: Each tool has defined read, write, and execute permissions
|
114
|
+
- **Path Validation**: File operations include path validation to prevent directory traversal
|
115
|
+
- **Sandboxing**: Potentially dangerous operations are sandboxed and monitored
|
116
|
+
- **User Confirmation**: Sensitive operations require explicit user approval
|
117
|
+
- **Timeouts**: Long-running operations are automatically terminated
|
118
|
+
|
119
|
+
## Extension Points
|
120
|
+
|
121
|
+
The architecture supports several extension points:
|
122
|
+
|
123
|
+
- **New Plugins**: Add new functionality by creating plugins in the `plugins/` directory
|
124
|
+
- **Custom Tools**: Implement new tools by extending `ToolBase`
|
125
|
+
- **Remote Plugins**: Load plugins from external repositories
|
126
|
+
- **Configuration**: Customize plugin behavior through configuration files
|
127
|
+
|
128
128
|
This architecture enables a powerful, secure, and extensible system for building AI-assisted development tools.
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# Visualization Plugin
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
The Visualization plugin provides data visualization and charting capabilities. This plugin enables the display of data in various visual formats, making it easier to understand and analyze information.
|
6
|
+
|
7
|
+
## Resources Provided
|
8
|
+
|
9
|
+
### Tools
|
10
|
+
|
11
|
+
| Tool Name | Function | Description |
|
12
|
+
|-----------|----------|-------------|
|
13
|
+
|
14
|
+
| `show_image` | Display single image | Shows a single image inline in the terminal using rich |
|
15
|
+
| `show_image_grid` | Display image grid | Shows multiple images in a grid inline in the terminal |
|
16
|
+
|
17
|
+
## Usage Examples
|
18
|
+
|
19
|
+
### Displaying an Image
|
20
|
+
```json
|
21
|
+
{
|
22
|
+
"tool": "show_image",
|
23
|
+
"path": "chart.png",
|
24
|
+
"width": 80,
|
25
|
+
"preserve_aspect": true
|
26
|
+
}
|
27
|
+
```
|
28
|
+
|
29
|
+
### Creating an Image Grid
|
30
|
+
```json
|
31
|
+
{
|
32
|
+
"tool": "show_image_grid",
|
33
|
+
"paths": ["image1.png", "image2.png", "image3.png"],
|
34
|
+
"columns": 2,
|
35
|
+
"width": 40
|
36
|
+
}
|
37
|
+
```
|
38
|
+
|
39
|
+
|
40
|
+
|
41
|
+
|
42
|
+
## Configuration
|
43
|
+
|
44
|
+
This plugin does not require any specific configuration. Image display uses default dimensions and styling.
|
45
|
+
|
46
|
+
|
47
|
+
## Security Considerations
|
48
|
+
|
49
|
+
- Images are displayed client-side with no external dependencies
|
50
|
+
- No data is transmitted to external services
|
51
|
+
- Large images are resized to prevent performance issues
|
52
|
+
|
53
|
+
## Integration
|
54
|
+
|
55
|
+
The Visualization plugin provides image display capabilities for:
|
56
|
+
|
57
|
+
- Visual content presentation
|
58
|
+
- Multi-image comparisons
|
59
|
+
- Documentation with visual elements
|
60
|
+
- Terminal-based image viewing
|
61
|
+
|
62
|
+
This enables rich visual presentation capabilities within the terminal interface.
|
@@ -39,15 +39,7 @@ Returns:
|
|
39
39
|
Example Usage:
|
40
40
|
- `show_image_grid(paths=["img/tux.png", "img/tux_display.png"], columns=2, width=40)`
|
41
41
|
|
42
|
-
#### read_chart
|
43
42
|
|
44
|
-
Display charts and data visualizations in the terminal using rich.
|
45
|
-
|
46
|
-
**Arguments:**
|
47
|
-
|
48
|
-
- `data` (dict): Chart data in JSON format. Should contain 'type' (bar, line, pie, table) and 'data' keys.
|
49
|
-
- `title` (str, optional): Chart title. Defaults to "Chart".
|
50
|
-
- `width` (int, optional): Chart width. Defaults to 80.
|
51
43
|
- `height` (int, optional): Chart height. Defaults to 20.
|
52
44
|
|
53
45
|
**Returns:**
|
@@ -56,9 +48,7 @@ Display charts and data visualizations in the terminal using rich.
|
|
56
48
|
|
57
49
|
**Example Usage:**
|
58
50
|
|
59
|
-
|
60
|
-
- Display a bar chart: `read_chart(data={"type": "bar", "data": {"Q1": 100, "Q2": 150}}, title="Sales")`
|
61
|
-
- Display a pie chart: `read_chart(data={"type": "pie", "data": {"Desktop": 45, "Mobile": 30}}, title="Usage")`
|
51
|
+
|
62
52
|
|
63
53
|
### Web Tools
|
64
54
|
|