janito 2.26.0__tar.gz → 2.27.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {janito-2.26.0 → janito-2.27.1}/PKG-INFO +21 -1
- {janito-2.26.0 → janito-2.27.1}/README-dev.md +26 -0
- {janito-2.26.0 → janito-2.27.1}/README.md +18 -0
- {janito-2.26.0 → janito-2.27.1}/docs/changelogs/CHANGELOG.md +30 -0
- janito-2.27.1/docs/changelogs/CHANGELOG_2.27.0.md +64 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/single-shot-terminal.md +12 -0
- janito-2.27.1/docs/plugins/ACTUAL_TOOLS_LOCATION.md +49 -0
- janito-2.27.1/docs/plugins/MIGRATION_COMPLETE.md +73 -0
- janito-2.27.1/docs/plugins/api-reference.md +221 -0
- janito-2.27.1/docs/plugins/architecture.md +128 -0
- janito-2.27.1/docs/plugins/built-in-plugins/codeanalyzer.md +65 -0
- janito-2.27.1/docs/plugins/built-in-plugins/filemanager.md +65 -0
- janito-2.27.1/docs/plugins/built-in-plugins/pythondev.md +64 -0
- janito-2.27.1/docs/plugins/built-in-plugins/system.md +62 -0
- janito-2.27.1/docs/plugins/built-in-plugins/userinterface.md +61 -0
- janito-2.27.1/docs/plugins/built-in-plugins/visualization.md +87 -0
- janito-2.27.1/docs/plugins/built-in-plugins/webtools.md +65 -0
- janito-2.27.1/docs/plugins/configuration.md +127 -0
- janito-2.27.1/docs/plugins/examples/advanced.md +326 -0
- janito-2.27.1/docs/plugins/examples/basic.md +82 -0
- janito-2.27.1/docs/plugins/examples/intermediate.md +145 -0
- janito-2.27.1/docs/plugins/plugin-development.md +170 -0
- janito-2.27.1/docs/plugins/plugin-resources.md +76 -0
- janito-2.27.1/docs/plugins/publishing.md +253 -0
- janito-2.27.1/docs/plugins/remote-plugins.md +96 -0
- janito-2.27.1/docs/plugins/testing.md +253 -0
- {janito-2.26.0 → janito-2.27.1}/docs/reference/cli-options.md +23 -3
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/session.py +37 -23
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/__init__.py +2 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/help.py +6 -1
- janito-2.27.1/janito/cli/chat_mode/shell/commands/provider.py +25 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/toolbar.py +15 -1
- janito-2.27.1/janito/cli/cli_commands/enable_disable_plugin.py +64 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_plugins.py +20 -4
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/show_config.py +24 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/getters.py +6 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/runner.py +15 -1
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/setters.py +18 -6
- {janito-2.26.0 → janito-2.27.1}/janito/cli/main_cli.py +17 -6
- janito-2.27.1/janito/plugins/builtin.py +84 -0
- {janito-2.26.0 → janito-2.27.1}/janito/plugins/discovery.py +83 -1
- {janito-2.26.0 → janito-2.27.1}/janito/plugins/manager.py +2 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/ask_user.py +7 -1
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/fetch_url.py +80 -5
- janito-2.27.1/janito/tools/base.py +11 -0
- {janito-2.26.0 → janito-2.27.1}/janito.egg-info/PKG-INFO +21 -1
- {janito-2.26.0 → janito-2.27.1}/janito.egg-info/SOURCES.txt +82 -8
- {janito-2.26.0 → janito-2.27.1}/janito.egg-info/requires.txt +3 -0
- janito-2.27.1/janito.egg-info/top_level.txt +1 -0
- janito-2.27.1/plugins/__init__.py +33 -0
- janito-2.27.1/plugins/core/__init__.py +7 -0
- janito-2.27.1/plugins/core/codeanalyzer/__init__.py +25 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +1 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/core.py +122 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +47 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +14 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +303 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +36 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/__init__.py +1 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/core.py +205 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/match_lines.py +67 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +73 -0
- janito-2.27.1/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +145 -0
- janito-2.27.1/plugins/core/filemanager/__init__.py +63 -0
- janito-2.27.1/plugins/core/filemanager/tools/copy_file.py +87 -0
- janito-2.27.1/plugins/core/filemanager/tools/create_directory.py +70 -0
- janito-2.27.1/plugins/core/filemanager/tools/create_file.py +87 -0
- janito-2.27.1/plugins/core/filemanager/tools/delete_text_in_file.py +134 -0
- janito-2.27.1/plugins/core/filemanager/tools/find_files.py +143 -0
- janito-2.27.1/plugins/core/filemanager/tools/move_file.py +131 -0
- janito-2.27.1/plugins/core/filemanager/tools/read_files.py +58 -0
- janito-2.27.1/plugins/core/filemanager/tools/remove_directory.py +55 -0
- janito-2.27.1/plugins/core/filemanager/tools/remove_file.py +58 -0
- janito-2.27.1/plugins/core/filemanager/tools/replace_text_in_file.py +270 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/core.py +114 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +35 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +100 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +47 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +27 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +6 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +109 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +32 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +5 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +11 -0
- janito-2.27.1/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +6 -0
- janito-2.27.1/plugins/core/filemanager/tools/view_file.py +172 -0
- janito-2.27.1/plugins/core/system/__init__.py +17 -0
- janito-2.27.1/plugins/core/system/tools/run_bash_command.py +183 -0
- janito-2.27.1/plugins/core/system/tools/run_powershell_command.py +218 -0
- janito-2.27.1/plugins/dev/__init__.py +7 -0
- janito-2.27.1/plugins/dev/pythondev/__init__.py +24 -0
- janito-2.27.1/plugins/dev/pythondev/tools/python_code_run.py +172 -0
- janito-2.27.1/plugins/dev/pythondev/tools/python_command_run.py +170 -0
- janito-2.27.1/plugins/dev/pythondev/tools/python_file_run.py +171 -0
- janito-2.27.1/plugins/dev/visualization/__init__.py +17 -0
- janito-2.27.1/plugins/dev/visualization/tools/read_chart.py +259 -0
- janito-2.27.1/plugins/ui/__init__.py +7 -0
- janito-2.27.1/plugins/ui/userinterface/__init__.py +14 -0
- janito-2.27.1/plugins/ui/userinterface/tools/ask_user.py +110 -0
- janito-2.27.1/plugins/web/__init__.py +7 -0
- janito-2.27.1/plugins/web/webtools/__init__.py +25 -0
- janito-2.27.1/plugins/web/webtools/tools/fetch_url.py +411 -0
- janito-2.27.1/plugins/web/webtools/tools/open_html_in_browser.py +51 -0
- janito-2.27.1/plugins/web/webtools/tools/open_url.py +37 -0
- janito-2.27.1/plugins.txt +1 -0
- {janito-2.26.0 → janito-2.27.1}/pyproject.toml +1 -0
- janito-2.26.0/README-PLUGINS.md +0 -68
- janito-2.26.0/docs/guides/plugins.md +0 -209
- janito-2.26.0/docs/guides/remote-plugins.md +0 -198
- janito-2.26.0/janito-coder/janito_coder/__init__.py +0 -9
- janito-2.26.0/janito-coder/janito_coder/plugins/__init__.py +0 -27
- janito-2.26.0/janito-coder/janito_coder/plugins/code_navigator.py +0 -618
- janito-2.26.0/janito-coder/janito_coder/plugins/git_analyzer.py +0 -273
- janito-2.26.0/janito-coder/pyproject.toml +0 -347
- janito-2.26.0/janito.egg-info/top_level.txt +0 -2
- {janito-2.26.0 → janito-2.27.1}/.codespellrc +0 -0
- {janito-2.26.0 → janito-2.27.1}/.gitattributes +0 -0
- {janito-2.26.0 → janito-2.27.1}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-2.26.0 → janito-2.27.1}/.gitignore +0 -0
- {janito-2.26.0 → janito-2.27.1}/.pre-commit-config.yaml +0 -0
- {janito-2.26.0 → janito-2.27.1}/.secrets.baseline +0 -0
- {janito-2.26.0 → janito-2.27.1}/.vscode/settings.json +0 -0
- {janito-2.26.0 → janito-2.27.1}/LICENSE +0 -0
- {janito-2.26.0 → janito-2.27.1}/MARKET_ANALYST_README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/RELEASE_COMPARISON.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/UPDATING_DOCS.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/adding_mcp.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/DIV.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/Interfaces.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/about/costs.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/about/vs-webchats.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/about/why.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/alibaba-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/alternatives.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/cerebras-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/code_intelligence/our-approach.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/concepts/analysis-style.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/concepts/human-guided-ai.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/concepts/index.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/concepts/language-model-clients.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/concepts/prompt-design-style.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/deepseek-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/driver-flow.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/driver-request-cancellation.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/drivers/events.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/drivers.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/event-bus.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/configuration.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/developing.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/disabled-tools.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/installation.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/market-data-sources.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/profiles.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/prompting/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/read-chart-examples.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/security-commands.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/stock-market-guide.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/terminal-shell.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/tools-developer-guide.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/url-whitelist.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/using.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/guides/using_tools.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/ibm-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/code-generation-observability.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/code_generation_observability.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/happy-programmer.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/happy-programmer.svg +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/terminal-shell.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/imgs/terminal_shell.png +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/index.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/llm-drivers-required-config.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/llm-drivers.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/meta/developer-toolchain.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/meta/quality-checks.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/mistral-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/moonshotai-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/openai-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/overrides/partials/copyright.html +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/plugins/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/provider-platform-access.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/README-pt.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/configuracao.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/exemplos.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/faq-pt.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/ferramentas.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/guia-uso.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/instalacao.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/pt/perfis.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/public-sources.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/reference/api.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/reference/azure-openai.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/reference/message-handler-model.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/reference/rich-message-handler.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/security.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/supported-providers-models.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/tools/search-text.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/tools-index.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/tools-natural-results.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/tools-precision.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/docs/z-ai-setup.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/examples/loop_protection_example.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/examples/loop_protection_tool_example.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/get_nasdaq_top.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/ibm-logo.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/__main__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/_version.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/agent/setup_agent.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/session_profile_select.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/config.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/console.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/event_logger.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/model_guesser.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/core/unsetters.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/main.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/prompt_core.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/prompt_handler.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/prompt_setup.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/cli/verbose_output.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/config.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/config_manager.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/conversation_history.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/dir_walk_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/driver_events.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/openai/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/openai/driver.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/zai/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/drivers/zai/driver.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/event_bus/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/event_bus/bus.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/event_bus/event.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/event_bus/handler.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/event_bus/queue_bus.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/exceptions.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/formatting.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/formatting_token.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/gitignore_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/i18n/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/i18n/it.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/i18n/messages.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/i18n/pt.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/agent.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/auth.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/auth_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/driver.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/driver_config.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/driver_config_builder.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/driver_input.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/message_parts.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/model.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/llm/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/mkdocs.yml +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/perf_singleton.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/performance_collector.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/platform_discovery.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/plugins/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/plugins/base.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/plugins/config.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/provider_config.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/provider_registry.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/alibaba/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/alibaba/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/alibaba/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/anthropic/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/anthropic/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/azure_openai/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/cerebras/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/cerebras/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/cerebras/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/dashscope.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/deepseek/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/deepseek/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/deepseek/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/google/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/google/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/google/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/ibm/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/ibm/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/ibm/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/ibm/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/mistral/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/mistral/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/mistral/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/moonshotai/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/moonshotai/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/moonshotai/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/openai/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/openai/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/openai/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/openai/schema_generator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/registry.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/zai/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/zai/model_info.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/zai/provider.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/providers/zai/schema_generator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/regions/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/regions/cli.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/regions/geo_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/regions/provider_regions.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/report_events.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/shell.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/README.md +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/copy_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/create_directory.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/create_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/delete_text_in_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/find_files.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/core.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/java_outline.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/markdown_outline.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/python_outline.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/get_file_outline/search_outline.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/move_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/open_html_in_browser.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/open_url.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/python_code_run.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/python_command_run.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/python_file_run.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/read_chart.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/read_files.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/remove_directory.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/remove_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/replace_text_in_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/run_bash_command.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/run_powershell_command.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/core.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/match_lines.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/pattern_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/search_text/traverse_directory.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/__init__.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/core.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/css_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/html_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/js_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/json_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/markdown_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/ps1_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/python_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/xml_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/validate_file_syntax/yaml_validator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/adapters/local/view_file.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/disabled_tools.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/inspect_registry.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/loop_protection.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/outline_file.bak.zip +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/path_security.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/path_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/permissions.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/permissions_parse.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tool_base.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tool_events.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tool_run_exception.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tool_use_tracker.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tool_utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tools_adapter.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/tools_schema.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/tools/url_whitelist.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito/utils.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito.egg-info/dependency_links.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/janito.egg-info/entry_points.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/market_prompt_fix.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/market_test.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/mkdocs.yml +0 -0
- {janito-2.26.0 → janito-2.27.1}/mkdocs_hooks.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/plugins/example_plugin.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/pytest.ini +0 -0
- {janito-2.26.0 → janito-2.27.1}/requirements-dev.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/requirements.txt +0 -0
- {janito-2.26.0 → janito-2.27.1}/setup.cfg +0 -0
- {janito-2.26.0 → janito-2.27.1}/test_example.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/test_key_field_behavior.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/test_key_field_protection.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/test_loop_protection_return.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/test_market_analyst.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/adapters/local/test_read_files.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_cli_list_models.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_cli_list_providers.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_cli_list_providers_moonshotai.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_cli_version.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_disabled_tools.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_plugin_system.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_provider_alibaba.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_provider_cerebras.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tests/test_provider_moonshotai.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tools/release.py +0 -0
- {janito-2.26.0 → janito-2.27.1}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.27.1
|
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
|
@@ -28,6 +28,8 @@ Requires-Dist: codespell==2.4.1; extra == "dev"
|
|
28
28
|
Requires-Dist: black; extra == "dev"
|
29
29
|
Requires-Dist: questionary>=2.0.1; extra == "dev"
|
30
30
|
Requires-Dist: setuptools_scm>=8.0; extra == "dev"
|
31
|
+
Provides-Extra: coder
|
32
|
+
Requires-Dist: janito-coder; extra == "coder"
|
31
33
|
Dynamic: license-file
|
32
34
|
|
33
35
|
# Janito, control you context
|
@@ -187,7 +189,25 @@ janito -r -w "Read and update this file: ..."
|
|
187
189
|
To enable all permissions (read, write, execute):
|
188
190
|
|
189
191
|
```bash
|
192
|
+
# Using individual flags
|
190
193
|
janito -r -w -x "Run this code: print('Hello, world!')"
|
194
|
+
|
195
|
+
# Using the convenient /rwx prefix (single-shot mode)
|
196
|
+
janito /rwx "Run this code: print('Hello, world!')"
|
197
|
+
```
|
198
|
+
|
199
|
+
#### One-Shot Mode
|
200
|
+
For quick tasks without entering interactive mode, provide your prompt directly:
|
201
|
+
|
202
|
+
```bash
|
203
|
+
# Basic one-shot
|
204
|
+
janito "What are the key classes in this project?"
|
205
|
+
|
206
|
+
# One-shot with all permissions enabled
|
207
|
+
janito /rwx "Create a Python script and run it"
|
208
|
+
|
209
|
+
# One-shot with specific permissions
|
210
|
+
janito -r -w "Read this file and create a summary"
|
191
211
|
```
|
192
212
|
|
193
213
|
> **Warning:** Enabling execution tools allows running arbitrary code or shell commands. Only use `--exec` if you trust your prompt and environment.
|
@@ -36,6 +36,32 @@ This document provides guidelines and instructions for developers contributing t
|
|
36
36
|
pip install -e .
|
37
37
|
```
|
38
38
|
|
39
|
+
## Release Process
|
40
|
+
|
41
|
+
The project includes an automated release script at `tools/release.py` that handles the complete release process:
|
42
|
+
|
43
|
+
- **Full release** (build + upload to PyPI):
|
44
|
+
```sh
|
45
|
+
python tools/release.py
|
46
|
+
```
|
47
|
+
|
48
|
+
- **Build only** (skip PyPI upload):
|
49
|
+
```sh
|
50
|
+
python tools/release.py --build-only
|
51
|
+
```
|
52
|
+
|
53
|
+
The release script will:
|
54
|
+
1. Check for uncommitted changes
|
55
|
+
2. Verify the latest git tag version
|
56
|
+
3. Check PyPI for existing versions
|
57
|
+
4. Build the package using `python -m build`
|
58
|
+
5. Upload to PyPI using `twine upload`
|
59
|
+
|
60
|
+
**Requirements**: Make sure you have `build` and `twine` installed:
|
61
|
+
```sh
|
62
|
+
pip install build twine
|
63
|
+
```
|
64
|
+
|
39
65
|
## Running Tests
|
40
66
|
|
41
67
|
- (Add test instructions here if/when tests are present)
|
@@ -155,7 +155,25 @@ janito -r -w "Read and update this file: ..."
|
|
155
155
|
To enable all permissions (read, write, execute):
|
156
156
|
|
157
157
|
```bash
|
158
|
+
# Using individual flags
|
158
159
|
janito -r -w -x "Run this code: print('Hello, world!')"
|
160
|
+
|
161
|
+
# Using the convenient /rwx prefix (single-shot mode)
|
162
|
+
janito /rwx "Run this code: print('Hello, world!')"
|
163
|
+
```
|
164
|
+
|
165
|
+
#### One-Shot Mode
|
166
|
+
For quick tasks without entering interactive mode, provide your prompt directly:
|
167
|
+
|
168
|
+
```bash
|
169
|
+
# Basic one-shot
|
170
|
+
janito "What are the key classes in this project?"
|
171
|
+
|
172
|
+
# One-shot with all permissions enabled
|
173
|
+
janito /rwx "Create a Python script and run it"
|
174
|
+
|
175
|
+
# One-shot with specific permissions
|
176
|
+
janito -r -w "Read this file and create a summary"
|
159
177
|
```
|
160
178
|
|
161
179
|
> **Warning:** Enabling execution tools allows running arbitrary code or shell commands. Only use `--exec` if you trust your prompt and environment.
|
@@ -2,6 +2,36 @@
|
|
2
2
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
|
+
## [2.27.0] - 2025-08-16
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- **Enhanced CLI Experience**:
|
10
|
+
- **One-Shot Mode Prefix Support**: Added `/rwx` prefix support to enable all tool permissions in a single command
|
11
|
+
- Use `/rwx "your prompt here"` to enable read, write, and execute permissions in one-shot mode
|
12
|
+
- Equivalent to using `-r -w -x` flags but more convenient for quick tasks
|
13
|
+
- Maintains security by requiring explicit user action for each command
|
14
|
+
|
15
|
+
- **Enhanced Web Fetching**:
|
16
|
+
- **Browser-like Session Support**: Enhanced `fetch_url` tool with browser-like session capabilities
|
17
|
+
- Persistent session management for improved reliability
|
18
|
+
- Better handling of cookies and session state
|
19
|
+
- Enhanced user-agent and header management
|
20
|
+
- Improved error handling for network requests
|
21
|
+
|
22
|
+
### Changed
|
23
|
+
|
24
|
+
- **Improved Documentation**:
|
25
|
+
- Updated CLI documentation to reflect new `/rwx` prefix and one-shot mode features
|
26
|
+
- Enhanced fetch_url tool documentation with new session parameters
|
27
|
+
- Improved parameter descriptions and usage examples
|
28
|
+
|
29
|
+
### Fixed
|
30
|
+
|
31
|
+
- **Documentation Fixes**:
|
32
|
+
- Added missing docstring parameters for fetch_url tool
|
33
|
+
- Fixed parameter documentation inconsistencies
|
34
|
+
|
5
35
|
## [2.26.0] - 2025-08-16
|
6
36
|
|
7
37
|
### Added
|
@@ -0,0 +1,64 @@
|
|
1
|
+
# Changelog v2.27.0
|
2
|
+
|
3
|
+
## [2.27.0] - 2025-08-16
|
4
|
+
|
5
|
+
### Added
|
6
|
+
|
7
|
+
- **Enhanced CLI Experience**:
|
8
|
+
- **One-Shot Mode Prefix Support**: Added `/rwx` prefix support to enable all tool permissions in a single command
|
9
|
+
- Use `/rwx "your prompt here"` to enable read, write, and execute permissions in one-shot mode
|
10
|
+
- Equivalent to using `-r -w -x` flags but more convenient for quick tasks
|
11
|
+
- Maintains security by requiring explicit user action for each command
|
12
|
+
|
13
|
+
- **Enhanced Web Fetching**:
|
14
|
+
- **Browser-like Session Support**: Enhanced `fetch_url` tool with browser-like session capabilities
|
15
|
+
- Persistent session management for improved reliability
|
16
|
+
- Better handling of cookies and session state
|
17
|
+
- Enhanced user-agent and header management
|
18
|
+
- Improved error handling for network requests
|
19
|
+
|
20
|
+
### Changed
|
21
|
+
|
22
|
+
- **Improved Documentation**:
|
23
|
+
- Updated CLI documentation to reflect new `/rwx` prefix and one-shot mode features
|
24
|
+
- Enhanced fetch_url tool documentation with new session parameters
|
25
|
+
- Improved parameter descriptions and usage examples
|
26
|
+
|
27
|
+
### Fixed
|
28
|
+
|
29
|
+
- **Documentation Fixes**:
|
30
|
+
- Added missing docstring parameters for fetch_url tool
|
31
|
+
- Fixed parameter documentation inconsistencies
|
32
|
+
|
33
|
+
### Developer Experience
|
34
|
+
|
35
|
+
- **CLI Usability**:
|
36
|
+
- Streamlined one-shot mode with convenient prefix commands
|
37
|
+
- Consistent behavior between interactive and non-interactive modes
|
38
|
+
- Clear documentation for new features
|
39
|
+
|
40
|
+
### Technical Details
|
41
|
+
|
42
|
+
- **Implementation**: Enhanced CLI argument parsing to support `/rwx` prefix
|
43
|
+
- **Integration**: Full integration with existing permission system
|
44
|
+
- **Compatibility**: Backward compatible with existing CLI flags and commands
|
45
|
+
|
46
|
+
### Migration Guide
|
47
|
+
|
48
|
+
For users upgrading from v2.26.0:
|
49
|
+
|
50
|
+
1. **No Breaking Changes**: All existing functionality remains unchanged
|
51
|
+
2. **New Prefix**: Use `/rwx "prompt"` for one-shot mode with all permissions
|
52
|
+
3. **Existing Flags**: `-r -w -x` flags continue to work as before
|
53
|
+
4. **fetch_url Tool**: Enhanced session support is automatic, no configuration needed
|
54
|
+
|
55
|
+
### Contributors
|
56
|
+
|
57
|
+
- Added convenient one-shot mode prefix for improved CLI experience
|
58
|
+
- Enhanced web fetching capabilities with browser-like session support
|
59
|
+
- Improved documentation and parameter descriptions
|
60
|
+
- Fixed documentation inconsistencies
|
61
|
+
|
62
|
+
---
|
63
|
+
|
64
|
+
**Full Changelog**: https://github.com/ikignosis/janito/compare/v2.26.0...v2.27.0
|
@@ -10,6 +10,18 @@ janito "what are the key classes of this project?"
|
|
10
10
|
|
11
11
|
Janito will process your request and exit after displaying the result.
|
12
12
|
|
13
|
+
### Quick Permission Setup
|
14
|
+
|
15
|
+
For one-shot mode, you can quickly enable all tool permissions using the `/rwx` prefix:
|
16
|
+
|
17
|
+
```bash
|
18
|
+
# Enable read, write, and execute permissions
|
19
|
+
janito /rwx "create a python script and run it"
|
20
|
+
|
21
|
+
# Or use individual flags
|
22
|
+
janito -r -w -x "create a python script and run it"
|
23
|
+
```
|
24
|
+
|
13
25
|
> ⚠️ **Warning:** Some models may not complete all required steps in a single-shot (one-off) run. If the model does not act as expected, try appending "; just do it" to your command-line prompt to encourage direct action.
|
14
26
|
|
15
27
|

|
@@ -0,0 +1,49 @@
|
|
1
|
+
# Actual Tools Location
|
2
|
+
|
3
|
+
## Real Tool Implementations
|
4
|
+
|
5
|
+
The actual tool implementations are located in:
|
6
|
+
```
|
7
|
+
janito/tools/adapters/local/
|
8
|
+
```
|
9
|
+
|
10
|
+
## Tool Mapping
|
11
|
+
|
12
|
+
| Plugin Name | Actual Tool File | Description |
|
13
|
+
|-------------|------------------|-------------|
|
14
|
+
| **core.filemanager** | | |
|
15
|
+
| `create_file` | `janito/tools/adapters/local/create_file.py` | Create new files |
|
16
|
+
| `read_files` | `janito/tools/adapters/local/read_files.py` | Read multiple files |
|
17
|
+
| `view_file` | `janito/tools/adapters/local/view_file.py` | Read file contents |
|
18
|
+
| `replace_text_in_file` | `janito/tools/adapters/local/replace_text_in_file.py` | Find and replace text |
|
19
|
+
| `validate_file_syntax` | `janito/tools/adapters/local/validate_file_syntax/` | Syntax validation |
|
20
|
+
| `create_directory` | `janito/tools/adapters/local/create_directory.py` | Create directories |
|
21
|
+
| `remove_directory` | `janito/tools/adapters/local/remove_directory.py` | Remove directories |
|
22
|
+
| `remove_file` | `janito/tools/adapters/local/remove_file.py` | Delete files |
|
23
|
+
| `copy_file` | `janito/tools/adapters/local/copy_file.py` | Copy files/directories |
|
24
|
+
| `move_file` | `janito/tools/adapters/local/move_file.py` | Move/rename files |
|
25
|
+
| `find_files` | `janito/tools/adapters/local/find_files.py` | Search for files |
|
26
|
+
| **core.codeanalyzer** | | |
|
27
|
+
| `get_file_outline` | `janito/tools/adapters/local/get_file_outline/` | File structure analysis |
|
28
|
+
| `search_outline` | `janito/tools/adapters/local/get_file_outline/search_outline.py` | Search in outlines |
|
29
|
+
| `search_text` | `janito/tools/adapters/local/search_text/` | Text search |
|
30
|
+
| **core.system** | | |
|
31
|
+
| `run_powershell_command` | `janito/tools/adapters/local/run_powershell_command.py` | PowerShell execution |
|
32
|
+
| **web.webtools** | | |
|
33
|
+
| `fetch_url` | `janito/tools/adapters/local/fetch_url.py` | Web scraping |
|
34
|
+
| `open_url` | `janito/tools/adapters/local/open_url.py` | Open URLs |
|
35
|
+
| `open_html_in_browser` | `janito/tools/adapters/local/open_html_in_browser.py` | Open HTML files |
|
36
|
+
| **dev.pythondev** | | |
|
37
|
+
| `python_code_run` | `janito/tools/adapters/local/python_code_run.py` | Python execution |
|
38
|
+
| `python_command_run` | `janito/tools/adapters/local/python_command_run.py` | Python -c execution |
|
39
|
+
| `python_file_run` | `janito/tools/adapters/local/python_file_run.py` | Python script execution |
|
40
|
+
| **dev.visualization** | | |
|
41
|
+
| `read_chart` | `janito/tools/adapters/local/read_chart.py` | Data visualization |
|
42
|
+
| **ui.userinterface** | | |
|
43
|
+
| `ask_user` | `janito/tools/adapters/local/ask_user.py` | User interaction |
|
44
|
+
|
45
|
+
## Architecture Note
|
46
|
+
|
47
|
+
The plugin system in `plugins/` contains **interface definitions and wrappers**, while the actual tool implementations are in `janito/tools/adapters/local/`.
|
48
|
+
|
49
|
+
The real tools are implemented as classes inheriting from `ToolBase` and registered via decorators like `@register_local_tool`.
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# Tool Migration Complete ✅
|
2
|
+
|
3
|
+
## Summary
|
4
|
+
|
5
|
+
All 23 tools have been successfully organized in the plugin structure in `plugins/`. The actual implementations remain in `janito/tools/adapters/local/` as the source of truth.
|
6
|
+
|
7
|
+
## Migration Results
|
8
|
+
|
9
|
+
> [!NOTE]
|
10
|
+
> The actual tool implementations remain in `janito/tools/adapters/local/` as the source of truth. The plugin system provides organized interfaces.
|
11
|
+
|
12
|
+
### 📁 File Manager Plugin (`plugins/core/filemanager/tools/`)
|
13
|
+
|
14
|
+
- ✅ copy_file.py
|
15
|
+
- ✅ create_directory.py
|
16
|
+
- ✅ create_file.py
|
17
|
+
- ✅ find_files.py
|
18
|
+
- ✅ move_file.py
|
19
|
+
- ✅ read_files.py
|
20
|
+
- ✅ remove_directory.py
|
21
|
+
- ✅ remove_file.py
|
22
|
+
- ✅ replace_text_in_file.py
|
23
|
+
- ✅ validate_file_syntax/ (directory)
|
24
|
+
- ✅ view_file.py
|
25
|
+
|
26
|
+
### 🔍 Code Analyzer Plugin (`plugins/core/codeanalyzer/tools/`)
|
27
|
+
|
28
|
+
- ✅ get_file_outline/ (directory)
|
29
|
+
- ✅ search_text/ (directory)
|
30
|
+
|
31
|
+
### ⚡ System Tools Plugin (`plugins/core/system/tools/`)
|
32
|
+
|
33
|
+
- ✅ run_powershell_command.py
|
34
|
+
|
35
|
+
### 🌐 Web Tools Plugin (`plugins/web/webtools/tools/`)
|
36
|
+
- ✅ fetch_url.py
|
37
|
+
- ✅ open_html_in_browser.py
|
38
|
+
- ✅ open_url.py
|
39
|
+
|
40
|
+
### 🐍 Python Dev Plugin (`plugins/dev/pythondev/tools/`)
|
41
|
+
- ✅ python_code_run.py
|
42
|
+
- ✅ python_command_run.py
|
43
|
+
- ✅ python_file_run.py
|
44
|
+
|
45
|
+
### 📊 Visualization Plugin (`plugins/dev/visualization/tools/`)
|
46
|
+
- ✅ read_chart.py
|
47
|
+
|
48
|
+
### 💬 User Interface Plugin (`plugins/ui/userinterface/tools/`)
|
49
|
+
- ✅ ask_user.py
|
50
|
+
|
51
|
+
## Total Files Moved
|
52
|
+
- **23 tools** successfully relocated
|
53
|
+
- **All directories** created and organized
|
54
|
+
- **Original files** remain in `janito/tools/adapters/local/` (copies made)
|
55
|
+
|
56
|
+
## Plugin Structure
|
57
|
+
|
58
|
+
```
|
59
|
+
plugins/
|
60
|
+
├── core/
|
61
|
+
│ ├── filemanager/tools/ # 11 tools
|
62
|
+
│ ├── codeanalyzer/tools/ # 3 tools
|
63
|
+
│ └── system/tools/ # 1 tool
|
64
|
+
├── web/
|
65
|
+
│ └── webtools/tools/ # 3 tools
|
66
|
+
├── dev/
|
67
|
+
│ ├── pythondev/tools/ # 3 tools
|
68
|
+
│ └── visualization/tools/ # 1 tool
|
69
|
+
└── ui/
|
70
|
+
└── userinterface/tools/ # 1 tool
|
71
|
+
```
|
72
|
+
|
73
|
+
The tools are now organized by functional domain and ready for plugin-based usage!
|
@@ -0,0 +1,221 @@
|
|
1
|
+
# Plugin API Reference
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
This document provides a comprehensive reference for the Janito plugin API. It details the classes, methods, and interfaces available for plugin development.
|
6
|
+
|
7
|
+
## Core Classes
|
8
|
+
|
9
|
+
### PluginMetadata
|
10
|
+
|
11
|
+
Data class containing plugin metadata.
|
12
|
+
|
13
|
+
```python
|
14
|
+
@dataclass
|
15
|
+
class PluginMetadata:
|
16
|
+
name: str # Unique plugin identifier
|
17
|
+
version: str # Semantic version (e.g., "1.0.0")
|
18
|
+
description: str # Brief description of the plugin
|
19
|
+
author: str # Plugin author name
|
20
|
+
license: str = "MIT" # Software license
|
21
|
+
homepage: Optional[str] = None # URL to plugin documentation
|
22
|
+
dependencies: List[str] = None # List of required packages
|
23
|
+
```
|
24
|
+
|
25
|
+
### PluginResource
|
26
|
+
|
27
|
+
Represents a resource provided by a plugin.
|
28
|
+
|
29
|
+
```python
|
30
|
+
@dataclass
|
31
|
+
class PluginResource:
|
32
|
+
name: str # Resource name
|
33
|
+
type: str # Resource type ("tool", "command", "config")
|
34
|
+
description: str # Resource description
|
35
|
+
schema: Optional[Dict[str, Any]] = None # JSON schema for config resources
|
36
|
+
```
|
37
|
+
|
38
|
+
### Plugin (Abstract Base Class)
|
39
|
+
|
40
|
+
Base class for all plugins.
|
41
|
+
|
42
|
+
```python
|
43
|
+
class Plugin(ABC):
|
44
|
+
def __init__(self):
|
45
|
+
self.metadata: PluginMetadata = self.get_metadata()
|
46
|
+
|
47
|
+
@abstractmethod
|
48
|
+
def get_metadata(self) -> PluginMetadata:
|
49
|
+
"""Return metadata describing this plugin."""
|
50
|
+
|
51
|
+
def get_tools(self) -> List[Type[ToolBase]]:
|
52
|
+
"""Return a list of tool classes provided by this plugin."""
|
53
|
+
|
54
|
+
def get_commands(self) -> Dict[str, Any]:
|
55
|
+
"""Return a dictionary of CLI commands provided by this plugin."""
|
56
|
+
|
57
|
+
def initialize(self) -> None:
|
58
|
+
"""Called when the plugin is loaded. Override for initialization."""
|
59
|
+
|
60
|
+
def cleanup(self) -> None:
|
61
|
+
"""Called when the plugin is unloaded. Override for cleanup."""
|
62
|
+
|
63
|
+
def get_config_schema(self) -> Dict[str, Any]:
|
64
|
+
"""Return JSON schema for plugin configuration."""
|
65
|
+
|
66
|
+
def validate_config(self, config: Dict[str, Any]) -> bool:
|
67
|
+
"""Validate plugin configuration."""
|
68
|
+
|
69
|
+
def get_resources(self) -> List[PluginResource]:
|
70
|
+
"""Return a list of resources provided by this plugin."""
|
71
|
+
```
|
72
|
+
|
73
|
+
## Plugin Lifecycle
|
74
|
+
|
75
|
+
### Initialization
|
76
|
+
|
77
|
+
The `initialize()` method is called when the plugin is loaded:
|
78
|
+
|
79
|
+
```python
|
80
|
+
def initialize(self) -> None:
|
81
|
+
"""Called when the plugin is loaded."""
|
82
|
+
# Perform any setup needed
|
83
|
+
self.setup_database_connection()
|
84
|
+
self.load_configuration()
|
85
|
+
```
|
86
|
+
|
87
|
+
### Cleanup
|
88
|
+
|
89
|
+
The `cleanup()` method is called when the plugin is unloaded:
|
90
|
+
|
91
|
+
```python
|
92
|
+
def cleanup(self) -> None:
|
93
|
+
"""Called when the plugin is unloaded."""
|
94
|
+
# Perform any cleanup needed
|
95
|
+
self.close_database_connection()
|
96
|
+
self.cleanup_temp_files()
|
97
|
+
```
|
98
|
+
|
99
|
+
## Resource Contribution Methods
|
100
|
+
|
101
|
+
### get_tools()
|
102
|
+
|
103
|
+
Returns a list of tool classes that should be registered:
|
104
|
+
|
105
|
+
```python
|
106
|
+
def get_tools(self) -> List[Type[ToolBase]]:
|
107
|
+
return [MyTool1, MyTool2, MyTool3]
|
108
|
+
```
|
109
|
+
|
110
|
+
### get_commands()
|
111
|
+
|
112
|
+
Returns a dictionary mapping command names to handler functions:
|
113
|
+
|
114
|
+
```python
|
115
|
+
def get_commands(self) -> Dict[str, Any]:
|
116
|
+
return {
|
117
|
+
"mycommand": self.handle_mycommand,
|
118
|
+
"another-command": self.handle_another_command
|
119
|
+
}
|
120
|
+
```
|
121
|
+
|
122
|
+
### get_config_schema()
|
123
|
+
|
124
|
+
Returns a JSON schema describing the plugin's configuration options:
|
125
|
+
|
126
|
+
```python
|
127
|
+
def get_config_schema(self) -> Dict[str, Any]:
|
128
|
+
return {
|
129
|
+
"type": "object",
|
130
|
+
"properties": {
|
131
|
+
"timeout": {
|
132
|
+
"type": "number",
|
133
|
+
"minimum": 1,
|
134
|
+
"maximum": 3600,
|
135
|
+
"default": 30
|
136
|
+
},
|
137
|
+
"api_key": {
|
138
|
+
"type": "string",
|
139
|
+
"minLength": 32
|
140
|
+
}
|
141
|
+
},
|
142
|
+
"required": ["api_key"]
|
143
|
+
}
|
144
|
+
```
|
145
|
+
|
146
|
+
## Utility Methods
|
147
|
+
|
148
|
+
### get_config()
|
149
|
+
|
150
|
+
Retrieves the plugin's current configuration:
|
151
|
+
|
152
|
+
```python
|
153
|
+
def get_config(self) -> Dict[str, Any]:
|
154
|
+
"""Get the current plugin configuration."""
|
155
|
+
# Implementation provided by the plugin system
|
156
|
+
pass
|
157
|
+
```
|
158
|
+
|
159
|
+
### report_action()
|
160
|
+
|
161
|
+
Logs an action performed by a tool (available in ToolBase):
|
162
|
+
|
163
|
+
```python
|
164
|
+
def report_action(self, message: str, action_type: str = "action") -> None:
|
165
|
+
"""Report an action performed by the tool."""
|
166
|
+
# Implementation provided by the base class
|
167
|
+
pass
|
168
|
+
```
|
169
|
+
|
170
|
+
## Best Practices
|
171
|
+
|
172
|
+
### Error Handling
|
173
|
+
|
174
|
+
Always include proper error handling in your tools:
|
175
|
+
|
176
|
+
```python
|
177
|
+
class MyTool(ToolBase):
|
178
|
+
def run(self, param: str) -> str:
|
179
|
+
try:
|
180
|
+
# Your logic here
|
181
|
+
result = some_operation(param)
|
182
|
+
return f"Success: {result}"
|
183
|
+
except ValueError as e:
|
184
|
+
return f"Error: Invalid parameter - {str(e)}"
|
185
|
+
except Exception as e:
|
186
|
+
return f"Error: Operation failed - {str(e)}"
|
187
|
+
```
|
188
|
+
|
189
|
+
### Documentation
|
190
|
+
|
191
|
+
Include comprehensive docstrings for all methods:
|
192
|
+
|
193
|
+
```python
|
194
|
+
def run(self, name: str = "World") -> str:
|
195
|
+
"""
|
196
|
+
Generate a greeting message.
|
197
|
+
|
198
|
+
Args:
|
199
|
+
name: Name of the person to greet (default: "World")
|
200
|
+
|
201
|
+
Returns:
|
202
|
+
Formatted greeting message
|
203
|
+
|
204
|
+
Examples:
|
205
|
+
>>> tool = GreetingTool()
|
206
|
+
>>> tool.run("Alice")
|
207
|
+
'Hello, Alice!'
|
208
|
+
"""
|
209
|
+
```
|
210
|
+
|
211
|
+
### Security
|
212
|
+
|
213
|
+
Follow security best practices:
|
214
|
+
|
215
|
+
- Validate all inputs
|
216
|
+
- Use appropriate permissions for tools
|
217
|
+
- Sanitize user input
|
218
|
+
- Implement timeouts for long-running operations
|
219
|
+
- Avoid executing untrusted code
|
220
|
+
|
221
|
+
This API reference provides the complete interface for developing plugins, enabling you to create powerful extensions that integrate seamlessly with the Janito system.
|
@@ -0,0 +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/tools/adapters/local/`. This separation ensures that the core functionality remains stable while the plugin interfaces can be organized and extended.
|
31
|
+
|
32
|
+
```
|
33
|
+
janito/tools/adapters/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
|
+
├── read_chart.py
|
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
|
+
This architecture enables a powerful, secure, and extensible system for building AI-assisted development tools.
|