ocaya 2.14.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.
- ocaya-2.14.0/.github/CODEOWNERS +7 -0
- ocaya-2.14.0/.github/DISCUSSION_TEMPLATE/ideas.yml +46 -0
- ocaya-2.14.0/.github/ISSUE_TEMPLATE/bug-report.yml +59 -0
- ocaya-2.14.0/.github/ISSUE_TEMPLATE/config.yml +11 -0
- ocaya-2.14.0/.github/workflows/build-and-upload.yml +227 -0
- ocaya-2.14.0/.github/workflows/ci.yml +132 -0
- ocaya-2.14.0/.github/workflows/issue-labeler.yml +62 -0
- ocaya-2.14.0/.github/workflows/release.yml +45 -0
- ocaya-2.14.0/.gitignore +208 -0
- ocaya-2.14.0/.kiro/specs/ocaya/.config.kiro +1 -0
- ocaya-2.14.0/.kiro/specs/ocaya/design.md +464 -0
- ocaya-2.14.0/.kiro/specs/ocaya/requirements.md +191 -0
- ocaya-2.14.0/.kiro/specs/ocaya/tasks.md +221 -0
- ocaya-2.14.0/.pre-commit-config.yaml +35 -0
- ocaya-2.14.0/.python-version +1 -0
- ocaya-2.14.0/.typos.toml +7 -0
- ocaya-2.14.0/.vscode/extensions.json +3 -0
- ocaya-2.14.0/.vscode/launch.json +90 -0
- ocaya-2.14.0/.vscode/settings.json +26 -0
- ocaya-2.14.0/AGENTS.md +107 -0
- ocaya-2.14.0/AI_News_June_2026.doc +79 -0
- ocaya-2.14.0/CHANGELOG.md +980 -0
- ocaya-2.14.0/CONTRIBUTING.md +211 -0
- ocaya-2.14.0/LICENSE +201 -0
- ocaya-2.14.0/PKG-INFO +573 -0
- ocaya-2.14.0/README.md +453 -0
- ocaya-2.14.0/action.yml +59 -0
- ocaya-2.14.0/distribution/zed/LICENSE +1 -0
- ocaya-2.14.0/distribution/zed/extension.toml +31 -0
- ocaya-2.14.0/distribution/zed/icons/mistral_vibe.svg +12 -0
- ocaya-2.14.0/docs/README.md +8 -0
- ocaya-2.14.0/docs/acp-setup.md +68 -0
- ocaya-2.14.0/docs/proxy-setup.md +36 -0
- ocaya-2.14.0/flake.lock +133 -0
- ocaya-2.14.0/flake.nix +149 -0
- ocaya-2.14.0/ocaya/__init__.py +13 -0
- ocaya-2.14.0/ocaya/acp/__init__.py +0 -0
- ocaya-2.14.0/ocaya/acp/acp_agent_loop.py +1948 -0
- ocaya-2.14.0/ocaya/acp/acp_logger.py +97 -0
- ocaya-2.14.0/ocaya/acp/commands/__init__.py +5 -0
- ocaya-2.14.0/ocaya/acp/commands/registry.py +89 -0
- ocaya-2.14.0/ocaya/acp/entrypoint.py +112 -0
- ocaya-2.14.0/ocaya/acp/exceptions.py +140 -0
- ocaya-2.14.0/ocaya/acp/session.py +75 -0
- ocaya-2.14.0/ocaya/acp/title.py +69 -0
- ocaya-2.14.0/ocaya/acp/tools/__init__.py +0 -0
- ocaya-2.14.0/ocaya/acp/tools/base.py +53 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/bash.py +168 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/edit.py +114 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/grep.py +79 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/read.py +132 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/skill.py +77 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/task.py +73 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/todo.py +68 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/web_fetch.py +83 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/web_search.py +80 -0
- ocaya-2.14.0/ocaya/acp/tools/builtins/write_file.py +104 -0
- ocaya-2.14.0/ocaya/acp/tools/events.py +8 -0
- ocaya-2.14.0/ocaya/acp/tools/session_update.py +196 -0
- ocaya-2.14.0/ocaya/acp/utils.py +338 -0
- ocaya-2.14.0/ocaya/cli/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/autocompletion/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/autocompletion/base.py +22 -0
- ocaya-2.14.0/ocaya/cli/autocompletion/path_completion.py +177 -0
- ocaya-2.14.0/ocaya/cli/autocompletion/slash_command.py +95 -0
- ocaya-2.14.0/ocaya/cli/cache.py +32 -0
- ocaya-2.14.0/ocaya/cli/cli.py +279 -0
- ocaya-2.14.0/ocaya/cli/clipboard.py +190 -0
- ocaya-2.14.0/ocaya/cli/commands.py +261 -0
- ocaya-2.14.0/ocaya/cli/entrypoint.py +251 -0
- ocaya-2.14.0/ocaya/cli/history_manager.py +105 -0
- ocaya-2.14.0/ocaya/cli/narrator_manager/__init__.py +15 -0
- ocaya-2.14.0/ocaya/cli/narrator_manager/narrator_manager.py +269 -0
- ocaya-2.14.0/ocaya/cli/narrator_manager/narrator_manager_port.py +45 -0
- ocaya-2.14.0/ocaya/cli/narrator_manager/telemetry.py +30 -0
- ocaya-2.14.0/ocaya/cli/plan_offer/adapters/http_whoami_gateway.py +45 -0
- ocaya-2.14.0/ocaya/cli/plan_offer/decide_plan_offer.py +127 -0
- ocaya-2.14.0/ocaya/cli/plan_offer/ports/whoami_gateway.py +67 -0
- ocaya-2.14.0/ocaya/cli/profiler.py +89 -0
- ocaya-2.14.0/ocaya/cli/stderr_guard.py +101 -0
- ocaya-2.14.0/ocaya/cli/terminal_detect.py +83 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/app.py +3395 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/app.tcss +1606 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/constants.py +11 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/external_editor.py +38 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/handlers/__init__.py +5 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/handlers/event_handler.py +269 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/message_queue.py +85 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/notifications/__init__.py +11 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/notifications/adapters/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/notifications/adapters/textual_notification_adapter.py +60 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/notifications/ports/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/notifications/ports/notification_port.py +16 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/quit_manager.py +64 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/recording/__init__.py +5 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/recording/recording_indicator.py +79 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/remote/__init__.py +8 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/remote/remote_session_manager.py +211 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/scheduled_loop_runner.py +99 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/session_exit.py +31 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/approval_app.py +270 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/banner/banner.py +158 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/banner/petit_chat.py +197 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/braille_renderer.py +58 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/__init__.py +7 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/body.py +308 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/completion_manager.py +62 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/completion_popup.py +76 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/container.py +283 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/paste_path.py +117 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/chat_input/text_area.py +445 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/compact.py +43 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/config_app.py +184 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/connector_auth_app.py +227 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/context_progress.py +30 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/debug_console.py +244 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/feedback_bar.py +64 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/feedback_bar_manager.py +23 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/load_more.py +43 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/loading.py +231 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/mcp_app.py +646 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/messages.py +590 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/model_picker.py +75 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/narrator_status.py +65 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/no_markup_static.py +11 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/path_display.py +31 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/proxy_setup_app.py +122 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/question_app.py +562 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/queued_messages.py +97 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/rewind_app.py +147 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/session_picker.py +133 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/spinner.py +194 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/status_message.py +76 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/teleport_message.py +31 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/theme_picker.py +114 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/thinking_picker.py +79 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/tool_widgets.py +368 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/tools.py +216 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/voice_app.py +173 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/widgets/vscode_compat.py +26 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/windowing/__init__.py +29 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/windowing/history.py +115 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/windowing/history_windowing.py +67 -0
- ocaya-2.14.0/ocaya/cli/textual_ui/windowing/state.py +119 -0
- ocaya-2.14.0/ocaya/cli/turn_summary/__init__.py +20 -0
- ocaya-2.14.0/ocaya/cli/turn_summary/noop.py +38 -0
- ocaya-2.14.0/ocaya/cli/turn_summary/port.py +52 -0
- ocaya-2.14.0/ocaya/cli/turn_summary/tracker.py +147 -0
- ocaya-2.14.0/ocaya/cli/turn_summary/utils.py +30 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/__init__.py +47 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/adapters/filesystem_update_cache_repository.py +77 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/adapters/github_update_gateway.py +104 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/adapters/pypi_update_gateway.py +110 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/ports/update_cache_repository.py +16 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/ports/update_gateway.py +53 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/update.py +139 -0
- ocaya-2.14.0/ocaya/cli/update_notifier/whats_new.py +50 -0
- ocaya-2.14.0/ocaya/cli/voice_manager/__init__.py +15 -0
- ocaya-2.14.0/ocaya/cli/voice_manager/telemetry.py +30 -0
- ocaya-2.14.0/ocaya/cli/voice_manager/voice_manager.py +269 -0
- ocaya-2.14.0/ocaya/cli/voice_manager/voice_manager_port.py +58 -0
- ocaya-2.14.0/ocaya/cli/vscode_extension_promo/__init__.py +43 -0
- ocaya-2.14.0/ocaya/cli/vscode_extension_promo/_port.py +14 -0
- ocaya-2.14.0/ocaya/cli/vscode_extension_promo/adapters/__init__.py +0 -0
- ocaya-2.14.0/ocaya/cli/vscode_extension_promo/adapters/filesystem_repository.py +43 -0
- ocaya-2.14.0/ocaya/core/__init__.py +15 -0
- ocaya-2.14.0/ocaya/core/agent_loop.py +1862 -0
- ocaya-2.14.0/ocaya/core/agents/__init__.py +29 -0
- ocaya-2.14.0/ocaya/core/agents/manager.py +185 -0
- ocaya-2.14.0/ocaya/core/agents/models.py +208 -0
- ocaya-2.14.0/ocaya/core/audio_player/__init__.py +21 -0
- ocaya-2.14.0/ocaya/core/audio_player/audio_player.py +130 -0
- ocaya-2.14.0/ocaya/core/audio_player/audio_player_port.py +40 -0
- ocaya-2.14.0/ocaya/core/audio_player/utils.py +12 -0
- ocaya-2.14.0/ocaya/core/audio_recorder/__init__.py +23 -0
- ocaya-2.14.0/ocaya/core/audio_recorder/audio_recorder.py +287 -0
- ocaya-2.14.0/ocaya/core/audio_recorder/audio_recorder_port.py +64 -0
- ocaya-2.14.0/ocaya/core/auth/__init__.py +6 -0
- ocaya-2.14.0/ocaya/core/auth/crypto.py +137 -0
- ocaya-2.14.0/ocaya/core/auth/github.py +184 -0
- ocaya-2.14.0/ocaya/core/autocompletion/__init__.py +0 -0
- ocaya-2.14.0/ocaya/core/autocompletion/completers.py +381 -0
- ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/__init__.py +10 -0
- ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/ignore_rules.py +170 -0
- ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/indexer.py +187 -0
- ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/store.py +188 -0
- ocaya-2.14.0/ocaya/core/autocompletion/file_indexer/watcher.py +75 -0
- ocaya-2.14.0/ocaya/core/autocompletion/fuzzy.py +189 -0
- ocaya-2.14.0/ocaya/core/autocompletion/path_prompt.py +153 -0
- ocaya-2.14.0/ocaya/core/autocompletion/path_prompt_adapter.py +181 -0
- ocaya-2.14.0/ocaya/core/compaction.py +47 -0
- ocaya-2.14.0/ocaya/core/config/__init__.py +131 -0
- ocaya-2.14.0/ocaya/core/config/_settings.py +1176 -0
- ocaya-2.14.0/ocaya/core/config/builder.py +122 -0
- ocaya-2.14.0/ocaya/core/config/harness_files/__init__.py +17 -0
- ocaya-2.14.0/ocaya/core/config/harness_files/_harness_manager.py +266 -0
- ocaya-2.14.0/ocaya/core/config/harness_files/_paths.py +9 -0
- ocaya-2.14.0/ocaya/core/config/layer.py +307 -0
- ocaya-2.14.0/ocaya/core/config/layers/__init__.py +13 -0
- ocaya-2.14.0/ocaya/core/config/layers/environment.py +44 -0
- ocaya-2.14.0/ocaya/core/config/layers/overrides.py +34 -0
- ocaya-2.14.0/ocaya/core/config/layers/project.py +91 -0
- ocaya-2.14.0/ocaya/core/config/layers/user.py +39 -0
- ocaya-2.14.0/ocaya/core/config/orchestrator.py +53 -0
- ocaya-2.14.0/ocaya/core/config/patch.py +101 -0
- ocaya-2.14.0/ocaya/core/config/schema.py +157 -0
- ocaya-2.14.0/ocaya/core/config/types.py +25 -0
- ocaya-2.14.0/ocaya/core/config/vibe_schema.py +242 -0
- ocaya-2.14.0/ocaya/core/data_retention.py +7 -0
- ocaya-2.14.0/ocaya/core/experiments/__init__.py +58 -0
- ocaya-2.14.0/ocaya/core/experiments/_constants.py +15 -0
- ocaya-2.14.0/ocaya/core/experiments/active.py +17 -0
- ocaya-2.14.0/ocaya/core/experiments/client.py +81 -0
- ocaya-2.14.0/ocaya/core/experiments/manager.py +110 -0
- ocaya-2.14.0/ocaya/core/experiments/models.py +79 -0
- ocaya-2.14.0/ocaya/core/experiments/session.py +81 -0
- ocaya-2.14.0/ocaya/core/feedback.py +39 -0
- ocaya-2.14.0/ocaya/core/hooks/__init__.py +0 -0
- ocaya-2.14.0/ocaya/core/hooks/config.py +100 -0
- ocaya-2.14.0/ocaya/core/hooks/executor.py +55 -0
- ocaya-2.14.0/ocaya/core/hooks/manager.py +140 -0
- ocaya-2.14.0/ocaya/core/hooks/models.py +98 -0
- ocaya-2.14.0/ocaya/core/llm/__init__.py +0 -0
- ocaya-2.14.0/ocaya/core/llm/backend/_image.py +38 -0
- ocaya-2.14.0/ocaya/core/llm/backend/anthropic.py +619 -0
- ocaya-2.14.0/ocaya/core/llm/backend/base.py +39 -0
- ocaya-2.14.0/ocaya/core/llm/backend/factory.py +7 -0
- ocaya-2.14.0/ocaya/core/llm/backend/generic.py +443 -0
- ocaya-2.14.0/ocaya/core/llm/backend/mistral.py +442 -0
- ocaya-2.14.0/ocaya/core/llm/backend/openai_responses.py +653 -0
- ocaya-2.14.0/ocaya/core/llm/backend/reasoning_adapter.py +236 -0
- ocaya-2.14.0/ocaya/core/llm/backend/vertex.py +130 -0
- ocaya-2.14.0/ocaya/core/llm/exceptions.py +225 -0
- ocaya-2.14.0/ocaya/core/llm/format.py +185 -0
- ocaya-2.14.0/ocaya/core/llm/types.py +94 -0
- ocaya-2.14.0/ocaya/core/log_reader.py +224 -0
- ocaya-2.14.0/ocaya/core/logger.py +71 -0
- ocaya-2.14.0/ocaya/core/loop.py +250 -0
- ocaya-2.14.0/ocaya/core/middleware.py +266 -0
- ocaya-2.14.0/ocaya/core/nuage/__init__.py +0 -0
- ocaya-2.14.0/ocaya/core/nuage/agent_models.py +26 -0
- ocaya-2.14.0/ocaya/core/nuage/client.py +205 -0
- ocaya-2.14.0/ocaya/core/nuage/events.py +227 -0
- ocaya-2.14.0/ocaya/core/nuage/exceptions.py +46 -0
- ocaya-2.14.0/ocaya/core/nuage/remote_events_source.py +207 -0
- ocaya-2.14.0/ocaya/core/nuage/remote_workflow_event_models.py +137 -0
- ocaya-2.14.0/ocaya/core/nuage/remote_workflow_event_translator.py +1313 -0
- ocaya-2.14.0/ocaya/core/nuage/streaming.py +32 -0
- ocaya-2.14.0/ocaya/core/nuage/workflow.py +44 -0
- ocaya-2.14.0/ocaya/core/output_formatters.py +106 -0
- ocaya-2.14.0/ocaya/core/paths/__init__.py +41 -0
- ocaya-2.14.0/ocaya/core/paths/_agents_home.py +14 -0
- ocaya-2.14.0/ocaya/core/paths/_local_config_files.py +80 -0
- ocaya-2.14.0/ocaya/core/paths/_ocaya_home.py +38 -0
- ocaya-2.14.0/ocaya/core/paths/conventions.py +3 -0
- ocaya-2.14.0/ocaya/core/plan_session.py +42 -0
- ocaya-2.14.0/ocaya/core/programmatic.py +101 -0
- ocaya-2.14.0/ocaya/core/prompts/__init__.py +113 -0
- ocaya-2.14.0/ocaya/core/prompts/agents_doc.md +5 -0
- ocaya-2.14.0/ocaya/core/prompts/cli.md +111 -0
- ocaya-2.14.0/ocaya/core/prompts/cli_2026-05.md +135 -0
- ocaya-2.14.0/ocaya/core/prompts/compact.md +12 -0
- ocaya-2.14.0/ocaya/core/prompts/compact_summary_prefix.md +1 -0
- ocaya-2.14.0/ocaya/core/prompts/dangerous_directory.md +5 -0
- ocaya-2.14.0/ocaya/core/prompts/explore.md +50 -0
- ocaya-2.14.0/ocaya/core/prompts/jarvis.md +64 -0
- ocaya-2.14.0/ocaya/core/prompts/lean.md +159 -0
- ocaya-2.14.0/ocaya/core/prompts/minimal.md +12 -0
- ocaya-2.14.0/ocaya/core/prompts/ocaya.md +63 -0
- ocaya-2.14.0/ocaya/core/prompts/project_context.md +4 -0
- ocaya-2.14.0/ocaya/core/prompts/tests.md +1 -0
- ocaya-2.14.0/ocaya/core/prompts/turn_summary.md +10 -0
- ocaya-2.14.0/ocaya/core/proxy_setup.py +65 -0
- ocaya-2.14.0/ocaya/core/rewind/__init__.py +10 -0
- ocaya-2.14.0/ocaya/core/rewind/manager.py +192 -0
- ocaya-2.14.0/ocaya/core/scratchpad.py +61 -0
- ocaya-2.14.0/ocaya/core/session/image_snapshot.py +56 -0
- ocaya-2.14.0/ocaya/core/session/last_session_pointer.py +132 -0
- ocaya-2.14.0/ocaya/core/session/resume_sessions.py +95 -0
- ocaya-2.14.0/ocaya/core/session/saved_sessions.py +87 -0
- ocaya-2.14.0/ocaya/core/session/session_id.py +34 -0
- ocaya-2.14.0/ocaya/core/session/session_loader.py +292 -0
- ocaya-2.14.0/ocaya/core/session/session_logger.py +456 -0
- ocaya-2.14.0/ocaya/core/session/session_migration.py +41 -0
- ocaya-2.14.0/ocaya/core/session/title_format.py +51 -0
- ocaya-2.14.0/ocaya/core/skills/__init__.py +13 -0
- ocaya-2.14.0/ocaya/core/skills/builtins/__init__.py +6 -0
- ocaya-2.14.0/ocaya/core/skills/builtins/ocaya.py +584 -0
- ocaya-2.14.0/ocaya/core/skills/manager.py +193 -0
- ocaya-2.14.0/ocaya/core/skills/models.py +109 -0
- ocaya-2.14.0/ocaya/core/skills/parser.py +39 -0
- ocaya-2.14.0/ocaya/core/system_prompt.py +394 -0
- ocaya-2.14.0/ocaya/core/telemetry/__init__.py +0 -0
- ocaya-2.14.0/ocaya/core/telemetry/build_metadata.py +67 -0
- ocaya-2.14.0/ocaya/core/telemetry/send.py +368 -0
- ocaya-2.14.0/ocaya/core/telemetry/types.py +54 -0
- ocaya-2.14.0/ocaya/core/teleport/errors.py +9 -0
- ocaya-2.14.0/ocaya/core/teleport/git.py +222 -0
- ocaya-2.14.0/ocaya/core/teleport/nuage.py +137 -0
- ocaya-2.14.0/ocaya/core/teleport/telemetry.py +80 -0
- ocaya-2.14.0/ocaya/core/teleport/teleport.py +196 -0
- ocaya-2.14.0/ocaya/core/teleport/types.py +39 -0
- ocaya-2.14.0/ocaya/core/tools/arity.py +158 -0
- ocaya-2.14.0/ocaya/core/tools/base.py +400 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/ask_user_question.py +132 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/bash.py +538 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/clipboard.py +169 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/edit.py +205 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/exit_plan_mode.py +137 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/grep.py +364 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/open_app.py +153 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/__init__.py +0 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/ask_user_question.md +84 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/bash.md +73 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/edit.md +19 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/grep.md +4 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/read.md +19 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/skill.md +19 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/task.md +24 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/todo.md +199 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/webfetch.md +7 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/websearch.md +25 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/prompts/write_file.md +27 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/read.py +235 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/skill.py +126 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/task.py +190 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/todo.py +129 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/webfetch.py +257 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/websearch.py +178 -0
- ocaya-2.14.0/ocaya/core/tools/builtins/write_file.py +139 -0
- ocaya-2.14.0/ocaya/core/tools/connectors/__init__.py +9 -0
- ocaya-2.14.0/ocaya/core/tools/connectors/connector_registry.py +508 -0
- ocaya-2.14.0/ocaya/core/tools/connectors/counts.py +26 -0
- ocaya-2.14.0/ocaya/core/tools/manager.py +455 -0
- ocaya-2.14.0/ocaya/core/tools/mcp/__init__.py +33 -0
- ocaya-2.14.0/ocaya/core/tools/mcp/registry.py +181 -0
- ocaya-2.14.0/ocaya/core/tools/mcp/tools.py +468 -0
- ocaya-2.14.0/ocaya/core/tools/mcp_sampling.py +126 -0
- ocaya-2.14.0/ocaya/core/tools/mcp_settings.py +75 -0
- ocaya-2.14.0/ocaya/core/tools/permissions.py +68 -0
- ocaya-2.14.0/ocaya/core/tools/ui.py +121 -0
- ocaya-2.14.0/ocaya/core/tools/utils.py +125 -0
- ocaya-2.14.0/ocaya/core/tracing.py +137 -0
- ocaya-2.14.0/ocaya/core/transcribe/__init__.py +23 -0
- ocaya-2.14.0/ocaya/core/transcribe/factory.py +19 -0
- ocaya-2.14.0/ocaya/core/transcribe/mistral_transcribe_client.py +85 -0
- ocaya-2.14.0/ocaya/core/transcribe/transcribe_client_port.py +44 -0
- ocaya-2.14.0/ocaya/core/trusted_folders.py +174 -0
- ocaya-2.14.0/ocaya/core/tts/__init__.py +7 -0
- ocaya-2.14.0/ocaya/core/tts/factory.py +15 -0
- ocaya-2.14.0/ocaya/core/tts/mistral_tts_client.py +58 -0
- ocaya-2.14.0/ocaya/core/tts/tts_client_port.py +19 -0
- ocaya-2.14.0/ocaya/core/types.py +589 -0
- ocaya-2.14.0/ocaya/core/utils/__init__.py +73 -0
- ocaya-2.14.0/ocaya/core/utils/async_subprocess.py +65 -0
- ocaya-2.14.0/ocaya/core/utils/concurrency.py +59 -0
- ocaya-2.14.0/ocaya/core/utils/display.py +19 -0
- ocaya-2.14.0/ocaya/core/utils/http.py +59 -0
- ocaya-2.14.0/ocaya/core/utils/io.py +216 -0
- ocaya-2.14.0/ocaya/core/utils/matching.py +35 -0
- ocaya-2.14.0/ocaya/core/utils/merge.py +115 -0
- ocaya-2.14.0/ocaya/core/utils/paths.py +42 -0
- ocaya-2.14.0/ocaya/core/utils/platform.py +45 -0
- ocaya-2.14.0/ocaya/core/utils/retry.py +138 -0
- ocaya-2.14.0/ocaya/core/utils/slug.py +113 -0
- ocaya-2.14.0/ocaya/core/utils/tags.py +80 -0
- ocaya-2.14.0/ocaya/core/utils/time.py +7 -0
- ocaya-2.14.0/ocaya/core/utils/tokens.py +29 -0
- ocaya-2.14.0/ocaya/setup/auth/__init__.py +39 -0
- ocaya-2.14.0/ocaya/setup/auth/api_key_persistence.py +78 -0
- ocaya-2.14.0/ocaya/setup/auth/auth_state.py +151 -0
- ocaya-2.14.0/ocaya/setup/auth/browser_sign_in.py +212 -0
- ocaya-2.14.0/ocaya/setup/auth/browser_sign_in_gateway.py +55 -0
- ocaya-2.14.0/ocaya/setup/auth/http_browser_sign_in_gateway.py +355 -0
- ocaya-2.14.0/ocaya/setup/onboarding/__init__.py +152 -0
- ocaya-2.14.0/ocaya/setup/onboarding/base.py +14 -0
- ocaya-2.14.0/ocaya/setup/onboarding/context.py +219 -0
- ocaya-2.14.0/ocaya/setup/onboarding/gradient_text.py +30 -0
- ocaya-2.14.0/ocaya/setup/onboarding/onboarding.tcss +453 -0
- ocaya-2.14.0/ocaya/setup/onboarding/screens/__init__.py +15 -0
- ocaya-2.14.0/ocaya/setup/onboarding/screens/api_key.py +135 -0
- ocaya-2.14.0/ocaya/setup/onboarding/screens/auth_method.py +123 -0
- ocaya-2.14.0/ocaya/setup/onboarding/screens/browser_sign_in.py +534 -0
- ocaya-2.14.0/ocaya/setup/onboarding/screens/theme_selection.py +141 -0
- ocaya-2.14.0/ocaya/setup/onboarding/screens/welcome.py +117 -0
- ocaya-2.14.0/ocaya/setup/trusted_folders/trust_folder_dialog.py +306 -0
- ocaya-2.14.0/ocaya/setup/trusted_folders/trust_folder_dialog.tcss +170 -0
- ocaya-2.14.0/ocaya/whats_new.md +4 -0
- ocaya-2.14.0/ocaya-acp.spec +74 -0
- ocaya-2.14.0/ocaya.spec +72 -0
- ocaya-2.14.0/pyinstaller/runtime_hook_truststore.py +6 -0
- ocaya-2.14.0/pyproject.toml +262 -0
- ocaya-2.14.0/scripts/README.md +37 -0
- ocaya-2.14.0/scripts/bump_version.py +240 -0
- ocaya-2.14.0/scripts/install.sh +187 -0
- ocaya-2.14.0/scripts/prepare_release.py +462 -0
- ocaya-2.14.0/tests/__init__.py +5 -0
- ocaya-2.14.0/tests/acp/conftest.py +142 -0
- ocaya-2.14.0/tests/acp/smoke_binary.py +284 -0
- ocaya-2.14.0/tests/acp/test_acp.py +1017 -0
- ocaya-2.14.0/tests/acp/test_acp_disabled_tools_merge.py +35 -0
- ocaya-2.14.0/tests/acp/test_acp_entrypoint_smoke.py +350 -0
- ocaya-2.14.0/tests/acp/test_acp_hooks.py +171 -0
- ocaya-2.14.0/tests/acp/test_acp_title.py +112 -0
- ocaya-2.14.0/tests/acp/test_agent_thought.py +161 -0
- ocaya-2.14.0/tests/acp/test_auth_status.py +271 -0
- ocaya-2.14.0/tests/acp/test_authenticate.py +387 -0
- ocaya-2.14.0/tests/acp/test_bash.py +525 -0
- ocaya-2.14.0/tests/acp/test_close_session.py +129 -0
- ocaya-2.14.0/tests/acp/test_commands.py +345 -0
- ocaya-2.14.0/tests/acp/test_compact_session_updates.py +89 -0
- ocaya-2.14.0/tests/acp/test_content.py +147 -0
- ocaya-2.14.0/tests/acp/test_edit.py +331 -0
- ocaya-2.14.0/tests/acp/test_fork_session.py +192 -0
- ocaya-2.14.0/tests/acp/test_initialize.py +158 -0
- ocaya-2.14.0/tests/acp/test_list_sessions.py +242 -0
- ocaya-2.14.0/tests/acp/test_load_session.py +506 -0
- ocaya-2.14.0/tests/acp/test_message_id.py +156 -0
- ocaya-2.14.0/tests/acp/test_multi_session.py +117 -0
- ocaya-2.14.0/tests/acp/test_new_session.py +163 -0
- ocaya-2.14.0/tests/acp/test_proxy_setup_acp.py +418 -0
- ocaya-2.14.0/tests/acp/test_read.py +239 -0
- ocaya-2.14.0/tests/acp/test_session.py +155 -0
- ocaya-2.14.0/tests/acp/test_session_auto_title.py +92 -0
- ocaya-2.14.0/tests/acp/test_session_delete.py +177 -0
- ocaya-2.14.0/tests/acp/test_session_set_title.py +327 -0
- ocaya-2.14.0/tests/acp/test_set_config_option.py +401 -0
- ocaya-2.14.0/tests/acp/test_set_mode.py +201 -0
- ocaya-2.14.0/tests/acp/test_set_model.py +306 -0
- ocaya-2.14.0/tests/acp/test_telemetry_notification.py +112 -0
- ocaya-2.14.0/tests/acp/test_todo.py +69 -0
- ocaya-2.14.0/tests/acp/test_tool_call_session_update.py +42 -0
- ocaya-2.14.0/tests/acp/test_tool_field_meta.py +298 -0
- ocaya-2.14.0/tests/acp/test_usage_update.py +259 -0
- ocaya-2.14.0/tests/acp/test_utils.py +126 -0
- ocaya-2.14.0/tests/acp/test_write_file.py +335 -0
- ocaya-2.14.0/tests/audio_player/test_audio_player.py +206 -0
- ocaya-2.14.0/tests/audio_recorder/test_audio_recorder.py +451 -0
- ocaya-2.14.0/tests/autocompletion/test_file_indexer.py +349 -0
- ocaya-2.14.0/tests/autocompletion/test_fuzzy.py +96 -0
- ocaya-2.14.0/tests/autocompletion/test_path_completer_fuzzy.py +350 -0
- ocaya-2.14.0/tests/autocompletion/test_path_completer_recursive.py +69 -0
- ocaya-2.14.0/tests/autocompletion/test_path_completion_controller.py +258 -0
- ocaya-2.14.0/tests/autocompletion/test_path_prompt.py +120 -0
- ocaya-2.14.0/tests/autocompletion/test_path_prompt_image.py +70 -0
- ocaya-2.14.0/tests/autocompletion/test_path_prompt_transformer.py +142 -0
- ocaya-2.14.0/tests/autocompletion/test_slash_command_controller.py +257 -0
- ocaya-2.14.0/tests/autocompletion/test_ui_chat_autocompletion.py +341 -0
- ocaya-2.14.0/tests/backend/__init__.py +0 -0
- ocaya-2.14.0/tests/backend/data/__init__.py +6 -0
- ocaya-2.14.0/tests/backend/data/fireworks.py +153 -0
- ocaya-2.14.0/tests/backend/data/mistral.py +150 -0
- ocaya-2.14.0/tests/backend/data/openai_responses.py +520 -0
- ocaya-2.14.0/tests/backend/test_anthropic_adapter.py +536 -0
- ocaya-2.14.0/tests/backend/test_backend.py +697 -0
- ocaya-2.14.0/tests/backend/test_image_encoding_cache.py +68 -0
- ocaya-2.14.0/tests/backend/test_image_mapping.py +146 -0
- ocaya-2.14.0/tests/backend/test_openai_responses_adapter.py +1325 -0
- ocaya-2.14.0/tests/backend/test_reasoning_adapter.py +254 -0
- ocaya-2.14.0/tests/backend/test_ssl_integration.py +142 -0
- ocaya-2.14.0/tests/backend/test_vertex_anthropic_adapter.py +638 -0
- ocaya-2.14.0/tests/banner/__init__.py +0 -0
- ocaya-2.14.0/tests/banner/test_banner_initial_state.py +230 -0
- ocaya-2.14.0/tests/browser_sign_in/stubs.py +191 -0
- ocaya-2.14.0/tests/browser_sign_in/test_browser_sign_in.py +382 -0
- ocaya-2.14.0/tests/browser_sign_in/test_browser_sign_in_http.py +675 -0
- ocaya-2.14.0/tests/cli/plan_offer/adapters/fake_whoami_gateway.py +32 -0
- ocaya-2.14.0/tests/cli/plan_offer/test_decide_plan_offer.py +283 -0
- ocaya-2.14.0/tests/cli/plan_offer/test_http_whoami_gateway.py +224 -0
- ocaya-2.14.0/tests/cli/smoke_binary.py +416 -0
- ocaya-2.14.0/tests/cli/test_approval_app_grace_period.py +78 -0
- ocaya-2.14.0/tests/cli/test_bell_notifications.py +151 -0
- ocaya-2.14.0/tests/cli/test_braille_renderer.py +114 -0
- ocaya-2.14.0/tests/cli/test_cache.py +73 -0
- ocaya-2.14.0/tests/cli/test_check_and_resolve_trusted_folder.py +193 -0
- ocaya-2.14.0/tests/cli/test_clipboard.py +400 -0
- ocaya-2.14.0/tests/cli/test_commands.py +145 -0
- ocaya-2.14.0/tests/cli/test_compact_message.py +26 -0
- ocaya-2.14.0/tests/cli/test_connector_auth_app.py +368 -0
- ocaya-2.14.0/tests/cli/test_copy_command.py +53 -0
- ocaya-2.14.0/tests/cli/test_copy_shortcuts.py +53 -0
- ocaya-2.14.0/tests/cli/test_external_editor.py +72 -0
- ocaya-2.14.0/tests/cli/test_feedback_bar.py +71 -0
- ocaya-2.14.0/tests/cli/test_feedback_bar_manager.py +128 -0
- ocaya-2.14.0/tests/cli/test_initial_agent_name.py +53 -0
- ocaya-2.14.0/tests/cli/test_mcp_app.py +445 -0
- ocaya-2.14.0/tests/cli/test_no_markup_static.py +19 -0
- ocaya-2.14.0/tests/cli/test_programmatic_setup.py +226 -0
- ocaya-2.14.0/tests/cli/test_question_app.py +718 -0
- ocaya-2.14.0/tests/cli/test_question_app_grace_period.py +111 -0
- ocaya-2.14.0/tests/cli/test_rename_command.py +162 -0
- ocaya-2.14.0/tests/cli/test_spinner.py +16 -0
- ocaya-2.14.0/tests/cli/test_stderr_guard.py +73 -0
- ocaya-2.14.0/tests/cli/test_switching_mode.py +109 -0
- ocaya-2.14.0/tests/cli/test_typing_debounce.py +39 -0
- ocaya-2.14.0/tests/cli/test_ui_clipboard_notifications.py +40 -0
- ocaya-2.14.0/tests/cli/test_ui_config_and_model_picker.py +437 -0
- ocaya-2.14.0/tests/cli/test_ui_session_exit.py +47 -0
- ocaya-2.14.0/tests/cli/test_ui_session_incremental_renderer.py +181 -0
- ocaya-2.14.0/tests/cli/test_ui_session_resume.py +197 -0
- ocaya-2.14.0/tests/cli/test_ui_skill_dispatch.py +131 -0
- ocaya-2.14.0/tests/cli/test_ui_teleport_availability.py +272 -0
- ocaya-2.14.0/tests/cli/test_ui_theme_picker.py +93 -0
- ocaya-2.14.0/tests/cli/textual_ui/__init__.py +0 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_chat_input_keybindings.py +64 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_completion_popup.py +12 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_debug_console_resize.py +44 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_event_handler_hooks.py +81 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_image_input_validation.py +149 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_manual_command_output_cap.py +132 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_message_queue.py +144 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_paste_path.py +221 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_quit_confirmation.py +169 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_read_widget.py +18 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_remote_session_manager.py +286 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_session_picker.py +144 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_streaming_message_buffer.py +319 -0
- ocaya-2.14.0/tests/cli/textual_ui/test_user_message_attachments.py +78 -0
- ocaya-2.14.0/tests/cli/textual_ui/windowing/test_session_windowing.py +47 -0
- ocaya-2.14.0/tests/conftest.py +340 -0
- ocaya-2.14.0/tests/core/experiments/__init__.py +0 -0
- ocaya-2.14.0/tests/core/experiments/test_client.py +116 -0
- ocaya-2.14.0/tests/core/experiments/test_manager.py +427 -0
- ocaya-2.14.0/tests/core/experiments/test_models.py +68 -0
- ocaya-2.14.0/tests/core/experiments/test_resume.py +168 -0
- ocaya-2.14.0/tests/core/experiments/test_session_helpers.py +208 -0
- ocaya-2.14.0/tests/core/experiments/test_system_prompt_variant.py +197 -0
- ocaya-2.14.0/tests/core/experiments/test_telemetry_integration.py +31 -0
- ocaya-2.14.0/tests/core/nuage/__init__.py +0 -0
- ocaya-2.14.0/tests/core/nuage/test_remote_events_source.py +301 -0
- ocaya-2.14.0/tests/core/nuage/test_workflows_client.py +248 -0
- ocaya-2.14.0/tests/core/session/test_image_snapshot.py +71 -0
- ocaya-2.14.0/tests/core/session/test_last_session_pointer.py +153 -0
- ocaya-2.14.0/tests/core/session/test_session_id.py +79 -0
- ocaya-2.14.0/tests/core/session/test_title_format.py +74 -0
- ocaya-2.14.0/tests/core/test_add_dir.py +392 -0
- ocaya-2.14.0/tests/core/test_agents.py +122 -0
- ocaya-2.14.0/tests/core/test_auth_crypto.py +46 -0
- ocaya-2.14.0/tests/core/test_auth_github.py +286 -0
- ocaya-2.14.0/tests/core/test_backend_error.py +74 -0
- ocaya-2.14.0/tests/core/test_build_ssl_context.py +134 -0
- ocaya-2.14.0/tests/core/test_compaction.py +112 -0
- ocaya-2.14.0/tests/core/test_config_builder.py +322 -0
- ocaya-2.14.0/tests/core/test_config_field.py +216 -0
- ocaya-2.14.0/tests/core/test_config_layer.py +542 -0
- ocaya-2.14.0/tests/core/test_config_load_dotenv.py +81 -0
- ocaya-2.14.0/tests/core/test_config_orchestrator.py +87 -0
- ocaya-2.14.0/tests/core/test_config_otel.py +140 -0
- ocaya-2.14.0/tests/core/test_config_patch_ops.py +257 -0
- ocaya-2.14.0/tests/core/test_config_paths.py +553 -0
- ocaya-2.14.0/tests/core/test_config_resolution.py +1506 -0
- ocaya-2.14.0/tests/core/test_config_schema.py +128 -0
- ocaya-2.14.0/tests/core/test_config_toml_end_to_end.py +71 -0
- ocaya-2.14.0/tests/core/test_edit_encoding.py +86 -0
- ocaya-2.14.0/tests/core/test_environment_layer.py +48 -0
- ocaya-2.14.0/tests/core/test_file_logging.py +345 -0
- ocaya-2.14.0/tests/core/test_hooks.py +504 -0
- ocaya-2.14.0/tests/core/test_last_user_message.py +45 -0
- ocaya-2.14.0/tests/core/test_llm_message_merge.py +51 -0
- ocaya-2.14.0/tests/core/test_local_config_files.py +114 -0
- ocaya-2.14.0/tests/core/test_log_reader.py +430 -0
- ocaya-2.14.0/tests/core/test_loop.py +304 -0
- ocaya-2.14.0/tests/core/test_merge.py +183 -0
- ocaya-2.14.0/tests/core/test_overrides_layer.py +85 -0
- ocaya-2.14.0/tests/core/test_plan_session.py +42 -0
- ocaya-2.14.0/tests/core/test_project_config_layer.py +283 -0
- ocaya-2.14.0/tests/core/test_proxy_setup.py +304 -0
- ocaya-2.14.0/tests/core/test_remote_agent_loop.py +937 -0
- ocaya-2.14.0/tests/core/test_retry.py +160 -0
- ocaya-2.14.0/tests/core/test_rewind_integration.py +303 -0
- ocaya-2.14.0/tests/core/test_rewind_manager.py +594 -0
- ocaya-2.14.0/tests/core/test_scratchpad.py +85 -0
- ocaya-2.14.0/tests/core/test_slug.py +34 -0
- ocaya-2.14.0/tests/core/test_telemetry_send.py +838 -0
- ocaya-2.14.0/tests/core/test_teleport_git.py +327 -0
- ocaya-2.14.0/tests/core/test_teleport_nuage.py +189 -0
- ocaya-2.14.0/tests/core/test_teleport_service.py +350 -0
- ocaya-2.14.0/tests/core/test_teleport_telemetry.py +220 -0
- ocaya-2.14.0/tests/core/test_tokens.py +50 -0
- ocaya-2.14.0/tests/core/test_transcribe_config.py +115 -0
- ocaya-2.14.0/tests/core/test_trusted_folders.py +515 -0
- ocaya-2.14.0/tests/core/test_tts_config.py +107 -0
- ocaya-2.14.0/tests/core/test_user_config_layer.py +97 -0
- ocaya-2.14.0/tests/core/test_utils.py +336 -0
- ocaya-2.14.0/tests/core/test_vibe_config_schema.py +62 -0
- ocaya-2.14.0/tests/core/test_watcher.py +50 -0
- ocaya-2.14.0/tests/core/tools/builtins/test_edit.py +230 -0
- ocaya-2.14.0/tests/core/tools/builtins/test_read.py +355 -0
- ocaya-2.14.0/tests/e2e/common.py +116 -0
- ocaya-2.14.0/tests/e2e/conftest.py +86 -0
- ocaya-2.14.0/tests/e2e/mock_server.py +160 -0
- ocaya-2.14.0/tests/e2e/test_cli_tui_fresh_install.py +110 -0
- ocaya-2.14.0/tests/e2e/test_cli_tui_hooks.py +87 -0
- ocaya-2.14.0/tests/e2e/test_cli_tui_onboarding.py +31 -0
- ocaya-2.14.0/tests/e2e/test_cli_tui_session_exit.py +139 -0
- ocaya-2.14.0/tests/e2e/test_cli_tui_streaming.py +52 -0
- ocaya-2.14.0/tests/e2e/test_cli_tui_tool_approval.py +90 -0
- ocaya-2.14.0/tests/mock/__init__.py +0 -0
- ocaya-2.14.0/tests/mock/mock_backend_factory.py +16 -0
- ocaya-2.14.0/tests/mock/mock_entrypoint.py +65 -0
- ocaya-2.14.0/tests/mock/utils.py +60 -0
- ocaya-2.14.0/tests/narrator_manager/__init__.py +0 -0
- ocaya-2.14.0/tests/narrator_manager/test_narrator_manager.py +192 -0
- ocaya-2.14.0/tests/narrator_manager/test_telemetry.py +61 -0
- ocaya-2.14.0/tests/onboarding/test_run_onboarding.py +76 -0
- ocaya-2.14.0/tests/onboarding/test_ui_onboarding.py +1280 -0
- ocaya-2.14.0/tests/session/test_resume_sessions.py +230 -0
- ocaya-2.14.0/tests/session/test_saved_sessions.py +330 -0
- ocaya-2.14.0/tests/session/test_session_loader.py +1246 -0
- ocaya-2.14.0/tests/session/test_session_logger.py +1270 -0
- ocaya-2.14.0/tests/session/test_session_migration.py +177 -0
- ocaya-2.14.0/tests/setup/auth/test_auth_state.py +216 -0
- ocaya-2.14.0/tests/skills/conftest.py +62 -0
- ocaya-2.14.0/tests/skills/test_builtin_sync.py +51 -0
- ocaya-2.14.0/tests/skills/test_manager.py +635 -0
- ocaya-2.14.0/tests/skills/test_models.py +207 -0
- ocaya-2.14.0/tests/skills/test_parser.py +115 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_collapsed.svg +136 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_ask_user_question/test_snapshot_ask_user_question_expanded.svg +176 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_basic_conversation/test_snapshot_shows_basic_conversation.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_code_block_horizontal_scrolling/test_snapshot_allows_horizontal_scrolling_for_long_code_blocks.svg +207 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_escape_closes.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_initial.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_navigate_down.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_app/test_snapshot_config_toggle_autocopy.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_config_issue_notification.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_config_issues/test_snapshot_shows_hook_config_issue_notification.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_data_retention/test_snapshot_data_retention.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_close.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_live_append.svg +203 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_debug_console/test_snapshot_debug_console_open.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_long_content_after_resize.svg +222 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_long_content_bottom_lines_hidden.svg +181 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_diff_view_truncation/test_snapshot_write_approval_short_content.svg +180 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_empty_assistant_before_reasoning/test_snapshot_empty_assistant_removed_when_reasoning_starts.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_feedback_bar/test_snapshot_feedback_bar_visible.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_image_attachments/test_snapshot_textbox_rewrites_typed_image_path.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_image_attachments/test_snapshot_user_message_with_image_footer_plural.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_image_attachments/test_snapshot_user_message_with_image_footer_singular.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_back_to_mcp.svg +205 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_opens_on_disconnected.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_connector_auth_show_url.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_backspace_returns_to_overview.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_broken_server.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connector_back_to_overview.svg +205 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_only.svg +206 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_connectors_sorted_by_status.svg +205 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_drill_into_connector.svg +203 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_enter_drills_into_server.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_escape_closes.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_help_bar_shows_connect.svg +205 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_no_servers.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_overview_navigate_down.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_refresh_shortcut.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_server_arg.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_mcp_command/test_snapshot_mcp_with_connectors_overview.svg +205 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_escape_cancels.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_initial.svg +203 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_navigate_down.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_model_picker/test_snapshot_model_picker_select_different_model.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_accept_edits_mode.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_auto_approve_mode.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_to_plan_mode.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_cycle_wraps_to_default.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_modes/test_snapshot_default_mode.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_idle_after_speaking.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_speaking.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_narrator_flow/test_snapshot_narrator_summarizing.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_api_key/test_snapshot_onboarding_api_key_with_valid_input.svg +155 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-dark].svg +180 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[ansi-light].svg +180 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_onboarding_theme/test_snapshot_onboarding_theme_selection[dracula].svg +187 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_pending.svg +114 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_parallel_tool_calls/test_snapshot_parallel_tool_calls_resolved.svg +136 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_plan_file_message/test_snapshot_plan_file_message.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_cancel_discards_changes.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_edit_existing_values.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_empty.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_initial_with_values.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_error.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_proxy_setup/test_snapshot_proxy_setup_save_new_values.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_answer_first_advance.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_first_answered_checkmark.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_initial.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_left_wraps.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_navigate_right.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_question_tab_to_second.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_initial.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_mixed_selection.svg +139 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_navigate_to_submit.svg +138 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_other_with_text.svg +139 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_first.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_toggle_multiple.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_multi_select_untoggle.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_initial.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_down.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_other.svg +140 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_to_third_option.svg +137 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_navigate_up_wraps.svg +140 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_question_app/test_snapshot_question_app_other_typing.svg +139 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_buffered_reasoning_yields_before_content.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_interleaved_reasoning.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_reasoning_content/test_snapshot_shows_reasoning_content_expanded.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_release_update_notification/test_snapshot_shows_release_update_notification.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_error_shows_toast.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_exit_on_escape.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_navigate_down.svg +203 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_navigate_up.svg +203 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_rewind/test_snapshot_rewind_panel_shown.svg +203 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume/test_snapshot_shows_resumed_session_messages.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_session_resume_injected/test_snapshot_session_resume_hides_injected_messages.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_code_fence/test_snapshot_streaming_code_fence_preserved.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_partial.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_streaming_tool_call/test_snapshot_tool_call_updated.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_hidden_for_non_pro_account.svg +250 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_command_visible_for_pro_account.svg +250 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_cancel_selected.svg +105 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_multiple_commits.svg +105 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_push_confirmation_single_commit.svg +105 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_complete.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_auth_required.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_checking_git.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_complete.svg +95 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_error.svg +95 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_pushing.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_sending_token.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_teleport/test_snapshot_teleport_status_starting_workflow.svg +94 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog.svg +219 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_many_files.svg +220 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_small_terminal.svg +156 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_untrusted_repo.svg +220 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_trust_folder_dialog/test_snapshot_trust_folder_dialog_with_repo.svg +221 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_indicator_shown.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_not_started_when_voice_disabled.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_stopped_after_keypress.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_recording_then_conversation.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_transcription_populates_text_area.svg +201 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_disable.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_voice_mode/test_snapshot_voice_enable.svg +200 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_no_plan_message.svg +202 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_switch_message.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_upgrade_message.svg +204 -0
- ocaya-2.14.0/tests/snapshots/__snapshots__/test_ui_snapshot_whats_new/test_snapshot_shows_whats_new_message.svg +202 -0
- ocaya-2.14.0/tests/snapshots/base_snapshot_test_app.py +75 -0
- ocaya-2.14.0/tests/snapshots/conftest.py +29 -0
- ocaya-2.14.0/tests/snapshots/snap_compare.py +20 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_ask_user_question.py +80 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_basic_conversation.py +33 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_code_block_horizontal_scrolling.py +38 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_config_app.py +64 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_config_issues.py +56 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_data_retention.py +23 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_debug_console.py +90 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_diff_view_truncation.py +71 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_empty_assistant_before_reasoning.py +58 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_feedback_bar.py +45 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_image_attachments.py +116 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_mcp_command.py +409 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_model_picker.py +95 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_modes.py +88 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_narrator_flow.py +154 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_onboarding_api_key.py +54 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_onboarding_theme.py +33 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_parallel_tool_calls.py +115 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_plan_file_message.py +43 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_proxy_setup.py +129 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_question_app.py +365 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_reasoning_content.py +146 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_release_update_notification.py +51 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_rewind.py +142 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_session_resume.py +47 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_session_resume_injected.py +47 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_streaming_code_fence.py +61 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_streaming_tool_call.py +75 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_teleport.py +317 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_trust_folder_dialog.py +119 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_voice_mode.py +164 -0
- ocaya-2.14.0/tests/snapshots/test_ui_snapshot_whats_new.py +156 -0
- ocaya-2.14.0/tests/stubs/fake_audio_player.py +36 -0
- ocaya-2.14.0/tests/stubs/fake_audio_recorder.py +65 -0
- ocaya-2.14.0/tests/stubs/fake_backend.py +128 -0
- ocaya-2.14.0/tests/stubs/fake_client.py +134 -0
- ocaya-2.14.0/tests/stubs/fake_connector_registry.py +74 -0
- ocaya-2.14.0/tests/stubs/fake_mcp_registry.py +62 -0
- ocaya-2.14.0/tests/stubs/fake_tool.py +35 -0
- ocaya-2.14.0/tests/stubs/fake_transcribe_client.py +25 -0
- ocaya-2.14.0/tests/stubs/fake_tts_client.py +21 -0
- ocaya-2.14.0/tests/stubs/fake_voice_manager.py +77 -0
- ocaya-2.14.0/tests/test_agent_auto_compact.py +339 -0
- ocaya-2.14.0/tests/test_agent_auto_title.py +83 -0
- ocaya-2.14.0/tests/test_agent_backend.py +421 -0
- ocaya-2.14.0/tests/test_agent_loop_images.py +193 -0
- ocaya-2.14.0/tests/test_agent_loop_refresh_system_prompt.py +33 -0
- ocaya-2.14.0/tests/test_agent_observer_streaming.py +831 -0
- ocaya-2.14.0/tests/test_agent_override_resolve_permission.py +109 -0
- ocaya-2.14.0/tests/test_agent_stats.py +752 -0
- ocaya-2.14.0/tests/test_agent_tool_call.py +897 -0
- ocaya-2.14.0/tests/test_agents.py +765 -0
- ocaya-2.14.0/tests/test_approve_always_permanent.py +122 -0
- ocaya-2.14.0/tests/test_cli_programmatic_preload.py +187 -0
- ocaya-2.14.0/tests/test_deferred_init.py +557 -0
- ocaya-2.14.0/tests/test_history_manager.py +145 -0
- ocaya-2.14.0/tests/test_install_script.py +198 -0
- ocaya-2.14.0/tests/test_message_id.py +162 -0
- ocaya-2.14.0/tests/test_middleware.py +670 -0
- ocaya-2.14.0/tests/test_permission_store.py +166 -0
- ocaya-2.14.0/tests/test_prepare_release.py +82 -0
- ocaya-2.14.0/tests/test_reasoning_content.py +575 -0
- ocaya-2.14.0/tests/test_system_prompt.py +148 -0
- ocaya-2.14.0/tests/test_tagged_text.py +107 -0
- ocaya-2.14.0/tests/test_tracing.py +381 -0
- ocaya-2.14.0/tests/test_turn_summary.py +420 -0
- ocaya-2.14.0/tests/test_ui_external_editor.py +69 -0
- ocaya-2.14.0/tests/test_ui_input_history.py +332 -0
- ocaya-2.14.0/tests/test_ui_rewind.py +260 -0
- ocaya-2.14.0/tests/tools/test_arity.py +54 -0
- ocaya-2.14.0/tests/tools/test_ask_user_question.py +188 -0
- ocaya-2.14.0/tests/tools/test_bash.py +311 -0
- ocaya-2.14.0/tests/tools/test_connectors.py +966 -0
- ocaya-2.14.0/tests/tools/test_exit_plan_mode.py +282 -0
- ocaya-2.14.0/tests/tools/test_granular_permissions.py +746 -0
- ocaya-2.14.0/tests/tools/test_grep.py +356 -0
- ocaya-2.14.0/tests/tools/test_invoke_context.py +112 -0
- ocaya-2.14.0/tests/tools/test_manager_get_tool_config.py +505 -0
- ocaya-2.14.0/tests/tools/test_mcp.py +970 -0
- ocaya-2.14.0/tests/tools/test_mcp_sampling.py +188 -0
- ocaya-2.14.0/tests/tools/test_scratchpad_permissions.py +89 -0
- ocaya-2.14.0/tests/tools/test_skill.py +255 -0
- ocaya-2.14.0/tests/tools/test_task.py +222 -0
- ocaya-2.14.0/tests/tools/test_ui_bash_execution.py +241 -0
- ocaya-2.14.0/tests/tools/test_webfetch.py +256 -0
- ocaya-2.14.0/tests/tools/test_websearch.py +382 -0
- ocaya-2.14.0/tests/tools/test_wildcard_match.py +66 -0
- ocaya-2.14.0/tests/transcribe/test_transcribe_client.py +165 -0
- ocaya-2.14.0/tests/tts/test_tts_client.py +114 -0
- ocaya-2.14.0/tests/update_notifier/adapters/fake_update_cache_repository.py +17 -0
- ocaya-2.14.0/tests/update_notifier/adapters/fake_update_gateway.py +22 -0
- ocaya-2.14.0/tests/update_notifier/test_do_update.py +74 -0
- ocaya-2.14.0/tests/update_notifier/test_filesystem_update_cache_repository.py +161 -0
- ocaya-2.14.0/tests/update_notifier/test_github_update_gateway.py +245 -0
- ocaya-2.14.0/tests/update_notifier/test_pypi_update_gateway.py +155 -0
- ocaya-2.14.0/tests/update_notifier/test_ui_update_notification.py +389 -0
- ocaya-2.14.0/tests/update_notifier/test_update_use_case.py +302 -0
- ocaya-2.14.0/tests/update_notifier/test_whats_new.py +161 -0
- ocaya-2.14.0/tests/voice_manager/__init__.py +0 -0
- ocaya-2.14.0/tests/voice_manager/test_telemetry.py +44 -0
- ocaya-2.14.0/tests/voice_manager/test_voice_manager.py +594 -0
- ocaya-2.14.0/tests/vscode_extension_promo/__init__.py +0 -0
- ocaya-2.14.0/tests/vscode_extension_promo/fake_repository.py +17 -0
- ocaya-2.14.0/tests/vscode_extension_promo/test_ui_vscode_extension_promo.py +156 -0
- ocaya-2.14.0/tests/vscode_extension_promo/test_vscode_extension_promo.py +74 -0
- ocaya-2.14.0/uv.lock +2512 -0
- ocaya-2.14.0/vibe-acp.spec +74 -0
- ocaya-2.14.0/vibe.spec +72 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
title: "[Feature Request]: "
|
|
2
|
+
labels: []
|
|
3
|
+
body:
|
|
4
|
+
- type: markdown
|
|
5
|
+
attributes:
|
|
6
|
+
value: >
|
|
7
|
+
Feature requests work best when they focus on the problem first. Tell us
|
|
8
|
+
what you're trying to achieve and why existing APIs aren't enough.
|
|
9
|
+
|
|
10
|
+
- type: dropdown
|
|
11
|
+
id: component
|
|
12
|
+
attributes:
|
|
13
|
+
label: Component
|
|
14
|
+
description: Which part of Mistral Vibe would this feature apply to?
|
|
15
|
+
options:
|
|
16
|
+
- CLI
|
|
17
|
+
- ACP
|
|
18
|
+
- Both
|
|
19
|
+
- Other
|
|
20
|
+
validations:
|
|
21
|
+
required: true
|
|
22
|
+
|
|
23
|
+
- type: textarea
|
|
24
|
+
id: problem
|
|
25
|
+
attributes:
|
|
26
|
+
label: Problem statement
|
|
27
|
+
description: >
|
|
28
|
+
What use case is blocked? Provide a clear and concise description of the problem.
|
|
29
|
+
placeholder: "I want to be able to use the agent to write a blog post about the benefits of using Mistral Vibe"
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: proposal
|
|
35
|
+
attributes:
|
|
36
|
+
label: Proposed solution
|
|
37
|
+
description: >
|
|
38
|
+
Sketch the feature you'd like to see. Code snippets welcome.
|
|
39
|
+
validations:
|
|
40
|
+
required: true
|
|
41
|
+
|
|
42
|
+
- type: textarea
|
|
43
|
+
id: extra
|
|
44
|
+
attributes:
|
|
45
|
+
label: Additional context
|
|
46
|
+
description: Links, screenshots, related issues, etc.
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Tell us about a defect in OCAYA
|
|
3
|
+
title: "bug: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
body:
|
|
6
|
+
- type: markdown
|
|
7
|
+
attributes:
|
|
8
|
+
value: >
|
|
9
|
+
Thanks for filing a detailed bug. Fill out every section so we can
|
|
10
|
+
reproduce the issue quickly
|
|
11
|
+
|
|
12
|
+
- type: dropdown
|
|
13
|
+
id: component
|
|
14
|
+
attributes:
|
|
15
|
+
label: Component
|
|
16
|
+
description: Which part of OCAYA is affected?
|
|
17
|
+
options:
|
|
18
|
+
- CLI
|
|
19
|
+
- ACP
|
|
20
|
+
- VS Code extension
|
|
21
|
+
- Other
|
|
22
|
+
validations:
|
|
23
|
+
required: true
|
|
24
|
+
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: summary
|
|
27
|
+
attributes:
|
|
28
|
+
label: Summary
|
|
29
|
+
description: What went wrong? Keep it short but specific.
|
|
30
|
+
validations:
|
|
31
|
+
required: true
|
|
32
|
+
|
|
33
|
+
- type: textarea
|
|
34
|
+
id: repro
|
|
35
|
+
attributes:
|
|
36
|
+
label: Reproduction steps
|
|
37
|
+
description: >
|
|
38
|
+
Commands, code, or payloads that trigger the bug. Include any relevant
|
|
39
|
+
input files or snippets (redact secrets).
|
|
40
|
+
validations:
|
|
41
|
+
required: true
|
|
42
|
+
|
|
43
|
+
- type: input
|
|
44
|
+
id: versions
|
|
45
|
+
attributes:
|
|
46
|
+
label: Versions / environment
|
|
47
|
+
description: >
|
|
48
|
+
Include the version for the affected component, uv or pip when
|
|
49
|
+
relevant and OS.
|
|
50
|
+
placeholder: "ocaya 2.14.0, uv 0.9.0 on macOS 15.7"
|
|
51
|
+
validations:
|
|
52
|
+
required: true
|
|
53
|
+
|
|
54
|
+
- type: textarea
|
|
55
|
+
id: logs
|
|
56
|
+
attributes:
|
|
57
|
+
label: Logs & screenshots
|
|
58
|
+
description: Paste relevant stack traces, JSON snippets, or console output.
|
|
59
|
+
render: shell
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: Feature request
|
|
4
|
+
url: https://github.com/mistralai/mistral-vibe/discussions/new?category=ideas
|
|
5
|
+
about: Suggest a new feature or improvement via GitHub Discussions
|
|
6
|
+
- name: Ask a question
|
|
7
|
+
url: https://discord.com/channels/1144547040454508606/1447989080720670915
|
|
8
|
+
about: Join Mistral AI Discord server for support and discussions
|
|
9
|
+
- name: Read the docs
|
|
10
|
+
url: https://docs.mistral.ai/mistral-vibe/introduction
|
|
11
|
+
about: Read the Mistral Vibe documentation for more information
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
name: Build and upload
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
configure:
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
outputs:
|
|
16
|
+
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
17
|
+
smoke_matrix: ${{ steps.set-matrix.outputs.smoke_matrix }}
|
|
18
|
+
steps:
|
|
19
|
+
- name: Set matrix
|
|
20
|
+
id: set-matrix
|
|
21
|
+
run: |
|
|
22
|
+
# Linux: manylinux_2_28 containers → binary works on glibc >= 2.28 (RHEL 8+, Ubuntu 20.04+)
|
|
23
|
+
matrix='{
|
|
24
|
+
"include": [
|
|
25
|
+
{"runner": "ubuntu-22.04", "os": "linux", "arch": "x86_64", "container": "quay.io/pypa/manylinux_2_28_x86_64"},
|
|
26
|
+
{"runner": "ubuntu-22.04-arm", "os": "linux", "arch": "aarch64", "container": "quay.io/pypa/manylinux_2_28_aarch64"},
|
|
27
|
+
{"runner": "macos-15-intel", "os": "darwin", "arch": "x86_64"},
|
|
28
|
+
{"runner": "macos-14", "os": "darwin", "arch": "aarch64"},
|
|
29
|
+
{"runner": "windows-2022", "os": "windows", "arch": "x86_64"}
|
|
30
|
+
]
|
|
31
|
+
}'
|
|
32
|
+
# TODO: Re-enable macOS standalone artifact smoke tests once the PyInstaller
|
|
33
|
+
# binaries are Developer ID signed and notarized. The direct GitHub zip
|
|
34
|
+
# download path gets Gatekeeper-assessed via quarantine and currently rejects
|
|
35
|
+
# ad-hoc signed binaries, even though ocaya-acp continues to work when bundled
|
|
36
|
+
# through the VS Code extension.
|
|
37
|
+
smoke_matrix='{
|
|
38
|
+
"include": [
|
|
39
|
+
{"runner": "ubuntu-24.04", "os": "linux", "arch": "x86_64"},
|
|
40
|
+
{"runner": "ubuntu-24.04", "os": "linux", "arch": "x86_64", "tag": "old-glibc", "container": "almalinux:8"},
|
|
41
|
+
{"runner": "ubuntu-24.04-arm", "os": "linux", "arch": "aarch64"},
|
|
42
|
+
{"runner": "windows-latest", "os": "windows", "arch": "x86_64"}
|
|
43
|
+
]
|
|
44
|
+
}'
|
|
45
|
+
echo "matrix=$(echo $matrix | jq -c .)" >> $GITHUB_OUTPUT
|
|
46
|
+
echo "smoke_matrix=$(echo $smoke_matrix | jq -c .)" >> $GITHUB_OUTPUT
|
|
47
|
+
|
|
48
|
+
build-and-upload:
|
|
49
|
+
needs: configure
|
|
50
|
+
name: "Build and upload: ${{ matrix.os }}-${{ matrix.arch }}"
|
|
51
|
+
permissions:
|
|
52
|
+
contents: read
|
|
53
|
+
strategy:
|
|
54
|
+
matrix: ${{ fromJSON(needs.configure.outputs.matrix) }}
|
|
55
|
+
runs-on: ${{ matrix.runner }}
|
|
56
|
+
container: ${{ matrix.container || '' }}
|
|
57
|
+
|
|
58
|
+
steps:
|
|
59
|
+
- name: Checkout repository
|
|
60
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
61
|
+
|
|
62
|
+
- name: Install uv with caching
|
|
63
|
+
uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
|
|
64
|
+
with:
|
|
65
|
+
version: "latest"
|
|
66
|
+
enable-cache: true
|
|
67
|
+
cache-dependency-glob: "uv.lock"
|
|
68
|
+
|
|
69
|
+
- name: Set up Python
|
|
70
|
+
if: ${{ matrix.os != 'linux' }}
|
|
71
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
72
|
+
with:
|
|
73
|
+
python-version: "3.12"
|
|
74
|
+
|
|
75
|
+
- name: Install Python (Linux)
|
|
76
|
+
if: ${{ matrix.os == 'linux' }}
|
|
77
|
+
run: |
|
|
78
|
+
uv python install 3.12
|
|
79
|
+
# Install patchelf >= 0.18 (yum/EPEL8 ships 0.12 which lacks --clear-execstack)
|
|
80
|
+
PATCHELF_VERSION=0.18.0
|
|
81
|
+
curl -sL "https://github.com/NixOS/patchelf/releases/download/${PATCHELF_VERSION}/patchelf-${PATCHELF_VERSION}-$(uname -m).tar.gz" \
|
|
82
|
+
| tar xz -C /usr/local
|
|
83
|
+
# python-build-standalone ships libpython with GNU_STACK RWE (executable stack)
|
|
84
|
+
# which is rejected by hardened Linux kernels — clear it with patchelf
|
|
85
|
+
find "$(uv python dir)" -name 'libpython*.so*' -exec patchelf --clear-execstack {} \;
|
|
86
|
+
|
|
87
|
+
- name: Sync dependencies
|
|
88
|
+
run: uv sync --no-dev --group build
|
|
89
|
+
|
|
90
|
+
- name: Build ACP with PyInstaller
|
|
91
|
+
run: uv run --no-dev --group build pyinstaller ocaya-acp.spec
|
|
92
|
+
|
|
93
|
+
- name: Build CLI with PyInstaller
|
|
94
|
+
run: uv run --no-dev --group build pyinstaller ocaya.spec
|
|
95
|
+
|
|
96
|
+
- name: Clear executable stack on bundled libraries
|
|
97
|
+
if: ${{ matrix.os == 'linux' }}
|
|
98
|
+
run: |
|
|
99
|
+
find dist/ocaya-acp-dir/_internal -name '*.so*' -type f -print0 \
|
|
100
|
+
| xargs -0 -I{} patchelf --clear-execstack {}
|
|
101
|
+
patchelf --clear-execstack dist/ocaya-acp-dir/ocaya-acp || true
|
|
102
|
+
find dist/ocaya-dir/_internal -name '*.so*' -type f -print0 \
|
|
103
|
+
| xargs -0 -I{} patchelf --clear-execstack {}
|
|
104
|
+
patchelf --clear-execstack dist/ocaya-dir/ocaya || true
|
|
105
|
+
|
|
106
|
+
- name: Get package version
|
|
107
|
+
id: get_version
|
|
108
|
+
shell: bash
|
|
109
|
+
run: echo "version=$(uv version | cut -d' ' -f2)" >> $GITHUB_OUTPUT
|
|
110
|
+
|
|
111
|
+
- name: Upload ACP binary as artifact
|
|
112
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
113
|
+
with:
|
|
114
|
+
name: ocaya-acp-${{ matrix.os }}-${{ matrix.arch }}-${{ steps.get_version.outputs.version }}
|
|
115
|
+
path: dist/ocaya-acp-dir/
|
|
116
|
+
|
|
117
|
+
- name: Upload CLI binary as artifact
|
|
118
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
119
|
+
with:
|
|
120
|
+
name: ocaya-${{ matrix.os }}-${{ matrix.arch }}-${{ steps.get_version.outputs.version }}
|
|
121
|
+
path: dist/ocaya-dir/
|
|
122
|
+
|
|
123
|
+
nix-build:
|
|
124
|
+
needs: configure
|
|
125
|
+
name: "Nix build and upload: ${{ matrix.os }}-${{ matrix.arch }}"
|
|
126
|
+
permissions:
|
|
127
|
+
contents: read
|
|
128
|
+
strategy:
|
|
129
|
+
matrix: ${{ fromJSON(needs.configure.outputs.matrix) }}
|
|
130
|
+
runs-on: ${{ matrix.runner }}
|
|
131
|
+
steps:
|
|
132
|
+
- name: Checkout repository
|
|
133
|
+
if: matrix.os != 'windows'
|
|
134
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
135
|
+
|
|
136
|
+
- name: Install Nix
|
|
137
|
+
if: matrix.os != 'windows'
|
|
138
|
+
uses: cachix/install-nix-action@4e002c8ec80594ecd40e759629461e26c8abed15 # v31
|
|
139
|
+
|
|
140
|
+
- name: Build with Nix
|
|
141
|
+
if: matrix.os != 'windows'
|
|
142
|
+
shell: bash
|
|
143
|
+
run: |
|
|
144
|
+
nix build .#
|
|
145
|
+
|
|
146
|
+
- name: Nix Smoke Test
|
|
147
|
+
if: matrix.os != 'windows'
|
|
148
|
+
shell: bash
|
|
149
|
+
run: |
|
|
150
|
+
nix run .# -- --version
|
|
151
|
+
|
|
152
|
+
smoke-test:
|
|
153
|
+
needs: [configure, build-and-upload]
|
|
154
|
+
name: "Test: ${{ matrix.os }}-${{ matrix.arch }}${{ matrix.tag && format('-{0}', matrix.tag) || '' }}"
|
|
155
|
+
permissions:
|
|
156
|
+
contents: read
|
|
157
|
+
strategy:
|
|
158
|
+
matrix: ${{ fromJSON(needs.configure.outputs.smoke_matrix) }}
|
|
159
|
+
runs-on: ${{ matrix.runner }}
|
|
160
|
+
container: ${{ matrix.container || '' }}
|
|
161
|
+
|
|
162
|
+
steps:
|
|
163
|
+
- name: Checkout repository
|
|
164
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
165
|
+
|
|
166
|
+
- name: Set up Python
|
|
167
|
+
if: ${{ !matrix.container }}
|
|
168
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
169
|
+
with:
|
|
170
|
+
python-version: "3.12"
|
|
171
|
+
|
|
172
|
+
- name: Set up Python (container)
|
|
173
|
+
if: ${{ matrix.container }}
|
|
174
|
+
run: yum install -y python3.11 python3.11-pip
|
|
175
|
+
|
|
176
|
+
- name: Install smoke test deps
|
|
177
|
+
run: ${{ matrix.container && 'python3.11' || 'python' }} -m pip install agent-client-protocol==0.10.1
|
|
178
|
+
|
|
179
|
+
- name: Download ACP artifact
|
|
180
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
|
|
181
|
+
with:
|
|
182
|
+
pattern: ocaya-acp-${{ matrix.os }}-${{ matrix.arch }}-*
|
|
183
|
+
merge-multiple: true
|
|
184
|
+
path: dist/ocaya-acp-dir
|
|
185
|
+
|
|
186
|
+
- name: Download CLI artifact
|
|
187
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
|
|
188
|
+
with:
|
|
189
|
+
pattern: ocaya-${{ matrix.os }}-${{ matrix.arch }}-*
|
|
190
|
+
merge-multiple: true
|
|
191
|
+
path: dist/ocaya-dir
|
|
192
|
+
|
|
193
|
+
- name: Run ACP smoke tests
|
|
194
|
+
run: ${{ matrix.container && 'python3.11' || 'python' }} tests/acp/smoke_binary.py dist/ocaya-acp-dir
|
|
195
|
+
|
|
196
|
+
attach-to-release:
|
|
197
|
+
needs: [build-and-upload, smoke-test]
|
|
198
|
+
runs-on: ubuntu-latest
|
|
199
|
+
if: github.event_name == 'release'
|
|
200
|
+
permissions:
|
|
201
|
+
contents: write
|
|
202
|
+
steps:
|
|
203
|
+
- name: Download all artifacts
|
|
204
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
|
|
205
|
+
with:
|
|
206
|
+
path: artifacts
|
|
207
|
+
|
|
208
|
+
- name: Zip artifacts
|
|
209
|
+
run: |
|
|
210
|
+
mkdir release-assets
|
|
211
|
+
for dir in artifacts/*; do
|
|
212
|
+
name=$(basename "$dir")
|
|
213
|
+
if [ -f "$dir/ocaya-acp" ] || [ -f "$dir/ocaya-acp.exe" ]; then
|
|
214
|
+
chmod -f +x "$dir/ocaya-acp" 2>/dev/null || true
|
|
215
|
+
(cd "$dir" && zip -r "../../release-assets/${name}.zip" .)
|
|
216
|
+
elif [ -f "$dir/ocaya" ] || [ -f "$dir/ocaya.exe" ]; then
|
|
217
|
+
chmod -f +x "$dir/ocaya" 2>/dev/null || true
|
|
218
|
+
(cd "$dir" && zip -r "../../release-assets/${name}.zip" .)
|
|
219
|
+
fi
|
|
220
|
+
done
|
|
221
|
+
|
|
222
|
+
- name: Attach binaries to release
|
|
223
|
+
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
|
|
224
|
+
with:
|
|
225
|
+
files: release-assets/*.zip
|
|
226
|
+
env:
|
|
227
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
env:
|
|
10
|
+
PYTHON_VERSION: "3.12"
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
pre-commit:
|
|
14
|
+
name: Pre-commit
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
permissions:
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout repository
|
|
21
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
22
|
+
|
|
23
|
+
- name: Install uv with caching
|
|
24
|
+
uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
|
|
25
|
+
with:
|
|
26
|
+
version: "latest"
|
|
27
|
+
enable-cache: true
|
|
28
|
+
cache-dependency-glob: "uv.lock"
|
|
29
|
+
|
|
30
|
+
- name: Set up Python
|
|
31
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
32
|
+
with:
|
|
33
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
34
|
+
|
|
35
|
+
- name: Sync dependencies
|
|
36
|
+
run: uv sync --all-extras
|
|
37
|
+
|
|
38
|
+
- name: Install pip (required by pre-commit)
|
|
39
|
+
run: uv pip install pip
|
|
40
|
+
|
|
41
|
+
- name: Add virtual environment to PATH
|
|
42
|
+
run: echo "$(pwd)/.venv/bin" >> $GITHUB_PATH
|
|
43
|
+
|
|
44
|
+
- name: Cache pre-commit
|
|
45
|
+
uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4
|
|
46
|
+
with:
|
|
47
|
+
path: ~/.cache/pre-commit
|
|
48
|
+
key: pre-commit-${{ hashFiles('.pre-commit-config.yaml') }}
|
|
49
|
+
|
|
50
|
+
- name: Run pre-commit
|
|
51
|
+
run: uv run pre-commit run --all-files --show-diff-on-failure
|
|
52
|
+
|
|
53
|
+
tests:
|
|
54
|
+
name: Tests
|
|
55
|
+
runs-on: ubuntu-latest
|
|
56
|
+
permissions:
|
|
57
|
+
contents: read
|
|
58
|
+
|
|
59
|
+
steps:
|
|
60
|
+
- name: Checkout repository
|
|
61
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
62
|
+
|
|
63
|
+
- name: Install uv with caching
|
|
64
|
+
uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
|
|
65
|
+
with:
|
|
66
|
+
version: "latest"
|
|
67
|
+
enable-cache: true
|
|
68
|
+
cache-dependency-glob: "uv.lock"
|
|
69
|
+
|
|
70
|
+
- name: Set up Python
|
|
71
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
72
|
+
with:
|
|
73
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
74
|
+
|
|
75
|
+
- name: Sync dependencies
|
|
76
|
+
run: uv sync --all-extras
|
|
77
|
+
|
|
78
|
+
- name: Verify CLI can start
|
|
79
|
+
run: |
|
|
80
|
+
uv run ocaya --help
|
|
81
|
+
uv run ocaya-acp --help
|
|
82
|
+
|
|
83
|
+
- name: Install ripgrep
|
|
84
|
+
run: sudo apt-get update && sudo apt-get install -y ripgrep
|
|
85
|
+
|
|
86
|
+
- name: Run tests
|
|
87
|
+
run: uv run pytest --ignore tests/snapshots
|
|
88
|
+
|
|
89
|
+
snapshot-tests:
|
|
90
|
+
name: Snapshot Tests
|
|
91
|
+
runs-on: ubuntu-latest
|
|
92
|
+
permissions:
|
|
93
|
+
contents: read
|
|
94
|
+
|
|
95
|
+
steps:
|
|
96
|
+
- name: Checkout repository
|
|
97
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
98
|
+
|
|
99
|
+
- name: Install uv with caching
|
|
100
|
+
uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
|
|
101
|
+
with:
|
|
102
|
+
version: "latest"
|
|
103
|
+
enable-cache: true
|
|
104
|
+
cache-dependency-glob: "uv.lock"
|
|
105
|
+
|
|
106
|
+
- name: Set up Python
|
|
107
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
108
|
+
with:
|
|
109
|
+
python-version: ${{ env.PYTHON_VERSION }}
|
|
110
|
+
|
|
111
|
+
- name: Sync dependencies
|
|
112
|
+
run: uv sync --all-extras
|
|
113
|
+
|
|
114
|
+
- name: Run snapshot tests
|
|
115
|
+
id: snapshot-tests
|
|
116
|
+
run: uv run pytest tests/snapshots
|
|
117
|
+
continue-on-error: true
|
|
118
|
+
|
|
119
|
+
- name: Upload snapshot report
|
|
120
|
+
if: steps.snapshot-tests.outcome == 'failure'
|
|
121
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
122
|
+
with:
|
|
123
|
+
name: snapshot-report
|
|
124
|
+
path: snapshot_report.html
|
|
125
|
+
if-no-files-found: warn
|
|
126
|
+
retention-days: 3
|
|
127
|
+
|
|
128
|
+
- name: Fail job if snapshot tests failed
|
|
129
|
+
if: steps.snapshot-tests.outcome == 'failure'
|
|
130
|
+
run: |
|
|
131
|
+
echo "Snapshot tests failed, failing job."
|
|
132
|
+
exit 1
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Issue Labeler
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [opened]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
label-component:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
issues: write
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
15
|
+
|
|
16
|
+
- name: Parse bug report form
|
|
17
|
+
id: parse-bug
|
|
18
|
+
uses: stefanbuck/github-issue-parser@25f1485edffc1fee3ea68eb9f59a72e58720ffc4 # v3
|
|
19
|
+
with:
|
|
20
|
+
template-path: .github/ISSUE_TEMPLATE/bug-report.yml
|
|
21
|
+
continue-on-error: true
|
|
22
|
+
|
|
23
|
+
- name: Parse feature request form
|
|
24
|
+
id: parse-feature
|
|
25
|
+
uses: stefanbuck/github-issue-parser@25f1485edffc1fee3ea68eb9f59a72e58720ffc4 # v3
|
|
26
|
+
with:
|
|
27
|
+
template-path: .github/ISSUE_TEMPLATE/feature-request.yml
|
|
28
|
+
continue-on-error: true
|
|
29
|
+
|
|
30
|
+
- name: Apply component label
|
|
31
|
+
uses: actions/github-script@f28e40c7f34bde8b3046d885e986cb6290c5673b # v7
|
|
32
|
+
with:
|
|
33
|
+
script: |
|
|
34
|
+
// Get component from either bug report or feature request
|
|
35
|
+
const bugComponent = '${{ steps.parse-bug.outputs.issueparser_component }}';
|
|
36
|
+
const featureComponent = '${{ steps.parse-feature.outputs.issueparser_component }}';
|
|
37
|
+
const component = bugComponent || featureComponent;
|
|
38
|
+
|
|
39
|
+
if (!component) {
|
|
40
|
+
console.log('No component field found, skipping labeling');
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const labels = [];
|
|
45
|
+
|
|
46
|
+
if (component === 'CLI') {
|
|
47
|
+
labels.push('CLI');
|
|
48
|
+
} else if (component === 'ACP') {
|
|
49
|
+
labels.push('ACP');
|
|
50
|
+
} else if (component === 'VS Code extension') {
|
|
51
|
+
labels.push('VS Code extension');
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
if (labels.length > 0) {
|
|
55
|
+
await github.rest.issues.addLabels({
|
|
56
|
+
owner: context.repo.owner,
|
|
57
|
+
repo: context.repo.repo,
|
|
58
|
+
issue_number: context.issue.number,
|
|
59
|
+
labels: labels
|
|
60
|
+
});
|
|
61
|
+
console.log(`Added labels: ${labels.join(', ')}`);
|
|
62
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Release to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [published]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
release-pypy:
|
|
10
|
+
name: Release to Pypi
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
environment:
|
|
13
|
+
name: pypi
|
|
14
|
+
url: https://pypi.org/p/mistral-vibe
|
|
15
|
+
permissions:
|
|
16
|
+
id-token: write
|
|
17
|
+
contents: read
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- name: Checkout code
|
|
21
|
+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
|
|
22
|
+
|
|
23
|
+
- name: Set up Python
|
|
24
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
25
|
+
with:
|
|
26
|
+
python-version: "3.12"
|
|
27
|
+
|
|
28
|
+
- name: Install uv
|
|
29
|
+
uses: astral-sh/setup-uv@1e862dfacbd1d6d858c55d9b792c756523627244 # v7
|
|
30
|
+
|
|
31
|
+
- name: Install dependencies
|
|
32
|
+
run: uv sync --locked --dev
|
|
33
|
+
|
|
34
|
+
- name: Build package
|
|
35
|
+
run: uv build
|
|
36
|
+
|
|
37
|
+
- name: Upload artifacts
|
|
38
|
+
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5
|
|
39
|
+
with:
|
|
40
|
+
name: dist
|
|
41
|
+
path: dist/
|
|
42
|
+
|
|
43
|
+
- name: Publish distribution to PyPI
|
|
44
|
+
if: github.repository == 'mistralai/mistral-vibe'
|
|
45
|
+
uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
|