janito 2.9.0__tar.gz → 2.12.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.9.0 → janito-2.12.0}/CHANGELOG.md +34 -10
- {janito-2.9.0/janito.egg-info → janito-2.12.0}/PKG-INFO +1 -1
- {janito-2.9.0 → janito-2.12.0}/docs/guides/terminal-shell.md +1 -0
- {janito-2.9.0 → janito-2.12.0}/docs/moonshotai-setup.md +2 -1
- {janito-2.9.0 → janito-2.12.0}/docs/reference/cli-options.md +2 -1
- {janito-2.9.0 → janito-2.12.0}/docs/supported-providers-models.md +23 -3
- janito-2.12.0/janito/README.md +149 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/script_runner.py +2 -2
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/session.py +9 -0
- janito-2.12.0/janito/cli/core/model_guesser.py +51 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/core/runner.py +13 -1
- {janito-2.9.0 → janito-2.12.0}/janito/cli/main_cli.py +8 -1
- janito-2.12.0/janito/docs/GETTING_STARTED.md +117 -0
- {janito-2.9.0 → janito-2.12.0}/janito/drivers/azure_openai/driver.py +7 -0
- {janito-2.9.0 → janito-2.12.0}/janito/drivers/openai/driver.py +10 -2
- janito-2.12.0/janito/drivers/zai/__init__.py +1 -0
- janito-2.12.0/janito/drivers/zai/driver.py +465 -0
- janito-2.12.0/janito/mkdocs.yml +40 -0
- {janito-2.9.0 → janito-2.12.0}/janito/provider_registry.py +14 -4
- {janito-2.9.0 → janito-2.12.0}/janito/providers/__init__.py +2 -1
- janito-2.12.0/janito/providers/alibaba/__init__.py +0 -0
- janito-2.12.0/janito/providers/alibaba/model_info.py +40 -0
- janito-2.12.0/janito/providers/alibaba/provider.py +102 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/anthropic/provider.py +6 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/azure_openai/provider.py +6 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/deepseek/provider.py +6 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/google/provider.py +6 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/moonshotai/model_info.py +11 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/moonshotai/provider.py +7 -1
- {janito-2.9.0 → janito-2.12.0}/janito/providers/openai/provider.py +6 -0
- janito-2.12.0/janito/providers/zai/__init__.py +1 -0
- janito-2.12.0/janito/providers/zai/model_info.py +55 -0
- janito-2.12.0/janito/providers/zai/provider.py +128 -0
- janito-2.12.0/janito/providers/zai/schema_generator.py +133 -0
- {janito-2.9.0 → janito-2.12.0/janito.egg-info}/PKG-INFO +1 -1
- {janito-2.9.0 → janito-2.12.0}/janito.egg-info/SOURCES.txt +15 -4
- {janito-2.9.0 → janito-2.12.0}/mkdocs.yml +1 -1
- janito-2.12.0/tests/test_cli_list_providers_alibaba.py +14 -0
- janito-2.12.0/tests/test_provider_alibaba.py +12 -0
- janito-2.9.0/CNAME +0 -1
- janito-2.9.0/janito/providers/groq/__init__.py +0 -1
- janito-2.9.0/janito/providers/groq/model_info.py +0 -45
- janito-2.9.0/janito/providers/groq/provider.py +0 -76
- {janito-2.9.0 → janito-2.12.0}/.codespellrc +0 -0
- {janito-2.9.0 → janito-2.12.0}/.gitattributes +0 -0
- {janito-2.9.0 → janito-2.12.0}/.github/workflows/python-app.yml +0 -0
- {janito-2.9.0 → janito-2.12.0}/.gitignore +0 -0
- {janito-2.9.0 → janito-2.12.0}/.pre-commit-config.yaml +0 -0
- {janito-2.9.0 → janito-2.12.0}/.secrets.baseline +0 -0
- {janito-2.9.0 → janito-2.12.0}/.vscode/settings.json +0 -0
- {janito-2.9.0 → janito-2.12.0}/LICENSE +0 -0
- {janito-2.9.0 → janito-2.12.0}/README-dev.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/README.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/UPDATING_DOCS.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/adding_mcp.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/DIV.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/Interfaces.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/TOOLBAR-STYLING.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/about/costs.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/about/vs-webchats.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/about/why.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/alternatives.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/code_intelligence/agentic-frameworks-comparison.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/code_intelligence/code-generation-challenges.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/code_intelligence/code-generation-observability.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/code_intelligence/our-approach.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/code_intelligence/why-string-replacement.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/concepts/analysis-style.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/concepts/human-guided-ai.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/concepts/index.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/concepts/language-model-clients.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/concepts/prompt-design-style.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/deepseek-setup.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/driver-flow.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/driver-request-cancellation.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/drivers/events.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/drivers.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/event-bus.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/configuration.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/developing.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/disabled-tools.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/installation.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/profiles.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/prompting/README.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/single-shot-terminal.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/tools-developer-guide.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/using.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/guides/using_tools.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/code-generation-observability.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/code_generation_observability.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/happy-programmer.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/happy-programmer.svg +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/terminal-one-shot.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/terminal-shell.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/terminal_one_shot.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/imgs/terminal_shell.png +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/index.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/llm-drivers-required-config.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/llm-drivers.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/meta/developer-toolchain.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/meta/quality-checks.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/reference/api.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/reference/azure-openai.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/reference/message-handler-model.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/reference/rich-message-handler.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/security.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/tools/search-text.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/tools-index.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/tools-natural-results.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/docs/tools-precision.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/git_diff.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/github_diff +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/__main__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/_version.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/agent/setup_agent.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/agent/templates/profiles/system_prompt_template_Developer_with_Python_Tools.txt.j2 +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/agent/templates/profiles/system_prompt_template_developer.txt.j2 +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/agent/templates/profiles/system_prompt_template_model_conversation_without_tools_or_context.txt.j2 +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/bindings.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/chat_entry.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/prompt_style.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/session_profile_select.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/autocomplete.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/_priv_check.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/_priv_status.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/bang.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/base.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/clear.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/conversation_restart.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/execute.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/help.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/history_view.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/lang.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/model.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/multi.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/privileges.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/prompt.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/read.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/role.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/session.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/session_control.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/tools.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/utility.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/verbose.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands/write.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/commands.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/input_history.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/session/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/session/history.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/session/manager.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/shell/session.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/chat_mode/toolbar.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/list_config.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/list_models.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/list_profiles.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/list_providers.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/list_tools.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/model_selection.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/model_utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/set_api_key.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/show_config.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/cli_commands/show_system_prompt.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/config.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/console.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/core/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/core/event_logger.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/core/getters.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/core/setters.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/core/unsetters.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/main.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/prompt_core.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/prompt_handler.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/prompt_setup.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/rich_terminal_reporter.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/single_shot_mode/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/single_shot_mode/handler.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/cli/verbose_output.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/config.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/config_manager.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/conversation_history.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/dir_walk_utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/driver_events.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/drivers/dashscope.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/drivers/driver_registry.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/drivers/openai/README.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/drivers/openai_responses.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/event_bus/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/event_bus/bus.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/event_bus/event.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/event_bus/handler.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/event_bus/queue_bus.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/exceptions.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/formatting.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/formatting_token.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/gitignore_utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/i18n/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/i18n/messages.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/i18n/pt.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/README.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/agent.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/auth.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/driver.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/driver_config.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/driver_config_builder.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/driver_input.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/message_parts.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/model.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/llm/provider.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/perf_singleton.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/performance_collector.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/platform_discovery.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/provider_config.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/anthropic/model_info.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/azure_openai/model_info.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/dashscope.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/deepseek/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/deepseek/model_info.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/google/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/google/model_info.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/moonshotai/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/openai/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/openai/model_info.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/openai/schema_generator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/providers/registry.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/report_events.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/shell.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/DOCSTRING_STANDARD.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/README.md +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/adapter.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/ask_user.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/copy_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/create_directory.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/create_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/delete_text_in_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/fetch_url.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/find_files.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/get_file_outline/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/get_file_outline/core.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/get_file_outline/java_outline.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/get_file_outline/markdown_outline.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/get_file_outline/python_outline.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/get_file_outline/search_outline.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/move_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/open_html_in_browser.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/open_url.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/python_code_run.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/python_command_run.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/python_file_run.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/read_files.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/remove_directory.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/remove_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/replace_text_in_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/run_bash_command.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/run_powershell_command.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/search_text/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/search_text/core.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/search_text/match_lines.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/search_text/pattern_utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/search_text/traverse_directory.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/__init__.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/core.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/css_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/html_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/js_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/json_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/markdown_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/ps1_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/python_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/xml_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/validate_file_syntax/yaml_validator.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/adapters/local/view_file.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/disabled_tools.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/inspect_registry.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/outline_file.bak.zip +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/path_security.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/permissions.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/permissions_parse.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tool_base.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tool_events.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tool_run_exception.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tool_use_tracker.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tool_utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tools_adapter.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/tools/tools_schema.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito/utils.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito.egg-info/dependency_links.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito.egg-info/entry_points.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito.egg-info/requires.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/janito.egg-info/top_level.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/pyproject.toml +0 -0
- {janito-2.9.0 → janito-2.12.0}/pytest.ini +0 -0
- {janito-2.9.0 → janito-2.12.0}/requirements-dev.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/requirements.txt +0 -0
- {janito-2.9.0 → janito-2.12.0}/setup.cfg +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/adapters/local/get_file_outline/test_core_outline.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/adapters/local/test_read_files.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/test_cli_list_models.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/test_cli_list_providers.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/test_cli_list_providers_moonshotai.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/test_cli_version.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/test_disabled_tools.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tests/test_provider_moonshotai.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tools/release.py +0 -0
- {janito-2.9.0 → janito-2.12.0}/tox.ini +0 -0
@@ -3,23 +3,47 @@
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
4
4
|
|
5
5
|
## [Unreleased]
|
6
|
+
|
7
|
+
## [2.11.0] - 2025-08-04
|
8
|
+
|
9
|
+
### Added
|
10
|
+
|
11
|
+
- **Z.AI Provider**: Added complete support for Z.AI with GLM-4.5, GLM-4, and GLM-4V models
|
12
|
+
- GLM-4.5: 128k context with thinking support for advanced reasoning
|
13
|
+
- GLM-4: General-purpose model with 128k context
|
14
|
+
- GLM-4V: Vision model for image understanding with 128k context
|
15
|
+
- **Alibaba Cloud Provider**: Added support for Alibaba Cloud's Qwen models
|
16
|
+
- qwen-turbo, qwen-plus, qwen-max, and qwen3-coder-plus models
|
17
|
+
- Updated supported providers documentation to include new Z.AI and Alibaba Cloud providers
|
18
|
+
|
6
19
|
### Changed
|
7
|
-
- Updated project URLs, author email, and documentation for migration to ikignosis organization.
|
8
|
-
- Updated repository links in documentation and configuration files to point to ikignosis GitHub organization.
|
9
|
-
- Changed maintainer email in provider modules to janito@ikignosis.org.
|
10
|
-
- Updated homepage and repo_url in pyproject.toml and mkdocs.yml to new organization URLs.
|
11
20
|
|
21
|
+
- Enhanced provider registry with new visual indicators and improved model listing
|
22
|
+
- Updated documentation to reflect new provider additions and model availability
|
23
|
+
|
24
|
+
### Removed
|
25
|
+
|
26
|
+
- Removed deprecated PROVIDERS.md file from janito/docs (content merged into supported-providers-models.md)
|
27
|
+
|
28
|
+
## [2.9.0] - 2025-07-16
|
12
29
|
### Added
|
13
|
-
- Added
|
14
|
-
- Added
|
15
|
-
- Added privilege status message utility (`_priv_status.py`).
|
30
|
+
- Added new `kimi-k2-turbo-preview` model to MoonshotAI provider
|
31
|
+
- Added visual indicators for default models in provider registry with star icons
|
16
32
|
|
17
|
-
###
|
18
|
-
-
|
33
|
+
### Changed
|
34
|
+
- Updated default MoonshotAI model from `kimi-k2-0711-preview` to `kimi-k2-turbo-preview`
|
35
|
+
- Updated all documentation to reflect new MoonshotAI model names and recommendations
|
36
|
+
- Updated project URLs, author email, and documentation for migration to ikignosis organization
|
37
|
+
- Updated repository links in documentation and configuration files to point to ikignosis GitHub organization
|
38
|
+
- Changed maintainer email in provider modules to janito@ikignosis.org
|
39
|
+
- Updated homepage and repo_url in pyproject.toml and mkdocs.yml to new organization URLs
|
40
|
+
|
41
|
+
### Fixed
|
42
|
+
- Fixed duplicate entries in supported providers documentation
|
43
|
+
- Fixed formatting in CLI command and privilege status modules
|
19
44
|
|
20
45
|
## [2.8.0] - 2025-07-16
|
21
46
|
### Added
|
22
|
-
- **Groq provider**: New provider with support for moonshotai/kimi-k2-instruct model.
|
23
47
|
- **Parallel tool calls**: Enabled for OpenAI provider when tools are available.
|
24
48
|
- **No-tools mode**: New CLI option to disable all tool usage.
|
25
49
|
- **Disabled tools functionality**: Support for selectively disabling specific tools.
|
@@ -32,6 +32,7 @@ You can use these commands at any time (prefix with `/` or just type the name):
|
|
32
32
|
| `/lang <code>` | Change the interface language (e.g., `/lang pt`, `/lang en`) |
|
33
33
|
| `/clear` | Clear the terminal screen |
|
34
34
|
| `/multi` | Enter multiline input mode (write multi-line text, Esc+Enter) |
|
35
|
+
| `--multi` (CLI arg) | Start chat mode with multiline input as default (no need for /multi) |
|
35
36
|
| `/config` | Show or set configuration (see: `/config show`, `/config set local|global key=value`) |
|
36
37
|
| `/edit <filename>` | Open a file in the browser-based editor |
|
37
38
|
| `/view` | Print the current LLM conversation history |
|
@@ -35,7 +35,8 @@ janito -p moonshotai "Your prompt here"
|
|
35
35
|
|
36
36
|
Janito supports the following MoonshotAI models:
|
37
37
|
|
38
|
-
- `kimi-k2-
|
38
|
+
- `kimi-k2-turbo-preview` (default) - Advanced reasoning model with 128k context window
|
39
|
+
- `kimi-k2-turbo-preview` - Turbo version of the advanced reasoning model with 128k context window
|
39
40
|
- `kimi-k1-8k` - Standard model with 8k context window
|
40
41
|
- `kimi-k1-32k` - Standard model with 32k context window
|
41
42
|
- `kimi-k1-128k` - Standard model with 128k context window
|
@@ -20,6 +20,7 @@ These options are useful for one-off runs, scripting, or experimentation. They t
|
|
20
20
|
| `--verbose-agent` | Print info messages for agent event and message part handling. |
|
21
21
|
| `-z`, `--zero` | IDE zero mode: disables system prompt & all tools for raw LLM interaction |
|
22
22
|
| `-u`, `--unrestricted-paths` | Disable path security: allow tool arguments to use any file/directory path (DANGEROUS). See [Security](../security.md) for details. |
|
23
|
+
| `--multi` | Start chat mode with multiline input as default (no need for /multi command) |
|
23
24
|
| `-r`, `--read` | Enable tools that require read permissions (default: off) |
|
24
25
|
| `-w`, `--write` | Enable tools that require write permissions (default: off) |
|
25
26
|
| `-x`, `--exec` | Enable execution/run tools (allows running code or shell tools from the CLI). (default: off) |
|
@@ -50,7 +51,7 @@ janito [options] [prompt]
|
|
50
51
|
janito -p openai -m gpt-3.5-turbo "Your prompt here"
|
51
52
|
janito -c myproject -p openai "Prompt for my project (uses ~/.janito/configs/myproject.json)"
|
52
53
|
janito --list-tools
|
53
|
-
janito --
|
54
|
+
janito --multi # Start chat mode with multiline input as default
|
54
55
|
janito -u -x --read --write "Run a tool with unrestricted paths (DANGEROUS)"
|
55
56
|
```
|
56
57
|
|
@@ -3,26 +3,46 @@
|
|
3
3
|
This page lists the supported providers and their available models.
|
4
4
|
|
5
5
|
## OpenAI
|
6
|
+
|
6
7
|
- GPT-3.5 Turbo
|
7
8
|
- GPT-4
|
8
9
|
- GPT-4 Turbo
|
9
10
|
|
10
11
|
## Google
|
12
|
+
|
11
13
|
- Gemini Pro
|
12
14
|
- Gemini 1.5 Pro
|
13
15
|
|
14
16
|
## Anthropic
|
17
|
+
|
15
18
|
- Claude 2
|
16
19
|
- Claude 3 Opus
|
17
20
|
- Claude 3 Sonnet
|
18
21
|
- Claude 3 Haiku
|
19
22
|
|
20
23
|
## MoonshotAI
|
21
|
-
- Moonshot-v1-8k
|
22
|
-
- Moonshot-v1-32k
|
23
24
|
|
24
|
-
|
25
|
+
- kimi-k2-turbo-preview
|
26
|
+
- kimi-k2-turbo-preview
|
27
|
+
- kimi-k1-8k
|
28
|
+
- kimi-k1-32k
|
29
|
+
- kimi-k1-128k
|
30
|
+
|
25
31
|
- Llama-3-8b-8192
|
26
32
|
- Llama-3-70b-8192
|
27
33
|
|
34
|
+
## Alibaba
|
35
|
+
|
36
|
+
- qwen-turbo
|
37
|
+
- qwen-plus
|
38
|
+
- qwen-max
|
39
|
+
- qwen3-coder-plus
|
40
|
+
- qwen3-coder-480b-a35b-instruct
|
41
|
+
|
42
|
+
## Z.AI
|
43
|
+
|
44
|
+
- glm-4.5
|
45
|
+
- glm-4
|
46
|
+
- glm-4v
|
47
|
+
|
28
48
|
<!-- Removed links to model_info.py files for all providers to avoid broken references. -->
|
@@ -0,0 +1,149 @@
|
|
1
|
+
# Janito CLI
|
2
|
+
|
3
|
+
A powerful command-line tool for running LLM-powered workflows with built-in tool execution capabilities.
|
4
|
+
|
5
|
+
## Quick Start
|
6
|
+
|
7
|
+
### Installation
|
8
|
+
|
9
|
+
```bash
|
10
|
+
pip install janito
|
11
|
+
```
|
12
|
+
|
13
|
+
### First-Time Setup
|
14
|
+
|
15
|
+
1. **Get your API key**: Sign up at [Moonshot AI](https://platform.moonshot.cn/) and get your API key
|
16
|
+
2. **Set your API key**:
|
17
|
+
```bash
|
18
|
+
janito --set-api-key YOUR_MOONSHOT_API_KEY -p moonshotai
|
19
|
+
```
|
20
|
+
|
21
|
+
### Basic Usage
|
22
|
+
|
23
|
+
**MoonshotAI (Recommended - Default Provider)**
|
24
|
+
```bash
|
25
|
+
# Using the default provider (moonshotai) and model
|
26
|
+
janito "Create a Python script that reads a CSV file"
|
27
|
+
|
28
|
+
# Using a specific MoonshotAI model
|
29
|
+
janito -m kimi-k1-8k "Explain quantum computing"
|
30
|
+
```
|
31
|
+
|
32
|
+
**Other Providers**
|
33
|
+
```bash
|
34
|
+
# OpenAI
|
35
|
+
janito -p openai -m gpt-4 "Write a React component"
|
36
|
+
|
37
|
+
# Anthropic
|
38
|
+
janito -p anthropic -m claude-3-5-sonnet-20241022 "Analyze this code"
|
39
|
+
|
40
|
+
# Google
|
41
|
+
janito -p google -m gemini-2.0-flash-exp "Generate unit tests"
|
42
|
+
```
|
43
|
+
|
44
|
+
### Interactive Chat Mode
|
45
|
+
|
46
|
+
Start an interactive session:
|
47
|
+
```bash
|
48
|
+
janito --chat
|
49
|
+
```
|
50
|
+
|
51
|
+
In chat mode, you can:
|
52
|
+
|
53
|
+
- Have multi-turn conversations
|
54
|
+
- Execute code and commands
|
55
|
+
- Read and write files
|
56
|
+
- Use built-in tools
|
57
|
+
|
58
|
+
### Available Commands
|
59
|
+
|
60
|
+
- `janito --list-providers` - List all supported providers
|
61
|
+
- `janito --list-models` - List all available models
|
62
|
+
- `janito --list-tools` - List available tools
|
63
|
+
- `janito --show-config` - Show current configuration
|
64
|
+
|
65
|
+
### Configuration
|
66
|
+
|
67
|
+
Set default provider and model:
|
68
|
+
```bash
|
69
|
+
janito --set provider=moonshotai
|
70
|
+
janito --set model=kimi-k1-8k
|
71
|
+
```
|
72
|
+
|
73
|
+
## Providers
|
74
|
+
|
75
|
+
### MoonshotAI (Recommended)
|
76
|
+
|
77
|
+
- **Models**: kimi-k1-8k, kimi-k1-32k, kimi-k1-128k, kimi-k2-turbo-preview
|
78
|
+
- **Strengths**: Excellent Chinese/English support, competitive pricing, fast responses
|
79
|
+
- **Setup**: Get API key from [Moonshot AI Platform](https://platform.moonshot.cn/)
|
80
|
+
|
81
|
+
### OpenAI
|
82
|
+
|
83
|
+
- **Models**: gpt-4, gpt-4-turbo, gpt-3.5-turbo
|
84
|
+
- **Setup**: Get API key from [OpenAI Platform](https://platform.openai.com/)
|
85
|
+
|
86
|
+
### Anthropic
|
87
|
+
|
88
|
+
- **Models**: claude-3-5-sonnet-20241022, claude-3-opus-20240229
|
89
|
+
- **Setup**: Get API key from [Anthropic Console](https://console.anthropic.com/)
|
90
|
+
|
91
|
+
### Google
|
92
|
+
|
93
|
+
- **Models**: gemini-2.0-flash-exp, gemini-1.5-pro
|
94
|
+
- **Setup**: Get API key from [Google AI Studio](https://makersuite.google.com/)
|
95
|
+
|
96
|
+
## Advanced Features
|
97
|
+
|
98
|
+
### Tool Usage
|
99
|
+
|
100
|
+
Janito includes powerful built-in tools for:
|
101
|
+
|
102
|
+
- File operations (read, write, search)
|
103
|
+
- Code execution
|
104
|
+
- Web scraping
|
105
|
+
- System commands
|
106
|
+
- And more...
|
107
|
+
|
108
|
+
### Profiles and Roles
|
109
|
+
Use predefined system prompts:
|
110
|
+
```bash
|
111
|
+
janito --profile developer "Create a REST API"
|
112
|
+
janito --role python-expert "Optimize this algorithm"
|
113
|
+
```
|
114
|
+
|
115
|
+
### Environment Variables
|
116
|
+
You can also configure via environment variables:
|
117
|
+
```bash
|
118
|
+
export MOONSHOTAI_API_KEY=your_key_here
|
119
|
+
export JANITO_PROVIDER=moonshotai
|
120
|
+
export JANITO_MODEL=kimi-k1-8k
|
121
|
+
```
|
122
|
+
|
123
|
+
## Examples
|
124
|
+
|
125
|
+
### Code Generation
|
126
|
+
```bash
|
127
|
+
janito "Create a Python FastAPI application with user authentication"
|
128
|
+
```
|
129
|
+
|
130
|
+
### File Analysis
|
131
|
+
```bash
|
132
|
+
janito "Analyze the performance bottlenecks in my_app.py"
|
133
|
+
```
|
134
|
+
|
135
|
+
### Data Processing
|
136
|
+
```bash
|
137
|
+
janito "Process this CSV file and generate summary statistics"
|
138
|
+
```
|
139
|
+
|
140
|
+
### Web Development
|
141
|
+
```bash
|
142
|
+
janito "Create a responsive landing page with Tailwind CSS"
|
143
|
+
```
|
144
|
+
|
145
|
+
## Support
|
146
|
+
|
147
|
+
- **Documentation**: Check individual provider directories for detailed setup guides
|
148
|
+
- **Issues**: Report bugs and feature requests on GitHub
|
149
|
+
- **Discord**: Join our community for help and discussions
|
@@ -52,8 +52,8 @@ class ChatScriptRunner:
|
|
52
52
|
inputs: List[str],
|
53
53
|
*,
|
54
54
|
console: Optional[Console] = None,
|
55
|
-
provider: str = "
|
56
|
-
model: str = "
|
55
|
+
provider: str = "moonshotai",
|
56
|
+
model: str = "kimi-k1-8k",
|
57
57
|
use_real_agent: bool = True,
|
58
58
|
**chat_session_kwargs,
|
59
59
|
) -> None:
|
@@ -109,6 +109,9 @@ class ChatSession:
|
|
109
109
|
)
|
110
110
|
self._support = False
|
111
111
|
|
112
|
+
# Check if multi-line mode should be enabled by default
|
113
|
+
self.multi_line_mode = getattr(args, "multi", False) if args else False
|
114
|
+
|
112
115
|
def _select_profile_and_role(self, args, role):
|
113
116
|
profile = getattr(args, "profile", None) if args is not None else None
|
114
117
|
role_arg = getattr(args, "role", None) if args is not None else None
|
@@ -213,6 +216,11 @@ class ChatSession:
|
|
213
216
|
f"[green]Working Dir:[/green] {cwd_display} | {priv_status}"
|
214
217
|
)
|
215
218
|
|
219
|
+
if self.multi_line_mode:
|
220
|
+
self.console.print(
|
221
|
+
"[blue]Multi-line input mode enabled (Esc+Enter or Ctrl+D to submit)[/blue]"
|
222
|
+
)
|
223
|
+
|
216
224
|
from janito.cli.chat_mode.shell.commands._priv_check import (
|
217
225
|
user_has_any_privileges,
|
218
226
|
)
|
@@ -305,6 +313,7 @@ class ChatSession:
|
|
305
313
|
bottom_toolbar=lambda: get_toolbar_func(
|
306
314
|
self.performance_collector, 0, self.shell_state
|
307
315
|
)(),
|
316
|
+
multiline=self.multi_line_mode,
|
308
317
|
)
|
309
318
|
|
310
319
|
def _handle_input(self, session):
|
@@ -0,0 +1,51 @@
|
|
1
|
+
"""
|
2
|
+
Module for guessing the provider based on model names.
|
3
|
+
"""
|
4
|
+
|
5
|
+
from janito.providers.registry import LLMProviderRegistry
|
6
|
+
|
7
|
+
|
8
|
+
def guess_provider_from_model(model_name: str) -> str:
|
9
|
+
"""
|
10
|
+
Guess the provider based on the model name.
|
11
|
+
|
12
|
+
Args:
|
13
|
+
model_name: The name of the model to guess the provider for
|
14
|
+
|
15
|
+
Returns:
|
16
|
+
The provider name if a match is found, None otherwise
|
17
|
+
"""
|
18
|
+
if not model_name:
|
19
|
+
return None
|
20
|
+
|
21
|
+
model_name = model_name.lower()
|
22
|
+
|
23
|
+
# Check each provider's models
|
24
|
+
for provider_name in LLMProviderRegistry.list_providers():
|
25
|
+
provider_class = LLMProviderRegistry.get(provider_name)
|
26
|
+
if not provider_class:
|
27
|
+
continue
|
28
|
+
|
29
|
+
# Get model specs for this provider
|
30
|
+
try:
|
31
|
+
if hasattr(provider_class, 'MODEL_SPECS'):
|
32
|
+
model_specs = provider_class.MODEL_SPECS
|
33
|
+
for spec_model_name in model_specs.keys():
|
34
|
+
if spec_model_name.lower() == model_name:
|
35
|
+
return provider_name
|
36
|
+
|
37
|
+
# Handle special cases like moonshotai
|
38
|
+
if provider_name == "moonshotai":
|
39
|
+
try:
|
40
|
+
from janito.providers.moonshotai.model_info import MOONSHOTAI_MODEL_SPECS
|
41
|
+
for spec_model_name in MOONSHOTAI_MODEL_SPECS.keys():
|
42
|
+
if spec_model_name.lower() == model_name:
|
43
|
+
return "moonshotai"
|
44
|
+
except ImportError:
|
45
|
+
pass
|
46
|
+
|
47
|
+
except Exception:
|
48
|
+
# Skip providers that have issues accessing model specs
|
49
|
+
continue
|
50
|
+
|
51
|
+
return None
|
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
from janito.llm.driver_config import LLMDriverConfig
|
4
4
|
from janito.provider_config import get_config_provider
|
5
|
+
from janito.cli.core.model_guesser import guess_provider_from_model as _guess_provider_from_model
|
5
6
|
from janito.cli.verbose_output import print_verbose_info
|
6
7
|
|
7
8
|
|
@@ -14,6 +15,17 @@ def _choose_provider(args):
|
|
14
15
|
"Default provider", provider, style="magenta", align_content=True
|
15
16
|
)
|
16
17
|
elif provider is None:
|
18
|
+
# Try to guess provider based on model name if -m is provided
|
19
|
+
model = getattr(args, "model", None)
|
20
|
+
if model:
|
21
|
+
guessed_provider = _guess_provider_from_model(model)
|
22
|
+
if guessed_provider:
|
23
|
+
if getattr(args, "verbose", False):
|
24
|
+
print_verbose_info(
|
25
|
+
"Guessed provider", guessed_provider, style="magenta", align_content=True
|
26
|
+
)
|
27
|
+
return guessed_provider
|
28
|
+
|
17
29
|
print(
|
18
30
|
"Error: No provider selected and no provider found in config. Please set a provider using '-p PROVIDER', '--set provider=name', or configure a provider."
|
19
31
|
)
|
@@ -191,4 +203,4 @@ def handle_runner(
|
|
191
203
|
|
192
204
|
|
193
205
|
def get_prompt_mode(args):
|
194
|
-
return "single_shot" if getattr(args, "user_prompt", None) else "chat_mode"
|
206
|
+
return "single_shot" if getattr(args, "user_prompt", None) else "chat_mode"
|
@@ -21,6 +21,13 @@ definition = [
|
|
21
21
|
"help": "Disable path security: allow tool arguments to use any file/directory path (DANGEROUS)",
|
22
22
|
},
|
23
23
|
),
|
24
|
+
(
|
25
|
+
["--multi"],
|
26
|
+
{
|
27
|
+
"action": "store_true",
|
28
|
+
"help": "Start chat mode with multi-line input as default (no need for /multi command)",
|
29
|
+
},
|
30
|
+
),
|
24
31
|
(
|
25
32
|
["--profile"],
|
26
33
|
{
|
@@ -214,7 +221,7 @@ class JanitoCLI:
|
|
214
221
|
|
215
222
|
self.parser = argparse.ArgumentParser(
|
216
223
|
description="Janito CLI - A tool for running LLM-powered workflows from the command line."
|
217
|
-
"\n\nExample usage: janito -p
|
224
|
+
"\n\nExample usage: janito -p moonshotai -m kimi-k1-8k 'Your prompt here'\n\n"
|
218
225
|
"Use -m or --model to set the model for the session."
|
219
226
|
)
|
220
227
|
self._define_args()
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# Getting Started with Janito
|
2
|
+
|
3
|
+
This guide will help you set up Janito CLI quickly and start using it with MoonshotAI as your default provider.
|
4
|
+
|
5
|
+
## Quick Setup (2 minutes)
|
6
|
+
|
7
|
+
### 1. Install Janito
|
8
|
+
```bash
|
9
|
+
pip install janito
|
10
|
+
```
|
11
|
+
|
12
|
+
### 2. Get Your MoonshotAI API Key
|
13
|
+
|
14
|
+
1. Go to [Moonshot AI Platform](https://platform.moonshot.cn/)
|
15
|
+
2. Sign up for an account
|
16
|
+
3. Navigate to API Keys section
|
17
|
+
4. Create a new API key
|
18
|
+
|
19
|
+
### 3. Configure Janito
|
20
|
+
```bash
|
21
|
+
# Set MoonshotAI as your default provider
|
22
|
+
janito --set-api-key YOUR_API_KEY -p moonshotai
|
23
|
+
|
24
|
+
# Verify it's working
|
25
|
+
janito "Hello, can you introduce yourself?"
|
26
|
+
```
|
27
|
+
|
28
|
+
## Your First Commands
|
29
|
+
|
30
|
+
### Basic Usage
|
31
|
+
```bash
|
32
|
+
# Simple prompt
|
33
|
+
janito "Create a Python script to calculate fibonacci numbers"
|
34
|
+
|
35
|
+
# With specific model
|
36
|
+
janito -m kimi-k1-8k "Explain machine learning in simple terms"
|
37
|
+
|
38
|
+
# Interactive chat mode
|
39
|
+
janito --chat
|
40
|
+
```
|
41
|
+
|
42
|
+
### Working with Files
|
43
|
+
```bash
|
44
|
+
# Analyze a file
|
45
|
+
janito "Analyze the performance of my_app.py" < my_app.py
|
46
|
+
|
47
|
+
# Generate code in a specific directory
|
48
|
+
janito -W ./my_project "Create a REST API with FastAPI"
|
49
|
+
```
|
50
|
+
|
51
|
+
## Configuration Options
|
52
|
+
|
53
|
+
### Set as Default Provider
|
54
|
+
```bash
|
55
|
+
# Make MoonshotAI your permanent default
|
56
|
+
janito --set provider=moonshotai
|
57
|
+
janito --set model=kimi-k1-8k
|
58
|
+
```
|
59
|
+
|
60
|
+
### Environment Variables
|
61
|
+
You can also use environment variables:
|
62
|
+
```bash
|
63
|
+
export MOONSHOTAI_API_KEY=your_key_here
|
64
|
+
export JANITO_PROVIDER=moonshotai
|
65
|
+
export JANITO_MODEL=kimi-k1-8k
|
66
|
+
```
|
67
|
+
|
68
|
+
## MoonshotAI Models
|
69
|
+
|
70
|
+
Janito supports these MoonshotAI models:
|
71
|
+
|
72
|
+
- **kimi-k1-8k**: Fast responses, good for general tasks
|
73
|
+
- **kimi-k1-32k**: Better for longer contexts
|
74
|
+
- **kimi-k1-128k**: Best for very long documents
|
75
|
+
- **kimi-k2-turbo-preview**: Latest model with enhanced capabilities
|
76
|
+
- **kimi-k2-turbo-preview**: Turbo version of the advanced reasoning model
|
77
|
+
|
78
|
+
## Next Steps
|
79
|
+
|
80
|
+
1. **Explore tools**: Run `janito --list-tools` to see available tools
|
81
|
+
2. **Try chat mode**: Run `janito --chat` for interactive sessions
|
82
|
+
3. **Check examples**: Look at the main README.md for more usage examples
|
83
|
+
4. **Join community**: Get help and share tips with other users
|
84
|
+
|
85
|
+
## Troubleshooting
|
86
|
+
|
87
|
+
### Common Issues
|
88
|
+
|
89
|
+
**"Provider not found" error**
|
90
|
+
```bash
|
91
|
+
# Check available providers
|
92
|
+
janito --list-providers
|
93
|
+
|
94
|
+
# Re-register MoonshotAI
|
95
|
+
janito --set-api-key YOUR_KEY -p moonshotai
|
96
|
+
```
|
97
|
+
|
98
|
+
**"Model not available" error**
|
99
|
+
```bash
|
100
|
+
# List available MoonshotAI models
|
101
|
+
janito -p moonshotai --list-models
|
102
|
+
```
|
103
|
+
|
104
|
+
**API key issues**
|
105
|
+
```bash
|
106
|
+
# Check current configuration
|
107
|
+
janito --show-config
|
108
|
+
|
109
|
+
# Reset API key
|
110
|
+
janito --set-api-key NEW_KEY -p moonshotai
|
111
|
+
```
|
112
|
+
|
113
|
+
### Getting Help
|
114
|
+
|
115
|
+
- Check the main README.md for comprehensive documentation
|
116
|
+
- Use `janito --help` for command-line options
|
117
|
+
- Visit our GitHub repository for issues and discussions
|
@@ -63,6 +63,13 @@ class AzureOpenAIModelDriver(OpenAIModelDriver):
|
|
63
63
|
|
64
64
|
def _instantiate_openai_client(self, config):
|
65
65
|
try:
|
66
|
+
if not config.api_key:
|
67
|
+
provider_name = getattr(self, 'provider_name', 'Azure OpenAI')
|
68
|
+
print(f"[ERROR] No API key found for provider '{provider_name}'. Please set the API key using:")
|
69
|
+
print(f" janito --set-api-key YOUR_API_KEY -p azure-openai")
|
70
|
+
print(f"Or set the AZURE_OPENAI_API_KEY environment variable.")
|
71
|
+
raise ValueError(f"API key is required for provider '{provider_name}'")
|
72
|
+
|
66
73
|
from openai import AzureOpenAI
|
67
74
|
|
68
75
|
api_key_display = str(config.api_key)
|
@@ -44,9 +44,10 @@ class OpenAIModelDriver(LLMDriver):
|
|
44
44
|
|
45
45
|
tool_classes = self.tools_adapter.get_tool_classes()
|
46
46
|
tool_schemas = generate_tool_schemas(tool_classes)
|
47
|
-
|
47
|
+
if tool_schemas: # Only add tools if we have actual schemas
|
48
|
+
api_kwargs["tools"] = tool_schemas
|
48
49
|
except Exception as e:
|
49
|
-
|
50
|
+
# Don't add empty tools array - some providers reject it
|
50
51
|
if hasattr(config, "verbose_api") and config.verbose_api:
|
51
52
|
print(f"[OpenAIModelDriver] Tool schema generation failed: {e}")
|
52
53
|
# OpenAI-specific parameters
|
@@ -246,6 +247,13 @@ class OpenAIModelDriver(LLMDriver):
|
|
246
247
|
|
247
248
|
def _instantiate_openai_client(self, config):
|
248
249
|
try:
|
250
|
+
if not config.api_key:
|
251
|
+
provider_name = getattr(self, 'provider_name', 'OpenAI-compatible')
|
252
|
+
print(f"[ERROR] No API key found for provider '{provider_name}'. Please set the API key using:")
|
253
|
+
print(f" janito --set-api-key YOUR_API_KEY -p {provider_name.lower()}")
|
254
|
+
print(f"Or set the {provider_name.upper()}_API_KEY environment variable.")
|
255
|
+
raise ValueError(f"API key is required for provider '{provider_name}'")
|
256
|
+
|
249
257
|
api_key_display = str(config.api_key)
|
250
258
|
if api_key_display and len(api_key_display) > 8:
|
251
259
|
api_key_display = api_key_display[:4] + "..." + api_key_display[-4:]
|
@@ -0,0 +1 @@
|
|
1
|
+
# Z.AI driver package
|