janito 3.8.0__tar.gz → 3.10.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {janito-3.8.0 → janito-3.10.0}/.gitignore +71 -66
- {janito-3.8.0 → janito-3.10.0}/PKG-INFO +84 -84
- janito-3.10.0/README.md +49 -0
- {janito-3.8.0 → janito-3.10.0}/docs/about/why.md +1 -1
- janito-3.10.0/docs/agent/agent-lifecycle.md +75 -0
- janito-3.10.0/docs/agent/tools-workflow-lifecycle.md +116 -0
- {janito-3.8.0 → janito-3.10.0}/docs/cerebras-setup.md +73 -73
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG.md +1 -1
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/RELEASE_NOTES_2.22.0.md +1 -1
- {janito-3.8.0 → janito-3.10.0}/docs/concepts/analysis-style.md +40 -41
- {janito-3.8.0 → janito-3.10.0}/docs/concepts/language-model-clients.md +45 -45
- {janito-3.8.0 → janito-3.10.0}/docs/concepts/prompt-design-style.md +96 -97
- {janito-3.8.0 → janito-3.10.0}/docs/guides/disabled-tools.md +2 -2
- {janito-3.8.0 → janito-3.10.0}/docs/guides/security-commands.md +2 -2
- {janito-3.8.0 → janito-3.10.0}/docs/guides/tools-developer-guide.md +2 -2
- {janito-3.8.0 → janito-3.10.0}/docs/guides/url-whitelist.md +3 -3
- {janito-3.8.0 → janito-3.10.0}/docs/meta/developer-toolchain.md +39 -40
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/architecture.md +2 -2
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/filemanager.md +48 -1
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/testing.md +1 -1
- {janito-3.8.0 → janito-3.10.0}/docs/reference/api.md +106 -106
- {janito-3.8.0 → janito-3.10.0}/docs/reference/cli-options.md +1 -1
- {janito-3.8.0 → janito-3.10.0}/examples/loop_protection_tool_example.py +1 -1
- janito-3.10.0/janito/agent_events.py +75 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/session.py +1 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/__init__.py +2 -0
- janito-3.10.0/janito/cli/chat_mode/shell/commands/interactive.py +33 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/toolbar.py +16 -1
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_tools.py +1 -1
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/runner.py +33 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/main_cli.py +9 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/prompt_core.py +301 -257
- {janito-3.8.0 → janito-3.10.0}/janito/cli/rich_terminal_reporter.py +170 -171
- {janito-3.8.0 → janito-3.10.0}/janito/cli/single_shot_mode/handler.py +19 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/agent.py +65 -0
- {janito-3.8.0 → janito-3.10.0/janito}/plugins/core/filemanager/tools/validate_file_syntax/core.py +7 -2
- janito-3.10.0/janito/plugins/core/filemanager/tools/validate_file_syntax/txt_validator.py +28 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/manager.py +1 -1
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/__init__.py +7 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/adapter.py +1 -1
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/ask_user.py +1 -1
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/copy_file.py +1 -1
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/create_directory.py +45 -2
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/create_file.py +10 -6
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/delete_text_in_file.py +2 -2
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/fetch_url.py +3 -3
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/find_files.py +1 -1
- {janito-3.8.0/plugins/core/codeanalyzer/tools → janito-3.10.0/janito/plugins/tools/local}/get_file_outline/core.py +2 -2
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/move_file.py +1 -1
- {janito-3.8.0/plugins/web/webtools/tools → janito-3.10.0/janito/plugins/tools/local}/open_html_in_browser.py +1 -1
- {janito-3.8.0/plugins/web/webtools/tools → janito-3.10.0/janito/plugins/tools/local}/open_url.py +1 -1
- {janito-3.8.0/plugins/dev/pythondev/tools → janito-3.10.0/janito/plugins/tools/local}/python_code_run.py +1 -1
- {janito-3.8.0/plugins/dev/pythondev/tools → janito-3.10.0/janito/plugins/tools/local}/python_command_run.py +1 -1
- {janito-3.8.0/plugins/dev/pythondev/tools → janito-3.10.0/janito/plugins/tools/local}/python_file_run.py +1 -1
- {janito-3.8.0/plugins/dev/visualization/tools → janito-3.10.0/janito/plugins/tools/local}/read_chart.py +1 -1
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/read_files.py +1 -1
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/remove_directory.py +1 -1
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/remove_file.py +1 -1
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/replace_text_in_file.py +2 -2
- {janito-3.8.0/plugins/core/system/tools → janito-3.10.0/janito/plugins/tools/local}/run_bash_command.py +1 -1
- {janito-3.8.0/plugins/core/system/tools → janito-3.10.0/janito/plugins/tools/local}/run_powershell_command.py +1 -1
- {janito-3.8.0/plugins/core/codeanalyzer/tools → janito-3.10.0/janito/plugins/tools/local}/search_text/core.py +2 -2
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/show_image.py +1 -1
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/show_image_grid.py +1 -1
- janito-3.10.0/janito/plugins/tools/local/validate_file_syntax/core.py +119 -0
- janito-3.10.0/janito/plugins/tools/local/validate_file_syntax/txt_validator.py +28 -0
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/view_file.py +1 -1
- janito-3.10.0/janito/tests/test_tool_adapter_case_insensitive.py +112 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/__init__.py +2 -2
- {janito-3.8.0 → janito-3.10.0}/janito/tools/inspect_registry.py +1 -1
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_base.py +8 -1
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tools_adapter.py +514 -510
- {janito-3.8.0 → janito-3.10.0}/janito.egg-info/PKG-INFO +84 -84
- {janito-3.8.0 → janito-3.10.0}/janito.egg-info/SOURCES.txt +63 -64
- janito-3.10.0/janito.egg-info/top_level.txt +1 -0
- {janito-3.8.0 → janito-3.10.0}/mkdocs.yml +88 -88
- {janito-3.8.0 → janito-3.10.0}/mkdocs_hooks.py +51 -51
- janito-3.10.0/plugins/core/filemanager/tools/validate_file_syntax/__init__.py +1 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/web/webtools/tools/fetch_url.py +2 -2
- {janito-3.8.0 → janito-3.10.0}/setup.cfg +4 -4
- janito-3.10.0/tests/local/test_read_file/__init__.py +1 -0
- janito-3.10.0/tests/local/test_read_file/read_file.py +69 -0
- janito-3.10.0/tests/local/test_read_file/test_read_file.py +83 -0
- janito-3.8.0/README.md +0 -49
- janito-3.8.0/docs/plugins/ACTUAL_TOOLS_LOCATION.md +0 -52
- janito-3.8.0/docs/plugins/MIGRATION_COMPLETE.md +0 -73
- janito-3.8.0/janito/tools/adapters/local/create_directory.py +0 -70
- janito-3.8.0/janito.egg-info/top_level.txt +0 -2
- janito-3.8.0/market_test.py +0 -108
- janito-3.8.0/pytest.ini +0 -3
- janito-3.8.0/test.txt +0 -1
- janito-3.8.0/test_example.py +0 -90
- janito-3.8.0/test_http_errors.py +0 -100
- janito-3.8.0/test_http_errors_direct.py +0 -53
- janito-3.8.0/test_key_field_behavior.py +0 -104
- janito-3.8.0/test_key_field_protection.py +0 -74
- janito-3.8.0/test_loop_protection_return.py +0 -67
- janito-3.8.0/test_market_analyst.py +0 -133
- {janito-3.8.0 → janito-3.10.0}/.codespellrc +0 -0
- {janito-3.8.0 → janito-3.10.0}/.gitattributes +0 -0
- {janito-3.8.0 → janito-3.10.0}/.github/workflows/python-app.yml.disabled +0 -0
- {janito-3.8.0 → janito-3.10.0}/.pre-commit-config.yaml +0 -0
- {janito-3.8.0 → janito-3.10.0}/.secrets.baseline +0 -0
- {janito-3.8.0 → janito-3.10.0}/.vscode/settings.json +0 -0
- {janito-3.8.0 → janito-3.10.0}/LICENSE +0 -0
- {janito-3.8.0 → janito-3.10.0}/MARKET_ANALYST_README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/README-dev.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/RELEASE_COMPARISON.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/UPDATING_DOCS.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/adding_mcp.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/CHANGELOG.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/DIV.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/Interfaces.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/PROFILES.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/about/costs.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/about/vs-webchats.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/alibaba-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/alternatives.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.16.0.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.23.0.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.26.0.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/CHANGELOG_2.27.0.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/changelogs/RELEASE_NOTES_2.24.1.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/concepts/index.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/deepseek-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/driver-flow.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/driver-request-cancellation.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/drivers/events.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/drivers.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/event-bus.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/configuration.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/developing.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/installation.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/market-data-sources.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/profiles.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/prompting/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/read-chart-examples.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/stock-market-guide.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/terminal-shell.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/using.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/guides/using_tools.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/ibm-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/index.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/llm-drivers.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/meta/quality-checks.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/mistral-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/moonshot-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/openai-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/overrides/partials/copyright.html +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/api-reference.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/codeanalyzer.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/imagedisplay.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/pythondev.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/system.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/userinterface.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/visualization.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/built-in-plugins/webtools.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/configuration.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/examples/advanced.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/examples/basic.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/examples/intermediate.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/plugin-development.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/plugin-resources.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/publishing.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/plugins/remote-plugins.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/provider-platform-access.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/public-sources.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/reference/azure-openai.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/reference/message-handler-model.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/security.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/supported-providers-models.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/tools/search-text.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/tools/show-image-grid.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/tools/show-image.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/tools-index.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/tools-natural-results.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/tools-precision.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/docs/z-ai-setup.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/examples/loop_protection_example.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/get_nasdaq_top.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/ibm-logo.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/__main__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/_version.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/agent/setup_agent.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_market_analyst.txt.j2 +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/script_runner.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/security/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/security/allowed_sites.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/security_command.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/unrestricted.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/enable_disable_plugin.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_drivers.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_plugins.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/list_providers_region.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/ping_providers.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/config.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/console.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/event_logger.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/getters.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/model_guesser.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/setters.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/core/unsetters.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/main.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/prompt_handler.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/prompt_setup.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/cli/verbose_output.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/config.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/config_manager.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/conversation_history.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/dir_walk_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/docs/GETTING_STARTED.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/driver_events.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/azure_openai/driver.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/cerebras/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/openai/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/openai/driver.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/zai/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/drivers/zai/driver.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/event_bus/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/event_bus/bus.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/event_bus/event.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/event_bus/handler.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/exceptions.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/formatting.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/formatting_token.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/gitignore_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/hello.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/i18n/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/i18n/it.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/i18n/messages.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/i18n/pt.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/auth.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/auth_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/driver.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/driver_config.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/driver_input.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/message_parts.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/model.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/llm/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/mkdocs.yml +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/perf_singleton.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/performance_collector.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/platform_discovery.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/auto_loader.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/auto_loader_fixed.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/base.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/builtin.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/config.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/janito/plugins/core/filemanager/tools}/validate_file_syntax/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/core_adapter.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/core_loader.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/core_loader_fixed.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/discovery.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/plugins/discovery_core.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/java_outline.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/markdown_outline.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/python_outline.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/get_file_outline/search_outline.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/match_lines.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/pattern_utils.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/search_text/traverse_directory.py +0 -0
- {janito-3.8.0/plugins/core/filemanager/tools → janito-3.10.0/janito/plugins/tools/local}/validate_file_syntax/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/css_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/html_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/js_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/json_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/python_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters → janito-3.10.0/janito/plugins/tools}/local/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/provider_config.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/provider_registry.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/alibaba/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/alibaba/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/alibaba/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/anthropic/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/azure_openai/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/cerebras/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/cerebras/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/cerebras/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/deepseek/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/google/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/google/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/google/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/ibm/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/mistral/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/mistral/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/mistral/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/moonshot/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/moonshot/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/moonshot/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/registry.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/model_info.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/provider.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/providers/zai/schema_generator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/regions/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/regions/cli.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/regions/geo_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/regions/provider_regions.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/report_events.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/shell.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/README.md +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/base.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/disabled_tools.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/function_adapter.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/loop_protection.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/loop_protection_decorator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/path_security.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/path_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/permissions.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/permissions_parse.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_events.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tool_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/tools_schema.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/tools/url_whitelist.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito/utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/janito.egg-info/requires.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/market_prompt_fix.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/codeanalyzer/tools}/get_file_outline/core.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/java_outline.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/markdown_outline.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/python_outline.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/get_file_outline/search_outline.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/codeanalyzer/tools}/search_text/core.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/match_lines.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/pattern_utils.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/codeanalyzer/tools/search_text/traverse_directory.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/copy_file.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/create_file.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/delete_text_in_file.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/find_files.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/move_file.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/read_files.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/remove_directory.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/remove_file.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/replace_text_in_file.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/validate_file_syntax/core.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/css_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/html_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/jinja2_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/js_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/json_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/markdown_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/ps1_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/python_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/xml_validator.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/filemanager/tools/validate_file_syntax/yaml_validator.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/filemanager/tools}/view_file.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/plugin.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/tools/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/tools/show_image.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/imagedisplay/tools/show_image_grid.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/core/system/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/system/tools}/run_bash_command.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/core/system/tools}/run_powershell_command.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/dev/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/dev/pythondev/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/pythondev/tools}/python_code_run.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/pythondev/tools}/python_command_run.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/pythondev/tools}/python_file_run.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/dev/visualization/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/dev/visualization/tools}/read_chart.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/example_plugin.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/ui/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/ui/userinterface/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/ui/userinterface/tools/ask_user.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/web/__init__.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins/web/webtools/__init__.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/web/webtools/tools}/open_html_in_browser.py +0 -0
- {janito-3.8.0/janito/tools/adapters/local → janito-3.10.0/plugins/web/webtools/tools}/open_url.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/plugins.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/pyproject.toml +0 -0
- {janito-3.8.0 → janito-3.10.0}/requirements-dev.txt +0 -0
- {janito-3.8.0 → janito-3.10.0}/requirements.txt +0 -0
- {janito-3.8.0/tests/adapters → janito-3.10.0/tests}/local/get_file_outline/test_core_outline.py +0 -0
- {janito-3.8.0/tests/adapters → janito-3.10.0/tests}/local/test_read_files.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_models.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_providers.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_providers_alibaba.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_cli_list_providers_moonshot.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_cli_version.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_disabled_tools.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_plugin_system.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_provider_alibaba.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_provider_cerebras.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tests/test_provider_moonshot.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tools/release.py +0 -0
- {janito-3.8.0 → janito-3.10.0}/tox.ini +0 -0
@@ -1,66 +1,71 @@
|
|
1
|
-
# Byte-compiled / optimized / DLL files
|
2
|
-
__pycache__/
|
3
|
-
*.py[cod]
|
4
|
-
*$py.class
|
5
|
-
|
6
|
-
# Distribution / packaging
|
7
|
-
.Python
|
8
|
-
build/
|
9
|
-
develop-eggs/
|
10
|
-
dist/
|
11
|
-
downloads/
|
12
|
-
eggs/
|
13
|
-
.eggs/
|
14
|
-
lib/
|
15
|
-
lib64/
|
16
|
-
parts/
|
17
|
-
sdist/
|
18
|
-
var/
|
19
|
-
*.egg-info/
|
20
|
-
.installed.cfg
|
21
|
-
*.egg
|
22
|
-
|
23
|
-
# Wheel files
|
24
|
-
*.whl
|
25
|
-
|
26
|
-
# Installer logs
|
27
|
-
pip-log.txt
|
28
|
-
pip-delete-this-directory.txt
|
29
|
-
|
30
|
-
# Unit test / coverage reports
|
31
|
-
htmlcov/
|
32
|
-
.tox/
|
33
|
-
.nox/
|
34
|
-
.coverage
|
35
|
-
.coverage.*
|
36
|
-
.cache
|
37
|
-
nosetests.xml
|
38
|
-
coverage.xml
|
39
|
-
*.cover
|
40
|
-
.hypothesis/
|
41
|
-
.pytest_cache/
|
42
|
-
|
43
|
-
# Jupyter Notebook
|
44
|
-
.ipynb_checkpoints
|
45
|
-
|
46
|
-
# pyenv
|
47
|
-
.python-version
|
48
|
-
|
49
|
-
# mypy
|
50
|
-
.mypy_cache/
|
51
|
-
.dmypy.json
|
52
|
-
|
53
|
-
# Pyre type checker
|
54
|
-
.pyre/
|
55
|
-
|
56
|
-
# Backup files
|
57
|
-
*.bak
|
58
|
-
|
59
|
-
# Ruff cache
|
60
|
-
.ruff_cache/
|
61
|
-
|
62
|
-
# Janito logs/history (if not needed in VCS)
|
63
|
-
.janito/
|
64
|
-
|
65
|
-
# MkDocs build output
|
66
|
-
site/
|
1
|
+
# Byte-compiled / optimized / DLL files
|
2
|
+
__pycache__/
|
3
|
+
*.py[cod]
|
4
|
+
*$py.class
|
5
|
+
|
6
|
+
# Distribution / packaging
|
7
|
+
.Python
|
8
|
+
build/
|
9
|
+
develop-eggs/
|
10
|
+
dist/
|
11
|
+
downloads/
|
12
|
+
eggs/
|
13
|
+
.eggs/
|
14
|
+
lib/
|
15
|
+
lib64/
|
16
|
+
parts/
|
17
|
+
sdist/
|
18
|
+
var/
|
19
|
+
*.egg-info/
|
20
|
+
.installed.cfg
|
21
|
+
*.egg
|
22
|
+
|
23
|
+
# Wheel files
|
24
|
+
*.whl
|
25
|
+
|
26
|
+
# Installer logs
|
27
|
+
pip-log.txt
|
28
|
+
pip-delete-this-directory.txt
|
29
|
+
|
30
|
+
# Unit test / coverage reports
|
31
|
+
htmlcov/
|
32
|
+
.tox/
|
33
|
+
.nox/
|
34
|
+
.coverage
|
35
|
+
.coverage.*
|
36
|
+
.cache
|
37
|
+
nosetests.xml
|
38
|
+
coverage.xml
|
39
|
+
*.cover
|
40
|
+
.hypothesis/
|
41
|
+
.pytest_cache/
|
42
|
+
|
43
|
+
# Jupyter Notebook
|
44
|
+
.ipynb_checkpoints
|
45
|
+
|
46
|
+
# pyenv
|
47
|
+
.python-version
|
48
|
+
|
49
|
+
# mypy
|
50
|
+
.mypy_cache/
|
51
|
+
.dmypy.json
|
52
|
+
|
53
|
+
# Pyre type checker
|
54
|
+
.pyre/
|
55
|
+
|
56
|
+
# Backup files
|
57
|
+
*.bak
|
58
|
+
|
59
|
+
# Ruff cache
|
60
|
+
.ruff_cache/
|
61
|
+
|
62
|
+
# Janito logs/history (if not needed in VCS)
|
63
|
+
.janito/
|
64
|
+
|
65
|
+
# MkDocs build output
|
66
|
+
site/
|
67
|
+
|
68
|
+
# Virtual environments
|
69
|
+
.venv/
|
70
|
+
venv/
|
71
|
+
env/
|
@@ -1,84 +1,84 @@
|
|
1
|
-
Metadata-Version: 2.4
|
2
|
-
Name: janito
|
3
|
-
Version: 3.
|
4
|
-
Summary: A new Python package called janito.
|
5
|
-
Author-email: João Pinto <janito@ikignosis.org>
|
6
|
-
Project-URL: Homepage, https://github.com/ikignosis/janito
|
7
|
-
Requires-Python: >=3.7
|
8
|
-
Description-Content-Type: text/markdown
|
9
|
-
License-File: LICENSE
|
10
|
-
Requires-Dist: attrs==25.3.0
|
11
|
-
Requires-Dist: rich==14.0.0
|
12
|
-
Requires-Dist: pathspec==0.12.1
|
13
|
-
Requires-Dist: setuptools>=61.0
|
14
|
-
Requires-Dist: pyyaml>=6.0
|
15
|
-
Requires-Dist: jinja2>=3.0.0
|
16
|
-
Requires-Dist: prompt_toolkit>=3.0.51
|
17
|
-
Requires-Dist: lxml>=5.4.0
|
18
|
-
Requires-Dist: requests>=2.32.4
|
19
|
-
Requires-Dist: bs4>=0.0.2
|
20
|
-
Requires-Dist: questionary>=2.0.1
|
21
|
-
Requires-Dist: openai>=1.68.0
|
22
|
-
Requires-Dist: Pillow>=10.0.0
|
23
|
-
Provides-Extra: dev
|
24
|
-
Requires-Dist: pytest; extra == "dev"
|
25
|
-
Requires-Dist: pre-commit; extra == "dev"
|
26
|
-
Requires-Dist: ruff==0.11.9; extra == "dev"
|
27
|
-
Requires-Dist: detect-secrets==1.4.0; extra == "dev"
|
28
|
-
Requires-Dist: codespell==2.4.1; extra == "dev"
|
29
|
-
Requires-Dist: black; extra == "dev"
|
30
|
-
Requires-Dist: questionary>=2.0.1; extra == "dev"
|
31
|
-
Requires-Dist: setuptools_scm>=8.0; extra == "dev"
|
32
|
-
Provides-Extra: coder
|
33
|
-
Requires-Dist: janito-coder; extra == "coder"
|
34
|
-
Dynamic: license-file
|
35
|
-
|
36
|
-
#
|
37
|
-
|
38
|
-
```bash
|
39
|
-
$
|
40
|
-
Usage:
|
41
|
-
|
42
|
-
Interact with Nine API resources. See https://docs.nineapis.ch for the full API docs.
|
43
|
-
|
44
|
-
Run "
|
45
|
-
```
|
46
|
-
|
47
|
-
## Setup
|
48
|
-
|
49
|
-
```bash
|
50
|
-
# If you have go already installed
|
51
|
-
go install github.com/ninech/
|
52
|
-
|
53
|
-
# Homebrew
|
54
|
-
brew install ninech/taps/
|
55
|
-
|
56
|
-
# Debian/Ubuntu
|
57
|
-
echo "deb [trusted=yes] https://repo.nine.ch/deb/ /" | sudo tee /etc/apt/sources.list.d/repo.nine.ch.list
|
58
|
-
sudo apt-get update
|
59
|
-
sudo apt-get install
|
60
|
-
|
61
|
-
# Fedora/RHEL
|
62
|
-
cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
|
63
|
-
[repo.nine.ch]
|
64
|
-
name=Nine Repo
|
65
|
-
baseurl=https://repo.nine.ch/yum/
|
66
|
-
enabled=1
|
67
|
-
gpgcheck=0
|
68
|
-
EOF
|
69
|
-
dnf install
|
70
|
-
|
71
|
-
# Arch
|
72
|
-
# Install yay: https://github.com/Jguer/yay#binary
|
73
|
-
yay --version
|
74
|
-
yay -S
|
75
|
-
```
|
76
|
-
|
77
|
-
For Windows users,
|
78
|
-
latest exe file from the [releases](https://github.com/ninech/
|
79
|
-
install it.
|
80
|
-
|
81
|
-
## Getting started
|
82
|
-
|
83
|
-
* login to the API using `
|
84
|
-
* run `
|
1
|
+
Metadata-Version: 2.4
|
2
|
+
Name: janito
|
3
|
+
Version: 3.10.0
|
4
|
+
Summary: A new Python package called janito.
|
5
|
+
Author-email: João Pinto <janito@ikignosis.org>
|
6
|
+
Project-URL: Homepage, https://github.com/ikignosis/janito
|
7
|
+
Requires-Python: >=3.7
|
8
|
+
Description-Content-Type: text/markdown
|
9
|
+
License-File: LICENSE
|
10
|
+
Requires-Dist: attrs==25.3.0
|
11
|
+
Requires-Dist: rich==14.0.0
|
12
|
+
Requires-Dist: pathspec==0.12.1
|
13
|
+
Requires-Dist: setuptools>=61.0
|
14
|
+
Requires-Dist: pyyaml>=6.0
|
15
|
+
Requires-Dist: jinja2>=3.0.0
|
16
|
+
Requires-Dist: prompt_toolkit>=3.0.51
|
17
|
+
Requires-Dist: lxml>=5.4.0
|
18
|
+
Requires-Dist: requests>=2.32.4
|
19
|
+
Requires-Dist: bs4>=0.0.2
|
20
|
+
Requires-Dist: questionary>=2.0.1
|
21
|
+
Requires-Dist: openai>=1.68.0
|
22
|
+
Requires-Dist: Pillow>=10.0.0
|
23
|
+
Provides-Extra: dev
|
24
|
+
Requires-Dist: pytest; extra == "dev"
|
25
|
+
Requires-Dist: pre-commit; extra == "dev"
|
26
|
+
Requires-Dist: ruff==0.11.9; extra == "dev"
|
27
|
+
Requires-Dist: detect-secrets==1.4.0; extra == "dev"
|
28
|
+
Requires-Dist: codespell==2.4.1; extra == "dev"
|
29
|
+
Requires-Dist: black; extra == "dev"
|
30
|
+
Requires-Dist: questionary>=2.0.1; extra == "dev"
|
31
|
+
Requires-Dist: setuptools_scm>=8.0; extra == "dev"
|
32
|
+
Provides-Extra: coder
|
33
|
+
Requires-Dist: janito-coder; extra == "coder"
|
34
|
+
Dynamic: license-file
|
35
|
+
|
36
|
+
# Janito
|
37
|
+
|
38
|
+
```bash
|
39
|
+
$ janito --help
|
40
|
+
Usage: janito <command>
|
41
|
+
|
42
|
+
Interact with Nine API resources. See https://docs.nineapis.ch for the full API docs.
|
43
|
+
|
44
|
+
Run "janito <command> --help" for more information on a command.
|
45
|
+
```
|
46
|
+
|
47
|
+
## Setup
|
48
|
+
|
49
|
+
```bash
|
50
|
+
# If you have go already installed
|
51
|
+
go install github.com/ninech/janito@latest
|
52
|
+
|
53
|
+
# Homebrew
|
54
|
+
brew install ninech/taps/janito
|
55
|
+
|
56
|
+
# Debian/Ubuntu
|
57
|
+
echo "deb [trusted=yes] https://repo.nine.ch/deb/ /" | sudo tee /etc/apt/sources.list.d/repo.nine.ch.list
|
58
|
+
sudo apt-get update
|
59
|
+
sudo apt-get install janito
|
60
|
+
|
61
|
+
# Fedora/RHEL
|
62
|
+
cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
|
63
|
+
[repo.nine.ch]
|
64
|
+
name=Nine Repo
|
65
|
+
baseurl=https://repo.nine.ch/yum/
|
66
|
+
enabled=1
|
67
|
+
gpgcheck=0
|
68
|
+
EOF
|
69
|
+
dnf install janito
|
70
|
+
|
71
|
+
# Arch
|
72
|
+
# Install yay: https://github.com/Jguer/yay#binary
|
73
|
+
yay --version
|
74
|
+
yay -S janito-bin
|
75
|
+
```
|
76
|
+
|
77
|
+
For Windows users, janito is also built for arm64 and amd64. You can download the
|
78
|
+
latest exe file from the [releases](https://github.com/ninech/janito/releases) and
|
79
|
+
install it.
|
80
|
+
|
81
|
+
## Getting started
|
82
|
+
|
83
|
+
* login to the API using `janito auth login`
|
84
|
+
* run `janito --help` to get a list of all available commands
|
janito-3.10.0/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# Janito
|
2
|
+
|
3
|
+
```bash
|
4
|
+
$ janito --help
|
5
|
+
Usage: janito <command>
|
6
|
+
|
7
|
+
Interact with Nine API resources. See https://docs.nineapis.ch for the full API docs.
|
8
|
+
|
9
|
+
Run "janito <command> --help" for more information on a command.
|
10
|
+
```
|
11
|
+
|
12
|
+
## Setup
|
13
|
+
|
14
|
+
```bash
|
15
|
+
# If you have go already installed
|
16
|
+
go install github.com/ninech/janito@latest
|
17
|
+
|
18
|
+
# Homebrew
|
19
|
+
brew install ninech/taps/janito
|
20
|
+
|
21
|
+
# Debian/Ubuntu
|
22
|
+
echo "deb [trusted=yes] https://repo.nine.ch/deb/ /" | sudo tee /etc/apt/sources.list.d/repo.nine.ch.list
|
23
|
+
sudo apt-get update
|
24
|
+
sudo apt-get install janito
|
25
|
+
|
26
|
+
# Fedora/RHEL
|
27
|
+
cat <<EOF > /etc/yum.repos.d/repo.nine.ch.repo
|
28
|
+
[repo.nine.ch]
|
29
|
+
name=Nine Repo
|
30
|
+
baseurl=https://repo.nine.ch/yum/
|
31
|
+
enabled=1
|
32
|
+
gpgcheck=0
|
33
|
+
EOF
|
34
|
+
dnf install janito
|
35
|
+
|
36
|
+
# Arch
|
37
|
+
# Install yay: https://github.com/Jguer/yay#binary
|
38
|
+
yay --version
|
39
|
+
yay -S janito-bin
|
40
|
+
```
|
41
|
+
|
42
|
+
For Windows users, janito is also built for arm64 and amd64. You can download the
|
43
|
+
latest exe file from the [releases](https://github.com/ninech/janito/releases) and
|
44
|
+
install it.
|
45
|
+
|
46
|
+
## Getting started
|
47
|
+
|
48
|
+
* login to the API using `janito auth login`
|
49
|
+
* run `janito --help` to get a list of all available commands
|
@@ -12,7 +12,7 @@ Janito is designed to give you maximum control over how AI assists you with your
|
|
12
12
|
|
13
13
|
- 💻 **Not Locked to an Editor:** Janito works in the terminal, scripts, or web—no need for a heavyweight IDE or plugin ecosystem.
|
14
14
|
- 🧰 **Composable and Extensible:** Tools can be enabled, disabled, or customized for each session, letting you experiment or automate workflows.
|
15
|
-
- 🕒 **Session-Scoped Adjustments:**
|
15
|
+
- 🕒 **Session-Scoped Adjustments:** Session-based overrides (via CLI options or prompt tweaks) let you try new approaches without changing your global setup.
|
16
16
|
|
17
17
|
## 🧑💻 Example: Prompt-Driven Focus
|
18
18
|
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# Agent Lifecycle and Tool Execution Synchronization
|
2
|
+
|
3
|
+
This document details the lifecycle of an agent in Janito, focusing on how state and events are synchronized with tool execution.
|
4
|
+
|
5
|
+
## Overview
|
6
|
+
|
7
|
+
The agent lifecycle in Janito involves several key phases, from initialization to tool execution and event handling. Understanding this lifecycle is crucial for developers working with or extending the agent system.
|
8
|
+
|
9
|
+
## Agent Initialization
|
10
|
+
|
11
|
+
1. **Configuration Loading**: The agent loads its configuration, including enabled tools, permissions, and other settings.
|
12
|
+
2. **Event Bus Setup**: An event bus is initialized for internal communication between components.
|
13
|
+
3. **Tool Registration**: Tools are registered with the appropriate adapters, making them available for execution.
|
14
|
+
4. **Permission Initialization**: Global permission settings are established, determining which tools can be used.
|
15
|
+
|
16
|
+
## Main Execution Loop
|
17
|
+
|
18
|
+
The agent operates in a continuous loop that processes user input, executes tools, and responds with results:
|
19
|
+
|
20
|
+
1. **Input Processing**: The agent receives input from the user or other sources.
|
21
|
+
2. **Planning**: Based on the input, the agent determines which tools to use and in what order.
|
22
|
+
3. **Tool Execution**: Tools are executed with the necessary parameters.
|
23
|
+
4. **Result Processing**: The agent processes the results from tool executions.
|
24
|
+
5. **Response Generation**: A response is generated and sent back to the user.
|
25
|
+
|
26
|
+
## Tool Execution Lifecycle
|
27
|
+
|
28
|
+
When a tool is executed, it goes through a specific lifecycle:
|
29
|
+
|
30
|
+
1. **Discovery**: The agent looks up the tool by name in the tools registry.
|
31
|
+
2. **Permission Validation**: The tool's required permissions are checked against the global allowed permissions.
|
32
|
+
3. **Argument Validation**: The provided arguments are validated against the tool's signature and schema.
|
33
|
+
4. **Path Security Check**: For tools that work with file paths, path security validation ensures that only allowed paths are accessed.
|
34
|
+
5. **Execution**: The tool is executed with the provided arguments.
|
35
|
+
6. **Event Publishing**: Throughout the execution process, various events are published to the event bus:
|
36
|
+
|
37
|
+
- `ToolCallStarted`: When a tool execution begins
|
38
|
+
- `ToolCallFinished`: When a tool execution completes successfully
|
39
|
+
- `ToolCallError`: When a tool execution encounters an error
|
40
|
+
|
41
|
+
## Event Synchronization
|
42
|
+
|
43
|
+
Events play a crucial role in synchronizing state throughout the agent lifecycle:
|
44
|
+
|
45
|
+
1. **Tool Events**: Published during tool execution to track progress and handle errors.
|
46
|
+
2. **Report Events**: Used for user-facing messages, including actions, errors, warnings, and success messages.
|
47
|
+
3. **System Events**: Handle internal state changes and system-level notifications.
|
48
|
+
|
49
|
+
The event bus ensures that all components can react to important events in real-time, maintaining consistency across the system.
|
50
|
+
|
51
|
+
## State Management
|
52
|
+
|
53
|
+
The agent maintains several types of state:
|
54
|
+
|
55
|
+
1. **Configuration State**: Settings that control agent behavior.
|
56
|
+
2. **Permission State**: Current allowed permissions for tool execution.
|
57
|
+
3. **Execution State**: Information about currently running tools and their progress.
|
58
|
+
4. **Conversation State**: History of interactions with the user.
|
59
|
+
|
60
|
+
State changes are synchronized through the event bus, ensuring all components have access to the most current information.
|
61
|
+
|
62
|
+
## Error Handling and Recovery
|
63
|
+
|
64
|
+
The agent includes comprehensive error handling:
|
65
|
+
|
66
|
+
1. **Tool Errors**: Caught and converted to `ToolCallException` with detailed error messages.
|
67
|
+
2. **Permission Violations**: Detected and prevented before tool execution.
|
68
|
+
3. **Path Security Violations**: Prevented through path validation.
|
69
|
+
4. **Loop Protection**: Prevents infinite execution loops through decorator-based protection.
|
70
|
+
|
71
|
+
When errors occur, they are published to the event bus and handled appropriately by the agent's error recovery mechanisms.
|
72
|
+
|
73
|
+
## Conclusion
|
74
|
+
|
75
|
+
The agent lifecycle in Janito is designed to be robust, secure, and extensible. By understanding how state and events are synchronized with tool execution, developers can effectively work with and extend the agent system.
|
@@ -0,0 +1,116 @@
|
|
1
|
+
# Agent and Tools Workflow and Lifecycle
|
2
|
+
|
3
|
+
This document explains how tools are integrated into Janito's agent system, covering their workflow from registration to execution and the overall lifecycle.
|
4
|
+
|
5
|
+
## Overview
|
6
|
+
|
7
|
+
Janito's agent system uses a modular approach to tool management, allowing for flexible registration, permission control, and execution of various tools. Tools are implemented as classes that inherit from `ToolBase` and are registered with a tools adapter.
|
8
|
+
|
9
|
+
## Tool Registration
|
10
|
+
|
11
|
+
### 1. Tool Implementation
|
12
|
+
|
13
|
+
Tools are implemented as classes that inherit from `ToolBase`:
|
14
|
+
|
15
|
+
- Must define a `permissions` attribute of type `ToolPermissions`
|
16
|
+
- Must implement a `run` method with proper type hints and docstrings
|
17
|
+
- Should have a unique `tool_name` class attribute
|
18
|
+
|
19
|
+
Example:
|
20
|
+
```python
|
21
|
+
from janito.tools.tool_base import ToolBase, ToolPermissions
|
22
|
+
from janito.plugins.adapters.local.adapter import register_local_tool
|
23
|
+
|
24
|
+
@register_local_tool
|
25
|
+
class MyTool(ToolBase):
|
26
|
+
"""
|
27
|
+
Processes a file a given number of times.
|
28
|
+
"""
|
29
|
+
permissions = ToolPermissions(read=True, write=True)
|
30
|
+
tool_name = "my_tool"
|
31
|
+
|
32
|
+
def run(self, filename: str, count: int) -> str:
|
33
|
+
"""
|
34
|
+
Processes the specified file repeatedly.
|
35
|
+
|
36
|
+
Args:
|
37
|
+
filename (str): The path to the file to process.
|
38
|
+
count (int): How many times to process the file.
|
39
|
+
|
40
|
+
Returns:
|
41
|
+
str: Status message after processing.
|
42
|
+
"""
|
43
|
+
# Implementation here
|
44
|
+
return f"Processed {filename} {count} times"
|
45
|
+
```
|
46
|
+
|
47
|
+
### 2. Tool Registration
|
48
|
+
|
49
|
+
Tools can be registered in two ways:
|
50
|
+
|
51
|
+
1. Using the `@register_local_tool` decorator
|
52
|
+
2. Manually registering with a `LocalToolsAdapter` instance
|
53
|
+
|
54
|
+
The decorator approach automatically registers the tool with the singleton adapter.
|
55
|
+
|
56
|
+
## Tool Permissions
|
57
|
+
|
58
|
+
Each tool defines its required permissions using the `ToolPermissions` named tuple:
|
59
|
+
|
60
|
+
- `read`: Permission to read files
|
61
|
+
- `write`: Permission to write/modify files
|
62
|
+
- `execute`: Permission to execute commands
|
63
|
+
|
64
|
+
These permissions are checked against the global allowed permissions at runtime.
|
65
|
+
|
66
|
+
## Tool Execution Lifecycle
|
67
|
+
|
68
|
+
### 1. Tool Discovery
|
69
|
+
|
70
|
+
When the agent needs to execute a tool, it first looks up the tool by name using the tools adapter.
|
71
|
+
|
72
|
+
### 2. Permission Validation
|
73
|
+
|
74
|
+
The adapter checks if the tool's required permissions are allowed by the current permission settings.
|
75
|
+
|
76
|
+
### 3. Argument Validation
|
77
|
+
|
78
|
+
Before execution, the tool's arguments are validated against both the function signature and any defined schema.
|
79
|
+
|
80
|
+
### 4. Path Security Check
|
81
|
+
|
82
|
+
For tools that work with file paths, path security validation ensures that only allowed paths are accessed.
|
83
|
+
|
84
|
+
### 5. Execution
|
85
|
+
|
86
|
+
The tool is executed with the provided arguments, and the result is returned.
|
87
|
+
|
88
|
+
### 6. Event Publishing
|
89
|
+
|
90
|
+
Throughout the execution process, various events are published to the event bus:
|
91
|
+
|
92
|
+
- `ToolCallStarted`: When a tool execution begins
|
93
|
+
- `ToolCallFinished`: When a tool execution completes successfully
|
94
|
+
- `ToolCallError`: When a tool execution encounters an error
|
95
|
+
|
96
|
+
## Error Handling
|
97
|
+
|
98
|
+
The tools adapter includes comprehensive error handling:
|
99
|
+
|
100
|
+
- Missing or invalid arguments are caught and reported
|
101
|
+
- Path security violations are detected and prevented
|
102
|
+
- Loop protection prevents infinite execution loops
|
103
|
+
- Runtime errors in tools are caught and converted to `ToolCallException`
|
104
|
+
|
105
|
+
## Customization
|
106
|
+
|
107
|
+
The tools system can be customized by:
|
108
|
+
|
109
|
+
1. Implementing custom tools adapters for different execution environments
|
110
|
+
2. Modifying permission settings at runtime
|
111
|
+
3. Disabling specific tools through configuration
|
112
|
+
4. Extending the base `ToolBase` class for specialized functionality
|
113
|
+
|
114
|
+
## Conclusion
|
115
|
+
|
116
|
+
Janito's agent and tools system provides a robust, secure, and extensible framework for integrating various functionalities. By following the established patterns for tool implementation and registration, developers can easily add new capabilities while maintaining security and consistency.
|