janito 2.27.0__tar.gz → 2.28.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {janito-2.27.0 → janito-2.28.0}/PKG-INFO +3 -1
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG.md +4 -4
- {janito-2.27.0 → janito-2.28.0}/docs/index.md +2 -2
- janito-2.27.0/docs/moonshotai-setup.md → janito-2.28.0/docs/moonshot-setup.md +16 -16
- janito-2.28.0/docs/plugins/ACTUAL_TOOLS_LOCATION.md +49 -0
- janito-2.28.0/docs/plugins/MIGRATION_COMPLETE.md +73 -0
- janito-2.28.0/docs/plugins/api-reference.md +221 -0
- janito-2.28.0/docs/plugins/architecture.md +128 -0
- janito-2.28.0/docs/plugins/built-in-plugins/codeanalyzer.md +65 -0
- janito-2.28.0/docs/plugins/built-in-plugins/filemanager.md +65 -0
- janito-2.28.0/docs/plugins/built-in-plugins/pythondev.md +64 -0
- janito-2.28.0/docs/plugins/built-in-plugins/system.md +62 -0
- janito-2.28.0/docs/plugins/built-in-plugins/userinterface.md +61 -0
- janito-2.28.0/docs/plugins/built-in-plugins/visualization.md +87 -0
- janito-2.28.0/docs/plugins/built-in-plugins/webtools.md +65 -0
- janito-2.28.0/docs/plugins/configuration.md +127 -0
- janito-2.28.0/docs/plugins/examples/advanced.md +326 -0
- janito-2.28.0/docs/plugins/examples/basic.md +82 -0
- janito-2.28.0/docs/plugins/examples/intermediate.md +145 -0
- janito-2.28.0/docs/plugins/plugin-development.md +170 -0
- janito-2.28.0/docs/plugins/plugin-resources.md +76 -0
- janito-2.28.0/docs/plugins/publishing.md +253 -0
- janito-2.28.0/docs/plugins/remote-plugins.md +96 -0
- janito-2.28.0/docs/plugins/testing.md +253 -0
- {janito-2.27.0 → janito-2.28.0}/docs/provider-platform-access.md +2 -2
- {janito-2.27.0 → janito-2.28.0}/docs/supported-providers-models.md +2 -2
- {janito-2.27.0 → janito-2.28.0}/examples/loop_protection_example.py +14 -14
- {janito-2.27.0 → janito-2.28.0}/examples/loop_protection_tool_example.py +26 -24
- janito-2.28.0/get_nasdaq_top.py +232 -0
- {janito-2.27.0 → janito-2.28.0}/janito/README.md +9 -9
- {janito-2.27.0 → janito-2.28.0}/janito/agent/setup_agent.py +29 -16
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/script_runner.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/session.py +50 -24
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/session_profile_select.py +8 -2
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/__init__.py +2 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/execute.py +4 -2
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/help.py +8 -1
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/privileges.py +6 -2
- janito-2.28.0/janito/cli/chat_mode/shell/commands/provider.py +28 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/read.py +4 -2
- janito-2.28.0/janito/cli/chat_mode/shell/commands/security/__init__.py +1 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +16 -13
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/security_command.py +14 -10
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/tools.py +4 -2
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +17 -12
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/write.py +4 -2
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/toolbar.py +15 -1
- janito-2.28.0/janito/cli/cli_commands/enable_disable_plugin.py +87 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_models.py +2 -2
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_plugins.py +35 -19
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_profiles.py +6 -6
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_providers.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/model_utils.py +45 -20
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/ping_providers.py +10 -10
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/set_api_key.py +5 -3
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/show_config.py +13 -7
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/show_system_prompt.py +13 -6
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/getters.py +7 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/model_guesser.py +18 -15
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/runner.py +28 -6
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/setters.py +21 -6
- {janito-2.27.0 → janito-2.28.0}/janito/cli/main_cli.py +14 -12
- {janito-2.27.0 → janito-2.28.0}/janito/cli/prompt_core.py +2 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/prompt_setup.py +4 -4
- {janito-2.27.0 → janito-2.28.0}/janito/cli/single_shot_mode/handler.py +2 -0
- {janito-2.27.0 → janito-2.28.0}/janito/config_manager.py +2 -0
- {janito-2.27.0 → janito-2.28.0}/janito/docs/GETTING_STARTED.md +9 -9
- janito-2.28.0/janito/drivers/cerebras/__init__.py +1 -0
- {janito-2.27.0 → janito-2.28.0}/janito/exceptions.py +6 -4
- {janito-2.27.0 → janito-2.28.0}/janito/plugins/__init__.py +2 -2
- {janito-2.27.0 → janito-2.28.0}/janito/plugins/base.py +48 -40
- janito-2.28.0/janito/plugins/builtin.py +88 -0
- {janito-2.27.0 → janito-2.28.0}/janito/plugins/config.py +16 -19
- {janito-2.27.0 → janito-2.28.0}/janito/plugins/discovery.py +129 -40
- {janito-2.27.0 → janito-2.28.0}/janito/plugins/manager.py +63 -59
- {janito-2.27.0 → janito-2.28.0}/janito/provider_registry.py +10 -10
- {janito-2.27.0 → janito-2.28.0}/janito/providers/__init__.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/providers/alibaba/model_info.py +3 -5
- {janito-2.27.0 → janito-2.28.0}/janito/providers/alibaba/provider.py +3 -1
- janito-2.28.0/janito/providers/cerebras/__init__.py +1 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/cerebras/model_info.py +12 -27
- {janito-2.27.0 → janito-2.28.0}/janito/providers/cerebras/provider.py +11 -9
- janito-2.28.0/janito/providers/mistral/__init__.py +1 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/mistral/model_info.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/providers/mistral/provider.py +1 -1
- janito-2.28.0/janito/providers/moonshot/__init__.py +1 -0
- {janito-2.27.0/janito/providers/moonshotai → janito-2.28.0/janito/providers/moonshot}/model_info.py +3 -3
- {janito-2.27.0/janito/providers/moonshotai → janito-2.28.0/janito/providers/moonshot}/provider.py +8 -8
- {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/provider.py +3 -1
- {janito-2.27.0 → janito-2.28.0}/janito/report_events.py +0 -1
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/ask_user.py +7 -1
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/create_file.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/fetch_url.py +45 -29
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/python_command_run.py +2 -1
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/python_file_run.py +1 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/run_powershell_command.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/core.py +1 -1
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/jinja2_validator.py +14 -11
- janito-2.28.0/janito/tools/base.py +12 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/loop_protection.py +24 -22
- {janito-2.27.0 → janito-2.28.0}/janito/tools/path_utils.py +7 -7
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_base.py +0 -2
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tools_adapter.py +15 -5
- {janito-2.27.0 → janito-2.28.0}/janito/tools/url_whitelist.py +27 -26
- {janito-2.27.0 → janito-2.28.0}/janito.egg-info/PKG-INFO +3 -1
- {janito-2.27.0 → janito-2.28.0}/janito.egg-info/SOURCES.txt +87 -14
- {janito-2.27.0 → janito-2.28.0}/janito.egg-info/requires.txt +3 -0
- janito-2.28.0/janito.egg-info/top_level.txt +1 -0
- {janito-2.27.0 → janito-2.28.0}/market_prompt_fix.py +46 -35
- {janito-2.27.0 → janito-2.28.0}/market_test.py +31 -22
- {janito-2.27.0 → janito-2.28.0}/mkdocs.yml +1 -1
- {janito-2.27.0 → janito-2.28.0}/mkdocs_hooks.py +12 -12
- janito-2.28.0/plugins/__init__.py +35 -0
- janito-2.28.0/plugins/core/__init__.py +7 -0
- janito-2.28.0/plugins/core/codeanalyzer/__init__.py +34 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +1 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/core.py +122 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +47 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +14 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +303 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +36 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/__init__.py +1 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/core.py +205 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/match_lines.py +67 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +73 -0
- janito-2.28.0/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +145 -0
- janito-2.28.0/plugins/core/filemanager/__init__.py +91 -0
- janito-2.28.0/plugins/core/filemanager/tools/copy_file.py +87 -0
- janito-2.28.0/plugins/core/filemanager/tools/create_directory.py +70 -0
- janito-2.28.0/plugins/core/filemanager/tools/create_file.py +87 -0
- janito-2.28.0/plugins/core/filemanager/tools/delete_text_in_file.py +134 -0
- janito-2.28.0/plugins/core/filemanager/tools/find_files.py +143 -0
- janito-2.28.0/plugins/core/filemanager/tools/move_file.py +131 -0
- janito-2.28.0/plugins/core/filemanager/tools/read_files.py +58 -0
- janito-2.28.0/plugins/core/filemanager/tools/remove_directory.py +55 -0
- janito-2.28.0/plugins/core/filemanager/tools/remove_file.py +58 -0
- janito-2.28.0/plugins/core/filemanager/tools/replace_text_in_file.py +270 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/core.py +114 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +35 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +100 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +50 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +27 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +6 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +109 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +32 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +5 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +11 -0
- janito-2.28.0/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +6 -0
- janito-2.28.0/plugins/core/filemanager/tools/view_file.py +172 -0
- janito-2.28.0/plugins/core/system/__init__.py +20 -0
- janito-2.28.0/plugins/core/system/tools/run_bash_command.py +183 -0
- janito-2.28.0/plugins/core/system/tools/run_powershell_command.py +218 -0
- janito-2.28.0/plugins/dev/__init__.py +7 -0
- janito-2.28.0/plugins/dev/pythondev/__init__.py +28 -0
- janito-2.28.0/plugins/dev/pythondev/tools/python_code_run.py +172 -0
- janito-2.28.0/plugins/dev/pythondev/tools/python_command_run.py +171 -0
- janito-2.28.0/plugins/dev/pythondev/tools/python_file_run.py +172 -0
- janito-2.28.0/plugins/dev/visualization/__init__.py +20 -0
- janito-2.28.0/plugins/dev/visualization/tools/read_chart.py +259 -0
- {janito-2.27.0 → janito-2.28.0}/plugins/example_plugin.py +21 -21
- janito-2.28.0/plugins/ui/__init__.py +7 -0
- janito-2.28.0/plugins/ui/userinterface/__init__.py +16 -0
- janito-2.28.0/plugins/ui/userinterface/tools/ask_user.py +110 -0
- janito-2.28.0/plugins/web/__init__.py +7 -0
- janito-2.28.0/plugins/web/webtools/__init__.py +33 -0
- janito-2.28.0/plugins/web/webtools/tools/fetch_url.py +427 -0
- janito-2.28.0/plugins/web/webtools/tools/open_html_in_browser.py +51 -0
- janito-2.28.0/plugins/web/webtools/tools/open_url.py +37 -0
- janito-2.28.0/plugins.txt +1 -0
- {janito-2.27.0 → janito-2.28.0}/pyproject.toml +1 -0
- {janito-2.27.0 → janito-2.28.0}/test_market_analyst.py +38 -28
- janito-2.27.0/tests/test_cli_list_providers_moonshotai.py → janito-2.28.0/tests/test_cli_list_providers_moonshot.py +3 -3
- {janito-2.27.0 → janito-2.28.0}/tests/test_plugin_system.py +30 -32
- {janito-2.27.0 → janito-2.28.0}/tests/test_provider_cerebras.py +1 -1
- janito-2.28.0/tests/test_provider_moonshot.py +10 -0
- janito-2.27.0/README-PLUGINS.md +0 -68
- janito-2.27.0/docs/guides/plugins.md +0 -209
- janito-2.27.0/docs/guides/remote-plugins.md +0 -198
- janito-2.27.0/get_nasdaq_top.py +0 -113
- janito-2.27.0/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -1
- janito-2.27.0/janito/drivers/cerebras/__init__.py +0 -1
- janito-2.27.0/janito/providers/cerebras/__init__.py +0 -1
- janito-2.27.0/janito/providers/mistral/__init__.py +0 -1
- janito-2.27.0/janito/providers/moonshotai/__init__.py +0 -1
- janito-2.27.0/janito-coder/janito_coder/__init__.py +0 -9
- janito-2.27.0/janito-coder/janito_coder/plugins/__init__.py +0 -27
- janito-2.27.0/janito-coder/janito_coder/plugins/code_navigator.py +0 -618
- janito-2.27.0/janito-coder/janito_coder/plugins/git_analyzer.py +0 -273
- janito-2.27.0/janito-coder/pyproject.toml +0 -347
- janito-2.27.0/janito.egg-info/top_level.txt +0 -2
- janito-2.27.0/tests/test_provider_moonshotai.py +0 -10
- {janito-2.27.0 → janito-2.28.0}/.codespellrc +0 -0
- {janito-2.27.0 → janito-2.28.0}/.gitattributes +0 -0
- {janito-2.27.0 → janito-2.28.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-2.27.0 → janito-2.28.0}/.gitignore +0 -0
- {janito-2.27.0 → janito-2.28.0}/.pre-commit-config.yaml +0 -0
- {janito-2.27.0 → janito-2.28.0}/.secrets.baseline +0 -0
- {janito-2.27.0 → janito-2.28.0}/.vscode/settings.json +0 -0
- {janito-2.27.0 → janito-2.28.0}/LICENSE +0 -0
- {janito-2.27.0 → janito-2.28.0}/MARKET_ANALYST_README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/README-dev.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/RELEASE_COMPARISON.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/UPDATING_DOCS.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/adding_mcp.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/DIV.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/Interfaces.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/about/costs.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/about/vs-webchats.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/about/why.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/alibaba-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/alternatives.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/cerebras-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/concepts/analysis-style.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/concepts/index.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/deepseek-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/driver-flow.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/driver-request-cancellation.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/drivers/events.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/drivers.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/event-bus.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/configuration.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/developing.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/disabled-tools.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/installation.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/market-data-sources.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/profiles.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/prompting/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/read-chart-examples.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/security-commands.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/terminal-shell.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/url-whitelist.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/using.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/guides/using_tools.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/ibm-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/llm-drivers.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/meta/quality-checks.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/mistral-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/openai-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/plugins/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/README-pt.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/configuracao.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/exemplos.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/faq-pt.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/ferramentas.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/guia-uso.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/instalacao.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/pt/perfis.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/public-sources.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/reference/api.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/reference/azure-openai.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/reference/cli-options.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/reference/message-handler-model.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/security.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/tools/search-text.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/tools-index.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/tools-natural-results.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/tools-precision.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/docs/z-ai-setup.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/ibm-logo.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/__main__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/_version.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/config.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/console.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/event_logger.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/core/unsetters.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/main.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/prompt_handler.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/cli/verbose_output.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/config.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/conversation_history.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/dir_walk_utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/driver_events.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/openai/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/openai/driver.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/drivers/zai/driver.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/event_bus/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/event_bus/bus.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/event_bus/event.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/event_bus/handler.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/formatting.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/formatting_token.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/gitignore_utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/i18n/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/i18n/it.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/i18n/messages.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/i18n/pt.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/agent.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/auth.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/auth_utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/driver.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/driver_config.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/driver_input.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/message_parts.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/model.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/llm/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/mkdocs.yml +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/perf_singleton.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/performance_collector.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/platform_discovery.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/provider_config.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/alibaba/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/google/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/google/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/google/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/ibm/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/registry.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/model_info.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/provider.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/regions/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/regions/cli.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/regions/geo_utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/regions/provider_regions.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/shell.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/README.md +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/copy_file.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/create_directory.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/delete_text_in_file.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/find_files.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/core.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/java_outline.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/markdown_outline.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/python_outline.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/get_file_outline/search_outline.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/move_file.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/open_html_in_browser.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/open_url.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/python_code_run.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/read_chart.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/read_files.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/remove_directory.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/remove_file.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/replace_text_in_file.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/run_bash_command.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/match_lines.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/pattern_utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/search_text/traverse_directory.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/__init__.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/core.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/css_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/html_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/js_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/json_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/markdown_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/ps1_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/python_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/xml_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/validate_file_syntax/yaml_validator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/adapters/local/view_file.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/disabled_tools.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/inspect_registry.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/path_security.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/permissions.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/permissions_parse.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_events.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tool_utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/tools/tools_schema.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito/utils.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/pytest.ini +0 -0
- {janito-2.27.0 → janito-2.28.0}/requirements-dev.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/requirements.txt +0 -0
- {janito-2.27.0 → janito-2.28.0}/setup.cfg +0 -0
- {janito-2.27.0 → janito-2.28.0}/test_example.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/test_key_field_behavior.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/test_key_field_protection.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/test_loop_protection_return.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/adapters/local/test_read_files.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/test_cli_list_models.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/test_cli_list_providers.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/test_cli_version.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/test_disabled_tools.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tests/test_provider_alibaba.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tools/release.py +0 -0
- {janito-2.27.0 → janito-2.28.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: janito
|
3
|
-
Version: 2.
|
3
|
+
Version: 2.28.0
|
4
4
|
Summary: A new Python package called janito.
|
5
5
|
Author-email: João Pinto <janito@ikignosis.org>
|
6
6
|
Project-URL: Homepage, https://github.com/ikignosis/janito
|
@@ -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
|
@@ -311,12 +311,12 @@ For users upgrading from previous versions:
|
|
311
311
|
|
312
312
|
## [2.9.0] - 2025-07-16
|
313
313
|
### Added
|
314
|
-
- Added new `kimi-k2-turbo-preview` model to
|
314
|
+
- Added new `kimi-k2-turbo-preview` model to Moonshot provider
|
315
315
|
- Added visual indicators for default models in provider registry with star icons
|
316
316
|
|
317
317
|
### Changed
|
318
|
-
- Updated default
|
319
|
-
- Updated all documentation to reflect new
|
318
|
+
- Updated default Moonshot model from `kimi-k2-0711-preview` to `kimi-k2-turbo-preview`
|
319
|
+
- Updated all documentation to reflect new Moonshot model names and recommendations
|
320
320
|
- Updated project URLs, author email, and documentation for migration to ikignosis organization
|
321
321
|
- Updated repository links in documentation and configuration files to point to ikignosis GitHub organization
|
322
322
|
- Changed maintainer email in provider modules to janito@ikignosis.org
|
@@ -344,7 +344,7 @@ For users upgrading from previous versions:
|
|
344
344
|
- **Provider-specific settings**: Simplified configuration system.
|
345
345
|
|
346
346
|
### Documentation
|
347
|
-
- Updated
|
347
|
+
- Updated Moonshot setup guide with platform.moonshot.ai domain.
|
348
348
|
- Improved CLI usage documentation and fixed syntax highlighting.
|
349
349
|
- Removed broken references to model_info.py files in supported-providers-models.md.
|
350
350
|
- Added comprehensive documentation updates across the project.
|
@@ -17,7 +17,7 @@ Janito is a powerful AI assistant designed for developers, providing intelligent
|
|
17
17
|
- **Terminal Integration**: Seamless shell integration with intelligent command assistance
|
18
18
|
- **Code Intelligence**: Advanced code analysis and generation capabilities
|
19
19
|
- **Extensible Tools**: Custom tool development and integration
|
20
|
-
- **Multi-Provider Support**: Works with OpenAI, DeepSeek,
|
20
|
+
- **Multi-Provider Support**: Works with OpenAI, DeepSeek, Moonshot, and more
|
21
21
|
- **Human-Guided AI**: Collaborative AI that works with you, not instead of you
|
22
22
|
|
23
23
|
## Documentation Sections
|
@@ -47,7 +47,7 @@ Janito supports multiple AI providers:
|
|
47
47
|
|
48
48
|
- [OpenAI](openai-setup.md)
|
49
49
|
- [DeepSeek](deepseek-setup.md)
|
50
|
-
- [
|
50
|
+
- [Moonshot](moonshot-setup.md)
|
51
51
|
- [Mistral](mistral-setup.md)
|
52
52
|
- [Z.ai](z-ai-setup.md)
|
53
53
|
- [Cerebras](cerebras-setup.md)
|
@@ -1,39 +1,39 @@
|
|
1
|
-
# Configuring Janito for
|
1
|
+
# Configuring Janito for Moonshot
|
2
2
|
|
3
|
-
Janito supports
|
3
|
+
Janito supports Moonshot as an LLM provider. This guide explains how to configure Janito to use Moonshot models.
|
4
4
|
|
5
|
-
## 1. Obtain a
|
5
|
+
## 1. Obtain a Moonshot API Key
|
6
6
|
|
7
7
|
- Sign up or log in at [Moonshot AI Platform](https://platform.moonshot.ai) to get your API key.
|
8
8
|
- Navigate to the API Keys section in your dashboard to create and manage your keys.
|
9
9
|
|
10
|
-
## 2. Set Your
|
10
|
+
## 2. Set Your Moonshot API Key in Janito
|
11
11
|
|
12
|
-
You must specify both the API key and the provider name when configuring Janito for
|
12
|
+
You must specify both the API key and the provider name when configuring Janito for Moonshot:
|
13
13
|
|
14
14
|
```bash
|
15
|
-
janito --set-api-key YOUR_MOONSHOT_API_KEY -p
|
15
|
+
janito --set-api-key YOUR_MOONSHOT_API_KEY -p moonshot
|
16
16
|
```
|
17
17
|
|
18
|
-
Replace `YOUR_MOONSHOT_API_KEY` with your actual
|
18
|
+
Replace `YOUR_MOONSHOT_API_KEY` with your actual Moonshot API key.
|
19
19
|
|
20
|
-
## 3. Select
|
20
|
+
## 3. Select Moonshot as the Provider
|
21
21
|
|
22
|
-
You can set
|
22
|
+
You can set Moonshot as your default provider:
|
23
23
|
|
24
24
|
```bash
|
25
|
-
janito --set provider=
|
25
|
+
janito --set provider=moonshot
|
26
26
|
```
|
27
27
|
|
28
28
|
Or specify it per command:
|
29
29
|
|
30
30
|
```bash
|
31
|
-
janito -p
|
31
|
+
janito -p moonshot "Your prompt here"
|
32
32
|
```
|
33
33
|
|
34
|
-
## 4. Choose a
|
34
|
+
## 4. Choose a Moonshot Model
|
35
35
|
|
36
|
-
Janito supports the following
|
36
|
+
Janito supports the following Moonshot models:
|
37
37
|
|
38
38
|
- `kimi-k2-turbo-preview` (default) - Advanced reasoning model with 128k context window
|
39
39
|
- `kimi-k2-turbo-preview` - Turbo version of the advanced reasoning model with 128k context window
|
@@ -44,7 +44,7 @@ Janito supports the following MoonshotAI models:
|
|
44
44
|
To select a model:
|
45
45
|
|
46
46
|
```bash
|
47
|
-
janito -p
|
47
|
+
janito -p moonshot -m kimi-k1-32k "Your prompt here"
|
48
48
|
```
|
49
49
|
|
50
50
|
## 5. Verify Your Configuration
|
@@ -57,7 +57,7 @@ janito --show-config
|
|
57
57
|
|
58
58
|
## 6. API Endpoint Information
|
59
59
|
|
60
|
-
|
60
|
+
Moonshot uses an OpenAI-compatible API endpoint:
|
61
61
|
|
62
62
|
- **Base URL**: `https://api.moonshot.ai/v1`
|
63
63
|
- **Authentication**: Bearer token (API key)
|
@@ -66,7 +66,7 @@ MoonshotAI uses an OpenAI-compatible API endpoint:
|
|
66
66
|
## 7. Troubleshooting
|
67
67
|
|
68
68
|
- Ensure your API key is correct and has sufficient credits.
|
69
|
-
- If you encounter issues, use `janito --list-providers` to verify
|
69
|
+
- If you encounter issues, use `janito --list-providers` to verify Moonshot is available.
|
70
70
|
- Check your API key permissions and rate limits in the Moonshot AI Platform dashboard.
|
71
71
|
- For more help, see the main [Configuration Guide](guides/configuration.md) or run `janito --help`.
|
72
72
|
|
@@ -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.
|
@@ -0,0 +1,65 @@
|
|
1
|
+
# Code Analyzer Plugin
|
2
|
+
|
3
|
+
## Overview
|
4
|
+
|
5
|
+
The Code Analyzer plugin provides tools for understanding and searching code structure. This plugin enables developers to analyze codebases, navigate file structures, and perform advanced text searches across projects.
|
6
|
+
|
7
|
+
## Resources Provided
|
8
|
+
|
9
|
+
### Tools
|
10
|
+
|
11
|
+
| Tool Name | Function | Description |
|
12
|
+
|-----------|----------|-------------|
|
13
|
+
| `get_file_outline` | Extract file structure | Analyzes a file to identify classes, functions, methods, and other structural elements |
|
14
|
+
| `search_outline` | Search within file outlines | Searches for specific structural elements (classes, functions) within file outlines |
|
15
|
+
| `search_text` | Full-text search across files | Performs text searches across multiple files with support for regex and case sensitivity |
|
16
|
+
|
17
|
+
## Usage Examples
|
18
|
+
|
19
|
+
### Getting File Structure
|
20
|
+
```json
|
21
|
+
{
|
22
|
+
"tool": "get_file_outline",
|
23
|
+
"path": "src/main.py"
|
24
|
+
}
|
25
|
+
```
|
26
|
+
|
27
|
+
### Searching for Functions
|
28
|
+
```json
|
29
|
+
{
|
30
|
+
"tool": "search_outline",
|
31
|
+
"path": "src/",
|
32
|
+
"query": "function:calculate"
|
33
|
+
}
|
34
|
+
```
|
35
|
+
|
36
|
+
### Finding Code Patterns
|
37
|
+
```json
|
38
|
+
{
|
39
|
+
"tool": "search_text",
|
40
|
+
"paths": ".",
|
41
|
+
"query": "import requests",
|
42
|
+
"use_regex": false
|
43
|
+
}
|
44
|
+
```
|
45
|
+
|
46
|
+
## Configuration
|
47
|
+
|
48
|
+
This plugin does not require any specific configuration and uses default search parameters.
|
49
|
+
|
50
|
+
## Security Considerations
|
51
|
+
|
52
|
+
- File access is limited to the project directory and subdirectories
|
53
|
+
- Respects .gitignore rules to avoid searching in ignored files/directories
|
54
|
+
- Large file analysis is rate-limited to prevent performance issues
|
55
|
+
|
56
|
+
## Integration
|
57
|
+
|
58
|
+
The Code Analyzer plugin integrates with the code intelligence system to provide:
|
59
|
+
|
60
|
+
- Code navigation capabilities
|
61
|
+
- Structural understanding for AI-assisted coding
|
62
|
+
- Pattern recognition for code refactoring suggestions
|
63
|
+
- Dependency analysis through import searching
|
64
|
+
|
65
|
+
This enables more sophisticated code understanding and manipulation capabilities within the Janito ecosystem.
|